aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Documentation/ABI/testing/ima_policy12
-rw-r--r--Documentation/DocBook/mtdnand.tmpl12
-rw-r--r--Documentation/IO-mapping.txt2
-rw-r--r--Documentation/PCI/PCI-DMA-mapping.txt (renamed from Documentation/DMA-mapping.txt)0
-rw-r--r--Documentation/block/00-INDEX2
-rw-r--r--Documentation/block/as-iosched.txt172
-rw-r--r--Documentation/block/biodoc.txt2
-rw-r--r--Documentation/cpu-freq/governors.txt4
-rw-r--r--Documentation/fault-injection/fault-injection.txt4
-rw-r--r--Documentation/feature-removal-schedule.txt49
-rw-r--r--Documentation/filesystems/ext4.txt2
-rw-r--r--Documentation/filesystems/nilfs2.txt2
-rw-r--r--Documentation/filesystems/proc.txt2
-rw-r--r--Documentation/hwmon/amc6821102
-rw-r--r--Documentation/hwmon/k10temp17
-rw-r--r--Documentation/input/multi-touch-protocol.txt48
-rw-r--r--Documentation/ioctl/ioctl-number.txt203
-rw-r--r--Documentation/kernel-doc-nano-HOWTO.txt12
-rw-r--r--Documentation/kernel-parameters.txt14
-rw-r--r--Documentation/kvm/api.txt10
-rw-r--r--Documentation/laptops/thinkpad-acpi.txt58
-rw-r--r--Documentation/networking/3c509.txt12
-rw-r--r--Documentation/networking/ip-sysctl.txt8
-rw-r--r--Documentation/sound/alsa/Procfile.txt2
-rw-r--r--Documentation/trace/ftrace-design.txt40
-rw-r--r--Documentation/trace/ftrace.txt2
-rw-r--r--Documentation/trace/mmiotrace.txt15
-rw-r--r--Documentation/trace/ring-buffer-design.txt56
-rw-r--r--Documentation/trace/tracepoint-analysis.txt60
-rw-r--r--Documentation/vgaarbiter.txt2
-rw-r--r--MAINTAINERS59
-rw-r--r--Makefile5
-rw-r--r--arch/alpha/include/asm/topology.h3
-rw-r--r--arch/arm/Kconfig74
-rw-r--r--arch/arm/Makefile6
-rw-r--r--arch/arm/boot/compressed/Makefile34
-rw-r--r--arch/arm/boot/compressed/head.S8
-rw-r--r--arch/arm/boot/compressed/misc.c129
-rw-r--r--arch/arm/boot/compressed/piggy.gzip.S6
-rw-r--r--arch/arm/boot/compressed/piggy.lzo.S (renamed from arch/arm/boot/compressed/piggy.S)2
-rw-r--r--arch/arm/configs/u300_defconfig81
-rw-r--r--arch/arm/include/asm/cacheflush.h23
-rw-r--r--arch/arm/include/asm/cpu.h1
-rw-r--r--arch/arm/include/asm/dma.h4
-rw-r--r--arch/arm/include/asm/ptrace.h6
-rw-r--r--arch/arm/include/asm/unistd.h1
-rw-r--r--arch/arm/kernel/debug.S20
-rw-r--r--arch/arm/kernel/elf.c9
-rw-r--r--arch/arm/kernel/entry-armv.S4
-rw-r--r--arch/arm/kernel/process.c3
-rw-r--r--arch/arm/kernel/setup.c1
-rw-r--r--arch/arm/mach-davinci/board-dm355-evm.c1
-rw-r--r--arch/arm/mach-davinci/board-dm365-evm.c11
-rw-r--r--arch/arm/mach-davinci/board-dm644x-evm.c1
-rw-r--r--arch/arm/mach-davinci/cp_intc.c11
-rw-r--r--arch/arm/mach-davinci/devices-da8xx.c9
-rw-r--r--arch/arm/mach-davinci/dm365.c1
-rw-r--r--arch/arm/mach-davinci/include/mach/keyscan.h1
-rw-r--r--arch/arm/mach-gemini/gpio.c4
-rw-r--r--arch/arm/mach-gemini/include/mach/uncompress.h4
-rw-r--r--arch/arm/mach-kirkwood/rd88f6192-nas-setup.c6
-rw-r--r--arch/arm/mach-lh7a40x/clocks.c2
-rw-r--r--arch/arm/mach-mmp/ttc_dkb.c2
-rw-r--r--arch/arm/mach-mx2/mxt_td60.c24
-rw-r--r--arch/arm/mach-mx25/clock.c58
-rw-r--r--arch/arm/mach-mx25/devices.c19
-rw-r--r--arch/arm/mach-mx25/devices.h1
-rw-r--r--arch/arm/mach-mx25/mx25pdk.c48
-rw-r--r--arch/arm/mach-mx3/Kconfig3
-rw-r--r--arch/arm/mach-mx3/mm.c5
-rw-r--r--arch/arm/mach-mx3/mx31ads.c9
-rw-r--r--arch/arm/mach-mx3/mx31lite.c9
-rw-r--r--arch/arm/mach-mx3/mx31moboard-devboard.c2
-rw-r--r--arch/arm/mach-mx3/mx31moboard-marxbot.c2
-rw-r--r--arch/arm/mach-mx3/mx31moboard.c7
-rw-r--r--arch/arm/mach-mx3/mx31pdk.c5
-rw-r--r--arch/arm/mach-mx3/pcm037.c32
-rw-r--r--arch/arm/mach-omap1/clock.c6
-rw-r--r--arch/arm/mach-omap1/clock_data.c10
-rw-r--r--arch/arm/mach-omap1/devices.c35
-rw-r--r--arch/arm/mach-omap1/mux.c8
-rw-r--r--arch/arm/mach-omap2/Kconfig1
-rwxr-xr-xarch/arm/mach-omap2/board-zoom-peripherals.c8
-rw-r--r--arch/arm/mach-omap2/clock2xxx.c57
-rw-r--r--arch/arm/mach-omap2/clock34xx.c1
-rw-r--r--arch/arm/mach-omap2/clock34xx_data.c10
-rw-r--r--arch/arm/mach-omap2/clock44xx_data.c62
-rw-r--r--arch/arm/mach-omap2/clockdomain.c4
-rw-r--r--arch/arm/mach-omap2/cpuidle34xx.c2
-rw-r--r--arch/arm/mach-omap2/gpmc.c7
-rw-r--r--arch/arm/mach-omap2/id.c41
-rw-r--r--arch/arm/mach-omap2/io.c19
-rw-r--r--arch/arm/mach-omap2/irq.c22
-rw-r--r--arch/arm/mach-omap2/mmc-twl4030.c7
-rw-r--r--arch/arm/mach-omap2/mux.c43
-rw-r--r--arch/arm/mach-omap2/mux.h24
-rw-r--r--arch/arm/mach-omap2/mux34xx.c47
-rw-r--r--arch/arm/mach-omap2/omap_hwmod.c3
-rw-r--r--arch/arm/mach-omap2/opp2420_data.c38
-rw-r--r--arch/arm/mach-omap2/opp2430_data.c30
-rw-r--r--arch/arm/mach-omap2/pm-debug.c12
-rw-r--r--arch/arm/mach-omap2/pm.h8
-rw-r--r--arch/arm/mach-omap2/pm34xx.c51
-rw-r--r--arch/arm/mach-omap2/prcm.c11
-rw-r--r--arch/arm/mach-omap2/prm.h2
-rw-r--r--arch/arm/mach-omap2/prm44xx.h32
-rw-r--r--arch/arm/mach-omap2/serial.c23
-rw-r--r--arch/arm/mach-omap2/sleep34xx.S13
-rw-r--r--arch/arm/mach-orion5x/dns323-setup.c33
-rw-r--r--arch/arm/mach-orion5x/wrt350n-v2-setup.c79
-rw-r--r--arch/arm/mach-pxa/Kconfig2
-rw-r--r--arch/arm/mach-pxa/corgi.c1
-rw-r--r--arch/arm/mach-pxa/include/mach/hardware.h9
-rw-r--r--arch/arm/mach-pxa/include/mach/mfp-pxa25x.h6
-rw-r--r--arch/arm/mach-pxa/include/mach/zylonite.h7
-rw-r--r--arch/arm/mach-pxa/irq.c14
-rw-r--r--arch/arm/mach-pxa/littleton.c6
-rw-r--r--arch/arm/mach-pxa/magician.c2
-rw-r--r--arch/arm/mach-pxa/palmld.c2
-rw-r--r--arch/arm/mach-pxa/palmt5.c2
-rw-r--r--arch/arm/mach-pxa/palmtc.c2
-rw-r--r--arch/arm/mach-pxa/palmte2.c2
-rw-r--r--arch/arm/mach-pxa/palmtreo.c2
-rw-r--r--arch/arm/mach-pxa/palmtx.c2
-rw-r--r--arch/arm/mach-pxa/palmz72.c2
-rw-r--r--arch/arm/mach-pxa/poodle.c2
-rw-r--r--arch/arm/mach-pxa/spitz.c4
-rw-r--r--arch/arm/mach-pxa/viper.c2
-rw-r--r--arch/arm/mach-pxa/zeus.c36
-rw-r--r--arch/arm/mach-pxa/zylonite.c87
-rw-r--r--arch/arm/mach-pxa/zylonite_pxa300.c12
-rw-r--r--arch/arm/mach-pxa/zylonite_pxa320.c4
-rw-r--r--arch/arm/mach-realview/include/mach/board-pb1176.h4
-rw-r--r--arch/arm/mach-realview/include/mach/platform.h2
-rw-r--r--arch/arm/mach-realview/realview_eb.c15
-rw-r--r--arch/arm/mach-realview/realview_pb1176.c10
-rw-r--r--arch/arm/mach-realview/realview_pb11mp.c11
-rw-r--r--arch/arm/mach-realview/realview_pba8.c15
-rw-r--r--arch/arm/mach-realview/realview_pbx.c15
-rw-r--r--arch/arm/mach-s3c2410/include/mach/ts.h21
-rw-r--r--arch/arm/mach-s3c2410/mach-bast.c3
-rw-r--r--arch/arm/mach-s3c2410/mach-h1940.c8
-rw-r--r--arch/arm/mach-s3c2440/mach-mini2440.c36
-rw-r--r--arch/arm/mach-s3c2440/mach-osiris.c2
-rw-r--r--arch/arm/mach-s3c6410/mach-hmt.c2
-rw-r--r--arch/arm/mach-s3c6410/mach-smdk6410.c1
-rw-r--r--arch/arm/mach-w90x900/include/mach/system.h15
-rw-r--r--arch/arm/mach-w90x900/time.c64
-rw-r--r--arch/arm/mm/Makefile12
-rw-r--r--arch/arm/mm/alignment.c3
-rw-r--r--arch/arm/mm/cache-xsc3l2.c11
-rw-r--r--arch/arm/mm/init.c2
-rw-r--r--arch/arm/mm/mmu.c2
-rw-r--r--arch/arm/mm/proc-arm6_7.S2
-rw-r--r--arch/arm/mm/proc-v6.S2
-rw-r--r--arch/arm/mm/proc-v7.S11
-rw-r--r--arch/arm/mm/proc-xsc3.S7
-rw-r--r--arch/arm/mm/tlb-v7.S1
-rw-r--r--arch/arm/plat-mxc/audmux-v2.c137
-rw-r--r--arch/arm/plat-mxc/include/mach/board-mx31lite.h2
-rw-r--r--arch/arm/plat-mxc/include/mach/common.h2
-rw-r--r--arch/arm/plat-mxc/include/mach/iomux-mx25.h58
-rw-r--r--arch/arm/plat-mxc/include/mach/iomux-mx35.h2
-rw-r--r--arch/arm/plat-mxc/include/mach/irqs.h5
-rw-r--r--arch/arm/plat-mxc/include/mach/mx25.h4
-rw-r--r--arch/arm/plat-mxc/include/mach/uncompress.h4
-rw-r--r--arch/arm/plat-omap/clock.c20
-rw-r--r--arch/arm/plat-omap/common.c26
-rw-r--r--arch/arm/plat-omap/cpu-omap.c1
-rw-r--r--arch/arm/plat-omap/dma.c2
-rw-r--r--arch/arm/plat-omap/dmtimer.c13
-rw-r--r--arch/arm/plat-omap/gpio.c63
-rw-r--r--arch/arm/plat-omap/include/plat/board.h1
-rw-r--r--arch/arm/plat-omap/include/plat/clock.h2
-rw-r--r--arch/arm/plat-omap/include/plat/control.h2
-rw-r--r--arch/arm/plat-omap/include/plat/cpu.h1
-rw-r--r--arch/arm/plat-omap/include/plat/io.h36
-rw-r--r--arch/arm/plat-omap/include/plat/irqs.h3
-rw-r--r--arch/arm/plat-omap/include/plat/mux.h8
-rw-r--r--arch/arm/plat-omap/include/plat/omap7xx.h3
-rw-r--r--arch/arm/plat-omap/include/plat/omap_hwmod.h1
-rw-r--r--arch/arm/plat-omap/io.c12
-rw-r--r--arch/arm/plat-omap/iommu.c2
-rw-r--r--arch/arm/plat-omap/mcbsp.c20
-rw-r--r--arch/arm/plat-omap/omap_device.c10
-rw-r--r--arch/arm/plat-orion/pcie.c6
-rw-r--r--arch/arm/plat-pxa/pwm.c8
-rw-r--r--arch/arm/plat-s3c/dev-nand.c8
-rw-r--r--arch/arm/plat-s3c/include/plat/devs.h1
-rw-r--r--arch/arm/plat-s3c24xx/devs.c18
-rw-r--r--arch/arm/plat-s3c24xx/s3c244x.c1
-rw-r--r--arch/arm/plat-s3c64xx/s3c6400-clock.c10
-rw-r--r--arch/arm/tools/mach-types104
-rw-r--r--arch/arm/vfp/vfpmodule.c5
-rw-r--r--arch/avr32/mach-at32ap/at32ap700x.c15
-rw-r--r--arch/blackfin/include/asm/page.h5
-rw-r--r--arch/blackfin/kernel/kgdb.c207
-rw-r--r--arch/blackfin/mm/Makefile2
-rw-r--r--arch/blackfin/mm/maccess.c97
-rw-r--r--arch/frv/include/asm/page.h2
-rw-r--r--arch/ia64/include/asm/acpi.h1
-rw-r--r--arch/ia64/include/asm/elf.h4
-rw-r--r--arch/ia64/include/asm/ftrace.h1
-rw-r--r--arch/ia64/include/asm/kprobes.h5
-rw-r--r--arch/ia64/include/asm/tlb.h2
-rw-r--r--arch/ia64/include/asm/topology.h4
-rw-r--r--arch/ia64/include/asm/types.h5
-rw-r--r--arch/ia64/kernel/mca.c5
-rw-r--r--arch/ia64/kernel/perfmon.c2
-rw-r--r--arch/ia64/kvm/vcpu.h9
-rw-r--r--arch/ia64/kvm/vmm.c4
-rw-r--r--arch/ia64/kvm/vtlb.c2
-rw-r--r--arch/ia64/mm/init.c2
-rw-r--r--arch/ia64/mm/tlb.c32
-rw-r--r--arch/ia64/sn/kernel/setup.c2
-rw-r--r--arch/m68k/include/asm/io_no.h14
-rw-r--r--arch/m68k/include/asm/page_no.h4
-rw-r--r--arch/m68k/include/asm/virtconvert.h4
-rw-r--r--arch/m68knommu/platform/coldfire/pit.c1
-rw-r--r--arch/microblaze/Kconfig2
-rw-r--r--arch/microblaze/configs/mmu_defconfig112
-rw-r--r--arch/microblaze/configs/nommu_defconfig101
-rw-r--r--arch/microblaze/include/asm/io.h2
-rw-r--r--arch/microblaze/include/asm/ptrace.h14
-rw-r--r--arch/microblaze/include/asm/unistd.h5
-rw-r--r--arch/microblaze/kernel/cpu/cache.c27
-rw-r--r--arch/microblaze/kernel/entry-nommu.S10
-rw-r--r--arch/microblaze/kernel/prom_parse.c2
-rw-r--r--arch/microblaze/kernel/setup.c1
-rw-r--r--arch/microblaze/kernel/syscall_table.S2
-rw-r--r--arch/mips/Kconfig1
-rw-r--r--arch/mips/alchemy/common/dbdma.c11
-rw-r--r--arch/mips/ar7/platform.c2
-rw-r--r--arch/mips/ar7/prom.c15
-rw-r--r--arch/mips/bcm47xx/prom.c8
-rw-r--r--arch/mips/bcm63xx/boards/board_bcm963xx.c33
-rw-r--r--arch/mips/bcm63xx/prom.c3
-rw-r--r--arch/mips/boot/.gitignore1
-rw-r--r--arch/mips/boot/Makefile2
-rw-r--r--arch/mips/boot/compressed/Makefile18
-rw-r--r--arch/mips/boot/compressed/decompress.c14
-rw-r--r--arch/mips/boot/compressed/ld.script195
-rw-r--r--arch/mips/cavium-octeon/csrc-octeon.c32
-rw-r--r--arch/mips/cobalt/setup.c24
-rw-r--r--arch/mips/configs/ip27_defconfig917
-rw-r--r--arch/mips/include/asm/cpu-features.h7
-rw-r--r--arch/mips/include/asm/cpu-info.h3
-rw-r--r--arch/mips/include/asm/irq.h1
-rw-r--r--arch/mips/include/asm/mach-au1x00/au1xxx_dbdma.h1
-rw-r--r--arch/mips/include/asm/mach-ip27/topology.h4
-rw-r--r--arch/mips/include/asm/mach-powertv/asic_reg_map.h90
-rw-r--r--arch/mips/include/asm/mach-powertv/asic_regs.h135
-rw-r--r--arch/mips/include/asm/mipsregs.h12
-rw-r--r--arch/mips/include/asm/pgtable-64.h4
-rw-r--r--arch/mips/kernel/cevt-r4k.c2
-rw-r--r--arch/mips/kernel/cpu-probe.c11
-rw-r--r--arch/mips/kernel/traps.c7
-rw-r--r--arch/mips/mipssim/sim_setup.c4
-rw-r--r--arch/mips/mm/c-octeon.c4
-rw-r--r--arch/mips/mm/cache.c2
-rw-r--r--arch/mips/mm/highmem.c1
-rw-r--r--arch/mips/mm/init.c2
-rw-r--r--arch/mips/mm/tlbex.c8
-rw-r--r--arch/mips/mti-malta/malta-init.c1
-rw-r--r--arch/mips/powertv/Makefile2
-rw-r--r--arch/mips/powertv/asic/asic-calliope.c131
-rw-r--r--arch/mips/powertv/asic/asic-cronus.c131
-rw-r--r--arch/mips/powertv/asic/asic-zeus.c131
-rw-r--r--arch/mips/powertv/asic/asic_devices.c46
-rw-r--r--arch/mips/powertv/cmdline.c52
-rw-r--r--arch/mips/powertv/init.c15
-rw-r--r--arch/mips/powertv/init.h2
-rw-r--r--arch/mips/powertv/memory.c5
-rw-r--r--arch/mips/powertv/powertv_setup.c21
-rw-r--r--arch/mips/powertv/reset.c18
-rw-r--r--arch/mips/powertv/time.c1
-rw-r--r--arch/mips/sgi-ip27/ip27-memory.c2
-rw-r--r--arch/mips/sni/rm200.c2
-rw-r--r--arch/mips/txx9/generic/setup.c21
-rw-r--r--arch/mips/vr41xx/common/init.c6
-rw-r--r--arch/mn10300/Makefile2
-rw-r--r--arch/mn10300/configs/asb2303_defconfig107
-rw-r--r--arch/mn10300/include/asm/bitops.h4
-rw-r--r--arch/mn10300/include/asm/div64.h2
-rw-r--r--arch/mn10300/include/asm/system.h1
-rw-r--r--arch/mn10300/include/asm/tlbflush.h2
-rw-r--r--arch/mn10300/include/asm/uaccess.h4
-rw-r--r--arch/mn10300/include/asm/unistd.h3
-rw-r--r--arch/mn10300/kernel/entry.S1
-rw-r--r--arch/mn10300/kernel/mn10300-serial.c3
-rw-r--r--arch/mn10300/kernel/signal.c2
-rw-r--r--arch/mn10300/lib/checksum.c1
-rw-r--r--arch/mn10300/lib/delay.c3
-rw-r--r--arch/mn10300/lib/usercopy.c6
-rw-r--r--arch/mn10300/mm/dma-alloc.c17
-rw-r--r--arch/mn10300/mm/init.c3
-rw-r--r--arch/mn10300/mm/misalignment.c4
-rw-r--r--arch/mn10300/unit-asb2305/include/unit/serial.h2
-rw-r--r--arch/mn10300/unit-asb2305/include/unit/timex.h2
-rw-r--r--arch/mn10300/unit-asb2305/leds.c4
-rw-r--r--arch/mn10300/unit-asb2305/pci-asb2305.c39
-rw-r--r--arch/mn10300/unit-asb2305/pci-asb2305.h1
-rw-r--r--arch/mn10300/unit-asb2305/pci.c62
-rw-r--r--arch/mn10300/unit-asb2305/unit-init.c5
-rw-r--r--arch/parisc/Kconfig1
-rw-r--r--arch/parisc/kernel/pci.c7
-rw-r--r--arch/parisc/kernel/signal.c4
-rwxr-xr-xarch/powerpc/boot/wrapper7
-rw-r--r--arch/powerpc/configs/40x/acadia_defconfig241
-rw-r--r--arch/powerpc/configs/40x/ep405_defconfig307
-rw-r--r--arch/powerpc/configs/40x/hcu4_defconfig256
-rw-r--r--arch/powerpc/configs/40x/kilauea_defconfig140
-rw-r--r--arch/powerpc/configs/40x/makalu_defconfig190
-rw-r--r--arch/powerpc/configs/40x/walnut_defconfig257
-rw-r--r--arch/powerpc/configs/44x/arches_defconfig135
-rw-r--r--arch/powerpc/configs/44x/bamboo_defconfig255
-rw-r--r--arch/powerpc/configs/44x/canyonlands_defconfig141
-rw-r--r--arch/powerpc/configs/44x/ebony_defconfig258
-rw-r--r--arch/powerpc/configs/44x/eiger_defconfig128
-rw-r--r--arch/powerpc/configs/44x/katmai_defconfig253
-rw-r--r--arch/powerpc/configs/44x/rainier_defconfig254
-rw-r--r--arch/powerpc/configs/44x/redwood_defconfig274
-rw-r--r--arch/powerpc/configs/44x/sam440ep_defconfig284
-rw-r--r--arch/powerpc/configs/44x/sequoia_defconfig202
-rw-r--r--arch/powerpc/configs/44x/taishan_defconfig258
-rw-r--r--arch/powerpc/configs/44x/warp_defconfig228
-rw-r--r--arch/powerpc/configs/52xx/cm5200_defconfig75
-rw-r--r--arch/powerpc/configs/52xx/lite5200b_defconfig90
-rw-r--r--arch/powerpc/configs/52xx/motionpro_defconfig79
-rw-r--r--arch/powerpc/configs/52xx/pcm030_defconfig83
-rw-r--r--arch/powerpc/configs/52xx/tqm5200_defconfig79
-rw-r--r--arch/powerpc/configs/83xx/asp8347_defconfig88
-rw-r--r--arch/powerpc/configs/83xx/kmeter1_defconfig68
-rw-r--r--arch/powerpc/configs/83xx/mpc8313_rdb_defconfig97
-rw-r--r--arch/powerpc/configs/83xx/mpc8315_rdb_defconfig100
-rw-r--r--arch/powerpc/configs/83xx/mpc832x_mds_defconfig89
-rw-r--r--arch/powerpc/configs/83xx/mpc832x_rdb_defconfig93
-rw-r--r--arch/powerpc/configs/83xx/mpc834x_itx_defconfig95
-rw-r--r--arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig92
-rw-r--r--arch/powerpc/configs/83xx/mpc834x_mds_defconfig86
-rw-r--r--arch/powerpc/configs/83xx/mpc836x_mds_defconfig89
-rw-r--r--arch/powerpc/configs/83xx/mpc836x_rdk_defconfig87
-rw-r--r--arch/powerpc/configs/83xx/mpc837x_mds_defconfig89
-rw-r--r--arch/powerpc/configs/83xx/mpc837x_rdb_defconfig91
-rw-r--r--arch/powerpc/configs/83xx/sbc834x_defconfig85
-rw-r--r--arch/powerpc/configs/85xx/ksi8560_defconfig69
-rw-r--r--arch/powerpc/configs/85xx/mpc8540_ads_defconfig69
-rw-r--r--arch/powerpc/configs/85xx/mpc8560_ads_defconfig76
-rw-r--r--arch/powerpc/configs/85xx/mpc85xx_cds_defconfig75
-rw-r--r--arch/powerpc/configs/85xx/sbc8548_defconfig77
-rw-r--r--arch/powerpc/configs/85xx/sbc8560_defconfig72
-rw-r--r--arch/powerpc/configs/85xx/socrates_defconfig99
-rw-r--r--arch/powerpc/configs/85xx/stx_gp3_defconfig87
-rw-r--r--arch/powerpc/configs/85xx/tqm8540_defconfig89
-rw-r--r--arch/powerpc/configs/85xx/tqm8541_defconfig90
-rw-r--r--arch/powerpc/configs/85xx/tqm8548_defconfig95
-rw-r--r--arch/powerpc/configs/85xx/tqm8555_defconfig90
-rw-r--r--arch/powerpc/configs/85xx/tqm8560_defconfig90
-rw-r--r--arch/powerpc/configs/85xx/xes_mpc85xx_defconfig103
-rw-r--r--arch/powerpc/configs/86xx/gef_ppc9a_defconfig102
-rw-r--r--arch/powerpc/configs/86xx/gef_sbc310_defconfig99
-rw-r--r--arch/powerpc/configs/86xx/gef_sbc610_defconfig92
-rw-r--r--arch/powerpc/configs/86xx/mpc8610_hpcd_defconfig88
-rw-r--r--arch/powerpc/configs/86xx/mpc8641_hpcn_defconfig90
-rw-r--r--arch/powerpc/configs/86xx/sbc8641d_defconfig81
-rw-r--r--arch/powerpc/configs/adder875_defconfig57
-rw-r--r--arch/powerpc/configs/c2k_defconfig90
-rw-r--r--arch/powerpc/configs/ep8248e_defconfig64
-rw-r--r--arch/powerpc/configs/ep88xc_defconfig55
-rw-r--r--arch/powerpc/configs/linkstation_defconfig96
-rw-r--r--arch/powerpc/configs/mgcoge_defconfig74
-rw-r--r--arch/powerpc/configs/mgsuvd_defconfig63
-rw-r--r--arch/powerpc/configs/mpc5200_defconfig106
-rw-r--r--arch/powerpc/configs/mpc7448_hpc2_defconfig79
-rw-r--r--arch/powerpc/configs/mpc8272_ads_defconfig70
-rw-r--r--arch/powerpc/configs/mpc83xx_defconfig92
-rw-r--r--arch/powerpc/configs/mpc85xx_defconfig97
-rw-r--r--arch/powerpc/configs/mpc85xx_smp_defconfig97
-rw-r--r--arch/powerpc/configs/mpc866_ads_defconfig65
-rw-r--r--arch/powerpc/configs/mpc86xx_defconfig93
-rw-r--r--arch/powerpc/configs/mpc885_ads_defconfig55
-rw-r--r--arch/powerpc/configs/ppc40x_defconfig292
-rw-r--r--arch/powerpc/configs/ppc44x_defconfig309
-rw-r--r--arch/powerpc/configs/pq2fads_defconfig72
-rw-r--r--arch/powerpc/configs/prpmc2800_defconfig94
-rw-r--r--arch/powerpc/configs/storcenter_defconfig86
-rw-r--r--arch/powerpc/include/asm/elf.h8
-rw-r--r--arch/powerpc/include/asm/thread_info.h2
-rw-r--r--arch/powerpc/include/asm/topology.h4
-rw-r--r--arch/powerpc/kernel/head_8xx.S12
-rw-r--r--arch/powerpc/kernel/pci-common.c13
-rw-r--r--arch/powerpc/kernel/pci_of_scan.c10
-rw-r--r--arch/powerpc/kernel/process.c12
-rw-r--r--arch/powerpc/kernel/rtas-proc.c14
-rw-r--r--arch/powerpc/kernel/smp.c12
-rw-r--r--arch/powerpc/kernel/swsusp_32.S2
-rw-r--r--arch/powerpc/kernel/time.c11
-rw-r--r--arch/powerpc/kvm/Kconfig2
-rw-r--r--arch/powerpc/kvm/book3s_64_mmu.c22
-rw-r--r--arch/powerpc/mm/mmap_64.c4
-rw-r--r--arch/powerpc/mm/tlb_hash64.c12
-rw-r--r--arch/powerpc/platforms/85xx/mpc85xx_mds.c3
-rw-r--r--arch/powerpc/platforms/85xx/smp.c21
-rw-r--r--arch/powerpc/platforms/cell/spufs/coredump.c2
-rw-r--r--arch/powerpc/platforms/iseries/vio.c2
-rw-r--r--arch/powerpc/platforms/pseries/dlpar.c18
-rw-r--r--arch/powerpc/platforms/pseries/xics.c28
-rw-r--r--arch/powerpc/sysdev/ppc4xx_pci.c3
-rw-r--r--arch/s390/defconfig86
-rw-r--r--arch/s390/include/asm/bug.h4
-rw-r--r--arch/s390/include/asm/irqflags.h9
-rw-r--r--arch/s390/include/asm/lowcore.h4
-rw-r--r--arch/s390/include/asm/param.h28
-rw-r--r--arch/s390/include/asm/sigp.h20
-rw-r--r--arch/s390/include/asm/thread_info.h12
-rw-r--r--arch/s390/include/asm/unistd.h6
-rw-r--r--arch/s390/kernel/compat_linux.c41
-rw-r--r--arch/s390/kernel/compat_wrapper.S9
-rw-r--r--arch/s390/kernel/entry.S1
-rw-r--r--arch/s390/kernel/entry64.S1
-rw-r--r--arch/s390/kernel/process.c3
-rw-r--r--arch/s390/kernel/ptrace.c8
-rw-r--r--arch/s390/kernel/setup.c8
-rw-r--r--arch/s390/kernel/signal.c12
-rw-r--r--arch/s390/kernel/smp.c9
-rw-r--r--arch/s390/kernel/syscalls.S1
-rw-r--r--arch/s390/kernel/topology.c2
-rw-r--r--arch/s390/kvm/intercept.c4
-rw-r--r--arch/s390/lib/spinlock.c2
-rw-r--r--arch/s390/mm/mmap.c4
-rw-r--r--arch/score/mm/init.c2
-rw-r--r--arch/sh/Kconfig16
-rw-r--r--arch/sh/boards/mach-ecovec24/setup.c8
-rw-r--r--arch/sh/boards/mach-se/7724/setup.c2
-rw-r--r--arch/sh/configs/ap325rxa_defconfig87
-rw-r--r--arch/sh/configs/cayman_defconfig168
-rw-r--r--arch/sh/configs/dreamcast_defconfig78
-rw-r--r--arch/sh/configs/ecovec24-romimage_defconfig76
-rw-r--r--arch/sh/configs/ecovec24_defconfig89
-rw-r--r--arch/sh/configs/edosk7705_defconfig49
-rw-r--r--arch/sh/configs/edosk7760_defconfig70
-rw-r--r--arch/sh/configs/espt_defconfig77
-rw-r--r--arch/sh/configs/hp6xx_defconfig70
-rw-r--r--arch/sh/configs/kfr2r09-romimage_defconfig58
-rw-r--r--arch/sh/configs/kfr2r09_defconfig71
-rw-r--r--arch/sh/configs/landisk_defconfig85
-rw-r--r--arch/sh/configs/lboxre2_defconfig89
-rw-r--r--arch/sh/configs/magicpanelr2_defconfig69
-rw-r--r--arch/sh/configs/microdev_defconfig71
-rw-r--r--arch/sh/configs/migor_defconfig92
-rw-r--r--arch/sh/configs/polaris_defconfig77
-rw-r--r--arch/sh/configs/r7780mp_defconfig99
-rw-r--r--arch/sh/configs/r7785rp_defconfig98
-rw-r--r--arch/sh/configs/rsk7201_defconfig59
-rw-r--r--arch/sh/configs/rsk7203_defconfig71
-rw-r--r--arch/sh/configs/rts7751r2d1_defconfig95
-rw-r--r--arch/sh/configs/rts7751r2dplus_defconfig95
-rw-r--r--arch/sh/configs/sdk7780_defconfig88
-rw-r--r--arch/sh/configs/se7206_defconfig66
-rw-r--r--arch/sh/configs/se7343_defconfig72
-rw-r--r--arch/sh/configs/se7619_defconfig58
-rw-r--r--arch/sh/configs/se7705_defconfig71
-rw-r--r--arch/sh/configs/se7712_defconfig61
-rw-r--r--arch/sh/configs/se7721_defconfig62
-rw-r--r--arch/sh/configs/se7722_defconfig69
-rw-r--r--arch/sh/configs/se7724_defconfig100
-rw-r--r--arch/sh/configs/se7750_defconfig70
-rw-r--r--arch/sh/configs/se7751_defconfig70
-rw-r--r--arch/sh/configs/se7780_defconfig79
-rw-r--r--arch/sh/configs/sh03_defconfig80
-rw-r--r--arch/sh/configs/sh7710voipgw_defconfig66
-rw-r--r--arch/sh/configs/sh7724_generic_defconfig80
-rw-r--r--arch/sh/configs/sh7763rdp_defconfig74
-rw-r--r--arch/sh/configs/sh7770_generic_defconfig79
-rw-r--r--arch/sh/configs/sh7785lcr_32bit_defconfig83
-rw-r--r--arch/sh/configs/sh7785lcr_defconfig83
-rw-r--r--arch/sh/configs/shmin_defconfig64
-rw-r--r--arch/sh/configs/shx3_defconfig93
-rw-r--r--arch/sh/configs/snapgear_defconfig79
-rw-r--r--arch/sh/configs/systemh_defconfig64
-rw-r--r--arch/sh/configs/titan_defconfig87
-rw-r--r--arch/sh/configs/ul2_defconfig86
-rw-r--r--arch/sh/configs/urquell_defconfig99
-rw-r--r--arch/sh/include/asm/timex.h10
-rw-r--r--arch/sh/include/asm/unistd_32.h5
-rw-r--r--arch/sh/include/asm/unistd_64.h3
-rw-r--r--arch/sh/kernel/cpu/clock.c4
-rw-r--r--arch/sh/kernel/cpu/sh3/entry.S3
-rw-r--r--arch/sh/kernel/dwarf.c28
-rw-r--r--arch/sh/kernel/entry-common.S8
-rw-r--r--arch/sh/kernel/process_64.c2
-rw-r--r--arch/sh/kernel/ptrace_64.c11
-rw-r--r--arch/sh/kernel/signal_64.c4
-rw-r--r--arch/sh/kernel/syscalls_32.S1
-rw-r--r--arch/sh/kernel/syscalls_64.S1
-rw-r--r--arch/sh/mm/Kconfig7
-rw-r--r--arch/sh/tools/Makefile2
-rw-r--r--arch/sparc/Kconfig5
-rw-r--r--arch/sparc/configs/sparc32_defconfig87
-rw-r--r--arch/sparc/configs/sparc64_defconfig131
-rw-r--r--arch/sparc/include/asm/elf_64.h13
-rw-r--r--arch/sparc/include/asm/io_32.h2
-rw-r--r--arch/sparc/include/asm/page_32.h2
-rw-r--r--arch/sparc/include/asm/param.h19
-rw-r--r--arch/sparc/include/asm/stat.h4
-rw-r--r--arch/sparc/include/asm/thread_info_64.h4
-rw-r--r--arch/sparc/include/asm/timex_32.h1
-rw-r--r--arch/sparc/include/asm/topology_64.h4
-rw-r--r--arch/sparc/include/asm/uaccess_32.h2
-rw-r--r--arch/sparc/include/asm/uaccess_64.h2
-rw-r--r--arch/sparc/kernel/central.c4
-rw-r--r--arch/sparc/kernel/irq_64.c41
-rw-r--r--arch/sparc/kernel/kstack.h4
-rw-r--r--arch/sparc/kernel/nmi.c3
-rw-r--r--arch/sparc/kernel/of_device_32.c2
-rw-r--r--arch/sparc/kernel/pci.c7
-rw-r--r--arch/sparc/kernel/pcic.c103
-rw-r--r--arch/sparc/kernel/perf_event.c638
-rw-r--r--arch/sparc/kernel/process_32.c2
-rw-r--r--arch/sparc/kernel/process_64.c16
-rw-r--r--arch/sparc/kernel/signal32.c10
-rw-r--r--arch/sparc/kernel/signal_32.c6
-rw-r--r--arch/sparc/kernel/signal_64.c8
-rw-r--r--arch/sparc/kernel/sys_sparc_64.c6
-rw-r--r--arch/sparc/kernel/time_32.c116
-rw-r--r--arch/sparc/kernel/tsb.S6
-rw-r--r--arch/sparc/mm/fault_32.c12
-rw-r--r--arch/sparc/mm/fault_64.c13
-rw-r--r--arch/um/drivers/mconsole_kern.c49
-rw-r--r--arch/x86/Kconfig12
-rw-r--r--arch/x86/Kconfig.cpu2
-rw-r--r--arch/x86/boot/compressed/Makefile6
-rw-r--r--arch/x86/boot/compressed/misc.c4
-rw-r--r--arch/x86/ia32/ia32_aout.c11
-rw-r--r--arch/x86/include/asm/amd_iommu_proto.h1
-rw-r--r--arch/x86/include/asm/cpu_debug.h127
-rw-r--r--arch/x86/include/asm/elf.h15
-rw-r--r--arch/x86/include/asm/hpet.h1
-rw-r--r--arch/x86/include/asm/kvm.h4
-rw-r--r--arch/x86/include/asm/mce.h3
-rw-r--r--arch/x86/include/asm/microcode.h2
-rw-r--r--arch/x86/include/asm/perf_event.h1
-rw-r--r--arch/x86/include/asm/processor.h2
-rw-r--r--arch/x86/include/asm/system.h4
-rw-r--r--arch/x86/include/asm/thread_info.h2
-rw-r--r--arch/x86/include/asm/uaccess_32.h5
-rw-r--r--arch/x86/include/asm/uaccess_64.h5
-rw-r--r--arch/x86/include/asm/uv/uv_hub.h98
-rw-r--r--arch/x86/kernel/acpi/boot.c35
-rw-r--r--arch/x86/kernel/acpi/sleep.c2
-rw-r--r--arch/x86/kernel/amd_iommu.c23
-rw-r--r--arch/x86/kernel/amd_iommu_init.c13
-rw-r--r--arch/x86/kernel/aperture_64.c1
-rw-r--r--arch/x86/kernel/apic/apic.c20
-rw-r--r--arch/x86/kernel/apic/apic_flat_64.c5
-rw-r--r--arch/x86/kernel/apic/io_apic.c7
-rw-r--r--arch/x86/kernel/apic/probe_32.c29
-rw-r--r--arch/x86/kernel/apic/probe_64.c13
-rw-r--r--arch/x86/kernel/apic/x2apic_uv_x.c38
-rw-r--r--arch/x86/kernel/cpu/Makefile2
-rw-r--r--arch/x86/kernel/cpu/cpu_debug.c688
-rw-r--r--arch/x86/kernel/cpu/cpufreq/powernow-k8.c3
-rw-r--r--arch/x86/kernel/cpu/perf_event.c9
-rw-r--r--arch/x86/kernel/cpuid.c2
-rw-r--r--arch/x86/kernel/dumpstack.c14
-rw-r--r--arch/x86/kernel/e820.c4
-rw-r--r--arch/x86/kernel/hpet.c8
-rw-r--r--arch/x86/kernel/hw_breakpoint.c30
-rw-r--r--arch/x86/kernel/kgdb.c222
-rw-r--r--arch/x86/kernel/microcode_amd.c44
-rw-r--r--arch/x86/kernel/microcode_core.c6
-rw-r--r--arch/x86/kernel/mpparse.c7
-rw-r--r--arch/x86/kernel/msr.c2
-rw-r--r--arch/x86/kernel/process.c18
-rw-r--r--arch/x86/kernel/process_32.c14
-rw-r--r--arch/x86/kernel/process_64.c36
-rw-r--r--arch/x86/kernel/ptrace.c7
-rw-r--r--arch/x86/kernel/quirks.c13
-rw-r--r--arch/x86/kernel/reboot.c9
-rw-r--r--arch/x86/kernel/setup.c14
-rw-r--r--arch/x86/kernel/smpboot.c2
-rw-r--r--arch/x86/kernel/uv_time.c13
-rw-r--r--arch/x86/kvm/i8254.c3
-rw-r--r--arch/x86/kvm/lapic.c12
-rw-r--r--arch/x86/kvm/mmu.c6
-rw-r--r--arch/x86/kvm/paging_tmpl.h22
-rw-r--r--arch/x86/kvm/x86.c25
-rw-r--r--arch/x86/mm/gup.c2
-rw-r--r--arch/x86/mm/init_32.c3
-rw-r--r--arch/x86/mm/init_64.c19
-rw-r--r--arch/x86/mm/kmemcheck/error.c19
-rw-r--r--arch/x86/mm/kmmio.c7
-rw-r--r--arch/x86/mm/srat_64.c4
-rw-r--r--arch/x86/oprofile/nmi_int.c3
-rw-r--r--arch/x86/pci/Makefile2
-rw-r--r--arch/x86/pci/bus_numa.c2
-rw-r--r--arch/x86/pci/intel_bus.c90
-rw-r--r--arch/x86/tools/chkobjdump.awk16
-rw-r--r--arch/x86/xen/enlighten.c4
-rw-r--r--block/blk-barrier.c2
-rw-r--r--block/blk-cgroup.c4
-rw-r--r--block/blk-core.c11
-rw-r--r--block/blk-ioc.c5
-rw-r--r--block/blk-settings.c140
-rw-r--r--block/cfq-iosched.c124
-rw-r--r--block/genhd.c2
-rw-r--r--crypto/async_tx/raid6test.c7
-rw-r--r--drivers/acpi/acpi_pad.c37
-rw-r--r--drivers/acpi/bus.c7
-rw-r--r--drivers/acpi/dock.c1
-rw-r--r--drivers/acpi/ec.c126
-rw-r--r--drivers/acpi/pci_link.c2
-rw-r--r--drivers/acpi/pci_root.c2
-rw-r--r--drivers/acpi/power.c2
-rw-r--r--drivers/acpi/power_meter.c4
-rw-r--r--drivers/acpi/processor_idle.c100
-rw-r--r--drivers/acpi/processor_pdc.c46
-rw-r--r--drivers/acpi/processor_perflib.c6
-rw-r--r--drivers/acpi/processor_thermal.c3
-rw-r--r--drivers/acpi/sbs.c3
-rw-r--r--drivers/acpi/sbshc.c2
-rw-r--r--drivers/acpi/scan.c27
-rw-r--r--drivers/acpi/sleep.c29
-rw-r--r--drivers/acpi/tables.c4
-rw-r--r--drivers/acpi/video.c51
-rw-r--r--drivers/ata/ahci.c15
-rw-r--r--drivers/ata/ata_piix.c2
-rw-r--r--drivers/ata/libata-core.c38
-rw-r--r--drivers/ata/libata-eh.c5
-rw-r--r--drivers/ata/libata-scsi.c2
-rw-r--r--drivers/ata/libata-sff.c3
-rw-r--r--drivers/ata/sata_promise.c2
-rw-r--r--drivers/base/class.c2
-rw-r--r--drivers/base/devtmpfs.c3
-rw-r--r--drivers/base/memory.c2
-rw-r--r--drivers/base/power/main.c9
-rw-r--r--drivers/block/DAC960.c2
-rw-r--r--drivers/block/aoe/aoecmd.c17
-rw-r--r--drivers/block/cciss.c3
-rw-r--r--drivers/block/drbd/Kconfig2
-rw-r--r--drivers/block/drbd/drbd_int.h9
-rw-r--r--drivers/block/drbd/drbd_main.c8
-rw-r--r--drivers/block/drbd/drbd_nl.c19
-rw-r--r--drivers/block/drbd/drbd_proc.c2
-rw-r--r--drivers/block/drbd/drbd_receiver.c49
-rw-r--r--drivers/block/drbd/drbd_worker.c2
-rw-r--r--drivers/block/mg_disk.c2
-rw-r--r--drivers/block/pktcdvd.c2
-rw-r--r--drivers/bluetooth/Kconfig13
-rw-r--r--drivers/bluetooth/Makefile1
-rw-r--r--drivers/bluetooth/ath3k.c187
-rw-r--r--drivers/bluetooth/bluecard_cs.c4
-rw-r--r--drivers/bluetooth/bt3c_cs.c4
-rw-r--r--drivers/bluetooth/btmrvl_sdio.c1
-rw-r--r--drivers/bluetooth/btuart_cs.c4
-rw-r--r--drivers/bluetooth/dtl1_cs.c4
-rw-r--r--drivers/char/Kconfig2
-rw-r--r--drivers/char/agp/amd64-agp.c20
-rw-r--r--drivers/char/agp/backend.c13
-rw-r--r--drivers/char/agp/hp-agp.c6
-rw-r--r--drivers/char/agp/intel-agp.c6
-rw-r--r--drivers/char/hw_random/core.c5
-rw-r--r--drivers/char/hw_random/virtio-rng.c6
-rw-r--r--drivers/char/ipmi/ipmi_si_intf.c4
-rw-r--r--drivers/char/mem.c30
-rw-r--r--drivers/char/nozomi.c2
-rw-r--r--drivers/char/random.c9
-rw-r--r--drivers/char/sonypi.c11
-rw-r--r--drivers/char/toshiba.c12
-rw-r--r--drivers/char/tpm/tpm_infineon.c79
-rw-r--r--drivers/char/tty_io.c2
-rw-r--r--drivers/char/uv_mmtimer.c18
-rw-r--r--drivers/clocksource/cs5535-clockevt.c2
-rw-r--r--drivers/connector/connector.c175
-rw-r--r--drivers/cpufreq/cpufreq_ondemand.c3
-rw-r--r--drivers/cpuidle/governors/menu.c12
-rw-r--r--drivers/crypto/padlock-sha.c23
-rw-r--r--drivers/dma/at_hdmac.c4
-rw-r--r--drivers/dma/coh901318.c4
-rw-r--r--drivers/dma/dmaengine.c1
-rw-r--r--drivers/dma/dmatest.c2
-rw-r--r--drivers/dma/dw_dmac.c2
-rw-r--r--drivers/dma/ioat/dma.c2
-rw-r--r--drivers/dma/ioat/dma.h18
-rw-r--r--drivers/dma/ioat/dma_v2.c69
-rw-r--r--drivers/dma/ioat/dma_v2.h2
-rw-r--r--drivers/dma/ioat/dma_v3.c60
-rw-r--r--drivers/dma/ioat/registers.h1
-rw-r--r--drivers/dma/ipu/ipu_idmac.c25
-rw-r--r--drivers/dma/shdma.c324
-rw-r--r--drivers/dma/shdma.h9
-rw-r--r--drivers/edac/amd64_edac.c17
-rw-r--r--drivers/edac/i5000_edac.c8
-rw-r--r--drivers/edac/mpc85xx_edac.c8
-rw-r--r--drivers/firewire/core-card.c41
-rw-r--r--drivers/firewire/core-cdev.c50
-rw-r--r--drivers/firewire/net.c53
-rw-r--r--drivers/firewire/ohci.c17
-rw-r--r--drivers/gpio/Kconfig9
-rw-r--r--drivers/gpio/Makefile1
-rw-r--r--drivers/gpio/adp5588-gpio.c266
-rw-r--r--drivers/gpio/gpiolib.c2
-rw-r--r--drivers/gpu/drm/Kconfig2
-rw-r--r--drivers/gpu/drm/ati_pcigart.c10
-rw-r--r--drivers/gpu/drm/drm_bufs.c4
-rw-r--r--drivers/gpu/drm/drm_crtc.c1
-rw-r--r--drivers/gpu/drm/drm_crtc_helper.c29
-rw-r--r--drivers/gpu/drm/drm_edid.c64
-rw-r--r--drivers/gpu/drm/drm_fb_helper.c13
-rw-r--r--drivers/gpu/drm/drm_gem.c13
-rw-r--r--drivers/gpu/drm/drm_irq.c5
-rw-r--r--drivers/gpu/drm/drm_mm.c3
-rw-r--r--drivers/gpu/drm/drm_modes.c90
-rw-r--r--drivers/gpu/drm/drm_pci.c8
-rw-r--r--drivers/gpu/drm/i915/i915_debugfs.c33
-rw-r--r--drivers/gpu/drm/i915/i915_dma.c36
-rw-r--r--drivers/gpu/drm/i915/i915_drv.c270
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h139
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c390
-rw-r--r--drivers/gpu/drm/i915/i915_gem_tiling.c46
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c132
-rw-r--r--drivers/gpu/drm/i915/i915_reg.h14
-rw-r--r--drivers/gpu/drm/i915/i915_suspend.c12
-rw-r--r--drivers/gpu/drm/i915/intel_bios.c35
-rw-r--r--drivers/gpu/drm/i915/intel_bios.h40
-rw-r--r--drivers/gpu/drm/i915/intel_crt.c5
-rw-r--r--drivers/gpu/drm/i915/intel_display.c732
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c81
-rw-r--r--drivers/gpu/drm/i915/intel_fb.c2
-rw-r--r--drivers/gpu/drm/i915/intel_hdmi.c55
-rw-r--r--drivers/gpu/drm/i915/intel_lvds.c116
-rw-r--r--drivers/gpu/drm/i915/intel_sdvo.c94
-rw-r--r--drivers/gpu/drm/nouveau/Kconfig5
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_acpi.c12
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_bios.c205
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_bios.h2
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_bo.c245
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_channel.c54
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_connector.c36
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_dma.c108
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_dma.h10
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_dp.c8
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_drv.c14
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_drv.h78
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_fbcon.c59
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_fbcon.h7
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_fence.c2
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_gem.c55
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_grctx.c4
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_irq.c161
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_mem.c215
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_notifier.c13
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_object.c5
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_reg.h17
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_sgdma.c7
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_state.c77
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_ttm.c30
-rw-r--r--drivers/gpu/drm/nouveau/nv04_dac.c41
-rw-r--r--drivers/gpu/drm/nouveau/nv04_fbcon.c50
-rw-r--r--drivers/gpu/drm/nouveau/nv04_fifo.c34
-rw-r--r--drivers/gpu/drm/nouveau/nv04_graph.c159
-rw-r--r--drivers/gpu/drm/nouveau/nv04_instmem.c2
-rw-r--r--drivers/gpu/drm/nouveau/nv10_fb.c32
-rw-r--r--drivers/gpu/drm/nouveau/nv10_graph.c28
-rw-r--r--drivers/gpu/drm/nouveau/nv17_tv.c117
-rw-r--r--drivers/gpu/drm/nouveau/nv20_graph.c61
-rw-r--r--drivers/gpu/drm/nouveau/nv40_fb.c53
-rw-r--r--drivers/gpu/drm/nouveau/nv40_graph.c116
-rw-r--r--drivers/gpu/drm/nouveau/nv50_crtc.c33
-rw-r--r--drivers/gpu/drm/nouveau/nv50_display.c17
-rw-r--r--drivers/gpu/drm/nouveau/nv50_fbcon.c32
-rw-r--r--drivers/gpu/drm/nouveau/nv50_fifo.c17
-rw-r--r--drivers/gpu/drm/nouveau/nv50_graph.c13
-rw-r--r--drivers/gpu/drm/nouveau/nv50_instmem.c58
-rw-r--r--drivers/gpu/drm/nouveau/nv50_sor.c14
-rw-r--r--drivers/gpu/drm/radeon/Kconfig12
-rw-r--r--drivers/gpu/drm/radeon/Makefile5
-rw-r--r--drivers/gpu/drm/radeon/ObjectID.h801
-rw-r--r--drivers/gpu/drm/radeon/atom.c109
-rw-r--r--drivers/gpu/drm/radeon/atom.h1
-rw-r--r--drivers/gpu/drm/radeon/atombios_crtc.c259
-rw-r--r--drivers/gpu/drm/radeon/atombios_dp.c39
-rw-r--r--drivers/gpu/drm/radeon/mkregtable.c4
-rw-r--r--drivers/gpu/drm/radeon/r100.c42
-rw-r--r--drivers/gpu/drm/radeon/r200.c7
-rw-r--r--drivers/gpu/drm/radeon/r300.c33
-rw-r--r--drivers/gpu/drm/radeon/r420.c48
-rw-r--r--drivers/gpu/drm/radeon/r520.c4
-rw-r--r--drivers/gpu/drm/radeon/r600.c207
-rw-r--r--drivers/gpu/drm/radeon/r600_audio.c5
-rw-r--r--drivers/gpu/drm/radeon/r600_blit_kms.c28
-rw-r--r--drivers/gpu/drm/radeon/r600_cp.c9
-rw-r--r--drivers/gpu/drm/radeon/r600_cs.c83
-rw-r--r--drivers/gpu/drm/radeon/r600d.h25
-rw-r--r--drivers/gpu/drm/radeon/radeon.h38
-rw-r--r--drivers/gpu/drm/radeon/radeon_agp.c17
-rw-r--r--drivers/gpu/drm/radeon/radeon_asic.h23
-rw-r--r--drivers/gpu/drm/radeon/radeon_atombios.c61
-rw-r--r--drivers/gpu/drm/radeon/radeon_benchmark.c55
-rw-r--r--drivers/gpu/drm/radeon/radeon_clocks.c4
-rw-r--r--drivers/gpu/drm/radeon/radeon_combios.c70
-rw-r--r--drivers/gpu/drm/radeon/radeon_connectors.c60
-rw-r--r--drivers/gpu/drm/radeon/radeon_cp.c1
-rw-r--r--drivers/gpu/drm/radeon/radeon_cs.c11
-rw-r--r--drivers/gpu/drm/radeon/radeon_device.c7
-rw-r--r--drivers/gpu/drm/radeon/radeon_display.c68
-rw-r--r--drivers/gpu/drm/radeon/radeon_drv.h3
-rw-r--r--drivers/gpu/drm/radeon/radeon_encoders.c179
-rw-r--r--drivers/gpu/drm/radeon/radeon_fb.c2
-rw-r--r--drivers/gpu/drm/radeon/radeon_fence.c9
-rw-r--r--drivers/gpu/drm/radeon/radeon_gem.c5
-rw-r--r--drivers/gpu/drm/radeon/radeon_irq.c10
-rw-r--r--drivers/gpu/drm/radeon/radeon_irq_kms.c10
-rw-r--r--drivers/gpu/drm/radeon/radeon_legacy_crtc.c77
-rw-r--r--drivers/gpu/drm/radeon/radeon_legacy_encoders.c21
-rw-r--r--drivers/gpu/drm/radeon/radeon_legacy_tv.c14
-rw-r--r--drivers/gpu/drm/radeon/radeon_mode.h56
-rw-r--r--drivers/gpu/drm/radeon/radeon_object.c44
-rw-r--r--drivers/gpu/drm/radeon/radeon_object.h4
-rw-r--r--drivers/gpu/drm/radeon/radeon_ring.c107
-rw-r--r--drivers/gpu/drm/radeon/radeon_ttm.c5
-rw-r--r--drivers/gpu/drm/radeon/reg_srcs/r2002
-rw-r--r--drivers/gpu/drm/radeon/reg_srcs/r420795
-rw-r--r--drivers/gpu/drm/radeon/reg_srcs/rs60068
-rw-r--r--drivers/gpu/drm/radeon/reg_srcs/rv5156
-rw-r--r--drivers/gpu/drm/radeon/rs400.c30
-rw-r--r--drivers/gpu/drm/radeon/rs600.c14
-rw-r--r--drivers/gpu/drm/radeon/rs690.c4
-rw-r--r--drivers/gpu/drm/radeon/rv515.c5
-rw-r--r--drivers/gpu/drm/radeon/rv770.c88
-rw-r--r--drivers/gpu/drm/ttm/ttm_bo.c75
-rw-r--r--drivers/gpu/drm/ttm/ttm_bo_util.c9
-rw-r--r--drivers/gpu/drm/ttm/ttm_lock.c2
-rw-r--r--drivers/gpu/drm/ttm/ttm_object.c2
-rw-r--r--drivers/gpu/drm/ttm/ttm_tt.c35
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c25
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_drv.c125
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_drv.h18
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c127
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_fb.c11
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c37
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c8
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_irq.c13
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_kms.c30
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c9
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_resource.c64
-rw-r--r--drivers/gpu/vga/vgaarb.c2
-rw-r--r--drivers/hid/hid-apple.c7
-rw-r--r--drivers/hid/hid-core.c4
-rw-r--r--drivers/hid/hid-ids.h6
-rw-r--r--drivers/hid/hid-samsung.c25
-rw-r--r--drivers/hid/hid-wacom.c4
-rw-r--r--drivers/hwmon/Kconfig12
-rw-r--r--drivers/hwmon/Makefile1
-rw-r--r--drivers/hwmon/adt7462.c4
-rw-r--r--drivers/hwmon/amc6821.c1115
-rw-r--r--drivers/hwmon/asus_atk0110.c304
-rw-r--r--drivers/hwmon/coretemp.c16
-rw-r--r--drivers/hwmon/fschmd.c7
-rw-r--r--drivers/hwmon/k10temp.c40
-rw-r--r--drivers/hwmon/k8temp.c2
-rw-r--r--drivers/hwmon/lm78.c25
-rw-r--r--drivers/hwmon/sis5595.c2
-rw-r--r--drivers/hwmon/smsc47m1.c2
-rw-r--r--drivers/hwmon/via686a.c2
-rw-r--r--drivers/hwmon/vt8231.c2
-rw-r--r--drivers/hwmon/w83781d.c26
-rw-r--r--drivers/i2c/busses/i2c-ali1563.c8
-rw-r--r--drivers/i2c/busses/i2c-imx.c26
-rw-r--r--drivers/i2c/busses/i2c-pca-isa.c4
-rw-r--r--drivers/i2c/busses/i2c-pca-platform.c4
-rw-r--r--drivers/i2c/busses/i2c-piix4.c4
-rw-r--r--drivers/i2c/busses/i2c-tiny-usb.c12
-rw-r--r--drivers/i2c/busses/i2c-viapro.c4
-rw-r--r--drivers/i2c/i2c-core.c7
-rw-r--r--drivers/infiniband/core/cma.c6
-rw-r--r--drivers/infiniband/hw/ipath/ipath_fs.c4
-rw-r--r--drivers/infiniband/hw/mlx4/qp.c2
-rw-r--r--drivers/infiniband/hw/mlx4/srq.c6
-rw-r--r--drivers/input/evdev.c3
-rw-r--r--drivers/input/ff-memless.c48
-rw-r--r--drivers/input/input-polldev.c6
-rw-r--r--drivers/input/input.c87
-rw-r--r--drivers/input/joystick/gf2k.c2
-rw-r--r--drivers/input/joystick/iforce/iforce-main.c29
-rw-r--r--drivers/input/joystick/iforce/iforce-usb.c29
-rw-r--r--drivers/input/joystick/iforce/iforce.h2
-rw-r--r--drivers/input/joystick/xpad.c4
-rw-r--r--drivers/input/keyboard/atkbd.c74
-rw-r--r--drivers/input/keyboard/davinci_keyscan.c8
-rw-r--r--drivers/input/keyboard/matrix_keypad.c29
-rw-r--r--drivers/input/keyboard/twl4030_keypad.c11
-rw-r--r--drivers/input/misc/twl4030-pwrbutton.c14
-rw-r--r--drivers/input/misc/winbond-cir.c2
-rw-r--r--drivers/input/misc/wistron_btns.c2
-rw-r--r--drivers/input/mouse/Kconfig2
-rw-r--r--drivers/input/mouse/bcm5974.c44
-rw-r--r--drivers/input/mouse/hgpk.c1
-rw-r--r--drivers/input/mouse/lifebook.c8
-rw-r--r--drivers/input/mouse/psmouse-base.c83
-rw-r--r--drivers/input/mouse/sentelic.c6
-rw-r--r--drivers/input/mouse/synaptics.c10
-rw-r--r--drivers/input/mouse/synaptics.h1
-rw-r--r--drivers/input/serio/i8042-x86ia64io.h7
-rw-r--r--drivers/input/serio/i8042.c8
-rw-r--r--drivers/input/serio/serio.c11
-rw-r--r--drivers/input/touchscreen/ad7879.c197
-rw-r--r--drivers/input/touchscreen/usbtouchscreen.c8
-rw-r--r--drivers/isdn/hardware/mISDN/hfcmulti.c2
-rw-r--r--drivers/lguest/segments.c4
-rw-r--r--drivers/macintosh/smu.c2
-rw-r--r--drivers/macintosh/therm_pm72.c2
-rw-r--r--drivers/macintosh/therm_windtunnel.c2
-rw-r--r--drivers/md/dm-log-userspace-transfer.c10
-rw-r--r--drivers/md/dm-raid1.c2
-rw-r--r--drivers/md/dm-region-hash.c5
-rw-r--r--drivers/md/dm-snap-persistent.c2
-rw-r--r--drivers/md/dm-stripe.c2
-rw-r--r--drivers/md/dm-sysfs.c8
-rw-r--r--drivers/md/dm-table.c20
-rw-r--r--drivers/md/dm.c21
-rw-r--r--drivers/md/md.c56
-rw-r--r--drivers/md/raid5.c14
-rw-r--r--drivers/media/IR/ir-keytable.c2
-rw-r--r--drivers/media/common/saa7146_video.c4
-rw-r--r--drivers/media/common/tuners/tda8290.c12
-rw-r--r--drivers/media/dvb/Kconfig4
-rw-r--r--drivers/media/dvb/Makefile14
-rw-r--r--drivers/media/dvb/dvb-core/dmxdev.c2
-rw-r--r--drivers/media/dvb/dvb-core/dvb_demux.c20
-rw-r--r--drivers/media/dvb/dvb-usb/Kconfig4
-rw-r--r--drivers/media/dvb/frontends/Kconfig19
-rw-r--r--drivers/media/dvb/frontends/Makefile2
-rw-r--r--drivers/media/dvb/frontends/dib8000.h2
-rw-r--r--drivers/media/dvb/frontends/l64781.c4
-rw-r--r--drivers/media/dvb/frontends/lgdt3305.h6
-rw-r--r--drivers/media/dvb/frontends/mb86a16.c1878
-rw-r--r--drivers/media/dvb/frontends/mb86a16.h52
-rw-r--r--drivers/media/dvb/frontends/mb86a16_priv.h151
-rw-r--r--drivers/media/dvb/frontends/tda10021.c4
-rw-r--r--drivers/media/dvb/frontends/tda665x.c257
-rw-r--r--drivers/media/dvb/frontends/tda665x.h52
-rw-r--r--drivers/media/dvb/mantis/Kconfig32
-rw-r--r--drivers/media/dvb/mantis/Makefile28
-rw-r--r--drivers/media/dvb/mantis/hopper_cards.c275
-rw-r--r--drivers/media/dvb/mantis/hopper_vp3028.c88
-rw-r--r--drivers/media/dvb/mantis/hopper_vp3028.h30
-rw-r--r--drivers/media/dvb/mantis/mantis_ca.c207
-rw-r--r--drivers/media/dvb/mantis/mantis_ca.h27
-rw-r--r--drivers/media/dvb/mantis/mantis_cards.c305
-rw-r--r--drivers/media/dvb/mantis/mantis_common.h179
-rw-r--r--drivers/media/dvb/mantis/mantis_core.c238
-rw-r--r--drivers/media/dvb/mantis/mantis_core.h57
-rw-r--r--drivers/media/dvb/mantis/mantis_dma.c256
-rw-r--r--drivers/media/dvb/mantis/mantis_dma.h30
-rw-r--r--drivers/media/dvb/mantis/mantis_dvb.c296
-rw-r--r--drivers/media/dvb/mantis/mantis_dvb.h35
-rw-r--r--drivers/media/dvb/mantis/mantis_evm.c117
-rw-r--r--drivers/media/dvb/mantis/mantis_hif.c240
-rw-r--r--drivers/media/dvb/mantis/mantis_hif.h29
-rw-r--r--drivers/media/dvb/mantis/mantis_i2c.c267
-rw-r--r--drivers/media/dvb/mantis/mantis_i2c.h30
-rw-r--r--drivers/media/dvb/mantis/mantis_input.c148
-rw-r--r--drivers/media/dvb/mantis/mantis_ioc.c130
-rw-r--r--drivers/media/dvb/mantis/mantis_ioc.h51
-rw-r--r--drivers/media/dvb/mantis/mantis_link.h83
-rw-r--r--drivers/media/dvb/mantis/mantis_pci.c177
-rw-r--r--drivers/media/dvb/mantis/mantis_pci.h27
-rw-r--r--drivers/media/dvb/mantis/mantis_pcmcia.c120
-rw-r--r--drivers/media/dvb/mantis/mantis_reg.h197
-rw-r--r--drivers/media/dvb/mantis/mantis_uart.c186
-rw-r--r--drivers/media/dvb/mantis/mantis_uart.h58
-rw-r--r--drivers/media/dvb/mantis/mantis_vp1033.c212
-rw-r--r--drivers/media/dvb/mantis/mantis_vp1033.h30
-rw-r--r--drivers/media/dvb/mantis/mantis_vp1034.c119
-rw-r--r--drivers/media/dvb/mantis/mantis_vp1034.h33
-rw-r--r--drivers/media/dvb/mantis/mantis_vp1041.c358
-rw-r--r--drivers/media/dvb/mantis/mantis_vp1041.h33
-rw-r--r--drivers/media/dvb/mantis/mantis_vp2033.c187
-rw-r--r--drivers/media/dvb/mantis/mantis_vp2033.h30
-rw-r--r--drivers/media/dvb/mantis/mantis_vp2040.c186
-rw-r--r--drivers/media/dvb/mantis/mantis_vp2040.h32
-rw-r--r--drivers/media/dvb/mantis/mantis_vp3028.c38
-rw-r--r--drivers/media/dvb/mantis/mantis_vp3028.h33
-rw-r--r--drivers/media/dvb/mantis/mantis_vp3030.c105
-rw-r--r--drivers/media/dvb/mantis/mantis_vp3030.h30
-rw-r--r--drivers/media/video/bt8xx/bttv-driver.c1
-rw-r--r--drivers/media/video/bt8xx/bttv-i2c.c8
-rw-r--r--drivers/media/video/bt8xx/bttvp.h1
-rw-r--r--drivers/media/video/gspca/gspca.c2
-rw-r--r--drivers/media/video/gspca/m5602/m5602_s5k4aa.c6
-rw-r--r--drivers/media/video/gspca/ov534.c2
-rw-r--r--drivers/media/video/gspca/sn9c20x.c2
-rw-r--r--drivers/media/video/gspca/stv06xx/stv06xx_vv6410.h1
-rw-r--r--drivers/media/video/gspca/sunplus.c26
-rw-r--r--drivers/media/video/gspca/vc032x.c4
-rw-r--r--drivers/media/video/mt9t112.c2
-rw-r--r--drivers/media/video/mx1_camera.c2
-rw-r--r--drivers/media/video/pwc/pwc-ctrl.c2
-rw-r--r--drivers/media/video/rj54n1cb0c.c2
-rw-r--r--drivers/media/video/saa7134/saa7134-core.c13
-rw-r--r--drivers/media/video/saa7134/saa7134-empress.c8
-rw-r--r--drivers/media/video/saa7134/saa7134-ts.c13
-rw-r--r--drivers/media/video/sh_mobile_ceu_camera.c2
-rw-r--r--drivers/media/video/uvc/uvc_ctrl.c2
-rw-r--r--drivers/media/video/uvc/uvc_queue.c13
-rw-r--r--drivers/media/video/uvc/uvc_video.c45
-rw-r--r--drivers/media/video/uvc/uvcvideo.h5
-rw-r--r--drivers/message/fusion/mptbase.c2
-rw-r--r--drivers/message/fusion/mptscsih.c2
-rw-r--r--drivers/message/i2o/i2o_config.c13
-rw-r--r--drivers/mfd/Makefile8
-rw-r--r--drivers/mfd/asic3.c40
-rw-r--r--drivers/mfd/mc13783-core.c4
-rw-r--r--drivers/mfd/t7l66xb.c55
-rw-r--r--drivers/mfd/tc6387xb.c119
-rw-r--r--drivers/mfd/tc6393xb.c56
-rw-r--r--drivers/mfd/tmio_core.c52
-rw-r--r--drivers/mfd/twl4030-irq.c4
-rw-r--r--drivers/mfd/wm8350-core.c3
-rw-r--r--drivers/mfd/wm8350-irq.c4
-rw-r--r--drivers/mmc/card/block.c8
-rw-r--r--drivers/mmc/card/mmc_test.c9
-rw-r--r--drivers/mmc/card/queue.c18
-rw-r--r--drivers/mmc/core/mmc.c2
-rw-r--r--drivers/mmc/host/tmio_mmc.c59
-rw-r--r--drivers/mmc/host/tmio_mmc.h46
-rw-r--r--drivers/mtd/maps/Kconfig17
-rw-r--r--drivers/mtd/maps/pismo.c320
-rw-r--r--drivers/mtd/mtdoops.c2
-rw-r--r--drivers/mtd/tests/mtd_readtest.c6
-rw-r--r--drivers/mtd/tests/mtd_speedtest.c7
-rw-r--r--drivers/mtd/tests/mtd_stresstest.c6
-rw-r--r--drivers/mtd/ubi/cdev.c1
-rw-r--r--drivers/mtd/ubi/kapi.c15
-rw-r--r--drivers/mtd/ubi/upd.c1
-rw-r--r--drivers/mtd/ubi/vtbl.c1
-rw-r--r--drivers/net/3c507.c4
-rw-r--r--drivers/net/Kconfig2
-rw-r--r--drivers/net/arm/Kconfig1
-rw-r--r--drivers/net/atarilance.c2
-rw-r--r--drivers/net/atlx/atl2.c7
-rw-r--r--drivers/net/ax88796.c2
-rw-r--r--drivers/net/benet/be.h6
-rw-r--r--drivers/net/benet/be_cmds.c39
-rw-r--r--drivers/net/benet/be_cmds.h19
-rw-r--r--drivers/net/benet/be_ethtool.c77
-rw-r--r--drivers/net/benet/be_main.c35
-rw-r--r--drivers/net/bfin_mac.c5
-rw-r--r--drivers/net/bnx2x_main.c2
-rw-r--r--drivers/net/bonding/bond_3ad.c2
-rw-r--r--drivers/net/bonding/bond_main.c2
-rw-r--r--drivers/net/can/mcp251x.c2
-rw-r--r--drivers/net/cs89x0.c3
-rw-r--r--drivers/net/cxgb3/sge.c20
-rw-r--r--drivers/net/davinci_emac.c4
-rw-r--r--drivers/net/e1000/e1000.h2
-rw-r--r--drivers/net/e1000/e1000_main.c62
-rw-r--r--drivers/net/e1000e/82571.c2
-rw-r--r--drivers/net/e1000e/e1000.h2
-rw-r--r--drivers/net/e1000e/es2lan.c2
-rw-r--r--drivers/net/e1000e/hw.h1
-rw-r--r--drivers/net/e1000e/ich8lan.c78
-rw-r--r--drivers/net/e1000e/lib.c54
-rw-r--r--drivers/net/e1000e/netdev.c87
-rw-r--r--drivers/net/e1000e/phy.c85
-rw-r--r--drivers/net/fsl_pq_mdio.c30
-rw-r--r--drivers/net/gianfar.c13
-rw-r--r--drivers/net/hamradio/bpqether.c4
-rw-r--r--drivers/net/ibmlana.c3
-rw-r--r--drivers/net/igb/e1000_82575.c4
-rw-r--r--drivers/net/igb/e1000_phy.c9
-rw-r--r--drivers/net/igb/igb_ethtool.c2
-rw-r--r--drivers/net/igb/igb_main.c33
-rw-r--r--drivers/net/igbvf/netdev.c18
-rw-r--r--drivers/net/ixgb/ixgb_main.c10
-rw-r--r--drivers/net/ixgbe/Makefile2
-rw-r--r--drivers/net/ixgbe/ixgbe.h2
-rw-r--r--drivers/net/ixgbe/ixgbe_82598.c24
-rw-r--r--drivers/net/ixgbe/ixgbe_82599.c2
-rw-r--r--drivers/net/ixgbe/ixgbe_common.c2
-rw-r--r--drivers/net/ixgbe/ixgbe_common.h2
-rw-r--r--drivers/net/ixgbe/ixgbe_dcb.c2
-rw-r--r--drivers/net/ixgbe/ixgbe_dcb.h2
-rw-r--r--drivers/net/ixgbe/ixgbe_dcb_82598.c2
-rw-r--r--drivers/net/ixgbe/ixgbe_dcb_82598.h2
-rw-r--r--drivers/net/ixgbe/ixgbe_dcb_82599.c2
-rw-r--r--drivers/net/ixgbe/ixgbe_dcb_82599.h2
-rw-r--r--drivers/net/ixgbe/ixgbe_dcb_nl.c18
-rw-r--r--drivers/net/ixgbe/ixgbe_ethtool.c2
-rw-r--r--drivers/net/ixgbe/ixgbe_fcoe.c2
-rw-r--r--drivers/net/ixgbe/ixgbe_fcoe.h2
-rw-r--r--drivers/net/ixgbe/ixgbe_main.c45
-rw-r--r--drivers/net/ixgbe/ixgbe_phy.c2
-rw-r--r--drivers/net/ixgbe/ixgbe_phy.h2
-rw-r--r--drivers/net/ixgbe/ixgbe_type.h2
-rw-r--r--drivers/net/ks8851_mll.c4
-rw-r--r--drivers/net/ll_temac_main.c2
-rw-r--r--drivers/net/mlx4/main.c2
-rw-r--r--drivers/net/mv643xx_eth.c6
-rw-r--r--drivers/net/netxen/netxen_nic.h4
-rw-r--r--drivers/net/netxen/netxen_nic_ethtool.c193
-rw-r--r--drivers/net/netxen/netxen_nic_hw.c6
-rw-r--r--drivers/net/netxen/netxen_nic_init.c4
-rw-r--r--drivers/net/netxen/netxen_nic_main.c14
-rw-r--r--drivers/net/niu.c2
-rw-r--r--drivers/net/pcmcia/fmvj18x_cs.c1
-rw-r--r--drivers/net/pcmcia/nmclan_cs.c1
-rw-r--r--drivers/net/pcmcia/pcnet_cs.c4
-rw-r--r--drivers/net/pcnet32.c3
-rw-r--r--drivers/net/phy/broadcom.c4
-rw-r--r--drivers/net/phy/mdio_bus.c72
-rw-r--r--drivers/net/phy/phy.c4
-rw-r--r--drivers/net/phy/phy_device.c31
-rw-r--r--drivers/net/qlge/qlge_main.c15
-rw-r--r--drivers/net/rrunner.c2
-rw-r--r--drivers/net/s2io.c2
-rw-r--r--drivers/net/sfc/efx.c7
-rw-r--r--drivers/net/sfc/falcon.c1
-rw-r--r--drivers/net/sfc/falcon_boards.c45
-rw-r--r--drivers/net/sfc/falcon_xmac.c38
-rw-r--r--drivers/net/sfc/mcdi.c14
-rw-r--r--drivers/net/sfc/mcdi.h1
-rw-r--r--drivers/net/sfc/mcdi_pcol.h4
-rw-r--r--drivers/net/sfc/mcdi_phy.c93
-rw-r--r--drivers/net/sfc/mtd.c5
-rw-r--r--drivers/net/sfc/net_driver.h1
-rw-r--r--drivers/net/sfc/nic.c2
-rw-r--r--drivers/net/sfc/qt202x_phy.c246
-rw-r--r--drivers/net/sfc/selftest.c8
-rw-r--r--drivers/net/sfc/siena.c1
-rw-r--r--drivers/net/sfc/tenxpress.c138
-rw-r--r--drivers/net/sfc/tx.c4
-rw-r--r--drivers/net/sh_eth.c2
-rw-r--r--drivers/net/sky2.c54
-rw-r--r--drivers/net/starfire.c5
-rw-r--r--drivers/net/tc35815.c1
-rw-r--r--drivers/net/tg3.c27
-rw-r--r--drivers/net/tg3.h3
-rw-r--r--drivers/net/tulip/Kconfig4
-rw-r--r--drivers/net/tulip/dmfe.c21
-rw-r--r--drivers/net/tulip/tulip_core.c33
-rw-r--r--drivers/net/tun.c6
-rw-r--r--drivers/net/ucc_geth.c48
-rw-r--r--drivers/net/ucc_geth.h13
-rw-r--r--drivers/net/usb/cdc_ether.c7
-rw-r--r--drivers/net/usb/hso.c105
-rw-r--r--drivers/net/usb/rtl8150.c4
-rw-r--r--drivers/net/via-rhine.c41
-rw-r--r--drivers/net/via-velocity.c49
-rw-r--r--drivers/net/virtio_net.c3
-rw-r--r--drivers/net/vxge/vxge-main.c8
-rw-r--r--drivers/net/wimax/i2400m/i2400m-usb.h2
-rw-r--r--drivers/net/wimax/i2400m/usb.c12
-rw-r--r--drivers/net/wireless/ath/ath5k/base.c18
-rw-r--r--drivers/net/wireless/ath/ath5k/eeprom.c32
-rw-r--r--drivers/net/wireless/ath/ath5k/eeprom.h8
-rw-r--r--drivers/net/wireless/ath/ath9k/Kconfig2
-rw-r--r--drivers/net/wireless/ath/ath9k/ath9k.h6
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.c7
-rw-r--r--drivers/net/wireless/ath/ath9k/mac.c2
-rw-r--r--drivers/net/wireless/ath/ath9k/mac.h3
-rw-r--r--drivers/net/wireless/ath/ath9k/main.c22
-rw-r--r--drivers/net/wireless/ath/ath9k/pci.c2
-rw-r--r--drivers/net/wireless/ath/ath9k/xmit.c46
-rw-r--r--drivers/net/wireless/b43/b43.h1
-rw-r--r--drivers/net/wireless/b43/dma.c197
-rw-r--r--drivers/net/wireless/b43/dma.h7
-rw-r--r--drivers/net/wireless/b43/main.c13
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-3945.c15
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-3945.h1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-4965.c6
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-5000-hw.h14
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-5000.c20
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-rs.c2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c6
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.c46
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.h2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-csr.h8
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-dev.h15
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-devtrace.c26
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-devtrace.h26
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-eeprom.c37
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-eeprom.h4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-hcmd.c2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-rx.c61
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-scan.c3
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-sta.c12
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-tx.c25
-rw-r--r--drivers/net/wireless/iwlwifi/iwl3945-base.c68
-rw-r--r--drivers/net/wireless/iwmc3200wifi/commands.c4
-rw-r--r--drivers/net/wireless/iwmc3200wifi/commands.h1
-rw-r--r--drivers/net/wireless/iwmc3200wifi/iwm.h4
-rw-r--r--drivers/net/wireless/iwmc3200wifi/netdev.c2
-rw-r--r--drivers/net/wireless/iwmc3200wifi/rx.c4
-rw-r--r--drivers/net/wireless/libertas/mesh.c4
-rw-r--r--drivers/net/wireless/libertas/scan.c22
-rw-r--r--drivers/net/wireless/libertas/wext.c2
-rw-r--r--drivers/net/wireless/libertas_tf/main.c1
-rw-r--r--drivers/net/wireless/mwl8k.c4
-rw-r--r--drivers/net/wireless/orinoco/wext.c6
-rw-r--r--drivers/net/wireless/p54/p54pci.c8
-rw-r--r--drivers/net/wireless/rt2x00/rt2800.h2
-rw-r--r--drivers/net/wireless/rt2x00/rt2800lib.c19
-rw-r--r--drivers/net/wireless/rt2x00/rt2800usb.c1
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00.h6
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00dev.c12
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00queue.c6
-rw-r--r--drivers/net/wireless/rt2x00/rt61pci.c5
-rw-r--r--drivers/net/wireless/rtl818x/rtl8180_dev.c1
-rw-r--r--drivers/net/wireless/rtl818x/rtl8187_dev.c1
-rw-r--r--drivers/net/wireless/wl12xx/wl1251_boot.c2
-rw-r--r--drivers/net/wireless/wl12xx/wl1271_cmd.c4
-rw-r--r--drivers/net/wireless/zd1211rw/zd_chip.c140
-rw-r--r--drivers/net/wireless/zd1211rw/zd_chip.h3
-rw-r--r--drivers/net/wireless/zd1211rw/zd_mac.c16
-rw-r--r--drivers/net/wireless/zd1211rw/zd_usb.c1
-rw-r--r--drivers/pci/hotplug/acpiphp_glue.c6
-rw-r--r--drivers/pci/hotplug/shpchp.h2
-rw-r--r--drivers/pci/intel-iommu.c6
-rw-r--r--drivers/pci/intr_remapping.c2
-rw-r--r--drivers/pci/pci-acpi.c10
-rw-r--r--drivers/pci/pci-sysfs.c6
-rw-r--r--drivers/pci/pci.c34
-rw-r--r--drivers/pci/pci.h8
-rw-r--r--drivers/pci/pcie/aer/Kconfig.debug4
-rw-r--r--drivers/pci/pcie/aer/aer_inject.c34
-rw-r--r--drivers/pci/pcie/aer/aerdrv.c2
-rw-r--r--drivers/pci/pcie/aer/aerdrv_acpi.c2
-rw-r--r--drivers/pci/pcie/aer/aerdrv_core.c6
-rw-r--r--drivers/pci/pcie/aer/aerdrv_errprint.c4
-rw-r--r--drivers/pci/pcie/aspm.c4
-rw-r--r--drivers/pci/pcie/portdrv_core.c16
-rw-r--r--drivers/pci/pcie/portdrv_pci.c19
-rw-r--r--drivers/pci/probe.c4
-rw-r--r--drivers/pci/quirks.c91
-rw-r--r--drivers/pci/search.c6
-rw-r--r--drivers/pcmcia/cardbus.c2
-rw-r--r--drivers/platform/x86/Kconfig29
-rw-r--r--drivers/platform/x86/acer-wmi.c2
-rw-r--r--drivers/platform/x86/dell-wmi.c18
-rw-r--r--drivers/platform/x86/eeepc-laptop.c298
-rw-r--r--drivers/platform/x86/hp-wmi.c11
-rw-r--r--drivers/platform/x86/msi-wmi.c9
-rw-r--r--drivers/platform/x86/sony-laptop.c9
-rw-r--r--drivers/platform/x86/thinkpad_acpi.c61
-rw-r--r--drivers/platform/x86/wmi.c36
-rw-r--r--drivers/power/pmu_battery.c2
-rw-r--r--drivers/power/wm97xx_battery.c10
-rw-r--r--drivers/regulator/core.c2
-rw-r--r--drivers/regulator/lp3971.c4
-rw-r--r--drivers/regulator/wm8350-regulator.c4
-rw-r--r--drivers/rtc/rtc-cmos.c9
-rw-r--r--drivers/rtc/rtc-fm3130.c6
-rw-r--r--drivers/s390/block/dasd.c8
-rw-r--r--drivers/s390/block/dasd_eckd.c16
-rw-r--r--drivers/s390/block/dasd_ioctl.c21
-rw-r--r--drivers/s390/block/dasd_proc.c7
-rw-r--r--drivers/s390/char/con3215.c17
-rw-r--r--drivers/s390/char/fs3270.c17
-rw-r--r--drivers/s390/char/sclp_vt220.c4
-rw-r--r--drivers/s390/char/tape_block.c39
-rw-r--r--drivers/s390/char/tape_char.c18
-rw-r--r--drivers/s390/char/vmcp.c12
-rw-r--r--drivers/s390/cio/Makefile2
-rw-r--r--drivers/s390/cio/chsc_sch.c23
-rw-r--r--drivers/s390/cio/qdio.h36
-rw-r--r--drivers/s390/cio/qdio_debug.c114
-rw-r--r--drivers/s390/cio/qdio_main.c75
-rw-r--r--drivers/s390/cio/qdio_perf.c149
-rw-r--r--drivers/s390/cio/qdio_perf.h62
-rw-r--r--drivers/s390/cio/qdio_thinint.c8
-rw-r--r--drivers/s390/crypto/zcrypt_api.c4
-rw-r--r--drivers/s390/crypto/zcrypt_pcicc.c2
-rw-r--r--drivers/s390/crypto/zcrypt_pcixcc.c2
-rw-r--r--drivers/s390/net/claw.c2
-rw-r--r--drivers/s390/scsi/zfcp_cfdc.c9
-rw-r--r--drivers/s390/scsi/zfcp_dbf.c2
-rw-r--r--drivers/s390/scsi/zfcp_ext.h5
-rw-r--r--drivers/s390/scsi/zfcp_fc.c93
-rw-r--r--drivers/s390/scsi/zfcp_fc.h2
-rw-r--r--drivers/s390/scsi/zfcp_fsf.c19
-rw-r--r--drivers/s390/scsi/zfcp_scsi.c1
-rw-r--r--drivers/sbus/char/bbc_envctrl.c64
-rw-r--r--drivers/scsi/aacraid/aachba.c52
-rw-r--r--drivers/scsi/aacraid/aacraid.h5
-rw-r--r--drivers/scsi/aacraid/commctrl.c28
-rw-r--r--drivers/scsi/aacraid/comminit.c6
-rw-r--r--drivers/scsi/aacraid/commsup.c72
-rw-r--r--drivers/scsi/aacraid/dpcsup.c36
-rw-r--r--drivers/scsi/aic7xxx/aic79xx_core.c53
-rw-r--r--drivers/scsi/arm/fas216.c2
-rw-r--r--drivers/scsi/cxgb3i/cxgb3i_offload.c34
-rw-r--r--drivers/scsi/fcoe/fcoe.c18
-rw-r--r--drivers/scsi/fcoe/libfcoe.c2
-rw-r--r--drivers/scsi/libfc/fc_exch.c2
-rw-r--r--drivers/scsi/libfc/fc_fcp.c3
-rw-r--r--drivers/scsi/libfc/fc_lport.c3
-rw-r--r--drivers/scsi/libfc/fc_rport.c2
-rw-r--r--drivers/scsi/libiscsi_tcp.c8
-rw-r--r--drivers/scsi/lpfc/lpfc_els.c4
-rw-r--r--[-rwxr-xr-x]drivers/scsi/lpfc/lpfc_hbadisc.c25
-rw-r--r--drivers/scsi/lpfc/lpfc_hw4.h3
-rw-r--r--drivers/scsi/lpfc/lpfc_init.c14
-rw-r--r--drivers/scsi/lpfc/lpfc_sli.c48
-rw-r--r--drivers/scsi/lpfc/lpfc_sli4.h2
-rw-r--r--drivers/scsi/lpfc/lpfc_version.h2
-rw-r--r--drivers/scsi/lpfc/lpfc_vport.c4
-rw-r--r--drivers/scsi/megaraid/megaraid_sas.c20
-rw-r--r--drivers/scsi/pmcraid.c8
-rw-r--r--drivers/scsi/qla2xxx/qla_attr.c32
-rw-r--r--drivers/scsi/qla2xxx/qla_dbg.h9
-rw-r--r--drivers/scsi/qla2xxx/qla_def.h5
-rw-r--r--drivers/scsi/qla2xxx/qla_gbl.h2
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c34
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c53
-rw-r--r--drivers/scsi/qla2xxx/qla_mbx.c64
-rw-r--r--drivers/scsi/qla2xxx/qla_mid.c6
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c102
-rw-r--r--drivers/scsi/qla2xxx/qla_sup.c3
-rw-r--r--drivers/scsi/qla2xxx/qla_version.h2
-rw-r--r--drivers/scsi/scsi_lib.c2
-rw-r--r--drivers/scsi/scsi_transport_fc.c5
-rw-r--r--drivers/scsi/stex.c5
-rw-r--r--drivers/serial/21285.c4
-rw-r--r--drivers/serial/8250.c7
-rw-r--r--drivers/serial/8250_pnp.c12
-rw-r--r--drivers/serial/imx.c2
-rw-r--r--drivers/serial/pmac_zilog.c11
-rw-r--r--drivers/serial/serial_core.c105
-rw-r--r--drivers/serial/serial_cs.c19
-rw-r--r--drivers/serial/sh-sci.c13
-rw-r--r--drivers/serial/uartlite.c2
-rw-r--r--drivers/spi/spi_sh_msiof.c15
-rw-r--r--drivers/ssb/main.c3
-rw-r--r--drivers/staging/Kconfig2
-rw-r--r--drivers/staging/asus_oled/asus_oled.c12
-rw-r--r--drivers/staging/cx25821/cx25821-medusa-video.c4
-rw-r--r--drivers/staging/et131x/et1310_address_map.h18
-rw-r--r--drivers/staging/et131x/et1310_rx.c6
-rw-r--r--drivers/staging/hv/Hv.c50
-rw-r--r--drivers/staging/hv/Hv.h6
-rw-r--r--drivers/staging/hv/Vmbus.c12
-rw-r--r--drivers/usb/core/devices.c2
-rw-r--r--drivers/usb/core/devio.c48
-rw-r--r--drivers/usb/core/hcd.c18
-rw-r--r--drivers/usb/core/hub.c18
-rw-r--r--drivers/usb/core/message.c8
-rw-r--r--drivers/usb/core/sysfs.c6
-rw-r--r--drivers/usb/gadget/f_eem.c3
-rw-r--r--drivers/usb/gadget/multi.c2
-rw-r--r--drivers/usb/gadget/r8a66597-udc.c1
-rw-r--r--drivers/usb/gadget/s3c-hsotg.c1
-rw-r--r--drivers/usb/host/ehci-hcd.c5
-rw-r--r--drivers/usb/host/ehci-hub.c33
-rw-r--r--drivers/usb/host/ehci-q.c11
-rw-r--r--drivers/usb/host/fhci-hcd.c3
-rw-r--r--drivers/usb/host/fhci-tds.c6
-rw-r--r--drivers/usb/host/isp1362-hcd.c25
-rw-r--r--drivers/usb/host/isp1760-hcd.c6
-rw-r--r--drivers/usb/host/r8a66597-hcd.c58
-rw-r--r--drivers/usb/host/uhci-hcd.c15
-rw-r--r--drivers/usb/host/uhci-hub.c2
-rw-r--r--drivers/usb/misc/sisusbvga/sisusb.c1
-rw-r--r--drivers/usb/otg/Kconfig1
-rw-r--r--drivers/usb/serial/ftdi_sio.c25
-rw-r--r--drivers/usb/serial/ftdi_sio_ids.h18
-rw-r--r--drivers/usb/serial/generic.c10
-rw-r--r--drivers/usb/serial/sierra.c1
-rw-r--r--drivers/usb/storage/unusual_devs.h9
-rw-r--r--drivers/usb/storage/usb.c3
-rw-r--r--drivers/video/backlight/omap1_bl.c2
-rw-r--r--drivers/video/efifb.c11
-rw-r--r--drivers/video/imxfb.c6
-rw-r--r--drivers/video/mx3fb.c12
-rw-r--r--drivers/video/omap/dispc.c18
-rw-r--r--drivers/video/omap/lcd_htcherald.c4
-rw-r--r--drivers/video/omap/omapfb.h2
-rw-r--r--drivers/video/omap/omapfb_main.c25
-rw-r--r--drivers/video/omap/rfbi.c4
-rw-r--r--drivers/video/omap2/dss/Kconfig7
-rw-r--r--drivers/video/omap2/dss/core.c10
-rw-r--r--drivers/video/omap2/dss/dispc.c74
-rw-r--r--drivers/video/omap2/dss/dsi.c159
-rw-r--r--drivers/video/omap2/dss/dss.c6
-rw-r--r--drivers/video/omap2/dss/dss.h14
-rw-r--r--drivers/video/omap2/dss/rfbi.c30
-rw-r--r--drivers/video/omap2/omapfb/omapfb-main.c6
-rw-r--r--drivers/video/pxafb.c4
-rw-r--r--drivers/video/s3c-fb.c14
-rw-r--r--drivers/video/via/accel.c5
-rw-r--r--drivers/video/via/viafbdev.c11
-rw-r--r--drivers/virtio/virtio_balloon.c6
-rw-r--r--drivers/watchdog/Kconfig4
-rw-r--r--drivers/watchdog/bfin_wdt.c13
-rw-r--r--drivers/watchdog/iTCO_wdt.c45
-rw-r--r--drivers/watchdog/ixp2000_wdt.c1
-rw-r--r--drivers/watchdog/sbc_fitpc2_wdt.c11
-rw-r--r--drivers/xen/manage.c8
-rw-r--r--firmware/Makefile3
-rw-r--r--firmware/WHENCE1
-rw-r--r--firmware/cis/PE520.cis.ihex9
-rw-r--r--fs/9p/v9fs.c33
-rw-r--r--fs/9p/v9fs_vfs.h1
-rw-r--r--fs/9p/vfs_file.c19
-rw-r--r--fs/9p/vfs_inode.c43
-rw-r--r--fs/9p/vfs_super.c3
-rw-r--r--fs/affs/affs.h2
-rw-r--r--fs/affs/namei.c7
-rw-r--r--fs/affs/super.c31
-rw-r--r--fs/affs/symlink.c7
-rw-r--r--fs/befs/linuxvfs.c1
-rw-r--r--fs/bfs/inode.c43
-rw-r--r--fs/binfmt_aout.c1
-rw-r--r--fs/binfmt_elf.c27
-rw-r--r--fs/binfmt_elf_fdpic.c20
-rw-r--r--fs/binfmt_flat.c1
-rw-r--r--fs/binfmt_som.c1
-rw-r--r--fs/bio-integrity.c3
-rw-r--r--fs/bio.c9
-rw-r--r--fs/block_dev.c7
-rw-r--r--fs/btrfs/acl.c13
-rw-r--r--fs/btrfs/ctree.h1
-rw-r--r--fs/btrfs/disk-io.c13
-rw-r--r--fs/btrfs/extent-tree.c40
-rw-r--r--fs/btrfs/extent_io.c3
-rw-r--r--fs/btrfs/extent_map.c14
-rw-r--r--fs/btrfs/file.c104
-rw-r--r--fs/btrfs/inode.c72
-rw-r--r--fs/btrfs/ordered-data.c2
-rw-r--r--fs/btrfs/relocation.c7
-rw-r--r--fs/btrfs/super.c9
-rw-r--r--fs/btrfs/volumes.c17
-rw-r--r--fs/cachefiles/namei.c12
-rw-r--r--fs/cifs/CHANGES8
-rw-r--r--fs/cifs/cifs_dfs_ref.c3
-rw-r--r--fs/cifs/cifsfs.c3
-rw-r--r--fs/cifs/cifsfs.h2
-rw-r--r--fs/cifs/cifsglob.h1
-rw-r--r--fs/cifs/connect.c43
-rw-r--r--fs/cifs/inode.c12
-rw-r--r--fs/cifs/readdir.c8
-rw-r--r--fs/cifs/sess.c11
-rw-r--r--fs/compat_ioctl.c12
-rw-r--r--fs/configfs/symlink.c4
-rw-r--r--fs/debugfs/inode.c11
-rw-r--r--fs/ecryptfs/crypto.c4
-rw-r--r--fs/ecryptfs/file.c17
-rw-r--r--fs/ecryptfs/inode.c158
-rw-r--r--fs/ecryptfs/main.c4
-rw-r--r--fs/eventfd.c89
-rw-r--r--fs/exec.c56
-rw-r--r--fs/exofs/inode.c17
-rw-r--r--fs/exofs/pnfs.h10
-rw-r--r--fs/ext4/Kconfig1
-rw-r--r--fs/ext4/block_validity.c1
-rw-r--r--fs/ext4/ext4.h11
-rw-r--r--fs/ext4/ext4_extents.h3
-rw-r--r--fs/ext4/extents.c98
-rw-r--r--fs/ext4/fsync.c16
-rw-r--r--fs/ext4/inode.c277
-rw-r--r--fs/ext4/mballoc.h1
-rw-r--r--fs/ext4/super.c7
-rw-r--r--fs/ext4/xattr.c2
-rw-r--r--fs/fcntl.c102
-rw-r--r--fs/file_table.c1
-rw-r--r--fs/fs-writeback.c18
-rw-r--r--fs/fuse/file.c3
-rw-r--r--fs/gfs2/bmap.c2
-rw-r--r--fs/gfs2/file.c38
-rw-r--r--fs/gfs2/glock.c4
-rw-r--r--fs/gfs2/glock.h2
-rw-r--r--fs/gfs2/incore.h2
-rw-r--r--fs/gfs2/lock_dlm.c11
-rw-r--r--fs/gfs2/meta_io.c2
-rw-r--r--fs/gfs2/ops_fstype.c14
-rw-r--r--fs/gfs2/ops_inode.c9
-rw-r--r--fs/gfs2/rgrp.c8
-rw-r--r--fs/gfs2/super.c1
-rw-r--r--fs/gfs2/xattr.c21
-rw-r--r--fs/hppfs/hppfs.c18
-rw-r--r--fs/jbd2/checkpoint.c15
-rw-r--r--fs/jbd2/commit.c19
-rw-r--r--fs/jbd2/journal.c2
-rw-r--r--fs/namei.c44
-rw-r--r--fs/namespace.c14
-rw-r--r--fs/nfs/dir.c1
-rw-r--r--fs/nfs/direct.c3
-rw-r--r--fs/nfs/file.c2
-rw-r--r--fs/nfs/fscache.c9
-rw-r--r--fs/nfs/inode.c4
-rw-r--r--fs/nfs/mount_clnt.c2
-rw-r--r--fs/nfs/nfs2xdr.c2
-rw-r--r--fs/nfs/nfs4_fs.h2
-rw-r--r--fs/nfs/nfs4proc.c78
-rw-r--r--fs/nfs/nfs4state.c2
-rw-r--r--fs/nfs/nfs4xdr.c6
-rw-r--r--fs/nfs/pagelist.c17
-rw-r--r--fs/nfs/super.c15
-rw-r--r--fs/nfs/sysctl.c2
-rw-r--r--fs/nfs/write.c6
-rw-r--r--fs/nfsd/export.c10
-rw-r--r--fs/nfsd/vfs.c8
-rw-r--r--fs/nilfs2/bmap.c4
-rw-r--r--fs/nilfs2/cpfile.c31
-rw-r--r--fs/nilfs2/direct.c17
-rw-r--r--fs/nilfs2/ioctl.c2
-rw-r--r--fs/nilfs2/segment.c2
-rw-r--r--fs/notify/inotify/inotify_fsnotify.c2
-rw-r--r--fs/notify/inotify/inotify_user.c4
-rw-r--r--fs/ocfs2/aops.c4
-rw-r--r--fs/ocfs2/buffer_head_io.c2
-rw-r--r--fs/ocfs2/cluster/heartbeat.c6
-rw-r--r--fs/ocfs2/cluster/tcp.c10
-rw-r--r--fs/ocfs2/cluster/tcp_internal.h4
-rw-r--r--fs/ocfs2/dlm/dlmapi.h2
-rw-r--r--fs/ocfs2/dlm/dlmast.c2
-rw-r--r--fs/ocfs2/dlm/dlmconvert.c2
-rw-r--r--fs/ocfs2/dlm/dlmdebug.c2
-rw-r--r--fs/ocfs2/dlm/dlmdomain.c2
-rw-r--r--fs/ocfs2/dlm/dlmlock.c2
-rw-r--r--fs/ocfs2/dlm/dlmmaster.c38
-rw-r--r--fs/ocfs2/dlm/dlmrecovery.c147
-rw-r--r--fs/ocfs2/dlm/dlmunlock.c8
-rw-r--r--fs/ocfs2/dlmglue.c85
-rw-r--r--fs/ocfs2/export.c2
-rw-r--r--fs/ocfs2/extent_map.c2
-rw-r--r--fs/ocfs2/file.c35
-rw-r--r--fs/ocfs2/inode.c4
-rw-r--r--fs/ocfs2/ioctl.c14
-rw-r--r--fs/ocfs2/journal.c2
-rw-r--r--fs/ocfs2/ocfs2.h4
-rw-r--r--fs/ocfs2/ocfs2_fs.h11
-rw-r--r--fs/ocfs2/refcounttree.c12
-rw-r--r--fs/ocfs2/stack_o2cb.c12
-rw-r--r--fs/ocfs2/super.c2
-rw-r--r--fs/ocfs2/symlink.c10
-rw-r--r--fs/ocfs2/uptodate.c4
-rw-r--r--fs/proc/array.c89
-rw-r--r--fs/proc/base.c25
-rw-r--r--fs/proc/task_mmu.c3
-rw-r--r--fs/quota/dquot.c3
-rw-r--r--fs/ramfs/file-nommu.c26
-rw-r--r--fs/reiserfs/bitmap.c3
-rw-r--r--fs/reiserfs/inode.c26
-rw-r--r--fs/reiserfs/ioctl.c3
-rw-r--r--fs/reiserfs/journal.c20
-rw-r--r--fs/reiserfs/lock.c9
-rw-r--r--fs/reiserfs/namei.c7
-rw-r--r--fs/reiserfs/xattr.c38
-rw-r--r--fs/reiserfs/xattr_acl.c2
-rw-r--r--fs/romfs/super.c1
-rw-r--r--fs/sysfs/dir.c14
-rw-r--r--fs/sysfs/inode.c35
-rw-r--r--fs/sysfs/sysfs.h15
-rw-r--r--fs/ubifs/gc.c96
-rw-r--r--fs/xfs/linux-2.6/xfs_acl.c3
-rw-r--r--fs/xfs/linux-2.6/xfs_super.c14
-rw-r--r--fs/xfs/linux-2.6/xfs_sync.c183
-rw-r--r--fs/xfs/linux-2.6/xfs_sync.h2
-rw-r--r--fs/xfs/linux-2.6/xfs_trace.h1145
-rw-r--r--fs/xfs/quota/xfs_qm_syscalls.c2
-rw-r--r--fs/xfs/xfs_alloc.c44
-rw-r--r--fs/xfs/xfs_dfrag.c106
-rw-r--r--fs/xfs/xfs_iget.c1
-rw-r--r--fs/xfs/xfs_inode.c17
-rw-r--r--fs/xfs/xfs_rtalloc.c2
-rw-r--r--fs/xfs/xfs_vnodeops.c93
-rw-r--r--include/acpi/platform/aclinux.h2
-rw-r--r--include/drm/drmP.h2
-rw-r--r--include/drm/drm_mode.h3
-rw-r--r--include/drm/i915_drm.h54
-rw-r--r--include/drm/nouveau_drm.h1
-rw-r--r--include/drm/ttm/ttm_bo_driver.h5
-rw-r--r--include/drm/vmwgfx_drm.h20
-rw-r--r--include/linux/acpi.h7
-rw-r--r--include/linux/amba/bus.h6
-rw-r--r--include/linux/ata.h4
-rw-r--r--include/linux/binfmts.h1
-rw-r--r--include/linux/blkdev.h30
-rw-r--r--include/linux/compiler.h2
-rw-r--r--include/linux/connector.h32
-rw-r--r--include/linux/decompress/unlzo.h10
-rw-r--r--include/linux/drbd.h2
-rw-r--r--include/linux/drbd_nl.h1
-rw-r--r--include/linux/eventfd.h16
-rw-r--r--include/linux/firewire-cdev.h4
-rw-r--r--include/linux/fs.h4
-rw-r--r--include/linux/genhd.h6
-rw-r--r--include/linux/highmem.h2
-rw-r--r--include/linux/hw_breakpoint.h4
-rw-r--r--include/linux/i2c/adp5588.h12
-rw-r--r--include/linux/ieee80211.h2
-rw-r--r--include/linux/ima.h4
-rw-r--r--include/linux/inetdevice.h1
-rw-r--r--include/linux/input.h2
-rw-r--r--include/linux/iocontext.h27
-rw-r--r--include/linux/jbd2.h1
-rw-r--r--include/linux/kernel.h4
-rw-r--r--include/linux/kfifo.h44
-rw-r--r--include/linux/kgdb.h7
-rw-r--r--include/linux/kmemcheck.h110
-rw-r--r--include/linux/kmsg_dump.h1
-rw-r--r--include/linux/libata.h3
-rw-r--r--include/linux/list_sort.h11
-rw-r--r--include/linux/mfd/tmio.h39
-rw-r--r--include/linux/mfd/wm8350/pmic.h28
-rw-r--r--include/linux/mm.h1
-rw-r--r--include/linux/mm_types.h6
-rw-r--r--include/linux/mtd/pismo.h17
-rw-r--r--include/linux/pagemap.h2
-rw-r--r--include/linux/pci.h8
-rw-r--r--include/linux/perf_event.h17
-rw-r--r--include/linux/phy.h2
-rw-r--r--include/linux/poison.h16
-rw-r--r--include/linux/reiserfs_fs.h26
-rw-r--r--include/linux/resource.h8
-rw-r--r--include/linux/sched.h35
-rw-r--r--include/linux/serio.h19
-rw-r--r--include/linux/spi/ad7879.h12
-rw-r--r--include/linux/string.h5
-rw-r--r--include/linux/syscalls.h2
-rw-r--r--include/linux/sysctl.h1
-rw-r--r--include/linux/topology.h2
-rw-r--r--include/linux/tty.h4
-rw-r--r--include/linux/uaccess.h4
-rw-r--r--include/linux/usb.h1
-rw-r--r--include/linux/writeback.h1
-rw-r--r--include/net/ip.h16
-rw-r--r--include/net/mac80211.h8
-rw-r--r--include/net/netns/conntrack.h3
-rw-r--r--include/net/netns/ipv4.h1
-rw-r--r--include/net/netns/xfrm.h6
-rw-r--r--include/net/netrom.h2
-rw-r--r--include/net/xfrm.h4
-rw-r--r--include/scsi/libsrp.h1
-rw-r--r--include/scsi/scsi_bsg_fc.h2
-rw-r--r--include/trace/ftrace.h7
-rw-r--r--init/Kconfig18
-rw-r--r--init/main.c2
-rw-r--r--ipc/shm.c3
-rw-r--r--kernel/cgroup.c8
-rw-r--r--kernel/cpu.c10
-rw-r--r--kernel/cred.c2
-rw-r--r--kernel/fork.c15
-rw-r--r--kernel/futex.c57
-rw-r--r--kernel/hw_breakpoint.c68
-rw-r--r--kernel/kexec.c4
-rw-r--r--kernel/kfifo.c111
-rw-r--r--kernel/kgdb.c9
-rw-r--r--kernel/kmod.c12
-rw-r--r--kernel/kprobes.c2
-rw-r--r--kernel/lockdep.c2
-rw-r--r--kernel/module.c17
-rw-r--r--kernel/panic.c3
-rw-r--r--kernel/perf_event.c21
-rw-r--r--kernel/printk.c1
-rw-r--r--kernel/sched.c44
-rw-r--r--kernel/sched_fair.c2
-rw-r--r--kernel/signal.c3
-rw-r--r--kernel/smp.c2
-rw-r--r--kernel/softirq.c15
-rw-r--r--kernel/softlockup.c15
-rw-r--r--kernel/sys.c2
-rw-r--r--kernel/time/clockevents.c3
-rw-r--r--kernel/time/clocksource.c18
-rw-r--r--kernel/time/timekeeping.c2
-rw-r--r--kernel/timer.c3
-rw-r--r--kernel/trace/Kconfig116
-rw-r--r--kernel/trace/ftrace.c6
-rw-r--r--kernel/trace/ring_buffer.c28
-rw-r--r--kernel/trace/trace.c7
-rw-r--r--kernel/trace/trace_events_filter.c29
-rw-r--r--kernel/trace/trace_export.c7
-rw-r--r--kernel/trace/trace_kprobe.c9
-rw-r--r--kernel/trace/trace_ksym.c140
-rw-r--r--kernel/trace/trace_stack.c24
-rw-r--r--lib/Kconfig4
-rw-r--r--lib/Makefile3
-rw-r--r--lib/decompress.c5
-rw-r--r--lib/decompress_unlzo.c209
-rw-r--r--lib/dma-debug.c17
-rw-r--r--lib/idr.c4
-rw-r--r--lib/list_sort.c102
-rw-r--r--lib/lzo/lzo1x_decompress.c9
-rw-r--r--lib/rational.c1
-rw-r--r--lib/string.c27
-rw-r--r--lib/vsprintf.c4
-rw-r--r--lib/zlib_inflate/inffast.c75
-rw-r--r--mm/filemap.c103
-rw-r--r--mm/hugetlb.c9
-rw-r--r--mm/maccess.c11
-rw-r--r--mm/memcontrol.c11
-rw-r--r--mm/migrate.c39
-rw-r--r--mm/mmap.c40
-rw-r--r--mm/nommu.c144
-rw-r--r--mm/oom_kill.c2
-rw-r--r--mm/page_alloc.c9
-rw-r--r--mm/percpu.c4
-rw-r--r--mm/slab.c4
-rw-r--r--mm/truncate.c30
-rw-r--r--mm/util.c46
-rw-r--r--mm/vmalloc.c114
-rw-r--r--mm/vmscan.c3
-rw-r--r--net/8021q/vlan_dev.c2
-rw-r--r--net/9p/client.c53
-rw-r--r--net/9p/trans_fd.c10
-rw-r--r--net/9p/trans_rdma.c9
-rw-r--r--net/9p/trans_virtio.c4
-rw-r--r--net/appletalk/aarp.c2
-rw-r--r--net/ax25/ax25_out.c6
-rw-r--r--net/bluetooth/hci_conn.c3
-rw-r--r--net/bluetooth/hci_event.c1
-rw-r--r--net/bluetooth/hidp/core.c119
-rw-r--r--net/bluetooth/hidp/hidp.h4
-rw-r--r--net/bluetooth/l2cap.c14
-rw-r--r--net/bluetooth/rfcomm/core.c8
-rw-r--r--net/bridge/netfilter/ebtables.c6
-rw-r--r--net/core/dev.c2
-rw-r--r--net/core/dst.c2
-rw-r--r--net/core/ethtool.c1
-rw-r--r--net/core/net-sysfs.c3
-rw-r--r--net/core/pktgen.c10
-rw-r--r--net/core/sock.c4
-rw-r--r--net/dccp/ccid.c20
-rw-r--r--net/dccp/ccid.h6
-rw-r--r--net/dccp/probe.c3
-rw-r--r--net/ipv4/devinet.c8
-rw-r--r--net/ipv4/fib_frontend.c2
-rw-r--r--net/ipv4/igmp.c2
-rw-r--r--net/ipv4/inet_diag.c2
-rw-r--r--net/ipv4/ip_output.c2
-rw-r--r--net/ipv4/ipcomp.c6
-rw-r--r--net/ipv4/netfilter/arp_tables.c4
-rw-r--r--net/ipv4/netfilter/ip_tables.c4
-rw-r--r--net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c2
-rw-r--r--net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c4
-rw-r--r--net/ipv4/netfilter/nf_nat_core.c22
-rw-r--r--net/ipv4/route.c2
-rw-r--r--net/ipv4/tcp_input.c6
-rw-r--r--net/ipv4/tcp_probe.c19
-rw-r--r--net/ipv4/xfrm4_policy.c14
-rw-r--r--net/ipv6/addrconf.c16
-rw-r--r--net/ipv6/exthdrs.c7
-rw-r--r--net/ipv6/ip6_output.c3
-rw-r--r--net/ipv6/ipcomp6.c6
-rw-r--r--net/ipv6/netfilter/ip6_tables.c4
-rw-r--r--net/ipv6/netfilter/nf_conntrack_reasm.c1
-rw-r--r--net/ipv6/xfrm6_policy.c25
-rw-r--r--net/irda/irnet/irnet_ppp.c5
-rw-r--r--net/key/af_key.c15
-rw-r--r--net/mac80211/cfg.c3
-rw-r--r--net/mac80211/driver-trace.h2
-rw-r--r--net/mac80211/ht.c25
-rw-r--r--net/mac80211/ibss.c6
-rw-r--r--net/mac80211/iface.c47
-rw-r--r--net/mac80211/main.c2
-rw-r--r--net/mac80211/mlme.c16
-rw-r--r--net/mac80211/rate.c3
-rw-r--r--net/mac80211/rc80211_pid_algo.c2
-rw-r--r--net/mac80211/rx.c8
-rw-r--r--net/mac80211/scan.c28
-rw-r--r--net/mac80211/tx.c9
-rw-r--r--net/mac80211/util.c24
-rw-r--r--net/mac80211/wme.c96
-rw-r--r--net/mac80211/wme.h8
-rw-r--r--net/netfilter/ipvs/Kconfig3
-rw-r--r--net/netfilter/ipvs/ip_vs_ctl.c14
-rw-r--r--net/netfilter/ipvs/ip_vs_wrr.c15
-rw-r--r--net/netfilter/nf_conntrack_core.c116
-rw-r--r--net/netfilter/nf_conntrack_expect.c4
-rw-r--r--net/netfilter/nf_conntrack_ftp.c18
-rw-r--r--net/netfilter/nf_conntrack_helper.c2
-rw-r--r--net/netfilter/nf_conntrack_netlink.c5
-rw-r--r--net/netfilter/nf_conntrack_sip.c2
-rw-r--r--net/netfilter/nf_conntrack_standalone.c7
-rw-r--r--net/netlink/af_netlink.c5
-rw-r--r--net/netrom/nr_route.c11
-rw-r--r--net/packet/af_packet.c19
-rw-r--r--net/rose/rose_link.c8
-rw-r--r--net/rose/rose_loopback.c2
-rw-r--r--net/rose/rose_route.c5
-rw-r--r--net/sched/Kconfig16
-rw-r--r--net/sctp/socket.c3
-rw-r--r--net/sunrpc/auth_gss/auth_gss.c17
-rw-r--r--net/sunrpc/auth_gss/gss_krb5_mech.c4
-rw-r--r--net/sunrpc/auth_gss/gss_mech_switch.c2
-rw-r--r--net/sunrpc/svc_xprt.c3
-rw-r--r--net/wireless/core.c4
-rw-r--r--net/wireless/mlme.c13
-rw-r--r--net/wireless/reg.c2
-rw-r--r--net/wireless/scan.c13
-rw-r--r--net/wireless/sme.c1
-rw-r--r--net/xfrm/xfrm_policy.c77
-rw-r--r--net/xfrm/xfrm_state.c18
-rw-r--r--net/xfrm/xfrm_user.c14
-rw-r--r--scripts/Makefile.lib14
-rwxr-xr-xscripts/checkpatch.pl2
-rwxr-xr-xscripts/get_maintainer.pl88
-rw-r--r--scripts/markup_oops.pl4
-rw-r--r--scripts/mod/file2alias.c2
-rwxr-xr-xscripts/recordmcount.pl2
-rw-r--r--security/inode.c11
-rw-r--r--security/integrity/ima/ima.h3
-rw-r--r--security/integrity/ima/ima_api.c4
-rw-r--r--security/integrity/ima/ima_iint.c9
-rw-r--r--security/integrity/ima/ima_main.c239
-rw-r--r--security/integrity/ima/ima_policy.c9
-rw-r--r--security/security.c2
-rw-r--r--security/selinux/hooks.c2
-rw-r--r--security/tomoyo/tomoyo.c7
-rw-r--r--sound/arm/aaci.c3
-rw-r--r--sound/core/pcm_native.c8
-rw-r--r--sound/core/sound.c4
-rw-r--r--sound/core/sound_oss.c2
-rw-r--r--sound/isa/sb/emu8000.c11
-rw-r--r--sound/oss/dev_table.c16
-rw-r--r--sound/oss/sound_config.h2
-rw-r--r--sound/oss/soundcard.c4
-rw-r--r--sound/pci/ac97/ac97_codec.c10
-rw-r--r--sound/pci/ac97/ac97_id.h2
-rw-r--r--sound/pci/ac97/ac97_patch.c1
-rw-r--r--sound/pci/atiixp.c1
-rw-r--r--sound/pci/ctxfi/ctatc.c15
-rw-r--r--sound/pci/ctxfi/ctvmem.c38
-rw-r--r--sound/pci/ctxfi/ctvmem.h8
-rw-r--r--sound/pci/hda/hda_beep.c16
-rw-r--r--sound/pci/hda/hda_codec.c10
-rw-r--r--sound/pci/hda/hda_codec.h1
-rw-r--r--sound/pci/hda/hda_intel.c46
-rw-r--r--sound/pci/hda/patch_analog.c16
-rw-r--r--sound/pci/hda/patch_realtek.c133
-rw-r--r--sound/pci/hda/patch_sigmatel.c79
-rw-r--r--sound/pci/ice1712/aureon.c12
-rw-r--r--sound/pci/riptide/riptide.c2
-rw-r--r--sound/soc/codecs/ac97.c6
-rw-r--r--sound/soc/codecs/tlv320aic23.c2
-rw-r--r--sound/soc/codecs/wm8350.c2
-rw-r--r--sound/soc/codecs/wm8510.c14
-rw-r--r--sound/soc/codecs/wm8903.c3
-rw-r--r--sound/soc/codecs/wm8940.c14
-rw-r--r--sound/soc/codecs/wm8974.c14
-rw-r--r--sound/soc/omap/Makefile2
-rw-r--r--sound/soc/omap/omap3pandora.c1
-rw-r--r--sound/soc/sh/fsi-ak4642.c30
-rw-r--r--sound/sound_core.c2
-rw-r--r--sound/usb/usbaudio.c2
-rw-r--r--tools/perf/.gitignore1
-rw-r--r--tools/perf/Makefile52
-rw-r--r--tools/perf/builtin-buildid-list.c2
-rw-r--r--tools/perf/builtin-diff.c3
-rw-r--r--tools/perf/builtin-kmem.c11
-rw-r--r--tools/perf/builtin-record.c14
-rw-r--r--tools/perf/builtin-report.c5
-rw-r--r--tools/perf/builtin-timechart.c2
-rw-r--r--tools/perf/builtin-top.c2
-rw-r--r--tools/perf/builtin-trace.c4
-rw-r--r--tools/perf/design.txt8
-rw-r--r--tools/perf/util/event.c4
-rw-r--r--tools/perf/util/probe-event.c3
-rw-r--r--usr/Kconfig26
-rw-r--r--virt/kvm/assigned-dev.c6
-rw-r--r--virt/kvm/eventfd.c18
-rw-r--r--virt/kvm/irq_comm.c6
-rw-r--r--virt/kvm/kvm_main.c5
1866 files changed, 44617 insertions, 18760 deletions
diff --git a/.gitignore b/.gitignore
index fb2190c61af0..de6344e15706 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,6 +37,7 @@ modules.builtin
37tags 37tags
38TAGS 38TAGS
39vmlinux 39vmlinux
40vmlinuz
40System.map 41System.map
41Module.markers 42Module.markers
42Module.symvers 43Module.symvers
diff --git a/Documentation/ABI/testing/ima_policy b/Documentation/ABI/testing/ima_policy
index 6434f0df012e..6cd6daefaaed 100644
--- a/Documentation/ABI/testing/ima_policy
+++ b/Documentation/ABI/testing/ima_policy
@@ -20,7 +20,7 @@ Description:
20 lsm: [[subj_user=] [subj_role=] [subj_type=] 20 lsm: [[subj_user=] [subj_role=] [subj_type=]
21 [obj_user=] [obj_role=] [obj_type=]] 21 [obj_user=] [obj_role=] [obj_type=]]
22 22
23 base: func:= [BPRM_CHECK][FILE_MMAP][INODE_PERMISSION] 23 base: func:= [BPRM_CHECK][FILE_MMAP][FILE_CHECK]
24 mask:= [MAY_READ] [MAY_WRITE] [MAY_APPEND] [MAY_EXEC] 24 mask:= [MAY_READ] [MAY_WRITE] [MAY_APPEND] [MAY_EXEC]
25 fsmagic:= hex value 25 fsmagic:= hex value
26 uid:= decimal value 26 uid:= decimal value
@@ -40,11 +40,11 @@ Description:
40 40
41 measure func=BPRM_CHECK 41 measure func=BPRM_CHECK
42 measure func=FILE_MMAP mask=MAY_EXEC 42 measure func=FILE_MMAP mask=MAY_EXEC
43 measure func=INODE_PERM mask=MAY_READ uid=0 43 measure func=FILE_CHECK mask=MAY_READ uid=0
44 44
45 The default policy measures all executables in bprm_check, 45 The default policy measures all executables in bprm_check,
46 all files mmapped executable in file_mmap, and all files 46 all files mmapped executable in file_mmap, and all files
47 open for read by root in inode_permission. 47 open for read by root in do_filp_open.
48 48
49 Examples of LSM specific definitions: 49 Examples of LSM specific definitions:
50 50
@@ -54,8 +54,8 @@ Description:
54 54
55 dont_measure obj_type=var_log_t 55 dont_measure obj_type=var_log_t
56 dont_measure obj_type=auditd_log_t 56 dont_measure obj_type=auditd_log_t
57 measure subj_user=system_u func=INODE_PERM mask=MAY_READ 57 measure subj_user=system_u func=FILE_CHECK mask=MAY_READ
58 measure subj_role=system_r func=INODE_PERM mask=MAY_READ 58 measure subj_role=system_r func=FILE_CHECK mask=MAY_READ
59 59
60 Smack: 60 Smack:
61 measure subj_user=_ func=INODE_PERM mask=MAY_READ 61 measure subj_user=_ func=FILE_CHECK mask=MAY_READ
diff --git a/Documentation/DocBook/mtdnand.tmpl b/Documentation/DocBook/mtdnand.tmpl
index f508a8a27fea..5e7d84b48505 100644
--- a/Documentation/DocBook/mtdnand.tmpl
+++ b/Documentation/DocBook/mtdnand.tmpl
@@ -174,7 +174,7 @@
174 </para> 174 </para>
175 <programlisting> 175 <programlisting>
176static struct mtd_info *board_mtd; 176static struct mtd_info *board_mtd;
177static unsigned long baseaddr; 177static void __iomem *baseaddr;
178 </programlisting> 178 </programlisting>
179 <para> 179 <para>
180 Static example 180 Static example
@@ -182,7 +182,7 @@ static unsigned long baseaddr;
182 <programlisting> 182 <programlisting>
183static struct mtd_info board_mtd; 183static struct mtd_info board_mtd;
184static struct nand_chip board_chip; 184static struct nand_chip board_chip;
185static unsigned long baseaddr; 185static void __iomem *baseaddr;
186 </programlisting> 186 </programlisting>
187 </sect1> 187 </sect1>
188 <sect1 id="Partition_defines"> 188 <sect1 id="Partition_defines">
@@ -283,8 +283,8 @@ int __init board_init (void)
283 } 283 }
284 284
285 /* map physical address */ 285 /* map physical address */
286 baseaddr = (unsigned long)ioremap(CHIP_PHYSICAL_ADDRESS, 1024); 286 baseaddr = ioremap(CHIP_PHYSICAL_ADDRESS, 1024);
287 if(!baseaddr){ 287 if (!baseaddr) {
288 printk("Ioremap to access NAND chip failed\n"); 288 printk("Ioremap to access NAND chip failed\n");
289 err = -EIO; 289 err = -EIO;
290 goto out_mtd; 290 goto out_mtd;
@@ -316,7 +316,7 @@ int __init board_init (void)
316 goto out; 316 goto out;
317 317
318out_ior: 318out_ior:
319 iounmap((void *)baseaddr); 319 iounmap(baseaddr);
320out_mtd: 320out_mtd:
321 kfree (board_mtd); 321 kfree (board_mtd);
322out: 322out:
@@ -341,7 +341,7 @@ static void __exit board_cleanup (void)
341 nand_release (board_mtd); 341 nand_release (board_mtd);
342 342
343 /* unmap physical address */ 343 /* unmap physical address */
344 iounmap((void *)baseaddr); 344 iounmap(baseaddr);
345 345
346 /* Free the MTD device structure */ 346 /* Free the MTD device structure */
347 kfree (board_mtd); 347 kfree (board_mtd);
diff --git a/Documentation/IO-mapping.txt b/Documentation/IO-mapping.txt
index 78a440695e11..1b5aa10df845 100644
--- a/Documentation/IO-mapping.txt
+++ b/Documentation/IO-mapping.txt
@@ -157,7 +157,7 @@ For such memory, you can do things like
157 * access only the 640k-1MB area, so anything else 157 * access only the 640k-1MB area, so anything else
158 * has to be remapped. 158 * has to be remapped.
159 */ 159 */
160 char * baseptr = ioremap(0xFC000000, 1024*1024); 160 void __iomem *baseptr = ioremap(0xFC000000, 1024*1024);
161 161
162 /* write a 'A' to the offset 10 of the area */ 162 /* write a 'A' to the offset 10 of the area */
163 writeb('A',baseptr+10); 163 writeb('A',baseptr+10);
diff --git a/Documentation/DMA-mapping.txt b/Documentation/PCI/PCI-DMA-mapping.txt
index ecad88d9fe59..ecad88d9fe59 100644
--- a/Documentation/DMA-mapping.txt
+++ b/Documentation/PCI/PCI-DMA-mapping.txt
diff --git a/Documentation/block/00-INDEX b/Documentation/block/00-INDEX
index 961a0513f8c3..a406286f6f3e 100644
--- a/Documentation/block/00-INDEX
+++ b/Documentation/block/00-INDEX
@@ -1,7 +1,5 @@
100-INDEX 100-INDEX
2 - This file 2 - This file
3as-iosched.txt
4 - Anticipatory IO scheduler
5barrier.txt 3barrier.txt
6 - I/O Barriers 4 - I/O Barriers
7biodoc.txt 5biodoc.txt
diff --git a/Documentation/block/as-iosched.txt b/Documentation/block/as-iosched.txt
deleted file mode 100644
index 738b72be128e..000000000000
--- a/Documentation/block/as-iosched.txt
+++ /dev/null
@@ -1,172 +0,0 @@
1Anticipatory IO scheduler
2-------------------------
3Nick Piggin <piggin@cyberone.com.au> 13 Sep 2003
4
5Attention! Database servers, especially those using "TCQ" disks should
6investigate performance with the 'deadline' IO scheduler. Any system with high
7disk performance requirements should do so, in fact.
8
9If you see unusual performance characteristics of your disk systems, or you
10see big performance regressions versus the deadline scheduler, please email
11me. Database users don't bother unless you're willing to test a lot of patches
12from me ;) its a known issue.
13
14Also, users with hardware RAID controllers, doing striping, may find
15highly variable performance results with using the as-iosched. The
16as-iosched anticipatory implementation is based on the notion that a disk
17device has only one physical seeking head. A striped RAID controller
18actually has a head for each physical device in the logical RAID device.
19
20However, setting the antic_expire (see tunable parameters below) produces
21very similar behavior to the deadline IO scheduler.
22
23Selecting IO schedulers
24-----------------------
25Refer to Documentation/block/switching-sched.txt for information on
26selecting an io scheduler on a per-device basis.
27
28Anticipatory IO scheduler Policies
29----------------------------------
30The as-iosched implementation implements several layers of policies
31to determine when an IO request is dispatched to the disk controller.
32Here are the policies outlined, in order of application.
33
341. one-way Elevator algorithm.
35
36The elevator algorithm is similar to that used in deadline scheduler, with
37the addition that it allows limited backward movement of the elevator
38(i.e. seeks backwards). A seek backwards can occur when choosing between
39two IO requests where one is behind the elevator's current position, and
40the other is in front of the elevator's position. If the seek distance to
41the request in back of the elevator is less than half the seek distance to
42the request in front of the elevator, then the request in back can be chosen.
43Backward seeks are also limited to a maximum of MAXBACK (1024*1024) sectors.
44This favors forward movement of the elevator, while allowing opportunistic
45"short" backward seeks.
46
472. FIFO expiration times for reads and for writes.
48
49This is again very similar to the deadline IO scheduler. The expiration
50times for requests on these lists is tunable using the parameters read_expire
51and write_expire discussed below. When a read or a write expires in this way,
52the IO scheduler will interrupt its current elevator sweep or read anticipation
53to service the expired request.
54
553. Read and write request batching
56
57A batch is a collection of read requests or a collection of write
58requests. The as scheduler alternates dispatching read and write batches
59to the driver. In the case a read batch, the scheduler submits read
60requests to the driver as long as there are read requests to submit, and
61the read batch time limit has not been exceeded (read_batch_expire).
62The read batch time limit begins counting down only when there are
63competing write requests pending.
64
65In the case of a write batch, the scheduler submits write requests to
66the driver as long as there are write requests available, and the
67write batch time limit has not been exceeded (write_batch_expire).
68However, the length of write batches will be gradually shortened
69when read batches frequently exceed their time limit.
70
71When changing between batch types, the scheduler waits for all requests
72from the previous batch to complete before scheduling requests for the
73next batch.
74
75The read and write fifo expiration times described in policy 2 above
76are checked only when in scheduling IO of a batch for the corresponding
77(read/write) type. So for example, the read FIFO timeout values are
78tested only during read batches. Likewise, the write FIFO timeout
79values are tested only during write batches. For this reason,
80it is generally not recommended for the read batch time
81to be longer than the write expiration time, nor for the write batch
82time to exceed the read expiration time (see tunable parameters below).
83
84When the IO scheduler changes from a read to a write batch,
85it begins the elevator from the request that is on the head of the
86write expiration FIFO. Likewise, when changing from a write batch to
87a read batch, scheduler begins the elevator from the first entry
88on the read expiration FIFO.
89
904. Read anticipation.
91
92Read anticipation occurs only when scheduling a read batch.
93This implementation of read anticipation allows only one read request
94to be dispatched to the disk controller at a time. In
95contrast, many write requests may be dispatched to the disk controller
96at a time during a write batch. It is this characteristic that can make
97the anticipatory scheduler perform anomalously with controllers supporting
98TCQ, or with hardware striped RAID devices. Setting the antic_expire
99queue parameter (see below) to zero disables this behavior, and the
100anticipatory scheduler behaves essentially like the deadline scheduler.
101
102When read anticipation is enabled (antic_expire is not zero), reads
103are dispatched to the disk controller one at a time.
104At the end of each read request, the IO scheduler examines its next
105candidate read request from its sorted read list. If that next request
106is from the same process as the request that just completed,
107or if the next request in the queue is "very close" to the
108just completed request, it is dispatched immediately. Otherwise,
109statistics (average think time, average seek distance) on the process
110that submitted the just completed request are examined. If it seems
111likely that that process will submit another request soon, and that
112request is likely to be near the just completed request, then the IO
113scheduler will stop dispatching more read requests for up to (antic_expire)
114milliseconds, hoping that process will submit a new request near the one
115that just completed. If such a request is made, then it is dispatched
116immediately. If the antic_expire wait time expires, then the IO scheduler
117will dispatch the next read request from the sorted read queue.
118
119To decide whether an anticipatory wait is worthwhile, the scheduler
120maintains statistics for each process that can be used to compute
121mean "think time" (the time between read requests), and mean seek
122distance for that process. One observation is that these statistics
123are associated with each process, but those statistics are not associated
124with a specific IO device. So for example, if a process is doing IO
125on several file systems on separate devices, the statistics will be
126a combination of IO behavior from all those devices.
127
128
129Tuning the anticipatory IO scheduler
130------------------------------------
131When using 'as', the anticipatory IO scheduler there are 5 parameters under
132/sys/block/*/queue/iosched/. All are units of milliseconds.
133
134The parameters are:
135* read_expire
136 Controls how long until a read request becomes "expired". It also controls the
137 interval between which expired requests are served, so set to 50, a request
138 might take anywhere < 100ms to be serviced _if_ it is the next on the
139 expired list. Obviously request expiration strategies won't make the disk
140 go faster. The result basically equates to the timeslice a single reader
141 gets in the presence of other IO. 100*((seek time / read_expire) + 1) is
142 very roughly the % streaming read efficiency your disk should get with
143 multiple readers.
144
145* read_batch_expire
146 Controls how much time a batch of reads is given before pending writes are
147 served. A higher value is more efficient. This might be set below read_expire
148 if writes are to be given higher priority than reads, but reads are to be
149 as efficient as possible when there are no writes. Generally though, it
150 should be some multiple of read_expire.
151
152* write_expire, and
153* write_batch_expire are equivalent to the above, for writes.
154
155* antic_expire
156 Controls the maximum amount of time we can anticipate a good read (one
157 with a short seek distance from the most recently completed request) before
158 giving up. Many other factors may cause anticipation to be stopped early,
159 or some processes will not be "anticipated" at all. Should be a bit higher
160 for big seek time devices though not a linear correspondence - most
161 processes have only a few ms thinktime.
162
163In addition to the tunables above there is a read-only file named est_time
164which, when read, will show:
165
166 - The probability of a task exiting without a cooperating task
167 submitting an anticipated IO.
168
169 - The current mean think time.
170
171 - The seek distance used to determine if an incoming IO is better.
172
diff --git a/Documentation/block/biodoc.txt b/Documentation/block/biodoc.txt
index 8d2158a1c6aa..6fab97ea7e6b 100644
--- a/Documentation/block/biodoc.txt
+++ b/Documentation/block/biodoc.txt
@@ -186,7 +186,7 @@ a virtual address mapping (unlike the earlier scheme of virtual address
186do not have a corresponding kernel virtual address space mapping) and 186do not have a corresponding kernel virtual address space mapping) and
187low-memory pages. 187low-memory pages.
188 188
189Note: Please refer to Documentation/DMA-mapping.txt for a discussion 189Note: Please refer to Documentation/PCI/PCI-DMA-mapping.txt for a discussion
190on PCI high mem DMA aspects and mapping of scatter gather lists, and support 190on PCI high mem DMA aspects and mapping of scatter gather lists, and support
191for 64 bit PCI. 191for 64 bit PCI.
192 192
diff --git a/Documentation/cpu-freq/governors.txt b/Documentation/cpu-freq/governors.txt
index aed082f49d09..737988fca64d 100644
--- a/Documentation/cpu-freq/governors.txt
+++ b/Documentation/cpu-freq/governors.txt
@@ -145,8 +145,8 @@ show_sampling_rate_max: THIS INTERFACE IS DEPRECATED, DON'T USE IT.
145up_threshold: defines what the average CPU usage between the samplings 145up_threshold: defines what the average CPU usage between the samplings
146of 'sampling_rate' needs to be for the kernel to make a decision on 146of 'sampling_rate' needs to be for the kernel to make a decision on
147whether it should increase the frequency. For example when it is set 147whether it should increase the frequency. For example when it is set
148to its default value of '80' it means that between the checking 148to its default value of '95' it means that between the checking
149intervals the CPU needs to be on average more than 80% in use to then 149intervals the CPU needs to be on average more than 95% in use to then
150decide that the CPU frequency needs to be increased. 150decide that the CPU frequency needs to be increased.
151 151
152ignore_nice_load: this parameter takes a value of '0' or '1'. When 152ignore_nice_load: this parameter takes a value of '0' or '1'. When
diff --git a/Documentation/fault-injection/fault-injection.txt b/Documentation/fault-injection/fault-injection.txt
index 079305640790..7be15e44d481 100644
--- a/Documentation/fault-injection/fault-injection.txt
+++ b/Documentation/fault-injection/fault-injection.txt
@@ -143,8 +143,8 @@ o provide a way to configure fault attributes
143 failslab, fail_page_alloc, and fail_make_request use this way. 143 failslab, fail_page_alloc, and fail_make_request use this way.
144 Helper functions: 144 Helper functions:
145 145
146 init_fault_attr_entries(entries, attr, name); 146 init_fault_attr_dentries(entries, attr, name);
147 void cleanup_fault_attr_entries(entries); 147 void cleanup_fault_attr_dentries(entries);
148 148
149- module parameters 149- module parameters
150 150
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index 870d190fe617..0a46833c1b76 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -493,3 +493,52 @@ Why: These two features use non-standard interfaces. There are the
493Who: Corentin Chary <corentin.chary@gmail.com> 493Who: Corentin Chary <corentin.chary@gmail.com>
494 494
495---------------------------- 495----------------------------
496
497What: usbvideo quickcam_messenger driver
498When: 2.6.35
499Files: drivers/media/video/usbvideo/quickcam_messenger.[ch]
500Why: obsolete v4l1 driver replaced by gspca_stv06xx
501Who: Hans de Goede <hdegoede@redhat.com>
502
503----------------------------
504
505What: ov511 v4l1 driver
506When: 2.6.35
507Files: drivers/media/video/ov511.[ch]
508Why: obsolete v4l1 driver replaced by gspca_ov519
509Who: Hans de Goede <hdegoede@redhat.com>
510
511----------------------------
512
513What: w9968cf v4l1 driver
514When: 2.6.35
515Files: drivers/media/video/w9968cf*.[ch]
516Why: obsolete v4l1 driver replaced by gspca_ov519
517Who: Hans de Goede <hdegoede@redhat.com>
518
519----------------------------
520
521What: ovcamchip sensor framework
522When: 2.6.35
523Files: drivers/media/video/ovcamchip/*
524Why: Only used by obsoleted v4l1 drivers
525Who: Hans de Goede <hdegoede@redhat.com>
526
527----------------------------
528
529What: stv680 v4l1 driver
530When: 2.6.35
531Files: drivers/media/video/stv680.[ch]
532Why: obsolete v4l1 driver replaced by gspca_stv0680
533Who: Hans de Goede <hdegoede@redhat.com>
534
535----------------------------
536
537What: zc0301 v4l driver
538When: 2.6.35
539Files: drivers/media/video/zc0301/*
540Why: Duplicate functionality with the gspca_zc3xx driver, zc0301 only
541 supports 2 USB-ID's (because it only supports a limited set of
542 sensors) wich are also supported by the gspca_zc3xx driver
543 (which supports 53 USB-ID's in total)
544Who: Hans de Goede <hdegoede@redhat.com>
diff --git a/Documentation/filesystems/ext4.txt b/Documentation/filesystems/ext4.txt
index af6885c3c821..e1def1786e50 100644
--- a/Documentation/filesystems/ext4.txt
+++ b/Documentation/filesystems/ext4.txt
@@ -196,7 +196,7 @@ nobarrier This also requires an IO stack which can support
196 also be used to enable or disable barriers, for 196 also be used to enable or disable barriers, for
197 consistency with other ext4 mount options. 197 consistency with other ext4 mount options.
198 198
199inode_readahead=n This tuning parameter controls the maximum 199inode_readahead_blks=n This tuning parameter controls the maximum
200 number of inode table blocks that ext4's inode 200 number of inode table blocks that ext4's inode
201 table readahead algorithm will pre-read into 201 table readahead algorithm will pre-read into
202 the buffer cache. The default value is 32 blocks. 202 the buffer cache. The default value is 32 blocks.
diff --git a/Documentation/filesystems/nilfs2.txt b/Documentation/filesystems/nilfs2.txt
index 4949fcaa6b6a..839efd8a8a8c 100644
--- a/Documentation/filesystems/nilfs2.txt
+++ b/Documentation/filesystems/nilfs2.txt
@@ -28,7 +28,7 @@ described in the man pages included in the package.
28Project web page: http://www.nilfs.org/en/ 28Project web page: http://www.nilfs.org/en/
29Download page: http://www.nilfs.org/en/download.html 29Download page: http://www.nilfs.org/en/download.html
30Git tree web page: http://www.nilfs.org/git/ 30Git tree web page: http://www.nilfs.org/git/
31NILFS mailing lists: http://www.nilfs.org/mailman/listinfo/users 31List info: http://vger.kernel.org/vger-lists.html#linux-nilfs
32 32
33Caveats 33Caveats
34======= 34=======
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt
index 220cc6376ef8..0d07513a67a6 100644
--- a/Documentation/filesystems/proc.txt
+++ b/Documentation/filesystems/proc.txt
@@ -177,7 +177,6 @@ read the file /proc/PID/status:
177 CapBnd: ffffffffffffffff 177 CapBnd: ffffffffffffffff
178 voluntary_ctxt_switches: 0 178 voluntary_ctxt_switches: 0
179 nonvoluntary_ctxt_switches: 1 179 nonvoluntary_ctxt_switches: 1
180 Stack usage: 12 kB
181 180
182This shows you nearly the same information you would get if you viewed it with 181This shows you nearly the same information you would get if you viewed it with
183the ps command. In fact, ps uses the proc file system to obtain its 182the ps command. In fact, ps uses the proc file system to obtain its
@@ -231,7 +230,6 @@ Table 1-2: Contents of the statm files (as of 2.6.30-rc7)
231 Mems_allowed_list Same as previous, but in "list format" 230 Mems_allowed_list Same as previous, but in "list format"
232 voluntary_ctxt_switches number of voluntary context switches 231 voluntary_ctxt_switches number of voluntary context switches
233 nonvoluntary_ctxt_switches number of non voluntary context switches 232 nonvoluntary_ctxt_switches number of non voluntary context switches
234 Stack usage: stack usage high water mark (round up to page size)
235.............................................................................. 233..............................................................................
236 234
237Table 1-3: Contents of the statm files (as of 2.6.8-rc3) 235Table 1-3: Contents of the statm files (as of 2.6.8-rc3)
diff --git a/Documentation/hwmon/amc6821 b/Documentation/hwmon/amc6821
new file mode 100644
index 000000000000..ced8359c50f8
--- /dev/null
+++ b/Documentation/hwmon/amc6821
@@ -0,0 +1,102 @@
1Kernel driver amc6821
2=====================
3
4Supported chips:
5 Texas Instruments AMC6821
6 Prefix: 'amc6821'
7 Addresses scanned: 0x18, 0x19, 0x1a, 0x2c, 0x2d, 0x2e, 0x4c, 0x4d, 0x4e
8 Datasheet: http://focus.ti.com/docs/prod/folders/print/amc6821.html
9
10Authors:
11 Tomaz Mertelj <tomaz.mertelj@guest.arnes.si>
12
13
14Description
15-----------
16
17This driver implements support for the Texas Instruments amc6821 chip.
18The chip has one on-chip and one remote temperature sensor and one pwm fan
19regulator.
20The pwm can be controlled either from software or automatically.
21
22The driver provides the following sensor accesses in sysfs:
23
24temp1_input ro on-chip temperature
25temp1_min rw "
26temp1_max rw "
27temp1_crit rw "
28temp1_min_alarm ro "
29temp1_max_alarm ro "
30temp1_crit_alarm ro "
31
32temp2_input ro remote temperature
33temp2_min rw "
34temp2_max rw "
35temp2_crit rw "
36temp2_min_alarm ro "
37temp2_max_alarm ro "
38temp2_crit_alarm ro "
39temp2_fault ro "
40
41fan1_input ro tachometer speed
42fan1_min rw "
43fan1_max rw "
44fan1_fault ro "
45fan1_div rw Fan divisor can be either 2 or 4.
46
47pwm1 rw pwm1
48pwm1_enable rw regulator mode, 1=open loop, 2=fan controlled
49 by remote temperature, 3=fan controlled by
50 combination of the on-chip temperature and
51 remote-sensor temperature,
52pwm1_auto_channels_temp ro 1 if pwm_enable==2, 3 if pwm_enable==3
53pwm1_auto_point1_pwm ro Hardwired to 0, shared for both
54 temperature channels.
55pwm1_auto_point2_pwm rw This value is shared for both temperature
56 channels.
57pwm1_auto_point3_pwm rw Hardwired to 255, shared for both
58 temperature channels.
59
60temp1_auto_point1_temp ro Hardwired to temp2_auto_point1_temp
61 which is rw. Below this temperature fan stops.
62temp1_auto_point2_temp rw The low-temperature limit of the proportional
63 range. Below this temperature
64 pwm1 = pwm1_auto_point2_pwm. It can go from
65 0 degree C to 124 degree C in steps of
66 4 degree C. Read it out after writing to get
67 the actual value.
68temp1_auto_point3_temp rw Above this temperature fan runs at maximum
69 speed. It can go from temp1_auto_point2_temp.
70 It can only have certain discrete values
71 which depend on temp1_auto_point2_temp and
72 pwm1_auto_point2_pwm. Read it out after
73 writing to get the actual value.
74
75temp2_auto_point1_temp rw Must be between 0 degree C and 63 degree C and
76 it defines the passive cooling temperature.
77 Below this temperature the fan stops in
78 the closed loop mode.
79temp2_auto_point2_temp rw The low-temperature limit of the proportional
80 range. Below this temperature
81 pwm1 = pwm1_auto_point2_pwm. It can go from
82 0 degree C to 124 degree C in steps
83 of 4 degree C.
84
85temp2_auto_point3_temp rw Above this temperature fan runs at maximum
86 speed. It can only have certain discrete
87 values which depend on temp2_auto_point2_temp
88 and pwm1_auto_point2_pwm. Read it out after
89 writing to get actual value.
90
91
92Module parameters
93-----------------
94
95If your board has a BIOS that initializes the amc6821 correctly, you should
96load the module with: init=0.
97
98If your board BIOS doesn't initialize the chip, or you want
99different settings, you can set the following parameters:
100init=1,
101pwminv: 0 default pwm output, 1 inverts pwm output.
102
diff --git a/Documentation/hwmon/k10temp b/Documentation/hwmon/k10temp
index a7a18d453a51..6526eee525a6 100644
--- a/Documentation/hwmon/k10temp
+++ b/Documentation/hwmon/k10temp
@@ -3,8 +3,8 @@ Kernel driver k10temp
3 3
4Supported chips: 4Supported chips:
5* AMD Family 10h processors: 5* AMD Family 10h processors:
6 Socket F: Quad-Core/Six-Core/Embedded Opteron 6 Socket F: Quad-Core/Six-Core/Embedded Opteron (but see below)
7 Socket AM2+: Opteron, Phenom (II) X3/X4 7 Socket AM2+: Quad-Core Opteron, Phenom (II) X3/X4, Athlon X2 (but see below)
8 Socket AM3: Quad-Core Opteron, Athlon/Phenom II X2/X3/X4, Sempron II 8 Socket AM3: Quad-Core Opteron, Athlon/Phenom II X2/X3/X4, Sempron II
9 Socket S1G3: Athlon II, Sempron, Turion II 9 Socket S1G3: Athlon II, Sempron, Turion II
10* AMD Family 11h processors: 10* AMD Family 11h processors:
@@ -36,10 +36,15 @@ Description
36This driver permits reading of the internal temperature sensor of AMD 36This driver permits reading of the internal temperature sensor of AMD
37Family 10h and 11h processors. 37Family 10h and 11h processors.
38 38
39All these processors have a sensor, but on older revisions of Family 10h 39All these processors have a sensor, but on those for Socket F or AM2+,
40processors, the sensor may return inconsistent values (erratum 319). The 40the sensor may return inconsistent values (erratum 319). The driver
41driver will refuse to load on these revisions unless you specify the 41will refuse to load on these revisions unless you specify the "force=1"
42"force=1" module parameter. 42module parameter.
43
44Due to technical reasons, the driver can detect only the mainboard's
45socket type, not the processor's actual capabilities. Therefore, if you
46are using an AM3 processor on an AM2+ mainboard, you can safely use the
47"force=1" parameter.
43 48
44There is one temperature measurement value, available as temp1_input in 49There is one temperature measurement value, available as temp1_input in
45sysfs. It is measured in degrees Celsius with a resolution of 1/8th degree. 50sysfs. It is measured in degrees Celsius with a resolution of 1/8th degree.
diff --git a/Documentation/input/multi-touch-protocol.txt b/Documentation/input/multi-touch-protocol.txt
index a12ea3b586e6..8490480ce432 100644
--- a/Documentation/input/multi-touch-protocol.txt
+++ b/Documentation/input/multi-touch-protocol.txt
@@ -27,12 +27,30 @@ set of events/packets.
27 27
28A set of ABS_MT events with the desired properties is defined. The events 28A set of ABS_MT events with the desired properties is defined. The events
29are divided into categories, to allow for partial implementation. The 29are divided into categories, to allow for partial implementation. The
30minimum set consists of ABS_MT_TOUCH_MAJOR, ABS_MT_POSITION_X and 30minimum set consists of ABS_MT_POSITION_X and ABS_MT_POSITION_Y, which
31ABS_MT_POSITION_Y, which allows for multiple fingers to be tracked. If the 31allows for multiple fingers to be tracked. If the device supports it, the
32device supports it, the ABS_MT_WIDTH_MAJOR may be used to provide the size 32ABS_MT_TOUCH_MAJOR and ABS_MT_WIDTH_MAJOR may be used to provide the size
33of the approaching finger. Anisotropy and direction may be specified with 33of the contact area and approaching finger, respectively.
34ABS_MT_TOUCH_MINOR, ABS_MT_WIDTH_MINOR and ABS_MT_ORIENTATION. The 34
35ABS_MT_TOOL_TYPE may be used to specify whether the touching tool is a 35The TOUCH and WIDTH parameters have a geometrical interpretation; imagine
36looking through a window at someone gently holding a finger against the
37glass. You will see two regions, one inner region consisting of the part
38of the finger actually touching the glass, and one outer region formed by
39the perimeter of the finger. The diameter of the inner region is the
40ABS_MT_TOUCH_MAJOR, the diameter of the outer region is
41ABS_MT_WIDTH_MAJOR. Now imagine the person pressing the finger harder
42against the glass. The inner region will increase, and in general, the
43ratio ABS_MT_TOUCH_MAJOR / ABS_MT_WIDTH_MAJOR, which is always smaller than
44unity, is related to the finger pressure. For pressure-based devices,
45ABS_MT_PRESSURE may be used to provide the pressure on the contact area
46instead.
47
48In addition to the MAJOR parameters, the oval shape of the finger can be
49described by adding the MINOR parameters, such that MAJOR and MINOR are the
50major and minor axis of an ellipse. Finally, the orientation of the oval
51shape can be describe with the ORIENTATION parameter.
52
53The ABS_MT_TOOL_TYPE may be used to specify whether the touching tool is a
36finger or a pen or something else. Devices with more granular information 54finger or a pen or something else. Devices with more granular information
37may specify general shapes as blobs, i.e., as a sequence of rectangular 55may specify general shapes as blobs, i.e., as a sequence of rectangular
38shapes grouped together by an ABS_MT_BLOB_ID. Finally, for the few devices 56shapes grouped together by an ABS_MT_BLOB_ID. Finally, for the few devices
@@ -42,11 +60,9 @@ report finger tracking from hardware [5].
42Here is what a minimal event sequence for a two-finger touch would look 60Here is what a minimal event sequence for a two-finger touch would look
43like: 61like:
44 62
45 ABS_MT_TOUCH_MAJOR
46 ABS_MT_POSITION_X 63 ABS_MT_POSITION_X
47 ABS_MT_POSITION_Y 64 ABS_MT_POSITION_Y
48 SYN_MT_REPORT 65 SYN_MT_REPORT
49 ABS_MT_TOUCH_MAJOR
50 ABS_MT_POSITION_X 66 ABS_MT_POSITION_X
51 ABS_MT_POSITION_Y 67 ABS_MT_POSITION_Y
52 SYN_MT_REPORT 68 SYN_MT_REPORT
@@ -87,6 +103,12 @@ the contact. The ratio ABS_MT_TOUCH_MAJOR / ABS_MT_WIDTH_MAJOR approximates
87the notion of pressure. The fingers of the hand and the palm all have 103the notion of pressure. The fingers of the hand and the palm all have
88different characteristic widths [1]. 104different characteristic widths [1].
89 105
106ABS_MT_PRESSURE
107
108The pressure, in arbitrary units, on the contact area. May be used instead
109of TOUCH and WIDTH for pressure-based devices or any device with a spatial
110signal intensity distribution.
111
90ABS_MT_ORIENTATION 112ABS_MT_ORIENTATION
91 113
92The orientation of the ellipse. The value should describe a signed quarter 114The orientation of the ellipse. The value should describe a signed quarter
@@ -170,6 +192,16 @@ There are a few devices that support trackingID in hardware. User space can
170make use of these native identifiers to reduce bandwidth and cpu usage. 192make use of these native identifiers to reduce bandwidth and cpu usage.
171 193
172 194
195Gestures
196--------
197
198In the specific application of creating gesture events, the TOUCH and WIDTH
199parameters can be used to, e.g., approximate finger pressure or distinguish
200between index finger and thumb. With the addition of the MINOR parameters,
201one can also distinguish between a sweeping finger and a pointing finger,
202and with ORIENTATION, one can detect twisting of fingers.
203
204
173Notes 205Notes
174----- 206-----
175 207
diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt
index 947374977ca5..35cf64d4436d 100644
--- a/Documentation/ioctl/ioctl-number.txt
+++ b/Documentation/ioctl/ioctl-number.txt
@@ -56,10 +56,11 @@ Following this convention is good because:
56(5) When following the convention, the driver code can use generic 56(5) When following the convention, the driver code can use generic
57 code to copy the parameters between user and kernel space. 57 code to copy the parameters between user and kernel space.
58 58
59This table lists ioctls visible from user land for Linux/i386. It contains 59This table lists ioctls visible from user land for Linux/x86. It contains
60most drivers up to 2.3.14, but I know I am missing some. 60most drivers up to 2.6.31, but I know I am missing some. There has been
61no attempt to list non-X86 architectures or ioctls from drivers/staging/.
61 62
62Code Seq# Include File Comments 63Code Seq#(hex) Include File Comments
63======================================================== 64========================================================
640x00 00-1F linux/fs.h conflict! 650x00 00-1F linux/fs.h conflict!
650x00 00-1F scsi/scsi_ioctl.h conflict! 660x00 00-1F scsi/scsi_ioctl.h conflict!
@@ -69,119 +70,228 @@ Code Seq# Include File Comments
690x03 all linux/hdreg.h 700x03 all linux/hdreg.h
700x04 D2-DC linux/umsdos_fs.h Dead since 2.6.11, but don't reuse these. 710x04 D2-DC linux/umsdos_fs.h Dead since 2.6.11, but don't reuse these.
710x06 all linux/lp.h 720x06 all linux/lp.h
720x09 all linux/md.h 730x09 all linux/raid/md_u.h
740x10 00-0F drivers/char/s390/vmcp.h
730x12 all linux/fs.h 750x12 all linux/fs.h
74 linux/blkpg.h 76 linux/blkpg.h
750x1b all InfiniBand Subsystem <http://www.openib.org/> 770x1b all InfiniBand Subsystem <http://www.openib.org/>
760x20 all drivers/cdrom/cm206.h 780x20 all drivers/cdrom/cm206.h
770x22 all scsi/sg.h 790x22 all scsi/sg.h
78'#' 00-3F IEEE 1394 Subsystem Block for the entire subsystem 80'#' 00-3F IEEE 1394 Subsystem Block for the entire subsystem
81'$' 00-0F linux/perf_counter.h, linux/perf_event.h
79'1' 00-1F <linux/timepps.h> PPS kit from Ulrich Windl 82'1' 00-1F <linux/timepps.h> PPS kit from Ulrich Windl
80 <ftp://ftp.de.kernel.org/pub/linux/daemons/ntp/PPS/> 83 <ftp://ftp.de.kernel.org/pub/linux/daemons/ntp/PPS/>
84'2' 01-04 linux/i2o.h
85'3' 00-0F drivers/s390/char/raw3270.h conflict!
86'3' 00-1F linux/suspend_ioctls.h conflict!
87 and kernel/power/user.c
81'8' all SNP8023 advanced NIC card 88'8' all SNP8023 advanced NIC card
82 <mailto:mcr@solidum.com> 89 <mailto:mcr@solidum.com>
83'A' 00-1F linux/apm_bios.h 90'@' 00-0F linux/radeonfb.h conflict!
91'@' 00-0F drivers/video/aty/aty128fb.c conflict!
92'A' 00-1F linux/apm_bios.h conflict!
93'A' 00-0F linux/agpgart.h conflict!
94 and drivers/char/agp/compat_ioctl.h
95'A' 00-7F sound/asound.h conflict!
96'B' 00-1F linux/cciss_ioctl.h conflict!
97'B' 00-0F include/linux/pmu.h conflict!
84'B' C0-FF advanced bbus 98'B' C0-FF advanced bbus
85 <mailto:maassen@uni-freiburg.de> 99 <mailto:maassen@uni-freiburg.de>
86'C' all linux/soundcard.h 100'C' all linux/soundcard.h conflict!
101'C' 01-2F linux/capi.h conflict!
102'C' F0-FF drivers/net/wan/cosa.h conflict!
87'D' all arch/s390/include/asm/dasd.h 103'D' all arch/s390/include/asm/dasd.h
88'E' all linux/input.h 104'D' 40-5F drivers/scsi/dpt/dtpi_ioctl.h
89'F' all linux/fb.h 105'D' 05 drivers/scsi/pmcraid.h
90'H' all linux/hiddev.h 106'E' all linux/input.h conflict!
91'I' all linux/isdn.h 107'E' 00-0F xen/evtchn.h conflict!
108'F' all linux/fb.h conflict!
109'F' 01-02 drivers/scsi/pmcraid.h conflict!
110'F' 20 drivers/video/fsl-diu-fb.h conflict!
111'F' 20 drivers/video/intelfb/intelfb.h conflict!
112'F' 20 linux/ivtvfb.h conflict!
113'F' 20 linux/matroxfb.h conflict!
114'F' 20 drivers/video/aty/atyfb_base.c conflict!
115'F' 00-0F video/da8xx-fb.h conflict!
116'F' 80-8F linux/arcfb.h conflict!
117'F' DD video/sstfb.h conflict!
118'G' 00-3F drivers/misc/sgi-gru/grulib.h conflict!
119'G' 00-0F linux/gigaset_dev.h conflict!
120'H' 00-7F linux/hiddev.h conflict!
121'H' 00-0F linux/hidraw.h conflict!
122'H' 00-0F sound/asound.h conflict!
123'H' 20-40 sound/asound_fm.h conflict!
124'H' 80-8F sound/sfnt_info.h conflict!
125'H' 10-8F sound/emu10k1.h conflict!
126'H' 10-1F sound/sb16_csp.h conflict!
127'H' 10-1F sound/hda_hwdep.h conflict!
128'H' 40-4F sound/hdspm.h conflict!
129'H' 40-4F sound/hdsp.h conflict!
130'H' 90 sound/usb/usx2y/usb_stream.h
131'H' C0-F0 net/bluetooth/hci.h conflict!
132'H' C0-DF net/bluetooth/hidp/hidp.h conflict!
133'H' C0-DF net/bluetooth/cmtp/cmtp.h conflict!
134'H' C0-DF net/bluetooth/bnep/bnep.h conflict!
135'I' all linux/isdn.h conflict!
136'I' 00-0F drivers/isdn/divert/isdn_divert.h conflict!
137'I' 40-4F linux/mISDNif.h conflict!
92'J' 00-1F drivers/scsi/gdth_ioctl.h 138'J' 00-1F drivers/scsi/gdth_ioctl.h
93'K' all linux/kd.h 139'K' all linux/kd.h
94'L' 00-1F linux/loop.h 140'L' 00-1F linux/loop.h conflict!
95'L' 20-2F driver/usb/misc/vstusb.h 141'L' 10-1F drivers/scsi/mpt2sas/mpt2sas_ctl.h conflict!
142'L' 20-2F linux/usb/vstusb.h
96'L' E0-FF linux/ppdd.h encrypted disk device driver 143'L' E0-FF linux/ppdd.h encrypted disk device driver
97 <http://linux01.gwdg.de/~alatham/ppdd.html> 144 <http://linux01.gwdg.de/~alatham/ppdd.html>
98'M' all linux/soundcard.h 145'M' all linux/soundcard.h conflict!
146'M' 01-16 mtd/mtd-abi.h conflict!
147 and drivers/mtd/mtdchar.c
148'M' 01-03 drivers/scsi/megaraid/megaraid_sas.h
149'M' 00-0F drivers/video/fsl-diu-fb.h conflict!
99'N' 00-1F drivers/usb/scanner.h 150'N' 00-1F drivers/usb/scanner.h
100'O' 00-02 include/mtd/ubi-user.h UBI 151'O' 00-06 mtd/ubi-user.h UBI
101'P' all linux/soundcard.h 152'P' all linux/soundcard.h conflict!
153'P' 60-6F sound/sscape_ioctl.h conflict!
154'P' 00-0F drivers/usb/class/usblp.c conflict!
102'Q' all linux/soundcard.h 155'Q' all linux/soundcard.h
103'R' 00-1F linux/random.h 156'R' 00-1F linux/random.h conflict!
157'R' 01 linux/rfkill.h conflict!
158'R' 01-0F media/rds.h conflict!
159'R' C0-DF net/bluetooth/rfcomm.h
104'S' all linux/cdrom.h conflict! 160'S' all linux/cdrom.h conflict!
105'S' 80-81 scsi/scsi_ioctl.h conflict! 161'S' 80-81 scsi/scsi_ioctl.h conflict!
106'S' 82-FF scsi/scsi.h conflict! 162'S' 82-FF scsi/scsi.h conflict!
163'S' 00-7F sound/asequencer.h conflict!
107'T' all linux/soundcard.h conflict! 164'T' all linux/soundcard.h conflict!
165'T' 00-AF sound/asound.h conflict!
108'T' all arch/x86/include/asm/ioctls.h conflict! 166'T' all arch/x86/include/asm/ioctls.h conflict!
109'U' 00-EF linux/drivers/usb/usb.h 167'T' C0-DF linux/if_tun.h conflict!
110'V' all linux/vt.h 168'U' all sound/asound.h conflict!
169'U' 00-0F drivers/media/video/uvc/uvcvideo.h conflict!
170'U' 00-CF linux/uinput.h conflict!
171'U' 00-EF linux/usbdevice_fs.h
172'U' C0-CF drivers/bluetooth/hci_uart.h
173'V' all linux/vt.h conflict!
174'V' all linux/videodev2.h conflict!
175'V' C0 linux/ivtvfb.h conflict!
176'V' C0 linux/ivtv.h conflict!
177'V' C0 media/davinci/vpfe_capture.h conflict!
178'V' C0 media/si4713.h conflict!
179'V' C0-CF drivers/media/video/mxb.h conflict!
111'W' 00-1F linux/watchdog.h conflict! 180'W' 00-1F linux/watchdog.h conflict!
112'W' 00-1F linux/wanrouter.h conflict! 181'W' 00-1F linux/wanrouter.h conflict!
113'X' all linux/xfs_fs.h 182'W' 00-3F sound/asound.h conflict!
183'X' all fs/xfs/xfs_fs.h conflict!
184 and fs/xfs/linux-2.6/xfs_ioctl32.h
185 and include/linux/falloc.h
186 and linux/fs.h
187'X' all fs/ocfs2/ocfs_fs.h conflict!
188'X' 01 linux/pktcdvd.h conflict!
114'Y' all linux/cyclades.h 189'Y' all linux/cyclades.h
115'[' 00-07 linux/usb/usbtmc.h USB Test and Measurement Devices 190'Z' 14-15 drivers/message/fusion/mptctl.h
191'[' 00-07 linux/usb/tmc.h USB Test and Measurement Devices
116 <mailto:gregkh@suse.de> 192 <mailto:gregkh@suse.de>
117'a' all ATM on linux 193'a' all linux/atm*.h, linux/sonet.h ATM on linux
118 <http://lrcwww.epfl.ch/linux-atm/magic.html> 194 <http://lrcwww.epfl.ch/linux-atm/magic.html>
119'b' 00-FF bit3 vme host bridge 195'b' 00-FF conflict! bit3 vme host bridge
120 <mailto:natalia@nikhefk.nikhef.nl> 196 <mailto:natalia@nikhefk.nikhef.nl>
197'b' 00-0F media/bt819.h conflict!
198'c' all linux/cm4000_cs.h conflict!
121'c' 00-7F linux/comstats.h conflict! 199'c' 00-7F linux/comstats.h conflict!
122'c' 00-7F linux/coda.h conflict! 200'c' 00-7F linux/coda.h conflict!
123'c' 80-9F arch/s390/include/asm/chsc.h 201'c' 00-1F linux/chio.h conflict!
124'c' A0-AF arch/x86/include/asm/msr.h 202'c' 80-9F arch/s390/include/asm/chsc.h conflict!
203'c' A0-AF arch/x86/include/asm/msr.h conflict!
125'd' 00-FF linux/char/drm/drm/h conflict! 204'd' 00-FF linux/char/drm/drm/h conflict!
205'd' 02-40 pcmcia/ds.h conflict!
206'd' 10-3F drivers/media/video/dabusb.h conflict!
207'd' C0-CF drivers/media/video/saa7191.h conflict!
126'd' F0-FF linux/digi1.h 208'd' F0-FF linux/digi1.h
127'e' all linux/digi1.h conflict! 209'e' all linux/digi1.h conflict!
128'e' 00-1F net/irda/irtty.h conflict! 210'e' 00-1F drivers/net/irda/irtty-sir.h conflict!
129'f' 00-1F linux/ext2_fs.h 211'f' 00-1F linux/ext2_fs.h conflict!
130'h' 00-7F Charon filesystem 212'f' 00-1F linux/ext3_fs.h conflict!
213'f' 00-0F fs/jfs/jfs_dinode.h conflict!
214'f' 00-0F fs/ext4/ext4.h conflict!
215'f' 00-0F linux/fs.h conflict!
216'f' 00-0F fs/ocfs2/ocfs2_fs.h conflict!
217'g' 00-0F linux/usb/gadgetfs.h
218'g' 20-2F linux/usb/g_printer.h
219'h' 00-7F conflict! Charon filesystem
131 <mailto:zapman@interlan.net> 220 <mailto:zapman@interlan.net>
132'i' 00-3F linux/i2o.h 221'h' 00-1F linux/hpet.h conflict!
222'i' 00-3F linux/i2o-dev.h conflict!
223'i' 0B-1F linux/ipmi.h conflict!
224'i' 80-8F linux/i8k.h
133'j' 00-3F linux/joystick.h 225'j' 00-3F linux/joystick.h
226'k' 00-0F linux/spi/spidev.h conflict!
227'k' 00-05 video/kyro.h conflict!
134'l' 00-3F linux/tcfs_fs.h transparent cryptographic file system 228'l' 00-3F linux/tcfs_fs.h transparent cryptographic file system
135 <http://mikonos.dia.unisa.it/tcfs> 229 <http://mikonos.dia.unisa.it/tcfs>
136'l' 40-7F linux/udf_fs_i.h in development: 230'l' 40-7F linux/udf_fs_i.h in development:
137 <http://sourceforge.net/projects/linux-udf/> 231 <http://sourceforge.net/projects/linux-udf/>
138'm' 00-09 linux/mmtimer.h 232'm' 00-09 linux/mmtimer.h conflict!
139'm' all linux/mtio.h conflict! 233'm' all linux/mtio.h conflict!
140'm' all linux/soundcard.h conflict! 234'm' all linux/soundcard.h conflict!
141'm' all linux/synclink.h conflict! 235'm' all linux/synclink.h conflict!
236'm' 00-19 drivers/message/fusion/mptctl.h conflict!
237'm' 00 drivers/scsi/megaraid/megaraid_ioctl.h conflict!
142'm' 00-1F net/irda/irmod.h conflict! 238'm' 00-1F net/irda/irmod.h conflict!
143'n' 00-7F linux/ncp_fs.h 239'n' 00-7F linux/ncp_fs.h and fs/ncpfs/ioctl.c
144'n' 80-8F linux/nilfs2_fs.h NILFS2 240'n' 80-8F linux/nilfs2_fs.h NILFS2
145'n' E0-FF video/matrox.h matroxfb 241'n' E0-FF linux/matroxfb.h matroxfb
146'o' 00-1F fs/ocfs2/ocfs2_fs.h OCFS2 242'o' 00-1F fs/ocfs2/ocfs2_fs.h OCFS2
147'o' 00-03 include/mtd/ubi-user.h conflict! (OCFS2 and UBI overlaps) 243'o' 00-03 mtd/ubi-user.h conflict! (OCFS2 and UBI overlaps)
148'o' 40-41 include/mtd/ubi-user.h UBI 244'o' 40-41 mtd/ubi-user.h UBI
149'o' 01-A1 include/linux/dvb/*.h DVB 245'o' 01-A1 linux/dvb/*.h DVB
150'p' 00-0F linux/phantom.h conflict! (OpenHaptics needs this) 246'p' 00-0F linux/phantom.h conflict! (OpenHaptics needs this)
247'p' 00-1F linux/rtc.h conflict!
151'p' 00-3F linux/mc146818rtc.h conflict! 248'p' 00-3F linux/mc146818rtc.h conflict!
152'p' 40-7F linux/nvram.h 249'p' 40-7F linux/nvram.h
153'p' 80-9F user-space parport 250'p' 80-9F linux/ppdev.h user-space parport
154 <mailto:tim@cyberelk.net> 251 <mailto:tim@cyberelk.net>
155'p' a1-a4 linux/pps.h LinuxPPS 252'p' A1-A4 linux/pps.h LinuxPPS
156 <mailto:giometti@linux.it> 253 <mailto:giometti@linux.it>
157'q' 00-1F linux/serio.h 254'q' 00-1F linux/serio.h
158'q' 80-FF Internet PhoneJACK, Internet LineJACK 255'q' 80-FF linux/telephony.h Internet PhoneJACK, Internet LineJACK
159 <http://www.quicknet.net> 256 linux/ixjuser.h <http://www.quicknet.net>
160'r' 00-1F linux/msdos_fs.h 257'r' 00-1F linux/msdos_fs.h and fs/fat/dir.c
161's' all linux/cdk.h 258's' all linux/cdk.h
162't' 00-7F linux/if_ppp.h 259't' 00-7F linux/if_ppp.h
163't' 80-8F linux/isdn_ppp.h 260't' 80-8F linux/isdn_ppp.h
261't' 90 linux/toshiba.h
164'u' 00-1F linux/smb_fs.h 262'u' 00-1F linux/smb_fs.h
165'v' 00-1F linux/ext2_fs.h conflict!
166'v' all linux/videodev.h conflict! 263'v' all linux/videodev.h conflict!
264'v' 00-1F linux/ext2_fs.h conflict!
265'v' 00-1F linux/fs.h conflict!
266'v' 00-0F linux/sonypi.h conflict!
267'v' C0-CF drivers/media/video/ov511.h conflict!
268'v' C0-DF media/pwc-ioctl.h conflict!
269'v' C0-FF linux/meye.h conflict!
270'v' C0-CF drivers/media/video/zoran/zoran.h conflict!
271'v' D0-DF drivers/media/video/cpia2/cpia2dev.h conflict!
167'w' all CERN SCI driver 272'w' all CERN SCI driver
168'y' 00-1F packet based user level communications 273'y' 00-1F packet based user level communications
169 <mailto:zapman@interlan.net> 274 <mailto:zapman@interlan.net>
170'z' 00-3F CAN bus card 275'z' 00-3F CAN bus card conflict!
171 <mailto:hdstich@connectu.ulm.circular.de> 276 <mailto:hdstich@connectu.ulm.circular.de>
172'z' 40-7F CAN bus card 277'z' 40-7F CAN bus card conflict!
173 <mailto:oe@port.de> 278 <mailto:oe@port.de>
279'z' 10-4F drivers/s390/crypto/zcrypt_api.h conflict!
1740x80 00-1F linux/fb.h 2800x80 00-1F linux/fb.h
1750x81 00-1F linux/videotext.h 2810x81 00-1F linux/videotext.h
2820x88 00-3F media/ovcamchip.h
1760x89 00-06 arch/x86/include/asm/sockios.h 2830x89 00-06 arch/x86/include/asm/sockios.h
1770x89 0B-DF linux/sockios.h 2840x89 0B-DF linux/sockios.h
1780x89 E0-EF linux/sockios.h SIOCPROTOPRIVATE range 2850x89 E0-EF linux/sockios.h SIOCPROTOPRIVATE range
2860x89 E0-EF linux/dn.h PROTOPRIVATE range
1790x89 F0-FF linux/sockios.h SIOCDEVPRIVATE range 2870x89 F0-FF linux/sockios.h SIOCDEVPRIVATE range
1800x8B all linux/wireless.h 2880x8B all linux/wireless.h
1810x8C 00-3F WiNRADiO driver 2890x8C 00-3F WiNRADiO driver
182 <http://www.proximity.com.au/~brian/winradio/> 290 <http://www.proximity.com.au/~brian/winradio/>
1830x90 00 drivers/cdrom/sbpcd.h 2910x90 00 drivers/cdrom/sbpcd.h
2920x92 00-0F drivers/usb/mon/mon_bin.c
1840x93 60-7F linux/auto_fs.h 2930x93 60-7F linux/auto_fs.h
2940x94 all fs/btrfs/ioctl.h
1850x99 00-0F 537-Addinboard driver 2950x99 00-0F 537-Addinboard driver
186 <mailto:buk@buks.ipn.de> 296 <mailto:buk@buks.ipn.de>
1870xA0 all linux/sdp/sdp.h Industrial Device Project 2970xA0 all linux/sdp/sdp.h Industrial Device Project
@@ -192,17 +302,22 @@ Code Seq# Include File Comments
1920xAB 00-1F linux/nbd.h 3020xAB 00-1F linux/nbd.h
1930xAC 00-1F linux/raw.h 3030xAC 00-1F linux/raw.h
1940xAD 00 Netfilter device in development: 3040xAD 00 Netfilter device in development:
195 <mailto:rusty@rustcorp.com.au> 305 <mailto:rusty@rustcorp.com.au>
1960xAE all linux/kvm.h Kernel-based Virtual Machine 3060xAE all linux/kvm.h Kernel-based Virtual Machine
197 <mailto:kvm@vger.kernel.org> 307 <mailto:kvm@vger.kernel.org>
1980xB0 all RATIO devices in development: 3080xB0 all RATIO devices in development:
199 <mailto:vgo@ratio.de> 309 <mailto:vgo@ratio.de>
2000xB1 00-1F PPPoX <mailto:mostrows@styx.uwaterloo.ca> 3100xB1 00-1F PPPoX <mailto:mostrows@styx.uwaterloo.ca>
3110xC0 00-0F linux/usb/iowarrior.h
2010xCB 00-1F CBM serial IEC bus in development: 3120xCB 00-1F CBM serial IEC bus in development:
202 <mailto:michael.klein@puffin.lb.shuttle.de> 313 <mailto:michael.klein@puffin.lb.shuttle.de>
3140xCD 01 linux/reiserfs_fs.h
3150xCF 02 fs/cifs/ioctl.c
3160xDB 00-0F drivers/char/mwave/mwavepub.h
2030xDD 00-3F ZFCP device driver see drivers/s390/scsi/ 3170xDD 00-3F ZFCP device driver see drivers/s390/scsi/
204 <mailto:aherrman@de.ibm.com> 318 <mailto:aherrman@de.ibm.com>
2050xF3 00-3F video/sisfb.h sisfb (in development) 3190xF3 00-3F drivers/usb/misc/sisusbvga/sisusb.h sisfb (in development)
206 <mailto:thomas@winischhofer.net> 320 <mailto:thomas@winischhofer.net>
2070xF4 00-1F video/mbxfb.h mbxfb 3210xF4 00-1F video/mbxfb.h mbxfb
208 <mailto:raph@8d.com> 322 <mailto:raph@8d.com>
3230xFD all linux/dm-ioctl.h
diff --git a/Documentation/kernel-doc-nano-HOWTO.txt b/Documentation/kernel-doc-nano-HOWTO.txt
index 348b9e5e28fc..27a52b35d55b 100644
--- a/Documentation/kernel-doc-nano-HOWTO.txt
+++ b/Documentation/kernel-doc-nano-HOWTO.txt
@@ -214,11 +214,13 @@ The format of the block comment is like this:
214 * (section header: (section description)? )* 214 * (section header: (section description)? )*
215(*)?*/ 215(*)?*/
216 216
217The short function description ***cannot be multiline***, but the other 217All "description" text can span multiple lines, although the
218descriptions can be (and they can contain blank lines). If you continue 218function_name & its short description are traditionally on a single line.
219that initial short description onto a second line, that second line will 219Description text may also contain blank lines (i.e., lines that contain
220appear further down at the beginning of the description section, which is 220only a "*").
221almost certainly not what you had in mind. 221
222"section header:" names must be unique per function (or struct,
223union, typedef, enum).
222 224
223Avoid putting a spurious blank line after the function name, or else the 225Avoid putting a spurious blank line after the function name, or else the
224description will be repeated! 226description will be repeated!
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 5ba4d9dff113..e7848a0d99eb 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -199,6 +199,10 @@ and is between 256 and 4096 characters. It is defined in the file
199 acpi_display_output=video 199 acpi_display_output=video
200 See above. 200 See above.
201 201
202 acpi_early_pdc_eval [HW,ACPI] Evaluate processor _PDC methods
203 early. Needed on some platforms to properly
204 initialize the EC.
205
202 acpi_irq_balance [HW,ACPI] 206 acpi_irq_balance [HW,ACPI]
203 ACPI will balance active IRQs 207 ACPI will balance active IRQs
204 default in APIC mode 208 default in APIC mode
@@ -240,7 +244,7 @@ and is between 256 and 4096 characters. It is defined in the file
240 244
241 acpi_sleep= [HW,ACPI] Sleep options 245 acpi_sleep= [HW,ACPI] Sleep options
242 Format: { s3_bios, s3_mode, s3_beep, s4_nohwsig, 246 Format: { s3_bios, s3_mode, s3_beep, s4_nohwsig,
243 old_ordering, s4_nonvs } 247 old_ordering, s4_nonvs, sci_force_enable }
244 See Documentation/power/video.txt for information on 248 See Documentation/power/video.txt for information on
245 s3_bios and s3_mode. 249 s3_bios and s3_mode.
246 s3_beep is for debugging; it makes the PC's speaker beep 250 s3_beep is for debugging; it makes the PC's speaker beep
@@ -253,6 +257,9 @@ and is between 256 and 4096 characters. It is defined in the file
253 of _PTS is used by default). 257 of _PTS is used by default).
254 s4_nonvs prevents the kernel from saving/restoring the 258 s4_nonvs prevents the kernel from saving/restoring the
255 ACPI NVS memory during hibernation. 259 ACPI NVS memory during hibernation.
260 sci_force_enable causes the kernel to set SCI_EN directly
261 on resume from S1/S3 (which is against the ACPI spec,
262 but some broken systems don't work without it).
256 263
257 acpi_use_timer_override [HW,ACPI] 264 acpi_use_timer_override [HW,ACPI]
258 Use timer override. For some broken Nvidia NF5 boards 265 Use timer override. For some broken Nvidia NF5 boards
@@ -308,6 +315,11 @@ and is between 256 and 4096 characters. It is defined in the file
308 aic79xx= [HW,SCSI] 315 aic79xx= [HW,SCSI]
309 See Documentation/scsi/aic79xx.txt. 316 See Documentation/scsi/aic79xx.txt.
310 317
318 alignment= [KNL,ARM]
319 Allow the default userspace alignment fault handler
320 behaviour to be specified. Bit 0 enables warnings,
321 bit 1 enables fixups, and bit 2 sends a segfault.
322
311 amd_iommu= [HW,X86-84] 323 amd_iommu= [HW,X86-84]
312 Pass parameters to the AMD IOMMU driver in the system. 324 Pass parameters to the AMD IOMMU driver in the system.
313 Possible values are: 325 Possible values are:
diff --git a/Documentation/kvm/api.txt b/Documentation/kvm/api.txt
index e1a114161027..2811e452f756 100644
--- a/Documentation/kvm/api.txt
+++ b/Documentation/kvm/api.txt
@@ -685,7 +685,7 @@ struct kvm_vcpu_events {
685 __u8 pad; 685 __u8 pad;
686 } nmi; 686 } nmi;
687 __u32 sipi_vector; 687 __u32 sipi_vector;
688 __u32 flags; /* must be zero */ 688 __u32 flags;
689}; 689};
690 690
6914.30 KVM_SET_VCPU_EVENTS 6914.30 KVM_SET_VCPU_EVENTS
@@ -701,6 +701,14 @@ vcpu.
701 701
702See KVM_GET_VCPU_EVENTS for the data structure. 702See KVM_GET_VCPU_EVENTS for the data structure.
703 703
704Fields that may be modified asynchronously by running VCPUs can be excluded
705from the update. These fields are nmi.pending and sipi_vector. Keep the
706corresponding bits in the flags field cleared to suppress overwriting the
707current in-kernel state. The bits are:
708
709KVM_VCPUEVENT_VALID_NMI_PENDING - transfer nmi.pending to the kernel
710KVM_VCPUEVENT_VALID_SIPI_VECTOR - transfer sipi_vector
711
704 712
7055. The kvm_run structure 7135. The kvm_run structure
706 714
diff --git a/Documentation/laptops/thinkpad-acpi.txt b/Documentation/laptops/thinkpad-acpi.txt
index 169091f75e6d..75afa1229fd7 100644
--- a/Documentation/laptops/thinkpad-acpi.txt
+++ b/Documentation/laptops/thinkpad-acpi.txt
@@ -1092,8 +1092,8 @@ WARNING:
1092 its level up and down at every change. 1092 its level up and down at every change.
1093 1093
1094 1094
1095Volume control 1095Volume control (Console Audio control)
1096-------------- 1096--------------------------------------
1097 1097
1098procfs: /proc/acpi/ibm/volume 1098procfs: /proc/acpi/ibm/volume
1099ALSA: "ThinkPad Console Audio Control", default ID: "ThinkPadEC" 1099ALSA: "ThinkPad Console Audio Control", default ID: "ThinkPadEC"
@@ -1110,9 +1110,53 @@ the desktop environment to just provide on-screen-display feedback.
1110Software volume control should be done only in the main AC97/HDA 1110Software volume control should be done only in the main AC97/HDA
1111mixer. 1111mixer.
1112 1112
1113This feature allows volume control on ThinkPad models with a digital 1113
1114volume knob (when available, not all models have it), as well as 1114About the ThinkPad Console Audio control:
1115mute/unmute control. The available commands are: 1115
1116ThinkPads have a built-in amplifier and muting circuit that drives the
1117console headphone and speakers. This circuit is after the main AC97
1118or HDA mixer in the audio path, and under exclusive control of the
1119firmware.
1120
1121ThinkPads have three special hotkeys to interact with the console
1122audio control: volume up, volume down and mute.
1123
1124It is worth noting that the normal way the mute function works (on
1125ThinkPads that do not have a "mute LED") is:
1126
11271. Press mute to mute. It will *always* mute, you can press it as
1128 many times as you want, and the sound will remain mute.
1129
11302. Press either volume key to unmute the ThinkPad (it will _not_
1131 change the volume, it will just unmute).
1132
1133This is a very superior design when compared to the cheap software-only
1134mute-toggle solution found on normal consumer laptops: you can be
1135absolutely sure the ThinkPad will not make noise if you press the mute
1136button, no matter the previous state.
1137
1138The IBM ThinkPads, and the earlier Lenovo ThinkPads have variable-gain
1139amplifiers driving the speakers and headphone output, and the firmware
1140also handles volume control for the headphone and speakers on these
1141ThinkPads without any help from the operating system (this volume
1142control stage exists after the main AC97 or HDA mixer in the audio
1143path).
1144
1145The newer Lenovo models only have firmware mute control, and depend on
1146the main HDA mixer to do volume control (which is done by the operating
1147system). In this case, the volume keys are filtered out for unmute
1148key press (there are some firmware bugs in this area) and delivered as
1149normal key presses to the operating system (thinkpad-acpi is not
1150involved).
1151
1152
1153The ThinkPad-ACPI volume control:
1154
1155The preferred way to interact with the Console Audio control is the
1156ALSA interface.
1157
1158The legacy procfs interface allows one to read the current state,
1159and if volume control is enabled, accepts the following commands:
1116 1160
1117 echo up >/proc/acpi/ibm/volume 1161 echo up >/proc/acpi/ibm/volume
1118 echo down >/proc/acpi/ibm/volume 1162 echo down >/proc/acpi/ibm/volume
@@ -1121,12 +1165,10 @@ mute/unmute control. The available commands are:
1121 echo 'level <level>' >/proc/acpi/ibm/volume 1165 echo 'level <level>' >/proc/acpi/ibm/volume
1122 1166
1123The <level> number range is 0 to 14 although not all of them may be 1167The <level> number range is 0 to 14 although not all of them may be
1124distinct. The unmute the volume after the mute command, use either the 1168distinct. To unmute the volume after the mute command, use either the
1125up or down command (the level command will not unmute the volume), or 1169up or down command (the level command will not unmute the volume), or
1126the unmute command. 1170the unmute command.
1127 1171
1128The current volume level and mute state is shown in the file.
1129
1130You can use the volume_capabilities parameter to tell the driver 1172You can use the volume_capabilities parameter to tell the driver
1131whether your thinkpad has volume control or mute-only control: 1173whether your thinkpad has volume control or mute-only control:
1132volume_capabilities=1 for mixers with mute and volume control, 1174volume_capabilities=1 for mixers with mute and volume control,
diff --git a/Documentation/networking/3c509.txt b/Documentation/networking/3c509.txt
index 0643e3b7168c..3c45d5dcd63b 100644
--- a/Documentation/networking/3c509.txt
+++ b/Documentation/networking/3c509.txt
@@ -48,11 +48,11 @@ for LILO parameters for doing this:
48This configures the first found 3c509 card for IRQ 10, base I/O 0x310, and 48This configures the first found 3c509 card for IRQ 10, base I/O 0x310, and
49transceiver type 3 (10base2). The flag "0x3c509" must be set to avoid conflicts 49transceiver type 3 (10base2). The flag "0x3c509" must be set to avoid conflicts
50with other card types when overriding the I/O address. When the driver is 50with other card types when overriding the I/O address. When the driver is
51loaded as a module, only the IRQ and transceiver setting may be overridden. 51loaded as a module, only the IRQ may be overridden. For example,
52For example, setting two cards to 10base2/IRQ10 and AUI/IRQ11 is done by using 52setting two cards to IRQ10 and IRQ11 is done by using the irq module
53the xcvr and irq module options: 53option:
54 54
55 options 3c509 xcvr=3,1 irq=10,11 55 options 3c509 irq=10,11
56 56
57 57
58(2) Full-duplex mode 58(2) Full-duplex mode
@@ -77,6 +77,8 @@ operation.
77itself full-duplex capable. This is almost certainly one of two things: a full- 77itself full-duplex capable. This is almost certainly one of two things: a full-
78duplex-capable Ethernet switch (*not* a hub), or a full-duplex-capable NIC on 78duplex-capable Ethernet switch (*not* a hub), or a full-duplex-capable NIC on
79another system that's connected directly to the 3c509B via a crossover cable. 79another system that's connected directly to the 3c509B via a crossover cable.
80
81Full-duplex mode can be enabled using 'ethtool'.
80 82
81/////Extremely important caution concerning full-duplex mode///// 83/////Extremely important caution concerning full-duplex mode/////
82Understand that the 3c509B's hardware's full-duplex support is much more 84Understand that the 3c509B's hardware's full-duplex support is much more
@@ -113,6 +115,8 @@ This insured that merely upgrading the driver from an earlier version would
113never automatically enable full-duplex mode in an existing installation; 115never automatically enable full-duplex mode in an existing installation;
114it must always be explicitly enabled via one of these code in order to be 116it must always be explicitly enabled via one of these code in order to be
115activated. 117activated.
118
119The transceiver type can be changed using 'ethtool'.
116 120
117 121
118(4a) Interpretation of error messages and common problems 122(4a) Interpretation of error messages and common problems
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
index 006b39dec87d..e87f3cdc8a6a 100644
--- a/Documentation/networking/ip-sysctl.txt
+++ b/Documentation/networking/ip-sysctl.txt
@@ -1074,10 +1074,10 @@ regen_max_retry - INTEGER
1074 Default: 5 1074 Default: 5
1075 1075
1076max_addresses - INTEGER 1076max_addresses - INTEGER
1077 Number of maximum addresses per interface. 0 disables limitation. 1077 Maximum number of autoconfigured addresses per interface. Setting
1078 It is recommended not set too large value (or 0) because it would 1078 to zero disables the limitation. It is not recommended to set this
1079 be too easy way to crash kernel to allow to create too much of 1079 value too large (or to zero) because it would be an easy way to
1080 autoconfigured addresses. 1080 crash the kernel by allowing too many addresses to be created.
1081 Default: 16 1081 Default: 16
1082 1082
1083disable_ipv6 - BOOLEAN 1083disable_ipv6 - BOOLEAN
diff --git a/Documentation/sound/alsa/Procfile.txt b/Documentation/sound/alsa/Procfile.txt
index 719a819f8cc2..07301de12cc4 100644
--- a/Documentation/sound/alsa/Procfile.txt
+++ b/Documentation/sound/alsa/Procfile.txt
@@ -95,7 +95,7 @@ card*/pcm*/xrun_debug
95 It takes an integer value, can be changed by writing to this 95 It takes an integer value, can be changed by writing to this
96 file, such as 96 file, such as
97 97
98 # cat 5 > /proc/asound/card0/pcm0p/xrun_debug 98 # echo 5 > /proc/asound/card0/pcm0p/xrun_debug
99 99
100 The value consists of the following bit flags: 100 The value consists of the following bit flags:
101 bit 0 = Enable XRUN/jiffies debug messages 101 bit 0 = Enable XRUN/jiffies debug messages
diff --git a/Documentation/trace/ftrace-design.txt b/Documentation/trace/ftrace-design.txt
index 641a1ef2a7ff..6a5a579126b0 100644
--- a/Documentation/trace/ftrace-design.txt
+++ b/Documentation/trace/ftrace-design.txt
@@ -1,5 +1,6 @@
1 function tracer guts 1 function tracer guts
2 ==================== 2 ====================
3 By Mike Frysinger
3 4
4Introduction 5Introduction
5------------ 6------------
@@ -53,14 +54,14 @@ size of the mcount call that is embedded in the function).
53For example, if the function foo() calls bar(), when the bar() function calls 54For example, if the function foo() calls bar(), when the bar() function calls
54mcount(), the arguments mcount() will pass to the tracer are: 55mcount(), the arguments mcount() will pass to the tracer are:
55 "frompc" - the address bar() will use to return to foo() 56 "frompc" - the address bar() will use to return to foo()
56 "selfpc" - the address bar() (with _mcount() size adjustment) 57 "selfpc" - the address bar() (with mcount() size adjustment)
57 58
58Also keep in mind that this mcount function will be called *a lot*, so 59Also keep in mind that this mcount function will be called *a lot*, so
59optimizing for the default case of no tracer will help the smooth running of 60optimizing for the default case of no tracer will help the smooth running of
60your system when tracing is disabled. So the start of the mcount function is 61your system when tracing is disabled. So the start of the mcount function is
61typically the bare min with checking things before returning. That also means 62typically the bare minimum with checking things before returning. That also
62the code flow should usually kept linear (i.e. no branching in the nop case). 63means the code flow should usually be kept linear (i.e. no branching in the nop
63This is of course an optimization and not a hard requirement. 64case). This is of course an optimization and not a hard requirement.
64 65
65Here is some pseudo code that should help (these functions should actually be 66Here is some pseudo code that should help (these functions should actually be
66implemented in assembly): 67implemented in assembly):
@@ -131,10 +132,10 @@ some functions to save (hijack) and restore the return address.
131 132
132The mcount function should check the function pointers ftrace_graph_return 133The mcount function should check the function pointers ftrace_graph_return
133(compare to ftrace_stub) and ftrace_graph_entry (compare to 134(compare to ftrace_stub) and ftrace_graph_entry (compare to
134ftrace_graph_entry_stub). If either of those are not set to the relevant stub 135ftrace_graph_entry_stub). If either of those is not set to the relevant stub
135function, call the arch-specific function ftrace_graph_caller which in turn 136function, call the arch-specific function ftrace_graph_caller which in turn
136calls the arch-specific function prepare_ftrace_return. Neither of these 137calls the arch-specific function prepare_ftrace_return. Neither of these
137function names are strictly required, but you should use them anyways to stay 138function names is strictly required, but you should use them anyway to stay
138consistent across the architecture ports -- easier to compare & contrast 139consistent across the architecture ports -- easier to compare & contrast
139things. 140things.
140 141
@@ -144,7 +145,7 @@ but the first argument should be a pointer to the "frompc". Typically this is
144located on the stack. This allows the function to hijack the return address 145located on the stack. This allows the function to hijack the return address
145temporarily to have it point to the arch-specific function return_to_handler. 146temporarily to have it point to the arch-specific function return_to_handler.
146That function will simply call the common ftrace_return_to_handler function and 147That function will simply call the common ftrace_return_to_handler function and
147that will return the original return address with which, you can return to the 148that will return the original return address with which you can return to the
148original call site. 149original call site.
149 150
150Here is the updated mcount pseudo code: 151Here is the updated mcount pseudo code:
@@ -173,14 +174,16 @@ void ftrace_graph_caller(void)
173 174
174 unsigned long *frompc = &...; 175 unsigned long *frompc = &...;
175 unsigned long selfpc = <return address> - MCOUNT_INSN_SIZE; 176 unsigned long selfpc = <return address> - MCOUNT_INSN_SIZE;
176 prepare_ftrace_return(frompc, selfpc); 177 /* passing frame pointer up is optional -- see below */
178 prepare_ftrace_return(frompc, selfpc, frame_pointer);
177 179
178 /* restore all state needed by the ABI */ 180 /* restore all state needed by the ABI */
179} 181}
180#endif 182#endif
181 183
182For information on how to implement prepare_ftrace_return(), simply look at 184For information on how to implement prepare_ftrace_return(), simply look at the
183the x86 version. The only architecture-specific piece in it is the setup of 185x86 version (the frame pointer passing is optional; see the next section for
186more information). The only architecture-specific piece in it is the setup of
184the fault recovery table (the asm(...) code). The rest should be the same 187the fault recovery table (the asm(...) code). The rest should be the same
185across architectures. 188across architectures.
186 189
@@ -205,6 +208,23 @@ void return_to_handler(void)
205#endif 208#endif
206 209
207 210
211HAVE_FUNCTION_GRAPH_FP_TEST
212---------------------------
213
214An arch may pass in a unique value (frame pointer) to both the entering and
215exiting of a function. On exit, the value is compared and if it does not
216match, then it will panic the kernel. This is largely a sanity check for bad
217code generation with gcc. If gcc for your port sanely updates the frame
218pointer under different opitmization levels, then ignore this option.
219
220However, adding support for it isn't terribly difficult. In your assembly code
221that calls prepare_ftrace_return(), pass the frame pointer as the 3rd argument.
222Then in the C version of that function, do what the x86 port does and pass it
223along to ftrace_push_return_trace() instead of a stub value of 0.
224
225Similarly, when you call ftrace_return_to_handler(), pass it the frame pointer.
226
227
208HAVE_FTRACE_NMI_ENTER 228HAVE_FTRACE_NMI_ENTER
209--------------------- 229---------------------
210 230
diff --git a/Documentation/trace/ftrace.txt b/Documentation/trace/ftrace.txt
index 8179692fbb90..bab3040da548 100644
--- a/Documentation/trace/ftrace.txt
+++ b/Documentation/trace/ftrace.txt
@@ -1625,7 +1625,7 @@ If I am only interested in sys_nanosleep and hrtimer_interrupt:
1625 1625
1626 # echo sys_nanosleep hrtimer_interrupt \ 1626 # echo sys_nanosleep hrtimer_interrupt \
1627 > set_ftrace_filter 1627 > set_ftrace_filter
1628 # echo ftrace > current_tracer 1628 # echo function > current_tracer
1629 # echo 1 > tracing_enabled 1629 # echo 1 > tracing_enabled
1630 # usleep 1 1630 # usleep 1
1631 # echo 0 > tracing_enabled 1631 # echo 0 > tracing_enabled
diff --git a/Documentation/trace/mmiotrace.txt b/Documentation/trace/mmiotrace.txt
index 162effbfbdec..664e7386d89e 100644
--- a/Documentation/trace/mmiotrace.txt
+++ b/Documentation/trace/mmiotrace.txt
@@ -44,7 +44,8 @@ Check for lost events.
44Usage 44Usage
45----- 45-----
46 46
47Make sure debugfs is mounted to /sys/kernel/debug. If not, (requires root privileges) 47Make sure debugfs is mounted to /sys/kernel/debug.
48If not (requires root privileges):
48$ mount -t debugfs debugfs /sys/kernel/debug 49$ mount -t debugfs debugfs /sys/kernel/debug
49 50
50Check that the driver you are about to trace is not loaded. 51Check that the driver you are about to trace is not loaded.
@@ -91,7 +92,7 @@ $ dmesg > dmesg.txt
91$ tar zcf pciid-nick-mmiotrace.tar.gz mydump.txt lspci.txt dmesg.txt 92$ tar zcf pciid-nick-mmiotrace.tar.gz mydump.txt lspci.txt dmesg.txt
92and then send the .tar.gz file. The trace compresses considerably. Replace 93and then send the .tar.gz file. The trace compresses considerably. Replace
93"pciid" and "nick" with the PCI ID or model name of your piece of hardware 94"pciid" and "nick" with the PCI ID or model name of your piece of hardware
94under investigation and your nick name. 95under investigation and your nickname.
95 96
96 97
97How Mmiotrace Works 98How Mmiotrace Works
@@ -100,7 +101,7 @@ How Mmiotrace Works
100Access to hardware IO-memory is gained by mapping addresses from PCI bus by 101Access to hardware IO-memory is gained by mapping addresses from PCI bus by
101calling one of the ioremap_*() functions. Mmiotrace is hooked into the 102calling one of the ioremap_*() functions. Mmiotrace is hooked into the
102__ioremap() function and gets called whenever a mapping is created. Mapping is 103__ioremap() function and gets called whenever a mapping is created. Mapping is
103an event that is recorded into the trace log. Note, that ISA range mappings 104an event that is recorded into the trace log. Note that ISA range mappings
104are not caught, since the mapping always exists and is returned directly. 105are not caught, since the mapping always exists and is returned directly.
105 106
106MMIO accesses are recorded via page faults. Just before __ioremap() returns, 107MMIO accesses are recorded via page faults. Just before __ioremap() returns,
@@ -122,11 +123,11 @@ Trace Log Format
122---------------- 123----------------
123 124
124The raw log is text and easily filtered with e.g. grep and awk. One record is 125The raw log is text and easily filtered with e.g. grep and awk. One record is
125one line in the log. A record starts with a keyword, followed by keyword 126one line in the log. A record starts with a keyword, followed by keyword-
126dependant arguments. Arguments are separated by a space, or continue until the 127dependent arguments. Arguments are separated by a space, or continue until the
127end of line. The format for version 20070824 is as follows: 128end of line. The format for version 20070824 is as follows:
128 129
129Explanation Keyword Space separated arguments 130Explanation Keyword Space-separated arguments
130--------------------------------------------------------------------------- 131---------------------------------------------------------------------------
131 132
132read event R width, timestamp, map id, physical, value, PC, PID 133read event R width, timestamp, map id, physical, value, PC, PID
@@ -136,7 +137,7 @@ iounmap event UNMAP timestamp, map id, PC, PID
136marker MARK timestamp, text 137marker MARK timestamp, text
137version VERSION the string "20070824" 138version VERSION the string "20070824"
138info for reader LSPCI one line from lspci -v 139info for reader LSPCI one line from lspci -v
139PCI address map PCIDEV space separated /proc/bus/pci/devices data 140PCI address map PCIDEV space-separated /proc/bus/pci/devices data
140unk. opcode UNKNOWN timestamp, map id, physical, data, PC, PID 141unk. opcode UNKNOWN timestamp, map id, physical, data, PC, PID
141 142
142Timestamp is in seconds with decimals. Physical is a PCI bus address, virtual 143Timestamp is in seconds with decimals. Physical is a PCI bus address, virtual
diff --git a/Documentation/trace/ring-buffer-design.txt b/Documentation/trace/ring-buffer-design.txt
index 5b1d23d604c5..d299ff31df57 100644
--- a/Documentation/trace/ring-buffer-design.txt
+++ b/Documentation/trace/ring-buffer-design.txt
@@ -33,9 +33,9 @@ head_page - a pointer to the page that the reader will use next
33 33
34tail_page - a pointer to the page that will be written to next 34tail_page - a pointer to the page that will be written to next
35 35
36commit_page - a pointer to the page with the last finished non nested write. 36commit_page - a pointer to the page with the last finished non-nested write.
37 37
38cmpxchg - hardware assisted atomic transaction that performs the following: 38cmpxchg - hardware-assisted atomic transaction that performs the following:
39 39
40 A = B iff previous A == C 40 A = B iff previous A == C
41 41
@@ -52,15 +52,15 @@ The Generic Ring Buffer
52The ring buffer can be used in either an overwrite mode or in 52The ring buffer can be used in either an overwrite mode or in
53producer/consumer mode. 53producer/consumer mode.
54 54
55Producer/consumer mode is where the producer were to fill up the 55Producer/consumer mode is where if the producer were to fill up the
56buffer before the consumer could free up anything, the producer 56buffer before the consumer could free up anything, the producer
57will stop writing to the buffer. This will lose most recent events. 57will stop writing to the buffer. This will lose most recent events.
58 58
59Overwrite mode is where the produce were to fill up the buffer 59Overwrite mode is where if the producer were to fill up the buffer
60before the consumer could free up anything, the producer will 60before the consumer could free up anything, the producer will
61overwrite the older data. This will lose the oldest events. 61overwrite the older data. This will lose the oldest events.
62 62
63No two writers can write at the same time (on the same per cpu buffer), 63No two writers can write at the same time (on the same per-cpu buffer),
64but a writer may interrupt another writer, but it must finish writing 64but a writer may interrupt another writer, but it must finish writing
65before the previous writer may continue. This is very important to the 65before the previous writer may continue. This is very important to the
66algorithm. The writers act like a "stack". The way interrupts works 66algorithm. The writers act like a "stack". The way interrupts works
@@ -79,16 +79,16 @@ the interrupt doing a write as well.
79 79
80Readers can happen at any time. But no two readers may run at the 80Readers can happen at any time. But no two readers may run at the
81same time, nor can a reader preempt/interrupt another reader. A reader 81same time, nor can a reader preempt/interrupt another reader. A reader
82can not preempt/interrupt a writer, but it may read/consume from the 82cannot preempt/interrupt a writer, but it may read/consume from the
83buffer at the same time as a writer is writing, but the reader must be 83buffer at the same time as a writer is writing, but the reader must be
84on another processor to do so. A reader may read on its own processor 84on another processor to do so. A reader may read on its own processor
85and can be preempted by a writer. 85and can be preempted by a writer.
86 86
87A writer can preempt a reader, but a reader can not preempt a writer. 87A writer can preempt a reader, but a reader cannot preempt a writer.
88But a reader can read the buffer at the same time (on another processor) 88But a reader can read the buffer at the same time (on another processor)
89as a writer. 89as a writer.
90 90
91The ring buffer is made up of a list of pages held together by a link list. 91The ring buffer is made up of a list of pages held together by a linked list.
92 92
93At initialization a reader page is allocated for the reader that is not 93At initialization a reader page is allocated for the reader that is not
94part of the ring buffer. 94part of the ring buffer.
@@ -102,7 +102,7 @@ the head page.
102 102
103The reader has its own page to use. At start up time, this page is 103The reader has its own page to use. At start up time, this page is
104allocated but is not attached to the list. When the reader wants 104allocated but is not attached to the list. When the reader wants
105to read from the buffer, if its page is empty (like it is on start up) 105to read from the buffer, if its page is empty (like it is on start-up),
106it will swap its page with the head_page. The old reader page will 106it will swap its page with the head_page. The old reader page will
107become part of the ring buffer and the head_page will be removed. 107become part of the ring buffer and the head_page will be removed.
108The page after the inserted page (old reader_page) will become the 108The page after the inserted page (old reader_page) will become the
@@ -206,7 +206,7 @@ The main pointers:
206 206
207 commit page - the page that last finished a write. 207 commit page - the page that last finished a write.
208 208
209The commit page only is updated by the outer most writer in the 209The commit page only is updated by the outermost writer in the
210writer stack. A writer that preempts another writer will not move the 210writer stack. A writer that preempts another writer will not move the
211commit page. 211commit page.
212 212
@@ -281,7 +281,7 @@ with the previous write.
281The commit pointer points to the last write location that was 281The commit pointer points to the last write location that was
282committed without preempting another write. When a write that 282committed without preempting another write. When a write that
283preempted another write is committed, it only becomes a pending commit 283preempted another write is committed, it only becomes a pending commit
284and will not be a full commit till all writes have been committed. 284and will not be a full commit until all writes have been committed.
285 285
286The commit page points to the page that has the last full commit. 286The commit page points to the page that has the last full commit.
287The tail page points to the page with the last write (before 287The tail page points to the page with the last write (before
@@ -292,7 +292,7 @@ be several pages ahead. If the tail page catches up to the commit
292page then no more writes may take place (regardless of the mode 292page then no more writes may take place (regardless of the mode
293of the ring buffer: overwrite and produce/consumer). 293of the ring buffer: overwrite and produce/consumer).
294 294
295The order of pages are: 295The order of pages is:
296 296
297 head page 297 head page
298 commit page 298 commit page
@@ -311,7 +311,7 @@ Possible scenario:
311There is a special case that the head page is after either the commit page 311There is a special case that the head page is after either the commit page
312and possibly the tail page. That is when the commit (and tail) page has been 312and possibly the tail page. That is when the commit (and tail) page has been
313swapped with the reader page. This is because the head page is always 313swapped with the reader page. This is because the head page is always
314part of the ring buffer, but the reader page is not. When ever there 314part of the ring buffer, but the reader page is not. Whenever there
315has been less than a full page that has been committed inside the ring buffer, 315has been less than a full page that has been committed inside the ring buffer,
316and a reader swaps out a page, it will be swapping out the commit page. 316and a reader swaps out a page, it will be swapping out the commit page.
317 317
@@ -338,7 +338,7 @@ and a reader swaps out a page, it will be swapping out the commit page.
338In this case, the head page will not move when the tail and commit 338In this case, the head page will not move when the tail and commit
339move back into the ring buffer. 339move back into the ring buffer.
340 340
341The reader can not swap a page into the ring buffer if the commit page 341The reader cannot swap a page into the ring buffer if the commit page
342is still on that page. If the read meets the last commit (real commit 342is still on that page. If the read meets the last commit (real commit
343not pending or reserved), then there is nothing more to read. 343not pending or reserved), then there is nothing more to read.
344The buffer is considered empty until another full commit finishes. 344The buffer is considered empty until another full commit finishes.
@@ -395,7 +395,7 @@ The main idea behind the lockless algorithm is to combine the moving
395of the head_page pointer with the swapping of pages with the reader. 395of the head_page pointer with the swapping of pages with the reader.
396State flags are placed inside the pointer to the page. To do this, 396State flags are placed inside the pointer to the page. To do this,
397each page must be aligned in memory by 4 bytes. This will allow the 2 397each page must be aligned in memory by 4 bytes. This will allow the 2
398least significant bits of the address to be used as flags. Since 398least significant bits of the address to be used as flags, since
399they will always be zero for the address. To get the address, 399they will always be zero for the address. To get the address,
400simply mask out the flags. 400simply mask out the flags.
401 401
@@ -460,7 +460,7 @@ When the reader tries to swap the page with the ring buffer, it
460will also use cmpxchg. If the flag bit in the pointer to the 460will also use cmpxchg. If the flag bit in the pointer to the
461head page does not have the HEADER flag set, the compare will fail 461head page does not have the HEADER flag set, the compare will fail
462and the reader will need to look for the new head page and try again. 462and the reader will need to look for the new head page and try again.
463Note, the flag UPDATE and HEADER are never set at the same time. 463Note, the flags UPDATE and HEADER are never set at the same time.
464 464
465The reader swaps the reader page as follows: 465The reader swaps the reader page as follows:
466 466
@@ -539,7 +539,7 @@ updated to the reader page.
539 | +-----------------------------+ | 539 | +-----------------------------+ |
540 +------------------------------------+ 540 +------------------------------------+
541 541
542Another important point. The page that the reader page points back to 542Another important point: The page that the reader page points back to
543by its previous pointer (the one that now points to the new head page) 543by its previous pointer (the one that now points to the new head page)
544never points back to the reader page. That is because the reader page is 544never points back to the reader page. That is because the reader page is
545not part of the ring buffer. Traversing the ring buffer via the next pointers 545not part of the ring buffer. Traversing the ring buffer via the next pointers
@@ -572,7 +572,7 @@ not be able to swap the head page from the buffer, nor will it be able to
572move the head page, until the writer is finished with the move. 572move the head page, until the writer is finished with the move.
573 573
574This eliminates any races that the reader can have on the writer. The reader 574This eliminates any races that the reader can have on the writer. The reader
575must spin, and this is why the reader can not preempt the writer. 575must spin, and this is why the reader cannot preempt the writer.
576 576
577 tail page 577 tail page
578 | 578 |
@@ -659,9 +659,9 @@ before pushing the head page. If it is, then it can be assumed that the
659tail page wrapped the buffer, and we must drop new writes. 659tail page wrapped the buffer, and we must drop new writes.
660 660
661This is not a race condition, because the commit page can only be moved 661This is not a race condition, because the commit page can only be moved
662by the outter most writer (the writer that was preempted). 662by the outermost writer (the writer that was preempted).
663This means that the commit will not move while a writer is moving the 663This means that the commit will not move while a writer is moving the
664tail page. The reader can not swap the reader page if it is also being 664tail page. The reader cannot swap the reader page if it is also being
665used as the commit page. The reader can simply check that the commit 665used as the commit page. The reader can simply check that the commit
666is off the reader page. Once the commit page leaves the reader page 666is off the reader page. Once the commit page leaves the reader page
667it will never go back on it unless a reader does another swap with the 667it will never go back on it unless a reader does another swap with the
@@ -733,7 +733,7 @@ The write converts the head page pointer to UPDATE.
733--->| |<---| |<---| |<---| |<--- 733--->| |<---| |<---| |<---| |<---
734 +---+ +---+ +---+ +---+ 734 +---+ +---+ +---+ +---+
735 735
736But if a nested writer preempts here. It will see that the next 736But if a nested writer preempts here, it will see that the next
737page is a head page, but it is also nested. It will detect that 737page is a head page, but it is also nested. It will detect that
738it is nested and will save that information. The detection is the 738it is nested and will save that information. The detection is the
739fact that it sees the UPDATE flag instead of a HEADER or NORMAL 739fact that it sees the UPDATE flag instead of a HEADER or NORMAL
@@ -761,7 +761,7 @@ to NORMAL.
761--->| |<---| |<---| |<---| |<--- 761--->| |<---| |<---| |<---| |<---
762 +---+ +---+ +---+ +---+ 762 +---+ +---+ +---+ +---+
763 763
764After the nested writer finishes, the outer most writer will convert 764After the nested writer finishes, the outermost writer will convert
765the UPDATE pointer to NORMAL. 765the UPDATE pointer to NORMAL.
766 766
767 767
@@ -812,7 +812,7 @@ head page.
812 +---+ +---+ +---+ +---+ 812 +---+ +---+ +---+ +---+
813 813
814The nested writer moves the tail page forward. But does not set the old 814The nested writer moves the tail page forward. But does not set the old
815update page to NORMAL because it is not the outer most writer. 815update page to NORMAL because it is not the outermost writer.
816 816
817 tail page 817 tail page
818 | 818 |
@@ -892,7 +892,7 @@ It will return to the first writer.
892--->| |<---| |<---| |<---| |<--- 892--->| |<---| |<---| |<---| |<---
893 +---+ +---+ +---+ +---+ 893 +---+ +---+ +---+ +---+
894 894
895The first writer can not know atomically test if the tail page moved 895The first writer cannot know atomically if the tail page moved
896while it updates the HEAD page. It will then update the head page to 896while it updates the HEAD page. It will then update the head page to
897what it thinks is the new head page. 897what it thinks is the new head page.
898 898
@@ -923,9 +923,9 @@ if the tail page is either where it use to be or on the next page:
923--->| |<---| |<---| |<---| |<--- 923--->| |<---| |<---| |<---| |<---
924 +---+ +---+ +---+ +---+ 924 +---+ +---+ +---+ +---+
925 925
926If tail page != A and tail page does not equal B, then it must reset the 926If tail page != A and tail page != B, then it must reset the pointer
927pointer back to NORMAL. The fact that it only needs to worry about 927back to NORMAL. The fact that it only needs to worry about nested
928nested writers, it only needs to check this after setting the HEAD page. 928writers means that it only needs to check this after setting the HEAD page.
929 929
930 930
931(first writer) 931(first writer)
@@ -939,7 +939,7 @@ nested writers, it only needs to check this after setting the HEAD page.
939 +---+ +---+ +---+ +---+ 939 +---+ +---+ +---+ +---+
940 940
941Now the writer can update the head page. This is also why the head page must 941Now the writer can update the head page. This is also why the head page must
942remain in UPDATE and only reset by the outer most writer. This prevents 942remain in UPDATE and only reset by the outermost writer. This prevents
943the reader from seeing the incorrect head page. 943the reader from seeing the incorrect head page.
944 944
945 945
diff --git a/Documentation/trace/tracepoint-analysis.txt b/Documentation/trace/tracepoint-analysis.txt
index 5eb4e487e667..87bee3c129ba 100644
--- a/Documentation/trace/tracepoint-analysis.txt
+++ b/Documentation/trace/tracepoint-analysis.txt
@@ -10,8 +10,8 @@ Tracepoints (see Documentation/trace/tracepoints.txt) can be used without
10creating custom kernel modules to register probe functions using the event 10creating custom kernel modules to register probe functions using the event
11tracing infrastructure. 11tracing infrastructure.
12 12
13Simplistically, tracepoints will represent an important event that when can 13Simplistically, tracepoints represent important events that can be
14be taken in conjunction with other tracepoints to build a "Big Picture" of 14taken in conjunction with other tracepoints to build a "Big Picture" of
15what is going on within the system. There are a large number of methods for 15what is going on within the system. There are a large number of methods for
16gathering and interpreting these events. Lacking any current Best Practises, 16gathering and interpreting these events. Lacking any current Best Practises,
17this document describes some of the methods that can be used. 17this document describes some of the methods that can be used.
@@ -33,12 +33,12 @@ calling
33 33
34will give a fair indication of the number of events available. 34will give a fair indication of the number of events available.
35 35
362.2 PCL 362.2 PCL (Performance Counters for Linux)
37------- 37-------
38 38
39Discovery and enumeration of all counters and events, including tracepoints 39Discovery and enumeration of all counters and events, including tracepoints,
40are available with the perf tool. Getting a list of available events is a 40are available with the perf tool. Getting a list of available events is a
41simple case of 41simple case of:
42 42
43 $ perf list 2>&1 | grep Tracepoint 43 $ perf list 2>&1 | grep Tracepoint
44 ext4:ext4_free_inode [Tracepoint event] 44 ext4:ext4_free_inode [Tracepoint event]
@@ -49,19 +49,19 @@ simple case of
49 [ .... remaining output snipped .... ] 49 [ .... remaining output snipped .... ]
50 50
51 51
522. Enabling Events 523. Enabling Events
53================== 53==================
54 54
552.1 System-Wide Event Enabling 553.1 System-Wide Event Enabling
56------------------------------ 56------------------------------
57 57
58See Documentation/trace/events.txt for a proper description on how events 58See Documentation/trace/events.txt for a proper description on how events
59can be enabled system-wide. A short example of enabling all events related 59can be enabled system-wide. A short example of enabling all events related
60to page allocation would look something like 60to page allocation would look something like:
61 61
62 $ for i in `find /sys/kernel/debug/tracing/events -name "enable" | grep mm_`; do echo 1 > $i; done 62 $ for i in `find /sys/kernel/debug/tracing/events -name "enable" | grep mm_`; do echo 1 > $i; done
63 63
642.2 System-Wide Event Enabling with SystemTap 643.2 System-Wide Event Enabling with SystemTap
65--------------------------------------------- 65---------------------------------------------
66 66
67In SystemTap, tracepoints are accessible using the kernel.trace() function 67In SystemTap, tracepoints are accessible using the kernel.trace() function
@@ -86,7 +86,7 @@ were allocating the pages.
86 print_count() 86 print_count()
87 } 87 }
88 88
892.3 System-Wide Event Enabling with PCL 893.3 System-Wide Event Enabling with PCL
90--------------------------------------- 90---------------------------------------
91 91
92By specifying the -a switch and analysing sleep, the system-wide events 92By specifying the -a switch and analysing sleep, the system-wide events
@@ -107,16 +107,16 @@ for a duration of time can be examined.
107Similarly, one could execute a shell and exit it as desired to get a report 107Similarly, one could execute a shell and exit it as desired to get a report
108at that point. 108at that point.
109 109
1102.4 Local Event Enabling 1103.4 Local Event Enabling
111------------------------ 111------------------------
112 112
113Documentation/trace/ftrace.txt describes how to enable events on a per-thread 113Documentation/trace/ftrace.txt describes how to enable events on a per-thread
114basis using set_ftrace_pid. 114basis using set_ftrace_pid.
115 115
1162.5 Local Event Enablement with PCL 1163.5 Local Event Enablement with PCL
117----------------------------------- 117-----------------------------------
118 118
119Events can be activate and tracked for the duration of a process on a local 119Events can be activated and tracked for the duration of a process on a local
120basis using PCL such as follows. 120basis using PCL such as follows.
121 121
122 $ perf stat -e kmem:mm_page_alloc -e kmem:mm_page_free_direct \ 122 $ perf stat -e kmem:mm_page_alloc -e kmem:mm_page_free_direct \
@@ -131,18 +131,18 @@ basis using PCL such as follows.
131 131
132 0.973913387 seconds time elapsed 132 0.973913387 seconds time elapsed
133 133
1343. Event Filtering 1344. Event Filtering
135================== 135==================
136 136
137Documentation/trace/ftrace.txt covers in-depth how to filter events in 137Documentation/trace/ftrace.txt covers in-depth how to filter events in
138ftrace. Obviously using grep and awk of trace_pipe is an option as well 138ftrace. Obviously using grep and awk of trace_pipe is an option as well
139as any script reading trace_pipe. 139as any script reading trace_pipe.
140 140
1414. Analysing Event Variances with PCL 1415. Analysing Event Variances with PCL
142===================================== 142=====================================
143 143
144Any workload can exhibit variances between runs and it can be important 144Any workload can exhibit variances between runs and it can be important
145to know what the standard deviation in. By and large, this is left to the 145to know what the standard deviation is. By and large, this is left to the
146performance analyst to do it by hand. In the event that the discrete event 146performance analyst to do it by hand. In the event that the discrete event
147occurrences are useful to the performance analyst, then perf can be used. 147occurrences are useful to the performance analyst, then perf can be used.
148 148
@@ -166,7 +166,7 @@ In the event that some higher-level event is required that depends on some
166aggregation of discrete events, then a script would need to be developed. 166aggregation of discrete events, then a script would need to be developed.
167 167
168Using --repeat, it is also possible to view how events are fluctuating over 168Using --repeat, it is also possible to view how events are fluctuating over
169time on a system wide basis using -a and sleep. 169time on a system-wide basis using -a and sleep.
170 170
171 $ perf stat -e kmem:mm_page_alloc -e kmem:mm_page_free_direct \ 171 $ perf stat -e kmem:mm_page_alloc -e kmem:mm_page_free_direct \
172 -e kmem:mm_pagevec_free \ 172 -e kmem:mm_pagevec_free \
@@ -180,7 +180,7 @@ time on a system wide basis using -a and sleep.
180 180
181 1.002251757 seconds time elapsed ( +- 0.005% ) 181 1.002251757 seconds time elapsed ( +- 0.005% )
182 182
1835. Higher-Level Analysis with Helper Scripts 1836. Higher-Level Analysis with Helper Scripts
184============================================ 184============================================
185 185
186When events are enabled the events that are triggering can be read from 186When events are enabled the events that are triggering can be read from
@@ -190,11 +190,11 @@ be gathered on-line as appropriate. Examples of post-processing might include
190 190
191 o Reading information from /proc for the PID that triggered the event 191 o Reading information from /proc for the PID that triggered the event
192 o Deriving a higher-level event from a series of lower-level events. 192 o Deriving a higher-level event from a series of lower-level events.
193 o Calculate latencies between two events 193 o Calculating latencies between two events
194 194
195Documentation/trace/postprocess/trace-pagealloc-postprocess.pl is an example 195Documentation/trace/postprocess/trace-pagealloc-postprocess.pl is an example
196script that can read trace_pipe from STDIN or a copy of a trace. When used 196script that can read trace_pipe from STDIN or a copy of a trace. When used
197on-line, it can be interrupted once to generate a report without existing 197on-line, it can be interrupted once to generate a report without exiting
198and twice to exit. 198and twice to exit.
199 199
200Simplistically, the script just reads STDIN and counts up events but it 200Simplistically, the script just reads STDIN and counts up events but it
@@ -212,12 +212,12 @@ also can do more such as
212 processes, the parent process responsible for creating all the helpers 212 processes, the parent process responsible for creating all the helpers
213 can be identified 213 can be identified
214 214
2156. Lower-Level Analysis with PCL 2157. Lower-Level Analysis with PCL
216================================ 216================================
217 217
218There may also be a requirement to identify what functions with a program 218There may also be a requirement to identify what functions within a program
219were generating events within the kernel. To begin this sort of analysis, the 219were generating events within the kernel. To begin this sort of analysis, the
220data must be recorded. At the time of writing, this required root 220data must be recorded. At the time of writing, this required root:
221 221
222 $ perf record -c 1 \ 222 $ perf record -c 1 \
223 -e kmem:mm_page_alloc -e kmem:mm_page_free_direct \ 223 -e kmem:mm_page_alloc -e kmem:mm_page_free_direct \
@@ -253,11 +253,11 @@ perf report.
253 # (For more details, try: perf report --sort comm,dso,symbol) 253 # (For more details, try: perf report --sort comm,dso,symbol)
254 # 254 #
255 255
256According to this, the vast majority of events occured triggered on events 256According to this, the vast majority of events triggered on events
257within the VDSO. With simple binaries, this will often be the case so lets 257within the VDSO. With simple binaries, this will often be the case so let's
258take a slightly different example. In the course of writing this, it was 258take a slightly different example. In the course of writing this, it was
259noticed that X was generating an insane amount of page allocations so lets look 259noticed that X was generating an insane amount of page allocations so let's look
260at it 260at it:
261 261
262 $ perf record -c 1 -f \ 262 $ perf record -c 1 -f \
263 -e kmem:mm_page_alloc -e kmem:mm_page_free_direct \ 263 -e kmem:mm_page_alloc -e kmem:mm_page_free_direct \
@@ -280,8 +280,8 @@ This was interrupted after a few seconds and
280 # (For more details, try: perf report --sort comm,dso,symbol) 280 # (For more details, try: perf report --sort comm,dso,symbol)
281 # 281 #
282 282
283So, almost half of the events are occuring in a library. To get an idea which 283So, almost half of the events are occurring in a library. To get an idea which
284symbol. 284symbol:
285 285
286 $ perf report --sort comm,dso,symbol 286 $ perf report --sort comm,dso,symbol
287 # Samples: 27666 287 # Samples: 27666
@@ -297,7 +297,7 @@ symbol.
297 0.01% Xorg /opt/gfx-test/lib/libpixman-1.so.0.13.1 [.] get_fast_path 297 0.01% Xorg /opt/gfx-test/lib/libpixman-1.so.0.13.1 [.] get_fast_path
298 0.00% Xorg [kernel] [k] ftrace_trace_userstack 298 0.00% Xorg [kernel] [k] ftrace_trace_userstack
299 299
300To see where within the function pixmanFillsse2 things are going wrong 300To see where within the function pixmanFillsse2 things are going wrong:
301 301
302 $ perf annotate pixmanFillsse2 302 $ perf annotate pixmanFillsse2
303 [ ... ] 303 [ ... ]
diff --git a/Documentation/vgaarbiter.txt b/Documentation/vgaarbiter.txt
index 987f9b0a5ece..43a9b0694fdd 100644
--- a/Documentation/vgaarbiter.txt
+++ b/Documentation/vgaarbiter.txt
@@ -103,7 +103,7 @@ I.2 libpciaccess
103---------------- 103----------------
104 104
105To use the vga arbiter char device it was implemented an API inside the 105To use the vga arbiter char device it was implemented an API inside the
106libpciaccess library. One fieldd was added to struct pci_device (each device 106libpciaccess library. One field was added to struct pci_device (each device
107on the system): 107on the system):
108 108
109 /* the type of resource decoded by the device */ 109 /* the type of resource decoded by the device */
diff --git a/MAINTAINERS b/MAINTAINERS
index c22d597e6ace..2533fc45a44a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -410,9 +410,8 @@ F: drivers/i2c/busses/i2c-ali1563.c
410 410
411ALPHA PORT 411ALPHA PORT
412M: Richard Henderson <rth@twiddle.net> 412M: Richard Henderson <rth@twiddle.net>
413S: Odd Fixes for 2.4; Maintained for 2.6.
414M: Ivan Kokshaysky <ink@jurassic.park.msu.ru> 413M: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
415S: Maintained for 2.4; PCI support for 2.6. 414M: Matt Turner <mattst88@gmail.com>
416L: linux-alpha@vger.kernel.org 415L: linux-alpha@vger.kernel.org
417F: arch/alpha/ 416F: arch/alpha/
418 417
@@ -617,10 +616,10 @@ M: Richard Purdie <rpurdie@rpsys.net>
617S: Maintained 616S: Maintained
618 617
619ARM/CORTINA SYSTEMS GEMINI ARM ARCHITECTURE 618ARM/CORTINA SYSTEMS GEMINI ARM ARCHITECTURE
620M: Paulius Zaleckas <paulius.zaleckas@teltonika.lt> 619M: Paulius Zaleckas <paulius.zaleckas@gmail.com>
621L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 620L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
622T: git git://gitorious.org/linux-gemini/mainline.git 621T: git git://gitorious.org/linux-gemini/mainline.git
623S: Maintained 622S: Odd Fixes
624F: arch/arm/mach-gemini/ 623F: arch/arm/mach-gemini/
625 624
626ARM/EBSA110 MACHINE SUPPORT 625ARM/EBSA110 MACHINE SUPPORT
@@ -642,9 +641,9 @@ T: topgit git://git.openezx.org/openezx.git
642F: arch/arm/mach-pxa/ezx.c 641F: arch/arm/mach-pxa/ezx.c
643 642
644ARM/FARADAY FA526 PORT 643ARM/FARADAY FA526 PORT
645M: Paulius Zaleckas <paulius.zaleckas@teltonika.lt> 644M: Paulius Zaleckas <paulius.zaleckas@gmail.com>
646L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 645L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
647S: Maintained 646S: Odd Fixes
648F: arch/arm/mm/*-fa* 647F: arch/arm/mm/*-fa*
649 648
650ARM/FOOTBRIDGE ARCHITECTURE 649ARM/FOOTBRIDGE ARCHITECTURE
@@ -988,7 +987,6 @@ F: drivers/platform/x86/asus-laptop.c
988 987
989ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT) API 988ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT) API
990M: Dan Williams <dan.j.williams@intel.com> 989M: Dan Williams <dan.j.williams@intel.com>
991M: Maciej Sosnowski <maciej.sosnowski@intel.com>
992W: http://sourceforge.net/projects/xscaleiop 990W: http://sourceforge.net/projects/xscaleiop
993S: Supported 991S: Supported
994F: Documentation/crypto/async-tx-api.txt 992F: Documentation/crypto/async-tx-api.txt
@@ -1638,9 +1636,8 @@ S: Maintained
1638F: sound/pci/cs5535audio/ 1636F: sound/pci/cs5535audio/
1639 1637
1640CX18 VIDEO4LINUX DRIVER 1638CX18 VIDEO4LINUX DRIVER
1641M: Hans Verkuil <hverkuil@xs4all.nl>
1642M: Andy Walls <awalls@radix.net> 1639M: Andy Walls <awalls@radix.net>
1643L: ivtv-devel@ivtvdriver.org 1640L: ivtv-devel@ivtvdriver.org (moderated for non-subscribers)
1644L: linux-media@vger.kernel.org 1641L: linux-media@vger.kernel.org
1645T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 1642T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
1646W: http://linuxtv.org 1643W: http://linuxtv.org
@@ -1736,10 +1733,9 @@ F: include/linux/tfrc.h
1736F: net/dccp/ 1733F: net/dccp/
1737 1734
1738DECnet NETWORK LAYER 1735DECnet NETWORK LAYER
1739M: Christine Caulfield <christine.caulfield@googlemail.com>
1740W: http://linux-decnet.sourceforge.net 1736W: http://linux-decnet.sourceforge.net
1741L: linux-decnet-user@lists.sourceforge.net 1737L: linux-decnet-user@lists.sourceforge.net
1742S: Maintained 1738S: Orphan
1743F: Documentation/networking/decnet.txt 1739F: Documentation/networking/decnet.txt
1744F: net/decnet/ 1740F: net/decnet/
1745 1741
@@ -1825,7 +1821,6 @@ S: Supported
1825F: fs/dlm/ 1821F: fs/dlm/
1826 1822
1827DMA GENERIC OFFLOAD ENGINE SUBSYSTEM 1823DMA GENERIC OFFLOAD ENGINE SUBSYSTEM
1828M: Maciej Sosnowski <maciej.sosnowski@intel.com>
1829M: Dan Williams <dan.j.williams@intel.com> 1824M: Dan Williams <dan.j.williams@intel.com>
1830S: Supported 1825S: Supported
1831F: drivers/dma/ 1826F: drivers/dma/
@@ -2788,7 +2783,7 @@ F: arch/x86/kernel/microcode_core.c
2788F: arch/x86/kernel/microcode_intel.c 2783F: arch/x86/kernel/microcode_intel.c
2789 2784
2790INTEL I/OAT DMA DRIVER 2785INTEL I/OAT DMA DRIVER
2791M: Maciej Sosnowski <maciej.sosnowski@intel.com> 2786M: Dan Williams <dan.j.williams@intel.com>
2792S: Supported 2787S: Supported
2793F: drivers/dma/ioat* 2788F: drivers/dma/ioat*
2794 2789
@@ -2826,10 +2821,11 @@ L: netdev@vger.kernel.org
2826S: Maintained 2821S: Maintained
2827F: drivers/net/ixp2000/ 2822F: drivers/net/ixp2000/
2828 2823
2829INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/ixgb/ixgbe) 2824INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe)
2830M: Jeff Kirsher <jeffrey.t.kirsher@intel.com> 2825M: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2831M: Jesse Brandeburg <jesse.brandeburg@intel.com> 2826M: Jesse Brandeburg <jesse.brandeburg@intel.com>
2832M: Bruce Allan <bruce.w.allan@intel.com> 2827M: Bruce Allan <bruce.w.allan@intel.com>
2828M: Alex Duyck <alexander.h.duyck@intel.com>
2833M: PJ Waskiewicz <peter.p.waskiewicz.jr@intel.com> 2829M: PJ Waskiewicz <peter.p.waskiewicz.jr@intel.com>
2834M: John Ronciak <john.ronciak@intel.com> 2830M: John Ronciak <john.ronciak@intel.com>
2835L: e1000-devel@lists.sourceforge.net 2831L: e1000-devel@lists.sourceforge.net
@@ -2839,6 +2835,7 @@ F: drivers/net/e100.c
2839F: drivers/net/e1000/ 2835F: drivers/net/e1000/
2840F: drivers/net/e1000e/ 2836F: drivers/net/e1000e/
2841F: drivers/net/igb/ 2837F: drivers/net/igb/
2838F: drivers/net/igbvf/
2842F: drivers/net/ixgb/ 2839F: drivers/net/ixgb/
2843F: drivers/net/ixgbe/ 2840F: drivers/net/ixgbe/
2844 2841
@@ -3012,8 +3009,8 @@ S: Maintained
3012F: drivers/isdn/hardware/eicon/ 3009F: drivers/isdn/hardware/eicon/
3013 3010
3014IVTV VIDEO4LINUX DRIVER 3011IVTV VIDEO4LINUX DRIVER
3015M: Hans Verkuil <hverkuil@xs4all.nl> 3012M: Andy Walls <awalls@radix.net>
3016L: ivtv-devel@ivtvdriver.org 3013L: ivtv-devel@ivtvdriver.org (moderated for non-subscribers)
3017L: linux-media@vger.kernel.org 3014L: linux-media@vger.kernel.org
3018T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 3015T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
3019W: http://www.ivtvdriver.org 3016W: http://www.ivtvdriver.org
@@ -3413,8 +3410,10 @@ S: Maintained
3413F: drivers/scsi/sym53c8xx_2/ 3410F: drivers/scsi/sym53c8xx_2/
3414 3411
3415LTP (Linux Test Project) 3412LTP (Linux Test Project)
3416M: Subrata Modak <subrata@linux.vnet.ibm.com> 3413M: Rishikesh K Rajak <risrajak@linux.vnet.ibm.com>
3417M: Mike Frysinger <vapier@gentoo.org> 3414M: Garrett Cooper <yanegomi@gmail.com>
3415M: Mike Frysinger <vapier@gentoo.org>
3416M: Subrata Modak <subrata@linux.vnet.ibm.com>
3418L: ltp-list@lists.sourceforge.net (subscribers-only) 3417L: ltp-list@lists.sourceforge.net (subscribers-only)
3419W: http://ltp.sourceforge.net/ 3418W: http://ltp.sourceforge.net/
3420T: git git://git.kernel.org/pub/scm/linux/kernel/git/galak/ltp.git 3419T: git git://git.kernel.org/pub/scm/linux/kernel/git/galak/ltp.git
@@ -3490,9 +3489,9 @@ S: Maintained
3490F: drivers/net/wireless/libertas/ 3489F: drivers/net/wireless/libertas/
3491 3490
3492MARVELL MV643XX ETHERNET DRIVER 3491MARVELL MV643XX ETHERNET DRIVER
3493M: Lennert Buytenhek <buytenh@marvell.com> 3492M: Lennert Buytenhek <buytenh@wantstofly.org>
3494L: netdev@vger.kernel.org 3493L: netdev@vger.kernel.org
3495S: Supported 3494S: Maintained
3496F: drivers/net/mv643xx_eth.* 3495F: drivers/net/mv643xx_eth.*
3497F: include/linux/mv643xx.h 3496F: include/linux/mv643xx.h
3498 3497
@@ -3838,6 +3837,7 @@ NETWORKING DRIVERS
3838L: netdev@vger.kernel.org 3837L: netdev@vger.kernel.org
3839W: http://www.linuxfoundation.org/en/Net 3838W: http://www.linuxfoundation.org/en/Net
3840T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git 3839T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git
3840T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6.git
3841S: Odd Fixes 3841S: Odd Fixes
3842F: drivers/net/ 3842F: drivers/net/
3843F: include/linux/if_* 3843F: include/linux/if_*
@@ -3873,7 +3873,7 @@ F: drivers/net/ni5010.*
3873 3873
3874NILFS2 FILESYSTEM 3874NILFS2 FILESYSTEM
3875M: KONISHI Ryusuke <konishi.ryusuke@lab.ntt.co.jp> 3875M: KONISHI Ryusuke <konishi.ryusuke@lab.ntt.co.jp>
3876L: users@nilfs.org 3876L: linux-nilfs@vger.kernel.org
3877W: http://www.nilfs.org/en/ 3877W: http://www.nilfs.org/en/
3878S: Supported 3878S: Supported
3879F: Documentation/filesystems/nilfs2.txt 3879F: Documentation/filesystems/nilfs2.txt
@@ -3940,29 +3940,20 @@ S: Maintained
3940F: sound/soc/omap/ 3940F: sound/soc/omap/
3941 3941
3942OMAP FRAMEBUFFER SUPPORT 3942OMAP FRAMEBUFFER SUPPORT
3943M: Imre Deak <imre.deak@nokia.com> 3943M: Tomi Valkeinen <tomi.valkeinen@nokia.com>
3944L: linux-fbdev@vger.kernel.org 3944L: linux-fbdev@vger.kernel.org
3945L: linux-omap@vger.kernel.org 3945L: linux-omap@vger.kernel.org
3946S: Maintained 3946S: Maintained
3947F: drivers/video/omap/ 3947F: drivers/video/omap/
3948 3948
3949OMAP DISPLAY SUBSYSTEM SUPPORT (DSS2) 3949OMAP DISPLAY SUBSYSTEM and FRAMEBUFFER SUPPORT (DSS2)
3950M: Tomi Valkeinen <tomi.valkeinen@nokia.com> 3950M: Tomi Valkeinen <tomi.valkeinen@nokia.com>
3951L: linux-omap@vger.kernel.org 3951L: linux-omap@vger.kernel.org
3952L: linux-fbdev@vger.kernel.org (moderated for non-subscribers) 3952L: linux-fbdev@vger.kernel.org
3953S: Maintained 3953S: Maintained
3954F: drivers/video/omap2/dss/ 3954F: drivers/video/omap2/
3955F: drivers/video/omap2/vrfb.c
3956F: drivers/video/omap2/vram.c
3957F: Documentation/arm/OMAP/DSS 3955F: Documentation/arm/OMAP/DSS
3958 3956
3959OMAP FRAMEBUFFER SUPPORT (FOR DSS2)
3960M: Tomi Valkeinen <tomi.valkeinen@nokia.com>
3961L: linux-omap@vger.kernel.org
3962L: linux-fbdev@vger.kernel.org (moderated for non-subscribers)
3963S: Maintained
3964F: drivers/video/omap2/omapfb/
3965
3966OMAP MMC SUPPORT 3957OMAP MMC SUPPORT
3967M: Jarkko Lavinen <jarkko.lavinen@nokia.com> 3958M: Jarkko Lavinen <jarkko.lavinen@nokia.com>
3968L: linux-omap@vger.kernel.org 3959L: linux-omap@vger.kernel.org
diff --git a/Makefile b/Makefile
index c628a5cfe422..1b24895212d8 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
1VERSION = 2 1VERSION = 2
2PATCHLEVEL = 6 2PATCHLEVEL = 6
3SUBLEVEL = 33 3SUBLEVEL = 33
4EXTRAVERSION = -rc2 4EXTRAVERSION =
5NAME = Man-Eating Seals of Antiquity 5NAME = Man-Eating Seals of Antiquity
6 6
7# *DOCUMENTATION* 7# *DOCUMENTATION*
@@ -18,10 +18,9 @@ MAKEFLAGS += -rR --no-print-directory
18 18
19# Avoid funny character set dependencies 19# Avoid funny character set dependencies
20unexport LC_ALL 20unexport LC_ALL
21LC_CTYPE=C
22LC_COLLATE=C 21LC_COLLATE=C
23LC_NUMERIC=C 22LC_NUMERIC=C
24export LC_CTYPE LC_COLLATE LC_NUMERIC 23export LC_COLLATE LC_NUMERIC
25 24
26# We are using a recursive build, so we need to do a little thinking 25# We are using a recursive build, so we need to do a little thinking
27# to get the ordering right. 26# to get the ordering right.
diff --git a/arch/alpha/include/asm/topology.h b/arch/alpha/include/asm/topology.h
index 36b3a30ba0e5..9251e13e144f 100644
--- a/arch/alpha/include/asm/topology.h
+++ b/arch/alpha/include/asm/topology.h
@@ -28,6 +28,9 @@ static const struct cpumask *cpumask_of_node(int node)
28{ 28{
29 int cpu; 29 int cpu;
30 30
31 if (node == -1)
32 return cpu_all_mask;
33
31 cpumask_clear(&node_to_cpumask_map[node]); 34 cpumask_clear(&node_to_cpumask_map[node]);
32 35
33 for_each_online_cpu(cpu) { 36 for_each_online_cpu(cpu) {
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 233a222752c0..184a6bd54825 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -18,6 +18,8 @@ config ARM
18 select HAVE_KRETPROBES if (HAVE_KPROBES) 18 select HAVE_KRETPROBES if (HAVE_KPROBES)
19 select HAVE_FUNCTION_TRACER if (!XIP_KERNEL) 19 select HAVE_FUNCTION_TRACER if (!XIP_KERNEL)
20 select HAVE_GENERIC_DMA_COHERENT 20 select HAVE_GENERIC_DMA_COHERENT
21 select HAVE_KERNEL_GZIP
22 select HAVE_KERNEL_LZO
21 help 23 help
22 The ARM series is a line of low-power-consumption RISC chip designs 24 The ARM series is a line of low-power-consumption RISC chip designs
23 licensed by ARM Ltd and targeted at embedded applications and 25 licensed by ARM Ltd and targeted at embedded applications and
@@ -688,6 +690,7 @@ config ARCH_DAVINCI
688 select HAVE_IDE 690 select HAVE_IDE
689 select COMMON_CLKDEV 691 select COMMON_CLKDEV
690 select GENERIC_ALLOCATOR 692 select GENERIC_ALLOCATOR
693 select ARCH_HAS_HOLES_MEMORYMODEL
691 help 694 help
692 Support for TI's DaVinci platform. 695 Support for TI's DaVinci platform.
693 696
@@ -699,6 +702,7 @@ config ARCH_OMAP
699 select ARCH_HAS_CPUFREQ 702 select ARCH_HAS_CPUFREQ
700 select GENERIC_TIME 703 select GENERIC_TIME
701 select GENERIC_CLOCKEVENTS 704 select GENERIC_CLOCKEVENTS
705 select ARCH_HAS_HOLES_MEMORYMODEL
702 help 706 help
703 Support for TI's OMAP platform (OMAP1 and OMAP2). 707 Support for TI's OMAP platform (OMAP1 and OMAP2).
704 708
@@ -726,14 +730,26 @@ config ARCH_U8500
726 730
727endchoice 731endchoice
728 732
733source "arch/arm/mach-aaec2000/Kconfig"
734
735source "arch/arm/mach-at91/Kconfig"
736
737source "arch/arm/mach-bcmring/Kconfig"
738
729source "arch/arm/mach-clps711x/Kconfig" 739source "arch/arm/mach-clps711x/Kconfig"
730 740
741source "arch/arm/mach-davinci/Kconfig"
742
743source "arch/arm/mach-dove/Kconfig"
744
731source "arch/arm/mach-ep93xx/Kconfig" 745source "arch/arm/mach-ep93xx/Kconfig"
732 746
733source "arch/arm/mach-footbridge/Kconfig" 747source "arch/arm/mach-footbridge/Kconfig"
734 748
735source "arch/arm/mach-gemini/Kconfig" 749source "arch/arm/mach-gemini/Kconfig"
736 750
751source "arch/arm/mach-h720x/Kconfig"
752
737source "arch/arm/mach-integrator/Kconfig" 753source "arch/arm/mach-integrator/Kconfig"
738 754
739source "arch/arm/mach-iop32x/Kconfig" 755source "arch/arm/mach-iop32x/Kconfig"
@@ -748,16 +764,26 @@ source "arch/arm/mach-ixp2000/Kconfig"
748 764
749source "arch/arm/mach-ixp23xx/Kconfig" 765source "arch/arm/mach-ixp23xx/Kconfig"
750 766
767source "arch/arm/mach-kirkwood/Kconfig"
768
769source "arch/arm/mach-ks8695/Kconfig"
770
771source "arch/arm/mach-lh7a40x/Kconfig"
772
751source "arch/arm/mach-loki/Kconfig" 773source "arch/arm/mach-loki/Kconfig"
752 774
775source "arch/arm/mach-msm/Kconfig"
776
753source "arch/arm/mach-mv78xx0/Kconfig" 777source "arch/arm/mach-mv78xx0/Kconfig"
754 778
755source "arch/arm/mach-pxa/Kconfig" 779source "arch/arm/plat-mxc/Kconfig"
756source "arch/arm/plat-pxa/Kconfig"
757 780
758source "arch/arm/mach-mmp/Kconfig" 781source "arch/arm/mach-netx/Kconfig"
759 782
760source "arch/arm/mach-sa1100/Kconfig" 783source "arch/arm/mach-nomadik/Kconfig"
784source "arch/arm/plat-nomadik/Kconfig"
785
786source "arch/arm/mach-ns9xxx/Kconfig"
761 787
762source "arch/arm/plat-omap/Kconfig" 788source "arch/arm/plat-omap/Kconfig"
763 789
@@ -767,9 +793,14 @@ source "arch/arm/mach-omap2/Kconfig"
767 793
768source "arch/arm/mach-orion5x/Kconfig" 794source "arch/arm/mach-orion5x/Kconfig"
769 795
770source "arch/arm/mach-kirkwood/Kconfig" 796source "arch/arm/mach-pxa/Kconfig"
797source "arch/arm/plat-pxa/Kconfig"
771 798
772source "arch/arm/mach-dove/Kconfig" 799source "arch/arm/mach-mmp/Kconfig"
800
801source "arch/arm/mach-realview/Kconfig"
802
803source "arch/arm/mach-sa1100/Kconfig"
773 804
774source "arch/arm/plat-samsung/Kconfig" 805source "arch/arm/plat-samsung/Kconfig"
775source "arch/arm/plat-s3c24xx/Kconfig" 806source "arch/arm/plat-s3c24xx/Kconfig"
@@ -797,41 +828,14 @@ if ARCH_S5PC1XX
797source "arch/arm/mach-s5pc100/Kconfig" 828source "arch/arm/mach-s5pc100/Kconfig"
798endif 829endif
799 830
800source "arch/arm/mach-lh7a40x/Kconfig" 831source "arch/arm/mach-u300/Kconfig"
801 832
802source "arch/arm/mach-h720x/Kconfig" 833source "arch/arm/mach-ux500/Kconfig"
803 834
804source "arch/arm/mach-versatile/Kconfig" 835source "arch/arm/mach-versatile/Kconfig"
805 836
806source "arch/arm/mach-aaec2000/Kconfig"
807
808source "arch/arm/mach-realview/Kconfig"
809
810source "arch/arm/mach-at91/Kconfig"
811
812source "arch/arm/plat-mxc/Kconfig"
813
814source "arch/arm/mach-nomadik/Kconfig"
815source "arch/arm/plat-nomadik/Kconfig"
816
817source "arch/arm/mach-netx/Kconfig"
818
819source "arch/arm/mach-ns9xxx/Kconfig"
820
821source "arch/arm/mach-davinci/Kconfig"
822
823source "arch/arm/mach-ks8695/Kconfig"
824
825source "arch/arm/mach-msm/Kconfig"
826
827source "arch/arm/mach-u300/Kconfig"
828
829source "arch/arm/mach-w90x900/Kconfig" 837source "arch/arm/mach-w90x900/Kconfig"
830 838
831source "arch/arm/mach-bcmring/Kconfig"
832
833source "arch/arm/mach-ux500/Kconfig"
834
835# Definitions to make life easier 839# Definitions to make life easier
836config ARCH_ACORN 840config ARCH_ACORN
837 bool 841 bool
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index e9da08483b3c..356d702c0808 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -94,7 +94,7 @@ CFLAGS_ABI +=-funwind-tables
94endif 94endif
95 95
96ifeq ($(CONFIG_THUMB2_KERNEL),y) 96ifeq ($(CONFIG_THUMB2_KERNEL),y)
97AFLAGS_AUTOIT :=$(call as-option,-Wa$(comma)-mimplicit-it=thumb,-Wa$(comma)-mauto-it) 97AFLAGS_AUTOIT :=$(call as-option,-Wa$(comma)-mimplicit-it=always,-Wa$(comma)-mauto-it)
98AFLAGS_NOWARN :=$(call as-option,-Wa$(comma)-mno-warn-deprecated,-Wa$(comma)-W) 98AFLAGS_NOWARN :=$(call as-option,-Wa$(comma)-mno-warn-deprecated,-Wa$(comma)-W)
99CFLAGS_THUMB2 :=-mthumb $(AFLAGS_AUTOIT) $(AFLAGS_NOWARN) 99CFLAGS_THUMB2 :=-mthumb $(AFLAGS_AUTOIT) $(AFLAGS_NOWARN)
100AFLAGS_THUMB2 :=$(CFLAGS_THUMB2) -Wa$(comma)-mthumb 100AFLAGS_THUMB2 :=$(CFLAGS_THUMB2) -Wa$(comma)-mthumb
@@ -146,6 +146,7 @@ machine-$(CONFIG_ARCH_MX1) := mx1
146machine-$(CONFIG_ARCH_MX2) := mx2 146machine-$(CONFIG_ARCH_MX2) := mx2
147machine-$(CONFIG_ARCH_MX25) := mx25 147machine-$(CONFIG_ARCH_MX25) := mx25
148machine-$(CONFIG_ARCH_MX3) := mx3 148machine-$(CONFIG_ARCH_MX3) := mx3
149machine-$(CONFIG_ARCH_MXC91231) := mxc91231
149machine-$(CONFIG_ARCH_NETX) := netx 150machine-$(CONFIG_ARCH_NETX) := netx
150machine-$(CONFIG_ARCH_NOMADIK) := nomadik 151machine-$(CONFIG_ARCH_NOMADIK) := nomadik
151machine-$(CONFIG_ARCH_NS9XXX) := ns9xxx 152machine-$(CONFIG_ARCH_NS9XXX) := ns9xxx
@@ -171,12 +172,12 @@ machine-$(CONFIG_ARCH_U8500) := ux500
171machine-$(CONFIG_ARCH_VERSATILE) := versatile 172machine-$(CONFIG_ARCH_VERSATILE) := versatile
172machine-$(CONFIG_ARCH_W90X900) := w90x900 173machine-$(CONFIG_ARCH_W90X900) := w90x900
173machine-$(CONFIG_FOOTBRIDGE) := footbridge 174machine-$(CONFIG_FOOTBRIDGE) := footbridge
174machine-$(CONFIG_ARCH_MXC91231) := mxc91231
175 175
176# Platform directory name. This list is sorted alphanumerically 176# Platform directory name. This list is sorted alphanumerically
177# by CONFIG_* macro name. 177# by CONFIG_* macro name.
178plat-$(CONFIG_ARCH_MXC) := mxc 178plat-$(CONFIG_ARCH_MXC) := mxc
179plat-$(CONFIG_ARCH_OMAP) := omap 179plat-$(CONFIG_ARCH_OMAP) := omap
180plat-$(CONFIG_ARCH_STMP3XXX) := stmp3xxx
180plat-$(CONFIG_PLAT_IOP) := iop 181plat-$(CONFIG_PLAT_IOP) := iop
181plat-$(CONFIG_PLAT_NOMADIK) := nomadik 182plat-$(CONFIG_PLAT_NOMADIK) := nomadik
182plat-$(CONFIG_PLAT_ORION) := orion 183plat-$(CONFIG_PLAT_ORION) := orion
@@ -184,7 +185,6 @@ plat-$(CONFIG_PLAT_PXA) := pxa
184plat-$(CONFIG_PLAT_S3C24XX) := s3c24xx s3c samsung 185plat-$(CONFIG_PLAT_S3C24XX) := s3c24xx s3c samsung
185plat-$(CONFIG_PLAT_S3C64XX) := s3c64xx s3c samsung 186plat-$(CONFIG_PLAT_S3C64XX) := s3c64xx s3c samsung
186plat-$(CONFIG_PLAT_S5PC1XX) := s5pc1xx s3c samsung 187plat-$(CONFIG_PLAT_S5PC1XX) := s5pc1xx s3c samsung
187plat-$(CONFIG_ARCH_STMP3XXX) := stmp3xxx
188 188
189ifeq ($(CONFIG_ARCH_EBSA110),y) 189ifeq ($(CONFIG_ARCH_EBSA110),y)
190# This is what happens if you forget the IOCS16 line. 190# This is what happens if you forget the IOCS16 line.
diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
index ce39dc540085..2d4d88ba73bf 100644
--- a/arch/arm/boot/compressed/Makefile
+++ b/arch/arm/boot/compressed/Makefile
@@ -63,8 +63,12 @@ endif
63 63
64SEDFLAGS = s/TEXT_START/$(ZTEXTADDR)/;s/BSS_START/$(ZBSSADDR)/ 64SEDFLAGS = s/TEXT_START/$(ZTEXTADDR)/;s/BSS_START/$(ZBSSADDR)/
65 65
66targets := vmlinux vmlinux.lds piggy.gz piggy.o font.o font.c \ 66suffix_$(CONFIG_KERNEL_GZIP) = gzip
67 head.o misc.o $(OBJS) 67suffix_$(CONFIG_KERNEL_LZO) = lzo
68
69targets := vmlinux vmlinux.lds \
70 piggy.$(suffix_y) piggy.$(suffix_y).o \
71 font.o font.c head.o misc.o $(OBJS)
68 72
69ifeq ($(CONFIG_FUNCTION_TRACER),y) 73ifeq ($(CONFIG_FUNCTION_TRACER),y)
70ORIG_CFLAGS := $(KBUILD_CFLAGS) 74ORIG_CFLAGS := $(KBUILD_CFLAGS)
@@ -87,22 +91,34 @@ endif
87ifneq ($(PARAMS_PHYS),) 91ifneq ($(PARAMS_PHYS),)
88LDFLAGS_vmlinux += --defsym params_phys=$(PARAMS_PHYS) 92LDFLAGS_vmlinux += --defsym params_phys=$(PARAMS_PHYS)
89endif 93endif
90LDFLAGS_vmlinux += -p --no-undefined -X \ 94# ?
91 $(shell $(CC) $(KBUILD_CFLAGS) --print-libgcc-file-name) -T 95LDFLAGS_vmlinux += -p
96# Report unresolved symbol references
97LDFLAGS_vmlinux += --no-undefined
98# Delete all temporary local symbols
99LDFLAGS_vmlinux += -X
100# Next argument is a linker script
101LDFLAGS_vmlinux += -T
102
103# For __aeabi_uidivmod
104lib1funcs = $(obj)/lib1funcs.o
105
106$(obj)/lib1funcs.S: $(srctree)/arch/$(SRCARCH)/lib/lib1funcs.S FORCE
107 $(call cmd,shipped)
92 108
93# Don't allow any static data in misc.o, which 109# Don't allow any static data in misc.o, which
94# would otherwise mess up our GOT table 110# would otherwise mess up our GOT table
95CFLAGS_misc.o := -Dstatic= 111CFLAGS_misc.o := -Dstatic=
96 112
97$(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.o \ 113$(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.$(suffix_y).o \
98 $(addprefix $(obj)/, $(OBJS)) FORCE 114 $(addprefix $(obj)/, $(OBJS)) $(lib1funcs) FORCE
99 $(call if_changed,ld) 115 $(call if_changed,ld)
100 @: 116 @:
101 117
102$(obj)/piggy.gz: $(obj)/../Image FORCE 118$(obj)/piggy.$(suffix_y): $(obj)/../Image FORCE
103 $(call if_changed,gzip) 119 $(call if_changed,$(suffix_y))
104 120
105$(obj)/piggy.o: $(obj)/piggy.gz FORCE 121$(obj)/piggy.$(suffix_y).o: $(obj)/piggy.$(suffix_y) FORCE
106 122
107CFLAGS_font.o := -Dstatic= 123CFLAGS_font.o := -Dstatic=
108 124
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
index d356af7cef82..4fddc509e78e 100644
--- a/arch/arm/boot/compressed/head.S
+++ b/arch/arm/boot/compressed/head.S
@@ -27,6 +27,14 @@
27 .macro writeb, ch, rb 27 .macro writeb, ch, rb
28 mcr p14, 0, \ch, c0, c5, 0 28 mcr p14, 0, \ch, c0, c5, 0
29 .endm 29 .endm
30#elif defined(CONFIG_CPU_V7)
31 .macro loadsp, rb
32 .endm
33 .macro writeb, ch, rb
34wait: mrc p14, 0, pc, c0, c1, 0
35 bcs wait
36 mcr p14, 0, \ch, c0, c5, 0
37 .endm
30#elif defined(CONFIG_CPU_XSCALE) 38#elif defined(CONFIG_CPU_XSCALE)
31 .macro loadsp, rb 39 .macro loadsp, rb
32 .endm 40 .endm
diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c
index 17153b54613b..56a0d116d271 100644
--- a/arch/arm/boot/compressed/misc.c
+++ b/arch/arm/boot/compressed/misc.c
@@ -18,10 +18,15 @@
18 18
19unsigned int __machine_arch_type; 19unsigned int __machine_arch_type;
20 20
21#define _LINUX_STRING_H_
22
21#include <linux/compiler.h> /* for inline */ 23#include <linux/compiler.h> /* for inline */
22#include <linux/types.h> /* for size_t */ 24#include <linux/types.h> /* for size_t */
23#include <linux/stddef.h> /* for NULL */ 25#include <linux/stddef.h> /* for NULL */
24#include <asm/string.h> 26#include <asm/string.h>
27#include <linux/linkage.h>
28
29#include <asm/unaligned.h>
25 30
26#ifdef STANDALONE_DEBUG 31#ifdef STANDALONE_DEBUG
27#define putstr printf 32#define putstr printf
@@ -48,6 +53,18 @@ static void icedcc_putc(int ch)
48 53
49 asm("mcr p14, 0, %0, c0, c5, 0" : : "r" (ch)); 54 asm("mcr p14, 0, %0, c0, c5, 0" : : "r" (ch));
50} 55}
56
57#elif defined(CONFIG_CPU_V7)
58
59static void icedcc_putc(int ch)
60{
61 asm(
62 "wait: mrc p14, 0, pc, c0, c1, 0 \n\
63 bcs wait \n\
64 mcr p14, 0, %0, c0, c5, 0 "
65 : : "r" (ch));
66}
67
51#elif defined(CONFIG_CPU_XSCALE) 68#elif defined(CONFIG_CPU_XSCALE)
52 69
53static void icedcc_putc(int ch) 70static void icedcc_putc(int ch)
@@ -83,7 +100,6 @@ static void icedcc_putc(int ch)
83#endif 100#endif
84 101
85#define putc(ch) icedcc_putc(ch) 102#define putc(ch) icedcc_putc(ch)
86#define flush() do { } while (0)
87#endif 103#endif
88 104
89static void putstr(const char *ptr) 105static void putstr(const char *ptr)
@@ -188,34 +204,8 @@ static inline __ptr_t memcpy(__ptr_t __dest, __const __ptr_t __src,
188/* 204/*
189 * gzip delarations 205 * gzip delarations
190 */ 206 */
191#define OF(args) args
192#define STATIC static 207#define STATIC static
193 208
194typedef unsigned char uch;
195typedef unsigned short ush;
196typedef unsigned long ulg;
197
198#define WSIZE 0x8000 /* Window size must be at least 32k, */
199 /* and a power of two */
200
201static uch *inbuf; /* input buffer */
202static uch window[WSIZE]; /* Sliding window buffer */
203
204static unsigned insize; /* valid bytes in inbuf */
205static unsigned inptr; /* index of next byte to be processed in inbuf */
206static unsigned outcnt; /* bytes in output buffer */
207
208/* gzip flag byte */
209#define ASCII_FLAG 0x01 /* bit 0 set: file probably ascii text */
210#define CONTINUATION 0x02 /* bit 1 set: continuation of multi-part gzip file */
211#define EXTRA_FIELD 0x04 /* bit 2 set: extra field present */
212#define ORIG_NAME 0x08 /* bit 3 set: original file name present */
213#define COMMENT 0x10 /* bit 4 set: file comment present */
214#define ENCRYPTED 0x20 /* bit 5 set: file is encrypted */
215#define RESERVED 0xC0 /* bit 6,7: reserved */
216
217#define get_byte() (inptr < insize ? inbuf[inptr++] : fill_inbuf())
218
219/* Diagnostic functions */ 209/* Diagnostic functions */
220#ifdef DEBUG 210#ifdef DEBUG
221# define Assert(cond,msg) {if(!(cond)) error(msg);} 211# define Assert(cond,msg) {if(!(cond)) error(msg);}
@@ -233,24 +223,20 @@ static unsigned outcnt; /* bytes in output buffer */
233# define Tracecv(c,x) 223# define Tracecv(c,x)
234#endif 224#endif
235 225
236static int fill_inbuf(void);
237static void flush_window(void);
238static void error(char *m); 226static void error(char *m);
239 227
240extern char input_data[]; 228extern char input_data[];
241extern char input_data_end[]; 229extern char input_data_end[];
242 230
243static uch *output_data; 231static unsigned char *output_data;
244static ulg output_ptr; 232static unsigned long output_ptr;
245static ulg bytes_out;
246 233
247static void error(char *m); 234static void error(char *m);
248 235
249static void putstr(const char *); 236static void putstr(const char *);
250 237
251extern int end; 238static unsigned long free_mem_ptr;
252static ulg free_mem_ptr; 239static unsigned long free_mem_end_ptr;
253static ulg free_mem_end_ptr;
254 240
255#ifdef STANDALONE_DEBUG 241#ifdef STANDALONE_DEBUG
256#define NO_INFLATE_MALLOC 242#define NO_INFLATE_MALLOC
@@ -258,46 +244,13 @@ static ulg free_mem_end_ptr;
258 244
259#define ARCH_HAS_DECOMP_WDOG 245#define ARCH_HAS_DECOMP_WDOG
260 246
261#include "../../../../lib/inflate.c" 247#ifdef CONFIG_KERNEL_GZIP
262 248#include "../../../../lib/decompress_inflate.c"
263/* =========================================================================== 249#endif
264 * Fill the input buffer. This is called only when the buffer is empty
265 * and at least one byte is really needed.
266 */
267int fill_inbuf(void)
268{
269 if (insize != 0)
270 error("ran out of input data");
271
272 inbuf = input_data;
273 insize = &input_data_end[0] - &input_data[0];
274
275 inptr = 1;
276 return inbuf[0];
277}
278 250
279/* =========================================================================== 251#ifdef CONFIG_KERNEL_LZO
280 * Write the output window window[0..outcnt-1] and update crc and bytes_out. 252#include "../../../../lib/decompress_unlzo.c"
281 * (Used for the decompressed data only.) 253#endif
282 */
283void flush_window(void)
284{
285 ulg c = crc;
286 unsigned n;
287 uch *in, *out, ch;
288
289 in = window;
290 out = &output_data[output_ptr];
291 for (n = 0; n < outcnt; n++) {
292 ch = *out++ = *in++;
293 c = crc_32_tab[((int)c ^ ch) & 0xff] ^ (c >> 8);
294 }
295 crc = c;
296 bytes_out += (ulg)outcnt;
297 output_ptr += (ulg)outcnt;
298 outcnt = 0;
299 putstr(".");
300}
301 254
302#ifndef arch_error 255#ifndef arch_error
303#define arch_error(x) 256#define arch_error(x)
@@ -314,22 +267,33 @@ static void error(char *x)
314 while(1); /* Halt */ 267 while(1); /* Halt */
315} 268}
316 269
270asmlinkage void __div0(void)
271{
272 error("Attempting division by 0!");
273}
274
317#ifndef STANDALONE_DEBUG 275#ifndef STANDALONE_DEBUG
318 276
319ulg 277unsigned long
320decompress_kernel(ulg output_start, ulg free_mem_ptr_p, ulg free_mem_ptr_end_p, 278decompress_kernel(unsigned long output_start, unsigned long free_mem_ptr_p,
321 int arch_id) 279 unsigned long free_mem_ptr_end_p,
280 int arch_id)
322{ 281{
323 output_data = (uch *)output_start; /* Points to kernel start */ 282 unsigned char *tmp;
283
284 output_data = (unsigned char *)output_start;
324 free_mem_ptr = free_mem_ptr_p; 285 free_mem_ptr = free_mem_ptr_p;
325 free_mem_end_ptr = free_mem_ptr_end_p; 286 free_mem_end_ptr = free_mem_ptr_end_p;
326 __machine_arch_type = arch_id; 287 __machine_arch_type = arch_id;
327 288
328 arch_decomp_setup(); 289 arch_decomp_setup();
329 290
330 makecrc(); 291 tmp = (unsigned char *) (((unsigned long)input_data_end) - 4);
292 output_ptr = get_unaligned_le32(tmp);
293
331 putstr("Uncompressing Linux..."); 294 putstr("Uncompressing Linux...");
332 gunzip(); 295 decompress(input_data, input_data_end - input_data,
296 NULL, NULL, output_data, NULL, error);
333 putstr(" done, booting the kernel.\n"); 297 putstr(" done, booting the kernel.\n");
334 return output_ptr; 298 return output_ptr;
335} 299}
@@ -341,11 +305,10 @@ int main()
341{ 305{
342 output_data = output_buffer; 306 output_data = output_buffer;
343 307
344 makecrc();
345 putstr("Uncompressing Linux..."); 308 putstr("Uncompressing Linux...");
346 gunzip(); 309 decompress(input_data, input_data_end - input_data,
310 NULL, NULL, output_data, NULL, error);
347 putstr("done.\n"); 311 putstr("done.\n");
348 return 0; 312 return 0;
349} 313}
350#endif 314#endif
351
diff --git a/arch/arm/boot/compressed/piggy.gzip.S b/arch/arm/boot/compressed/piggy.gzip.S
new file mode 100644
index 000000000000..a68adf91a165
--- /dev/null
+++ b/arch/arm/boot/compressed/piggy.gzip.S
@@ -0,0 +1,6 @@
1 .section .piggydata,#alloc
2 .globl input_data
3input_data:
4 .incbin "arch/arm/boot/compressed/piggy.gzip"
5 .globl input_data_end
6input_data_end:
diff --git a/arch/arm/boot/compressed/piggy.S b/arch/arm/boot/compressed/piggy.lzo.S
index 54c951800ebd..a425ad95959a 100644
--- a/arch/arm/boot/compressed/piggy.S
+++ b/arch/arm/boot/compressed/piggy.lzo.S
@@ -1,6 +1,6 @@
1 .section .piggydata,#alloc 1 .section .piggydata,#alloc
2 .globl input_data 2 .globl input_data
3input_data: 3input_data:
4 .incbin "arch/arm/boot/compressed/piggy.gz" 4 .incbin "arch/arm/boot/compressed/piggy.lzo"
5 .globl input_data_end 5 .globl input_data_end
6input_data_end: 6input_data_end:
diff --git a/arch/arm/configs/u300_defconfig b/arch/arm/configs/u300_defconfig
index 610ac3c47b0f..9155196e623b 100644
--- a/arch/arm/configs/u300_defconfig
+++ b/arch/arm/configs/u300_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.32-rc5 3# Linux kernel version: 2.6.33-rc2
4# Sat Oct 17 23:32:24 2009 4# Wed Jan 6 00:01:36 2010
5# 5#
6CONFIG_ARM=y 6CONFIG_ARM=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y 7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -46,6 +46,7 @@ CONFIG_SYSVIPC_SYSCTL=y
46# 46#
47CONFIG_TREE_RCU=y 47CONFIG_TREE_RCU=y
48# CONFIG_TREE_PREEMPT_RCU is not set 48# CONFIG_TREE_PREEMPT_RCU is not set
49# CONFIG_TINY_RCU is not set
49# CONFIG_RCU_TRACE is not set 50# CONFIG_RCU_TRACE is not set
50CONFIG_RCU_FANOUT=32 51CONFIG_RCU_FANOUT=32
51# CONFIG_RCU_FANOUT_EXACT is not set 52# CONFIG_RCU_FANOUT_EXACT is not set
@@ -119,14 +120,41 @@ CONFIG_BLOCK=y
119# IO Schedulers 120# IO Schedulers
120# 121#
121CONFIG_IOSCHED_NOOP=y 122CONFIG_IOSCHED_NOOP=y
122# CONFIG_IOSCHED_AS is not set
123CONFIG_IOSCHED_DEADLINE=y 123CONFIG_IOSCHED_DEADLINE=y
124# CONFIG_IOSCHED_CFQ is not set 124# CONFIG_IOSCHED_CFQ is not set
125# CONFIG_DEFAULT_AS is not set
126CONFIG_DEFAULT_DEADLINE=y 125CONFIG_DEFAULT_DEADLINE=y
127# CONFIG_DEFAULT_CFQ is not set 126# CONFIG_DEFAULT_CFQ is not set
128# CONFIG_DEFAULT_NOOP is not set 127# CONFIG_DEFAULT_NOOP is not set
129CONFIG_DEFAULT_IOSCHED="deadline" 128CONFIG_DEFAULT_IOSCHED="deadline"
129# CONFIG_INLINE_SPIN_TRYLOCK is not set
130# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
131# CONFIG_INLINE_SPIN_LOCK is not set
132# CONFIG_INLINE_SPIN_LOCK_BH is not set
133# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
134# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
135# CONFIG_INLINE_SPIN_UNLOCK is not set
136# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
137# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
138# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
139# CONFIG_INLINE_READ_TRYLOCK is not set
140# CONFIG_INLINE_READ_LOCK is not set
141# CONFIG_INLINE_READ_LOCK_BH is not set
142# CONFIG_INLINE_READ_LOCK_IRQ is not set
143# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
144# CONFIG_INLINE_READ_UNLOCK is not set
145# CONFIG_INLINE_READ_UNLOCK_BH is not set
146# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
147# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
148# CONFIG_INLINE_WRITE_TRYLOCK is not set
149# CONFIG_INLINE_WRITE_LOCK is not set
150# CONFIG_INLINE_WRITE_LOCK_BH is not set
151# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
152# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
153# CONFIG_INLINE_WRITE_UNLOCK is not set
154# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
155# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
156# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
157# CONFIG_MUTEX_SPIN_ON_OWNER is not set
130# CONFIG_FREEZER is not set 158# CONFIG_FREEZER is not set
131 159
132# 160#
@@ -155,6 +183,7 @@ CONFIG_MMU=y
155# CONFIG_ARCH_IXP2000 is not set 183# CONFIG_ARCH_IXP2000 is not set
156# CONFIG_ARCH_IXP4XX is not set 184# CONFIG_ARCH_IXP4XX is not set
157# CONFIG_ARCH_L7200 is not set 185# CONFIG_ARCH_L7200 is not set
186# CONFIG_ARCH_DOVE is not set
158# CONFIG_ARCH_KIRKWOOD is not set 187# CONFIG_ARCH_KIRKWOOD is not set
159# CONFIG_ARCH_LOKI is not set 188# CONFIG_ARCH_LOKI is not set
160# CONFIG_ARCH_MV78XX0 is not set 189# CONFIG_ARCH_MV78XX0 is not set
@@ -177,6 +206,7 @@ CONFIG_ARCH_U300=y
177# CONFIG_ARCH_DAVINCI is not set 206# CONFIG_ARCH_DAVINCI is not set
178# CONFIG_ARCH_OMAP is not set 207# CONFIG_ARCH_OMAP is not set
179# CONFIG_ARCH_BCMRING is not set 208# CONFIG_ARCH_BCMRING is not set
209# CONFIG_ARCH_U8500 is not set
180 210
181# 211#
182# ST-Ericsson AB U300/U330/U335/U365 Platform 212# ST-Ericsson AB U300/U330/U335/U365 Platform
@@ -265,12 +295,10 @@ CONFIG_FLATMEM_MANUAL=y
265CONFIG_FLATMEM=y 295CONFIG_FLATMEM=y
266CONFIG_FLAT_NODE_MEM_MAP=y 296CONFIG_FLAT_NODE_MEM_MAP=y
267CONFIG_PAGEFLAGS_EXTENDED=y 297CONFIG_PAGEFLAGS_EXTENDED=y
268CONFIG_SPLIT_PTLOCK_CPUS=4096 298CONFIG_SPLIT_PTLOCK_CPUS=999999
269# CONFIG_PHYS_ADDR_T_64BIT is not set 299# CONFIG_PHYS_ADDR_T_64BIT is not set
270CONFIG_ZONE_DMA_FLAG=0 300CONFIG_ZONE_DMA_FLAG=0
271CONFIG_VIRT_TO_BUS=y 301CONFIG_VIRT_TO_BUS=y
272CONFIG_HAVE_MLOCK=y
273CONFIG_HAVE_MLOCKED_PAGE_BIT=y
274# CONFIG_KSM is not set 302# CONFIG_KSM is not set
275CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 303CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
276CONFIG_ALIGNMENT_TRAP=y 304CONFIG_ALIGNMENT_TRAP=y
@@ -499,14 +527,21 @@ CONFIG_MTD_NAND_IDS=y
499CONFIG_BLK_DEV=y 527CONFIG_BLK_DEV=y
500# CONFIG_BLK_DEV_COW_COMMON is not set 528# CONFIG_BLK_DEV_COW_COMMON is not set
501# CONFIG_BLK_DEV_LOOP is not set 529# CONFIG_BLK_DEV_LOOP is not set
530
531#
532# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
533#
502# CONFIG_BLK_DEV_NBD is not set 534# CONFIG_BLK_DEV_NBD is not set
503# CONFIG_BLK_DEV_RAM is not set 535# CONFIG_BLK_DEV_RAM is not set
504# CONFIG_CDROM_PKTCDVD is not set 536# CONFIG_CDROM_PKTCDVD is not set
505# CONFIG_ATA_OVER_ETH is not set 537# CONFIG_ATA_OVER_ETH is not set
506CONFIG_MISC_DEVICES=y 538CONFIG_MISC_DEVICES=y
539# CONFIG_AD525X_DPOT is not set
507# CONFIG_ICS932S401 is not set 540# CONFIG_ICS932S401 is not set
508# CONFIG_ENCLOSURE_SERVICES is not set 541# CONFIG_ENCLOSURE_SERVICES is not set
509# CONFIG_ISL29003 is not set 542# CONFIG_ISL29003 is not set
543# CONFIG_DS1682 is not set
544# CONFIG_TI_DAC7512 is not set
510# CONFIG_C2PORT is not set 545# CONFIG_C2PORT is not set
511 546
512# 547#
@@ -517,6 +552,7 @@ CONFIG_MISC_DEVICES=y
517# CONFIG_EEPROM_LEGACY is not set 552# CONFIG_EEPROM_LEGACY is not set
518# CONFIG_EEPROM_MAX6875 is not set 553# CONFIG_EEPROM_MAX6875 is not set
519# CONFIG_EEPROM_93CX6 is not set 554# CONFIG_EEPROM_93CX6 is not set
555# CONFIG_IWMC3200TOP is not set
520CONFIG_HAVE_IDE=y 556CONFIG_HAVE_IDE=y
521# CONFIG_IDE is not set 557# CONFIG_IDE is not set
522 558
@@ -539,6 +575,7 @@ CONFIG_HAVE_IDE=y
539CONFIG_INPUT=y 575CONFIG_INPUT=y
540# CONFIG_INPUT_FF_MEMLESS is not set 576# CONFIG_INPUT_FF_MEMLESS is not set
541# CONFIG_INPUT_POLLDEV is not set 577# CONFIG_INPUT_POLLDEV is not set
578# CONFIG_INPUT_SPARSEKMAP is not set
542 579
543# 580#
544# Userland interfaces 581# Userland interfaces
@@ -645,7 +682,6 @@ CONFIG_I2C_STU300=y
645# 682#
646# Miscellaneous I2C Chip support 683# Miscellaneous I2C Chip support
647# 684#
648# CONFIG_DS1682 is not set
649# CONFIG_SENSORS_TSL2550 is not set 685# CONFIG_SENSORS_TSL2550 is not set
650# CONFIG_I2C_DEBUG_CORE is not set 686# CONFIG_I2C_DEBUG_CORE is not set
651# CONFIG_I2C_DEBUG_ALGO is not set 687# CONFIG_I2C_DEBUG_ALGO is not set
@@ -661,6 +697,8 @@ CONFIG_SPI_MASTER=y
661# CONFIG_SPI_BITBANG is not set 697# CONFIG_SPI_BITBANG is not set
662# CONFIG_SPI_GPIO is not set 698# CONFIG_SPI_GPIO is not set
663CONFIG_SPI_PL022=y 699CONFIG_SPI_PL022=y
700# CONFIG_SPI_XILINX is not set
701# CONFIG_SPI_DESIGNWARE is not set
664 702
665# 703#
666# SPI Protocol Masters 704# SPI Protocol Masters
@@ -708,6 +746,7 @@ CONFIG_SSB_POSSIBLE=y
708# CONFIG_MFD_T7L66XB is not set 746# CONFIG_MFD_T7L66XB is not set
709# CONFIG_MFD_TC6387XB is not set 747# CONFIG_MFD_TC6387XB is not set
710# CONFIG_PMIC_DA903X is not set 748# CONFIG_PMIC_DA903X is not set
749# CONFIG_PMIC_ADP5520 is not set
711# CONFIG_MFD_WM8400 is not set 750# CONFIG_MFD_WM8400 is not set
712# CONFIG_MFD_WM831X is not set 751# CONFIG_MFD_WM831X is not set
713# CONFIG_MFD_WM8350_I2C is not set 752# CONFIG_MFD_WM8350_I2C is not set
@@ -716,6 +755,8 @@ CONFIG_SSB_POSSIBLE=y
716CONFIG_AB3100_CORE=y 755CONFIG_AB3100_CORE=y
717CONFIG_AB3100_OTP=y 756CONFIG_AB3100_OTP=y
718# CONFIG_EZX_PCAP is not set 757# CONFIG_EZX_PCAP is not set
758# CONFIG_MFD_88PM8607 is not set
759# CONFIG_AB4500_CORE is not set
719CONFIG_REGULATOR=y 760CONFIG_REGULATOR=y
720# CONFIG_REGULATOR_DEBUG is not set 761# CONFIG_REGULATOR_DEBUG is not set
721# CONFIG_REGULATOR_FIXED_VOLTAGE is not set 762# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
@@ -723,6 +764,7 @@ CONFIG_REGULATOR=y
723# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set 764# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
724# CONFIG_REGULATOR_BQ24022 is not set 765# CONFIG_REGULATOR_BQ24022 is not set
725# CONFIG_REGULATOR_MAX1586 is not set 766# CONFIG_REGULATOR_MAX1586 is not set
767# CONFIG_REGULATOR_MAX8660 is not set
726# CONFIG_REGULATOR_LP3971 is not set 768# CONFIG_REGULATOR_LP3971 is not set
727CONFIG_REGULATOR_AB3100=y 769CONFIG_REGULATOR_AB3100=y
728# CONFIG_REGULATOR_TPS65023 is not set 770# CONFIG_REGULATOR_TPS65023 is not set
@@ -840,7 +882,9 @@ CONFIG_LEDS_CLASS=y
840# CONFIG_LEDS_LP3944 is not set 882# CONFIG_LEDS_LP3944 is not set
841# CONFIG_LEDS_PCA955X is not set 883# CONFIG_LEDS_PCA955X is not set
842# CONFIG_LEDS_DAC124S085 is not set 884# CONFIG_LEDS_DAC124S085 is not set
885# CONFIG_LEDS_REGULATOR is not set
843# CONFIG_LEDS_BD2802 is not set 886# CONFIG_LEDS_BD2802 is not set
887# CONFIG_LEDS_LT3593 is not set
844 888
845# 889#
846# LED Triggers 890# LED Triggers
@@ -882,6 +926,7 @@ CONFIG_RTC_INTF_DEV=y
882# CONFIG_RTC_DRV_PCF8563 is not set 926# CONFIG_RTC_DRV_PCF8563 is not set
883# CONFIG_RTC_DRV_PCF8583 is not set 927# CONFIG_RTC_DRV_PCF8583 is not set
884# CONFIG_RTC_DRV_M41T80 is not set 928# CONFIG_RTC_DRV_M41T80 is not set
929# CONFIG_RTC_DRV_BQ32K is not set
885# CONFIG_RTC_DRV_S35390A is not set 930# CONFIG_RTC_DRV_S35390A is not set
886# CONFIG_RTC_DRV_FM3130 is not set 931# CONFIG_RTC_DRV_FM3130 is not set
887# CONFIG_RTC_DRV_RX8581 is not set 932# CONFIG_RTC_DRV_RX8581 is not set
@@ -911,7 +956,9 @@ CONFIG_RTC_INTF_DEV=y
911# CONFIG_RTC_DRV_M48T86 is not set 956# CONFIG_RTC_DRV_M48T86 is not set
912# CONFIG_RTC_DRV_M48T35 is not set 957# CONFIG_RTC_DRV_M48T35 is not set
913# CONFIG_RTC_DRV_M48T59 is not set 958# CONFIG_RTC_DRV_M48T59 is not set
959# CONFIG_RTC_DRV_MSM6242 is not set
914# CONFIG_RTC_DRV_BQ4802 is not set 960# CONFIG_RTC_DRV_BQ4802 is not set
961# CONFIG_RTC_DRV_RP5C01 is not set
915# CONFIG_RTC_DRV_V3020 is not set 962# CONFIG_RTC_DRV_V3020 is not set
916CONFIG_RTC_DRV_AB3100=y 963CONFIG_RTC_DRV_AB3100=y
917 964
@@ -926,6 +973,15 @@ CONFIG_DMADEVICES=y
926# 973#
927# DMA Devices 974# DMA Devices
928# 975#
976CONFIG_COH901318=y
977CONFIG_DMA_ENGINE=y
978
979#
980# DMA Clients
981#
982# CONFIG_NET_DMA is not set
983# CONFIG_ASYNC_TX_DMA is not set
984# CONFIG_DMATEST is not set
929# CONFIG_AUXDISPLAY is not set 985# CONFIG_AUXDISPLAY is not set
930# CONFIG_UIO is not set 986# CONFIG_UIO is not set
931 987
@@ -1018,7 +1074,7 @@ CONFIG_MISC_FILESYSTEMS=y
1018CONFIG_MSDOS_PARTITION=y 1074CONFIG_MSDOS_PARTITION=y
1019CONFIG_NLS=y 1075CONFIG_NLS=y
1020CONFIG_NLS_DEFAULT="iso8859-1" 1076CONFIG_NLS_DEFAULT="iso8859-1"
1021# CONFIG_NLS_CODEPAGE_437 is not set 1077CONFIG_NLS_CODEPAGE_437=y
1022# CONFIG_NLS_CODEPAGE_737 is not set 1078# CONFIG_NLS_CODEPAGE_737 is not set
1023# CONFIG_NLS_CODEPAGE_775 is not set 1079# CONFIG_NLS_CODEPAGE_775 is not set
1024# CONFIG_NLS_CODEPAGE_850 is not set 1080# CONFIG_NLS_CODEPAGE_850 is not set
@@ -1135,6 +1191,7 @@ CONFIG_ARM_UNWIND=y
1135# CONFIG_DEBUG_ERRORS is not set 1191# CONFIG_DEBUG_ERRORS is not set
1136# CONFIG_DEBUG_STACK_USAGE is not set 1192# CONFIG_DEBUG_STACK_USAGE is not set
1137# CONFIG_DEBUG_LL is not set 1193# CONFIG_DEBUG_LL is not set
1194# CONFIG_OC_ETM is not set
1138 1195
1139# 1196#
1140# Security options 1197# Security options
@@ -1142,7 +1199,11 @@ CONFIG_ARM_UNWIND=y
1142# CONFIG_KEYS is not set 1199# CONFIG_KEYS is not set
1143# CONFIG_SECURITY is not set 1200# CONFIG_SECURITY is not set
1144# CONFIG_SECURITYFS is not set 1201# CONFIG_SECURITYFS is not set
1145# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1202# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1203# CONFIG_DEFAULT_SECURITY_SMACK is not set
1204# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1205CONFIG_DEFAULT_SECURITY_DAC=y
1206CONFIG_DEFAULT_SECURITY=""
1146# CONFIG_CRYPTO is not set 1207# CONFIG_CRYPTO is not set
1147# CONFIG_BINARY_PRINTF is not set 1208# CONFIG_BINARY_PRINTF is not set
1148 1209
diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h
index 730aefcfbee3..8113bb5fb66e 100644
--- a/arch/arm/include/asm/cacheflush.h
+++ b/arch/arm/include/asm/cacheflush.h
@@ -42,7 +42,8 @@
42#endif 42#endif
43 43
44#if defined(CONFIG_CPU_ARM920T) || defined(CONFIG_CPU_ARM922T) || \ 44#if defined(CONFIG_CPU_ARM920T) || defined(CONFIG_CPU_ARM922T) || \
45 defined(CONFIG_CPU_ARM925T) || defined(CONFIG_CPU_ARM1020) 45 defined(CONFIG_CPU_ARM925T) || defined(CONFIG_CPU_ARM1020) || \
46 defined(CONFIG_CPU_ARM1026)
46# define MULTI_CACHE 1 47# define MULTI_CACHE 1
47#endif 48#endif
48 49
@@ -154,16 +155,16 @@
154 * Please note that the implementation of these, and the required 155 * Please note that the implementation of these, and the required
155 * effects are cache-type (VIVT/VIPT/PIPT) specific. 156 * effects are cache-type (VIVT/VIPT/PIPT) specific.
156 * 157 *
157 * flush_cache_kern_all() 158 * flush_kern_all()
158 * 159 *
159 * Unconditionally clean and invalidate the entire cache. 160 * Unconditionally clean and invalidate the entire cache.
160 * 161 *
161 * flush_cache_user_mm(mm) 162 * flush_user_all()
162 * 163 *
163 * Clean and invalidate all user space cache entries 164 * Clean and invalidate all user space cache entries
164 * before a change of page tables. 165 * before a change of page tables.
165 * 166 *
166 * flush_cache_user_range(start, end, flags) 167 * flush_user_range(start, end, flags)
167 * 168 *
168 * Clean and invalidate a range of cache entries in the 169 * Clean and invalidate a range of cache entries in the
169 * specified address space before a change of page tables. 170 * specified address space before a change of page tables.
@@ -179,6 +180,20 @@
179 * - start - virtual start address 180 * - start - virtual start address
180 * - end - virtual end address 181 * - end - virtual end address
181 * 182 *
183 * coherent_user_range(start, end)
184 *
185 * Ensure coherency between the Icache and the Dcache in the
186 * region described by start, end. If you have non-snooping
187 * Harvard caches, you need to implement this function.
188 * - start - virtual start address
189 * - end - virtual end address
190 *
191 * flush_kern_dcache_area(kaddr, size)
192 *
193 * Ensure that the data held in page is written back.
194 * - kaddr - page address
195 * - size - region size
196 *
182 * DMA Cache Coherency 197 * DMA Cache Coherency
183 * =================== 198 * ===================
184 * 199 *
diff --git a/arch/arm/include/asm/cpu.h b/arch/arm/include/asm/cpu.h
index 634b2d7c612a..793968173bef 100644
--- a/arch/arm/include/asm/cpu.h
+++ b/arch/arm/include/asm/cpu.h
@@ -11,6 +11,7 @@
11#define __ASM_ARM_CPU_H 11#define __ASM_ARM_CPU_H
12 12
13#include <linux/percpu.h> 13#include <linux/percpu.h>
14#include <linux/cpu.h>
14 15
15struct cpuinfo_arm { 16struct cpuinfo_arm {
16 struct cpu cpu; 17 struct cpu cpu;
diff --git a/arch/arm/include/asm/dma.h b/arch/arm/include/asm/dma.h
index 7edf3536df24..ca51143f97f1 100644
--- a/arch/arm/include/asm/dma.h
+++ b/arch/arm/include/asm/dma.h
@@ -138,12 +138,12 @@ extern int get_dma_residue(unsigned int chan);
138#define NO_DMA 255 138#define NO_DMA 255
139#endif 139#endif
140 140
141#endif /* CONFIG_ISA_DMA_API */
142
141#ifdef CONFIG_PCI 143#ifdef CONFIG_PCI
142extern int isa_dma_bridge_buggy; 144extern int isa_dma_bridge_buggy;
143#else 145#else
144#define isa_dma_bridge_buggy (0) 146#define isa_dma_bridge_buggy (0)
145#endif 147#endif
146 148
147#endif /* CONFIG_ISA_DMA_API */
148
149#endif /* __ASM_ARM_DMA_H */ 149#endif /* __ASM_ARM_DMA_H */
diff --git a/arch/arm/include/asm/ptrace.h b/arch/arm/include/asm/ptrace.h
index bbecccda76d0..eec6e897ceb2 100644
--- a/arch/arm/include/asm/ptrace.h
+++ b/arch/arm/include/asm/ptrace.h
@@ -97,9 +97,15 @@
97 * stack during a system call. Note that sizeof(struct pt_regs) 97 * stack during a system call. Note that sizeof(struct pt_regs)
98 * has to be a multiple of 8. 98 * has to be a multiple of 8.
99 */ 99 */
100#ifndef __KERNEL__
100struct pt_regs { 101struct pt_regs {
101 long uregs[18]; 102 long uregs[18];
102}; 103};
104#else /* __KERNEL__ */
105struct pt_regs {
106 unsigned long uregs[18];
107};
108#endif /* __KERNEL__ */
103 109
104#define ARM_cpsr uregs[16] 110#define ARM_cpsr uregs[16]
105#define ARM_pc uregs[15] 111#define ARM_pc uregs[15]
diff --git a/arch/arm/include/asm/unistd.h b/arch/arm/include/asm/unistd.h
index 4e506d09e5f9..cf9cdaa2d4d4 100644
--- a/arch/arm/include/asm/unistd.h
+++ b/arch/arm/include/asm/unistd.h
@@ -391,6 +391,7 @@
391#define __NR_pwritev (__NR_SYSCALL_BASE+362) 391#define __NR_pwritev (__NR_SYSCALL_BASE+362)
392#define __NR_rt_tgsigqueueinfo (__NR_SYSCALL_BASE+363) 392#define __NR_rt_tgsigqueueinfo (__NR_SYSCALL_BASE+363)
393#define __NR_perf_event_open (__NR_SYSCALL_BASE+364) 393#define __NR_perf_event_open (__NR_SYSCALL_BASE+364)
394#define __NR_recvmmsg (__NR_SYSCALL_BASE+365)
394 395
395/* 396/*
396 * The following SWIs are ARM private. 397 * The following SWIs are ARM private.
diff --git a/arch/arm/kernel/debug.S b/arch/arm/kernel/debug.S
index b121b6053cce..5c91addcaebc 100644
--- a/arch/arm/kernel/debug.S
+++ b/arch/arm/kernel/debug.S
@@ -49,6 +49,26 @@
491002: 491002:
50 .endm 50 .endm
51 51
52#elif defined(CONFIG_CPU_V7)
53
54 .macro addruart, rx
55 .endm
56
57 .macro senduart, rd, rx
58 mcr p14, 0, \rd, c0, c5, 0
59 .endm
60
61 .macro busyuart, rd, rx
62busy: mrc p14, 0, pc, c0, c1, 0
63 bcs busy
64 .endm
65
66 .macro waituart, rd, rx
67wait: mrc p14, 0, pc, c0, c1, 0
68 bcs wait
69
70 .endm
71
52#elif defined(CONFIG_CPU_XSCALE) 72#elif defined(CONFIG_CPU_XSCALE)
53 73
54 .macro addruart, rx 74 .macro addruart, rx
diff --git a/arch/arm/kernel/elf.c b/arch/arm/kernel/elf.c
index 950391f194c4..d4a0da1e48f4 100644
--- a/arch/arm/kernel/elf.c
+++ b/arch/arm/kernel/elf.c
@@ -78,15 +78,6 @@ int arm_elf_read_implies_exec(const struct elf32_hdr *x, int executable_stack)
78 return 1; 78 return 1;
79 if (cpu_architecture() < CPU_ARCH_ARMv6) 79 if (cpu_architecture() < CPU_ARCH_ARMv6)
80 return 1; 80 return 1;
81#if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT)
82 /*
83 * If we have support for OABI programs, we can never allow NX
84 * support - our signal syscall restart mechanism relies upon
85 * being able to execute code placed on the user stack.
86 */
87 return 1;
88#else
89 return 0; 81 return 0;
90#endif
91} 82}
92EXPORT_SYMBOL(arm_elf_read_implies_exec); 83EXPORT_SYMBOL(arm_elf_read_implies_exec);
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
index d2903e3bc861..6c5cf369183b 100644
--- a/arch/arm/kernel/entry-armv.S
+++ b/arch/arm/kernel/entry-armv.S
@@ -957,9 +957,7 @@ kuser_cmpxchg_fixup:
957 957
958#else 958#else
959 959
960#ifdef CONFIG_SMP 960 smp_dmb
961 mcr p15, 0, r0, c7, c10, 5 @ dmb
962#endif
9631: ldrex r3, [r2] 9611: ldrex r3, [r2]
964 subs r3, r3, r0 962 subs r3, r3, r0
965 strexeq r3, r1, [r2] 963 strexeq r3, r1, [r2]
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
index 67304138a2ca..ba2adefa53f7 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -212,7 +212,8 @@ void __show_regs(struct pt_regs *regs)
212 char buf[64]; 212 char buf[64];
213 213
214 printk("CPU: %d %s (%s %.*s)\n", 214 printk("CPU: %d %s (%s %.*s)\n",
215 smp_processor_id(), print_tainted(), init_utsname()->release, 215 raw_smp_processor_id(), print_tainted(),
216 init_utsname()->release,
216 (int)strcspn(init_utsname()->version, " "), 217 (int)strcspn(init_utsname()->version, " "),
217 init_utsname()->version); 218 init_utsname()->version);
218 print_symbol("PC is at %s\n", instruction_pointer(regs)); 219 print_symbol("PC is at %s\n", instruction_pointer(regs));
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index c6c57b640b6b..621acad8ea43 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -102,6 +102,7 @@ struct cpu_cache_fns cpu_cache;
102#endif 102#endif
103#ifdef CONFIG_OUTER_CACHE 103#ifdef CONFIG_OUTER_CACHE
104struct outer_cache_fns outer_cache; 104struct outer_cache_fns outer_cache;
105EXPORT_SYMBOL(outer_cache);
105#endif 106#endif
106 107
107struct stack { 108struct stack {
diff --git a/arch/arm/mach-davinci/board-dm355-evm.c b/arch/arm/mach-davinci/board-dm355-evm.c
index a9b650dcc172..077ecf4fecda 100644
--- a/arch/arm/mach-davinci/board-dm355-evm.c
+++ b/arch/arm/mach-davinci/board-dm355-evm.c
@@ -236,6 +236,7 @@ static struct vpfe_subdev_info vpfe_sub_devs[] = {
236 236
237static struct vpfe_config vpfe_cfg = { 237static struct vpfe_config vpfe_cfg = {
238 .num_subdevs = ARRAY_SIZE(vpfe_sub_devs), 238 .num_subdevs = ARRAY_SIZE(vpfe_sub_devs),
239 .i2c_adapter_id = 1,
239 .sub_devs = vpfe_sub_devs, 240 .sub_devs = vpfe_sub_devs,
240 .card_name = "DM355 EVM", 241 .card_name = "DM355 EVM",
241 .ccdc = "DM355 CCDC", 242 .ccdc = "DM355 CCDC",
diff --git a/arch/arm/mach-davinci/board-dm365-evm.c b/arch/arm/mach-davinci/board-dm365-evm.c
index 289fe1b7d25a..b476395d2cd4 100644
--- a/arch/arm/mach-davinci/board-dm365-evm.c
+++ b/arch/arm/mach-davinci/board-dm365-evm.c
@@ -192,7 +192,11 @@ static struct davinci_i2c_platform_data i2c_pdata = {
192 .bus_delay = 0 /* usec */, 192 .bus_delay = 0 /* usec */,
193}; 193};
194 194
195#ifdef CONFIG_KEYBOARD_DAVINCI 195static int dm365evm_keyscan_enable(struct device *dev)
196{
197 return davinci_cfg_reg(DM365_KEYSCAN);
198}
199
196static unsigned short dm365evm_keymap[] = { 200static unsigned short dm365evm_keymap[] = {
197 KEY_KP2, 201 KEY_KP2,
198 KEY_LEFT, 202 KEY_LEFT,
@@ -214,6 +218,7 @@ static unsigned short dm365evm_keymap[] = {
214}; 218};
215 219
216static struct davinci_ks_platform_data dm365evm_ks_data = { 220static struct davinci_ks_platform_data dm365evm_ks_data = {
221 .device_enable = dm365evm_keyscan_enable,
217 .keymap = dm365evm_keymap, 222 .keymap = dm365evm_keymap,
218 .keymapsize = ARRAY_SIZE(dm365evm_keymap), 223 .keymapsize = ARRAY_SIZE(dm365evm_keymap),
219 .rep = 1, 224 .rep = 1,
@@ -222,7 +227,6 @@ static struct davinci_ks_platform_data dm365evm_ks_data = {
222 .interval = 0x2, 227 .interval = 0x2,
223 .matrix_type = DAVINCI_KEYSCAN_MATRIX_4X4, 228 .matrix_type = DAVINCI_KEYSCAN_MATRIX_4X4,
224}; 229};
225#endif
226 230
227static int cpld_mmc_get_cd(int module) 231static int cpld_mmc_get_cd(int module)
228{ 232{
@@ -511,10 +515,7 @@ static __init void dm365_evm_init(void)
511 515
512 dm365_init_asp(&dm365_evm_snd_data); 516 dm365_init_asp(&dm365_evm_snd_data);
513 dm365_init_rtc(); 517 dm365_init_rtc();
514
515#ifdef CONFIG_KEYBOARD_DAVINCI
516 dm365_init_ks(&dm365evm_ks_data); 518 dm365_init_ks(&dm365evm_ks_data);
517#endif
518} 519}
519 520
520static __init void dm365_evm_irq_init(void) 521static __init void dm365_evm_irq_init(void)
diff --git a/arch/arm/mach-davinci/board-dm644x-evm.c b/arch/arm/mach-davinci/board-dm644x-evm.c
index fd0398bc6db3..e9612cf727b7 100644
--- a/arch/arm/mach-davinci/board-dm644x-evm.c
+++ b/arch/arm/mach-davinci/board-dm644x-evm.c
@@ -247,6 +247,7 @@ static struct vpfe_subdev_info vpfe_sub_devs[] = {
247 247
248static struct vpfe_config vpfe_cfg = { 248static struct vpfe_config vpfe_cfg = {
249 .num_subdevs = ARRAY_SIZE(vpfe_sub_devs), 249 .num_subdevs = ARRAY_SIZE(vpfe_sub_devs),
250 .i2c_adapter_id = 1,
250 .sub_devs = vpfe_sub_devs, 251 .sub_devs = vpfe_sub_devs,
251 .card_name = "DM6446 EVM", 252 .card_name = "DM6446 EVM",
252 .ccdc = "DM6446 CCDC", 253 .ccdc = "DM6446 CCDC",
diff --git a/arch/arm/mach-davinci/cp_intc.c b/arch/arm/mach-davinci/cp_intc.c
index 52b287cf3a42..37311d1830eb 100644
--- a/arch/arm/mach-davinci/cp_intc.c
+++ b/arch/arm/mach-davinci/cp_intc.c
@@ -81,12 +81,23 @@ static int cp_intc_set_irq_type(unsigned int irq, unsigned int flow_type)
81 return 0; 81 return 0;
82} 82}
83 83
84/*
85 * Faking this allows us to to work with suspend functions of
86 * generic drivers which call {enable|disable}_irq_wake for
87 * wake up interrupt sources (eg RTC on DA850).
88 */
89static int cp_intc_set_wake(unsigned int irq, unsigned int on)
90{
91 return 0;
92}
93
84static struct irq_chip cp_intc_irq_chip = { 94static struct irq_chip cp_intc_irq_chip = {
85 .name = "cp_intc", 95 .name = "cp_intc",
86 .ack = cp_intc_ack_irq, 96 .ack = cp_intc_ack_irq,
87 .mask = cp_intc_mask_irq, 97 .mask = cp_intc_mask_irq,
88 .unmask = cp_intc_unmask_irq, 98 .unmask = cp_intc_unmask_irq,
89 .set_type = cp_intc_set_irq_type, 99 .set_type = cp_intc_set_irq_type,
100 .set_wake = cp_intc_set_wake,
90}; 101};
91 102
92void __init cp_intc_init(void __iomem *base, unsigned short num_irq, 103void __init cp_intc_init(void __iomem *base, unsigned short num_irq,
diff --git a/arch/arm/mach-davinci/devices-da8xx.c b/arch/arm/mach-davinci/devices-da8xx.c
index dd2d32c4ce86..a5105f03fd86 100644
--- a/arch/arm/mach-davinci/devices-da8xx.c
+++ b/arch/arm/mach-davinci/devices-da8xx.c
@@ -481,11 +481,18 @@ static struct platform_device da8xx_rtc_device = {
481 481
482int da8xx_register_rtc(void) 482int da8xx_register_rtc(void)
483{ 483{
484 int ret;
485
484 /* Unlock the rtc's registers */ 486 /* Unlock the rtc's registers */
485 __raw_writel(0x83e70b13, IO_ADDRESS(DA8XX_RTC_BASE + 0x6c)); 487 __raw_writel(0x83e70b13, IO_ADDRESS(DA8XX_RTC_BASE + 0x6c));
486 __raw_writel(0x95a4f1e0, IO_ADDRESS(DA8XX_RTC_BASE + 0x70)); 488 __raw_writel(0x95a4f1e0, IO_ADDRESS(DA8XX_RTC_BASE + 0x70));
487 489
488 return platform_device_register(&da8xx_rtc_device); 490 ret = platform_device_register(&da8xx_rtc_device);
491 if (!ret)
492 /* Atleast on DA850, RTC is a wakeup source */
493 device_init_wakeup(&da8xx_rtc_device.dev, true);
494
495 return ret;
489} 496}
490 497
491static struct resource da8xx_cpuidle_resources[] = { 498static struct resource da8xx_cpuidle_resources[] = {
diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index 2ec619ec1657..f53735cb922e 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -993,7 +993,6 @@ void __init dm365_init_asp(struct snd_platform_data *pdata)
993 993
994void __init dm365_init_ks(struct davinci_ks_platform_data *pdata) 994void __init dm365_init_ks(struct davinci_ks_platform_data *pdata)
995{ 995{
996 davinci_cfg_reg(DM365_KEYSCAN);
997 dm365_ks_device.dev.platform_data = pdata; 996 dm365_ks_device.dev.platform_data = pdata;
998 platform_device_register(&dm365_ks_device); 997 platform_device_register(&dm365_ks_device);
999} 998}
diff --git a/arch/arm/mach-davinci/include/mach/keyscan.h b/arch/arm/mach-davinci/include/mach/keyscan.h
index b4e21a2976d1..7a560e05bda8 100644
--- a/arch/arm/mach-davinci/include/mach/keyscan.h
+++ b/arch/arm/mach-davinci/include/mach/keyscan.h
@@ -29,6 +29,7 @@ enum davinci_matrix_types {
29}; 29};
30 30
31struct davinci_ks_platform_data { 31struct davinci_ks_platform_data {
32 int (*device_enable)(struct device *dev);
32 unsigned short *keymap; 33 unsigned short *keymap;
33 u32 keymapsize; 34 u32 keymapsize;
34 u8 rep:1; 35 u8 rep:1;
diff --git a/arch/arm/mach-gemini/gpio.c b/arch/arm/mach-gemini/gpio.c
index e7263854bc7b..fe3bd5ac8b10 100644
--- a/arch/arm/mach-gemini/gpio.c
+++ b/arch/arm/mach-gemini/gpio.c
@@ -86,7 +86,7 @@ static int gpio_set_irq_type(unsigned int irq, unsigned int type)
86 unsigned int reg_both, reg_level, reg_type; 86 unsigned int reg_both, reg_level, reg_type;
87 87
88 reg_type = __raw_readl(base + GPIO_INT_TYPE); 88 reg_type = __raw_readl(base + GPIO_INT_TYPE);
89 reg_level = __raw_readl(base + GPIO_INT_BOTH_EDGE); 89 reg_level = __raw_readl(base + GPIO_INT_LEVEL);
90 reg_both = __raw_readl(base + GPIO_INT_BOTH_EDGE); 90 reg_both = __raw_readl(base + GPIO_INT_BOTH_EDGE);
91 91
92 switch (type) { 92 switch (type) {
@@ -117,7 +117,7 @@ static int gpio_set_irq_type(unsigned int irq, unsigned int type)
117 } 117 }
118 118
119 __raw_writel(reg_type, base + GPIO_INT_TYPE); 119 __raw_writel(reg_type, base + GPIO_INT_TYPE);
120 __raw_writel(reg_level, base + GPIO_INT_BOTH_EDGE); 120 __raw_writel(reg_level, base + GPIO_INT_LEVEL);
121 __raw_writel(reg_both, base + GPIO_INT_BOTH_EDGE); 121 __raw_writel(reg_both, base + GPIO_INT_BOTH_EDGE);
122 122
123 gpio_ack_irq(irq); 123 gpio_ack_irq(irq);
diff --git a/arch/arm/mach-gemini/include/mach/uncompress.h b/arch/arm/mach-gemini/include/mach/uncompress.h
index 59c5df7e716c..5483f61a8061 100644
--- a/arch/arm/mach-gemini/include/mach/uncompress.h
+++ b/arch/arm/mach-gemini/include/mach/uncompress.h
@@ -30,7 +30,9 @@ static inline void putc(char c)
30 UART[UART_TX] = c; 30 UART[UART_TX] = c;
31} 31}
32 32
33#define flush() do { } while (0) 33static inline void flush(void)
34{
35}
34 36
35/* 37/*
36 * nothing to do 38 * nothing to do
diff --git a/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c b/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c
index 8bf4153d0840..3bf6304158f6 100644
--- a/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c
+++ b/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c
@@ -13,6 +13,7 @@
13#include <linux/platform_device.h> 13#include <linux/platform_device.h>
14#include <linux/ata_platform.h> 14#include <linux/ata_platform.h>
15#include <linux/mv643xx_eth.h> 15#include <linux/mv643xx_eth.h>
16#include <linux/gpio.h>
16#include <linux/spi/flash.h> 17#include <linux/spi/flash.h>
17#include <linux/spi/spi.h> 18#include <linux/spi/spi.h>
18#include <linux/spi/orion_spi.h> 19#include <linux/spi/orion_spi.h>
@@ -53,6 +54,11 @@ static void __init rd88f6192_init(void)
53 */ 54 */
54 kirkwood_init(); 55 kirkwood_init();
55 56
57 orion_gpio_set_valid(RD88F6192_GPIO_USB_VBUS, 1);
58 if (gpio_request(RD88F6192_GPIO_USB_VBUS, "USB VBUS") != 0 ||
59 gpio_direction_output(RD88F6192_GPIO_USB_VBUS, 1) != 0)
60 pr_err("RD-88F6192-NAS: failed to setup USB VBUS GPIO\n");
61
56 kirkwood_ehci_init(); 62 kirkwood_ehci_init();
57 kirkwood_ge00_init(&rd88f6192_ge00_data); 63 kirkwood_ge00_init(&rd88f6192_ge00_data);
58 kirkwood_sata_init(&rd88f6192_sata_data); 64 kirkwood_sata_init(&rd88f6192_sata_data);
diff --git a/arch/arm/mach-lh7a40x/clocks.c b/arch/arm/mach-lh7a40x/clocks.c
index fcaf876f19b6..0651f96653f9 100644
--- a/arch/arm/mach-lh7a40x/clocks.c
+++ b/arch/arm/mach-lh7a40x/clocks.c
@@ -10,6 +10,8 @@
10#include <mach/hardware.h> 10#include <mach/hardware.h>
11#include <mach/clocks.h> 11#include <mach/clocks.h>
12#include <linux/err.h> 12#include <linux/err.h>
13#include <linux/device.h>
14#include <linux/string.h>
13 15
14struct module; 16struct module;
15 17
diff --git a/arch/arm/mach-mmp/ttc_dkb.c b/arch/arm/mach-mmp/ttc_dkb.c
index 8f49b2b12608..b22dec4abf78 100644
--- a/arch/arm/mach-mmp/ttc_dkb.c
+++ b/arch/arm/mach-mmp/ttc_dkb.c
@@ -24,8 +24,6 @@
24 24
25#include "common.h" 25#include "common.h"
26 26
27#define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x)
28
29static unsigned long ttc_dkb_pin_config[] __initdata = { 27static unsigned long ttc_dkb_pin_config[] __initdata = {
30 /* UART2 */ 28 /* UART2 */
31 GPIO47_UART2_RXD, 29 GPIO47_UART2_RXD,
diff --git a/arch/arm/mach-mx2/mxt_td60.c b/arch/arm/mach-mx2/mxt_td60.c
index 03dbbdc98955..8bcc1a5b8829 100644
--- a/arch/arm/mach-mx2/mxt_td60.c
+++ b/arch/arm/mach-mx2/mxt_td60.c
@@ -58,21 +58,6 @@ static unsigned int mxt_td60_pins[] __initdata = {
58 PE9_PF_UART3_RXD, 58 PE9_PF_UART3_RXD,
59 PE10_PF_UART3_CTS, 59 PE10_PF_UART3_CTS,
60 PE11_PF_UART3_RTS, 60 PE11_PF_UART3_RTS,
61 /* UART3 */
62 PB26_AF_UART4_RTS,
63 PB28_AF_UART4_TXD,
64 PB29_AF_UART4_CTS,
65 PB31_AF_UART4_RXD,
66 /* UART4 */
67 PB18_AF_UART5_TXD,
68 PB19_AF_UART5_RXD,
69 PB20_AF_UART5_CTS,
70 PB21_AF_UART5_RTS,
71 /* UART5 */
72 PB10_AF_UART6_TXD,
73 PB12_AF_UART6_CTS,
74 PB11_AF_UART6_RXD,
75 PB13_AF_UART6_RTS,
76 /* FEC */ 61 /* FEC */
77 PD0_AIN_FEC_TXD0, 62 PD0_AIN_FEC_TXD0,
78 PD1_AIN_FEC_TXD1, 63 PD1_AIN_FEC_TXD1,
@@ -261,12 +246,6 @@ static struct imxuart_platform_data uart_pdata[] = {
261 .flags = IMXUART_HAVE_RTSCTS, 246 .flags = IMXUART_HAVE_RTSCTS,
262 }, { 247 }, {
263 .flags = IMXUART_HAVE_RTSCTS, 248 .flags = IMXUART_HAVE_RTSCTS,
264 }, {
265 .flags = IMXUART_HAVE_RTSCTS,
266 }, {
267 .flags = IMXUART_HAVE_RTSCTS,
268 }, {
269 .flags = IMXUART_HAVE_RTSCTS,
270 }, 249 },
271}; 250};
272 251
@@ -278,9 +257,6 @@ static void __init mxt_td60_board_init(void)
278 mxc_register_device(&mxc_uart_device0, &uart_pdata[0]); 257 mxc_register_device(&mxc_uart_device0, &uart_pdata[0]);
279 mxc_register_device(&mxc_uart_device1, &uart_pdata[1]); 258 mxc_register_device(&mxc_uart_device1, &uart_pdata[1]);
280 mxc_register_device(&mxc_uart_device2, &uart_pdata[2]); 259 mxc_register_device(&mxc_uart_device2, &uart_pdata[2]);
281 mxc_register_device(&mxc_uart_device3, &uart_pdata[3]);
282 mxc_register_device(&mxc_uart_device4, &uart_pdata[4]);
283 mxc_register_device(&mxc_uart_device5, &uart_pdata[5]);
284 mxc_register_device(&mxc_nand_device, &mxt_td60_nand_board_info); 260 mxc_register_device(&mxc_nand_device, &mxt_td60_nand_board_info);
285 261
286 i2c_register_board_info(0, mxt_td60_i2c_devices, 262 i2c_register_board_info(0, mxt_td60_i2c_devices,
diff --git a/arch/arm/mach-mx25/clock.c b/arch/arm/mach-mx25/clock.c
index ef26951a5275..6acc88bcdc40 100644
--- a/arch/arm/mach-mx25/clock.c
+++ b/arch/arm/mach-mx25/clock.c
@@ -119,6 +119,11 @@ static unsigned long get_rate_nfc(struct clk *clk)
119 return get_rate_per(8); 119 return get_rate_per(8);
120} 120}
121 121
122static unsigned long get_rate_gpt(struct clk *clk)
123{
124 return get_rate_per(5);
125}
126
122static unsigned long get_rate_otg(struct clk *clk) 127static unsigned long get_rate_otg(struct clk *clk)
123{ 128{
124 return 48000000; /* FIXME */ 129 return 48000000; /* FIXME */
@@ -144,7 +149,7 @@ static void clk_cgcr_disable(struct clk *clk)
144 __raw_writel(reg, clk->enable_reg); 149 __raw_writel(reg, clk->enable_reg);
145} 150}
146 151
147#define DEFINE_CLOCK(name, i, er, es, gr, sr) \ 152#define DEFINE_CLOCK(name, i, er, es, gr, sr, s) \
148 static struct clk name = { \ 153 static struct clk name = { \
149 .id = i, \ 154 .id = i, \
150 .enable_reg = CRM_BASE + er, \ 155 .enable_reg = CRM_BASE + er, \
@@ -153,26 +158,30 @@ static void clk_cgcr_disable(struct clk *clk)
153 .set_rate = sr, \ 158 .set_rate = sr, \
154 .enable = clk_cgcr_enable, \ 159 .enable = clk_cgcr_enable, \
155 .disable = clk_cgcr_disable, \ 160 .disable = clk_cgcr_disable, \
161 .secondary = s, \
156 } 162 }
157 163
158DEFINE_CLOCK(gpt_clk, 0, CCM_CGCR0, 5, get_rate_ipg, NULL); 164DEFINE_CLOCK(gpt_clk, 0, CCM_CGCR0, 5, get_rate_gpt, NULL, NULL);
159DEFINE_CLOCK(cspi1_clk, 0, CCM_CGCR1, 5, get_rate_ipg, NULL); 165DEFINE_CLOCK(uart_per_clk, 0, CCM_CGCR0, 15, get_rate_uart, NULL, NULL);
160DEFINE_CLOCK(cspi2_clk, 0, CCM_CGCR1, 6, get_rate_ipg, NULL); 166DEFINE_CLOCK(cspi1_clk, 0, CCM_CGCR1, 5, get_rate_ipg, NULL, NULL);
161DEFINE_CLOCK(cspi3_clk, 0, CCM_CGCR1, 7, get_rate_ipg, NULL); 167DEFINE_CLOCK(cspi2_clk, 0, CCM_CGCR1, 6, get_rate_ipg, NULL, NULL);
162DEFINE_CLOCK(uart1_clk, 0, CCM_CGCR2, 14, get_rate_uart, NULL); 168DEFINE_CLOCK(cspi3_clk, 0, CCM_CGCR1, 7, get_rate_ipg, NULL, NULL);
163DEFINE_CLOCK(uart2_clk, 0, CCM_CGCR2, 15, get_rate_uart, NULL); 169DEFINE_CLOCK(fec_ahb_clk, 0, CCM_CGCR0, 23, NULL, NULL, NULL);
164DEFINE_CLOCK(uart3_clk, 0, CCM_CGCR2, 16, get_rate_uart, NULL); 170DEFINE_CLOCK(uart1_clk, 0, CCM_CGCR2, 14, get_rate_uart, NULL, &uart_per_clk);
165DEFINE_CLOCK(uart4_clk, 0, CCM_CGCR2, 17, get_rate_uart, NULL); 171DEFINE_CLOCK(uart2_clk, 0, CCM_CGCR2, 15, get_rate_uart, NULL, &uart_per_clk);
166DEFINE_CLOCK(uart5_clk, 0, CCM_CGCR2, 18, get_rate_uart, NULL); 172DEFINE_CLOCK(uart3_clk, 0, CCM_CGCR2, 16, get_rate_uart, NULL, &uart_per_clk);
167DEFINE_CLOCK(nfc_clk, 0, CCM_CGCR0, 8, get_rate_nfc, NULL); 173DEFINE_CLOCK(uart4_clk, 0, CCM_CGCR2, 17, get_rate_uart, NULL, &uart_per_clk);
168DEFINE_CLOCK(usbotg_clk, 0, CCM_CGCR0, 28, get_rate_otg, NULL); 174DEFINE_CLOCK(uart5_clk, 0, CCM_CGCR2, 18, get_rate_uart, NULL, &uart_per_clk);
169DEFINE_CLOCK(pwm1_clk, 0, CCM_CGCR1, 31, get_rate_ipg, NULL); 175DEFINE_CLOCK(nfc_clk, 0, CCM_CGCR0, 8, get_rate_nfc, NULL, NULL);
170DEFINE_CLOCK(pwm2_clk, 0, CCM_CGCR2, 0, get_rate_ipg, NULL); 176DEFINE_CLOCK(usbotg_clk, 0, CCM_CGCR0, 28, get_rate_otg, NULL, NULL);
171DEFINE_CLOCK(pwm3_clk, 0, CCM_CGCR2, 1, get_rate_ipg, NULL); 177DEFINE_CLOCK(pwm1_clk, 0, CCM_CGCR1, 31, get_rate_ipg, NULL, NULL);
172DEFINE_CLOCK(pwm4_clk, 0, CCM_CGCR2, 2, get_rate_ipg, NULL); 178DEFINE_CLOCK(pwm2_clk, 0, CCM_CGCR2, 0, get_rate_ipg, NULL, NULL);
173DEFINE_CLOCK(kpp_clk, 0, CCM_CGCR1, 28, get_rate_ipg, NULL); 179DEFINE_CLOCK(pwm3_clk, 0, CCM_CGCR2, 1, get_rate_ipg, NULL, NULL);
174DEFINE_CLOCK(tsc_clk, 0, CCM_CGCR2, 13, get_rate_ipg, NULL); 180DEFINE_CLOCK(pwm4_clk, 0, CCM_CGCR2, 2, get_rate_ipg, NULL, NULL);
175DEFINE_CLOCK(i2c_clk, 0, CCM_CGCR0, 6, get_rate_i2c, NULL); 181DEFINE_CLOCK(kpp_clk, 0, CCM_CGCR1, 28, get_rate_ipg, NULL, NULL);
182DEFINE_CLOCK(tsc_clk, 0, CCM_CGCR2, 13, get_rate_ipg, NULL, NULL);
183DEFINE_CLOCK(i2c_clk, 0, CCM_CGCR0, 6, get_rate_i2c, NULL, NULL);
184DEFINE_CLOCK(fec_clk, 0, CCM_CGCR1, 15, get_rate_ipg, NULL, &fec_ahb_clk);
176 185
177#define _REGISTER_CLOCK(d, n, c) \ 186#define _REGISTER_CLOCK(d, n, c) \
178 { \ 187 { \
@@ -204,15 +213,24 @@ static struct clk_lookup lookups[] = {
204 _REGISTER_CLOCK("imx-i2c.0", NULL, i2c_clk) 213 _REGISTER_CLOCK("imx-i2c.0", NULL, i2c_clk)
205 _REGISTER_CLOCK("imx-i2c.1", NULL, i2c_clk) 214 _REGISTER_CLOCK("imx-i2c.1", NULL, i2c_clk)
206 _REGISTER_CLOCK("imx-i2c.2", NULL, i2c_clk) 215 _REGISTER_CLOCK("imx-i2c.2", NULL, i2c_clk)
216 _REGISTER_CLOCK("fec.0", NULL, fec_clk)
207}; 217};
208 218
209int __init mx25_clocks_init(unsigned long fref) 219int __init mx25_clocks_init(void)
210{ 220{
211 int i; 221 int i;
212 222
213 for (i = 0; i < ARRAY_SIZE(lookups); i++) 223 for (i = 0; i < ARRAY_SIZE(lookups); i++)
214 clkdev_add(&lookups[i]); 224 clkdev_add(&lookups[i]);
215 225
226 /* Turn off all clocks except the ones we need to survive, namely:
227 * EMI, GPIO1-3 (CCM_CGCR1[18:16]), GPT1, IOMUXC (CCM_CGCR1[27]), IIM,
228 * SCC
229 */
230 __raw_writel((1 << 19), CRM_BASE + CCM_CGCR0);
231 __raw_writel((0xf << 16) | (3 << 26), CRM_BASE + CCM_CGCR1);
232 __raw_writel((1 << 5), CRM_BASE + CCM_CGCR2);
233
216 mxc_timer_init(&gpt_clk, MX25_IO_ADDRESS(MX25_GPT1_BASE_ADDR), 54); 234 mxc_timer_init(&gpt_clk, MX25_IO_ADDRESS(MX25_GPT1_BASE_ADDR), 54);
217 235
218 return 0; 236 return 0;
diff --git a/arch/arm/mach-mx25/devices.c b/arch/arm/mach-mx25/devices.c
index 63511de3a559..9fdeea1c083b 100644
--- a/arch/arm/mach-mx25/devices.c
+++ b/arch/arm/mach-mx25/devices.c
@@ -419,3 +419,22 @@ int __init mxc_register_gpios(void)
419 return mxc_gpio_init(imx_gpio_ports, ARRAY_SIZE(imx_gpio_ports)); 419 return mxc_gpio_init(imx_gpio_ports, ARRAY_SIZE(imx_gpio_ports));
420} 420}
421 421
422static struct resource mx25_fec_resources[] = {
423 {
424 .start = MX25_FEC_BASE_ADDR,
425 .end = MX25_FEC_BASE_ADDR + 0xfff,
426 .flags = IORESOURCE_MEM,
427 },
428 {
429 .start = MX25_INT_FEC,
430 .end = MX25_INT_FEC,
431 .flags = IORESOURCE_IRQ,
432 },
433};
434
435struct platform_device mx25_fec_device = {
436 .name = "fec",
437 .id = 0,
438 .num_resources = ARRAY_SIZE(mx25_fec_resources),
439 .resource = mx25_fec_resources,
440};
diff --git a/arch/arm/mach-mx25/devices.h b/arch/arm/mach-mx25/devices.h
index fe6bf88ad1dd..fe5420fcd11f 100644
--- a/arch/arm/mach-mx25/devices.h
+++ b/arch/arm/mach-mx25/devices.h
@@ -17,3 +17,4 @@ extern struct platform_device mxc_keypad_device;
17extern struct platform_device mxc_i2c_device0; 17extern struct platform_device mxc_i2c_device0;
18extern struct platform_device mxc_i2c_device1; 18extern struct platform_device mxc_i2c_device1;
19extern struct platform_device mxc_i2c_device2; 19extern struct platform_device mxc_i2c_device2;
20extern struct platform_device mx25_fec_device;
diff --git a/arch/arm/mach-mx25/mx25pdk.c b/arch/arm/mach-mx25/mx25pdk.c
index d23ae571c03f..6f06089246eb 100644
--- a/arch/arm/mach-mx25/mx25pdk.c
+++ b/arch/arm/mach-mx25/mx25pdk.c
@@ -18,10 +18,11 @@
18 18
19#include <linux/types.h> 19#include <linux/types.h>
20#include <linux/init.h> 20#include <linux/init.h>
21#include <linux/delay.h>
21#include <linux/clk.h> 22#include <linux/clk.h>
22#include <linux/irq.h> 23#include <linux/irq.h>
23#include <linux/gpio.h> 24#include <linux/gpio.h>
24#include <linux/smsc911x.h> 25#include <linux/fec.h>
25#include <linux/platform_device.h> 26#include <linux/platform_device.h>
26 27
27#include <mach/hardware.h> 28#include <mach/hardware.h>
@@ -35,21 +36,62 @@
35#include <mach/mx25.h> 36#include <mach/mx25.h>
36#include <mach/mxc_nand.h> 37#include <mach/mxc_nand.h>
37#include "devices.h" 38#include "devices.h"
38#include <mach/iomux-v3.h> 39#include <mach/iomux.h>
39 40
40static struct imxuart_platform_data uart_pdata = { 41static struct imxuart_platform_data uart_pdata = {
41 .flags = IMXUART_HAVE_RTSCTS, 42 .flags = IMXUART_HAVE_RTSCTS,
42}; 43};
43 44
45static struct pad_desc mx25pdk_pads[] = {
46 MX25_PAD_FEC_MDC__FEC_MDC,
47 MX25_PAD_FEC_MDIO__FEC_MDIO,
48 MX25_PAD_FEC_TDATA0__FEC_TDATA0,
49 MX25_PAD_FEC_TDATA1__FEC_TDATA1,
50 MX25_PAD_FEC_TX_EN__FEC_TX_EN,
51 MX25_PAD_FEC_RDATA0__FEC_RDATA0,
52 MX25_PAD_FEC_RDATA1__FEC_RDATA1,
53 MX25_PAD_FEC_RX_DV__FEC_RX_DV,
54 MX25_PAD_FEC_TX_CLK__FEC_TX_CLK,
55 MX25_PAD_A17__GPIO_2_3, /* FEC_EN, GPIO 35 */
56 MX25_PAD_D12__GPIO_4_8, /* FEC_RESET_B, GPIO 104 */
57};
58
59static struct fec_platform_data mx25_fec_pdata = {
60 .phy = PHY_INTERFACE_MODE_RMII,
61};
62
63#define FEC_ENABLE_GPIO 35
64#define FEC_RESET_B_GPIO 104
65
66static void __init mx25pdk_fec_reset(void)
67{
68 gpio_request(FEC_ENABLE_GPIO, "FEC PHY enable");
69 gpio_request(FEC_RESET_B_GPIO, "FEC PHY reset");
70
71 gpio_direction_output(FEC_ENABLE_GPIO, 0); /* drop PHY power */
72 gpio_direction_output(FEC_RESET_B_GPIO, 0); /* assert reset */
73 udelay(2);
74
75 /* turn on PHY power and lift reset */
76 gpio_set_value(FEC_ENABLE_GPIO, 1);
77 gpio_set_value(FEC_RESET_B_GPIO, 1);
78}
79
44static void __init mx25pdk_init(void) 80static void __init mx25pdk_init(void)
45{ 81{
82 mxc_iomux_v3_setup_multiple_pads(mx25pdk_pads,
83 ARRAY_SIZE(mx25pdk_pads));
84
46 mxc_register_device(&mxc_uart_device0, &uart_pdata); 85 mxc_register_device(&mxc_uart_device0, &uart_pdata);
47 mxc_register_device(&mxc_usbh2, NULL); 86 mxc_register_device(&mxc_usbh2, NULL);
87
88 mx25pdk_fec_reset();
89 mxc_register_device(&mx25_fec_device, &mx25_fec_pdata);
48} 90}
49 91
50static void __init mx25pdk_timer_init(void) 92static void __init mx25pdk_timer_init(void)
51{ 93{
52 mx25_clocks_init(26000000); 94 mx25_clocks_init();
53} 95}
54 96
55static struct sys_timer mx25pdk_timer = { 97static struct sys_timer mx25pdk_timer = {
diff --git a/arch/arm/mach-mx3/Kconfig b/arch/arm/mach-mx3/Kconfig
index ea8ed109a7c2..28294416b0af 100644
--- a/arch/arm/mach-mx3/Kconfig
+++ b/arch/arm/mach-mx3/Kconfig
@@ -49,6 +49,7 @@ config MACH_PCM037_EET
49config MACH_MX31LITE 49config MACH_MX31LITE
50 bool "Support MX31 LITEKIT (LogicPD)" 50 bool "Support MX31 LITEKIT (LogicPD)"
51 select ARCH_MX31 51 select ARCH_MX31
52 select MXC_ULPI if USB_ULPI
52 help 53 help
53 Include support for MX31 LITEKIT platform. This includes specific 54 Include support for MX31 LITEKIT platform. This includes specific
54 configurations for the board and its peripherals. 55 configurations for the board and its peripherals.
@@ -63,7 +64,7 @@ config MACH_MX31_3DS
63config MACH_MX31MOBOARD 64config MACH_MX31MOBOARD
64 bool "Support mx31moboard platforms (EPFL Mobots group)" 65 bool "Support mx31moboard platforms (EPFL Mobots group)"
65 select ARCH_MX31 66 select ARCH_MX31
66 select MXC_ULPI 67 select MXC_ULPI if USB_ULPI
67 help 68 help
68 Include support for mx31moboard platform. This includes specific 69 Include support for mx31moboard platform. This includes specific
69 configurations for the board and its peripherals. 70 configurations for the board and its peripherals.
diff --git a/arch/arm/mach-mx3/mm.c b/arch/arm/mach-mx3/mm.c
index bedf5b8d976a..6858a4f9806c 100644
--- a/arch/arm/mach-mx3/mm.c
+++ b/arch/arm/mach-mx3/mm.c
@@ -65,6 +65,11 @@ static struct map_desc mxc_io_desc[] __initdata = {
65 .pfn = __phys_to_pfn(AIPS2_BASE_ADDR), 65 .pfn = __phys_to_pfn(AIPS2_BASE_ADDR),
66 .length = AIPS2_SIZE, 66 .length = AIPS2_SIZE,
67 .type = MT_DEVICE_NONSHARED 67 .type = MT_DEVICE_NONSHARED
68 }, {
69 .virtual = SPBA0_BASE_ADDR_VIRT,
70 .pfn = __phys_to_pfn(SPBA0_BASE_ADDR),
71 .length = SPBA0_SIZE,
72 .type = MT_DEVICE_NONSHARED
68 }, 73 },
69}; 74};
70 75
diff --git a/arch/arm/mach-mx3/mx31ads.c b/arch/arm/mach-mx3/mx31ads.c
index 0497c152be18..938c549767dc 100644
--- a/arch/arm/mach-mx3/mx31ads.c
+++ b/arch/arm/mach-mx3/mx31ads.c
@@ -173,6 +173,7 @@ static void expio_unmask_irq(u32 irq)
173} 173}
174 174
175static struct irq_chip expio_irq_chip = { 175static struct irq_chip expio_irq_chip = {
176 .name = "EXPIO(CPLD)",
176 .ack = expio_ack_irq, 177 .ack = expio_ack_irq,
177 .mask = expio_mask_irq, 178 .mask = expio_mask_irq,
178 .unmask = expio_unmask_irq, 179 .unmask = expio_unmask_irq,
@@ -302,6 +303,7 @@ static struct regulator_init_data ldo1_data = {
302 .min_uV = 2800000, 303 .min_uV = 2800000,
303 .max_uV = 2800000, 304 .max_uV = 2800000,
304 .valid_modes_mask = REGULATOR_MODE_NORMAL, 305 .valid_modes_mask = REGULATOR_MODE_NORMAL,
306 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
305 .apply_uV = 1, 307 .apply_uV = 1,
306 }, 308 },
307}; 309};
@@ -322,6 +324,7 @@ static struct regulator_init_data ldo2_data = {
322 .min_uV = 3300000, 324 .min_uV = 3300000,
323 .max_uV = 3300000, 325 .max_uV = 3300000,
324 .valid_modes_mask = REGULATOR_MODE_NORMAL, 326 .valid_modes_mask = REGULATOR_MODE_NORMAL,
327 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
325 .apply_uV = 1, 328 .apply_uV = 1,
326 }, 329 },
327 .num_consumer_supplies = ARRAY_SIZE(ldo2_consumers), 330 .num_consumer_supplies = ARRAY_SIZE(ldo2_consumers),
@@ -459,6 +462,7 @@ static int mx31_wm8350_init(struct wm8350 *wm8350)
459 462
460static struct wm8350_platform_data __initdata mx31_wm8350_pdata = { 463static struct wm8350_platform_data __initdata mx31_wm8350_pdata = {
461 .init = mx31_wm8350_init, 464 .init = mx31_wm8350_init,
465 .irq_base = MXC_BOARD_IRQ_START + MXC_MAX_EXP_IO_LINES,
462}; 466};
463#endif 467#endif
464 468
@@ -494,11 +498,6 @@ static void mxc_init_i2c(void)
494 */ 498 */
495static struct map_desc mx31ads_io_desc[] __initdata = { 499static struct map_desc mx31ads_io_desc[] __initdata = {
496 { 500 {
497 .virtual = SPBA0_BASE_ADDR_VIRT,
498 .pfn = __phys_to_pfn(SPBA0_BASE_ADDR),
499 .length = SPBA0_SIZE,
500 .type = MT_DEVICE_NONSHARED
501 }, {
502 .virtual = CS4_BASE_ADDR_VIRT, 501 .virtual = CS4_BASE_ADDR_VIRT,
503 .pfn = __phys_to_pfn(CS4_BASE_ADDR), 502 .pfn = __phys_to_pfn(CS4_BASE_ADDR),
504 .length = CS4_SIZE / 2, 503 .length = CS4_SIZE / 2,
diff --git a/arch/arm/mach-mx3/mx31lite.c b/arch/arm/mach-mx3/mx31lite.c
index def6b6736594..789b20d1730f 100644
--- a/arch/arm/mach-mx3/mx31lite.c
+++ b/arch/arm/mach-mx3/mx31lite.c
@@ -135,6 +135,7 @@ static struct spi_board_info mc13783_spi_dev __initdata = {
135 * USB 135 * USB
136 */ 136 */
137 137
138#if defined(CONFIG_USB_ULPI)
138#define USB_PAD_CFG (PAD_CTL_DRV_MAX | PAD_CTL_SRE_FAST | PAD_CTL_HYS_CMOS | \ 139#define USB_PAD_CFG (PAD_CTL_DRV_MAX | PAD_CTL_SRE_FAST | PAD_CTL_HYS_CMOS | \
139 PAD_CTL_ODE_CMOS | PAD_CTL_100K_PU) 140 PAD_CTL_ODE_CMOS | PAD_CTL_100K_PU)
140 141
@@ -180,6 +181,7 @@ static struct mxc_usbh_platform_data usbh2_pdata = {
180 .portsc = MXC_EHCI_MODE_ULPI | MXC_EHCI_UTMI_8BIT, 181 .portsc = MXC_EHCI_MODE_ULPI | MXC_EHCI_UTMI_8BIT,
181 .flags = MXC_EHCI_POWER_PINS_ENABLED, 182 .flags = MXC_EHCI_POWER_PINS_ENABLED,
182}; 183};
184#endif
183 185
184/* 186/*
185 * NOR flash 187 * NOR flash
@@ -212,11 +214,6 @@ static struct platform_device physmap_flash_device = {
212 */ 214 */
213static struct map_desc mx31lite_io_desc[] __initdata = { 215static struct map_desc mx31lite_io_desc[] __initdata = {
214 { 216 {
215 .virtual = SPBA0_BASE_ADDR_VIRT,
216 .pfn = __phys_to_pfn(SPBA0_BASE_ADDR),
217 .length = SPBA0_SIZE,
218 .type = MT_DEVICE_NONSHARED
219 }, {
220 .virtual = CS4_BASE_ADDR_VIRT, 217 .virtual = CS4_BASE_ADDR_VIRT,
221 .pfn = __phys_to_pfn(CS4_BASE_ADDR), 218 .pfn = __phys_to_pfn(CS4_BASE_ADDR),
222 .length = CS4_SIZE, 219 .length = CS4_SIZE,
@@ -261,11 +258,13 @@ static void __init mxc_board_init(void)
261 mxc_register_device(&mxc_spi_device1, &spi1_pdata); 258 mxc_register_device(&mxc_spi_device1, &spi1_pdata);
262 spi_register_board_info(&mc13783_spi_dev, 1); 259 spi_register_board_info(&mc13783_spi_dev, 1);
263 260
261#if defined(CONFIG_USB_ULPI)
264 /* USB */ 262 /* USB */
265 usbh2_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, 263 usbh2_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops,
266 USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT); 264 USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT);
267 265
268 mxc_register_device(&mxc_usbh2, &usbh2_pdata); 266 mxc_register_device(&mxc_usbh2, &usbh2_pdata);
267#endif
269 268
270 /* SMSC9117 IRQ pin */ 269 /* SMSC9117 IRQ pin */
271 ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_SFS6), "sms9117-irq"); 270 ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_SFS6), "sms9117-irq");
diff --git a/arch/arm/mach-mx3/mx31moboard-devboard.c b/arch/arm/mach-mx3/mx31moboard-devboard.c
index 8fc624f141cb..438428eaf769 100644
--- a/arch/arm/mach-mx3/mx31moboard-devboard.c
+++ b/arch/arm/mach-mx3/mx31moboard-devboard.c
@@ -179,7 +179,7 @@ static int __init devboard_usbh1_init(void)
179 179
180 usbh1_pdata.otg = otg; 180 usbh1_pdata.otg = otg;
181 181
182 return mxc_register_device(&mx31_usbh1, &usbh1_pdata); 182 return mxc_register_device(&mxc_usbh1, &usbh1_pdata);
183} 183}
184 184
185/* 185/*
diff --git a/arch/arm/mach-mx3/mx31moboard-marxbot.c b/arch/arm/mach-mx3/mx31moboard-marxbot.c
index 85184a35e674..1f44b9ccbb0f 100644
--- a/arch/arm/mach-mx3/mx31moboard-marxbot.c
+++ b/arch/arm/mach-mx3/mx31moboard-marxbot.c
@@ -294,7 +294,7 @@ static int __init marxbot_usbh1_init(void)
294 294
295 usbh1_pdata.otg = otg; 295 usbh1_pdata.otg = otg;
296 296
297 return mxc_register_device(&mx31_usbh1, &usbh1_pdata); 297 return mxc_register_device(&mxc_usbh1, &usbh1_pdata);
298} 298}
299 299
300/* 300/*
diff --git a/arch/arm/mach-mx3/mx31moboard.c b/arch/arm/mach-mx3/mx31moboard.c
index b70529145936..cfd605d078ec 100644
--- a/arch/arm/mach-mx3/mx31moboard.c
+++ b/arch/arm/mach-mx3/mx31moboard.c
@@ -346,6 +346,8 @@ static struct fsl_usb2_platform_data usb_pdata = {
346 .phy_mode = FSL_USB2_PHY_ULPI, 346 .phy_mode = FSL_USB2_PHY_ULPI,
347}; 347};
348 348
349#if defined(CONFIG_USB_ULPI)
350
349#define USBH2_EN_B IOMUX_TO_GPIO(MX31_PIN_SCK6) 351#define USBH2_EN_B IOMUX_TO_GPIO(MX31_PIN_SCK6)
350 352
351static int moboard_usbh2_hw_init(struct platform_device *pdev) 353static int moboard_usbh2_hw_init(struct platform_device *pdev)
@@ -392,8 +394,11 @@ static int __init moboard_usbh2_init(void)
392 usbh2_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, 394 usbh2_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops,
393 USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT); 395 USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT);
394 396
395 return mxc_register_device(&mx31_usbh2, &usbh2_pdata); 397 return mxc_register_device(&mxc_usbh2, &usbh2_pdata);
396} 398}
399#else
400static inline int moboard_usbh2_init(void) { return 0; }
401#endif
397 402
398 403
399static struct gpio_led mx31moboard_leds[] = { 404static struct gpio_led mx31moboard_leds[] = {
diff --git a/arch/arm/mach-mx3/mx31pdk.c b/arch/arm/mach-mx3/mx31pdk.c
index 0f7a2f06bc2d..18715f1aa7eb 100644
--- a/arch/arm/mach-mx3/mx31pdk.c
+++ b/arch/arm/mach-mx3/mx31pdk.c
@@ -211,11 +211,6 @@ static int __init mx31pdk_init_expio(void)
211 */ 211 */
212static struct map_desc mx31pdk_io_desc[] __initdata = { 212static struct map_desc mx31pdk_io_desc[] __initdata = {
213 { 213 {
214 .virtual = SPBA0_BASE_ADDR_VIRT,
215 .pfn = __phys_to_pfn(SPBA0_BASE_ADDR),
216 .length = SPBA0_SIZE,
217 .type = MT_DEVICE_NONSHARED,
218 }, {
219 .virtual = CS5_BASE_ADDR_VIRT, 214 .virtual = CS5_BASE_ADDR_VIRT,
220 .pfn = __phys_to_pfn(CS5_BASE_ADDR), 215 .pfn = __phys_to_pfn(CS5_BASE_ADDR),
221 .length = CS5_SIZE, 216 .length = CS5_SIZE,
diff --git a/arch/arm/mach-mx3/pcm037.c b/arch/arm/mach-mx3/pcm037.c
index 6cbaabedf386..5be396917c99 100644
--- a/arch/arm/mach-mx3/pcm037.c
+++ b/arch/arm/mach-mx3/pcm037.c
@@ -322,16 +322,25 @@ static int pcm037_camera_power(struct device *dev, int on)
322 return 0; 322 return 0;
323} 323}
324 324
325static struct i2c_board_info pcm037_i2c_2_devices[] = { 325static struct i2c_board_info pcm037_i2c_camera[] = {
326 { 326 {
327 I2C_BOARD_INFO("mt9t031", 0x5d), 327 I2C_BOARD_INFO("mt9t031", 0x5d),
328 }, {
329 I2C_BOARD_INFO("mt9v022", 0x48),
328 }, 330 },
329}; 331};
330 332
331static struct soc_camera_link iclink = { 333static struct soc_camera_link iclink_mt9v022 = {
334 .bus_id = 0, /* Must match with the camera ID */
335 .board_info = &pcm037_i2c_camera[1],
336 .i2c_adapter_id = 2,
337 .module_name = "mt9v022",
338};
339
340static struct soc_camera_link iclink_mt9t031 = {
332 .bus_id = 0, /* Must match with the camera ID */ 341 .bus_id = 0, /* Must match with the camera ID */
333 .power = pcm037_camera_power, 342 .power = pcm037_camera_power,
334 .board_info = &pcm037_i2c_2_devices[0], 343 .board_info = &pcm037_i2c_camera[0],
335 .i2c_adapter_id = 2, 344 .i2c_adapter_id = 2,
336 .module_name = "mt9t031", 345 .module_name = "mt9t031",
337}; 346};
@@ -345,11 +354,19 @@ static struct i2c_board_info pcm037_i2c_devices[] = {
345 } 354 }
346}; 355};
347 356
348static struct platform_device pcm037_camera = { 357static struct platform_device pcm037_mt9t031 = {
349 .name = "soc-camera-pdrv", 358 .name = "soc-camera-pdrv",
350 .id = 0, 359 .id = 0,
351 .dev = { 360 .dev = {
352 .platform_data = &iclink, 361 .platform_data = &iclink_mt9t031,
362 },
363};
364
365static struct platform_device pcm037_mt9v022 = {
366 .name = "soc-camera-pdrv",
367 .id = 1,
368 .dev = {
369 .platform_data = &iclink_mt9v022,
353 }, 370 },
354}; 371};
355 372
@@ -449,7 +466,8 @@ static int __init pcm037_camera_alloc_dma(const size_t buf_size)
449static struct platform_device *devices[] __initdata = { 466static struct platform_device *devices[] __initdata = {
450 &pcm037_flash, 467 &pcm037_flash,
451 &pcm037_sram_device, 468 &pcm037_sram_device,
452 &pcm037_camera, 469 &pcm037_mt9t031,
470 &pcm037_mt9v022,
453}; 471};
454 472
455static struct ipu_platform_data mx3_ipu_data = { 473static struct ipu_platform_data mx3_ipu_data = {
@@ -599,7 +617,7 @@ static void __init mxc_board_init(void)
599 if (!ret) 617 if (!ret)
600 gpio_direction_output(IOMUX_TO_GPIO(MX31_PIN_CSI_D5), 1); 618 gpio_direction_output(IOMUX_TO_GPIO(MX31_PIN_CSI_D5), 1);
601 else 619 else
602 iclink.power = NULL; 620 iclink_mt9t031.power = NULL;
603 621
604 if (!pcm037_camera_alloc_dma(4 * 1024 * 1024)) 622 if (!pcm037_camera_alloc_dma(4 * 1024 * 1024))
605 mxc_register_device(&mx3_camera, &camera_pdata); 623 mxc_register_device(&mx3_camera, &camera_pdata);
diff --git a/arch/arm/mach-omap1/clock.c b/arch/arm/mach-omap1/clock.c
index 2ba9ab953731..04f1d29cba2c 100644
--- a/arch/arm/mach-omap1/clock.c
+++ b/arch/arm/mach-omap1/clock.c
@@ -214,8 +214,8 @@ int omap1_select_table_rate(struct clk *clk, unsigned long rate)
214 struct mpu_rate * ptr; 214 struct mpu_rate * ptr;
215 unsigned long dpll1_rate, ref_rate; 215 unsigned long dpll1_rate, ref_rate;
216 216
217 dpll1_rate = clk_get_rate(ck_dpll1_p); 217 dpll1_rate = ck_dpll1_p->rate;
218 ref_rate = clk_get_rate(ck_ref_p); 218 ref_rate = ck_ref_p->rate;
219 219
220 for (ptr = omap1_rate_table; ptr->rate; ptr++) { 220 for (ptr = omap1_rate_table; ptr->rate; ptr++) {
221 if (ptr->xtal != ref_rate) 221 if (ptr->xtal != ref_rate)
@@ -306,7 +306,7 @@ long omap1_round_to_table_rate(struct clk *clk, unsigned long rate)
306 long highest_rate; 306 long highest_rate;
307 unsigned long ref_rate; 307 unsigned long ref_rate;
308 308
309 ref_rate = clk_get_rate(ck_ref_p); 309 ref_rate = ck_ref_p->rate;
310 310
311 highest_rate = -EINVAL; 311 highest_rate = -EINVAL;
312 312
diff --git a/arch/arm/mach-omap1/clock_data.c b/arch/arm/mach-omap1/clock_data.c
index ab995a9c606c..65e7b5b85d83 100644
--- a/arch/arm/mach-omap1/clock_data.c
+++ b/arch/arm/mach-omap1/clock_data.c
@@ -599,7 +599,7 @@ static struct clk i2c_ick = {
599static struct omap_clk omap_clks[] = { 599static struct omap_clk omap_clks[] = {
600 /* non-ULPD clocks */ 600 /* non-ULPD clocks */
601 CLK(NULL, "ck_ref", &ck_ref, CK_16XX | CK_1510 | CK_310 | CK_7XX), 601 CLK(NULL, "ck_ref", &ck_ref, CK_16XX | CK_1510 | CK_310 | CK_7XX),
602 CLK(NULL, "ck_dpll1", &ck_dpll1, CK_16XX | CK_1510 | CK_310), 602 CLK(NULL, "ck_dpll1", &ck_dpll1, CK_16XX | CK_1510 | CK_310 | CK_7XX),
603 /* CK_GEN1 clocks */ 603 /* CK_GEN1 clocks */
604 CLK(NULL, "ck_dpll1out", &ck_dpll1out.clk, CK_16XX), 604 CLK(NULL, "ck_dpll1out", &ck_dpll1out.clk, CK_16XX),
605 CLK(NULL, "ck_sossi", &sossi_ck, CK_16XX), 605 CLK(NULL, "ck_sossi", &sossi_ck, CK_16XX),
@@ -627,7 +627,7 @@ static struct omap_clk omap_clks[] = {
627 CLK(NULL, "tc2_ck", &tc2_ck, CK_16XX), 627 CLK(NULL, "tc2_ck", &tc2_ck, CK_16XX),
628 CLK(NULL, "dma_ck", &dma_ck, CK_16XX | CK_1510 | CK_310), 628 CLK(NULL, "dma_ck", &dma_ck, CK_16XX | CK_1510 | CK_310),
629 CLK(NULL, "dma_lcdfree_ck", &dma_lcdfree_ck, CK_16XX), 629 CLK(NULL, "dma_lcdfree_ck", &dma_lcdfree_ck, CK_16XX),
630 CLK(NULL, "api_ck", &api_ck.clk, CK_16XX | CK_1510 | CK_310), 630 CLK(NULL, "api_ck", &api_ck.clk, CK_16XX | CK_1510 | CK_310 | CK_7XX),
631 CLK(NULL, "lb_ck", &lb_ck.clk, CK_1510 | CK_310), 631 CLK(NULL, "lb_ck", &lb_ck.clk, CK_1510 | CK_310),
632 CLK(NULL, "rhea1_ck", &rhea1_ck, CK_16XX), 632 CLK(NULL, "rhea1_ck", &rhea1_ck, CK_16XX),
633 CLK(NULL, "rhea2_ck", &rhea2_ck, CK_16XX), 633 CLK(NULL, "rhea2_ck", &rhea2_ck, CK_16XX),
@@ -658,6 +658,10 @@ static struct omap_clk omap_clks[] = {
658 CLK("i2c_omap.1", "fck", &i2c_fck, CK_16XX | CK_1510 | CK_310 | CK_7XX), 658 CLK("i2c_omap.1", "fck", &i2c_fck, CK_16XX | CK_1510 | CK_310 | CK_7XX),
659 CLK("i2c_omap.1", "ick", &i2c_ick, CK_16XX), 659 CLK("i2c_omap.1", "ick", &i2c_ick, CK_16XX),
660 CLK("i2c_omap.1", "ick", &dummy_ck, CK_1510 | CK_310 | CK_7XX), 660 CLK("i2c_omap.1", "ick", &dummy_ck, CK_1510 | CK_310 | CK_7XX),
661 CLK("omap1_spi100k.1", "fck", &dummy_ck, CK_7XX),
662 CLK("omap1_spi100k.1", "ick", &dummy_ck, CK_7XX),
663 CLK("omap1_spi100k.2", "fck", &dummy_ck, CK_7XX),
664 CLK("omap1_spi100k.2", "ick", &dummy_ck, CK_7XX),
661 CLK("omap_uwire", "fck", &armxor_ck.clk, CK_16XX | CK_1510 | CK_310), 665 CLK("omap_uwire", "fck", &armxor_ck.clk, CK_16XX | CK_1510 | CK_310),
662 CLK("omap-mcbsp.1", "ick", &dspper_ck, CK_16XX), 666 CLK("omap-mcbsp.1", "ick", &dspper_ck, CK_16XX),
663 CLK("omap-mcbsp.1", "ick", &dummy_ck, CK_1510 | CK_310), 667 CLK("omap-mcbsp.1", "ick", &dummy_ck, CK_1510 | CK_310),
@@ -674,7 +678,7 @@ static struct omap_clk omap_clks[] = {
674 * init 678 * init
675 */ 679 */
676 680
677static struct clk_functions omap1_clk_functions __initdata = { 681static struct clk_functions omap1_clk_functions = {
678 .clk_enable = omap1_clk_enable, 682 .clk_enable = omap1_clk_enable,
679 .clk_disable = omap1_clk_disable, 683 .clk_disable = omap1_clk_disable,
680 .clk_round_rate = omap1_clk_round_rate, 684 .clk_round_rate = omap1_clk_round_rate,
diff --git a/arch/arm/mach-omap1/devices.c b/arch/arm/mach-omap1/devices.c
index 23ded2d49600..a2d07aa75c9e 100644
--- a/arch/arm/mach-omap1/devices.c
+++ b/arch/arm/mach-omap1/devices.c
@@ -14,6 +14,7 @@
14#include <linux/init.h> 14#include <linux/init.h>
15#include <linux/platform_device.h> 15#include <linux/platform_device.h>
16#include <linux/io.h> 16#include <linux/io.h>
17#include <linux/spi/spi.h>
17 18
18#include <mach/hardware.h> 19#include <mach/hardware.h>
19#include <asm/mach/map.h> 20#include <asm/mach/map.h>
@@ -23,6 +24,7 @@
23#include <plat/mux.h> 24#include <plat/mux.h>
24#include <mach/gpio.h> 25#include <mach/gpio.h>
25#include <plat/mmc.h> 26#include <plat/mmc.h>
27#include <plat/omap7xx.h>
26 28
27/*-------------------------------------------------------------------------*/ 29/*-------------------------------------------------------------------------*/
28 30
@@ -196,6 +198,38 @@ void __init omap1_init_mmc(struct omap_mmc_platform_data **mmc_data,
196 198
197/*-------------------------------------------------------------------------*/ 199/*-------------------------------------------------------------------------*/
198 200
201/* OMAP7xx SPI support */
202#if defined(CONFIG_SPI_OMAP_100K) || defined(CONFIG_SPI_OMAP_100K_MODULE)
203
204struct platform_device omap_spi1 = {
205 .name = "omap1_spi100k",
206 .id = 1,
207};
208
209struct platform_device omap_spi2 = {
210 .name = "omap1_spi100k",
211 .id = 2,
212};
213
214static void omap_init_spi100k(void)
215{
216 omap_spi1.dev.platform_data = ioremap(OMAP7XX_SPI1_BASE, 0x7ff);
217 if (omap_spi1.dev.platform_data)
218 platform_device_register(&omap_spi1);
219
220 omap_spi2.dev.platform_data = ioremap(OMAP7XX_SPI2_BASE, 0x7ff);
221 if (omap_spi2.dev.platform_data)
222 platform_device_register(&omap_spi2);
223}
224
225#else
226static inline void omap_init_spi100k(void)
227{
228}
229#endif
230
231/*-------------------------------------------------------------------------*/
232
199#if defined(CONFIG_OMAP_STI) 233#if defined(CONFIG_OMAP_STI)
200 234
201#define OMAP1_STI_BASE 0xfffea000 235#define OMAP1_STI_BASE 0xfffea000
@@ -263,6 +297,7 @@ static int __init omap1_init_devices(void)
263 297
264 omap_init_mbox(); 298 omap_init_mbox();
265 omap_init_rtc(); 299 omap_init_rtc();
300 omap_init_spi100k();
266 omap_init_sti(); 301 omap_init_sti();
267 302
268 return 0; 303 return 0;
diff --git a/arch/arm/mach-omap1/mux.c b/arch/arm/mach-omap1/mux.c
index 07212cc621ae..84341377232d 100644
--- a/arch/arm/mach-omap1/mux.c
+++ b/arch/arm/mach-omap1/mux.c
@@ -62,6 +62,14 @@ MUX_CFG_7XX("MMC_7XX_DAT0", 2, 17, 0, 16, 1, 0)
62/* I2C interface */ 62/* I2C interface */
63MUX_CFG_7XX("I2C_7XX_SCL", 5, 1, 0, 0, 1, 0) 63MUX_CFG_7XX("I2C_7XX_SCL", 5, 1, 0, 0, 1, 0)
64MUX_CFG_7XX("I2C_7XX_SDA", 5, 5, 0, 0, 1, 0) 64MUX_CFG_7XX("I2C_7XX_SDA", 5, 5, 0, 0, 1, 0)
65
66/* SPI pins */
67MUX_CFG_7XX("SPI_7XX_1", 6, 5, 4, 4, 1, 0)
68MUX_CFG_7XX("SPI_7XX_2", 6, 9, 4, 8, 1, 0)
69MUX_CFG_7XX("SPI_7XX_3", 6, 13, 4, 12, 1, 0)
70MUX_CFG_7XX("SPI_7XX_4", 6, 17, 4, 16, 1, 0)
71MUX_CFG_7XX("SPI_7XX_5", 8, 25, 0, 24, 0, 0)
72MUX_CFG_7XX("SPI_7XX_6", 9, 5, 0, 4, 0, 0)
65}; 73};
66#define OMAP7XX_PINS_SZ ARRAY_SIZE(omap7xx_pins) 74#define OMAP7XX_PINS_SZ ARRAY_SIZE(omap7xx_pins)
67#else 75#else
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
index 10eafa70a909..606bf04f51b6 100644
--- a/arch/arm/mach-omap2/Kconfig
+++ b/arch/arm/mach-omap2/Kconfig
@@ -80,6 +80,7 @@ config MACH_OVERO
80config MACH_OMAP3EVM 80config MACH_OMAP3EVM
81 bool "OMAP 3530 EVM board" 81 bool "OMAP 3530 EVM board"
82 depends on ARCH_OMAP3 && ARCH_OMAP34XX 82 depends on ARCH_OMAP3 && ARCH_OMAP34XX
83 select OMAP_PACKAGE_CBB
83 84
84config MACH_OMAP3517EVM 85config MACH_OMAP3517EVM
85 bool "OMAP3517/ AM3517 EVM board" 86 bool "OMAP3517/ AM3517 EVM board"
diff --git a/arch/arm/mach-omap2/board-zoom-peripherals.c b/arch/arm/mach-omap2/board-zoom-peripherals.c
index 8dd277c36661..1e3dfb652acc 100755
--- a/arch/arm/mach-omap2/board-zoom-peripherals.c
+++ b/arch/arm/mach-omap2/board-zoom-peripherals.c
@@ -63,21 +63,21 @@ static int board_keymap[] = {
63 KEY(5, 1, KEY_H), 63 KEY(5, 1, KEY_H),
64 KEY(5, 2, KEY_J), 64 KEY(5, 2, KEY_J),
65 KEY(5, 3, KEY_F3), 65 KEY(5, 3, KEY_F3),
66 KEY(5, 4, KEY_UNKNOWN),
66 KEY(5, 5, KEY_VOLUMEDOWN), 67 KEY(5, 5, KEY_VOLUMEDOWN),
67 KEY(5, 6, KEY_M), 68 KEY(5, 6, KEY_M),
68 KEY(5, 7, KEY_ENTER), 69 KEY(5, 7, KEY_RIGHT),
69 KEY(6, 0, KEY_Q), 70 KEY(6, 0, KEY_Q),
70 KEY(6, 1, KEY_A), 71 KEY(6, 1, KEY_A),
71 KEY(6, 2, KEY_N), 72 KEY(6, 2, KEY_N),
72 KEY(6, 3, KEY_BACKSPACE), 73 KEY(6, 3, KEY_BACKSPACE),
73 KEY(6, 6, KEY_P), 74 KEY(6, 6, KEY_P),
74 KEY(6, 7, KEY_SELECT), 75 KEY(6, 7, KEY_UP),
75 KEY(7, 0, KEY_PROG1), /*MACRO 1 <User defined> */ 76 KEY(7, 0, KEY_PROG1), /*MACRO 1 <User defined> */
76 KEY(7, 1, KEY_PROG2), /*MACRO 2 <User defined> */ 77 KEY(7, 1, KEY_PROG2), /*MACRO 2 <User defined> */
77 KEY(7, 2, KEY_PROG3), /*MACRO 3 <User defined> */ 78 KEY(7, 2, KEY_PROG3), /*MACRO 3 <User defined> */
78 KEY(7, 3, KEY_PROG4), /*MACRO 4 <User defined> */ 79 KEY(7, 3, KEY_PROG4), /*MACRO 4 <User defined> */
79 KEY(7, 5, KEY_RIGHT), 80 KEY(7, 6, KEY_SELECT),
80 KEY(7, 6, KEY_UP),
81 KEY(7, 7, KEY_DOWN) 81 KEY(7, 7, KEY_DOWN)
82}; 82};
83 83
diff --git a/arch/arm/mach-omap2/clock2xxx.c b/arch/arm/mach-omap2/clock2xxx.c
index d0e3fb7f9298..5420356eb407 100644
--- a/arch/arm/mach-omap2/clock2xxx.c
+++ b/arch/arm/mach-omap2/clock2xxx.c
@@ -449,40 +449,78 @@ int omap2_select_table_rate(struct clk *clk, unsigned long rate)
449#ifdef CONFIG_CPU_FREQ 449#ifdef CONFIG_CPU_FREQ
450/* 450/*
451 * Walk PRCM rate table and fillout cpufreq freq_table 451 * Walk PRCM rate table and fillout cpufreq freq_table
452 * XXX This should be replaced by an OPP layer in the near future
452 */ 453 */
453static struct cpufreq_frequency_table freq_table[ARRAY_SIZE(rate_table)]; 454static struct cpufreq_frequency_table *freq_table;
454 455
455void omap2_clk_init_cpufreq_table(struct cpufreq_frequency_table **table) 456void omap2_clk_init_cpufreq_table(struct cpufreq_frequency_table **table)
456{ 457{
457 struct prcm_config *prcm; 458 const struct prcm_config *prcm;
459 long sys_ck_rate;
458 int i = 0; 460 int i = 0;
461 int tbl_sz = 0;
462
463 sys_ck_rate = clk_get_rate(sclk);
459 464
460 for (prcm = rate_table; prcm->mpu_speed; prcm++) { 465 for (prcm = rate_table; prcm->mpu_speed; prcm++) {
461 if (!(prcm->flags & cpu_mask)) 466 if (!(prcm->flags & cpu_mask))
462 continue; 467 continue;
463 if (prcm->xtal_speed != sys_ck.rate) 468 if (prcm->xtal_speed != sys_ck_rate)
464 continue; 469 continue;
465 470
466 /* don't put bypass rates in table */ 471 /* don't put bypass rates in table */
467 if (prcm->dpll_speed == prcm->xtal_speed) 472 if (prcm->dpll_speed == prcm->xtal_speed)
468 continue; 473 continue;
469 474
470 freq_table[i].index = i; 475 tbl_sz++;
471 freq_table[i].frequency = prcm->mpu_speed / 1000;
472 i++;
473 } 476 }
474 477
475 if (i == 0) { 478 /*
476 printk(KERN_WARNING "%s: failed to initialize frequency " 479 * XXX Ensure that we're doing what CPUFreq expects for this error
477 "table\n", __func__); 480 * case and the following one
481 */
482 if (tbl_sz == 0) {
483 pr_warning("%s: no matching entries in rate_table\n",
484 __func__);
485 return;
486 }
487
488 /* Include the CPUFREQ_TABLE_END terminator entry */
489 tbl_sz++;
490
491 freq_table = kzalloc(sizeof(struct cpufreq_frequency_table) * tbl_sz,
492 GFP_ATOMIC);
493 if (!freq_table) {
494 pr_err("%s: could not kzalloc frequency table\n", __func__);
478 return; 495 return;
479 } 496 }
480 497
498 for (prcm = rate_table; prcm->mpu_speed; prcm++) {
499 if (!(prcm->flags & cpu_mask))
500 continue;
501 if (prcm->xtal_speed != sys_ck_rate)
502 continue;
503
504 /* don't put bypass rates in table */
505 if (prcm->dpll_speed == prcm->xtal_speed)
506 continue;
507
508 freq_table[i].index = i;
509 freq_table[i].frequency = prcm->mpu_speed / 1000;
510 i++;
511 }
512
481 freq_table[i].index = i; 513 freq_table[i].index = i;
482 freq_table[i].frequency = CPUFREQ_TABLE_END; 514 freq_table[i].frequency = CPUFREQ_TABLE_END;
483 515
484 *table = &freq_table[0]; 516 *table = &freq_table[0];
485} 517}
518
519void omap2_clk_exit_cpufreq_table(struct cpufreq_frequency_table **table)
520{
521 kfree(freq_table);
522}
523
486#endif 524#endif
487 525
488struct clk_functions omap2_clk_functions = { 526struct clk_functions omap2_clk_functions = {
@@ -494,6 +532,7 @@ struct clk_functions omap2_clk_functions = {
494 .clk_disable_unused = omap2_clk_disable_unused, 532 .clk_disable_unused = omap2_clk_disable_unused,
495#ifdef CONFIG_CPU_FREQ 533#ifdef CONFIG_CPU_FREQ
496 .clk_init_cpufreq_table = omap2_clk_init_cpufreq_table, 534 .clk_init_cpufreq_table = omap2_clk_init_cpufreq_table,
535 .clk_exit_cpufreq_table = omap2_clk_exit_cpufreq_table,
497#endif 536#endif
498}; 537};
499 538
diff --git a/arch/arm/mach-omap2/clock34xx.c b/arch/arm/mach-omap2/clock34xx.c
index ded32364f32b..d4217b93e10b 100644
--- a/arch/arm/mach-omap2/clock34xx.c
+++ b/arch/arm/mach-omap2/clock34xx.c
@@ -34,7 +34,6 @@
34#include <asm/div64.h> 34#include <asm/div64.h>
35#include <asm/clkdev.h> 35#include <asm/clkdev.h>
36 36
37#include <plat/sdrc.h>
38#include "clock.h" 37#include "clock.h"
39#include "clock34xx.h" 38#include "clock34xx.h"
40#include "sdrc.h" 39#include "sdrc.h"
diff --git a/arch/arm/mach-omap2/clock34xx_data.c b/arch/arm/mach-omap2/clock34xx_data.c
index 8bdcc9cc7f9a..74930e3158e3 100644
--- a/arch/arm/mach-omap2/clock34xx_data.c
+++ b/arch/arm/mach-omap2/clock34xx_data.c
@@ -671,7 +671,6 @@ static struct clk dpll4_m3x2_ck = {
671 .name = "dpll4_m3x2_ck", 671 .name = "dpll4_m3x2_ck",
672 .ops = &clkops_omap2_dflt_wait, 672 .ops = &clkops_omap2_dflt_wait,
673 .parent = &dpll4_m3_ck, 673 .parent = &dpll4_m3_ck,
674 .init = &omap2_init_clksel_parent,
675 .enable_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), 674 .enable_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN),
676 .enable_bit = OMAP3430_PWRDN_TV_SHIFT, 675 .enable_bit = OMAP3430_PWRDN_TV_SHIFT,
677 .flags = INVERT_ENABLE, 676 .flags = INVERT_ENABLE,
@@ -776,6 +775,8 @@ static struct clk dpll4_m5_ck = {
776 .clksel_mask = OMAP3430_CLKSEL_CAM_MASK, 775 .clksel_mask = OMAP3430_CLKSEL_CAM_MASK,
777 .clksel = div16_dpll4_clksel, 776 .clksel = div16_dpll4_clksel,
778 .clkdm_name = "dpll4_clkdm", 777 .clkdm_name = "dpll4_clkdm",
778 .set_rate = &omap2_clksel_set_rate,
779 .round_rate = &omap2_clksel_round_rate,
779 .recalc = &omap2_clksel_recalc, 780 .recalc = &omap2_clksel_recalc,
780}; 781};
781 782
@@ -809,7 +810,6 @@ static struct clk dpll4_m6x2_ck = {
809 .name = "dpll4_m6x2_ck", 810 .name = "dpll4_m6x2_ck",
810 .ops = &clkops_omap2_dflt_wait, 811 .ops = &clkops_omap2_dflt_wait,
811 .parent = &dpll4_m6_ck, 812 .parent = &dpll4_m6_ck,
812 .init = &omap2_init_clksel_parent,
813 .enable_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), 813 .enable_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN),
814 .enable_bit = OMAP3430_PWRDN_EMU_PERIPH_SHIFT, 814 .enable_bit = OMAP3430_PWRDN_EMU_PERIPH_SHIFT,
815 .flags = INVERT_ENABLE, 815 .flags = INVERT_ENABLE,
@@ -1045,7 +1045,6 @@ static struct clk iva2_ck = {
1045 .name = "iva2_ck", 1045 .name = "iva2_ck",
1046 .ops = &clkops_omap2_dflt_wait, 1046 .ops = &clkops_omap2_dflt_wait,
1047 .parent = &dpll2_m2_ck, 1047 .parent = &dpll2_m2_ck,
1048 .init = &omap2_init_clksel_parent,
1049 .enable_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, CM_FCLKEN), 1048 .enable_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, CM_FCLKEN),
1050 .enable_bit = OMAP3430_CM_FCLKEN_IVA2_EN_IVA2_SHIFT, 1049 .enable_bit = OMAP3430_CM_FCLKEN_IVA2_EN_IVA2_SHIFT,
1051 .clkdm_name = "iva2_clkdm", 1050 .clkdm_name = "iva2_clkdm",
@@ -1119,7 +1118,6 @@ static struct clk gfx_l3_ck = {
1119 .name = "gfx_l3_ck", 1118 .name = "gfx_l3_ck",
1120 .ops = &clkops_omap2_dflt_wait, 1119 .ops = &clkops_omap2_dflt_wait,
1121 .parent = &l3_ick, 1120 .parent = &l3_ick,
1122 .init = &omap2_init_clksel_parent,
1123 .enable_reg = OMAP_CM_REGADDR(GFX_MOD, CM_ICLKEN), 1121 .enable_reg = OMAP_CM_REGADDR(GFX_MOD, CM_ICLKEN),
1124 .enable_bit = OMAP_EN_GFX_SHIFT, 1122 .enable_bit = OMAP_EN_GFX_SHIFT,
1125 .recalc = &followparent_recalc, 1123 .recalc = &followparent_recalc,
@@ -1500,6 +1498,7 @@ static struct clk uart2_fck = {
1500 .parent = &core_48m_fck, 1498 .parent = &core_48m_fck,
1501 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), 1499 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
1502 .enable_bit = OMAP3430_EN_UART2_SHIFT, 1500 .enable_bit = OMAP3430_EN_UART2_SHIFT,
1501 .clkdm_name = "core_l4_clkdm",
1503 .recalc = &followparent_recalc, 1502 .recalc = &followparent_recalc,
1504}; 1503};
1505 1504
@@ -1509,6 +1508,7 @@ static struct clk uart1_fck = {
1509 .parent = &core_48m_fck, 1508 .parent = &core_48m_fck,
1510 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), 1509 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
1511 .enable_bit = OMAP3430_EN_UART1_SHIFT, 1510 .enable_bit = OMAP3430_EN_UART1_SHIFT,
1511 .clkdm_name = "core_l4_clkdm",
1512 .recalc = &followparent_recalc, 1512 .recalc = &followparent_recalc,
1513}; 1513};
1514 1514
@@ -2745,7 +2745,7 @@ static struct clk mcbsp4_ick = {
2745}; 2745};
2746 2746
2747static const struct clksel mcbsp_234_clksel[] = { 2747static const struct clksel mcbsp_234_clksel[] = {
2748 { .parent = &core_96m_fck, .rates = common_mcbsp_96m_rates }, 2748 { .parent = &per_96m_fck, .rates = common_mcbsp_96m_rates },
2749 { .parent = &mcbsp_clks, .rates = common_mcbsp_mcbsp_rates }, 2749 { .parent = &mcbsp_clks, .rates = common_mcbsp_mcbsp_rates },
2750 { .parent = NULL } 2750 { .parent = NULL }
2751}; 2751};
diff --git a/arch/arm/mach-omap2/clock44xx_data.c b/arch/arm/mach-omap2/clock44xx_data.c
index 2210e227d78a..9d882bcb56e3 100644
--- a/arch/arm/mach-omap2/clock44xx_data.c
+++ b/arch/arm/mach-omap2/clock44xx_data.c
@@ -346,37 +346,37 @@ static struct clk aess_fclk = {
346}; 346};
347 347
348static const struct clksel_rate div31_1to31_rates[] = { 348static const struct clksel_rate div31_1to31_rates[] = {
349 { .div = 1, .val = 0, .flags = RATE_IN_4430 }, 349 { .div = 1, .val = 1, .flags = RATE_IN_4430 },
350 { .div = 2, .val = 1, .flags = RATE_IN_4430 }, 350 { .div = 2, .val = 2, .flags = RATE_IN_4430 },
351 { .div = 3, .val = 2, .flags = RATE_IN_4430 }, 351 { .div = 3, .val = 3, .flags = RATE_IN_4430 },
352 { .div = 4, .val = 3, .flags = RATE_IN_4430 }, 352 { .div = 4, .val = 4, .flags = RATE_IN_4430 },
353 { .div = 5, .val = 4, .flags = RATE_IN_4430 }, 353 { .div = 5, .val = 5, .flags = RATE_IN_4430 },
354 { .div = 6, .val = 5, .flags = RATE_IN_4430 }, 354 { .div = 6, .val = 6, .flags = RATE_IN_4430 },
355 { .div = 7, .val = 6, .flags = RATE_IN_4430 }, 355 { .div = 7, .val = 7, .flags = RATE_IN_4430 },
356 { .div = 8, .val = 7, .flags = RATE_IN_4430 }, 356 { .div = 8, .val = 8, .flags = RATE_IN_4430 },
357 { .div = 9, .val = 8, .flags = RATE_IN_4430 }, 357 { .div = 9, .val = 9, .flags = RATE_IN_4430 },
358 { .div = 10, .val = 9, .flags = RATE_IN_4430 }, 358 { .div = 10, .val = 10, .flags = RATE_IN_4430 },
359 { .div = 11, .val = 10, .flags = RATE_IN_4430 }, 359 { .div = 11, .val = 11, .flags = RATE_IN_4430 },
360 { .div = 12, .val = 11, .flags = RATE_IN_4430 }, 360 { .div = 12, .val = 12, .flags = RATE_IN_4430 },
361 { .div = 13, .val = 12, .flags = RATE_IN_4430 }, 361 { .div = 13, .val = 13, .flags = RATE_IN_4430 },
362 { .div = 14, .val = 13, .flags = RATE_IN_4430 }, 362 { .div = 14, .val = 14, .flags = RATE_IN_4430 },
363 { .div = 15, .val = 14, .flags = RATE_IN_4430 }, 363 { .div = 15, .val = 15, .flags = RATE_IN_4430 },
364 { .div = 16, .val = 15, .flags = RATE_IN_4430 }, 364 { .div = 16, .val = 16, .flags = RATE_IN_4430 },
365 { .div = 17, .val = 16, .flags = RATE_IN_4430 }, 365 { .div = 17, .val = 17, .flags = RATE_IN_4430 },
366 { .div = 18, .val = 17, .flags = RATE_IN_4430 }, 366 { .div = 18, .val = 18, .flags = RATE_IN_4430 },
367 { .div = 19, .val = 18, .flags = RATE_IN_4430 }, 367 { .div = 19, .val = 19, .flags = RATE_IN_4430 },
368 { .div = 20, .val = 19, .flags = RATE_IN_4430 }, 368 { .div = 20, .val = 20, .flags = RATE_IN_4430 },
369 { .div = 21, .val = 20, .flags = RATE_IN_4430 }, 369 { .div = 21, .val = 21, .flags = RATE_IN_4430 },
370 { .div = 22, .val = 21, .flags = RATE_IN_4430 }, 370 { .div = 22, .val = 22, .flags = RATE_IN_4430 },
371 { .div = 23, .val = 22, .flags = RATE_IN_4430 }, 371 { .div = 23, .val = 23, .flags = RATE_IN_4430 },
372 { .div = 24, .val = 23, .flags = RATE_IN_4430 }, 372 { .div = 24, .val = 24, .flags = RATE_IN_4430 },
373 { .div = 25, .val = 24, .flags = RATE_IN_4430 }, 373 { .div = 25, .val = 25, .flags = RATE_IN_4430 },
374 { .div = 26, .val = 25, .flags = RATE_IN_4430 }, 374 { .div = 26, .val = 26, .flags = RATE_IN_4430 },
375 { .div = 27, .val = 26, .flags = RATE_IN_4430 }, 375 { .div = 27, .val = 27, .flags = RATE_IN_4430 },
376 { .div = 28, .val = 27, .flags = RATE_IN_4430 }, 376 { .div = 28, .val = 28, .flags = RATE_IN_4430 },
377 { .div = 29, .val = 28, .flags = RATE_IN_4430 }, 377 { .div = 29, .val = 29, .flags = RATE_IN_4430 },
378 { .div = 30, .val = 29, .flags = RATE_IN_4430 }, 378 { .div = 30, .val = 30, .flags = RATE_IN_4430 },
379 { .div = 31, .val = 30, .flags = RATE_IN_4430 }, 379 { .div = 31, .val = 31, .flags = RATE_IN_4430 },
380 { .div = 0 }, 380 { .div = 0 },
381}; 381};
382 382
diff --git a/arch/arm/mach-omap2/clockdomain.c b/arch/arm/mach-omap2/clockdomain.c
index 1a45ed1e8ba1..dd285f001467 100644
--- a/arch/arm/mach-omap2/clockdomain.c
+++ b/arch/arm/mach-omap2/clockdomain.c
@@ -559,7 +559,7 @@ int omap2_clkdm_clk_enable(struct clockdomain *clkdm, struct clk *clk)
559 * downstream clocks for debugging purposes? 559 * downstream clocks for debugging purposes?
560 */ 560 */
561 561
562 if (!clkdm || !clk) 562 if (!clkdm || !clk || !clkdm->clktrctrl_mask)
563 return -EINVAL; 563 return -EINVAL;
564 564
565 if (atomic_inc_return(&clkdm->usecount) > 1) 565 if (atomic_inc_return(&clkdm->usecount) > 1)
@@ -610,7 +610,7 @@ int omap2_clkdm_clk_disable(struct clockdomain *clkdm, struct clk *clk)
610 * downstream clocks for debugging purposes? 610 * downstream clocks for debugging purposes?
611 */ 611 */
612 612
613 if (!clkdm || !clk) 613 if (!clkdm || !clk || !clkdm->clktrctrl_mask)
614 return -EINVAL; 614 return -EINVAL;
615 615
616#ifdef DEBUG 616#ifdef DEBUG
diff --git a/arch/arm/mach-omap2/cpuidle34xx.c b/arch/arm/mach-omap2/cpuidle34xx.c
index a26d6a08ae3f..12f0cbfc2894 100644
--- a/arch/arm/mach-omap2/cpuidle34xx.c
+++ b/arch/arm/mach-omap2/cpuidle34xx.c
@@ -137,7 +137,7 @@ return_sleep_time:
137 local_irq_enable(); 137 local_irq_enable();
138 local_fiq_enable(); 138 local_fiq_enable();
139 139
140 return (u32)timespec_to_ns(&ts_idle)/1000; 140 return ts_idle.tv_nsec / NSEC_PER_USEC + ts_idle.tv_sec * USEC_PER_SEC;
141} 141}
142 142
143/** 143/**
diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c
index bd8cb5974726..7027cdc1ba49 100644
--- a/arch/arm/mach-omap2/gpmc.c
+++ b/arch/arm/mach-omap2/gpmc.c
@@ -505,7 +505,7 @@ static void __init gpmc_mem_init(void)
505void __init gpmc_init(void) 505void __init gpmc_init(void)
506{ 506{
507 u32 l; 507 u32 l;
508 char *ck; 508 char *ck = NULL;
509 509
510 if (cpu_is_omap24xx()) { 510 if (cpu_is_omap24xx()) {
511 ck = "core_l3_ck"; 511 ck = "core_l3_ck";
@@ -521,6 +521,9 @@ void __init gpmc_init(void)
521 l = OMAP44XX_GPMC_BASE; 521 l = OMAP44XX_GPMC_BASE;
522 } 522 }
523 523
524 if (WARN_ON(!ck))
525 return;
526
524 gpmc_l3_clk = clk_get(NULL, ck); 527 gpmc_l3_clk = clk_get(NULL, ck);
525 if (IS_ERR(gpmc_l3_clk)) { 528 if (IS_ERR(gpmc_l3_clk)) {
526 printk(KERN_ERR "Could not get GPMC clock %s\n", ck); 529 printk(KERN_ERR "Could not get GPMC clock %s\n", ck);
@@ -534,6 +537,8 @@ void __init gpmc_init(void)
534 BUG(); 537 BUG();
535 } 538 }
536 539
540 clk_enable(gpmc_l3_clk);
541
537 l = gpmc_read_reg(GPMC_REVISION); 542 l = gpmc_read_reg(GPMC_REVISION);
538 printk(KERN_INFO "GPMC revision %d.%d\n", (l >> 4) & 0x0f, l & 0x0f); 543 printk(KERN_INFO "GPMC revision %d.%d\n", (l >> 4) & 0x0f, l & 0x0f);
539 /* Set smart idle mode and automatic L3 clock gating */ 544 /* Set smart idle mode and automatic L3 clock gating */
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c
index a091b53657b9..3d65c50bd017 100644
--- a/arch/arm/mach-omap2/id.c
+++ b/arch/arm/mach-omap2/id.c
@@ -188,6 +188,8 @@ void __init omap3_check_revision(void)
188 u16 hawkeye; 188 u16 hawkeye;
189 u8 rev; 189 u8 rev;
190 190
191 omap_chip.oc = CHIP_IS_OMAP3430;
192
191 /* 193 /*
192 * We cannot access revision registers on ES1.0. 194 * We cannot access revision registers on ES1.0.
193 * If the processor type is Cortex-A8 and the revision is 0x0 195 * If the processor type is Cortex-A8 and the revision is 0x0
@@ -196,6 +198,7 @@ void __init omap3_check_revision(void)
196 cpuid = read_cpuid(CPUID_ID); 198 cpuid = read_cpuid(CPUID_ID);
197 if ((((cpuid >> 4) & 0xfff) == 0xc08) && ((cpuid & 0xf) == 0x0)) { 199 if ((((cpuid >> 4) & 0xfff) == 0xc08) && ((cpuid & 0xf) == 0x0)) {
198 omap_revision = OMAP3430_REV_ES1_0; 200 omap_revision = OMAP3430_REV_ES1_0;
201 omap_chip.oc |= CHIP_IS_OMAP3430ES1;
199 return; 202 return;
200 } 203 }
201 204
@@ -216,18 +219,28 @@ void __init omap3_check_revision(void)
216 case 0: /* Take care of early samples */ 219 case 0: /* Take care of early samples */
217 case 1: 220 case 1:
218 omap_revision = OMAP3430_REV_ES2_0; 221 omap_revision = OMAP3430_REV_ES2_0;
222 omap_chip.oc |= CHIP_IS_OMAP3430ES2;
219 break; 223 break;
220 case 2: 224 case 2:
221 omap_revision = OMAP3430_REV_ES2_1; 225 omap_revision = OMAP3430_REV_ES2_1;
226 omap_chip.oc |= CHIP_IS_OMAP3430ES2;
222 break; 227 break;
223 case 3: 228 case 3:
224 omap_revision = OMAP3430_REV_ES3_0; 229 omap_revision = OMAP3430_REV_ES3_0;
230 omap_chip.oc |= CHIP_IS_OMAP3430ES3_0;
225 break; 231 break;
226 case 4: 232 case 4:
233 omap_revision = OMAP3430_REV_ES3_1;
234 omap_chip.oc |= CHIP_IS_OMAP3430ES3_1;
235 break;
236 case 7:
227 /* FALLTHROUGH */ 237 /* FALLTHROUGH */
228 default: 238 default:
229 /* Use the latest known revision as default */ 239 /* Use the latest known revision as default */
230 omap_revision = OMAP3430_REV_ES3_1; 240 omap_revision = OMAP3430_REV_ES3_1_2;
241
242 /* REVISIT: Add CHIP_IS_OMAP3430ES3_1_2? */
243 omap_chip.oc |= CHIP_IS_OMAP3430ES3_1;
231 } 244 }
232 break; 245 break;
233 case 0xb868: 246 case 0xb868:
@@ -235,14 +248,18 @@ void __init omap3_check_revision(void)
235 * 248 *
236 * Set the device to be OMAP3505 here. Actual device 249 * Set the device to be OMAP3505 here. Actual device
237 * is identified later based on the features. 250 * is identified later based on the features.
251 *
252 * REVISIT: AM3505/AM3517 should have their own CHIP_IS
238 */ 253 */
239 omap_revision = OMAP3505_REV(rev); 254 omap_revision = OMAP3505_REV(rev);
255 omap_chip.oc |= CHIP_IS_OMAP3430ES3_1;
240 break; 256 break;
241 case 0xb891: 257 case 0xb891:
242 /* FALLTHROUGH */ 258 /* FALLTHROUGH */
243 default: 259 default:
244 /* Unknown default to latest silicon rev as default*/ 260 /* Unknown default to latest silicon rev as default*/
245 omap_revision = OMAP3630_REV_ES1_0; 261 omap_revision = OMAP3630_REV_ES1_0;
262 omap_chip.oc |= CHIP_IS_OMAP3630ES1;
246 } 263 }
247} 264}
248 265
@@ -360,6 +377,7 @@ void __init omap2_check_revision(void)
360 omap3_check_revision(); 377 omap3_check_revision();
361 omap3_check_features(); 378 omap3_check_features();
362 omap3_cpuinfo(); 379 omap3_cpuinfo();
380 return;
363 } else if (cpu_is_omap44xx()) { 381 } else if (cpu_is_omap44xx()) {
364 omap4_check_revision(); 382 omap4_check_revision();
365 return; 383 return;
@@ -374,27 +392,14 @@ void __init omap2_check_revision(void)
374 if (cpu_is_omap243x()) { 392 if (cpu_is_omap243x()) {
375 /* Currently only supports 2430ES2.1 and 2430-all */ 393 /* Currently only supports 2430ES2.1 and 2430-all */
376 omap_chip.oc |= CHIP_IS_OMAP2430; 394 omap_chip.oc |= CHIP_IS_OMAP2430;
395 return;
377 } else if (cpu_is_omap242x()) { 396 } else if (cpu_is_omap242x()) {
378 /* Currently only supports 2420ES2.1.1 and 2420-all */ 397 /* Currently only supports 2420ES2.1.1 and 2420-all */
379 omap_chip.oc |= CHIP_IS_OMAP2420; 398 omap_chip.oc |= CHIP_IS_OMAP2420;
380 } else if (cpu_is_omap3505() || cpu_is_omap3517()) { 399 return;
381 omap_chip.oc = CHIP_IS_OMAP3430 | CHIP_IS_OMAP3430ES3_1;
382 } else if (cpu_is_omap343x()) {
383 omap_chip.oc = CHIP_IS_OMAP3430;
384 if (omap_rev() == OMAP3430_REV_ES1_0)
385 omap_chip.oc |= CHIP_IS_OMAP3430ES1;
386 else if (omap_rev() >= OMAP3430_REV_ES2_0 &&
387 omap_rev() <= OMAP3430_REV_ES2_1)
388 omap_chip.oc |= CHIP_IS_OMAP3430ES2;
389 else if (omap_rev() == OMAP3430_REV_ES3_0)
390 omap_chip.oc |= CHIP_IS_OMAP3430ES3_0;
391 else if (omap_rev() == OMAP3430_REV_ES3_1)
392 omap_chip.oc |= CHIP_IS_OMAP3430ES3_1;
393 else if (omap_rev() == OMAP3630_REV_ES1_0)
394 omap_chip.oc |= CHIP_IS_OMAP3630ES1;
395 } else {
396 pr_err("Uninitialized omap_chip, please fix!\n");
397 } 400 }
401
402 pr_err("Uninitialized omap_chip, please fix!\n");
398} 403}
399 404
400/* 405/*
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index a8749e8017b9..5a7996402c53 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -33,7 +33,6 @@
33#include <plat/sdrc.h> 33#include <plat/sdrc.h>
34#include <plat/gpmc.h> 34#include <plat/gpmc.h>
35#include <plat/serial.h> 35#include <plat/serial.h>
36#include <plat/mux.h>
37#include <plat/vram.h> 36#include <plat/vram.h>
38 37
39#include "clock.h" 38#include "clock.h"
@@ -73,21 +72,21 @@ static struct map_desc omap24xx_io_desc[] __initdata = {
73#ifdef CONFIG_ARCH_OMAP2420 72#ifdef CONFIG_ARCH_OMAP2420
74static struct map_desc omap242x_io_desc[] __initdata = { 73static struct map_desc omap242x_io_desc[] __initdata = {
75 { 74 {
76 .virtual = DSP_MEM_24XX_VIRT, 75 .virtual = DSP_MEM_2420_VIRT,
77 .pfn = __phys_to_pfn(DSP_MEM_24XX_PHYS), 76 .pfn = __phys_to_pfn(DSP_MEM_2420_PHYS),
78 .length = DSP_MEM_24XX_SIZE, 77 .length = DSP_MEM_2420_SIZE,
79 .type = MT_DEVICE 78 .type = MT_DEVICE
80 }, 79 },
81 { 80 {
82 .virtual = DSP_IPI_24XX_VIRT, 81 .virtual = DSP_IPI_2420_VIRT,
83 .pfn = __phys_to_pfn(DSP_IPI_24XX_PHYS), 82 .pfn = __phys_to_pfn(DSP_IPI_2420_PHYS),
84 .length = DSP_IPI_24XX_SIZE, 83 .length = DSP_IPI_2420_SIZE,
85 .type = MT_DEVICE 84 .type = MT_DEVICE
86 }, 85 },
87 { 86 {
88 .virtual = DSP_MMU_24XX_VIRT, 87 .virtual = DSP_MMU_2420_VIRT,
89 .pfn = __phys_to_pfn(DSP_MMU_24XX_PHYS), 88 .pfn = __phys_to_pfn(DSP_MMU_2420_PHYS),
90 .length = DSP_MMU_24XX_SIZE, 89 .length = DSP_MMU_2420_SIZE,
91 .type = MT_DEVICE 90 .type = MT_DEVICE
92 }, 91 },
93}; 92};
diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c
index e9bc782fa414..26aeef560aa3 100644
--- a/arch/arm/mach-omap2/irq.c
+++ b/arch/arm/mach-omap2/irq.c
@@ -194,7 +194,7 @@ void __init omap_init_irq(void)
194 int i; 194 int i;
195 195
196 for (i = 0; i < ARRAY_SIZE(irq_banks); i++) { 196 for (i = 0; i < ARRAY_SIZE(irq_banks); i++) {
197 unsigned long base; 197 unsigned long base = 0;
198 struct omap_irq_bank *bank = irq_banks + i; 198 struct omap_irq_bank *bank = irq_banks + i;
199 199
200 if (cpu_is_omap24xx()) 200 if (cpu_is_omap24xx())
@@ -202,6 +202,8 @@ void __init omap_init_irq(void)
202 else if (cpu_is_omap34xx()) 202 else if (cpu_is_omap34xx())
203 base = OMAP34XX_IC_BASE; 203 base = OMAP34XX_IC_BASE;
204 204
205 BUG_ON(!base);
206
205 /* Static mapping, never released */ 207 /* Static mapping, never released */
206 bank->base_reg = ioremap(base, SZ_4K); 208 bank->base_reg = ioremap(base, SZ_4K);
207 if (!bank->base_reg) { 209 if (!bank->base_reg) {
@@ -274,4 +276,22 @@ void omap_intc_restore_context(void)
274 } 276 }
275 /* MIRs are saved and restore with other PRCM registers */ 277 /* MIRs are saved and restore with other PRCM registers */
276} 278}
279
280void omap3_intc_suspend(void)
281{
282 /* A pending interrupt would prevent OMAP from entering suspend */
283 omap_ack_irq(0);
284}
285
286void omap3_intc_prepare_idle(void)
287{
288 /* Disable autoidle as it can stall interrupt controller */
289 intc_bank_write_reg(0, &irq_banks[0], INTC_SYSCONFIG);
290}
291
292void omap3_intc_resume_idle(void)
293{
294 /* Re-enable autoidle */
295 intc_bank_write_reg(1, &irq_banks[0], INTC_SYSCONFIG);
296}
277#endif /* CONFIG_ARCH_OMAP3 */ 297#endif /* CONFIG_ARCH_OMAP3 */
diff --git a/arch/arm/mach-omap2/mmc-twl4030.c b/arch/arm/mach-omap2/mmc-twl4030.c
index 0c3c72d934bf..8afe9dd3f150 100644
--- a/arch/arm/mach-omap2/mmc-twl4030.c
+++ b/arch/arm/mach-omap2/mmc-twl4030.c
@@ -408,6 +408,7 @@ void __init twl4030_mmc_init(struct twl4030_hsmmc_info *controllers)
408{ 408{
409 struct twl4030_hsmmc_info *c; 409 struct twl4030_hsmmc_info *c;
410 int nr_hsmmc = ARRAY_SIZE(hsmmc_data); 410 int nr_hsmmc = ARRAY_SIZE(hsmmc_data);
411 int i;
411 412
412 if (cpu_is_omap2430()) { 413 if (cpu_is_omap2430()) {
413 control_pbias_offset = OMAP243X_CONTROL_PBIAS_LITE; 414 control_pbias_offset = OMAP243X_CONTROL_PBIAS_LITE;
@@ -434,7 +435,7 @@ void __init twl4030_mmc_init(struct twl4030_hsmmc_info *controllers)
434 mmc = kzalloc(sizeof(struct omap_mmc_platform_data), GFP_KERNEL); 435 mmc = kzalloc(sizeof(struct omap_mmc_platform_data), GFP_KERNEL);
435 if (!mmc) { 436 if (!mmc) {
436 pr_err("Cannot allocate memory for mmc device!\n"); 437 pr_err("Cannot allocate memory for mmc device!\n");
437 return; 438 goto done;
438 } 439 }
439 440
440 if (c->name) 441 if (c->name)
@@ -532,6 +533,10 @@ void __init twl4030_mmc_init(struct twl4030_hsmmc_info *controllers)
532 continue; 533 continue;
533 c->dev = mmc->dev; 534 c->dev = mmc->dev;
534 } 535 }
536
537done:
538 for (i = 0; i < nr_hsmmc; i++)
539 kfree(hsmmc_data[i]);
535} 540}
536 541
537#endif 542#endif
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c
index e071b3fd1878..5fef73f4743d 100644
--- a/arch/arm/mach-omap2/mux.c
+++ b/arch/arm/mach-omap2/mux.c
@@ -51,7 +51,7 @@ struct omap_mux_entry {
51static unsigned long mux_phys; 51static unsigned long mux_phys;
52static void __iomem *mux_base; 52static void __iomem *mux_base;
53 53
54static inline u16 omap_mux_read(u16 reg) 54u16 omap_mux_read(u16 reg)
55{ 55{
56 if (cpu_is_omap24xx()) 56 if (cpu_is_omap24xx())
57 return __raw_readb(mux_base + reg); 57 return __raw_readb(mux_base + reg);
@@ -59,7 +59,7 @@ static inline u16 omap_mux_read(u16 reg)
59 return __raw_readw(mux_base + reg); 59 return __raw_readw(mux_base + reg);
60} 60}
61 61
62static inline void omap_mux_write(u16 val, u16 reg) 62void omap_mux_write(u16 val, u16 reg)
63{ 63{
64 if (cpu_is_omap24xx()) 64 if (cpu_is_omap24xx())
65 __raw_writeb(val, mux_base + reg); 65 __raw_writeb(val, mux_base + reg);
@@ -67,6 +67,14 @@ static inline void omap_mux_write(u16 val, u16 reg)
67 __raw_writew(val, mux_base + reg); 67 __raw_writew(val, mux_base + reg);
68} 68}
69 69
70void omap_mux_write_array(struct omap_board_mux *board_mux)
71{
72 while (board_mux->reg_offset != OMAP_MUX_TERMINATOR) {
73 omap_mux_write(board_mux->value, board_mux->reg_offset);
74 board_mux++;
75 }
76}
77
70#if defined(CONFIG_ARCH_OMAP24XX) && defined(CONFIG_OMAP_MUX) 78#if defined(CONFIG_ARCH_OMAP24XX) && defined(CONFIG_OMAP_MUX)
71 79
72static struct omap_mux_cfg arch_mux_cfg; 80static struct omap_mux_cfg arch_mux_cfg;
@@ -478,7 +486,7 @@ int __init omap_mux_init_signal(char *muxname, int val)
478static inline void omap_mux_decode(struct seq_file *s, u16 val) 486static inline void omap_mux_decode(struct seq_file *s, u16 val)
479{ 487{
480 char *flags[OMAP_MUX_MAX_NR_FLAGS]; 488 char *flags[OMAP_MUX_MAX_NR_FLAGS];
481 char mode[14]; 489 char mode[sizeof("OMAP_MUX_MODE") + 1];
482 int i = -1; 490 int i = -1;
483 491
484 sprintf(mode, "OMAP_MUX_MODE%d", val & 0x7); 492 sprintf(mode, "OMAP_MUX_MODE%d", val & 0x7);
@@ -545,6 +553,7 @@ static int omap_mux_dbg_board_show(struct seq_file *s, void *unused)
545 if (!m0_name) 553 if (!m0_name)
546 continue; 554 continue;
547 555
556 /* REVISIT: Needs to be updated if mode0 names get longer */
548 for (i = 0; i < OMAP_MUX_DEFNAME_LEN; i++) { 557 for (i = 0; i < OMAP_MUX_DEFNAME_LEN; i++) {
549 if (m0_name[i] == '\0') { 558 if (m0_name[i] == '\0') {
550 m0_def[i] = m0_name[i]; 559 m0_def[i] = m0_name[i];
@@ -833,14 +842,6 @@ static void __init omap_mux_set_cmdline_signals(void)
833 kfree(options); 842 kfree(options);
834} 843}
835 844
836static void __init omap_mux_set_board_signals(struct omap_board_mux *board_mux)
837{
838 while (board_mux->reg_offset != OMAP_MUX_TERMINATOR) {
839 omap_mux_write(board_mux->value, board_mux->reg_offset);
840 board_mux++;
841 }
842}
843
844static int __init omap_mux_copy_names(struct omap_mux *src, 845static int __init omap_mux_copy_names(struct omap_mux *src,
845 struct omap_mux *dst) 846 struct omap_mux *dst)
846{ 847{
@@ -960,7 +961,12 @@ static void __init omap_mux_init_list(struct omap_mux *superset)
960 while (superset->reg_offset != OMAP_MUX_TERMINATOR) { 961 while (superset->reg_offset != OMAP_MUX_TERMINATOR) {
961 struct omap_mux *entry; 962 struct omap_mux *entry;
962 963
963#ifndef CONFIG_OMAP_MUX 964#ifdef CONFIG_OMAP_MUX
965 if (!superset->muxnames || !superset->muxnames[0]) {
966 superset++;
967 continue;
968 }
969#else
964 /* Skip pins that are not muxed as GPIO by bootloader */ 970 /* Skip pins that are not muxed as GPIO by bootloader */
965 if (!OMAP_MODE_GPIO(omap_mux_read(superset->reg_offset))) { 971 if (!OMAP_MODE_GPIO(omap_mux_read(superset->reg_offset))) {
966 superset++; 972 superset++;
@@ -994,14 +1000,19 @@ int __init omap_mux_init(u32 mux_pbase, u32 mux_size,
994 } 1000 }
995 1001
996#ifdef CONFIG_OMAP_MUX 1002#ifdef CONFIG_OMAP_MUX
997 omap_mux_package_fixup(package_subset, superset); 1003 if (package_subset)
998 omap_mux_package_init_balls(package_balls, superset); 1004 omap_mux_package_fixup(package_subset, superset);
999 omap_mux_set_cmdline_signals(); 1005 if (package_balls)
1000 omap_mux_set_board_signals(board_mux); 1006 omap_mux_package_init_balls(package_balls, superset);
1001#endif 1007#endif
1002 1008
1003 omap_mux_init_list(superset); 1009 omap_mux_init_list(superset);
1004 1010
1011#ifdef CONFIG_OMAP_MUX
1012 omap_mux_set_cmdline_signals();
1013 omap_mux_write_array(board_mux);
1014#endif
1015
1005 return 0; 1016 return 0;
1006} 1017}
1007 1018
diff --git a/arch/arm/mach-omap2/mux.h b/arch/arm/mach-omap2/mux.h
index d8b4d5ad2278..f8c2e7a8f063 100644
--- a/arch/arm/mach-omap2/mux.h
+++ b/arch/arm/mach-omap2/mux.h
@@ -147,6 +147,30 @@ u16 omap_mux_get_gpio(int gpio);
147void omap_mux_set_gpio(u16 val, int gpio); 147void omap_mux_set_gpio(u16 val, int gpio);
148 148
149/** 149/**
150 * omap_mux_read() - read mux register
151 * @mux_offset: Offset of the mux register
152 *
153 */
154u16 omap_mux_read(u16 mux_offset);
155
156/**
157 * omap_mux_write() - write mux register
158 * @val: New mux register value
159 * @mux_offset: Offset of the mux register
160 *
161 * This should be only needed for dynamic remuxing of non-gpio signals.
162 */
163void omap_mux_write(u16 val, u16 mux_offset);
164
165/**
166 * omap_mux_write_array() - write an array of mux registers
167 * @board_mux: Array of mux registers terminated by MAP_MUX_TERMINATOR
168 *
169 * This should be only needed for dynamic remuxing of non-gpio signals.
170 */
171void omap_mux_write_array(struct omap_board_mux *board_mux);
172
173/**
150 * omap3_mux_init() - initialize mux system with board specific set 174 * omap3_mux_init() - initialize mux system with board specific set
151 * @board_mux: Board specific mux table 175 * @board_mux: Board specific mux table
152 * @flags: OMAP package type used for the board 176 * @flags: OMAP package type used for the board
diff --git a/arch/arm/mach-omap2/mux34xx.c b/arch/arm/mach-omap2/mux34xx.c
index 68e0a595f9a1..07aa7b3c95f7 100644
--- a/arch/arm/mach-omap2/mux34xx.c
+++ b/arch/arm/mach-omap2/mux34xx.c
@@ -649,6 +649,53 @@ static struct omap_mux __initdata omap3_muxmodes[] = {
649 _OMAP3_MUXENTRY(UART3_TX_IRTX, 166, 649 _OMAP3_MUXENTRY(UART3_TX_IRTX, 166,
650 "uart3_tx_irtx", NULL, NULL, NULL, 650 "uart3_tx_irtx", NULL, NULL, NULL,
651 "gpio_166", NULL, NULL, "safe_mode"), 651 "gpio_166", NULL, NULL, "safe_mode"),
652
653 /* Only on 3630, see omap36xx_cbp_subset for the signals */
654 _OMAP3_MUXENTRY(GPMC_A11, 0,
655 NULL, NULL, NULL, NULL,
656 NULL, NULL, NULL, NULL),
657 _OMAP3_MUXENTRY(SAD2D_MBUSFLAG, 0,
658 NULL, NULL, NULL, NULL,
659 NULL, NULL, NULL, NULL),
660 _OMAP3_MUXENTRY(SAD2D_MREAD, 0,
661 NULL, NULL, NULL, NULL,
662 NULL, NULL, NULL, NULL),
663 _OMAP3_MUXENTRY(SAD2D_MWRITE, 0,
664 NULL, NULL, NULL, NULL,
665 NULL, NULL, NULL, NULL),
666 _OMAP3_MUXENTRY(SAD2D_SBUSFLAG, 0,
667 NULL, NULL, NULL, NULL,
668 NULL, NULL, NULL, NULL),
669 _OMAP3_MUXENTRY(SAD2D_SREAD, 0,
670 NULL, NULL, NULL, NULL,
671 NULL, NULL, NULL, NULL),
672 _OMAP3_MUXENTRY(SAD2D_SWRITE, 0,
673 NULL, NULL, NULL, NULL,
674 NULL, NULL, NULL, NULL),
675 _OMAP3_MUXENTRY(GPMC_A11, 0,
676 NULL, NULL, NULL, NULL,
677 NULL, NULL, NULL, NULL),
678 _OMAP3_MUXENTRY(SAD2D_MCAD28, 0,
679 NULL, NULL, NULL, NULL,
680 NULL, NULL, NULL, NULL),
681 _OMAP3_MUXENTRY(SAD2D_MCAD29, 0,
682 NULL, NULL, NULL, NULL,
683 NULL, NULL, NULL, NULL),
684 _OMAP3_MUXENTRY(SAD2D_MCAD32, 0,
685 NULL, NULL, NULL, NULL,
686 NULL, NULL, NULL, NULL),
687 _OMAP3_MUXENTRY(SAD2D_MCAD33, 0,
688 NULL, NULL, NULL, NULL,
689 NULL, NULL, NULL, NULL),
690 _OMAP3_MUXENTRY(SAD2D_MCAD34, 0,
691 NULL, NULL, NULL, NULL,
692 NULL, NULL, NULL, NULL),
693 _OMAP3_MUXENTRY(SAD2D_MCAD35, 0,
694 NULL, NULL, NULL, NULL,
695 NULL, NULL, NULL, NULL),
696 _OMAP3_MUXENTRY(SAD2D_MCAD36, 0,
697 NULL, NULL, NULL, NULL,
698 NULL, NULL, NULL, NULL),
652 { .reg_offset = OMAP_MUX_TERMINATOR }, 699 { .reg_offset = OMAP_MUX_TERMINATOR },
653}; 700};
654 701
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index d8c8545875b1..478ae585ca39 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -94,7 +94,8 @@ static int _update_sysc_cache(struct omap_hwmod *oh)
94 94
95 oh->_sysc_cache = omap_hwmod_readl(oh, oh->sysconfig->sysc_offs); 95 oh->_sysc_cache = omap_hwmod_readl(oh, oh->sysconfig->sysc_offs);
96 96
97 oh->_int_flags |= _HWMOD_SYSCONFIG_LOADED; 97 if (!(oh->sysconfig->sysc_flags & SYSC_NO_CACHE))
98 oh->_int_flags |= _HWMOD_SYSCONFIG_LOADED;
98 99
99 return 0; 100 return 0;
100} 101}
diff --git a/arch/arm/mach-omap2/opp2420_data.c b/arch/arm/mach-omap2/opp2420_data.c
index 126a9396b3a8..e6dda694fd5c 100644
--- a/arch/arm/mach-omap2/opp2420_data.c
+++ b/arch/arm/mach-omap2/opp2420_data.c
@@ -9,45 +9,47 @@
9 * The OMAP2 processor can be run at several discrete 'PRCM configurations'. 9 * The OMAP2 processor can be run at several discrete 'PRCM configurations'.
10 * These configurations are characterized by voltage and speed for clocks. 10 * These configurations are characterized by voltage and speed for clocks.
11 * The device is only validated for certain combinations. One way to express 11 * The device is only validated for certain combinations. One way to express
12 * these combinations is via the 'ratio's' which the clocks operate with 12 * these combinations is via the 'ratios' which the clocks operate with
13 * respect to each other. These ratio sets are for a given voltage/DPLL 13 * respect to each other. These ratio sets are for a given voltage/DPLL
14 * setting. All configurations can be described by a DPLL setting and a ratio 14 * setting. All configurations can be described by a DPLL setting and a ratio.
15 * There are 3 ratio sets for the 2430 and X ratio sets for 2420.
16 *
17 * 2430 differs from 2420 in that there are no more phase synchronizers used.
18 * They both have a slightly different clock domain setup. 2420(iva1,dsp) vs
19 * 2430 (iva2.1, NOdsp, mdm)
20 * 15 *
21 * XXX Missing voltage data. 16 * XXX Missing voltage data.
17 * XXX Missing 19.2MHz sys_clk rate sets (needed for N800/N810)
22 * 18 *
23 * THe format described in this file is deprecated. Once a reasonable 19 * THe format described in this file is deprecated. Once a reasonable
24 * OPP API exists, the data in this file should be converted to use it. 20 * OPP API exists, the data in this file should be converted to use it.
25 * 21 *
26 * This is technically part of the OMAP2xxx clock code. 22 * This is technically part of the OMAP2xxx clock code.
23 *
24 * Considerable work is still needed to fully support dynamic frequency
25 * changes on OMAP2xxx-series chips. Readers interested in such a
26 * project are encouraged to review the Maemo Diablo RX-34 and RX-44
27 * kernel source at:
28 * http://repository.maemo.org/pool/diablo/free/k/kernel-source-diablo/
27 */ 29 */
28 30
29#include "opp2xxx.h" 31#include "opp2xxx.h"
30#include "sdrc.h" 32#include "sdrc.h"
31#include "clock.h" 33#include "clock.h"
32 34
33/*------------------------------------------------------------------------- 35/*
34 * Key dividers which make up a PRCM set. Ratio's for a PRCM are mandated. 36 * Key dividers which make up a PRCM set. Ratios for a PRCM are mandated.
35 * xtal_speed, dpll_speed, mpu_speed, CM_CLKSEL_MPU, 37 * xtal_speed, dpll_speed, mpu_speed, CM_CLKSEL_MPU,
36 * CM_CLKSEL_DSP, CM_CLKSEL_GFX, CM_CLKSEL1_CORE, CM_CLKSEL1_PLL, 38 * CM_CLKSEL_DSP, CM_CLKSEL_GFX, CM_CLKSEL1_CORE, CM_CLKSEL1_PLL,
37 * CM_CLKSEL2_PLL, CM_CLKSEL_MDM 39 * CM_CLKSEL2_PLL, CM_CLKSEL_MDM
38 * 40 *
39 * Filling in table based on H4 boards and 2430-SDPs variants available. 41 * Filling in table based on H4 boards available. There are quite a
40 * There are quite a few more rates combinations which could be defined. 42 * few more rate combinations which could be defined.
41 * 43 *
42 * When multiple values are defined the start up will try and choose the 44 * When multiple values are defined the start up will try and choose
43 * fastest one. If a 'fast' value is defined, then automatically, the /2 45 * the fastest one. If a 'fast' value is defined, then automatically,
44 * one should be included as it can be used. Generally having more that 46 * the /2 one should be included as it can be used. Generally having
45 * one fast set does not make sense, as static timings need to be changed 47 * more than one fast set does not make sense, as static timings need
46 * to change the set. The exception is the bypass setting which is 48 * to be changed to change the set. The exception is the bypass
47 * availble for low power bypass. 49 * setting which is available for low power bypass.
48 * 50 *
49 * Note: This table needs to be sorted, fastest to slowest. 51 * Note: This table needs to be sorted, fastest to slowest.
50 *-------------------------------------------------------------------------*/ 52 **/
51const struct prcm_config omap2420_rate_table[] = { 53const struct prcm_config omap2420_rate_table[] = {
52 /* PRCM I - FAST */ 54 /* PRCM I - FAST */
53 {S12M, S660M, S330M, RI_CM_CLKSEL_MPU_VAL, /* 330MHz ARM */ 55 {S12M, S660M, S330M, RI_CM_CLKSEL_MPU_VAL, /* 330MHz ARM */
diff --git a/arch/arm/mach-omap2/opp2430_data.c b/arch/arm/mach-omap2/opp2430_data.c
index edb81672c844..1b9596ae201e 100644
--- a/arch/arm/mach-omap2/opp2430_data.c
+++ b/arch/arm/mach-omap2/opp2430_data.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * opp2420_data.c - old-style "OPP" table for OMAP2420 2 * opp2430_data.c - old-style "OPP" table for OMAP2430
3 * 3 *
4 * Copyright (C) 2005-2009 Texas Instruments, Inc. 4 * Copyright (C) 2005-2009 Texas Instruments, Inc.
5 * Copyright (C) 2004-2009 Nokia Corporation 5 * Copyright (C) 2004-2009 Nokia Corporation
@@ -9,16 +9,16 @@
9 * The OMAP2 processor can be run at several discrete 'PRCM configurations'. 9 * The OMAP2 processor can be run at several discrete 'PRCM configurations'.
10 * These configurations are characterized by voltage and speed for clocks. 10 * These configurations are characterized by voltage and speed for clocks.
11 * The device is only validated for certain combinations. One way to express 11 * The device is only validated for certain combinations. One way to express
12 * these combinations is via the 'ratio's' which the clocks operate with 12 * these combinations is via the 'ratios' which the clocks operate with
13 * respect to each other. These ratio sets are for a given voltage/DPLL 13 * respect to each other. These ratio sets are for a given voltage/DPLL
14 * setting. All configurations can be described by a DPLL setting and a ratio 14 * setting. All configurations can be described by a DPLL setting and a ratio.
15 * There are 3 ratio sets for the 2430 and X ratio sets for 2420.
16 * 15 *
17 * 2430 differs from 2420 in that there are no more phase synchronizers used. 16 * 2430 differs from 2420 in that there are no more phase synchronizers used.
18 * They both have a slightly different clock domain setup. 2420(iva1,dsp) vs 17 * They both have a slightly different clock domain setup. 2420(iva1,dsp) vs
19 * 2430 (iva2.1, NOdsp, mdm) 18 * 2430 (iva2.1, NOdsp, mdm)
20 * 19 *
21 * XXX Missing voltage data. 20 * XXX Missing voltage data.
21 * XXX Missing 19.2MHz sys_clk rate sets.
22 * 22 *
23 * THe format described in this file is deprecated. Once a reasonable 23 * THe format described in this file is deprecated. Once a reasonable
24 * OPP API exists, the data in this file should be converted to use it. 24 * OPP API exists, the data in this file should be converted to use it.
@@ -30,24 +30,24 @@
30#include "sdrc.h" 30#include "sdrc.h"
31#include "clock.h" 31#include "clock.h"
32 32
33/*------------------------------------------------------------------------- 33/*
34 * Key dividers which make up a PRCM set. Ratio's for a PRCM are mandated. 34 * Key dividers which make up a PRCM set. Ratios for a PRCM are mandated.
35 * xtal_speed, dpll_speed, mpu_speed, CM_CLKSEL_MPU, 35 * xtal_speed, dpll_speed, mpu_speed, CM_CLKSEL_MPU,
36 * CM_CLKSEL_DSP, CM_CLKSEL_GFX, CM_CLKSEL1_CORE, CM_CLKSEL1_PLL, 36 * CM_CLKSEL_DSP, CM_CLKSEL_GFX, CM_CLKSEL1_CORE, CM_CLKSEL1_PLL,
37 * CM_CLKSEL2_PLL, CM_CLKSEL_MDM 37 * CM_CLKSEL2_PLL, CM_CLKSEL_MDM
38 * 38 *
39 * Filling in table based on H4 boards and 2430-SDPs variants available. 39 * Filling in table based on 2430-SDPs variants available. There are
40 * There are quite a few more rates combinations which could be defined. 40 * quite a few more rate combinations which could be defined.
41 * 41 *
42 * When multiple values are defined the start up will try and choose the 42 * When multiple values are defined the start up will try and choose
43 * fastest one. If a 'fast' value is defined, then automatically, the /2 43 * the fastest one. If a 'fast' value is defined, then automatically,
44 * one should be included as it can be used. Generally having more that 44 * the /2 one should be included as it can be used. Generally having
45 * one fast set does not make sense, as static timings need to be changed 45 * more than one fast set does not make sense, as static timings need
46 * to change the set. The exception is the bypass setting which is 46 * to be changed to change the set. The exception is the bypass
47 * availble for low power bypass. 47 * setting which is available for low power bypass.
48 * 48 *
49 * Note: This table needs to be sorted, fastest to slowest. 49 * Note: This table needs to be sorted, fastest to slowest.
50 *-------------------------------------------------------------------------*/ 50 */
51const struct prcm_config omap2430_rate_table[] = { 51const struct prcm_config omap2430_rate_table[] = {
52 /* PRCM #4 - ratio2 (ES2.1) - FAST */ 52 /* PRCM #4 - ratio2 (ES2.1) - FAST */
53 {S13M, S798M, S399M, R2_CM_CLKSEL_MPU_VAL, /* 399MHz ARM */ 53 {S13M, S798M, S399M, R2_CM_CLKSEL_MPU_VAL, /* 399MHz ARM */
diff --git a/arch/arm/mach-omap2/pm-debug.c b/arch/arm/mach-omap2/pm-debug.c
index 860b755d2220..a0866268aa41 100644
--- a/arch/arm/mach-omap2/pm-debug.c
+++ b/arch/arm/mach-omap2/pm-debug.c
@@ -54,8 +54,6 @@ int omap2_pm_debug;
54 regs[reg_count++].val = \ 54 regs[reg_count++].val = \
55 __raw_readl(OMAP2_L4_IO_ADDRESS(0x480fe000 + (off))) 55 __raw_readl(OMAP2_L4_IO_ADDRESS(0x480fe000 + (off)))
56 56
57static int __init pm_dbg_init(void);
58
59void omap2_pm_dump(int mode, int resume, unsigned int us) 57void omap2_pm_dump(int mode, int resume, unsigned int us)
60{ 58{
61 struct reg { 59 struct reg {
@@ -167,6 +165,8 @@ struct dentry *pm_dbg_dir;
167 165
168static int pm_dbg_init_done; 166static int pm_dbg_init_done;
169 167
168static int __init pm_dbg_init(void);
169
170enum { 170enum {
171 DEBUG_FILE_COUNTERS = 0, 171 DEBUG_FILE_COUNTERS = 0,
172 DEBUG_FILE_TIMERS, 172 DEBUG_FILE_TIMERS,
@@ -488,9 +488,11 @@ int pm_dbg_regset_init(int reg_set)
488 488
489static int pwrdm_suspend_get(void *data, u64 *val) 489static int pwrdm_suspend_get(void *data, u64 *val)
490{ 490{
491 *val = omap3_pm_get_suspend_state((struct powerdomain *)data); 491 int ret;
492 ret = omap3_pm_get_suspend_state((struct powerdomain *)data);
493 *val = ret;
492 494
493 if (*val >= 0) 495 if (ret >= 0)
494 return 0; 496 return 0;
495 return *val; 497 return *val;
496} 498}
@@ -604,6 +606,4 @@ static int __init pm_dbg_init(void)
604} 606}
605arch_initcall(pm_dbg_init); 607arch_initcall(pm_dbg_init);
606 608
607#else
608void pm_dbg_update_time(struct powerdomain *pwrdm, int prev) {}
609#endif 609#endif
diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h
index 0bf345db7147..7a9c2d004511 100644
--- a/arch/arm/mach-omap2/pm.h
+++ b/arch/arm/mach-omap2/pm.h
@@ -32,12 +32,16 @@ extern struct omap_dm_timer *gptimer_wakeup;
32#ifdef CONFIG_PM_DEBUG 32#ifdef CONFIG_PM_DEBUG
33extern void omap2_pm_dump(int mode, int resume, unsigned int us); 33extern void omap2_pm_dump(int mode, int resume, unsigned int us);
34extern int omap2_pm_debug; 34extern int omap2_pm_debug;
35#else
36#define omap2_pm_dump(mode, resume, us) do {} while (0);
37#define omap2_pm_debug 0
38#endif
39
40#if defined(CONFIG_PM_DEBUG) && defined(CONFIG_DEBUG_FS)
35extern void pm_dbg_update_time(struct powerdomain *pwrdm, int prev); 41extern void pm_dbg_update_time(struct powerdomain *pwrdm, int prev);
36extern int pm_dbg_regset_save(int reg_set); 42extern int pm_dbg_regset_save(int reg_set);
37extern int pm_dbg_regset_init(int reg_set); 43extern int pm_dbg_regset_init(int reg_set);
38#else 44#else
39#define omap2_pm_dump(mode, resume, us) do {} while (0);
40#define omap2_pm_debug 0
41#define pm_dbg_update_time(pwrdm, prev) do {} while (0); 45#define pm_dbg_update_time(pwrdm, prev) do {} while (0);
42#define pm_dbg_regset_save(reg_set) do {} while (0); 46#define pm_dbg_regset_save(reg_set) do {} while (0);
43#define pm_dbg_regset_init(reg_set) do {} while (0); 47#define pm_dbg_regset_init(reg_set) do {} while (0);
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index 81ed252a0f8a..910a7acf542d 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -26,6 +26,7 @@
26#include <linux/err.h> 26#include <linux/err.h>
27#include <linux/gpio.h> 27#include <linux/gpio.h>
28#include <linux/clk.h> 28#include <linux/clk.h>
29#include <linux/delay.h>
29 30
30#include <plat/sram.h> 31#include <plat/sram.h>
31#include <plat/clockdomain.h> 32#include <plat/clockdomain.h>
@@ -124,9 +125,17 @@ static void omap3_core_save_context(void)
124 control_padconf_off |= START_PADCONF_SAVE; 125 control_padconf_off |= START_PADCONF_SAVE;
125 omap_ctrl_writel(control_padconf_off, OMAP343X_CONTROL_PADCONF_OFF); 126 omap_ctrl_writel(control_padconf_off, OMAP343X_CONTROL_PADCONF_OFF);
126 /* wait for the save to complete */ 127 /* wait for the save to complete */
127 while (!omap_ctrl_readl(OMAP343X_CONTROL_GENERAL_PURPOSE_STATUS) 128 while (!(omap_ctrl_readl(OMAP343X_CONTROL_GENERAL_PURPOSE_STATUS)
128 & PADCONF_SAVE_DONE) 129 & PADCONF_SAVE_DONE))
129 ; 130 udelay(1);
131
132 /*
133 * Force write last pad into memory, as this can fail in some
134 * cases according to erratas 1.157, 1.185
135 */
136 omap_ctrl_writel(omap_ctrl_readl(OMAP343X_PADCONF_ETK_D14),
137 OMAP343X_CONTROL_MEM_WKUP + 0x2a0);
138
130 /* Save the Interrupt controller context */ 139 /* Save the Interrupt controller context */
131 omap_intc_save_context(); 140 omap_intc_save_context();
132 /* Save the GPMC context */ 141 /* Save the GPMC context */
@@ -392,6 +401,7 @@ void omap_sram_idle(void)
392 prm_set_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN); 401 prm_set_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN);
393 omap3_enable_io_chain(); 402 omap3_enable_io_chain();
394 } 403 }
404 omap3_intc_prepare_idle();
395 405
396 /* 406 /*
397 * On EMU/HS devices ROM code restores a SRDC value 407 * On EMU/HS devices ROM code restores a SRDC value
@@ -438,6 +448,7 @@ void omap_sram_idle(void)
438 OMAP3430_GR_MOD, 448 OMAP3430_GR_MOD,
439 OMAP3_PRM_VOLTCTRL_OFFSET); 449 OMAP3_PRM_VOLTCTRL_OFFSET);
440 } 450 }
451 omap3_intc_resume_idle();
441 452
442 /* PER */ 453 /* PER */
443 if (per_next_state < PWRDM_POWER_ON) { 454 if (per_next_state < PWRDM_POWER_ON) {
@@ -578,6 +589,8 @@ static int omap3_pm_suspend(void)
578 } 589 }
579 590
580 omap_uart_prepare_suspend(); 591 omap_uart_prepare_suspend();
592 omap3_intc_suspend();
593
581 omap_sram_idle(); 594 omap_sram_idle();
582 595
583restore: 596restore:
@@ -835,6 +848,8 @@ static void __init prcm_setup_regs(void)
835 CM_AUTOIDLE); 848 CM_AUTOIDLE);
836 } 849 }
837 850
851 omap_ctrl_writel(OMAP3430_AUTOIDLE, OMAP2_CONTROL_SYSCONFIG);
852
838 /* 853 /*
839 * Set all plls to autoidle. This is needed until autoidle is 854 * Set all plls to autoidle. This is needed until autoidle is
840 * enabled by clockfw 855 * enabled by clockfw
@@ -875,15 +890,23 @@ static void __init prcm_setup_regs(void)
875 prm_write_mod_reg(OMAP3430_IO_EN | OMAP3430_WKUP_EN, 890 prm_write_mod_reg(OMAP3430_IO_EN | OMAP3430_WKUP_EN,
876 OCP_MOD, OMAP3_PRM_IRQENABLE_MPU_OFFSET); 891 OCP_MOD, OMAP3_PRM_IRQENABLE_MPU_OFFSET);
877 892
893 /* Enable PM_WKEN to support DSS LPR */
894 prm_write_mod_reg(OMAP3430_PM_WKEN_DSS_EN_DSS,
895 OMAP3430_DSS_MOD, PM_WKEN);
896
878 /* Enable wakeups in PER */ 897 /* Enable wakeups in PER */
879 prm_write_mod_reg(OMAP3430_EN_GPIO2 | OMAP3430_EN_GPIO3 | 898 prm_write_mod_reg(OMAP3430_EN_GPIO2 | OMAP3430_EN_GPIO3 |
880 OMAP3430_EN_GPIO4 | OMAP3430_EN_GPIO5 | 899 OMAP3430_EN_GPIO4 | OMAP3430_EN_GPIO5 |
881 OMAP3430_EN_GPIO6 | OMAP3430_EN_UART3, 900 OMAP3430_EN_GPIO6 | OMAP3430_EN_UART3 |
901 OMAP3430_EN_MCBSP2 | OMAP3430_EN_MCBSP3 |
902 OMAP3430_EN_MCBSP4,
882 OMAP3430_PER_MOD, PM_WKEN); 903 OMAP3430_PER_MOD, PM_WKEN);
883 /* and allow them to wake up MPU */ 904 /* and allow them to wake up MPU */
884 prm_write_mod_reg(OMAP3430_GRPSEL_GPIO2 | OMAP3430_EN_GPIO3 | 905 prm_write_mod_reg(OMAP3430_GRPSEL_GPIO2 | OMAP3430_EN_GPIO3 |
885 OMAP3430_GRPSEL_GPIO4 | OMAP3430_EN_GPIO5 | 906 OMAP3430_GRPSEL_GPIO4 | OMAP3430_EN_GPIO5 |
886 OMAP3430_GRPSEL_GPIO6 | OMAP3430_EN_UART3, 907 OMAP3430_GRPSEL_GPIO6 | OMAP3430_EN_UART3 |
908 OMAP3430_EN_MCBSP2 | OMAP3430_EN_MCBSP3 |
909 OMAP3430_EN_MCBSP4,
887 OMAP3430_PER_MOD, OMAP3430_PM_MPUGRPSEL); 910 OMAP3430_PER_MOD, OMAP3430_PM_MPUGRPSEL);
888 911
889 /* Don't attach IVA interrupts */ 912 /* Don't attach IVA interrupts */
@@ -904,24 +927,6 @@ static void __init prcm_setup_regs(void)
904 /* Clear any pending PRCM interrupts */ 927 /* Clear any pending PRCM interrupts */
905 prm_write_mod_reg(0, OCP_MOD, OMAP3_PRM_IRQSTATUS_MPU_OFFSET); 928 prm_write_mod_reg(0, OCP_MOD, OMAP3_PRM_IRQSTATUS_MPU_OFFSET);
906 929
907 /* Don't attach IVA interrupts */
908 prm_write_mod_reg(0, WKUP_MOD, OMAP3430_PM_IVAGRPSEL);
909 prm_write_mod_reg(0, CORE_MOD, OMAP3430_PM_IVAGRPSEL1);
910 prm_write_mod_reg(0, CORE_MOD, OMAP3430ES2_PM_IVAGRPSEL3);
911 prm_write_mod_reg(0, OMAP3430_PER_MOD, OMAP3430_PM_IVAGRPSEL);
912
913 /* Clear any pending 'reset' flags */
914 prm_write_mod_reg(0xffffffff, MPU_MOD, RM_RSTST);
915 prm_write_mod_reg(0xffffffff, CORE_MOD, RM_RSTST);
916 prm_write_mod_reg(0xffffffff, OMAP3430_PER_MOD, RM_RSTST);
917 prm_write_mod_reg(0xffffffff, OMAP3430_EMU_MOD, RM_RSTST);
918 prm_write_mod_reg(0xffffffff, OMAP3430_NEON_MOD, RM_RSTST);
919 prm_write_mod_reg(0xffffffff, OMAP3430_DSS_MOD, RM_RSTST);
920 prm_write_mod_reg(0xffffffff, OMAP3430ES2_USBHOST_MOD, RM_RSTST);
921
922 /* Clear any pending PRCM interrupts */
923 prm_write_mod_reg(0, OCP_MOD, OMAP3_PRM_IRQSTATUS_MPU_OFFSET);
924
925 omap3_iva_idle(); 930 omap3_iva_idle();
926 omap3_d2d_idle(); 931 omap3_d2d_idle();
927} 932}
diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c
index 3ea8177ffb25..cf466ea1dffc 100644
--- a/arch/arm/mach-omap2/prcm.c
+++ b/arch/arm/mach-omap2/prcm.c
@@ -44,7 +44,6 @@ struct omap3_prcm_regs {
44 u32 iva2_cm_clksel2; 44 u32 iva2_cm_clksel2;
45 u32 cm_sysconfig; 45 u32 cm_sysconfig;
46 u32 sgx_cm_clksel; 46 u32 sgx_cm_clksel;
47 u32 wkup_cm_clksel;
48 u32 dss_cm_clksel; 47 u32 dss_cm_clksel;
49 u32 cam_cm_clksel; 48 u32 cam_cm_clksel;
50 u32 per_cm_clksel; 49 u32 per_cm_clksel;
@@ -53,7 +52,6 @@ struct omap3_prcm_regs {
53 u32 pll_cm_autoidle2; 52 u32 pll_cm_autoidle2;
54 u32 pll_cm_clksel4; 53 u32 pll_cm_clksel4;
55 u32 pll_cm_clksel5; 54 u32 pll_cm_clksel5;
56 u32 pll_cm_clken;
57 u32 pll_cm_clken2; 55 u32 pll_cm_clken2;
58 u32 cm_polctrl; 56 u32 cm_polctrl;
59 u32 iva2_cm_fclken; 57 u32 iva2_cm_fclken;
@@ -77,7 +75,6 @@ struct omap3_prcm_regs {
77 u32 usbhost_cm_iclken; 75 u32 usbhost_cm_iclken;
78 u32 iva2_cm_autiidle2; 76 u32 iva2_cm_autiidle2;
79 u32 mpu_cm_autoidle2; 77 u32 mpu_cm_autoidle2;
80 u32 pll_cm_autoidle;
81 u32 iva2_cm_clkstctrl; 78 u32 iva2_cm_clkstctrl;
82 u32 mpu_cm_clkstctrl; 79 u32 mpu_cm_clkstctrl;
83 u32 core_cm_clkstctrl; 80 u32 core_cm_clkstctrl;
@@ -274,7 +271,6 @@ void omap3_prcm_save_context(void)
274 prcm_context.cm_sysconfig = __raw_readl(OMAP3430_CM_SYSCONFIG); 271 prcm_context.cm_sysconfig = __raw_readl(OMAP3430_CM_SYSCONFIG);
275 prcm_context.sgx_cm_clksel = 272 prcm_context.sgx_cm_clksel =
276 cm_read_mod_reg(OMAP3430ES2_SGX_MOD, CM_CLKSEL); 273 cm_read_mod_reg(OMAP3430ES2_SGX_MOD, CM_CLKSEL);
277 prcm_context.wkup_cm_clksel = cm_read_mod_reg(WKUP_MOD, CM_CLKSEL);
278 prcm_context.dss_cm_clksel = 274 prcm_context.dss_cm_clksel =
279 cm_read_mod_reg(OMAP3430_DSS_MOD, CM_CLKSEL); 275 cm_read_mod_reg(OMAP3430_DSS_MOD, CM_CLKSEL);
280 prcm_context.cam_cm_clksel = 276 prcm_context.cam_cm_clksel =
@@ -291,8 +287,6 @@ void omap3_prcm_save_context(void)
291 cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKSEL4); 287 cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKSEL4);
292 prcm_context.pll_cm_clksel5 = 288 prcm_context.pll_cm_clksel5 =
293 cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKSEL5); 289 cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKSEL5);
294 prcm_context.pll_cm_clken =
295 cm_read_mod_reg(PLL_MOD, CM_CLKEN);
296 prcm_context.pll_cm_clken2 = 290 prcm_context.pll_cm_clken2 =
297 cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKEN2); 291 cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKEN2);
298 prcm_context.cm_polctrl = __raw_readl(OMAP3430_CM_POLCTRL); 292 prcm_context.cm_polctrl = __raw_readl(OMAP3430_CM_POLCTRL);
@@ -338,8 +332,6 @@ void omap3_prcm_save_context(void)
338 cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_AUTOIDLE2); 332 cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_AUTOIDLE2);
339 prcm_context.mpu_cm_autoidle2 = 333 prcm_context.mpu_cm_autoidle2 =
340 cm_read_mod_reg(MPU_MOD, CM_AUTOIDLE2); 334 cm_read_mod_reg(MPU_MOD, CM_AUTOIDLE2);
341 prcm_context.pll_cm_autoidle =
342 cm_read_mod_reg(PLL_MOD, CM_AUTOIDLE);
343 prcm_context.iva2_cm_clkstctrl = 335 prcm_context.iva2_cm_clkstctrl =
344 cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_CLKSTCTRL); 336 cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_CLKSTCTRL);
345 prcm_context.mpu_cm_clkstctrl = 337 prcm_context.mpu_cm_clkstctrl =
@@ -431,7 +423,6 @@ void omap3_prcm_restore_context(void)
431 __raw_writel(prcm_context.cm_sysconfig, OMAP3430_CM_SYSCONFIG); 423 __raw_writel(prcm_context.cm_sysconfig, OMAP3430_CM_SYSCONFIG);
432 cm_write_mod_reg(prcm_context.sgx_cm_clksel, OMAP3430ES2_SGX_MOD, 424 cm_write_mod_reg(prcm_context.sgx_cm_clksel, OMAP3430ES2_SGX_MOD,
433 CM_CLKSEL); 425 CM_CLKSEL);
434 cm_write_mod_reg(prcm_context.wkup_cm_clksel, WKUP_MOD, CM_CLKSEL);
435 cm_write_mod_reg(prcm_context.dss_cm_clksel, OMAP3430_DSS_MOD, 426 cm_write_mod_reg(prcm_context.dss_cm_clksel, OMAP3430_DSS_MOD,
436 CM_CLKSEL); 427 CM_CLKSEL);
437 cm_write_mod_reg(prcm_context.cam_cm_clksel, OMAP3430_CAM_MOD, 428 cm_write_mod_reg(prcm_context.cam_cm_clksel, OMAP3430_CAM_MOD,
@@ -448,7 +439,6 @@ void omap3_prcm_restore_context(void)
448 OMAP3430ES2_CM_CLKSEL4); 439 OMAP3430ES2_CM_CLKSEL4);
449 cm_write_mod_reg(prcm_context.pll_cm_clksel5, PLL_MOD, 440 cm_write_mod_reg(prcm_context.pll_cm_clksel5, PLL_MOD,
450 OMAP3430ES2_CM_CLKSEL5); 441 OMAP3430ES2_CM_CLKSEL5);
451 cm_write_mod_reg(prcm_context.pll_cm_clken, PLL_MOD, CM_CLKEN);
452 cm_write_mod_reg(prcm_context.pll_cm_clken2, PLL_MOD, 442 cm_write_mod_reg(prcm_context.pll_cm_clken2, PLL_MOD,
453 OMAP3430ES2_CM_CLKEN2); 443 OMAP3430ES2_CM_CLKEN2);
454 __raw_writel(prcm_context.cm_polctrl, OMAP3430_CM_POLCTRL); 444 __raw_writel(prcm_context.cm_polctrl, OMAP3430_CM_POLCTRL);
@@ -487,7 +477,6 @@ void omap3_prcm_restore_context(void)
487 cm_write_mod_reg(prcm_context.iva2_cm_autiidle2, OMAP3430_IVA2_MOD, 477 cm_write_mod_reg(prcm_context.iva2_cm_autiidle2, OMAP3430_IVA2_MOD,
488 CM_AUTOIDLE2); 478 CM_AUTOIDLE2);
489 cm_write_mod_reg(prcm_context.mpu_cm_autoidle2, MPU_MOD, CM_AUTOIDLE2); 479 cm_write_mod_reg(prcm_context.mpu_cm_autoidle2, MPU_MOD, CM_AUTOIDLE2);
490 cm_write_mod_reg(prcm_context.pll_cm_autoidle, PLL_MOD, CM_AUTOIDLE);
491 cm_write_mod_reg(prcm_context.iva2_cm_clkstctrl, OMAP3430_IVA2_MOD, 480 cm_write_mod_reg(prcm_context.iva2_cm_clkstctrl, OMAP3430_IVA2_MOD,
492 CM_CLKSTCTRL); 481 CM_CLKSTCTRL);
493 cm_write_mod_reg(prcm_context.mpu_cm_clkstctrl, MPU_MOD, CM_CLKSTCTRL); 482 cm_write_mod_reg(prcm_context.mpu_cm_clkstctrl, MPU_MOD, CM_CLKSTCTRL);
diff --git a/arch/arm/mach-omap2/prm.h b/arch/arm/mach-omap2/prm.h
index ea050ce188a7..40f006285163 100644
--- a/arch/arm/mach-omap2/prm.h
+++ b/arch/arm/mach-omap2/prm.h
@@ -24,6 +24,8 @@
24 OMAP2_L4_IO_ADDRESS(OMAP3430_PRM_BASE + (module) + (reg)) 24 OMAP2_L4_IO_ADDRESS(OMAP3430_PRM_BASE + (module) + (reg))
25#define OMAP44XX_PRM_REGADDR(module, reg) \ 25#define OMAP44XX_PRM_REGADDR(module, reg) \
26 OMAP2_L4_IO_ADDRESS(OMAP4430_PRM_BASE + (module) + (reg)) 26 OMAP2_L4_IO_ADDRESS(OMAP4430_PRM_BASE + (module) + (reg))
27#define OMAP44XX_CHIRONSS_REGADDR(module, reg) \
28 OMAP2_L4_IO_ADDRESS(OMAP4430_CHIRONSS_BASE + (module) + (reg))
27 29
28#include "prm44xx.h" 30#include "prm44xx.h"
29 31
diff --git a/arch/arm/mach-omap2/prm44xx.h b/arch/arm/mach-omap2/prm44xx.h
index 89be97f0589d..adb2558bb121 100644
--- a/arch/arm/mach-omap2/prm44xx.h
+++ b/arch/arm/mach-omap2/prm44xx.h
@@ -386,26 +386,26 @@
386 386
387 387
388/* CHIRON_PRCM.CHIRONSS_OCP_SOCKET_PRCM register offsets */ 388/* CHIRON_PRCM.CHIRONSS_OCP_SOCKET_PRCM register offsets */
389#define OMAP4430_REVISION_PRCM OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_OCP_SOCKET_PRCM_MOD, 0x0000) 389#define OMAP4430_REVISION_PRCM OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_OCP_SOCKET_PRCM_MOD, 0x0000)
390 390
391/* CHIRON_PRCM.CHIRONSS_DEVICE_PRM register offsets */ 391/* CHIRON_PRCM.CHIRONSS_DEVICE_PRM register offsets */
392#define OMAP4430_CHIRON_PRCM_PRM_RSTST OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_DEVICE_PRM_MOD, 0x0000) 392#define OMAP4430_CHIRON_PRCM_PRM_RSTST OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_DEVICE_PRM_MOD, 0x0000)
393 393
394/* CHIRON_PRCM.CHIRONSS_CPU0 register offsets */ 394/* CHIRON_PRCM.CHIRONSS_CPU0 register offsets */
395#define OMAP4430_PM_PDA_CPU0_PWRSTCTRL OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0000) 395#define OMAP4430_PM_PDA_CPU0_PWRSTCTRL OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0000)
396#define OMAP4430_PM_PDA_CPU0_PWRSTST OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0004) 396#define OMAP4430_PM_PDA_CPU0_PWRSTST OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0004)
397#define OMAP4430_RM_PDA_CPU0_CPU0_CONTEXT OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0008) 397#define OMAP4430_RM_PDA_CPU0_CPU0_CONTEXT OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0008)
398#define OMAP4430_RM_PDA_CPU0_CPU0_RSTCTRL OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x000c) 398#define OMAP4430_RM_PDA_CPU0_CPU0_RSTCTRL OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x000c)
399#define OMAP4430_RM_PDA_CPU0_CPU0_RSTST OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0010) 399#define OMAP4430_RM_PDA_CPU0_CPU0_RSTST OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0010)
400#define OMAP4430_CM_PDA_CPU0_CPU0_CLKCTRL OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0014) 400#define OMAP4430_CM_PDA_CPU0_CPU0_CLKCTRL OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0014)
401#define OMAP4430_CM_PDA_CPU0_CLKSTCTRL OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0018) 401#define OMAP4430_CM_PDA_CPU0_CLKSTCTRL OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0018)
402 402
403/* CHIRON_PRCM.CHIRONSS_CPU1 register offsets */ 403/* CHIRON_PRCM.CHIRONSS_CPU1 register offsets */
404#define OMAP4430_PM_PDA_CPU1_PWRSTCTRL OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0000) 404#define OMAP4430_PM_PDA_CPU1_PWRSTCTRL OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0000)
405#define OMAP4430_PM_PDA_CPU1_PWRSTST OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0004) 405#define OMAP4430_PM_PDA_CPU1_PWRSTST OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0004)
406#define OMAP4430_RM_PDA_CPU1_CPU1_CONTEXT OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0008) 406#define OMAP4430_RM_PDA_CPU1_CPU1_CONTEXT OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0008)
407#define OMAP4430_RM_PDA_CPU1_CPU1_RSTCTRL OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x000c) 407#define OMAP4430_RM_PDA_CPU1_CPU1_RSTCTRL OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x000c)
408#define OMAP4430_RM_PDA_CPU1_CPU1_RSTST OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0010) 408#define OMAP4430_RM_PDA_CPU1_CPU1_RSTST OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0010)
409#define OMAP4430_CM_PDA_CPU1_CPU1_CLKCTRL OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0014) 409#define OMAP4430_CM_PDA_CPU1_CPU1_CLKCTRL OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0014)
410#define OMAP4430_CM_PDA_CPU1_CLKSTCTRL OMAP44XX_PRM_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0018) 410#define OMAP4430_CM_PDA_CPU1_CLKSTCTRL OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0018)
411#endif 411#endif
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
index 19805a7de06c..e10a02df6e1d 100644
--- a/arch/arm/mach-omap2/serial.c
+++ b/arch/arm/mach-omap2/serial.c
@@ -36,7 +36,13 @@
36#define UART_OMAP_NO_EMPTY_FIFO_READ_IP_REV 0x52 36#define UART_OMAP_NO_EMPTY_FIFO_READ_IP_REV 0x52
37#define UART_OMAP_WER 0x17 /* Wake-up enable register */ 37#define UART_OMAP_WER 0x17 /* Wake-up enable register */
38 38
39#define DEFAULT_TIMEOUT (5 * HZ) 39/*
40 * NOTE: By default the serial timeout is disabled as it causes lost characters
41 * over the serial ports. This means that the UART clocks will stay on until
42 * disabled via sysfs. This also causes that any deeper omap sleep states are
43 * blocked.
44 */
45#define DEFAULT_TIMEOUT 0
40 46
41struct omap_uart_state { 47struct omap_uart_state {
42 int num; 48 int num;
@@ -125,6 +131,13 @@ static struct plat_serial8250_port serial_platform_data3[] = {
125 } 131 }
126}; 132};
127#endif 133#endif
134static inline unsigned int __serial_read_reg(struct uart_port *up,
135 int offset)
136{
137 offset <<= up->regshift;
138 return (unsigned int)__raw_readb(up->membase + offset);
139}
140
128static inline unsigned int serial_read_reg(struct plat_serial8250_port *up, 141static inline unsigned int serial_read_reg(struct plat_serial8250_port *up,
129 int offset) 142 int offset)
130{ 143{
@@ -415,7 +428,8 @@ static void omap_uart_idle_init(struct omap_uart_state *uart)
415 uart->timeout = DEFAULT_TIMEOUT; 428 uart->timeout = DEFAULT_TIMEOUT;
416 setup_timer(&uart->timer, omap_uart_idle_timer, 429 setup_timer(&uart->timer, omap_uart_idle_timer,
417 (unsigned long) uart); 430 (unsigned long) uart);
418 mod_timer(&uart->timer, jiffies + uart->timeout); 431 if (uart->timeout)
432 mod_timer(&uart->timer, jiffies + uart->timeout);
419 omap_uart_smart_idle_enable(uart, 0); 433 omap_uart_smart_idle_enable(uart, 0);
420 434
421 if (cpu_is_omap34xx()) { 435 if (cpu_is_omap34xx()) {
@@ -583,11 +597,12 @@ static unsigned int serial_in_override(struct uart_port *up, int offset)
583{ 597{
584 if (UART_RX == offset) { 598 if (UART_RX == offset) {
585 unsigned int lsr; 599 unsigned int lsr;
586 lsr = serial_read_reg(omap_uart[up->line].p, UART_LSR); 600 lsr = __serial_read_reg(up, UART_LSR);
587 if (!(lsr & UART_LSR_DR)) 601 if (!(lsr & UART_LSR_DR))
588 return -EPERM; 602 return -EPERM;
589 } 603 }
590 return serial_read_reg(omap_uart[up->line].p, offset); 604
605 return __serial_read_reg(up, offset);
591} 606}
592 607
593void __init omap_serial_early_init(void) 608void __init omap_serial_early_init(void)
diff --git a/arch/arm/mach-omap2/sleep34xx.S b/arch/arm/mach-omap2/sleep34xx.S
index 15268f8b61de..c3626ea48143 100644
--- a/arch/arm/mach-omap2/sleep34xx.S
+++ b/arch/arm/mach-omap2/sleep34xx.S
@@ -245,7 +245,8 @@ restore:
245 mov r1, #0 @ set task id for ROM code in r1 245 mov r1, #0 @ set task id for ROM code in r1
246 mov r2, #4 @ set some flags in r2, r6 246 mov r2, #4 @ set some flags in r2, r6
247 mov r6, #0xff 247 mov r6, #0xff
248 adr r3, write_aux_control_params @ r3 points to parameters 248 ldr r4, scratchpad_base
249 ldr r3, [r4, #0xBC] @ r3 points to parameters
249 mcr p15, 0, r0, c7, c10, 4 @ data write barrier 250 mcr p15, 0, r0, c7, c10, 4 @ data write barrier
250 mcr p15, 0, r0, c7, c10, 5 @ data memory barrier 251 mcr p15, 0, r0, c7, c10, 5 @ data memory barrier
251 .word 0xE1600071 @ call SMI monitor (smi #1) 252 .word 0xE1600071 @ call SMI monitor (smi #1)
@@ -253,14 +254,14 @@ restore:
253 b logic_l1_restore 254 b logic_l1_restore
254l2_inv_api_params: 255l2_inv_api_params:
255 .word 0x1, 0x00 256 .word 0x1, 0x00
256write_aux_control_params:
257 .word 0x1, 0x72
258l2_inv_gp: 257l2_inv_gp:
259 /* Execute smi to invalidate L2 cache */ 258 /* Execute smi to invalidate L2 cache */
260 mov r12, #0x1 @ set up to invalide L2 259 mov r12, #0x1 @ set up to invalide L2
261smi: .word 0xE1600070 @ Call SMI monitor (smieq) 260smi: .word 0xE1600070 @ Call SMI monitor (smieq)
262 /* Write to Aux control register to set some bits */ 261 /* Write to Aux control register to set some bits */
263 mov r0, #0x72 262 ldr r4, scratchpad_base
263 ldr r3, [r4,#0xBC]
264 ldr r0, [r3,#4]
264 mov r12, #0x3 265 mov r12, #0x3
265 .word 0xE1600070 @ Call SMI monitor (smieq) 266 .word 0xE1600070 @ Call SMI monitor (smieq)
266logic_l1_restore: 267logic_l1_restore:
@@ -271,6 +272,7 @@ logic_l1_restore:
271 272
272 ldr r4, scratchpad_base 273 ldr r4, scratchpad_base
273 ldr r3, [r4,#0xBC] 274 ldr r3, [r4,#0xBC]
275 adds r3, r3, #8
274 ldmia r3!, {r4-r6} 276 ldmia r3!, {r4-r6}
275 mov sp, r4 277 mov sp, r4
276 msr spsr_cxsf, r5 278 msr spsr_cxsf, r5
@@ -387,6 +389,9 @@ usettbr0:
387save_context_wfi: 389save_context_wfi:
388 /*b save_context_wfi*/ @ enable to debug save code 390 /*b save_context_wfi*/ @ enable to debug save code
389 mov r8, r0 /* Store SDRAM address in r8 */ 391 mov r8, r0 /* Store SDRAM address in r8 */
392 mrc p15, 0, r5, c1, c0, 1 @ Read Auxiliary Control Register
393 mov r4, #0x1 @ Number of parameters for restore call
394 stmia r8!, {r4-r5}
390 /* Check what that target sleep state is:stored in r1*/ 395 /* Check what that target sleep state is:stored in r1*/
391 /* 1 - Only L1 and logic lost */ 396 /* 1 - Only L1 and logic lost */
392 /* 2 - Only L2 lost */ 397 /* 2 - Only L2 lost */
diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c
index b31ca4cef365..8f159db4d08a 100644
--- a/arch/arm/mach-orion5x/dns323-setup.c
+++ b/arch/arm/mach-orion5x/dns323-setup.c
@@ -12,6 +12,7 @@
12 12
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/init.h> 14#include <linux/init.h>
15#include <linux/delay.h>
15#include <linux/platform_device.h> 16#include <linux/platform_device.h>
16#include <linux/pci.h> 17#include <linux/pci.h>
17#include <linux/irq.h> 18#include <linux/irq.h>
@@ -32,6 +33,7 @@
32 33
33#define DNS323_GPIO_LED_RIGHT_AMBER 1 34#define DNS323_GPIO_LED_RIGHT_AMBER 1
34#define DNS323_GPIO_LED_LEFT_AMBER 2 35#define DNS323_GPIO_LED_LEFT_AMBER 2
36#define DNS323_GPIO_SYSTEM_UP 3
35#define DNS323_GPIO_LED_POWER 5 37#define DNS323_GPIO_LED_POWER 5
36#define DNS323_GPIO_OVERTEMP 6 38#define DNS323_GPIO_OVERTEMP 6
37#define DNS323_GPIO_RTC 7 39#define DNS323_GPIO_RTC 7
@@ -239,7 +241,7 @@ static struct gpio_led dns323_leds[] = {
239 { 241 {
240 .name = "power:blue", 242 .name = "power:blue",
241 .gpio = DNS323_GPIO_LED_POWER, 243 .gpio = DNS323_GPIO_LED_POWER,
242 .active_low = 1, 244 .default_state = LEDS_GPIO_DEFSTATE_ON,
243 }, { 245 }, {
244 .name = "right:amber", 246 .name = "right:amber",
245 .gpio = DNS323_GPIO_LED_RIGHT_AMBER, 247 .gpio = DNS323_GPIO_LED_RIGHT_AMBER,
@@ -334,7 +336,7 @@ static struct orion5x_mpp_mode dns323_mv88f5182_mpp_modes[] __initdata = {
334 { 0, MPP_UNUSED }, 336 { 0, MPP_UNUSED },
335 { 1, MPP_GPIO }, /* right amber LED (sata ch0) */ 337 { 1, MPP_GPIO }, /* right amber LED (sata ch0) */
336 { 2, MPP_GPIO }, /* left amber LED (sata ch1) */ 338 { 2, MPP_GPIO }, /* left amber LED (sata ch1) */
337 { 3, MPP_UNUSED }, 339 { 3, MPP_GPIO }, /* system up flag */
338 { 4, MPP_GPIO }, /* power button LED */ 340 { 4, MPP_GPIO }, /* power button LED */
339 { 5, MPP_GPIO }, /* power button LED */ 341 { 5, MPP_GPIO }, /* power button LED */
340 { 6, MPP_GPIO }, /* GMT G751-2f overtemp */ 342 { 6, MPP_GPIO }, /* GMT G751-2f overtemp */
@@ -372,13 +374,23 @@ static struct i2c_board_info __initdata dns323_i2c_devices[] = {
372 }, 374 },
373}; 375};
374 376
375/* DNS-323 specific power off method */ 377/* DNS-323 rev. A specific power off method */
376static void dns323_power_off(void) 378static void dns323a_power_off(void)
377{ 379{
378 pr_info("%s: triggering power-off...\n", __func__); 380 pr_info("%s: triggering power-off...\n", __func__);
379 gpio_set_value(DNS323_GPIO_POWER_OFF, 1); 381 gpio_set_value(DNS323_GPIO_POWER_OFF, 1);
380} 382}
381 383
384/* DNS-323 rev B specific power off method */
385static void dns323b_power_off(void)
386{
387 pr_info("%s: triggering power-off...\n", __func__);
388 /* Pin has to be changed to 1 and back to 0 to do actual power off. */
389 gpio_set_value(DNS323_GPIO_POWER_OFF, 1);
390 mdelay(100);
391 gpio_set_value(DNS323_GPIO_POWER_OFF, 0);
392}
393
382static void __init dns323_init(void) 394static void __init dns323_init(void)
383{ 395{
384 /* Setup basic Orion functions. Need to be called early. */ 396 /* Setup basic Orion functions. Need to be called early. */
@@ -424,11 +436,20 @@ static void __init dns323_init(void)
424 if (dns323_dev_id() == MV88F5182_DEV_ID) 436 if (dns323_dev_id() == MV88F5182_DEV_ID)
425 orion5x_sata_init(&dns323_sata_data); 437 orion5x_sata_init(&dns323_sata_data);
426 438
427 /* register dns323 specific power-off method */ 439 /* The 5182 has flag to indicate the system is up. Without this flag
440 * set, power LED will flash and cannot be controlled via leds-gpio.
441 */
442 if (dns323_dev_id() == MV88F5182_DEV_ID)
443 gpio_set_value(DNS323_GPIO_SYSTEM_UP, 1);
444
445 /* Register dns323 specific power-off method */
428 if (gpio_request(DNS323_GPIO_POWER_OFF, "POWEROFF") != 0 || 446 if (gpio_request(DNS323_GPIO_POWER_OFF, "POWEROFF") != 0 ||
429 gpio_direction_output(DNS323_GPIO_POWER_OFF, 0) != 0) 447 gpio_direction_output(DNS323_GPIO_POWER_OFF, 0) != 0)
430 pr_err("DNS323: failed to setup power-off GPIO\n"); 448 pr_err("DNS323: failed to setup power-off GPIO\n");
431 pm_power_off = dns323_power_off; 449 if (dns323_dev_id() == MV88F5182_DEV_ID)
450 pm_power_off = dns323b_power_off;
451 else
452 pm_power_off = dns323a_power_off;
432} 453}
433 454
434/* Warning: D-Link uses a wrong mach-type (=526) in their bootloader */ 455/* Warning: D-Link uses a wrong mach-type (=526) in their bootloader */
diff --git a/arch/arm/mach-orion5x/wrt350n-v2-setup.c b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
index 1b4ad9d5e2eb..cb0feca193d4 100644
--- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c
+++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
@@ -15,6 +15,9 @@
15#include <linux/mtd/physmap.h> 15#include <linux/mtd/physmap.h>
16#include <linux/mv643xx_eth.h> 16#include <linux/mv643xx_eth.h>
17#include <linux/ethtool.h> 17#include <linux/ethtool.h>
18#include <linux/leds.h>
19#include <linux/gpio_keys.h>
20#include <linux/input.h>
18#include <net/dsa.h> 21#include <net/dsa.h>
19#include <asm/mach-types.h> 22#include <asm/mach-types.h>
20#include <asm/gpio.h> 23#include <asm/gpio.h>
@@ -24,6 +27,80 @@
24#include "common.h" 27#include "common.h"
25#include "mpp.h" 28#include "mpp.h"
26 29
30/*
31 * LEDs attached to GPIO
32 */
33static struct gpio_led wrt350n_v2_led_pins[] = {
34 {
35 .name = "wrt350nv2:green:power",
36 .gpio = 0,
37 .active_low = 1,
38 }, {
39 .name = "wrt350nv2:green:security",
40 .gpio = 1,
41 .active_low = 1,
42 }, {
43 .name = "wrt350nv2:orange:power",
44 .gpio = 5,
45 .active_low = 1,
46 }, {
47 .name = "wrt350nv2:green:usb",
48 .gpio = 6,
49 .active_low = 1,
50 }, {
51 .name = "wrt350nv2:green:wireless",
52 .gpio = 7,
53 .active_low = 1,
54 },
55};
56
57static struct gpio_led_platform_data wrt350n_v2_led_data = {
58 .leds = wrt350n_v2_led_pins,
59 .num_leds = ARRAY_SIZE(wrt350n_v2_led_pins),
60};
61
62static struct platform_device wrt350n_v2_leds = {
63 .name = "leds-gpio",
64 .id = -1,
65 .dev = {
66 .platform_data = &wrt350n_v2_led_data,
67 },
68};
69
70/*
71 * Buttons attached to GPIO
72 */
73static struct gpio_keys_button wrt350n_v2_buttons[] = {
74 {
75 .code = KEY_RESTART,
76 .gpio = 3,
77 .desc = "Reset Button",
78 .active_low = 1,
79 }, {
80 .code = KEY_WLAN,
81 .gpio = 2,
82 .desc = "WPS Button",
83 .active_low = 1,
84 },
85};
86
87static struct gpio_keys_platform_data wrt350n_v2_button_data = {
88 .buttons = wrt350n_v2_buttons,
89 .nbuttons = ARRAY_SIZE(wrt350n_v2_buttons),
90};
91
92static struct platform_device wrt350n_v2_button_device = {
93 .name = "gpio-keys",
94 .id = -1,
95 .num_resources = 0,
96 .dev = {
97 .platform_data = &wrt350n_v2_button_data,
98 },
99};
100
101/*
102 * General setup
103 */
27static struct orion5x_mpp_mode wrt350n_v2_mpp_modes[] __initdata = { 104static struct orion5x_mpp_mode wrt350n_v2_mpp_modes[] __initdata = {
28 { 0, MPP_GPIO }, /* Power LED green (0=on) */ 105 { 0, MPP_GPIO }, /* Power LED green (0=on) */
29 { 1, MPP_GPIO }, /* Security LED (0=on) */ 106 { 1, MPP_GPIO }, /* Security LED (0=on) */
@@ -140,6 +217,8 @@ static void __init wrt350n_v2_init(void)
140 orion5x_setup_dev_boot_win(WRT350N_V2_NOR_BOOT_BASE, 217 orion5x_setup_dev_boot_win(WRT350N_V2_NOR_BOOT_BASE,
141 WRT350N_V2_NOR_BOOT_SIZE); 218 WRT350N_V2_NOR_BOOT_SIZE);
142 platform_device_register(&wrt350n_v2_nor_flash); 219 platform_device_register(&wrt350n_v2_nor_flash);
220 platform_device_register(&wrt350n_v2_leds);
221 platform_device_register(&wrt350n_v2_button_device);
143} 222}
144 223
145static int __init wrt350n_v2_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin) 224static int __init wrt350n_v2_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig
index 8a0837ea0294..dee92182749b 100644
--- a/arch/arm/mach-pxa/Kconfig
+++ b/arch/arm/mach-pxa/Kconfig
@@ -37,6 +37,8 @@ config MACH_ZYLONITE320
37config MACH_LITTLETON 37config MACH_LITTLETON
38 bool "PXA3xx Form Factor Platform (aka Littleton)" 38 bool "PXA3xx Form Factor Platform (aka Littleton)"
39 select PXA3xx 39 select PXA3xx
40 select CPU_PXA300
41 select CPU_PXA310
40 select PXA_SSP 42 select PXA_SSP
41 43
42config MACH_TAVOREVB 44config MACH_TAVOREVB
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c
index 74446cf8ae69..da3156d8690b 100644
--- a/arch/arm/mach-pxa/corgi.c
+++ b/arch/arm/mach-pxa/corgi.c
@@ -457,6 +457,7 @@ static struct pxaficp_platform_data corgi_ficp_platform_data = {
457 * USB Device Controller 457 * USB Device Controller
458 */ 458 */
459static struct pxa2xx_udc_mach_info udc_info __initdata = { 459static struct pxa2xx_udc_mach_info udc_info __initdata = {
460 .gpio_vbus = -1,
460 /* no connect GPIO; corgi can't tell connection status */ 461 /* no connect GPIO; corgi can't tell connection status */
461 .gpio_pullup = CORGI_GPIO_USB_PULLUP, 462 .gpio_pullup = CORGI_GPIO_USB_PULLUP,
462}; 463};
diff --git a/arch/arm/mach-pxa/include/mach/hardware.h b/arch/arm/mach-pxa/include/mach/hardware.h
index 50f1297bf5ac..e741bf1bfb2d 100644
--- a/arch/arm/mach-pxa/include/mach/hardware.h
+++ b/arch/arm/mach-pxa/include/mach/hardware.h
@@ -250,20 +250,17 @@
250 250
251#define cpu_is_pxa930() \ 251#define cpu_is_pxa930() \
252 ({ \ 252 ({ \
253 unsigned int id = read_cpuid(CPUID_ID); \ 253 __cpu_is_pxa930(read_cpuid_id()); \
254 __cpu_is_pxa930(id); \
255 }) 254 })
256 255
257#define cpu_is_pxa935() \ 256#define cpu_is_pxa935() \
258 ({ \ 257 ({ \
259 unsigned int id = read_cpuid(CPUID_ID); \ 258 __cpu_is_pxa935(read_cpuid_id()); \
260 __cpu_is_pxa935(id); \
261 }) 259 })
262 260
263#define cpu_is_pxa950() \ 261#define cpu_is_pxa950() \
264 ({ \ 262 ({ \
265 unsigned int id = read_cpuid(CPUID_ID); \ 263 __cpu_is_pxa950(read_cpuid_id()); \
266 __cpu_is_pxa950(id); \
267 }) 264 })
268 265
269 266
diff --git a/arch/arm/mach-pxa/include/mach/mfp-pxa25x.h b/arch/arm/mach-pxa/include/mach/mfp-pxa25x.h
index b13dc0269a6d..9c787855cf24 100644
--- a/arch/arm/mach-pxa/include/mach/mfp-pxa25x.h
+++ b/arch/arm/mach-pxa/include/mach/mfp-pxa25x.h
@@ -169,7 +169,6 @@
169#define GPIO86_nSDCS2 MFP_CFG_OUT(GPIO86, AF0, DRIVE_HIGH) 169#define GPIO86_nSDCS2 MFP_CFG_OUT(GPIO86, AF0, DRIVE_HIGH)
170#define GPIO87_nSDCS3 MFP_CFG_OUT(GPIO87, AF0, DRIVE_HIGH) 170#define GPIO87_nSDCS3 MFP_CFG_OUT(GPIO87, AF0, DRIVE_HIGH)
171#define GPIO88_RDnWR MFP_CFG_OUT(GPIO88, AF0, DRIVE_HIGH) 171#define GPIO88_RDnWR MFP_CFG_OUT(GPIO88, AF0, DRIVE_HIGH)
172#define GPIO89_nACRESET MFP_CFG_OUT(GPIO89, AF0, DRIVE_HIGH)
173 172
174/* USB */ 173/* USB */
175#define GPIO9_USB_RCV MFP_CFG_IN(GPIO9, AF1) 174#define GPIO9_USB_RCV MFP_CFG_IN(GPIO9, AF1)
@@ -186,6 +185,9 @@
186#define GPIO30_ASSP_TXD MFP_CFG_OUT(GPIO30, AF3, DRIVE_LOW) 185#define GPIO30_ASSP_TXD MFP_CFG_OUT(GPIO30, AF3, DRIVE_LOW)
187#define GPIO31_ASSP_SFRM_IN MFP_CFG_IN(GPIO31, AF1) 186#define GPIO31_ASSP_SFRM_IN MFP_CFG_IN(GPIO31, AF1)
188#define GPIO31_ASSP_SFRM_OUT MFP_CFG_OUT(GPIO31, AF3, DRIVE_LOW) 187#define GPIO31_ASSP_SFRM_OUT MFP_CFG_OUT(GPIO31, AF3, DRIVE_LOW)
189#endif 188
189/* AC97 */
190#define GPIO89_AC97_nRESET MFP_CFG_OUT(GPIO89, AF0, DRIVE_HIGH)
191#endif /* CONFIG_CPU_PXA26x */
190 192
191#endif /* __ASM_ARCH_MFP_PXA25X_H */ 193#endif /* __ASM_ARCH_MFP_PXA25X_H */
diff --git a/arch/arm/mach-pxa/include/mach/zylonite.h b/arch/arm/mach-pxa/include/mach/zylonite.h
index bf6785adccf4..9edf645368d6 100644
--- a/arch/arm/mach-pxa/include/mach/zylonite.h
+++ b/arch/arm/mach-pxa/include/mach/zylonite.h
@@ -8,13 +8,6 @@
8/* the following variables are processor specific and initialized 8/* the following variables are processor specific and initialized
9 * by the corresponding zylonite_pxa3xx_init() 9 * by the corresponding zylonite_pxa3xx_init()
10 */ 10 */
11struct platform_mmc_slot {
12 int gpio_cd;
13 int gpio_wp;
14};
15
16extern struct platform_mmc_slot zylonite_mmc_slot[];
17
18extern int gpio_eth_irq; 11extern int gpio_eth_irq;
19extern int gpio_debug_led1; 12extern int gpio_debug_led1;
20extern int gpio_debug_led2; 13extern int gpio_debug_led2;
diff --git a/arch/arm/mach-pxa/irq.c b/arch/arm/mach-pxa/irq.c
index 6112af431fa4..1beb40f692fc 100644
--- a/arch/arm/mach-pxa/irq.c
+++ b/arch/arm/mach-pxa/irq.c
@@ -164,8 +164,11 @@ static int pxa_irq_suspend(struct sys_device *dev, pm_message_t state)
164 saved_icmr[i] = _ICMR(irq); 164 saved_icmr[i] = _ICMR(irq);
165 _ICMR(irq) = 0; 165 _ICMR(irq) = 0;
166 } 166 }
167 for (i = 0; i < pxa_internal_irq_nr; i++) 167
168 saved_ipr[i] = IPR(i); 168 if (cpu_is_pxa27x() || cpu_is_pxa3xx()) {
169 for (i = 0; i < pxa_internal_irq_nr; i++)
170 saved_ipr[i] = IPR(i);
171 }
169 172
170 return 0; 173 return 0;
171} 174}
@@ -174,12 +177,15 @@ static int pxa_irq_resume(struct sys_device *dev)
174{ 177{
175 int i, irq = PXA_IRQ(0); 178 int i, irq = PXA_IRQ(0);
176 179
180 if (cpu_is_pxa27x() || cpu_is_pxa3xx()) {
181 for (i = 0; i < pxa_internal_irq_nr; i++)
182 IPR(i) = saved_ipr[i];
183 }
184
177 for (i = 0; irq < PXA_IRQ(pxa_internal_irq_nr); i++, irq += 32) { 185 for (i = 0; irq < PXA_IRQ(pxa_internal_irq_nr); i++, irq += 32) {
178 _ICMR(irq) = saved_icmr[i]; 186 _ICMR(irq) = saved_icmr[i];
179 _ICLR(irq) = 0; 187 _ICLR(irq) = 0;
180 } 188 }
181 for (i = 0; i < pxa_internal_irq_nr; i++)
182 IPR(i) = saved_ipr[i];
183 189
184 ICCR = 1; 190 ICCR = 1;
185 return 0; 191 return 0;
diff --git a/arch/arm/mach-pxa/littleton.c b/arch/arm/mach-pxa/littleton.c
index f28c1715b910..fa527b258d61 100644
--- a/arch/arm/mach-pxa/littleton.c
+++ b/arch/arm/mach-pxa/littleton.c
@@ -110,6 +110,12 @@ static mfp_cfg_t littleton_mfp_cfg[] __initdata = {
110 GPIO7_MMC1_CLK, 110 GPIO7_MMC1_CLK,
111 GPIO8_MMC1_CMD, 111 GPIO8_MMC1_CMD,
112 GPIO15_GPIO, /* card detect */ 112 GPIO15_GPIO, /* card detect */
113
114 /* UART3 */
115 GPIO107_UART3_CTS,
116 GPIO108_UART3_RTS,
117 GPIO109_UART3_TXD,
118 GPIO110_UART3_RXD,
113}; 119};
114 120
115static struct resource smc91x_resources[] = { 121static struct resource smc91x_resources[] = {
diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c
index 8a38d604dc77..189f330719a2 100644
--- a/arch/arm/mach-pxa/magician.c
+++ b/arch/arm/mach-pxa/magician.c
@@ -381,7 +381,7 @@ err:
381 return ret; 381 return ret;
382} 382}
383 383
384static int magician_backlight_notify(int brightness) 384static int magician_backlight_notify(struct device *dev, int brightness)
385{ 385{
386 gpio_set_value(EGPIO_MAGICIAN_BL_POWER, brightness); 386 gpio_set_value(EGPIO_MAGICIAN_BL_POWER, brightness);
387 if (brightness >= 200) { 387 if (brightness >= 200) {
diff --git a/arch/arm/mach-pxa/palmld.c b/arch/arm/mach-pxa/palmld.c
index 59140217890a..e100af78b166 100644
--- a/arch/arm/mach-pxa/palmld.c
+++ b/arch/arm/mach-pxa/palmld.c
@@ -270,7 +270,7 @@ err:
270 return ret; 270 return ret;
271} 271}
272 272
273static int palmld_backlight_notify(int brightness) 273static int palmld_backlight_notify(struct device *dev, int brightness)
274{ 274{
275 gpio_set_value(GPIO_NR_PALMLD_BL_POWER, brightness); 275 gpio_set_value(GPIO_NR_PALMLD_BL_POWER, brightness);
276 gpio_set_value(GPIO_NR_PALMLD_LCD_POWER, brightness); 276 gpio_set_value(GPIO_NR_PALMLD_LCD_POWER, brightness);
diff --git a/arch/arm/mach-pxa/palmt5.c b/arch/arm/mach-pxa/palmt5.c
index 7f89ca20f13a..8fe3ec27568f 100644
--- a/arch/arm/mach-pxa/palmt5.c
+++ b/arch/arm/mach-pxa/palmt5.c
@@ -209,7 +209,7 @@ err:
209 return ret; 209 return ret;
210} 210}
211 211
212static int palmt5_backlight_notify(int brightness) 212static int palmt5_backlight_notify(struct device *dev, int brightness)
213{ 213{
214 gpio_set_value(GPIO_NR_PALMT5_BL_POWER, brightness); 214 gpio_set_value(GPIO_NR_PALMT5_BL_POWER, brightness);
215 gpio_set_value(GPIO_NR_PALMT5_LCD_POWER, brightness); 215 gpio_set_value(GPIO_NR_PALMT5_LCD_POWER, brightness);
diff --git a/arch/arm/mach-pxa/palmtc.c b/arch/arm/mach-pxa/palmtc.c
index 308417592007..b992f07ece21 100644
--- a/arch/arm/mach-pxa/palmtc.c
+++ b/arch/arm/mach-pxa/palmtc.c
@@ -185,7 +185,7 @@ err:
185 return ret; 185 return ret;
186} 186}
187 187
188static int palmtc_backlight_notify(int brightness) 188static int palmtc_backlight_notify(struct device *dev, int brightness)
189{ 189{
190 /* backlight is on when GPIO16 AF0 is high */ 190 /* backlight is on when GPIO16 AF0 is high */
191 gpio_set_value(GPIO_NR_PALMTC_BL_POWER, brightness); 191 gpio_set_value(GPIO_NR_PALMTC_BL_POWER, brightness);
diff --git a/arch/arm/mach-pxa/palmte2.c b/arch/arm/mach-pxa/palmte2.c
index 265d62bae7de..dc728d6ab94e 100644
--- a/arch/arm/mach-pxa/palmte2.c
+++ b/arch/arm/mach-pxa/palmte2.c
@@ -181,7 +181,7 @@ err:
181 return ret; 181 return ret;
182} 182}
183 183
184static int palmte2_backlight_notify(int brightness) 184static int palmte2_backlight_notify(struct device *dev, int brightness)
185{ 185{
186 gpio_set_value(GPIO_NR_PALMTE2_BL_POWER, brightness); 186 gpio_set_value(GPIO_NR_PALMTE2_BL_POWER, brightness);
187 gpio_set_value(GPIO_NR_PALMTE2_LCD_POWER, brightness); 187 gpio_set_value(GPIO_NR_PALMTE2_LCD_POWER, brightness);
diff --git a/arch/arm/mach-pxa/palmtreo.c b/arch/arm/mach-pxa/palmtreo.c
index 606eb7e8a17e..b433bb496711 100644
--- a/arch/arm/mach-pxa/palmtreo.c
+++ b/arch/arm/mach-pxa/palmtreo.c
@@ -375,7 +375,7 @@ err:
375 return ret; 375 return ret;
376} 376}
377 377
378static int treo_backlight_notify(int brightness) 378static int treo_backlight_notify(struct device *dev, int brightness)
379{ 379{
380 gpio_set_value(GPIO_NR_TREO_BL_POWER, brightness); 380 gpio_set_value(GPIO_NR_TREO_BL_POWER, brightness);
381 return TREO_MAX_INTENSITY - brightness; 381 return TREO_MAX_INTENSITY - brightness;
diff --git a/arch/arm/mach-pxa/palmtx.c b/arch/arm/mach-pxa/palmtx.c
index 7bf18c2f002f..b37a025c0b7b 100644
--- a/arch/arm/mach-pxa/palmtx.c
+++ b/arch/arm/mach-pxa/palmtx.c
@@ -269,7 +269,7 @@ err:
269 return ret; 269 return ret;
270} 270}
271 271
272static int palmtx_backlight_notify(int brightness) 272static int palmtx_backlight_notify(struct device *dev, int brightness)
273{ 273{
274 gpio_set_value(GPIO_NR_PALMTX_BL_POWER, brightness); 274 gpio_set_value(GPIO_NR_PALMTX_BL_POWER, brightness);
275 gpio_set_value(GPIO_NR_PALMTX_LCD_POWER, brightness); 275 gpio_set_value(GPIO_NR_PALMTX_LCD_POWER, brightness);
diff --git a/arch/arm/mach-pxa/palmz72.c b/arch/arm/mach-pxa/palmz72.c
index d787ac7cfdd8..1c5d68a94511 100644
--- a/arch/arm/mach-pxa/palmz72.c
+++ b/arch/arm/mach-pxa/palmz72.c
@@ -196,7 +196,7 @@ err:
196 return ret; 196 return ret;
197} 197}
198 198
199static int palmz72_backlight_notify(int brightness) 199static int palmz72_backlight_notify(struct device *dev, int brightness)
200{ 200{
201 gpio_set_value(GPIO_NR_PALMZ72_BL_POWER, brightness); 201 gpio_set_value(GPIO_NR_PALMZ72_BL_POWER, brightness);
202 gpio_set_value(GPIO_NR_PALMZ72_LCD_POWER, brightness); 202 gpio_set_value(GPIO_NR_PALMZ72_LCD_POWER, brightness);
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c
index e5eeb3a62d01..c2b938a4d5c9 100644
--- a/arch/arm/mach-pxa/poodle.c
+++ b/arch/arm/mach-pxa/poodle.c
@@ -293,7 +293,7 @@ static struct pxamci_platform_data poodle_mci_platform_data = {
293 .init = poodle_mci_init, 293 .init = poodle_mci_init,
294 .setpower = poodle_mci_setpower, 294 .setpower = poodle_mci_setpower,
295 .exit = poodle_mci_exit, 295 .exit = poodle_mci_exit,
296 .gpio_card_detect = POODLE_IRQ_GPIO_nSD_DETECT, 296 .gpio_card_detect = POODLE_GPIO_nSD_DETECT,
297 .gpio_card_ro = POODLE_GPIO_nSD_WP, 297 .gpio_card_ro = POODLE_GPIO_nSD_WP,
298 .gpio_power = -1, 298 .gpio_power = -1,
299}; 299};
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c
index 4b50f144fa48..28352c0b8c34 100644
--- a/arch/arm/mach-pxa/spitz.c
+++ b/arch/arm/mach-pxa/spitz.c
@@ -389,13 +389,13 @@ static struct gpio_keys_button spitz_gpio_keys[] = {
389 .type = EV_SW, 389 .type = EV_SW,
390 .code = 0, 390 .code = 0,
391 .gpio = SPITZ_GPIO_SWA, 391 .gpio = SPITZ_GPIO_SWA,
392 .desc = "Display Down", 392 .desc = "Display Down",
393 }, 393 },
394 { 394 {
395 .type = EV_SW, 395 .type = EV_SW,
396 .code = 1, 396 .code = 1,
397 .gpio = SPITZ_GPIO_SWB, 397 .gpio = SPITZ_GPIO_SWB,
398 .desc = "Lid Closed", 398 .desc = "Lid Closed",
399 }, 399 },
400}; 400};
401 401
diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c
index 5352b4e5a7dd..89f258c9e126 100644
--- a/arch/arm/mach-pxa/viper.c
+++ b/arch/arm/mach-pxa/viper.c
@@ -379,7 +379,7 @@ err_request_bckl:
379 return ret; 379 return ret;
380} 380}
381 381
382static int viper_backlight_notify(int brightness) 382static int viper_backlight_notify(struct device *dev, int brightness)
383{ 383{
384 gpio_set_value(VIPER_LCD_EN_GPIO, !!brightness); 384 gpio_set_value(VIPER_LCD_EN_GPIO, !!brightness);
385 gpio_set_value(VIPER_BCKLIGHT_EN_GPIO, !!brightness); 385 gpio_set_value(VIPER_BCKLIGHT_EN_GPIO, !!brightness);
diff --git a/arch/arm/mach-pxa/zeus.c b/arch/arm/mach-pxa/zeus.c
index 5b986a8bd9e6..75f2a37f945d 100644
--- a/arch/arm/mach-pxa/zeus.c
+++ b/arch/arm/mach-pxa/zeus.c
@@ -25,6 +25,7 @@
25#include <linux/mtd/physmap.h> 25#include <linux/mtd/physmap.h>
26#include <linux/i2c.h> 26#include <linux/i2c.h>
27#include <linux/i2c/pca953x.h> 27#include <linux/i2c/pca953x.h>
28#include <linux/apm-emulation.h>
28 29
29#include <asm/mach-types.h> 30#include <asm/mach-types.h>
30#include <asm/mach/arch.h> 31#include <asm/mach/arch.h>
@@ -626,8 +627,27 @@ static void zeus_power_off(void)
626 pxa27x_cpu_suspend(PWRMODE_DEEPSLEEP); 627 pxa27x_cpu_suspend(PWRMODE_DEEPSLEEP);
627} 628}
628 629
629int zeus_get_pcb_info(struct i2c_client *client, unsigned gpio, 630#ifdef CONFIG_APM_EMULATION
630 unsigned ngpio, void *context) 631static void zeus_get_power_status(struct apm_power_info *info)
632{
633 /* Power supply is always present */
634 info->ac_line_status = APM_AC_ONLINE;
635 info->battery_status = APM_BATTERY_STATUS_NOT_PRESENT;
636 info->battery_flag = APM_BATTERY_FLAG_NOT_PRESENT;
637}
638
639static inline void zeus_setup_apm(void)
640{
641 apm_get_power_status = zeus_get_power_status;
642}
643#else
644static inline void zeus_setup_apm(void)
645{
646}
647#endif
648
649static int zeus_get_pcb_info(struct i2c_client *client, unsigned gpio,
650 unsigned ngpio, void *context)
631{ 651{
632 int i; 652 int i;
633 u8 pcb_info = 0; 653 u8 pcb_info = 0;
@@ -726,9 +746,18 @@ static mfp_cfg_t zeus_pin_config[] __initdata = {
726 GPIO99_GPIO, /* CF RDY */ 746 GPIO99_GPIO, /* CF RDY */
727}; 747};
728 748
749/*
750 * DM9k MSCx settings: SRAM, 16 bits
751 * 17 cycles delay first access
752 * 5 cycles delay next access
753 * 13 cycles recovery time
754 * faster device
755 */
756#define DM9K_MSC_VALUE 0xe4c9
757
729static void __init zeus_init(void) 758static void __init zeus_init(void)
730{ 759{
731 u16 dm9000_msc = 0xe279; 760 u16 dm9000_msc = DM9K_MSC_VALUE;
732 761
733 system_rev = __raw_readw(ZEUS_CPLD_VERSION); 762 system_rev = __raw_readw(ZEUS_CPLD_VERSION);
734 pr_info("Zeus CPLD V%dI%d\n", (system_rev & 0xf0) >> 4, (system_rev & 0x0f)); 763 pr_info("Zeus CPLD V%dI%d\n", (system_rev & 0xf0) >> 4, (system_rev & 0x0f));
@@ -738,6 +767,7 @@ static void __init zeus_init(void)
738 MSC1 = (MSC1 & 0xffff0000) | dm9000_msc; 767 MSC1 = (MSC1 & 0xffff0000) | dm9000_msc;
739 768
740 pm_power_off = zeus_power_off; 769 pm_power_off = zeus_power_off;
770 zeus_setup_apm();
741 771
742 pxa2xx_mfp_config(ARRAY_AND_SIZE(zeus_pin_config)); 772 pxa2xx_mfp_config(ARRAY_AND_SIZE(zeus_pin_config));
743 773
diff --git a/arch/arm/mach-pxa/zylonite.c b/arch/arm/mach-pxa/zylonite.c
index b66e9e2d06e7..2b4043c04d0c 100644
--- a/arch/arm/mach-pxa/zylonite.c
+++ b/arch/arm/mach-pxa/zylonite.c
@@ -36,9 +36,6 @@
36#include "devices.h" 36#include "devices.h"
37#include "generic.h" 37#include "generic.h"
38 38
39#define MAX_SLOTS 3
40struct platform_mmc_slot zylonite_mmc_slot[MAX_SLOTS];
41
42int gpio_eth_irq; 39int gpio_eth_irq;
43int gpio_debug_led1; 40int gpio_debug_led1;
44int gpio_debug_led2; 41int gpio_debug_led2;
@@ -220,84 +217,28 @@ static inline void zylonite_init_lcd(void) {}
220#endif 217#endif
221 218
222#if defined(CONFIG_MMC) 219#if defined(CONFIG_MMC)
223static int zylonite_mci_ro(struct device *dev)
224{
225 struct platform_device *pdev = to_platform_device(dev);
226
227 return gpio_get_value(zylonite_mmc_slot[pdev->id].gpio_wp);
228}
229
230static int zylonite_mci_init(struct device *dev,
231 irq_handler_t zylonite_detect_int,
232 void *data)
233{
234 struct platform_device *pdev = to_platform_device(dev);
235 int err, cd_irq, gpio_cd, gpio_wp;
236
237 cd_irq = gpio_to_irq(zylonite_mmc_slot[pdev->id].gpio_cd);
238 gpio_cd = zylonite_mmc_slot[pdev->id].gpio_cd;
239 gpio_wp = zylonite_mmc_slot[pdev->id].gpio_wp;
240
241 /*
242 * setup GPIO for Zylonite MMC controller
243 */
244 err = gpio_request(gpio_cd, "mmc card detect");
245 if (err)
246 goto err_request_cd;
247 gpio_direction_input(gpio_cd);
248
249 err = gpio_request(gpio_wp, "mmc write protect");
250 if (err)
251 goto err_request_wp;
252 gpio_direction_input(gpio_wp);
253
254 err = request_irq(cd_irq, zylonite_detect_int,
255 IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
256 "MMC card detect", data);
257 if (err) {
258 printk(KERN_ERR "%s: MMC/SD/SDIO: "
259 "can't request card detect IRQ\n", __func__);
260 goto err_request_irq;
261 }
262
263 return 0;
264
265err_request_irq:
266 gpio_free(gpio_wp);
267err_request_wp:
268 gpio_free(gpio_cd);
269err_request_cd:
270 return err;
271}
272
273static void zylonite_mci_exit(struct device *dev, void *data)
274{
275 struct platform_device *pdev = to_platform_device(dev);
276 int cd_irq, gpio_cd, gpio_wp;
277
278 cd_irq = gpio_to_irq(zylonite_mmc_slot[pdev->id].gpio_cd);
279 gpio_cd = zylonite_mmc_slot[pdev->id].gpio_cd;
280 gpio_wp = zylonite_mmc_slot[pdev->id].gpio_wp;
281
282 free_irq(cd_irq, data);
283 gpio_free(gpio_cd);
284 gpio_free(gpio_wp);
285}
286
287static struct pxamci_platform_data zylonite_mci_platform_data = { 220static struct pxamci_platform_data zylonite_mci_platform_data = {
288 .detect_delay = 20, 221 .detect_delay = 20,
289 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, 222 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
290 .init = zylonite_mci_init, 223 .gpio_card_detect = EXT_GPIO(0),
291 .exit = zylonite_mci_exit, 224 .gpio_card_ro = EXT_GPIO(2),
292 .get_ro = zylonite_mci_ro,
293 .gpio_card_detect = -1,
294 .gpio_card_ro = -1,
295 .gpio_power = -1, 225 .gpio_power = -1,
296}; 226};
297 227
298static struct pxamci_platform_data zylonite_mci2_platform_data = { 228static struct pxamci_platform_data zylonite_mci2_platform_data = {
299 .detect_delay = 20, 229 .detect_delay = 20,
300 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, 230 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
231 .gpio_card_detect = EXT_GPIO(1),
232 .gpio_card_ro = EXT_GPIO(3),
233 .gpio_power = -1,
234};
235
236static struct pxamci_platform_data zylonite_mci3_platform_data = {
237 .detect_delay = 20,
238 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
239 .gpio_card_detect = EXT_GPIO(30),
240 .gpio_card_ro = EXT_GPIO(31),
241 .gpio_power = -1,
301}; 242};
302 243
303static void __init zylonite_init_mmc(void) 244static void __init zylonite_init_mmc(void)
@@ -305,7 +246,7 @@ static void __init zylonite_init_mmc(void)
305 pxa_set_mci_info(&zylonite_mci_platform_data); 246 pxa_set_mci_info(&zylonite_mci_platform_data);
306 pxa3xx_set_mci2_info(&zylonite_mci2_platform_data); 247 pxa3xx_set_mci2_info(&zylonite_mci2_platform_data);
307 if (cpu_is_pxa310()) 248 if (cpu_is_pxa310())
308 pxa3xx_set_mci3_info(&zylonite_mci_platform_data); 249 pxa3xx_set_mci3_info(&zylonite_mci3_platform_data);
309} 250}
310#else 251#else
311static inline void zylonite_init_mmc(void) {} 252static inline void zylonite_init_mmc(void) {}
diff --git a/arch/arm/mach-pxa/zylonite_pxa300.c b/arch/arm/mach-pxa/zylonite_pxa300.c
index 84095440a878..3aa73b3e33f2 100644
--- a/arch/arm/mach-pxa/zylonite_pxa300.c
+++ b/arch/arm/mach-pxa/zylonite_pxa300.c
@@ -129,8 +129,8 @@ static mfp_cfg_t common_mfp_cfg[] __initdata = {
129 GPIO22_I2C_SDA, 129 GPIO22_I2C_SDA,
130 130
131 /* GPIO */ 131 /* GPIO */
132 GPIO18_GPIO, /* GPIO Expander #0 INT_N */ 132 GPIO18_GPIO | MFP_PULL_HIGH, /* GPIO Expander #0 INT_N */
133 GPIO19_GPIO, /* GPIO Expander #1 INT_N */ 133 GPIO19_GPIO | MFP_PULL_HIGH, /* GPIO Expander #1 INT_N */
134}; 134};
135 135
136static mfp_cfg_t pxa300_mfp_cfg[] __initdata = { 136static mfp_cfg_t pxa300_mfp_cfg[] __initdata = {
@@ -258,10 +258,6 @@ void __init zylonite_pxa300_init(void)
258 /* detect LCD panel */ 258 /* detect LCD panel */
259 zylonite_detect_lcd_panel(); 259 zylonite_detect_lcd_panel();
260 260
261 /* MMC card detect & write protect for controller 0 */
262 zylonite_mmc_slot[0].gpio_cd = EXT_GPIO(0);
263 zylonite_mmc_slot[0].gpio_wp = EXT_GPIO(2);
264
265 /* WM9713 IRQ */ 261 /* WM9713 IRQ */
266 wm9713_irq = mfp_to_gpio(MFP_PIN_GPIO26); 262 wm9713_irq = mfp_to_gpio(MFP_PIN_GPIO26);
267 263
@@ -276,10 +272,6 @@ void __init zylonite_pxa300_init(void)
276 if (cpu_is_pxa310()) { 272 if (cpu_is_pxa310()) {
277 pxa3xx_mfp_config(ARRAY_AND_SIZE(pxa310_mfp_cfg)); 273 pxa3xx_mfp_config(ARRAY_AND_SIZE(pxa310_mfp_cfg));
278 gpio_eth_irq = mfp_to_gpio(MFP_PIN_GPIO102); 274 gpio_eth_irq = mfp_to_gpio(MFP_PIN_GPIO102);
279
280 /* MMC card detect & write protect for controller 2 */
281 zylonite_mmc_slot[2].gpio_cd = EXT_GPIO(30);
282 zylonite_mmc_slot[2].gpio_wp = EXT_GPIO(31);
283 } 275 }
284 276
285 /* GPIOs for Debug LEDs */ 277 /* GPIOs for Debug LEDs */
diff --git a/arch/arm/mach-pxa/zylonite_pxa320.c b/arch/arm/mach-pxa/zylonite_pxa320.c
index 60d08f23f5e4..9942bac4cf7d 100644
--- a/arch/arm/mach-pxa/zylonite_pxa320.c
+++ b/arch/arm/mach-pxa/zylonite_pxa320.c
@@ -209,10 +209,6 @@ void __init zylonite_pxa320_init(void)
209 gpio_debug_led1 = mfp_to_gpio(MFP_PIN_GPIO1_2); 209 gpio_debug_led1 = mfp_to_gpio(MFP_PIN_GPIO1_2);
210 gpio_debug_led2 = mfp_to_gpio(MFP_PIN_GPIO4_2); 210 gpio_debug_led2 = mfp_to_gpio(MFP_PIN_GPIO4_2);
211 211
212 /* MMC card detect & write protect for controller 0 */
213 zylonite_mmc_slot[0].gpio_cd = mfp_to_gpio(MFP_PIN_GPIO1);
214 zylonite_mmc_slot[0].gpio_wp = mfp_to_gpio(MFP_PIN_GPIO5);
215
216 /* WM9713 IRQ */ 212 /* WM9713 IRQ */
217 wm9713_irq = mfp_to_gpio(MFP_PIN_GPIO15); 213 wm9713_irq = mfp_to_gpio(MFP_PIN_GPIO15);
218 } 214 }
diff --git a/arch/arm/mach-realview/include/mach/board-pb1176.h b/arch/arm/mach-realview/include/mach/board-pb1176.h
index 34b80b7d40b8..2f5ccb298858 100644
--- a/arch/arm/mach-realview/include/mach/board-pb1176.h
+++ b/arch/arm/mach-realview/include/mach/board-pb1176.h
@@ -74,8 +74,8 @@
74#define REALVIEW_PB1176_L220_BASE 0x10110000 /* L220 registers */ 74#define REALVIEW_PB1176_L220_BASE 0x10110000 /* L220 registers */
75 75
76/* 76/*
77 * Control register SYS_RESETCTL is set to 1 to force a soft reset 77 * Control register SYS_RESETCTL Bit 8 is set to 1 to force a soft reset
78 */ 78 */
79#define REALVIEW_PB1176_SYS_LOCKVAL_RSTCTL 0x0100 79#define REALVIEW_PB1176_SYS_SOFT_RESET 0x0100
80 80
81#endif /* __ASM_ARCH_BOARD_PB1176_H */ 81#endif /* __ASM_ARCH_BOARD_PB1176_H */
diff --git a/arch/arm/mach-realview/include/mach/platform.h b/arch/arm/mach-realview/include/mach/platform.h
index 4f46bf71e752..86c0c4435a46 100644
--- a/arch/arm/mach-realview/include/mach/platform.h
+++ b/arch/arm/mach-realview/include/mach/platform.h
@@ -140,7 +140,7 @@
140 * SYS_CLD, SYS_BOOTCS 140 * SYS_CLD, SYS_BOOTCS
141 */ 141 */
142#define REALVIEW_SYS_LOCK_LOCKED (1 << 16) 142#define REALVIEW_SYS_LOCK_LOCKED (1 << 16)
143#define REALVIEW_SYS_LOCKVAL_MASK 0xA05F /* Enable write access */ 143#define REALVIEW_SYS_LOCK_VAL 0xA05F /* Enable write access */
144 144
145/* 145/*
146 * REALVIEW_SYS_FLASH 146 * REALVIEW_SYS_FLASH
diff --git a/arch/arm/mach-realview/realview_eb.c b/arch/arm/mach-realview/realview_eb.c
index 917f8ca3abff..7d857d300558 100644
--- a/arch/arm/mach-realview/realview_eb.c
+++ b/arch/arm/mach-realview/realview_eb.c
@@ -381,6 +381,20 @@ static struct sys_timer realview_eb_timer = {
381 .init = realview_eb_timer_init, 381 .init = realview_eb_timer_init,
382}; 382};
383 383
384static void realview_eb_reset(char mode)
385{
386 void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL);
387 void __iomem *lock_ctrl = __io_address(REALVIEW_SYS_LOCK);
388
389 /*
390 * To reset, we hit the on-board reset register
391 * in the system FPGA
392 */
393 __raw_writel(REALVIEW_SYS_LOCK_VAL, lock_ctrl);
394 if (core_tile_eb11mp())
395 __raw_writel(0x0008, reset_ctrl);
396}
397
384static void __init realview_eb_init(void) 398static void __init realview_eb_init(void)
385{ 399{
386 int i; 400 int i;
@@ -408,6 +422,7 @@ static void __init realview_eb_init(void)
408#ifdef CONFIG_LEDS 422#ifdef CONFIG_LEDS
409 leds_event = realview_leds_event; 423 leds_event = realview_leds_event;
410#endif 424#endif
425 realview_reset = realview_eb_reset;
411} 426}
412 427
413MACHINE_START(REALVIEW_EB, "ARM-RealView EB") 428MACHINE_START(REALVIEW_EB, "ARM-RealView EB")
diff --git a/arch/arm/mach-realview/realview_pb1176.c b/arch/arm/mach-realview/realview_pb1176.c
index 7fb726d5f8b9..44392e51dd50 100644
--- a/arch/arm/mach-realview/realview_pb1176.c
+++ b/arch/arm/mach-realview/realview_pb1176.c
@@ -292,12 +292,10 @@ static struct sys_timer realview_pb1176_timer = {
292 292
293static void realview_pb1176_reset(char mode) 293static void realview_pb1176_reset(char mode)
294{ 294{
295 void __iomem *hdr_ctrl = __io_address(REALVIEW_SYS_BASE) + 295 void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL);
296 REALVIEW_SYS_RESETCTL_OFFSET; 296 void __iomem *lock_ctrl = __io_address(REALVIEW_SYS_LOCK);
297 void __iomem *rst_hdr_ctrl = __io_address(REALVIEW_SYS_BASE) + 297 __raw_writel(REALVIEW_SYS_LOCK_VAL, lock_ctrl);
298 REALVIEW_SYS_LOCK_OFFSET; 298 __raw_writel(REALVIEW_PB1176_SYS_SOFT_RESET, reset_ctrl);
299 __raw_writel(REALVIEW_SYS_LOCKVAL_MASK, rst_hdr_ctrl);
300 __raw_writel(REALVIEW_PB1176_SYS_LOCKVAL_RSTCTL, hdr_ctrl);
301} 299}
302 300
303static void realview_pb1176_fixup(struct machine_desc *mdesc, 301static void realview_pb1176_fixup(struct machine_desc *mdesc,
diff --git a/arch/arm/mach-realview/realview_pb11mp.c b/arch/arm/mach-realview/realview_pb11mp.c
index 9bbbfc05f225..3e02731af959 100644
--- a/arch/arm/mach-realview/realview_pb11mp.c
+++ b/arch/arm/mach-realview/realview_pb11mp.c
@@ -301,17 +301,16 @@ static struct sys_timer realview_pb11mp_timer = {
301 301
302static void realview_pb11mp_reset(char mode) 302static void realview_pb11mp_reset(char mode)
303{ 303{
304 void __iomem *hdr_ctrl = __io_address(REALVIEW_SYS_BASE) + 304 void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL);
305 REALVIEW_SYS_RESETCTL_OFFSET; 305 void __iomem *lock_ctrl = __io_address(REALVIEW_SYS_LOCK);
306 unsigned int val;
307 306
308 /* 307 /*
309 * To reset, we hit the on-board reset register 308 * To reset, we hit the on-board reset register
310 * in the system FPGA 309 * in the system FPGA
311 */ 310 */
312 val = __raw_readl(hdr_ctrl); 311 __raw_writel(REALVIEW_SYS_LOCK_VAL, lock_ctrl);
313 val |= REALVIEW_PB11MP_SYS_CTRL_RESET_CONFIGCLR; 312 __raw_writel(0x0000, reset_ctrl);
314 __raw_writel(val, hdr_ctrl); 313 __raw_writel(0x0004, reset_ctrl);
315} 314}
316 315
317static void __init realview_pb11mp_init(void) 316static void __init realview_pb11mp_init(void)
diff --git a/arch/arm/mach-realview/realview_pba8.c b/arch/arm/mach-realview/realview_pba8.c
index fe861e96c566..fe4e25c4201a 100644
--- a/arch/arm/mach-realview/realview_pba8.c
+++ b/arch/arm/mach-realview/realview_pba8.c
@@ -272,6 +272,20 @@ static struct sys_timer realview_pba8_timer = {
272 .init = realview_pba8_timer_init, 272 .init = realview_pba8_timer_init,
273}; 273};
274 274
275static void realview_pba8_reset(char mode)
276{
277 void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL);
278 void __iomem *lock_ctrl = __io_address(REALVIEW_SYS_LOCK);
279
280 /*
281 * To reset, we hit the on-board reset register
282 * in the system FPGA
283 */
284 __raw_writel(REALVIEW_SYS_LOCK_VAL, lock_ctrl);
285 __raw_writel(0x0000, reset_ctrl);
286 __raw_writel(0x0004, reset_ctrl);
287}
288
275static void __init realview_pba8_init(void) 289static void __init realview_pba8_init(void)
276{ 290{
277 int i; 291 int i;
@@ -291,6 +305,7 @@ static void __init realview_pba8_init(void)
291#ifdef CONFIG_LEDS 305#ifdef CONFIG_LEDS
292 leds_event = realview_leds_event; 306 leds_event = realview_leds_event;
293#endif 307#endif
308 realview_reset = realview_pba8_reset;
294} 309}
295 310
296MACHINE_START(REALVIEW_PBA8, "ARM-RealView PB-A8") 311MACHINE_START(REALVIEW_PBA8, "ARM-RealView PB-A8")
diff --git a/arch/arm/mach-realview/realview_pbx.c b/arch/arm/mach-realview/realview_pbx.c
index ec39488e2b42..d94857eb0690 100644
--- a/arch/arm/mach-realview/realview_pbx.c
+++ b/arch/arm/mach-realview/realview_pbx.c
@@ -324,6 +324,20 @@ static void realview_pbx_fixup(struct machine_desc *mdesc, struct tag *tags,
324#endif 324#endif
325} 325}
326 326
327static void realview_pbx_reset(char mode)
328{
329 void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL);
330 void __iomem *lock_ctrl = __io_address(REALVIEW_SYS_LOCK);
331
332 /*
333 * To reset, we hit the on-board reset register
334 * in the system FPGA
335 */
336 __raw_writel(REALVIEW_SYS_LOCK_VAL, lock_ctrl);
337 __raw_writel(0x00F0, reset_ctrl);
338 __raw_writel(0x00F4, reset_ctrl);
339}
340
327static void __init realview_pbx_init(void) 341static void __init realview_pbx_init(void)
328{ 342{
329 int i; 343 int i;
@@ -358,6 +372,7 @@ static void __init realview_pbx_init(void)
358#ifdef CONFIG_LEDS 372#ifdef CONFIG_LEDS
359 leds_event = realview_leds_event; 373 leds_event = realview_leds_event;
360#endif 374#endif
375 realview_reset = realview_pbx_reset;
361} 376}
362 377
363MACHINE_START(REALVIEW_PBX, "ARM-RealView PBX") 378MACHINE_START(REALVIEW_PBX, "ARM-RealView PBX")
diff --git a/arch/arm/mach-s3c2410/include/mach/ts.h b/arch/arm/mach-s3c2410/include/mach/ts.h
new file mode 100644
index 000000000000..dc361700d695
--- /dev/null
+++ b/arch/arm/mach-s3c2410/include/mach/ts.h
@@ -0,0 +1,21 @@
1/* linux/include/asm/arch-s3c2410/ts.h
2 *
3 * Copyright (c) 2005 Arnaud Patard <arnaud.patard@rtp-net.org>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8*/
9
10#ifndef __ASM_ARM_TS_H
11#define __ASM_ARM_TS_H
12
13struct s3c2410_ts_mach_info {
14 int delay;
15 int presc;
16 int oversampling_shift;
17};
18
19extern void s3c24xx_ts_set_platdata(struct s3c2410_ts_mach_info *);
20
21#endif /* __ASM_ARM_TS_H */
diff --git a/arch/arm/mach-s3c2410/mach-bast.c b/arch/arm/mach-s3c2410/mach-bast.c
index 4c79ac8a6c33..97162fdd0590 100644
--- a/arch/arm/mach-s3c2410/mach-bast.c
+++ b/arch/arm/mach-s3c2410/mach-bast.c
@@ -279,6 +279,7 @@ static struct s3c2410_nand_set __initdata bast_nand_sets[] = {
279 .name = "SmartMedia", 279 .name = "SmartMedia",
280 .nr_chips = 1, 280 .nr_chips = 1,
281 .nr_map = smartmedia_map, 281 .nr_map = smartmedia_map,
282 .options = NAND_SCAN_SILENT_NODEV,
282 .nr_partitions = ARRAY_SIZE(bast_default_nand_part), 283 .nr_partitions = ARRAY_SIZE(bast_default_nand_part),
283 .partitions = bast_default_nand_part, 284 .partitions = bast_default_nand_part,
284 }, 285 },
@@ -293,6 +294,7 @@ static struct s3c2410_nand_set __initdata bast_nand_sets[] = {
293 .name = "chip1", 294 .name = "chip1",
294 .nr_chips = 1, 295 .nr_chips = 1,
295 .nr_map = chip1_map, 296 .nr_map = chip1_map,
297 .options = NAND_SCAN_SILENT_NODEV,
296 .nr_partitions = ARRAY_SIZE(bast_default_nand_part), 298 .nr_partitions = ARRAY_SIZE(bast_default_nand_part),
297 .partitions = bast_default_nand_part, 299 .partitions = bast_default_nand_part,
298 }, 300 },
@@ -300,6 +302,7 @@ static struct s3c2410_nand_set __initdata bast_nand_sets[] = {
300 .name = "chip2", 302 .name = "chip2",
301 .nr_chips = 1, 303 .nr_chips = 1,
302 .nr_map = chip2_map, 304 .nr_map = chip2_map,
305 .options = NAND_SCAN_SILENT_NODEV,
303 .nr_partitions = ARRAY_SIZE(bast_default_nand_part), 306 .nr_partitions = ARRAY_SIZE(bast_default_nand_part),
304 .partitions = bast_default_nand_part, 307 .partitions = bast_default_nand_part,
305 } 308 }
diff --git a/arch/arm/mach-s3c2410/mach-h1940.c b/arch/arm/mach-s3c2410/mach-h1940.c
index 49053254c98d..1e34abe1a19e 100644
--- a/arch/arm/mach-s3c2410/mach-h1940.c
+++ b/arch/arm/mach-s3c2410/mach-h1940.c
@@ -46,6 +46,7 @@
46#include <mach/h1940.h> 46#include <mach/h1940.h>
47#include <mach/h1940-latch.h> 47#include <mach/h1940-latch.h>
48#include <mach/fb.h> 48#include <mach/fb.h>
49#include <mach/ts.h>
49#include <plat/udc.h> 50#include <plat/udc.h>
50#include <plat/iic.h> 51#include <plat/iic.h>
51 52
@@ -140,6 +141,11 @@ static struct s3c2410_udc_mach_info h1940_udc_cfg __initdata = {
140 .vbus_pin_inverted = 1, 141 .vbus_pin_inverted = 1,
141}; 142};
142 143
144static struct s3c2410_ts_mach_info h1940_ts_cfg __initdata = {
145 .delay = 10000,
146 .presc = 49,
147 .oversampling_shift = 2,
148};
143 149
144/** 150/**
145 * Set lcd on or off 151 * Set lcd on or off
@@ -265,6 +271,7 @@ static struct platform_device h1940_lcd_powerdev = {
265}; 271};
266 272
267static struct platform_device *h1940_devices[] __initdata = { 273static struct platform_device *h1940_devices[] __initdata = {
274 &s3c_device_ts,
268 &s3c_device_usb, 275 &s3c_device_usb,
269 &s3c_device_lcd, 276 &s3c_device_lcd,
270 &s3c_device_wdt, 277 &s3c_device_wdt,
@@ -305,6 +312,7 @@ static void __init h1940_init(void)
305 312
306 s3c24xx_fb_set_platdata(&h1940_fb_info); 313 s3c24xx_fb_set_platdata(&h1940_fb_info);
307 s3c24xx_udc_set_platdata(&h1940_udc_cfg); 314 s3c24xx_udc_set_platdata(&h1940_udc_cfg);
315 s3c24xx_ts_set_platdata(&h1940_ts_cfg);
308 s3c_i2c0_set_platdata(NULL); 316 s3c_i2c0_set_platdata(NULL);
309 317
310 s3c_device_sdi.dev.platform_data = &h1940_mmc_cfg; 318 s3c_device_sdi.dev.platform_data = &h1940_mmc_cfg;
diff --git a/arch/arm/mach-s3c2440/mach-mini2440.c b/arch/arm/mach-s3c2440/mach-mini2440.c
index 547d4fc99131..2068e9096a43 100644
--- a/arch/arm/mach-s3c2440/mach-mini2440.c
+++ b/arch/arm/mach-s3c2440/mach-mini2440.c
@@ -288,7 +288,7 @@ static struct s3c2410_platform_nand mini2440_nand_info __initdata = {
288 288
289/* DM9000AEP 10/100 ethernet controller */ 289/* DM9000AEP 10/100 ethernet controller */
290 290
291static struct resource mini2440_dm9k_resource[] __initdata = { 291static struct resource mini2440_dm9k_resource[] = {
292 [0] = { 292 [0] = {
293 .start = MACH_MINI2440_DM9K_BASE, 293 .start = MACH_MINI2440_DM9K_BASE,
294 .end = MACH_MINI2440_DM9K_BASE + 3, 294 .end = MACH_MINI2440_DM9K_BASE + 3,
@@ -310,11 +310,11 @@ static struct resource mini2440_dm9k_resource[] __initdata = {
310 * The DM9000 has no eeprom, and it's MAC address is set by 310 * The DM9000 has no eeprom, and it's MAC address is set by
311 * the bootloader before starting the kernel. 311 * the bootloader before starting the kernel.
312 */ 312 */
313static struct dm9000_plat_data mini2440_dm9k_pdata __initdata = { 313static struct dm9000_plat_data mini2440_dm9k_pdata = {
314 .flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM), 314 .flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
315}; 315};
316 316
317static struct platform_device mini2440_device_eth __initdata = { 317static struct platform_device mini2440_device_eth = {
318 .name = "dm9000", 318 .name = "dm9000",
319 .id = -1, 319 .id = -1,
320 .num_resources = ARRAY_SIZE(mini2440_dm9k_resource), 320 .num_resources = ARRAY_SIZE(mini2440_dm9k_resource),
@@ -341,7 +341,7 @@ static struct platform_device mini2440_device_eth __initdata = {
341 * | | +----+ +----+ 341 * | | +----+ +----+
342 * ..... 342 * .....
343 */ 343 */
344static struct gpio_keys_button mini2440_buttons[] __initdata = { 344static struct gpio_keys_button mini2440_buttons[] = {
345 { 345 {
346 .gpio = S3C2410_GPG(0), /* K1 */ 346 .gpio = S3C2410_GPG(0), /* K1 */
347 .code = KEY_F1, 347 .code = KEY_F1,
@@ -384,12 +384,12 @@ static struct gpio_keys_button mini2440_buttons[] __initdata = {
384#endif 384#endif
385}; 385};
386 386
387static struct gpio_keys_platform_data mini2440_button_data __initdata = { 387static struct gpio_keys_platform_data mini2440_button_data = {
388 .buttons = mini2440_buttons, 388 .buttons = mini2440_buttons,
389 .nbuttons = ARRAY_SIZE(mini2440_buttons), 389 .nbuttons = ARRAY_SIZE(mini2440_buttons),
390}; 390};
391 391
392static struct platform_device mini2440_button_device __initdata = { 392static struct platform_device mini2440_button_device = {
393 .name = "gpio-keys", 393 .name = "gpio-keys",
394 .id = -1, 394 .id = -1,
395 .dev = { 395 .dev = {
@@ -399,41 +399,41 @@ static struct platform_device mini2440_button_device __initdata = {
399 399
400/* LEDS */ 400/* LEDS */
401 401
402static struct s3c24xx_led_platdata mini2440_led1_pdata __initdata = { 402static struct s3c24xx_led_platdata mini2440_led1_pdata = {
403 .name = "led1", 403 .name = "led1",
404 .gpio = S3C2410_GPB(5), 404 .gpio = S3C2410_GPB(5),
405 .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, 405 .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
406 .def_trigger = "heartbeat", 406 .def_trigger = "heartbeat",
407}; 407};
408 408
409static struct s3c24xx_led_platdata mini2440_led2_pdata __initdata = { 409static struct s3c24xx_led_platdata mini2440_led2_pdata = {
410 .name = "led2", 410 .name = "led2",
411 .gpio = S3C2410_GPB(6), 411 .gpio = S3C2410_GPB(6),
412 .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, 412 .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
413 .def_trigger = "nand-disk", 413 .def_trigger = "nand-disk",
414}; 414};
415 415
416static struct s3c24xx_led_platdata mini2440_led3_pdata __initdata = { 416static struct s3c24xx_led_platdata mini2440_led3_pdata = {
417 .name = "led3", 417 .name = "led3",
418 .gpio = S3C2410_GPB(7), 418 .gpio = S3C2410_GPB(7),
419 .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, 419 .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
420 .def_trigger = "mmc0", 420 .def_trigger = "mmc0",
421}; 421};
422 422
423static struct s3c24xx_led_platdata mini2440_led4_pdata __initdata = { 423static struct s3c24xx_led_platdata mini2440_led4_pdata = {
424 .name = "led4", 424 .name = "led4",
425 .gpio = S3C2410_GPB(8), 425 .gpio = S3C2410_GPB(8),
426 .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, 426 .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
427 .def_trigger = "", 427 .def_trigger = "",
428}; 428};
429 429
430static struct s3c24xx_led_platdata mini2440_led_backlight_pdata __initdata = { 430static struct s3c24xx_led_platdata mini2440_led_backlight_pdata = {
431 .name = "backlight", 431 .name = "backlight",
432 .gpio = S3C2410_GPG(4), 432 .gpio = S3C2410_GPG(4),
433 .def_trigger = "backlight", 433 .def_trigger = "backlight",
434}; 434};
435 435
436static struct platform_device mini2440_led1 __initdata = { 436static struct platform_device mini2440_led1 = {
437 .name = "s3c24xx_led", 437 .name = "s3c24xx_led",
438 .id = 1, 438 .id = 1,
439 .dev = { 439 .dev = {
@@ -441,7 +441,7 @@ static struct platform_device mini2440_led1 __initdata = {
441 }, 441 },
442}; 442};
443 443
444static struct platform_device mini2440_led2 __initdata = { 444static struct platform_device mini2440_led2 = {
445 .name = "s3c24xx_led", 445 .name = "s3c24xx_led",
446 .id = 2, 446 .id = 2,
447 .dev = { 447 .dev = {
@@ -449,7 +449,7 @@ static struct platform_device mini2440_led2 __initdata = {
449 }, 449 },
450}; 450};
451 451
452static struct platform_device mini2440_led3 __initdata = { 452static struct platform_device mini2440_led3 = {
453 .name = "s3c24xx_led", 453 .name = "s3c24xx_led",
454 .id = 3, 454 .id = 3,
455 .dev = { 455 .dev = {
@@ -457,7 +457,7 @@ static struct platform_device mini2440_led3 __initdata = {
457 }, 457 },
458}; 458};
459 459
460static struct platform_device mini2440_led4 __initdata = { 460static struct platform_device mini2440_led4 = {
461 .name = "s3c24xx_led", 461 .name = "s3c24xx_led",
462 .id = 4, 462 .id = 4,
463 .dev = { 463 .dev = {
@@ -465,7 +465,7 @@ static struct platform_device mini2440_led4 __initdata = {
465 }, 465 },
466}; 466};
467 467
468static struct platform_device mini2440_led_backlight __initdata = { 468static struct platform_device mini2440_led_backlight = {
469 .name = "s3c24xx_led", 469 .name = "s3c24xx_led",
470 .id = 5, 470 .id = 5,
471 .dev = { 471 .dev = {
@@ -475,14 +475,14 @@ static struct platform_device mini2440_led_backlight __initdata = {
475 475
476/* AUDIO */ 476/* AUDIO */
477 477
478static struct s3c24xx_uda134x_platform_data mini2440_audio_pins __initdata = { 478static struct s3c24xx_uda134x_platform_data mini2440_audio_pins = {
479 .l3_clk = S3C2410_GPB(4), 479 .l3_clk = S3C2410_GPB(4),
480 .l3_mode = S3C2410_GPB(2), 480 .l3_mode = S3C2410_GPB(2),
481 .l3_data = S3C2410_GPB(3), 481 .l3_data = S3C2410_GPB(3),
482 .model = UDA134X_UDA1341 482 .model = UDA134X_UDA1341
483}; 483};
484 484
485static struct platform_device mini2440_audio __initdata = { 485static struct platform_device mini2440_audio = {
486 .name = "s3c24xx_uda134x", 486 .name = "s3c24xx_uda134x",
487 .id = 0, 487 .id = 0,
488 .dev = { 488 .dev = {
diff --git a/arch/arm/mach-s3c2440/mach-osiris.c b/arch/arm/mach-s3c2440/mach-osiris.c
index 015dfb2a80da..f35371db33f5 100644
--- a/arch/arm/mach-s3c2440/mach-osiris.c
+++ b/arch/arm/mach-s3c2440/mach-osiris.c
@@ -208,6 +208,7 @@ static struct s3c2410_nand_set __initdata osiris_nand_sets[] = {
208 .name = "External", 208 .name = "External",
209 .nr_chips = 1, 209 .nr_chips = 1,
210 .nr_map = external_map, 210 .nr_map = external_map,
211 .options = NAND_SCAN_SILENT_NODEV,
211 .nr_partitions = ARRAY_SIZE(osiris_default_nand_part), 212 .nr_partitions = ARRAY_SIZE(osiris_default_nand_part),
212 .partitions = osiris_default_nand_part, 213 .partitions = osiris_default_nand_part,
213 }, 214 },
@@ -222,6 +223,7 @@ static struct s3c2410_nand_set __initdata osiris_nand_sets[] = {
222 .name = "chip1", 223 .name = "chip1",
223 .nr_chips = 1, 224 .nr_chips = 1,
224 .nr_map = chip1_map, 225 .nr_map = chip1_map,
226 .options = NAND_SCAN_SILENT_NODEV,
225 .nr_partitions = ARRAY_SIZE(osiris_default_nand_part), 227 .nr_partitions = ARRAY_SIZE(osiris_default_nand_part),
226 .partitions = osiris_default_nand_part, 228 .partitions = osiris_default_nand_part,
227 }, 229 },
diff --git a/arch/arm/mach-s3c6410/mach-hmt.c b/arch/arm/mach-s3c6410/mach-hmt.c
index cdd4b5378552..7619456f2ae8 100644
--- a/arch/arm/mach-s3c6410/mach-hmt.c
+++ b/arch/arm/mach-s3c6410/mach-hmt.c
@@ -82,7 +82,7 @@ static int hmt_bl_init(struct device *dev)
82 return ret; 82 return ret;
83} 83}
84 84
85static int hmt_bl_notify(int brightness) 85static int hmt_bl_notify(struct device *dev, int brightness)
86{ 86{
87 /* 87 /*
88 * translate from CIELUV/CIELAB L*->brightness, E.G. from 88 * translate from CIELUV/CIELAB L*->brightness, E.G. from
diff --git a/arch/arm/mach-s3c6410/mach-smdk6410.c b/arch/arm/mach-s3c6410/mach-smdk6410.c
index 480d297c1de2..8969fe73b83f 100644
--- a/arch/arm/mach-s3c6410/mach-smdk6410.c
+++ b/arch/arm/mach-s3c6410/mach-smdk6410.c
@@ -211,6 +211,7 @@ static struct fixed_voltage_config smdk6410_b_pwr_5v_pdata = {
211 .supply_name = "B_PWR_5V", 211 .supply_name = "B_PWR_5V",
212 .microvolts = 5000000, 212 .microvolts = 5000000,
213 .init_data = &smdk6410_b_pwr_5v_data, 213 .init_data = &smdk6410_b_pwr_5v_data,
214 .gpio = -EINVAL,
214}; 215};
215 216
216static struct platform_device smdk6410_b_pwr_5v = { 217static struct platform_device smdk6410_b_pwr_5v = {
diff --git a/arch/arm/mach-w90x900/include/mach/system.h b/arch/arm/mach-w90x900/include/mach/system.h
index 940640066857..ce228bdc66dd 100644
--- a/arch/arm/mach-w90x900/include/mach/system.h
+++ b/arch/arm/mach-w90x900/include/mach/system.h
@@ -15,7 +15,15 @@
15 * 15 *
16 */ 16 */
17 17
18#include <linux/io.h>
18#include <asm/proc-fns.h> 19#include <asm/proc-fns.h>
20#include <mach/map.h>
21#include <mach/regs-timer.h>
22
23#define WTCR (TMR_BA + 0x1C)
24#define WTCLK (1 << 10)
25#define WTE (1 << 7)
26#define WTRE (1 << 1)
19 27
20static void arch_idle(void) 28static void arch_idle(void)
21{ 29{
@@ -23,6 +31,11 @@ static void arch_idle(void)
23 31
24static void arch_reset(char mode, const char *cmd) 32static void arch_reset(char mode, const char *cmd)
25{ 33{
26 cpu_reset(0); 34 if (mode == 's') {
35 /* Jump into ROM at address 0 */
36 cpu_reset(0);
37 } else {
38 __raw_writel(WTE | WTRE | WTCLK, WTCR);
39 }
27} 40}
28 41
diff --git a/arch/arm/mach-w90x900/time.c b/arch/arm/mach-w90x900/time.c
index 4128af870b41..b80f769bc135 100644
--- a/arch/arm/mach-w90x900/time.c
+++ b/arch/arm/mach-w90x900/time.c
@@ -42,7 +42,10 @@
42#define TICKS_PER_SEC 100 42#define TICKS_PER_SEC 100
43#define PRESCALE 0x63 /* Divider = prescale + 1 */ 43#define PRESCALE 0x63 /* Divider = prescale + 1 */
44 44
45unsigned int timer0_load; 45#define TDR_SHIFT 24
46#define TDR_MASK ((1 << TDR_SHIFT) - 1)
47
48static unsigned int timer0_load;
46 49
47static void nuc900_clockevent_setmode(enum clock_event_mode mode, 50static void nuc900_clockevent_setmode(enum clock_event_mode mode,
48 struct clock_event_device *clk) 51 struct clock_event_device *clk)
@@ -88,7 +91,7 @@ static int nuc900_clockevent_setnextevent(unsigned long evt,
88static struct clock_event_device nuc900_clockevent_device = { 91static struct clock_event_device nuc900_clockevent_device = {
89 .name = "nuc900-timer0", 92 .name = "nuc900-timer0",
90 .shift = 32, 93 .shift = 32,
91 .features = CLOCK_EVT_MODE_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, 94 .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
92 .set_mode = nuc900_clockevent_setmode, 95 .set_mode = nuc900_clockevent_setmode,
93 .set_next_event = nuc900_clockevent_setnextevent, 96 .set_next_event = nuc900_clockevent_setnextevent,
94 .rating = 300, 97 .rating = 300,
@@ -112,8 +115,23 @@ static struct irqaction nuc900_timer0_irq = {
112 .handler = nuc900_timer0_interrupt, 115 .handler = nuc900_timer0_interrupt,
113}; 116};
114 117
115static void __init nuc900_clockevents_init(unsigned int rate) 118static void __init nuc900_clockevents_init(void)
116{ 119{
120 unsigned int rate;
121 struct clk *clk = clk_get(NULL, "timer0");
122
123 BUG_ON(IS_ERR(clk));
124
125 __raw_writel(0x00, REG_TCSR0);
126
127 clk_enable(clk);
128 rate = clk_get_rate(clk) / (PRESCALE + 1);
129
130 timer0_load = (rate / TICKS_PER_SEC);
131
132 __raw_writel(RESETINT, REG_TISR);
133 setup_irq(IRQ_TIMER0, &nuc900_timer0_irq);
134
117 nuc900_clockevent_device.mult = div_sc(rate, NSEC_PER_SEC, 135 nuc900_clockevent_device.mult = div_sc(rate, NSEC_PER_SEC,
118 nuc900_clockevent_device.shift); 136 nuc900_clockevent_device.shift);
119 nuc900_clockevent_device.max_delta_ns = clockevent_delta2ns(0xffffffff, 137 nuc900_clockevent_device.max_delta_ns = clockevent_delta2ns(0xffffffff,
@@ -127,26 +145,35 @@ static void __init nuc900_clockevents_init(unsigned int rate)
127 145
128static cycle_t nuc900_get_cycles(struct clocksource *cs) 146static cycle_t nuc900_get_cycles(struct clocksource *cs)
129{ 147{
130 return ~__raw_readl(REG_TDR1); 148 return (~__raw_readl(REG_TDR1)) & TDR_MASK;
131} 149}
132 150
133static struct clocksource clocksource_nuc900 = { 151static struct clocksource clocksource_nuc900 = {
134 .name = "nuc900-timer1", 152 .name = "nuc900-timer1",
135 .rating = 200, 153 .rating = 200,
136 .read = nuc900_get_cycles, 154 .read = nuc900_get_cycles,
137 .mask = CLOCKSOURCE_MASK(32), 155 .mask = CLOCKSOURCE_MASK(TDR_SHIFT),
138 .shift = 20, 156 .shift = 10,
139 .flags = CLOCK_SOURCE_IS_CONTINUOUS, 157 .flags = CLOCK_SOURCE_IS_CONTINUOUS,
140}; 158};
141 159
142static void __init nuc900_clocksource_init(unsigned int rate) 160static void __init nuc900_clocksource_init(void)
143{ 161{
144 unsigned int val; 162 unsigned int val;
163 unsigned int rate;
164 struct clk *clk = clk_get(NULL, "timer1");
165
166 BUG_ON(IS_ERR(clk));
167
168 __raw_writel(0x00, REG_TCSR1);
169
170 clk_enable(clk);
171 rate = clk_get_rate(clk) / (PRESCALE + 1);
145 172
146 __raw_writel(0xffffffff, REG_TICR1); 173 __raw_writel(0xffffffff, REG_TICR1);
147 174
148 val = __raw_readl(REG_TCSR1); 175 val = __raw_readl(REG_TCSR1);
149 val |= (COUNTEN | PERIOD); 176 val |= (COUNTEN | PERIOD | PRESCALE);
150 __raw_writel(val, REG_TCSR1); 177 __raw_writel(val, REG_TCSR1);
151 178
152 clocksource_nuc900.mult = 179 clocksource_nuc900.mult =
@@ -156,25 +183,8 @@ static void __init nuc900_clocksource_init(unsigned int rate)
156 183
157static void __init nuc900_timer_init(void) 184static void __init nuc900_timer_init(void)
158{ 185{
159 struct clk *ck_ext = clk_get(NULL, "ext"); 186 nuc900_clocksource_init();
160 unsigned int rate; 187 nuc900_clockevents_init();
161
162 BUG_ON(IS_ERR(ck_ext));
163
164 rate = clk_get_rate(ck_ext);
165 clk_put(ck_ext);
166 rate = rate / (PRESCALE + 0x01);
167
168 /* set a known state */
169 __raw_writel(0x00, REG_TCSR0);
170 __raw_writel(0x00, REG_TCSR1);
171 __raw_writel(RESETINT, REG_TISR);
172 timer0_load = (rate / TICKS_PER_SEC);
173
174 setup_irq(IRQ_TIMER0, &nuc900_timer0_irq);
175
176 nuc900_clocksource_init(rate);
177 nuc900_clockevents_init(rate);
178} 188}
179 189
180struct sys_timer nuc900_timer = { 190struct sys_timer nuc900_timer = {
diff --git a/arch/arm/mm/Makefile b/arch/arm/mm/Makefile
index 827e238e5d4a..e8d34a80851c 100644
--- a/arch/arm/mm/Makefile
+++ b/arch/arm/mm/Makefile
@@ -27,6 +27,9 @@ obj-$(CONFIG_CPU_ABRT_EV5TJ) += abort-ev5tj.o
27obj-$(CONFIG_CPU_ABRT_EV6) += abort-ev6.o 27obj-$(CONFIG_CPU_ABRT_EV6) += abort-ev6.o
28obj-$(CONFIG_CPU_ABRT_EV7) += abort-ev7.o 28obj-$(CONFIG_CPU_ABRT_EV7) += abort-ev7.o
29 29
30AFLAGS_abort-ev6.o :=-Wa,-march=armv6k
31AFLAGS_abort-ev7.o :=-Wa,-march=armv7-a
32
30obj-$(CONFIG_CPU_PABRT_LEGACY) += pabort-legacy.o 33obj-$(CONFIG_CPU_PABRT_LEGACY) += pabort-legacy.o
31obj-$(CONFIG_CPU_PABRT_V6) += pabort-v6.o 34obj-$(CONFIG_CPU_PABRT_V6) += pabort-v6.o
32obj-$(CONFIG_CPU_PABRT_V7) += pabort-v7.o 35obj-$(CONFIG_CPU_PABRT_V7) += pabort-v7.o
@@ -39,6 +42,9 @@ obj-$(CONFIG_CPU_CACHE_V6) += cache-v6.o
39obj-$(CONFIG_CPU_CACHE_V7) += cache-v7.o 42obj-$(CONFIG_CPU_CACHE_V7) += cache-v7.o
40obj-$(CONFIG_CPU_CACHE_FA) += cache-fa.o 43obj-$(CONFIG_CPU_CACHE_FA) += cache-fa.o
41 44
45AFLAGS_cache-v6.o :=-Wa,-march=armv6
46AFLAGS_cache-v7.o :=-Wa,-march=armv7-a
47
42obj-$(CONFIG_CPU_COPY_V3) += copypage-v3.o 48obj-$(CONFIG_CPU_COPY_V3) += copypage-v3.o
43obj-$(CONFIG_CPU_COPY_V4WT) += copypage-v4wt.o 49obj-$(CONFIG_CPU_COPY_V4WT) += copypage-v4wt.o
44obj-$(CONFIG_CPU_COPY_V4WB) += copypage-v4wb.o 50obj-$(CONFIG_CPU_COPY_V4WB) += copypage-v4wb.o
@@ -58,6 +64,9 @@ obj-$(CONFIG_CPU_TLB_V6) += tlb-v6.o
58obj-$(CONFIG_CPU_TLB_V7) += tlb-v7.o 64obj-$(CONFIG_CPU_TLB_V7) += tlb-v7.o
59obj-$(CONFIG_CPU_TLB_FA) += tlb-fa.o 65obj-$(CONFIG_CPU_TLB_FA) += tlb-fa.o
60 66
67AFLAGS_tlb-v6.o :=-Wa,-march=armv6
68AFLAGS_tlb-v7.o :=-Wa,-march=armv7-a
69
61obj-$(CONFIG_CPU_ARM610) += proc-arm6_7.o 70obj-$(CONFIG_CPU_ARM610) += proc-arm6_7.o
62obj-$(CONFIG_CPU_ARM710) += proc-arm6_7.o 71obj-$(CONFIG_CPU_ARM710) += proc-arm6_7.o
63obj-$(CONFIG_CPU_ARM7TDMI) += proc-arm7tdmi.o 72obj-$(CONFIG_CPU_ARM7TDMI) += proc-arm7tdmi.o
@@ -84,6 +93,9 @@ obj-$(CONFIG_CPU_FEROCEON) += proc-feroceon.o
84obj-$(CONFIG_CPU_V6) += proc-v6.o 93obj-$(CONFIG_CPU_V6) += proc-v6.o
85obj-$(CONFIG_CPU_V7) += proc-v7.o 94obj-$(CONFIG_CPU_V7) += proc-v7.o
86 95
96AFLAGS_proc-v6.o :=-Wa,-march=armv6
97AFLAGS_proc-v7.o :=-Wa,-march=armv7-a
98
87obj-$(CONFIG_CACHE_FEROCEON_L2) += cache-feroceon-l2.o 99obj-$(CONFIG_CACHE_FEROCEON_L2) += cache-feroceon-l2.o
88obj-$(CONFIG_CACHE_L2X0) += cache-l2x0.o 100obj-$(CONFIG_CACHE_L2X0) += cache-l2x0.o
89obj-$(CONFIG_CACHE_XSC3L2) += cache-xsc3l2.o 101obj-$(CONFIG_CACHE_XSC3L2) += cache-xsc3l2.o
diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c
index b270d6228fe2..62820eda84d9 100644
--- a/arch/arm/mm/alignment.c
+++ b/arch/arm/mm/alignment.c
@@ -11,6 +11,7 @@
11 * it under the terms of the GNU General Public License version 2 as 11 * it under the terms of the GNU General Public License version 2 as
12 * published by the Free Software Foundation. 12 * published by the Free Software Foundation.
13 */ 13 */
14#include <linux/moduleparam.h>
14#include <linux/compiler.h> 15#include <linux/compiler.h>
15#include <linux/kernel.h> 16#include <linux/kernel.h>
16#include <linux/errno.h> 17#include <linux/errno.h>
@@ -77,6 +78,8 @@ static unsigned long ai_dword;
77static unsigned long ai_multi; 78static unsigned long ai_multi;
78static int ai_usermode; 79static int ai_usermode;
79 80
81core_param(alignment, ai_usermode, int, 0600);
82
80#define UM_WARN (1 << 0) 83#define UM_WARN (1 << 0)
81#define UM_FIXUP (1 << 1) 84#define UM_FIXUP (1 << 1)
82#define UM_SIGNAL (1 << 2) 85#define UM_SIGNAL (1 << 2)
diff --git a/arch/arm/mm/cache-xsc3l2.c b/arch/arm/mm/cache-xsc3l2.c
index 5d180cb0bd94..c3154928bccd 100644
--- a/arch/arm/mm/cache-xsc3l2.c
+++ b/arch/arm/mm/cache-xsc3l2.c
@@ -221,15 +221,14 @@ static int __init xsc3_l2_init(void)
221 if (!cpu_is_xsc3() || !xsc3_l2_present()) 221 if (!cpu_is_xsc3() || !xsc3_l2_present())
222 return 0; 222 return 0;
223 223
224 if (!(get_cr() & CR_L2)) { 224 if (get_cr() & CR_L2) {
225 pr_info("XScale3 L2 cache enabled.\n"); 225 pr_info("XScale3 L2 cache enabled.\n");
226 adjust_cr(CR_L2, CR_L2);
227 xsc3_l2_inv_all(); 226 xsc3_l2_inv_all();
228 }
229 227
230 outer_cache.inv_range = xsc3_l2_inv_range; 228 outer_cache.inv_range = xsc3_l2_inv_range;
231 outer_cache.clean_range = xsc3_l2_clean_range; 229 outer_cache.clean_range = xsc3_l2_clean_range;
232 outer_cache.flush_range = xsc3_l2_flush_range; 230 outer_cache.flush_range = xsc3_l2_flush_range;
231 }
233 232
234 return 0; 233 return 0;
235} 234}
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
index 52c40d155672..a04ffbbbe253 100644
--- a/arch/arm/mm/init.c
+++ b/arch/arm/mm/init.c
@@ -616,7 +616,7 @@ void __init mem_init(void)
616 "%dK data, %dK init, %luK highmem)\n", 616 "%dK data, %dK init, %luK highmem)\n",
617 nr_free_pages() << (PAGE_SHIFT-10), codesize >> 10, 617 nr_free_pages() << (PAGE_SHIFT-10), codesize >> 10,
618 datasize >> 10, initsize >> 10, 618 datasize >> 10, initsize >> 10,
619 (unsigned long) (totalhigh_pages << (PAGE_SHIFT-10))); 619 totalhigh_pages << (PAGE_SHIFT-10));
620 620
621 if (PAGE_SIZE >= 16384 && num_physpages <= 128) { 621 if (PAGE_SIZE >= 16384 && num_physpages <= 128) {
622 extern int sysctl_overcommit_memory; 622 extern int sysctl_overcommit_memory;
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index 1708da82da96..761ffede6a23 100644
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
@@ -1067,4 +1067,6 @@ void setup_mm_for_reboot(char mode)
1067 pmd[1] = __pmd(pmdval + (1 << (PGDIR_SHIFT - 1))); 1067 pmd[1] = __pmd(pmdval + (1 << (PGDIR_SHIFT - 1)));
1068 flush_pmd_entry(pmd); 1068 flush_pmd_entry(pmd);
1069 } 1069 }
1070
1071 local_flush_tlb_all();
1070} 1072}
diff --git a/arch/arm/mm/proc-arm6_7.S b/arch/arm/mm/proc-arm6_7.S
index 3f9cd3d8f6d5..795dc615f43b 100644
--- a/arch/arm/mm/proc-arm6_7.S
+++ b/arch/arm/mm/proc-arm6_7.S
@@ -41,7 +41,7 @@ ENTRY(cpu_arm7_dcache_clean_area)
41ENTRY(cpu_arm7_data_abort) 41ENTRY(cpu_arm7_data_abort)
42 mrc p15, 0, r1, c5, c0, 0 @ get FSR 42 mrc p15, 0, r1, c5, c0, 0 @ get FSR
43 mrc p15, 0, r0, c6, c0, 0 @ get FAR 43 mrc p15, 0, r0, c6, c0, 0 @ get FAR
44 ldr r8, [r0] @ read arm instruction 44 ldr r8, [r2] @ read arm instruction
45 tst r8, #1 << 20 @ L = 0 -> write? 45 tst r8, #1 << 20 @ L = 0 -> write?
46 orreq r1, r1, #1 << 11 @ yes. 46 orreq r1, r1, #1 << 11 @ yes.
47 and r7, r8, #15 << 24 47 and r7, r8, #15 << 24
diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S
index 395cc90c6613..7a5337ed7d68 100644
--- a/arch/arm/mm/proc-v6.S
+++ b/arch/arm/mm/proc-v6.S
@@ -59,8 +59,6 @@ ENTRY(cpu_v6_proc_fin)
59 * to what would be the reset vector. 59 * to what would be the reset vector.
60 * 60 *
61 * - loc - location to jump to for soft reset 61 * - loc - location to jump to for soft reset
62 *
63 * It is assumed that:
64 */ 62 */
65 .align 5 63 .align 5
66ENTRY(cpu_v6_reset) 64ENTRY(cpu_v6_reset)
diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S
index 3a285218fd15..7aaf88a3b7aa 100644
--- a/arch/arm/mm/proc-v7.S
+++ b/arch/arm/mm/proc-v7.S
@@ -45,7 +45,14 @@ ENTRY(cpu_v7_proc_init)
45ENDPROC(cpu_v7_proc_init) 45ENDPROC(cpu_v7_proc_init)
46 46
47ENTRY(cpu_v7_proc_fin) 47ENTRY(cpu_v7_proc_fin)
48 mov pc, lr 48 stmfd sp!, {lr}
49 cpsid if @ disable interrupts
50 bl v7_flush_kern_cache_all
51 mrc p15, 0, r0, c1, c0, 0 @ ctrl register
52 bic r0, r0, #0x1000 @ ...i............
53 bic r0, r0, #0x0006 @ .............ca.
54 mcr p15, 0, r0, c1, c0, 0 @ disable caches
55 ldmfd sp!, {pc}
49ENDPROC(cpu_v7_proc_fin) 56ENDPROC(cpu_v7_proc_fin)
50 57
51/* 58/*
@@ -56,8 +63,6 @@ ENDPROC(cpu_v7_proc_fin)
56 * to what would be the reset vector. 63 * to what would be the reset vector.
57 * 64 *
58 * - loc - location to jump to for soft reset 65 * - loc - location to jump to for soft reset
59 *
60 * It is assumed that:
61 */ 66 */
62 .align 5 67 .align 5
63ENTRY(cpu_v7_reset) 68ENTRY(cpu_v7_reset)
diff --git a/arch/arm/mm/proc-xsc3.S b/arch/arm/mm/proc-xsc3.S
index 96456f548798..8e4f6dca8997 100644
--- a/arch/arm/mm/proc-xsc3.S
+++ b/arch/arm/mm/proc-xsc3.S
@@ -407,6 +407,13 @@ __xsc3_setup:
407 407
408 adr r5, xsc3_crval 408 adr r5, xsc3_crval
409 ldmia r5, {r5, r6} 409 ldmia r5, {r5, r6}
410
411#ifdef CONFIG_CACHE_XSC3L2
412 mrc p15, 1, r0, c0, c0, 1 @ get L2 present information
413 ands r0, r0, #0xf8
414 orrne r6, r6, #(1 << 26) @ enable L2 if present
415#endif
416
410 mrc p15, 0, r0, c1, c0, 0 @ get control register 417 mrc p15, 0, r0, c1, c0, 0 @ get control register
411 bic r0, r0, r5 @ ..V. ..R. .... ..A. 418 bic r0, r0, r5 @ ..V. ..R. .... ..A.
412 orr r0, r0, r6 @ ..VI Z..S .... .C.M (mmu) 419 orr r0, r0, r6 @ ..VI Z..S .... .C.M (mmu)
diff --git a/arch/arm/mm/tlb-v7.S b/arch/arm/mm/tlb-v7.S
index a26a605b73bd..0cb1848bd876 100644
--- a/arch/arm/mm/tlb-v7.S
+++ b/arch/arm/mm/tlb-v7.S
@@ -40,7 +40,6 @@ ENTRY(v7wbi_flush_user_tlb_range)
40 asid r3, r3 @ mask ASID 40 asid r3, r3 @ mask ASID
41 orr r0, r3, r0, lsl #PAGE_SHIFT @ Create initial MVA 41 orr r0, r3, r0, lsl #PAGE_SHIFT @ Create initial MVA
42 mov r1, r1, lsl #PAGE_SHIFT 42 mov r1, r1, lsl #PAGE_SHIFT
43 vma_vm_flags r2, r2 @ get vma->vm_flags
441: 431:
45#ifdef CONFIG_SMP 44#ifdef CONFIG_SMP
46 mcr p15, 0, r0, c8, c3, 1 @ TLB invalidate U MVA (shareable) 45 mcr p15, 0, r0, c8, c3, 1 @ TLB invalidate U MVA (shareable)
diff --git a/arch/arm/plat-mxc/audmux-v2.c b/arch/arm/plat-mxc/audmux-v2.c
index 6f21096086fd..b06954a84436 100644
--- a/arch/arm/plat-mxc/audmux-v2.c
+++ b/arch/arm/plat-mxc/audmux-v2.c
@@ -23,6 +23,7 @@
23#include <linux/err.h> 23#include <linux/err.h>
24#include <linux/io.h> 24#include <linux/io.h>
25#include <linux/clk.h> 25#include <linux/clk.h>
26#include <linux/debugfs.h>
26#include <mach/audmux.h> 27#include <mach/audmux.h>
27#include <mach/hardware.h> 28#include <mach/hardware.h>
28 29
@@ -32,6 +33,140 @@ static void __iomem *audmux_base;
32#define MXC_AUDMUX_V2_PTCR(x) ((x) * 8) 33#define MXC_AUDMUX_V2_PTCR(x) ((x) * 8)
33#define MXC_AUDMUX_V2_PDCR(x) ((x) * 8 + 4) 34#define MXC_AUDMUX_V2_PDCR(x) ((x) * 8 + 4)
34 35
36#ifdef CONFIG_DEBUG_FS
37static struct dentry *audmux_debugfs_root;
38
39static int audmux_open_file(struct inode *inode, struct file *file)
40{
41 file->private_data = inode->i_private;
42 return 0;
43}
44
45/* There is an annoying discontinuity in the SSI numbering with regard
46 * to the Linux number of the devices */
47static const char *audmux_port_string(int port)
48{
49 switch (port) {
50 case MX31_AUDMUX_PORT1_SSI0:
51 return "imx-ssi.0";
52 case MX31_AUDMUX_PORT2_SSI1:
53 return "imx-ssi.1";
54 case MX31_AUDMUX_PORT3_SSI_PINS_3:
55 return "SSI3";
56 case MX31_AUDMUX_PORT4_SSI_PINS_4:
57 return "SSI4";
58 case MX31_AUDMUX_PORT5_SSI_PINS_5:
59 return "SSI5";
60 case MX31_AUDMUX_PORT6_SSI_PINS_6:
61 return "SSI6";
62 default:
63 return "UNKNOWN";
64 }
65}
66
67static ssize_t audmux_read_file(struct file *file, char __user *user_buf,
68 size_t count, loff_t *ppos)
69{
70 ssize_t ret;
71 char *buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
72 int port = (int)file->private_data;
73 u32 pdcr, ptcr;
74
75 if (!buf)
76 return -ENOMEM;
77
78 if (audmux_clk)
79 clk_enable(audmux_clk);
80
81 ptcr = readl(audmux_base + MXC_AUDMUX_V2_PTCR(port));
82 pdcr = readl(audmux_base + MXC_AUDMUX_V2_PDCR(port));
83
84 if (audmux_clk)
85 clk_disable(audmux_clk);
86
87 ret = snprintf(buf, PAGE_SIZE, "PDCR: %08x\nPTCR: %08x\n",
88 pdcr, ptcr);
89
90 if (ptcr & MXC_AUDMUX_V2_PTCR_TFSDIR)
91 ret += snprintf(buf + ret, PAGE_SIZE - ret,
92 "TxFS output from %s, ",
93 audmux_port_string((ptcr >> 27) & 0x7));
94 else
95 ret += snprintf(buf + ret, PAGE_SIZE - ret,
96 "TxFS input, ");
97
98 if (ptcr & MXC_AUDMUX_V2_PTCR_TCLKDIR)
99 ret += snprintf(buf + ret, PAGE_SIZE - ret,
100 "TxClk output from %s",
101 audmux_port_string((ptcr >> 22) & 0x7));
102 else
103 ret += snprintf(buf + ret, PAGE_SIZE - ret,
104 "TxClk input");
105
106 ret += snprintf(buf + ret, PAGE_SIZE - ret, "\n");
107
108 if (ptcr & MXC_AUDMUX_V2_PTCR_SYN) {
109 ret += snprintf(buf + ret, PAGE_SIZE - ret,
110 "Port is symmetric");
111 } else {
112 if (ptcr & MXC_AUDMUX_V2_PTCR_RFSDIR)
113 ret += snprintf(buf + ret, PAGE_SIZE - ret,
114 "RxFS output from %s, ",
115 audmux_port_string((ptcr >> 17) & 0x7));
116 else
117 ret += snprintf(buf + ret, PAGE_SIZE - ret,
118 "RxFS input, ");
119
120 if (ptcr & MXC_AUDMUX_V2_PTCR_RCLKDIR)
121 ret += snprintf(buf + ret, PAGE_SIZE - ret,
122 "RxClk output from %s",
123 audmux_port_string((ptcr >> 12) & 0x7));
124 else
125 ret += snprintf(buf + ret, PAGE_SIZE - ret,
126 "RxClk input");
127 }
128
129 ret += snprintf(buf + ret, PAGE_SIZE - ret,
130 "\nData received from %s\n",
131 audmux_port_string((pdcr >> 13) & 0x7));
132
133 ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret);
134
135 kfree(buf);
136
137 return ret;
138}
139
140static const struct file_operations audmux_debugfs_fops = {
141 .open = audmux_open_file,
142 .read = audmux_read_file,
143};
144
145static void audmux_debugfs_init(void)
146{
147 int i;
148 char buf[20];
149
150 audmux_debugfs_root = debugfs_create_dir("audmux", NULL);
151 if (!audmux_debugfs_root) {
152 pr_warning("Failed to create AUDMUX debugfs root\n");
153 return;
154 }
155
156 for (i = 1; i < 8; i++) {
157 snprintf(buf, sizeof(buf), "ssi%d", i);
158 if (!debugfs_create_file(buf, 0444, audmux_debugfs_root,
159 (void *)i, &audmux_debugfs_fops))
160 pr_warning("Failed to create AUDMUX port %d debugfs file\n",
161 i);
162 }
163}
164#else
165static inline void audmux_debugfs_init(void)
166{
167}
168#endif
169
35int mxc_audmux_v2_configure_port(unsigned int port, unsigned int ptcr, 170int mxc_audmux_v2_configure_port(unsigned int port, unsigned int ptcr,
36 unsigned int pdcr) 171 unsigned int pdcr)
37{ 172{
@@ -68,6 +203,8 @@ static int mxc_audmux_v2_init(void)
68 if (cpu_is_mx31() || cpu_is_mx35()) 203 if (cpu_is_mx31() || cpu_is_mx35())
69 audmux_base = IO_ADDRESS(AUDMUX_BASE_ADDR); 204 audmux_base = IO_ADDRESS(AUDMUX_BASE_ADDR);
70 205
206 audmux_debugfs_init();
207
71 return 0; 208 return 0;
72} 209}
73 210
diff --git a/arch/arm/plat-mxc/include/mach/board-mx31lite.h b/arch/arm/plat-mxc/include/mach/board-mx31lite.h
index 0184b638c268..2b2da0367578 100644
--- a/arch/arm/plat-mxc/include/mach/board-mx31lite.h
+++ b/arch/arm/plat-mxc/include/mach/board-mx31lite.h
@@ -25,7 +25,7 @@
25 25
26#ifndef __ASSEMBLY__ 26#ifndef __ASSEMBLY__
27 27
28enum mx31lilly_boards { 28enum mx31lite_boards {
29 MX31LITE_NOBOARD = 0, 29 MX31LITE_NOBOARD = 0,
30 MX31LITE_DB = 1, 30 MX31LITE_DB = 1,
31}; 31};
diff --git a/arch/arm/plat-mxc/include/mach/common.h b/arch/arm/plat-mxc/include/mach/common.h
index 286cb9b0a25b..4bf1068ffad9 100644
--- a/arch/arm/plat-mxc/include/mach/common.h
+++ b/arch/arm/plat-mxc/include/mach/common.h
@@ -32,7 +32,7 @@ extern void mxc91231_init_irq(void);
32extern void mxc_timer_init(struct clk *timer_clk, void __iomem *, int); 32extern void mxc_timer_init(struct clk *timer_clk, void __iomem *, int);
33extern int mx1_clocks_init(unsigned long fref); 33extern int mx1_clocks_init(unsigned long fref);
34extern int mx21_clocks_init(unsigned long lref, unsigned long fref); 34extern int mx21_clocks_init(unsigned long lref, unsigned long fref);
35extern int mx25_clocks_init(unsigned long fref); 35extern int mx25_clocks_init(void);
36extern int mx27_clocks_init(unsigned long fref); 36extern int mx27_clocks_init(unsigned long fref);
37extern int mx31_clocks_init(unsigned long fref); 37extern int mx31_clocks_init(unsigned long fref);
38extern int mx35_clocks_init(void); 38extern int mx35_clocks_init(void);
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx25.h b/arch/arm/plat-mxc/include/mach/iomux-mx25.h
index 810c47f56e77..9af494f0ab3d 100644
--- a/arch/arm/plat-mxc/include/mach/iomux-mx25.h
+++ b/arch/arm/plat-mxc/include/mach/iomux-mx25.h
@@ -58,19 +58,19 @@
58 58
59#define MX25_PAD_A18__A18 IOMUX_PAD(0x23c, 0x020, 0x10, 0, 0, NO_PAD_CTRL) 59#define MX25_PAD_A18__A18 IOMUX_PAD(0x23c, 0x020, 0x10, 0, 0, NO_PAD_CTRL)
60#define MX25_PAD_A18__GPIO_2_4 IOMUX_PAD(0x23c, 0x020, 0x15, 0, 0, NO_PAD_CTRL) 60#define MX25_PAD_A18__GPIO_2_4 IOMUX_PAD(0x23c, 0x020, 0x15, 0, 0, NO_PAD_CTRL)
61#define MX25_PAD_A18__FEC_COL IOMUX_PAD(0x23c, 0x020, 0x17, 0x504, 0, NO_PAD_CTL) 61#define MX25_PAD_A18__FEC_COL IOMUX_PAD(0x23c, 0x020, 0x17, 0x504, 0, NO_PAD_CTRL)
62 62
63#define MX25_PAD_A19__A19 IOMUX_PAD(0x240, 0x024, 0x10, 0, 0, NO_PAD_CTRL) 63#define MX25_PAD_A19__A19 IOMUX_PAD(0x240, 0x024, 0x10, 0, 0, NO_PAD_CTRL)
64#define MX25_PAD_A19__FEC_RX_ER IOMUX_PAD(0x240, 0x024, 0x17, 0x518, 0, NO_PAD_CTL) 64#define MX25_PAD_A19__FEC_RX_ER IOMUX_PAD(0x240, 0x024, 0x17, 0x518, 0, NO_PAD_CTRL)
65#define MX25_PAD_A19__GPIO_2_5 IOMUX_PAD(0x240, 0x024, 0x15, 0, 0, NO_PAD_CTRL) 65#define MX25_PAD_A19__GPIO_2_5 IOMUX_PAD(0x240, 0x024, 0x15, 0, 0, NO_PAD_CTRL)
66 66
67#define MX25_PAD_A20__A20 IOMUX_PAD(0x244, 0x028, 0x10, 0, 0, NO_PAD_CTRL) 67#define MX25_PAD_A20__A20 IOMUX_PAD(0x244, 0x028, 0x10, 0, 0, NO_PAD_CTRL)
68#define MX25_PAD_A20__GPIO_2_6 IOMUX_PAD(0x244, 0x028, 0x15, 0, 0, NO_PAD_CTRL) 68#define MX25_PAD_A20__GPIO_2_6 IOMUX_PAD(0x244, 0x028, 0x15, 0, 0, NO_PAD_CTRL)
69#define MX25_PAD_A20__FEC_RDATA2 IOMUX_PAD(0x244, 0x028, 0x17, 0x50c, 0, NO_PAD_CTL) 69#define MX25_PAD_A20__FEC_RDATA2 IOMUX_PAD(0x244, 0x028, 0x17, 0x50c, 0, NO_PAD_CTRL)
70 70
71#define MX25_PAD_A21__A21 IOMUX_PAD(0x248, 0x02c, 0x10, 0, 0, NO_PAD_CTRL) 71#define MX25_PAD_A21__A21 IOMUX_PAD(0x248, 0x02c, 0x10, 0, 0, NO_PAD_CTRL)
72#define MX25_PAD_A21__GPIO_2_7 IOMUX_PAD(0x248, 0x02c, 0x15, 0, 0, NO_PAD_CTRL) 72#define MX25_PAD_A21__GPIO_2_7 IOMUX_PAD(0x248, 0x02c, 0x15, 0, 0, NO_PAD_CTRL)
73#define MX25_PAD_A21__FEC_RDATA3 IOMUX_PAD(0x248, 0x02c, 0x17, 0x510, 0, NO_PAD_CTL) 73#define MX25_PAD_A21__FEC_RDATA3 IOMUX_PAD(0x248, 0x02c, 0x17, 0x510, 0, NO_PAD_CTRL)
74 74
75#define MX25_PAD_A22__A22 IOMUX_PAD(0x000, 0x030, 0x10, 0, 0, NO_PAD_CTRL) 75#define MX25_PAD_A22__A22 IOMUX_PAD(0x000, 0x030, 0x10, 0, 0, NO_PAD_CTRL)
76#define MX25_PAD_A22__GPIO_2_8 IOMUX_PAD(0x000, 0x030, 0x15, 0, 0, NO_PAD_CTRL) 76#define MX25_PAD_A22__GPIO_2_8 IOMUX_PAD(0x000, 0x030, 0x15, 0, 0, NO_PAD_CTRL)
@@ -80,11 +80,11 @@
80 80
81#define MX25_PAD_A24__A24 IOMUX_PAD(0x250, 0x038, 0x10, 0, 0, NO_PAD_CTRL) 81#define MX25_PAD_A24__A24 IOMUX_PAD(0x250, 0x038, 0x10, 0, 0, NO_PAD_CTRL)
82#define MX25_PAD_A24__GPIO_2_10 IOMUX_PAD(0x250, 0x038, 0x15, 0, 0, NO_PAD_CTRL) 82#define MX25_PAD_A24__GPIO_2_10 IOMUX_PAD(0x250, 0x038, 0x15, 0, 0, NO_PAD_CTRL)
83#define MX25_PAD_A24__FEC_RX_CLK IOMUX_PAD(0x250, 0x038, 0x17, 0x514, 0, NO_PAD_CTL) 83#define MX25_PAD_A24__FEC_RX_CLK IOMUX_PAD(0x250, 0x038, 0x17, 0x514, 0, NO_PAD_CTRL)
84 84
85#define MX25_PAD_A25__A25 IOMUX_PAD(0x254, 0x03c, 0x10, 0, 0, NO_PAD_CTRL) 85#define MX25_PAD_A25__A25 IOMUX_PAD(0x254, 0x03c, 0x10, 0, 0, NO_PAD_CTRL)
86#define MX25_PAD_A25__GPIO_2_11 IOMUX_PAD(0x254, 0x03c, 0x15, 0, 0, NO_PAD_CTRL) 86#define MX25_PAD_A25__GPIO_2_11 IOMUX_PAD(0x254, 0x03c, 0x15, 0, 0, NO_PAD_CTRL)
87#define MX25_PAD_A25__FEC_CRS IOMUX_PAD(0x254, 0x03c, 0x17, 0x508, 0, NO_PAD_CTL) 87#define MX25_PAD_A25__FEC_CRS IOMUX_PAD(0x254, 0x03c, 0x17, 0x508, 0, NO_PAD_CTRL)
88 88
89#define MX25_PAD_EB0__EB0 IOMUX_PAD(0x258, 0x040, 0x10, 0, 0, NO_PAD_CTRL) 89#define MX25_PAD_EB0__EB0 IOMUX_PAD(0x258, 0x040, 0x10, 0, 0, NO_PAD_CTRL)
90#define MX25_PAD_EB0__AUD4_TXD IOMUX_PAD(0x258, 0x040, 0x14, 0x464, 0, NO_PAD_CTRL) 90#define MX25_PAD_EB0__AUD4_TXD IOMUX_PAD(0x258, 0x040, 0x14, 0x464, 0, NO_PAD_CTRL)
@@ -112,7 +112,7 @@
112#define MX25_PAD_CS5__UART5_RTS IOMUX_PAD(0x268, 0x058, 0x13, 0x574, 0, NO_PAD_CTRL) 112#define MX25_PAD_CS5__UART5_RTS IOMUX_PAD(0x268, 0x058, 0x13, 0x574, 0, NO_PAD_CTRL)
113#define MX25_PAD_CS5__GPIO_3_21 IOMUX_PAD(0x268, 0x058, 0x15, 0, 0, NO_PAD_CTRL) 113#define MX25_PAD_CS5__GPIO_3_21 IOMUX_PAD(0x268, 0x058, 0x15, 0, 0, NO_PAD_CTRL)
114 114
115#define MX25_PAD_NF_CE0__NF_CE0 IOMUX_PAD(0x26c, 0x05c, 0x10, 0, 0, NO_PAD_CTL) 115#define MX25_PAD_NF_CE0__NF_CE0 IOMUX_PAD(0x26c, 0x05c, 0x10, 0, 0, NO_PAD_CTRL)
116#define MX25_PAD_NF_CE0__GPIO_3_22 IOMUX_PAD(0x26c, 0x05c, 0x15, 0, 0, NO_PAD_CTRL) 116#define MX25_PAD_NF_CE0__GPIO_3_22 IOMUX_PAD(0x26c, 0x05c, 0x15, 0, 0, NO_PAD_CTRL)
117 117
118#define MX25_PAD_ECB__ECB IOMUX_PAD(0x270, 0x060, 0x10, 0, 0, NO_PAD_CTRL) 118#define MX25_PAD_ECB__ECB IOMUX_PAD(0x270, 0x060, 0x10, 0, 0, NO_PAD_CTRL)
@@ -229,28 +229,28 @@
229#define MX25_PAD_LD7__GPIO_1_21 IOMUX_PAD(0x2dc, 0x0e4, 0x15, 0, 0, NO_PAD_CTRL) 229#define MX25_PAD_LD7__GPIO_1_21 IOMUX_PAD(0x2dc, 0x0e4, 0x15, 0, 0, NO_PAD_CTRL)
230 230
231#define MX25_PAD_LD8__LD8 IOMUX_PAD(0x2e0, 0x0e8, 0x10, 0, 0, NO_PAD_CTRL) 231#define MX25_PAD_LD8__LD8 IOMUX_PAD(0x2e0, 0x0e8, 0x10, 0, 0, NO_PAD_CTRL)
232#define MX25_PAD_LD8__FEC_TX_ERR IOMUX_PAD(0x2e0, 0x0e8, 0x15, 0, 0, NO_PAD_CTL) 232#define MX25_PAD_LD8__FEC_TX_ERR IOMUX_PAD(0x2e0, 0x0e8, 0x15, 0, 0, NO_PAD_CTRL)
233 233
234#define MX25_PAD_LD9__LD9 IOMUX_PAD(0x2e4, 0x0ec, 0x10, 0, 0, NO_PAD_CTRL) 234#define MX25_PAD_LD9__LD9 IOMUX_PAD(0x2e4, 0x0ec, 0x10, 0, 0, NO_PAD_CTRL)
235#define MX25_PAD_LD9__FEC_COL IOMUX_PAD(0x2e4, 0x0ec, 0x15, 0x504, 1, NO_PAD_CTL) 235#define MX25_PAD_LD9__FEC_COL IOMUX_PAD(0x2e4, 0x0ec, 0x15, 0x504, 1, NO_PAD_CTRL)
236 236
237#define MX25_PAD_LD10__LD10 IOMUX_PAD(0x2e8, 0x0f0, 0x10, 0, 0, NO_PAD_CTRL) 237#define MX25_PAD_LD10__LD10 IOMUX_PAD(0x2e8, 0x0f0, 0x10, 0, 0, NO_PAD_CTRL)
238#define MX25_PAD_LD10__FEC_RX_ER IOMUX_PAD(0x2e8, 0x0f0, 0x15, 0x518, 1, NO_PAD_CTL) 238#define MX25_PAD_LD10__FEC_RX_ER IOMUX_PAD(0x2e8, 0x0f0, 0x15, 0x518, 1, NO_PAD_CTRL)
239 239
240#define MX25_PAD_LD11__LD11 IOMUX_PAD(0x2ec, 0x0f4, 0x10, 0, 0, NO_PAD_CTRL) 240#define MX25_PAD_LD11__LD11 IOMUX_PAD(0x2ec, 0x0f4, 0x10, 0, 0, NO_PAD_CTRL)
241#define MX25_PAD_LD11__FEC_RDATA2 IOMUX_PAD(0x2ec, 0x0f4, 0x15, 0x50c, 1, NO_PAD_CTL) 241#define MX25_PAD_LD11__FEC_RDATA2 IOMUX_PAD(0x2ec, 0x0f4, 0x15, 0x50c, 1, NO_PAD_CTRL)
242 242
243#define MX25_PAD_LD12__LD12 IOMUX_PAD(0x2f0, 0x0f8, 0x10, 0, 0, NO_PAD_CTRL) 243#define MX25_PAD_LD12__LD12 IOMUX_PAD(0x2f0, 0x0f8, 0x10, 0, 0, NO_PAD_CTRL)
244#define MX25_PAD_LD12__FEC_RDATA3 IOMUX_PAD(0x2f0, 0x0f8, 0x15, 0x510, 1, NO_PAD_CTL) 244#define MX25_PAD_LD12__FEC_RDATA3 IOMUX_PAD(0x2f0, 0x0f8, 0x15, 0x510, 1, NO_PAD_CTRL)
245 245
246#define MX25_PAD_LD13__LD13 IOMUX_PAD(0x2f4, 0x0fc, 0x10, 0, 0, NO_PAD_CTRL) 246#define MX25_PAD_LD13__LD13 IOMUX_PAD(0x2f4, 0x0fc, 0x10, 0, 0, NO_PAD_CTRL)
247#define MX25_PAD_LD13__FEC_TDATA2 IOMUX_PAD(0x2f4, 0x0fc, 0x15, 0, 0, NO_PAD_CTL) 247#define MX25_PAD_LD13__FEC_TDATA2 IOMUX_PAD(0x2f4, 0x0fc, 0x15, 0, 0, NO_PAD_CTRL)
248 248
249#define MX25_PAD_LD14__LD14 IOMUX_PAD(0x2f8, 0x100, 0x10, 0, 0, NO_PAD_CTRL) 249#define MX25_PAD_LD14__LD14 IOMUX_PAD(0x2f8, 0x100, 0x10, 0, 0, NO_PAD_CTRL)
250#define MX25_PAD_LD14__FEC_TDATA3 IOMUX_PAD(0x2f8, 0x100, 0x15, 0, 0, NO_PAD_CTL) 250#define MX25_PAD_LD14__FEC_TDATA3 IOMUX_PAD(0x2f8, 0x100, 0x15, 0, 0, NO_PAD_CTRL)
251 251
252#define MX25_PAD_LD15__LD15 IOMUX_PAD(0x2fc, 0x104, 0x10, 0, 0, NO_PAD_CTRL) 252#define MX25_PAD_LD15__LD15 IOMUX_PAD(0x2fc, 0x104, 0x10, 0, 0, NO_PAD_CTRL)
253#define MX25_PAD_LD15__FEC_RX_CLK IOMUX_PAD(0x2fc, 0x104, 0x15, 0x514, 1, NO_PAD_CTL) 253#define MX25_PAD_LD15__FEC_RX_CLK IOMUX_PAD(0x2fc, 0x104, 0x15, 0x514, 1, NO_PAD_CTRL)
254 254
255#define MX25_PAD_HSYNC__HSYNC IOMUX_PAD(0x300, 0x108, 0x10, 0, 0, NO_PAD_CTRL) 255#define MX25_PAD_HSYNC__HSYNC IOMUX_PAD(0x300, 0x108, 0x10, 0, 0, NO_PAD_CTRL)
256#define MX25_PAD_HSYNC__GPIO_1_22 IOMUX_PAD(0x300, 0x108, 0x15, 0, 0, NO_PAD_CTRL) 256#define MX25_PAD_HSYNC__GPIO_1_22 IOMUX_PAD(0x300, 0x108, 0x15, 0, 0, NO_PAD_CTRL)
@@ -265,7 +265,7 @@
265#define MX25_PAD_OE_ACD__GPIO_1_25 IOMUX_PAD(0x30c, 0x114, 0x15, 0, 0, NO_PAD_CTRL) 265#define MX25_PAD_OE_ACD__GPIO_1_25 IOMUX_PAD(0x30c, 0x114, 0x15, 0, 0, NO_PAD_CTRL)
266 266
267#define MX25_PAD_CONTRAST__CONTRAST IOMUX_PAD(0x310, 0x118, 0x10, 0, 0, NO_PAD_CTRL) 267#define MX25_PAD_CONTRAST__CONTRAST IOMUX_PAD(0x310, 0x118, 0x10, 0, 0, NO_PAD_CTRL)
268#define MX25_PAD_CONTRAST__FEC_CRS IOMUX_PAD(0x310, 0x118, 0x15, 0x508, 1, NO_PAD_CTL) 268#define MX25_PAD_CONTRAST__FEC_CRS IOMUX_PAD(0x310, 0x118, 0x15, 0x508, 1, NO_PAD_CTRL)
269 269
270#define MX25_PAD_PWM__PWM IOMUX_PAD(0x314, 0x11c, 0x10, 0, 0, NO_PAD_CTRL) 270#define MX25_PAD_PWM__PWM IOMUX_PAD(0x314, 0x11c, 0x10, 0, 0, NO_PAD_CTRL)
271#define MX25_PAD_PWM__GPIO_1_26 IOMUX_PAD(0x314, 0x11c, 0x15, 0, 0, NO_PAD_CTRL) 271#define MX25_PAD_PWM__GPIO_1_26 IOMUX_PAD(0x314, 0x11c, 0x15, 0, 0, NO_PAD_CTRL)
@@ -354,19 +354,19 @@
354#define MX25_PAD_UART2_TXD__GPIO_4_27 IOMUX_PAD(0x37c, 0x184, 0x15, 0, 0, NO_PAD_CTRL) 354#define MX25_PAD_UART2_TXD__GPIO_4_27 IOMUX_PAD(0x37c, 0x184, 0x15, 0, 0, NO_PAD_CTRL)
355 355
356#define MX25_PAD_UART2_RTS__UART2_RTS IOMUX_PAD(0x380, 0x188, 0x10, 0, 0, NO_PAD_CTRL) 356#define MX25_PAD_UART2_RTS__UART2_RTS IOMUX_PAD(0x380, 0x188, 0x10, 0, 0, NO_PAD_CTRL)
357#define MX25_PAD_UART2_RTS__FEC_COL IOMUX_PAD(0x380, 0x188, 0x12, 0x504, 2, NO_PAD_CTL) 357#define MX25_PAD_UART2_RTS__FEC_COL IOMUX_PAD(0x380, 0x188, 0x12, 0x504, 2, NO_PAD_CTRL)
358#define MX25_PAD_UART2_RTS__GPIO_4_28 IOMUX_PAD(0x380, 0x188, 0x15, 0, 0, NO_PAD_CTRL) 358#define MX25_PAD_UART2_RTS__GPIO_4_28 IOMUX_PAD(0x380, 0x188, 0x15, 0, 0, NO_PAD_CTRL)
359 359
360#define MX25_PAD_UART2_CTS__FEC_RX_ER IOMUX_PAD(0x384, 0x18c, 0x12, 0x518, 2, NO_PAD_CTL) 360#define MX25_PAD_UART2_CTS__FEC_RX_ER IOMUX_PAD(0x384, 0x18c, 0x12, 0x518, 2, NO_PAD_CTRL)
361#define MX25_PAD_UART2_CTS__UART2_CTS IOMUX_PAD(0x384, 0x18c, 0x10, 0, 0, NO_PAD_CTRL) 361#define MX25_PAD_UART2_CTS__UART2_CTS IOMUX_PAD(0x384, 0x18c, 0x10, 0, 0, NO_PAD_CTRL)
362#define MX25_PAD_UART2_CTS__GPIO_4_29 IOMUX_PAD(0x384, 0x18c, 0x15, 0, 0, NO_PAD_CTRL) 362#define MX25_PAD_UART2_CTS__GPIO_4_29 IOMUX_PAD(0x384, 0x18c, 0x15, 0, 0, NO_PAD_CTRL)
363 363
364#define MX25_PAD_SD1_CMD__SD1_CMD IOMUX_PAD(0x388, 0x190, 0x10, 0, 0, PAD_CTL_PUS_47K_UP) 364#define MX25_PAD_SD1_CMD__SD1_CMD IOMUX_PAD(0x388, 0x190, 0x10, 0, 0, PAD_CTL_PUS_47K_UP)
365#define MX25_PAD_SD1_CMD__FEC_RDATA2 IOMUX_PAD(0x388, 0x190, 0x12, 0x50c, 2, NO_PAD_CTL) 365#define MX25_PAD_SD1_CMD__FEC_RDATA2 IOMUX_PAD(0x388, 0x190, 0x12, 0x50c, 2, NO_PAD_CTRL)
366#define MX25_PAD_SD1_CMD__GPIO_2_23 IOMUX_PAD(0x388, 0x190, 0x15, 0, 0, NO_PAD_CTRL) 366#define MX25_PAD_SD1_CMD__GPIO_2_23 IOMUX_PAD(0x388, 0x190, 0x15, 0, 0, NO_PAD_CTRL)
367 367
368#define MX25_PAD_SD1_CLK__SD1_CLK IOMUX_PAD(0x38c, 0x194, 0x10, 0, 0, PAD_CTL_PUS_47K_UP) 368#define MX25_PAD_SD1_CLK__SD1_CLK IOMUX_PAD(0x38c, 0x194, 0x10, 0, 0, PAD_CTL_PUS_47K_UP)
369#define MX25_PAD_SD1_CLK__FEC_RDATA3 IOMUX_PAD(0x38c, 0x194, 0x12, 0x510, 2, NO_PAD_CTL) 369#define MX25_PAD_SD1_CLK__FEC_RDATA3 IOMUX_PAD(0x38c, 0x194, 0x12, 0x510, 2, NO_PAD_CTRL)
370#define MX25_PAD_SD1_CLK__GPIO_2_24 IOMUX_PAD(0x38c, 0x194, 0x15, 0, 0, NO_PAD_CTRL) 370#define MX25_PAD_SD1_CLK__GPIO_2_24 IOMUX_PAD(0x38c, 0x194, 0x15, 0, 0, NO_PAD_CTRL)
371 371
372#define MX25_PAD_SD1_DATA0__SD1_DATA0 IOMUX_PAD(0x390, 0x198, 0x10, 0, 0, PAD_CTL_PUS_47K_UP) 372#define MX25_PAD_SD1_DATA0__SD1_DATA0 IOMUX_PAD(0x390, 0x198, 0x10, 0, 0, PAD_CTL_PUS_47K_UP)
@@ -377,11 +377,11 @@
377#define MX25_PAD_SD1_DATA1__GPIO_2_26 IOMUX_PAD(0x394, 0x19c, 0x15, 0, 0, NO_PAD_CTRL) 377#define MX25_PAD_SD1_DATA1__GPIO_2_26 IOMUX_PAD(0x394, 0x19c, 0x15, 0, 0, NO_PAD_CTRL)
378 378
379#define MX25_PAD_SD1_DATA2__SD1_DATA2 IOMUX_PAD(0x398, 0x1a0, 0x10, 0, 0, PAD_CTL_PUS_47K_UP) 379#define MX25_PAD_SD1_DATA2__SD1_DATA2 IOMUX_PAD(0x398, 0x1a0, 0x10, 0, 0, PAD_CTL_PUS_47K_UP)
380#define MX25_PAD_SD1_DATA2__FEC_RX_CLK IOMUX_PAD(0x398, 0x1a0, 0x15, 0x514, 2, NO_PAD_CTL) 380#define MX25_PAD_SD1_DATA2__FEC_RX_CLK IOMUX_PAD(0x398, 0x1a0, 0x15, 0x514, 2, NO_PAD_CTRL)
381#define MX25_PAD_SD1_DATA2__GPIO_2_27 IOMUX_PAD(0x398, 0x1a0, 0x15, 0, 0, NO_PAD_CTRL) 381#define MX25_PAD_SD1_DATA2__GPIO_2_27 IOMUX_PAD(0x398, 0x1a0, 0x15, 0, 0, NO_PAD_CTRL)
382 382
383#define MX25_PAD_SD1_DATA3__SD1_DATA3 IOMUX_PAD(0x39c, 0x1a4, 0x10, 0, 0, PAD_CTL_PUS_47K_UP) 383#define MX25_PAD_SD1_DATA3__SD1_DATA3 IOMUX_PAD(0x39c, 0x1a4, 0x10, 0, 0, PAD_CTL_PUS_47K_UP)
384#define MX25_PAD_SD1_DATA3__FEC_CRS IOMUX_PAD(0x39c, 0x1a4, 0x10, 0x508, 2, NO_PAD_CTL) 384#define MX25_PAD_SD1_DATA3__FEC_CRS IOMUX_PAD(0x39c, 0x1a4, 0x10, 0x508, 2, NO_PAD_CTRL)
385#define MX25_PAD_SD1_DATA3__GPIO_2_28 IOMUX_PAD(0x39c, 0x1a4, 0x15, 0, 0, NO_PAD_CTRL) 385#define MX25_PAD_SD1_DATA3__GPIO_2_28 IOMUX_PAD(0x39c, 0x1a4, 0x15, 0, 0, NO_PAD_CTRL)
386 386
387#define MX25_PAD_KPP_ROW0__KPP_ROW0 IOMUX_PAD(0x3a0, 0x1a8, 0x10, 0, 0, PAD_CTL_PKE) 387#define MX25_PAD_KPP_ROW0__KPP_ROW0 IOMUX_PAD(0x3a0, 0x1a8, 0x10, 0, 0, PAD_CTL_PKE)
@@ -410,7 +410,7 @@
410#define MX25_PAD_KPP_COL3__KPP_COL3 IOMUX_PAD(0x3bc, 0x1c4, 0x10, 0, 0, PAD_CTL_PKE | PAD_CTL_ODE) 410#define MX25_PAD_KPP_COL3__KPP_COL3 IOMUX_PAD(0x3bc, 0x1c4, 0x10, 0, 0, PAD_CTL_PKE | PAD_CTL_ODE)
411#define MX25_PAD_KPP_COL3__GPIO_3_4 IOMUX_PAD(0x3bc, 0x1c4, 0x15, 0, 0, NO_PAD_CTRL) 411#define MX25_PAD_KPP_COL3__GPIO_3_4 IOMUX_PAD(0x3bc, 0x1c4, 0x15, 0, 0, NO_PAD_CTRL)
412 412
413#define MX25_PAD_FEC_MDC__FEC_MDC IOMUX_PAD(0x3c0, 0x1c8, 0x10, 0, 0, NO_PAD_CTL) 413#define MX25_PAD_FEC_MDC__FEC_MDC IOMUX_PAD(0x3c0, 0x1c8, 0x10, 0, 0, NO_PAD_CTRL)
414#define MX25_PAD_FEC_MDC__AUD4_TXD IOMUX_PAD(0x3c0, 0x1c8, 0x12, 0x464, 1, NO_PAD_CTRL) 414#define MX25_PAD_FEC_MDC__AUD4_TXD IOMUX_PAD(0x3c0, 0x1c8, 0x12, 0x464, 1, NO_PAD_CTRL)
415#define MX25_PAD_FEC_MDC__GPIO_3_5 IOMUX_PAD(0x3c0, 0x1c8, 0x15, 0, 0, NO_PAD_CTRL) 415#define MX25_PAD_FEC_MDC__GPIO_3_5 IOMUX_PAD(0x3c0, 0x1c8, 0x15, 0, 0, NO_PAD_CTRL)
416 416
@@ -418,23 +418,23 @@
418#define MX25_PAD_FEC_MDIO__AUD4_RXD IOMUX_PAD(0x3c4, 0x1cc, 0x12, 0x460, 1, NO_PAD_CTRL) 418#define MX25_PAD_FEC_MDIO__AUD4_RXD IOMUX_PAD(0x3c4, 0x1cc, 0x12, 0x460, 1, NO_PAD_CTRL)
419#define MX25_PAD_FEC_MDIO__GPIO_3_6 IOMUX_PAD(0x3c4, 0x1cc, 0x15, 0, 0, NO_PAD_CTRL) 419#define MX25_PAD_FEC_MDIO__GPIO_3_6 IOMUX_PAD(0x3c4, 0x1cc, 0x15, 0, 0, NO_PAD_CTRL)
420 420
421#define MX25_PAD_FEC_TDATA0__FEC_TDATA0 IOMUX_PAD(0x3c8, 0x1d0, 0x10, 0, 0, NO_PAD_CTL) 421#define MX25_PAD_FEC_TDATA0__FEC_TDATA0 IOMUX_PAD(0x3c8, 0x1d0, 0x10, 0, 0, NO_PAD_CTRL)
422#define MX25_PAD_FEC_TDATA0__GPIO_3_7 IOMUX_PAD(0x3c8, 0x1d0, 0x15, 0, 0, NO_PAD_CTRL) 422#define MX25_PAD_FEC_TDATA0__GPIO_3_7 IOMUX_PAD(0x3c8, 0x1d0, 0x15, 0, 0, NO_PAD_CTRL)
423 423
424#define MX25_PAD_FEC_TDATA1__FEC_TDATA1 IOMUX_PAD(0x3cc, 0x1d4, 0x10, 0, 0, NO_PAD_CTL) 424#define MX25_PAD_FEC_TDATA1__FEC_TDATA1 IOMUX_PAD(0x3cc, 0x1d4, 0x10, 0, 0, NO_PAD_CTRL)
425#define MX25_PAD_FEC_TDATA1__AUD4_TXFS IOMUX_PAD(0x3cc, 0x1d4, 0x12, 0x474, 1, NO_PAD_CTRL) 425#define MX25_PAD_FEC_TDATA1__AUD4_TXFS IOMUX_PAD(0x3cc, 0x1d4, 0x12, 0x474, 1, NO_PAD_CTRL)
426#define MX25_PAD_FEC_TDATA1__GPIO_3_8 IOMUX_PAD(0x3cc, 0x1d4, 0x15, 0, 0, NO_PAD_CTRL) 426#define MX25_PAD_FEC_TDATA1__GPIO_3_8 IOMUX_PAD(0x3cc, 0x1d4, 0x15, 0, 0, NO_PAD_CTRL)
427 427
428#define MX25_PAD_FEC_TX_EN__FEC_TX_EN IOMUX_PAD(0x3d0, 0x1d8, 0x10, 0, 0, NO_PAD_CTL) 428#define MX25_PAD_FEC_TX_EN__FEC_TX_EN IOMUX_PAD(0x3d0, 0x1d8, 0x10, 0, 0, NO_PAD_CTRL)
429#define MX25_PAD_FEC_TX_EN__GPIO_3_9 IOMUX_PAD(0x3d0, 0x1d8, 0x15, 0, 0, NO_PAD_CTRL) 429#define MX25_PAD_FEC_TX_EN__GPIO_3_9 IOMUX_PAD(0x3d0, 0x1d8, 0x15, 0, 0, NO_PAD_CTRL)
430 430
431#define MX25_PAD_FEC_RDATA0__FEC_RDATA0 IOMUX_PAD(0x3d4, 0x1dc, 0x10, 0, 0, PAD_CTL_PUS_100K_DOWN | NO_PAD_CTL) 431#define MX25_PAD_FEC_RDATA0__FEC_RDATA0 IOMUX_PAD(0x3d4, 0x1dc, 0x10, 0, 0, PAD_CTL_PUS_100K_DOWN | NO_PAD_CTRL)
432#define MX25_PAD_FEC_RDATA0__GPIO_3_10 IOMUX_PAD(0x3d4, 0x1dc, 0x15, 0, 0, NO_PAD_CTRL) 432#define MX25_PAD_FEC_RDATA0__GPIO_3_10 IOMUX_PAD(0x3d4, 0x1dc, 0x15, 0, 0, NO_PAD_CTRL)
433 433
434#define MX25_PAD_FEC_RDATA1__FEC_RDATA1 IOMUX_PAD(0x3d8, 0x1e0, 0x10, 0, 0, PAD_CTL_PUS_100K_DOWN | NO_PAD_CTL) 434#define MX25_PAD_FEC_RDATA1__FEC_RDATA1 IOMUX_PAD(0x3d8, 0x1e0, 0x10, 0, 0, PAD_CTL_PUS_100K_DOWN | NO_PAD_CTRL)
435#define MX25_PAD_FEC_RDATA1__GPIO_3_11 IOMUX_PAD(0x3d8, 0x1e0, 0x15, 0, 0, NO_PAD_CTRL) 435#define MX25_PAD_FEC_RDATA1__GPIO_3_11 IOMUX_PAD(0x3d8, 0x1e0, 0x15, 0, 0, NO_PAD_CTRL)
436 436
437#define MX25_PAD_FEC_RX_DV__FEC_RX_DV IOMUX_PAD(0x3dc, 0x1e4, 0x10, 0, 0, PAD_CTL_PUS_100K_DOWN | NO_PAD_CTL) 437#define MX25_PAD_FEC_RX_DV__FEC_RX_DV IOMUX_PAD(0x3dc, 0x1e4, 0x10, 0, 0, PAD_CTL_PUS_100K_DOWN | NO_PAD_CTRL)
438#define MX25_PAD_FEC_RX_DV__CAN2_RX IOMUX_PAD(0x3dc, 0x1e4, 0x14, 0x484, 0, PAD_CTL_PUS_22K_UP) 438#define MX25_PAD_FEC_RX_DV__CAN2_RX IOMUX_PAD(0x3dc, 0x1e4, 0x14, 0x484, 0, PAD_CTL_PUS_22K_UP)
439#define MX25_PAD_FEC_RX_DV__GPIO_3_12 IOMUX_PAD(0x3dc, 0x1e4, 0x15, 0, 0, NO_PAD_CTRL) 439#define MX25_PAD_FEC_RX_DV__GPIO_3_12 IOMUX_PAD(0x3dc, 0x1e4, 0x15, 0, 0, NO_PAD_CTRL)
440 440
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx35.h b/arch/arm/plat-mxc/include/mach/iomux-mx35.h
index 00b0ac1db225..c88d40795f7a 100644
--- a/arch/arm/plat-mxc/include/mach/iomux-mx35.h
+++ b/arch/arm/plat-mxc/include/mach/iomux-mx35.h
@@ -671,7 +671,7 @@
671#define MX35_PAD_LD8__SDMA_SDMA_DEBUG_PC_8 IOMUX_PAD(0x634, 0x1d0, 6, 0x0, 0, NO_PAD_CTRL) 671#define MX35_PAD_LD8__SDMA_SDMA_DEBUG_PC_8 IOMUX_PAD(0x634, 0x1d0, 6, 0x0, 0, NO_PAD_CTRL)
672 672
673#define MX35_PAD_LD9__IPU_DISPB_DAT_9 IOMUX_PAD(0x638, 0x1d4, 0, 0x0, 0, NO_PAD_CTRL) 673#define MX35_PAD_LD9__IPU_DISPB_DAT_9 IOMUX_PAD(0x638, 0x1d4, 0, 0x0, 0, NO_PAD_CTRL)
674#define MX35_PAD_LD9__GPIO2_9 IOMUX_PAD(0x638, 0x1d4, 5, 0x8e4 0, NO_PAD_CTRL) 674#define MX35_PAD_LD9__GPIO2_9 IOMUX_PAD(0x638, 0x1d4, 5, 0x8e4, 0, NO_PAD_CTRL)
675#define MX35_PAD_LD9__SDMA_SDMA_DEBUG_PC_9 IOMUX_PAD(0x638, 0x1d4, 6, 0x0, 0, NO_PAD_CTRL) 675#define MX35_PAD_LD9__SDMA_SDMA_DEBUG_PC_9 IOMUX_PAD(0x638, 0x1d4, 6, 0x0, 0, NO_PAD_CTRL)
676 676
677#define MX35_PAD_LD10__IPU_DISPB_DAT_10 IOMUX_PAD(0x63c, 0x1d8, 0, 0x0, 0, NO_PAD_CTRL) 677#define MX35_PAD_LD10__IPU_DISPB_DAT_10 IOMUX_PAD(0x63c, 0x1d8, 0, 0x0, 0, NO_PAD_CTRL)
diff --git a/arch/arm/plat-mxc/include/mach/irqs.h b/arch/arm/plat-mxc/include/mach/irqs.h
index ead9d592168d..0cb347645db4 100644
--- a/arch/arm/plat-mxc/include/mach/irqs.h
+++ b/arch/arm/plat-mxc/include/mach/irqs.h
@@ -37,7 +37,12 @@
37 * within sensible limits. 37 * within sensible limits.
38 */ 38 */
39#define MXC_BOARD_IRQ_START (MXC_INTERNAL_IRQS + MXC_GPIO_IRQS) 39#define MXC_BOARD_IRQ_START (MXC_INTERNAL_IRQS + MXC_GPIO_IRQS)
40
41#ifdef CONFIG_MACH_MX31ADS_WM1133_EV1
42#define MXC_BOARD_IRQS 80
43#else
40#define MXC_BOARD_IRQS 16 44#define MXC_BOARD_IRQS 16
45#endif
41 46
42#define MXC_IPU_IRQ_START (MXC_BOARD_IRQ_START + MXC_BOARD_IRQS) 47#define MXC_IPU_IRQ_START (MXC_BOARD_IRQ_START + MXC_BOARD_IRQS)
43 48
diff --git a/arch/arm/plat-mxc/include/mach/mx25.h b/arch/arm/plat-mxc/include/mach/mx25.h
index 91e738144804..854e2dc58481 100644
--- a/arch/arm/plat-mxc/include/mach/mx25.h
+++ b/arch/arm/plat-mxc/include/mach/mx25.h
@@ -41,4 +41,8 @@
41#define UART1_BASE_ADDR 0x43f90000 41#define UART1_BASE_ADDR 0x43f90000
42#define UART2_BASE_ADDR 0x43f94000 42#define UART2_BASE_ADDR 0x43f94000
43 43
44#define MX25_FEC_BASE_ADDR 0x50038000
45
46#define MX25_INT_FEC 57
47
44#endif /* __MACH_MX25_H__ */ 48#endif /* __MACH_MX25_H__ */
diff --git a/arch/arm/plat-mxc/include/mach/uncompress.h b/arch/arm/plat-mxc/include/mach/uncompress.h
index 4d5d395ad63b..d49384cb1e97 100644
--- a/arch/arm/plat-mxc/include/mach/uncompress.h
+++ b/arch/arm/plat-mxc/include/mach/uncompress.h
@@ -60,7 +60,9 @@ static void putc(int ch)
60 UART(TXR) = ch; 60 UART(TXR) = ch;
61} 61}
62 62
63#define flush() do { } while (0) 63static inline void flush(void)
64{
65}
64 66
65#define MX1_UART1_BASE_ADDR 0x00206000 67#define MX1_UART1_BASE_ADDR 0x00206000
66#define MX25_UART1_BASE_ADDR 0x43f90000 68#define MX25_UART1_BASE_ADDR 0x43f90000
diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c
index 89cafc937249..4becbdd1935c 100644
--- a/arch/arm/plat-omap/clock.c
+++ b/arch/arm/plat-omap/clock.c
@@ -36,10 +36,6 @@ static struct clk_functions *arch_clock;
36 * Standard clock functions defined in include/linux/clk.h 36 * Standard clock functions defined in include/linux/clk.h
37 *-------------------------------------------------------------------------*/ 37 *-------------------------------------------------------------------------*/
38 38
39/* This functions is moved to arch/arm/common/clkdev.c. For OMAP4 since
40 * clock framework is not up , it is defined here to avoid rework in
41 * every driver. Also dummy prcm reset function is added */
42
43int clk_enable(struct clk *clk) 39int clk_enable(struct clk *clk)
44{ 40{
45 unsigned long flags; 41 unsigned long flags;
@@ -305,7 +301,6 @@ void clk_enable_init_clocks(void)
305 clk_enable(clkp); 301 clk_enable(clkp);
306 } 302 }
307} 303}
308EXPORT_SYMBOL(clk_enable_init_clocks);
309 304
310/* 305/*
311 * Low level helpers 306 * Low level helpers
@@ -334,7 +329,16 @@ void clk_init_cpufreq_table(struct cpufreq_frequency_table **table)
334 arch_clock->clk_init_cpufreq_table(table); 329 arch_clock->clk_init_cpufreq_table(table);
335 spin_unlock_irqrestore(&clockfw_lock, flags); 330 spin_unlock_irqrestore(&clockfw_lock, flags);
336} 331}
337EXPORT_SYMBOL(clk_init_cpufreq_table); 332
333void clk_exit_cpufreq_table(struct cpufreq_frequency_table **table)
334{
335 unsigned long flags;
336
337 spin_lock_irqsave(&clockfw_lock, flags);
338 if (arch_clock->clk_exit_cpufreq_table)
339 arch_clock->clk_exit_cpufreq_table(table);
340 spin_unlock_irqrestore(&clockfw_lock, flags);
341}
338#endif 342#endif
339 343
340/*-------------------------------------------------------------------------*/ 344/*-------------------------------------------------------------------------*/
@@ -387,7 +391,7 @@ static struct dentry *clk_debugfs_root;
387static int clk_debugfs_register_one(struct clk *c) 391static int clk_debugfs_register_one(struct clk *c)
388{ 392{
389 int err; 393 int err;
390 struct dentry *d, *child; 394 struct dentry *d, *child, *child_tmp;
391 struct clk *pa = c->parent; 395 struct clk *pa = c->parent;
392 char s[255]; 396 char s[255];
393 char *p = s; 397 char *p = s;
@@ -419,7 +423,7 @@ static int clk_debugfs_register_one(struct clk *c)
419 423
420err_out: 424err_out:
421 d = c->dent; 425 d = c->dent;
422 list_for_each_entry(child, &d->d_subdirs, d_u.d_child) 426 list_for_each_entry_safe(child, child_tmp, &d->d_subdirs, d_u.d_child)
423 debugfs_remove(child); 427 debugfs_remove(child);
424 debugfs_remove(c->dent); 428 debugfs_remove(c->dent);
425 return err; 429 return err;
diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c
index bf1eaf3a27d4..dddc0273bc8b 100644
--- a/arch/arm/plat-omap/common.c
+++ b/arch/arm/plat-omap/common.c
@@ -172,6 +172,32 @@ unsigned long long sched_clock(void)
172 clocksource_32k.mult, clocksource_32k.shift); 172 clocksource_32k.mult, clocksource_32k.shift);
173} 173}
174 174
175/**
176 * read_persistent_clock - Return time from a persistent clock.
177 *
178 * Reads the time from a source which isn't disabled during PM, the
179 * 32k sync timer. Convert the cycles elapsed since last read into
180 * nsecs and adds to a monotonically increasing timespec.
181 */
182static struct timespec persistent_ts;
183static cycles_t cycles, last_cycles;
184void read_persistent_clock(struct timespec *ts)
185{
186 unsigned long long nsecs;
187 cycles_t delta;
188 struct timespec *tsp = &persistent_ts;
189
190 last_cycles = cycles;
191 cycles = clocksource_32k.read(&clocksource_32k);
192 delta = cycles - last_cycles;
193
194 nsecs = clocksource_cyc2ns(delta,
195 clocksource_32k.mult, clocksource_32k.shift);
196
197 timespec_add_ns(tsp, nsecs);
198 *ts = *tsp;
199}
200
175static int __init omap_init_clocksource_32k(void) 201static int __init omap_init_clocksource_32k(void)
176{ 202{
177 static char err[] __initdata = KERN_ERR 203 static char err[] __initdata = KERN_ERR
diff --git a/arch/arm/plat-omap/cpu-omap.c b/arch/arm/plat-omap/cpu-omap.c
index f8ddbdd8b076..6d3d33360056 100644
--- a/arch/arm/plat-omap/cpu-omap.c
+++ b/arch/arm/plat-omap/cpu-omap.c
@@ -134,6 +134,7 @@ static int __init omap_cpu_init(struct cpufreq_policy *policy)
134 134
135static int omap_cpu_exit(struct cpufreq_policy *policy) 135static int omap_cpu_exit(struct cpufreq_policy *policy)
136{ 136{
137 clk_exit_cpufreq_table(&freq_table);
137 clk_put(mpu_clk); 138 clk_put(mpu_clk);
138 return 0; 139 return 0;
139} 140}
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c
index 09d82b3c66ce..728c64204184 100644
--- a/arch/arm/plat-omap/dma.c
+++ b/arch/arm/plat-omap/dma.c
@@ -1183,7 +1183,7 @@ void omap_dma_unlink_lch(int lch_head, int lch_queue)
1183 } 1183 }
1184 1184
1185 if ((dma_chan[lch_head].flags & OMAP_DMA_ACTIVE) || 1185 if ((dma_chan[lch_head].flags & OMAP_DMA_ACTIVE) ||
1186 (dma_chan[lch_head].flags & OMAP_DMA_ACTIVE)) { 1186 (dma_chan[lch_queue].flags & OMAP_DMA_ACTIVE)) {
1187 printk(KERN_ERR "omap_dma: You need to stop the DMA channels " 1187 printk(KERN_ERR "omap_dma: You need to stop the DMA channels "
1188 "before unlinking\n"); 1188 "before unlinking\n");
1189 dump_stack(); 1189 dump_stack();
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c
index 64f407ee0f4e..08ccf8922520 100644
--- a/arch/arm/plat-omap/dmtimer.c
+++ b/arch/arm/plat-omap/dmtimer.c
@@ -551,6 +551,19 @@ void omap_dm_timer_stop(struct omap_dm_timer *timer)
551 if (l & OMAP_TIMER_CTRL_ST) { 551 if (l & OMAP_TIMER_CTRL_ST) {
552 l &= ~0x1; 552 l &= ~0x1;
553 omap_dm_timer_write_reg(timer, OMAP_TIMER_CTRL_REG, l); 553 omap_dm_timer_write_reg(timer, OMAP_TIMER_CTRL_REG, l);
554#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) || \
555 defined(CONFIG_ARCH_OMAP4)
556 /* Readback to make sure write has completed */
557 omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG);
558 /*
559 * Wait for functional clock period x 3.5 to make sure that
560 * timer is stopped
561 */
562 udelay(3500000 / clk_get_rate(timer->fclk) + 1);
563 /* Ack possibly pending interrupt */
564 omap_dm_timer_write_reg(timer, OMAP_TIMER_STAT_REG,
565 OMAP_TIMER_INT_OVERFLOW);
566#endif
554 } 567 }
555} 568}
556EXPORT_SYMBOL_GPL(omap_dm_timer_stop); 569EXPORT_SYMBOL_GPL(omap_dm_timer_stop);
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c
index 04846811d0aa..d2422c766cca 100644
--- a/arch/arm/plat-omap/gpio.c
+++ b/arch/arm/plat-omap/gpio.c
@@ -192,6 +192,7 @@ struct gpio_bank {
192 u32 saved_risingdetect; 192 u32 saved_risingdetect;
193#endif 193#endif
194 u32 level_mask; 194 u32 level_mask;
195 u32 toggle_mask;
195 spinlock_t lock; 196 spinlock_t lock;
196 struct gpio_chip chip; 197 struct gpio_chip chip;
197 struct clk *dbck; 198 struct clk *dbck;
@@ -749,6 +750,44 @@ static inline void set_24xx_gpio_triggering(struct gpio_bank *bank, int gpio,
749} 750}
750#endif 751#endif
751 752
753#ifdef CONFIG_ARCH_OMAP1
754/*
755 * This only applies to chips that can't do both rising and falling edge
756 * detection at once. For all other chips, this function is a noop.
757 */
758static void _toggle_gpio_edge_triggering(struct gpio_bank *bank, int gpio)
759{
760 void __iomem *reg = bank->base;
761 u32 l = 0;
762
763 switch (bank->method) {
764 case METHOD_MPUIO:
765 reg += OMAP_MPUIO_GPIO_INT_EDGE;
766 break;
767#ifdef CONFIG_ARCH_OMAP15XX
768 case METHOD_GPIO_1510:
769 reg += OMAP1510_GPIO_INT_CONTROL;
770 break;
771#endif
772#if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850)
773 case METHOD_GPIO_7XX:
774 reg += OMAP7XX_GPIO_INT_CONTROL;
775 break;
776#endif
777 default:
778 return;
779 }
780
781 l = __raw_readl(reg);
782 if ((l >> gpio) & 1)
783 l &= ~(1 << gpio);
784 else
785 l |= 1 << gpio;
786
787 __raw_writel(l, reg);
788}
789#endif
790
752static int _set_gpio_triggering(struct gpio_bank *bank, int gpio, int trigger) 791static int _set_gpio_triggering(struct gpio_bank *bank, int gpio, int trigger)
753{ 792{
754 void __iomem *reg = bank->base; 793 void __iomem *reg = bank->base;
@@ -759,6 +798,8 @@ static int _set_gpio_triggering(struct gpio_bank *bank, int gpio, int trigger)
759 case METHOD_MPUIO: 798 case METHOD_MPUIO:
760 reg += OMAP_MPUIO_GPIO_INT_EDGE; 799 reg += OMAP_MPUIO_GPIO_INT_EDGE;
761 l = __raw_readl(reg); 800 l = __raw_readl(reg);
801 if (trigger & IRQ_TYPE_EDGE_BOTH)
802 bank->toggle_mask |= 1 << gpio;
762 if (trigger & IRQ_TYPE_EDGE_RISING) 803 if (trigger & IRQ_TYPE_EDGE_RISING)
763 l |= 1 << gpio; 804 l |= 1 << gpio;
764 else if (trigger & IRQ_TYPE_EDGE_FALLING) 805 else if (trigger & IRQ_TYPE_EDGE_FALLING)
@@ -771,6 +812,8 @@ static int _set_gpio_triggering(struct gpio_bank *bank, int gpio, int trigger)
771 case METHOD_GPIO_1510: 812 case METHOD_GPIO_1510:
772 reg += OMAP1510_GPIO_INT_CONTROL; 813 reg += OMAP1510_GPIO_INT_CONTROL;
773 l = __raw_readl(reg); 814 l = __raw_readl(reg);
815 if (trigger & IRQ_TYPE_EDGE_BOTH)
816 bank->toggle_mask |= 1 << gpio;
774 if (trigger & IRQ_TYPE_EDGE_RISING) 817 if (trigger & IRQ_TYPE_EDGE_RISING)
775 l |= 1 << gpio; 818 l |= 1 << gpio;
776 else if (trigger & IRQ_TYPE_EDGE_FALLING) 819 else if (trigger & IRQ_TYPE_EDGE_FALLING)
@@ -803,6 +846,8 @@ static int _set_gpio_triggering(struct gpio_bank *bank, int gpio, int trigger)
803 case METHOD_GPIO_7XX: 846 case METHOD_GPIO_7XX:
804 reg += OMAP7XX_GPIO_INT_CONTROL; 847 reg += OMAP7XX_GPIO_INT_CONTROL;
805 l = __raw_readl(reg); 848 l = __raw_readl(reg);
849 if (trigger & IRQ_TYPE_EDGE_BOTH)
850 bank->toggle_mask |= 1 << gpio;
806 if (trigger & IRQ_TYPE_EDGE_RISING) 851 if (trigger & IRQ_TYPE_EDGE_RISING)
807 l |= 1 << gpio; 852 l |= 1 << gpio;
808 else if (trigger & IRQ_TYPE_EDGE_FALLING) 853 else if (trigger & IRQ_TYPE_EDGE_FALLING)
@@ -1072,7 +1117,7 @@ static inline void _set_gpio_irqenable(struct gpio_bank *bank, int gpio, int ena
1072 */ 1117 */
1073static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable) 1118static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
1074{ 1119{
1075 unsigned long flags; 1120 unsigned long uninitialized_var(flags);
1076 1121
1077 switch (bank->method) { 1122 switch (bank->method) {
1078#ifdef CONFIG_ARCH_OMAP16XX 1123#ifdef CONFIG_ARCH_OMAP16XX
@@ -1217,7 +1262,7 @@ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
1217{ 1262{
1218 void __iomem *isr_reg = NULL; 1263 void __iomem *isr_reg = NULL;
1219 u32 isr; 1264 u32 isr;
1220 unsigned int gpio_irq; 1265 unsigned int gpio_irq, gpio_index;
1221 struct gpio_bank *bank; 1266 struct gpio_bank *bank;
1222 u32 retrigger = 0; 1267 u32 retrigger = 0;
1223 int unmasked = 0; 1268 int unmasked = 0;
@@ -1284,9 +1329,23 @@ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
1284 1329
1285 gpio_irq = bank->virtual_irq_start; 1330 gpio_irq = bank->virtual_irq_start;
1286 for (; isr != 0; isr >>= 1, gpio_irq++) { 1331 for (; isr != 0; isr >>= 1, gpio_irq++) {
1332 gpio_index = get_gpio_index(irq_to_gpio(gpio_irq));
1333
1287 if (!(isr & 1)) 1334 if (!(isr & 1))
1288 continue; 1335 continue;
1289 1336
1337#ifdef CONFIG_ARCH_OMAP1
1338 /*
1339 * Some chips can't respond to both rising and falling
1340 * at the same time. If this irq was requested with
1341 * both flags, we need to flip the ICR data for the IRQ
1342 * to respond to the IRQ for the opposite direction.
1343 * This will be indicated in the bank toggle_mask.
1344 */
1345 if (bank->toggle_mask & (1 << gpio_index))
1346 _toggle_gpio_edge_triggering(bank, gpio_index);
1347#endif
1348
1290 generic_handle_irq(gpio_irq); 1349 generic_handle_irq(gpio_irq);
1291 } 1350 }
1292 } 1351 }
diff --git a/arch/arm/plat-omap/include/plat/board.h b/arch/arm/plat-omap/include/plat/board.h
index 376ce18216ff..5cd622039da0 100644
--- a/arch/arm/plat-omap/include/plat/board.h
+++ b/arch/arm/plat-omap/include/plat/board.h
@@ -99,7 +99,6 @@ struct fb_info;
99struct omap_backlight_config { 99struct omap_backlight_config {
100 int default_intensity; 100 int default_intensity;
101 int (*set_power)(struct device *dev, int state); 101 int (*set_power)(struct device *dev, int state);
102 int (*check_fb)(struct fb_info *fb);
103}; 102};
104 103
105struct omap_fbmem_config { 104struct omap_fbmem_config {
diff --git a/arch/arm/plat-omap/include/plat/clock.h b/arch/arm/plat-omap/include/plat/clock.h
index 309b6d1dccdb..94fe2a0ce40a 100644
--- a/arch/arm/plat-omap/include/plat/clock.h
+++ b/arch/arm/plat-omap/include/plat/clock.h
@@ -119,6 +119,7 @@ struct clk_functions {
119 void (*clk_disable_unused)(struct clk *clk); 119 void (*clk_disable_unused)(struct clk *clk);
120#ifdef CONFIG_CPU_FREQ 120#ifdef CONFIG_CPU_FREQ
121 void (*clk_init_cpufreq_table)(struct cpufreq_frequency_table **); 121 void (*clk_init_cpufreq_table)(struct cpufreq_frequency_table **);
122 void (*clk_exit_cpufreq_table)(struct cpufreq_frequency_table **);
122#endif 123#endif
123}; 124};
124 125
@@ -135,6 +136,7 @@ extern unsigned long followparent_recalc(struct clk *clk);
135extern void clk_enable_init_clocks(void); 136extern void clk_enable_init_clocks(void);
136#ifdef CONFIG_CPU_FREQ 137#ifdef CONFIG_CPU_FREQ
137extern void clk_init_cpufreq_table(struct cpufreq_frequency_table **table); 138extern void clk_init_cpufreq_table(struct cpufreq_frequency_table **table);
139extern void clk_exit_cpufreq_table(struct cpufreq_frequency_table **table);
138#endif 140#endif
139 141
140extern const struct clkops clkops_null; 142extern const struct clkops clkops_null;
diff --git a/arch/arm/plat-omap/include/plat/control.h b/arch/arm/plat-omap/include/plat/control.h
index 2ae884378638..a745d62fad0d 100644
--- a/arch/arm/plat-omap/include/plat/control.h
+++ b/arch/arm/plat-omap/include/plat/control.h
@@ -147,7 +147,7 @@
147#define OMAP343X_CONTROL_IVA2_BOOTADDR (OMAP2_CONTROL_GENERAL + 0x0190) 147#define OMAP343X_CONTROL_IVA2_BOOTADDR (OMAP2_CONTROL_GENERAL + 0x0190)
148#define OMAP343X_CONTROL_IVA2_BOOTMOD (OMAP2_CONTROL_GENERAL + 0x0194) 148#define OMAP343X_CONTROL_IVA2_BOOTMOD (OMAP2_CONTROL_GENERAL + 0x0194)
149#define OMAP343X_CONTROL_DEBOBS(i) (OMAP2_CONTROL_GENERAL + 0x01B0 \ 149#define OMAP343X_CONTROL_DEBOBS(i) (OMAP2_CONTROL_GENERAL + 0x01B0 \
150 + ((i) >> 1) * 4 + (!(i) & 1) * 2) 150 + ((i) >> 1) * 4 + (!((i) & 1)) * 2)
151#define OMAP343X_CONTROL_PROG_IO0 (OMAP2_CONTROL_GENERAL + 0x01D4) 151#define OMAP343X_CONTROL_PROG_IO0 (OMAP2_CONTROL_GENERAL + 0x01D4)
152#define OMAP343X_CONTROL_PROG_IO1 (OMAP2_CONTROL_GENERAL + 0x01D8) 152#define OMAP343X_CONTROL_PROG_IO1 (OMAP2_CONTROL_GENERAL + 0x01D8)
153#define OMAP343X_CONTROL_DSS_DPLL_SPREADING (OMAP2_CONTROL_GENERAL + 0x01E0) 153#define OMAP343X_CONTROL_DSS_DPLL_SPREADING (OMAP2_CONTROL_GENERAL + 0x01E0)
diff --git a/arch/arm/plat-omap/include/plat/cpu.h b/arch/arm/plat-omap/include/plat/cpu.h
index 9a028bdebb06..a162f585b1e3 100644
--- a/arch/arm/plat-omap/include/plat/cpu.h
+++ b/arch/arm/plat-omap/include/plat/cpu.h
@@ -434,6 +434,7 @@ IS_OMAP_TYPE(3517, 0x3517)
434#define OMAP3430_REV_ES2_1 0x34302034 434#define OMAP3430_REV_ES2_1 0x34302034
435#define OMAP3430_REV_ES3_0 0x34303034 435#define OMAP3430_REV_ES3_0 0x34303034
436#define OMAP3430_REV_ES3_1 0x34304034 436#define OMAP3430_REV_ES3_1 0x34304034
437#define OMAP3430_REV_ES3_1_2 0x34305034
437 438
438#define OMAP3630_REV_ES1_0 0x36300034 439#define OMAP3630_REV_ES1_0 0x36300034
439 440
diff --git a/arch/arm/plat-omap/include/plat/io.h b/arch/arm/plat-omap/include/plat/io.h
index 7e5319f907d1..a3e7b471bcba 100644
--- a/arch/arm/plat-omap/include/plat/io.h
+++ b/arch/arm/plat-omap/include/plat/io.h
@@ -122,16 +122,21 @@
122#define OMAP243X_SMS_VIRT (OMAP243X_SMS_PHYS + OMAP2_L3_IO_OFFSET) 122#define OMAP243X_SMS_VIRT (OMAP243X_SMS_PHYS + OMAP2_L3_IO_OFFSET)
123#define OMAP243X_SMS_SIZE SZ_1M 123#define OMAP243X_SMS_SIZE SZ_1M
124 124
125/* DSP */ 125/* 2420 IVA */
126#define DSP_MEM_24XX_PHYS OMAP2420_DSP_MEM_BASE /* 0x58000000 */ 126#define DSP_MEM_2420_PHYS OMAP2420_DSP_MEM_BASE
127#define DSP_MEM_24XX_VIRT 0xe0000000 127 /* 0x58000000 --> 0xfc100000 */
128#define DSP_MEM_24XX_SIZE 0x28000 128#define DSP_MEM_2420_VIRT 0xfc100000
129#define DSP_IPI_24XX_PHYS OMAP2420_DSP_IPI_BASE /* 0x59000000 */ 129#define DSP_MEM_2420_SIZE 0x28000
130#define DSP_IPI_24XX_VIRT 0xe1000000 130#define DSP_IPI_2420_PHYS OMAP2420_DSP_IPI_BASE
131#define DSP_IPI_24XX_SIZE SZ_4K 131 /* 0x59000000 --> 0xfc128000 */
132#define DSP_MMU_24XX_PHYS OMAP2420_DSP_MMU_BASE /* 0x5a000000 */ 132#define DSP_IPI_2420_VIRT 0xfc128000
133#define DSP_MMU_24XX_VIRT 0xe2000000 133#define DSP_IPI_2420_SIZE SZ_4K
134#define DSP_MMU_24XX_SIZE SZ_4K 134#define DSP_MMU_2420_PHYS OMAP2420_DSP_MMU_BASE
135 /* 0x5a000000 --> 0xfc129000 */
136#define DSP_MMU_2420_VIRT 0xfc129000
137#define DSP_MMU_2420_SIZE SZ_4K
138
139/* 2430 IVA2.1 - currently unmapped */
135 140
136/* 141/*
137 * ---------------------------------------------------------------------------- 142 * ----------------------------------------------------------------------------
@@ -182,16 +187,7 @@
182#define OMAP343X_SDRC_VIRT (OMAP343X_SDRC_PHYS + OMAP2_L3_IO_OFFSET) 187#define OMAP343X_SDRC_VIRT (OMAP343X_SDRC_PHYS + OMAP2_L3_IO_OFFSET)
183#define OMAP343X_SDRC_SIZE SZ_1M 188#define OMAP343X_SDRC_SIZE SZ_1M
184 189
185/* DSP */ 190/* 3430 IVA - currently unmapped */
186#define DSP_MEM_34XX_PHYS OMAP34XX_DSP_MEM_BASE /* 0x58000000 */
187#define DSP_MEM_34XX_VIRT 0xe0000000
188#define DSP_MEM_34XX_SIZE 0x28000
189#define DSP_IPI_34XX_PHYS OMAP34XX_DSP_IPI_BASE /* 0x59000000 */
190#define DSP_IPI_34XX_VIRT 0xe1000000
191#define DSP_IPI_34XX_SIZE SZ_4K
192#define DSP_MMU_34XX_PHYS OMAP34XX_DSP_MMU_BASE /* 0x5a000000 */
193#define DSP_MMU_34XX_VIRT 0xe2000000
194#define DSP_MMU_34XX_SIZE SZ_4K
195 191
196/* 192/*
197 * ---------------------------------------------------------------------------- 193 * ----------------------------------------------------------------------------
diff --git a/arch/arm/plat-omap/include/plat/irqs.h b/arch/arm/plat-omap/include/plat/irqs.h
index 97d6c50c3dcb..c0ab7c80f72e 100644
--- a/arch/arm/plat-omap/include/plat/irqs.h
+++ b/arch/arm/plat-omap/include/plat/irqs.h
@@ -499,6 +499,9 @@ extern void omap_init_irq(void);
499extern int omap_irq_pending(void); 499extern int omap_irq_pending(void);
500void omap_intc_save_context(void); 500void omap_intc_save_context(void);
501void omap_intc_restore_context(void); 501void omap_intc_restore_context(void);
502void omap3_intc_suspend(void);
503void omap3_intc_prepare_idle(void);
504void omap3_intc_resume_idle(void);
502#endif 505#endif
503 506
504#include <mach/hardware.h> 507#include <mach/hardware.h>
diff --git a/arch/arm/plat-omap/include/plat/mux.h b/arch/arm/plat-omap/include/plat/mux.h
index 8f069cc80350..692c90e89ac3 100644
--- a/arch/arm/plat-omap/include/plat/mux.h
+++ b/arch/arm/plat-omap/include/plat/mux.h
@@ -183,6 +183,14 @@ enum omap7xx_index {
183 /* I2C */ 183 /* I2C */
184 I2C_7XX_SCL, 184 I2C_7XX_SCL,
185 I2C_7XX_SDA, 185 I2C_7XX_SDA,
186
187 /* SPI */
188 SPI_7XX_1,
189 SPI_7XX_2,
190 SPI_7XX_3,
191 SPI_7XX_4,
192 SPI_7XX_5,
193 SPI_7XX_6,
186}; 194};
187 195
188enum omap1xxx_index { 196enum omap1xxx_index {
diff --git a/arch/arm/plat-omap/include/plat/omap7xx.h b/arch/arm/plat-omap/include/plat/omap7xx.h
index 53f52414b0e9..48e4757e1e30 100644
--- a/arch/arm/plat-omap/include/plat/omap7xx.h
+++ b/arch/arm/plat-omap/include/plat/omap7xx.h
@@ -46,6 +46,9 @@
46#define OMAP7XX_DSPREG_SIZE SZ_128K 46#define OMAP7XX_DSPREG_SIZE SZ_128K
47#define OMAP7XX_DSPREG_START 0xE1000000 47#define OMAP7XX_DSPREG_START 0xE1000000
48 48
49#define OMAP7XX_SPI1_BASE 0xfffc0800
50#define OMAP7XX_SPI2_BASE 0xfffc1000
51
49/* 52/*
50 * ---------------------------------------------------------------------------- 53 * ----------------------------------------------------------------------------
51 * OMAP7XX specific configuration registers 54 * OMAP7XX specific configuration registers
diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h b/arch/arm/plat-omap/include/plat/omap_hwmod.h
index 007935a921ea..33933256a226 100644
--- a/arch/arm/plat-omap/include/plat/omap_hwmod.h
+++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h
@@ -227,6 +227,7 @@ struct omap_hwmod_ocp_if {
227#define SYSC_HAS_SIDLEMODE (1 << 5) 227#define SYSC_HAS_SIDLEMODE (1 << 5)
228#define SYSC_HAS_MIDLEMODE (1 << 6) 228#define SYSC_HAS_MIDLEMODE (1 << 6)
229#define SYSS_MISSING (1 << 7) 229#define SYSS_MISSING (1 << 7)
230#define SYSC_NO_CACHE (1 << 8) /* XXX SW flag, belongs elsewhere */
230 231
231/* omap_hwmod_sysconfig.clockact flags */ 232/* omap_hwmod_sysconfig.clockact flags */
232#define CLOCKACT_TEST_BOTH 0x0 233#define CLOCKACT_TEST_BOTH 0x0
diff --git a/arch/arm/plat-omap/io.c b/arch/arm/plat-omap/io.c
index 11f5d7961c73..0cfd54f519c4 100644
--- a/arch/arm/plat-omap/io.c
+++ b/arch/arm/plat-omap/io.c
@@ -66,12 +66,12 @@ void __iomem *omap_ioremap(unsigned long p, size_t size, unsigned int type)
66 return XLATE(p, L4_24XX_PHYS, L4_24XX_VIRT); 66 return XLATE(p, L4_24XX_PHYS, L4_24XX_VIRT);
67 } 67 }
68 if (cpu_is_omap2420()) { 68 if (cpu_is_omap2420()) {
69 if (BETWEEN(p, DSP_MEM_24XX_PHYS, DSP_MEM_24XX_SIZE)) 69 if (BETWEEN(p, DSP_MEM_2420_PHYS, DSP_MEM_2420_SIZE))
70 return XLATE(p, DSP_MEM_24XX_PHYS, DSP_MEM_24XX_VIRT); 70 return XLATE(p, DSP_MEM_2420_PHYS, DSP_MEM_2420_VIRT);
71 if (BETWEEN(p, DSP_IPI_24XX_PHYS, DSP_IPI_24XX_SIZE)) 71 if (BETWEEN(p, DSP_IPI_2420_PHYS, DSP_IPI_2420_SIZE))
72 return XLATE(p, DSP_IPI_24XX_PHYS, DSP_IPI_24XX_SIZE); 72 return XLATE(p, DSP_IPI_2420_PHYS, DSP_IPI_2420_SIZE);
73 if (BETWEEN(p, DSP_MMU_24XX_PHYS, DSP_MMU_24XX_SIZE)) 73 if (BETWEEN(p, DSP_MMU_2420_PHYS, DSP_MMU_2420_SIZE))
74 return XLATE(p, DSP_MMU_24XX_PHYS, DSP_MMU_24XX_VIRT); 74 return XLATE(p, DSP_MMU_2420_PHYS, DSP_MMU_2420_VIRT);
75 } 75 }
76 if (cpu_is_omap2430()) { 76 if (cpu_is_omap2430()) {
77 if (BETWEEN(p, L4_WK_243X_PHYS, L4_WK_243X_SIZE)) 77 if (BETWEEN(p, L4_WK_243X_PHYS, L4_WK_243X_SIZE))
diff --git a/arch/arm/plat-omap/iommu.c b/arch/arm/plat-omap/iommu.c
index c0ff1e39d893..463d6386aff2 100644
--- a/arch/arm/plat-omap/iommu.c
+++ b/arch/arm/plat-omap/iommu.c
@@ -827,7 +827,7 @@ EXPORT_SYMBOL_GPL(iommu_get);
827 **/ 827 **/
828void iommu_put(struct iommu *obj) 828void iommu_put(struct iommu *obj)
829{ 829{
830 if (!obj && IS_ERR(obj)) 830 if (!obj || IS_ERR(obj))
831 return; 831 return;
832 832
833 mutex_lock(&obj->iommu_lock); 833 mutex_lock(&obj->iommu_lock);
diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c
index 2cc1cc328bac..f75767278fc3 100644
--- a/arch/arm/plat-omap/mcbsp.c
+++ b/arch/arm/plat-omap/mcbsp.c
@@ -436,7 +436,7 @@ int omap_mcbsp_request(unsigned int id)
436 dev_err(mcbsp->dev, "Unable to request TX IRQ %d " 436 dev_err(mcbsp->dev, "Unable to request TX IRQ %d "
437 "for McBSP%d\n", mcbsp->tx_irq, 437 "for McBSP%d\n", mcbsp->tx_irq,
438 mcbsp->id); 438 mcbsp->id);
439 return err; 439 goto error;
440 } 440 }
441 441
442 init_completion(&mcbsp->rx_irq_completion); 442 init_completion(&mcbsp->rx_irq_completion);
@@ -446,12 +446,26 @@ int omap_mcbsp_request(unsigned int id)
446 dev_err(mcbsp->dev, "Unable to request RX IRQ %d " 446 dev_err(mcbsp->dev, "Unable to request RX IRQ %d "
447 "for McBSP%d\n", mcbsp->rx_irq, 447 "for McBSP%d\n", mcbsp->rx_irq,
448 mcbsp->id); 448 mcbsp->id);
449 free_irq(mcbsp->tx_irq, (void *)mcbsp); 449 goto tx_irq;
450 return err;
451 } 450 }
452 } 451 }
453 452
454 return 0; 453 return 0;
454tx_irq:
455 free_irq(mcbsp->tx_irq, (void *)mcbsp);
456error:
457 if (mcbsp->pdata && mcbsp->pdata->ops && mcbsp->pdata->ops->free)
458 mcbsp->pdata->ops->free(id);
459
460 /* Do procedure specific to omap34xx arch, if applicable */
461 omap34xx_mcbsp_free(mcbsp);
462
463 clk_disable(mcbsp->fclk);
464 clk_disable(mcbsp->iclk);
465
466 mcbsp->free = 1;
467
468 return err;
455} 469}
456EXPORT_SYMBOL(omap_mcbsp_request); 470EXPORT_SYMBOL(omap_mcbsp_request);
457 471
diff --git a/arch/arm/plat-omap/omap_device.c b/arch/arm/plat-omap/omap_device.c
index 1e5648d3e3d8..2ed72013c2e2 100644
--- a/arch/arm/plat-omap/omap_device.c
+++ b/arch/arm/plat-omap/omap_device.c
@@ -89,16 +89,6 @@
89#define USE_WAKEUP_LAT 0 89#define USE_WAKEUP_LAT 0
90#define IGNORE_WAKEUP_LAT 1 90#define IGNORE_WAKEUP_LAT 1
91 91
92/* XXX this should be moved into a separate file */
93#if defined(CONFIG_ARCH_OMAP2420)
94# define OMAP_32KSYNCT_BASE 0x48004000
95#elif defined(CONFIG_ARCH_OMAP2430)
96# define OMAP_32KSYNCT_BASE 0x49020000
97#elif defined(CONFIG_ARCH_OMAP3430)
98# define OMAP_32KSYNCT_BASE 0x48320000
99#else
100# error Unknown OMAP device
101#endif
102 92
103/* Private functions */ 93/* Private functions */
104 94
diff --git a/arch/arm/plat-orion/pcie.c b/arch/arm/plat-orion/pcie.c
index d41d41d78ad9..54c84a492a0f 100644
--- a/arch/arm/plat-orion/pcie.c
+++ b/arch/arm/plat-orion/pcie.c
@@ -133,6 +133,12 @@ static void __init orion_pcie_setup_wins(void __iomem *base,
133 } 133 }
134 134
135 /* 135 /*
136 * Round up 'size' to the nearest power of two.
137 */
138 if ((size & (size - 1)) != 0)
139 size = 1 << fls(size);
140
141 /*
136 * Setup BAR[1] to all DRAM banks. 142 * Setup BAR[1] to all DRAM banks.
137 */ 143 */
138 writel(dram->cs[0].base, base + PCIE_BAR_LO_OFF(1)); 144 writel(dram->cs[0].base, base + PCIE_BAR_LO_OFF(1));
diff --git a/arch/arm/plat-pxa/pwm.c b/arch/arm/plat-pxa/pwm.c
index a9eabdcfa163..51dc5c8106c0 100644
--- a/arch/arm/plat-pxa/pwm.c
+++ b/arch/arm/plat-pxa/pwm.c
@@ -204,14 +204,14 @@ static int __devinit pwm_probe(struct platform_device *pdev)
204 goto err_free_clk; 204 goto err_free_clk;
205 } 205 }
206 206
207 r = request_mem_region(r->start, r->end - r->start + 1, pdev->name); 207 r = request_mem_region(r->start, resource_size(r), pdev->name);
208 if (r == NULL) { 208 if (r == NULL) {
209 dev_err(&pdev->dev, "failed to request memory resource\n"); 209 dev_err(&pdev->dev, "failed to request memory resource\n");
210 ret = -EBUSY; 210 ret = -EBUSY;
211 goto err_free_clk; 211 goto err_free_clk;
212 } 212 }
213 213
214 pwm->mmio_base = ioremap(r->start, r->end - r->start + 1); 214 pwm->mmio_base = ioremap(r->start, resource_size(r));
215 if (pwm->mmio_base == NULL) { 215 if (pwm->mmio_base == NULL) {
216 dev_err(&pdev->dev, "failed to ioremap() registers\n"); 216 dev_err(&pdev->dev, "failed to ioremap() registers\n");
217 ret = -ENODEV; 217 ret = -ENODEV;
@@ -241,7 +241,7 @@ static int __devinit pwm_probe(struct platform_device *pdev)
241 return 0; 241 return 0;
242 242
243err_free_mem: 243err_free_mem:
244 release_mem_region(r->start, r->end - r->start + 1); 244 release_mem_region(r->start, resource_size(r));
245err_free_clk: 245err_free_clk:
246 clk_put(pwm->clk); 246 clk_put(pwm->clk);
247err_free: 247err_free:
@@ -271,7 +271,7 @@ static int __devexit pwm_remove(struct platform_device *pdev)
271 iounmap(pwm->mmio_base); 271 iounmap(pwm->mmio_base);
272 272
273 r = platform_get_resource(pdev, IORESOURCE_MEM, 0); 273 r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
274 release_mem_region(r->start, r->end - r->start + 1); 274 release_mem_region(r->start, resource_size(r));
275 275
276 clk_put(pwm->clk); 276 clk_put(pwm->clk);
277 kfree(pwm); 277 kfree(pwm);
diff --git a/arch/arm/plat-s3c/dev-nand.c b/arch/arm/plat-s3c/dev-nand.c
index e771e77dcd54..a52fb6cf618f 100644
--- a/arch/arm/plat-s3c/dev-nand.c
+++ b/arch/arm/plat-s3c/dev-nand.c
@@ -58,8 +58,8 @@ static int __init s3c_nand_copy_set(struct s3c2410_nand_set *set)
58 return -ENOMEM; 58 return -ENOMEM;
59 } 59 }
60 60
61 size = sizeof(int) * set->nr_chips; 61 if (set->nr_map && set->nr_chips) {
62 if (size) { 62 size = sizeof(int) * set->nr_chips;
63 ptr = kmemdup(set->nr_map, size, GFP_KERNEL); 63 ptr = kmemdup(set->nr_map, size, GFP_KERNEL);
64 set->nr_map = ptr; 64 set->nr_map = ptr;
65 65
@@ -114,7 +114,7 @@ void __init s3c_nand_set_platdata(struct s3c2410_platform_nand *nand)
114 114
115 for (i = 0; i < npd->nr_sets; i++) { 115 for (i = 0; i < npd->nr_sets; i++) {
116 ret = s3c_nand_copy_set(to); 116 ret = s3c_nand_copy_set(to);
117 if (!ret) { 117 if (ret) {
118 printk(KERN_ERR "%s: failed to copy set %d\n", 118 printk(KERN_ERR "%s: failed to copy set %d\n",
119 __func__, i); 119 __func__, i);
120 return; 120 return;
@@ -122,6 +122,8 @@ void __init s3c_nand_set_platdata(struct s3c2410_platform_nand *nand)
122 to++; 122 to++;
123 } 123 }
124 } 124 }
125
126 s3c_device_nand.dev.platform_data = npd;
125} 127}
126 128
127EXPORT_SYMBOL_GPL(s3c_nand_set_platdata); 129EXPORT_SYMBOL_GPL(s3c_nand_set_platdata);
diff --git a/arch/arm/plat-s3c/include/plat/devs.h b/arch/arm/plat-s3c/include/plat/devs.h
index 932cbbbb4273..c1c20b023917 100644
--- a/arch/arm/plat-s3c/include/plat/devs.h
+++ b/arch/arm/plat-s3c/include/plat/devs.h
@@ -31,6 +31,7 @@ extern struct platform_device s3c64xx_device_iisv4;
31extern struct platform_device s3c64xx_device_pcm0; 31extern struct platform_device s3c64xx_device_pcm0;
32extern struct platform_device s3c64xx_device_pcm1; 32extern struct platform_device s3c64xx_device_pcm1;
33 33
34extern struct platform_device s3c_device_ts;
34extern struct platform_device s3c_device_fb; 35extern struct platform_device s3c_device_fb;
35extern struct platform_device s3c_device_usb; 36extern struct platform_device s3c_device_usb;
36extern struct platform_device s3c_device_lcd; 37extern struct platform_device s3c_device_lcd;
diff --git a/arch/arm/plat-s3c24xx/devs.c b/arch/arm/plat-s3c24xx/devs.c
index f52a92ce8dda..7f686a31e672 100644
--- a/arch/arm/plat-s3c24xx/devs.c
+++ b/arch/arm/plat-s3c24xx/devs.c
@@ -37,6 +37,8 @@
37#include <plat/cpu.h> 37#include <plat/cpu.h>
38#include <plat/regs-spi.h> 38#include <plat/regs-spi.h>
39 39
40#include <mach/ts.h>
41
40/* Serial port registrations */ 42/* Serial port registrations */
41 43
42static struct resource s3c2410_uart0_resource[] = { 44static struct resource s3c2410_uart0_resource[] = {
@@ -182,6 +184,22 @@ void __init s3c24xx_fb_set_platdata(struct s3c2410fb_mach_info *pd)
182 } 184 }
183} 185}
184 186
187/* Touchscreen */
188struct platform_device s3c_device_ts = {
189 .name = "s3c2410-ts",
190 .id = -1,
191};
192EXPORT_SYMBOL(s3c_device_ts);
193
194static struct s3c2410_ts_mach_info s3c2410ts_info;
195
196void __init s3c24xx_ts_set_platdata(struct s3c2410_ts_mach_info *hard_s3c2410ts_info)
197{
198 memcpy(&s3c2410ts_info, hard_s3c2410ts_info, sizeof(struct s3c2410_ts_mach_info));
199 s3c_device_ts.dev.platform_data = &s3c2410ts_info;
200}
201EXPORT_SYMBOL(s3c24xx_ts_set_platdata);
202
185/* USB Device (Gadget)*/ 203/* USB Device (Gadget)*/
186 204
187static struct resource s3c_usbgadget_resource[] = { 205static struct resource s3c_usbgadget_resource[] = {
diff --git a/arch/arm/plat-s3c24xx/s3c244x.c b/arch/arm/plat-s3c24xx/s3c244x.c
index 1364317d421e..12623a474b54 100644
--- a/arch/arm/plat-s3c24xx/s3c244x.c
+++ b/arch/arm/plat-s3c24xx/s3c244x.c
@@ -70,6 +70,7 @@ void __init s3c244x_map_io(void)
70 s3c_device_sdi.name = "s3c2440-sdi"; 70 s3c_device_sdi.name = "s3c2440-sdi";
71 s3c_device_i2c0.name = "s3c2440-i2c"; 71 s3c_device_i2c0.name = "s3c2440-i2c";
72 s3c_device_nand.name = "s3c2440-nand"; 72 s3c_device_nand.name = "s3c2440-nand";
73 s3c_device_ts.name = "s3c2440-ts";
73 s3c_device_usbgadget.name = "s3c2440-usbgadget"; 74 s3c_device_usbgadget.name = "s3c2440-usbgadget";
74} 75}
75 76
diff --git a/arch/arm/plat-s3c64xx/s3c6400-clock.c b/arch/arm/plat-s3c64xx/s3c6400-clock.c
index 6ffa21eb1b91..ffd56deb9e81 100644
--- a/arch/arm/plat-s3c64xx/s3c6400-clock.c
+++ b/arch/arm/plat-s3c64xx/s3c6400-clock.c
@@ -46,6 +46,7 @@ static struct clk clk_ext_xtal_mux = {
46#define clk_fin_epll clk_ext_xtal_mux 46#define clk_fin_epll clk_ext_xtal_mux
47 47
48#define clk_fout_mpll clk_mpll 48#define clk_fout_mpll clk_mpll
49#define clk_fout_epll clk_epll
49 50
50struct clk_sources { 51struct clk_sources {
51 unsigned int nr_sources; 52 unsigned int nr_sources;
@@ -88,11 +89,6 @@ static struct clksrc_clk clk_mout_apll = {
88 .sources = &clk_src_apll, 89 .sources = &clk_src_apll,
89}; 90};
90 91
91static struct clk clk_fout_epll = {
92 .name = "fout_epll",
93 .id = -1,
94};
95
96static struct clk *clk_src_epll_list[] = { 92static struct clk *clk_src_epll_list[] = {
97 [0] = &clk_fin_epll, 93 [0] = &clk_fin_epll,
98 [1] = &clk_fout_epll, 94 [1] = &clk_fout_epll,
@@ -715,7 +711,6 @@ static struct clk *clks[] __initdata = {
715 &clk_iis_cd1, 711 &clk_iis_cd1,
716 &clk_pcm_cd, 712 &clk_pcm_cd,
717 &clk_mout_epll.clk, 713 &clk_mout_epll.clk,
718 &clk_fout_epll,
719 &clk_mout_mpll.clk, 714 &clk_mout_mpll.clk,
720 &clk_dout_mpll, 715 &clk_dout_mpll,
721 &clk_mmc0.clk, 716 &clk_mmc0.clk,
@@ -760,7 +755,4 @@ void __init s3c6400_register_clocks(unsigned armclk_divlimit)
760 clkp->name, ret); 755 clkp->name, ret);
761 } 756 }
762 } 757 }
763
764 clk_mpll.parent = &clk_mout_mpll.clk;
765 clk_epll.parent = &clk_mout_epll.clk;
766} 758}
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types
index c3a74ce24ef6..31c2f4c30a95 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: Wed Dec 16 20:06:34 2009 15# Last update: Sat Feb 20 14:16:15 2010
16# 16#
17# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number 17# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
18# 18#
@@ -2257,7 +2257,7 @@ oratisalog MACH_ORATISALOG ORATISALOG 2268
2257oratismadi MACH_ORATISMADI ORATISMADI 2269 2257oratismadi MACH_ORATISMADI ORATISMADI 2269
2258oratisot16 MACH_ORATISOT16 ORATISOT16 2270 2258oratisot16 MACH_ORATISOT16 ORATISOT16 2270
2259oratisdesk MACH_ORATISDESK ORATISDESK 2271 2259oratisdesk MACH_ORATISDESK ORATISDESK 2271
2260v2_ca9 MACH_V2P_CA9 V2P_CA9 2272 2260vexpress MACH_VEXPRESS VEXPRESS 2272
2261sintexo MACH_SINTEXO SINTEXO 2273 2261sintexo MACH_SINTEXO SINTEXO 2273
2262cm3389 MACH_CM3389 CM3389 2274 2262cm3389 MACH_CM3389 CM3389 2274
2263omap3_cio MACH_OMAP3_CIO OMAP3_CIO 2275 2263omap3_cio MACH_OMAP3_CIO OMAP3_CIO 2275
@@ -2536,6 +2536,7 @@ davinci_dm6467tevm MACH_DAVINCI_DM6467TEVM DAVINCI_DM6467TEVM 2548
2536c3ax03 MACH_C3AX03 C3AX03 2549 2536c3ax03 MACH_C3AX03 C3AX03 2549
2537mxt_td60 MACH_MXT_TD60 MXT_TD60 2550 2537mxt_td60 MACH_MXT_TD60 MXT_TD60 2550
2538esyx MACH_ESYX ESYX 2551 2538esyx MACH_ESYX ESYX 2551
2539dove_db2 MACH_DOVE_DB2 DOVE_DB2 2552
2539bulldog MACH_BULLDOG BULLDOG 2553 2540bulldog MACH_BULLDOG BULLDOG 2553
2540derell_me2000 MACH_DERELL_ME2000 DERELL_ME2000 2554 2541derell_me2000 MACH_DERELL_ME2000 DERELL_ME2000 2554
2541bcmring_base MACH_BCMRING_BASE BCMRING_BASE 2555 2542bcmring_base MACH_BCMRING_BASE BCMRING_BASE 2555
@@ -2555,6 +2556,7 @@ iseo MACH_ISEO ISEO 2568
2555cezanne MACH_CEZANNE CEZANNE 2569 2556cezanne MACH_CEZANNE CEZANNE 2569
2556lucca MACH_LUCCA LUCCA 2570 2557lucca MACH_LUCCA LUCCA 2570
2557supersmart MACH_SUPERSMART SUPERSMART 2571 2558supersmart MACH_SUPERSMART SUPERSMART 2571
2559arm11_board MACH_CS_MISANO CS_MISANO 2572
2558magnolia2 MACH_MAGNOLIA2 MAGNOLIA2 2573 2560magnolia2 MACH_MAGNOLIA2 MAGNOLIA2 2573
2559emxx MACH_EMXX EMXX 2574 2561emxx MACH_EMXX EMXX 2574
2560outlaw MACH_OUTLAW OUTLAW 2575 2562outlaw MACH_OUTLAW OUTLAW 2575
@@ -2578,3 +2580,101 @@ glacier MACH_GLACIER GLACIER 2592
2578phrazer_bulldog MACH_PHRAZER_BULLDOG PHRAZER_BULLDOG 2593 2580phrazer_bulldog MACH_PHRAZER_BULLDOG PHRAZER_BULLDOG 2593
2579omap3_bulldog MACH_OMAP3_BULLDOG OMAP3_BULLDOG 2594 2581omap3_bulldog MACH_OMAP3_BULLDOG OMAP3_BULLDOG 2594
2580pca101 MACH_PCA101 PCA101 2595 2582pca101 MACH_PCA101 PCA101 2595
2583buzzc MACH_BUZZC BUZZC 2596
2584sasie2 MACH_SASIE2 SASIE2 2597
2585davinci_cio MACH_DAVINCI_CIO DAVINCI_CIO 2598
2586smartmeter_dl MACH_SMARTMETER_DL SMARTMETER_DL 2599
2587wzl6410 MACH_WZL6410 WZL6410 2600
2588wzl6410m MACH_WZL6410M WZL6410M 2601
2589wzl6410f MACH_WZL6410F WZL6410F 2602
2590wzl6410i MACH_WZL6410I WZL6410I 2603
2591spacecom1 MACH_SPACECOM1 SPACECOM1 2604
2592pingu920 MACH_PINGU920 PINGU920 2605
2593bravoc MACH_BRAVOC BRAVOC 2606
2594cybo2440 MACH_CYBO2440 CYBO2440 2607
2595vdssw MACH_VDSSW VDSSW 2608
2596romulus MACH_ROMULUS ROMULUS 2609
2597omap_magic MACH_OMAP_MAGIC OMAP_MAGIC 2610
2598eltd100 MACH_ELTD100 ELTD100 2611
2599capc7117 MACH_CAPC7117 CAPC7117 2612
2600swan MACH_SWAN SWAN 2613
2601veu MACH_VEU VEU 2614
2602rm2 MACH_RM2 RM2 2615
2603tt2100 MACH_TT2100 TT2100 2616
2604venice MACH_VENICE VENICE 2617
2605pc7323 MACH_PC7323 PC7323 2618
2606masp MACH_MASP MASP 2619
2607fujitsu_tvstbsoc0 MACH_FUJITSU_TVSTBSOC FUJITSU_TVSTBSOC 2620
2608fujitsu_tvstbsoc1 MACH_FUJITSU_TVSTBSOC1 FUJITSU_TVSTBSOC1 2621
2609lexikon MACH_LEXIKON LEXIKON 2622
2610mini2440v2 MACH_MINI2440V2 MINI2440V2 2623
2611icontrol MACH_ICONTROL ICONTROL 2624
2612sheevad MACH_SHEEVAD SHEEVAD 2625
2613qsd8x50a_st1_1 MACH_QSD8X50A_ST1_1 QSD8X50A_ST1_1 2626
2614qsd8x50a_st1_5 MACH_QSD8X50A_ST1_5 QSD8X50A_ST1_5 2627
2615bee MACH_BEE BEE 2628
2616mx23evk MACH_MX23EVK MX23EVK 2629
2617ap4evb MACH_AP4EVB AP4EVB 2630
2618stockholm MACH_STOCKHOLM STOCKHOLM 2631
2619lpc_h3131 MACH_LPC_H3131 LPC_H3131 2632
2620stingray MACH_STINGRAY STINGRAY 2633
2621kraken MACH_KRAKEN KRAKEN 2634
2622gw2388 MACH_GW2388 GW2388 2635
2623jadecpu MACH_JADECPU JADECPU 2636
2624carlisle MACH_CARLISLE CARLISLE 2637
2625lux_sf9 MACH_LUX_SFT9 LUX_SFT9 2638
2626nemid_tb MACH_NEMID_TB NEMID_TB 2639
2627terrier MACH_TERRIER TERRIER 2640
2628turbot MACH_TURBOT TURBOT 2641
2629sanddab MACH_SANDDAB SANDDAB 2642
2630mx35_cicada MACH_MX35_CICADA MX35_CICADA 2643
2631ghi2703d MACH_GHI2703D GHI2703D 2644
2632lux_sfx9 MACH_LUX_SFX9 LUX_SFX9 2645
2633lux_sf9g MACH_LUX_SF9G LUX_SF9G 2646
2634lux_edk9 MACH_LUX_EDK9 LUX_EDK9 2647
2635hw90240 MACH_HW90240 HW90240 2648
2636dm365_leopard MACH_DM365_LEOPARD DM365_LEOPARD 2649
2637mityomapl138 MACH_MITYOMAPL138 MITYOMAPL138 2650
2638scat110 MACH_SCAT110 SCAT110 2651
2639acer_a1 MACH_ACER_A1 ACER_A1 2652
2640cmcontrol MACH_CMCONTROL CMCONTROL 2653
2641pelco_lamar MACH_PELCO_LAMAR PELCO_LAMAR 2654
2642rfp43 MACH_RFP43 RFP43 2655
2643sk86r0301 MACH_SK86R0301 SK86R0301 2656
2644ctpxa MACH_CTPXA CTPXA 2657
2645epb_arm9_a MACH_EPB_ARM9_A EPB_ARM9_A 2658
2646guruplug MACH_GURUPLUG GURUPLUG 2659
2647spear310 MACH_SPEAR310 SPEAR310 2660
2648spear320 MACH_SPEAR320 SPEAR320 2661
2649robotx MACH_ROBOTX ROBOTX 2662
2650lsxhl MACH_LSXHL LSXHL 2663
2651smartlite MACH_SMARTLITE SMARTLITE 2664
2652cws2 MACH_CWS2 CWS2 2665
2653m619 MACH_M619 M619 2666
2654smartview MACH_SMARTVIEW SMARTVIEW 2667
2655lsa_salsa MACH_LSA_SALSA LSA_SALSA 2668
2656kizbox MACH_KIZBOX KIZBOX 2669
2657htccharmer MACH_HTCCHARMER HTCCHARMER 2670
2658guf_neso_lt MACH_GUF_NESO_LT GUF_NESO_LT 2671
2659pm9g45 MACH_PM9G45 PM9G45 2672
2660htcpanther MACH_HTCPANTHER HTCPANTHER 2673
2661htcpanther_cdma MACH_HTCPANTHER_CDMA HTCPANTHER_CDMA 2674
2662reb01 MACH_REB01 REB01 2675
2663aquila MACH_AQUILA AQUILA 2676
2664spark_sls_hw2 MACH_SPARK_SLS_HW2 SPARK_SLS_HW2 2677
2665sheeva_esata MACH_ESATA_SHEEVAPLUG ESATA_SHEEVAPLUG 2678
2666surf7x30 MACH_SURF7X30 SURF7X30 2679
2667micro2440 MACH_MICRO2440 MICRO2440 2680
2668am2440 MACH_AM2440 AM2440 2681
2669tq2440 MACH_TQ2440 TQ2440 2682
2670lpc2478oem MACH_LPC2478OEM LPC2478OEM 2683
2671ak880x MACH_AK880X AK880X 2684
2672cobra3530 MACH_COBRA3530 COBRA3530 2685
2673pmppb MACH_PMPPB PMPPB 2686
2674u6715 MACH_U6715 U6715 2687
2675axar1500_sender MACH_AXAR1500_SENDER AXAR1500_SENDER 2688
2676g30_dvb MACH_G30_DVB G30_DVB 2689
2677vc088x MACH_VC088X VC088X 2690
2678mioa702 MACH_MIOA702 MIOA702 2691
2679hpmin MACH_HPMIN HPMIN 2692
2680ak880xak MACH_AK880XAK AK880XAK 2693
diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c
index f60a5400a25b..a63c4be99b36 100644
--- a/arch/arm/vfp/vfpmodule.c
+++ b/arch/arm/vfp/vfpmodule.c
@@ -197,10 +197,13 @@ static void vfp_raise_exceptions(u32 exceptions, u32 inst, u32 fpscr, struct pt_
197 } 197 }
198 198
199 /* 199 /*
200 * Update the FPSCR with the additional exception flags. 200 * If any of the status flags are set, update the FPSCR.
201 * Comparison instructions always return at least one of 201 * Comparison instructions always return at least one of
202 * these flags set. 202 * these flags set.
203 */ 203 */
204 if (exceptions & (FPSCR_N|FPSCR_Z|FPSCR_C|FPSCR_V))
205 fpscr &= ~(FPSCR_N|FPSCR_Z|FPSCR_C|FPSCR_V);
206
204 fpscr |= exceptions; 207 fpscr |= exceptions;
205 208
206 fmxr(FPSCR, fpscr); 209 fmxr(FPSCR, fpscr);
diff --git a/arch/avr32/mach-at32ap/at32ap700x.c b/arch/avr32/mach-at32ap/at32ap700x.c
index 1aa1ea5e9212..b13d1879e51b 100644
--- a/arch/avr32/mach-at32ap/at32ap700x.c
+++ b/arch/avr32/mach-at32ap/at32ap700x.c
@@ -1325,7 +1325,7 @@ struct platform_device *__init
1325at32_add_device_mci(unsigned int id, struct mci_platform_data *data) 1325at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
1326{ 1326{
1327 struct platform_device *pdev; 1327 struct platform_device *pdev;
1328 struct mci_dma_slave *slave; 1328 struct mci_dma_data *slave;
1329 u32 pioa_mask; 1329 u32 pioa_mask;
1330 u32 piob_mask; 1330 u32 piob_mask;
1331 1331
@@ -1344,7 +1344,9 @@ at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
1344 ARRAY_SIZE(atmel_mci0_resource))) 1344 ARRAY_SIZE(atmel_mci0_resource)))
1345 goto fail; 1345 goto fail;
1346 1346
1347 slave = kzalloc(sizeof(struct mci_dma_slave), GFP_KERNEL); 1347 slave = kzalloc(sizeof(struct mci_dma_data), GFP_KERNEL);
1348 if (!slave)
1349 goto fail;
1348 1350
1349 slave->sdata.dma_dev = &dw_dmac0_device.dev; 1351 slave->sdata.dma_dev = &dw_dmac0_device.dev;
1350 slave->sdata.reg_width = DW_DMA_SLAVE_WIDTH_32BIT; 1352 slave->sdata.reg_width = DW_DMA_SLAVE_WIDTH_32BIT;
@@ -1357,7 +1359,7 @@ at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
1357 1359
1358 if (platform_device_add_data(pdev, data, 1360 if (platform_device_add_data(pdev, data,
1359 sizeof(struct mci_platform_data))) 1361 sizeof(struct mci_platform_data)))
1360 goto fail; 1362 goto fail_free;
1361 1363
1362 /* CLK line is common to both slots */ 1364 /* CLK line is common to both slots */
1363 pioa_mask = 1 << 10; 1365 pioa_mask = 1 << 10;
@@ -1381,7 +1383,7 @@ at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
1381 /* Slot is unused */ 1383 /* Slot is unused */
1382 break; 1384 break;
1383 default: 1385 default:
1384 goto fail; 1386 goto fail_free;
1385 } 1387 }
1386 1388
1387 select_peripheral(PIOA, pioa_mask, PERIPH_A, 0); 1389 select_peripheral(PIOA, pioa_mask, PERIPH_A, 0);
@@ -1408,7 +1410,7 @@ at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
1408 break; 1410 break;
1409 default: 1411 default:
1410 if (!data->slot[0].bus_width) 1412 if (!data->slot[0].bus_width)
1411 goto fail; 1413 goto fail_free;
1412 1414
1413 data->slot[1].bus_width = 0; 1415 data->slot[1].bus_width = 0;
1414 break; 1416 break;
@@ -1419,9 +1421,10 @@ at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
1419 platform_device_add(pdev); 1421 platform_device_add(pdev);
1420 return pdev; 1422 return pdev;
1421 1423
1424fail_free:
1425 kfree(slave);
1422fail: 1426fail:
1423 data->dma_slave = NULL; 1427 data->dma_slave = NULL;
1424 kfree(slave);
1425 platform_device_put(pdev); 1428 platform_device_put(pdev);
1426 return NULL; 1429 return NULL;
1427} 1430}
diff --git a/arch/blackfin/include/asm/page.h b/arch/blackfin/include/asm/page.h
index 944a07c6cfd6..1d04e4078340 100644
--- a/arch/blackfin/include/asm/page.h
+++ b/arch/blackfin/include/asm/page.h
@@ -10,4 +10,9 @@
10#include <asm-generic/page.h> 10#include <asm-generic/page.h>
11#define MAP_NR(addr) (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT) 11#define MAP_NR(addr) (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT)
12 12
13#define VM_DATA_DEFAULT_FLAGS \
14 (VM_READ | VM_WRITE | \
15 ((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0 ) | \
16 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
17
13#endif 18#endif
diff --git a/arch/blackfin/kernel/kgdb.c b/arch/blackfin/kernel/kgdb.c
index f1036b6b9293..34c7c3ed2c9c 100644
--- a/arch/blackfin/kernel/kgdb.c
+++ b/arch/blackfin/kernel/kgdb.c
@@ -6,23 +6,9 @@
6 * Licensed under the GPL-2 or later. 6 * Licensed under the GPL-2 or later.
7 */ 7 */
8 8
9#include <linux/string.h>
10#include <linux/kernel.h>
11#include <linux/sched.h>
12#include <linux/smp.h>
13#include <linux/spinlock.h>
14#include <linux/delay.h>
15#include <linux/ptrace.h> /* for linux pt_regs struct */ 9#include <linux/ptrace.h> /* for linux pt_regs struct */
16#include <linux/kgdb.h> 10#include <linux/kgdb.h>
17#include <linux/console.h>
18#include <linux/init.h>
19#include <linux/errno.h>
20#include <linux/irq.h>
21#include <linux/uaccess.h> 11#include <linux/uaccess.h>
22#include <asm/system.h>
23#include <asm/traps.h>
24#include <asm/blackfin.h>
25#include <asm/dma.h>
26 12
27void pt_regs_to_gdb_regs(unsigned long *gdb_regs, struct pt_regs *regs) 13void pt_regs_to_gdb_regs(unsigned long *gdb_regs, struct pt_regs *regs)
28{ 14{
@@ -147,7 +133,7 @@ void gdb_regs_to_pt_regs(unsigned long *gdb_regs, struct pt_regs *regs)
147 regs->lb1 = gdb_regs[BFIN_LB1]; 133 regs->lb1 = gdb_regs[BFIN_LB1];
148 regs->usp = gdb_regs[BFIN_USP]; 134 regs->usp = gdb_regs[BFIN_USP];
149 regs->syscfg = gdb_regs[BFIN_SYSCFG]; 135 regs->syscfg = gdb_regs[BFIN_SYSCFG];
150 regs->retx = gdb_regs[BFIN_PC]; 136 regs->retx = gdb_regs[BFIN_RETX];
151 regs->retn = gdb_regs[BFIN_RETN]; 137 regs->retn = gdb_regs[BFIN_RETN];
152 regs->rete = gdb_regs[BFIN_RETE]; 138 regs->rete = gdb_regs[BFIN_RETE];
153 regs->pc = gdb_regs[BFIN_PC]; 139 regs->pc = gdb_regs[BFIN_PC];
@@ -424,182 +410,6 @@ struct kgdb_arch arch_kgdb_ops = {
424 .correct_hw_break = bfin_correct_hw_break, 410 .correct_hw_break = bfin_correct_hw_break,
425}; 411};
426 412
427static int hex(char ch)
428{
429 if ((ch >= 'a') && (ch <= 'f'))
430 return ch - 'a' + 10;
431 if ((ch >= '0') && (ch <= '9'))
432 return ch - '0';
433 if ((ch >= 'A') && (ch <= 'F'))
434 return ch - 'A' + 10;
435 return -1;
436}
437
438static int validate_memory_access_address(unsigned long addr, int size)
439{
440 if (size < 0 || addr == 0)
441 return -EFAULT;
442 return bfin_mem_access_type(addr, size);
443}
444
445static int bfin_probe_kernel_read(char *dst, char *src, int size)
446{
447 unsigned long lsrc = (unsigned long)src;
448 int mem_type;
449
450 mem_type = validate_memory_access_address(lsrc, size);
451 if (mem_type < 0)
452 return mem_type;
453
454 if (lsrc >= SYSMMR_BASE) {
455 if (size == 2 && lsrc % 2 == 0) {
456 u16 mmr = bfin_read16(src);
457 memcpy(dst, &mmr, sizeof(mmr));
458 return 0;
459 } else if (size == 4 && lsrc % 4 == 0) {
460 u32 mmr = bfin_read32(src);
461 memcpy(dst, &mmr, sizeof(mmr));
462 return 0;
463 }
464 } else {
465 switch (mem_type) {
466 case BFIN_MEM_ACCESS_CORE:
467 case BFIN_MEM_ACCESS_CORE_ONLY:
468 return probe_kernel_read(dst, src, size);
469 /* XXX: should support IDMA here with SMP */
470 case BFIN_MEM_ACCESS_DMA:
471 if (dma_memcpy(dst, src, size))
472 return 0;
473 break;
474 case BFIN_MEM_ACCESS_ITEST:
475 if (isram_memcpy(dst, src, size))
476 return 0;
477 break;
478 }
479 }
480
481 return -EFAULT;
482}
483
484static int bfin_probe_kernel_write(char *dst, char *src, int size)
485{
486 unsigned long ldst = (unsigned long)dst;
487 int mem_type;
488
489 mem_type = validate_memory_access_address(ldst, size);
490 if (mem_type < 0)
491 return mem_type;
492
493 if (ldst >= SYSMMR_BASE) {
494 if (size == 2 && ldst % 2 == 0) {
495 u16 mmr;
496 memcpy(&mmr, src, sizeof(mmr));
497 bfin_write16(dst, mmr);
498 return 0;
499 } else if (size == 4 && ldst % 4 == 0) {
500 u32 mmr;
501 memcpy(&mmr, src, sizeof(mmr));
502 bfin_write32(dst, mmr);
503 return 0;
504 }
505 } else {
506 switch (mem_type) {
507 case BFIN_MEM_ACCESS_CORE:
508 case BFIN_MEM_ACCESS_CORE_ONLY:
509 return probe_kernel_write(dst, src, size);
510 /* XXX: should support IDMA here with SMP */
511 case BFIN_MEM_ACCESS_DMA:
512 if (dma_memcpy(dst, src, size))
513 return 0;
514 break;
515 case BFIN_MEM_ACCESS_ITEST:
516 if (isram_memcpy(dst, src, size))
517 return 0;
518 break;
519 }
520 }
521
522 return -EFAULT;
523}
524
525/*
526 * Convert the memory pointed to by mem into hex, placing result in buf.
527 * Return a pointer to the last char put in buf (null). May return an error.
528 */
529int kgdb_mem2hex(char *mem, char *buf, int count)
530{
531 char *tmp;
532 int err;
533
534 /*
535 * We use the upper half of buf as an intermediate buffer for the
536 * raw memory copy. Hex conversion will work against this one.
537 */
538 tmp = buf + count;
539
540 err = bfin_probe_kernel_read(tmp, mem, count);
541 if (!err) {
542 while (count > 0) {
543 buf = pack_hex_byte(buf, *tmp);
544 tmp++;
545 count--;
546 }
547
548 *buf = 0;
549 }
550
551 return err;
552}
553
554/*
555 * Copy the binary array pointed to by buf into mem. Fix $, #, and
556 * 0x7d escaped with 0x7d. Return a pointer to the character after
557 * the last byte written.
558 */
559int kgdb_ebin2mem(char *buf, char *mem, int count)
560{
561 char *tmp_old, *tmp_new;
562 int size;
563
564 tmp_old = tmp_new = buf;
565
566 for (size = 0; size < count; ++size) {
567 if (*tmp_old == 0x7d)
568 *tmp_new = *(++tmp_old) ^ 0x20;
569 else
570 *tmp_new = *tmp_old;
571 tmp_new++;
572 tmp_old++;
573 }
574
575 return bfin_probe_kernel_write(mem, buf, count);
576}
577
578/*
579 * Convert the hex array pointed to by buf into binary to be placed in mem.
580 * Return a pointer to the character AFTER the last byte written.
581 * May return an error.
582 */
583int kgdb_hex2mem(char *buf, char *mem, int count)
584{
585 char *tmp_raw, *tmp_hex;
586
587 /*
588 * We use the upper half of buf as an intermediate buffer for the
589 * raw memory that is converted from hex.
590 */
591 tmp_raw = buf + count * 2;
592
593 tmp_hex = tmp_raw - 1;
594 while (tmp_hex >= buf) {
595 tmp_raw--;
596 *tmp_raw = hex(*tmp_hex--);
597 *tmp_raw |= hex(*tmp_hex--) << 4;
598 }
599
600 return bfin_probe_kernel_write(mem, tmp_raw, count);
601}
602
603#define IN_MEM(addr, size, l1_addr, l1_size) \ 413#define IN_MEM(addr, size, l1_addr, l1_size) \
604({ \ 414({ \
605 unsigned long __addr = (unsigned long)(addr); \ 415 unsigned long __addr = (unsigned long)(addr); \
@@ -629,21 +439,6 @@ int kgdb_validate_break_address(unsigned long addr)
629 return -EFAULT; 439 return -EFAULT;
630} 440}
631 441
632int kgdb_arch_set_breakpoint(unsigned long addr, char *saved_instr)
633{
634 int err = bfin_probe_kernel_read(saved_instr, (char *)addr,
635 BREAK_INSTR_SIZE);
636 if (err)
637 return err;
638 return bfin_probe_kernel_write((char *)addr, arch_kgdb_ops.gdb_bpt_instr,
639 BREAK_INSTR_SIZE);
640}
641
642int kgdb_arch_remove_breakpoint(unsigned long addr, char *bundle)
643{
644 return bfin_probe_kernel_write((char *)addr, bundle, BREAK_INSTR_SIZE);
645}
646
647int kgdb_arch_init(void) 442int kgdb_arch_init(void)
648{ 443{
649 kgdb_single_step = 0; 444 kgdb_single_step = 0;
diff --git a/arch/blackfin/mm/Makefile b/arch/blackfin/mm/Makefile
index d489f894f4b1..4c011b1f661f 100644
--- a/arch/blackfin/mm/Makefile
+++ b/arch/blackfin/mm/Makefile
@@ -2,4 +2,4 @@
2# arch/blackfin/mm/Makefile 2# arch/blackfin/mm/Makefile
3# 3#
4 4
5obj-y := sram-alloc.o isram-driver.o init.o 5obj-y := sram-alloc.o isram-driver.o init.o maccess.o
diff --git a/arch/blackfin/mm/maccess.c b/arch/blackfin/mm/maccess.c
new file mode 100644
index 000000000000..b71cebc1f8a3
--- /dev/null
+++ b/arch/blackfin/mm/maccess.c
@@ -0,0 +1,97 @@
1/*
2 * safe read and write memory routines callable while atomic
3 *
4 * Copyright 2005-2008 Analog Devices Inc.
5 *
6 * Licensed under the GPL-2 or later.
7 */
8
9#include <linux/uaccess.h>
10#include <asm/dma.h>
11
12static int validate_memory_access_address(unsigned long addr, int size)
13{
14 if (size < 0 || addr == 0)
15 return -EFAULT;
16 return bfin_mem_access_type(addr, size);
17}
18
19long probe_kernel_read(void *dst, void *src, size_t size)
20{
21 unsigned long lsrc = (unsigned long)src;
22 int mem_type;
23
24 mem_type = validate_memory_access_address(lsrc, size);
25 if (mem_type < 0)
26 return mem_type;
27
28 if (lsrc >= SYSMMR_BASE) {
29 if (size == 2 && lsrc % 2 == 0) {
30 u16 mmr = bfin_read16(src);
31 memcpy(dst, &mmr, sizeof(mmr));
32 return 0;
33 } else if (size == 4 && lsrc % 4 == 0) {
34 u32 mmr = bfin_read32(src);
35 memcpy(dst, &mmr, sizeof(mmr));
36 return 0;
37 }
38 } else {
39 switch (mem_type) {
40 case BFIN_MEM_ACCESS_CORE:
41 case BFIN_MEM_ACCESS_CORE_ONLY:
42 return __probe_kernel_read(dst, src, size);
43 /* XXX: should support IDMA here with SMP */
44 case BFIN_MEM_ACCESS_DMA:
45 if (dma_memcpy(dst, src, size))
46 return 0;
47 break;
48 case BFIN_MEM_ACCESS_ITEST:
49 if (isram_memcpy(dst, src, size))
50 return 0;
51 break;
52 }
53 }
54
55 return -EFAULT;
56}
57
58long probe_kernel_write(void *dst, void *src, size_t size)
59{
60 unsigned long ldst = (unsigned long)dst;
61 int mem_type;
62
63 mem_type = validate_memory_access_address(ldst, size);
64 if (mem_type < 0)
65 return mem_type;
66
67 if (ldst >= SYSMMR_BASE) {
68 if (size == 2 && ldst % 2 == 0) {
69 u16 mmr;
70 memcpy(&mmr, src, sizeof(mmr));
71 bfin_write16(dst, mmr);
72 return 0;
73 } else if (size == 4 && ldst % 4 == 0) {
74 u32 mmr;
75 memcpy(&mmr, src, sizeof(mmr));
76 bfin_write32(dst, mmr);
77 return 0;
78 }
79 } else {
80 switch (mem_type) {
81 case BFIN_MEM_ACCESS_CORE:
82 case BFIN_MEM_ACCESS_CORE_ONLY:
83 return __probe_kernel_write(dst, src, size);
84 /* XXX: should support IDMA here with SMP */
85 case BFIN_MEM_ACCESS_DMA:
86 if (dma_memcpy(dst, src, size))
87 return 0;
88 break;
89 case BFIN_MEM_ACCESS_ITEST:
90 if (isram_memcpy(dst, src, size))
91 return 0;
92 break;
93 }
94 }
95
96 return -EFAULT;
97}
diff --git a/arch/frv/include/asm/page.h b/arch/frv/include/asm/page.h
index 25c6a5002355..8c97068ac8fc 100644
--- a/arch/frv/include/asm/page.h
+++ b/arch/frv/include/asm/page.h
@@ -63,12 +63,10 @@ extern unsigned long max_pfn;
63#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) 63#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
64 64
65 65
66#ifdef CONFIG_MMU
67#define VM_DATA_DEFAULT_FLAGS \ 66#define VM_DATA_DEFAULT_FLAGS \
68 (VM_READ | VM_WRITE | \ 67 (VM_READ | VM_WRITE | \
69 ((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0 ) | \ 68 ((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0 ) | \
70 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) 69 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
71#endif
72 70
73#endif /* __ASSEMBLY__ */ 71#endif /* __ASSEMBLY__ */
74 72
diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h
index 7ae58892ba8d..e97b255d97bc 100644
--- a/arch/ia64/include/asm/acpi.h
+++ b/arch/ia64/include/asm/acpi.h
@@ -94,6 +94,7 @@ ia64_acpi_release_global_lock (unsigned int *lock)
94#define acpi_noirq 0 /* ACPI always enabled on IA64 */ 94#define acpi_noirq 0 /* ACPI always enabled on IA64 */
95#define acpi_pci_disabled 0 /* ACPI PCI always enabled on IA64 */ 95#define acpi_pci_disabled 0 /* ACPI PCI always enabled on IA64 */
96#define acpi_strict 1 /* no ACPI spec workarounds on IA64 */ 96#define acpi_strict 1 /* no ACPI spec workarounds on IA64 */
97#define acpi_ht 0 /* no HT-only mode on IA64 */
97#endif 98#endif
98#define acpi_processor_cstate_check(x) (x) /* no idle limits on IA64 :) */ 99#define acpi_processor_cstate_check(x) (x) /* no idle limits on IA64 :) */
99static inline void disable_acpi(void) { } 100static inline void disable_acpi(void) { }
diff --git a/arch/ia64/include/asm/elf.h b/arch/ia64/include/asm/elf.h
index e14108b19c09..4c41656ede87 100644
--- a/arch/ia64/include/asm/elf.h
+++ b/arch/ia64/include/asm/elf.h
@@ -201,7 +201,9 @@ extern void ia64_elf_core_copy_regs (struct pt_regs *src, elf_gregset_t dst);
201 relevant until we have real hardware to play with... */ 201 relevant until we have real hardware to play with... */
202#define ELF_PLATFORM NULL 202#define ELF_PLATFORM NULL
203 203
204#define SET_PERSONALITY(ex) set_personality(PER_LINUX) 204#define SET_PERSONALITY(ex) \
205 set_personality((current->personality & ~PER_MASK) | PER_LINUX)
206
205#define elf_read_implies_exec(ex, executable_stack) \ 207#define elf_read_implies_exec(ex, executable_stack) \
206 ((executable_stack!=EXSTACK_DISABLE_X) && ((ex).e_flags & EF_IA_64_LINUX_EXECUTABLE_STACK) != 0) 208 ((executable_stack!=EXSTACK_DISABLE_X) && ((ex).e_flags & EF_IA_64_LINUX_EXECUTABLE_STACK) != 0)
207 209
diff --git a/arch/ia64/include/asm/ftrace.h b/arch/ia64/include/asm/ftrace.h
index d20db3c2a656..fbd1a2470cae 100644
--- a/arch/ia64/include/asm/ftrace.h
+++ b/arch/ia64/include/asm/ftrace.h
@@ -8,7 +8,6 @@
8extern void _mcount(unsigned long pfs, unsigned long r1, unsigned long b0, unsigned long r0); 8extern void _mcount(unsigned long pfs, unsigned long r1, unsigned long b0, unsigned long r0);
9#define mcount _mcount 9#define mcount _mcount
10 10
11#include <asm/kprobes.h>
12/* In IA64, MCOUNT_ADDR is set in link time, so it's not a constant at compile time */ 11/* In IA64, MCOUNT_ADDR is set in link time, so it's not a constant at compile time */
13#define MCOUNT_ADDR (((struct fnptr *)mcount)->ip) 12#define MCOUNT_ADDR (((struct fnptr *)mcount)->ip)
14#define FTRACE_ADDR (((struct fnptr *)ftrace_caller)->ip) 13#define FTRACE_ADDR (((struct fnptr *)ftrace_caller)->ip)
diff --git a/arch/ia64/include/asm/kprobes.h b/arch/ia64/include/asm/kprobes.h
index dbf83fb28db3..d5505d6f2382 100644
--- a/arch/ia64/include/asm/kprobes.h
+++ b/arch/ia64/include/asm/kprobes.h
@@ -103,11 +103,6 @@ typedef struct kprobe_opcode {
103 bundle_t bundle; 103 bundle_t bundle;
104} kprobe_opcode_t; 104} kprobe_opcode_t;
105 105
106struct fnptr {
107 unsigned long ip;
108 unsigned long gp;
109};
110
111/* Architecture specific copy of original instruction*/ 106/* Architecture specific copy of original instruction*/
112struct arch_specific_insn { 107struct arch_specific_insn {
113 /* copy of the instruction to be emulated */ 108 /* copy of the instruction to be emulated */
diff --git a/arch/ia64/include/asm/tlb.h b/arch/ia64/include/asm/tlb.h
index 85d965cb19a0..23cce999eb1c 100644
--- a/arch/ia64/include/asm/tlb.h
+++ b/arch/ia64/include/asm/tlb.h
@@ -74,7 +74,7 @@ struct ia64_tr_entry {
74extern int ia64_itr_entry(u64 target_mask, u64 va, u64 pte, u64 log_size); 74extern int ia64_itr_entry(u64 target_mask, u64 va, u64 pte, u64 log_size);
75extern void ia64_ptr_entry(u64 target_mask, int slot); 75extern void ia64_ptr_entry(u64 target_mask, int slot);
76 76
77extern struct ia64_tr_entry __per_cpu_idtrs[NR_CPUS][2][IA64_TR_ALLOC_MAX]; 77extern struct ia64_tr_entry *ia64_idtrs[NR_CPUS];
78 78
79/* 79/*
80 region register macros 80 region register macros
diff --git a/arch/ia64/include/asm/topology.h b/arch/ia64/include/asm/topology.h
index 3ddb4e709dba..d323071d0f91 100644
--- a/arch/ia64/include/asm/topology.h
+++ b/arch/ia64/include/asm/topology.h
@@ -33,7 +33,9 @@
33/* 33/*
34 * Returns a bitmask of CPUs on Node 'node'. 34 * Returns a bitmask of CPUs on Node 'node'.
35 */ 35 */
36#define cpumask_of_node(node) (&node_to_cpu_mask[node]) 36#define cpumask_of_node(node) ((node) == -1 ? \
37 cpu_all_mask : \
38 &node_to_cpu_mask[node])
37 39
38/* 40/*
39 * Returns the number of the node containing Node 'nid'. 41 * Returns the number of the node containing Node 'nid'.
diff --git a/arch/ia64/include/asm/types.h b/arch/ia64/include/asm/types.h
index bcd260e597de..93773fd37be0 100644
--- a/arch/ia64/include/asm/types.h
+++ b/arch/ia64/include/asm/types.h
@@ -35,6 +35,11 @@ typedef unsigned int umode_t;
35 */ 35 */
36# ifdef __KERNEL__ 36# ifdef __KERNEL__
37 37
38struct fnptr {
39 unsigned long ip;
40 unsigned long gp;
41};
42
38/* DMA addresses are 64-bits wide, in general. */ 43/* DMA addresses are 64-bits wide, in general. */
39typedef u64 dma_addr_t; 44typedef u64 dma_addr_t;
40 45
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c
index 32f2639e9b0a..378b4833024f 100644
--- a/arch/ia64/kernel/mca.c
+++ b/arch/ia64/kernel/mca.c
@@ -1225,9 +1225,12 @@ static void mca_insert_tr(u64 iord)
1225 unsigned long psr; 1225 unsigned long psr;
1226 int cpu = smp_processor_id(); 1226 int cpu = smp_processor_id();
1227 1227
1228 if (!ia64_idtrs[cpu])
1229 return;
1230
1228 psr = ia64_clear_ic(); 1231 psr = ia64_clear_ic();
1229 for (i = IA64_TR_ALLOC_BASE; i < IA64_TR_ALLOC_MAX; i++) { 1232 for (i = IA64_TR_ALLOC_BASE; i < IA64_TR_ALLOC_MAX; i++) {
1230 p = &__per_cpu_idtrs[cpu][iord-1][i]; 1233 p = ia64_idtrs[cpu] + (iord - 1) * IA64_TR_ALLOC_MAX;
1231 if (p->pte & 0x1) { 1234 if (p->pte & 0x1) {
1232 old_rr = ia64_get_rr(p->ifa); 1235 old_rr = ia64_get_rr(p->ifa);
1233 if (old_rr != p->rr) { 1236 if (old_rr != p->rr) {
diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c
index 5246285a95fb..6bcbe215b9a4 100644
--- a/arch/ia64/kernel/perfmon.c
+++ b/arch/ia64/kernel/perfmon.c
@@ -2293,7 +2293,7 @@ pfm_smpl_buffer_alloc(struct task_struct *task, struct file *filp, pfm_context_t
2293 * if ((mm->total_vm << PAGE_SHIFT) + len> task->rlim[RLIMIT_AS].rlim_cur) 2293 * if ((mm->total_vm << PAGE_SHIFT) + len> task->rlim[RLIMIT_AS].rlim_cur)
2294 * return -ENOMEM; 2294 * return -ENOMEM;
2295 */ 2295 */
2296 if (size > task->signal->rlim[RLIMIT_MEMLOCK].rlim_cur) 2296 if (size > task_rlimit(task, RLIMIT_MEMLOCK))
2297 return -ENOMEM; 2297 return -ENOMEM;
2298 2298
2299 /* 2299 /*
diff --git a/arch/ia64/kvm/vcpu.h b/arch/ia64/kvm/vcpu.h
index 360724d3ae69..988911b4cc7a 100644
--- a/arch/ia64/kvm/vcpu.h
+++ b/arch/ia64/kvm/vcpu.h
@@ -388,6 +388,9 @@ static inline u64 __gpfn_is_io(u64 gpfn)
388#define _vmm_raw_spin_lock(x) do {}while(0) 388#define _vmm_raw_spin_lock(x) do {}while(0)
389#define _vmm_raw_spin_unlock(x) do {}while(0) 389#define _vmm_raw_spin_unlock(x) do {}while(0)
390#else 390#else
391typedef struct {
392 volatile unsigned int lock;
393} vmm_spinlock_t;
391#define _vmm_raw_spin_lock(x) \ 394#define _vmm_raw_spin_lock(x) \
392 do { \ 395 do { \
393 __u32 *ia64_spinlock_ptr = (__u32 *) (x); \ 396 __u32 *ia64_spinlock_ptr = (__u32 *) (x); \
@@ -405,12 +408,12 @@ static inline u64 __gpfn_is_io(u64 gpfn)
405 408
406#define _vmm_raw_spin_unlock(x) \ 409#define _vmm_raw_spin_unlock(x) \
407 do { barrier(); \ 410 do { barrier(); \
408 ((spinlock_t *)x)->raw_lock.lock = 0; } \ 411 ((vmm_spinlock_t *)x)->lock = 0; } \
409while (0) 412while (0)
410#endif 413#endif
411 414
412void vmm_spin_lock(spinlock_t *lock); 415void vmm_spin_lock(vmm_spinlock_t *lock);
413void vmm_spin_unlock(spinlock_t *lock); 416void vmm_spin_unlock(vmm_spinlock_t *lock);
414enum { 417enum {
415 I_TLB = 1, 418 I_TLB = 1,
416 D_TLB = 2 419 D_TLB = 2
diff --git a/arch/ia64/kvm/vmm.c b/arch/ia64/kvm/vmm.c
index f4b4c899bb6c..7a62f75778c5 100644
--- a/arch/ia64/kvm/vmm.c
+++ b/arch/ia64/kvm/vmm.c
@@ -60,12 +60,12 @@ static void __exit kvm_vmm_exit(void)
60 return ; 60 return ;
61} 61}
62 62
63void vmm_spin_lock(spinlock_t *lock) 63void vmm_spin_lock(vmm_spinlock_t *lock)
64{ 64{
65 _vmm_raw_spin_lock(lock); 65 _vmm_raw_spin_lock(lock);
66} 66}
67 67
68void vmm_spin_unlock(spinlock_t *lock) 68void vmm_spin_unlock(vmm_spinlock_t *lock)
69{ 69{
70 _vmm_raw_spin_unlock(lock); 70 _vmm_raw_spin_unlock(lock);
71} 71}
diff --git a/arch/ia64/kvm/vtlb.c b/arch/ia64/kvm/vtlb.c
index 20b3852f7a6e..4332f7ee5203 100644
--- a/arch/ia64/kvm/vtlb.c
+++ b/arch/ia64/kvm/vtlb.c
@@ -182,7 +182,7 @@ void mark_pages_dirty(struct kvm_vcpu *v, u64 pte, u64 ps)
182{ 182{
183 u64 i, dirty_pages = 1; 183 u64 i, dirty_pages = 1;
184 u64 base_gfn = (pte&_PAGE_PPN_MASK) >> PAGE_SHIFT; 184 u64 base_gfn = (pte&_PAGE_PPN_MASK) >> PAGE_SHIFT;
185 spinlock_t *lock = __kvm_va(v->arch.dirty_log_lock_pa); 185 vmm_spinlock_t *lock = __kvm_va(v->arch.dirty_log_lock_pa);
186 void *dirty_bitmap = (void *)KVM_MEM_DIRTY_LOG_BASE; 186 void *dirty_bitmap = (void *)KVM_MEM_DIRTY_LOG_BASE;
187 187
188 dirty_pages <<= ps <= PAGE_SHIFT ? 0 : ps - PAGE_SHIFT; 188 dirty_pages <<= ps <= PAGE_SHIFT ? 0 : ps - PAGE_SHIFT;
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
index b9609c69343a..7c0d4814a68d 100644
--- a/arch/ia64/mm/init.c
+++ b/arch/ia64/mm/init.c
@@ -91,7 +91,7 @@ dma_mark_clean(void *addr, size_t size)
91inline void 91inline void
92ia64_set_rbs_bot (void) 92ia64_set_rbs_bot (void)
93{ 93{
94 unsigned long stack_size = current->signal->rlim[RLIMIT_STACK].rlim_max & -16; 94 unsigned long stack_size = rlimit_max(RLIMIT_STACK) & -16;
95 95
96 if (stack_size > MAX_USER_STACK_SIZE) 96 if (stack_size > MAX_USER_STACK_SIZE)
97 stack_size = MAX_USER_STACK_SIZE; 97 stack_size = MAX_USER_STACK_SIZE;
diff --git a/arch/ia64/mm/tlb.c b/arch/ia64/mm/tlb.c
index ee09d261f2e6..f3de9d7a98b4 100644
--- a/arch/ia64/mm/tlb.c
+++ b/arch/ia64/mm/tlb.c
@@ -48,7 +48,7 @@ DEFINE_PER_CPU(u8, ia64_need_tlb_flush);
48DEFINE_PER_CPU(u8, ia64_tr_num); /*Number of TR slots in current processor*/ 48DEFINE_PER_CPU(u8, ia64_tr_num); /*Number of TR slots in current processor*/
49DEFINE_PER_CPU(u8, ia64_tr_used); /*Max Slot number used by kernel*/ 49DEFINE_PER_CPU(u8, ia64_tr_used); /*Max Slot number used by kernel*/
50 50
51struct ia64_tr_entry __per_cpu_idtrs[NR_CPUS][2][IA64_TR_ALLOC_MAX]; 51struct ia64_tr_entry *ia64_idtrs[NR_CPUS];
52 52
53/* 53/*
54 * Initializes the ia64_ctx.bitmap array based on max_ctx+1. 54 * Initializes the ia64_ctx.bitmap array based on max_ctx+1.
@@ -429,10 +429,16 @@ int ia64_itr_entry(u64 target_mask, u64 va, u64 pte, u64 log_size)
429 struct ia64_tr_entry *p; 429 struct ia64_tr_entry *p;
430 int cpu = smp_processor_id(); 430 int cpu = smp_processor_id();
431 431
432 if (!ia64_idtrs[cpu]) {
433 ia64_idtrs[cpu] = kmalloc(2 * IA64_TR_ALLOC_MAX *
434 sizeof (struct ia64_tr_entry), GFP_KERNEL);
435 if (!ia64_idtrs[cpu])
436 return -ENOMEM;
437 }
432 r = -EINVAL; 438 r = -EINVAL;
433 /*Check overlap with existing TR entries*/ 439 /*Check overlap with existing TR entries*/
434 if (target_mask & 0x1) { 440 if (target_mask & 0x1) {
435 p = &__per_cpu_idtrs[cpu][0][0]; 441 p = ia64_idtrs[cpu];
436 for (i = IA64_TR_ALLOC_BASE; i <= per_cpu(ia64_tr_used, cpu); 442 for (i = IA64_TR_ALLOC_BASE; i <= per_cpu(ia64_tr_used, cpu);
437 i++, p++) { 443 i++, p++) {
438 if (p->pte & 0x1) 444 if (p->pte & 0x1)
@@ -444,7 +450,7 @@ int ia64_itr_entry(u64 target_mask, u64 va, u64 pte, u64 log_size)
444 } 450 }
445 } 451 }
446 if (target_mask & 0x2) { 452 if (target_mask & 0x2) {
447 p = &__per_cpu_idtrs[cpu][1][0]; 453 p = ia64_idtrs[cpu] + IA64_TR_ALLOC_MAX;
448 for (i = IA64_TR_ALLOC_BASE; i <= per_cpu(ia64_tr_used, cpu); 454 for (i = IA64_TR_ALLOC_BASE; i <= per_cpu(ia64_tr_used, cpu);
449 i++, p++) { 455 i++, p++) {
450 if (p->pte & 0x1) 456 if (p->pte & 0x1)
@@ -459,16 +465,16 @@ int ia64_itr_entry(u64 target_mask, u64 va, u64 pte, u64 log_size)
459 for (i = IA64_TR_ALLOC_BASE; i < per_cpu(ia64_tr_num, cpu); i++) { 465 for (i = IA64_TR_ALLOC_BASE; i < per_cpu(ia64_tr_num, cpu); i++) {
460 switch (target_mask & 0x3) { 466 switch (target_mask & 0x3) {
461 case 1: 467 case 1:
462 if (!(__per_cpu_idtrs[cpu][0][i].pte & 0x1)) 468 if (!((ia64_idtrs[cpu] + i)->pte & 0x1))
463 goto found; 469 goto found;
464 continue; 470 continue;
465 case 2: 471 case 2:
466 if (!(__per_cpu_idtrs[cpu][1][i].pte & 0x1)) 472 if (!((ia64_idtrs[cpu] + IA64_TR_ALLOC_MAX + i)->pte & 0x1))
467 goto found; 473 goto found;
468 continue; 474 continue;
469 case 3: 475 case 3:
470 if (!(__per_cpu_idtrs[cpu][0][i].pte & 0x1) && 476 if (!((ia64_idtrs[cpu] + i)->pte & 0x1) &&
471 !(__per_cpu_idtrs[cpu][1][i].pte & 0x1)) 477 !((ia64_idtrs[cpu] + IA64_TR_ALLOC_MAX + i)->pte & 0x1))
472 goto found; 478 goto found;
473 continue; 479 continue;
474 default: 480 default:
@@ -488,7 +494,7 @@ found:
488 if (target_mask & 0x1) { 494 if (target_mask & 0x1) {
489 ia64_itr(0x1, i, va, pte, log_size); 495 ia64_itr(0x1, i, va, pte, log_size);
490 ia64_srlz_i(); 496 ia64_srlz_i();
491 p = &__per_cpu_idtrs[cpu][0][i]; 497 p = ia64_idtrs[cpu] + i;
492 p->ifa = va; 498 p->ifa = va;
493 p->pte = pte; 499 p->pte = pte;
494 p->itir = log_size << 2; 500 p->itir = log_size << 2;
@@ -497,7 +503,7 @@ found:
497 if (target_mask & 0x2) { 503 if (target_mask & 0x2) {
498 ia64_itr(0x2, i, va, pte, log_size); 504 ia64_itr(0x2, i, va, pte, log_size);
499 ia64_srlz_i(); 505 ia64_srlz_i();
500 p = &__per_cpu_idtrs[cpu][1][i]; 506 p = ia64_idtrs[cpu] + IA64_TR_ALLOC_MAX + i;
501 p->ifa = va; 507 p->ifa = va;
502 p->pte = pte; 508 p->pte = pte;
503 p->itir = log_size << 2; 509 p->itir = log_size << 2;
@@ -528,7 +534,7 @@ void ia64_ptr_entry(u64 target_mask, int slot)
528 return; 534 return;
529 535
530 if (target_mask & 0x1) { 536 if (target_mask & 0x1) {
531 p = &__per_cpu_idtrs[cpu][0][slot]; 537 p = ia64_idtrs[cpu] + slot;
532 if ((p->pte&0x1) && is_tr_overlap(p, p->ifa, p->itir>>2)) { 538 if ((p->pte&0x1) && is_tr_overlap(p, p->ifa, p->itir>>2)) {
533 p->pte = 0; 539 p->pte = 0;
534 ia64_ptr(0x1, p->ifa, p->itir>>2); 540 ia64_ptr(0x1, p->ifa, p->itir>>2);
@@ -537,7 +543,7 @@ void ia64_ptr_entry(u64 target_mask, int slot)
537 } 543 }
538 544
539 if (target_mask & 0x2) { 545 if (target_mask & 0x2) {
540 p = &__per_cpu_idtrs[cpu][1][slot]; 546 p = ia64_idtrs[cpu] + IA64_TR_ALLOC_MAX + slot;
541 if ((p->pte & 0x1) && is_tr_overlap(p, p->ifa, p->itir>>2)) { 547 if ((p->pte & 0x1) && is_tr_overlap(p, p->ifa, p->itir>>2)) {
542 p->pte = 0; 548 p->pte = 0;
543 ia64_ptr(0x2, p->ifa, p->itir>>2); 549 ia64_ptr(0x2, p->ifa, p->itir>>2);
@@ -546,8 +552,8 @@ void ia64_ptr_entry(u64 target_mask, int slot)
546 } 552 }
547 553
548 for (i = per_cpu(ia64_tr_used, cpu); i >= IA64_TR_ALLOC_BASE; i--) { 554 for (i = per_cpu(ia64_tr_used, cpu); i >= IA64_TR_ALLOC_BASE; i--) {
549 if ((__per_cpu_idtrs[cpu][0][i].pte & 0x1) || 555 if (((ia64_idtrs[cpu] + i)->pte & 0x1) ||
550 (__per_cpu_idtrs[cpu][1][i].pte & 0x1)) 556 ((ia64_idtrs[cpu] + IA64_TR_ALLOC_MAX + i)->pte & 0x1))
551 break; 557 break;
552 } 558 }
553 per_cpu(ia64_tr_used, cpu) = i; 559 per_cpu(ia64_tr_used, cpu) = i;
diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c
index ece1bf994499..e456f062f241 100644
--- a/arch/ia64/sn/kernel/setup.c
+++ b/arch/ia64/sn/kernel/setup.c
@@ -71,7 +71,7 @@ EXPORT_SYMBOL(sn_rtc_cycles_per_second);
71DEFINE_PER_CPU(struct sn_hub_info_s, __sn_hub_info); 71DEFINE_PER_CPU(struct sn_hub_info_s, __sn_hub_info);
72EXPORT_PER_CPU_SYMBOL(__sn_hub_info); 72EXPORT_PER_CPU_SYMBOL(__sn_hub_info);
73 73
74DEFINE_PER_CPU(short [MAX_COMPACT_NODES], __sn_cnodeid_to_nasid); 74DEFINE_PER_CPU(short, __sn_cnodeid_to_nasid[MAX_COMPACT_NODES]);
75EXPORT_PER_CPU_SYMBOL(__sn_cnodeid_to_nasid); 75EXPORT_PER_CPU_SYMBOL(__sn_cnodeid_to_nasid);
76 76
77DEFINE_PER_CPU(struct nodepda_s *, __sn_nodepda); 77DEFINE_PER_CPU(struct nodepda_s *, __sn_nodepda);
diff --git a/arch/m68k/include/asm/io_no.h b/arch/m68k/include/asm/io_no.h
index 7f57436ec18f..359065d5a9f2 100644
--- a/arch/m68k/include/asm/io_no.h
+++ b/arch/m68k/include/asm/io_no.h
@@ -3,6 +3,7 @@
3 3
4#ifdef __KERNEL__ 4#ifdef __KERNEL__
5 5
6#include <asm/virtconvert.h>
6 7
7/* 8/*
8 * These are for ISA/PCI shared memory _only_ and should never be used 9 * These are for ISA/PCI shared memory _only_ and should never be used
@@ -165,19 +166,6 @@ static inline void *ioremap_fullcache(unsigned long physaddr, unsigned long size
165 166
166extern void iounmap(void *addr); 167extern void iounmap(void *addr);
167 168
168/* Pages to physical address... */
169#define page_to_phys(page) ((page - mem_map) << PAGE_SHIFT)
170#define page_to_bus(page) ((page - mem_map) << PAGE_SHIFT)
171
172/*
173 * Macros used for converting between virtual and physical mappings.
174 */
175#define phys_to_virt(vaddr) ((void *) (vaddr))
176#define virt_to_phys(vaddr) ((unsigned long) (vaddr))
177
178#define virt_to_bus virt_to_phys
179#define bus_to_virt phys_to_virt
180
181/* 169/*
182 * Convert a physical pointer to a virtual kernel pointer for /dev/mem 170 * Convert a physical pointer to a virtual kernel pointer for /dev/mem
183 * access 171 * access
diff --git a/arch/m68k/include/asm/page_no.h b/arch/m68k/include/asm/page_no.h
index 1f31b060cc8d..8029a33e03c3 100644
--- a/arch/m68k/include/asm/page_no.h
+++ b/arch/m68k/include/asm/page_no.h
@@ -56,8 +56,8 @@ extern unsigned long memory_end;
56 56
57#ifndef __ASSEMBLY__ 57#ifndef __ASSEMBLY__
58 58
59#define __pa(vaddr) virt_to_phys((void *)(vaddr)) 59#define __pa(vaddr) ((unsigned long)(vaddr))
60#define __va(paddr) phys_to_virt((unsigned long)(paddr)) 60#define __va(paddr) ((void *)(paddr))
61 61
62#define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT) 62#define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT)
63#define pfn_to_virt(pfn) __va((pfn) << PAGE_SHIFT) 63#define pfn_to_virt(pfn) __va((pfn) << PAGE_SHIFT)
diff --git a/arch/m68k/include/asm/virtconvert.h b/arch/m68k/include/asm/virtconvert.h
index 22ab05c9c52b..3f834b3ab5bd 100644
--- a/arch/m68k/include/asm/virtconvert.h
+++ b/arch/m68k/include/asm/virtconvert.h
@@ -26,6 +26,7 @@ static inline void *phys_to_virt(unsigned long address)
26} 26}
27 27
28/* Permanent address of a page. */ 28/* Permanent address of a page. */
29#ifdef CONFIG_MMU
29#ifdef CONFIG_SINGLE_MEMORY_CHUNK 30#ifdef CONFIG_SINGLE_MEMORY_CHUNK
30#define page_to_phys(page) \ 31#define page_to_phys(page) \
31 __pa(PAGE_OFFSET + (((page) - pg_data_map[0].node_mem_map) << PAGE_SHIFT)) 32 __pa(PAGE_OFFSET + (((page) - pg_data_map[0].node_mem_map) << PAGE_SHIFT))
@@ -37,6 +38,9 @@ static inline void *phys_to_virt(unsigned long address)
37 page_to_pfn(__page) << PAGE_SHIFT; \ 38 page_to_pfn(__page) << PAGE_SHIFT; \
38}) 39})
39#endif 40#endif
41#else
42#define page_to_phys(page) (((page) - mem_map) << PAGE_SHIFT)
43#endif
40 44
41/* 45/*
42 * IO bus memory addresses are 1:1 with the physical address, 46 * IO bus memory addresses are 1:1 with the physical address,
diff --git a/arch/m68knommu/platform/coldfire/pit.c b/arch/m68knommu/platform/coldfire/pit.c
index d8720ee34510..aebea19abd78 100644
--- a/arch/m68knommu/platform/coldfire/pit.c
+++ b/arch/m68knommu/platform/coldfire/pit.c
@@ -146,7 +146,6 @@ static struct clocksource pit_clk = {
146 .read = pit_read_clk, 146 .read = pit_read_clk,
147 .shift = 20, 147 .shift = 20,
148 .mask = CLOCKSOURCE_MASK(32), 148 .mask = CLOCKSOURCE_MASK(32),
149 .flags = CLOCK_SOURCE_IS_CONTINUOUS,
150}; 149};
151 150
152/***************************************************************************/ 151/***************************************************************************/
diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig
index fd53e500be67..cd5837e298b2 100644
--- a/arch/microblaze/Kconfig
+++ b/arch/microblaze/Kconfig
@@ -90,7 +90,7 @@ source "arch/microblaze/platform/Kconfig.platform"
90 90
91menu "Processor type and features" 91menu "Processor type and features"
92 92
93source kernel/time/Kconfig 93source "kernel/time/Kconfig"
94 94
95source "kernel/Kconfig.preempt" 95source "kernel/Kconfig.preempt"
96 96
diff --git a/arch/microblaze/configs/mmu_defconfig b/arch/microblaze/configs/mmu_defconfig
index bb7c374713ad..6fced1fe3bf0 100644
--- a/arch/microblaze/configs/mmu_defconfig
+++ b/arch/microblaze/configs/mmu_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 3# Linux kernel version: 2.6.33-rc6
4# Thu Sep 24 10:28:50 2009 4# Wed Feb 3 10:02:59 2010
5# 5#
6CONFIG_MICROBLAZE=y 6CONFIG_MICROBLAZE=y
7# CONFIG_SWAP is not set 7# CONFIG_SWAP is not set
@@ -19,8 +19,12 @@ CONFIG_GENERIC_CLOCKEVENTS=y
19CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 19CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
20CONFIG_GENERIC_GPIO=y 20CONFIG_GENERIC_GPIO=y
21CONFIG_GENERIC_CSUM=y 21CONFIG_GENERIC_CSUM=y
22CONFIG_STACKTRACE_SUPPORT=y
23CONFIG_LOCKDEP_SUPPORT=y
24CONFIG_HAVE_LATENCYTOP_SUPPORT=y
22# CONFIG_PCI is not set 25# CONFIG_PCI is not set
23CONFIG_NO_DMA=y 26CONFIG_NO_DMA=y
27CONFIG_DTC=y
24CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 28CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
25CONFIG_CONSTRUCTORS=y 29CONFIG_CONSTRUCTORS=y
26 30
@@ -44,6 +48,7 @@ CONFIG_SYSVIPC_SYSCTL=y
44# 48#
45CONFIG_TREE_RCU=y 49CONFIG_TREE_RCU=y
46# CONFIG_TREE_PREEMPT_RCU is not set 50# CONFIG_TREE_PREEMPT_RCU is not set
51# CONFIG_TINY_RCU is not set
47# CONFIG_RCU_TRACE is not set 52# CONFIG_RCU_TRACE is not set
48CONFIG_RCU_FANOUT=32 53CONFIG_RCU_FANOUT=32
49# CONFIG_RCU_FANOUT_EXACT is not set 54# CONFIG_RCU_FANOUT_EXACT is not set
@@ -64,10 +69,12 @@ CONFIG_INITRAMFS_ROOT_GID=0
64CONFIG_RD_GZIP=y 69CONFIG_RD_GZIP=y
65# CONFIG_RD_BZIP2 is not set 70# CONFIG_RD_BZIP2 is not set
66# CONFIG_RD_LZMA is not set 71# CONFIG_RD_LZMA is not set
72# CONFIG_RD_LZO is not set
67# CONFIG_INITRAMFS_COMPRESSION_NONE is not set 73# CONFIG_INITRAMFS_COMPRESSION_NONE is not set
68CONFIG_INITRAMFS_COMPRESSION_GZIP=y 74CONFIG_INITRAMFS_COMPRESSION_GZIP=y
69# CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set 75# CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set
70# CONFIG_INITRAMFS_COMPRESSION_LZMA is not set 76# CONFIG_INITRAMFS_COMPRESSION_LZMA is not set
77# CONFIG_INITRAMFS_COMPRESSION_LZO is not set
71# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 78# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
72CONFIG_SYSCTL=y 79CONFIG_SYSCTL=y
73CONFIG_ANON_INODES=y 80CONFIG_ANON_INODES=y
@@ -90,21 +97,20 @@ CONFIG_EVENTFD=y
90CONFIG_AIO=y 97CONFIG_AIO=y
91 98
92# 99#
93# Performance Counters 100# Kernel Performance Events And Counters
94# 101#
95CONFIG_VM_EVENT_COUNTERS=y 102CONFIG_VM_EVENT_COUNTERS=y
96# CONFIG_STRIP_ASM_SYMS is not set
97CONFIG_COMPAT_BRK=y 103CONFIG_COMPAT_BRK=y
98CONFIG_SLAB=y 104CONFIG_SLAB=y
99# CONFIG_SLUB is not set 105# CONFIG_SLUB is not set
100# CONFIG_SLOB is not set 106# CONFIG_SLOB is not set
101# CONFIG_PROFILING is not set 107# CONFIG_PROFILING is not set
102# CONFIG_MARKERS is not set 108CONFIG_HAVE_OPROFILE=y
103 109
104# 110#
105# GCOV-based kernel profiling 111# GCOV-based kernel profiling
106# 112#
107# CONFIG_SLOW_WORK is not set 113CONFIG_SLOW_WORK=y
108# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 114# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
109CONFIG_SLABINFO=y 115CONFIG_SLABINFO=y
110CONFIG_BASE_SMALL=1 116CONFIG_BASE_SMALL=1
@@ -123,14 +129,41 @@ CONFIG_LBDAF=y
123# IO Schedulers 129# IO Schedulers
124# 130#
125CONFIG_IOSCHED_NOOP=y 131CONFIG_IOSCHED_NOOP=y
126CONFIG_IOSCHED_AS=y
127CONFIG_IOSCHED_DEADLINE=y 132CONFIG_IOSCHED_DEADLINE=y
128CONFIG_IOSCHED_CFQ=y 133CONFIG_IOSCHED_CFQ=y
129# CONFIG_DEFAULT_AS is not set
130# CONFIG_DEFAULT_DEADLINE is not set 134# CONFIG_DEFAULT_DEADLINE is not set
131CONFIG_DEFAULT_CFQ=y 135CONFIG_DEFAULT_CFQ=y
132# CONFIG_DEFAULT_NOOP is not set 136# CONFIG_DEFAULT_NOOP is not set
133CONFIG_DEFAULT_IOSCHED="cfq" 137CONFIG_DEFAULT_IOSCHED="cfq"
138# CONFIG_INLINE_SPIN_TRYLOCK is not set
139# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
140# CONFIG_INLINE_SPIN_LOCK is not set
141# CONFIG_INLINE_SPIN_LOCK_BH is not set
142# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
143# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
144# CONFIG_INLINE_SPIN_UNLOCK is not set
145# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
146# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
147# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
148# CONFIG_INLINE_READ_TRYLOCK is not set
149# CONFIG_INLINE_READ_LOCK is not set
150# CONFIG_INLINE_READ_LOCK_BH is not set
151# CONFIG_INLINE_READ_LOCK_IRQ is not set
152# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
153# CONFIG_INLINE_READ_UNLOCK is not set
154# CONFIG_INLINE_READ_UNLOCK_BH is not set
155# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
156# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
157# CONFIG_INLINE_WRITE_TRYLOCK is not set
158# CONFIG_INLINE_WRITE_LOCK is not set
159# CONFIG_INLINE_WRITE_LOCK_BH is not set
160# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
161# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
162# CONFIG_INLINE_WRITE_UNLOCK is not set
163# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
164# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
165# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
166# CONFIG_MUTEX_SPIN_ON_OWNER is not set
134# CONFIG_FREEZER is not set 167# CONFIG_FREEZER is not set
135 168
136# 169#
@@ -139,11 +172,6 @@ CONFIG_DEFAULT_IOSCHED="cfq"
139CONFIG_PLATFORM_GENERIC=y 172CONFIG_PLATFORM_GENERIC=y
140CONFIG_OPT_LIB_FUNCTION=y 173CONFIG_OPT_LIB_FUNCTION=y
141CONFIG_OPT_LIB_ASM=y 174CONFIG_OPT_LIB_ASM=y
142CONFIG_ALLOW_EDIT_AUTO=y
143
144#
145# Automatic platform settings from Kconfig.auto
146#
147 175
148# 176#
149# Definitions for MICROBLAZE0 177# Definitions for MICROBLAZE0
@@ -203,12 +231,11 @@ CONFIG_FLATMEM_MANUAL=y
203CONFIG_FLATMEM=y 231CONFIG_FLATMEM=y
204CONFIG_FLAT_NODE_MEM_MAP=y 232CONFIG_FLAT_NODE_MEM_MAP=y
205CONFIG_PAGEFLAGS_EXTENDED=y 233CONFIG_PAGEFLAGS_EXTENDED=y
206CONFIG_SPLIT_PTLOCK_CPUS=4 234CONFIG_SPLIT_PTLOCK_CPUS=999999
207# CONFIG_PHYS_ADDR_T_64BIT is not set 235# CONFIG_PHYS_ADDR_T_64BIT is not set
208CONFIG_ZONE_DMA_FLAG=0 236CONFIG_ZONE_DMA_FLAG=0
209CONFIG_VIRT_TO_BUS=y 237CONFIG_VIRT_TO_BUS=y
210CONFIG_HAVE_MLOCK=y 238# CONFIG_KSM is not set
211CONFIG_HAVE_MLOCKED_PAGE_BIT=y
212CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 239CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
213 240
214# 241#
@@ -289,7 +316,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
289# CONFIG_IRDA is not set 316# CONFIG_IRDA is not set
290# CONFIG_BT is not set 317# CONFIG_BT is not set
291# CONFIG_AF_RXRPC is not set 318# CONFIG_AF_RXRPC is not set
292# CONFIG_WIRELESS is not set 319CONFIG_WIRELESS=y
320# CONFIG_CFG80211 is not set
321# CONFIG_LIB80211 is not set
322
323#
324# CFG80211 needs to be enabled for MAC80211
325#
293# CONFIG_WIMAX is not set 326# CONFIG_WIMAX is not set
294# CONFIG_RFKILL is not set 327# CONFIG_RFKILL is not set
295# CONFIG_NET_9P is not set 328# CONFIG_NET_9P is not set
@@ -313,6 +346,10 @@ CONFIG_OF_DEVICE=y
313CONFIG_BLK_DEV=y 346CONFIG_BLK_DEV=y
314# CONFIG_BLK_DEV_COW_COMMON is not set 347# CONFIG_BLK_DEV_COW_COMMON is not set
315# CONFIG_BLK_DEV_LOOP is not set 348# CONFIG_BLK_DEV_LOOP is not set
349
350#
351# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
352#
316# CONFIG_BLK_DEV_NBD is not set 353# CONFIG_BLK_DEV_NBD is not set
317CONFIG_BLK_DEV_RAM=y 354CONFIG_BLK_DEV_RAM=y
318CONFIG_BLK_DEV_RAM_COUNT=16 355CONFIG_BLK_DEV_RAM_COUNT=16
@@ -349,7 +386,6 @@ CONFIG_NETDEVICES=y
349# CONFIG_PHYLIB is not set 386# CONFIG_PHYLIB is not set
350CONFIG_NET_ETHERNET=y 387CONFIG_NET_ETHERNET=y
351# CONFIG_MII is not set 388# CONFIG_MII is not set
352# CONFIG_ETHOC is not set
353# CONFIG_DNET is not set 389# CONFIG_DNET is not set
354# CONFIG_IBM_NEW_EMAC_ZMII is not set 390# CONFIG_IBM_NEW_EMAC_ZMII is not set
355# CONFIG_IBM_NEW_EMAC_RGMII is not set 391# CONFIG_IBM_NEW_EMAC_RGMII is not set
@@ -359,12 +395,12 @@ CONFIG_NET_ETHERNET=y
359# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 395# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
360# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 396# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
361# CONFIG_KS8842 is not set 397# CONFIG_KS8842 is not set
398# CONFIG_KS8851_MLL is not set
362CONFIG_XILINX_EMACLITE=y 399CONFIG_XILINX_EMACLITE=y
363CONFIG_NETDEV_1000=y 400CONFIG_NETDEV_1000=y
364CONFIG_NETDEV_10000=y 401CONFIG_NETDEV_10000=y
365CONFIG_WLAN=y 402CONFIG_WLAN=y
366# CONFIG_WLAN_PRE80211 is not set 403# CONFIG_HOSTAP is not set
367# CONFIG_WLAN_80211 is not set
368 404
369# 405#
370# Enable WiMAX (Networking options) to see the WiMAX drivers 406# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -408,6 +444,7 @@ CONFIG_SERIAL_UARTLITE=y
408CONFIG_SERIAL_UARTLITE_CONSOLE=y 444CONFIG_SERIAL_UARTLITE_CONSOLE=y
409CONFIG_SERIAL_CORE=y 445CONFIG_SERIAL_CORE=y
410CONFIG_SERIAL_CORE_CONSOLE=y 446CONFIG_SERIAL_CORE_CONSOLE=y
447# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
411CONFIG_UNIX98_PTYS=y 448CONFIG_UNIX98_PTYS=y
412# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 449# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
413CONFIG_LEGACY_PTYS=y 450CONFIG_LEGACY_PTYS=y
@@ -433,7 +470,6 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
433# CONFIG_POWER_SUPPLY is not set 470# CONFIG_POWER_SUPPLY is not set
434# CONFIG_HWMON is not set 471# CONFIG_HWMON is not set
435# CONFIG_THERMAL is not set 472# CONFIG_THERMAL is not set
436# CONFIG_THERMAL_HWMON is not set
437# CONFIG_WATCHDOG is not set 473# CONFIG_WATCHDOG is not set
438 474
439# 475#
@@ -526,8 +562,6 @@ CONFIG_PROC_FS=y
526CONFIG_PROC_SYSCTL=y 562CONFIG_PROC_SYSCTL=y
527CONFIG_PROC_PAGE_MONITOR=y 563CONFIG_PROC_PAGE_MONITOR=y
528CONFIG_SYSFS=y 564CONFIG_SYSFS=y
529CONFIG_TMPFS=y
530# CONFIG_TMPFS_POSIX_ACL is not set
531# CONFIG_HUGETLB_PAGE is not set 565# CONFIG_HUGETLB_PAGE is not set
532# CONFIG_CONFIGFS_FS is not set 566# CONFIG_CONFIGFS_FS is not set
533CONFIG_MISC_FILESYSTEMS=y 567CONFIG_MISC_FILESYSTEMS=y
@@ -638,11 +672,13 @@ CONFIG_NLS_DEFAULT="iso8859-1"
638# 672#
639# Kernel hacking 673# Kernel hacking
640# 674#
675CONFIG_TRACE_IRQFLAGS_SUPPORT=y
641# CONFIG_PRINTK_TIME is not set 676# CONFIG_PRINTK_TIME is not set
642CONFIG_ENABLE_WARN_DEPRECATED=y 677CONFIG_ENABLE_WARN_DEPRECATED=y
643CONFIG_ENABLE_MUST_CHECK=y 678CONFIG_ENABLE_MUST_CHECK=y
644CONFIG_FRAME_WARN=1024 679CONFIG_FRAME_WARN=1024
645# CONFIG_MAGIC_SYSRQ is not set 680# CONFIG_MAGIC_SYSRQ is not set
681# CONFIG_STRIP_ASM_SYMS is not set
646# CONFIG_UNUSED_SYMBOLS is not set 682# CONFIG_UNUSED_SYMBOLS is not set
647# CONFIG_DEBUG_FS is not set 683# CONFIG_DEBUG_FS is not set
648# CONFIG_HEADERS_CHECK is not set 684# CONFIG_HEADERS_CHECK is not set
@@ -662,6 +698,9 @@ CONFIG_DEBUG_SLAB=y
662# CONFIG_DEBUG_SLAB_LEAK is not set 698# CONFIG_DEBUG_SLAB_LEAK is not set
663CONFIG_DEBUG_SPINLOCK=y 699CONFIG_DEBUG_SPINLOCK=y
664# CONFIG_DEBUG_MUTEXES is not set 700# CONFIG_DEBUG_MUTEXES is not set
701# CONFIG_DEBUG_LOCK_ALLOC is not set
702# CONFIG_PROVE_LOCKING is not set
703# CONFIG_LOCK_STAT is not set
665# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 704# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
666# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 705# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
667# CONFIG_DEBUG_KOBJECT is not set 706# CONFIG_DEBUG_KOBJECT is not set
@@ -680,10 +719,29 @@ CONFIG_DEBUG_INFO=y
680# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 719# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
681# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set 720# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
682# CONFIG_FAULT_INJECTION is not set 721# CONFIG_FAULT_INJECTION is not set
722# CONFIG_LATENCYTOP is not set
683# CONFIG_SYSCTL_SYSCALL_CHECK is not set 723# CONFIG_SYSCTL_SYSCALL_CHECK is not set
684# CONFIG_PAGE_POISONING is not set 724# CONFIG_PAGE_POISONING is not set
725CONFIG_HAVE_FUNCTION_TRACER=y
726CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
727CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
728CONFIG_HAVE_DYNAMIC_FTRACE=y
729CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
730CONFIG_TRACING_SUPPORT=y
731CONFIG_FTRACE=y
732# CONFIG_FUNCTION_TRACER is not set
733# CONFIG_IRQSOFF_TRACER is not set
734# CONFIG_SCHED_TRACER is not set
735# CONFIG_ENABLE_DEFAULT_TRACERS is not set
736# CONFIG_BOOT_TRACER is not set
737CONFIG_BRANCH_PROFILE_NONE=y
738# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
739# CONFIG_PROFILE_ALL_BRANCHES is not set
740# CONFIG_STACK_TRACER is not set
741# CONFIG_KMEMTRACE is not set
742# CONFIG_WORKQUEUE_TRACER is not set
743# CONFIG_BLK_DEV_IO_TRACE is not set
685# CONFIG_SAMPLES is not set 744# CONFIG_SAMPLES is not set
686# CONFIG_KMEMCHECK is not set
687CONFIG_EARLY_PRINTK=y 745CONFIG_EARLY_PRINTK=y
688# CONFIG_HEART_BEAT is not set 746# CONFIG_HEART_BEAT is not set
689CONFIG_DEBUG_BOOTMEM=y 747CONFIG_DEBUG_BOOTMEM=y
@@ -694,7 +752,11 @@ CONFIG_DEBUG_BOOTMEM=y
694# CONFIG_KEYS is not set 752# CONFIG_KEYS is not set
695# CONFIG_SECURITY is not set 753# CONFIG_SECURITY is not set
696# CONFIG_SECURITYFS is not set 754# CONFIG_SECURITYFS is not set
697# CONFIG_SECURITY_FILE_CAPABILITIES is not set 755# CONFIG_DEFAULT_SECURITY_SELINUX is not set
756# CONFIG_DEFAULT_SECURITY_SMACK is not set
757# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
758CONFIG_DEFAULT_SECURITY_DAC=y
759CONFIG_DEFAULT_SECURITY=""
698CONFIG_CRYPTO=y 760CONFIG_CRYPTO=y
699 761
700# 762#
diff --git a/arch/microblaze/configs/nommu_defconfig b/arch/microblaze/configs/nommu_defconfig
index adb839bab704..ce2da535246a 100644
--- a/arch/microblaze/configs/nommu_defconfig
+++ b/arch/microblaze/configs/nommu_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 3# Linux kernel version: 2.6.33-rc6
4# Thu Sep 24 10:29:43 2009 4# Wed Feb 3 10:03:21 2010
5# 5#
6CONFIG_MICROBLAZE=y 6CONFIG_MICROBLAZE=y
7# CONFIG_SWAP is not set 7# CONFIG_SWAP is not set
@@ -19,8 +19,12 @@ CONFIG_GENERIC_CLOCKEVENTS=y
19CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 19CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
20CONFIG_GENERIC_GPIO=y 20CONFIG_GENERIC_GPIO=y
21CONFIG_GENERIC_CSUM=y 21CONFIG_GENERIC_CSUM=y
22CONFIG_STACKTRACE_SUPPORT=y
23CONFIG_LOCKDEP_SUPPORT=y
24CONFIG_HAVE_LATENCYTOP_SUPPORT=y
22# CONFIG_PCI is not set 25# CONFIG_PCI is not set
23CONFIG_NO_DMA=y 26CONFIG_NO_DMA=y
27CONFIG_DTC=y
24CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 28CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
25CONFIG_CONSTRUCTORS=y 29CONFIG_CONSTRUCTORS=y
26 30
@@ -46,6 +50,7 @@ CONFIG_BSD_PROCESS_ACCT_V3=y
46# 50#
47CONFIG_TREE_RCU=y 51CONFIG_TREE_RCU=y
48# CONFIG_TREE_PREEMPT_RCU is not set 52# CONFIG_TREE_PREEMPT_RCU is not set
53# CONFIG_TINY_RCU is not set
49# CONFIG_RCU_TRACE is not set 54# CONFIG_RCU_TRACE is not set
50CONFIG_RCU_FANOUT=32 55CONFIG_RCU_FANOUT=32
51# CONFIG_RCU_FANOUT_EXACT is not set 56# CONFIG_RCU_FANOUT_EXACT is not set
@@ -81,16 +86,16 @@ CONFIG_EVENTFD=y
81CONFIG_AIO=y 86CONFIG_AIO=y
82 87
83# 88#
84# Performance Counters 89# Kernel Performance Events And Counters
85# 90#
86CONFIG_VM_EVENT_COUNTERS=y 91CONFIG_VM_EVENT_COUNTERS=y
87# CONFIG_STRIP_ASM_SYMS is not set
88CONFIG_COMPAT_BRK=y 92CONFIG_COMPAT_BRK=y
89CONFIG_SLAB=y 93CONFIG_SLAB=y
90# CONFIG_SLUB is not set 94# CONFIG_SLUB is not set
91# CONFIG_SLOB is not set 95# CONFIG_SLOB is not set
96# CONFIG_MMAP_ALLOW_UNINITIALIZED is not set
92# CONFIG_PROFILING is not set 97# CONFIG_PROFILING is not set
93# CONFIG_MARKERS is not set 98CONFIG_HAVE_OPROFILE=y
94 99
95# 100#
96# GCOV-based kernel profiling 101# GCOV-based kernel profiling
@@ -116,14 +121,41 @@ CONFIG_LBDAF=y
116# IO Schedulers 121# IO Schedulers
117# 122#
118CONFIG_IOSCHED_NOOP=y 123CONFIG_IOSCHED_NOOP=y
119CONFIG_IOSCHED_AS=y
120CONFIG_IOSCHED_DEADLINE=y 124CONFIG_IOSCHED_DEADLINE=y
121CONFIG_IOSCHED_CFQ=y 125CONFIG_IOSCHED_CFQ=y
122# CONFIG_DEFAULT_AS is not set
123# CONFIG_DEFAULT_DEADLINE is not set 126# CONFIG_DEFAULT_DEADLINE is not set
124CONFIG_DEFAULT_CFQ=y 127CONFIG_DEFAULT_CFQ=y
125# CONFIG_DEFAULT_NOOP is not set 128# CONFIG_DEFAULT_NOOP is not set
126CONFIG_DEFAULT_IOSCHED="cfq" 129CONFIG_DEFAULT_IOSCHED="cfq"
130# CONFIG_INLINE_SPIN_TRYLOCK is not set
131# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
132# CONFIG_INLINE_SPIN_LOCK is not set
133# CONFIG_INLINE_SPIN_LOCK_BH is not set
134# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
135# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
136CONFIG_INLINE_SPIN_UNLOCK=y
137# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
138CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
139# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
140# CONFIG_INLINE_READ_TRYLOCK is not set
141# CONFIG_INLINE_READ_LOCK is not set
142# CONFIG_INLINE_READ_LOCK_BH is not set
143# CONFIG_INLINE_READ_LOCK_IRQ is not set
144# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
145CONFIG_INLINE_READ_UNLOCK=y
146# CONFIG_INLINE_READ_UNLOCK_BH is not set
147CONFIG_INLINE_READ_UNLOCK_IRQ=y
148# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
149# CONFIG_INLINE_WRITE_TRYLOCK is not set
150# CONFIG_INLINE_WRITE_LOCK is not set
151# CONFIG_INLINE_WRITE_LOCK_BH is not set
152# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
153# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
154CONFIG_INLINE_WRITE_UNLOCK=y
155# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
156CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
157# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
158# CONFIG_MUTEX_SPIN_ON_OWNER is not set
127# CONFIG_FREEZER is not set 159# CONFIG_FREEZER is not set
128 160
129# 161#
@@ -132,7 +164,10 @@ CONFIG_DEFAULT_IOSCHED="cfq"
132CONFIG_PLATFORM_GENERIC=y 164CONFIG_PLATFORM_GENERIC=y
133# CONFIG_SELFMOD is not set 165# CONFIG_SELFMOD is not set
134# CONFIG_OPT_LIB_FUNCTION is not set 166# CONFIG_OPT_LIB_FUNCTION is not set
135# CONFIG_ALLOW_EDIT_AUTO is not set 167
168#
169# Definitions for MICROBLAZE0
170#
136CONFIG_KERNEL_BASE_ADDR=0x90000000 171CONFIG_KERNEL_BASE_ADDR=0x90000000
137CONFIG_XILINX_MICROBLAZE0_FAMILY="virtex5" 172CONFIG_XILINX_MICROBLAZE0_FAMILY="virtex5"
138CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1 173CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1
@@ -190,7 +225,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
190# CONFIG_PHYS_ADDR_T_64BIT is not set 225# CONFIG_PHYS_ADDR_T_64BIT is not set
191CONFIG_ZONE_DMA_FLAG=0 226CONFIG_ZONE_DMA_FLAG=0
192CONFIG_VIRT_TO_BUS=y 227CONFIG_VIRT_TO_BUS=y
193CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
194CONFIG_NOMMU_INITIAL_TRIM_EXCESS=1 228CONFIG_NOMMU_INITIAL_TRIM_EXCESS=1
195 229
196# 230#
@@ -274,9 +308,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
274# CONFIG_AF_RXRPC is not set 308# CONFIG_AF_RXRPC is not set
275CONFIG_WIRELESS=y 309CONFIG_WIRELESS=y
276# CONFIG_CFG80211 is not set 310# CONFIG_CFG80211 is not set
277CONFIG_CFG80211_DEFAULT_PS_VALUE=0
278CONFIG_WIRELESS_OLD_REGULATORY=y
279# CONFIG_WIRELESS_EXT is not set
280# CONFIG_LIB80211 is not set 311# CONFIG_LIB80211 is not set
281 312
282# 313#
@@ -301,9 +332,9 @@ CONFIG_STANDALONE=y
301# CONFIG_CONNECTOR is not set 332# CONFIG_CONNECTOR is not set
302CONFIG_MTD=y 333CONFIG_MTD=y
303# CONFIG_MTD_DEBUG is not set 334# CONFIG_MTD_DEBUG is not set
335# CONFIG_MTD_TESTS is not set
304CONFIG_MTD_CONCAT=y 336CONFIG_MTD_CONCAT=y
305CONFIG_MTD_PARTITIONS=y 337CONFIG_MTD_PARTITIONS=y
306# CONFIG_MTD_TESTS is not set
307# CONFIG_MTD_REDBOOT_PARTS is not set 338# CONFIG_MTD_REDBOOT_PARTS is not set
308CONFIG_MTD_CMDLINE_PARTS=y 339CONFIG_MTD_CMDLINE_PARTS=y
309# CONFIG_MTD_OF_PARTS is not set 340# CONFIG_MTD_OF_PARTS is not set
@@ -387,6 +418,10 @@ CONFIG_OF_DEVICE=y
387CONFIG_BLK_DEV=y 418CONFIG_BLK_DEV=y
388# CONFIG_BLK_DEV_COW_COMMON is not set 419# CONFIG_BLK_DEV_COW_COMMON is not set
389# CONFIG_BLK_DEV_LOOP is not set 420# CONFIG_BLK_DEV_LOOP is not set
421
422#
423# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
424#
390CONFIG_BLK_DEV_NBD=y 425CONFIG_BLK_DEV_NBD=y
391CONFIG_BLK_DEV_RAM=y 426CONFIG_BLK_DEV_RAM=y
392CONFIG_BLK_DEV_RAM_COUNT=16 427CONFIG_BLK_DEV_RAM_COUNT=16
@@ -423,7 +458,6 @@ CONFIG_NETDEVICES=y
423# CONFIG_PHYLIB is not set 458# CONFIG_PHYLIB is not set
424CONFIG_NET_ETHERNET=y 459CONFIG_NET_ETHERNET=y
425# CONFIG_MII is not set 460# CONFIG_MII is not set
426# CONFIG_ETHOC is not set
427# CONFIG_DNET is not set 461# CONFIG_DNET is not set
428# CONFIG_IBM_NEW_EMAC_ZMII is not set 462# CONFIG_IBM_NEW_EMAC_ZMII is not set
429# CONFIG_IBM_NEW_EMAC_RGMII is not set 463# CONFIG_IBM_NEW_EMAC_RGMII is not set
@@ -433,12 +467,12 @@ CONFIG_NET_ETHERNET=y
433# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 467# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
434# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 468# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
435# CONFIG_KS8842 is not set 469# CONFIG_KS8842 is not set
470# CONFIG_KS8851_MLL is not set
436# CONFIG_XILINX_EMACLITE is not set 471# CONFIG_XILINX_EMACLITE is not set
437CONFIG_NETDEV_1000=y 472CONFIG_NETDEV_1000=y
438CONFIG_NETDEV_10000=y 473CONFIG_NETDEV_10000=y
439CONFIG_WLAN=y 474CONFIG_WLAN=y
440# CONFIG_WLAN_PRE80211 is not set 475# CONFIG_HOSTAP is not set
441# CONFIG_WLAN_80211 is not set
442 476
443# 477#
444# Enable WiMAX (Networking options) to see the WiMAX drivers 478# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -482,6 +516,7 @@ CONFIG_SERIAL_UARTLITE=y
482CONFIG_SERIAL_UARTLITE_CONSOLE=y 516CONFIG_SERIAL_UARTLITE_CONSOLE=y
483CONFIG_SERIAL_CORE=y 517CONFIG_SERIAL_CORE=y
484CONFIG_SERIAL_CORE_CONSOLE=y 518CONFIG_SERIAL_CORE_CONSOLE=y
519# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
485CONFIG_UNIX98_PTYS=y 520CONFIG_UNIX98_PTYS=y
486# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 521# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
487CONFIG_LEGACY_PTYS=y 522CONFIG_LEGACY_PTYS=y
@@ -508,7 +543,6 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
508# CONFIG_POWER_SUPPLY is not set 543# CONFIG_POWER_SUPPLY is not set
509# CONFIG_HWMON is not set 544# CONFIG_HWMON is not set
510# CONFIG_THERMAL is not set 545# CONFIG_THERMAL is not set
511# CONFIG_THERMAL_HWMON is not set
512# CONFIG_WATCHDOG is not set 546# CONFIG_WATCHDOG is not set
513 547
514# 548#
@@ -616,7 +650,6 @@ CONFIG_INOTIFY_USER=y
616CONFIG_PROC_FS=y 650CONFIG_PROC_FS=y
617CONFIG_PROC_SYSCTL=y 651CONFIG_PROC_SYSCTL=y
618CONFIG_SYSFS=y 652CONFIG_SYSFS=y
619# CONFIG_TMPFS is not set
620# CONFIG_HUGETLB_PAGE is not set 653# CONFIG_HUGETLB_PAGE is not set
621# CONFIG_CONFIGFS_FS is not set 654# CONFIG_CONFIGFS_FS is not set
622CONFIG_MISC_FILESYSTEMS=y 655CONFIG_MISC_FILESYSTEMS=y
@@ -672,11 +705,13 @@ CONFIG_MSDOS_PARTITION=y
672# 705#
673# Kernel hacking 706# Kernel hacking
674# 707#
708CONFIG_TRACE_IRQFLAGS_SUPPORT=y
675# CONFIG_PRINTK_TIME is not set 709# CONFIG_PRINTK_TIME is not set
676CONFIG_ENABLE_WARN_DEPRECATED=y 710CONFIG_ENABLE_WARN_DEPRECATED=y
677CONFIG_ENABLE_MUST_CHECK=y 711CONFIG_ENABLE_MUST_CHECK=y
678CONFIG_FRAME_WARN=1024 712CONFIG_FRAME_WARN=1024
679# CONFIG_MAGIC_SYSRQ is not set 713# CONFIG_MAGIC_SYSRQ is not set
714# CONFIG_STRIP_ASM_SYMS is not set
680CONFIG_UNUSED_SYMBOLS=y 715CONFIG_UNUSED_SYMBOLS=y
681CONFIG_DEBUG_FS=y 716CONFIG_DEBUG_FS=y
682# CONFIG_HEADERS_CHECK is not set 717# CONFIG_HEADERS_CHECK is not set
@@ -695,12 +730,16 @@ CONFIG_DEBUG_OBJECTS=y
695CONFIG_DEBUG_OBJECTS_SELFTEST=y 730CONFIG_DEBUG_OBJECTS_SELFTEST=y
696CONFIG_DEBUG_OBJECTS_FREE=y 731CONFIG_DEBUG_OBJECTS_FREE=y
697CONFIG_DEBUG_OBJECTS_TIMERS=y 732CONFIG_DEBUG_OBJECTS_TIMERS=y
733# CONFIG_DEBUG_OBJECTS_WORK is not set
698CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1 734CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
699# CONFIG_DEBUG_SLAB is not set 735# CONFIG_DEBUG_SLAB is not set
700# CONFIG_DEBUG_RT_MUTEXES is not set 736# CONFIG_DEBUG_RT_MUTEXES is not set
701# CONFIG_RT_MUTEX_TESTER is not set 737# CONFIG_RT_MUTEX_TESTER is not set
702# CONFIG_DEBUG_SPINLOCK is not set 738# CONFIG_DEBUG_SPINLOCK is not set
703# CONFIG_DEBUG_MUTEXES is not set 739# CONFIG_DEBUG_MUTEXES is not set
740# CONFIG_DEBUG_LOCK_ALLOC is not set
741# CONFIG_PROVE_LOCKING is not set
742# CONFIG_LOCK_STAT is not set
704# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 743# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
705# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 744# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
706# CONFIG_DEBUG_KOBJECT is not set 745# CONFIG_DEBUG_KOBJECT is not set
@@ -720,8 +759,28 @@ CONFIG_DEBUG_SG=y
720# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 759# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
721# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set 760# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
722# CONFIG_FAULT_INJECTION is not set 761# CONFIG_FAULT_INJECTION is not set
762# CONFIG_LATENCYTOP is not set
723CONFIG_SYSCTL_SYSCALL_CHECK=y 763CONFIG_SYSCTL_SYSCALL_CHECK=y
724# CONFIG_PAGE_POISONING is not set 764# CONFIG_PAGE_POISONING is not set
765CONFIG_HAVE_FUNCTION_TRACER=y
766CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
767CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
768CONFIG_HAVE_DYNAMIC_FTRACE=y
769CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
770CONFIG_TRACING_SUPPORT=y
771CONFIG_FTRACE=y
772# CONFIG_FUNCTION_TRACER is not set
773# CONFIG_IRQSOFF_TRACER is not set
774# CONFIG_SCHED_TRACER is not set
775# CONFIG_ENABLE_DEFAULT_TRACERS is not set
776# CONFIG_BOOT_TRACER is not set
777CONFIG_BRANCH_PROFILE_NONE=y
778# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
779# CONFIG_PROFILE_ALL_BRANCHES is not set
780# CONFIG_STACK_TRACER is not set
781# CONFIG_KMEMTRACE is not set
782# CONFIG_WORKQUEUE_TRACER is not set
783# CONFIG_BLK_DEV_IO_TRACE is not set
725# CONFIG_DYNAMIC_DEBUG is not set 784# CONFIG_DYNAMIC_DEBUG is not set
726# CONFIG_SAMPLES is not set 785# CONFIG_SAMPLES is not set
727CONFIG_EARLY_PRINTK=y 786CONFIG_EARLY_PRINTK=y
@@ -734,7 +793,11 @@ CONFIG_EARLY_PRINTK=y
734# CONFIG_KEYS is not set 793# CONFIG_KEYS is not set
735# CONFIG_SECURITY is not set 794# CONFIG_SECURITY is not set
736# CONFIG_SECURITYFS is not set 795# CONFIG_SECURITYFS is not set
737# CONFIG_SECURITY_FILE_CAPABILITIES is not set 796# CONFIG_DEFAULT_SECURITY_SELINUX is not set
797# CONFIG_DEFAULT_SECURITY_SMACK is not set
798# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
799CONFIG_DEFAULT_SECURITY_DAC=y
800CONFIG_DEFAULT_SECURITY=""
738CONFIG_CRYPTO=y 801CONFIG_CRYPTO=y
739 802
740# 803#
diff --git a/arch/microblaze/include/asm/io.h b/arch/microblaze/include/asm/io.h
index fc9997b73c09..267c7c779e53 100644
--- a/arch/microblaze/include/asm/io.h
+++ b/arch/microblaze/include/asm/io.h
@@ -217,7 +217,7 @@ static inline void __iomem *__ioremap(phys_addr_t address, unsigned long size,
217 * Little endian 217 * Little endian
218 */ 218 */
219 219
220#define out_le32(a, v) __raw_writel(__cpu_to_le32(v), (a)); 220#define out_le32(a, v) __raw_writel(__cpu_to_le32(v), (a))
221#define out_le16(a, v) __raw_writew(__cpu_to_le16(v), (a)) 221#define out_le16(a, v) __raw_writew(__cpu_to_le16(v), (a))
222 222
223#define in_le32(a) __le32_to_cpu(__raw_readl(a)) 223#define in_le32(a) __le32_to_cpu(__raw_readl(a))
diff --git a/arch/microblaze/include/asm/ptrace.h b/arch/microblaze/include/asm/ptrace.h
index a917dc517736..d74dbfb92c04 100644
--- a/arch/microblaze/include/asm/ptrace.h
+++ b/arch/microblaze/include/asm/ptrace.h
@@ -54,6 +54,7 @@ struct pt_regs {
54 int pt_mode; 54 int pt_mode;
55}; 55};
56 56
57#ifdef __KERNEL__
57#define kernel_mode(regs) ((regs)->pt_mode) 58#define kernel_mode(regs) ((regs)->pt_mode)
58#define user_mode(regs) (!kernel_mode(regs)) 59#define user_mode(regs) (!kernel_mode(regs))
59 60
@@ -62,6 +63,19 @@ struct pt_regs {
62 63
63void show_regs(struct pt_regs *); 64void show_regs(struct pt_regs *);
64 65
66#else /* __KERNEL__ */
67
68/* pt_regs offsets used by gdbserver etc in ptrace syscalls */
69#define PT_GPR(n) ((n) * sizeof(microblaze_reg_t))
70#define PT_PC (32 * sizeof(microblaze_reg_t))
71#define PT_MSR (33 * sizeof(microblaze_reg_t))
72#define PT_EAR (34 * sizeof(microblaze_reg_t))
73#define PT_ESR (35 * sizeof(microblaze_reg_t))
74#define PT_FSR (36 * sizeof(microblaze_reg_t))
75#define PT_KERNEL_MODE (37 * sizeof(microblaze_reg_t))
76
77#endif /* __KERNEL */
78
65#endif /* __ASSEMBLY__ */ 79#endif /* __ASSEMBLY__ */
66 80
67#endif /* _ASM_MICROBLAZE_PTRACE_H */ 81#endif /* _ASM_MICROBLAZE_PTRACE_H */
diff --git a/arch/microblaze/include/asm/unistd.h b/arch/microblaze/include/asm/unistd.h
index cb05a07e55e9..2b67e92a773c 100644
--- a/arch/microblaze/include/asm/unistd.h
+++ b/arch/microblaze/include/asm/unistd.h
@@ -377,13 +377,14 @@
377#define __NR_shutdown 359 /* new */ 377#define __NR_shutdown 359 /* new */
378#define __NR_sendmsg 360 /* new */ 378#define __NR_sendmsg 360 /* new */
379#define __NR_recvmsg 361 /* new */ 379#define __NR_recvmsg 361 /* new */
380#define __NR_accept04 362 /* new */ 380#define __NR_accept4 362 /* new */
381#define __NR_preadv 363 /* new */ 381#define __NR_preadv 363 /* new */
382#define __NR_pwritev 364 /* new */ 382#define __NR_pwritev 364 /* new */
383#define __NR_rt_tgsigqueueinfo 365 /* new */ 383#define __NR_rt_tgsigqueueinfo 365 /* new */
384#define __NR_perf_event_open 366 /* new */ 384#define __NR_perf_event_open 366 /* new */
385#define __NR_recvmmsg 367 /* new */
385 386
386#define __NR_syscalls 367 387#define __NR_syscalls 368
387 388
388#ifdef __KERNEL__ 389#ifdef __KERNEL__
389#ifndef __ASSEMBLY__ 390#ifndef __ASSEMBLY__
diff --git a/arch/microblaze/kernel/cpu/cache.c b/arch/microblaze/kernel/cpu/cache.c
index d9d63831cc2f..2a56bccce4e0 100644
--- a/arch/microblaze/kernel/cpu/cache.c
+++ b/arch/microblaze/kernel/cpu/cache.c
@@ -172,16 +172,15 @@ do { \
172/* It is used only first parameter for OP - for wic, wdc */ 172/* It is used only first parameter for OP - for wic, wdc */
173#define CACHE_RANGE_LOOP_1(start, end, line_length, op) \ 173#define CACHE_RANGE_LOOP_1(start, end, line_length, op) \
174do { \ 174do { \
175 int step = -line_length; \ 175 int volatile temp; \
176 int count = end - start; \ 176 BUG_ON(end - start <= 0); \
177 BUG_ON(count <= 0); \
178 \ 177 \
179 __asm__ __volatile__ (" 1: addk %0, %0, %1; \ 178 __asm__ __volatile__ (" 1: " #op " %1, r0; \
180 " #op " %0, r0; \ 179 cmpu %0, %1, %2; \
181 bgtid %1, 1b; \ 180 bgtid %0, 1b; \
182 addk %1, %1, %2; \ 181 addk %1, %1, %3; \
183 " : : "r" (start), "r" (count), \ 182 " : : "r" (temp), "r" (start), "r" (end),\
184 "r" (step) : "memory"); \ 183 "r" (line_length) : "memory"); \
185} while (0); 184} while (0);
186 185
187static void __flush_icache_range_msr_irq(unsigned long start, unsigned long end) 186static void __flush_icache_range_msr_irq(unsigned long start, unsigned long end)
@@ -313,16 +312,6 @@ static void __invalidate_dcache_all_wb(void)
313 pr_debug("%s\n", __func__); 312 pr_debug("%s\n", __func__);
314 CACHE_ALL_LOOP2(cpuinfo.dcache_size, cpuinfo.dcache_line_length, 313 CACHE_ALL_LOOP2(cpuinfo.dcache_size, cpuinfo.dcache_line_length,
315 wdc.clear) 314 wdc.clear)
316
317#if 0
318 unsigned int i;
319
320 pr_debug("%s\n", __func__);
321
322 /* Just loop through cache size and invalidate it */
323 for (i = 0; i < cpuinfo.dcache_size; i += cpuinfo.dcache_line_length)
324 __invalidate_dcache(0, i);
325#endif
326} 315}
327 316
328static void __invalidate_dcache_range_wb(unsigned long start, 317static void __invalidate_dcache_range_wb(unsigned long start,
diff --git a/arch/microblaze/kernel/entry-nommu.S b/arch/microblaze/kernel/entry-nommu.S
index 95b0855802df..391d6197fc3b 100644
--- a/arch/microblaze/kernel/entry-nommu.S
+++ b/arch/microblaze/kernel/entry-nommu.S
@@ -122,7 +122,7 @@ ENTRY(_interrupt)
122 122
123ret_from_intr: 123ret_from_intr:
124 lwi r11, r1, PT_MODE 124 lwi r11, r1, PT_MODE
125 bneid r11, 3f 125 bneid r11, no_intr_resched
126 126
127 lwi r6, r31, TS_THREAD_INFO /* get thread info */ 127 lwi r6, r31, TS_THREAD_INFO /* get thread info */
128 lwi r19, r6, TI_FLAGS /* get flags in thread info */ 128 lwi r19, r6, TI_FLAGS /* get flags in thread info */
@@ -133,16 +133,18 @@ ret_from_intr:
133 bralid r15, schedule 133 bralid r15, schedule
134 nop 134 nop
1351: andi r11, r19, _TIF_SIGPENDING 1351: andi r11, r19, _TIF_SIGPENDING
136 beqid r11, no_intr_reshed 136 beqid r11, no_intr_resched
137 addk r5, r1, r0 137 addk r5, r1, r0
138 addk r7, r0, r0 138 addk r7, r0, r0
139 bralid r15, do_signal 139 bralid r15, do_signal
140 addk r6, r0, r0 140 addk r6, r0, r0
141 141
142no_intr_reshed: 142no_intr_resched:
143 /* Disable interrupts, we are now committed to the state restore */
144 disable_irq
145
143 /* save mode indicator */ 146 /* save mode indicator */
144 lwi r11, r1, PT_MODE 147 lwi r11, r1, PT_MODE
1453:
146 swi r11, r0, PER_CPU(KM) 148 swi r11, r0, PER_CPU(KM)
147 149
148 /* save r31 */ 150 /* save r31 */
diff --git a/arch/microblaze/kernel/prom_parse.c b/arch/microblaze/kernel/prom_parse.c
index ae0352ecd5a9..bf7e6c27e318 100644
--- a/arch/microblaze/kernel/prom_parse.c
+++ b/arch/microblaze/kernel/prom_parse.c
@@ -256,7 +256,7 @@ int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq)
256 if (ppdev == NULL) { 256 if (ppdev == NULL) {
257 struct pci_controller *host; 257 struct pci_controller *host;
258 host = pci_bus_to_host(pdev->bus); 258 host = pci_bus_to_host(pdev->bus);
259 ppnode = host ? host->arch_data : NULL; 259 ppnode = host ? host->dn : NULL;
260 /* No node for host bridge ? give up */ 260 /* No node for host bridge ? give up */
261 if (ppnode == NULL) 261 if (ppnode == NULL)
262 return -EINVAL; 262 return -EINVAL;
diff --git a/arch/microblaze/kernel/setup.c b/arch/microblaze/kernel/setup.c
index 5372b24ad049..bb8c4b9ccb80 100644
--- a/arch/microblaze/kernel/setup.c
+++ b/arch/microblaze/kernel/setup.c
@@ -54,6 +54,7 @@ void __init setup_arch(char **cmdline_p)
54 54
55 microblaze_cache_init(); 55 microblaze_cache_init();
56 56
57 invalidate_dcache();
57 enable_dcache(); 58 enable_dcache();
58 59
59 invalidate_icache(); 60 invalidate_icache();
diff --git a/arch/microblaze/kernel/syscall_table.S b/arch/microblaze/kernel/syscall_table.S
index 4088be7d4e29..03376dc814c9 100644
--- a/arch/microblaze/kernel/syscall_table.S
+++ b/arch/microblaze/kernel/syscall_table.S
@@ -366,7 +366,7 @@ ENTRY(sys_call_table)
366 .long sys_shutdown 366 .long sys_shutdown
367 .long sys_sendmsg /* 360 */ 367 .long sys_sendmsg /* 360 */
368 .long sys_recvmsg 368 .long sys_recvmsg
369 .long sys_ni_syscall 369 .long sys_accept4
370 .long sys_ni_syscall 370 .long sys_ni_syscall
371 .long sys_ni_syscall 371 .long sys_ni_syscall
372 .long sys_rt_tgsigqueueinfo /* 365 */ 372 .long sys_rt_tgsigqueueinfo /* 365 */
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 9541171f1220..8b5d174685f0 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -1311,6 +1311,7 @@ config SYS_SUPPORTS_ZBOOT
1311 select HAVE_KERNEL_GZIP 1311 select HAVE_KERNEL_GZIP
1312 select HAVE_KERNEL_BZIP2 1312 select HAVE_KERNEL_BZIP2
1313 select HAVE_KERNEL_LZMA 1313 select HAVE_KERNEL_LZMA
1314 select HAVE_KERNEL_LZO
1314 1315
1315config SYS_SUPPORTS_ZBOOT_UART16550 1316config SYS_SUPPORTS_ZBOOT_UART16550
1316 bool 1317 bool
diff --git a/arch/mips/alchemy/common/dbdma.c b/arch/mips/alchemy/common/dbdma.c
index 19c1c82849ff..f9201ca2295b 100644
--- a/arch/mips/alchemy/common/dbdma.c
+++ b/arch/mips/alchemy/common/dbdma.c
@@ -412,8 +412,11 @@ u32 au1xxx_dbdma_ring_alloc(u32 chanid, int entries)
412 if (desc_base == 0) 412 if (desc_base == 0)
413 return 0; 413 return 0;
414 414
415 ctp->cdb_membase = desc_base;
415 desc_base = ALIGN_ADDR(desc_base, sizeof(au1x_ddma_desc_t)); 416 desc_base = ALIGN_ADDR(desc_base, sizeof(au1x_ddma_desc_t));
416 } 417 } else
418 ctp->cdb_membase = desc_base;
419
417 dp = (au1x_ddma_desc_t *)desc_base; 420 dp = (au1x_ddma_desc_t *)desc_base;
418 421
419 /* Keep track of the base descriptor. */ 422 /* Keep track of the base descriptor. */
@@ -613,7 +616,7 @@ u32 _au1xxx_dbdma_put_source(u32 chanid, void *buf, int nbytes, u32 flags)
613 dma_cache_wback_inv((unsigned long)buf, nbytes); 616 dma_cache_wback_inv((unsigned long)buf, nbytes);
614 dp->dscr_cmd0 |= DSCR_CMD0_V; /* Let it rip */ 617 dp->dscr_cmd0 |= DSCR_CMD0_V; /* Let it rip */
615 au_sync(); 618 au_sync();
616 dma_cache_wback_inv((unsigned long)dp, sizeof(dp)); 619 dma_cache_wback_inv((unsigned long)dp, sizeof(*dp));
617 ctp->chan_ptr->ddma_dbell = 0; 620 ctp->chan_ptr->ddma_dbell = 0;
618 621
619 /* Get next descriptor pointer. */ 622 /* Get next descriptor pointer. */
@@ -676,7 +679,7 @@ _au1xxx_dbdma_put_dest(u32 chanid, void *buf, int nbytes, u32 flags)
676 dma_cache_inv((unsigned long)buf, nbytes); 679 dma_cache_inv((unsigned long)buf, nbytes);
677 dp->dscr_cmd0 |= DSCR_CMD0_V; /* Let it rip */ 680 dp->dscr_cmd0 |= DSCR_CMD0_V; /* Let it rip */
678 au_sync(); 681 au_sync();
679 dma_cache_wback_inv((unsigned long)dp, sizeof(dp)); 682 dma_cache_wback_inv((unsigned long)dp, sizeof(*dp));
680 ctp->chan_ptr->ddma_dbell = 0; 683 ctp->chan_ptr->ddma_dbell = 0;
681 684
682 /* Get next descriptor pointer. */ 685 /* Get next descriptor pointer. */
@@ -831,7 +834,7 @@ void au1xxx_dbdma_chan_free(u32 chanid)
831 834
832 au1xxx_dbdma_stop(chanid); 835 au1xxx_dbdma_stop(chanid);
833 836
834 kfree((void *)ctp->chan_desc_base); 837 kfree((void *)ctp->cdb_membase);
835 838
836 stp->dev_flags &= ~DEV_FLAGS_INUSE; 839 stp->dev_flags &= ~DEV_FLAGS_INUSE;
837 dtp->dev_flags &= ~DEV_FLAGS_INUSE; 840 dtp->dev_flags &= ~DEV_FLAGS_INUSE;
diff --git a/arch/mips/ar7/platform.c b/arch/mips/ar7/platform.c
index 85169c08d8dc..f70a10a8cc96 100644
--- a/arch/mips/ar7/platform.c
+++ b/arch/mips/ar7/platform.c
@@ -202,7 +202,7 @@ static struct resource usb_res[] = {
202 .name = "mem", 202 .name = "mem",
203 .flags = IORESOURCE_MEM, 203 .flags = IORESOURCE_MEM,
204 .start = 0x03400000, 204 .start = 0x03400000,
205 .end = 0x034001fff, 205 .end = 0x03401fff,
206 }, 206 },
207}; 207};
208 208
diff --git a/arch/mips/ar7/prom.c b/arch/mips/ar7/prom.c
index 5ad6f1db6567..c1fdd3682812 100644
--- a/arch/mips/ar7/prom.c
+++ b/arch/mips/ar7/prom.c
@@ -219,14 +219,6 @@ static void __init console_config(void)
219 if (strstr(prom_getcmdline(), "console=")) 219 if (strstr(prom_getcmdline(), "console="))
220 return; 220 return;
221 221
222#ifdef CONFIG_KGDB
223 if (!strstr(prom_getcmdline(), "nokgdb")) {
224 strcat(prom_getcmdline(), " console=kgdb");
225 kgdb_enabled = 1;
226 return;
227 }
228#endif
229
230 s = prom_getenv("modetty0"); 222 s = prom_getenv("modetty0");
231 if (s) { 223 if (s) {
232 baud = simple_strtoul(s, &p, 10); 224 baud = simple_strtoul(s, &p, 10);
@@ -280,13 +272,6 @@ static inline void serial_out(int offset, int value)
280 writel(value, (void *)PORT(offset)); 272 writel(value, (void *)PORT(offset));
281} 273}
282 274
283char prom_getchar(void)
284{
285 while (!(serial_in(UART_LSR) & UART_LSR_DR))
286 ;
287 return serial_in(UART_RX);
288}
289
290int prom_putchar(char c) 275int prom_putchar(char c)
291{ 276{
292 while ((serial_in(UART_LSR) & UART_LSR_TEMT) == 0) 277 while ((serial_in(UART_LSR) & UART_LSR_TEMT) == 0)
diff --git a/arch/mips/bcm47xx/prom.c b/arch/mips/bcm47xx/prom.c
index c51405e57921..29d3cbf9555f 100644
--- a/arch/mips/bcm47xx/prom.c
+++ b/arch/mips/bcm47xx/prom.c
@@ -141,6 +141,14 @@ static __init void prom_init_mem(void)
141 break; 141 break;
142 } 142 }
143 143
144 /* Ignoring the last page when ddr size is 128M. Cached
145 * accesses to last page is causing the processor to prefetch
146 * using address above 128M stepping out of the ddr address
147 * space.
148 */
149 if (mem == 0x8000000)
150 mem -= 0x1000;
151
144 add_memory_region(0, mem, BOOT_MEM_RAM); 152 add_memory_region(0, mem, BOOT_MEM_RAM);
145} 153}
146 154
diff --git a/arch/mips/bcm63xx/boards/board_bcm963xx.c b/arch/mips/bcm63xx/boards/board_bcm963xx.c
index 05a35cf5963d..1fe412c43171 100644
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -346,27 +346,26 @@ static struct board_info __initdata board_96348gw = {
346}; 346};
347 347
348static struct board_info __initdata board_FAST2404 = { 348static struct board_info __initdata board_FAST2404 = {
349 .name = "F@ST2404", 349 .name = "F@ST2404",
350 .expected_cpu_id = 0x6348, 350 .expected_cpu_id = 0x6348,
351
352 .has_enet0 = 1,
353 .has_enet1 = 1,
354 .has_pci = 1,
355 351
356 .enet0 = { 352 .has_enet0 = 1,
357 .has_phy = 1, 353 .has_enet1 = 1,
358 .use_internal_phy = 1, 354 .has_pci = 1,
359 },
360 355
361 .enet1 = { 356 .enet0 = {
362 .force_speed_100 = 1, 357 .has_phy = 1,
363 .force_duplex_full = 1, 358 .use_internal_phy = 1,
364 }, 359 },
365 360
361 .enet1 = {
362 .force_speed_100 = 1,
363 .force_duplex_full = 1,
364 },
366 365
367 .has_ohci0 = 1, 366 .has_ohci0 = 1,
368 .has_pccard = 1, 367 .has_pccard = 1,
369 .has_ehci0 = 1, 368 .has_ehci0 = 1,
370}; 369};
371 370
372static struct board_info __initdata board_DV201AMR = { 371static struct board_info __initdata board_DV201AMR = {
diff --git a/arch/mips/bcm63xx/prom.c b/arch/mips/bcm63xx/prom.c
index fb284fbc5853..be252efa0757 100644
--- a/arch/mips/bcm63xx/prom.c
+++ b/arch/mips/bcm63xx/prom.c
@@ -40,9 +40,6 @@ void __init prom_init(void)
40 reg &= ~mask; 40 reg &= ~mask;
41 bcm_perf_writel(reg, PERF_CKCTL_REG); 41 bcm_perf_writel(reg, PERF_CKCTL_REG);
42 42
43 /* assign command line from kernel config */
44 strcpy(arcs_cmdline, CONFIG_CMDLINE);
45
46 /* register gpiochip */ 43 /* register gpiochip */
47 bcm63xx_gpio_init(); 44 bcm63xx_gpio_init();
48 45
diff --git a/arch/mips/boot/.gitignore b/arch/mips/boot/.gitignore
index ba63401c6e10..4667a5f9280b 100644
--- a/arch/mips/boot/.gitignore
+++ b/arch/mips/boot/.gitignore
@@ -1,4 +1,5 @@
1mkboot 1mkboot
2elf2ecoff 2elf2ecoff
3vmlinux.*
3zImage 4zImage
4zImage.tmp 5zImage.tmp
diff --git a/arch/mips/boot/Makefile b/arch/mips/boot/Makefile
index 094bc84765a3..e39a08edcaaa 100644
--- a/arch/mips/boot/Makefile
+++ b/arch/mips/boot/Makefile
@@ -28,7 +28,7 @@ VMLINUX = vmlinux
28all: vmlinux.ecoff vmlinux.srec 28all: vmlinux.ecoff vmlinux.srec
29 29
30vmlinux.ecoff: $(obj)/elf2ecoff $(VMLINUX) 30vmlinux.ecoff: $(obj)/elf2ecoff $(VMLINUX)
31 $(obj)/elf2ecoff $(VMLINUX) vmlinux.ecoff $(E2EFLAGS) 31 $(obj)/elf2ecoff $(VMLINUX) $(obj)/vmlinux.ecoff $(E2EFLAGS)
32 32
33$(obj)/elf2ecoff: $(obj)/elf2ecoff.c 33$(obj)/elf2ecoff: $(obj)/elf2ecoff.c
34 $(HOSTCC) -o $@ $^ 34 $(HOSTCC) -o $@ $^
diff --git a/arch/mips/boot/compressed/Makefile b/arch/mips/boot/compressed/Makefile
index e27f40bbd4e5..9df903d714d7 100644
--- a/arch/mips/boot/compressed/Makefile
+++ b/arch/mips/boot/compressed/Makefile
@@ -14,8 +14,11 @@
14 14
15# compressed kernel load addr: VMLINUZ_LOAD_ADDRESS > VMLINUX_LOAD_ADDRESS + VMLINUX_SIZE 15# compressed kernel load addr: VMLINUZ_LOAD_ADDRESS > VMLINUX_LOAD_ADDRESS + VMLINUX_SIZE
16VMLINUX_SIZE := $(shell wc -c $(objtree)/$(KBUILD_IMAGE) 2>/dev/null | cut -d' ' -f1) 16VMLINUX_SIZE := $(shell wc -c $(objtree)/$(KBUILD_IMAGE) 2>/dev/null | cut -d' ' -f1)
17VMLINUX_SIZE := $(shell [ -n "$(VMLINUX_SIZE)" ] && echo $$(($(VMLINUX_SIZE) + (65536 - $(VMLINUX_SIZE) % 65536)))) 17VMLINUX_SIZE := $(shell [ -n "$(VMLINUX_SIZE)" ] && echo -n $$(($(VMLINUX_SIZE) + (65536 - $(VMLINUX_SIZE) % 65536))))
18VMLINUZ_LOAD_ADDRESS := 0x$(shell [ -n "$(VMLINUX_SIZE)" ] && printf %x $$(($(VMLINUX_LOAD_ADDRESS) + $(VMLINUX_SIZE)))) 18# VMLINUZ_LOAD_ADDRESS = concat "high32 of VMLINUX_LOAD_ADDRESS" and "(low32 of VMLINUX_LOAD_ADDRESS) + VMLINUX_SIZE"
19HIGH32 := $(shell A=$(VMLINUX_LOAD_ADDRESS); [ $${\#A} -gt 10 ] && expr substr "$(VMLINUX_LOAD_ADDRESS)" 3 $$(($${\#A} - 10)))
20LOW32 := $(shell [ -n "$(HIGH32)" ] && A=11 || A=3; expr substr "$(VMLINUX_LOAD_ADDRESS)" $${A} 8)
21VMLINUZ_LOAD_ADDRESS := 0x$(shell [ -n "$(VMLINUX_SIZE)" -a -n "$(LOW32)" ] && printf "$(HIGH32)%08x" $$(($(VMLINUX_SIZE) + 0x$(LOW32))))
19 22
20# set the default size of the mallocing area for decompressing 23# set the default size of the mallocing area for decompressing
21BOOT_HEAP_SIZE := 0x400000 24BOOT_HEAP_SIZE := 0x400000
@@ -41,9 +44,11 @@ $(obj)/vmlinux.bin: $(KBUILD_IMAGE)
41suffix_$(CONFIG_KERNEL_GZIP) = gz 44suffix_$(CONFIG_KERNEL_GZIP) = gz
42suffix_$(CONFIG_KERNEL_BZIP2) = bz2 45suffix_$(CONFIG_KERNEL_BZIP2) = bz2
43suffix_$(CONFIG_KERNEL_LZMA) = lzma 46suffix_$(CONFIG_KERNEL_LZMA) = lzma
47suffix_$(CONFIG_KERNEL_LZO) = lzo
44tool_$(CONFIG_KERNEL_GZIP) = gzip 48tool_$(CONFIG_KERNEL_GZIP) = gzip
45tool_$(CONFIG_KERNEL_BZIP2) = bzip2 49tool_$(CONFIG_KERNEL_BZIP2) = bzip2
46tool_$(CONFIG_KERNEL_LZMA) = lzma 50tool_$(CONFIG_KERNEL_LZMA) = lzma
51tool_$(CONFIG_KERNEL_LZO) = lzo
47$(obj)/vmlinux.$(suffix_y): $(obj)/vmlinux.bin 52$(obj)/vmlinux.$(suffix_y): $(obj)/vmlinux.bin
48 $(call if_changed,$(tool_y)) 53 $(call if_changed,$(tool_y))
49 54
@@ -56,7 +61,7 @@ $(obj)/piggy.o: $(obj)/vmlinux.$(suffix_y) $(obj)/dummy.o
56LDFLAGS_vmlinuz := $(LDFLAGS) -Ttext $(VMLINUZ_LOAD_ADDRESS) -T 61LDFLAGS_vmlinuz := $(LDFLAGS) -Ttext $(VMLINUZ_LOAD_ADDRESS) -T
57vmlinuz: $(src)/ld.script $(obj-y) $(obj)/piggy.o 62vmlinuz: $(src)/ld.script $(obj-y) $(obj)/piggy.o
58 $(call if_changed,ld) 63 $(call if_changed,ld)
59 $(Q)$(OBJCOPY) $(OBJCOPYFLAGS) -R .comment -R .stab -R .stabstr -R .initrd -R .sysmap $@ 64 $(Q)$(OBJCOPY) $(OBJCOPYFLAGS) $@
60 65
61# 66#
62# Some DECstations need all possible sections of an ECOFF executable 67# Some DECstations need all possible sections of an ECOFF executable
@@ -84,14 +89,11 @@ vmlinuz.ecoff: $(obj)/../elf2ecoff $(VMLINUZ)
84$(obj)/../elf2ecoff: $(src)/../elf2ecoff.c 89$(obj)/../elf2ecoff: $(src)/../elf2ecoff.c
85 $(Q)$(HOSTCC) -o $@ $^ 90 $(Q)$(HOSTCC) -o $@ $^
86 91
87drop-sections = .reginfo .mdebug .comment .note .pdr .options .MIPS.options 92OBJCOPYFLAGS_vmlinuz.bin := $(OBJCOPYFLAGS) -O binary
88strip-flags = $(addprefix --remove-section=,$(drop-sections))
89
90OBJCOPYFLAGS_vmlinuz.bin := $(OBJCOPYFLAGS) -O binary $(strip-flags)
91vmlinuz.bin: vmlinuz 93vmlinuz.bin: vmlinuz
92 $(call if_changed,objcopy) 94 $(call if_changed,objcopy)
93 95
94OBJCOPYFLAGS_vmlinuz.srec := $(OBJCOPYFLAGS) -S -O srec $(strip-flags) 96OBJCOPYFLAGS_vmlinuz.srec := $(OBJCOPYFLAGS) -S -O srec
95vmlinuz.srec: vmlinuz 97vmlinuz.srec: vmlinuz
96 $(call if_changed,objcopy) 98 $(call if_changed,objcopy)
97 99
diff --git a/arch/mips/boot/compressed/decompress.c b/arch/mips/boot/compressed/decompress.c
index 67330c2f7318..55d02b3a6712 100644
--- a/arch/mips/boot/compressed/decompress.c
+++ b/arch/mips/boot/compressed/decompress.c
@@ -28,8 +28,6 @@ char *zimage_start;
28 28
29/* The linker tells us where the image is. */ 29/* The linker tells us where the image is. */
30extern unsigned char __image_begin, __image_end; 30extern unsigned char __image_begin, __image_end;
31extern unsigned char __ramdisk_begin, __ramdisk_end;
32unsigned long initrd_size;
33 31
34/* debug interfaces */ 32/* debug interfaces */
35extern void puts(const char *s); 33extern void puts(const char *s);
@@ -79,6 +77,10 @@ void *memset(void *s, int c, size_t n)
79#include "../../../../lib/decompress_unlzma.c" 77#include "../../../../lib/decompress_unlzma.c"
80#endif 78#endif
81 79
80#ifdef CONFIG_KERNEL_LZO
81#include "../../../../lib/decompress_unlzo.c"
82#endif
83
82void decompress_kernel(unsigned long boot_heap_start) 84void decompress_kernel(unsigned long boot_heap_start)
83{ 85{
84 int zimage_size; 86 int zimage_size;
@@ -102,14 +104,6 @@ void decompress_kernel(unsigned long boot_heap_start)
102 puthex((unsigned long)(zimage_size + zimage_start)); 104 puthex((unsigned long)(zimage_size + zimage_start));
103 puts("\n"); 105 puts("\n");
104 106
105 if (initrd_size) {
106 puts("initrd at: ");
107 puthex((unsigned long)(&__ramdisk_begin));
108 puts(" ");
109 puthex((unsigned long)(&__ramdisk_end));
110 puts("\n");
111 }
112
113 /* this area are prepared for mallocing when decompressing */ 107 /* this area are prepared for mallocing when decompressing */
114 free_mem_ptr = boot_heap_start; 108 free_mem_ptr = boot_heap_start;
115 free_mem_end_ptr = boot_heap_start + BOOT_HEAP_SIZE; 109 free_mem_end_ptr = boot_heap_start + BOOT_HEAP_SIZE;
diff --git a/arch/mips/boot/compressed/ld.script b/arch/mips/boot/compressed/ld.script
index 29e9f4c0d5d8..613a35b02f50 100644
--- a/arch/mips/boot/compressed/ld.script
+++ b/arch/mips/boot/compressed/ld.script
@@ -1,150 +1,67 @@
1/*
2 * ld.script for compressed kernel support of MIPS
3 *
4 * Copyright (C) 2009 Lemote Inc.
5 * Author: Wu Zhangjin <wuzj@lemote.com>
6 */
7
1OUTPUT_ARCH(mips) 8OUTPUT_ARCH(mips)
2ENTRY(start) 9ENTRY(start)
3SECTIONS 10SECTIONS
4{ 11{
5 /* Read-only sections, merged into text segment: */ 12 /* . = VMLINUZ_LOAD_ADDRESS */
6 .init : { *(.init) } =0 13 /* read-only */
7 .text : 14 _text = .; /* Text and read-only data */
8 { 15 .text : {
9 _ftext = . ; 16 _ftext = . ;
10 *(.text) 17 *(.text)
11 *(.rodata) 18 *(.rodata)
12 *(.rodata1) 19 } = 0
13 /* .gnu.warning sections are handled specially by elf32.em. */ 20 _etext = .; /* End of text section */
14 *(.gnu.warning)
15 } =0
16 .kstrtab : { *(.kstrtab) }
17
18 . = ALIGN(16); /* Exception table */
19 __start___ex_table = .;
20 __ex_table : { *(__ex_table) }
21 __stop___ex_table = .;
22
23 __start___dbe_table = .; /* Exception table for data bus errors */
24 __dbe_table : { *(__dbe_table) }
25 __stop___dbe_table = .;
26
27 __start___ksymtab = .; /* Kernel symbol table */
28 __ksymtab : { *(__ksymtab) }
29 __stop___ksymtab = .;
30
31 _etext = .;
32
33 . = ALIGN(8192);
34 .data.init_task : { *(.data.init_task) }
35
36 /* Startup code */
37 . = ALIGN(4096);
38 __init_begin = .;
39 .text.init : { *(.text.init) }
40 .data.init : { *(.data.init) }
41 . = ALIGN(16);
42 __setup_start = .;
43 .setup.init : { *(.setup.init) }
44 __setup_end = .;
45 __initcall_start = .;
46 .initcall.init : { *(.initcall.init) }
47 __initcall_end = .;
48 . = ALIGN(4096); /* Align double page for init_task_union */
49 __init_end = .;
50
51 . = ALIGN(4096);
52 .data.page_aligned : { *(.data.idt) }
53
54 . = ALIGN(32);
55 .data.cacheline_aligned : { *(.data.cacheline_aligned) }
56 21
57 .fini : { *(.fini) } =0 22 /* writable */
58 .reginfo : { *(.reginfo) } 23 .data : { /* Data */
59 /* Adjust the address for the data segment. We want to adjust up to 24 _fdata = . ;
60 the same address within the page on the next page up. It would 25 *(.data)
61 be more correct to do this: 26 /* Put the compressed image here, so bss is on the end. */
62 . = .; 27 __image_begin = .;
63 The current expression does not correctly handle the case of a 28 *(.image)
64 text segment ending precisely at the end of a page; it causes the 29 __image_end = .;
65 data segment to skip a page. The above expression does not have 30 CONSTRUCTORS
66 this problem, but it will currently (2/95) cause BFD to allocate 31 }
67 a single segment, combining both text and data, for this case. 32 .sdata : { *(.sdata) }
68 This will prevent the text segment from being shared among 33 . = ALIGN(4);
69 multiple executions of the program; I think that is more 34 _edata = .; /* End of data section */
70 important than losing a page of the virtual address space (note
71 that no actual memory is lost; the page which is skipped can not
72 be referenced). */
73 . = .;
74 .data :
75 {
76 _fdata = . ;
77 *(.data)
78 35
79 /* Put the compressed image here, so bss is on the end. */ 36 /* BSS */
80 __image_begin = .; 37 __bss_start = .;
81 *(.image) 38 _fbss = .;
82 __image_end = .; 39 .sbss : { *(.sbss) *(.scommon) }
83 /* Align the initial ramdisk image (INITRD) on page boundaries. */ 40 .bss : {
84 . = ALIGN(4096); 41 *(.dynbss)
85 __ramdisk_begin = .; 42 *(.bss)
86 *(.initrd) 43 *(COMMON)
87 __ramdisk_end = .; 44 }
88 . = ALIGN(4096); 45 . = ALIGN(4);
46 _end = . ;
89 47
90 CONSTRUCTORS 48 /* These are needed for ELF backends which have not yet been converted
91 } 49 * to the new style linker. */
92 .data1 : { *(.data1) }
93 _gp = . + 0x8000;
94 .lit8 : { *(.lit8) }
95 .lit4 : { *(.lit4) }
96 .ctors : { *(.ctors) }
97 .dtors : { *(.dtors) }
98 .got : { *(.got.plt) *(.got) }
99 .dynamic : { *(.dynamic) }
100 /* We want the small data sections together, so single-instruction offsets
101 can access them all, and initialized data all before uninitialized, so
102 we can shorten the on-disk segment size. */
103 .sdata : { *(.sdata) }
104 . = ALIGN(4);
105 _edata = .;
106 PROVIDE (edata = .);
107 50
108 __bss_start = .; 51 .stab 0 : { *(.stab) }
109 _fbss = .; 52 .stabstr 0 : { *(.stabstr) }
110 .sbss : { *(.sbss) *(.scommon) }
111 .bss :
112 {
113 *(.dynbss)
114 *(.bss)
115 *(COMMON)
116 . = ALIGN(4);
117 _end = . ;
118 PROVIDE (end = .);
119 }
120 53
121 /* Sections to be discarded */ 54 /* These must appear regardless of . */
122 /DISCARD/ : 55 .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
123 { 56 .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
124 *(.text.exit)
125 *(.data.exit)
126 *(.exitcall.exit)
127 }
128 57
129 /* This is the MIPS specific mdebug section. */ 58 /* Sections to be discarded */
130 .mdebug : { *(.mdebug) } 59 /DISCARD/ : {
131 /* These are needed for ELF backends which have not yet been 60 *(.MIPS.options)
132 converted to the new style linker. */ 61 *(.options)
133 .stab 0 : { *(.stab) } 62 *(.pdr)
134 .stabstr 0 : { *(.stabstr) } 63 *(.reginfo)
135 /* DWARF debug sections. 64 *(.comment)
136 Symbols in the .debug DWARF section are relative to the beginning of the 65 *(.note)
137 section so we begin .debug at 0. It's not clear yet what needs to happen 66 }
138 for the others. */
139 .debug 0 : { *(.debug) }
140 .debug_srcinfo 0 : { *(.debug_srcinfo) }
141 .debug_aranges 0 : { *(.debug_aranges) }
142 .debug_pubnames 0 : { *(.debug_pubnames) }
143 .debug_sfnames 0 : { *(.debug_sfnames) }
144 .line 0 : { *(.line) }
145 /* These must appear regardless of . */
146 .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
147 .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
148 .comment : { *(.comment) }
149 .note : { *(.note) }
150} 67}
diff --git a/arch/mips/cavium-octeon/csrc-octeon.c b/arch/mips/cavium-octeon/csrc-octeon.c
index 96110f217dcd..0bf4bbe04ae2 100644
--- a/arch/mips/cavium-octeon/csrc-octeon.c
+++ b/arch/mips/cavium-octeon/csrc-octeon.c
@@ -50,6 +50,38 @@ static struct clocksource clocksource_mips = {
50 .flags = CLOCK_SOURCE_IS_CONTINUOUS, 50 .flags = CLOCK_SOURCE_IS_CONTINUOUS,
51}; 51};
52 52
53unsigned long long notrace sched_clock(void)
54{
55 /* 64-bit arithmatic can overflow, so use 128-bit. */
56#if (__GNUC__ < 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ <= 3))
57 u64 t1, t2, t3;
58 unsigned long long rv;
59 u64 mult = clocksource_mips.mult;
60 u64 shift = clocksource_mips.shift;
61 u64 cnt = read_c0_cvmcount();
62
63 asm (
64 "dmultu\t%[cnt],%[mult]\n\t"
65 "nor\t%[t1],$0,%[shift]\n\t"
66 "mfhi\t%[t2]\n\t"
67 "mflo\t%[t3]\n\t"
68 "dsll\t%[t2],%[t2],1\n\t"
69 "dsrlv\t%[rv],%[t3],%[shift]\n\t"
70 "dsllv\t%[t1],%[t2],%[t1]\n\t"
71 "or\t%[rv],%[t1],%[rv]\n\t"
72 : [rv] "=&r" (rv), [t1] "=&r" (t1), [t2] "=&r" (t2), [t3] "=&r" (t3)
73 : [cnt] "r" (cnt), [mult] "r" (mult), [shift] "r" (shift)
74 : "hi", "lo");
75 return rv;
76#else
77 /* GCC > 4.3 do it the easy way. */
78 unsigned int __attribute__((mode(TI))) t;
79 t = read_c0_cvmcount();
80 t = t * clocksource_mips.mult;
81 return (unsigned long long)(t >> clocksource_mips.shift);
82#endif
83}
84
53void __init plat_time_init(void) 85void __init plat_time_init(void)
54{ 86{
55 clocksource_mips.rating = 300; 87 clocksource_mips.rating = 300;
diff --git a/arch/mips/cobalt/setup.c b/arch/mips/cobalt/setup.c
index b51644227241..ec3b2c417f7c 100644
--- a/arch/mips/cobalt/setup.c
+++ b/arch/mips/cobalt/setup.c
@@ -97,26 +97,18 @@ void __init plat_mem_setup(void)
97 97
98void __init prom_init(void) 98void __init prom_init(void)
99{ 99{
100 int narg, indx, posn, nchr;
101 unsigned long memsz; 100 unsigned long memsz;
101 int argc, i;
102 char **argv; 102 char **argv;
103 103
104 memsz = fw_arg0 & 0x7fff0000; 104 memsz = fw_arg0 & 0x7fff0000;
105 narg = fw_arg0 & 0x0000ffff; 105 argc = fw_arg0 & 0x0000ffff;
106 106 argv = (char **)fw_arg1;
107 if (narg) { 107
108 arcs_cmdline[0] = '\0'; 108 for (i = 1; i < argc; i++) {
109 argv = (char **) fw_arg1; 109 strlcat(arcs_cmdline, argv[i], COMMAND_LINE_SIZE);
110 posn = 0; 110 if (i < (argc - 1))
111 for (indx = 1; indx < narg; ++indx) { 111 strlcat(arcs_cmdline, " ", COMMAND_LINE_SIZE);
112 nchr = strlen(argv[indx]);
113 if (posn + 1 + nchr + 1 > sizeof(arcs_cmdline))
114 break;
115 if (posn)
116 arcs_cmdline[posn++] = ' ';
117 strcpy(arcs_cmdline + posn, argv[indx]);
118 posn += nchr;
119 }
120 } 112 }
121 113
122 add_memory_region(0x0, memsz, BOOT_MEM_RAM); 114 add_memory_region(0x0, memsz, BOOT_MEM_RAM);
diff --git a/arch/mips/configs/ip27_defconfig b/arch/mips/configs/ip27_defconfig
index ed84b4cb3c8d..84b6503f10b9 100644
--- a/arch/mips/configs/ip27_defconfig
+++ b/arch/mips/configs/ip27_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23-rc2 3# Linux kernel version: 2.6.33-rc6
4# Tue Aug 7 13:04:24 2007 4# Wed Feb 3 18:12:31 2010
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -9,20 +9,28 @@ 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
13# CONFIG_BCM47XX is not set
14# CONFIG_BCM63XX is not set
12# CONFIG_MIPS_COBALT is not set 15# CONFIG_MIPS_COBALT is not set
13# CONFIG_MACH_DECSTATION is not set 16# CONFIG_MACH_DECSTATION is not set
14# CONFIG_MACH_JAZZ is not set 17# CONFIG_MACH_JAZZ is not set
15# CONFIG_LEMOTE_FULONG is not set 18# CONFIG_LASAT is not set
19# CONFIG_MACH_LOONGSON is not set
16# CONFIG_MIPS_MALTA is not set 20# CONFIG_MIPS_MALTA is not set
17# CONFIG_MIPS_SIM is not set 21# CONFIG_MIPS_SIM is not set
18# CONFIG_MARKEINS is not set 22# CONFIG_NEC_MARKEINS is not set
19# CONFIG_MACH_VR41XX is not set 23# CONFIG_MACH_VR41XX is not set
24# CONFIG_NXP_STB220 is not set
25# CONFIG_NXP_STB225 is not set
20# CONFIG_PNX8550_JBS is not set 26# CONFIG_PNX8550_JBS is not set
21# CONFIG_PNX8550_STB810 is not set 27# CONFIG_PNX8550_STB810 is not set
22# CONFIG_PMC_MSP is not set 28# CONFIG_PMC_MSP is not set
23# CONFIG_PMC_YOSEMITE is not set 29# CONFIG_PMC_YOSEMITE is not set
30# CONFIG_POWERTV is not set
24# CONFIG_SGI_IP22 is not set 31# CONFIG_SGI_IP22 is not set
25CONFIG_SGI_IP27=y 32CONFIG_SGI_IP27=y
33# CONFIG_SGI_IP28 is not set
26# CONFIG_SGI_IP32 is not set 34# CONFIG_SGI_IP32 is not set
27# CONFIG_SIBYTE_CRHINE is not set 35# CONFIG_SIBYTE_CRHINE is not set
28# CONFIG_SIBYTE_CARMEL is not set 36# CONFIG_SIBYTE_CARMEL is not set
@@ -33,32 +41,39 @@ CONFIG_SGI_IP27=y
33# CONFIG_SIBYTE_SENTOSA is not set 41# CONFIG_SIBYTE_SENTOSA is not set
34# CONFIG_SIBYTE_BIGSUR is not set 42# CONFIG_SIBYTE_BIGSUR is not set
35# CONFIG_SNI_RM is not set 43# CONFIG_SNI_RM is not set
36# CONFIG_TOSHIBA_JMR3927 is not set 44# CONFIG_MACH_TX39XX is not set
37# CONFIG_TOSHIBA_RBTX4927 is not set 45# CONFIG_MACH_TX49XX is not set
38# CONFIG_TOSHIBA_RBTX4938 is not set 46# CONFIG_MIKROTIK_RB532 is not set
39# CONFIG_WR_PPMC is not set 47# CONFIG_WR_PPMC is not set
48# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set
49# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set
50# CONFIG_ALCHEMY_GPIO_INDIRECT is not set
40CONFIG_SGI_SN_M_MODE=y 51CONFIG_SGI_SN_M_MODE=y
41# CONFIG_SGI_SN_N_MODE is not set 52# CONFIG_SGI_SN_N_MODE is not set
42# CONFIG_MAPPED_KERNEL is not set 53# CONFIG_MAPPED_KERNEL is not set
43# CONFIG_REPLICATE_KTEXT is not set 54# CONFIG_REPLICATE_KTEXT is not set
44# CONFIG_REPLICATE_EXHANDLERS is not set 55# CONFIG_REPLICATE_EXHANDLERS is not set
56CONFIG_LOONGSON_UART_BASE=y
45CONFIG_RWSEM_GENERIC_SPINLOCK=y 57CONFIG_RWSEM_GENERIC_SPINLOCK=y
46# CONFIG_ARCH_HAS_ILOG2_U32 is not set 58# CONFIG_ARCH_HAS_ILOG2_U32 is not set
47# CONFIG_ARCH_HAS_ILOG2_U64 is not set 59# CONFIG_ARCH_HAS_ILOG2_U64 is not set
60CONFIG_ARCH_SUPPORTS_OPROFILE=y
48CONFIG_GENERIC_FIND_NEXT_BIT=y 61CONFIG_GENERIC_FIND_NEXT_BIT=y
49CONFIG_GENERIC_HWEIGHT=y 62CONFIG_GENERIC_HWEIGHT=y
50CONFIG_GENERIC_CALIBRATE_DELAY=y 63CONFIG_GENERIC_CALIBRATE_DELAY=y
64CONFIG_GENERIC_CLOCKEVENTS=y
51CONFIG_GENERIC_TIME=y 65CONFIG_GENERIC_TIME=y
52CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 66CONFIG_GENERIC_CMOS_UPDATE=y
67CONFIG_SCHED_OMIT_FRAME_POINTER=y
53CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 68CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
54CONFIG_ARC=y 69CONFIG_ARC=y
55CONFIG_DMA_COHERENT=y 70CONFIG_DMA_COHERENT=y
56CONFIG_EARLY_PRINTK=y
57CONFIG_SYS_HAS_EARLY_PRINTK=y 71CONFIG_SYS_HAS_EARLY_PRINTK=y
58# CONFIG_NO_IOPORT is not set 72# CONFIG_NO_IOPORT is not set
59CONFIG_CPU_BIG_ENDIAN=y 73CONFIG_CPU_BIG_ENDIAN=y
60# CONFIG_CPU_LITTLE_ENDIAN is not set 74# CONFIG_CPU_LITTLE_ENDIAN is not set
61CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y 75CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
76CONFIG_DEFAULT_SGI_PARTITION=y
62CONFIG_MIPS_L1_CACHE_SHIFT=7 77CONFIG_MIPS_L1_CACHE_SHIFT=7
63CONFIG_ARC64=y 78CONFIG_ARC64=y
64CONFIG_BOOT_ELF64=y 79CONFIG_BOOT_ELF64=y
@@ -66,7 +81,8 @@ CONFIG_BOOT_ELF64=y
66# 81#
67# CPU selection 82# CPU selection
68# 83#
69# CONFIG_CPU_LOONGSON2 is not set 84# CONFIG_CPU_LOONGSON2E is not set
85# CONFIG_CPU_LOONGSON2F is not set
70# CONFIG_CPU_MIPS32_R1 is not set 86# CONFIG_CPU_MIPS32_R1 is not set
71# CONFIG_CPU_MIPS32_R2 is not set 87# CONFIG_CPU_MIPS32_R2 is not set
72# CONFIG_CPU_MIPS64_R1 is not set 88# CONFIG_CPU_MIPS64_R1 is not set
@@ -79,6 +95,7 @@ CONFIG_BOOT_ELF64=y
79# CONFIG_CPU_TX49XX is not set 95# CONFIG_CPU_TX49XX is not set
80# CONFIG_CPU_R5000 is not set 96# CONFIG_CPU_R5000 is not set
81# CONFIG_CPU_R5432 is not set 97# CONFIG_CPU_R5432 is not set
98# CONFIG_CPU_R5500 is not set
82# CONFIG_CPU_R6000 is not set 99# CONFIG_CPU_R6000 is not set
83# CONFIG_CPU_NEVADA is not set 100# CONFIG_CPU_NEVADA is not set
84# CONFIG_CPU_R8000 is not set 101# CONFIG_CPU_R8000 is not set
@@ -86,6 +103,7 @@ CONFIG_CPU_R10000=y
86# CONFIG_CPU_RM7000 is not set 103# CONFIG_CPU_RM7000 is not set
87# CONFIG_CPU_RM9000 is not set 104# CONFIG_CPU_RM9000 is not set
88# CONFIG_CPU_SB1 is not set 105# CONFIG_CPU_SB1 is not set
106# CONFIG_CPU_CAVIUM_OCTEON is not set
89CONFIG_SYS_HAS_CPU_R10000=y 107CONFIG_SYS_HAS_CPU_R10000=y
90CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y 108CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
91CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y 109CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
@@ -99,6 +117,7 @@ CONFIG_64BIT=y
99CONFIG_PAGE_SIZE_4KB=y 117CONFIG_PAGE_SIZE_4KB=y
100# CONFIG_PAGE_SIZE_8KB is not set 118# CONFIG_PAGE_SIZE_8KB is not set
101# CONFIG_PAGE_SIZE_16KB is not set 119# CONFIG_PAGE_SIZE_16KB is not set
120# CONFIG_PAGE_SIZE_32KB is not set
102# CONFIG_PAGE_SIZE_64KB is not set 121# CONFIG_PAGE_SIZE_64KB is not set
103CONFIG_CPU_HAS_PREFETCH=y 122CONFIG_CPU_HAS_PREFETCH=y
104CONFIG_MIPS_MT_DISABLED=y 123CONFIG_MIPS_MT_DISABLED=y
@@ -110,6 +129,7 @@ CONFIG_GENERIC_IRQ_PROBE=y
110CONFIG_IRQ_PER_CPU=y 129CONFIG_IRQ_PER_CPU=y
111CONFIG_CPU_SUPPORTS_HIGHMEM=y 130CONFIG_CPU_SUPPORTS_HIGHMEM=y
112CONFIG_ARCH_DISCONTIGMEM_ENABLE=y 131CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
132CONFIG_ARCH_POPULATES_NODE_MAP=y
113CONFIG_NUMA=y 133CONFIG_NUMA=y
114CONFIG_SYS_SUPPORTS_NUMA=y 134CONFIG_SYS_SUPPORTS_NUMA=y
115CONFIG_NODES_SHIFT=6 135CONFIG_NODES_SHIFT=6
@@ -120,16 +140,22 @@ CONFIG_DISCONTIGMEM_MANUAL=y
120CONFIG_DISCONTIGMEM=y 140CONFIG_DISCONTIGMEM=y
121CONFIG_FLAT_NODE_MEM_MAP=y 141CONFIG_FLAT_NODE_MEM_MAP=y
122CONFIG_NEED_MULTIPLE_NODES=y 142CONFIG_NEED_MULTIPLE_NODES=y
123# CONFIG_SPARSEMEM_STATIC is not set 143CONFIG_PAGEFLAGS_EXTENDED=y
124CONFIG_SPLIT_PTLOCK_CPUS=4 144CONFIG_SPLIT_PTLOCK_CPUS=4
125CONFIG_MIGRATION=y 145CONFIG_MIGRATION=y
126CONFIG_RESOURCES_64BIT=y 146CONFIG_PHYS_ADDR_T_64BIT=y
127CONFIG_ZONE_DMA_FLAG=0 147CONFIG_ZONE_DMA_FLAG=0
128CONFIG_VIRT_TO_BUS=y 148CONFIG_VIRT_TO_BUS=y
149# CONFIG_KSM is not set
150CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
129CONFIG_SMP=y 151CONFIG_SMP=y
130CONFIG_SYS_SUPPORTS_SMP=y 152CONFIG_SYS_SUPPORTS_SMP=y
131CONFIG_NR_CPUS_DEFAULT_64=y 153CONFIG_NR_CPUS_DEFAULT_64=y
132CONFIG_NR_CPUS=64 154CONFIG_NR_CPUS=64
155CONFIG_TICK_ONESHOT=y
156CONFIG_NO_HZ=y
157CONFIG_HIGH_RES_TIMERS=y
158CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
133# CONFIG_HZ_48 is not set 159# CONFIG_HZ_48 is not set
134# CONFIG_HZ_100 is not set 160# CONFIG_HZ_100 is not set
135# CONFIG_HZ_128 is not set 161# CONFIG_HZ_128 is not set
@@ -142,13 +168,13 @@ CONFIG_HZ=1000
142CONFIG_PREEMPT_NONE=y 168CONFIG_PREEMPT_NONE=y
143# CONFIG_PREEMPT_VOLUNTARY is not set 169# CONFIG_PREEMPT_VOLUNTARY is not set
144# CONFIG_PREEMPT is not set 170# CONFIG_PREEMPT is not set
145CONFIG_PREEMPT_BKL=y
146# CONFIG_MIPS_INSANE_LARGE is not set 171# CONFIG_MIPS_INSANE_LARGE is not set
147# CONFIG_KEXEC is not set 172# CONFIG_KEXEC is not set
148CONFIG_SECCOMP=y 173CONFIG_SECCOMP=y
149CONFIG_LOCKDEP_SUPPORT=y 174CONFIG_LOCKDEP_SUPPORT=y
150CONFIG_STACKTRACE_SUPPORT=y 175CONFIG_STACKTRACE_SUPPORT=y
151CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 176CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
177CONFIG_CONSTRUCTORS=y
152 178
153# 179#
154# General setup 180# General setup
@@ -162,20 +188,41 @@ CONFIG_SWAP=y
162CONFIG_SYSVIPC=y 188CONFIG_SYSVIPC=y
163CONFIG_SYSVIPC_SYSCTL=y 189CONFIG_SYSVIPC_SYSCTL=y
164CONFIG_POSIX_MQUEUE=y 190CONFIG_POSIX_MQUEUE=y
191CONFIG_POSIX_MQUEUE_SYSCTL=y
165# CONFIG_BSD_PROCESS_ACCT is not set 192# CONFIG_BSD_PROCESS_ACCT is not set
166# CONFIG_TASKSTATS is not set 193# CONFIG_TASKSTATS is not set
167# CONFIG_USER_NS is not set
168# CONFIG_AUDIT is not set 194# CONFIG_AUDIT is not set
195
196#
197# RCU Subsystem
198#
199CONFIG_TREE_RCU=y
200# CONFIG_TREE_PREEMPT_RCU is not set
201# CONFIG_TINY_RCU is not set
202# CONFIG_RCU_TRACE is not set
203CONFIG_RCU_FANOUT=64
204# CONFIG_RCU_FANOUT_EXACT is not set
205# CONFIG_TREE_RCU_TRACE is not set
169CONFIG_IKCONFIG=y 206CONFIG_IKCONFIG=y
170CONFIG_IKCONFIG_PROC=y 207CONFIG_IKCONFIG_PROC=y
171CONFIG_LOG_BUF_SHIFT=15 208CONFIG_LOG_BUF_SHIFT=15
209# CONFIG_GROUP_SCHED is not set
172CONFIG_CGROUPS=y 210CONFIG_CGROUPS=y
211# CONFIG_CGROUP_DEBUG is not set
212# CONFIG_CGROUP_NS is not set
213# CONFIG_CGROUP_FREEZER is not set
214# CONFIG_CGROUP_DEVICE is not set
173CONFIG_CPUSETS=y 215CONFIG_CPUSETS=y
174CONFIG_SYSFS_DEPRECATED=y 216CONFIG_PROC_PID_CPUSET=y
217# CONFIG_CGROUP_CPUACCT is not set
218# CONFIG_RESOURCE_COUNTERS is not set
219# CONFIG_SYSFS_DEPRECATED_V2 is not set
175CONFIG_RELAY=y 220CONFIG_RELAY=y
221# CONFIG_NAMESPACES is not set
176# CONFIG_BLK_DEV_INITRD is not set 222# CONFIG_BLK_DEV_INITRD is not set
177# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 223# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
178CONFIG_SYSCTL=y 224CONFIG_SYSCTL=y
225CONFIG_ANON_INODES=y
179CONFIG_EMBEDDED=y 226CONFIG_EMBEDDED=y
180CONFIG_SYSCTL_SYSCALL=y 227CONFIG_SYSCTL_SYSCALL=y
181CONFIG_KALLSYMS=y 228CONFIG_KALLSYMS=y
@@ -184,44 +231,92 @@ CONFIG_HOTPLUG=y
184CONFIG_PRINTK=y 231CONFIG_PRINTK=y
185CONFIG_BUG=y 232CONFIG_BUG=y
186CONFIG_ELF_CORE=y 233CONFIG_ELF_CORE=y
234# CONFIG_PCSPKR_PLATFORM is not set
187CONFIG_BASE_FULL=y 235CONFIG_BASE_FULL=y
188CONFIG_FUTEX=y 236CONFIG_FUTEX=y
189CONFIG_ANON_INODES=y
190CONFIG_EPOLL=y 237CONFIG_EPOLL=y
191CONFIG_SIGNALFD=y 238CONFIG_SIGNALFD=y
192CONFIG_TIMERFD=y 239CONFIG_TIMERFD=y
193CONFIG_EVENTFD=y 240CONFIG_EVENTFD=y
194CONFIG_SHMEM=y 241CONFIG_SHMEM=y
242CONFIG_AIO=y
243
244#
245# Kernel Performance Events And Counters
246#
195CONFIG_VM_EVENT_COUNTERS=y 247CONFIG_VM_EVENT_COUNTERS=y
248CONFIG_PCI_QUIRKS=y
249CONFIG_COMPAT_BRK=y
196CONFIG_SLAB=y 250CONFIG_SLAB=y
197# CONFIG_SLUB is not set 251# CONFIG_SLUB is not set
198# CONFIG_SLOB is not set 252# CONFIG_SLOB is not set
253# CONFIG_PROFILING is not set
254CONFIG_HAVE_OPROFILE=y
255CONFIG_HAVE_SYSCALL_WRAPPERS=y
256CONFIG_USE_GENERIC_SMP_HELPERS=y
257
258#
259# GCOV-based kernel profiling
260#
261CONFIG_SLOW_WORK=y
262CONFIG_HAVE_GENERIC_DMA_COHERENT=y
263CONFIG_SLABINFO=y
199CONFIG_RT_MUTEXES=y 264CONFIG_RT_MUTEXES=y
200# CONFIG_TINY_SHMEM is not set
201CONFIG_BASE_SMALL=0 265CONFIG_BASE_SMALL=0
202CONFIG_MODULES=y 266CONFIG_MODULES=y
267# CONFIG_MODULE_FORCE_LOAD is not set
203CONFIG_MODULE_UNLOAD=y 268CONFIG_MODULE_UNLOAD=y
204# CONFIG_MODULE_FORCE_UNLOAD is not set 269# CONFIG_MODULE_FORCE_UNLOAD is not set
205# CONFIG_MODVERSIONS is not set 270# CONFIG_MODVERSIONS is not set
206CONFIG_MODULE_SRCVERSION_ALL=y 271CONFIG_MODULE_SRCVERSION_ALL=y
207CONFIG_KMOD=y
208CONFIG_STOP_MACHINE=y 272CONFIG_STOP_MACHINE=y
209CONFIG_BLOCK=y 273CONFIG_BLOCK=y
210# CONFIG_BLK_DEV_IO_TRACE is not set
211# CONFIG_BLK_DEV_BSG is not set 274# CONFIG_BLK_DEV_BSG is not set
275# CONFIG_BLK_DEV_INTEGRITY is not set
276# CONFIG_BLK_CGROUP is not set
277CONFIG_BLOCK_COMPAT=y
212 278
213# 279#
214# IO Schedulers 280# IO Schedulers
215# 281#
216CONFIG_IOSCHED_NOOP=y 282CONFIG_IOSCHED_NOOP=y
217CONFIG_IOSCHED_AS=y
218CONFIG_IOSCHED_DEADLINE=y 283CONFIG_IOSCHED_DEADLINE=y
219CONFIG_IOSCHED_CFQ=y 284CONFIG_IOSCHED_CFQ=y
220CONFIG_DEFAULT_AS=y 285# CONFIG_CFQ_GROUP_IOSCHED is not set
221# CONFIG_DEFAULT_DEADLINE is not set 286# CONFIG_DEFAULT_DEADLINE is not set
222# CONFIG_DEFAULT_CFQ is not set 287CONFIG_DEFAULT_CFQ=y
223# CONFIG_DEFAULT_NOOP is not set 288# CONFIG_DEFAULT_NOOP is not set
224CONFIG_DEFAULT_IOSCHED="anticipatory" 289CONFIG_DEFAULT_IOSCHED="cfq"
290# CONFIG_INLINE_SPIN_TRYLOCK is not set
291# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
292# CONFIG_INLINE_SPIN_LOCK is not set
293# CONFIG_INLINE_SPIN_LOCK_BH is not set
294# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
295# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
296CONFIG_INLINE_SPIN_UNLOCK=y
297# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
298CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
299# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
300# CONFIG_INLINE_READ_TRYLOCK is not set
301# CONFIG_INLINE_READ_LOCK is not set
302# CONFIG_INLINE_READ_LOCK_BH is not set
303# CONFIG_INLINE_READ_LOCK_IRQ is not set
304# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
305CONFIG_INLINE_READ_UNLOCK=y
306# CONFIG_INLINE_READ_UNLOCK_BH is not set
307CONFIG_INLINE_READ_UNLOCK_IRQ=y
308# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
309# CONFIG_INLINE_WRITE_TRYLOCK is not set
310# CONFIG_INLINE_WRITE_LOCK is not set
311# CONFIG_INLINE_WRITE_LOCK_BH is not set
312# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
313# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
314CONFIG_INLINE_WRITE_UNLOCK=y
315# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
316CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
317# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
318CONFIG_MUTEX_SPIN_ON_OWNER=y
319# CONFIG_FREEZER is not set
225 320
226# 321#
227# Bus options (PCI, PCMCIA, EISA, ISA, TC) 322# Bus options (PCI, PCMCIA, EISA, ISA, TC)
@@ -230,11 +325,10 @@ CONFIG_HW_HAS_PCI=y
230CONFIG_PCI=y 325CONFIG_PCI=y
231CONFIG_PCI_DOMAINS=y 326CONFIG_PCI_DOMAINS=y
232# CONFIG_ARCH_SUPPORTS_MSI is not set 327# CONFIG_ARCH_SUPPORTS_MSI is not set
328# CONFIG_PCI_LEGACY is not set
329# CONFIG_PCI_STUB is not set
330# CONFIG_PCI_IOV is not set
233CONFIG_MMU=y 331CONFIG_MMU=y
234
235#
236# PCCARD (PCMCIA/CardBus) support
237#
238# CONFIG_PCCARD is not set 332# CONFIG_PCCARD is not set
239# CONFIG_HOTPLUG_PCI is not set 333# CONFIG_HOTPLUG_PCI is not set
240 334
@@ -242,8 +336,9 @@ CONFIG_MMU=y
242# Executable file formats 336# Executable file formats
243# 337#
244CONFIG_BINFMT_ELF=y 338CONFIG_BINFMT_ELF=y
339CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
340# CONFIG_HAVE_AOUT is not set
245# CONFIG_BINFMT_MISC is not set 341# CONFIG_BINFMT_MISC is not set
246# CONFIG_BUILD_ELF64 is not set
247CONFIG_MIPS32_COMPAT=y 342CONFIG_MIPS32_COMPAT=y
248CONFIG_COMPAT=y 343CONFIG_COMPAT=y
249CONFIG_SYSVIPC_COMPAT=y 344CONFIG_SYSVIPC_COMPAT=y
@@ -255,13 +350,10 @@ CONFIG_BINFMT_ELF32=y
255# Power management options 350# Power management options
256# 351#
257CONFIG_PM=y 352CONFIG_PM=y
258# CONFIG_PM_LEGACY is not set
259# CONFIG_PM_DEBUG is not set 353# CONFIG_PM_DEBUG is not set
260 354# CONFIG_PM_RUNTIME is not set
261#
262# Networking
263#
264CONFIG_NET=y 355CONFIG_NET=y
356CONFIG_COMPAT_NETLINK_MESSAGES=y
265 357
266# 358#
267# Networking options 359# Networking options
@@ -273,6 +365,8 @@ CONFIG_XFRM=y
273CONFIG_XFRM_USER=m 365CONFIG_XFRM_USER=m
274# CONFIG_XFRM_SUB_POLICY is not set 366# CONFIG_XFRM_SUB_POLICY is not set
275CONFIG_XFRM_MIGRATE=y 367CONFIG_XFRM_MIGRATE=y
368CONFIG_XFRM_STATISTICS=y
369CONFIG_XFRM_IPCOMP=m
276CONFIG_NET_KEY=y 370CONFIG_NET_KEY=y
277CONFIG_NET_KEY_MIGRATE=y 371CONFIG_NET_KEY_MIGRATE=y
278CONFIG_INET=y 372CONFIG_INET=y
@@ -292,19 +386,40 @@ CONFIG_IP_PNP=y
292# CONFIG_INET_ESP is not set 386# CONFIG_INET_ESP is not set
293# CONFIG_INET_IPCOMP is not set 387# CONFIG_INET_IPCOMP is not set
294# CONFIG_INET_XFRM_TUNNEL is not set 388# CONFIG_INET_XFRM_TUNNEL is not set
295# CONFIG_INET_TUNNEL is not set 389CONFIG_INET_TUNNEL=m
296CONFIG_INET_XFRM_MODE_TRANSPORT=m 390CONFIG_INET_XFRM_MODE_TRANSPORT=m
297CONFIG_INET_XFRM_MODE_TUNNEL=m 391CONFIG_INET_XFRM_MODE_TUNNEL=m
298CONFIG_INET_XFRM_MODE_BEET=m 392CONFIG_INET_XFRM_MODE_BEET=m
393CONFIG_INET_LRO=y
299CONFIG_INET_DIAG=y 394CONFIG_INET_DIAG=y
300CONFIG_INET_TCP_DIAG=y 395CONFIG_INET_TCP_DIAG=y
301# CONFIG_TCP_CONG_ADVANCED is not set 396# CONFIG_TCP_CONG_ADVANCED is not set
302CONFIG_TCP_CONG_CUBIC=y 397CONFIG_TCP_CONG_CUBIC=y
303CONFIG_DEFAULT_TCP_CONG="cubic" 398CONFIG_DEFAULT_TCP_CONG="cubic"
304CONFIG_TCP_MD5SIG=y 399CONFIG_TCP_MD5SIG=y
305# CONFIG_IPV6 is not set 400CONFIG_IPV6=y
306# CONFIG_INET6_XFRM_TUNNEL is not set 401CONFIG_IPV6_PRIVACY=y
307# CONFIG_INET6_TUNNEL is not set 402CONFIG_IPV6_ROUTER_PREF=y
403CONFIG_IPV6_ROUTE_INFO=y
404CONFIG_IPV6_OPTIMISTIC_DAD=y
405CONFIG_INET6_AH=m
406CONFIG_INET6_ESP=m
407CONFIG_INET6_IPCOMP=m
408CONFIG_IPV6_MIP6=m
409CONFIG_INET6_XFRM_TUNNEL=m
410CONFIG_INET6_TUNNEL=m
411CONFIG_INET6_XFRM_MODE_TRANSPORT=m
412CONFIG_INET6_XFRM_MODE_TUNNEL=m
413CONFIG_INET6_XFRM_MODE_BEET=m
414CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
415CONFIG_IPV6_SIT=m
416CONFIG_IPV6_SIT_6RD=y
417CONFIG_IPV6_NDISC_NODETYPE=y
418CONFIG_IPV6_TUNNEL=m
419CONFIG_IPV6_MULTIPLE_TABLES=y
420CONFIG_IPV6_SUBTREES=y
421CONFIG_IPV6_MROUTE=y
422CONFIG_IPV6_PIMSM_V2=y
308CONFIG_NETWORK_SECMARK=y 423CONFIG_NETWORK_SECMARK=y
309# CONFIG_NETFILTER is not set 424# CONFIG_NETFILTER is not set
310# CONFIG_IP_DCCP is not set 425# CONFIG_IP_DCCP is not set
@@ -314,9 +429,11 @@ CONFIG_IP_SCTP=m
314# CONFIG_SCTP_HMAC_NONE is not set 429# CONFIG_SCTP_HMAC_NONE is not set
315# CONFIG_SCTP_HMAC_SHA1 is not set 430# CONFIG_SCTP_HMAC_SHA1 is not set
316CONFIG_SCTP_HMAC_MD5=y 431CONFIG_SCTP_HMAC_MD5=y
432# CONFIG_RDS is not set
317# CONFIG_TIPC is not set 433# CONFIG_TIPC is not set
318# CONFIG_ATM is not set 434# CONFIG_ATM is not set
319# CONFIG_BRIDGE is not set 435# CONFIG_BRIDGE is not set
436# CONFIG_NET_DSA is not set
320# CONFIG_VLAN_8021Q is not set 437# CONFIG_VLAN_8021Q is not set
321# CONFIG_DECNET is not set 438# CONFIG_DECNET is not set
322# CONFIG_LLC2 is not set 439# CONFIG_LLC2 is not set
@@ -326,12 +443,9 @@ CONFIG_SCTP_HMAC_MD5=y
326# CONFIG_LAPB is not set 443# CONFIG_LAPB is not set
327# CONFIG_ECONET is not set 444# CONFIG_ECONET is not set
328# CONFIG_WAN_ROUTER is not set 445# CONFIG_WAN_ROUTER is not set
329 446# CONFIG_PHONET is not set
330# 447# CONFIG_IEEE802154 is not set
331# QoS and/or fair queueing
332#
333CONFIG_NET_SCHED=y 448CONFIG_NET_SCHED=y
334CONFIG_NET_SCH_FIFO=y
335 449
336# 450#
337# Queueing/Scheduling 451# Queueing/Scheduling
@@ -340,7 +454,7 @@ CONFIG_NET_SCH_CBQ=m
340CONFIG_NET_SCH_HTB=m 454CONFIG_NET_SCH_HTB=m
341CONFIG_NET_SCH_HFSC=m 455CONFIG_NET_SCH_HFSC=m
342CONFIG_NET_SCH_PRIO=m 456CONFIG_NET_SCH_PRIO=m
343CONFIG_NET_SCH_RR=m 457CONFIG_NET_SCH_MULTIQ=y
344CONFIG_NET_SCH_RED=m 458CONFIG_NET_SCH_RED=m
345CONFIG_NET_SCH_SFQ=m 459CONFIG_NET_SCH_SFQ=m
346CONFIG_NET_SCH_TEQL=m 460CONFIG_NET_SCH_TEQL=m
@@ -348,6 +462,7 @@ CONFIG_NET_SCH_TBF=m
348CONFIG_NET_SCH_GRED=m 462CONFIG_NET_SCH_GRED=m
349CONFIG_NET_SCH_DSMARK=m 463CONFIG_NET_SCH_DSMARK=m
350CONFIG_NET_SCH_NETEM=m 464CONFIG_NET_SCH_NETEM=m
465# CONFIG_NET_SCH_DRR is not set
351CONFIG_NET_SCH_INGRESS=m 466CONFIG_NET_SCH_INGRESS=m
352 467
353# 468#
@@ -364,41 +479,63 @@ CONFIG_NET_CLS_U32=m
364CONFIG_CLS_U32_MARK=y 479CONFIG_CLS_U32_MARK=y
365CONFIG_NET_CLS_RSVP=m 480CONFIG_NET_CLS_RSVP=m
366CONFIG_NET_CLS_RSVP6=m 481CONFIG_NET_CLS_RSVP6=m
482CONFIG_NET_CLS_FLOW=m
483CONFIG_NET_CLS_CGROUP=y
367# CONFIG_NET_EMATCH is not set 484# CONFIG_NET_EMATCH is not set
368CONFIG_NET_CLS_ACT=y 485CONFIG_NET_CLS_ACT=y
369CONFIG_NET_ACT_POLICE=y 486CONFIG_NET_ACT_POLICE=y
370CONFIG_NET_ACT_GACT=m 487CONFIG_NET_ACT_GACT=m
371CONFIG_GACT_PROB=y 488CONFIG_GACT_PROB=y
372CONFIG_NET_ACT_MIRRED=m 489CONFIG_NET_ACT_MIRRED=m
490CONFIG_NET_ACT_NAT=m
373CONFIG_NET_ACT_PEDIT=m 491CONFIG_NET_ACT_PEDIT=m
374# CONFIG_NET_ACT_SIMP is not set 492# CONFIG_NET_ACT_SIMP is not set
375CONFIG_NET_CLS_POLICE=y 493CONFIG_NET_ACT_SKBEDIT=m
376# CONFIG_NET_CLS_IND is not set 494# CONFIG_NET_CLS_IND is not set
495CONFIG_NET_SCH_FIFO=y
496# CONFIG_DCB is not set
377 497
378# 498#
379# Network testing 499# Network testing
380# 500#
381# CONFIG_NET_PKTGEN is not set 501# CONFIG_NET_PKTGEN is not set
382# CONFIG_HAMRADIO is not set 502# CONFIG_HAMRADIO is not set
503# CONFIG_CAN is not set
383# CONFIG_IRDA is not set 504# CONFIG_IRDA is not set
384# CONFIG_BT is not set 505# CONFIG_BT is not set
385# CONFIG_AF_RXRPC is not set 506# CONFIG_AF_RXRPC is not set
386 507CONFIG_FIB_RULES=y
387# 508CONFIG_WIRELESS=y
388# Wireless
389#
390CONFIG_CFG80211=m
391CONFIG_WIRELESS_EXT=y 509CONFIG_WIRELESS_EXT=y
510CONFIG_WEXT_CORE=y
511CONFIG_WEXT_PROC=y
512CONFIG_WEXT_SPY=y
513CONFIG_WEXT_PRIV=y
514CONFIG_CFG80211=m
515# CONFIG_NL80211_TESTMODE is not set
516# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
517# CONFIG_CFG80211_REG_DEBUG is not set
518CONFIG_CFG80211_DEFAULT_PS=y
519# CONFIG_WIRELESS_OLD_REGULATORY is not set
520CONFIG_CFG80211_WEXT=y
521CONFIG_WIRELESS_EXT_SYSFS=y
522CONFIG_LIB80211=m
523CONFIG_LIB80211_CRYPT_WEP=m
524CONFIG_LIB80211_CRYPT_CCMP=m
525CONFIG_LIB80211_CRYPT_TKIP=m
526# CONFIG_LIB80211_DEBUG is not set
392CONFIG_MAC80211=m 527CONFIG_MAC80211=m
393# CONFIG_MAC80211_DEBUG is not set 528CONFIG_MAC80211_RC_PID=y
394CONFIG_IEEE80211=m 529CONFIG_MAC80211_RC_MINSTREL=y
395# CONFIG_IEEE80211_DEBUG is not set 530# CONFIG_MAC80211_RC_DEFAULT_PID is not set
396CONFIG_IEEE80211_CRYPT_WEP=m 531CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
397CONFIG_IEEE80211_CRYPT_CCMP=m 532CONFIG_MAC80211_RC_DEFAULT="minstrel"
398CONFIG_IEEE80211_CRYPT_TKIP=m 533# CONFIG_MAC80211_MESH is not set
399CONFIG_IEEE80211_SOFTMAC=m 534CONFIG_MAC80211_LEDS=y
400# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set 535# CONFIG_MAC80211_DEBUG_MENU is not set
536# CONFIG_WIMAX is not set
401CONFIG_RFKILL=m 537CONFIG_RFKILL=m
538CONFIG_RFKILL_LEDS=y
402# CONFIG_NET_9P is not set 539# CONFIG_NET_9P is not set
403 540
404# 541#
@@ -408,9 +545,13 @@ CONFIG_RFKILL=m
408# 545#
409# Generic Driver Options 546# Generic Driver Options
410# 547#
548CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
549# CONFIG_DEVTMPFS is not set
411CONFIG_STANDALONE=y 550CONFIG_STANDALONE=y
412CONFIG_PREVENT_FIRMWARE_BUILD=y 551CONFIG_PREVENT_FIRMWARE_BUILD=y
413CONFIG_FW_LOADER=y 552CONFIG_FW_LOADER=y
553CONFIG_FIRMWARE_IN_KERNEL=y
554CONFIG_EXTRA_FIRMWARE=""
414# CONFIG_SYS_HYPERVISOR is not set 555# CONFIG_SYS_HYPERVISOR is not set
415CONFIG_CONNECTOR=m 556CONFIG_CONNECTOR=m
416# CONFIG_MTD is not set 557# CONFIG_MTD is not set
@@ -423,14 +564,19 @@ CONFIG_BLK_DEV=y
423# CONFIG_BLK_DEV_COW_COMMON is not set 564# CONFIG_BLK_DEV_COW_COMMON is not set
424CONFIG_BLK_DEV_LOOP=y 565CONFIG_BLK_DEV_LOOP=y
425CONFIG_BLK_DEV_CRYPTOLOOP=m 566CONFIG_BLK_DEV_CRYPTOLOOP=m
567# CONFIG_BLK_DEV_DRBD is not set
426# CONFIG_BLK_DEV_NBD is not set 568# CONFIG_BLK_DEV_NBD is not set
569CONFIG_BLK_DEV_OSD=m
427# CONFIG_BLK_DEV_SX8 is not set 570# CONFIG_BLK_DEV_SX8 is not set
428# CONFIG_BLK_DEV_RAM is not set 571# CONFIG_BLK_DEV_RAM is not set
429CONFIG_CDROM_PKTCDVD=m 572CONFIG_CDROM_PKTCDVD=m
430CONFIG_CDROM_PKTCDVD_BUFFERS=8 573CONFIG_CDROM_PKTCDVD_BUFFERS=8
431# CONFIG_CDROM_PKTCDVD_WCACHE is not set 574# CONFIG_CDROM_PKTCDVD_WCACHE is not set
432CONFIG_ATA_OVER_ETH=m 575CONFIG_ATA_OVER_ETH=m
576# CONFIG_BLK_DEV_HD is not set
433# CONFIG_MISC_DEVICES is not set 577# CONFIG_MISC_DEVICES is not set
578CONFIG_EEPROM_93CX6=m
579CONFIG_HAVE_IDE=y
434# CONFIG_IDE is not set 580# CONFIG_IDE is not set
435 581
436# 582#
@@ -453,10 +599,6 @@ CONFIG_BLK_DEV_SR=m
453CONFIG_BLK_DEV_SR_VENDOR=y 599CONFIG_BLK_DEV_SR_VENDOR=y
454CONFIG_CHR_DEV_SG=m 600CONFIG_CHR_DEV_SG=m
455CONFIG_CHR_DEV_SCH=m 601CONFIG_CHR_DEV_SCH=m
456
457#
458# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
459#
460# CONFIG_SCSI_MULTI_LUN is not set 602# CONFIG_SCSI_MULTI_LUN is not set
461CONFIG_SCSI_CONSTANTS=y 603CONFIG_SCSI_CONSTANTS=y
462CONFIG_SCSI_LOGGING=y 604CONFIG_SCSI_LOGGING=y
@@ -471,11 +613,18 @@ CONFIG_SCSI_FC_ATTRS=y
471CONFIG_SCSI_ISCSI_ATTRS=m 613CONFIG_SCSI_ISCSI_ATTRS=m
472CONFIG_SCSI_SAS_ATTRS=m 614CONFIG_SCSI_SAS_ATTRS=m
473CONFIG_SCSI_SAS_LIBSAS=m 615CONFIG_SCSI_SAS_LIBSAS=m
616CONFIG_SCSI_SAS_HOST_SMP=y
474# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set 617# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
618# CONFIG_SCSI_SRP_ATTRS is not set
475CONFIG_SCSI_LOWLEVEL=y 619CONFIG_SCSI_LOWLEVEL=y
476# CONFIG_ISCSI_TCP is not set 620# CONFIG_ISCSI_TCP is not set
621CONFIG_SCSI_CXGB3_ISCSI=m
622CONFIG_SCSI_BNX2_ISCSI=m
623CONFIG_BE2ISCSI=m
477# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 624# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
625CONFIG_SCSI_HPSA=m
478# CONFIG_SCSI_3W_9XXX is not set 626# CONFIG_SCSI_3W_9XXX is not set
627CONFIG_SCSI_3W_SAS=m
479# CONFIG_SCSI_ACARD is not set 628# CONFIG_SCSI_ACARD is not set
480# CONFIG_SCSI_AACRAID is not set 629# CONFIG_SCSI_AACRAID is not set
481# CONFIG_SCSI_AIC7XXX is not set 630# CONFIG_SCSI_AIC7XXX is not set
@@ -483,11 +632,21 @@ CONFIG_SCSI_LOWLEVEL=y
483# CONFIG_SCSI_AIC79XX is not set 632# CONFIG_SCSI_AIC79XX is not set
484CONFIG_SCSI_AIC94XX=m 633CONFIG_SCSI_AIC94XX=m
485# CONFIG_AIC94XX_DEBUG is not set 634# CONFIG_AIC94XX_DEBUG is not set
635CONFIG_SCSI_MVSAS=m
636# CONFIG_SCSI_MVSAS_DEBUG is not set
637CONFIG_SCSI_DPT_I2O=m
638# CONFIG_SCSI_ADVANSYS is not set
486# CONFIG_SCSI_ARCMSR is not set 639# CONFIG_SCSI_ARCMSR is not set
487# CONFIG_MEGARAID_NEWGEN is not set 640# CONFIG_MEGARAID_NEWGEN is not set
488# CONFIG_MEGARAID_LEGACY is not set 641# CONFIG_MEGARAID_LEGACY is not set
489# CONFIG_MEGARAID_SAS is not set 642# CONFIG_MEGARAID_SAS is not set
643CONFIG_SCSI_MPT2SAS=m
644CONFIG_SCSI_MPT2SAS_MAX_SGE=128
645# CONFIG_SCSI_MPT2SAS_LOGGING is not set
490# CONFIG_SCSI_HPTIOP is not set 646# CONFIG_SCSI_HPTIOP is not set
647CONFIG_LIBFC=m
648# CONFIG_LIBFCOE is not set
649# CONFIG_FCOE is not set
491# CONFIG_SCSI_DMX3191D is not set 650# CONFIG_SCSI_DMX3191D is not set
492# CONFIG_SCSI_FUTURE_DOMAIN is not set 651# CONFIG_SCSI_FUTURE_DOMAIN is not set
493# CONFIG_SCSI_IPS is not set 652# CONFIG_SCSI_IPS is not set
@@ -502,16 +661,31 @@ CONFIG_SCSI_QLOGIC_1280=y
502# CONFIG_SCSI_DC395x is not set 661# CONFIG_SCSI_DC395x is not set
503# CONFIG_SCSI_DC390T is not set 662# CONFIG_SCSI_DC390T is not set
504# CONFIG_SCSI_DEBUG is not set 663# CONFIG_SCSI_DEBUG is not set
664CONFIG_SCSI_PMCRAID=m
665# CONFIG_SCSI_PM8001 is not set
505# CONFIG_SCSI_SRP is not set 666# CONFIG_SCSI_SRP is not set
667CONFIG_SCSI_BFA_FC=m
668CONFIG_SCSI_DH=m
669CONFIG_SCSI_DH_RDAC=m
670CONFIG_SCSI_DH_HP_SW=m
671CONFIG_SCSI_DH_EMC=m
672CONFIG_SCSI_DH_ALUA=m
673CONFIG_SCSI_OSD_INITIATOR=m
674CONFIG_SCSI_OSD_ULD=m
675CONFIG_SCSI_OSD_DPRINT_SENSE=1
676# CONFIG_SCSI_OSD_DEBUG is not set
506# CONFIG_ATA is not set 677# CONFIG_ATA is not set
507CONFIG_MD=y 678CONFIG_MD=y
508CONFIG_BLK_DEV_MD=y 679CONFIG_BLK_DEV_MD=y
680CONFIG_MD_AUTODETECT=y
509CONFIG_MD_LINEAR=m 681CONFIG_MD_LINEAR=m
510CONFIG_MD_RAID0=y 682CONFIG_MD_RAID0=y
511CONFIG_MD_RAID1=y 683CONFIG_MD_RAID1=y
512CONFIG_MD_RAID10=m 684CONFIG_MD_RAID10=m
513CONFIG_MD_RAID456=y 685CONFIG_MD_RAID456=y
514CONFIG_MD_RAID5_RESHAPE=y 686# CONFIG_MULTICORE_RAID456 is not set
687CONFIG_MD_RAID6_PQ=y
688# CONFIG_ASYNC_RAID6_TEST is not set
515CONFIG_MD_MULTIPATH=m 689CONFIG_MD_MULTIPATH=m
516CONFIG_MD_FAULTY=m 690CONFIG_MD_FAULTY=m
517CONFIG_BLK_DEV_DM=m 691CONFIG_BLK_DEV_DM=m
@@ -519,36 +693,39 @@ CONFIG_BLK_DEV_DM=m
519CONFIG_DM_CRYPT=m 693CONFIG_DM_CRYPT=m
520CONFIG_DM_SNAPSHOT=m 694CONFIG_DM_SNAPSHOT=m
521CONFIG_DM_MIRROR=m 695CONFIG_DM_MIRROR=m
696CONFIG_DM_LOG_USERSPACE=m
522CONFIG_DM_ZERO=m 697CONFIG_DM_ZERO=m
523CONFIG_DM_MULTIPATH=m 698CONFIG_DM_MULTIPATH=m
524CONFIG_DM_MULTIPATH_EMC=m 699CONFIG_DM_MULTIPATH_QL=m
525CONFIG_DM_MULTIPATH_RDAC=m 700CONFIG_DM_MULTIPATH_ST=m
526# CONFIG_DM_DELAY is not set 701# CONFIG_DM_DELAY is not set
702CONFIG_DM_UEVENT=y
703# CONFIG_FUSION is not set
527 704
528# 705#
529# Fusion MPT device support 706# IEEE 1394 (FireWire) support
530# 707#
531# CONFIG_FUSION is not set
532# CONFIG_FUSION_SPI is not set
533# CONFIG_FUSION_FC is not set
534# CONFIG_FUSION_SAS is not set
535 708
536# 709#
537# IEEE 1394 (FireWire) support 710# You can enable one or both FireWire driver stacks.
711#
712
713#
714# The newer stack is recommended.
538# 715#
539# CONFIG_FIREWIRE is not set 716# CONFIG_FIREWIRE is not set
540# CONFIG_IEEE1394 is not set 717# CONFIG_IEEE1394 is not set
541# CONFIG_I2O is not set 718# CONFIG_I2O is not set
542CONFIG_NETDEVICES=y 719CONFIG_NETDEVICES=y
543CONFIG_NETDEVICES_MULTIQUEUE=y
544CONFIG_IFB=m 720CONFIG_IFB=m
545# CONFIG_DUMMY is not set 721# CONFIG_DUMMY is not set
546# CONFIG_BONDING is not set 722# CONFIG_BONDING is not set
547CONFIG_MACVLAN=m 723CONFIG_MACVLAN=m
548# CONFIG_EQUALIZER is not set 724# CONFIG_EQUALIZER is not set
549# CONFIG_TUN is not set 725# CONFIG_TUN is not set
726CONFIG_VETH=m
550# CONFIG_ARCNET is not set 727# CONFIG_ARCNET is not set
551CONFIG_PHYLIB=m 728CONFIG_PHYLIB=y
552 729
553# 730#
554# MII PHY device drivers 731# MII PHY device drivers
@@ -562,23 +739,51 @@ CONFIG_VITESSE_PHY=m
562CONFIG_SMSC_PHY=m 739CONFIG_SMSC_PHY=m
563# CONFIG_BROADCOM_PHY is not set 740# CONFIG_BROADCOM_PHY is not set
564CONFIG_ICPLUS_PHY=m 741CONFIG_ICPLUS_PHY=m
742CONFIG_REALTEK_PHY=m
743CONFIG_NATIONAL_PHY=m
744CONFIG_STE10XP=m
745CONFIG_LSI_ET1011C_PHY=m
565# CONFIG_FIXED_PHY is not set 746# CONFIG_FIXED_PHY is not set
747CONFIG_MDIO_BITBANG=m
566CONFIG_NET_ETHERNET=y 748CONFIG_NET_ETHERNET=y
567CONFIG_MII=y 749CONFIG_MII=y
568CONFIG_AX88796=m 750CONFIG_AX88796=m
751CONFIG_AX88796_93CX6=y
569CONFIG_SGI_IOC3_ETH=y 752CONFIG_SGI_IOC3_ETH=y
570# CONFIG_HAPPYMEAL is not set 753# CONFIG_HAPPYMEAL is not set
571# CONFIG_SUNGEM is not set 754# CONFIG_SUNGEM is not set
572# CONFIG_CASSINI is not set 755# CONFIG_CASSINI is not set
573# CONFIG_NET_VENDOR_3COM is not set 756# CONFIG_NET_VENDOR_3COM is not set
757CONFIG_SMC91X=m
574# CONFIG_DM9000 is not set 758# CONFIG_DM9000 is not set
759CONFIG_ETHOC=m
760CONFIG_SMSC911X=m
761CONFIG_DNET=m
575# CONFIG_NET_TULIP is not set 762# CONFIG_NET_TULIP is not set
576# CONFIG_HP100 is not set 763# CONFIG_HP100 is not set
764# CONFIG_IBM_NEW_EMAC_ZMII is not set
765# CONFIG_IBM_NEW_EMAC_RGMII is not set
766# CONFIG_IBM_NEW_EMAC_TAH is not set
767# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
768# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
769# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
770# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
577# CONFIG_NET_PCI is not set 771# CONFIG_NET_PCI is not set
772CONFIG_B44=m
773CONFIG_B44_PCI_AUTOSELECT=y
774CONFIG_B44_PCICORE_AUTOSELECT=y
775CONFIG_B44_PCI=y
776CONFIG_KS8842=m
777CONFIG_KS8851_MLL=m
778CONFIG_ATL2=m
578CONFIG_NETDEV_1000=y 779CONFIG_NETDEV_1000=y
579# CONFIG_ACENIC is not set 780# CONFIG_ACENIC is not set
580# CONFIG_DL2K is not set 781# CONFIG_DL2K is not set
581# CONFIG_E1000 is not set 782# CONFIG_E1000 is not set
783CONFIG_E1000E=m
784CONFIG_IP1000=m
785CONFIG_IGB=m
786CONFIG_IGBVF=m
582# CONFIG_NS83820 is not set 787# CONFIG_NS83820 is not set
583# CONFIG_HAMACHI is not set 788# CONFIG_HAMACHI is not set
584# CONFIG_YELLOWFIN is not set 789# CONFIG_YELLOWFIN is not set
@@ -588,24 +793,75 @@ CONFIG_NETDEV_1000=y
588# CONFIG_SKY2 is not set 793# CONFIG_SKY2 is not set
589CONFIG_VIA_VELOCITY=m 794CONFIG_VIA_VELOCITY=m
590# CONFIG_TIGON3 is not set 795# CONFIG_TIGON3 is not set
591# CONFIG_BNX2 is not set 796CONFIG_BNX2=m
797CONFIG_CNIC=m
592CONFIG_QLA3XXX=m 798CONFIG_QLA3XXX=m
593# CONFIG_ATL1 is not set 799# CONFIG_ATL1 is not set
800CONFIG_ATL1E=m
801CONFIG_ATL1C=m
802CONFIG_JME=m
594CONFIG_NETDEV_10000=y 803CONFIG_NETDEV_10000=y
804CONFIG_MDIO=m
595# CONFIG_CHELSIO_T1 is not set 805# CONFIG_CHELSIO_T1 is not set
806CONFIG_CHELSIO_T3_DEPENDS=y
596CONFIG_CHELSIO_T3=m 807CONFIG_CHELSIO_T3=m
808CONFIG_ENIC=m
809CONFIG_IXGBE=m
597# CONFIG_IXGB is not set 810# CONFIG_IXGB is not set
598# CONFIG_S2IO is not set 811# CONFIG_S2IO is not set
812CONFIG_VXGE=m
813# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
599# CONFIG_MYRI10GE is not set 814# CONFIG_MYRI10GE is not set
600CONFIG_NETXEN_NIC=m 815CONFIG_NETXEN_NIC=m
601# CONFIG_MLX4_CORE is not set 816CONFIG_NIU=m
817CONFIG_MLX4_EN=m
818CONFIG_MLX4_CORE=m
819# CONFIG_MLX4_DEBUG is not set
820CONFIG_TEHUTI=m
821CONFIG_BNX2X=m
822CONFIG_QLGE=m
823CONFIG_SFC=m
824CONFIG_BE2NET=m
602# CONFIG_TR is not set 825# CONFIG_TR is not set
603 826CONFIG_WLAN=y
604# 827CONFIG_LIBERTAS_THINFIRM=m
605# Wireless LAN 828CONFIG_ATMEL=m
606# 829CONFIG_PCI_ATMEL=m
607# CONFIG_WLAN_PRE80211 is not set 830CONFIG_PRISM54=m
608CONFIG_WLAN_80211=y 831CONFIG_RTL8180=m
832CONFIG_ADM8211=m
833# CONFIG_MAC80211_HWSIM is not set
834CONFIG_MWL8K=m
835CONFIG_ATH_COMMON=m
836# CONFIG_ATH_DEBUG is not set
837CONFIG_ATH5K=m
838# CONFIG_ATH5K_DEBUG is not set
839CONFIG_ATH9K_HW=m
840CONFIG_ATH9K_COMMON=m
841CONFIG_ATH9K=m
842CONFIG_B43=m
843CONFIG_B43_PCI_AUTOSELECT=y
844CONFIG_B43_PCICORE_AUTOSELECT=y
845CONFIG_B43_PHY_LP=y
846CONFIG_B43_LEDS=y
847CONFIG_B43_HWRNG=y
848# CONFIG_B43_DEBUG is not set
849CONFIG_B43LEGACY=m
850CONFIG_B43LEGACY_PCI_AUTOSELECT=y
851CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
852CONFIG_B43LEGACY_LEDS=y
853CONFIG_B43LEGACY_HWRNG=y
854# CONFIG_B43LEGACY_DEBUG is not set
855CONFIG_B43LEGACY_DMA=y
856CONFIG_B43LEGACY_PIO=y
857CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
858# CONFIG_B43LEGACY_DMA_MODE is not set
859# CONFIG_B43LEGACY_PIO_MODE is not set
860CONFIG_HOSTAP=m
861CONFIG_HOSTAP_FIRMWARE=y
862CONFIG_HOSTAP_FIRMWARE_NVRAM=y
863CONFIG_HOSTAP_PLX=m
864CONFIG_HOSTAP_PCI=m
609CONFIG_IPW2100=m 865CONFIG_IPW2100=m
610CONFIG_IPW2100_MONITOR=y 866CONFIG_IPW2100_MONITOR=y
611CONFIG_IPW2100_DEBUG=y 867CONFIG_IPW2100_DEBUG=y
@@ -615,38 +871,57 @@ CONFIG_IPW2200_RADIOTAP=y
615CONFIG_IPW2200_PROMISCUOUS=y 871CONFIG_IPW2200_PROMISCUOUS=y
616CONFIG_IPW2200_QOS=y 872CONFIG_IPW2200_QOS=y
617CONFIG_IPW2200_DEBUG=y 873CONFIG_IPW2200_DEBUG=y
874CONFIG_LIBIPW=m
875# CONFIG_LIBIPW_DEBUG is not set
876CONFIG_IWLWIFI=m
877CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT=y
878# CONFIG_IWLWIFI_DEBUG is not set
879CONFIG_IWLAGN=m
880CONFIG_IWL4965=y
881CONFIG_IWL5000=y
882CONFIG_IWL3945=m
883CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y
618CONFIG_LIBERTAS=m 884CONFIG_LIBERTAS=m
619# CONFIG_LIBERTAS_DEBUG is not set 885# CONFIG_LIBERTAS_DEBUG is not set
620CONFIG_HERMES=m 886CONFIG_HERMES=m
887# CONFIG_HERMES_CACHE_FW_ON_INIT is not set
621CONFIG_PLX_HERMES=m 888CONFIG_PLX_HERMES=m
622CONFIG_TMD_HERMES=m 889CONFIG_TMD_HERMES=m
623CONFIG_NORTEL_HERMES=m 890CONFIG_NORTEL_HERMES=m
624CONFIG_PCI_HERMES=m 891CONFIG_PCI_HERMES=m
625CONFIG_ATMEL=m 892CONFIG_P54_COMMON=m
626CONFIG_PCI_ATMEL=m 893CONFIG_P54_PCI=m
627CONFIG_PRISM54=m 894CONFIG_P54_LEDS=y
628CONFIG_HOSTAP=m 895CONFIG_RT2X00=m
629CONFIG_HOSTAP_FIRMWARE=y 896CONFIG_RT2400PCI=m
630CONFIG_HOSTAP_FIRMWARE_NVRAM=y 897CONFIG_RT2500PCI=m
631CONFIG_HOSTAP_PLX=m 898CONFIG_RT61PCI=m
632CONFIG_HOSTAP_PCI=m 899CONFIG_RT2800PCI_PCI=m
633CONFIG_BCM43XX=m 900CONFIG_RT2800PCI=m
634CONFIG_BCM43XX_DEBUG=y 901CONFIG_RT2800_LIB=m
635CONFIG_BCM43XX_DMA=y 902CONFIG_RT2X00_LIB_PCI=m
636CONFIG_BCM43XX_PIO=y 903CONFIG_RT2X00_LIB=m
637CONFIG_BCM43XX_DMA_AND_PIO_MODE=y 904CONFIG_RT2X00_LIB_HT=y
638# CONFIG_BCM43XX_DMA_MODE is not set 905CONFIG_RT2X00_LIB_FIRMWARE=y
639# CONFIG_BCM43XX_PIO_MODE is not set 906CONFIG_RT2X00_LIB_CRYPTO=y
907CONFIG_RT2X00_LIB_LEDS=y
908# CONFIG_RT2X00_DEBUG is not set
909CONFIG_WL12XX=m
910CONFIG_WL1251=m
911
912#
913# Enable WiMAX (Networking options) to see the WiMAX drivers
914#
640# CONFIG_WAN is not set 915# CONFIG_WAN is not set
641# CONFIG_FDDI is not set 916# CONFIG_FDDI is not set
642# CONFIG_HIPPI is not set 917# CONFIG_HIPPI is not set
643# CONFIG_PPP is not set 918# CONFIG_PPP is not set
644# CONFIG_SLIP is not set 919# CONFIG_SLIP is not set
645# CONFIG_NET_FC is not set 920# CONFIG_NET_FC is not set
646# CONFIG_SHAPER is not set
647# CONFIG_NETCONSOLE is not set 921# CONFIG_NETCONSOLE is not set
648# CONFIG_NETPOLL is not set 922# CONFIG_NETPOLL is not set
649# CONFIG_NET_POLL_CONTROLLER is not set 923# CONFIG_NET_POLL_CONTROLLER is not set
924# CONFIG_VMXNET3 is not set
650# CONFIG_ISDN is not set 925# CONFIG_ISDN is not set
651# CONFIG_PHONE is not set 926# CONFIG_PHONE is not set
652 927
@@ -664,13 +939,16 @@ CONFIG_SERIO_SERPORT=y
664# CONFIG_SERIO_PCIPS2 is not set 939# CONFIG_SERIO_PCIPS2 is not set
665CONFIG_SERIO_LIBPS2=m 940CONFIG_SERIO_LIBPS2=m
666CONFIG_SERIO_RAW=m 941CONFIG_SERIO_RAW=m
942CONFIG_SERIO_ALTERA_PS2=m
667# CONFIG_GAMEPORT is not set 943# CONFIG_GAMEPORT is not set
668 944
669# 945#
670# Character devices 946# Character devices
671# 947#
672# CONFIG_VT is not set 948# CONFIG_VT is not set
949CONFIG_DEVKMEM=y
673# CONFIG_SERIAL_NONSTANDARD is not set 950# CONFIG_SERIAL_NONSTANDARD is not set
951CONFIG_NOZOMI=m
674 952
675# 953#
676# Serial drivers 954# Serial drivers
@@ -693,95 +971,258 @@ CONFIG_SERIAL_CORE=y
693CONFIG_SERIAL_CORE_CONSOLE=y 971CONFIG_SERIAL_CORE_CONSOLE=y
694# CONFIG_SERIAL_JSM is not set 972# CONFIG_SERIAL_JSM is not set
695CONFIG_UNIX98_PTYS=y 973CONFIG_UNIX98_PTYS=y
974CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
696CONFIG_LEGACY_PTYS=y 975CONFIG_LEGACY_PTYS=y
697CONFIG_LEGACY_PTY_COUNT=256 976CONFIG_LEGACY_PTY_COUNT=256
698# CONFIG_IPMI_HANDLER is not set 977# CONFIG_IPMI_HANDLER is not set
699# CONFIG_WATCHDOG is not set
700CONFIG_HW_RANDOM=m 978CONFIG_HW_RANDOM=m
701# CONFIG_RTC is not set 979CONFIG_HW_RANDOM_TIMERIOMEM=m
702# CONFIG_R3964 is not set 980# CONFIG_R3964 is not set
703# CONFIG_APPLICOM is not set 981# CONFIG_APPLICOM is not set
704# CONFIG_DRM is not set
705# CONFIG_RAW_DRIVER is not set 982# CONFIG_RAW_DRIVER is not set
706# CONFIG_TCG_TPM is not set 983# CONFIG_TCG_TPM is not set
707CONFIG_DEVPORT=y 984CONFIG_DEVPORT=y
708# CONFIG_I2C is not set 985CONFIG_I2C=m
986CONFIG_I2C_BOARDINFO=y
987CONFIG_I2C_COMPAT=y
988CONFIG_I2C_CHARDEV=m
989CONFIG_I2C_HELPER_AUTO=y
990CONFIG_I2C_ALGOBIT=m
991CONFIG_I2C_ALGOPCA=m
992
993#
994# I2C Hardware Bus support
995#
996
997#
998# PC SMBus host controller drivers
999#
1000CONFIG_I2C_ALI1535=m
1001CONFIG_I2C_ALI1563=m
1002CONFIG_I2C_ALI15X3=m
1003CONFIG_I2C_AMD756=m
1004CONFIG_I2C_AMD8111=m
1005CONFIG_I2C_I801=m
1006CONFIG_I2C_ISCH=m
1007CONFIG_I2C_PIIX4=m
1008CONFIG_I2C_NFORCE2=m
1009CONFIG_I2C_SIS5595=m
1010CONFIG_I2C_SIS630=m
1011CONFIG_I2C_SIS96X=m
1012CONFIG_I2C_VIA=m
1013CONFIG_I2C_VIAPRO=m
709 1014
710# 1015#
711# SPI support 1016# I2C system bus drivers (mostly embedded / system-on-chip)
712# 1017#
1018CONFIG_I2C_OCORES=m
1019CONFIG_I2C_SIMTEC=m
1020
1021#
1022# External I2C/SMBus adapter drivers
1023#
1024CONFIG_I2C_PARPORT_LIGHT=m
1025CONFIG_I2C_TAOS_EVM=m
1026
1027#
1028# Other I2C/SMBus bus drivers
1029#
1030CONFIG_I2C_PCA_PLATFORM=m
1031CONFIG_I2C_STUB=m
1032
1033#
1034# Miscellaneous I2C Chip support
1035#
1036CONFIG_SENSORS_TSL2550=m
1037# CONFIG_I2C_DEBUG_CORE is not set
1038# CONFIG_I2C_DEBUG_ALGO is not set
1039# CONFIG_I2C_DEBUG_BUS is not set
1040# CONFIG_I2C_DEBUG_CHIP is not set
713# CONFIG_SPI is not set 1041# CONFIG_SPI is not set
714# CONFIG_SPI_MASTER is not set 1042
1043#
1044# PPS support
1045#
1046CONFIG_PPS=m
1047# CONFIG_PPS_DEBUG is not set
715# CONFIG_W1 is not set 1048# CONFIG_W1 is not set
716# CONFIG_POWER_SUPPLY is not set 1049# CONFIG_POWER_SUPPLY is not set
717# CONFIG_HWMON is not set 1050# CONFIG_HWMON is not set
1051CONFIG_THERMAL=m
1052# CONFIG_WATCHDOG is not set
1053CONFIG_SSB_POSSIBLE=y
718 1054
719# 1055#
720# Multifunction device drivers 1056# Sonics Silicon Backplane
721# 1057#
722# CONFIG_MFD_SM501 is not set 1058CONFIG_SSB=m
1059CONFIG_SSB_SPROM=y
1060CONFIG_SSB_PCIHOST_POSSIBLE=y
1061CONFIG_SSB_PCIHOST=y
1062CONFIG_SSB_B43_PCI_BRIDGE=y
1063# CONFIG_SSB_SILENT is not set
1064# CONFIG_SSB_DEBUG is not set
1065CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
1066CONFIG_SSB_DRIVER_PCICORE=y
1067# CONFIG_SSB_DRIVER_MIPS is not set
723 1068
724# 1069#
725# Multimedia devices 1070# Multifunction device drivers
726# 1071#
727# CONFIG_VIDEO_DEV is not set 1072# CONFIG_MFD_CORE is not set
728# CONFIG_DVB_CORE is not set 1073# CONFIG_MFD_SM501 is not set
729# CONFIG_DAB is not set 1074# CONFIG_HTC_PASIC3 is not set
1075# CONFIG_MFD_TMIO is not set
1076# CONFIG_MFD_WM8400 is not set
1077CONFIG_MFD_WM8350=m
1078CONFIG_MFD_WM8350_I2C=m
1079CONFIG_MFD_PCF50633=m
1080CONFIG_PCF50633_ADC=m
1081CONFIG_PCF50633_GPIO=m
1082CONFIG_AB3100_CORE=m
1083CONFIG_AB3100_OTP=m
1084# CONFIG_REGULATOR is not set
1085# CONFIG_MEDIA_SUPPORT is not set
730 1086
731# 1087#
732# Graphics support 1088# Graphics support
733# 1089#
734# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 1090# CONFIG_VGA_ARB is not set
735 1091# CONFIG_DRM is not set
736#
737# Display device support
738#
739# CONFIG_DISPLAY_SUPPORT is not set
740# CONFIG_VGASTATE is not set 1092# CONFIG_VGASTATE is not set
741# CONFIG_VIDEO_OUTPUT_CONTROL is not set 1093# CONFIG_VIDEO_OUTPUT_CONTROL is not set
742# CONFIG_FB is not set 1094# CONFIG_FB is not set
1095# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
743 1096
744# 1097#
745# Sound 1098# Display device support
746# 1099#
1100# CONFIG_DISPLAY_SUPPORT is not set
747# CONFIG_SOUND is not set 1101# CONFIG_SOUND is not set
748CONFIG_USB_SUPPORT=y 1102CONFIG_USB_SUPPORT=y
749CONFIG_USB_ARCH_HAS_HCD=y 1103CONFIG_USB_ARCH_HAS_HCD=y
750CONFIG_USB_ARCH_HAS_OHCI=y 1104CONFIG_USB_ARCH_HAS_OHCI=y
751CONFIG_USB_ARCH_HAS_EHCI=y 1105CONFIG_USB_ARCH_HAS_EHCI=y
752# CONFIG_USB is not set 1106# CONFIG_USB is not set
1107# CONFIG_USB_OTG_WHITELIST is not set
1108# CONFIG_USB_OTG_BLACKLIST_HUB is not set
753 1109
754# 1110#
755# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1111# Enable Host or Gadget support to see Inventra options
756# 1112#
757 1113
758# 1114#
759# USB Gadget Support 1115# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
760# 1116#
761# CONFIG_USB_GADGET is not set 1117# CONFIG_USB_GADGET is not set
1118
1119#
1120# OTG and related infrastructure
1121#
1122# CONFIG_UWB is not set
762# CONFIG_MMC is not set 1123# CONFIG_MMC is not set
763# CONFIG_NEW_LEDS is not set 1124# CONFIG_MEMSTICK is not set
764# CONFIG_INFINIBAND is not set 1125CONFIG_NEW_LEDS=y
765# CONFIG_RTC_CLASS is not set 1126CONFIG_LEDS_CLASS=m
1127
1128#
1129# LED drivers
1130#
1131CONFIG_LEDS_LP3944=m
1132CONFIG_LEDS_PCA955X=m
1133CONFIG_LEDS_WM8350=m
1134CONFIG_LEDS_BD2802=m
1135
1136#
1137# LED Triggers
1138#
1139CONFIG_LEDS_TRIGGERS=y
1140CONFIG_LEDS_TRIGGER_TIMER=m
1141CONFIG_LEDS_TRIGGER_HEARTBEAT=m
1142CONFIG_LEDS_TRIGGER_BACKLIGHT=m
1143CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
766 1144
767# 1145#
768# DMA Engine support 1146# iptables trigger is under Netfilter config (LED target)
769# 1147#
770# CONFIG_DMA_ENGINE is not set 1148# CONFIG_ACCESSIBILITY is not set
1149# CONFIG_INFINIBAND is not set
1150CONFIG_RTC_LIB=y
1151CONFIG_RTC_CLASS=y
1152CONFIG_RTC_HCTOSYS=y
1153CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1154# CONFIG_RTC_DEBUG is not set
771 1155
772# 1156#
773# DMA Clients 1157# RTC interfaces
774# 1158#
1159CONFIG_RTC_INTF_SYSFS=y
1160CONFIG_RTC_INTF_PROC=y
1161CONFIG_RTC_INTF_DEV=y
1162# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
1163# CONFIG_RTC_DRV_TEST is not set
775 1164
776# 1165#
777# DMA Devices 1166# I2C RTC drivers
1167#
1168# CONFIG_RTC_DRV_DS1307 is not set
1169# CONFIG_RTC_DRV_DS1374 is not set
1170# CONFIG_RTC_DRV_DS1672 is not set
1171# CONFIG_RTC_DRV_MAX6900 is not set
1172# CONFIG_RTC_DRV_RS5C372 is not set
1173# CONFIG_RTC_DRV_ISL1208 is not set
1174# CONFIG_RTC_DRV_X1205 is not set
1175# CONFIG_RTC_DRV_PCF8563 is not set
1176# CONFIG_RTC_DRV_PCF8583 is not set
1177# CONFIG_RTC_DRV_M41T80 is not set
1178# CONFIG_RTC_DRV_BQ32K is not set
1179# CONFIG_RTC_DRV_S35390A is not set
1180# CONFIG_RTC_DRV_FM3130 is not set
1181# CONFIG_RTC_DRV_RX8581 is not set
1182# CONFIG_RTC_DRV_RX8025 is not set
1183
1184#
1185# SPI RTC drivers
1186#
1187
778# 1188#
1189# Platform RTC drivers
1190#
1191# CONFIG_RTC_DRV_CMOS is not set
1192# CONFIG_RTC_DRV_DS1286 is not set
1193# CONFIG_RTC_DRV_DS1511 is not set
1194# CONFIG_RTC_DRV_DS1553 is not set
1195# CONFIG_RTC_DRV_DS1742 is not set
1196# CONFIG_RTC_DRV_STK17TA8 is not set
1197# CONFIG_RTC_DRV_M48T86 is not set
1198CONFIG_RTC_DRV_M48T35=y
1199# CONFIG_RTC_DRV_M48T59 is not set
1200# CONFIG_RTC_DRV_MSM6242 is not set
1201# CONFIG_RTC_DRV_BQ4802 is not set
1202# CONFIG_RTC_DRV_RP5C01 is not set
1203# CONFIG_RTC_DRV_V3020 is not set
1204# CONFIG_RTC_DRV_WM8350 is not set
1205# CONFIG_RTC_DRV_PCF50633 is not set
1206CONFIG_RTC_DRV_AB3100=m
779 1207
780# 1208#
781# Userspace I/O 1209# on-CPU RTC drivers
782# 1210#
1211# CONFIG_DMADEVICES is not set
1212# CONFIG_AUXDISPLAY is not set
783CONFIG_UIO=y 1213CONFIG_UIO=y
784# CONFIG_UIO_CIF is not set 1214# CONFIG_UIO_CIF is not set
1215# CONFIG_UIO_PDRV is not set
1216# CONFIG_UIO_PDRV_GENIRQ is not set
1217CONFIG_UIO_SMX=m
1218CONFIG_UIO_AEC=m
1219CONFIG_UIO_SERCOS3=m
1220CONFIG_UIO_PCI_GENERIC=m
1221
1222#
1223# TI VLYNQ
1224#
1225# CONFIG_STAGING is not set
785 1226
786# 1227#
787# File systems 1228# File systems
@@ -792,36 +1233,58 @@ CONFIG_EXT2_FS_POSIX_ACL=y
792CONFIG_EXT2_FS_SECURITY=y 1233CONFIG_EXT2_FS_SECURITY=y
793# CONFIG_EXT2_FS_XIP is not set 1234# CONFIG_EXT2_FS_XIP is not set
794CONFIG_EXT3_FS=y 1235CONFIG_EXT3_FS=y
1236# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
795CONFIG_EXT3_FS_XATTR=y 1237CONFIG_EXT3_FS_XATTR=y
796CONFIG_EXT3_FS_POSIX_ACL=y 1238CONFIG_EXT3_FS_POSIX_ACL=y
797CONFIG_EXT3_FS_SECURITY=y 1239CONFIG_EXT3_FS_SECURITY=y
798# CONFIG_EXT4DEV_FS is not set 1240CONFIG_EXT4_FS=y
1241CONFIG_EXT4_FS_XATTR=y
1242CONFIG_EXT4_FS_POSIX_ACL=y
1243CONFIG_EXT4_FS_SECURITY=y
1244# CONFIG_EXT4_DEBUG is not set
799CONFIG_JBD=y 1245CONFIG_JBD=y
800CONFIG_JBD_DEBUG=y 1246CONFIG_JBD2=y
801CONFIG_FS_MBCACHE=y 1247CONFIG_FS_MBCACHE=y
802# CONFIG_REISERFS_FS is not set 1248# CONFIG_REISERFS_FS is not set
803# CONFIG_JFS_FS is not set 1249# CONFIG_JFS_FS is not set
804CONFIG_FS_POSIX_ACL=y 1250CONFIG_FS_POSIX_ACL=y
805CONFIG_XFS_FS=m 1251CONFIG_XFS_FS=m
806CONFIG_XFS_QUOTA=y 1252CONFIG_XFS_QUOTA=y
807CONFIG_XFS_SECURITY=y
808CONFIG_XFS_POSIX_ACL=y 1253CONFIG_XFS_POSIX_ACL=y
809# CONFIG_XFS_RT is not set 1254# CONFIG_XFS_RT is not set
1255# CONFIG_XFS_DEBUG is not set
810# CONFIG_GFS2_FS is not set 1256# CONFIG_GFS2_FS is not set
811# CONFIG_OCFS2_FS is not set 1257# CONFIG_OCFS2_FS is not set
812# CONFIG_MINIX_FS is not set 1258CONFIG_BTRFS_FS=m
813# CONFIG_ROMFS_FS is not set 1259CONFIG_BTRFS_FS_POSIX_ACL=y
1260# CONFIG_NILFS2_FS is not set
1261CONFIG_FILE_LOCKING=y
1262CONFIG_FSNOTIFY=y
1263CONFIG_DNOTIFY=y
814CONFIG_INOTIFY=y 1264CONFIG_INOTIFY=y
815CONFIG_INOTIFY_USER=y 1265CONFIG_INOTIFY_USER=y
816# CONFIG_QUOTA is not set 1266# CONFIG_QUOTA is not set
1267CONFIG_QUOTA_NETLINK_INTERFACE=y
817CONFIG_QUOTACTL=y 1268CONFIG_QUOTACTL=y
818CONFIG_DNOTIFY=y
819CONFIG_AUTOFS_FS=m 1269CONFIG_AUTOFS_FS=m
820# CONFIG_AUTOFS4_FS is not set 1270# CONFIG_AUTOFS4_FS is not set
821CONFIG_FUSE_FS=m 1271CONFIG_FUSE_FS=m
1272CONFIG_CUSE=m
822CONFIG_GENERIC_ACL=y 1273CONFIG_GENERIC_ACL=y
823 1274
824# 1275#
1276# Caches
1277#
1278CONFIG_FSCACHE=m
1279CONFIG_FSCACHE_STATS=y
1280# CONFIG_FSCACHE_HISTOGRAM is not set
1281# CONFIG_FSCACHE_DEBUG is not set
1282# CONFIG_FSCACHE_OBJECT_LIST is not set
1283CONFIG_CACHEFILES=m
1284# CONFIG_CACHEFILES_DEBUG is not set
1285# CONFIG_CACHEFILES_HISTOGRAM is not set
1286
1287#
825# CD-ROM/DVD Filesystems 1288# CD-ROM/DVD Filesystems
826# 1289#
827# CONFIG_ISO9660_FS is not set 1290# CONFIG_ISO9660_FS is not set
@@ -840,16 +1303,13 @@ CONFIG_GENERIC_ACL=y
840CONFIG_PROC_FS=y 1303CONFIG_PROC_FS=y
841CONFIG_PROC_KCORE=y 1304CONFIG_PROC_KCORE=y
842CONFIG_PROC_SYSCTL=y 1305CONFIG_PROC_SYSCTL=y
1306CONFIG_PROC_PAGE_MONITOR=y
843CONFIG_SYSFS=y 1307CONFIG_SYSFS=y
844CONFIG_TMPFS=y 1308CONFIG_TMPFS=y
845CONFIG_TMPFS_POSIX_ACL=y 1309CONFIG_TMPFS_POSIX_ACL=y
846# CONFIG_HUGETLB_PAGE is not set 1310# CONFIG_HUGETLB_PAGE is not set
847CONFIG_RAMFS=y
848CONFIG_CONFIGFS_FS=m 1311CONFIG_CONFIGFS_FS=m
849 1312CONFIG_MISC_FILESYSTEMS=y
850#
851# Miscellaneous filesystems
852#
853# CONFIG_ADFS_FS is not set 1313# CONFIG_ADFS_FS is not set
854# CONFIG_AFFS_FS is not set 1314# CONFIG_AFFS_FS is not set
855# CONFIG_ECRYPT_FS is not set 1315# CONFIG_ECRYPT_FS is not set
@@ -859,28 +1319,32 @@ CONFIG_CONFIGFS_FS=m
859# CONFIG_BFS_FS is not set 1319# CONFIG_BFS_FS is not set
860# CONFIG_EFS_FS is not set 1320# CONFIG_EFS_FS is not set
861# CONFIG_CRAMFS is not set 1321# CONFIG_CRAMFS is not set
1322CONFIG_SQUASHFS=m
1323# CONFIG_SQUASHFS_EMBEDDED is not set
1324CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
862# CONFIG_VXFS_FS is not set 1325# CONFIG_VXFS_FS is not set
1326# CONFIG_MINIX_FS is not set
1327CONFIG_OMFS_FS=m
863# CONFIG_HPFS_FS is not set 1328# CONFIG_HPFS_FS is not set
864# CONFIG_QNX4FS_FS is not set 1329# CONFIG_QNX4FS_FS is not set
1330# CONFIG_ROMFS_FS is not set
865# CONFIG_SYSV_FS is not set 1331# CONFIG_SYSV_FS is not set
866# CONFIG_UFS_FS is not set 1332# CONFIG_UFS_FS is not set
867 1333CONFIG_EXOFS_FS=m
868# 1334# CONFIG_EXOFS_DEBUG is not set
869# Network File Systems 1335CONFIG_NETWORK_FILESYSTEMS=y
870#
871CONFIG_NFS_FS=y 1336CONFIG_NFS_FS=y
872CONFIG_NFS_V3=y 1337CONFIG_NFS_V3=y
873# CONFIG_NFS_V3_ACL is not set 1338# CONFIG_NFS_V3_ACL is not set
874# CONFIG_NFS_V4 is not set 1339# CONFIG_NFS_V4 is not set
875# CONFIG_NFS_DIRECTIO is not set
876# CONFIG_NFSD is not set
877# CONFIG_ROOT_NFS is not set 1340# CONFIG_ROOT_NFS is not set
1341# CONFIG_NFSD is not set
878CONFIG_LOCKD=y 1342CONFIG_LOCKD=y
879CONFIG_LOCKD_V4=y 1343CONFIG_LOCKD_V4=y
1344CONFIG_EXPORTFS=m
880CONFIG_NFS_COMMON=y 1345CONFIG_NFS_COMMON=y
881CONFIG_SUNRPC=y 1346CONFIG_SUNRPC=y
882CONFIG_SUNRPC_GSS=y 1347CONFIG_SUNRPC_GSS=y
883# CONFIG_SUNRPC_BIND34 is not set
884CONFIG_RPCSEC_GSS_KRB5=y 1348CONFIG_RPCSEC_GSS_KRB5=y
885# CONFIG_RPCSEC_GSS_SPKM3 is not set 1349# CONFIG_RPCSEC_GSS_SPKM3 is not set
886# CONFIG_SMB_FS is not set 1350# CONFIG_SMB_FS is not set
@@ -910,35 +1374,37 @@ CONFIG_SGI_PARTITION=y
910# CONFIG_KARMA_PARTITION is not set 1374# CONFIG_KARMA_PARTITION is not set
911# CONFIG_EFI_PARTITION is not set 1375# CONFIG_EFI_PARTITION is not set
912# CONFIG_SYSV68_PARTITION is not set 1376# CONFIG_SYSV68_PARTITION is not set
913
914#
915# Native Language Support
916#
917# CONFIG_NLS is not set 1377# CONFIG_NLS is not set
918
919#
920# Distributed Lock Manager
921#
922CONFIG_DLM=m 1378CONFIG_DLM=m
923# CONFIG_DLM_DEBUG is not set 1379# CONFIG_DLM_DEBUG is not set
924 1380
925# 1381#
926# Profiling support
927#
928# CONFIG_PROFILING is not set
929
930#
931# Kernel hacking 1382# Kernel hacking
932# 1383#
933CONFIG_TRACE_IRQFLAGS_SUPPORT=y 1384CONFIG_TRACE_IRQFLAGS_SUPPORT=y
934# CONFIG_PRINTK_TIME is not set 1385# CONFIG_PRINTK_TIME is not set
1386CONFIG_ENABLE_WARN_DEPRECATED=y
935CONFIG_ENABLE_MUST_CHECK=y 1387CONFIG_ENABLE_MUST_CHECK=y
1388CONFIG_FRAME_WARN=2048
936# CONFIG_MAGIC_SYSRQ is not set 1389# CONFIG_MAGIC_SYSRQ is not set
1390# CONFIG_STRIP_ASM_SYMS is not set
937# CONFIG_UNUSED_SYMBOLS is not set 1391# CONFIG_UNUSED_SYMBOLS is not set
938# CONFIG_DEBUG_FS is not set 1392# CONFIG_DEBUG_FS is not set
939# CONFIG_HEADERS_CHECK is not set 1393# CONFIG_HEADERS_CHECK is not set
940# CONFIG_DEBUG_KERNEL is not set 1394# CONFIG_DEBUG_KERNEL is not set
941CONFIG_CROSSCOMPILE=y 1395# CONFIG_DEBUG_MEMORY_INIT is not set
1396# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1397# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1398CONFIG_HAVE_FUNCTION_TRACER=y
1399CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1400CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
1401CONFIG_HAVE_DYNAMIC_FTRACE=y
1402CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1403CONFIG_TRACING_SUPPORT=y
1404# CONFIG_FTRACE is not set
1405# CONFIG_SAMPLES is not set
1406CONFIG_HAVE_ARCH_KGDB=y
1407CONFIG_EARLY_PRINTK=y
942# CONFIG_CMDLINE_BOOL is not set 1408# CONFIG_CMDLINE_BOOL is not set
943 1409
944# 1410#
@@ -947,65 +1413,140 @@ CONFIG_CROSSCOMPILE=y
947CONFIG_KEYS=y 1413CONFIG_KEYS=y
948CONFIG_KEYS_DEBUG_PROC_KEYS=y 1414CONFIG_KEYS_DEBUG_PROC_KEYS=y
949# CONFIG_SECURITY is not set 1415# CONFIG_SECURITY is not set
950CONFIG_XOR_BLOCKS=m 1416CONFIG_SECURITYFS=y
951CONFIG_ASYNC_CORE=m 1417# CONFIG_DEFAULT_SECURITY_SELINUX is not set
952CONFIG_ASYNC_MEMCPY=m 1418# CONFIG_DEFAULT_SECURITY_SMACK is not set
953CONFIG_ASYNC_XOR=m 1419# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1420CONFIG_DEFAULT_SECURITY_DAC=y
1421CONFIG_DEFAULT_SECURITY=""
1422CONFIG_XOR_BLOCKS=y
1423CONFIG_ASYNC_CORE=y
1424CONFIG_ASYNC_MEMCPY=y
1425CONFIG_ASYNC_XOR=y
1426CONFIG_ASYNC_PQ=y
1427CONFIG_ASYNC_RAID6_RECOV=y
954CONFIG_CRYPTO=y 1428CONFIG_CRYPTO=y
1429
1430#
1431# Crypto core or helper
1432#
1433CONFIG_CRYPTO_FIPS=y
955CONFIG_CRYPTO_ALGAPI=y 1434CONFIG_CRYPTO_ALGAPI=y
956CONFIG_CRYPTO_ABLKCIPHER=m 1435CONFIG_CRYPTO_ALGAPI2=y
1436CONFIG_CRYPTO_AEAD=m
1437CONFIG_CRYPTO_AEAD2=y
957CONFIG_CRYPTO_BLKCIPHER=y 1438CONFIG_CRYPTO_BLKCIPHER=y
1439CONFIG_CRYPTO_BLKCIPHER2=y
958CONFIG_CRYPTO_HASH=y 1440CONFIG_CRYPTO_HASH=y
1441CONFIG_CRYPTO_HASH2=y
1442CONFIG_CRYPTO_RNG=m
1443CONFIG_CRYPTO_RNG2=y
1444CONFIG_CRYPTO_PCOMP=y
959CONFIG_CRYPTO_MANAGER=y 1445CONFIG_CRYPTO_MANAGER=y
1446CONFIG_CRYPTO_MANAGER2=y
1447CONFIG_CRYPTO_GF128MUL=m
1448CONFIG_CRYPTO_NULL=m
1449CONFIG_CRYPTO_WORKQUEUE=y
1450CONFIG_CRYPTO_CRYPTD=m
1451CONFIG_CRYPTO_AUTHENC=m
1452# CONFIG_CRYPTO_TEST is not set
1453
1454#
1455# Authenticated Encryption with Associated Data
1456#
1457CONFIG_CRYPTO_CCM=m
1458CONFIG_CRYPTO_GCM=m
1459CONFIG_CRYPTO_SEQIV=m
1460
1461#
1462# Block modes
1463#
1464CONFIG_CRYPTO_CBC=y
1465CONFIG_CRYPTO_CTR=m
1466CONFIG_CRYPTO_CTS=m
1467CONFIG_CRYPTO_ECB=m
1468CONFIG_CRYPTO_LRW=m
1469CONFIG_CRYPTO_PCBC=m
1470CONFIG_CRYPTO_XTS=m
1471
1472#
1473# Hash modes
1474#
960CONFIG_CRYPTO_HMAC=y 1475CONFIG_CRYPTO_HMAC=y
961CONFIG_CRYPTO_XCBC=m 1476CONFIG_CRYPTO_XCBC=m
962CONFIG_CRYPTO_NULL=m 1477CONFIG_CRYPTO_VMAC=m
1478
1479#
1480# Digest
1481#
1482CONFIG_CRYPTO_CRC32C=m
1483CONFIG_CRYPTO_GHASH=m
963CONFIG_CRYPTO_MD4=m 1484CONFIG_CRYPTO_MD4=m
964CONFIG_CRYPTO_MD5=y 1485CONFIG_CRYPTO_MD5=y
1486CONFIG_CRYPTO_MICHAEL_MIC=m
1487CONFIG_CRYPTO_RMD128=m
1488CONFIG_CRYPTO_RMD160=m
1489CONFIG_CRYPTO_RMD256=m
1490CONFIG_CRYPTO_RMD320=m
965CONFIG_CRYPTO_SHA1=m 1491CONFIG_CRYPTO_SHA1=m
966CONFIG_CRYPTO_SHA256=m 1492CONFIG_CRYPTO_SHA256=m
967CONFIG_CRYPTO_SHA512=m 1493CONFIG_CRYPTO_SHA512=m
968CONFIG_CRYPTO_WP512=m
969CONFIG_CRYPTO_TGR192=m 1494CONFIG_CRYPTO_TGR192=m
970CONFIG_CRYPTO_GF128MUL=m 1495CONFIG_CRYPTO_WP512=m
971CONFIG_CRYPTO_ECB=m 1496
972CONFIG_CRYPTO_CBC=y 1497#
973CONFIG_CRYPTO_PCBC=m 1498# Ciphers
974CONFIG_CRYPTO_LRW=m 1499#
975CONFIG_CRYPTO_CRYPTD=m
976CONFIG_CRYPTO_DES=y
977CONFIG_CRYPTO_FCRYPT=m
978CONFIG_CRYPTO_BLOWFISH=m
979CONFIG_CRYPTO_TWOFISH=m
980CONFIG_CRYPTO_TWOFISH_COMMON=m
981CONFIG_CRYPTO_SERPENT=m
982CONFIG_CRYPTO_AES=m 1500CONFIG_CRYPTO_AES=m
1501CONFIG_CRYPTO_ANUBIS=m
1502CONFIG_CRYPTO_ARC4=m
1503CONFIG_CRYPTO_BLOWFISH=m
1504CONFIG_CRYPTO_CAMELLIA=m
983CONFIG_CRYPTO_CAST5=m 1505CONFIG_CRYPTO_CAST5=m
984CONFIG_CRYPTO_CAST6=m 1506CONFIG_CRYPTO_CAST6=m
985CONFIG_CRYPTO_TEA=m 1507CONFIG_CRYPTO_DES=y
986CONFIG_CRYPTO_ARC4=m 1508CONFIG_CRYPTO_FCRYPT=m
987CONFIG_CRYPTO_KHAZAD=m 1509CONFIG_CRYPTO_KHAZAD=m
988CONFIG_CRYPTO_ANUBIS=m 1510CONFIG_CRYPTO_SALSA20=m
1511CONFIG_CRYPTO_SEED=m
1512CONFIG_CRYPTO_SERPENT=m
1513CONFIG_CRYPTO_TEA=m
1514CONFIG_CRYPTO_TWOFISH=m
1515CONFIG_CRYPTO_TWOFISH_COMMON=m
1516
1517#
1518# Compression
1519#
989CONFIG_CRYPTO_DEFLATE=m 1520CONFIG_CRYPTO_DEFLATE=m
990CONFIG_CRYPTO_MICHAEL_MIC=m 1521CONFIG_CRYPTO_ZLIB=m
991CONFIG_CRYPTO_CRC32C=m 1522CONFIG_CRYPTO_LZO=m
992CONFIG_CRYPTO_CAMELLIA=m 1523
993# CONFIG_CRYPTO_TEST is not set 1524#
1525# Random Number Generation
1526#
1527CONFIG_CRYPTO_ANSI_CPRNG=m
994CONFIG_CRYPTO_HW=y 1528CONFIG_CRYPTO_HW=y
1529CONFIG_CRYPTO_DEV_HIFN_795X=m
1530# CONFIG_CRYPTO_DEV_HIFN_795X_RNG is not set
1531# CONFIG_BINARY_PRINTF is not set
995 1532
996# 1533#
997# Library routines 1534# Library routines
998# 1535#
999CONFIG_BITREVERSE=y 1536CONFIG_BITREVERSE=y
1537CONFIG_GENERIC_FIND_LAST_BIT=y
1000CONFIG_CRC_CCITT=m 1538CONFIG_CRC_CCITT=m
1001# CONFIG_CRC16 is not set 1539CONFIG_CRC16=y
1002# CONFIG_CRC_ITU_T is not set 1540CONFIG_CRC_T10DIF=m
1541CONFIG_CRC_ITU_T=m
1003CONFIG_CRC32=y 1542CONFIG_CRC32=y
1004# CONFIG_CRC7 is not set 1543CONFIG_CRC7=m
1005CONFIG_LIBCRC32C=m 1544CONFIG_LIBCRC32C=m
1006CONFIG_ZLIB_INFLATE=m 1545CONFIG_ZLIB_INFLATE=m
1007CONFIG_ZLIB_DEFLATE=m 1546CONFIG_ZLIB_DEFLATE=m
1008CONFIG_PLIST=y 1547CONFIG_LZO_COMPRESS=m
1548CONFIG_LZO_DECOMPRESS=m
1009CONFIG_HAS_IOMEM=y 1549CONFIG_HAS_IOMEM=y
1010CONFIG_HAS_IOPORT=y 1550CONFIG_HAS_IOPORT=y
1011CONFIG_HAS_DMA=y 1551CONFIG_HAS_DMA=y
1552CONFIG_NLATTR=y
diff --git a/arch/mips/include/asm/cpu-features.h b/arch/mips/include/asm/cpu-features.h
index 1f4df647c384..272c5ef35bbb 100644
--- a/arch/mips/include/asm/cpu-features.h
+++ b/arch/mips/include/asm/cpu-features.h
@@ -191,6 +191,9 @@
191# ifndef cpu_has_64bit_addresses 191# ifndef cpu_has_64bit_addresses
192# define cpu_has_64bit_addresses 0 192# define cpu_has_64bit_addresses 0
193# endif 193# endif
194# ifndef cpu_vmbits
195# define cpu_vmbits 31
196# endif
194#endif 197#endif
195 198
196#ifdef CONFIG_64BIT 199#ifdef CONFIG_64BIT
@@ -209,6 +212,10 @@
209# ifndef cpu_has_64bit_addresses 212# ifndef cpu_has_64bit_addresses
210# define cpu_has_64bit_addresses 1 213# define cpu_has_64bit_addresses 1
211# endif 214# endif
215# ifndef cpu_vmbits
216# define cpu_vmbits cpu_data[0].vmbits
217# define __NEED_VMBITS_PROBE
218# endif
212#endif 219#endif
213 220
214#if defined(CONFIG_CPU_MIPSR2_IRQ_VI) && !defined(cpu_has_vint) 221#if defined(CONFIG_CPU_MIPSR2_IRQ_VI) && !defined(cpu_has_vint)
diff --git a/arch/mips/include/asm/cpu-info.h b/arch/mips/include/asm/cpu-info.h
index 126044308dec..b39def3f6e03 100644
--- a/arch/mips/include/asm/cpu-info.h
+++ b/arch/mips/include/asm/cpu-info.h
@@ -58,6 +58,9 @@ struct cpuinfo_mips {
58 struct cache_desc tcache; /* Tertiary/split secondary cache */ 58 struct cache_desc tcache; /* Tertiary/split secondary cache */
59 int srsets; /* Shadow register sets */ 59 int srsets; /* Shadow register sets */
60 int core; /* physical core number */ 60 int core; /* physical core number */
61#ifdef CONFIG_64BIT
62 int vmbits; /* Virtual memory size in bits */
63#endif
61#if defined(CONFIG_MIPS_MT_SMP) || defined(CONFIG_MIPS_MT_SMTC) 64#if defined(CONFIG_MIPS_MT_SMP) || defined(CONFIG_MIPS_MT_SMTC)
62 /* 65 /*
63 * In the MIPS MT "SMTC" model, each TC is considered 66 * In the MIPS MT "SMTC" model, each TC is considered
diff --git a/arch/mips/include/asm/irq.h b/arch/mips/include/asm/irq.h
index 06960364c96b..dea4aed6478f 100644
--- a/arch/mips/include/asm/irq.h
+++ b/arch/mips/include/asm/irq.h
@@ -135,6 +135,7 @@ extern void free_irqno(unsigned int irq);
135#define CP0_LEGACY_COMPARE_IRQ 7 135#define CP0_LEGACY_COMPARE_IRQ 7
136 136
137extern int cp0_compare_irq; 137extern int cp0_compare_irq;
138extern int cp0_compare_irq_shift;
138extern int cp0_perfcount_irq; 139extern int cp0_perfcount_irq;
139 140
140#endif /* _ASM_IRQ_H */ 141#endif /* _ASM_IRQ_H */
diff --git a/arch/mips/include/asm/mach-au1x00/au1xxx_dbdma.h b/arch/mips/include/asm/mach-au1x00/au1xxx_dbdma.h
index 06f68f43800a..d206000fbfe2 100644
--- a/arch/mips/include/asm/mach-au1x00/au1xxx_dbdma.h
+++ b/arch/mips/include/asm/mach-au1x00/au1xxx_dbdma.h
@@ -305,6 +305,7 @@ typedef struct dbdma_chan_config {
305 dbdev_tab_t *chan_dest; 305 dbdev_tab_t *chan_dest;
306 au1x_dma_chan_t *chan_ptr; 306 au1x_dma_chan_t *chan_ptr;
307 au1x_ddma_desc_t *chan_desc_base; 307 au1x_ddma_desc_t *chan_desc_base;
308 u32 cdb_membase; /* kmalloc base of above */
308 au1x_ddma_desc_t *get_ptr, *put_ptr, *cur_ptr; 309 au1x_ddma_desc_t *get_ptr, *put_ptr, *cur_ptr;
309 void *chan_callparam; 310 void *chan_callparam;
310 void (*chan_callback)(int, void *); 311 void (*chan_callback)(int, void *);
diff --git a/arch/mips/include/asm/mach-ip27/topology.h b/arch/mips/include/asm/mach-ip27/topology.h
index 09a59bcc1b07..1b1a7d1632b9 100644
--- a/arch/mips/include/asm/mach-ip27/topology.h
+++ b/arch/mips/include/asm/mach-ip27/topology.h
@@ -24,7 +24,9 @@ extern struct cpuinfo_ip27 sn_cpu_info[NR_CPUS];
24 24
25#define cpu_to_node(cpu) (sn_cpu_info[(cpu)].p_nodeid) 25#define cpu_to_node(cpu) (sn_cpu_info[(cpu)].p_nodeid)
26#define parent_node(node) (node) 26#define parent_node(node) (node)
27#define cpumask_of_node(node) (&hub_data(node)->h_cpus) 27#define cpumask_of_node(node) ((node) == -1 ? \
28 cpu_all_mask : \
29 &hub_data(node)->h_cpus)
28struct pci_bus; 30struct pci_bus;
29extern int pcibus_to_node(struct pci_bus *); 31extern int pcibus_to_node(struct pci_bus *);
30 32
diff --git a/arch/mips/include/asm/mach-powertv/asic_reg_map.h b/arch/mips/include/asm/mach-powertv/asic_reg_map.h
new file mode 100644
index 000000000000..6f26cb09828e
--- /dev/null
+++ b/arch/mips/include/asm/mach-powertv/asic_reg_map.h
@@ -0,0 +1,90 @@
1/*
2 * asic_reg_map.h
3 *
4 * A macro-enclosed list of the elements for the register_map structure for
5 * use in defining and manipulating the structure.
6 *
7 * Copyright (C) 2009 Cisco Systems, Inc.
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22 */
23
24REGISTER_MAP_ELEMENT(eic_slow0_strt_add)
25REGISTER_MAP_ELEMENT(eic_cfg_bits)
26REGISTER_MAP_ELEMENT(eic_ready_status)
27REGISTER_MAP_ELEMENT(chipver3)
28REGISTER_MAP_ELEMENT(chipver2)
29REGISTER_MAP_ELEMENT(chipver1)
30REGISTER_MAP_ELEMENT(chipver0)
31REGISTER_MAP_ELEMENT(uart1_intstat)
32REGISTER_MAP_ELEMENT(uart1_inten)
33REGISTER_MAP_ELEMENT(uart1_config1)
34REGISTER_MAP_ELEMENT(uart1_config2)
35REGISTER_MAP_ELEMENT(uart1_divisorhi)
36REGISTER_MAP_ELEMENT(uart1_divisorlo)
37REGISTER_MAP_ELEMENT(uart1_data)
38REGISTER_MAP_ELEMENT(uart1_status)
39REGISTER_MAP_ELEMENT(int_stat_3)
40REGISTER_MAP_ELEMENT(int_stat_2)
41REGISTER_MAP_ELEMENT(int_stat_1)
42REGISTER_MAP_ELEMENT(int_stat_0)
43REGISTER_MAP_ELEMENT(int_config)
44REGISTER_MAP_ELEMENT(int_int_scan)
45REGISTER_MAP_ELEMENT(ien_int_3)
46REGISTER_MAP_ELEMENT(ien_int_2)
47REGISTER_MAP_ELEMENT(ien_int_1)
48REGISTER_MAP_ELEMENT(ien_int_0)
49REGISTER_MAP_ELEMENT(int_level_3_3)
50REGISTER_MAP_ELEMENT(int_level_3_2)
51REGISTER_MAP_ELEMENT(int_level_3_1)
52REGISTER_MAP_ELEMENT(int_level_3_0)
53REGISTER_MAP_ELEMENT(int_level_2_3)
54REGISTER_MAP_ELEMENT(int_level_2_2)
55REGISTER_MAP_ELEMENT(int_level_2_1)
56REGISTER_MAP_ELEMENT(int_level_2_0)
57REGISTER_MAP_ELEMENT(int_level_1_3)
58REGISTER_MAP_ELEMENT(int_level_1_2)
59REGISTER_MAP_ELEMENT(int_level_1_1)
60REGISTER_MAP_ELEMENT(int_level_1_0)
61REGISTER_MAP_ELEMENT(int_level_0_3)
62REGISTER_MAP_ELEMENT(int_level_0_2)
63REGISTER_MAP_ELEMENT(int_level_0_1)
64REGISTER_MAP_ELEMENT(int_level_0_0)
65REGISTER_MAP_ELEMENT(int_docsis_en)
66REGISTER_MAP_ELEMENT(mips_pll_setup)
67REGISTER_MAP_ELEMENT(usb_fs)
68REGISTER_MAP_ELEMENT(test_bus)
69REGISTER_MAP_ELEMENT(crt_spare)
70REGISTER_MAP_ELEMENT(usb2_ohci_int_mask)
71REGISTER_MAP_ELEMENT(usb2_strap)
72REGISTER_MAP_ELEMENT(ehci_hcapbase)
73REGISTER_MAP_ELEMENT(ohci_hc_revision)
74REGISTER_MAP_ELEMENT(bcm1_bs_lmi_steer)
75REGISTER_MAP_ELEMENT(usb2_control)
76REGISTER_MAP_ELEMENT(usb2_stbus_obc)
77REGISTER_MAP_ELEMENT(usb2_stbus_mess_size)
78REGISTER_MAP_ELEMENT(usb2_stbus_chunk_size)
79REGISTER_MAP_ELEMENT(pcie_regs)
80REGISTER_MAP_ELEMENT(tim_ch)
81REGISTER_MAP_ELEMENT(tim_cl)
82REGISTER_MAP_ELEMENT(gpio_dout)
83REGISTER_MAP_ELEMENT(gpio_din)
84REGISTER_MAP_ELEMENT(gpio_dir)
85REGISTER_MAP_ELEMENT(watchdog)
86REGISTER_MAP_ELEMENT(front_panel)
87REGISTER_MAP_ELEMENT(misc_clk_ctl1)
88REGISTER_MAP_ELEMENT(misc_clk_ctl2)
89REGISTER_MAP_ELEMENT(crt_ext_ctl)
90REGISTER_MAP_ELEMENT(register_maps)
diff --git a/arch/mips/include/asm/mach-powertv/asic_regs.h b/arch/mips/include/asm/mach-powertv/asic_regs.h
index 9a65c93782f9..1e11236c6dbc 100644
--- a/arch/mips/include/asm/mach-powertv/asic_regs.h
+++ b/arch/mips/include/asm/mach-powertv/asic_regs.h
@@ -35,11 +35,12 @@ enum asic_type {
35#define CRONUS_11 0x0B4C1C21 35#define CRONUS_11 0x0B4C1C21
36#define CRONUSLITE_10 0x0B4C1C40 36#define CRONUSLITE_10 0x0B4C1C40
37 37
38#define NAND_FLASH_BASE 0x03000000 38#define NAND_FLASH_BASE 0x03000000
39#define ZEUS_IO_BASE 0x09000000
40#define CALLIOPE_IO_BASE 0x08000000 39#define CALLIOPE_IO_BASE 0x08000000
41#define CRONUS_IO_BASE 0x09000000 40#define CRONUS_IO_BASE 0x09000000
42#define ASIC_IO_SIZE 0x01000000 41#define ZEUS_IO_BASE 0x09000000
42
43#define ASIC_IO_SIZE 0x01000000
43 44
44/* Definitions for backward compatibility */ 45/* Definitions for backward compatibility */
45#define UART1_INTSTAT uart1_intstat 46#define UART1_INTSTAT uart1_intstat
@@ -52,96 +53,62 @@ enum asic_type {
52#define UART1_STATUS uart1_status 53#define UART1_STATUS uart1_status
53 54
54/* ASIC register enumeration */ 55/* ASIC register enumeration */
56union register_map_entry {
57 unsigned long phys;
58 u32 *virt;
59};
60
61#define REGISTER_MAP_ELEMENT(x) union register_map_entry x;
55struct register_map { 62struct register_map {
56 u32 eic_slow0_strt_add; 63#include <asm/mach-powertv/asic_reg_map.h>
57 u32 eic_cfg_bits;
58 u32 eic_ready_status;
59
60 u32 chipver3;
61 u32 chipver2;
62 u32 chipver1;
63 u32 chipver0;
64
65 u32 uart1_intstat;
66 u32 uart1_inten;
67 u32 uart1_config1;
68 u32 uart1_config2;
69 u32 uart1_divisorhi;
70 u32 uart1_divisorlo;
71 u32 uart1_data;
72 u32 uart1_status;
73
74 u32 int_stat_3;
75 u32 int_stat_2;
76 u32 int_stat_1;
77 u32 int_stat_0;
78 u32 int_config;
79 u32 int_int_scan;
80 u32 ien_int_3;
81 u32 ien_int_2;
82 u32 ien_int_1;
83 u32 ien_int_0;
84 u32 int_level_3_3;
85 u32 int_level_3_2;
86 u32 int_level_3_1;
87 u32 int_level_3_0;
88 u32 int_level_2_3;
89 u32 int_level_2_2;
90 u32 int_level_2_1;
91 u32 int_level_2_0;
92 u32 int_level_1_3;
93 u32 int_level_1_2;
94 u32 int_level_1_1;
95 u32 int_level_1_0;
96 u32 int_level_0_3;
97 u32 int_level_0_2;
98 u32 int_level_0_1;
99 u32 int_level_0_0;
100 u32 int_docsis_en;
101
102 u32 mips_pll_setup;
103 u32 usb_fs;
104 u32 test_bus;
105 u32 crt_spare;
106 u32 usb2_ohci_int_mask;
107 u32 usb2_strap;
108 u32 ehci_hcapbase;
109 u32 ohci_hc_revision;
110 u32 bcm1_bs_lmi_steer;
111 u32 usb2_control;
112 u32 usb2_stbus_obc;
113 u32 usb2_stbus_mess_size;
114 u32 usb2_stbus_chunk_size;
115
116 u32 pcie_regs;
117 u32 tim_ch;
118 u32 tim_cl;
119 u32 gpio_dout;
120 u32 gpio_din;
121 u32 gpio_dir;
122 u32 watchdog;
123 u32 front_panel;
124
125 u32 register_maps;
126}; 64};
65#undef REGISTER_MAP_ELEMENT
66
67/**
68 * register_map_offset_phys - add an offset to the physical address
69 * @map: Pointer to the &struct register_map
70 * @offset: Value to add
71 *
72 * Only adds the base to non-zero physical addresses
73 */
74static inline void register_map_offset_phys(struct register_map *map,
75 unsigned long offset)
76{
77#define REGISTER_MAP_ELEMENT(x) do { \
78 if (map->x.phys != 0) \
79 map->x.phys += offset; \
80 } while (false);
81
82#include <asm/mach-powertv/asic_reg_map.h>
83#undef REGISTER_MAP_ELEMENT
84}
85
86/**
87 * register_map_virtualize - Convert &register_map to virtual addresses
88 * @map: Pointer to &register_map to virtualize
89 */
90static inline void register_map_virtualize(struct register_map *map)
91{
92#define REGISTER_MAP_ELEMENT(x) do { \
93 map->x.virt = (!map->x.phys) ? NULL : \
94 UNCAC_ADDR(phys_to_virt(map->x.phys)); \
95 } while (false);
96
97#include <asm/mach-powertv/asic_reg_map.h>
98#undef REGISTER_MAP_ELEMENT
99}
127 100
128extern enum asic_type asic; 101extern struct register_map _asic_register_map;
129extern const struct register_map *register_map;
130extern unsigned long asic_phy_base; /* Physical address of ASIC */
131extern unsigned long asic_base; /* Virtual address of ASIC */
132 102
133/* 103/*
134 * Macros to interface to registers through their ioremapped address 104 * Macros to interface to registers through their ioremapped address
135 * asic_reg_offset Returns the offset of a given register from the start
136 * of the ASIC address space
137 * asic_reg_phys_addr Returns the physical address of the given register 105 * asic_reg_phys_addr Returns the physical address of the given register
138 * asic_reg_addr Returns the iomapped virtual address of the given 106 * asic_reg_addr Returns the iomapped virtual address of the given
139 * register. 107 * register.
140 */ 108 */
141#define asic_reg_offset(x) (register_map->x) 109#define asic_reg_addr(x) (_asic_register_map.x.virt)
142#define asic_reg_phys_addr(x) (asic_phy_base + asic_reg_offset(x)) 110#define asic_reg_phys_addr(x) (virt_to_phys((void *) CAC_ADDR( \
143#define asic_reg_addr(x) \ 111 (unsigned long) asic_reg_addr(x))))
144 ((unsigned int *) (asic_base + asic_reg_offset(x)))
145 112
146/* 113/*
147 * The asic_reg macro is gone. It should be replaced by either asic_read or 114 * The asic_reg macro is gone. It should be replaced by either asic_read or
diff --git a/arch/mips/include/asm/mipsregs.h b/arch/mips/include/asm/mipsregs.h
index a581d60cbcc2..f4ab3139d737 100644
--- a/arch/mips/include/asm/mipsregs.h
+++ b/arch/mips/include/asm/mipsregs.h
@@ -406,6 +406,16 @@
406#define ST0_XX 0x80000000 /* MIPS IV naming */ 406#define ST0_XX 0x80000000 /* MIPS IV naming */
407 407
408/* 408/*
409 * Bitfields and bit numbers in the coprocessor 0 IntCtl register. (MIPSR2)
410 *
411 * Refer to your MIPS R4xx0 manual, chapter 5 for explanation.
412 */
413#define INTCTLB_IPPCI 26
414#define INTCTLF_IPPCI (_ULCAST_(7) << INTCTLB_IPPCI)
415#define INTCTLB_IPTI 29
416#define INTCTLF_IPTI (_ULCAST_(7) << INTCTLB_IPTI)
417
418/*
409 * Bitfields and bit numbers in the coprocessor 0 cause register. 419 * Bitfields and bit numbers in the coprocessor 0 cause register.
410 * 420 *
411 * Refer to your MIPS R4xx0 manual, chapter 5 for explanation. 421 * Refer to your MIPS R4xx0 manual, chapter 5 for explanation.
@@ -434,6 +444,8 @@
434#define CAUSEF_IV (_ULCAST_(1) << 23) 444#define CAUSEF_IV (_ULCAST_(1) << 23)
435#define CAUSEB_CE 28 445#define CAUSEB_CE 28
436#define CAUSEF_CE (_ULCAST_(3) << 28) 446#define CAUSEF_CE (_ULCAST_(3) << 28)
447#define CAUSEB_TI 30
448#define CAUSEF_TI (_ULCAST_(1) << 30)
437#define CAUSEB_BD 31 449#define CAUSEB_BD 31
438#define CAUSEF_BD (_ULCAST_(1) << 31) 450#define CAUSEF_BD (_ULCAST_(1) << 31)
439 451
diff --git a/arch/mips/include/asm/pgtable-64.h b/arch/mips/include/asm/pgtable-64.h
index 9cd508993956..8eda30b467da 100644
--- a/arch/mips/include/asm/pgtable-64.h
+++ b/arch/mips/include/asm/pgtable-64.h
@@ -110,7 +110,9 @@
110#define VMALLOC_START MAP_BASE 110#define VMALLOC_START MAP_BASE
111#define VMALLOC_END \ 111#define VMALLOC_END \
112 (VMALLOC_START + \ 112 (VMALLOC_START + \
113 PTRS_PER_PGD * PTRS_PER_PMD * PTRS_PER_PTE * PAGE_SIZE - (1UL << 32)) 113 min(PTRS_PER_PGD * PTRS_PER_PMD * PTRS_PER_PTE * PAGE_SIZE, \
114 (1UL << cpu_vmbits)) - (1UL << 32))
115
114#if defined(CONFIG_MODULES) && defined(KBUILD_64BIT_SYM32) && \ 116#if defined(CONFIG_MODULES) && defined(KBUILD_64BIT_SYM32) && \
115 VMALLOC_START != CKSSEG 117 VMALLOC_START != CKSSEG
116/* Load modules into 32bit-compatible segment. */ 118/* Load modules into 32bit-compatible segment. */
diff --git a/arch/mips/kernel/cevt-r4k.c b/arch/mips/kernel/cevt-r4k.c
index b469ad05d520..0b2450ceb13f 100644
--- a/arch/mips/kernel/cevt-r4k.c
+++ b/arch/mips/kernel/cevt-r4k.c
@@ -97,7 +97,7 @@ void mips_event_handler(struct clock_event_device *dev)
97 */ 97 */
98static int c0_compare_int_pending(void) 98static int c0_compare_int_pending(void)
99{ 99{
100 return (read_c0_cause() >> cp0_compare_irq) & 0x100; 100 return (read_c0_cause() >> cp0_compare_irq_shift) & (1ul << CAUSEB_IP);
101} 101}
102 102
103/* 103/*
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
index 80e202eca056..758ad426c57f 100644
--- a/arch/mips/kernel/cpu-probe.c
+++ b/arch/mips/kernel/cpu-probe.c
@@ -284,6 +284,15 @@ static inline int __cpu_has_fpu(void)
284 return ((cpu_get_fpu_id() & 0xff00) != FPIR_IMP_NONE); 284 return ((cpu_get_fpu_id() & 0xff00) != FPIR_IMP_NONE);
285} 285}
286 286
287static inline void cpu_probe_vmbits(struct cpuinfo_mips *c)
288{
289#ifdef __NEED_VMBITS_PROBE
290 write_c0_entryhi(0x3fffffffffffe000ULL);
291 back_to_back_c0_hazard();
292 c->vmbits = fls64(read_c0_entryhi() & 0x3fffffffffffe000ULL);
293#endif
294}
295
287#define R4K_OPTS (MIPS_CPU_TLB | MIPS_CPU_4KEX | MIPS_CPU_4K_CACHE \ 296#define R4K_OPTS (MIPS_CPU_TLB | MIPS_CPU_4KEX | MIPS_CPU_4K_CACHE \
288 | MIPS_CPU_COUNTER) 297 | MIPS_CPU_COUNTER)
289 298
@@ -969,6 +978,8 @@ __cpuinit void cpu_probe(void)
969 c->srsets = ((read_c0_srsctl() >> 26) & 0x0f) + 1; 978 c->srsets = ((read_c0_srsctl() >> 26) & 0x0f) + 1;
970 else 979 else
971 c->srsets = 1; 980 c->srsets = 1;
981
982 cpu_probe_vmbits(c);
972} 983}
973 984
974__cpuinit void cpu_report(void) 985__cpuinit void cpu_report(void)
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 308e43460864..31b204b26ba0 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -1403,6 +1403,7 @@ extern void flush_tlb_handlers(void);
1403 * Timer interrupt 1403 * Timer interrupt
1404 */ 1404 */
1405int cp0_compare_irq; 1405int cp0_compare_irq;
1406int cp0_compare_irq_shift;
1406 1407
1407/* 1408/*
1408 * Performance counter IRQ or -1 if shared with timer 1409 * Performance counter IRQ or -1 if shared with timer
@@ -1493,12 +1494,14 @@ void __cpuinit per_cpu_trap_init(void)
1493 * o read IntCtl.IPPCI to determine the performance counter interrupt 1494 * o read IntCtl.IPPCI to determine the performance counter interrupt
1494 */ 1495 */
1495 if (cpu_has_mips_r2) { 1496 if (cpu_has_mips_r2) {
1496 cp0_compare_irq = (read_c0_intctl() >> 29) & 7; 1497 cp0_compare_irq_shift = CAUSEB_TI - CAUSEB_IP;
1497 cp0_perfcount_irq = (read_c0_intctl() >> 26) & 7; 1498 cp0_compare_irq = (read_c0_intctl() >> INTCTLB_IPTI) & 7;
1499 cp0_perfcount_irq = (read_c0_intctl() >> INTCTLB_IPPCI) & 7;
1498 if (cp0_perfcount_irq == cp0_compare_irq) 1500 if (cp0_perfcount_irq == cp0_compare_irq)
1499 cp0_perfcount_irq = -1; 1501 cp0_perfcount_irq = -1;
1500 } else { 1502 } else {
1501 cp0_compare_irq = CP0_LEGACY_COMPARE_IRQ; 1503 cp0_compare_irq = CP0_LEGACY_COMPARE_IRQ;
1504 cp0_compare_irq_shift = cp0_compare_irq;
1502 cp0_perfcount_irq = -1; 1505 cp0_perfcount_irq = -1;
1503 } 1506 }
1504 1507
diff --git a/arch/mips/mipssim/sim_setup.c b/arch/mips/mipssim/sim_setup.c
index 0824f6af4777..55f22a3afe61 100644
--- a/arch/mips/mipssim/sim_setup.c
+++ b/arch/mips/mipssim/sim_setup.c
@@ -49,9 +49,6 @@ void __init plat_mem_setup(void)
49 set_io_port_base(0xbfd00000); 49 set_io_port_base(0xbfd00000);
50 50
51 serial_init(); 51 serial_init();
52
53 pr_info("Linux started...\n");
54
55} 52}
56 53
57extern struct plat_smp_ops ssmtc_smp_ops; 54extern struct plat_smp_ops ssmtc_smp_ops;
@@ -60,7 +57,6 @@ void __init prom_init(void)
60{ 57{
61 set_io_port_base(0xbfd00000); 58 set_io_port_base(0xbfd00000);
62 59
63 pr_info("\nLINUX started...\n");
64 prom_meminit(); 60 prom_meminit();
65 61
66#ifdef CONFIG_MIPS_MT_SMP 62#ifdef CONFIG_MIPS_MT_SMP
diff --git a/arch/mips/mm/c-octeon.c b/arch/mips/mm/c-octeon.c
index 94e05e5733c1..e06f1af760a7 100644
--- a/arch/mips/mm/c-octeon.c
+++ b/arch/mips/mm/c-octeon.c
@@ -174,7 +174,7 @@ static void octeon_flush_cache_page(struct vm_area_struct *vma,
174 * Probe Octeon's caches 174 * Probe Octeon's caches
175 * 175 *
176 */ 176 */
177static void __devinit probe_octeon(void) 177static void __cpuinit probe_octeon(void)
178{ 178{
179 unsigned long icache_size; 179 unsigned long icache_size;
180 unsigned long dcache_size; 180 unsigned long dcache_size;
@@ -235,7 +235,7 @@ static void __devinit probe_octeon(void)
235 * Setup the Octeon cache flush routines 235 * Setup the Octeon cache flush routines
236 * 236 *
237 */ 237 */
238void __devinit octeon_cache_init(void) 238void __cpuinit octeon_cache_init(void)
239{ 239{
240 extern unsigned long ebase; 240 extern unsigned long ebase;
241 extern char except_vec2_octeon; 241 extern char except_vec2_octeon;
diff --git a/arch/mips/mm/cache.c b/arch/mips/mm/cache.c
index 102b2dfa542a..e716cafc346d 100644
--- a/arch/mips/mm/cache.c
+++ b/arch/mips/mm/cache.c
@@ -155,7 +155,7 @@ static inline void setup_protection_map(void)
155 protection_map[15] = PAGE_SHARED; 155 protection_map[15] = PAGE_SHARED;
156} 156}
157 157
158void __devinit cpu_cache_init(void) 158void __cpuinit cpu_cache_init(void)
159{ 159{
160 if (cpu_has_3k_cache) { 160 if (cpu_has_3k_cache) {
161 extern void __weak r3k_cache_init(void); 161 extern void __weak r3k_cache_init(void);
diff --git a/arch/mips/mm/highmem.c b/arch/mips/mm/highmem.c
index e274fda329f4..127d732474bf 100644
--- a/arch/mips/mm/highmem.c
+++ b/arch/mips/mm/highmem.c
@@ -1,5 +1,6 @@
1#include <linux/module.h> 1#include <linux/module.h>
2#include <linux/highmem.h> 2#include <linux/highmem.h>
3#include <linux/sched.h>
3#include <linux/smp.h> 4#include <linux/smp.h>
4#include <asm/fixmap.h> 5#include <asm/fixmap.h>
5#include <asm/tlbflush.h> 6#include <asm/tlbflush.h>
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c
index 9e8d00389eef..1651942f7feb 100644
--- a/arch/mips/mm/init.c
+++ b/arch/mips/mm/init.c
@@ -424,7 +424,7 @@ void __init mem_init(void)
424 reservedpages << (PAGE_SHIFT-10), 424 reservedpages << (PAGE_SHIFT-10),
425 datasize >> 10, 425 datasize >> 10,
426 initsize >> 10, 426 initsize >> 10,
427 (unsigned long) (totalhigh_pages << (PAGE_SHIFT-10))); 427 totalhigh_pages << (PAGE_SHIFT-10));
428} 428}
429#endif /* !CONFIG_NEED_MULTIPLE_NODES */ 429#endif /* !CONFIG_NEED_MULTIPLE_NODES */
430 430
diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c
index 3d0baa4a842d..badcf5e8d695 100644
--- a/arch/mips/mm/tlbex.c
+++ b/arch/mips/mm/tlbex.c
@@ -73,9 +73,6 @@ static int __cpuinit m4kc_tlbp_war(void)
73enum label_id { 73enum label_id {
74 label_second_part = 1, 74 label_second_part = 1,
75 label_leave, 75 label_leave,
76#ifdef MODULE_START
77 label_module_alloc,
78#endif
79 label_vmalloc, 76 label_vmalloc,
80 label_vmalloc_done, 77 label_vmalloc_done,
81 label_tlbw_hazard, 78 label_tlbw_hazard,
@@ -92,9 +89,6 @@ enum label_id {
92 89
93UASM_L_LA(_second_part) 90UASM_L_LA(_second_part)
94UASM_L_LA(_leave) 91UASM_L_LA(_leave)
95#ifdef MODULE_START
96UASM_L_LA(_module_alloc)
97#endif
98UASM_L_LA(_vmalloc) 92UASM_L_LA(_vmalloc)
99UASM_L_LA(_vmalloc_done) 93UASM_L_LA(_vmalloc_done)
100UASM_L_LA(_tlbw_hazard) 94UASM_L_LA(_tlbw_hazard)
@@ -818,8 +812,6 @@ static void __cpuinit build_r4000_tlb_refill_handler(void)
818 } else { 812 } else {
819#if defined(CONFIG_HUGETLB_PAGE) 813#if defined(CONFIG_HUGETLB_PAGE)
820 const enum label_id ls = label_tlb_huge_update; 814 const enum label_id ls = label_tlb_huge_update;
821#elif defined(MODULE_START)
822 const enum label_id ls = label_module_alloc;
823#else 815#else
824 const enum label_id ls = label_vmalloc; 816 const enum label_id ls = label_vmalloc;
825#endif 817#endif
diff --git a/arch/mips/mti-malta/malta-init.c b/arch/mips/mti-malta/malta-init.c
index f1b14c8a4a1c..414f0c99b196 100644
--- a/arch/mips/mti-malta/malta-init.c
+++ b/arch/mips/mti-malta/malta-init.c
@@ -355,7 +355,6 @@ void __init prom_init(void)
355 board_nmi_handler_setup = mips_nmi_setup; 355 board_nmi_handler_setup = mips_nmi_setup;
356 board_ejtag_handler_setup = mips_ejtag_setup; 356 board_ejtag_handler_setup = mips_ejtag_setup;
357 357
358 pr_info("\nLINUX started...\n");
359 prom_init_cmdline(); 358 prom_init_cmdline();
360 prom_meminit(); 359 prom_meminit();
361#ifdef CONFIG_SERIAL_8250_CONSOLE 360#ifdef CONFIG_SERIAL_8250_CONSOLE
diff --git a/arch/mips/powertv/Makefile b/arch/mips/powertv/Makefile
index 2c516718affe..0a0d73c0564f 100644
--- a/arch/mips/powertv/Makefile
+++ b/arch/mips/powertv/Makefile
@@ -23,6 +23,6 @@
23# under Linux. 23# under Linux.
24# 24#
25 25
26obj-y += cmdline.o init.o memory.o reset.o time.o powertv_setup.o asic/ pci/ 26obj-y += init.o memory.o reset.o time.o powertv_setup.o asic/ pci/
27 27
28EXTRA_CFLAGS += -Wall -Werror 28EXTRA_CFLAGS += -Wall -Werror
diff --git a/arch/mips/powertv/asic/asic-calliope.c b/arch/mips/powertv/asic/asic-calliope.c
index 03d3884c6270..1ae6623444b2 100644
--- a/arch/mips/powertv/asic/asic-calliope.c
+++ b/arch/mips/powertv/asic/asic-calliope.c
@@ -23,76 +23,79 @@
23 * Description: Defines the platform resources for the SA settop. 23 * Description: Defines the platform resources for the SA settop.
24 */ 24 */
25 25
26#include <linux/init.h>
26#include <asm/mach-powertv/asic.h> 27#include <asm/mach-powertv/asic.h>
27 28
28const struct register_map calliope_register_map = { 29#define CALLIOPE_ADDR(x) (CALLIOPE_IO_BASE + (x))
29 .eic_slow0_strt_add = 0x800000,
30 .eic_cfg_bits = 0x800038,
31 .eic_ready_status = 0x80004c,
32 30
33 .chipver3 = 0xA00800, 31const struct register_map calliope_register_map __initdata = {
34 .chipver2 = 0xA00804, 32 .eic_slow0_strt_add = {.phys = CALLIOPE_ADDR(0x800000)},
35 .chipver1 = 0xA00808, 33 .eic_cfg_bits = {.phys = CALLIOPE_ADDR(0x800038)},
36 .chipver0 = 0xA0080c, 34 .eic_ready_status = {.phys = CALLIOPE_ADDR(0x80004c)},
35
36 .chipver3 = {.phys = CALLIOPE_ADDR(0xA00800)},
37 .chipver2 = {.phys = CALLIOPE_ADDR(0xA00804)},
38 .chipver1 = {.phys = CALLIOPE_ADDR(0xA00808)},
39 .chipver0 = {.phys = CALLIOPE_ADDR(0xA0080c)},
37 40
38 /* The registers of IRBlaster */ 41 /* The registers of IRBlaster */
39 .uart1_intstat = 0xA01800, 42 .uart1_intstat = {.phys = CALLIOPE_ADDR(0xA01800)},
40 .uart1_inten = 0xA01804, 43 .uart1_inten = {.phys = CALLIOPE_ADDR(0xA01804)},
41 .uart1_config1 = 0xA01808, 44 .uart1_config1 = {.phys = CALLIOPE_ADDR(0xA01808)},
42 .uart1_config2 = 0xA0180C, 45 .uart1_config2 = {.phys = CALLIOPE_ADDR(0xA0180C)},
43 .uart1_divisorhi = 0xA01810, 46 .uart1_divisorhi = {.phys = CALLIOPE_ADDR(0xA01810)},
44 .uart1_divisorlo = 0xA01814, 47 .uart1_divisorlo = {.phys = CALLIOPE_ADDR(0xA01814)},
45 .uart1_data = 0xA01818, 48 .uart1_data = {.phys = CALLIOPE_ADDR(0xA01818)},
46 .uart1_status = 0xA0181C, 49 .uart1_status = {.phys = CALLIOPE_ADDR(0xA0181C)},
47 50
48 .int_stat_3 = 0xA02800, 51 .int_stat_3 = {.phys = CALLIOPE_ADDR(0xA02800)},
49 .int_stat_2 = 0xA02804, 52 .int_stat_2 = {.phys = CALLIOPE_ADDR(0xA02804)},
50 .int_stat_1 = 0xA02808, 53 .int_stat_1 = {.phys = CALLIOPE_ADDR(0xA02808)},
51 .int_stat_0 = 0xA0280c, 54 .int_stat_0 = {.phys = CALLIOPE_ADDR(0xA0280c)},
52 .int_config = 0xA02810, 55 .int_config = {.phys = CALLIOPE_ADDR(0xA02810)},
53 .int_int_scan = 0xA02818, 56 .int_int_scan = {.phys = CALLIOPE_ADDR(0xA02818)},
54 .ien_int_3 = 0xA02830, 57 .ien_int_3 = {.phys = CALLIOPE_ADDR(0xA02830)},
55 .ien_int_2 = 0xA02834, 58 .ien_int_2 = {.phys = CALLIOPE_ADDR(0xA02834)},
56 .ien_int_1 = 0xA02838, 59 .ien_int_1 = {.phys = CALLIOPE_ADDR(0xA02838)},
57 .ien_int_0 = 0xA0283c, 60 .ien_int_0 = {.phys = CALLIOPE_ADDR(0xA0283c)},
58 .int_level_3_3 = 0xA02880, 61 .int_level_3_3 = {.phys = CALLIOPE_ADDR(0xA02880)},
59 .int_level_3_2 = 0xA02884, 62 .int_level_3_2 = {.phys = CALLIOPE_ADDR(0xA02884)},
60 .int_level_3_1 = 0xA02888, 63 .int_level_3_1 = {.phys = CALLIOPE_ADDR(0xA02888)},
61 .int_level_3_0 = 0xA0288c, 64 .int_level_3_0 = {.phys = CALLIOPE_ADDR(0xA0288c)},
62 .int_level_2_3 = 0xA02890, 65 .int_level_2_3 = {.phys = CALLIOPE_ADDR(0xA02890)},
63 .int_level_2_2 = 0xA02894, 66 .int_level_2_2 = {.phys = CALLIOPE_ADDR(0xA02894)},
64 .int_level_2_1 = 0xA02898, 67 .int_level_2_1 = {.phys = CALLIOPE_ADDR(0xA02898)},
65 .int_level_2_0 = 0xA0289c, 68 .int_level_2_0 = {.phys = CALLIOPE_ADDR(0xA0289c)},
66 .int_level_1_3 = 0xA028a0, 69 .int_level_1_3 = {.phys = CALLIOPE_ADDR(0xA028a0)},
67 .int_level_1_2 = 0xA028a4, 70 .int_level_1_2 = {.phys = CALLIOPE_ADDR(0xA028a4)},
68 .int_level_1_1 = 0xA028a8, 71 .int_level_1_1 = {.phys = CALLIOPE_ADDR(0xA028a8)},
69 .int_level_1_0 = 0xA028ac, 72 .int_level_1_0 = {.phys = CALLIOPE_ADDR(0xA028ac)},
70 .int_level_0_3 = 0xA028b0, 73 .int_level_0_3 = {.phys = CALLIOPE_ADDR(0xA028b0)},
71 .int_level_0_2 = 0xA028b4, 74 .int_level_0_2 = {.phys = CALLIOPE_ADDR(0xA028b4)},
72 .int_level_0_1 = 0xA028b8, 75 .int_level_0_1 = {.phys = CALLIOPE_ADDR(0xA028b8)},
73 .int_level_0_0 = 0xA028bc, 76 .int_level_0_0 = {.phys = CALLIOPE_ADDR(0xA028bc)},
74 .int_docsis_en = 0xA028F4, 77 .int_docsis_en = {.phys = CALLIOPE_ADDR(0xA028F4)},
75 78
76 .mips_pll_setup = 0x980000, 79 .mips_pll_setup = {.phys = CALLIOPE_ADDR(0x980000)},
77 .usb_fs = 0x980030, /* -default 72800028- */ 80 .usb_fs = {.phys = CALLIOPE_ADDR(0x980030)},
78 .test_bus = 0x9800CC, 81 .test_bus = {.phys = CALLIOPE_ADDR(0x9800CC)},
79 .crt_spare = 0x9800d4, 82 .crt_spare = {.phys = CALLIOPE_ADDR(0x9800d4)},
80 .usb2_ohci_int_mask = 0x9A000c, 83 .usb2_ohci_int_mask = {.phys = CALLIOPE_ADDR(0x9A000c)},
81 .usb2_strap = 0x9A0014, 84 .usb2_strap = {.phys = CALLIOPE_ADDR(0x9A0014)},
82 .ehci_hcapbase = 0x9BFE00, 85 .ehci_hcapbase = {.phys = CALLIOPE_ADDR(0x9BFE00)},
83 .ohci_hc_revision = 0x9BFC00, 86 .ohci_hc_revision = {.phys = CALLIOPE_ADDR(0x9BFC00)},
84 .bcm1_bs_lmi_steer = 0x9E0004, 87 .bcm1_bs_lmi_steer = {.phys = CALLIOPE_ADDR(0x9E0004)},
85 .usb2_control = 0x9E0054, 88 .usb2_control = {.phys = CALLIOPE_ADDR(0x9E0054)},
86 .usb2_stbus_obc = 0x9BFF00, 89 .usb2_stbus_obc = {.phys = CALLIOPE_ADDR(0x9BFF00)},
87 .usb2_stbus_mess_size = 0x9BFF04, 90 .usb2_stbus_mess_size = {.phys = CALLIOPE_ADDR(0x9BFF04)},
88 .usb2_stbus_chunk_size = 0x9BFF08, 91 .usb2_stbus_chunk_size = {.phys = CALLIOPE_ADDR(0x9BFF08)},
89 92
90 .pcie_regs = 0x000000, /* -doesn't exist- */ 93 .pcie_regs = {.phys = 0x000000}, /* -doesn't exist- */
91 .tim_ch = 0xA02C10, 94 .tim_ch = {.phys = CALLIOPE_ADDR(0xA02C10)},
92 .tim_cl = 0xA02C14, 95 .tim_cl = {.phys = CALLIOPE_ADDR(0xA02C14)},
93 .gpio_dout = 0xA02c20, 96 .gpio_dout = {.phys = CALLIOPE_ADDR(0xA02c20)},
94 .gpio_din = 0xA02c24, 97 .gpio_din = {.phys = CALLIOPE_ADDR(0xA02c24)},
95 .gpio_dir = 0xA02c2C, 98 .gpio_dir = {.phys = CALLIOPE_ADDR(0xA02c2C)},
96 .watchdog = 0xA02c30, 99 .watchdog = {.phys = CALLIOPE_ADDR(0xA02c30)},
97 .front_panel = 0x000000, /* -not used- */ 100 .front_panel = {.phys = 0x000000}, /* -not used- */
98}; 101};
diff --git a/arch/mips/powertv/asic/asic-cronus.c b/arch/mips/powertv/asic/asic-cronus.c
index 5f4589c9f83d..5bb64bfb508b 100644
--- a/arch/mips/powertv/asic/asic-cronus.c
+++ b/arch/mips/powertv/asic/asic-cronus.c
@@ -23,76 +23,79 @@
23 * Description: Defines the platform resources for the SA settop. 23 * Description: Defines the platform resources for the SA settop.
24 */ 24 */
25 25
26#include <linux/init.h>
26#include <asm/mach-powertv/asic.h> 27#include <asm/mach-powertv/asic.h>
27 28
28const struct register_map cronus_register_map = { 29#define CRONUS_ADDR(x) (CRONUS_IO_BASE + (x))
29 .eic_slow0_strt_add = 0x000000,
30 .eic_cfg_bits = 0x000038,
31 .eic_ready_status = 0x00004C,
32 30
33 .chipver3 = 0x2A0800, 31const struct register_map cronus_register_map __initdata = {
34 .chipver2 = 0x2A0804, 32 .eic_slow0_strt_add = {.phys = CRONUS_ADDR(0x000000)},
35 .chipver1 = 0x2A0808, 33 .eic_cfg_bits = {.phys = CRONUS_ADDR(0x000038)},
36 .chipver0 = 0x2A080C, 34 .eic_ready_status = {.phys = CRONUS_ADDR(0x00004C)},
35
36 .chipver3 = {.phys = CRONUS_ADDR(0x2A0800)},
37 .chipver2 = {.phys = CRONUS_ADDR(0x2A0804)},
38 .chipver1 = {.phys = CRONUS_ADDR(0x2A0808)},
39 .chipver0 = {.phys = CRONUS_ADDR(0x2A080C)},
37 40
38 /* The registers of IRBlaster */ 41 /* The registers of IRBlaster */
39 .uart1_intstat = 0x2A1800, 42 .uart1_intstat = {.phys = CRONUS_ADDR(0x2A1800)},
40 .uart1_inten = 0x2A1804, 43 .uart1_inten = {.phys = CRONUS_ADDR(0x2A1804)},
41 .uart1_config1 = 0x2A1808, 44 .uart1_config1 = {.phys = CRONUS_ADDR(0x2A1808)},
42 .uart1_config2 = 0x2A180C, 45 .uart1_config2 = {.phys = CRONUS_ADDR(0x2A180C)},
43 .uart1_divisorhi = 0x2A1810, 46 .uart1_divisorhi = {.phys = CRONUS_ADDR(0x2A1810)},
44 .uart1_divisorlo = 0x2A1814, 47 .uart1_divisorlo = {.phys = CRONUS_ADDR(0x2A1814)},
45 .uart1_data = 0x2A1818, 48 .uart1_data = {.phys = CRONUS_ADDR(0x2A1818)},
46 .uart1_status = 0x2A181C, 49 .uart1_status = {.phys = CRONUS_ADDR(0x2A181C)},
47 50
48 .int_stat_3 = 0x2A2800, 51 .int_stat_3 = {.phys = CRONUS_ADDR(0x2A2800)},
49 .int_stat_2 = 0x2A2804, 52 .int_stat_2 = {.phys = CRONUS_ADDR(0x2A2804)},
50 .int_stat_1 = 0x2A2808, 53 .int_stat_1 = {.phys = CRONUS_ADDR(0x2A2808)},
51 .int_stat_0 = 0x2A280C, 54 .int_stat_0 = {.phys = CRONUS_ADDR(0x2A280C)},
52 .int_config = 0x2A2810, 55 .int_config = {.phys = CRONUS_ADDR(0x2A2810)},
53 .int_int_scan = 0x2A2818, 56 .int_int_scan = {.phys = CRONUS_ADDR(0x2A2818)},
54 .ien_int_3 = 0x2A2830, 57 .ien_int_3 = {.phys = CRONUS_ADDR(0x2A2830)},
55 .ien_int_2 = 0x2A2834, 58 .ien_int_2 = {.phys = CRONUS_ADDR(0x2A2834)},
56 .ien_int_1 = 0x2A2838, 59 .ien_int_1 = {.phys = CRONUS_ADDR(0x2A2838)},
57 .ien_int_0 = 0x2A283C, 60 .ien_int_0 = {.phys = CRONUS_ADDR(0x2A283C)},
58 .int_level_3_3 = 0x2A2880, 61 .int_level_3_3 = {.phys = CRONUS_ADDR(0x2A2880)},
59 .int_level_3_2 = 0x2A2884, 62 .int_level_3_2 = {.phys = CRONUS_ADDR(0x2A2884)},
60 .int_level_3_1 = 0x2A2888, 63 .int_level_3_1 = {.phys = CRONUS_ADDR(0x2A2888)},
61 .int_level_3_0 = 0x2A288C, 64 .int_level_3_0 = {.phys = CRONUS_ADDR(0x2A288C)},
62 .int_level_2_3 = 0x2A2890, 65 .int_level_2_3 = {.phys = CRONUS_ADDR(0x2A2890)},
63 .int_level_2_2 = 0x2A2894, 66 .int_level_2_2 = {.phys = CRONUS_ADDR(0x2A2894)},
64 .int_level_2_1 = 0x2A2898, 67 .int_level_2_1 = {.phys = CRONUS_ADDR(0x2A2898)},
65 .int_level_2_0 = 0x2A289C, 68 .int_level_2_0 = {.phys = CRONUS_ADDR(0x2A289C)},
66 .int_level_1_3 = 0x2A28A0, 69 .int_level_1_3 = {.phys = CRONUS_ADDR(0x2A28A0)},
67 .int_level_1_2 = 0x2A28A4, 70 .int_level_1_2 = {.phys = CRONUS_ADDR(0x2A28A4)},
68 .int_level_1_1 = 0x2A28A8, 71 .int_level_1_1 = {.phys = CRONUS_ADDR(0x2A28A8)},
69 .int_level_1_0 = 0x2A28AC, 72 .int_level_1_0 = {.phys = CRONUS_ADDR(0x2A28AC)},
70 .int_level_0_3 = 0x2A28B0, 73 .int_level_0_3 = {.phys = CRONUS_ADDR(0x2A28B0)},
71 .int_level_0_2 = 0x2A28B4, 74 .int_level_0_2 = {.phys = CRONUS_ADDR(0x2A28B4)},
72 .int_level_0_1 = 0x2A28B8, 75 .int_level_0_1 = {.phys = CRONUS_ADDR(0x2A28B8)},
73 .int_level_0_0 = 0x2A28BC, 76 .int_level_0_0 = {.phys = CRONUS_ADDR(0x2A28BC)},
74 .int_docsis_en = 0x2A28F4, 77 .int_docsis_en = {.phys = CRONUS_ADDR(0x2A28F4)},
75 78
76 .mips_pll_setup = 0x1C0000, 79 .mips_pll_setup = {.phys = CRONUS_ADDR(0x1C0000)},
77 .usb_fs = 0x1C0018, 80 .usb_fs = {.phys = CRONUS_ADDR(0x1C0018)},
78 .test_bus = 0x1C00CC, 81 .test_bus = {.phys = CRONUS_ADDR(0x1C00CC)},
79 .crt_spare = 0x1c00d4, 82 .crt_spare = {.phys = CRONUS_ADDR(0x1c00d4)},
80 .usb2_ohci_int_mask = 0x20000C, 83 .usb2_ohci_int_mask = {.phys = CRONUS_ADDR(0x20000C)},
81 .usb2_strap = 0x200014, 84 .usb2_strap = {.phys = CRONUS_ADDR(0x200014)},
82 .ehci_hcapbase = 0x21FE00, 85 .ehci_hcapbase = {.phys = CRONUS_ADDR(0x21FE00)},
83 .ohci_hc_revision = 0x1E0000, 86 .ohci_hc_revision = {.phys = CRONUS_ADDR(0x1E0000)},
84 .bcm1_bs_lmi_steer = 0x2E0008, 87 .bcm1_bs_lmi_steer = {.phys = CRONUS_ADDR(0x2E0008)},
85 .usb2_control = 0x2E004C, 88 .usb2_control = {.phys = CRONUS_ADDR(0x2E004C)},
86 .usb2_stbus_obc = 0x21FF00, 89 .usb2_stbus_obc = {.phys = CRONUS_ADDR(0x21FF00)},
87 .usb2_stbus_mess_size = 0x21FF04, 90 .usb2_stbus_mess_size = {.phys = CRONUS_ADDR(0x21FF04)},
88 .usb2_stbus_chunk_size = 0x21FF08, 91 .usb2_stbus_chunk_size = {.phys = CRONUS_ADDR(0x21FF08)},
89 92
90 .pcie_regs = 0x220000, 93 .pcie_regs = {.phys = CRONUS_ADDR(0x220000)},
91 .tim_ch = 0x2A2C10, 94 .tim_ch = {.phys = CRONUS_ADDR(0x2A2C10)},
92 .tim_cl = 0x2A2C14, 95 .tim_cl = {.phys = CRONUS_ADDR(0x2A2C14)},
93 .gpio_dout = 0x2A2C20, 96 .gpio_dout = {.phys = CRONUS_ADDR(0x2A2C20)},
94 .gpio_din = 0x2A2C24, 97 .gpio_din = {.phys = CRONUS_ADDR(0x2A2C24)},
95 .gpio_dir = 0x2A2C2C, 98 .gpio_dir = {.phys = CRONUS_ADDR(0x2A2C2C)},
96 .watchdog = 0x2A2C30, 99 .watchdog = {.phys = CRONUS_ADDR(0x2A2C30)},
97 .front_panel = 0x2A3800, 100 .front_panel = {.phys = CRONUS_ADDR(0x2A3800)},
98}; 101};
diff --git a/arch/mips/powertv/asic/asic-zeus.c b/arch/mips/powertv/asic/asic-zeus.c
index 1469daab920e..095cbe10ebb9 100644
--- a/arch/mips/powertv/asic/asic-zeus.c
+++ b/arch/mips/powertv/asic/asic-zeus.c
@@ -23,76 +23,79 @@
23 * Description: Defines the platform resources for the SA settop. 23 * Description: Defines the platform resources for the SA settop.
24 */ 24 */
25 25
26#include <linux/init.h>
26#include <asm/mach-powertv/asic.h> 27#include <asm/mach-powertv/asic.h>
27 28
28const struct register_map zeus_register_map = { 29#define ZEUS_ADDR(x) (ZEUS_IO_BASE + (x))
29 .eic_slow0_strt_add = 0x000000,
30 .eic_cfg_bits = 0x000038,
31 .eic_ready_status = 0x00004c,
32 30
33 .chipver3 = 0x280800, 31const struct register_map zeus_register_map __initdata = {
34 .chipver2 = 0x280804, 32 .eic_slow0_strt_add = {.phys = ZEUS_ADDR(0x000000)},
35 .chipver1 = 0x280808, 33 .eic_cfg_bits = {.phys = ZEUS_ADDR(0x000038)},
36 .chipver0 = 0x28080c, 34 .eic_ready_status = {.phys = ZEUS_ADDR(0x00004c)},
35
36 .chipver3 = {.phys = ZEUS_ADDR(0x280800)},
37 .chipver2 = {.phys = ZEUS_ADDR(0x280804)},
38 .chipver1 = {.phys = ZEUS_ADDR(0x280808)},
39 .chipver0 = {.phys = ZEUS_ADDR(0x28080c)},
37 40
38 /* The registers of IRBlaster */ 41 /* The registers of IRBlaster */
39 .uart1_intstat = 0x281800, 42 .uart1_intstat = {.phys = ZEUS_ADDR(0x281800)},
40 .uart1_inten = 0x281804, 43 .uart1_inten = {.phys = ZEUS_ADDR(0x281804)},
41 .uart1_config1 = 0x281808, 44 .uart1_config1 = {.phys = ZEUS_ADDR(0x281808)},
42 .uart1_config2 = 0x28180C, 45 .uart1_config2 = {.phys = ZEUS_ADDR(0x28180C)},
43 .uart1_divisorhi = 0x281810, 46 .uart1_divisorhi = {.phys = ZEUS_ADDR(0x281810)},
44 .uart1_divisorlo = 0x281814, 47 .uart1_divisorlo = {.phys = ZEUS_ADDR(0x281814)},
45 .uart1_data = 0x281818, 48 .uart1_data = {.phys = ZEUS_ADDR(0x281818)},
46 .uart1_status = 0x28181C, 49 .uart1_status = {.phys = ZEUS_ADDR(0x28181C)},
47 50
48 .int_stat_3 = 0x282800, 51 .int_stat_3 = {.phys = ZEUS_ADDR(0x282800)},
49 .int_stat_2 = 0x282804, 52 .int_stat_2 = {.phys = ZEUS_ADDR(0x282804)},
50 .int_stat_1 = 0x282808, 53 .int_stat_1 = {.phys = ZEUS_ADDR(0x282808)},
51 .int_stat_0 = 0x28280c, 54 .int_stat_0 = {.phys = ZEUS_ADDR(0x28280c)},
52 .int_config = 0x282810, 55 .int_config = {.phys = ZEUS_ADDR(0x282810)},
53 .int_int_scan = 0x282818, 56 .int_int_scan = {.phys = ZEUS_ADDR(0x282818)},
54 .ien_int_3 = 0x282830, 57 .ien_int_3 = {.phys = ZEUS_ADDR(0x282830)},
55 .ien_int_2 = 0x282834, 58 .ien_int_2 = {.phys = ZEUS_ADDR(0x282834)},
56 .ien_int_1 = 0x282838, 59 .ien_int_1 = {.phys = ZEUS_ADDR(0x282838)},
57 .ien_int_0 = 0x28283c, 60 .ien_int_0 = {.phys = ZEUS_ADDR(0x28283c)},
58 .int_level_3_3 = 0x282880, 61 .int_level_3_3 = {.phys = ZEUS_ADDR(0x282880)},
59 .int_level_3_2 = 0x282884, 62 .int_level_3_2 = {.phys = ZEUS_ADDR(0x282884)},
60 .int_level_3_1 = 0x282888, 63 .int_level_3_1 = {.phys = ZEUS_ADDR(0x282888)},
61 .int_level_3_0 = 0x28288c, 64 .int_level_3_0 = {.phys = ZEUS_ADDR(0x28288c)},
62 .int_level_2_3 = 0x282890, 65 .int_level_2_3 = {.phys = ZEUS_ADDR(0x282890)},
63 .int_level_2_2 = 0x282894, 66 .int_level_2_2 = {.phys = ZEUS_ADDR(0x282894)},
64 .int_level_2_1 = 0x282898, 67 .int_level_2_1 = {.phys = ZEUS_ADDR(0x282898)},
65 .int_level_2_0 = 0x28289c, 68 .int_level_2_0 = {.phys = ZEUS_ADDR(0x28289c)},
66 .int_level_1_3 = 0x2828a0, 69 .int_level_1_3 = {.phys = ZEUS_ADDR(0x2828a0)},
67 .int_level_1_2 = 0x2828a4, 70 .int_level_1_2 = {.phys = ZEUS_ADDR(0x2828a4)},
68 .int_level_1_1 = 0x2828a8, 71 .int_level_1_1 = {.phys = ZEUS_ADDR(0x2828a8)},
69 .int_level_1_0 = 0x2828ac, 72 .int_level_1_0 = {.phys = ZEUS_ADDR(0x2828ac)},
70 .int_level_0_3 = 0x2828b0, 73 .int_level_0_3 = {.phys = ZEUS_ADDR(0x2828b0)},
71 .int_level_0_2 = 0x2828b4, 74 .int_level_0_2 = {.phys = ZEUS_ADDR(0x2828b4)},
72 .int_level_0_1 = 0x2828b8, 75 .int_level_0_1 = {.phys = ZEUS_ADDR(0x2828b8)},
73 .int_level_0_0 = 0x2828bc, 76 .int_level_0_0 = {.phys = ZEUS_ADDR(0x2828bc)},
74 .int_docsis_en = 0x2828F4, 77 .int_docsis_en = {.phys = ZEUS_ADDR(0x2828F4)},
75 78
76 .mips_pll_setup = 0x1a0000, 79 .mips_pll_setup = {.phys = ZEUS_ADDR(0x1a0000)},
77 .usb_fs = 0x1a0018, 80 .usb_fs = {.phys = ZEUS_ADDR(0x1a0018)},
78 .test_bus = 0x1a0238, 81 .test_bus = {.phys = ZEUS_ADDR(0x1a0238)},
79 .crt_spare = 0x1a0090, 82 .crt_spare = {.phys = ZEUS_ADDR(0x1a0090)},
80 .usb2_ohci_int_mask = 0x1e000c, 83 .usb2_ohci_int_mask = {.phys = ZEUS_ADDR(0x1e000c)},
81 .usb2_strap = 0x1e0014, 84 .usb2_strap = {.phys = ZEUS_ADDR(0x1e0014)},
82 .ehci_hcapbase = 0x1FFE00, 85 .ehci_hcapbase = {.phys = ZEUS_ADDR(0x1FFE00)},
83 .ohci_hc_revision = 0x1FFC00, 86 .ohci_hc_revision = {.phys = ZEUS_ADDR(0x1FFC00)},
84 .bcm1_bs_lmi_steer = 0x2C0008, 87 .bcm1_bs_lmi_steer = {.phys = ZEUS_ADDR(0x2C0008)},
85 .usb2_control = 0x2c01a0, 88 .usb2_control = {.phys = ZEUS_ADDR(0x2c01a0)},
86 .usb2_stbus_obc = 0x1FFF00, 89 .usb2_stbus_obc = {.phys = ZEUS_ADDR(0x1FFF00)},
87 .usb2_stbus_mess_size = 0x1FFF04, 90 .usb2_stbus_mess_size = {.phys = ZEUS_ADDR(0x1FFF04)},
88 .usb2_stbus_chunk_size = 0x1FFF08, 91 .usb2_stbus_chunk_size = {.phys = ZEUS_ADDR(0x1FFF08)},
89 92
90 .pcie_regs = 0x200000, 93 .pcie_regs = {.phys = ZEUS_ADDR(0x200000)},
91 .tim_ch = 0x282C10, 94 .tim_ch = {.phys = ZEUS_ADDR(0x282C10)},
92 .tim_cl = 0x282C14, 95 .tim_cl = {.phys = ZEUS_ADDR(0x282C14)},
93 .gpio_dout = 0x282c20, 96 .gpio_dout = {.phys = ZEUS_ADDR(0x282c20)},
94 .gpio_din = 0x282c24, 97 .gpio_din = {.phys = ZEUS_ADDR(0x282c24)},
95 .gpio_dir = 0x282c2C, 98 .gpio_dir = {.phys = ZEUS_ADDR(0x282c2C)},
96 .watchdog = 0x282c30, 99 .watchdog = {.phys = ZEUS_ADDR(0x282c30)},
97 .front_panel = 0x283800, 100 .front_panel = {.phys = ZEUS_ADDR(0x283800)},
98}; 101};
diff --git a/arch/mips/powertv/asic/asic_devices.c b/arch/mips/powertv/asic/asic_devices.c
index bae82880b6b5..6a882194e063 100644
--- a/arch/mips/powertv/asic/asic_devices.c
+++ b/arch/mips/powertv/asic/asic_devices.c
@@ -67,8 +67,8 @@ enum asic_type asic;
67 67
68unsigned int platform_features; 68unsigned int platform_features;
69unsigned int platform_family; 69unsigned int platform_family;
70const struct register_map *register_map; 70struct register_map _asic_register_map;
71EXPORT_SYMBOL(register_map); /* Exported for testing */ 71EXPORT_SYMBOL(_asic_register_map); /* Exported for testing */
72unsigned long asic_phy_base; 72unsigned long asic_phy_base;
73unsigned long asic_base; 73unsigned long asic_base;
74EXPORT_SYMBOL(asic_base); /* Exported for testing */ 74EXPORT_SYMBOL(asic_base); /* Exported for testing */
@@ -418,6 +418,15 @@ void platform_unconfigure_usb_ohci()
418{ 418{
419} 419}
420 420
421static void __init set_register_map(unsigned long phys_base,
422 const struct register_map *map)
423{
424 asic_phy_base = phys_base;
425 _asic_register_map = *map;
426 register_map_virtualize(&_asic_register_map);
427 asic_base = (unsigned long)ioremap_nocache(phys_base, ASIC_IO_SIZE);
428}
429
421/** 430/**
422 * configure_platform - configuration based on platform type. 431 * configure_platform - configuration based on platform type.
423 */ 432 */
@@ -431,10 +440,7 @@ void __init configure_platform(void)
431 case FAMILY_1500VZF: 440 case FAMILY_1500VZF:
432 platform_features = FFS_CAPABLE; 441 platform_features = FFS_CAPABLE;
433 asic = ASIC_CALLIOPE; 442 asic = ASIC_CALLIOPE;
434 asic_phy_base = CALLIOPE_IO_BASE; 443 set_register_map(CALLIOPE_IO_BASE, &calliope_register_map);
435 register_map = &calliope_register_map;
436 asic_base = (unsigned long)ioremap_nocache(asic_phy_base,
437 ASIC_IO_SIZE);
438 444
439 if (platform_family == FAMILY_1500VZE) { 445 if (platform_family == FAMILY_1500VZE) {
440 gp_resources = non_dvr_vze_calliope_resources; 446 gp_resources = non_dvr_vze_calliope_resources;
@@ -455,10 +461,7 @@ void __init configure_platform(void)
455 platform_features = FFS_CAPABLE | PCIE_CAPABLE | 461 platform_features = FFS_CAPABLE | PCIE_CAPABLE |
456 DISPLAY_CAPABLE; 462 DISPLAY_CAPABLE;
457 asic = ASIC_ZEUS; 463 asic = ASIC_ZEUS;
458 asic_phy_base = ZEUS_IO_BASE; 464 set_register_map(ZEUS_IO_BASE, &zeus_register_map);
459 register_map = &zeus_register_map;
460 asic_base = (unsigned long)ioremap_nocache(asic_phy_base,
461 ASIC_IO_SIZE);
462 gp_resources = non_dvr_zeus_resources; 465 gp_resources = non_dvr_zeus_resources;
463 466
464 pr_info("Platform: 4500 - ZEUS, NON_DVR_CAPABLE\n"); 467 pr_info("Platform: 4500 - ZEUS, NON_DVR_CAPABLE\n");
@@ -471,11 +474,6 @@ void __init configure_platform(void)
471 /* The settop has PCIE but it isn't used, so don't advertise 474 /* The settop has PCIE but it isn't used, so don't advertise
472 * it*/ 475 * it*/
473 platform_features = FFS_CAPABLE | DISPLAY_CAPABLE; 476 platform_features = FFS_CAPABLE | DISPLAY_CAPABLE;
474 asic_phy_base = CRONUS_IO_BASE; /* same as Cronus */
475 register_map = &cronus_register_map; /* same as Cronus */
476 asic_base = (unsigned long)ioremap_nocache(asic_phy_base,
477 ASIC_IO_SIZE);
478 gp_resources = non_dvr_cronuslite_resources;
479 477
480 /* ASIC version will determine if this is a real CronusLite or 478 /* ASIC version will determine if this is a real CronusLite or
481 * Castrati(Cronus) */ 479 * Castrati(Cronus) */
@@ -489,6 +487,9 @@ void __init configure_platform(void)
489 else 487 else
490 asic = ASIC_CRONUSLITE; 488 asic = ASIC_CRONUSLITE;
491 489
490 /* Cronus and Cronus Lite have the same register map */
491 set_register_map(CRONUS_IO_BASE, &cronus_register_map);
492 gp_resources = non_dvr_cronuslite_resources;
492 pr_info("Platform: 4600 - %s, NON_DVR_CAPABLE, " 493 pr_info("Platform: 4600 - %s, NON_DVR_CAPABLE, "
493 "chipversion=0x%08X\n", 494 "chipversion=0x%08X\n",
494 (asic == ASIC_CRONUS) ? "CRONUS" : "CRONUS LITE", 495 (asic == ASIC_CRONUS) ? "CRONUS" : "CRONUS LITE",
@@ -498,10 +499,7 @@ void __init configure_platform(void)
498 case FAMILY_4600VZA: 499 case FAMILY_4600VZA:
499 platform_features = FFS_CAPABLE | DISPLAY_CAPABLE; 500 platform_features = FFS_CAPABLE | DISPLAY_CAPABLE;
500 asic = ASIC_CRONUS; 501 asic = ASIC_CRONUS;
501 asic_phy_base = CRONUS_IO_BASE; 502 set_register_map(CRONUS_IO_BASE, &cronus_register_map);
502 register_map = &cronus_register_map;
503 asic_base = (unsigned long)ioremap_nocache(asic_phy_base,
504 ASIC_IO_SIZE);
505 gp_resources = non_dvr_cronus_resources; 503 gp_resources = non_dvr_cronus_resources;
506 504
507 pr_info("Platform: Vz Class A - CRONUS, NON_DVR_CAPABLE\n"); 505 pr_info("Platform: Vz Class A - CRONUS, NON_DVR_CAPABLE\n");
@@ -512,10 +510,7 @@ void __init configure_platform(void)
512 platform_features = DVR_CAPABLE | PCIE_CAPABLE | 510 platform_features = DVR_CAPABLE | PCIE_CAPABLE |
513 DISPLAY_CAPABLE; 511 DISPLAY_CAPABLE;
514 asic = ASIC_ZEUS; 512 asic = ASIC_ZEUS;
515 asic_phy_base = ZEUS_IO_BASE; 513 set_register_map(ZEUS_IO_BASE, &zeus_register_map);
516 register_map = &zeus_register_map;
517 asic_base = (unsigned long)ioremap_nocache(asic_phy_base,
518 ASIC_IO_SIZE);
519 gp_resources = dvr_zeus_resources; 514 gp_resources = dvr_zeus_resources;
520 515
521 pr_info("Platform: 8500/RNG200 - ZEUS, DVR_CAPABLE\n"); 516 pr_info("Platform: 8500/RNG200 - ZEUS, DVR_CAPABLE\n");
@@ -526,10 +521,7 @@ void __init configure_platform(void)
526 platform_features = DVR_CAPABLE | PCIE_CAPABLE | 521 platform_features = DVR_CAPABLE | PCIE_CAPABLE |
527 DISPLAY_CAPABLE; 522 DISPLAY_CAPABLE;
528 asic = ASIC_CRONUS; 523 asic = ASIC_CRONUS;
529 asic_phy_base = CRONUS_IO_BASE; 524 set_register_map(CRONUS_IO_BASE, &cronus_register_map);
530 register_map = &cronus_register_map;
531 asic_base = (unsigned long)ioremap_nocache(asic_phy_base,
532 ASIC_IO_SIZE);
533 gp_resources = dvr_cronus_resources; 525 gp_resources = dvr_cronus_resources;
534 526
535 pr_info("Platform: 8600/Vz Class B - CRONUS, " 527 pr_info("Platform: 8600/Vz Class B - CRONUS, "
diff --git a/arch/mips/powertv/cmdline.c b/arch/mips/powertv/cmdline.c
deleted file mode 100644
index 98d73cb0d452..000000000000
--- a/arch/mips/powertv/cmdline.c
+++ /dev/null
@@ -1,52 +0,0 @@
1/*
2 * Carsten Langgaard, carstenl@mips.com
3 * Copyright (C) 1999,2000 MIPS Technologies, Inc. All rights reserved.
4 * Portions copyright (C) 2009 Cisco Systems, Inc.
5 *
6 * This program is free software; you can distribute it and/or modify it
7 * under the terms of the GNU General Public License (Version 2) as
8 * published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
18 *
19 * Kernel command line creation using the prom monitor (YAMON) argc/argv.
20 */
21#include <linux/init.h>
22#include <linux/string.h>
23
24#include <asm/bootinfo.h>
25
26#include "init.h"
27
28/*
29 * YAMON (32-bit PROM) pass arguments and environment as 32-bit pointer.
30 * This macro take care of sign extension.
31 */
32#define prom_argv(index) ((char *)(long)_prom_argv[(index)])
33
34char * __init prom_getcmdline(void)
35{
36 return &(arcs_cmdline[0]);
37}
38
39void __init prom_init_cmdline(void)
40{
41 int len;
42
43 if (prom_argc != 1)
44 return;
45
46 len = strlen(arcs_cmdline);
47
48 arcs_cmdline[len] = ' ';
49
50 strlcpy(arcs_cmdline + len + 1, (char *)_prom_argv,
51 COMMAND_LINE_SIZE - len - 1);
52}
diff --git a/arch/mips/powertv/init.c b/arch/mips/powertv/init.c
index 5f4e4c304e48..0afe227f1d0a 100644
--- a/arch/mips/powertv/init.c
+++ b/arch/mips/powertv/init.c
@@ -34,10 +34,7 @@
34#include <asm/mips-boards/generic.h> 34#include <asm/mips-boards/generic.h>
35#include <asm/mach-powertv/asic.h> 35#include <asm/mach-powertv/asic.h>
36 36
37#include "init.h" 37static int *_prom_envp;
38
39int prom_argc;
40int *_prom_argv, *_prom_envp;
41unsigned long _prom_memsize; 38unsigned long _prom_memsize;
42 39
43/* 40/*
@@ -109,16 +106,20 @@ static void __init mips_ejtag_setup(void)
109 106
110void __init prom_init(void) 107void __init prom_init(void)
111{ 108{
109 int prom_argc;
110 char *prom_argv;
111
112 prom_argc = fw_arg0; 112 prom_argc = fw_arg0;
113 _prom_argv = (int *) fw_arg1; 113 prom_argv = (char *) fw_arg1;
114 _prom_envp = (int *) fw_arg2; 114 _prom_envp = (int *) fw_arg2;
115 _prom_memsize = (unsigned long) fw_arg3; 115 _prom_memsize = (unsigned long) fw_arg3;
116 116
117 board_nmi_handler_setup = mips_nmi_setup; 117 board_nmi_handler_setup = mips_nmi_setup;
118 board_ejtag_handler_setup = mips_ejtag_setup; 118 board_ejtag_handler_setup = mips_ejtag_setup;
119 119
120 pr_info("\nLINUX started...\n"); 120 if (prom_argc == 1)
121 prom_init_cmdline(); 121 strlcat(arcs_cmdline, prom_argv, COMMAND_LINE_SIZE);
122
122 configure_platform(); 123 configure_platform();
123 prom_meminit(); 124 prom_meminit();
124 125
diff --git a/arch/mips/powertv/init.h b/arch/mips/powertv/init.h
index 7af6bf25008c..b194c34ca966 100644
--- a/arch/mips/powertv/init.h
+++ b/arch/mips/powertv/init.h
@@ -22,7 +22,5 @@
22 22
23#ifndef _POWERTV_INIT_H 23#ifndef _POWERTV_INIT_H
24#define _POWERTV_INIT_H 24#define _POWERTV_INIT_H
25extern int prom_argc;
26extern int *_prom_argv;
27extern unsigned long _prom_memsize; 25extern unsigned long _prom_memsize;
28#endif 26#endif
diff --git a/arch/mips/powertv/memory.c b/arch/mips/powertv/memory.c
index 28d06605fff6..f49eb3d0358b 100644
--- a/arch/mips/powertv/memory.c
+++ b/arch/mips/powertv/memory.c
@@ -42,8 +42,6 @@
42#define BOOT_MEM_SIZE KIBIBYTE(256) /* Memory reserved for bldr */ 42#define BOOT_MEM_SIZE KIBIBYTE(256) /* Memory reserved for bldr */
43#define PHYS_MEM_START 0x10000000 /* Start of physical memory */ 43#define PHYS_MEM_START 0x10000000 /* Start of physical memory */
44 44
45unsigned long ptv_memsize;
46
47char __initdata cmdline[COMMAND_LINE_SIZE]; 45char __initdata cmdline[COMMAND_LINE_SIZE];
48 46
49void __init prom_meminit(void) 47void __init prom_meminit(void)
@@ -87,9 +85,6 @@ void __init prom_meminit(void)
87 } 85 }
88 } 86 }
89 87
90 /* Store memsize for diagnostic purposes */
91 ptv_memsize = memsize;
92
93 physend = PFN_ALIGN(&_end) - 0x80000000; 88 physend = PFN_ALIGN(&_end) - 0x80000000;
94 if (memsize > LOW_MEM_MAX) { 89 if (memsize > LOW_MEM_MAX) {
95 low_mem = LOW_MEM_MAX; 90 low_mem = LOW_MEM_MAX;
diff --git a/arch/mips/powertv/powertv_setup.c b/arch/mips/powertv/powertv_setup.c
index bd8ebf128f29..698b1eafbe98 100644
--- a/arch/mips/powertv/powertv_setup.c
+++ b/arch/mips/powertv/powertv_setup.c
@@ -64,9 +64,6 @@
64#define REG_SIZE "4" /* In bytes */ 64#define REG_SIZE "4" /* In bytes */
65#endif 65#endif
66 66
67static struct pt_regs die_regs;
68static bool have_die_regs;
69
70static void register_panic_notifier(void); 67static void register_panic_notifier(void);
71static int panic_handler(struct notifier_block *notifier_block, 68static int panic_handler(struct notifier_block *notifier_block,
72 unsigned long event, void *cause_string); 69 unsigned long event, void *cause_string);
@@ -218,24 +215,6 @@ static int panic_handler(struct notifier_block *notifier_block,
218 return NOTIFY_DONE; 215 return NOTIFY_DONE;
219} 216}
220 217
221/**
222 * Platform-specific handling of oops
223 * @str: Pointer to the oops string
224 * @regs: Pointer to the oops registers
225 * All we do here is to save the registers for subsequent printing through
226 * the panic notifier.
227 */
228void platform_die(const char *str, const struct pt_regs *regs)
229{
230 /* If we already have saved registers, don't overwrite them as they
231 * they apply to the initial fault */
232
233 if (!have_die_regs) {
234 have_die_regs = true;
235 die_regs = *regs;
236 }
237}
238
239/* Information about the RF MAC address, if one was supplied on the 218/* Information about the RF MAC address, if one was supplied on the
240 * command line. */ 219 * command line. */
241static bool have_rfmac; 220static bool have_rfmac;
diff --git a/arch/mips/powertv/reset.c b/arch/mips/powertv/reset.c
index 494c652c984b..0007652cb774 100644
--- a/arch/mips/powertv/reset.c
+++ b/arch/mips/powertv/reset.c
@@ -28,9 +28,6 @@
28#include <asm/mach-powertv/asic_regs.h> 28#include <asm/mach-powertv/asic_regs.h>
29#include "reset.h" 29#include "reset.h"
30 30
31static void mips_machine_restart(char *command);
32static void mips_machine_halt(void);
33
34static void mips_machine_restart(char *command) 31static void mips_machine_restart(char *command)
35{ 32{
36#ifdef CONFIG_BOOTLOADER_DRIVER 33#ifdef CONFIG_BOOTLOADER_DRIVER
@@ -44,22 +41,7 @@ static void mips_machine_restart(char *command)
44#endif 41#endif
45} 42}
46 43
47static void mips_machine_halt(void)
48{
49#ifdef CONFIG_BOOTLOADER_DRIVER
50 /*
51 * Call the bootloader's reset function to ensure
52 * that persistent data is flushed before hard reset
53 */
54 kbldr_SetCauseAndReset();
55#else
56 writel(0x1, asic_reg_addr(watchdog));
57#endif
58}
59
60void mips_reboot_setup(void) 44void mips_reboot_setup(void)
61{ 45{
62 _machine_restart = mips_machine_restart; 46 _machine_restart = mips_machine_restart;
63 _machine_halt = mips_machine_halt;
64 pm_power_off = mips_machine_halt;
65} 47}
diff --git a/arch/mips/powertv/time.c b/arch/mips/powertv/time.c
index 1e0a5ef4c8c7..9fd7b67f2af7 100644
--- a/arch/mips/powertv/time.c
+++ b/arch/mips/powertv/time.c
@@ -33,5 +33,4 @@ unsigned int __cpuinit get_c0_compare_int(void)
33void __init plat_time_init(void) 33void __init plat_time_init(void)
34{ 34{
35 powertv_clocksource_init(); 35 powertv_clocksource_init();
36 r4k_clockevent_init();
37} 36}
diff --git a/arch/mips/sgi-ip27/ip27-memory.c b/arch/mips/sgi-ip27/ip27-memory.c
index f61c164d1e67..bc1297109cc5 100644
--- a/arch/mips/sgi-ip27/ip27-memory.c
+++ b/arch/mips/sgi-ip27/ip27-memory.c
@@ -505,5 +505,5 @@ void __init mem_init(void)
505 (num_physpages - tmp) << (PAGE_SHIFT-10), 505 (num_physpages - tmp) << (PAGE_SHIFT-10),
506 datasize >> 10, 506 datasize >> 10,
507 initsize >> 10, 507 initsize >> 10,
508 (unsigned long) (totalhigh_pages << (PAGE_SHIFT-10))); 508 totalhigh_pages << (PAGE_SHIFT-10));
509} 509}
diff --git a/arch/mips/sni/rm200.c b/arch/mips/sni/rm200.c
index 46f00691f448..31e2583ec622 100644
--- a/arch/mips/sni/rm200.c
+++ b/arch/mips/sni/rm200.c
@@ -404,7 +404,7 @@ void __init sni_rm200_i8259_irqs(void)
404 if (!rm200_pic_master) 404 if (!rm200_pic_master)
405 return; 405 return;
406 rm200_pic_slave = ioremap_nocache(0x160000a0, 4); 406 rm200_pic_slave = ioremap_nocache(0x160000a0, 4);
407 if (!rm200_pic_master) { 407 if (!rm200_pic_slave) {
408 iounmap(rm200_pic_master); 408 iounmap(rm200_pic_master);
409 return; 409 return;
410 } 410 }
diff --git a/arch/mips/txx9/generic/setup.c b/arch/mips/txx9/generic/setup.c
index 06e801c7e258..e27809b6d04f 100644
--- a/arch/mips/txx9/generic/setup.c
+++ b/arch/mips/txx9/generic/setup.c
@@ -160,7 +160,6 @@ 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 static char builtin[COMMAND_LINE_SIZE] __initdata;
164 163
165 if (fw_arg0 >= CKSEG0 || fw_arg1 < CKSEG0) { 164 if (fw_arg0 >= CKSEG0 || fw_arg1 < CKSEG0) {
166 /* 165 /*
@@ -174,20 +173,6 @@ static void __init prom_init_cmdline(void)
174 argv32 = (int *)fw_arg1; 173 argv32 = (int *)fw_arg1;
175 } 174 }
176 175
177 /* ignore all built-in args if any f/w args given */
178 /*
179 * But if built-in strings was started with '+', append them
180 * to command line args. If built-in was started with '-',
181 * ignore all f/w args.
182 */
183 builtin[0] = '\0';
184 if (arcs_cmdline[0] == '+')
185 strcpy(builtin, arcs_cmdline + 1);
186 else if (arcs_cmdline[0] == '-') {
187 strcpy(builtin, arcs_cmdline + 1);
188 argc = 0;
189 } else if (argc <= 1)
190 strcpy(builtin, arcs_cmdline);
191 arcs_cmdline[0] = '\0'; 176 arcs_cmdline[0] = '\0';
192 177
193 for (i = 1; i < argc; i++) { 178 for (i = 1; i < argc; i++) {
@@ -201,12 +186,6 @@ static void __init prom_init_cmdline(void)
201 } else 186 } else
202 strcat(arcs_cmdline, str); 187 strcat(arcs_cmdline, str);
203 } 188 }
204 /* append saved builtin args */
205 if (builtin[0]) {
206 if (arcs_cmdline[0])
207 strcat(arcs_cmdline, " ");
208 strcat(arcs_cmdline, builtin);
209 }
210} 189}
211 190
212static int txx9_ic_disable __initdata; 191static int txx9_ic_disable __initdata;
diff --git a/arch/mips/vr41xx/common/init.c b/arch/mips/vr41xx/common/init.c
index 1386e6f081c8..23916321cc1b 100644
--- a/arch/mips/vr41xx/common/init.c
+++ b/arch/mips/vr41xx/common/init.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * init.c, Common initialization routines for NEC VR4100 series. 2 * init.c, Common initialization routines for NEC VR4100 series.
3 * 3 *
4 * Copyright (C) 2003-2008 Yoichi Yuasa <yuasa@linux-mips.org> 4 * Copyright (C) 2003-2009 Yoichi Yuasa <yuasa@linux-mips.org>
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 as published by 7 * it under the terms of the GNU General Public License as published by
@@ -66,9 +66,9 @@ void __init prom_init(void)
66 argv = (char **)fw_arg1; 66 argv = (char **)fw_arg1;
67 67
68 for (i = 1; i < argc; i++) { 68 for (i = 1; i < argc; i++) {
69 strcat(arcs_cmdline, argv[i]); 69 strlcat(arcs_cmdline, argv[i], COMMAND_LINE_SIZE);
70 if (i < (argc - 1)) 70 if (i < (argc - 1))
71 strcat(arcs_cmdline, " "); 71 strlcat(arcs_cmdline, " ", COMMAND_LINE_SIZE);
72 } 72 }
73} 73}
74 74
diff --git a/arch/mn10300/Makefile b/arch/mn10300/Makefile
index dd0c8ff52a68..ac5c6bdb2f05 100644
--- a/arch/mn10300/Makefile
+++ b/arch/mn10300/Makefile
@@ -19,7 +19,7 @@ CCDIR := $(strip $(patsubst %/specs,%,$(CCSPECS)))
19KBUILD_CPPFLAGS += -nostdinc -I$(CCDIR)/include 19KBUILD_CPPFLAGS += -nostdinc -I$(CCDIR)/include
20 20
21LDFLAGS := 21LDFLAGS :=
22OBJCOPYFLAGS := -O binary -R .note -R .comment -S 22OBJCOPYFLAGS := -O binary -R .note -R .comment -R .GCC-command-line -R .note.gnu.build-id -S
23#LDFLAGS_vmlinux := -Map linkmap.txt 23#LDFLAGS_vmlinux := -Map linkmap.txt
24CHECKFLAGS += 24CHECKFLAGS +=
25 25
diff --git a/arch/mn10300/configs/asb2303_defconfig b/arch/mn10300/configs/asb2303_defconfig
index 3acce23708b0..441920d8ff58 100644
--- a/arch/mn10300/configs/asb2303_defconfig
+++ b/arch/mn10300/configs/asb2303_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.30-rc2 3# Linux kernel version: 2.6.33-rc1
4# Sat Apr 18 11:13:22 2009 4# Tue Dec 22 19:26:25 2009
5# 5#
6CONFIG_MN10300=y 6CONFIG_MN10300=y
7CONFIG_AM33=y 7CONFIG_AM33=y
@@ -22,6 +22,7 @@ CONFIG_GENERIC_HARDIRQS=y
22# CONFIG_HOTPLUG_CPU is not set 22# CONFIG_HOTPLUG_CPU is not set
23CONFIG_HZ=1000 23CONFIG_HZ=1000
24CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 24CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
25CONFIG_CONSTRUCTORS=y
25 26
26# 27#
27# General setup 28# General setup
@@ -43,11 +44,10 @@ CONFIG_BSD_PROCESS_ACCT=y
43# 44#
44# RCU Subsystem 45# RCU Subsystem
45# 46#
46CONFIG_CLASSIC_RCU=y
47# CONFIG_TREE_RCU is not set 47# CONFIG_TREE_RCU is not set
48# CONFIG_PREEMPT_RCU is not set 48# CONFIG_TREE_PREEMPT_RCU is not set
49CONFIG_TINY_RCU=y
49# CONFIG_TREE_RCU_TRACE is not set 50# CONFIG_TREE_RCU_TRACE is not set
50# CONFIG_PREEMPT_RCU_TRACE is not set
51# CONFIG_IKCONFIG is not set 51# CONFIG_IKCONFIG is not set
52CONFIG_LOG_BUF_SHIFT=14 52CONFIG_LOG_BUF_SHIFT=14
53# CONFIG_GROUP_SCHED is not set 53# CONFIG_GROUP_SCHED is not set
@@ -62,7 +62,6 @@ CONFIG_ANON_INODES=y
62CONFIG_EMBEDDED=y 62CONFIG_EMBEDDED=y
63CONFIG_SYSCTL_SYSCALL=y 63CONFIG_SYSCTL_SYSCALL=y
64# CONFIG_KALLSYMS is not set 64# CONFIG_KALLSYMS is not set
65CONFIG_STRIP_ASM_SYMS=y
66# CONFIG_HOTPLUG is not set 65# CONFIG_HOTPLUG is not set
67CONFIG_PRINTK=y 66CONFIG_PRINTK=y
68CONFIG_BUG=y 67CONFIG_BUG=y
@@ -75,14 +74,22 @@ CONFIG_TIMERFD=y
75CONFIG_EVENTFD=y 74CONFIG_EVENTFD=y
76CONFIG_SHMEM=y 75CONFIG_SHMEM=y
77CONFIG_AIO=y 76CONFIG_AIO=y
77
78#
79# Kernel Performance Events And Counters
80#
78# CONFIG_VM_EVENT_COUNTERS is not set 81# CONFIG_VM_EVENT_COUNTERS is not set
79CONFIG_COMPAT_BRK=y 82CONFIG_COMPAT_BRK=y
80CONFIG_SLAB=y 83CONFIG_SLAB=y
81# CONFIG_SLUB is not set 84# CONFIG_SLUB is not set
82# CONFIG_SLOB is not set 85# CONFIG_SLOB is not set
83CONFIG_PROFILING=y 86CONFIG_PROFILING=y
84# CONFIG_MARKERS is not set
85CONFIG_HAVE_OPROFILE=y 87CONFIG_HAVE_OPROFILE=y
88CONFIG_HAVE_ARCH_TRACEHOOK=y
89
90#
91# GCOV-based kernel profiling
92#
86# CONFIG_SLOW_WORK is not set 93# CONFIG_SLOW_WORK is not set
87# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 94# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
88CONFIG_SLABINFO=y 95CONFIG_SLABINFO=y
@@ -90,6 +97,35 @@ CONFIG_RT_MUTEXES=y
90CONFIG_BASE_SMALL=0 97CONFIG_BASE_SMALL=0
91# CONFIG_MODULES is not set 98# CONFIG_MODULES is not set
92# CONFIG_BLOCK is not set 99# CONFIG_BLOCK is not set
100# CONFIG_INLINE_SPIN_TRYLOCK is not set
101# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
102# CONFIG_INLINE_SPIN_LOCK is not set
103# CONFIG_INLINE_SPIN_LOCK_BH is not set
104# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
105# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
106# CONFIG_INLINE_SPIN_UNLOCK is not set
107# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
108# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
109# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
110# CONFIG_INLINE_READ_TRYLOCK is not set
111# CONFIG_INLINE_READ_LOCK is not set
112# CONFIG_INLINE_READ_LOCK_BH is not set
113# CONFIG_INLINE_READ_LOCK_IRQ is not set
114# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
115# CONFIG_INLINE_READ_UNLOCK is not set
116# CONFIG_INLINE_READ_UNLOCK_BH is not set
117# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
118# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
119# CONFIG_INLINE_WRITE_TRYLOCK is not set
120# CONFIG_INLINE_WRITE_LOCK is not set
121# CONFIG_INLINE_WRITE_LOCK_BH is not set
122# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
123# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
124# CONFIG_INLINE_WRITE_UNLOCK is not set
125# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
126# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
127# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
128# CONFIG_MUTEX_SPIN_ON_OWNER is not set
93# CONFIG_FREEZER is not set 129# CONFIG_FREEZER is not set
94 130
95# 131#
@@ -145,9 +181,8 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
145CONFIG_ZONE_DMA_FLAG=0 181CONFIG_ZONE_DMA_FLAG=0
146CONFIG_NR_QUICK=1 182CONFIG_NR_QUICK=1
147CONFIG_VIRT_TO_BUS=y 183CONFIG_VIRT_TO_BUS=y
148CONFIG_UNEVICTABLE_LRU=y 184# CONFIG_KSM is not set
149CONFIG_HAVE_MLOCK=y 185CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
150CONFIG_HAVE_MLOCKED_PAGE_BIT=y
151 186
152# 187#
153# Power management options 188# Power management options
@@ -202,6 +237,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
202# CONFIG_NETFILTER is not set 237# CONFIG_NETFILTER is not set
203# CONFIG_IP_DCCP is not set 238# CONFIG_IP_DCCP is not set
204# CONFIG_IP_SCTP is not set 239# CONFIG_IP_SCTP is not set
240# CONFIG_RDS is not set
205# CONFIG_TIPC is not set 241# CONFIG_TIPC is not set
206# CONFIG_ATM is not set 242# CONFIG_ATM is not set
207# CONFIG_BRIDGE is not set 243# CONFIG_BRIDGE is not set
@@ -216,6 +252,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
216# CONFIG_ECONET is not set 252# CONFIG_ECONET is not set
217# CONFIG_WAN_ROUTER is not set 253# CONFIG_WAN_ROUTER is not set
218# CONFIG_PHONET is not set 254# CONFIG_PHONET is not set
255# CONFIG_IEEE802154 is not set
219# CONFIG_NET_SCHED is not set 256# CONFIG_NET_SCHED is not set
220# CONFIG_DCB is not set 257# CONFIG_DCB is not set
221 258
@@ -341,7 +378,6 @@ CONFIG_MISC_DEVICES=y
341# CONFIG_SCSI_DMA is not set 378# CONFIG_SCSI_DMA is not set
342# CONFIG_SCSI_NETLINK is not set 379# CONFIG_SCSI_NETLINK is not set
343CONFIG_NETDEVICES=y 380CONFIG_NETDEVICES=y
344CONFIG_COMPAT_NET_DEV_OPS=y
345# CONFIG_DUMMY is not set 381# CONFIG_DUMMY is not set
346# CONFIG_BONDING is not set 382# CONFIG_BONDING is not set
347# CONFIG_MACVLAN is not set 383# CONFIG_MACVLAN is not set
@@ -362,14 +398,11 @@ CONFIG_SMC91X=y
362# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 398# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
363# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 399# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
364# CONFIG_B44 is not set 400# CONFIG_B44 is not set
401# CONFIG_KS8842 is not set
402# CONFIG_KS8851_MLL is not set
365# CONFIG_NETDEV_1000 is not set 403# CONFIG_NETDEV_1000 is not set
366# CONFIG_NETDEV_10000 is not set 404# CONFIG_NETDEV_10000 is not set
367 405# CONFIG_WLAN is not set
368#
369# Wireless LAN
370#
371# CONFIG_WLAN_PRE80211 is not set
372# CONFIG_WLAN_80211 is not set
373 406
374# 407#
375# Enable WiMAX (Networking options) to see the WiMAX drivers 408# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -430,11 +463,15 @@ CONFIG_RTC=y
430# CONFIG_TCG_TPM is not set 463# CONFIG_TCG_TPM is not set
431# CONFIG_I2C is not set 464# CONFIG_I2C is not set
432# CONFIG_SPI is not set 465# CONFIG_SPI is not set
466
467#
468# PPS support
469#
470# CONFIG_PPS is not set
433# CONFIG_W1 is not set 471# CONFIG_W1 is not set
434# CONFIG_POWER_SUPPLY is not set 472# CONFIG_POWER_SUPPLY is not set
435# CONFIG_HWMON is not set 473# CONFIG_HWMON is not set
436# CONFIG_THERMAL is not set 474# CONFIG_THERMAL is not set
437# CONFIG_THERMAL_HWMON is not set
438# CONFIG_WATCHDOG is not set 475# CONFIG_WATCHDOG is not set
439CONFIG_SSB_POSSIBLE=y 476CONFIG_SSB_POSSIBLE=y
440 477
@@ -451,22 +488,7 @@ CONFIG_SSB_POSSIBLE=y
451# CONFIG_HTC_PASIC3 is not set 488# CONFIG_HTC_PASIC3 is not set
452# CONFIG_MFD_TMIO is not set 489# CONFIG_MFD_TMIO is not set
453# CONFIG_REGULATOR is not set 490# CONFIG_REGULATOR is not set
454 491# CONFIG_MEDIA_SUPPORT is not set
455#
456# Multimedia devices
457#
458
459#
460# Multimedia core support
461#
462# CONFIG_VIDEO_DEV is not set
463# CONFIG_DVB_CORE is not set
464# CONFIG_VIDEO_MEDIA is not set
465
466#
467# Multimedia drivers
468#
469# CONFIG_DAB is not set
470 492
471# 493#
472# Graphics support 494# Graphics support
@@ -490,11 +512,17 @@ CONFIG_SSB_POSSIBLE=y
490# CONFIG_DMADEVICES is not set 512# CONFIG_DMADEVICES is not set
491# CONFIG_AUXDISPLAY is not set 513# CONFIG_AUXDISPLAY is not set
492# CONFIG_UIO is not set 514# CONFIG_UIO is not set
515
516#
517# TI VLYNQ
518#
493# CONFIG_STAGING is not set 519# CONFIG_STAGING is not set
494 520
495# 521#
496# File systems 522# File systems
497# 523#
524CONFIG_FILE_LOCKING=y
525CONFIG_FSNOTIFY=y
498CONFIG_DNOTIFY=y 526CONFIG_DNOTIFY=y
499CONFIG_INOTIFY=y 527CONFIG_INOTIFY=y
500CONFIG_INOTIFY_USER=y 528CONFIG_INOTIFY_USER=y
@@ -539,6 +567,7 @@ CONFIG_NFS_V3=y
539# CONFIG_NFS_V3_ACL is not set 567# CONFIG_NFS_V3_ACL is not set
540# CONFIG_NFS_V4 is not set 568# CONFIG_NFS_V4 is not set
541CONFIG_ROOT_NFS=y 569CONFIG_ROOT_NFS=y
570# CONFIG_NFSD is not set
542CONFIG_LOCKD=y 571CONFIG_LOCKD=y
543CONFIG_LOCKD_V4=y 572CONFIG_LOCKD_V4=y
544CONFIG_NFS_COMMON=y 573CONFIG_NFS_COMMON=y
@@ -561,13 +590,13 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
561CONFIG_ENABLE_MUST_CHECK=y 590CONFIG_ENABLE_MUST_CHECK=y
562CONFIG_FRAME_WARN=1024 591CONFIG_FRAME_WARN=1024
563CONFIG_MAGIC_SYSRQ=y 592CONFIG_MAGIC_SYSRQ=y
593CONFIG_STRIP_ASM_SYMS=y
564# CONFIG_UNUSED_SYMBOLS is not set 594# CONFIG_UNUSED_SYMBOLS is not set
565# CONFIG_DEBUG_FS is not set 595# CONFIG_DEBUG_FS is not set
566# CONFIG_HEADERS_CHECK is not set 596# CONFIG_HEADERS_CHECK is not set
567# CONFIG_DEBUG_KERNEL is not set 597# CONFIG_DEBUG_KERNEL is not set
568# CONFIG_DEBUG_BUGVERBOSE is not set 598CONFIG_DEBUG_BUGVERBOSE=y
569# CONFIG_DEBUG_MEMORY_INIT is not set 599# CONFIG_DEBUG_MEMORY_INIT is not set
570# CONFIG_RCU_CPU_STALL_DETECTOR is not set
571# CONFIG_SYSCTL_SYSCALL_CHECK is not set 600# CONFIG_SYSCTL_SYSCALL_CHECK is not set
572# CONFIG_SAMPLES is not set 601# CONFIG_SAMPLES is not set
573 602
@@ -577,7 +606,11 @@ CONFIG_MAGIC_SYSRQ=y
577# CONFIG_KEYS is not set 606# CONFIG_KEYS is not set
578# CONFIG_SECURITY is not set 607# CONFIG_SECURITY is not set
579# CONFIG_SECURITYFS is not set 608# CONFIG_SECURITYFS is not set
580# CONFIG_SECURITY_FILE_CAPABILITIES is not set 609# CONFIG_DEFAULT_SECURITY_SELINUX is not set
610# CONFIG_DEFAULT_SECURITY_SMACK is not set
611# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
612CONFIG_DEFAULT_SECURITY_DAC=y
613CONFIG_DEFAULT_SECURITY=""
581# CONFIG_CRYPTO is not set 614# CONFIG_CRYPTO is not set
582# CONFIG_BINARY_PRINTF is not set 615# CONFIG_BINARY_PRINTF is not set
583 616
diff --git a/arch/mn10300/include/asm/bitops.h b/arch/mn10300/include/asm/bitops.h
index 0b610f482abb..f49ac49e09ad 100644
--- a/arch/mn10300/include/asm/bitops.h
+++ b/arch/mn10300/include/asm/bitops.h
@@ -165,7 +165,7 @@ static inline __attribute__((const))
165unsigned long __ffs(unsigned long x) 165unsigned long __ffs(unsigned long x)
166{ 166{
167 int bit; 167 int bit;
168 asm("bsch %2,%0" : "=r"(bit) : "0"(0), "r"(x & -x)); 168 asm("bsch %2,%0" : "=r"(bit) : "0"(0), "r"(x & -x) : "cc");
169 return bit; 169 return bit;
170} 170}
171 171
@@ -177,7 +177,7 @@ static inline __attribute__((const))
177int __ilog2_u32(u32 n) 177int __ilog2_u32(u32 n)
178{ 178{
179 int bit; 179 int bit;
180 asm("bsch %2,%0" : "=r"(bit) : "0"(0), "r"(n)); 180 asm("bsch %2,%0" : "=r"(bit) : "0"(0), "r"(n) : "cc");
181 return bit; 181 return bit;
182} 182}
183 183
diff --git a/arch/mn10300/include/asm/div64.h b/arch/mn10300/include/asm/div64.h
index 3a8329b3e869..34dcb8e68309 100644
--- a/arch/mn10300/include/asm/div64.h
+++ b/arch/mn10300/include/asm/div64.h
@@ -72,6 +72,7 @@ unsigned __muldiv64u(unsigned val, unsigned mult, unsigned div)
72 * MDR = MDR:val%div */ 72 * MDR = MDR:val%div */
73 : "=r"(result) 73 : "=r"(result)
74 : "0"(val), "ir"(mult), "r"(div) 74 : "0"(val), "ir"(mult), "r"(div)
75 : "cc"
75 ); 76 );
76 77
77 return result; 78 return result;
@@ -92,6 +93,7 @@ signed __muldiv64s(signed val, signed mult, signed div)
92 * MDR = MDR:val%div */ 93 * MDR = MDR:val%div */
93 : "=r"(result) 94 : "=r"(result)
94 : "0"(val), "ir"(mult), "r"(div) 95 : "0"(val), "ir"(mult), "r"(div)
96 : "cc"
95 ); 97 );
96 98
97 return result; 99 return result;
diff --git a/arch/mn10300/include/asm/system.h b/arch/mn10300/include/asm/system.h
index 8214fb7e7fe4..3636c054dcd5 100644
--- a/arch/mn10300/include/asm/system.h
+++ b/arch/mn10300/include/asm/system.h
@@ -143,6 +143,7 @@ do { \
143 " mov %0,epsw \n" \ 143 " mov %0,epsw \n" \
144 : "=&d"(tmp) \ 144 : "=&d"(tmp) \
145 : "i"(~EPSW_IM), "r"(__mn10300_irq_enabled_epsw) \ 145 : "i"(~EPSW_IM), "r"(__mn10300_irq_enabled_epsw) \
146 : "cc" \
146 ); \ 147 ); \
147} while (0) 148} while (0)
148 149
diff --git a/arch/mn10300/include/asm/tlbflush.h b/arch/mn10300/include/asm/tlbflush.h
index e0239865abcb..1a7e29281c5d 100644
--- a/arch/mn10300/include/asm/tlbflush.h
+++ b/arch/mn10300/include/asm/tlbflush.h
@@ -22,7 +22,7 @@ do { \
22 " mov %0,%1 \n" \ 22 " mov %0,%1 \n" \
23 : "=d"(w) \ 23 : "=d"(w) \
24 : "m"(MMUCTR), "i"(MMUCTR_IIV|MMUCTR_DIV) \ 24 : "m"(MMUCTR), "i"(MMUCTR_IIV|MMUCTR_DIV) \
25 : "memory" \ 25 : "cc", "memory" \
26 ); \ 26 ); \
27} while (0) 27} while (0)
28 28
diff --git a/arch/mn10300/include/asm/uaccess.h b/arch/mn10300/include/asm/uaccess.h
index 167e10ff06d9..197a7af3dd8a 100644
--- a/arch/mn10300/include/asm/uaccess.h
+++ b/arch/mn10300/include/asm/uaccess.h
@@ -316,7 +316,7 @@ do { \
316 " .previous\n" \ 316 " .previous\n" \
317 : "=a"(__from), "=a"(__to), "=r"(size), "=&r"(w)\ 317 : "=a"(__from), "=a"(__to), "=r"(size), "=&r"(w)\
318 : "0"(__from), "1"(__to), "2"(size) \ 318 : "0"(__from), "1"(__to), "2"(size) \
319 : "memory"); \ 319 : "cc", "memory"); \
320 } \ 320 } \
321} while (0) 321} while (0)
322 322
@@ -352,7 +352,7 @@ do { \
352 " .previous\n" \ 352 " .previous\n" \
353 : "=a"(__from), "=a"(__to), "=r"(size), "=&r"(w)\ 353 : "=a"(__from), "=a"(__to), "=r"(size), "=&r"(w)\
354 : "0"(__from), "1"(__to), "2"(size) \ 354 : "0"(__from), "1"(__to), "2"(size) \
355 : "memory"); \ 355 : "cc", "memory"); \
356 } \ 356 } \
357} while (0) 357} while (0)
358 358
diff --git a/arch/mn10300/include/asm/unistd.h b/arch/mn10300/include/asm/unistd.h
index 2a983931c11f..c05acb95c2a9 100644
--- a/arch/mn10300/include/asm/unistd.h
+++ b/arch/mn10300/include/asm/unistd.h
@@ -348,10 +348,11 @@
348#define __NR_pwritev 335 348#define __NR_pwritev 335
349#define __NR_rt_tgsigqueueinfo 336 349#define __NR_rt_tgsigqueueinfo 336
350#define __NR_perf_event_open 337 350#define __NR_perf_event_open 337
351#define __NR_recvmmsg 338
351 352
352#ifdef __KERNEL__ 353#ifdef __KERNEL__
353 354
354#define NR_syscalls 338 355#define NR_syscalls 339
355 356
356/* 357/*
357 * specify the deprecated syscalls we want to support on this arch 358 * specify the deprecated syscalls we want to support on this arch
diff --git a/arch/mn10300/kernel/entry.S b/arch/mn10300/kernel/entry.S
index c9ee6c009d79..88e3e1c3cc21 100644
--- a/arch/mn10300/kernel/entry.S
+++ b/arch/mn10300/kernel/entry.S
@@ -724,6 +724,7 @@ ENTRY(sys_call_table)
724 .long sys_pwritev /* 335 */ 724 .long sys_pwritev /* 335 */
725 .long sys_rt_tgsigqueueinfo 725 .long sys_rt_tgsigqueueinfo
726 .long sys_perf_event_open 726 .long sys_perf_event_open
727 .long sys_recvmmsg
727 728
728 729
729nr_syscalls=(.-sys_call_table)/4 730nr_syscalls=(.-sys_call_table)/4
diff --git a/arch/mn10300/kernel/mn10300-serial.c b/arch/mn10300/kernel/mn10300-serial.c
index 229b710fc5d5..ef34d5a0f8bd 100644
--- a/arch/mn10300/kernel/mn10300-serial.c
+++ b/arch/mn10300/kernel/mn10300-serial.c
@@ -380,7 +380,8 @@ static int mask_test_and_clear(volatile u8 *ptr, u8 mask)
380 u32 epsw; 380 u32 epsw;
381 asm volatile(" bclr %1,(%2) \n" 381 asm volatile(" bclr %1,(%2) \n"
382 " mov epsw,%0 \n" 382 " mov epsw,%0 \n"
383 : "=d"(epsw) : "d"(mask), "a"(ptr)); 383 : "=d"(epsw) : "d"(mask), "a"(ptr)
384 : "cc", "memory");
384 return !(epsw & EPSW_FLAG_Z); 385 return !(epsw & EPSW_FLAG_Z);
385} 386}
386 387
diff --git a/arch/mn10300/kernel/signal.c b/arch/mn10300/kernel/signal.c
index a21f43bc68e2..717db14c2cc3 100644
--- a/arch/mn10300/kernel/signal.c
+++ b/arch/mn10300/kernel/signal.c
@@ -264,7 +264,7 @@ static inline void __user *get_sigframe(struct k_sigaction *ka,
264 264
265 /* this is the X/Open sanctioned signal stack switching. */ 265 /* this is the X/Open sanctioned signal stack switching. */
266 if (ka->sa.sa_flags & SA_ONSTACK) { 266 if (ka->sa.sa_flags & SA_ONSTACK) {
267 if (!on_sig_stack(sp)) 267 if (sas_ss_flags(sp) == 0)
268 sp = current->sas_ss_sp + current->sas_ss_size; 268 sp = current->sas_ss_sp + current->sas_ss_size;
269 } 269 }
270 270
diff --git a/arch/mn10300/lib/checksum.c b/arch/mn10300/lib/checksum.c
index 274f29ec33c1..b6580f5d89ee 100644
--- a/arch/mn10300/lib/checksum.c
+++ b/arch/mn10300/lib/checksum.c
@@ -22,6 +22,7 @@ static inline unsigned short from32to16(__wsum sum)
22 " addc 0xffff,%0 \n" 22 " addc 0xffff,%0 \n"
23 : "=r" (sum) 23 : "=r" (sum)
24 : "r" (sum << 16), "0" (sum & 0xffff0000) 24 : "r" (sum << 16), "0" (sum & 0xffff0000)
25 : "cc"
25 ); 26 );
26 return sum >> 16; 27 return sum >> 16;
27} 28}
diff --git a/arch/mn10300/lib/delay.c b/arch/mn10300/lib/delay.c
index cce66bc0822d..fdf6f710f94e 100644
--- a/arch/mn10300/lib/delay.c
+++ b/arch/mn10300/lib/delay.c
@@ -28,7 +28,8 @@ void __delay(unsigned long loops)
28 "2: add -1,%0 \n" 28 "2: add -1,%0 \n"
29 " bne 2b \n" 29 " bne 2b \n"
30 : "=&d" (d0) 30 : "=&d" (d0)
31 : "0" (loops)); 31 : "0" (loops)
32 : "cc");
32} 33}
33EXPORT_SYMBOL(__delay); 34EXPORT_SYMBOL(__delay);
34 35
diff --git a/arch/mn10300/lib/usercopy.c b/arch/mn10300/lib/usercopy.c
index a75b203059c1..7826e6c364e7 100644
--- a/arch/mn10300/lib/usercopy.c
+++ b/arch/mn10300/lib/usercopy.c
@@ -62,7 +62,7 @@ do { \
62 " .previous" \ 62 " .previous" \
63 :"=&r"(res), "=r"(count), "=&r"(w) \ 63 :"=&r"(res), "=r"(count), "=&r"(w) \
64 :"i"(-EFAULT), "1"(count), "a"(src), "a"(dst) \ 64 :"i"(-EFAULT), "1"(count), "a"(src), "a"(dst) \
65 :"memory"); \ 65 : "memory", "cc"); \
66} while (0) 66} while (0)
67 67
68long 68long
@@ -109,7 +109,7 @@ do { \
109 ".previous\n" \ 109 ".previous\n" \
110 : "+r"(size), "=&r"(w) \ 110 : "+r"(size), "=&r"(w) \
111 : "a"(addr), "d"(0) \ 111 : "a"(addr), "d"(0) \
112 : "memory"); \ 112 : "memory", "cc"); \
113} while (0) 113} while (0)
114 114
115unsigned long 115unsigned long
@@ -161,6 +161,6 @@ long strnlen_user(const char *s, long n)
161 ".previous\n" 161 ".previous\n"
162 :"=d"(res), "=&r"(w) 162 :"=d"(res), "=&r"(w)
163 :"0"(0), "a"(s), "r"(n) 163 :"0"(0), "a"(s), "r"(n)
164 :"memory"); 164 : "memory", "cc");
165 return res; 165 return res;
166} 166}
diff --git a/arch/mn10300/mm/dma-alloc.c b/arch/mn10300/mm/dma-alloc.c
index f3649d8f50e3..ee82d624b3c6 100644
--- a/arch/mn10300/mm/dma-alloc.c
+++ b/arch/mn10300/mm/dma-alloc.c
@@ -16,12 +16,24 @@
16#include <linux/pci.h> 16#include <linux/pci.h>
17#include <asm/io.h> 17#include <asm/io.h>
18 18
19static unsigned long pci_sram_allocated = 0xbc000000;
20
19void *dma_alloc_coherent(struct device *dev, size_t size, 21void *dma_alloc_coherent(struct device *dev, size_t size,
20 dma_addr_t *dma_handle, int gfp) 22 dma_addr_t *dma_handle, int gfp)
21{ 23{
22 unsigned long addr; 24 unsigned long addr;
23 void *ret; 25 void *ret;
24 26
27 printk("dma_alloc_coherent(%s,%zu,,%x)\n", dev_name(dev), size, gfp);
28
29 if (0xbe000000 - pci_sram_allocated >= size) {
30 size = (size + 255) & ~255;
31 addr = pci_sram_allocated;
32 pci_sram_allocated += size;
33 ret = (void *) addr;
34 goto done;
35 }
36
25 /* ignore region specifiers */ 37 /* ignore region specifiers */
26 gfp &= ~(__GFP_DMA | __GFP_HIGHMEM); 38 gfp &= ~(__GFP_DMA | __GFP_HIGHMEM);
27 39
@@ -41,7 +53,9 @@ void *dma_alloc_coherent(struct device *dev, size_t size,
41 /* write back and evict all cache lines covering this region */ 53 /* write back and evict all cache lines covering this region */
42 mn10300_dcache_flush_inv_range2(virt_to_phys((void *) addr), PAGE_SIZE); 54 mn10300_dcache_flush_inv_range2(virt_to_phys((void *) addr), PAGE_SIZE);
43 55
56done:
44 *dma_handle = virt_to_bus((void *) addr); 57 *dma_handle = virt_to_bus((void *) addr);
58 printk("dma_alloc_coherent() = %p [%x]\n", ret, *dma_handle);
45 return ret; 59 return ret;
46} 60}
47EXPORT_SYMBOL(dma_alloc_coherent); 61EXPORT_SYMBOL(dma_alloc_coherent);
@@ -51,6 +65,9 @@ void dma_free_coherent(struct device *dev, size_t size, void *vaddr,
51{ 65{
52 unsigned long addr = (unsigned long) vaddr & ~0x20000000; 66 unsigned long addr = (unsigned long) vaddr & ~0x20000000;
53 67
68 if (addr >= 0x9c000000)
69 return;
70
54 free_pages(addr, get_order(size)); 71 free_pages(addr, get_order(size));
55} 72}
56EXPORT_SYMBOL(dma_free_coherent); 73EXPORT_SYMBOL(dma_free_coherent);
diff --git a/arch/mn10300/mm/init.c b/arch/mn10300/mm/init.c
index ec1420562dc7..dd27a9a35152 100644
--- a/arch/mn10300/mm/init.c
+++ b/arch/mn10300/mm/init.c
@@ -118,8 +118,7 @@ void __init mem_init(void)
118 reservedpages << (PAGE_SHIFT - 10), 118 reservedpages << (PAGE_SHIFT - 10),
119 datasize >> 10, 119 datasize >> 10,
120 initsize >> 10, 120 initsize >> 10,
121 (unsigned long) (totalhigh_pages << (PAGE_SHIFT - 10)) 121 totalhigh_pages << (PAGE_SHIFT - 10));
122 );
123} 122}
124 123
125/* 124/*
diff --git a/arch/mn10300/mm/misalignment.c b/arch/mn10300/mm/misalignment.c
index 30016251f658..6dffbf97ac26 100644
--- a/arch/mn10300/mm/misalignment.c
+++ b/arch/mn10300/mm/misalignment.c
@@ -633,13 +633,13 @@ static int misalignment_addr(unsigned long *registers, unsigned long sp,
633 goto displace_or_inc; 633 goto displace_or_inc;
634 case SD24: 634 case SD24:
635 tmp = disp << 8; 635 tmp = disp << 8;
636 asm("asr 8,%0" : "=r"(tmp) : "0"(tmp)); 636 asm("asr 8,%0" : "=r"(tmp) : "0"(tmp) : "cc");
637 disp = (long) tmp; 637 disp = (long) tmp;
638 goto displace_or_inc; 638 goto displace_or_inc;
639 case SIMM4_2: 639 case SIMM4_2:
640 tmp = opcode >> 4 & 0x0f; 640 tmp = opcode >> 4 & 0x0f;
641 tmp <<= 28; 641 tmp <<= 28;
642 asm("asr 28,%0" : "=r"(tmp) : "0"(tmp)); 642 asm("asr 28,%0" : "=r"(tmp) : "0"(tmp) : "cc");
643 disp = (long) tmp; 643 disp = (long) tmp;
644 goto displace_or_inc; 644 goto displace_or_inc;
645 case IMM8: 645 case IMM8:
diff --git a/arch/mn10300/unit-asb2305/include/unit/serial.h b/arch/mn10300/unit-asb2305/include/unit/serial.h
index 3bfc90938787..8086cc092cec 100644
--- a/arch/mn10300/unit-asb2305/include/unit/serial.h
+++ b/arch/mn10300/unit-asb2305/include/unit/serial.h
@@ -11,7 +11,7 @@
11#ifndef _ASM_UNIT_SERIAL_H 11#ifndef _ASM_UNIT_SERIAL_H
12#define _ASM_UNIT_SERIAL_H 12#define _ASM_UNIT_SERIAL_H
13 13
14#include <asm/cpu/cpu-regs.h> 14#include <asm/cpu-regs.h>
15#include <proc/irq.h> 15#include <proc/irq.h>
16#include <linux/serial_reg.h> 16#include <linux/serial_reg.h>
17 17
diff --git a/arch/mn10300/unit-asb2305/include/unit/timex.h b/arch/mn10300/unit-asb2305/include/unit/timex.h
index a71c49aa85eb..d1c72d59fa9f 100644
--- a/arch/mn10300/unit-asb2305/include/unit/timex.h
+++ b/arch/mn10300/unit-asb2305/include/unit/timex.h
@@ -15,7 +15,7 @@
15#include <linux/irq.h> 15#include <linux/irq.h>
16#endif /* __ASSEMBLY__ */ 16#endif /* __ASSEMBLY__ */
17 17
18#include <asm/cpu/timer-regs.h> 18#include <asm/timer-regs.h>
19#include <unit/clock.h> 19#include <unit/clock.h>
20 20
21/* 21/*
diff --git a/arch/mn10300/unit-asb2305/leds.c b/arch/mn10300/unit-asb2305/leds.c
index d345ff9042d5..6f8de9954026 100644
--- a/arch/mn10300/unit-asb2305/leds.c
+++ b/arch/mn10300/unit-asb2305/leds.c
@@ -13,8 +13,8 @@
13#include <linux/init.h> 13#include <linux/init.h>
14#include <asm/io.h> 14#include <asm/io.h>
15#include <asm/processor.h> 15#include <asm/processor.h>
16#include <asm/cpu/intctl-regs.h> 16#include <asm/intctl-regs.h>
17#include <asm/cpu/rtc-regs.h> 17#include <asm/rtc-regs.h>
18#include <unit/leds.h> 18#include <unit/leds.h>
19 19
20static const u8 asb2305_led_hex_tbl[16] = { 20static const u8 asb2305_led_hex_tbl[16] = {
diff --git a/arch/mn10300/unit-asb2305/pci-asb2305.c b/arch/mn10300/unit-asb2305/pci-asb2305.c
index d100ca788468..78cd134ddf7d 100644
--- a/arch/mn10300/unit-asb2305/pci-asb2305.c
+++ b/arch/mn10300/unit-asb2305/pci-asb2305.c
@@ -218,45 +218,6 @@ void __init pcibios_resource_survey(void)
218 pcibios_allocate_resources(1); 218 pcibios_allocate_resources(1);
219} 219}
220 220
221int pcibios_enable_resources(struct pci_dev *dev, int mask)
222{
223 u16 cmd, old_cmd;
224 int idx;
225 struct resource *r;
226
227 pci_read_config_word(dev, PCI_COMMAND, &cmd);
228 old_cmd = cmd;
229
230 for (idx = 0; idx < 6; idx++) {
231 /* Only set up the requested stuff */
232 if (!(mask & (1 << idx)))
233 continue;
234
235 r = &dev->resource[idx];
236
237 if (!r->start && r->end) {
238 printk(KERN_ERR
239 "PCI: Device %s not available because of"
240 " resource collisions\n",
241 pci_name(dev));
242 return -EINVAL;
243 }
244
245 if (r->flags & IORESOURCE_IO)
246 cmd |= PCI_COMMAND_IO;
247 if (r->flags & IORESOURCE_MEM)
248 cmd |= PCI_COMMAND_MEMORY;
249 }
250
251 if (dev->resource[PCI_ROM_RESOURCE].start)
252 cmd |= PCI_COMMAND_MEMORY;
253
254 if (cmd != old_cmd)
255 pci_write_config_word(dev, PCI_COMMAND, cmd);
256
257 return 0;
258}
259
260/* 221/*
261 * If we set up a device for bus mastering, we need to check the latency 222 * If we set up a device for bus mastering, we need to check the latency
262 * timer as certain crappy BIOSes forget to set it properly. 223 * timer as certain crappy BIOSes forget to set it properly.
diff --git a/arch/mn10300/unit-asb2305/pci-asb2305.h b/arch/mn10300/unit-asb2305/pci-asb2305.h
index 9763d1ce343a..c3fa294b6e28 100644
--- a/arch/mn10300/unit-asb2305/pci-asb2305.h
+++ b/arch/mn10300/unit-asb2305/pci-asb2305.h
@@ -34,7 +34,6 @@ extern unsigned int pci_probe;
34extern unsigned int pcibios_max_latency; 34extern unsigned int pcibios_max_latency;
35 35
36extern void pcibios_resource_survey(void); 36extern void pcibios_resource_survey(void);
37extern int pcibios_enable_resources(struct pci_dev *dev, int mask);
38 37
39/* pci.c */ 38/* pci.c */
40 39
diff --git a/arch/mn10300/unit-asb2305/pci.c b/arch/mn10300/unit-asb2305/pci.c
index 07dbbcda3b2e..2cb7e75ba1c0 100644
--- a/arch/mn10300/unit-asb2305/pci.c
+++ b/arch/mn10300/unit-asb2305/pci.c
@@ -27,6 +27,29 @@ struct pci_bus *pci_root_bus;
27struct pci_ops *pci_root_ops; 27struct pci_ops *pci_root_ops;
28 28
29/* 29/*
30 * The accessible PCI window does not cover the entire CPU address space, but
31 * there are devices we want to access outside of that window, so we need to
32 * insert specific PCI bus resources instead of using the platform-level bus
33 * resources directly for the PCI root bus.
34 *
35 * These are configured and inserted by pcibios_init() and are attached to the
36 * root bus by pcibios_fixup_bus().
37 */
38static struct resource pci_ioport_resource = {
39 .name = "PCI IO",
40 .start = 0xbe000000,
41 .end = 0xbe03ffff,
42 .flags = IORESOURCE_IO,
43};
44
45static struct resource pci_iomem_resource = {
46 .name = "PCI mem",
47 .start = 0xb8000000,
48 .end = 0xbbffffff,
49 .flags = IORESOURCE_MEM,
50};
51
52/*
30 * Functions for accessing PCI configuration space 53 * Functions for accessing PCI configuration space
31 */ 54 */
32 55
@@ -279,7 +302,7 @@ static int __init pci_sanity_check(struct pci_ops *o)
279 (x == PCI_VENDOR_ID_INTEL || x == PCI_VENDOR_ID_COMPAQ))) 302 (x == PCI_VENDOR_ID_INTEL || x == PCI_VENDOR_ID_COMPAQ)))
280 return 1; 303 return 1;
281 304
282 printk(KERN_ERROR "PCI: Sanity check failed\n"); 305 printk(KERN_ERR "PCI: Sanity check failed\n");
283 return 0; 306 return 0;
284} 307}
285 308
@@ -297,6 +320,7 @@ static int __init pci_check_direct(void)
297 printk(KERN_INFO "PCI: Using configuration ampci\n"); 320 printk(KERN_INFO "PCI: Using configuration ampci\n");
298 request_mem_region(0xBE040000, 256, "AMPCI bridge"); 321 request_mem_region(0xBE040000, 256, "AMPCI bridge");
299 request_mem_region(0xBFFFFFF4, 12, "PCI ampci"); 322 request_mem_region(0xBFFFFFF4, 12, "PCI ampci");
323 request_mem_region(0xBC000000, 32 * 1024 * 1024, "PCI SRAM");
300 return 0; 324 return 0;
301 } 325 }
302 326
@@ -358,6 +382,11 @@ void __devinit pcibios_fixup_bus(struct pci_bus *bus)
358{ 382{
359 struct pci_dev *dev; 383 struct pci_dev *dev;
360 384
385 if (bus->number == 0) {
386 bus->resource[0] = &pci_ioport_resource;
387 bus->resource[1] = &pci_iomem_resource;
388 }
389
361 if (bus->self) { 390 if (bus->self) {
362 pci_read_bridge_bases(bus); 391 pci_read_bridge_bases(bus);
363 pcibios_fixup_device_resources(bus->self); 392 pcibios_fixup_device_resources(bus->self);
@@ -380,6 +409,11 @@ static int __init pcibios_init(void)
380 iomem_resource.start = 0xA0000000; 409 iomem_resource.start = 0xA0000000;
381 iomem_resource.end = 0xDFFFFFFF; 410 iomem_resource.end = 0xDFFFFFFF;
382 411
412 if (insert_resource(&iomem_resource, &pci_iomem_resource) < 0)
413 panic("Unable to insert PCI IOMEM resource\n");
414 if (insert_resource(&ioport_resource, &pci_ioport_resource) < 0)
415 panic("Unable to insert PCI IOPORT resource\n");
416
383 if (!pci_probe) 417 if (!pci_probe)
384 return 0; 418 return 0;
385 419
@@ -391,32 +425,11 @@ static int __init pcibios_init(void)
391 printk(KERN_INFO "PCI: Probing PCI hardware [mempage %08x]\n", 425 printk(KERN_INFO "PCI: Probing PCI hardware [mempage %08x]\n",
392 MEM_PAGING_REG); 426 MEM_PAGING_REG);
393 427
394 { 428 pci_root_bus = pci_scan_bus(0, &pci_direct_ampci, NULL);
395#if 0
396 static struct pci_bus am33_root_bus = {
397 .children = LIST_HEAD_INIT(am33_root_bus.children),
398 .devices = LIST_HEAD_INIT(am33_root_bus.devices),
399 .number = 0,
400 .secondary = 0,
401 .resource = { &ioport_resource, &iomem_resource },
402 };
403
404 am33_root_bus.ops = pci_root_ops;
405 list_add_tail(&am33_root_bus.node, &pci_root_buses);
406
407 am33_root_bus.subordinate = pci_do_scan_bus(0);
408
409 pci_root_bus = &am33_root_bus;
410#else
411 pci_root_bus = pci_scan_bus(0, &pci_direct_ampci, NULL);
412#endif
413 }
414 429
415 pcibios_irq_init(); 430 pcibios_irq_init();
416 pcibios_fixup_irqs(); 431 pcibios_fixup_irqs();
417#if 0
418 pcibios_resource_survey(); 432 pcibios_resource_survey();
419#endif
420 return 0; 433 return 0;
421} 434}
422 435
@@ -440,7 +453,7 @@ int pcibios_enable_device(struct pci_dev *dev, int mask)
440{ 453{
441 int err; 454 int err;
442 455
443 err = pcibios_enable_resources(dev, mask); 456 err = pci_enable_resources(dev, mask);
444 if (err == 0) 457 if (err == 0)
445 pcibios_enable_irq(dev); 458 pcibios_enable_irq(dev);
446 return err; 459 return err;
@@ -455,6 +468,7 @@ static void __init unit_disable_pcnet(struct pci_bus *bus, struct pci_ops *o)
455 468
456 bus->number = 0; 469 bus->number = 0;
457 470
471 o->read (bus, PCI_DEVFN(2, 0), PCI_VENDOR_ID, 4, &x);
458 o->read (bus, PCI_DEVFN(2, 0), PCI_COMMAND, 2, &x); 472 o->read (bus, PCI_DEVFN(2, 0), PCI_COMMAND, 2, &x);
459 x |= PCI_COMMAND_MASTER | 473 x |= PCI_COMMAND_MASTER |
460 PCI_COMMAND_IO | PCI_COMMAND_MEMORY | 474 PCI_COMMAND_IO | PCI_COMMAND_MEMORY |
diff --git a/arch/mn10300/unit-asb2305/unit-init.c b/arch/mn10300/unit-asb2305/unit-init.c
index 1c452cc3f6e9..a76c8e0ab90f 100644
--- a/arch/mn10300/unit-asb2305/unit-init.c
+++ b/arch/mn10300/unit-asb2305/unit-init.c
@@ -15,9 +15,8 @@
15#include <asm/io.h> 15#include <asm/io.h>
16#include <asm/setup.h> 16#include <asm/setup.h>
17#include <asm/processor.h> 17#include <asm/processor.h>
18#include <asm/cpu/intctl-regs.h> 18#include <asm/intctl-regs.h>
19#include <asm/cpu/rtc-regs.h> 19#include <asm/serial-regs.h>
20#include <asm/cpu/serial-regs.h>
21#include <unit/serial.h> 20#include <unit/serial.h>
22 21
23/* 22/*
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
index 524d9352f17e..f388dc68f605 100644
--- a/arch/parisc/Kconfig
+++ b/arch/parisc/Kconfig
@@ -18,7 +18,6 @@ config PARISC
18 select BUG 18 select BUG
19 select HAVE_PERF_EVENTS 19 select HAVE_PERF_EVENTS
20 select GENERIC_ATOMIC64 if !64BIT 20 select GENERIC_ATOMIC64 if !64BIT
21 select HAVE_ARCH_TRACEHOOK
22 help 21 help
23 The PA-RISC microprocessor is designed by Hewlett-Packard and used 22 The PA-RISC microprocessor is designed by Hewlett-Packard and used
24 in many of their workstations & servers (HP9000 700 and 800 series, 23 in many of their workstations & servers (HP9000 700 and 800 series,
diff --git a/arch/parisc/kernel/pci.c b/arch/parisc/kernel/pci.c
index f7064abc3bb6..9e74bfe071dc 100644
--- a/arch/parisc/kernel/pci.c
+++ b/arch/parisc/kernel/pci.c
@@ -18,7 +18,6 @@
18 18
19#include <asm/io.h> 19#include <asm/io.h>
20#include <asm/system.h> 20#include <asm/system.h>
21#include <asm/cache.h> /* for L1_CACHE_BYTES */
22#include <asm/superio.h> 21#include <asm/superio.h>
23 22
24#define DEBUG_RESOURCES 0 23#define DEBUG_RESOURCES 0
@@ -123,6 +122,10 @@ static int __init pcibios_init(void)
123 } else { 122 } else {
124 printk(KERN_WARNING "pci_bios != NULL but init() is!\n"); 123 printk(KERN_WARNING "pci_bios != NULL but init() is!\n");
125 } 124 }
125
126 /* Set the CLS for PCI as early as possible. */
127 pci_cache_line_size = pci_dfl_cache_line_size;
128
126 return 0; 129 return 0;
127} 130}
128 131
@@ -171,7 +174,7 @@ void pcibios_set_master(struct pci_dev *dev)
171 ** upper byte is PCI_LATENCY_TIMER. 174 ** upper byte is PCI_LATENCY_TIMER.
172 */ 175 */
173 pci_write_config_word(dev, PCI_CACHE_LINE_SIZE, 176 pci_write_config_word(dev, PCI_CACHE_LINE_SIZE,
174 (0x80 << 8) | (L1_CACHE_BYTES / sizeof(u32))); 177 (0x80 << 8) | pci_cache_line_size);
175} 178}
176 179
177 180
diff --git a/arch/parisc/kernel/signal.c b/arch/parisc/kernel/signal.c
index fb37ac52e46c..35c827e94e31 100644
--- a/arch/parisc/kernel/signal.c
+++ b/arch/parisc/kernel/signal.c
@@ -468,7 +468,9 @@ handle_signal(unsigned long sig, siginfo_t *info, struct k_sigaction *ka,
468 recalc_sigpending(); 468 recalc_sigpending();
469 spin_unlock_irq(&current->sighand->siglock); 469 spin_unlock_irq(&current->sighand->siglock);
470 470
471 tracehook_signal_handler(sig, info, ka, regs, 0); 471 tracehook_signal_handler(sig, info, ka, regs,
472 test_thread_flag(TIF_SINGLESTEP) ||
473 test_thread_flag(TIF_BLOCKSTEP));
472 474
473 return 1; 475 return 1;
474} 476}
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper
index 390512ae7f86..f4594ed09a20 100755
--- a/arch/powerpc/boot/wrapper
+++ b/arch/powerpc/boot/wrapper
@@ -43,6 +43,9 @@ gzip=.gz
43# cross-compilation prefix 43# cross-compilation prefix
44CROSS= 44CROSS=
45 45
46# mkimage wrapper script
47MKIMAGE=$srctree/scripts/mkuboot.sh
48
46# directory for object and other files used by this script 49# directory for object and other files used by this script
47object=arch/powerpc/boot 50object=arch/powerpc/boot
48objbin=$object 51objbin=$object
@@ -267,7 +270,7 @@ membase=`${CROSS}objdump -p "$kernel" | grep -m 1 LOAD | awk '{print $7}'`
267case "$platform" in 270case "$platform" in
268uboot) 271uboot)
269 rm -f "$ofile" 272 rm -f "$ofile"
270 mkimage -A ppc -O linux -T kernel -C gzip -a $membase -e $membase \ 273 ${MKIMAGE} -A ppc -O linux -T kernel -C gzip -a $membase -e $membase \
271 $uboot_version -d "$vmz" "$ofile" 274 $uboot_version -d "$vmz" "$ofile"
272 if [ -z "$cacheit" ]; then 275 if [ -z "$cacheit" ]; then
273 rm -f "$vmz" 276 rm -f "$vmz"
@@ -327,7 +330,7 @@ coff)
327 ;; 330 ;;
328cuboot*) 331cuboot*)
329 gzip -f -9 "$ofile" 332 gzip -f -9 "$ofile"
330 mkimage -A ppc -O linux -T kernel -C gzip -a "$base" -e "$entry" \ 333 ${MKIMAGE} -A ppc -O linux -T kernel -C gzip -a "$base" -e "$entry" \
331 $uboot_version -d "$ofile".gz "$ofile" 334 $uboot_version -d "$ofile".gz "$ofile"
332 ;; 335 ;;
333treeboot*) 336treeboot*)
diff --git a/arch/powerpc/configs/40x/acadia_defconfig b/arch/powerpc/configs/40x/acadia_defconfig
index 173a5bb77ca1..8e95f8d227b9 100644
--- a/arch/powerpc/configs/40x/acadia_defconfig
+++ b/arch/powerpc/configs/40x/acadia_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.29-rc2 3# Linux kernel version: 2.6.33-rc1
4# Tue Jan 20 08:17:46 2009 4# Mon Jan 4 15:33:07 2010
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#
11# CONFIG_6xx is not set 11# CONFIG_PPC_BOOK3S_32 is not set
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
14CONFIG_40x=y 14CONFIG_40x=y
@@ -16,6 +16,7 @@ CONFIG_40x=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_4xx=y 17CONFIG_4xx=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
@@ -27,15 +28,18 @@ CONFIG_GENERIC_TIME=y
27CONFIG_GENERIC_TIME_VSYSCALL=y 28CONFIG_GENERIC_TIME_VSYSCALL=y
28CONFIG_GENERIC_CLOCKEVENTS=y 29CONFIG_GENERIC_CLOCKEVENTS=y
29CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
31CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
30# 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
31CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_NR_IRQS=512
32CONFIG_STACKTRACE_SUPPORT=y 36CONFIG_STACKTRACE_SUPPORT=y
33CONFIG_HAVE_LATENCYTOP_SUPPORT=y 37CONFIG_HAVE_LATENCYTOP_SUPPORT=y
38CONFIG_TRACE_IRQFLAGS_SUPPORT=y
34CONFIG_LOCKDEP_SUPPORT=y 39CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 40CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 41CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 42CONFIG_GENERIC_HWEIGHT=y
38CONFIG_GENERIC_CALIBRATE_DELAY=y
39CONFIG_GENERIC_FIND_NEXT_BIT=y 43CONFIG_GENERIC_FIND_NEXT_BIT=y
40# CONFIG_ARCH_NO_VIRT_TO_BUS is not set 44# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
41CONFIG_PPC=y 45CONFIG_PPC=y
@@ -49,11 +53,15 @@ CONFIG_PPC_UDBG_16550=y
49# CONFIG_GENERIC_TBSYNC is not set 53# CONFIG_GENERIC_TBSYNC is not set
50CONFIG_AUDIT_ARCH=y 54CONFIG_AUDIT_ARCH=y
51CONFIG_GENERIC_BUG=y 55CONFIG_GENERIC_BUG=y
56CONFIG_DTC=y
52# CONFIG_DEFAULT_UIMAGE is not set 57# CONFIG_DEFAULT_UIMAGE is not set
58CONFIG_ARCH_HIBERNATION_POSSIBLE=y
53CONFIG_PPC_DCR_NATIVE=y 59CONFIG_PPC_DCR_NATIVE=y
54# CONFIG_PPC_DCR_MMIO is not set 60# CONFIG_PPC_DCR_MMIO is not set
55CONFIG_PPC_DCR=y 61CONFIG_PPC_DCR=y
62CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
56CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 63CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
64CONFIG_CONSTRUCTORS=y
57 65
58# 66#
59# General setup 67# General setup
@@ -67,9 +75,21 @@ CONFIG_SWAP=y
67CONFIG_SYSVIPC=y 75CONFIG_SYSVIPC=y
68CONFIG_SYSVIPC_SYSCTL=y 76CONFIG_SYSVIPC_SYSCTL=y
69CONFIG_POSIX_MQUEUE=y 77CONFIG_POSIX_MQUEUE=y
78CONFIG_POSIX_MQUEUE_SYSCTL=y
70# CONFIG_BSD_PROCESS_ACCT is not set 79# CONFIG_BSD_PROCESS_ACCT is not set
71# CONFIG_TASKSTATS is not set 80# CONFIG_TASKSTATS is not set
72# CONFIG_AUDIT is not set 81# CONFIG_AUDIT is not set
82
83#
84# RCU Subsystem
85#
86CONFIG_TREE_RCU=y
87# CONFIG_TREE_PREEMPT_RCU is not set
88# CONFIG_TINY_RCU is not set
89# CONFIG_RCU_TRACE is not set
90CONFIG_RCU_FANOUT=32
91# CONFIG_RCU_FANOUT_EXACT is not set
92# CONFIG_TREE_RCU_TRACE is not set
73# CONFIG_IKCONFIG is not set 93# CONFIG_IKCONFIG is not set
74CONFIG_LOG_BUF_SHIFT=14 94CONFIG_LOG_BUF_SHIFT=14
75CONFIG_GROUP_SCHED=y 95CONFIG_GROUP_SCHED=y
@@ -84,31 +104,40 @@ CONFIG_SYSFS_DEPRECATED_V2=y
84# CONFIG_NAMESPACES is not set 104# CONFIG_NAMESPACES is not set
85CONFIG_BLK_DEV_INITRD=y 105CONFIG_BLK_DEV_INITRD=y
86CONFIG_INITRAMFS_SOURCE="" 106CONFIG_INITRAMFS_SOURCE=""
107CONFIG_RD_GZIP=y
108# CONFIG_RD_BZIP2 is not set
109# CONFIG_RD_LZMA is not set
87# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 110# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
88CONFIG_SYSCTL=y 111CONFIG_SYSCTL=y
112CONFIG_ANON_INODES=y
89CONFIG_EMBEDDED=y 113CONFIG_EMBEDDED=y
90CONFIG_SYSCTL_SYSCALL=y 114CONFIG_SYSCTL_SYSCALL=y
91CONFIG_KALLSYMS=y 115CONFIG_KALLSYMS=y
92CONFIG_KALLSYMS_ALL=y 116CONFIG_KALLSYMS_ALL=y
93CONFIG_KALLSYMS_STRIP_GENERATED=y
94CONFIG_KALLSYMS_EXTRA_PASS=y 117CONFIG_KALLSYMS_EXTRA_PASS=y
95CONFIG_HOTPLUG=y 118CONFIG_HOTPLUG=y
96CONFIG_PRINTK=y 119CONFIG_PRINTK=y
97CONFIG_BUG=y 120CONFIG_BUG=y
98CONFIG_ELF_CORE=y 121CONFIG_ELF_CORE=y
99CONFIG_COMPAT_BRK=y
100CONFIG_BASE_FULL=y 122CONFIG_BASE_FULL=y
101CONFIG_FUTEX=y 123CONFIG_FUTEX=y
102CONFIG_ANON_INODES=y
103CONFIG_EPOLL=y 124CONFIG_EPOLL=y
104CONFIG_SIGNALFD=y 125CONFIG_SIGNALFD=y
105CONFIG_TIMERFD=y 126CONFIG_TIMERFD=y
106CONFIG_EVENTFD=y 127CONFIG_EVENTFD=y
107CONFIG_SHMEM=y 128CONFIG_SHMEM=y
108CONFIG_AIO=y 129CONFIG_AIO=y
130CONFIG_HAVE_PERF_EVENTS=y
131
132#
133# Kernel Performance Events And Counters
134#
135# CONFIG_PERF_EVENTS is not set
136# CONFIG_PERF_COUNTERS is not set
109CONFIG_VM_EVENT_COUNTERS=y 137CONFIG_VM_EVENT_COUNTERS=y
110CONFIG_PCI_QUIRKS=y 138CONFIG_PCI_QUIRKS=y
111CONFIG_SLUB_DEBUG=y 139CONFIG_SLUB_DEBUG=y
140CONFIG_COMPAT_BRK=y
112# CONFIG_SLAB is not set 141# CONFIG_SLAB is not set
113CONFIG_SLUB=y 142CONFIG_SLUB=y
114# CONFIG_SLOB is not set 143# CONFIG_SLOB is not set
@@ -120,6 +149,14 @@ CONFIG_HAVE_IOREMAP_PROT=y
120CONFIG_HAVE_KPROBES=y 149CONFIG_HAVE_KPROBES=y
121CONFIG_HAVE_KRETPROBES=y 150CONFIG_HAVE_KRETPROBES=y
122CONFIG_HAVE_ARCH_TRACEHOOK=y 151CONFIG_HAVE_ARCH_TRACEHOOK=y
152CONFIG_HAVE_DMA_ATTRS=y
153CONFIG_HAVE_DMA_API_DEBUG=y
154
155#
156# GCOV-based kernel profiling
157#
158# CONFIG_GCOV_KERNEL is not set
159# CONFIG_SLOW_WORK is not set
123# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 160# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
124CONFIG_SLABINFO=y 161CONFIG_SLABINFO=y
125CONFIG_RT_MUTEXES=y 162CONFIG_RT_MUTEXES=y
@@ -131,8 +168,7 @@ CONFIG_MODULE_UNLOAD=y
131# CONFIG_MODVERSIONS is not set 168# CONFIG_MODVERSIONS is not set
132# CONFIG_MODULE_SRCVERSION_ALL is not set 169# CONFIG_MODULE_SRCVERSION_ALL is not set
133CONFIG_BLOCK=y 170CONFIG_BLOCK=y
134CONFIG_LBD=y 171CONFIG_LBDAF=y
135# CONFIG_BLK_DEV_IO_TRACE is not set
136# CONFIG_BLK_DEV_BSG is not set 172# CONFIG_BLK_DEV_BSG is not set
137# CONFIG_BLK_DEV_INTEGRITY is not set 173# CONFIG_BLK_DEV_INTEGRITY is not set
138 174
@@ -140,19 +176,41 @@ CONFIG_LBD=y
140# IO Schedulers 176# IO Schedulers
141# 177#
142CONFIG_IOSCHED_NOOP=y 178CONFIG_IOSCHED_NOOP=y
143CONFIG_IOSCHED_AS=y
144CONFIG_IOSCHED_DEADLINE=y 179CONFIG_IOSCHED_DEADLINE=y
145CONFIG_IOSCHED_CFQ=y 180CONFIG_IOSCHED_CFQ=y
146CONFIG_DEFAULT_AS=y
147# CONFIG_DEFAULT_DEADLINE is not set 181# CONFIG_DEFAULT_DEADLINE is not set
148# CONFIG_DEFAULT_CFQ is not set 182CONFIG_DEFAULT_CFQ=y
149# CONFIG_DEFAULT_NOOP is not set 183# CONFIG_DEFAULT_NOOP is not set
150CONFIG_DEFAULT_IOSCHED="anticipatory" 184CONFIG_DEFAULT_IOSCHED="cfq"
151CONFIG_CLASSIC_RCU=y 185# CONFIG_INLINE_SPIN_TRYLOCK is not set
152# CONFIG_TREE_RCU is not set 186# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
153# CONFIG_PREEMPT_RCU is not set 187# CONFIG_INLINE_SPIN_LOCK is not set
154# CONFIG_TREE_RCU_TRACE is not set 188# CONFIG_INLINE_SPIN_LOCK_BH is not set
155# CONFIG_PREEMPT_RCU_TRACE is not set 189# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
191CONFIG_INLINE_SPIN_UNLOCK=y
192# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
193CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
194# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
195# CONFIG_INLINE_READ_TRYLOCK is not set
196# CONFIG_INLINE_READ_LOCK is not set
197# CONFIG_INLINE_READ_LOCK_BH is not set
198# CONFIG_INLINE_READ_LOCK_IRQ is not set
199# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
200CONFIG_INLINE_READ_UNLOCK=y
201# CONFIG_INLINE_READ_UNLOCK_BH is not set
202CONFIG_INLINE_READ_UNLOCK_IRQ=y
203# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_WRITE_TRYLOCK is not set
205# CONFIG_INLINE_WRITE_LOCK is not set
206# CONFIG_INLINE_WRITE_LOCK_BH is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
209CONFIG_INLINE_WRITE_UNLOCK=y
210# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
211CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
212# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
213# CONFIG_MUTEX_SPIN_ON_OWNER is not set
156# CONFIG_FREEZER is not set 214# CONFIG_FREEZER is not set
157# CONFIG_PPC4xx_PCI_EXPRESS is not set 215# CONFIG_PPC4xx_PCI_EXPRESS is not set
158 216
@@ -166,6 +224,7 @@ CONFIG_CLASSIC_RCU=y
166CONFIG_ACADIA=y 224CONFIG_ACADIA=y
167# CONFIG_EP405 is not set 225# CONFIG_EP405 is not set
168# CONFIG_HCU4 is not set 226# CONFIG_HCU4 is not set
227# CONFIG_HOTFOOT is not set
169# CONFIG_KILAUEA is not set 228# CONFIG_KILAUEA is not set
170# CONFIG_MAKALU is not set 229# CONFIG_MAKALU is not set
171# CONFIG_WALNUT is not set 230# CONFIG_WALNUT is not set
@@ -208,10 +267,12 @@ CONFIG_BINFMT_ELF=y
208# CONFIG_BINFMT_MISC is not set 267# CONFIG_BINFMT_MISC is not set
209# CONFIG_MATH_EMULATION is not set 268# CONFIG_MATH_EMULATION is not set
210# CONFIG_IOMMU_HELPER is not set 269# CONFIG_IOMMU_HELPER is not set
211CONFIG_PPC_NEED_DMA_SYNC_OPS=y 270# CONFIG_SWIOTLB is not set
212CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 271CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
213CONFIG_ARCH_HAS_WALK_MEMORY=y 272CONFIG_ARCH_HAS_WALK_MEMORY=y
214CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 273CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
274CONFIG_SPARSE_IRQ=y
275CONFIG_MAX_ACTIVE_REGIONS=32
215CONFIG_ARCH_FLATMEM_ENABLE=y 276CONFIG_ARCH_FLATMEM_ENABLE=y
216CONFIG_ARCH_POPULATES_NODE_MAP=y 277CONFIG_ARCH_POPULATES_NODE_MAP=y
217CONFIG_SELECT_MEMORY_MODEL=y 278CONFIG_SELECT_MEMORY_MODEL=y
@@ -227,10 +288,12 @@ CONFIG_MIGRATION=y
227CONFIG_ZONE_DMA_FLAG=1 288CONFIG_ZONE_DMA_FLAG=1
228CONFIG_BOUNCE=y 289CONFIG_BOUNCE=y
229CONFIG_VIRT_TO_BUS=y 290CONFIG_VIRT_TO_BUS=y
230CONFIG_UNEVICTABLE_LRU=y 291# CONFIG_KSM is not set
292CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
231CONFIG_PPC_4K_PAGES=y 293CONFIG_PPC_4K_PAGES=y
232# CONFIG_PPC_16K_PAGES is not set 294# CONFIG_PPC_16K_PAGES is not set
233# CONFIG_PPC_64K_PAGES is not set 295# CONFIG_PPC_64K_PAGES is not set
296# CONFIG_PPC_256K_PAGES is not set
234CONFIG_FORCE_MAX_ZONEORDER=11 297CONFIG_FORCE_MAX_ZONEORDER=11
235CONFIG_PROC_DEVICETREE=y 298CONFIG_PROC_DEVICETREE=y
236# CONFIG_CMDLINE_BOOL is not set 299# CONFIG_CMDLINE_BOOL is not set
@@ -255,6 +318,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
255# CONFIG_PCI_LEGACY is not set 318# CONFIG_PCI_LEGACY is not set
256# CONFIG_PCI_DEBUG is not set 319# CONFIG_PCI_DEBUG is not set
257# CONFIG_PCI_STUB is not set 320# CONFIG_PCI_STUB is not set
321# CONFIG_PCI_IOV is not set
258# CONFIG_PCCARD is not set 322# CONFIG_PCCARD is not set
259# CONFIG_HOTPLUG_PCI is not set 323# CONFIG_HOTPLUG_PCI is not set
260# CONFIG_HAS_RAPIDIO is not set 324# CONFIG_HAS_RAPIDIO is not set
@@ -272,14 +336,12 @@ CONFIG_PAGE_OFFSET=0xc0000000
272CONFIG_KERNEL_START=0xc0000000 336CONFIG_KERNEL_START=0xc0000000
273CONFIG_PHYSICAL_START=0x00000000 337CONFIG_PHYSICAL_START=0x00000000
274CONFIG_TASK_SIZE=0xc0000000 338CONFIG_TASK_SIZE=0xc0000000
275CONFIG_CONSISTENT_START=0xff100000
276CONFIG_CONSISTENT_SIZE=0x00200000 339CONFIG_CONSISTENT_SIZE=0x00200000
277CONFIG_NET=y 340CONFIG_NET=y
278 341
279# 342#
280# Networking options 343# Networking options
281# 344#
282CONFIG_COMPAT_NET_DEV_OPS=y
283CONFIG_PACKET=y 345CONFIG_PACKET=y
284# CONFIG_PACKET_MMAP is not set 346# CONFIG_PACKET_MMAP is not set
285CONFIG_UNIX=y 347CONFIG_UNIX=y
@@ -316,6 +378,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
316# CONFIG_NETFILTER is not set 378# CONFIG_NETFILTER is not set
317# CONFIG_IP_DCCP is not set 379# CONFIG_IP_DCCP is not set
318# CONFIG_IP_SCTP is not set 380# CONFIG_IP_SCTP is not set
381# CONFIG_RDS is not set
319# CONFIG_TIPC is not set 382# CONFIG_TIPC is not set
320# CONFIG_ATM is not set 383# CONFIG_ATM is not set
321# CONFIG_BRIDGE is not set 384# CONFIG_BRIDGE is not set
@@ -329,6 +392,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
329# CONFIG_LAPB is not set 392# CONFIG_LAPB is not set
330# CONFIG_ECONET is not set 393# CONFIG_ECONET is not set
331# CONFIG_WAN_ROUTER is not set 394# CONFIG_WAN_ROUTER is not set
395# CONFIG_PHONET is not set
396# CONFIG_IEEE802154 is not set
332# CONFIG_NET_SCHED is not set 397# CONFIG_NET_SCHED is not set
333# CONFIG_DCB is not set 398# CONFIG_DCB is not set
334 399
@@ -341,8 +406,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
341# CONFIG_IRDA is not set 406# CONFIG_IRDA is not set
342# CONFIG_BT is not set 407# CONFIG_BT is not set
343# CONFIG_AF_RXRPC is not set 408# CONFIG_AF_RXRPC is not set
344# CONFIG_PHONET is not set 409CONFIG_WIRELESS=y
345# CONFIG_WIRELESS is not set 410# CONFIG_CFG80211 is not set
411# CONFIG_LIB80211 is not set
412
413#
414# CFG80211 needs to be enabled for MAC80211
415#
346# CONFIG_WIMAX is not set 416# CONFIG_WIMAX is not set
347# CONFIG_RFKILL is not set 417# CONFIG_RFKILL is not set
348# CONFIG_NET_9P is not set 418# CONFIG_NET_9P is not set
@@ -355,6 +425,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
355# Generic Driver Options 425# Generic Driver Options
356# 426#
357CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 427CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
428# CONFIG_DEVTMPFS is not set
358CONFIG_STANDALONE=y 429CONFIG_STANDALONE=y
359CONFIG_PREVENT_FIRMWARE_BUILD=y 430CONFIG_PREVENT_FIRMWARE_BUILD=y
360CONFIG_FW_LOADER=y 431CONFIG_FW_LOADER=y
@@ -367,9 +438,9 @@ CONFIG_CONNECTOR=y
367CONFIG_PROC_EVENTS=y 438CONFIG_PROC_EVENTS=y
368CONFIG_MTD=y 439CONFIG_MTD=y
369# CONFIG_MTD_DEBUG is not set 440# CONFIG_MTD_DEBUG is not set
441# CONFIG_MTD_TESTS is not set
370# CONFIG_MTD_CONCAT is not set 442# CONFIG_MTD_CONCAT is not set
371CONFIG_MTD_PARTITIONS=y 443CONFIG_MTD_PARTITIONS=y
372# CONFIG_MTD_TESTS is not set
373# CONFIG_MTD_REDBOOT_PARTS is not set 444# CONFIG_MTD_REDBOOT_PARTS is not set
374CONFIG_MTD_CMDLINE_PARTS=y 445CONFIG_MTD_CMDLINE_PARTS=y
375CONFIG_MTD_OF_PARTS=y 446CONFIG_MTD_OF_PARTS=y
@@ -445,7 +516,6 @@ CONFIG_MTD_PHYSMAP_OF=y
445# LPDDR flash memory drivers 516# LPDDR flash memory drivers
446# 517#
447# CONFIG_MTD_LPDDR is not set 518# CONFIG_MTD_LPDDR is not set
448# CONFIG_MTD_QINFO_PROBE is not set
449 519
450# 520#
451# UBI - Unsorted block images 521# UBI - Unsorted block images
@@ -461,6 +531,7 @@ CONFIG_BLK_DEV=y
461# CONFIG_BLK_DEV_UMEM is not set 531# CONFIG_BLK_DEV_UMEM is not set
462# CONFIG_BLK_DEV_COW_COMMON is not set 532# CONFIG_BLK_DEV_COW_COMMON is not set
463# CONFIG_BLK_DEV_LOOP is not set 533# CONFIG_BLK_DEV_LOOP is not set
534# CONFIG_BLK_DEV_DRBD is not set
464# CONFIG_BLK_DEV_NBD is not set 535# CONFIG_BLK_DEV_NBD is not set
465# CONFIG_BLK_DEV_SX8 is not set 536# CONFIG_BLK_DEV_SX8 is not set
466CONFIG_BLK_DEV_RAM=y 537CONFIG_BLK_DEV_RAM=y
@@ -491,7 +562,11 @@ CONFIG_HAVE_IDE=y
491# 562#
492 563
493# 564#
494# Enable only one of the two stacks, unless you know what you are doing 565# You can enable one or both FireWire driver stacks.
566#
567
568#
569# See the help texts for more information.
495# 570#
496# CONFIG_FIREWIRE is not set 571# CONFIG_FIREWIRE is not set
497# CONFIG_IEEE1394 is not set 572# CONFIG_IEEE1394 is not set
@@ -512,6 +587,8 @@ CONFIG_MII=y
512# CONFIG_SUNGEM is not set 587# CONFIG_SUNGEM is not set
513# CONFIG_CASSINI is not set 588# CONFIG_CASSINI is not set
514# CONFIG_NET_VENDOR_3COM is not set 589# CONFIG_NET_VENDOR_3COM is not set
590# CONFIG_ETHOC is not set
591# CONFIG_DNET is not set
515# CONFIG_NET_TULIP is not set 592# CONFIG_NET_TULIP is not set
516# CONFIG_HP100 is not set 593# CONFIG_HP100 is not set
517CONFIG_IBM_NEW_EMAC=y 594CONFIG_IBM_NEW_EMAC=y
@@ -530,17 +607,18 @@ CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT=y
530CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR=y 607CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR=y
531# CONFIG_NET_PCI is not set 608# CONFIG_NET_PCI is not set
532# CONFIG_B44 is not set 609# CONFIG_B44 is not set
610# CONFIG_KS8842 is not set
611# CONFIG_KS8851_MLL is not set
533# CONFIG_ATL2 is not set 612# CONFIG_ATL2 is not set
613# CONFIG_XILINX_EMACLITE is not set
534# CONFIG_NETDEV_1000 is not set 614# CONFIG_NETDEV_1000 is not set
535# CONFIG_NETDEV_10000 is not set 615# CONFIG_NETDEV_10000 is not set
536# CONFIG_TR is not set 616# CONFIG_TR is not set
537 617CONFIG_WLAN=y
538# 618# CONFIG_AIRO is not set
539# Wireless LAN 619# CONFIG_ATMEL is not set
540# 620# CONFIG_PRISM54 is not set
541# CONFIG_WLAN_PRE80211 is not set 621# CONFIG_HOSTAP is not set
542# CONFIG_WLAN_80211 is not set
543# CONFIG_IWLWIFI_LEDS is not set
544 622
545# 623#
546# Enable WiMAX (Networking options) to see the WiMAX drivers 624# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -553,6 +631,7 @@ CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR=y
553# CONFIG_NETCONSOLE is not set 631# CONFIG_NETCONSOLE is not set
554# CONFIG_NETPOLL is not set 632# CONFIG_NETPOLL is not set
555# CONFIG_NET_POLL_CONTROLLER is not set 633# CONFIG_NET_POLL_CONTROLLER is not set
634# CONFIG_VMXNET3 is not set
556# CONFIG_ISDN is not set 635# CONFIG_ISDN is not set
557# CONFIG_PHONE is not set 636# CONFIG_PHONE is not set
558 637
@@ -598,6 +677,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
598# CONFIG_SERIAL_JSM is not set 677# CONFIG_SERIAL_JSM is not set
599CONFIG_SERIAL_OF_PLATFORM=y 678CONFIG_SERIAL_OF_PLATFORM=y
600# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set 679# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
680# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
601CONFIG_UNIX98_PTYS=y 681CONFIG_UNIX98_PTYS=y
602# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 682# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
603CONFIG_LEGACY_PTYS=y 683CONFIG_LEGACY_PTYS=y
@@ -614,6 +694,11 @@ CONFIG_LEGACY_PTY_COUNT=256
614CONFIG_DEVPORT=y 694CONFIG_DEVPORT=y
615# CONFIG_I2C is not set 695# CONFIG_I2C is not set
616# CONFIG_SPI is not set 696# CONFIG_SPI is not set
697
698#
699# PPS support
700#
701# CONFIG_PPS is not set
617CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 702CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
618# CONFIG_GPIOLIB is not set 703# CONFIG_GPIOLIB is not set
619# CONFIG_W1 is not set 704# CONFIG_W1 is not set
@@ -636,27 +721,13 @@ CONFIG_SSB_POSSIBLE=y
636# CONFIG_HTC_PASIC3 is not set 721# CONFIG_HTC_PASIC3 is not set
637# CONFIG_MFD_TMIO is not set 722# CONFIG_MFD_TMIO is not set
638# CONFIG_REGULATOR is not set 723# CONFIG_REGULATOR is not set
639 724# CONFIG_MEDIA_SUPPORT is not set
640#
641# Multimedia devices
642#
643
644#
645# Multimedia core support
646#
647# CONFIG_VIDEO_DEV is not set
648# CONFIG_DVB_CORE is not set
649# CONFIG_VIDEO_MEDIA is not set
650
651#
652# Multimedia drivers
653#
654# CONFIG_DAB is not set
655 725
656# 726#
657# Graphics support 727# Graphics support
658# 728#
659# CONFIG_AGP is not set 729# CONFIG_AGP is not set
730CONFIG_VGA_ARB=y
660# CONFIG_DRM is not set 731# CONFIG_DRM is not set
661# CONFIG_VGASTATE is not set 732# CONFIG_VGASTATE is not set
662# CONFIG_VIDEO_OUTPUT_CONTROL is not set 733# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -678,7 +749,12 @@ CONFIG_SSB_POSSIBLE=y
678# CONFIG_EDAC is not set 749# CONFIG_EDAC is not set
679# CONFIG_RTC_CLASS is not set 750# CONFIG_RTC_CLASS is not set
680# CONFIG_DMADEVICES is not set 751# CONFIG_DMADEVICES is not set
752# CONFIG_AUXDISPLAY is not set
681# CONFIG_UIO is not set 753# CONFIG_UIO is not set
754
755#
756# TI VLYNQ
757#
682# CONFIG_STAGING is not set 758# CONFIG_STAGING is not set
683 759
684# 760#
@@ -689,14 +765,17 @@ CONFIG_EXT2_FS=y
689# CONFIG_EXT2_FS_XIP is not set 765# CONFIG_EXT2_FS_XIP is not set
690# CONFIG_EXT3_FS is not set 766# CONFIG_EXT3_FS is not set
691# CONFIG_EXT4_FS is not set 767# CONFIG_EXT4_FS is not set
768CONFIG_EXT4_USE_FOR_EXT23=y
692# CONFIG_REISERFS_FS is not set 769# CONFIG_REISERFS_FS is not set
693# CONFIG_JFS_FS is not set 770# CONFIG_JFS_FS is not set
694# CONFIG_FS_POSIX_ACL is not set 771# CONFIG_FS_POSIX_ACL is not set
695CONFIG_FILE_LOCKING=y
696# CONFIG_XFS_FS is not set 772# CONFIG_XFS_FS is not set
697# CONFIG_GFS2_FS is not set 773# CONFIG_GFS2_FS is not set
698# CONFIG_OCFS2_FS is not set 774# CONFIG_OCFS2_FS is not set
699# CONFIG_BTRFS_FS is not set 775# CONFIG_BTRFS_FS is not set
776# CONFIG_NILFS2_FS is not set
777CONFIG_FILE_LOCKING=y
778CONFIG_FSNOTIFY=y
700CONFIG_DNOTIFY=y 779CONFIG_DNOTIFY=y
701CONFIG_INOTIFY=y 780CONFIG_INOTIFY=y
702CONFIG_INOTIFY_USER=y 781CONFIG_INOTIFY_USER=y
@@ -706,6 +785,11 @@ CONFIG_INOTIFY_USER=y
706# CONFIG_FUSE_FS is not set 785# CONFIG_FUSE_FS is not set
707 786
708# 787#
788# Caches
789#
790# CONFIG_FSCACHE is not set
791
792#
709# CD-ROM/DVD Filesystems 793# CD-ROM/DVD Filesystems
710# 794#
711# CONFIG_ISO9660_FS is not set 795# CONFIG_ISO9660_FS is not set
@@ -760,7 +844,6 @@ CONFIG_LOCKD=y
760CONFIG_LOCKD_V4=y 844CONFIG_LOCKD_V4=y
761CONFIG_NFS_COMMON=y 845CONFIG_NFS_COMMON=y
762CONFIG_SUNRPC=y 846CONFIG_SUNRPC=y
763# CONFIG_SUNRPC_REGISTER_V4 is not set
764# CONFIG_RPCSEC_GSS_KRB5 is not set 847# CONFIG_RPCSEC_GSS_KRB5 is not set
765# CONFIG_RPCSEC_GSS_SPKM3 is not set 848# CONFIG_RPCSEC_GSS_SPKM3 is not set
766# CONFIG_SMB_FS is not set 849# CONFIG_SMB_FS is not set
@@ -776,6 +859,7 @@ CONFIG_SUNRPC=y
776CONFIG_MSDOS_PARTITION=y 859CONFIG_MSDOS_PARTITION=y
777# CONFIG_NLS is not set 860# CONFIG_NLS is not set
778# CONFIG_DLM is not set 861# CONFIG_DLM is not set
862# CONFIG_BINARY_PRINTF is not set
779 863
780# 864#
781# Library routines 865# Library routines
@@ -790,11 +874,13 @@ CONFIG_CRC32=y
790# CONFIG_CRC7 is not set 874# CONFIG_CRC7 is not set
791# CONFIG_LIBCRC32C is not set 875# CONFIG_LIBCRC32C is not set
792CONFIG_ZLIB_INFLATE=y 876CONFIG_ZLIB_INFLATE=y
793CONFIG_PLIST=y 877CONFIG_DECOMPRESS_GZIP=y
794CONFIG_HAS_IOMEM=y 878CONFIG_HAS_IOMEM=y
795CONFIG_HAS_IOPORT=y 879CONFIG_HAS_IOPORT=y
796CONFIG_HAS_DMA=y 880CONFIG_HAS_DMA=y
797CONFIG_HAVE_LMB=y 881CONFIG_HAVE_LMB=y
882CONFIG_NLATTR=y
883CONFIG_GENERIC_ATOMIC64=y
798 884
799# 885#
800# Kernel hacking 886# Kernel hacking
@@ -804,6 +890,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
804CONFIG_ENABLE_MUST_CHECK=y 890CONFIG_ENABLE_MUST_CHECK=y
805CONFIG_FRAME_WARN=1024 891CONFIG_FRAME_WARN=1024
806CONFIG_MAGIC_SYSRQ=y 892CONFIG_MAGIC_SYSRQ=y
893# CONFIG_STRIP_ASM_SYMS is not set
807# CONFIG_UNUSED_SYMBOLS is not set 894# CONFIG_UNUSED_SYMBOLS is not set
808CONFIG_DEBUG_FS=y 895CONFIG_DEBUG_FS=y
809# CONFIG_HEADERS_CHECK is not set 896# CONFIG_HEADERS_CHECK is not set
@@ -812,16 +899,23 @@ CONFIG_DEBUG_KERNEL=y
812CONFIG_DETECT_SOFTLOCKUP=y 899CONFIG_DETECT_SOFTLOCKUP=y
813# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 900# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
814CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 901CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
902CONFIG_DETECT_HUNG_TASK=y
903# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
904CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
815CONFIG_SCHED_DEBUG=y 905CONFIG_SCHED_DEBUG=y
816# CONFIG_SCHEDSTATS is not set 906# CONFIG_SCHEDSTATS is not set
817# CONFIG_TIMER_STATS is not set 907# CONFIG_TIMER_STATS is not set
818# CONFIG_DEBUG_OBJECTS is not set 908# CONFIG_DEBUG_OBJECTS is not set
819# CONFIG_SLUB_DEBUG_ON is not set 909# CONFIG_SLUB_DEBUG_ON is not set
820# CONFIG_SLUB_STATS is not set 910# CONFIG_SLUB_STATS is not set
911# CONFIG_DEBUG_KMEMLEAK is not set
821# CONFIG_DEBUG_RT_MUTEXES is not set 912# CONFIG_DEBUG_RT_MUTEXES is not set
822# CONFIG_RT_MUTEX_TESTER is not set 913# CONFIG_RT_MUTEX_TESTER is not set
823# CONFIG_DEBUG_SPINLOCK is not set 914# CONFIG_DEBUG_SPINLOCK is not set
824# CONFIG_DEBUG_MUTEXES is not set 915# CONFIG_DEBUG_MUTEXES is not set
916# CONFIG_DEBUG_LOCK_ALLOC is not set
917# CONFIG_PROVE_LOCKING is not set
918# CONFIG_LOCK_STAT is not set
825# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 919# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
826# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 920# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
827# CONFIG_DEBUG_KOBJECT is not set 921# CONFIG_DEBUG_KOBJECT is not set
@@ -833,35 +927,45 @@ CONFIG_DEBUG_BUGVERBOSE=y
833# CONFIG_DEBUG_LIST is not set 927# CONFIG_DEBUG_LIST is not set
834# CONFIG_DEBUG_SG is not set 928# CONFIG_DEBUG_SG is not set
835# CONFIG_DEBUG_NOTIFIERS is not set 929# CONFIG_DEBUG_NOTIFIERS is not set
836# CONFIG_BOOT_PRINTK_DELAY is not set 930# CONFIG_DEBUG_CREDENTIALS is not set
837# CONFIG_RCU_TORTURE_TEST is not set 931# CONFIG_RCU_TORTURE_TEST is not set
838# CONFIG_RCU_CPU_STALL_DETECTOR is not set 932# CONFIG_RCU_CPU_STALL_DETECTOR is not set
839# CONFIG_BACKTRACE_SELF_TEST is not set 933# CONFIG_BACKTRACE_SELF_TEST is not set
840# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 934# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
935# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
841# CONFIG_FAULT_INJECTION is not set 936# CONFIG_FAULT_INJECTION is not set
842# CONFIG_LATENCYTOP is not set 937# CONFIG_LATENCYTOP is not set
843CONFIG_SYSCTL_SYSCALL_CHECK=y 938CONFIG_SYSCTL_SYSCALL_CHECK=y
939# CONFIG_DEBUG_PAGEALLOC is not set
844CONFIG_HAVE_FUNCTION_TRACER=y 940CONFIG_HAVE_FUNCTION_TRACER=y
941CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
845CONFIG_HAVE_DYNAMIC_FTRACE=y 942CONFIG_HAVE_DYNAMIC_FTRACE=y
846CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 943CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
847 944CONFIG_TRACING_SUPPORT=y
848# 945CONFIG_FTRACE=y
849# Tracers
850#
851# CONFIG_FUNCTION_TRACER is not set 946# CONFIG_FUNCTION_TRACER is not set
947# CONFIG_IRQSOFF_TRACER is not set
852# CONFIG_SCHED_TRACER is not set 948# CONFIG_SCHED_TRACER is not set
853# CONFIG_CONTEXT_SWITCH_TRACER is not set 949# CONFIG_ENABLE_DEFAULT_TRACERS is not set
854# CONFIG_BOOT_TRACER is not set 950# CONFIG_BOOT_TRACER is not set
855# CONFIG_TRACE_BRANCH_PROFILING is not set 951CONFIG_BRANCH_PROFILE_NONE=y
952# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
953# CONFIG_PROFILE_ALL_BRANCHES is not set
856# CONFIG_STACK_TRACER is not set 954# CONFIG_STACK_TRACER is not set
857# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 955# CONFIG_KMEMTRACE is not set
956# CONFIG_WORKQUEUE_TRACER is not set
957# CONFIG_BLK_DEV_IO_TRACE is not set
958# CONFIG_DYNAMIC_DEBUG is not set
959# CONFIG_DMA_API_DEBUG is not set
858# CONFIG_SAMPLES is not set 960# CONFIG_SAMPLES is not set
859CONFIG_HAVE_ARCH_KGDB=y 961CONFIG_HAVE_ARCH_KGDB=y
860# CONFIG_KGDB is not set 962# CONFIG_KGDB is not set
963# CONFIG_PPC_DISABLE_WERROR is not set
964CONFIG_PPC_WERROR=y
861CONFIG_PRINT_STACK_DEPTH=64 965CONFIG_PRINT_STACK_DEPTH=64
862# CONFIG_DEBUG_STACKOVERFLOW is not set 966# CONFIG_DEBUG_STACKOVERFLOW is not set
863# CONFIG_DEBUG_STACK_USAGE is not set 967# CONFIG_DEBUG_STACK_USAGE is not set
864# CONFIG_DEBUG_PAGEALLOC is not set 968# CONFIG_PPC_EMULATED_STATS is not set
865# CONFIG_CODE_PATCHING_SELFTEST is not set 969# CONFIG_CODE_PATCHING_SELFTEST is not set
866# CONFIG_FTR_FIXUP_SELFTEST is not set 970# CONFIG_FTR_FIXUP_SELFTEST is not set
867# CONFIG_MSI_BITMAP_SELFTEST is not set 971# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -877,13 +981,16 @@ CONFIG_PRINT_STACK_DEPTH=64
877# CONFIG_KEYS is not set 981# CONFIG_KEYS is not set
878# CONFIG_SECURITY is not set 982# CONFIG_SECURITY is not set
879# CONFIG_SECURITYFS is not set 983# CONFIG_SECURITYFS is not set
880# CONFIG_SECURITY_FILE_CAPABILITIES is not set 984# CONFIG_DEFAULT_SECURITY_SELINUX is not set
985# CONFIG_DEFAULT_SECURITY_SMACK is not set
986# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
987CONFIG_DEFAULT_SECURITY_DAC=y
988CONFIG_DEFAULT_SECURITY=""
881CONFIG_CRYPTO=y 989CONFIG_CRYPTO=y
882 990
883# 991#
884# Crypto core or helper 992# Crypto core or helper
885# 993#
886# CONFIG_CRYPTO_FIPS is not set
887CONFIG_CRYPTO_ALGAPI=y 994CONFIG_CRYPTO_ALGAPI=y
888CONFIG_CRYPTO_ALGAPI2=y 995CONFIG_CRYPTO_ALGAPI2=y
889CONFIG_CRYPTO_AEAD2=y 996CONFIG_CRYPTO_AEAD2=y
@@ -892,10 +999,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
892CONFIG_CRYPTO_HASH=y 999CONFIG_CRYPTO_HASH=y
893CONFIG_CRYPTO_HASH2=y 1000CONFIG_CRYPTO_HASH2=y
894CONFIG_CRYPTO_RNG2=y 1001CONFIG_CRYPTO_RNG2=y
1002CONFIG_CRYPTO_PCOMP=y
895CONFIG_CRYPTO_MANAGER=y 1003CONFIG_CRYPTO_MANAGER=y
896CONFIG_CRYPTO_MANAGER2=y 1004CONFIG_CRYPTO_MANAGER2=y
897# CONFIG_CRYPTO_GF128MUL is not set 1005# CONFIG_CRYPTO_GF128MUL is not set
898# CONFIG_CRYPTO_NULL is not set 1006# CONFIG_CRYPTO_NULL is not set
1007CONFIG_CRYPTO_WORKQUEUE=y
899# CONFIG_CRYPTO_CRYPTD is not set 1008# CONFIG_CRYPTO_CRYPTD is not set
900# CONFIG_CRYPTO_AUTHENC is not set 1009# CONFIG_CRYPTO_AUTHENC is not set
901# CONFIG_CRYPTO_TEST is not set 1010# CONFIG_CRYPTO_TEST is not set
@@ -923,11 +1032,13 @@ CONFIG_CRYPTO_PCBC=y
923# 1032#
924# CONFIG_CRYPTO_HMAC is not set 1033# CONFIG_CRYPTO_HMAC is not set
925# CONFIG_CRYPTO_XCBC is not set 1034# CONFIG_CRYPTO_XCBC is not set
1035# CONFIG_CRYPTO_VMAC is not set
926 1036
927# 1037#
928# Digest 1038# Digest
929# 1039#
930# CONFIG_CRYPTO_CRC32C is not set 1040# CONFIG_CRYPTO_CRC32C is not set
1041# CONFIG_CRYPTO_GHASH is not set
931# CONFIG_CRYPTO_MD4 is not set 1042# CONFIG_CRYPTO_MD4 is not set
932CONFIG_CRYPTO_MD5=y 1043CONFIG_CRYPTO_MD5=y
933# CONFIG_CRYPTO_MICHAEL_MIC is not set 1044# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -964,6 +1075,7 @@ CONFIG_CRYPTO_DES=y
964# Compression 1075# Compression
965# 1076#
966# CONFIG_CRYPTO_DEFLATE is not set 1077# CONFIG_CRYPTO_DEFLATE is not set
1078# CONFIG_CRYPTO_ZLIB is not set
967# CONFIG_CRYPTO_LZO is not set 1079# CONFIG_CRYPTO_LZO is not set
968 1080
969# 1081#
@@ -972,5 +1084,6 @@ CONFIG_CRYPTO_DES=y
972# CONFIG_CRYPTO_ANSI_CPRNG is not set 1084# CONFIG_CRYPTO_ANSI_CPRNG is not set
973CONFIG_CRYPTO_HW=y 1085CONFIG_CRYPTO_HW=y
974# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1086# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1087# CONFIG_CRYPTO_DEV_PPC4XX is not set
975# CONFIG_PPC_CLOCK is not set 1088# CONFIG_PPC_CLOCK is not set
976# CONFIG_VIRTUALIZATION is not set 1089# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/40x/ep405_defconfig b/arch/powerpc/configs/40x/ep405_defconfig
index e9b8495cde0c..918f23fd2b18 100644
--- a/arch/powerpc/configs/40x/ep405_defconfig
+++ b/arch/powerpc/configs/40x/ep405_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.29-rc2 3# Linux kernel version: 2.6.33-rc1
4# Tue Jan 20 08:17:48 2009 4# Mon Jan 4 15:37:34 2010
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#
11# CONFIG_6xx is not set 11# CONFIG_PPC_BOOK3S_32 is not set
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
14CONFIG_40x=y 14CONFIG_40x=y
@@ -16,6 +16,7 @@ CONFIG_40x=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_4xx=y 17CONFIG_4xx=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
@@ -27,15 +28,18 @@ CONFIG_GENERIC_TIME=y
27CONFIG_GENERIC_TIME_VSYSCALL=y 28CONFIG_GENERIC_TIME_VSYSCALL=y
28CONFIG_GENERIC_CLOCKEVENTS=y 29CONFIG_GENERIC_CLOCKEVENTS=y
29CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
31CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
30# 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
31CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_NR_IRQS=512
32CONFIG_STACKTRACE_SUPPORT=y 36CONFIG_STACKTRACE_SUPPORT=y
33CONFIG_HAVE_LATENCYTOP_SUPPORT=y 37CONFIG_HAVE_LATENCYTOP_SUPPORT=y
38CONFIG_TRACE_IRQFLAGS_SUPPORT=y
34CONFIG_LOCKDEP_SUPPORT=y 39CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 40CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 41CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 42CONFIG_GENERIC_HWEIGHT=y
38CONFIG_GENERIC_CALIBRATE_DELAY=y
39CONFIG_GENERIC_FIND_NEXT_BIT=y 43CONFIG_GENERIC_FIND_NEXT_BIT=y
40# CONFIG_ARCH_NO_VIRT_TO_BUS is not set 44# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
41CONFIG_PPC=y 45CONFIG_PPC=y
@@ -49,11 +53,15 @@ CONFIG_PPC_UDBG_16550=y
49# CONFIG_GENERIC_TBSYNC is not set 53# CONFIG_GENERIC_TBSYNC is not set
50CONFIG_AUDIT_ARCH=y 54CONFIG_AUDIT_ARCH=y
51CONFIG_GENERIC_BUG=y 55CONFIG_GENERIC_BUG=y
56CONFIG_DTC=y
52# CONFIG_DEFAULT_UIMAGE is not set 57# CONFIG_DEFAULT_UIMAGE is not set
58CONFIG_ARCH_HIBERNATION_POSSIBLE=y
53CONFIG_PPC_DCR_NATIVE=y 59CONFIG_PPC_DCR_NATIVE=y
54# CONFIG_PPC_DCR_MMIO is not set 60# CONFIG_PPC_DCR_MMIO is not set
55CONFIG_PPC_DCR=y 61CONFIG_PPC_DCR=y
62CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
56CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 63CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
64CONFIG_CONSTRUCTORS=y
57 65
58# 66#
59# General setup 67# General setup
@@ -67,9 +75,21 @@ CONFIG_SWAP=y
67CONFIG_SYSVIPC=y 75CONFIG_SYSVIPC=y
68CONFIG_SYSVIPC_SYSCTL=y 76CONFIG_SYSVIPC_SYSCTL=y
69CONFIG_POSIX_MQUEUE=y 77CONFIG_POSIX_MQUEUE=y
78CONFIG_POSIX_MQUEUE_SYSCTL=y
70# CONFIG_BSD_PROCESS_ACCT is not set 79# CONFIG_BSD_PROCESS_ACCT is not set
71# CONFIG_TASKSTATS is not set 80# CONFIG_TASKSTATS is not set
72# CONFIG_AUDIT is not set 81# CONFIG_AUDIT is not set
82
83#
84# RCU Subsystem
85#
86CONFIG_TREE_RCU=y
87# CONFIG_TREE_PREEMPT_RCU is not set
88# CONFIG_TINY_RCU is not set
89# CONFIG_RCU_TRACE is not set
90CONFIG_RCU_FANOUT=32
91# CONFIG_RCU_FANOUT_EXACT is not set
92# CONFIG_TREE_RCU_TRACE is not set
73# CONFIG_IKCONFIG is not set 93# CONFIG_IKCONFIG is not set
74CONFIG_LOG_BUF_SHIFT=14 94CONFIG_LOG_BUF_SHIFT=14
75CONFIG_GROUP_SCHED=y 95CONFIG_GROUP_SCHED=y
@@ -84,31 +104,40 @@ CONFIG_SYSFS_DEPRECATED_V2=y
84# CONFIG_NAMESPACES is not set 104# CONFIG_NAMESPACES is not set
85CONFIG_BLK_DEV_INITRD=y 105CONFIG_BLK_DEV_INITRD=y
86CONFIG_INITRAMFS_SOURCE="" 106CONFIG_INITRAMFS_SOURCE=""
107CONFIG_RD_GZIP=y
108# CONFIG_RD_BZIP2 is not set
109# CONFIG_RD_LZMA is not set
87# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 110# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
88CONFIG_SYSCTL=y 111CONFIG_SYSCTL=y
112CONFIG_ANON_INODES=y
89CONFIG_EMBEDDED=y 113CONFIG_EMBEDDED=y
90CONFIG_SYSCTL_SYSCALL=y 114CONFIG_SYSCTL_SYSCALL=y
91CONFIG_KALLSYMS=y 115CONFIG_KALLSYMS=y
92CONFIG_KALLSYMS_ALL=y 116CONFIG_KALLSYMS_ALL=y
93CONFIG_KALLSYMS_STRIP_GENERATED=y
94CONFIG_KALLSYMS_EXTRA_PASS=y 117CONFIG_KALLSYMS_EXTRA_PASS=y
95CONFIG_HOTPLUG=y 118CONFIG_HOTPLUG=y
96CONFIG_PRINTK=y 119CONFIG_PRINTK=y
97CONFIG_BUG=y 120CONFIG_BUG=y
98CONFIG_ELF_CORE=y 121CONFIG_ELF_CORE=y
99CONFIG_COMPAT_BRK=y
100CONFIG_BASE_FULL=y 122CONFIG_BASE_FULL=y
101CONFIG_FUTEX=y 123CONFIG_FUTEX=y
102CONFIG_ANON_INODES=y
103CONFIG_EPOLL=y 124CONFIG_EPOLL=y
104CONFIG_SIGNALFD=y 125CONFIG_SIGNALFD=y
105CONFIG_TIMERFD=y 126CONFIG_TIMERFD=y
106CONFIG_EVENTFD=y 127CONFIG_EVENTFD=y
107CONFIG_SHMEM=y 128CONFIG_SHMEM=y
108CONFIG_AIO=y 129CONFIG_AIO=y
130CONFIG_HAVE_PERF_EVENTS=y
131
132#
133# Kernel Performance Events And Counters
134#
135# CONFIG_PERF_EVENTS is not set
136# CONFIG_PERF_COUNTERS is not set
109CONFIG_VM_EVENT_COUNTERS=y 137CONFIG_VM_EVENT_COUNTERS=y
110CONFIG_PCI_QUIRKS=y 138CONFIG_PCI_QUIRKS=y
111CONFIG_SLUB_DEBUG=y 139CONFIG_SLUB_DEBUG=y
140CONFIG_COMPAT_BRK=y
112# CONFIG_SLAB is not set 141# CONFIG_SLAB is not set
113CONFIG_SLUB=y 142CONFIG_SLUB=y
114# CONFIG_SLOB is not set 143# CONFIG_SLOB is not set
@@ -120,6 +149,14 @@ CONFIG_HAVE_IOREMAP_PROT=y
120CONFIG_HAVE_KPROBES=y 149CONFIG_HAVE_KPROBES=y
121CONFIG_HAVE_KRETPROBES=y 150CONFIG_HAVE_KRETPROBES=y
122CONFIG_HAVE_ARCH_TRACEHOOK=y 151CONFIG_HAVE_ARCH_TRACEHOOK=y
152CONFIG_HAVE_DMA_ATTRS=y
153CONFIG_HAVE_DMA_API_DEBUG=y
154
155#
156# GCOV-based kernel profiling
157#
158# CONFIG_GCOV_KERNEL is not set
159# CONFIG_SLOW_WORK is not set
123# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 160# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
124CONFIG_SLABINFO=y 161CONFIG_SLABINFO=y
125CONFIG_RT_MUTEXES=y 162CONFIG_RT_MUTEXES=y
@@ -131,8 +168,7 @@ CONFIG_MODULE_UNLOAD=y
131# CONFIG_MODVERSIONS is not set 168# CONFIG_MODVERSIONS is not set
132# CONFIG_MODULE_SRCVERSION_ALL is not set 169# CONFIG_MODULE_SRCVERSION_ALL is not set
133CONFIG_BLOCK=y 170CONFIG_BLOCK=y
134CONFIG_LBD=y 171CONFIG_LBDAF=y
135# CONFIG_BLK_DEV_IO_TRACE is not set
136# CONFIG_BLK_DEV_BSG is not set 172# CONFIG_BLK_DEV_BSG is not set
137# CONFIG_BLK_DEV_INTEGRITY is not set 173# CONFIG_BLK_DEV_INTEGRITY is not set
138 174
@@ -140,19 +176,41 @@ CONFIG_LBD=y
140# IO Schedulers 176# IO Schedulers
141# 177#
142CONFIG_IOSCHED_NOOP=y 178CONFIG_IOSCHED_NOOP=y
143CONFIG_IOSCHED_AS=y
144CONFIG_IOSCHED_DEADLINE=y 179CONFIG_IOSCHED_DEADLINE=y
145CONFIG_IOSCHED_CFQ=y 180CONFIG_IOSCHED_CFQ=y
146CONFIG_DEFAULT_AS=y
147# CONFIG_DEFAULT_DEADLINE is not set 181# CONFIG_DEFAULT_DEADLINE is not set
148# CONFIG_DEFAULT_CFQ is not set 182CONFIG_DEFAULT_CFQ=y
149# CONFIG_DEFAULT_NOOP is not set 183# CONFIG_DEFAULT_NOOP is not set
150CONFIG_DEFAULT_IOSCHED="anticipatory" 184CONFIG_DEFAULT_IOSCHED="cfq"
151CONFIG_CLASSIC_RCU=y 185# CONFIG_INLINE_SPIN_TRYLOCK is not set
152# CONFIG_TREE_RCU is not set 186# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
153# CONFIG_PREEMPT_RCU is not set 187# CONFIG_INLINE_SPIN_LOCK is not set
154# CONFIG_TREE_RCU_TRACE is not set 188# CONFIG_INLINE_SPIN_LOCK_BH is not set
155# CONFIG_PREEMPT_RCU_TRACE is not set 189# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
191CONFIG_INLINE_SPIN_UNLOCK=y
192# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
193CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
194# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
195# CONFIG_INLINE_READ_TRYLOCK is not set
196# CONFIG_INLINE_READ_LOCK is not set
197# CONFIG_INLINE_READ_LOCK_BH is not set
198# CONFIG_INLINE_READ_LOCK_IRQ is not set
199# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
200CONFIG_INLINE_READ_UNLOCK=y
201# CONFIG_INLINE_READ_UNLOCK_BH is not set
202CONFIG_INLINE_READ_UNLOCK_IRQ=y
203# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_WRITE_TRYLOCK is not set
205# CONFIG_INLINE_WRITE_LOCK is not set
206# CONFIG_INLINE_WRITE_LOCK_BH is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
209CONFIG_INLINE_WRITE_UNLOCK=y
210# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
211CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
212# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
213# CONFIG_MUTEX_SPIN_ON_OWNER is not set
156# CONFIG_FREEZER is not set 214# CONFIG_FREEZER is not set
157# CONFIG_PPC4xx_PCI_EXPRESS is not set 215# CONFIG_PPC4xx_PCI_EXPRESS is not set
158 216
@@ -166,6 +224,7 @@ CONFIG_CLASSIC_RCU=y
166# CONFIG_ACADIA is not set 224# CONFIG_ACADIA is not set
167CONFIG_EP405=y 225CONFIG_EP405=y
168# CONFIG_HCU4 is not set 226# CONFIG_HCU4 is not set
227# CONFIG_HOTFOOT is not set
169# CONFIG_KILAUEA is not set 228# CONFIG_KILAUEA is not set
170# CONFIG_MAKALU is not set 229# CONFIG_MAKALU is not set
171# CONFIG_WALNUT is not set 230# CONFIG_WALNUT is not set
@@ -210,10 +269,12 @@ CONFIG_BINFMT_ELF=y
210# CONFIG_BINFMT_MISC is not set 269# CONFIG_BINFMT_MISC is not set
211# CONFIG_MATH_EMULATION is not set 270# CONFIG_MATH_EMULATION is not set
212# CONFIG_IOMMU_HELPER is not set 271# CONFIG_IOMMU_HELPER is not set
213CONFIG_PPC_NEED_DMA_SYNC_OPS=y 272# CONFIG_SWIOTLB is not set
214CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 273CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
215CONFIG_ARCH_HAS_WALK_MEMORY=y 274CONFIG_ARCH_HAS_WALK_MEMORY=y
216CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 275CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
276CONFIG_SPARSE_IRQ=y
277CONFIG_MAX_ACTIVE_REGIONS=32
217CONFIG_ARCH_FLATMEM_ENABLE=y 278CONFIG_ARCH_FLATMEM_ENABLE=y
218CONFIG_ARCH_POPULATES_NODE_MAP=y 279CONFIG_ARCH_POPULATES_NODE_MAP=y
219CONFIG_SELECT_MEMORY_MODEL=y 280CONFIG_SELECT_MEMORY_MODEL=y
@@ -229,10 +290,12 @@ CONFIG_MIGRATION=y
229CONFIG_ZONE_DMA_FLAG=1 290CONFIG_ZONE_DMA_FLAG=1
230CONFIG_BOUNCE=y 291CONFIG_BOUNCE=y
231CONFIG_VIRT_TO_BUS=y 292CONFIG_VIRT_TO_BUS=y
232CONFIG_UNEVICTABLE_LRU=y 293# CONFIG_KSM is not set
294CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
233CONFIG_PPC_4K_PAGES=y 295CONFIG_PPC_4K_PAGES=y
234# CONFIG_PPC_16K_PAGES is not set 296# CONFIG_PPC_16K_PAGES is not set
235# CONFIG_PPC_64K_PAGES is not set 297# CONFIG_PPC_64K_PAGES is not set
298# CONFIG_PPC_256K_PAGES is not set
236CONFIG_FORCE_MAX_ZONEORDER=11 299CONFIG_FORCE_MAX_ZONEORDER=11
237CONFIG_PROC_DEVICETREE=y 300CONFIG_PROC_DEVICETREE=y
238# CONFIG_CMDLINE_BOOL is not set 301# CONFIG_CMDLINE_BOOL is not set
@@ -257,6 +320,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
257# CONFIG_PCI_LEGACY is not set 320# CONFIG_PCI_LEGACY is not set
258# CONFIG_PCI_DEBUG is not set 321# CONFIG_PCI_DEBUG is not set
259# CONFIG_PCI_STUB is not set 322# CONFIG_PCI_STUB is not set
323# CONFIG_PCI_IOV is not set
260# CONFIG_PCCARD is not set 324# CONFIG_PCCARD is not set
261# CONFIG_HOTPLUG_PCI is not set 325# CONFIG_HOTPLUG_PCI is not set
262# CONFIG_HAS_RAPIDIO is not set 326# CONFIG_HAS_RAPIDIO is not set
@@ -274,14 +338,12 @@ CONFIG_PAGE_OFFSET=0xc0000000
274CONFIG_KERNEL_START=0xc0000000 338CONFIG_KERNEL_START=0xc0000000
275CONFIG_PHYSICAL_START=0x00000000 339CONFIG_PHYSICAL_START=0x00000000
276CONFIG_TASK_SIZE=0xc0000000 340CONFIG_TASK_SIZE=0xc0000000
277CONFIG_CONSISTENT_START=0xff100000
278CONFIG_CONSISTENT_SIZE=0x00200000 341CONFIG_CONSISTENT_SIZE=0x00200000
279CONFIG_NET=y 342CONFIG_NET=y
280 343
281# 344#
282# Networking options 345# Networking options
283# 346#
284CONFIG_COMPAT_NET_DEV_OPS=y
285CONFIG_PACKET=y 347CONFIG_PACKET=y
286# CONFIG_PACKET_MMAP is not set 348# CONFIG_PACKET_MMAP is not set
287CONFIG_UNIX=y 349CONFIG_UNIX=y
@@ -318,6 +380,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
318# CONFIG_NETFILTER is not set 380# CONFIG_NETFILTER is not set
319# CONFIG_IP_DCCP is not set 381# CONFIG_IP_DCCP is not set
320# CONFIG_IP_SCTP is not set 382# CONFIG_IP_SCTP is not set
383# CONFIG_RDS is not set
321# CONFIG_TIPC is not set 384# CONFIG_TIPC is not set
322# CONFIG_ATM is not set 385# CONFIG_ATM is not set
323# CONFIG_BRIDGE is not set 386# CONFIG_BRIDGE is not set
@@ -331,6 +394,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
331# CONFIG_LAPB is not set 394# CONFIG_LAPB is not set
332# CONFIG_ECONET is not set 395# CONFIG_ECONET is not set
333# CONFIG_WAN_ROUTER is not set 396# CONFIG_WAN_ROUTER is not set
397# CONFIG_PHONET is not set
398# CONFIG_IEEE802154 is not set
334# CONFIG_NET_SCHED is not set 399# CONFIG_NET_SCHED is not set
335# CONFIG_DCB is not set 400# CONFIG_DCB is not set
336 401
@@ -343,8 +408,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
343# CONFIG_IRDA is not set 408# CONFIG_IRDA is not set
344# CONFIG_BT is not set 409# CONFIG_BT is not set
345# CONFIG_AF_RXRPC is not set 410# CONFIG_AF_RXRPC is not set
346# CONFIG_PHONET is not set 411CONFIG_WIRELESS=y
347# CONFIG_WIRELESS is not set 412# CONFIG_CFG80211 is not set
413# CONFIG_LIB80211 is not set
414
415#
416# CFG80211 needs to be enabled for MAC80211
417#
348# CONFIG_WIMAX is not set 418# CONFIG_WIMAX is not set
349# CONFIG_RFKILL is not set 419# CONFIG_RFKILL is not set
350# CONFIG_NET_9P is not set 420# CONFIG_NET_9P is not set
@@ -357,6 +427,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
357# Generic Driver Options 427# Generic Driver Options
358# 428#
359CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 429CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
430# CONFIG_DEVTMPFS is not set
360CONFIG_STANDALONE=y 431CONFIG_STANDALONE=y
361CONFIG_PREVENT_FIRMWARE_BUILD=y 432CONFIG_PREVENT_FIRMWARE_BUILD=y
362CONFIG_FW_LOADER=y 433CONFIG_FW_LOADER=y
@@ -369,9 +440,9 @@ CONFIG_CONNECTOR=y
369CONFIG_PROC_EVENTS=y 440CONFIG_PROC_EVENTS=y
370CONFIG_MTD=y 441CONFIG_MTD=y
371# CONFIG_MTD_DEBUG is not set 442# CONFIG_MTD_DEBUG is not set
443# CONFIG_MTD_TESTS is not set
372# CONFIG_MTD_CONCAT is not set 444# CONFIG_MTD_CONCAT is not set
373CONFIG_MTD_PARTITIONS=y 445CONFIG_MTD_PARTITIONS=y
374# CONFIG_MTD_TESTS is not set
375# CONFIG_MTD_REDBOOT_PARTS is not set 446# CONFIG_MTD_REDBOOT_PARTS is not set
376CONFIG_MTD_CMDLINE_PARTS=y 447CONFIG_MTD_CMDLINE_PARTS=y
377CONFIG_MTD_OF_PARTS=y 448CONFIG_MTD_OF_PARTS=y
@@ -447,7 +518,6 @@ CONFIG_MTD_PHYSMAP_OF=y
447# LPDDR flash memory drivers 518# LPDDR flash memory drivers
448# 519#
449# CONFIG_MTD_LPDDR is not set 520# CONFIG_MTD_LPDDR is not set
450# CONFIG_MTD_QINFO_PROBE is not set
451 521
452# 522#
453# UBI - Unsorted block images 523# UBI - Unsorted block images
@@ -463,6 +533,7 @@ CONFIG_BLK_DEV=y
463# CONFIG_BLK_DEV_UMEM is not set 533# CONFIG_BLK_DEV_UMEM is not set
464# CONFIG_BLK_DEV_COW_COMMON is not set 534# CONFIG_BLK_DEV_COW_COMMON is not set
465# CONFIG_BLK_DEV_LOOP is not set 535# CONFIG_BLK_DEV_LOOP is not set
536# CONFIG_BLK_DEV_DRBD is not set
466# CONFIG_BLK_DEV_NBD is not set 537# CONFIG_BLK_DEV_NBD is not set
467# CONFIG_BLK_DEV_SX8 is not set 538# CONFIG_BLK_DEV_SX8 is not set
468# CONFIG_BLK_DEV_UB is not set 539# CONFIG_BLK_DEV_UB is not set
@@ -476,12 +547,17 @@ CONFIG_BLK_DEV_RAM_SIZE=35000
476# CONFIG_BLK_DEV_HD is not set 547# CONFIG_BLK_DEV_HD is not set
477CONFIG_MISC_DEVICES=y 548CONFIG_MISC_DEVICES=y
478# CONFIG_PHANTOM is not set 549# CONFIG_PHANTOM is not set
479# CONFIG_EEPROM_93CX6 is not set
480# CONFIG_SGI_IOC4 is not set 550# CONFIG_SGI_IOC4 is not set
481# CONFIG_TIFM_CORE is not set 551# CONFIG_TIFM_CORE is not set
482# CONFIG_ENCLOSURE_SERVICES is not set 552# CONFIG_ENCLOSURE_SERVICES is not set
483# CONFIG_HP_ILO is not set 553# CONFIG_HP_ILO is not set
484# CONFIG_C2PORT is not set 554# CONFIG_C2PORT is not set
555
556#
557# EEPROM support
558#
559# CONFIG_EEPROM_93CX6 is not set
560# CONFIG_CB710_CORE is not set
485CONFIG_HAVE_IDE=y 561CONFIG_HAVE_IDE=y
486# CONFIG_IDE is not set 562# CONFIG_IDE is not set
487 563
@@ -501,7 +577,11 @@ CONFIG_HAVE_IDE=y
501# 577#
502 578
503# 579#
504# Enable only one of the two stacks, unless you know what you are doing 580# You can enable one or both FireWire driver stacks.
581#
582
583#
584# See the help texts for more information.
505# 585#
506# CONFIG_FIREWIRE is not set 586# CONFIG_FIREWIRE is not set
507# CONFIG_IEEE1394 is not set 587# CONFIG_IEEE1394 is not set
@@ -522,6 +602,8 @@ CONFIG_NET_ETHERNET=y
522# CONFIG_SUNGEM is not set 602# CONFIG_SUNGEM is not set
523# CONFIG_CASSINI is not set 603# CONFIG_CASSINI is not set
524# CONFIG_NET_VENDOR_3COM is not set 604# CONFIG_NET_VENDOR_3COM is not set
605# CONFIG_ETHOC is not set
606# CONFIG_DNET is not set
525# CONFIG_NET_TULIP is not set 607# CONFIG_NET_TULIP is not set
526# CONFIG_HP100 is not set 608# CONFIG_HP100 is not set
527CONFIG_IBM_NEW_EMAC=y 609CONFIG_IBM_NEW_EMAC=y
@@ -540,7 +622,10 @@ CONFIG_IBM_NEW_EMAC_ZMII=y
540# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 622# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
541# CONFIG_NET_PCI is not set 623# CONFIG_NET_PCI is not set
542# CONFIG_B44 is not set 624# CONFIG_B44 is not set
625# CONFIG_KS8842 is not set
626# CONFIG_KS8851_MLL is not set
543# CONFIG_ATL2 is not set 627# CONFIG_ATL2 is not set
628# CONFIG_XILINX_EMACLITE is not set
544CONFIG_NETDEV_1000=y 629CONFIG_NETDEV_1000=y
545# CONFIG_ACENIC is not set 630# CONFIG_ACENIC is not set
546# CONFIG_DL2K is not set 631# CONFIG_DL2K is not set
@@ -548,6 +633,7 @@ CONFIG_NETDEV_1000=y
548# CONFIG_E1000E is not set 633# CONFIG_E1000E is not set
549# CONFIG_IP1000 is not set 634# CONFIG_IP1000 is not set
550# CONFIG_IGB is not set 635# CONFIG_IGB is not set
636# CONFIG_IGBVF is not set
551# CONFIG_NS83820 is not set 637# CONFIG_NS83820 is not set
552# CONFIG_HAMACHI is not set 638# CONFIG_HAMACHI is not set
553# CONFIG_YELLOWFIN is not set 639# CONFIG_YELLOWFIN is not set
@@ -558,9 +644,13 @@ CONFIG_NETDEV_1000=y
558# CONFIG_VIA_VELOCITY is not set 644# CONFIG_VIA_VELOCITY is not set
559# CONFIG_TIGON3 is not set 645# CONFIG_TIGON3 is not set
560# CONFIG_BNX2 is not set 646# CONFIG_BNX2 is not set
647# CONFIG_CNIC is not set
648# CONFIG_MV643XX_ETH is not set
649# CONFIG_XILINX_LL_TEMAC is not set
561# CONFIG_QLA3XXX is not set 650# CONFIG_QLA3XXX is not set
562# CONFIG_ATL1 is not set 651# CONFIG_ATL1 is not set
563# CONFIG_ATL1E is not set 652# CONFIG_ATL1E is not set
653# CONFIG_ATL1C is not set
564# CONFIG_JME is not set 654# CONFIG_JME is not set
565CONFIG_NETDEV_10000=y 655CONFIG_NETDEV_10000=y
566# CONFIG_CHELSIO_T1 is not set 656# CONFIG_CHELSIO_T1 is not set
@@ -570,6 +660,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
570# CONFIG_IXGBE is not set 660# CONFIG_IXGBE is not set
571# CONFIG_IXGB is not set 661# CONFIG_IXGB is not set
572# CONFIG_S2IO is not set 662# CONFIG_S2IO is not set
663# CONFIG_VXGE is not set
573# CONFIG_MYRI10GE is not set 664# CONFIG_MYRI10GE is not set
574# CONFIG_NETXEN_NIC is not set 665# CONFIG_NETXEN_NIC is not set
575# CONFIG_NIU is not set 666# CONFIG_NIU is not set
@@ -579,14 +670,14 @@ CONFIG_CHELSIO_T3_DEPENDS=y
579# CONFIG_BNX2X is not set 670# CONFIG_BNX2X is not set
580# CONFIG_QLGE is not set 671# CONFIG_QLGE is not set
581# CONFIG_SFC is not set 672# CONFIG_SFC is not set
673# CONFIG_BE2NET is not set
582# CONFIG_TR is not set 674# CONFIG_TR is not set
583 675CONFIG_WLAN=y
584# 676# CONFIG_AIRO is not set
585# Wireless LAN 677# CONFIG_ATMEL is not set
586# 678# CONFIG_PRISM54 is not set
587# CONFIG_WLAN_PRE80211 is not set 679# CONFIG_USB_ZD1201 is not set
588# CONFIG_WLAN_80211 is not set 680# CONFIG_HOSTAP is not set
589# CONFIG_IWLWIFI_LEDS is not set
590 681
591# 682#
592# Enable WiMAX (Networking options) to see the WiMAX drivers 683# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -608,6 +699,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
608# CONFIG_NETCONSOLE is not set 699# CONFIG_NETCONSOLE is not set
609# CONFIG_NETPOLL is not set 700# CONFIG_NETPOLL is not set
610# CONFIG_NET_POLL_CONTROLLER is not set 701# CONFIG_NET_POLL_CONTROLLER is not set
702# CONFIG_VMXNET3 is not set
611# CONFIG_ISDN is not set 703# CONFIG_ISDN is not set
612# CONFIG_PHONE is not set 704# CONFIG_PHONE is not set
613 705
@@ -653,6 +745,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
653# CONFIG_SERIAL_JSM is not set 745# CONFIG_SERIAL_JSM is not set
654CONFIG_SERIAL_OF_PLATFORM=y 746CONFIG_SERIAL_OF_PLATFORM=y
655# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set 747# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
748# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
656CONFIG_UNIX98_PTYS=y 749CONFIG_UNIX98_PTYS=y
657# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 750# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
658CONFIG_LEGACY_PTYS=y 751CONFIG_LEGACY_PTYS=y
@@ -669,6 +762,11 @@ CONFIG_LEGACY_PTY_COUNT=256
669CONFIG_DEVPORT=y 762CONFIG_DEVPORT=y
670# CONFIG_I2C is not set 763# CONFIG_I2C is not set
671# CONFIG_SPI is not set 764# CONFIG_SPI is not set
765
766#
767# PPS support
768#
769# CONFIG_PPS is not set
672CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 770CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
673# CONFIG_GPIOLIB is not set 771# CONFIG_GPIOLIB is not set
674# CONFIG_W1 is not set 772# CONFIG_W1 is not set
@@ -691,27 +789,13 @@ CONFIG_SSB_POSSIBLE=y
691# CONFIG_HTC_PASIC3 is not set 789# CONFIG_HTC_PASIC3 is not set
692# CONFIG_MFD_TMIO is not set 790# CONFIG_MFD_TMIO is not set
693# CONFIG_REGULATOR is not set 791# CONFIG_REGULATOR is not set
694 792# CONFIG_MEDIA_SUPPORT is not set
695#
696# Multimedia devices
697#
698
699#
700# Multimedia core support
701#
702# CONFIG_VIDEO_DEV is not set
703# CONFIG_DVB_CORE is not set
704# CONFIG_VIDEO_MEDIA is not set
705
706#
707# Multimedia drivers
708#
709# CONFIG_DAB is not set
710 793
711# 794#
712# Graphics support 795# Graphics support
713# 796#
714# CONFIG_AGP is not set 797# CONFIG_AGP is not set
798CONFIG_VGA_ARB=y
715# CONFIG_DRM is not set 799# CONFIG_DRM is not set
716# CONFIG_VGASTATE is not set 800# CONFIG_VGASTATE is not set
717CONFIG_VIDEO_OUTPUT_CONTROL=m 801CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -748,14 +832,16 @@ CONFIG_USB_MON=y
748# USB Host Controller Drivers 832# USB Host Controller Drivers
749# 833#
750# CONFIG_USB_C67X00_HCD is not set 834# CONFIG_USB_C67X00_HCD is not set
835# CONFIG_USB_XHCI_HCD is not set
751# CONFIG_USB_EHCI_HCD is not set 836# CONFIG_USB_EHCI_HCD is not set
752# CONFIG_USB_OXU210HP_HCD is not set 837# CONFIG_USB_OXU210HP_HCD is not set
753# CONFIG_USB_ISP116X_HCD is not set 838# CONFIG_USB_ISP116X_HCD is not set
754# CONFIG_USB_ISP1760_HCD is not set 839# CONFIG_USB_ISP1760_HCD is not set
840# CONFIG_USB_ISP1362_HCD is not set
755CONFIG_USB_OHCI_HCD=y 841CONFIG_USB_OHCI_HCD=y
756CONFIG_USB_OHCI_HCD_PPC_OF=y
757CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 842CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
758CONFIG_USB_OHCI_HCD_PPC_OF_LE=y 843CONFIG_USB_OHCI_HCD_PPC_OF_LE=y
844CONFIG_USB_OHCI_HCD_PPC_OF=y
759CONFIG_USB_OHCI_HCD_PCI=y 845CONFIG_USB_OHCI_HCD_PCI=y
760CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y 846CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
761CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y 847CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
@@ -775,11 +861,11 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
775# CONFIG_USB_TMC is not set 861# CONFIG_USB_TMC is not set
776 862
777# 863#
778# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 864# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
779# 865#
780 866
781# 867#
782# see USB_STORAGE Help for more information 868# also be needed; see USB_STORAGE Help for more info
783# 869#
784# CONFIG_USB_LIBUSUAL is not set 870# CONFIG_USB_LIBUSUAL is not set
785 871
@@ -807,7 +893,6 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
807# CONFIG_USB_LED is not set 893# CONFIG_USB_LED is not set
808# CONFIG_USB_CYPRESS_CY7C63 is not set 894# CONFIG_USB_CYPRESS_CY7C63 is not set
809# CONFIG_USB_CYTHERM is not set 895# CONFIG_USB_CYTHERM is not set
810# CONFIG_USB_PHIDGET is not set
811# CONFIG_USB_IDMOUSE is not set 896# CONFIG_USB_IDMOUSE is not set
812# CONFIG_USB_FTDI_ELAN is not set 897# CONFIG_USB_FTDI_ELAN is not set
813# CONFIG_USB_APPLEDISPLAY is not set 898# CONFIG_USB_APPLEDISPLAY is not set
@@ -822,6 +907,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
822# 907#
823# OTG and related infrastructure 908# OTG and related infrastructure
824# 909#
910# CONFIG_NOP_USB_XCEIV is not set
825# CONFIG_UWB is not set 911# CONFIG_UWB is not set
826# CONFIG_MMC is not set 912# CONFIG_MMC is not set
827# CONFIG_MEMSTICK is not set 913# CONFIG_MEMSTICK is not set
@@ -831,7 +917,12 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
831# CONFIG_EDAC is not set 917# CONFIG_EDAC is not set
832# CONFIG_RTC_CLASS is not set 918# CONFIG_RTC_CLASS is not set
833# CONFIG_DMADEVICES is not set 919# CONFIG_DMADEVICES is not set
920# CONFIG_AUXDISPLAY is not set
834# CONFIG_UIO is not set 921# CONFIG_UIO is not set
922
923#
924# TI VLYNQ
925#
835# CONFIG_STAGING is not set 926# CONFIG_STAGING is not set
836 927
837# 928#
@@ -842,14 +933,17 @@ CONFIG_EXT2_FS=y
842# CONFIG_EXT2_FS_XIP is not set 933# CONFIG_EXT2_FS_XIP is not set
843# CONFIG_EXT3_FS is not set 934# CONFIG_EXT3_FS is not set
844# CONFIG_EXT4_FS is not set 935# CONFIG_EXT4_FS is not set
936CONFIG_EXT4_USE_FOR_EXT23=y
845# CONFIG_REISERFS_FS is not set 937# CONFIG_REISERFS_FS is not set
846# CONFIG_JFS_FS is not set 938# CONFIG_JFS_FS is not set
847# CONFIG_FS_POSIX_ACL is not set 939# CONFIG_FS_POSIX_ACL is not set
848CONFIG_FILE_LOCKING=y
849# CONFIG_XFS_FS is not set 940# CONFIG_XFS_FS is not set
850# CONFIG_GFS2_FS is not set 941# CONFIG_GFS2_FS is not set
851# CONFIG_OCFS2_FS is not set 942# CONFIG_OCFS2_FS is not set
852# CONFIG_BTRFS_FS is not set 943# CONFIG_BTRFS_FS is not set
944# CONFIG_NILFS2_FS is not set
945CONFIG_FILE_LOCKING=y
946CONFIG_FSNOTIFY=y
853CONFIG_DNOTIFY=y 947CONFIG_DNOTIFY=y
854CONFIG_INOTIFY=y 948CONFIG_INOTIFY=y
855CONFIG_INOTIFY_USER=y 949CONFIG_INOTIFY_USER=y
@@ -859,6 +953,11 @@ CONFIG_INOTIFY_USER=y
859# CONFIG_FUSE_FS is not set 953# CONFIG_FUSE_FS is not set
860 954
861# 955#
956# Caches
957#
958# CONFIG_FSCACHE is not set
959
960#
862# CD-ROM/DVD Filesystems 961# CD-ROM/DVD Filesystems
863# 962#
864# CONFIG_ISO9660_FS is not set 963# CONFIG_ISO9660_FS is not set
@@ -913,7 +1012,6 @@ CONFIG_LOCKD=y
913CONFIG_LOCKD_V4=y 1012CONFIG_LOCKD_V4=y
914CONFIG_NFS_COMMON=y 1013CONFIG_NFS_COMMON=y
915CONFIG_SUNRPC=y 1014CONFIG_SUNRPC=y
916# CONFIG_SUNRPC_REGISTER_V4 is not set
917# CONFIG_RPCSEC_GSS_KRB5 is not set 1015# CONFIG_RPCSEC_GSS_KRB5 is not set
918# CONFIG_RPCSEC_GSS_SPKM3 is not set 1016# CONFIG_RPCSEC_GSS_SPKM3 is not set
919# CONFIG_SMB_FS is not set 1017# CONFIG_SMB_FS is not set
@@ -927,8 +1025,48 @@ CONFIG_SUNRPC=y
927# 1025#
928# CONFIG_PARTITION_ADVANCED is not set 1026# CONFIG_PARTITION_ADVANCED is not set
929CONFIG_MSDOS_PARTITION=y 1027CONFIG_MSDOS_PARTITION=y
930# CONFIG_NLS is not set 1028CONFIG_NLS=y
1029CONFIG_NLS_DEFAULT="iso8859-1"
1030# CONFIG_NLS_CODEPAGE_437 is not set
1031# CONFIG_NLS_CODEPAGE_737 is not set
1032# CONFIG_NLS_CODEPAGE_775 is not set
1033# CONFIG_NLS_CODEPAGE_850 is not set
1034# CONFIG_NLS_CODEPAGE_852 is not set
1035# CONFIG_NLS_CODEPAGE_855 is not set
1036# CONFIG_NLS_CODEPAGE_857 is not set
1037# CONFIG_NLS_CODEPAGE_860 is not set
1038# CONFIG_NLS_CODEPAGE_861 is not set
1039# CONFIG_NLS_CODEPAGE_862 is not set
1040# CONFIG_NLS_CODEPAGE_863 is not set
1041# CONFIG_NLS_CODEPAGE_864 is not set
1042# CONFIG_NLS_CODEPAGE_865 is not set
1043# CONFIG_NLS_CODEPAGE_866 is not set
1044# CONFIG_NLS_CODEPAGE_869 is not set
1045# CONFIG_NLS_CODEPAGE_936 is not set
1046# CONFIG_NLS_CODEPAGE_950 is not set
1047# CONFIG_NLS_CODEPAGE_932 is not set
1048# CONFIG_NLS_CODEPAGE_949 is not set
1049# CONFIG_NLS_CODEPAGE_874 is not set
1050# CONFIG_NLS_ISO8859_8 is not set
1051# CONFIG_NLS_CODEPAGE_1250 is not set
1052# CONFIG_NLS_CODEPAGE_1251 is not set
1053# CONFIG_NLS_ASCII is not set
1054# CONFIG_NLS_ISO8859_1 is not set
1055# CONFIG_NLS_ISO8859_2 is not set
1056# CONFIG_NLS_ISO8859_3 is not set
1057# CONFIG_NLS_ISO8859_4 is not set
1058# CONFIG_NLS_ISO8859_5 is not set
1059# CONFIG_NLS_ISO8859_6 is not set
1060# CONFIG_NLS_ISO8859_7 is not set
1061# CONFIG_NLS_ISO8859_9 is not set
1062# CONFIG_NLS_ISO8859_13 is not set
1063# CONFIG_NLS_ISO8859_14 is not set
1064# CONFIG_NLS_ISO8859_15 is not set
1065# CONFIG_NLS_KOI8_R is not set
1066# CONFIG_NLS_KOI8_U is not set
1067# CONFIG_NLS_UTF8 is not set
931# CONFIG_DLM is not set 1068# CONFIG_DLM is not set
1069# CONFIG_BINARY_PRINTF is not set
932 1070
933# 1071#
934# Library routines 1072# Library routines
@@ -943,11 +1081,13 @@ CONFIG_CRC32=y
943# CONFIG_CRC7 is not set 1081# CONFIG_CRC7 is not set
944# CONFIG_LIBCRC32C is not set 1082# CONFIG_LIBCRC32C is not set
945CONFIG_ZLIB_INFLATE=y 1083CONFIG_ZLIB_INFLATE=y
946CONFIG_PLIST=y 1084CONFIG_DECOMPRESS_GZIP=y
947CONFIG_HAS_IOMEM=y 1085CONFIG_HAS_IOMEM=y
948CONFIG_HAS_IOPORT=y 1086CONFIG_HAS_IOPORT=y
949CONFIG_HAS_DMA=y 1087CONFIG_HAS_DMA=y
950CONFIG_HAVE_LMB=y 1088CONFIG_HAVE_LMB=y
1089CONFIG_NLATTR=y
1090CONFIG_GENERIC_ATOMIC64=y
951 1091
952# 1092#
953# Kernel hacking 1093# Kernel hacking
@@ -957,6 +1097,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
957CONFIG_ENABLE_MUST_CHECK=y 1097CONFIG_ENABLE_MUST_CHECK=y
958CONFIG_FRAME_WARN=1024 1098CONFIG_FRAME_WARN=1024
959CONFIG_MAGIC_SYSRQ=y 1099CONFIG_MAGIC_SYSRQ=y
1100# CONFIG_STRIP_ASM_SYMS is not set
960# CONFIG_UNUSED_SYMBOLS is not set 1101# CONFIG_UNUSED_SYMBOLS is not set
961CONFIG_DEBUG_FS=y 1102CONFIG_DEBUG_FS=y
962# CONFIG_HEADERS_CHECK is not set 1103# CONFIG_HEADERS_CHECK is not set
@@ -965,16 +1106,23 @@ CONFIG_DEBUG_KERNEL=y
965CONFIG_DETECT_SOFTLOCKUP=y 1106CONFIG_DETECT_SOFTLOCKUP=y
966# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1107# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
967CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1108CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1109CONFIG_DETECT_HUNG_TASK=y
1110# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1111CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
968CONFIG_SCHED_DEBUG=y 1112CONFIG_SCHED_DEBUG=y
969# CONFIG_SCHEDSTATS is not set 1113# CONFIG_SCHEDSTATS is not set
970# CONFIG_TIMER_STATS is not set 1114# CONFIG_TIMER_STATS is not set
971# CONFIG_DEBUG_OBJECTS is not set 1115# CONFIG_DEBUG_OBJECTS is not set
972# CONFIG_SLUB_DEBUG_ON is not set 1116# CONFIG_SLUB_DEBUG_ON is not set
973# CONFIG_SLUB_STATS is not set 1117# CONFIG_SLUB_STATS is not set
1118# CONFIG_DEBUG_KMEMLEAK is not set
974# CONFIG_DEBUG_RT_MUTEXES is not set 1119# CONFIG_DEBUG_RT_MUTEXES is not set
975# CONFIG_RT_MUTEX_TESTER is not set 1120# CONFIG_RT_MUTEX_TESTER is not set
976# CONFIG_DEBUG_SPINLOCK is not set 1121# CONFIG_DEBUG_SPINLOCK is not set
977# CONFIG_DEBUG_MUTEXES is not set 1122# CONFIG_DEBUG_MUTEXES is not set
1123# CONFIG_DEBUG_LOCK_ALLOC is not set
1124# CONFIG_PROVE_LOCKING is not set
1125# CONFIG_LOCK_STAT is not set
978# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1126# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
979# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1127# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
980# CONFIG_DEBUG_KOBJECT is not set 1128# CONFIG_DEBUG_KOBJECT is not set
@@ -986,35 +1134,45 @@ CONFIG_DEBUG_BUGVERBOSE=y
986# CONFIG_DEBUG_LIST is not set 1134# CONFIG_DEBUG_LIST is not set
987# CONFIG_DEBUG_SG is not set 1135# CONFIG_DEBUG_SG is not set
988# CONFIG_DEBUG_NOTIFIERS is not set 1136# CONFIG_DEBUG_NOTIFIERS is not set
989# CONFIG_BOOT_PRINTK_DELAY is not set 1137# CONFIG_DEBUG_CREDENTIALS is not set
990# CONFIG_RCU_TORTURE_TEST is not set 1138# CONFIG_RCU_TORTURE_TEST is not set
991# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1139# CONFIG_RCU_CPU_STALL_DETECTOR is not set
992# CONFIG_BACKTRACE_SELF_TEST is not set 1140# CONFIG_BACKTRACE_SELF_TEST is not set
993# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1141# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1142# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
994# CONFIG_FAULT_INJECTION is not set 1143# CONFIG_FAULT_INJECTION is not set
995# CONFIG_LATENCYTOP is not set 1144# CONFIG_LATENCYTOP is not set
996CONFIG_SYSCTL_SYSCALL_CHECK=y 1145CONFIG_SYSCTL_SYSCALL_CHECK=y
1146# CONFIG_DEBUG_PAGEALLOC is not set
997CONFIG_HAVE_FUNCTION_TRACER=y 1147CONFIG_HAVE_FUNCTION_TRACER=y
1148CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
998CONFIG_HAVE_DYNAMIC_FTRACE=y 1149CONFIG_HAVE_DYNAMIC_FTRACE=y
999CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1150CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1000 1151CONFIG_TRACING_SUPPORT=y
1001# 1152CONFIG_FTRACE=y
1002# Tracers
1003#
1004# CONFIG_FUNCTION_TRACER is not set 1153# CONFIG_FUNCTION_TRACER is not set
1154# CONFIG_IRQSOFF_TRACER is not set
1005# CONFIG_SCHED_TRACER is not set 1155# CONFIG_SCHED_TRACER is not set
1006# CONFIG_CONTEXT_SWITCH_TRACER is not set 1156# CONFIG_ENABLE_DEFAULT_TRACERS is not set
1007# CONFIG_BOOT_TRACER is not set 1157# CONFIG_BOOT_TRACER is not set
1008# CONFIG_TRACE_BRANCH_PROFILING is not set 1158CONFIG_BRANCH_PROFILE_NONE=y
1159# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1160# CONFIG_PROFILE_ALL_BRANCHES is not set
1009# CONFIG_STACK_TRACER is not set 1161# CONFIG_STACK_TRACER is not set
1010# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1162# CONFIG_KMEMTRACE is not set
1163# CONFIG_WORKQUEUE_TRACER is not set
1164# CONFIG_BLK_DEV_IO_TRACE is not set
1165# CONFIG_DYNAMIC_DEBUG is not set
1166# CONFIG_DMA_API_DEBUG is not set
1011# CONFIG_SAMPLES is not set 1167# CONFIG_SAMPLES is not set
1012CONFIG_HAVE_ARCH_KGDB=y 1168CONFIG_HAVE_ARCH_KGDB=y
1013# CONFIG_KGDB is not set 1169# CONFIG_KGDB is not set
1170# CONFIG_PPC_DISABLE_WERROR is not set
1171CONFIG_PPC_WERROR=y
1014CONFIG_PRINT_STACK_DEPTH=64 1172CONFIG_PRINT_STACK_DEPTH=64
1015# CONFIG_DEBUG_STACKOVERFLOW is not set 1173# CONFIG_DEBUG_STACKOVERFLOW is not set
1016# CONFIG_DEBUG_STACK_USAGE is not set 1174# CONFIG_DEBUG_STACK_USAGE is not set
1017# CONFIG_DEBUG_PAGEALLOC is not set 1175# CONFIG_PPC_EMULATED_STATS is not set
1018# CONFIG_CODE_PATCHING_SELFTEST is not set 1176# CONFIG_CODE_PATCHING_SELFTEST is not set
1019# CONFIG_FTR_FIXUP_SELFTEST is not set 1177# CONFIG_FTR_FIXUP_SELFTEST is not set
1020# CONFIG_MSI_BITMAP_SELFTEST is not set 1178# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -1030,13 +1188,16 @@ CONFIG_PRINT_STACK_DEPTH=64
1030# CONFIG_KEYS is not set 1188# CONFIG_KEYS is not set
1031# CONFIG_SECURITY is not set 1189# CONFIG_SECURITY is not set
1032# CONFIG_SECURITYFS is not set 1190# CONFIG_SECURITYFS is not set
1033# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1191# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1192# CONFIG_DEFAULT_SECURITY_SMACK is not set
1193# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1194CONFIG_DEFAULT_SECURITY_DAC=y
1195CONFIG_DEFAULT_SECURITY=""
1034CONFIG_CRYPTO=y 1196CONFIG_CRYPTO=y
1035 1197
1036# 1198#
1037# Crypto core or helper 1199# Crypto core or helper
1038# 1200#
1039# CONFIG_CRYPTO_FIPS is not set
1040CONFIG_CRYPTO_ALGAPI=y 1201CONFIG_CRYPTO_ALGAPI=y
1041CONFIG_CRYPTO_ALGAPI2=y 1202CONFIG_CRYPTO_ALGAPI2=y
1042CONFIG_CRYPTO_AEAD2=y 1203CONFIG_CRYPTO_AEAD2=y
@@ -1045,10 +1206,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
1045CONFIG_CRYPTO_HASH=y 1206CONFIG_CRYPTO_HASH=y
1046CONFIG_CRYPTO_HASH2=y 1207CONFIG_CRYPTO_HASH2=y
1047CONFIG_CRYPTO_RNG2=y 1208CONFIG_CRYPTO_RNG2=y
1209CONFIG_CRYPTO_PCOMP=y
1048CONFIG_CRYPTO_MANAGER=y 1210CONFIG_CRYPTO_MANAGER=y
1049CONFIG_CRYPTO_MANAGER2=y 1211CONFIG_CRYPTO_MANAGER2=y
1050# CONFIG_CRYPTO_GF128MUL is not set 1212# CONFIG_CRYPTO_GF128MUL is not set
1051# CONFIG_CRYPTO_NULL is not set 1213# CONFIG_CRYPTO_NULL is not set
1214CONFIG_CRYPTO_WORKQUEUE=y
1052# CONFIG_CRYPTO_CRYPTD is not set 1215# CONFIG_CRYPTO_CRYPTD is not set
1053# CONFIG_CRYPTO_AUTHENC is not set 1216# CONFIG_CRYPTO_AUTHENC is not set
1054# CONFIG_CRYPTO_TEST is not set 1217# CONFIG_CRYPTO_TEST is not set
@@ -1076,11 +1239,13 @@ CONFIG_CRYPTO_PCBC=y
1076# 1239#
1077# CONFIG_CRYPTO_HMAC is not set 1240# CONFIG_CRYPTO_HMAC is not set
1078# CONFIG_CRYPTO_XCBC is not set 1241# CONFIG_CRYPTO_XCBC is not set
1242# CONFIG_CRYPTO_VMAC is not set
1079 1243
1080# 1244#
1081# Digest 1245# Digest
1082# 1246#
1083# CONFIG_CRYPTO_CRC32C is not set 1247# CONFIG_CRYPTO_CRC32C is not set
1248# CONFIG_CRYPTO_GHASH is not set
1084# CONFIG_CRYPTO_MD4 is not set 1249# CONFIG_CRYPTO_MD4 is not set
1085CONFIG_CRYPTO_MD5=y 1250CONFIG_CRYPTO_MD5=y
1086# CONFIG_CRYPTO_MICHAEL_MIC is not set 1251# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1117,6 +1282,7 @@ CONFIG_CRYPTO_DES=y
1117# Compression 1282# Compression
1118# 1283#
1119# CONFIG_CRYPTO_DEFLATE is not set 1284# CONFIG_CRYPTO_DEFLATE is not set
1285# CONFIG_CRYPTO_ZLIB is not set
1120# CONFIG_CRYPTO_LZO is not set 1286# CONFIG_CRYPTO_LZO is not set
1121 1287
1122# 1288#
@@ -1125,5 +1291,6 @@ CONFIG_CRYPTO_DES=y
1125# CONFIG_CRYPTO_ANSI_CPRNG is not set 1291# CONFIG_CRYPTO_ANSI_CPRNG is not set
1126CONFIG_CRYPTO_HW=y 1292CONFIG_CRYPTO_HW=y
1127# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1293# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1294# CONFIG_CRYPTO_DEV_PPC4XX is not set
1128# CONFIG_PPC_CLOCK is not set 1295# CONFIG_PPC_CLOCK is not set
1129# CONFIG_VIRTUALIZATION is not set 1296# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/40x/hcu4_defconfig b/arch/powerpc/configs/40x/hcu4_defconfig
index 8c019d79bf2a..f87ef0382280 100644
--- a/arch/powerpc/configs/40x/hcu4_defconfig
+++ b/arch/powerpc/configs/40x/hcu4_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.29-rc2 3# Linux kernel version: 2.6.33-rc1
4# Tue Jan 20 08:17:50 2009 4# Mon Jan 4 15:45:11 2010
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#
11# CONFIG_6xx is not set 11# CONFIG_PPC_BOOK3S_32 is not set
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
14CONFIG_40x=y 14CONFIG_40x=y
@@ -16,6 +16,7 @@ CONFIG_40x=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_4xx=y 17CONFIG_4xx=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
@@ -27,15 +28,18 @@ CONFIG_GENERIC_TIME=y
27CONFIG_GENERIC_TIME_VSYSCALL=y 28CONFIG_GENERIC_TIME_VSYSCALL=y
28CONFIG_GENERIC_CLOCKEVENTS=y 29CONFIG_GENERIC_CLOCKEVENTS=y
29CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
31CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
30# 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
31CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_NR_IRQS=512
32CONFIG_STACKTRACE_SUPPORT=y 36CONFIG_STACKTRACE_SUPPORT=y
33CONFIG_HAVE_LATENCYTOP_SUPPORT=y 37CONFIG_HAVE_LATENCYTOP_SUPPORT=y
38CONFIG_TRACE_IRQFLAGS_SUPPORT=y
34CONFIG_LOCKDEP_SUPPORT=y 39CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 40CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 41CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 42CONFIG_GENERIC_HWEIGHT=y
38CONFIG_GENERIC_CALIBRATE_DELAY=y
39CONFIG_GENERIC_FIND_NEXT_BIT=y 43CONFIG_GENERIC_FIND_NEXT_BIT=y
40# CONFIG_ARCH_NO_VIRT_TO_BUS is not set 44# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
41CONFIG_PPC=y 45CONFIG_PPC=y
@@ -49,11 +53,15 @@ CONFIG_PPC_UDBG_16550=y
49# CONFIG_GENERIC_TBSYNC is not set 53# CONFIG_GENERIC_TBSYNC is not set
50CONFIG_AUDIT_ARCH=y 54CONFIG_AUDIT_ARCH=y
51CONFIG_GENERIC_BUG=y 55CONFIG_GENERIC_BUG=y
56CONFIG_DTC=y
52# CONFIG_DEFAULT_UIMAGE is not set 57# CONFIG_DEFAULT_UIMAGE is not set
58CONFIG_ARCH_HIBERNATION_POSSIBLE=y
53CONFIG_PPC_DCR_NATIVE=y 59CONFIG_PPC_DCR_NATIVE=y
54# CONFIG_PPC_DCR_MMIO is not set 60# CONFIG_PPC_DCR_MMIO is not set
55CONFIG_PPC_DCR=y 61CONFIG_PPC_DCR=y
62CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
56CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 63CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
64CONFIG_CONSTRUCTORS=y
57 65
58# 66#
59# General setup 67# General setup
@@ -67,9 +75,21 @@ CONFIG_SWAP=y
67CONFIG_SYSVIPC=y 75CONFIG_SYSVIPC=y
68CONFIG_SYSVIPC_SYSCTL=y 76CONFIG_SYSVIPC_SYSCTL=y
69CONFIG_POSIX_MQUEUE=y 77CONFIG_POSIX_MQUEUE=y
78CONFIG_POSIX_MQUEUE_SYSCTL=y
70# CONFIG_BSD_PROCESS_ACCT is not set 79# CONFIG_BSD_PROCESS_ACCT is not set
71# CONFIG_TASKSTATS is not set 80# CONFIG_TASKSTATS is not set
72# CONFIG_AUDIT is not set 81# CONFIG_AUDIT is not set
82
83#
84# RCU Subsystem
85#
86CONFIG_TREE_RCU=y
87# CONFIG_TREE_PREEMPT_RCU is not set
88# CONFIG_TINY_RCU is not set
89# CONFIG_RCU_TRACE is not set
90CONFIG_RCU_FANOUT=32
91# CONFIG_RCU_FANOUT_EXACT is not set
92# CONFIG_TREE_RCU_TRACE is not set
73# CONFIG_IKCONFIG is not set 93# CONFIG_IKCONFIG is not set
74CONFIG_LOG_BUF_SHIFT=14 94CONFIG_LOG_BUF_SHIFT=14
75CONFIG_GROUP_SCHED=y 95CONFIG_GROUP_SCHED=y
@@ -84,31 +104,40 @@ CONFIG_SYSFS_DEPRECATED_V2=y
84# CONFIG_NAMESPACES is not set 104# CONFIG_NAMESPACES is not set
85CONFIG_BLK_DEV_INITRD=y 105CONFIG_BLK_DEV_INITRD=y
86CONFIG_INITRAMFS_SOURCE="" 106CONFIG_INITRAMFS_SOURCE=""
107CONFIG_RD_GZIP=y
108# CONFIG_RD_BZIP2 is not set
109# CONFIG_RD_LZMA is not set
87# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 110# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
88CONFIG_SYSCTL=y 111CONFIG_SYSCTL=y
112CONFIG_ANON_INODES=y
89CONFIG_EMBEDDED=y 113CONFIG_EMBEDDED=y
90CONFIG_SYSCTL_SYSCALL=y 114CONFIG_SYSCTL_SYSCALL=y
91CONFIG_KALLSYMS=y 115CONFIG_KALLSYMS=y
92CONFIG_KALLSYMS_ALL=y 116CONFIG_KALLSYMS_ALL=y
93CONFIG_KALLSYMS_STRIP_GENERATED=y
94CONFIG_KALLSYMS_EXTRA_PASS=y 117CONFIG_KALLSYMS_EXTRA_PASS=y
95CONFIG_HOTPLUG=y 118CONFIG_HOTPLUG=y
96CONFIG_PRINTK=y 119CONFIG_PRINTK=y
97CONFIG_BUG=y 120CONFIG_BUG=y
98CONFIG_ELF_CORE=y 121CONFIG_ELF_CORE=y
99CONFIG_COMPAT_BRK=y
100CONFIG_BASE_FULL=y 122CONFIG_BASE_FULL=y
101CONFIG_FUTEX=y 123CONFIG_FUTEX=y
102CONFIG_ANON_INODES=y
103CONFIG_EPOLL=y 124CONFIG_EPOLL=y
104CONFIG_SIGNALFD=y 125CONFIG_SIGNALFD=y
105CONFIG_TIMERFD=y 126CONFIG_TIMERFD=y
106CONFIG_EVENTFD=y 127CONFIG_EVENTFD=y
107CONFIG_SHMEM=y 128CONFIG_SHMEM=y
108CONFIG_AIO=y 129CONFIG_AIO=y
130CONFIG_HAVE_PERF_EVENTS=y
131
132#
133# Kernel Performance Events And Counters
134#
135# CONFIG_PERF_EVENTS is not set
136# CONFIG_PERF_COUNTERS is not set
109CONFIG_VM_EVENT_COUNTERS=y 137CONFIG_VM_EVENT_COUNTERS=y
110CONFIG_PCI_QUIRKS=y 138CONFIG_PCI_QUIRKS=y
111CONFIG_SLUB_DEBUG=y 139CONFIG_SLUB_DEBUG=y
140CONFIG_COMPAT_BRK=y
112# CONFIG_SLAB is not set 141# CONFIG_SLAB is not set
113CONFIG_SLUB=y 142CONFIG_SLUB=y
114# CONFIG_SLOB is not set 143# CONFIG_SLOB is not set
@@ -120,6 +149,14 @@ CONFIG_HAVE_IOREMAP_PROT=y
120CONFIG_HAVE_KPROBES=y 149CONFIG_HAVE_KPROBES=y
121CONFIG_HAVE_KRETPROBES=y 150CONFIG_HAVE_KRETPROBES=y
122CONFIG_HAVE_ARCH_TRACEHOOK=y 151CONFIG_HAVE_ARCH_TRACEHOOK=y
152CONFIG_HAVE_DMA_ATTRS=y
153CONFIG_HAVE_DMA_API_DEBUG=y
154
155#
156# GCOV-based kernel profiling
157#
158# CONFIG_GCOV_KERNEL is not set
159# CONFIG_SLOW_WORK is not set
123# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 160# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
124CONFIG_SLABINFO=y 161CONFIG_SLABINFO=y
125CONFIG_RT_MUTEXES=y 162CONFIG_RT_MUTEXES=y
@@ -131,8 +168,7 @@ CONFIG_MODULE_UNLOAD=y
131# CONFIG_MODVERSIONS is not set 168# CONFIG_MODVERSIONS is not set
132# CONFIG_MODULE_SRCVERSION_ALL is not set 169# CONFIG_MODULE_SRCVERSION_ALL is not set
133CONFIG_BLOCK=y 170CONFIG_BLOCK=y
134CONFIG_LBD=y 171CONFIG_LBDAF=y
135# CONFIG_BLK_DEV_IO_TRACE is not set
136# CONFIG_BLK_DEV_BSG is not set 172# CONFIG_BLK_DEV_BSG is not set
137# CONFIG_BLK_DEV_INTEGRITY is not set 173# CONFIG_BLK_DEV_INTEGRITY is not set
138 174
@@ -140,19 +176,41 @@ CONFIG_LBD=y
140# IO Schedulers 176# IO Schedulers
141# 177#
142CONFIG_IOSCHED_NOOP=y 178CONFIG_IOSCHED_NOOP=y
143CONFIG_IOSCHED_AS=y
144CONFIG_IOSCHED_DEADLINE=y 179CONFIG_IOSCHED_DEADLINE=y
145CONFIG_IOSCHED_CFQ=y 180CONFIG_IOSCHED_CFQ=y
146CONFIG_DEFAULT_AS=y
147# CONFIG_DEFAULT_DEADLINE is not set 181# CONFIG_DEFAULT_DEADLINE is not set
148# CONFIG_DEFAULT_CFQ is not set 182CONFIG_DEFAULT_CFQ=y
149# CONFIG_DEFAULT_NOOP is not set 183# CONFIG_DEFAULT_NOOP is not set
150CONFIG_DEFAULT_IOSCHED="anticipatory" 184CONFIG_DEFAULT_IOSCHED="cfq"
151CONFIG_CLASSIC_RCU=y 185# CONFIG_INLINE_SPIN_TRYLOCK is not set
152# CONFIG_TREE_RCU is not set 186# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
153# CONFIG_PREEMPT_RCU is not set 187# CONFIG_INLINE_SPIN_LOCK is not set
154# CONFIG_TREE_RCU_TRACE is not set 188# CONFIG_INLINE_SPIN_LOCK_BH is not set
155# CONFIG_PREEMPT_RCU_TRACE is not set 189# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
191CONFIG_INLINE_SPIN_UNLOCK=y
192# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
193CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
194# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
195# CONFIG_INLINE_READ_TRYLOCK is not set
196# CONFIG_INLINE_READ_LOCK is not set
197# CONFIG_INLINE_READ_LOCK_BH is not set
198# CONFIG_INLINE_READ_LOCK_IRQ is not set
199# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
200CONFIG_INLINE_READ_UNLOCK=y
201# CONFIG_INLINE_READ_UNLOCK_BH is not set
202CONFIG_INLINE_READ_UNLOCK_IRQ=y
203# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_WRITE_TRYLOCK is not set
205# CONFIG_INLINE_WRITE_LOCK is not set
206# CONFIG_INLINE_WRITE_LOCK_BH is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
209CONFIG_INLINE_WRITE_UNLOCK=y
210# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
211CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
212# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
213# CONFIG_MUTEX_SPIN_ON_OWNER is not set
156# CONFIG_FREEZER is not set 214# CONFIG_FREEZER is not set
157# CONFIG_PPC4xx_PCI_EXPRESS is not set 215# CONFIG_PPC4xx_PCI_EXPRESS is not set
158 216
@@ -166,6 +224,7 @@ CONFIG_CLASSIC_RCU=y
166# CONFIG_ACADIA is not set 224# CONFIG_ACADIA is not set
167# CONFIG_EP405 is not set 225# CONFIG_EP405 is not set
168CONFIG_HCU4=y 226CONFIG_HCU4=y
227# CONFIG_HOTFOOT is not set
169# CONFIG_KILAUEA is not set 228# CONFIG_KILAUEA is not set
170# CONFIG_MAKALU is not set 229# CONFIG_MAKALU is not set
171# CONFIG_WALNUT is not set 230# CONFIG_WALNUT is not set
@@ -208,10 +267,12 @@ CONFIG_BINFMT_ELF=y
208# CONFIG_BINFMT_MISC is not set 267# CONFIG_BINFMT_MISC is not set
209# CONFIG_MATH_EMULATION is not set 268# CONFIG_MATH_EMULATION is not set
210# CONFIG_IOMMU_HELPER is not set 269# CONFIG_IOMMU_HELPER is not set
211CONFIG_PPC_NEED_DMA_SYNC_OPS=y 270# CONFIG_SWIOTLB is not set
212CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 271CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
213CONFIG_ARCH_HAS_WALK_MEMORY=y 272CONFIG_ARCH_HAS_WALK_MEMORY=y
214CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 273CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
274CONFIG_SPARSE_IRQ=y
275CONFIG_MAX_ACTIVE_REGIONS=32
215CONFIG_ARCH_FLATMEM_ENABLE=y 276CONFIG_ARCH_FLATMEM_ENABLE=y
216CONFIG_ARCH_POPULATES_NODE_MAP=y 277CONFIG_ARCH_POPULATES_NODE_MAP=y
217CONFIG_SELECT_MEMORY_MODEL=y 278CONFIG_SELECT_MEMORY_MODEL=y
@@ -227,10 +288,12 @@ CONFIG_MIGRATION=y
227CONFIG_ZONE_DMA_FLAG=1 288CONFIG_ZONE_DMA_FLAG=1
228CONFIG_BOUNCE=y 289CONFIG_BOUNCE=y
229CONFIG_VIRT_TO_BUS=y 290CONFIG_VIRT_TO_BUS=y
230CONFIG_UNEVICTABLE_LRU=y 291# CONFIG_KSM is not set
292CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
231CONFIG_PPC_4K_PAGES=y 293CONFIG_PPC_4K_PAGES=y
232# CONFIG_PPC_16K_PAGES is not set 294# CONFIG_PPC_16K_PAGES is not set
233# CONFIG_PPC_64K_PAGES is not set 295# CONFIG_PPC_64K_PAGES is not set
296# CONFIG_PPC_256K_PAGES is not set
234CONFIG_FORCE_MAX_ZONEORDER=11 297CONFIG_FORCE_MAX_ZONEORDER=11
235CONFIG_PROC_DEVICETREE=y 298CONFIG_PROC_DEVICETREE=y
236# CONFIG_CMDLINE_BOOL is not set 299# CONFIG_CMDLINE_BOOL is not set
@@ -255,6 +318,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
255# CONFIG_PCI_LEGACY is not set 318# CONFIG_PCI_LEGACY is not set
256# CONFIG_PCI_DEBUG is not set 319# CONFIG_PCI_DEBUG is not set
257# CONFIG_PCI_STUB is not set 320# CONFIG_PCI_STUB is not set
321# CONFIG_PCI_IOV is not set
258# CONFIG_PCCARD is not set 322# CONFIG_PCCARD is not set
259# CONFIG_HOTPLUG_PCI is not set 323# CONFIG_HOTPLUG_PCI is not set
260# CONFIG_HAS_RAPIDIO is not set 324# CONFIG_HAS_RAPIDIO is not set
@@ -272,14 +336,12 @@ CONFIG_PAGE_OFFSET=0xc0000000
272CONFIG_KERNEL_START=0xc0000000 336CONFIG_KERNEL_START=0xc0000000
273CONFIG_PHYSICAL_START=0x00000000 337CONFIG_PHYSICAL_START=0x00000000
274CONFIG_TASK_SIZE=0xc0000000 338CONFIG_TASK_SIZE=0xc0000000
275CONFIG_CONSISTENT_START=0xff100000
276CONFIG_CONSISTENT_SIZE=0x00200000 339CONFIG_CONSISTENT_SIZE=0x00200000
277CONFIG_NET=y 340CONFIG_NET=y
278 341
279# 342#
280# Networking options 343# Networking options
281# 344#
282CONFIG_COMPAT_NET_DEV_OPS=y
283CONFIG_PACKET=y 345CONFIG_PACKET=y
284# CONFIG_PACKET_MMAP is not set 346# CONFIG_PACKET_MMAP is not set
285CONFIG_UNIX=y 347CONFIG_UNIX=y
@@ -316,6 +378,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
316# CONFIG_NETFILTER is not set 378# CONFIG_NETFILTER is not set
317# CONFIG_IP_DCCP is not set 379# CONFIG_IP_DCCP is not set
318# CONFIG_IP_SCTP is not set 380# CONFIG_IP_SCTP is not set
381# CONFIG_RDS is not set
319# CONFIG_TIPC is not set 382# CONFIG_TIPC is not set
320# CONFIG_ATM is not set 383# CONFIG_ATM is not set
321# CONFIG_BRIDGE is not set 384# CONFIG_BRIDGE is not set
@@ -329,6 +392,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
329# CONFIG_LAPB is not set 392# CONFIG_LAPB is not set
330# CONFIG_ECONET is not set 393# CONFIG_ECONET is not set
331# CONFIG_WAN_ROUTER is not set 394# CONFIG_WAN_ROUTER is not set
395# CONFIG_PHONET is not set
396# CONFIG_IEEE802154 is not set
332# CONFIG_NET_SCHED is not set 397# CONFIG_NET_SCHED is not set
333# CONFIG_DCB is not set 398# CONFIG_DCB is not set
334 399
@@ -341,8 +406,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
341# CONFIG_IRDA is not set 406# CONFIG_IRDA is not set
342# CONFIG_BT is not set 407# CONFIG_BT is not set
343# CONFIG_AF_RXRPC is not set 408# CONFIG_AF_RXRPC is not set
344# CONFIG_PHONET is not set 409CONFIG_WIRELESS=y
345# CONFIG_WIRELESS is not set 410# CONFIG_CFG80211 is not set
411# CONFIG_LIB80211 is not set
412
413#
414# CFG80211 needs to be enabled for MAC80211
415#
346# CONFIG_WIMAX is not set 416# CONFIG_WIMAX is not set
347# CONFIG_RFKILL is not set 417# CONFIG_RFKILL is not set
348# CONFIG_NET_9P is not set 418# CONFIG_NET_9P is not set
@@ -355,6 +425,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
355# Generic Driver Options 425# Generic Driver Options
356# 426#
357CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 427CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
428# CONFIG_DEVTMPFS is not set
358CONFIG_STANDALONE=y 429CONFIG_STANDALONE=y
359CONFIG_PREVENT_FIRMWARE_BUILD=y 430CONFIG_PREVENT_FIRMWARE_BUILD=y
360CONFIG_FW_LOADER=y 431CONFIG_FW_LOADER=y
@@ -367,9 +438,9 @@ CONFIG_CONNECTOR=y
367CONFIG_PROC_EVENTS=y 438CONFIG_PROC_EVENTS=y
368CONFIG_MTD=y 439CONFIG_MTD=y
369# CONFIG_MTD_DEBUG is not set 440# CONFIG_MTD_DEBUG is not set
441# CONFIG_MTD_TESTS is not set
370# CONFIG_MTD_CONCAT is not set 442# CONFIG_MTD_CONCAT is not set
371CONFIG_MTD_PARTITIONS=y 443CONFIG_MTD_PARTITIONS=y
372# CONFIG_MTD_TESTS is not set
373# CONFIG_MTD_REDBOOT_PARTS is not set 444# CONFIG_MTD_REDBOOT_PARTS is not set
374CONFIG_MTD_CMDLINE_PARTS=y 445CONFIG_MTD_CMDLINE_PARTS=y
375CONFIG_MTD_OF_PARTS=y 446CONFIG_MTD_OF_PARTS=y
@@ -445,7 +516,6 @@ CONFIG_MTD_PHYSMAP_OF=y
445# LPDDR flash memory drivers 516# LPDDR flash memory drivers
446# 517#
447# CONFIG_MTD_LPDDR is not set 518# CONFIG_MTD_LPDDR is not set
448# CONFIG_MTD_QINFO_PROBE is not set
449 519
450# 520#
451# UBI - Unsorted block images 521# UBI - Unsorted block images
@@ -461,6 +531,7 @@ CONFIG_BLK_DEV=y
461# CONFIG_BLK_DEV_UMEM is not set 531# CONFIG_BLK_DEV_UMEM is not set
462# CONFIG_BLK_DEV_COW_COMMON is not set 532# CONFIG_BLK_DEV_COW_COMMON is not set
463# CONFIG_BLK_DEV_LOOP is not set 533# CONFIG_BLK_DEV_LOOP is not set
534# CONFIG_BLK_DEV_DRBD is not set
464# CONFIG_BLK_DEV_NBD is not set 535# CONFIG_BLK_DEV_NBD is not set
465# CONFIG_BLK_DEV_SX8 is not set 536# CONFIG_BLK_DEV_SX8 is not set
466CONFIG_BLK_DEV_RAM=y 537CONFIG_BLK_DEV_RAM=y
@@ -473,12 +544,17 @@ CONFIG_BLK_DEV_RAM_SIZE=35000
473# CONFIG_BLK_DEV_HD is not set 544# CONFIG_BLK_DEV_HD is not set
474CONFIG_MISC_DEVICES=y 545CONFIG_MISC_DEVICES=y
475# CONFIG_PHANTOM is not set 546# CONFIG_PHANTOM is not set
476# CONFIG_EEPROM_93CX6 is not set
477# CONFIG_SGI_IOC4 is not set 547# CONFIG_SGI_IOC4 is not set
478# CONFIG_TIFM_CORE is not set 548# CONFIG_TIFM_CORE is not set
479# CONFIG_ENCLOSURE_SERVICES is not set 549# CONFIG_ENCLOSURE_SERVICES is not set
480# CONFIG_HP_ILO is not set 550# CONFIG_HP_ILO is not set
481# CONFIG_C2PORT is not set 551# CONFIG_C2PORT is not set
552
553#
554# EEPROM support
555#
556# CONFIG_EEPROM_93CX6 is not set
557# CONFIG_CB710_CORE is not set
482CONFIG_HAVE_IDE=y 558CONFIG_HAVE_IDE=y
483# CONFIG_IDE is not set 559# CONFIG_IDE is not set
484 560
@@ -498,7 +574,11 @@ CONFIG_HAVE_IDE=y
498# 574#
499 575
500# 576#
501# Enable only one of the two stacks, unless you know what you are doing 577# You can enable one or both FireWire driver stacks.
578#
579
580#
581# See the help texts for more information.
502# 582#
503# CONFIG_FIREWIRE is not set 583# CONFIG_FIREWIRE is not set
504# CONFIG_IEEE1394 is not set 584# CONFIG_IEEE1394 is not set
@@ -519,6 +599,8 @@ CONFIG_NET_ETHERNET=y
519# CONFIG_SUNGEM is not set 599# CONFIG_SUNGEM is not set
520# CONFIG_CASSINI is not set 600# CONFIG_CASSINI is not set
521# CONFIG_NET_VENDOR_3COM is not set 601# CONFIG_NET_VENDOR_3COM is not set
602# CONFIG_ETHOC is not set
603# CONFIG_DNET is not set
522# CONFIG_NET_TULIP is not set 604# CONFIG_NET_TULIP is not set
523# CONFIG_HP100 is not set 605# CONFIG_HP100 is not set
524CONFIG_IBM_NEW_EMAC=y 606CONFIG_IBM_NEW_EMAC=y
@@ -537,7 +619,10 @@ CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0
537# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 619# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
538# CONFIG_NET_PCI is not set 620# CONFIG_NET_PCI is not set
539# CONFIG_B44 is not set 621# CONFIG_B44 is not set
622# CONFIG_KS8842 is not set
623# CONFIG_KS8851_MLL is not set
540# CONFIG_ATL2 is not set 624# CONFIG_ATL2 is not set
625# CONFIG_XILINX_EMACLITE is not set
541CONFIG_NETDEV_1000=y 626CONFIG_NETDEV_1000=y
542# CONFIG_ACENIC is not set 627# CONFIG_ACENIC is not set
543# CONFIG_DL2K is not set 628# CONFIG_DL2K is not set
@@ -545,6 +630,7 @@ CONFIG_NETDEV_1000=y
545# CONFIG_E1000E is not set 630# CONFIG_E1000E is not set
546# CONFIG_IP1000 is not set 631# CONFIG_IP1000 is not set
547# CONFIG_IGB is not set 632# CONFIG_IGB is not set
633# CONFIG_IGBVF is not set
548# CONFIG_NS83820 is not set 634# CONFIG_NS83820 is not set
549# CONFIG_HAMACHI is not set 635# CONFIG_HAMACHI is not set
550# CONFIG_YELLOWFIN is not set 636# CONFIG_YELLOWFIN is not set
@@ -555,9 +641,13 @@ CONFIG_NETDEV_1000=y
555# CONFIG_VIA_VELOCITY is not set 641# CONFIG_VIA_VELOCITY is not set
556# CONFIG_TIGON3 is not set 642# CONFIG_TIGON3 is not set
557# CONFIG_BNX2 is not set 643# CONFIG_BNX2 is not set
644# CONFIG_CNIC is not set
645# CONFIG_MV643XX_ETH is not set
646# CONFIG_XILINX_LL_TEMAC is not set
558# CONFIG_QLA3XXX is not set 647# CONFIG_QLA3XXX is not set
559# CONFIG_ATL1 is not set 648# CONFIG_ATL1 is not set
560# CONFIG_ATL1E is not set 649# CONFIG_ATL1E is not set
650# CONFIG_ATL1C is not set
561# CONFIG_JME is not set 651# CONFIG_JME is not set
562CONFIG_NETDEV_10000=y 652CONFIG_NETDEV_10000=y
563# CONFIG_CHELSIO_T1 is not set 653# CONFIG_CHELSIO_T1 is not set
@@ -567,6 +657,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
567# CONFIG_IXGBE is not set 657# CONFIG_IXGBE is not set
568# CONFIG_IXGB is not set 658# CONFIG_IXGB is not set
569# CONFIG_S2IO is not set 659# CONFIG_S2IO is not set
660# CONFIG_VXGE is not set
570# CONFIG_MYRI10GE is not set 661# CONFIG_MYRI10GE is not set
571# CONFIG_NETXEN_NIC is not set 662# CONFIG_NETXEN_NIC is not set
572# CONFIG_NIU is not set 663# CONFIG_NIU is not set
@@ -576,14 +667,13 @@ CONFIG_CHELSIO_T3_DEPENDS=y
576# CONFIG_BNX2X is not set 667# CONFIG_BNX2X is not set
577# CONFIG_QLGE is not set 668# CONFIG_QLGE is not set
578# CONFIG_SFC is not set 669# CONFIG_SFC is not set
670# CONFIG_BE2NET is not set
579# CONFIG_TR is not set 671# CONFIG_TR is not set
580 672CONFIG_WLAN=y
581# 673# CONFIG_AIRO is not set
582# Wireless LAN 674# CONFIG_ATMEL is not set
583# 675# CONFIG_PRISM54 is not set
584# CONFIG_WLAN_PRE80211 is not set 676# CONFIG_HOSTAP is not set
585# CONFIG_WLAN_80211 is not set
586# CONFIG_IWLWIFI_LEDS is not set
587 677
588# 678#
589# Enable WiMAX (Networking options) to see the WiMAX drivers 679# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -596,6 +686,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
596# CONFIG_NETCONSOLE is not set 686# CONFIG_NETCONSOLE is not set
597# CONFIG_NETPOLL is not set 687# CONFIG_NETPOLL is not set
598# CONFIG_NET_POLL_CONTROLLER is not set 688# CONFIG_NET_POLL_CONTROLLER is not set
689# CONFIG_VMXNET3 is not set
599# CONFIG_ISDN is not set 690# CONFIG_ISDN is not set
600# CONFIG_PHONE is not set 691# CONFIG_PHONE is not set
601 692
@@ -641,6 +732,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
641# CONFIG_SERIAL_JSM is not set 732# CONFIG_SERIAL_JSM is not set
642CONFIG_SERIAL_OF_PLATFORM=y 733CONFIG_SERIAL_OF_PLATFORM=y
643# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set 734# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
735# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
644CONFIG_UNIX98_PTYS=y 736CONFIG_UNIX98_PTYS=y
645# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 737# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
646CONFIG_LEGACY_PTYS=y 738CONFIG_LEGACY_PTYS=y
@@ -657,13 +749,17 @@ CONFIG_LEGACY_PTY_COUNT=256
657CONFIG_DEVPORT=y 749CONFIG_DEVPORT=y
658# CONFIG_I2C is not set 750# CONFIG_I2C is not set
659# CONFIG_SPI is not set 751# CONFIG_SPI is not set
752
753#
754# PPS support
755#
756# CONFIG_PPS is not set
660CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 757CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
661# CONFIG_GPIOLIB is not set 758# CONFIG_GPIOLIB is not set
662# CONFIG_W1 is not set 759# CONFIG_W1 is not set
663# CONFIG_POWER_SUPPLY is not set 760# CONFIG_POWER_SUPPLY is not set
664# CONFIG_HWMON is not set 761# CONFIG_HWMON is not set
665# CONFIG_THERMAL is not set 762# CONFIG_THERMAL is not set
666# CONFIG_THERMAL_HWMON is not set
667# CONFIG_WATCHDOG is not set 763# CONFIG_WATCHDOG is not set
668CONFIG_SSB_POSSIBLE=y 764CONFIG_SSB_POSSIBLE=y
669 765
@@ -680,27 +776,13 @@ CONFIG_SSB_POSSIBLE=y
680# CONFIG_HTC_PASIC3 is not set 776# CONFIG_HTC_PASIC3 is not set
681# CONFIG_MFD_TMIO is not set 777# CONFIG_MFD_TMIO is not set
682# CONFIG_REGULATOR is not set 778# CONFIG_REGULATOR is not set
683 779# CONFIG_MEDIA_SUPPORT is not set
684#
685# Multimedia devices
686#
687
688#
689# Multimedia core support
690#
691# CONFIG_VIDEO_DEV is not set
692# CONFIG_DVB_CORE is not set
693# CONFIG_VIDEO_MEDIA is not set
694
695#
696# Multimedia drivers
697#
698# CONFIG_DAB is not set
699 780
700# 781#
701# Graphics support 782# Graphics support
702# 783#
703# CONFIG_AGP is not set 784# CONFIG_AGP is not set
785CONFIG_VGA_ARB=y
704# CONFIG_DRM is not set 786# CONFIG_DRM is not set
705# CONFIG_VGASTATE is not set 787# CONFIG_VGASTATE is not set
706CONFIG_VIDEO_OUTPUT_CONTROL=m 788CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -722,7 +804,12 @@ CONFIG_VIDEO_OUTPUT_CONTROL=m
722# CONFIG_EDAC is not set 804# CONFIG_EDAC is not set
723# CONFIG_RTC_CLASS is not set 805# CONFIG_RTC_CLASS is not set
724# CONFIG_DMADEVICES is not set 806# CONFIG_DMADEVICES is not set
807# CONFIG_AUXDISPLAY is not set
725# CONFIG_UIO is not set 808# CONFIG_UIO is not set
809
810#
811# TI VLYNQ
812#
726# CONFIG_STAGING is not set 813# CONFIG_STAGING is not set
727 814
728# 815#
@@ -733,14 +820,17 @@ CONFIG_EXT2_FS=y
733# CONFIG_EXT2_FS_XIP is not set 820# CONFIG_EXT2_FS_XIP is not set
734# CONFIG_EXT3_FS is not set 821# CONFIG_EXT3_FS is not set
735# CONFIG_EXT4_FS is not set 822# CONFIG_EXT4_FS is not set
823CONFIG_EXT4_USE_FOR_EXT23=y
736# CONFIG_REISERFS_FS is not set 824# CONFIG_REISERFS_FS is not set
737# CONFIG_JFS_FS is not set 825# CONFIG_JFS_FS is not set
738# CONFIG_FS_POSIX_ACL is not set 826# CONFIG_FS_POSIX_ACL is not set
739CONFIG_FILE_LOCKING=y
740# CONFIG_XFS_FS is not set 827# CONFIG_XFS_FS is not set
741# CONFIG_GFS2_FS is not set 828# CONFIG_GFS2_FS is not set
742# CONFIG_OCFS2_FS is not set 829# CONFIG_OCFS2_FS is not set
743# CONFIG_BTRFS_FS is not set 830# CONFIG_BTRFS_FS is not set
831# CONFIG_NILFS2_FS is not set
832CONFIG_FILE_LOCKING=y
833CONFIG_FSNOTIFY=y
744CONFIG_DNOTIFY=y 834CONFIG_DNOTIFY=y
745CONFIG_INOTIFY=y 835CONFIG_INOTIFY=y
746CONFIG_INOTIFY_USER=y 836CONFIG_INOTIFY_USER=y
@@ -750,6 +840,11 @@ CONFIG_INOTIFY_USER=y
750# CONFIG_FUSE_FS is not set 840# CONFIG_FUSE_FS is not set
751 841
752# 842#
843# Caches
844#
845# CONFIG_FSCACHE is not set
846
847#
753# CD-ROM/DVD Filesystems 848# CD-ROM/DVD Filesystems
754# 849#
755# CONFIG_ISO9660_FS is not set 850# CONFIG_ISO9660_FS is not set
@@ -804,7 +899,6 @@ CONFIG_LOCKD=y
804CONFIG_LOCKD_V4=y 899CONFIG_LOCKD_V4=y
805CONFIG_NFS_COMMON=y 900CONFIG_NFS_COMMON=y
806CONFIG_SUNRPC=y 901CONFIG_SUNRPC=y
807# CONFIG_SUNRPC_REGISTER_V4 is not set
808# CONFIG_RPCSEC_GSS_KRB5 is not set 902# CONFIG_RPCSEC_GSS_KRB5 is not set
809# CONFIG_RPCSEC_GSS_SPKM3 is not set 903# CONFIG_RPCSEC_GSS_SPKM3 is not set
810# CONFIG_SMB_FS is not set 904# CONFIG_SMB_FS is not set
@@ -820,6 +914,7 @@ CONFIG_SUNRPC=y
820CONFIG_MSDOS_PARTITION=y 914CONFIG_MSDOS_PARTITION=y
821# CONFIG_NLS is not set 915# CONFIG_NLS is not set
822# CONFIG_DLM is not set 916# CONFIG_DLM is not set
917# CONFIG_BINARY_PRINTF is not set
823 918
824# 919#
825# Library routines 920# Library routines
@@ -834,11 +929,13 @@ CONFIG_CRC32=y
834# CONFIG_CRC7 is not set 929# CONFIG_CRC7 is not set
835# CONFIG_LIBCRC32C is not set 930# CONFIG_LIBCRC32C is not set
836CONFIG_ZLIB_INFLATE=y 931CONFIG_ZLIB_INFLATE=y
837CONFIG_PLIST=y 932CONFIG_DECOMPRESS_GZIP=y
838CONFIG_HAS_IOMEM=y 933CONFIG_HAS_IOMEM=y
839CONFIG_HAS_IOPORT=y 934CONFIG_HAS_IOPORT=y
840CONFIG_HAS_DMA=y 935CONFIG_HAS_DMA=y
841CONFIG_HAVE_LMB=y 936CONFIG_HAVE_LMB=y
937CONFIG_NLATTR=y
938CONFIG_GENERIC_ATOMIC64=y
842 939
843# 940#
844# Kernel hacking 941# Kernel hacking
@@ -848,6 +945,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
848CONFIG_ENABLE_MUST_CHECK=y 945CONFIG_ENABLE_MUST_CHECK=y
849CONFIG_FRAME_WARN=1024 946CONFIG_FRAME_WARN=1024
850CONFIG_MAGIC_SYSRQ=y 947CONFIG_MAGIC_SYSRQ=y
948# CONFIG_STRIP_ASM_SYMS is not set
851# CONFIG_UNUSED_SYMBOLS is not set 949# CONFIG_UNUSED_SYMBOLS is not set
852CONFIG_DEBUG_FS=y 950CONFIG_DEBUG_FS=y
853# CONFIG_HEADERS_CHECK is not set 951# CONFIG_HEADERS_CHECK is not set
@@ -856,16 +954,23 @@ CONFIG_DEBUG_KERNEL=y
856CONFIG_DETECT_SOFTLOCKUP=y 954CONFIG_DETECT_SOFTLOCKUP=y
857# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 955# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
858CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 956CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
957CONFIG_DETECT_HUNG_TASK=y
958# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
959CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
859CONFIG_SCHED_DEBUG=y 960CONFIG_SCHED_DEBUG=y
860# CONFIG_SCHEDSTATS is not set 961# CONFIG_SCHEDSTATS is not set
861# CONFIG_TIMER_STATS is not set 962# CONFIG_TIMER_STATS is not set
862# CONFIG_DEBUG_OBJECTS is not set 963# CONFIG_DEBUG_OBJECTS is not set
863# CONFIG_SLUB_DEBUG_ON is not set 964# CONFIG_SLUB_DEBUG_ON is not set
864# CONFIG_SLUB_STATS is not set 965# CONFIG_SLUB_STATS is not set
966# CONFIG_DEBUG_KMEMLEAK is not set
865# CONFIG_DEBUG_RT_MUTEXES is not set 967# CONFIG_DEBUG_RT_MUTEXES is not set
866# CONFIG_RT_MUTEX_TESTER is not set 968# CONFIG_RT_MUTEX_TESTER is not set
867# CONFIG_DEBUG_SPINLOCK is not set 969# CONFIG_DEBUG_SPINLOCK is not set
868# CONFIG_DEBUG_MUTEXES is not set 970# CONFIG_DEBUG_MUTEXES is not set
971# CONFIG_DEBUG_LOCK_ALLOC is not set
972# CONFIG_PROVE_LOCKING is not set
973# CONFIG_LOCK_STAT is not set
869# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 974# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
870# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 975# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
871# CONFIG_DEBUG_KOBJECT is not set 976# CONFIG_DEBUG_KOBJECT is not set
@@ -877,35 +982,45 @@ CONFIG_DEBUG_BUGVERBOSE=y
877# CONFIG_DEBUG_LIST is not set 982# CONFIG_DEBUG_LIST is not set
878# CONFIG_DEBUG_SG is not set 983# CONFIG_DEBUG_SG is not set
879# CONFIG_DEBUG_NOTIFIERS is not set 984# CONFIG_DEBUG_NOTIFIERS is not set
880# CONFIG_BOOT_PRINTK_DELAY is not set 985# CONFIG_DEBUG_CREDENTIALS is not set
881# CONFIG_RCU_TORTURE_TEST is not set 986# CONFIG_RCU_TORTURE_TEST is not set
882# CONFIG_RCU_CPU_STALL_DETECTOR is not set 987# CONFIG_RCU_CPU_STALL_DETECTOR is not set
883# CONFIG_BACKTRACE_SELF_TEST is not set 988# CONFIG_BACKTRACE_SELF_TEST is not set
884# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 989# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
990# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
885# CONFIG_FAULT_INJECTION is not set 991# CONFIG_FAULT_INJECTION is not set
886# CONFIG_LATENCYTOP is not set 992# CONFIG_LATENCYTOP is not set
887CONFIG_SYSCTL_SYSCALL_CHECK=y 993CONFIG_SYSCTL_SYSCALL_CHECK=y
994# CONFIG_DEBUG_PAGEALLOC is not set
888CONFIG_HAVE_FUNCTION_TRACER=y 995CONFIG_HAVE_FUNCTION_TRACER=y
996CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
889CONFIG_HAVE_DYNAMIC_FTRACE=y 997CONFIG_HAVE_DYNAMIC_FTRACE=y
890CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 998CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
891 999CONFIG_TRACING_SUPPORT=y
892# 1000CONFIG_FTRACE=y
893# Tracers
894#
895# CONFIG_FUNCTION_TRACER is not set 1001# CONFIG_FUNCTION_TRACER is not set
1002# CONFIG_IRQSOFF_TRACER is not set
896# CONFIG_SCHED_TRACER is not set 1003# CONFIG_SCHED_TRACER is not set
897# CONFIG_CONTEXT_SWITCH_TRACER is not set 1004# CONFIG_ENABLE_DEFAULT_TRACERS is not set
898# CONFIG_BOOT_TRACER is not set 1005# CONFIG_BOOT_TRACER is not set
899# CONFIG_TRACE_BRANCH_PROFILING is not set 1006CONFIG_BRANCH_PROFILE_NONE=y
1007# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1008# CONFIG_PROFILE_ALL_BRANCHES is not set
900# CONFIG_STACK_TRACER is not set 1009# CONFIG_STACK_TRACER is not set
901# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1010# CONFIG_KMEMTRACE is not set
1011# CONFIG_WORKQUEUE_TRACER is not set
1012# CONFIG_BLK_DEV_IO_TRACE is not set
1013# CONFIG_DYNAMIC_DEBUG is not set
1014# CONFIG_DMA_API_DEBUG is not set
902# CONFIG_SAMPLES is not set 1015# CONFIG_SAMPLES is not set
903CONFIG_HAVE_ARCH_KGDB=y 1016CONFIG_HAVE_ARCH_KGDB=y
904# CONFIG_KGDB is not set 1017# CONFIG_KGDB is not set
1018# CONFIG_PPC_DISABLE_WERROR is not set
1019CONFIG_PPC_WERROR=y
905CONFIG_PRINT_STACK_DEPTH=64 1020CONFIG_PRINT_STACK_DEPTH=64
906# CONFIG_DEBUG_STACKOVERFLOW is not set 1021# CONFIG_DEBUG_STACKOVERFLOW is not set
907# CONFIG_DEBUG_STACK_USAGE is not set 1022# CONFIG_DEBUG_STACK_USAGE is not set
908# CONFIG_DEBUG_PAGEALLOC is not set 1023# CONFIG_PPC_EMULATED_STATS is not set
909# CONFIG_CODE_PATCHING_SELFTEST is not set 1024# CONFIG_CODE_PATCHING_SELFTEST is not set
910# CONFIG_FTR_FIXUP_SELFTEST is not set 1025# CONFIG_FTR_FIXUP_SELFTEST is not set
911# CONFIG_MSI_BITMAP_SELFTEST is not set 1026# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -921,13 +1036,16 @@ CONFIG_PRINT_STACK_DEPTH=64
921# CONFIG_KEYS is not set 1036# CONFIG_KEYS is not set
922# CONFIG_SECURITY is not set 1037# CONFIG_SECURITY is not set
923# CONFIG_SECURITYFS is not set 1038# CONFIG_SECURITYFS is not set
924# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1039# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1040# CONFIG_DEFAULT_SECURITY_SMACK is not set
1041# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1042CONFIG_DEFAULT_SECURITY_DAC=y
1043CONFIG_DEFAULT_SECURITY=""
925CONFIG_CRYPTO=y 1044CONFIG_CRYPTO=y
926 1045
927# 1046#
928# Crypto core or helper 1047# Crypto core or helper
929# 1048#
930# CONFIG_CRYPTO_FIPS is not set
931CONFIG_CRYPTO_ALGAPI=y 1049CONFIG_CRYPTO_ALGAPI=y
932CONFIG_CRYPTO_ALGAPI2=y 1050CONFIG_CRYPTO_ALGAPI2=y
933CONFIG_CRYPTO_AEAD2=y 1051CONFIG_CRYPTO_AEAD2=y
@@ -936,10 +1054,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
936CONFIG_CRYPTO_HASH=y 1054CONFIG_CRYPTO_HASH=y
937CONFIG_CRYPTO_HASH2=y 1055CONFIG_CRYPTO_HASH2=y
938CONFIG_CRYPTO_RNG2=y 1056CONFIG_CRYPTO_RNG2=y
1057CONFIG_CRYPTO_PCOMP=y
939CONFIG_CRYPTO_MANAGER=y 1058CONFIG_CRYPTO_MANAGER=y
940CONFIG_CRYPTO_MANAGER2=y 1059CONFIG_CRYPTO_MANAGER2=y
941# CONFIG_CRYPTO_GF128MUL is not set 1060# CONFIG_CRYPTO_GF128MUL is not set
942# CONFIG_CRYPTO_NULL is not set 1061# CONFIG_CRYPTO_NULL is not set
1062CONFIG_CRYPTO_WORKQUEUE=y
943# CONFIG_CRYPTO_CRYPTD is not set 1063# CONFIG_CRYPTO_CRYPTD is not set
944# CONFIG_CRYPTO_AUTHENC is not set 1064# CONFIG_CRYPTO_AUTHENC is not set
945# CONFIG_CRYPTO_TEST is not set 1065# CONFIG_CRYPTO_TEST is not set
@@ -967,11 +1087,13 @@ CONFIG_CRYPTO_PCBC=y
967# 1087#
968# CONFIG_CRYPTO_HMAC is not set 1088# CONFIG_CRYPTO_HMAC is not set
969# CONFIG_CRYPTO_XCBC is not set 1089# CONFIG_CRYPTO_XCBC is not set
1090# CONFIG_CRYPTO_VMAC is not set
970 1091
971# 1092#
972# Digest 1093# Digest
973# 1094#
974# CONFIG_CRYPTO_CRC32C is not set 1095# CONFIG_CRYPTO_CRC32C is not set
1096# CONFIG_CRYPTO_GHASH is not set
975# CONFIG_CRYPTO_MD4 is not set 1097# CONFIG_CRYPTO_MD4 is not set
976CONFIG_CRYPTO_MD5=y 1098CONFIG_CRYPTO_MD5=y
977# CONFIG_CRYPTO_MICHAEL_MIC is not set 1099# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1008,6 +1130,7 @@ CONFIG_CRYPTO_DES=y
1008# Compression 1130# Compression
1009# 1131#
1010# CONFIG_CRYPTO_DEFLATE is not set 1132# CONFIG_CRYPTO_DEFLATE is not set
1133# CONFIG_CRYPTO_ZLIB is not set
1011# CONFIG_CRYPTO_LZO is not set 1134# CONFIG_CRYPTO_LZO is not set
1012 1135
1013# 1136#
@@ -1016,5 +1139,6 @@ CONFIG_CRYPTO_DES=y
1016# CONFIG_CRYPTO_ANSI_CPRNG is not set 1139# CONFIG_CRYPTO_ANSI_CPRNG is not set
1017CONFIG_CRYPTO_HW=y 1140CONFIG_CRYPTO_HW=y
1018# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1141# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1142# CONFIG_CRYPTO_DEV_PPC4XX is not set
1019# CONFIG_PPC_CLOCK is not set 1143# CONFIG_PPC_CLOCK is not set
1020# CONFIG_VIRTUALIZATION is not set 1144# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/40x/kilauea_defconfig b/arch/powerpc/configs/40x/kilauea_defconfig
index 9a05ec0ec312..19fbcb075376 100644
--- a/arch/powerpc/configs/40x/kilauea_defconfig
+++ b/arch/powerpc/configs/40x/kilauea_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.33-rc1
4# Wed Jul 29 13:28:37 2009 4# Mon Jan 4 15:51:23 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,6 +16,7 @@ CONFIG_40x=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_4xx=y 17CONFIG_4xx=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,7 +30,9 @@ 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
35CONFIG_NR_IRQS=512
33CONFIG_STACKTRACE_SUPPORT=y 36CONFIG_STACKTRACE_SUPPORT=y
34CONFIG_HAVE_LATENCYTOP_SUPPORT=y 37CONFIG_HAVE_LATENCYTOP_SUPPORT=y
35CONFIG_TRACE_IRQFLAGS_SUPPORT=y 38CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -52,6 +55,7 @@ CONFIG_AUDIT_ARCH=y
52CONFIG_GENERIC_BUG=y 55CONFIG_GENERIC_BUG=y
53CONFIG_DTC=y 56CONFIG_DTC=y
54# CONFIG_DEFAULT_UIMAGE is not set 57# CONFIG_DEFAULT_UIMAGE is not set
58CONFIG_ARCH_HIBERNATION_POSSIBLE=y
55CONFIG_PPC_DCR_NATIVE=y 59CONFIG_PPC_DCR_NATIVE=y
56# CONFIG_PPC_DCR_MMIO is not set 60# CONFIG_PPC_DCR_MMIO is not set
57CONFIG_PPC_DCR=y 61CONFIG_PPC_DCR=y
@@ -79,11 +83,13 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
79# 83#
80# RCU Subsystem 84# RCU Subsystem
81# 85#
82CONFIG_CLASSIC_RCU=y 86CONFIG_TREE_RCU=y
83# CONFIG_TREE_RCU is not set 87# CONFIG_TREE_PREEMPT_RCU is not set
84# CONFIG_PREEMPT_RCU is not set 88# CONFIG_TINY_RCU is not set
89# CONFIG_RCU_TRACE is not set
90CONFIG_RCU_FANOUT=32
91# CONFIG_RCU_FANOUT_EXACT is not set
85# CONFIG_TREE_RCU_TRACE is not set 92# CONFIG_TREE_RCU_TRACE is not set
86# CONFIG_PREEMPT_RCU_TRACE is not set
87# CONFIG_IKCONFIG is not set 93# CONFIG_IKCONFIG is not set
88CONFIG_LOG_BUF_SHIFT=14 94CONFIG_LOG_BUF_SHIFT=14
89CONFIG_GROUP_SCHED=y 95CONFIG_GROUP_SCHED=y
@@ -121,22 +127,21 @@ CONFIG_TIMERFD=y
121CONFIG_EVENTFD=y 127CONFIG_EVENTFD=y
122CONFIG_SHMEM=y 128CONFIG_SHMEM=y
123CONFIG_AIO=y 129CONFIG_AIO=y
124CONFIG_HAVE_PERF_COUNTERS=y 130CONFIG_HAVE_PERF_EVENTS=y
125 131
126# 132#
127# Performance Counters 133# Kernel Performance Events And Counters
128# 134#
135# CONFIG_PERF_EVENTS is not set
129# CONFIG_PERF_COUNTERS is not set 136# CONFIG_PERF_COUNTERS is not set
130CONFIG_VM_EVENT_COUNTERS=y 137CONFIG_VM_EVENT_COUNTERS=y
131CONFIG_PCI_QUIRKS=y 138CONFIG_PCI_QUIRKS=y
132CONFIG_SLUB_DEBUG=y 139CONFIG_SLUB_DEBUG=y
133# CONFIG_STRIP_ASM_SYMS is not set
134CONFIG_COMPAT_BRK=y 140CONFIG_COMPAT_BRK=y
135# CONFIG_SLAB is not set 141# CONFIG_SLAB is not set
136CONFIG_SLUB=y 142CONFIG_SLUB=y
137# CONFIG_SLOB is not set 143# CONFIG_SLOB is not set
138# CONFIG_PROFILING is not set 144# CONFIG_PROFILING is not set
139# CONFIG_MARKERS is not set
140CONFIG_HAVE_OPROFILE=y 145CONFIG_HAVE_OPROFILE=y
141# CONFIG_KPROBES is not set 146# CONFIG_KPROBES is not set
142CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 147CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -144,6 +149,8 @@ CONFIG_HAVE_IOREMAP_PROT=y
144CONFIG_HAVE_KPROBES=y 149CONFIG_HAVE_KPROBES=y
145CONFIG_HAVE_KRETPROBES=y 150CONFIG_HAVE_KRETPROBES=y
146CONFIG_HAVE_ARCH_TRACEHOOK=y 151CONFIG_HAVE_ARCH_TRACEHOOK=y
152CONFIG_HAVE_DMA_ATTRS=y
153CONFIG_HAVE_DMA_API_DEBUG=y
147 154
148# 155#
149# GCOV-based kernel profiling 156# GCOV-based kernel profiling
@@ -169,14 +176,41 @@ CONFIG_LBDAF=y
169# IO Schedulers 176# IO Schedulers
170# 177#
171CONFIG_IOSCHED_NOOP=y 178CONFIG_IOSCHED_NOOP=y
172CONFIG_IOSCHED_AS=y
173CONFIG_IOSCHED_DEADLINE=y 179CONFIG_IOSCHED_DEADLINE=y
174CONFIG_IOSCHED_CFQ=y 180CONFIG_IOSCHED_CFQ=y
175CONFIG_DEFAULT_AS=y
176# CONFIG_DEFAULT_DEADLINE is not set 181# CONFIG_DEFAULT_DEADLINE is not set
177# CONFIG_DEFAULT_CFQ is not set 182CONFIG_DEFAULT_CFQ=y
178# CONFIG_DEFAULT_NOOP is not set 183# CONFIG_DEFAULT_NOOP is not set
179CONFIG_DEFAULT_IOSCHED="anticipatory" 184CONFIG_DEFAULT_IOSCHED="cfq"
185# CONFIG_INLINE_SPIN_TRYLOCK is not set
186# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
187# CONFIG_INLINE_SPIN_LOCK is not set
188# CONFIG_INLINE_SPIN_LOCK_BH is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
191CONFIG_INLINE_SPIN_UNLOCK=y
192# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
193CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
194# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
195# CONFIG_INLINE_READ_TRYLOCK is not set
196# CONFIG_INLINE_READ_LOCK is not set
197# CONFIG_INLINE_READ_LOCK_BH is not set
198# CONFIG_INLINE_READ_LOCK_IRQ is not set
199# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
200CONFIG_INLINE_READ_UNLOCK=y
201# CONFIG_INLINE_READ_UNLOCK_BH is not set
202CONFIG_INLINE_READ_UNLOCK_IRQ=y
203# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_WRITE_TRYLOCK is not set
205# CONFIG_INLINE_WRITE_LOCK is not set
206# CONFIG_INLINE_WRITE_LOCK_BH is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
209CONFIG_INLINE_WRITE_UNLOCK=y
210# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
211CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
212# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
213# CONFIG_MUTEX_SPIN_ON_OWNER is not set
180# CONFIG_FREEZER is not set 214# CONFIG_FREEZER is not set
181CONFIG_PPC4xx_PCI_EXPRESS=y 215CONFIG_PPC4xx_PCI_EXPRESS=y
182 216
@@ -190,6 +224,7 @@ CONFIG_PPC4xx_PCI_EXPRESS=y
190# CONFIG_ACADIA is not set 224# CONFIG_ACADIA is not set
191# CONFIG_EP405 is not set 225# CONFIG_EP405 is not set
192# CONFIG_HCU4 is not set 226# CONFIG_HCU4 is not set
227# CONFIG_HOTFOOT is not set
193CONFIG_KILAUEA=y 228CONFIG_KILAUEA=y
194# CONFIG_MAKALU is not set 229# CONFIG_MAKALU is not set
195# CONFIG_WALNUT is not set 230# CONFIG_WALNUT is not set
@@ -233,10 +268,11 @@ CONFIG_BINFMT_ELF=y
233# CONFIG_MATH_EMULATION is not set 268# CONFIG_MATH_EMULATION is not set
234# CONFIG_IOMMU_HELPER is not set 269# CONFIG_IOMMU_HELPER is not set
235# CONFIG_SWIOTLB is not set 270# CONFIG_SWIOTLB is not set
236CONFIG_PPC_NEED_DMA_SYNC_OPS=y
237CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 271CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
238CONFIG_ARCH_HAS_WALK_MEMORY=y 272CONFIG_ARCH_HAS_WALK_MEMORY=y
239CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 273CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
274CONFIG_SPARSE_IRQ=y
275CONFIG_MAX_ACTIVE_REGIONS=32
240CONFIG_ARCH_FLATMEM_ENABLE=y 276CONFIG_ARCH_FLATMEM_ENABLE=y
241CONFIG_ARCH_POPULATES_NODE_MAP=y 277CONFIG_ARCH_POPULATES_NODE_MAP=y
242CONFIG_SELECT_MEMORY_MODEL=y 278CONFIG_SELECT_MEMORY_MODEL=y
@@ -252,8 +288,7 @@ CONFIG_MIGRATION=y
252CONFIG_ZONE_DMA_FLAG=1 288CONFIG_ZONE_DMA_FLAG=1
253CONFIG_BOUNCE=y 289CONFIG_BOUNCE=y
254CONFIG_VIRT_TO_BUS=y 290CONFIG_VIRT_TO_BUS=y
255CONFIG_HAVE_MLOCK=y 291# CONFIG_KSM is not set
256CONFIG_HAVE_MLOCKED_PAGE_BIT=y
257CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 292CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
258CONFIG_PPC_4K_PAGES=y 293CONFIG_PPC_4K_PAGES=y
259# CONFIG_PPC_16K_PAGES is not set 294# CONFIG_PPC_16K_PAGES is not set
@@ -343,6 +378,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
343# CONFIG_NETFILTER is not set 378# CONFIG_NETFILTER is not set
344# CONFIG_IP_DCCP is not set 379# CONFIG_IP_DCCP is not set
345# CONFIG_IP_SCTP is not set 380# CONFIG_IP_SCTP is not set
381# CONFIG_RDS is not set
346# CONFIG_TIPC is not set 382# CONFIG_TIPC is not set
347# CONFIG_ATM is not set 383# CONFIG_ATM is not set
348# CONFIG_BRIDGE is not set 384# CONFIG_BRIDGE is not set
@@ -370,7 +406,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
370# CONFIG_IRDA is not set 406# CONFIG_IRDA is not set
371# CONFIG_BT is not set 407# CONFIG_BT is not set
372# CONFIG_AF_RXRPC is not set 408# CONFIG_AF_RXRPC is not set
373# CONFIG_WIRELESS is not set 409CONFIG_WIRELESS=y
410# CONFIG_CFG80211 is not set
411# CONFIG_LIB80211 is not set
412
413#
414# CFG80211 needs to be enabled for MAC80211
415#
374# CONFIG_WIMAX is not set 416# CONFIG_WIMAX is not set
375# CONFIG_RFKILL is not set 417# CONFIG_RFKILL is not set
376# CONFIG_NET_9P is not set 418# CONFIG_NET_9P is not set
@@ -383,6 +425,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
383# Generic Driver Options 425# Generic Driver Options
384# 426#
385CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 427CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
428# CONFIG_DEVTMPFS is not set
386CONFIG_STANDALONE=y 429CONFIG_STANDALONE=y
387CONFIG_PREVENT_FIRMWARE_BUILD=y 430CONFIG_PREVENT_FIRMWARE_BUILD=y
388CONFIG_FW_LOADER=y 431CONFIG_FW_LOADER=y
@@ -395,9 +438,9 @@ CONFIG_CONNECTOR=y
395CONFIG_PROC_EVENTS=y 438CONFIG_PROC_EVENTS=y
396CONFIG_MTD=y 439CONFIG_MTD=y
397# CONFIG_MTD_DEBUG is not set 440# CONFIG_MTD_DEBUG is not set
441# CONFIG_MTD_TESTS is not set
398# CONFIG_MTD_CONCAT is not set 442# CONFIG_MTD_CONCAT is not set
399CONFIG_MTD_PARTITIONS=y 443CONFIG_MTD_PARTITIONS=y
400# CONFIG_MTD_TESTS is not set
401# CONFIG_MTD_REDBOOT_PARTS is not set 444# CONFIG_MTD_REDBOOT_PARTS is not set
402CONFIG_MTD_CMDLINE_PARTS=y 445CONFIG_MTD_CMDLINE_PARTS=y
403CONFIG_MTD_OF_PARTS=y 446CONFIG_MTD_OF_PARTS=y
@@ -498,6 +541,7 @@ CONFIG_BLK_DEV=y
498# CONFIG_BLK_DEV_UMEM is not set 541# CONFIG_BLK_DEV_UMEM is not set
499# CONFIG_BLK_DEV_COW_COMMON is not set 542# CONFIG_BLK_DEV_COW_COMMON is not set
500# CONFIG_BLK_DEV_LOOP is not set 543# CONFIG_BLK_DEV_LOOP is not set
544# CONFIG_BLK_DEV_DRBD is not set
501# CONFIG_BLK_DEV_NBD is not set 545# CONFIG_BLK_DEV_NBD is not set
502# CONFIG_BLK_DEV_SX8 is not set 546# CONFIG_BLK_DEV_SX8 is not set
503CONFIG_BLK_DEV_RAM=y 547CONFIG_BLK_DEV_RAM=y
@@ -574,16 +618,17 @@ CONFIG_IBM_NEW_EMAC_EMAC4=y
574# CONFIG_NET_PCI is not set 618# CONFIG_NET_PCI is not set
575# CONFIG_B44 is not set 619# CONFIG_B44 is not set
576# CONFIG_KS8842 is not set 620# CONFIG_KS8842 is not set
621# CONFIG_KS8851_MLL is not set
577# CONFIG_ATL2 is not set 622# CONFIG_ATL2 is not set
623# CONFIG_XILINX_EMACLITE is not set
578# CONFIG_NETDEV_1000 is not set 624# CONFIG_NETDEV_1000 is not set
579# CONFIG_NETDEV_10000 is not set 625# CONFIG_NETDEV_10000 is not set
580# CONFIG_TR is not set 626# CONFIG_TR is not set
581 627CONFIG_WLAN=y
582# 628# CONFIG_AIRO is not set
583# Wireless LAN 629# CONFIG_ATMEL is not set
584# 630# CONFIG_PRISM54 is not set
585# CONFIG_WLAN_PRE80211 is not set 631# CONFIG_HOSTAP is not set
586# CONFIG_WLAN_80211 is not set
587 632
588# 633#
589# Enable WiMAX (Networking options) to see the WiMAX drivers 634# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -596,6 +641,7 @@ CONFIG_IBM_NEW_EMAC_EMAC4=y
596# CONFIG_NETCONSOLE is not set 641# CONFIG_NETCONSOLE is not set
597# CONFIG_NETPOLL is not set 642# CONFIG_NETPOLL is not set
598# CONFIG_NET_POLL_CONTROLLER is not set 643# CONFIG_NET_POLL_CONTROLLER is not set
644# CONFIG_VMXNET3 is not set
599# CONFIG_ISDN is not set 645# CONFIG_ISDN is not set
600# CONFIG_PHONE is not set 646# CONFIG_PHONE is not set
601 647
@@ -641,6 +687,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
641# CONFIG_SERIAL_JSM is not set 687# CONFIG_SERIAL_JSM is not set
642CONFIG_SERIAL_OF_PLATFORM=y 688CONFIG_SERIAL_OF_PLATFORM=y
643# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set 689# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
690# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
644CONFIG_UNIX98_PTYS=y 691CONFIG_UNIX98_PTYS=y
645# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 692# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
646CONFIG_LEGACY_PTYS=y 693CONFIG_LEGACY_PTYS=y
@@ -656,6 +703,7 @@ CONFIG_LEGACY_PTY_COUNT=256
656CONFIG_DEVPORT=y 703CONFIG_DEVPORT=y
657CONFIG_I2C=y 704CONFIG_I2C=y
658CONFIG_I2C_BOARDINFO=y 705CONFIG_I2C_BOARDINFO=y
706CONFIG_I2C_COMPAT=y
659CONFIG_I2C_CHARDEV=y 707CONFIG_I2C_CHARDEV=y
660CONFIG_I2C_HELPER_AUTO=y 708CONFIG_I2C_HELPER_AUTO=y
661 709
@@ -696,11 +744,6 @@ CONFIG_I2C_IBM_IIC=y
696# CONFIG_I2C_TAOS_EVM is not set 744# CONFIG_I2C_TAOS_EVM is not set
697 745
698# 746#
699# Graphics adapter I2C/DDC channel drivers
700#
701# CONFIG_I2C_VOODOO3 is not set
702
703#
704# Other I2C/SMBus bus drivers 747# Other I2C/SMBus bus drivers
705# 748#
706# CONFIG_I2C_PCA_PLATFORM is not set 749# CONFIG_I2C_PCA_PLATFORM is not set
@@ -709,10 +752,6 @@ CONFIG_I2C_IBM_IIC=y
709# 752#
710# Miscellaneous I2C Chip support 753# Miscellaneous I2C Chip support
711# 754#
712# CONFIG_DS1682 is not set
713# CONFIG_SENSORS_PCF8574 is not set
714# CONFIG_PCF8575 is not set
715# CONFIG_SENSORS_PCA9539 is not set
716# CONFIG_SENSORS_TSL2550 is not set 755# CONFIG_SENSORS_TSL2550 is not set
717# CONFIG_I2C_DEBUG_CORE is not set 756# CONFIG_I2C_DEBUG_CORE is not set
718# CONFIG_I2C_DEBUG_ALGO is not set 757# CONFIG_I2C_DEBUG_ALGO is not set
@@ -730,6 +769,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
730# CONFIG_POWER_SUPPLY is not set 769# CONFIG_POWER_SUPPLY is not set
731CONFIG_HWMON=y 770CONFIG_HWMON=y
732# CONFIG_HWMON_VID is not set 771# CONFIG_HWMON_VID is not set
772# CONFIG_HWMON_DEBUG_CHIP is not set
773
774#
775# Native drivers
776#
733# CONFIG_SENSORS_AD7414 is not set 777# CONFIG_SENSORS_AD7414 is not set
734# CONFIG_SENSORS_AD7418 is not set 778# CONFIG_SENSORS_AD7418 is not set
735# CONFIG_SENSORS_ADM1021 is not set 779# CONFIG_SENSORS_ADM1021 is not set
@@ -753,6 +797,7 @@ CONFIG_HWMON=y
753# CONFIG_SENSORS_GL520SM is not set 797# CONFIG_SENSORS_GL520SM is not set
754# CONFIG_SENSORS_IT87 is not set 798# CONFIG_SENSORS_IT87 is not set
755# CONFIG_SENSORS_LM63 is not set 799# CONFIG_SENSORS_LM63 is not set
800# CONFIG_SENSORS_LM73 is not set
756CONFIG_SENSORS_LM75=y 801CONFIG_SENSORS_LM75=y
757# CONFIG_SENSORS_LM77 is not set 802# CONFIG_SENSORS_LM77 is not set
758# CONFIG_SENSORS_LM78 is not set 803# CONFIG_SENSORS_LM78 is not set
@@ -779,6 +824,7 @@ CONFIG_SENSORS_LM75=y
779# CONFIG_SENSORS_ADS7828 is not set 824# CONFIG_SENSORS_ADS7828 is not set
780# CONFIG_SENSORS_THMC50 is not set 825# CONFIG_SENSORS_THMC50 is not set
781# CONFIG_SENSORS_TMP401 is not set 826# CONFIG_SENSORS_TMP401 is not set
827# CONFIG_SENSORS_TMP421 is not set
782# CONFIG_SENSORS_VIA686A is not set 828# CONFIG_SENSORS_VIA686A is not set
783# CONFIG_SENSORS_VT1211 is not set 829# CONFIG_SENSORS_VT1211 is not set
784# CONFIG_SENSORS_VT8231 is not set 830# CONFIG_SENSORS_VT8231 is not set
@@ -790,7 +836,6 @@ CONFIG_SENSORS_LM75=y
790# CONFIG_SENSORS_W83L786NG is not set 836# CONFIG_SENSORS_W83L786NG is not set
791# CONFIG_SENSORS_W83627HF is not set 837# CONFIG_SENSORS_W83627HF is not set
792# CONFIG_SENSORS_W83627EHF is not set 838# CONFIG_SENSORS_W83627EHF is not set
793# CONFIG_HWMON_DEBUG_CHIP is not set
794CONFIG_THERMAL=y 839CONFIG_THERMAL=y
795# CONFIG_THERMAL_HWMON is not set 840# CONFIG_THERMAL_HWMON is not set
796# CONFIG_WATCHDOG is not set 841# CONFIG_WATCHDOG is not set
@@ -810,10 +855,13 @@ CONFIG_SSB_POSSIBLE=y
810# CONFIG_TWL4030_CORE is not set 855# CONFIG_TWL4030_CORE is not set
811# CONFIG_MFD_TMIO is not set 856# CONFIG_MFD_TMIO is not set
812# CONFIG_PMIC_DA903X is not set 857# CONFIG_PMIC_DA903X is not set
858# CONFIG_PMIC_ADP5520 is not set
813# CONFIG_MFD_WM8400 is not set 859# CONFIG_MFD_WM8400 is not set
860# CONFIG_MFD_WM831X is not set
814# CONFIG_MFD_WM8350_I2C is not set 861# CONFIG_MFD_WM8350_I2C is not set
815# CONFIG_MFD_PCF50633 is not set 862# CONFIG_MFD_PCF50633 is not set
816# CONFIG_AB3100_CORE is not set 863# CONFIG_AB3100_CORE is not set
864# CONFIG_MFD_88PM8607 is not set
817# CONFIG_REGULATOR is not set 865# CONFIG_REGULATOR is not set
818# CONFIG_MEDIA_SUPPORT is not set 866# CONFIG_MEDIA_SUPPORT is not set
819 867
@@ -821,6 +869,7 @@ CONFIG_SSB_POSSIBLE=y
821# Graphics support 869# Graphics support
822# 870#
823# CONFIG_AGP is not set 871# CONFIG_AGP is not set
872CONFIG_VGA_ARB=y
824# CONFIG_DRM is not set 873# CONFIG_DRM is not set
825# CONFIG_VGASTATE is not set 874# CONFIG_VGASTATE is not set
826# CONFIG_VIDEO_OUTPUT_CONTROL is not set 875# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -868,6 +917,7 @@ CONFIG_RTC_DRV_DS1307=y
868# CONFIG_RTC_DRV_PCF8563 is not set 917# CONFIG_RTC_DRV_PCF8563 is not set
869# CONFIG_RTC_DRV_PCF8583 is not set 918# CONFIG_RTC_DRV_PCF8583 is not set
870# CONFIG_RTC_DRV_M41T80 is not set 919# CONFIG_RTC_DRV_M41T80 is not set
920# CONFIG_RTC_DRV_BQ32K is not set
871# CONFIG_RTC_DRV_S35390A is not set 921# CONFIG_RTC_DRV_S35390A is not set
872# CONFIG_RTC_DRV_FM3130 is not set 922# CONFIG_RTC_DRV_FM3130 is not set
873# CONFIG_RTC_DRV_RX8581 is not set 923# CONFIG_RTC_DRV_RX8581 is not set
@@ -889,7 +939,9 @@ CONFIG_RTC_DRV_DS1307=y
889# CONFIG_RTC_DRV_M48T86 is not set 939# CONFIG_RTC_DRV_M48T86 is not set
890# CONFIG_RTC_DRV_M48T35 is not set 940# CONFIG_RTC_DRV_M48T35 is not set
891# CONFIG_RTC_DRV_M48T59 is not set 941# CONFIG_RTC_DRV_M48T59 is not set
942# CONFIG_RTC_DRV_MSM6242 is not set
892# CONFIG_RTC_DRV_BQ4802 is not set 943# CONFIG_RTC_DRV_BQ4802 is not set
944# CONFIG_RTC_DRV_RP5C01 is not set
893# CONFIG_RTC_DRV_V3020 is not set 945# CONFIG_RTC_DRV_V3020 is not set
894 946
895# 947#
@@ -913,6 +965,7 @@ CONFIG_EXT2_FS=y
913# CONFIG_EXT2_FS_XIP is not set 965# CONFIG_EXT2_FS_XIP is not set
914# CONFIG_EXT3_FS is not set 966# CONFIG_EXT3_FS is not set
915# CONFIG_EXT4_FS is not set 967# CONFIG_EXT4_FS is not set
968CONFIG_EXT4_USE_FOR_EXT23=y
916# CONFIG_REISERFS_FS is not set 969# CONFIG_REISERFS_FS is not set
917# CONFIG_JFS_FS is not set 970# CONFIG_JFS_FS is not set
918# CONFIG_FS_POSIX_ACL is not set 971# CONFIG_FS_POSIX_ACL is not set
@@ -920,6 +973,7 @@ CONFIG_EXT2_FS=y
920# CONFIG_GFS2_FS is not set 973# CONFIG_GFS2_FS is not set
921# CONFIG_OCFS2_FS is not set 974# CONFIG_OCFS2_FS is not set
922# CONFIG_BTRFS_FS is not set 975# CONFIG_BTRFS_FS is not set
976# CONFIG_NILFS2_FS is not set
923CONFIG_FILE_LOCKING=y 977CONFIG_FILE_LOCKING=y
924CONFIG_FSNOTIFY=y 978CONFIG_FSNOTIFY=y
925CONFIG_DNOTIFY=y 979CONFIG_DNOTIFY=y
@@ -979,7 +1033,6 @@ CONFIG_CRAMFS=y
979# CONFIG_ROMFS_FS is not set 1033# CONFIG_ROMFS_FS is not set
980# CONFIG_SYSV_FS is not set 1034# CONFIG_SYSV_FS is not set
981# CONFIG_UFS_FS is not set 1035# CONFIG_UFS_FS is not set
982# CONFIG_NILFS2_FS is not set
983CONFIG_NETWORK_FILESYSTEMS=y 1036CONFIG_NETWORK_FILESYSTEMS=y
984CONFIG_NFS_FS=y 1037CONFIG_NFS_FS=y
985CONFIG_NFS_V3=y 1038CONFIG_NFS_V3=y
@@ -1037,6 +1090,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1037CONFIG_ENABLE_MUST_CHECK=y 1090CONFIG_ENABLE_MUST_CHECK=y
1038CONFIG_FRAME_WARN=1024 1091CONFIG_FRAME_WARN=1024
1039CONFIG_MAGIC_SYSRQ=y 1092CONFIG_MAGIC_SYSRQ=y
1093# CONFIG_STRIP_ASM_SYMS is not set
1040# CONFIG_UNUSED_SYMBOLS is not set 1094# CONFIG_UNUSED_SYMBOLS is not set
1041CONFIG_DEBUG_FS=y 1095CONFIG_DEBUG_FS=y
1042# CONFIG_HEADERS_CHECK is not set 1096# CONFIG_HEADERS_CHECK is not set
@@ -1054,6 +1108,7 @@ CONFIG_SCHED_DEBUG=y
1054# CONFIG_DEBUG_OBJECTS is not set 1108# CONFIG_DEBUG_OBJECTS is not set
1055# CONFIG_SLUB_DEBUG_ON is not set 1109# CONFIG_SLUB_DEBUG_ON is not set
1056# CONFIG_SLUB_STATS is not set 1110# CONFIG_SLUB_STATS is not set
1111# CONFIG_DEBUG_KMEMLEAK is not set
1057# CONFIG_DEBUG_RT_MUTEXES is not set 1112# CONFIG_DEBUG_RT_MUTEXES is not set
1058# CONFIG_RT_MUTEX_TESTER is not set 1113# CONFIG_RT_MUTEX_TESTER is not set
1059# CONFIG_DEBUG_SPINLOCK is not set 1114# CONFIG_DEBUG_SPINLOCK is not set
@@ -1072,10 +1127,12 @@ CONFIG_DEBUG_BUGVERBOSE=y
1072# CONFIG_DEBUG_LIST is not set 1127# CONFIG_DEBUG_LIST is not set
1073# CONFIG_DEBUG_SG is not set 1128# CONFIG_DEBUG_SG is not set
1074# CONFIG_DEBUG_NOTIFIERS is not set 1129# CONFIG_DEBUG_NOTIFIERS is not set
1130# CONFIG_DEBUG_CREDENTIALS is not set
1075# CONFIG_RCU_TORTURE_TEST is not set 1131# CONFIG_RCU_TORTURE_TEST is not set
1076# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1132# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1077# CONFIG_BACKTRACE_SELF_TEST is not set 1133# CONFIG_BACKTRACE_SELF_TEST is not set
1078# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1134# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1135# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1079# CONFIG_FAULT_INJECTION is not set 1136# CONFIG_FAULT_INJECTION is not set
1080# CONFIG_LATENCYTOP is not set 1137# CONFIG_LATENCYTOP is not set
1081CONFIG_SYSCTL_SYSCALL_CHECK=y 1138CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1099,10 +1156,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
1099# CONFIG_WORKQUEUE_TRACER is not set 1156# CONFIG_WORKQUEUE_TRACER is not set
1100# CONFIG_BLK_DEV_IO_TRACE is not set 1157# CONFIG_BLK_DEV_IO_TRACE is not set
1101# CONFIG_DYNAMIC_DEBUG is not set 1158# CONFIG_DYNAMIC_DEBUG is not set
1159# CONFIG_DMA_API_DEBUG is not set
1102# CONFIG_SAMPLES is not set 1160# CONFIG_SAMPLES is not set
1103CONFIG_HAVE_ARCH_KGDB=y 1161CONFIG_HAVE_ARCH_KGDB=y
1104# CONFIG_KGDB is not set 1162# CONFIG_KGDB is not set
1105# CONFIG_KMEMCHECK is not set
1106# CONFIG_PPC_DISABLE_WERROR is not set 1163# CONFIG_PPC_DISABLE_WERROR is not set
1107CONFIG_PPC_WERROR=y 1164CONFIG_PPC_WERROR=y
1108CONFIG_PRINT_STACK_DEPTH=64 1165CONFIG_PRINT_STACK_DEPTH=64
@@ -1124,13 +1181,16 @@ CONFIG_PRINT_STACK_DEPTH=64
1124# CONFIG_KEYS is not set 1181# CONFIG_KEYS is not set
1125# CONFIG_SECURITY is not set 1182# CONFIG_SECURITY is not set
1126# CONFIG_SECURITYFS is not set 1183# CONFIG_SECURITYFS is not set
1127# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1184# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1185# CONFIG_DEFAULT_SECURITY_SMACK is not set
1186# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1187CONFIG_DEFAULT_SECURITY_DAC=y
1188CONFIG_DEFAULT_SECURITY=""
1128CONFIG_CRYPTO=y 1189CONFIG_CRYPTO=y
1129 1190
1130# 1191#
1131# Crypto core or helper 1192# Crypto core or helper
1132# 1193#
1133# CONFIG_CRYPTO_FIPS is not set
1134CONFIG_CRYPTO_ALGAPI=y 1194CONFIG_CRYPTO_ALGAPI=y
1135CONFIG_CRYPTO_ALGAPI2=y 1195CONFIG_CRYPTO_ALGAPI2=y
1136CONFIG_CRYPTO_AEAD2=y 1196CONFIG_CRYPTO_AEAD2=y
@@ -1172,11 +1232,13 @@ CONFIG_CRYPTO_PCBC=y
1172# 1232#
1173# CONFIG_CRYPTO_HMAC is not set 1233# CONFIG_CRYPTO_HMAC is not set
1174# CONFIG_CRYPTO_XCBC is not set 1234# CONFIG_CRYPTO_XCBC is not set
1235# CONFIG_CRYPTO_VMAC is not set
1175 1236
1176# 1237#
1177# Digest 1238# Digest
1178# 1239#
1179# CONFIG_CRYPTO_CRC32C is not set 1240# CONFIG_CRYPTO_CRC32C is not set
1241# CONFIG_CRYPTO_GHASH is not set
1180# CONFIG_CRYPTO_MD4 is not set 1242# CONFIG_CRYPTO_MD4 is not set
1181CONFIG_CRYPTO_MD5=y 1243CONFIG_CRYPTO_MD5=y
1182# CONFIG_CRYPTO_MICHAEL_MIC is not set 1244# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/40x/makalu_defconfig b/arch/powerpc/configs/40x/makalu_defconfig
index 146747547873..eb41cd695979 100644
--- a/arch/powerpc/configs/40x/makalu_defconfig
+++ b/arch/powerpc/configs/40x/makalu_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.30-rc7 3# Linux kernel version: 2.6.33-rc1
4# Wed Jun 3 09:11:02 2009 4# Mon Jan 4 15:55:12 2010
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#
11# CONFIG_6xx is not set 11# CONFIG_PPC_BOOK3S_32 is not set
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
14CONFIG_40x=y 14CONFIG_40x=y
@@ -16,6 +16,7 @@ CONFIG_40x=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_4xx=y 17CONFIG_4xx=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,14 +30,16 @@ 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
35CONFIG_NR_IRQS=512
33CONFIG_STACKTRACE_SUPPORT=y 36CONFIG_STACKTRACE_SUPPORT=y
34CONFIG_HAVE_LATENCYTOP_SUPPORT=y 37CONFIG_HAVE_LATENCYTOP_SUPPORT=y
38CONFIG_TRACE_IRQFLAGS_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y 39CONFIG_LOCKDEP_SUPPORT=y
36CONFIG_RWSEM_XCHGADD_ALGORITHM=y 40CONFIG_RWSEM_XCHGADD_ALGORITHM=y
37CONFIG_ARCH_HAS_ILOG2_U32=y 41CONFIG_ARCH_HAS_ILOG2_U32=y
38CONFIG_GENERIC_HWEIGHT=y 42CONFIG_GENERIC_HWEIGHT=y
39CONFIG_GENERIC_CALIBRATE_DELAY=y
40CONFIG_GENERIC_FIND_NEXT_BIT=y 43CONFIG_GENERIC_FIND_NEXT_BIT=y
41# CONFIG_ARCH_NO_VIRT_TO_BUS is not set 44# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
42CONFIG_PPC=y 45CONFIG_PPC=y
@@ -52,11 +55,13 @@ CONFIG_AUDIT_ARCH=y
52CONFIG_GENERIC_BUG=y 55CONFIG_GENERIC_BUG=y
53CONFIG_DTC=y 56CONFIG_DTC=y
54# CONFIG_DEFAULT_UIMAGE is not set 57# CONFIG_DEFAULT_UIMAGE is not set
58CONFIG_ARCH_HIBERNATION_POSSIBLE=y
55CONFIG_PPC_DCR_NATIVE=y 59CONFIG_PPC_DCR_NATIVE=y
56# CONFIG_PPC_DCR_MMIO is not set 60# CONFIG_PPC_DCR_MMIO is not set
57CONFIG_PPC_DCR=y 61CONFIG_PPC_DCR=y
58CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 62CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
59CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 63CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
64CONFIG_CONSTRUCTORS=y
60 65
61# 66#
62# General setup 67# General setup
@@ -78,11 +83,13 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
78# 83#
79# RCU Subsystem 84# RCU Subsystem
80# 85#
81CONFIG_CLASSIC_RCU=y 86CONFIG_TREE_RCU=y
82# CONFIG_TREE_RCU is not set 87# CONFIG_TREE_PREEMPT_RCU is not set
83# CONFIG_PREEMPT_RCU is not set 88# CONFIG_TINY_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
@@ -108,7 +115,6 @@ CONFIG_SYSCTL_SYSCALL=y
108CONFIG_KALLSYMS=y 115CONFIG_KALLSYMS=y
109CONFIG_KALLSYMS_ALL=y 116CONFIG_KALLSYMS_ALL=y
110CONFIG_KALLSYMS_EXTRA_PASS=y 117CONFIG_KALLSYMS_EXTRA_PASS=y
111# CONFIG_STRIP_ASM_SYMS is not set
112CONFIG_HOTPLUG=y 118CONFIG_HOTPLUG=y
113CONFIG_PRINTK=y 119CONFIG_PRINTK=y
114CONFIG_BUG=y 120CONFIG_BUG=y
@@ -121,6 +127,13 @@ CONFIG_TIMERFD=y
121CONFIG_EVENTFD=y 127CONFIG_EVENTFD=y
122CONFIG_SHMEM=y 128CONFIG_SHMEM=y
123CONFIG_AIO=y 129CONFIG_AIO=y
130CONFIG_HAVE_PERF_EVENTS=y
131
132#
133# Kernel Performance Events And Counters
134#
135# CONFIG_PERF_EVENTS is not set
136# CONFIG_PERF_COUNTERS is not set
124CONFIG_VM_EVENT_COUNTERS=y 137CONFIG_VM_EVENT_COUNTERS=y
125CONFIG_PCI_QUIRKS=y 138CONFIG_PCI_QUIRKS=y
126CONFIG_SLUB_DEBUG=y 139CONFIG_SLUB_DEBUG=y
@@ -129,7 +142,6 @@ CONFIG_COMPAT_BRK=y
129CONFIG_SLUB=y 142CONFIG_SLUB=y
130# CONFIG_SLOB is not set 143# CONFIG_SLOB is not set
131# CONFIG_PROFILING is not set 144# CONFIG_PROFILING is not set
132# CONFIG_MARKERS is not set
133CONFIG_HAVE_OPROFILE=y 145CONFIG_HAVE_OPROFILE=y
134# CONFIG_KPROBES is not set 146# CONFIG_KPROBES is not set
135CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 147CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -137,6 +149,13 @@ CONFIG_HAVE_IOREMAP_PROT=y
137CONFIG_HAVE_KPROBES=y 149CONFIG_HAVE_KPROBES=y
138CONFIG_HAVE_KRETPROBES=y 150CONFIG_HAVE_KRETPROBES=y
139CONFIG_HAVE_ARCH_TRACEHOOK=y 151CONFIG_HAVE_ARCH_TRACEHOOK=y
152CONFIG_HAVE_DMA_ATTRS=y
153CONFIG_HAVE_DMA_API_DEBUG=y
154
155#
156# GCOV-based kernel profiling
157#
158# CONFIG_GCOV_KERNEL is not set
140# CONFIG_SLOW_WORK is not set 159# CONFIG_SLOW_WORK is not set
141# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 160# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
142CONFIG_SLABINFO=y 161CONFIG_SLABINFO=y
@@ -149,7 +168,7 @@ CONFIG_MODULE_UNLOAD=y
149# CONFIG_MODVERSIONS is not set 168# CONFIG_MODVERSIONS is not set
150# CONFIG_MODULE_SRCVERSION_ALL is not set 169# CONFIG_MODULE_SRCVERSION_ALL is not set
151CONFIG_BLOCK=y 170CONFIG_BLOCK=y
152CONFIG_LBD=y 171CONFIG_LBDAF=y
153# CONFIG_BLK_DEV_BSG is not set 172# CONFIG_BLK_DEV_BSG is not set
154# CONFIG_BLK_DEV_INTEGRITY is not set 173# CONFIG_BLK_DEV_INTEGRITY is not set
155 174
@@ -157,14 +176,41 @@ CONFIG_LBD=y
157# IO Schedulers 176# IO Schedulers
158# 177#
159CONFIG_IOSCHED_NOOP=y 178CONFIG_IOSCHED_NOOP=y
160CONFIG_IOSCHED_AS=y
161CONFIG_IOSCHED_DEADLINE=y 179CONFIG_IOSCHED_DEADLINE=y
162CONFIG_IOSCHED_CFQ=y 180CONFIG_IOSCHED_CFQ=y
163CONFIG_DEFAULT_AS=y
164# CONFIG_DEFAULT_DEADLINE is not set 181# CONFIG_DEFAULT_DEADLINE is not set
165# CONFIG_DEFAULT_CFQ is not set 182CONFIG_DEFAULT_CFQ=y
166# CONFIG_DEFAULT_NOOP is not set 183# CONFIG_DEFAULT_NOOP is not set
167CONFIG_DEFAULT_IOSCHED="anticipatory" 184CONFIG_DEFAULT_IOSCHED="cfq"
185# CONFIG_INLINE_SPIN_TRYLOCK is not set
186# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
187# CONFIG_INLINE_SPIN_LOCK is not set
188# CONFIG_INLINE_SPIN_LOCK_BH is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
191CONFIG_INLINE_SPIN_UNLOCK=y
192# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
193CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
194# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
195# CONFIG_INLINE_READ_TRYLOCK is not set
196# CONFIG_INLINE_READ_LOCK is not set
197# CONFIG_INLINE_READ_LOCK_BH is not set
198# CONFIG_INLINE_READ_LOCK_IRQ is not set
199# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
200CONFIG_INLINE_READ_UNLOCK=y
201# CONFIG_INLINE_READ_UNLOCK_BH is not set
202CONFIG_INLINE_READ_UNLOCK_IRQ=y
203# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_WRITE_TRYLOCK is not set
205# CONFIG_INLINE_WRITE_LOCK is not set
206# CONFIG_INLINE_WRITE_LOCK_BH is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
209CONFIG_INLINE_WRITE_UNLOCK=y
210# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
211CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
212# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
213# CONFIG_MUTEX_SPIN_ON_OWNER is not set
168# CONFIG_FREEZER is not set 214# CONFIG_FREEZER is not set
169CONFIG_PPC4xx_PCI_EXPRESS=y 215CONFIG_PPC4xx_PCI_EXPRESS=y
170 216
@@ -178,6 +224,7 @@ CONFIG_PPC4xx_PCI_EXPRESS=y
178# CONFIG_ACADIA is not set 224# CONFIG_ACADIA is not set
179# CONFIG_EP405 is not set 225# CONFIG_EP405 is not set
180# CONFIG_HCU4 is not set 226# CONFIG_HCU4 is not set
227# CONFIG_HOTFOOT is not set
181# CONFIG_KILAUEA is not set 228# CONFIG_KILAUEA is not set
182CONFIG_MAKALU=y 229CONFIG_MAKALU=y
183# CONFIG_WALNUT is not set 230# CONFIG_WALNUT is not set
@@ -220,10 +267,12 @@ CONFIG_BINFMT_ELF=y
220# CONFIG_BINFMT_MISC is not set 267# CONFIG_BINFMT_MISC is not set
221# CONFIG_MATH_EMULATION is not set 268# CONFIG_MATH_EMULATION is not set
222# CONFIG_IOMMU_HELPER is not set 269# CONFIG_IOMMU_HELPER is not set
223CONFIG_PPC_NEED_DMA_SYNC_OPS=y 270# CONFIG_SWIOTLB is not set
224CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 271CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
225CONFIG_ARCH_HAS_WALK_MEMORY=y 272CONFIG_ARCH_HAS_WALK_MEMORY=y
226CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 273CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
274CONFIG_SPARSE_IRQ=y
275CONFIG_MAX_ACTIVE_REGIONS=32
227CONFIG_ARCH_FLATMEM_ENABLE=y 276CONFIG_ARCH_FLATMEM_ENABLE=y
228CONFIG_ARCH_POPULATES_NODE_MAP=y 277CONFIG_ARCH_POPULATES_NODE_MAP=y
229CONFIG_SELECT_MEMORY_MODEL=y 278CONFIG_SELECT_MEMORY_MODEL=y
@@ -239,9 +288,8 @@ CONFIG_MIGRATION=y
239CONFIG_ZONE_DMA_FLAG=1 288CONFIG_ZONE_DMA_FLAG=1
240CONFIG_BOUNCE=y 289CONFIG_BOUNCE=y
241CONFIG_VIRT_TO_BUS=y 290CONFIG_VIRT_TO_BUS=y
242CONFIG_UNEVICTABLE_LRU=y 291# CONFIG_KSM is not set
243CONFIG_HAVE_MLOCK=y 292CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
244CONFIG_HAVE_MLOCKED_PAGE_BIT=y
245CONFIG_PPC_4K_PAGES=y 293CONFIG_PPC_4K_PAGES=y
246# CONFIG_PPC_16K_PAGES is not set 294# CONFIG_PPC_16K_PAGES is not set
247# CONFIG_PPC_64K_PAGES is not set 295# CONFIG_PPC_64K_PAGES is not set
@@ -330,6 +378,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
330# CONFIG_NETFILTER is not set 378# CONFIG_NETFILTER is not set
331# CONFIG_IP_DCCP is not set 379# CONFIG_IP_DCCP is not set
332# CONFIG_IP_SCTP is not set 380# CONFIG_IP_SCTP is not set
381# CONFIG_RDS is not set
333# CONFIG_TIPC is not set 382# CONFIG_TIPC is not set
334# CONFIG_ATM is not set 383# CONFIG_ATM is not set
335# CONFIG_BRIDGE is not set 384# CONFIG_BRIDGE is not set
@@ -344,6 +393,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
344# CONFIG_ECONET is not set 393# CONFIG_ECONET is not set
345# CONFIG_WAN_ROUTER is not set 394# CONFIG_WAN_ROUTER is not set
346# CONFIG_PHONET is not set 395# CONFIG_PHONET is not set
396# CONFIG_IEEE802154 is not set
347# CONFIG_NET_SCHED is not set 397# CONFIG_NET_SCHED is not set
348# CONFIG_DCB is not set 398# CONFIG_DCB is not set
349 399
@@ -356,7 +406,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
356# CONFIG_IRDA is not set 406# CONFIG_IRDA is not set
357# CONFIG_BT is not set 407# CONFIG_BT is not set
358# CONFIG_AF_RXRPC is not set 408# CONFIG_AF_RXRPC is not set
359# CONFIG_WIRELESS is not set 409CONFIG_WIRELESS=y
410# CONFIG_CFG80211 is not set
411# CONFIG_LIB80211 is not set
412
413#
414# CFG80211 needs to be enabled for MAC80211
415#
360# CONFIG_WIMAX is not set 416# CONFIG_WIMAX is not set
361# CONFIG_RFKILL is not set 417# CONFIG_RFKILL is not set
362# CONFIG_NET_9P is not set 418# CONFIG_NET_9P is not set
@@ -369,6 +425,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
369# Generic Driver Options 425# Generic Driver Options
370# 426#
371CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 427CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
428# CONFIG_DEVTMPFS is not set
372CONFIG_STANDALONE=y 429CONFIG_STANDALONE=y
373CONFIG_PREVENT_FIRMWARE_BUILD=y 430CONFIG_PREVENT_FIRMWARE_BUILD=y
374CONFIG_FW_LOADER=y 431CONFIG_FW_LOADER=y
@@ -381,9 +438,9 @@ CONFIG_CONNECTOR=y
381CONFIG_PROC_EVENTS=y 438CONFIG_PROC_EVENTS=y
382CONFIG_MTD=y 439CONFIG_MTD=y
383# CONFIG_MTD_DEBUG is not set 440# CONFIG_MTD_DEBUG is not set
441# CONFIG_MTD_TESTS is not set
384# CONFIG_MTD_CONCAT is not set 442# CONFIG_MTD_CONCAT is not set
385CONFIG_MTD_PARTITIONS=y 443CONFIG_MTD_PARTITIONS=y
386# CONFIG_MTD_TESTS is not set
387# CONFIG_MTD_REDBOOT_PARTS is not set 444# CONFIG_MTD_REDBOOT_PARTS is not set
388CONFIG_MTD_CMDLINE_PARTS=y 445CONFIG_MTD_CMDLINE_PARTS=y
389CONFIG_MTD_OF_PARTS=y 446CONFIG_MTD_OF_PARTS=y
@@ -474,6 +531,7 @@ CONFIG_BLK_DEV=y
474# CONFIG_BLK_DEV_UMEM is not set 531# CONFIG_BLK_DEV_UMEM is not set
475# CONFIG_BLK_DEV_COW_COMMON is not set 532# CONFIG_BLK_DEV_COW_COMMON is not set
476# CONFIG_BLK_DEV_LOOP is not set 533# CONFIG_BLK_DEV_LOOP is not set
534# CONFIG_BLK_DEV_DRBD is not set
477# CONFIG_BLK_DEV_NBD is not set 535# CONFIG_BLK_DEV_NBD is not set
478# CONFIG_BLK_DEV_SX8 is not set 536# CONFIG_BLK_DEV_SX8 is not set
479CONFIG_BLK_DEV_RAM=y 537CONFIG_BLK_DEV_RAM=y
@@ -504,14 +562,17 @@ CONFIG_HAVE_IDE=y
504# 562#
505 563
506# 564#
507# Enable only one of the two stacks, unless you know what you are doing 565# You can enable one or both FireWire driver stacks.
566#
567
568#
569# See the help texts for more information.
508# 570#
509# CONFIG_FIREWIRE is not set 571# CONFIG_FIREWIRE is not set
510# CONFIG_IEEE1394 is not set 572# CONFIG_IEEE1394 is not set
511# CONFIG_I2O is not set 573# CONFIG_I2O is not set
512# CONFIG_MACINTOSH_DRIVERS is not set 574# CONFIG_MACINTOSH_DRIVERS is not set
513CONFIG_NETDEVICES=y 575CONFIG_NETDEVICES=y
514CONFIG_COMPAT_NET_DEV_OPS=y
515# CONFIG_DUMMY is not set 576# CONFIG_DUMMY is not set
516# CONFIG_BONDING is not set 577# CONFIG_BONDING is not set
517# CONFIG_MACVLAN is not set 578# CONFIG_MACVLAN is not set
@@ -546,16 +607,18 @@ CONFIG_IBM_NEW_EMAC_EMAC4=y
546# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 607# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
547# CONFIG_NET_PCI is not set 608# CONFIG_NET_PCI is not set
548# CONFIG_B44 is not set 609# CONFIG_B44 is not set
610# CONFIG_KS8842 is not set
611# CONFIG_KS8851_MLL is not set
549# CONFIG_ATL2 is not set 612# CONFIG_ATL2 is not set
613# CONFIG_XILINX_EMACLITE is not set
550# CONFIG_NETDEV_1000 is not set 614# CONFIG_NETDEV_1000 is not set
551# CONFIG_NETDEV_10000 is not set 615# CONFIG_NETDEV_10000 is not set
552# CONFIG_TR is not set 616# CONFIG_TR is not set
553 617CONFIG_WLAN=y
554# 618# CONFIG_AIRO is not set
555# Wireless LAN 619# CONFIG_ATMEL is not set
556# 620# CONFIG_PRISM54 is not set
557# CONFIG_WLAN_PRE80211 is not set 621# CONFIG_HOSTAP is not set
558# CONFIG_WLAN_80211 is not set
559 622
560# 623#
561# Enable WiMAX (Networking options) to see the WiMAX drivers 624# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -568,6 +631,7 @@ CONFIG_IBM_NEW_EMAC_EMAC4=y
568# CONFIG_NETCONSOLE is not set 631# CONFIG_NETCONSOLE is not set
569# CONFIG_NETPOLL is not set 632# CONFIG_NETPOLL is not set
570# CONFIG_NET_POLL_CONTROLLER is not set 633# CONFIG_NET_POLL_CONTROLLER is not set
634# CONFIG_VMXNET3 is not set
571# CONFIG_ISDN is not set 635# CONFIG_ISDN is not set
572# CONFIG_PHONE is not set 636# CONFIG_PHONE is not set
573 637
@@ -613,6 +677,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
613# CONFIG_SERIAL_JSM is not set 677# CONFIG_SERIAL_JSM is not set
614CONFIG_SERIAL_OF_PLATFORM=y 678CONFIG_SERIAL_OF_PLATFORM=y
615# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set 679# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
680# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
616CONFIG_UNIX98_PTYS=y 681CONFIG_UNIX98_PTYS=y
617# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 682# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
618CONFIG_LEGACY_PTYS=y 683CONFIG_LEGACY_PTYS=y
@@ -629,6 +694,11 @@ CONFIG_LEGACY_PTY_COUNT=256
629CONFIG_DEVPORT=y 694CONFIG_DEVPORT=y
630# CONFIG_I2C is not set 695# CONFIG_I2C is not set
631# CONFIG_SPI is not set 696# CONFIG_SPI is not set
697
698#
699# PPS support
700#
701# CONFIG_PPS is not set
632CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 702CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
633# CONFIG_GPIOLIB is not set 703# CONFIG_GPIOLIB is not set
634# CONFIG_W1 is not set 704# CONFIG_W1 is not set
@@ -651,27 +721,13 @@ CONFIG_SSB_POSSIBLE=y
651# CONFIG_HTC_PASIC3 is not set 721# CONFIG_HTC_PASIC3 is not set
652# CONFIG_MFD_TMIO is not set 722# CONFIG_MFD_TMIO is not set
653# CONFIG_REGULATOR is not set 723# CONFIG_REGULATOR is not set
654 724# CONFIG_MEDIA_SUPPORT is not set
655#
656# Multimedia devices
657#
658
659#
660# Multimedia core support
661#
662# CONFIG_VIDEO_DEV is not set
663# CONFIG_DVB_CORE is not set
664# CONFIG_VIDEO_MEDIA is not set
665
666#
667# Multimedia drivers
668#
669# CONFIG_DAB is not set
670 725
671# 726#
672# Graphics support 727# Graphics support
673# 728#
674# CONFIG_AGP is not set 729# CONFIG_AGP is not set
730CONFIG_VGA_ARB=y
675# CONFIG_DRM is not set 731# CONFIG_DRM is not set
676# CONFIG_VGASTATE is not set 732# CONFIG_VGASTATE is not set
677# CONFIG_VIDEO_OUTPUT_CONTROL is not set 733# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -695,6 +751,10 @@ CONFIG_SSB_POSSIBLE=y
695# CONFIG_DMADEVICES is not set 751# CONFIG_DMADEVICES is not set
696# CONFIG_AUXDISPLAY is not set 752# CONFIG_AUXDISPLAY is not set
697# CONFIG_UIO is not set 753# CONFIG_UIO is not set
754
755#
756# TI VLYNQ
757#
698# CONFIG_STAGING is not set 758# CONFIG_STAGING is not set
699 759
700# 760#
@@ -705,14 +765,17 @@ CONFIG_EXT2_FS=y
705# CONFIG_EXT2_FS_XIP is not set 765# CONFIG_EXT2_FS_XIP is not set
706# CONFIG_EXT3_FS is not set 766# CONFIG_EXT3_FS is not set
707# CONFIG_EXT4_FS is not set 767# CONFIG_EXT4_FS is not set
768CONFIG_EXT4_USE_FOR_EXT23=y
708# CONFIG_REISERFS_FS is not set 769# CONFIG_REISERFS_FS is not set
709# CONFIG_JFS_FS is not set 770# CONFIG_JFS_FS is not set
710# CONFIG_FS_POSIX_ACL is not set 771# CONFIG_FS_POSIX_ACL is not set
711CONFIG_FILE_LOCKING=y
712# CONFIG_XFS_FS is not set 772# CONFIG_XFS_FS is not set
713# CONFIG_GFS2_FS is not set 773# CONFIG_GFS2_FS is not set
714# CONFIG_OCFS2_FS is not set 774# CONFIG_OCFS2_FS is not set
715# CONFIG_BTRFS_FS is not set 775# CONFIG_BTRFS_FS is not set
776# CONFIG_NILFS2_FS is not set
777CONFIG_FILE_LOCKING=y
778CONFIG_FSNOTIFY=y
716CONFIG_DNOTIFY=y 779CONFIG_DNOTIFY=y
717CONFIG_INOTIFY=y 780CONFIG_INOTIFY=y
718CONFIG_INOTIFY_USER=y 781CONFIG_INOTIFY_USER=y
@@ -770,7 +833,6 @@ CONFIG_CRAMFS=y
770# CONFIG_ROMFS_FS is not set 833# CONFIG_ROMFS_FS is not set
771# CONFIG_SYSV_FS is not set 834# CONFIG_SYSV_FS is not set
772# CONFIG_UFS_FS is not set 835# CONFIG_UFS_FS is not set
773# CONFIG_NILFS2_FS is not set
774CONFIG_NETWORK_FILESYSTEMS=y 836CONFIG_NETWORK_FILESYSTEMS=y
775CONFIG_NFS_FS=y 837CONFIG_NFS_FS=y
776CONFIG_NFS_V3=y 838CONFIG_NFS_V3=y
@@ -818,6 +880,7 @@ CONFIG_HAS_IOPORT=y
818CONFIG_HAS_DMA=y 880CONFIG_HAS_DMA=y
819CONFIG_HAVE_LMB=y 881CONFIG_HAVE_LMB=y
820CONFIG_NLATTR=y 882CONFIG_NLATTR=y
883CONFIG_GENERIC_ATOMIC64=y
821 884
822# 885#
823# Kernel hacking 886# Kernel hacking
@@ -827,6 +890,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
827CONFIG_ENABLE_MUST_CHECK=y 890CONFIG_ENABLE_MUST_CHECK=y
828CONFIG_FRAME_WARN=1024 891CONFIG_FRAME_WARN=1024
829CONFIG_MAGIC_SYSRQ=y 892CONFIG_MAGIC_SYSRQ=y
893# CONFIG_STRIP_ASM_SYMS is not set
830# CONFIG_UNUSED_SYMBOLS is not set 894# CONFIG_UNUSED_SYMBOLS is not set
831CONFIG_DEBUG_FS=y 895CONFIG_DEBUG_FS=y
832# CONFIG_HEADERS_CHECK is not set 896# CONFIG_HEADERS_CHECK is not set
@@ -844,10 +908,14 @@ CONFIG_SCHED_DEBUG=y
844# CONFIG_DEBUG_OBJECTS is not set 908# CONFIG_DEBUG_OBJECTS is not set
845# CONFIG_SLUB_DEBUG_ON is not set 909# CONFIG_SLUB_DEBUG_ON is not set
846# CONFIG_SLUB_STATS is not set 910# CONFIG_SLUB_STATS is not set
911# CONFIG_DEBUG_KMEMLEAK is not set
847# CONFIG_DEBUG_RT_MUTEXES is not set 912# CONFIG_DEBUG_RT_MUTEXES is not set
848# CONFIG_RT_MUTEX_TESTER is not set 913# CONFIG_RT_MUTEX_TESTER is not set
849# CONFIG_DEBUG_SPINLOCK is not set 914# CONFIG_DEBUG_SPINLOCK is not set
850# CONFIG_DEBUG_MUTEXES is not set 915# CONFIG_DEBUG_MUTEXES is not set
916# CONFIG_DEBUG_LOCK_ALLOC is not set
917# CONFIG_PROVE_LOCKING is not set
918# CONFIG_LOCK_STAT is not set
851# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 919# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
852# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 920# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
853# CONFIG_DEBUG_KOBJECT is not set 921# CONFIG_DEBUG_KOBJECT is not set
@@ -859,11 +927,12 @@ CONFIG_DEBUG_BUGVERBOSE=y
859# CONFIG_DEBUG_LIST is not set 927# CONFIG_DEBUG_LIST is not set
860# CONFIG_DEBUG_SG is not set 928# CONFIG_DEBUG_SG is not set
861# CONFIG_DEBUG_NOTIFIERS is not set 929# CONFIG_DEBUG_NOTIFIERS is not set
862# CONFIG_BOOT_PRINTK_DELAY is not set 930# CONFIG_DEBUG_CREDENTIALS is not set
863# CONFIG_RCU_TORTURE_TEST is not set 931# CONFIG_RCU_TORTURE_TEST is not set
864# CONFIG_RCU_CPU_STALL_DETECTOR is not set 932# CONFIG_RCU_CPU_STALL_DETECTOR is not set
865# CONFIG_BACKTRACE_SELF_TEST is not set 933# CONFIG_BACKTRACE_SELF_TEST is not set
866# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 934# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
935# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
867# CONFIG_FAULT_INJECTION is not set 936# CONFIG_FAULT_INJECTION is not set
868# CONFIG_LATENCYTOP is not set 937# CONFIG_LATENCYTOP is not set
869CONFIG_SYSCTL_SYSCALL_CHECK=y 938CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -873,24 +942,26 @@ CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
873CONFIG_HAVE_DYNAMIC_FTRACE=y 942CONFIG_HAVE_DYNAMIC_FTRACE=y
874CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 943CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
875CONFIG_TRACING_SUPPORT=y 944CONFIG_TRACING_SUPPORT=y
876 945CONFIG_FTRACE=y
877#
878# Tracers
879#
880# CONFIG_FUNCTION_TRACER is not set 946# CONFIG_FUNCTION_TRACER is not set
947# CONFIG_IRQSOFF_TRACER is not set
881# CONFIG_SCHED_TRACER is not set 948# CONFIG_SCHED_TRACER is not set
882# CONFIG_CONTEXT_SWITCH_TRACER is not set 949# CONFIG_ENABLE_DEFAULT_TRACERS is not set
883# CONFIG_EVENT_TRACER is not set
884# CONFIG_BOOT_TRACER is not set 950# CONFIG_BOOT_TRACER is not set
885# CONFIG_TRACE_BRANCH_PROFILING is not set 951CONFIG_BRANCH_PROFILE_NONE=y
952# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
953# CONFIG_PROFILE_ALL_BRANCHES is not set
886# CONFIG_STACK_TRACER is not set 954# CONFIG_STACK_TRACER is not set
887# CONFIG_KMEMTRACE is not set 955# CONFIG_KMEMTRACE is not set
888# CONFIG_WORKQUEUE_TRACER is not set 956# CONFIG_WORKQUEUE_TRACER is not set
889# CONFIG_BLK_DEV_IO_TRACE is not set 957# CONFIG_BLK_DEV_IO_TRACE is not set
890# CONFIG_DYNAMIC_DEBUG is not set 958# CONFIG_DYNAMIC_DEBUG is not set
959# CONFIG_DMA_API_DEBUG is not set
891# CONFIG_SAMPLES is not set 960# CONFIG_SAMPLES is not set
892CONFIG_HAVE_ARCH_KGDB=y 961CONFIG_HAVE_ARCH_KGDB=y
893# CONFIG_KGDB is not set 962# CONFIG_KGDB is not set
963# CONFIG_PPC_DISABLE_WERROR is not set
964CONFIG_PPC_WERROR=y
894CONFIG_PRINT_STACK_DEPTH=64 965CONFIG_PRINT_STACK_DEPTH=64
895# CONFIG_DEBUG_STACKOVERFLOW is not set 966# CONFIG_DEBUG_STACKOVERFLOW is not set
896# CONFIG_DEBUG_STACK_USAGE is not set 967# CONFIG_DEBUG_STACK_USAGE is not set
@@ -910,13 +981,16 @@ CONFIG_PRINT_STACK_DEPTH=64
910# CONFIG_KEYS is not set 981# CONFIG_KEYS is not set
911# CONFIG_SECURITY is not set 982# CONFIG_SECURITY is not set
912# CONFIG_SECURITYFS is not set 983# CONFIG_SECURITYFS is not set
913# CONFIG_SECURITY_FILE_CAPABILITIES is not set 984# CONFIG_DEFAULT_SECURITY_SELINUX is not set
985# CONFIG_DEFAULT_SECURITY_SMACK is not set
986# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
987CONFIG_DEFAULT_SECURITY_DAC=y
988CONFIG_DEFAULT_SECURITY=""
914CONFIG_CRYPTO=y 989CONFIG_CRYPTO=y
915 990
916# 991#
917# Crypto core or helper 992# Crypto core or helper
918# 993#
919# CONFIG_CRYPTO_FIPS is not set
920CONFIG_CRYPTO_ALGAPI=y 994CONFIG_CRYPTO_ALGAPI=y
921CONFIG_CRYPTO_ALGAPI2=y 995CONFIG_CRYPTO_ALGAPI2=y
922CONFIG_CRYPTO_AEAD2=y 996CONFIG_CRYPTO_AEAD2=y
@@ -958,11 +1032,13 @@ CONFIG_CRYPTO_PCBC=y
958# 1032#
959# CONFIG_CRYPTO_HMAC is not set 1033# CONFIG_CRYPTO_HMAC is not set
960# CONFIG_CRYPTO_XCBC is not set 1034# CONFIG_CRYPTO_XCBC is not set
1035# CONFIG_CRYPTO_VMAC is not set
961 1036
962# 1037#
963# Digest 1038# Digest
964# 1039#
965# CONFIG_CRYPTO_CRC32C is not set 1040# CONFIG_CRYPTO_CRC32C is not set
1041# CONFIG_CRYPTO_GHASH is not set
966# CONFIG_CRYPTO_MD4 is not set 1042# CONFIG_CRYPTO_MD4 is not set
967CONFIG_CRYPTO_MD5=y 1043CONFIG_CRYPTO_MD5=y
968# CONFIG_CRYPTO_MICHAEL_MIC is not set 1044# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/40x/walnut_defconfig b/arch/powerpc/configs/40x/walnut_defconfig
index 5ab29dddd21c..bfff0eae39d2 100644
--- a/arch/powerpc/configs/40x/walnut_defconfig
+++ b/arch/powerpc/configs/40x/walnut_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.29-rc2 3# Linux kernel version: 2.6.33-rc1
4# Tue Jan 20 08:17:57 2009 4# Mon Jan 4 15:56:30 2010
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#
11# CONFIG_6xx is not set 11# CONFIG_PPC_BOOK3S_32 is not set
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
14CONFIG_40x=y 14CONFIG_40x=y
@@ -16,6 +16,7 @@ CONFIG_40x=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_4xx=y 17CONFIG_4xx=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
@@ -27,15 +28,18 @@ CONFIG_GENERIC_TIME=y
27CONFIG_GENERIC_TIME_VSYSCALL=y 28CONFIG_GENERIC_TIME_VSYSCALL=y
28CONFIG_GENERIC_CLOCKEVENTS=y 29CONFIG_GENERIC_CLOCKEVENTS=y
29CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
31CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
30# 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
31CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_NR_IRQS=512
32CONFIG_STACKTRACE_SUPPORT=y 36CONFIG_STACKTRACE_SUPPORT=y
33CONFIG_HAVE_LATENCYTOP_SUPPORT=y 37CONFIG_HAVE_LATENCYTOP_SUPPORT=y
38CONFIG_TRACE_IRQFLAGS_SUPPORT=y
34CONFIG_LOCKDEP_SUPPORT=y 39CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 40CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 41CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 42CONFIG_GENERIC_HWEIGHT=y
38CONFIG_GENERIC_CALIBRATE_DELAY=y
39CONFIG_GENERIC_FIND_NEXT_BIT=y 43CONFIG_GENERIC_FIND_NEXT_BIT=y
40# CONFIG_ARCH_NO_VIRT_TO_BUS is not set 44# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
41CONFIG_PPC=y 45CONFIG_PPC=y
@@ -49,11 +53,15 @@ CONFIG_PPC_UDBG_16550=y
49# CONFIG_GENERIC_TBSYNC is not set 53# CONFIG_GENERIC_TBSYNC is not set
50CONFIG_AUDIT_ARCH=y 54CONFIG_AUDIT_ARCH=y
51CONFIG_GENERIC_BUG=y 55CONFIG_GENERIC_BUG=y
56CONFIG_DTC=y
52# CONFIG_DEFAULT_UIMAGE is not set 57# CONFIG_DEFAULT_UIMAGE is not set
58CONFIG_ARCH_HIBERNATION_POSSIBLE=y
53CONFIG_PPC_DCR_NATIVE=y 59CONFIG_PPC_DCR_NATIVE=y
54# CONFIG_PPC_DCR_MMIO is not set 60# CONFIG_PPC_DCR_MMIO is not set
55CONFIG_PPC_DCR=y 61CONFIG_PPC_DCR=y
62CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
56CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 63CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
64CONFIG_CONSTRUCTORS=y
57 65
58# 66#
59# General setup 67# General setup
@@ -67,9 +75,21 @@ CONFIG_SWAP=y
67CONFIG_SYSVIPC=y 75CONFIG_SYSVIPC=y
68CONFIG_SYSVIPC_SYSCTL=y 76CONFIG_SYSVIPC_SYSCTL=y
69CONFIG_POSIX_MQUEUE=y 77CONFIG_POSIX_MQUEUE=y
78CONFIG_POSIX_MQUEUE_SYSCTL=y
70# CONFIG_BSD_PROCESS_ACCT is not set 79# CONFIG_BSD_PROCESS_ACCT is not set
71# CONFIG_TASKSTATS is not set 80# CONFIG_TASKSTATS is not set
72# CONFIG_AUDIT is not set 81# CONFIG_AUDIT is not set
82
83#
84# RCU Subsystem
85#
86CONFIG_TREE_RCU=y
87# CONFIG_TREE_PREEMPT_RCU is not set
88# CONFIG_TINY_RCU is not set
89# CONFIG_RCU_TRACE is not set
90CONFIG_RCU_FANOUT=32
91# CONFIG_RCU_FANOUT_EXACT is not set
92# CONFIG_TREE_RCU_TRACE is not set
73# CONFIG_IKCONFIG is not set 93# CONFIG_IKCONFIG is not set
74CONFIG_LOG_BUF_SHIFT=14 94CONFIG_LOG_BUF_SHIFT=14
75CONFIG_GROUP_SCHED=y 95CONFIG_GROUP_SCHED=y
@@ -84,31 +104,40 @@ CONFIG_SYSFS_DEPRECATED_V2=y
84# CONFIG_NAMESPACES is not set 104# CONFIG_NAMESPACES is not set
85CONFIG_BLK_DEV_INITRD=y 105CONFIG_BLK_DEV_INITRD=y
86CONFIG_INITRAMFS_SOURCE="" 106CONFIG_INITRAMFS_SOURCE=""
107CONFIG_RD_GZIP=y
108# CONFIG_RD_BZIP2 is not set
109# CONFIG_RD_LZMA is not set
87# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 110# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
88CONFIG_SYSCTL=y 111CONFIG_SYSCTL=y
112CONFIG_ANON_INODES=y
89CONFIG_EMBEDDED=y 113CONFIG_EMBEDDED=y
90CONFIG_SYSCTL_SYSCALL=y 114CONFIG_SYSCTL_SYSCALL=y
91CONFIG_KALLSYMS=y 115CONFIG_KALLSYMS=y
92CONFIG_KALLSYMS_ALL=y 116CONFIG_KALLSYMS_ALL=y
93CONFIG_KALLSYMS_STRIP_GENERATED=y
94CONFIG_KALLSYMS_EXTRA_PASS=y 117CONFIG_KALLSYMS_EXTRA_PASS=y
95CONFIG_HOTPLUG=y 118CONFIG_HOTPLUG=y
96CONFIG_PRINTK=y 119CONFIG_PRINTK=y
97CONFIG_BUG=y 120CONFIG_BUG=y
98CONFIG_ELF_CORE=y 121CONFIG_ELF_CORE=y
99CONFIG_COMPAT_BRK=y
100CONFIG_BASE_FULL=y 122CONFIG_BASE_FULL=y
101CONFIG_FUTEX=y 123CONFIG_FUTEX=y
102CONFIG_ANON_INODES=y
103CONFIG_EPOLL=y 124CONFIG_EPOLL=y
104CONFIG_SIGNALFD=y 125CONFIG_SIGNALFD=y
105CONFIG_TIMERFD=y 126CONFIG_TIMERFD=y
106CONFIG_EVENTFD=y 127CONFIG_EVENTFD=y
107CONFIG_SHMEM=y 128CONFIG_SHMEM=y
108CONFIG_AIO=y 129CONFIG_AIO=y
130CONFIG_HAVE_PERF_EVENTS=y
131
132#
133# Kernel Performance Events And Counters
134#
135# CONFIG_PERF_EVENTS is not set
136# CONFIG_PERF_COUNTERS is not set
109CONFIG_VM_EVENT_COUNTERS=y 137CONFIG_VM_EVENT_COUNTERS=y
110CONFIG_PCI_QUIRKS=y 138CONFIG_PCI_QUIRKS=y
111CONFIG_SLUB_DEBUG=y 139CONFIG_SLUB_DEBUG=y
140CONFIG_COMPAT_BRK=y
112# CONFIG_SLAB is not set 141# CONFIG_SLAB is not set
113CONFIG_SLUB=y 142CONFIG_SLUB=y
114# CONFIG_SLOB is not set 143# CONFIG_SLOB is not set
@@ -120,6 +149,14 @@ CONFIG_HAVE_IOREMAP_PROT=y
120CONFIG_HAVE_KPROBES=y 149CONFIG_HAVE_KPROBES=y
121CONFIG_HAVE_KRETPROBES=y 150CONFIG_HAVE_KRETPROBES=y
122CONFIG_HAVE_ARCH_TRACEHOOK=y 151CONFIG_HAVE_ARCH_TRACEHOOK=y
152CONFIG_HAVE_DMA_ATTRS=y
153CONFIG_HAVE_DMA_API_DEBUG=y
154
155#
156# GCOV-based kernel profiling
157#
158# CONFIG_GCOV_KERNEL is not set
159# CONFIG_SLOW_WORK is not set
123# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 160# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
124CONFIG_SLABINFO=y 161CONFIG_SLABINFO=y
125CONFIG_RT_MUTEXES=y 162CONFIG_RT_MUTEXES=y
@@ -131,8 +168,7 @@ CONFIG_MODULE_UNLOAD=y
131# CONFIG_MODVERSIONS is not set 168# CONFIG_MODVERSIONS is not set
132# CONFIG_MODULE_SRCVERSION_ALL is not set 169# CONFIG_MODULE_SRCVERSION_ALL is not set
133CONFIG_BLOCK=y 170CONFIG_BLOCK=y
134CONFIG_LBD=y 171CONFIG_LBDAF=y
135# CONFIG_BLK_DEV_IO_TRACE is not set
136# CONFIG_BLK_DEV_BSG is not set 172# CONFIG_BLK_DEV_BSG is not set
137# CONFIG_BLK_DEV_INTEGRITY is not set 173# CONFIG_BLK_DEV_INTEGRITY is not set
138 174
@@ -140,19 +176,41 @@ CONFIG_LBD=y
140# IO Schedulers 176# IO Schedulers
141# 177#
142CONFIG_IOSCHED_NOOP=y 178CONFIG_IOSCHED_NOOP=y
143CONFIG_IOSCHED_AS=y
144CONFIG_IOSCHED_DEADLINE=y 179CONFIG_IOSCHED_DEADLINE=y
145CONFIG_IOSCHED_CFQ=y 180CONFIG_IOSCHED_CFQ=y
146CONFIG_DEFAULT_AS=y
147# CONFIG_DEFAULT_DEADLINE is not set 181# CONFIG_DEFAULT_DEADLINE is not set
148# CONFIG_DEFAULT_CFQ is not set 182CONFIG_DEFAULT_CFQ=y
149# CONFIG_DEFAULT_NOOP is not set 183# CONFIG_DEFAULT_NOOP is not set
150CONFIG_DEFAULT_IOSCHED="anticipatory" 184CONFIG_DEFAULT_IOSCHED="cfq"
151CONFIG_CLASSIC_RCU=y 185# CONFIG_INLINE_SPIN_TRYLOCK is not set
152# CONFIG_TREE_RCU is not set 186# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
153# CONFIG_PREEMPT_RCU is not set 187# CONFIG_INLINE_SPIN_LOCK is not set
154# CONFIG_TREE_RCU_TRACE is not set 188# CONFIG_INLINE_SPIN_LOCK_BH is not set
155# CONFIG_PREEMPT_RCU_TRACE is not set 189# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
191CONFIG_INLINE_SPIN_UNLOCK=y
192# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
193CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
194# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
195# CONFIG_INLINE_READ_TRYLOCK is not set
196# CONFIG_INLINE_READ_LOCK is not set
197# CONFIG_INLINE_READ_LOCK_BH is not set
198# CONFIG_INLINE_READ_LOCK_IRQ is not set
199# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
200CONFIG_INLINE_READ_UNLOCK=y
201# CONFIG_INLINE_READ_UNLOCK_BH is not set
202CONFIG_INLINE_READ_UNLOCK_IRQ=y
203# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_WRITE_TRYLOCK is not set
205# CONFIG_INLINE_WRITE_LOCK is not set
206# CONFIG_INLINE_WRITE_LOCK_BH is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
209CONFIG_INLINE_WRITE_UNLOCK=y
210# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
211CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
212# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
213# CONFIG_MUTEX_SPIN_ON_OWNER is not set
156# CONFIG_FREEZER is not set 214# CONFIG_FREEZER is not set
157# CONFIG_PPC4xx_PCI_EXPRESS is not set 215# CONFIG_PPC4xx_PCI_EXPRESS is not set
158 216
@@ -166,6 +224,7 @@ CONFIG_CLASSIC_RCU=y
166# CONFIG_ACADIA is not set 224# CONFIG_ACADIA is not set
167# CONFIG_EP405 is not set 225# CONFIG_EP405 is not set
168# CONFIG_HCU4 is not set 226# CONFIG_HCU4 is not set
227# CONFIG_HOTFOOT is not set
169# CONFIG_KILAUEA is not set 228# CONFIG_KILAUEA is not set
170# CONFIG_MAKALU is not set 229# CONFIG_MAKALU is not set
171CONFIG_WALNUT=y 230CONFIG_WALNUT=y
@@ -211,10 +270,12 @@ CONFIG_BINFMT_ELF=y
211# CONFIG_BINFMT_MISC is not set 270# CONFIG_BINFMT_MISC is not set
212# CONFIG_MATH_EMULATION is not set 271# CONFIG_MATH_EMULATION is not set
213# CONFIG_IOMMU_HELPER is not set 272# CONFIG_IOMMU_HELPER is not set
214CONFIG_PPC_NEED_DMA_SYNC_OPS=y 273# CONFIG_SWIOTLB is not set
215CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 274CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
216CONFIG_ARCH_HAS_WALK_MEMORY=y 275CONFIG_ARCH_HAS_WALK_MEMORY=y
217CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 276CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
277CONFIG_SPARSE_IRQ=y
278CONFIG_MAX_ACTIVE_REGIONS=32
218CONFIG_ARCH_FLATMEM_ENABLE=y 279CONFIG_ARCH_FLATMEM_ENABLE=y
219CONFIG_ARCH_POPULATES_NODE_MAP=y 280CONFIG_ARCH_POPULATES_NODE_MAP=y
220CONFIG_SELECT_MEMORY_MODEL=y 281CONFIG_SELECT_MEMORY_MODEL=y
@@ -230,10 +291,12 @@ CONFIG_MIGRATION=y
230CONFIG_ZONE_DMA_FLAG=1 291CONFIG_ZONE_DMA_FLAG=1
231CONFIG_BOUNCE=y 292CONFIG_BOUNCE=y
232CONFIG_VIRT_TO_BUS=y 293CONFIG_VIRT_TO_BUS=y
233CONFIG_UNEVICTABLE_LRU=y 294# CONFIG_KSM is not set
295CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
234CONFIG_PPC_4K_PAGES=y 296CONFIG_PPC_4K_PAGES=y
235# CONFIG_PPC_16K_PAGES is not set 297# CONFIG_PPC_16K_PAGES is not set
236# CONFIG_PPC_64K_PAGES is not set 298# CONFIG_PPC_64K_PAGES is not set
299# CONFIG_PPC_256K_PAGES is not set
237CONFIG_FORCE_MAX_ZONEORDER=11 300CONFIG_FORCE_MAX_ZONEORDER=11
238CONFIG_PROC_DEVICETREE=y 301CONFIG_PROC_DEVICETREE=y
239# CONFIG_CMDLINE_BOOL is not set 302# CONFIG_CMDLINE_BOOL is not set
@@ -258,6 +321,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
258# CONFIG_PCI_LEGACY is not set 321# CONFIG_PCI_LEGACY is not set
259# CONFIG_PCI_DEBUG is not set 322# CONFIG_PCI_DEBUG is not set
260# CONFIG_PCI_STUB is not set 323# CONFIG_PCI_STUB is not set
324# CONFIG_PCI_IOV is not set
261# CONFIG_PCCARD is not set 325# CONFIG_PCCARD is not set
262# CONFIG_HOTPLUG_PCI is not set 326# CONFIG_HOTPLUG_PCI is not set
263# CONFIG_HAS_RAPIDIO is not set 327# CONFIG_HAS_RAPIDIO is not set
@@ -275,14 +339,12 @@ CONFIG_PAGE_OFFSET=0xc0000000
275CONFIG_KERNEL_START=0xc0000000 339CONFIG_KERNEL_START=0xc0000000
276CONFIG_PHYSICAL_START=0x00000000 340CONFIG_PHYSICAL_START=0x00000000
277CONFIG_TASK_SIZE=0xc0000000 341CONFIG_TASK_SIZE=0xc0000000
278CONFIG_CONSISTENT_START=0xff100000
279CONFIG_CONSISTENT_SIZE=0x00200000 342CONFIG_CONSISTENT_SIZE=0x00200000
280CONFIG_NET=y 343CONFIG_NET=y
281 344
282# 345#
283# Networking options 346# Networking options
284# 347#
285CONFIG_COMPAT_NET_DEV_OPS=y
286CONFIG_PACKET=y 348CONFIG_PACKET=y
287# CONFIG_PACKET_MMAP is not set 349# CONFIG_PACKET_MMAP is not set
288CONFIG_UNIX=y 350CONFIG_UNIX=y
@@ -319,6 +381,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
319# CONFIG_NETFILTER is not set 381# CONFIG_NETFILTER is not set
320# CONFIG_IP_DCCP is not set 382# CONFIG_IP_DCCP is not set
321# CONFIG_IP_SCTP is not set 383# CONFIG_IP_SCTP is not set
384# CONFIG_RDS is not set
322# CONFIG_TIPC is not set 385# CONFIG_TIPC is not set
323# CONFIG_ATM is not set 386# CONFIG_ATM is not set
324# CONFIG_BRIDGE is not set 387# CONFIG_BRIDGE is not set
@@ -332,6 +395,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
332# CONFIG_LAPB is not set 395# CONFIG_LAPB is not set
333# CONFIG_ECONET is not set 396# CONFIG_ECONET is not set
334# CONFIG_WAN_ROUTER is not set 397# CONFIG_WAN_ROUTER is not set
398# CONFIG_PHONET is not set
399# CONFIG_IEEE802154 is not set
335# CONFIG_NET_SCHED is not set 400# CONFIG_NET_SCHED is not set
336# CONFIG_DCB is not set 401# CONFIG_DCB is not set
337 402
@@ -344,8 +409,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
344# CONFIG_IRDA is not set 409# CONFIG_IRDA is not set
345# CONFIG_BT is not set 410# CONFIG_BT is not set
346# CONFIG_AF_RXRPC is not set 411# CONFIG_AF_RXRPC is not set
347# CONFIG_PHONET is not set 412CONFIG_WIRELESS=y
348# CONFIG_WIRELESS is not set 413# CONFIG_CFG80211 is not set
414# CONFIG_LIB80211 is not set
415
416#
417# CFG80211 needs to be enabled for MAC80211
418#
349# CONFIG_WIMAX is not set 419# CONFIG_WIMAX is not set
350# CONFIG_RFKILL is not set 420# CONFIG_RFKILL is not set
351# CONFIG_NET_9P is not set 421# CONFIG_NET_9P is not set
@@ -358,6 +428,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
358# Generic Driver Options 428# Generic Driver Options
359# 429#
360CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 430CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
431# CONFIG_DEVTMPFS is not set
361CONFIG_STANDALONE=y 432CONFIG_STANDALONE=y
362CONFIG_PREVENT_FIRMWARE_BUILD=y 433CONFIG_PREVENT_FIRMWARE_BUILD=y
363CONFIG_FW_LOADER=y 434CONFIG_FW_LOADER=y
@@ -370,9 +441,9 @@ CONFIG_CONNECTOR=y
370CONFIG_PROC_EVENTS=y 441CONFIG_PROC_EVENTS=y
371CONFIG_MTD=y 442CONFIG_MTD=y
372# CONFIG_MTD_DEBUG is not set 443# CONFIG_MTD_DEBUG is not set
444# CONFIG_MTD_TESTS is not set
373# CONFIG_MTD_CONCAT is not set 445# CONFIG_MTD_CONCAT is not set
374CONFIG_MTD_PARTITIONS=y 446CONFIG_MTD_PARTITIONS=y
375# CONFIG_MTD_TESTS is not set
376# CONFIG_MTD_REDBOOT_PARTS is not set 447# CONFIG_MTD_REDBOOT_PARTS is not set
377CONFIG_MTD_CMDLINE_PARTS=y 448CONFIG_MTD_CMDLINE_PARTS=y
378CONFIG_MTD_OF_PARTS=y 449CONFIG_MTD_OF_PARTS=y
@@ -448,7 +519,6 @@ CONFIG_MTD_PHYSMAP_OF=y
448# LPDDR flash memory drivers 519# LPDDR flash memory drivers
449# 520#
450# CONFIG_MTD_LPDDR is not set 521# CONFIG_MTD_LPDDR is not set
451# CONFIG_MTD_QINFO_PROBE is not set
452 522
453# 523#
454# UBI - Unsorted block images 524# UBI - Unsorted block images
@@ -464,6 +534,7 @@ CONFIG_BLK_DEV=y
464# CONFIG_BLK_DEV_UMEM is not set 534# CONFIG_BLK_DEV_UMEM is not set
465# CONFIG_BLK_DEV_COW_COMMON is not set 535# CONFIG_BLK_DEV_COW_COMMON is not set
466# CONFIG_BLK_DEV_LOOP is not set 536# CONFIG_BLK_DEV_LOOP is not set
537# CONFIG_BLK_DEV_DRBD is not set
467# CONFIG_BLK_DEV_NBD is not set 538# CONFIG_BLK_DEV_NBD is not set
468# CONFIG_BLK_DEV_SX8 is not set 539# CONFIG_BLK_DEV_SX8 is not set
469CONFIG_BLK_DEV_RAM=y 540CONFIG_BLK_DEV_RAM=y
@@ -476,12 +547,17 @@ CONFIG_BLK_DEV_RAM_SIZE=35000
476# CONFIG_BLK_DEV_HD is not set 547# CONFIG_BLK_DEV_HD is not set
477CONFIG_MISC_DEVICES=y 548CONFIG_MISC_DEVICES=y
478# CONFIG_PHANTOM is not set 549# CONFIG_PHANTOM is not set
479# CONFIG_EEPROM_93CX6 is not set
480# CONFIG_SGI_IOC4 is not set 550# CONFIG_SGI_IOC4 is not set
481# CONFIG_TIFM_CORE is not set 551# CONFIG_TIFM_CORE is not set
482# CONFIG_ENCLOSURE_SERVICES is not set 552# CONFIG_ENCLOSURE_SERVICES is not set
483# CONFIG_HP_ILO is not set 553# CONFIG_HP_ILO is not set
484# CONFIG_C2PORT is not set 554# CONFIG_C2PORT is not set
555
556#
557# EEPROM support
558#
559# CONFIG_EEPROM_93CX6 is not set
560# CONFIG_CB710_CORE is not set
485CONFIG_HAVE_IDE=y 561CONFIG_HAVE_IDE=y
486# CONFIG_IDE is not set 562# CONFIG_IDE is not set
487 563
@@ -501,7 +577,11 @@ CONFIG_HAVE_IDE=y
501# 577#
502 578
503# 579#
504# Enable only one of the two stacks, unless you know what you are doing 580# You can enable one or both FireWire driver stacks.
581#
582
583#
584# See the help texts for more information.
505# 585#
506# CONFIG_FIREWIRE is not set 586# CONFIG_FIREWIRE is not set
507# CONFIG_IEEE1394 is not set 587# CONFIG_IEEE1394 is not set
@@ -522,6 +602,8 @@ CONFIG_NET_ETHERNET=y
522# CONFIG_SUNGEM is not set 602# CONFIG_SUNGEM is not set
523# CONFIG_CASSINI is not set 603# CONFIG_CASSINI is not set
524# CONFIG_NET_VENDOR_3COM is not set 604# CONFIG_NET_VENDOR_3COM is not set
605# CONFIG_ETHOC is not set
606# CONFIG_DNET is not set
525# CONFIG_NET_TULIP is not set 607# CONFIG_NET_TULIP is not set
526# CONFIG_HP100 is not set 608# CONFIG_HP100 is not set
527CONFIG_IBM_NEW_EMAC=y 609CONFIG_IBM_NEW_EMAC=y
@@ -540,7 +622,10 @@ CONFIG_IBM_NEW_EMAC_ZMII=y
540# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 622# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
541# CONFIG_NET_PCI is not set 623# CONFIG_NET_PCI is not set
542# CONFIG_B44 is not set 624# CONFIG_B44 is not set
625# CONFIG_KS8842 is not set
626# CONFIG_KS8851_MLL is not set
543# CONFIG_ATL2 is not set 627# CONFIG_ATL2 is not set
628# CONFIG_XILINX_EMACLITE is not set
544CONFIG_NETDEV_1000=y 629CONFIG_NETDEV_1000=y
545# CONFIG_ACENIC is not set 630# CONFIG_ACENIC is not set
546# CONFIG_DL2K is not set 631# CONFIG_DL2K is not set
@@ -548,6 +633,7 @@ CONFIG_NETDEV_1000=y
548# CONFIG_E1000E is not set 633# CONFIG_E1000E is not set
549# CONFIG_IP1000 is not set 634# CONFIG_IP1000 is not set
550# CONFIG_IGB is not set 635# CONFIG_IGB is not set
636# CONFIG_IGBVF is not set
551# CONFIG_NS83820 is not set 637# CONFIG_NS83820 is not set
552# CONFIG_HAMACHI is not set 638# CONFIG_HAMACHI is not set
553# CONFIG_YELLOWFIN is not set 639# CONFIG_YELLOWFIN is not set
@@ -558,9 +644,13 @@ CONFIG_NETDEV_1000=y
558# CONFIG_VIA_VELOCITY is not set 644# CONFIG_VIA_VELOCITY is not set
559# CONFIG_TIGON3 is not set 645# CONFIG_TIGON3 is not set
560# CONFIG_BNX2 is not set 646# CONFIG_BNX2 is not set
647# CONFIG_CNIC is not set
648# CONFIG_MV643XX_ETH is not set
649# CONFIG_XILINX_LL_TEMAC is not set
561# CONFIG_QLA3XXX is not set 650# CONFIG_QLA3XXX is not set
562# CONFIG_ATL1 is not set 651# CONFIG_ATL1 is not set
563# CONFIG_ATL1E is not set 652# CONFIG_ATL1E is not set
653# CONFIG_ATL1C is not set
564# CONFIG_JME is not set 654# CONFIG_JME is not set
565CONFIG_NETDEV_10000=y 655CONFIG_NETDEV_10000=y
566# CONFIG_CHELSIO_T1 is not set 656# CONFIG_CHELSIO_T1 is not set
@@ -570,6 +660,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
570# CONFIG_IXGBE is not set 660# CONFIG_IXGBE is not set
571# CONFIG_IXGB is not set 661# CONFIG_IXGB is not set
572# CONFIG_S2IO is not set 662# CONFIG_S2IO is not set
663# CONFIG_VXGE is not set
573# CONFIG_MYRI10GE is not set 664# CONFIG_MYRI10GE is not set
574# CONFIG_NETXEN_NIC is not set 665# CONFIG_NETXEN_NIC is not set
575# CONFIG_NIU is not set 666# CONFIG_NIU is not set
@@ -579,14 +670,13 @@ CONFIG_CHELSIO_T3_DEPENDS=y
579# CONFIG_BNX2X is not set 670# CONFIG_BNX2X is not set
580# CONFIG_QLGE is not set 671# CONFIG_QLGE is not set
581# CONFIG_SFC is not set 672# CONFIG_SFC is not set
673# CONFIG_BE2NET is not set
582# CONFIG_TR is not set 674# CONFIG_TR is not set
583 675CONFIG_WLAN=y
584# 676# CONFIG_AIRO is not set
585# Wireless LAN 677# CONFIG_ATMEL is not set
586# 678# CONFIG_PRISM54 is not set
587# CONFIG_WLAN_PRE80211 is not set 679# CONFIG_HOSTAP is not set
588# CONFIG_WLAN_80211 is not set
589# CONFIG_IWLWIFI_LEDS is not set
590 680
591# 681#
592# Enable WiMAX (Networking options) to see the WiMAX drivers 682# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -599,6 +689,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
599# CONFIG_NETCONSOLE is not set 689# CONFIG_NETCONSOLE is not set
600# CONFIG_NETPOLL is not set 690# CONFIG_NETPOLL is not set
601# CONFIG_NET_POLL_CONTROLLER is not set 691# CONFIG_NET_POLL_CONTROLLER is not set
692# CONFIG_VMXNET3 is not set
602# CONFIG_ISDN is not set 693# CONFIG_ISDN is not set
603# CONFIG_PHONE is not set 694# CONFIG_PHONE is not set
604 695
@@ -644,6 +735,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
644# CONFIG_SERIAL_JSM is not set 735# CONFIG_SERIAL_JSM is not set
645CONFIG_SERIAL_OF_PLATFORM=y 736CONFIG_SERIAL_OF_PLATFORM=y
646# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set 737# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
738# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
647CONFIG_UNIX98_PTYS=y 739CONFIG_UNIX98_PTYS=y
648# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 740# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
649CONFIG_LEGACY_PTYS=y 741CONFIG_LEGACY_PTYS=y
@@ -660,6 +752,11 @@ CONFIG_LEGACY_PTY_COUNT=256
660CONFIG_DEVPORT=y 752CONFIG_DEVPORT=y
661# CONFIG_I2C is not set 753# CONFIG_I2C is not set
662# CONFIG_SPI is not set 754# CONFIG_SPI is not set
755
756#
757# PPS support
758#
759# CONFIG_PPS is not set
663CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 760CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
664# CONFIG_GPIOLIB is not set 761# CONFIG_GPIOLIB is not set
665# CONFIG_W1 is not set 762# CONFIG_W1 is not set
@@ -682,27 +779,13 @@ CONFIG_SSB_POSSIBLE=y
682# CONFIG_HTC_PASIC3 is not set 779# CONFIG_HTC_PASIC3 is not set
683# CONFIG_MFD_TMIO is not set 780# CONFIG_MFD_TMIO is not set
684# CONFIG_REGULATOR is not set 781# CONFIG_REGULATOR is not set
685 782# CONFIG_MEDIA_SUPPORT is not set
686#
687# Multimedia devices
688#
689
690#
691# Multimedia core support
692#
693# CONFIG_VIDEO_DEV is not set
694# CONFIG_DVB_CORE is not set
695# CONFIG_VIDEO_MEDIA is not set
696
697#
698# Multimedia drivers
699#
700# CONFIG_DAB is not set
701 783
702# 784#
703# Graphics support 785# Graphics support
704# 786#
705# CONFIG_AGP is not set 787# CONFIG_AGP is not set
788CONFIG_VGA_ARB=y
706# CONFIG_DRM is not set 789# CONFIG_DRM is not set
707# CONFIG_VGASTATE is not set 790# CONFIG_VGASTATE is not set
708CONFIG_VIDEO_OUTPUT_CONTROL=m 791CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -727,7 +810,7 @@ CONFIG_USB_ARCH_HAS_EHCI=y
727# 810#
728 811
729# 812#
730# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 813# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
731# 814#
732# CONFIG_USB_GADGET is not set 815# CONFIG_USB_GADGET is not set
733 816
@@ -743,7 +826,12 @@ CONFIG_USB_ARCH_HAS_EHCI=y
743# CONFIG_EDAC is not set 826# CONFIG_EDAC is not set
744# CONFIG_RTC_CLASS is not set 827# CONFIG_RTC_CLASS is not set
745# CONFIG_DMADEVICES is not set 828# CONFIG_DMADEVICES is not set
829# CONFIG_AUXDISPLAY is not set
746# CONFIG_UIO is not set 830# CONFIG_UIO is not set
831
832#
833# TI VLYNQ
834#
747# CONFIG_STAGING is not set 835# CONFIG_STAGING is not set
748 836
749# 837#
@@ -754,14 +842,17 @@ CONFIG_EXT2_FS=y
754# CONFIG_EXT2_FS_XIP is not set 842# CONFIG_EXT2_FS_XIP is not set
755# CONFIG_EXT3_FS is not set 843# CONFIG_EXT3_FS is not set
756# CONFIG_EXT4_FS is not set 844# CONFIG_EXT4_FS is not set
845CONFIG_EXT4_USE_FOR_EXT23=y
757# CONFIG_REISERFS_FS is not set 846# CONFIG_REISERFS_FS is not set
758# CONFIG_JFS_FS is not set 847# CONFIG_JFS_FS is not set
759# CONFIG_FS_POSIX_ACL is not set 848# CONFIG_FS_POSIX_ACL is not set
760CONFIG_FILE_LOCKING=y
761# CONFIG_XFS_FS is not set 849# CONFIG_XFS_FS is not set
762# CONFIG_GFS2_FS is not set 850# CONFIG_GFS2_FS is not set
763# CONFIG_OCFS2_FS is not set 851# CONFIG_OCFS2_FS is not set
764# CONFIG_BTRFS_FS is not set 852# CONFIG_BTRFS_FS is not set
853# CONFIG_NILFS2_FS is not set
854CONFIG_FILE_LOCKING=y
855CONFIG_FSNOTIFY=y
765CONFIG_DNOTIFY=y 856CONFIG_DNOTIFY=y
766CONFIG_INOTIFY=y 857CONFIG_INOTIFY=y
767CONFIG_INOTIFY_USER=y 858CONFIG_INOTIFY_USER=y
@@ -771,6 +862,11 @@ CONFIG_INOTIFY_USER=y
771# CONFIG_FUSE_FS is not set 862# CONFIG_FUSE_FS is not set
772 863
773# 864#
865# Caches
866#
867# CONFIG_FSCACHE is not set
868
869#
774# CD-ROM/DVD Filesystems 870# CD-ROM/DVD Filesystems
775# 871#
776# CONFIG_ISO9660_FS is not set 872# CONFIG_ISO9660_FS is not set
@@ -825,7 +921,6 @@ CONFIG_LOCKD=y
825CONFIG_LOCKD_V4=y 921CONFIG_LOCKD_V4=y
826CONFIG_NFS_COMMON=y 922CONFIG_NFS_COMMON=y
827CONFIG_SUNRPC=y 923CONFIG_SUNRPC=y
828# CONFIG_SUNRPC_REGISTER_V4 is not set
829# CONFIG_RPCSEC_GSS_KRB5 is not set 924# CONFIG_RPCSEC_GSS_KRB5 is not set
830# CONFIG_RPCSEC_GSS_SPKM3 is not set 925# CONFIG_RPCSEC_GSS_SPKM3 is not set
831# CONFIG_SMB_FS is not set 926# CONFIG_SMB_FS is not set
@@ -841,6 +936,7 @@ CONFIG_SUNRPC=y
841CONFIG_MSDOS_PARTITION=y 936CONFIG_MSDOS_PARTITION=y
842# CONFIG_NLS is not set 937# CONFIG_NLS is not set
843# CONFIG_DLM is not set 938# CONFIG_DLM is not set
939# CONFIG_BINARY_PRINTF is not set
844 940
845# 941#
846# Library routines 942# Library routines
@@ -855,11 +951,13 @@ CONFIG_CRC32=y
855# CONFIG_CRC7 is not set 951# CONFIG_CRC7 is not set
856# CONFIG_LIBCRC32C is not set 952# CONFIG_LIBCRC32C is not set
857CONFIG_ZLIB_INFLATE=y 953CONFIG_ZLIB_INFLATE=y
858CONFIG_PLIST=y 954CONFIG_DECOMPRESS_GZIP=y
859CONFIG_HAS_IOMEM=y 955CONFIG_HAS_IOMEM=y
860CONFIG_HAS_IOPORT=y 956CONFIG_HAS_IOPORT=y
861CONFIG_HAS_DMA=y 957CONFIG_HAS_DMA=y
862CONFIG_HAVE_LMB=y 958CONFIG_HAVE_LMB=y
959CONFIG_NLATTR=y
960CONFIG_GENERIC_ATOMIC64=y
863 961
864# 962#
865# Kernel hacking 963# Kernel hacking
@@ -869,6 +967,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
869CONFIG_ENABLE_MUST_CHECK=y 967CONFIG_ENABLE_MUST_CHECK=y
870CONFIG_FRAME_WARN=1024 968CONFIG_FRAME_WARN=1024
871CONFIG_MAGIC_SYSRQ=y 969CONFIG_MAGIC_SYSRQ=y
970# CONFIG_STRIP_ASM_SYMS is not set
872# CONFIG_UNUSED_SYMBOLS is not set 971# CONFIG_UNUSED_SYMBOLS is not set
873CONFIG_DEBUG_FS=y 972CONFIG_DEBUG_FS=y
874# CONFIG_HEADERS_CHECK is not set 973# CONFIG_HEADERS_CHECK is not set
@@ -877,16 +976,23 @@ CONFIG_DEBUG_KERNEL=y
877CONFIG_DETECT_SOFTLOCKUP=y 976CONFIG_DETECT_SOFTLOCKUP=y
878# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 977# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
879CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 978CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
979CONFIG_DETECT_HUNG_TASK=y
980# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
981CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
880CONFIG_SCHED_DEBUG=y 982CONFIG_SCHED_DEBUG=y
881# CONFIG_SCHEDSTATS is not set 983# CONFIG_SCHEDSTATS is not set
882# CONFIG_TIMER_STATS is not set 984# CONFIG_TIMER_STATS is not set
883# CONFIG_DEBUG_OBJECTS is not set 985# CONFIG_DEBUG_OBJECTS is not set
884# CONFIG_SLUB_DEBUG_ON is not set 986# CONFIG_SLUB_DEBUG_ON is not set
885# CONFIG_SLUB_STATS is not set 987# CONFIG_SLUB_STATS is not set
988# CONFIG_DEBUG_KMEMLEAK is not set
886# CONFIG_DEBUG_RT_MUTEXES is not set 989# CONFIG_DEBUG_RT_MUTEXES is not set
887# CONFIG_RT_MUTEX_TESTER is not set 990# CONFIG_RT_MUTEX_TESTER is not set
888# CONFIG_DEBUG_SPINLOCK is not set 991# CONFIG_DEBUG_SPINLOCK is not set
889# CONFIG_DEBUG_MUTEXES is not set 992# CONFIG_DEBUG_MUTEXES is not set
993# CONFIG_DEBUG_LOCK_ALLOC is not set
994# CONFIG_PROVE_LOCKING is not set
995# CONFIG_LOCK_STAT is not set
890# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 996# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
891# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 997# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
892# CONFIG_DEBUG_KOBJECT is not set 998# CONFIG_DEBUG_KOBJECT is not set
@@ -898,35 +1004,45 @@ CONFIG_DEBUG_BUGVERBOSE=y
898# CONFIG_DEBUG_LIST is not set 1004# CONFIG_DEBUG_LIST is not set
899# CONFIG_DEBUG_SG is not set 1005# CONFIG_DEBUG_SG is not set
900# CONFIG_DEBUG_NOTIFIERS is not set 1006# CONFIG_DEBUG_NOTIFIERS is not set
901# CONFIG_BOOT_PRINTK_DELAY is not set 1007# CONFIG_DEBUG_CREDENTIALS is not set
902# CONFIG_RCU_TORTURE_TEST is not set 1008# CONFIG_RCU_TORTURE_TEST is not set
903# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1009# CONFIG_RCU_CPU_STALL_DETECTOR is not set
904# CONFIG_BACKTRACE_SELF_TEST is not set 1010# CONFIG_BACKTRACE_SELF_TEST is not set
905# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1011# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1012# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
906# CONFIG_FAULT_INJECTION is not set 1013# CONFIG_FAULT_INJECTION is not set
907# CONFIG_LATENCYTOP is not set 1014# CONFIG_LATENCYTOP is not set
908CONFIG_SYSCTL_SYSCALL_CHECK=y 1015CONFIG_SYSCTL_SYSCALL_CHECK=y
1016# CONFIG_DEBUG_PAGEALLOC is not set
909CONFIG_HAVE_FUNCTION_TRACER=y 1017CONFIG_HAVE_FUNCTION_TRACER=y
1018CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
910CONFIG_HAVE_DYNAMIC_FTRACE=y 1019CONFIG_HAVE_DYNAMIC_FTRACE=y
911CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1020CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
912 1021CONFIG_TRACING_SUPPORT=y
913# 1022CONFIG_FTRACE=y
914# Tracers
915#
916# CONFIG_FUNCTION_TRACER is not set 1023# CONFIG_FUNCTION_TRACER is not set
1024# CONFIG_IRQSOFF_TRACER is not set
917# CONFIG_SCHED_TRACER is not set 1025# CONFIG_SCHED_TRACER is not set
918# CONFIG_CONTEXT_SWITCH_TRACER is not set 1026# CONFIG_ENABLE_DEFAULT_TRACERS is not set
919# CONFIG_BOOT_TRACER is not set 1027# CONFIG_BOOT_TRACER is not set
920# CONFIG_TRACE_BRANCH_PROFILING is not set 1028CONFIG_BRANCH_PROFILE_NONE=y
1029# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1030# CONFIG_PROFILE_ALL_BRANCHES is not set
921# CONFIG_STACK_TRACER is not set 1031# CONFIG_STACK_TRACER is not set
922# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1032# CONFIG_KMEMTRACE is not set
1033# CONFIG_WORKQUEUE_TRACER is not set
1034# CONFIG_BLK_DEV_IO_TRACE is not set
1035# CONFIG_DYNAMIC_DEBUG is not set
1036# CONFIG_DMA_API_DEBUG is not set
923# CONFIG_SAMPLES is not set 1037# CONFIG_SAMPLES is not set
924CONFIG_HAVE_ARCH_KGDB=y 1038CONFIG_HAVE_ARCH_KGDB=y
925# CONFIG_KGDB is not set 1039# CONFIG_KGDB is not set
1040# CONFIG_PPC_DISABLE_WERROR is not set
1041CONFIG_PPC_WERROR=y
926CONFIG_PRINT_STACK_DEPTH=64 1042CONFIG_PRINT_STACK_DEPTH=64
927# CONFIG_DEBUG_STACKOVERFLOW is not set 1043# CONFIG_DEBUG_STACKOVERFLOW is not set
928# CONFIG_DEBUG_STACK_USAGE is not set 1044# CONFIG_DEBUG_STACK_USAGE is not set
929# CONFIG_DEBUG_PAGEALLOC is not set 1045# CONFIG_PPC_EMULATED_STATS is not set
930# CONFIG_CODE_PATCHING_SELFTEST is not set 1046# CONFIG_CODE_PATCHING_SELFTEST is not set
931# CONFIG_FTR_FIXUP_SELFTEST is not set 1047# CONFIG_FTR_FIXUP_SELFTEST is not set
932# CONFIG_MSI_BITMAP_SELFTEST is not set 1048# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -942,13 +1058,16 @@ CONFIG_PRINT_STACK_DEPTH=64
942# CONFIG_KEYS is not set 1058# CONFIG_KEYS is not set
943# CONFIG_SECURITY is not set 1059# CONFIG_SECURITY is not set
944# CONFIG_SECURITYFS is not set 1060# CONFIG_SECURITYFS is not set
945# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1061# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1062# CONFIG_DEFAULT_SECURITY_SMACK is not set
1063# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1064CONFIG_DEFAULT_SECURITY_DAC=y
1065CONFIG_DEFAULT_SECURITY=""
946CONFIG_CRYPTO=y 1066CONFIG_CRYPTO=y
947 1067
948# 1068#
949# Crypto core or helper 1069# Crypto core or helper
950# 1070#
951# CONFIG_CRYPTO_FIPS is not set
952CONFIG_CRYPTO_ALGAPI=y 1071CONFIG_CRYPTO_ALGAPI=y
953CONFIG_CRYPTO_ALGAPI2=y 1072CONFIG_CRYPTO_ALGAPI2=y
954CONFIG_CRYPTO_AEAD2=y 1073CONFIG_CRYPTO_AEAD2=y
@@ -957,10 +1076,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
957CONFIG_CRYPTO_HASH=y 1076CONFIG_CRYPTO_HASH=y
958CONFIG_CRYPTO_HASH2=y 1077CONFIG_CRYPTO_HASH2=y
959CONFIG_CRYPTO_RNG2=y 1078CONFIG_CRYPTO_RNG2=y
1079CONFIG_CRYPTO_PCOMP=y
960CONFIG_CRYPTO_MANAGER=y 1080CONFIG_CRYPTO_MANAGER=y
961CONFIG_CRYPTO_MANAGER2=y 1081CONFIG_CRYPTO_MANAGER2=y
962# CONFIG_CRYPTO_GF128MUL is not set 1082# CONFIG_CRYPTO_GF128MUL is not set
963# CONFIG_CRYPTO_NULL is not set 1083# CONFIG_CRYPTO_NULL is not set
1084CONFIG_CRYPTO_WORKQUEUE=y
964# CONFIG_CRYPTO_CRYPTD is not set 1085# CONFIG_CRYPTO_CRYPTD is not set
965# CONFIG_CRYPTO_AUTHENC is not set 1086# CONFIG_CRYPTO_AUTHENC is not set
966# CONFIG_CRYPTO_TEST is not set 1087# CONFIG_CRYPTO_TEST is not set
@@ -988,11 +1109,13 @@ CONFIG_CRYPTO_PCBC=y
988# 1109#
989# CONFIG_CRYPTO_HMAC is not set 1110# CONFIG_CRYPTO_HMAC is not set
990# CONFIG_CRYPTO_XCBC is not set 1111# CONFIG_CRYPTO_XCBC is not set
1112# CONFIG_CRYPTO_VMAC is not set
991 1113
992# 1114#
993# Digest 1115# Digest
994# 1116#
995# CONFIG_CRYPTO_CRC32C is not set 1117# CONFIG_CRYPTO_CRC32C is not set
1118# CONFIG_CRYPTO_GHASH is not set
996# CONFIG_CRYPTO_MD4 is not set 1119# CONFIG_CRYPTO_MD4 is not set
997CONFIG_CRYPTO_MD5=y 1120CONFIG_CRYPTO_MD5=y
998# CONFIG_CRYPTO_MICHAEL_MIC is not set 1121# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1029,6 +1152,7 @@ CONFIG_CRYPTO_DES=y
1029# Compression 1152# Compression
1030# 1153#
1031# CONFIG_CRYPTO_DEFLATE is not set 1154# CONFIG_CRYPTO_DEFLATE is not set
1155# CONFIG_CRYPTO_ZLIB is not set
1032# CONFIG_CRYPTO_LZO is not set 1156# CONFIG_CRYPTO_LZO is not set
1033 1157
1034# 1158#
@@ -1037,5 +1161,6 @@ CONFIG_CRYPTO_DES=y
1037# CONFIG_CRYPTO_ANSI_CPRNG is not set 1161# CONFIG_CRYPTO_ANSI_CPRNG is not set
1038CONFIG_CRYPTO_HW=y 1162CONFIG_CRYPTO_HW=y
1039# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1163# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1164# CONFIG_CRYPTO_DEV_PPC4XX is not set
1040# CONFIG_PPC_CLOCK is not set 1165# CONFIG_PPC_CLOCK is not set
1041# CONFIG_VIRTUALIZATION is not set 1166# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/44x/arches_defconfig b/arch/powerpc/configs/44x/arches_defconfig
index 6f976b51cdd0..1f6d0490e28d 100644
--- a/arch/powerpc/configs/44x/arches_defconfig
+++ b/arch/powerpc/configs/44x/arches_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.33-rc1
4# Thu Aug 13 14:14:07 2009 4# Mon Jan 4 14:02:35 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -20,6 +20,7 @@ CONFIG_BOOKE=y
20CONFIG_PTE_64BIT=y 20CONFIG_PTE_64BIT=y
21CONFIG_PHYS_64BIT=y 21CONFIG_PHYS_64BIT=y
22CONFIG_PPC_MMU_NOHASH=y 22CONFIG_PPC_MMU_NOHASH=y
23CONFIG_PPC_MMU_NOHASH_32=y
23# CONFIG_PPC_MM_SLICES is not set 24# CONFIG_PPC_MM_SLICES is not set
24CONFIG_NOT_COHERENT_CACHE=y 25CONFIG_NOT_COHERENT_CACHE=y
25CONFIG_PPC32=y 26CONFIG_PPC32=y
@@ -33,7 +34,9 @@ CONFIG_GENERIC_CLOCKEVENTS=y
33CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
34CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
35# 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
36CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
37CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
38CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
39CONFIG_TRACE_IRQFLAGS_SUPPORT=y 42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -56,6 +59,7 @@ CONFIG_AUDIT_ARCH=y
56CONFIG_GENERIC_BUG=y 59CONFIG_GENERIC_BUG=y
57CONFIG_DTC=y 60CONFIG_DTC=y
58# CONFIG_DEFAULT_UIMAGE is not set 61# CONFIG_DEFAULT_UIMAGE is not set
62CONFIG_ARCH_HIBERNATION_POSSIBLE=y
59CONFIG_PPC_DCR_NATIVE=y 63CONFIG_PPC_DCR_NATIVE=y
60# CONFIG_PPC_DCR_MMIO is not set 64# CONFIG_PPC_DCR_MMIO is not set
61CONFIG_PPC_DCR=y 65CONFIG_PPC_DCR=y
@@ -83,11 +87,13 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
83# 87#
84# RCU Subsystem 88# RCU Subsystem
85# 89#
86CONFIG_CLASSIC_RCU=y 90CONFIG_TREE_RCU=y
87# CONFIG_TREE_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
88# CONFIG_PREEMPT_RCU is not set 92# CONFIG_TINY_RCU is not set
93# CONFIG_RCU_TRACE is not set
94CONFIG_RCU_FANOUT=32
95# CONFIG_RCU_FANOUT_EXACT is not set
89# CONFIG_TREE_RCU_TRACE is not set 96# CONFIG_TREE_RCU_TRACE is not set
90# CONFIG_PREEMPT_RCU_TRACE is not set
91# CONFIG_IKCONFIG is not set 97# CONFIG_IKCONFIG is not set
92CONFIG_LOG_BUF_SHIFT=14 98CONFIG_LOG_BUF_SHIFT=14
93# CONFIG_GROUP_SCHED is not set 99# CONFIG_GROUP_SCHED is not set
@@ -121,22 +127,21 @@ CONFIG_TIMERFD=y
121CONFIG_EVENTFD=y 127CONFIG_EVENTFD=y
122CONFIG_SHMEM=y 128CONFIG_SHMEM=y
123CONFIG_AIO=y 129CONFIG_AIO=y
124CONFIG_HAVE_PERF_COUNTERS=y 130CONFIG_HAVE_PERF_EVENTS=y
125 131
126# 132#
127# Performance Counters 133# Kernel Performance Events And Counters
128# 134#
135# CONFIG_PERF_EVENTS is not set
129# CONFIG_PERF_COUNTERS is not set 136# CONFIG_PERF_COUNTERS is not set
130CONFIG_VM_EVENT_COUNTERS=y 137CONFIG_VM_EVENT_COUNTERS=y
131CONFIG_PCI_QUIRKS=y 138CONFIG_PCI_QUIRKS=y
132CONFIG_SLUB_DEBUG=y 139CONFIG_SLUB_DEBUG=y
133# CONFIG_STRIP_ASM_SYMS is not set
134CONFIG_COMPAT_BRK=y 140CONFIG_COMPAT_BRK=y
135# CONFIG_SLAB is not set 141# CONFIG_SLAB is not set
136CONFIG_SLUB=y 142CONFIG_SLUB=y
137# CONFIG_SLOB is not set 143# CONFIG_SLOB is not set
138# CONFIG_PROFILING is not set 144# CONFIG_PROFILING is not set
139# CONFIG_MARKERS is not set
140CONFIG_HAVE_OPROFILE=y 145CONFIG_HAVE_OPROFILE=y
141# CONFIG_KPROBES is not set 146# CONFIG_KPROBES is not set
142CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 147CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -144,6 +149,8 @@ CONFIG_HAVE_IOREMAP_PROT=y
144CONFIG_HAVE_KPROBES=y 149CONFIG_HAVE_KPROBES=y
145CONFIG_HAVE_KRETPROBES=y 150CONFIG_HAVE_KRETPROBES=y
146CONFIG_HAVE_ARCH_TRACEHOOK=y 151CONFIG_HAVE_ARCH_TRACEHOOK=y
152CONFIG_HAVE_DMA_ATTRS=y
153CONFIG_HAVE_DMA_API_DEBUG=y
147 154
148# 155#
149# GCOV-based kernel profiling 156# GCOV-based kernel profiling
@@ -169,14 +176,41 @@ CONFIG_LBDAF=y
169# IO Schedulers 176# IO Schedulers
170# 177#
171CONFIG_IOSCHED_NOOP=y 178CONFIG_IOSCHED_NOOP=y
172CONFIG_IOSCHED_AS=y
173CONFIG_IOSCHED_DEADLINE=y 179CONFIG_IOSCHED_DEADLINE=y
174CONFIG_IOSCHED_CFQ=y 180CONFIG_IOSCHED_CFQ=y
175CONFIG_DEFAULT_AS=y
176# CONFIG_DEFAULT_DEADLINE is not set 181# CONFIG_DEFAULT_DEADLINE is not set
177# CONFIG_DEFAULT_CFQ is not set 182CONFIG_DEFAULT_CFQ=y
178# CONFIG_DEFAULT_NOOP is not set 183# CONFIG_DEFAULT_NOOP is not set
179CONFIG_DEFAULT_IOSCHED="anticipatory" 184CONFIG_DEFAULT_IOSCHED="cfq"
185# CONFIG_INLINE_SPIN_TRYLOCK is not set
186# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
187# CONFIG_INLINE_SPIN_LOCK is not set
188# CONFIG_INLINE_SPIN_LOCK_BH is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
191CONFIG_INLINE_SPIN_UNLOCK=y
192# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
193CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
194# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
195# CONFIG_INLINE_READ_TRYLOCK is not set
196# CONFIG_INLINE_READ_LOCK is not set
197# CONFIG_INLINE_READ_LOCK_BH is not set
198# CONFIG_INLINE_READ_LOCK_IRQ is not set
199# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
200CONFIG_INLINE_READ_UNLOCK=y
201# CONFIG_INLINE_READ_UNLOCK_BH is not set
202CONFIG_INLINE_READ_UNLOCK_IRQ=y
203# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_WRITE_TRYLOCK is not set
205# CONFIG_INLINE_WRITE_LOCK is not set
206# CONFIG_INLINE_WRITE_LOCK_BH is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
209CONFIG_INLINE_WRITE_UNLOCK=y
210# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
211CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
212# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
213# CONFIG_MUTEX_SPIN_ON_OWNER is not set
180# CONFIG_FREEZER is not set 214# CONFIG_FREEZER is not set
181CONFIG_PPC4xx_PCI_EXPRESS=y 215CONFIG_PPC4xx_PCI_EXPRESS=y
182 216
@@ -198,6 +232,7 @@ CONFIG_ARCHES=y
198# CONFIG_CANYONLANDS is not set 232# CONFIG_CANYONLANDS is not set
199# CONFIG_GLACIER is not set 233# CONFIG_GLACIER is not set
200# CONFIG_REDWOOD is not set 234# CONFIG_REDWOOD is not set
235# CONFIG_EIGER is not set
201# CONFIG_YOSEMITE is not set 236# CONFIG_YOSEMITE is not set
202# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set 237# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set
203CONFIG_PPC44x_SIMPLE=y 238CONFIG_PPC44x_SIMPLE=y
@@ -241,10 +276,11 @@ CONFIG_BINFMT_ELF=y
241# CONFIG_MATH_EMULATION is not set 276# CONFIG_MATH_EMULATION is not set
242# CONFIG_IOMMU_HELPER is not set 277# CONFIG_IOMMU_HELPER is not set
243# CONFIG_SWIOTLB is not set 278# CONFIG_SWIOTLB is not set
244CONFIG_PPC_NEED_DMA_SYNC_OPS=y
245CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 279CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
246CONFIG_ARCH_HAS_WALK_MEMORY=y 280CONFIG_ARCH_HAS_WALK_MEMORY=y
247CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 281CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
282CONFIG_SPARSE_IRQ=y
283CONFIG_MAX_ACTIVE_REGIONS=32
248CONFIG_ARCH_FLATMEM_ENABLE=y 284CONFIG_ARCH_FLATMEM_ENABLE=y
249CONFIG_ARCH_POPULATES_NODE_MAP=y 285CONFIG_ARCH_POPULATES_NODE_MAP=y
250CONFIG_SELECT_MEMORY_MODEL=y 286CONFIG_SELECT_MEMORY_MODEL=y
@@ -260,8 +296,7 @@ CONFIG_PHYS_ADDR_T_64BIT=y
260CONFIG_ZONE_DMA_FLAG=1 296CONFIG_ZONE_DMA_FLAG=1
261CONFIG_BOUNCE=y 297CONFIG_BOUNCE=y
262CONFIG_VIRT_TO_BUS=y 298CONFIG_VIRT_TO_BUS=y
263CONFIG_HAVE_MLOCK=y 299# CONFIG_KSM is not set
264CONFIG_HAVE_MLOCKED_PAGE_BIT=y
265CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 300CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
266CONFIG_STDBINUTILS=y 301CONFIG_STDBINUTILS=y
267CONFIG_PPC_4K_PAGES=y 302CONFIG_PPC_4K_PAGES=y
@@ -352,6 +387,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
352# CONFIG_NETFILTER is not set 387# CONFIG_NETFILTER is not set
353# CONFIG_IP_DCCP is not set 388# CONFIG_IP_DCCP is not set
354# CONFIG_IP_SCTP is not set 389# CONFIG_IP_SCTP is not set
390# CONFIG_RDS is not set
355# CONFIG_TIPC is not set 391# CONFIG_TIPC is not set
356# CONFIG_ATM is not set 392# CONFIG_ATM is not set
357# CONFIG_BRIDGE is not set 393# CONFIG_BRIDGE is not set
@@ -379,7 +415,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
379# CONFIG_IRDA is not set 415# CONFIG_IRDA is not set
380# CONFIG_BT is not set 416# CONFIG_BT is not set
381# CONFIG_AF_RXRPC is not set 417# CONFIG_AF_RXRPC is not set
382# CONFIG_WIRELESS is not set 418CONFIG_WIRELESS=y
419# CONFIG_CFG80211 is not set
420# CONFIG_LIB80211 is not set
421
422#
423# CFG80211 needs to be enabled for MAC80211
424#
383# CONFIG_WIMAX is not set 425# CONFIG_WIMAX is not set
384# CONFIG_RFKILL is not set 426# CONFIG_RFKILL is not set
385# CONFIG_NET_9P is not set 427# CONFIG_NET_9P is not set
@@ -392,6 +434,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
392# Generic Driver Options 434# Generic Driver Options
393# 435#
394CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 436CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
437# CONFIG_DEVTMPFS is not set
395CONFIG_STANDALONE=y 438CONFIG_STANDALONE=y
396CONFIG_PREVENT_FIRMWARE_BUILD=y 439CONFIG_PREVENT_FIRMWARE_BUILD=y
397CONFIG_FW_LOADER=y 440CONFIG_FW_LOADER=y
@@ -404,9 +447,9 @@ CONFIG_CONNECTOR=y
404CONFIG_PROC_EVENTS=y 447CONFIG_PROC_EVENTS=y
405CONFIG_MTD=y 448CONFIG_MTD=y
406# CONFIG_MTD_DEBUG is not set 449# CONFIG_MTD_DEBUG is not set
450# CONFIG_MTD_TESTS is not set
407# CONFIG_MTD_CONCAT is not set 451# CONFIG_MTD_CONCAT is not set
408CONFIG_MTD_PARTITIONS=y 452CONFIG_MTD_PARTITIONS=y
409# CONFIG_MTD_TESTS is not set
410# CONFIG_MTD_REDBOOT_PARTS is not set 453# CONFIG_MTD_REDBOOT_PARTS is not set
411CONFIG_MTD_CMDLINE_PARTS=y 454CONFIG_MTD_CMDLINE_PARTS=y
412CONFIG_MTD_OF_PARTS=y 455CONFIG_MTD_OF_PARTS=y
@@ -497,6 +540,7 @@ CONFIG_BLK_DEV=y
497# CONFIG_BLK_DEV_UMEM is not set 540# CONFIG_BLK_DEV_UMEM is not set
498# CONFIG_BLK_DEV_COW_COMMON is not set 541# CONFIG_BLK_DEV_COW_COMMON is not set
499# CONFIG_BLK_DEV_LOOP is not set 542# CONFIG_BLK_DEV_LOOP is not set
543# CONFIG_BLK_DEV_DRBD is not set
500# CONFIG_BLK_DEV_NBD is not set 544# CONFIG_BLK_DEV_NBD is not set
501# CONFIG_BLK_DEV_SX8 is not set 545# CONFIG_BLK_DEV_SX8 is not set
502CONFIG_BLK_DEV_RAM=y 546CONFIG_BLK_DEV_RAM=y
@@ -573,16 +617,17 @@ CONFIG_IBM_NEW_EMAC_EMAC4=y
573# CONFIG_NET_PCI is not set 617# CONFIG_NET_PCI is not set
574# CONFIG_B44 is not set 618# CONFIG_B44 is not set
575# CONFIG_KS8842 is not set 619# CONFIG_KS8842 is not set
620# CONFIG_KS8851_MLL is not set
576# CONFIG_ATL2 is not set 621# CONFIG_ATL2 is not set
622# CONFIG_XILINX_EMACLITE is not set
577# CONFIG_NETDEV_1000 is not set 623# CONFIG_NETDEV_1000 is not set
578# CONFIG_NETDEV_10000 is not set 624# CONFIG_NETDEV_10000 is not set
579# CONFIG_TR is not set 625# CONFIG_TR is not set
580 626CONFIG_WLAN=y
581# 627# CONFIG_AIRO is not set
582# Wireless LAN 628# CONFIG_ATMEL is not set
583# 629# CONFIG_PRISM54 is not set
584# CONFIG_WLAN_PRE80211 is not set 630# CONFIG_HOSTAP is not set
585# CONFIG_WLAN_80211 is not set
586 631
587# 632#
588# Enable WiMAX (Networking options) to see the WiMAX drivers 633# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -595,6 +640,7 @@ CONFIG_IBM_NEW_EMAC_EMAC4=y
595# CONFIG_NETCONSOLE is not set 640# CONFIG_NETCONSOLE is not set
596# CONFIG_NETPOLL is not set 641# CONFIG_NETPOLL is not set
597# CONFIG_NET_POLL_CONTROLLER is not set 642# CONFIG_NET_POLL_CONTROLLER is not set
643# CONFIG_VMXNET3 is not set
598# CONFIG_ISDN is not set 644# CONFIG_ISDN is not set
599# CONFIG_PHONE is not set 645# CONFIG_PHONE is not set
600 646
@@ -640,6 +686,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
640# CONFIG_SERIAL_JSM is not set 686# CONFIG_SERIAL_JSM is not set
641CONFIG_SERIAL_OF_PLATFORM=y 687CONFIG_SERIAL_OF_PLATFORM=y
642# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set 688# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
689# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
643CONFIG_UNIX98_PTYS=y 690CONFIG_UNIX98_PTYS=y
644# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 691# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
645CONFIG_LEGACY_PTYS=y 692CONFIG_LEGACY_PTYS=y
@@ -656,6 +703,7 @@ CONFIG_LEGACY_PTY_COUNT=256
656CONFIG_DEVPORT=y 703CONFIG_DEVPORT=y
657CONFIG_I2C=y 704CONFIG_I2C=y
658CONFIG_I2C_BOARDINFO=y 705CONFIG_I2C_BOARDINFO=y
706CONFIG_I2C_COMPAT=y
659CONFIG_I2C_CHARDEV=y 707CONFIG_I2C_CHARDEV=y
660CONFIG_I2C_HELPER_AUTO=y 708CONFIG_I2C_HELPER_AUTO=y
661 709
@@ -696,11 +744,6 @@ CONFIG_I2C_IBM_IIC=y
696# CONFIG_I2C_TAOS_EVM is not set 744# CONFIG_I2C_TAOS_EVM is not set
697 745
698# 746#
699# Graphics adapter I2C/DDC channel drivers
700#
701# CONFIG_I2C_VOODOO3 is not set
702
703#
704# Other I2C/SMBus bus drivers 747# Other I2C/SMBus bus drivers
705# 748#
706# CONFIG_I2C_PCA_PLATFORM is not set 749# CONFIG_I2C_PCA_PLATFORM is not set
@@ -709,10 +752,6 @@ CONFIG_I2C_IBM_IIC=y
709# 752#
710# Miscellaneous I2C Chip support 753# Miscellaneous I2C Chip support
711# 754#
712# CONFIG_DS1682 is not set
713# CONFIG_SENSORS_PCF8574 is not set
714# CONFIG_PCF8575 is not set
715# CONFIG_SENSORS_PCA9539 is not set
716# CONFIG_SENSORS_TSL2550 is not set 755# CONFIG_SENSORS_TSL2550 is not set
717# CONFIG_I2C_DEBUG_CORE is not set 756# CONFIG_I2C_DEBUG_CORE is not set
718# CONFIG_I2C_DEBUG_ALGO is not set 757# CONFIG_I2C_DEBUG_ALGO is not set
@@ -730,6 +769,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
730# CONFIG_POWER_SUPPLY is not set 769# CONFIG_POWER_SUPPLY is not set
731CONFIG_HWMON=y 770CONFIG_HWMON=y
732# CONFIG_HWMON_VID is not set 771# CONFIG_HWMON_VID is not set
772# CONFIG_HWMON_DEBUG_CHIP is not set
773
774#
775# Native drivers
776#
733CONFIG_SENSORS_AD7414=y 777CONFIG_SENSORS_AD7414=y
734# CONFIG_SENSORS_AD7418 is not set 778# CONFIG_SENSORS_AD7418 is not set
735# CONFIG_SENSORS_ADM1021 is not set 779# CONFIG_SENSORS_ADM1021 is not set
@@ -753,6 +797,7 @@ CONFIG_SENSORS_AD7414=y
753# CONFIG_SENSORS_GL520SM is not set 797# CONFIG_SENSORS_GL520SM is not set
754# CONFIG_SENSORS_IT87 is not set 798# CONFIG_SENSORS_IT87 is not set
755# CONFIG_SENSORS_LM63 is not set 799# CONFIG_SENSORS_LM63 is not set
800# CONFIG_SENSORS_LM73 is not set
756# CONFIG_SENSORS_LM75 is not set 801# CONFIG_SENSORS_LM75 is not set
757# CONFIG_SENSORS_LM77 is not set 802# CONFIG_SENSORS_LM77 is not set
758# CONFIG_SENSORS_LM78 is not set 803# CONFIG_SENSORS_LM78 is not set
@@ -779,6 +824,7 @@ CONFIG_SENSORS_AD7414=y
779# CONFIG_SENSORS_ADS7828 is not set 824# CONFIG_SENSORS_ADS7828 is not set
780# CONFIG_SENSORS_THMC50 is not set 825# CONFIG_SENSORS_THMC50 is not set
781# CONFIG_SENSORS_TMP401 is not set 826# CONFIG_SENSORS_TMP401 is not set
827# CONFIG_SENSORS_TMP421 is not set
782# CONFIG_SENSORS_VIA686A is not set 828# CONFIG_SENSORS_VIA686A is not set
783# CONFIG_SENSORS_VT1211 is not set 829# CONFIG_SENSORS_VT1211 is not set
784# CONFIG_SENSORS_VT8231 is not set 830# CONFIG_SENSORS_VT8231 is not set
@@ -790,9 +836,7 @@ CONFIG_SENSORS_AD7414=y
790# CONFIG_SENSORS_W83L786NG is not set 836# CONFIG_SENSORS_W83L786NG is not set
791# CONFIG_SENSORS_W83627HF is not set 837# CONFIG_SENSORS_W83627HF is not set
792# CONFIG_SENSORS_W83627EHF is not set 838# CONFIG_SENSORS_W83627EHF is not set
793# CONFIG_HWMON_DEBUG_CHIP is not set
794# CONFIG_THERMAL is not set 839# CONFIG_THERMAL is not set
795# CONFIG_THERMAL_HWMON is not set
796# CONFIG_WATCHDOG is not set 840# CONFIG_WATCHDOG is not set
797CONFIG_SSB_POSSIBLE=y 841CONFIG_SSB_POSSIBLE=y
798 842
@@ -810,10 +854,13 @@ CONFIG_SSB_POSSIBLE=y
810# CONFIG_TWL4030_CORE is not set 854# CONFIG_TWL4030_CORE is not set
811# CONFIG_MFD_TMIO is not set 855# CONFIG_MFD_TMIO is not set
812# CONFIG_PMIC_DA903X is not set 856# CONFIG_PMIC_DA903X is not set
857# CONFIG_PMIC_ADP5520 is not set
813# CONFIG_MFD_WM8400 is not set 858# CONFIG_MFD_WM8400 is not set
859# CONFIG_MFD_WM831X is not set
814# CONFIG_MFD_WM8350_I2C is not set 860# CONFIG_MFD_WM8350_I2C is not set
815# CONFIG_MFD_PCF50633 is not set 861# CONFIG_MFD_PCF50633 is not set
816# CONFIG_AB3100_CORE is not set 862# CONFIG_AB3100_CORE is not set
863# CONFIG_MFD_88PM8607 is not set
817# CONFIG_REGULATOR is not set 864# CONFIG_REGULATOR is not set
818# CONFIG_MEDIA_SUPPORT is not set 865# CONFIG_MEDIA_SUPPORT is not set
819 866
@@ -821,6 +868,7 @@ CONFIG_SSB_POSSIBLE=y
821# Graphics support 868# Graphics support
822# 869#
823# CONFIG_AGP is not set 870# CONFIG_AGP is not set
871CONFIG_VGA_ARB=y
824# CONFIG_DRM is not set 872# CONFIG_DRM is not set
825# CONFIG_VGASTATE is not set 873# CONFIG_VGASTATE is not set
826CONFIG_VIDEO_OUTPUT_CONTROL=m 874CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -858,6 +906,7 @@ CONFIG_EXT2_FS=y
858# CONFIG_EXT2_FS_XIP is not set 906# CONFIG_EXT2_FS_XIP is not set
859# CONFIG_EXT3_FS is not set 907# CONFIG_EXT3_FS is not set
860# CONFIG_EXT4_FS is not set 908# CONFIG_EXT4_FS is not set
909CONFIG_EXT4_USE_FOR_EXT23=y
861# CONFIG_REISERFS_FS is not set 910# CONFIG_REISERFS_FS is not set
862# CONFIG_JFS_FS is not set 911# CONFIG_JFS_FS is not set
863# CONFIG_FS_POSIX_ACL is not set 912# CONFIG_FS_POSIX_ACL is not set
@@ -865,6 +914,7 @@ CONFIG_EXT2_FS=y
865# CONFIG_GFS2_FS is not set 914# CONFIG_GFS2_FS is not set
866# CONFIG_OCFS2_FS is not set 915# CONFIG_OCFS2_FS is not set
867# CONFIG_BTRFS_FS is not set 916# CONFIG_BTRFS_FS is not set
917# CONFIG_NILFS2_FS is not set
868CONFIG_FILE_LOCKING=y 918CONFIG_FILE_LOCKING=y
869CONFIG_FSNOTIFY=y 919CONFIG_FSNOTIFY=y
870CONFIG_DNOTIFY=y 920CONFIG_DNOTIFY=y
@@ -934,7 +984,6 @@ CONFIG_CRAMFS=y
934# CONFIG_ROMFS_FS is not set 984# CONFIG_ROMFS_FS is not set
935# CONFIG_SYSV_FS is not set 985# CONFIG_SYSV_FS is not set
936# CONFIG_UFS_FS is not set 986# CONFIG_UFS_FS is not set
937# CONFIG_NILFS2_FS is not set
938CONFIG_NETWORK_FILESYSTEMS=y 987CONFIG_NETWORK_FILESYSTEMS=y
939CONFIG_NFS_FS=y 988CONFIG_NFS_FS=y
940CONFIG_NFS_V3=y 989CONFIG_NFS_V3=y
@@ -993,6 +1042,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
993CONFIG_ENABLE_MUST_CHECK=y 1042CONFIG_ENABLE_MUST_CHECK=y
994CONFIG_FRAME_WARN=1024 1043CONFIG_FRAME_WARN=1024
995CONFIG_MAGIC_SYSRQ=y 1044CONFIG_MAGIC_SYSRQ=y
1045# CONFIG_STRIP_ASM_SYMS is not set
996# CONFIG_UNUSED_SYMBOLS is not set 1046# CONFIG_UNUSED_SYMBOLS is not set
997CONFIG_DEBUG_FS=y 1047CONFIG_DEBUG_FS=y
998# CONFIG_HEADERS_CHECK is not set 1048# CONFIG_HEADERS_CHECK is not set
@@ -1010,6 +1060,7 @@ CONFIG_SCHED_DEBUG=y
1010# CONFIG_DEBUG_OBJECTS is not set 1060# CONFIG_DEBUG_OBJECTS is not set
1011# CONFIG_SLUB_DEBUG_ON is not set 1061# CONFIG_SLUB_DEBUG_ON is not set
1012# CONFIG_SLUB_STATS is not set 1062# CONFIG_SLUB_STATS is not set
1063# CONFIG_DEBUG_KMEMLEAK is not set
1013# CONFIG_DEBUG_RT_MUTEXES is not set 1064# CONFIG_DEBUG_RT_MUTEXES is not set
1014# CONFIG_RT_MUTEX_TESTER is not set 1065# CONFIG_RT_MUTEX_TESTER is not set
1015# CONFIG_DEBUG_SPINLOCK is not set 1066# CONFIG_DEBUG_SPINLOCK is not set
@@ -1028,10 +1079,12 @@ CONFIG_SCHED_DEBUG=y
1028# CONFIG_DEBUG_LIST is not set 1079# CONFIG_DEBUG_LIST is not set
1029# CONFIG_DEBUG_SG is not set 1080# CONFIG_DEBUG_SG is not set
1030# CONFIG_DEBUG_NOTIFIERS is not set 1081# CONFIG_DEBUG_NOTIFIERS is not set
1082# CONFIG_DEBUG_CREDENTIALS is not set
1031# CONFIG_RCU_TORTURE_TEST is not set 1083# CONFIG_RCU_TORTURE_TEST is not set
1032# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1084# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1033# CONFIG_BACKTRACE_SELF_TEST is not set 1085# CONFIG_BACKTRACE_SELF_TEST is not set
1034# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1086# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1087# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1035# CONFIG_FAULT_INJECTION is not set 1088# CONFIG_FAULT_INJECTION is not set
1036# CONFIG_LATENCYTOP is not set 1089# CONFIG_LATENCYTOP is not set
1037CONFIG_SYSCTL_SYSCALL_CHECK=y 1090CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1055,10 +1108,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
1055# CONFIG_WORKQUEUE_TRACER is not set 1108# CONFIG_WORKQUEUE_TRACER is not set
1056# CONFIG_BLK_DEV_IO_TRACE is not set 1109# CONFIG_BLK_DEV_IO_TRACE is not set
1057# CONFIG_DYNAMIC_DEBUG is not set 1110# CONFIG_DYNAMIC_DEBUG is not set
1111# CONFIG_DMA_API_DEBUG is not set
1058# CONFIG_SAMPLES is not set 1112# CONFIG_SAMPLES is not set
1059CONFIG_HAVE_ARCH_KGDB=y 1113CONFIG_HAVE_ARCH_KGDB=y
1060# CONFIG_KGDB is not set 1114# CONFIG_KGDB is not set
1061# CONFIG_KMEMCHECK is not set
1062# CONFIG_PPC_DISABLE_WERROR is not set 1115# CONFIG_PPC_DISABLE_WERROR is not set
1063CONFIG_PPC_WERROR=y 1116CONFIG_PPC_WERROR=y
1064CONFIG_PRINT_STACK_DEPTH=64 1117CONFIG_PRINT_STACK_DEPTH=64
@@ -1080,7 +1133,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1080# CONFIG_KEYS is not set 1133# CONFIG_KEYS is not set
1081# CONFIG_SECURITY is not set 1134# CONFIG_SECURITY is not set
1082# CONFIG_SECURITYFS is not set 1135# CONFIG_SECURITYFS is not set
1083# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1136# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1137# CONFIG_DEFAULT_SECURITY_SMACK is not set
1138# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1139CONFIG_DEFAULT_SECURITY_DAC=y
1140CONFIG_DEFAULT_SECURITY=""
1084# CONFIG_CRYPTO is not set 1141# CONFIG_CRYPTO is not set
1085# CONFIG_PPC_CLOCK is not set 1142# CONFIG_PPC_CLOCK is not set
1086# CONFIG_VIRTUALIZATION is not set 1143# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/44x/bamboo_defconfig b/arch/powerpc/configs/44x/bamboo_defconfig
index e57f1e4c1795..788faac6c27a 100644
--- a/arch/powerpc/configs/44x/bamboo_defconfig
+++ b/arch/powerpc/configs/44x/bamboo_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.29-rc2 3# Linux kernel version: 2.6.33-rc1
4# Tue Jan 20 08:22:33 2009 4# Mon Jan 4 14:09:03 2010
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#
11# CONFIG_6xx is not set 11# CONFIG_PPC_BOOK3S_32 is not set
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
@@ -20,6 +20,7 @@ CONFIG_BOOKE=y
20CONFIG_PTE_64BIT=y 20CONFIG_PTE_64BIT=y
21CONFIG_PHYS_64BIT=y 21CONFIG_PHYS_64BIT=y
22CONFIG_PPC_MMU_NOHASH=y 22CONFIG_PPC_MMU_NOHASH=y
23CONFIG_PPC_MMU_NOHASH_32=y
23# CONFIG_PPC_MM_SLICES is not set 24# CONFIG_PPC_MM_SLICES is not set
24CONFIG_NOT_COHERENT_CACHE=y 25CONFIG_NOT_COHERENT_CACHE=y
25CONFIG_PPC32=y 26CONFIG_PPC32=y
@@ -31,15 +32,18 @@ CONFIG_GENERIC_TIME=y
31CONFIG_GENERIC_TIME_VSYSCALL=y 32CONFIG_GENERIC_TIME_VSYSCALL=y
32CONFIG_GENERIC_CLOCKEVENTS=y 33CONFIG_GENERIC_CLOCKEVENTS=y
33CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
34# 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
35CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
36CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
37CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
38CONFIG_LOCKDEP_SUPPORT=y 43CONFIG_LOCKDEP_SUPPORT=y
39CONFIG_RWSEM_XCHGADD_ALGORITHM=y 44CONFIG_RWSEM_XCHGADD_ALGORITHM=y
40CONFIG_ARCH_HAS_ILOG2_U32=y 45CONFIG_ARCH_HAS_ILOG2_U32=y
41CONFIG_GENERIC_HWEIGHT=y 46CONFIG_GENERIC_HWEIGHT=y
42CONFIG_GENERIC_CALIBRATE_DELAY=y
43CONFIG_GENERIC_FIND_NEXT_BIT=y 47CONFIG_GENERIC_FIND_NEXT_BIT=y
44# CONFIG_ARCH_NO_VIRT_TO_BUS is not set 48# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
45CONFIG_PPC=y 49CONFIG_PPC=y
@@ -53,11 +57,15 @@ CONFIG_PPC_UDBG_16550=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
56# CONFIG_DEFAULT_UIMAGE is not set 61# CONFIG_DEFAULT_UIMAGE is not set
62CONFIG_ARCH_HIBERNATION_POSSIBLE=y
57CONFIG_PPC_DCR_NATIVE=y 63CONFIG_PPC_DCR_NATIVE=y
58# CONFIG_PPC_DCR_MMIO is not set 64# CONFIG_PPC_DCR_MMIO is not set
59CONFIG_PPC_DCR=y 65CONFIG_PPC_DCR=y
66CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
60CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 67CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
68CONFIG_CONSTRUCTORS=y
61 69
62# 70#
63# General setup 71# General setup
@@ -71,9 +79,21 @@ CONFIG_SWAP=y
71CONFIG_SYSVIPC=y 79CONFIG_SYSVIPC=y
72CONFIG_SYSVIPC_SYSCTL=y 80CONFIG_SYSVIPC_SYSCTL=y
73CONFIG_POSIX_MQUEUE=y 81CONFIG_POSIX_MQUEUE=y
82CONFIG_POSIX_MQUEUE_SYSCTL=y
74# CONFIG_BSD_PROCESS_ACCT is not set 83# CONFIG_BSD_PROCESS_ACCT is not set
75# CONFIG_TASKSTATS is not set 84# CONFIG_TASKSTATS is not set
76# CONFIG_AUDIT is not set 85# CONFIG_AUDIT is not set
86
87#
88# RCU Subsystem
89#
90CONFIG_TREE_RCU=y
91# CONFIG_TREE_PREEMPT_RCU is not set
92# CONFIG_TINY_RCU is not set
93# CONFIG_RCU_TRACE is not set
94CONFIG_RCU_FANOUT=32
95# CONFIG_RCU_FANOUT_EXACT is not set
96# CONFIG_TREE_RCU_TRACE is not set
77# CONFIG_IKCONFIG is not set 97# CONFIG_IKCONFIG is not set
78CONFIG_LOG_BUF_SHIFT=14 98CONFIG_LOG_BUF_SHIFT=14
79CONFIG_GROUP_SCHED=y 99CONFIG_GROUP_SCHED=y
@@ -88,8 +108,12 @@ CONFIG_SYSFS_DEPRECATED_V2=y
88# CONFIG_NAMESPACES is not set 108# CONFIG_NAMESPACES is not set
89CONFIG_BLK_DEV_INITRD=y 109CONFIG_BLK_DEV_INITRD=y
90CONFIG_INITRAMFS_SOURCE="" 110CONFIG_INITRAMFS_SOURCE=""
111CONFIG_RD_GZIP=y
112# CONFIG_RD_BZIP2 is not set
113# CONFIG_RD_LZMA is not set
91# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 114# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
92CONFIG_SYSCTL=y 115CONFIG_SYSCTL=y
116CONFIG_ANON_INODES=y
93CONFIG_EMBEDDED=y 117CONFIG_EMBEDDED=y
94CONFIG_SYSCTL_SYSCALL=y 118CONFIG_SYSCTL_SYSCALL=y
95CONFIG_KALLSYMS=y 119CONFIG_KALLSYMS=y
@@ -99,19 +123,25 @@ CONFIG_HOTPLUG=y
99CONFIG_PRINTK=y 123CONFIG_PRINTK=y
100CONFIG_BUG=y 124CONFIG_BUG=y
101CONFIG_ELF_CORE=y 125CONFIG_ELF_CORE=y
102CONFIG_COMPAT_BRK=y
103CONFIG_BASE_FULL=y 126CONFIG_BASE_FULL=y
104CONFIG_FUTEX=y 127CONFIG_FUTEX=y
105CONFIG_ANON_INODES=y
106CONFIG_EPOLL=y 128CONFIG_EPOLL=y
107CONFIG_SIGNALFD=y 129CONFIG_SIGNALFD=y
108CONFIG_TIMERFD=y 130CONFIG_TIMERFD=y
109CONFIG_EVENTFD=y 131CONFIG_EVENTFD=y
110CONFIG_SHMEM=y 132CONFIG_SHMEM=y
111CONFIG_AIO=y 133CONFIG_AIO=y
134CONFIG_HAVE_PERF_EVENTS=y
135
136#
137# Kernel Performance Events And Counters
138#
139# CONFIG_PERF_EVENTS is not set
140# CONFIG_PERF_COUNTERS is not set
112CONFIG_VM_EVENT_COUNTERS=y 141CONFIG_VM_EVENT_COUNTERS=y
113CONFIG_PCI_QUIRKS=y 142CONFIG_PCI_QUIRKS=y
114CONFIG_SLUB_DEBUG=y 143CONFIG_SLUB_DEBUG=y
144CONFIG_COMPAT_BRK=y
115# CONFIG_SLAB is not set 145# CONFIG_SLAB is not set
116CONFIG_SLUB=y 146CONFIG_SLUB=y
117# CONFIG_SLOB is not set 147# CONFIG_SLOB is not set
@@ -123,6 +153,14 @@ CONFIG_HAVE_IOREMAP_PROT=y
123CONFIG_HAVE_KPROBES=y 153CONFIG_HAVE_KPROBES=y
124CONFIG_HAVE_KRETPROBES=y 154CONFIG_HAVE_KRETPROBES=y
125CONFIG_HAVE_ARCH_TRACEHOOK=y 155CONFIG_HAVE_ARCH_TRACEHOOK=y
156CONFIG_HAVE_DMA_ATTRS=y
157CONFIG_HAVE_DMA_API_DEBUG=y
158
159#
160# GCOV-based kernel profiling
161#
162# CONFIG_GCOV_KERNEL is not set
163# CONFIG_SLOW_WORK is not set
126# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 164# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
127CONFIG_SLABINFO=y 165CONFIG_SLABINFO=y
128CONFIG_RT_MUTEXES=y 166CONFIG_RT_MUTEXES=y
@@ -134,8 +172,7 @@ CONFIG_MODULE_UNLOAD=y
134# CONFIG_MODVERSIONS is not set 172# CONFIG_MODVERSIONS is not set
135# CONFIG_MODULE_SRCVERSION_ALL is not set 173# CONFIG_MODULE_SRCVERSION_ALL is not set
136CONFIG_BLOCK=y 174CONFIG_BLOCK=y
137CONFIG_LBD=y 175CONFIG_LBDAF=y
138# CONFIG_BLK_DEV_IO_TRACE is not set
139# CONFIG_BLK_DEV_BSG is not set 176# CONFIG_BLK_DEV_BSG is not set
140# CONFIG_BLK_DEV_INTEGRITY is not set 177# CONFIG_BLK_DEV_INTEGRITY is not set
141 178
@@ -143,19 +180,41 @@ CONFIG_LBD=y
143# IO Schedulers 180# IO Schedulers
144# 181#
145CONFIG_IOSCHED_NOOP=y 182CONFIG_IOSCHED_NOOP=y
146CONFIG_IOSCHED_AS=y
147CONFIG_IOSCHED_DEADLINE=y 183CONFIG_IOSCHED_DEADLINE=y
148CONFIG_IOSCHED_CFQ=y 184CONFIG_IOSCHED_CFQ=y
149CONFIG_DEFAULT_AS=y
150# CONFIG_DEFAULT_DEADLINE is not set 185# CONFIG_DEFAULT_DEADLINE is not set
151# CONFIG_DEFAULT_CFQ is not set 186CONFIG_DEFAULT_CFQ=y
152# CONFIG_DEFAULT_NOOP is not set 187# CONFIG_DEFAULT_NOOP is not set
153CONFIG_DEFAULT_IOSCHED="anticipatory" 188CONFIG_DEFAULT_IOSCHED="cfq"
154CONFIG_CLASSIC_RCU=y 189# CONFIG_INLINE_SPIN_TRYLOCK is not set
155# CONFIG_TREE_RCU is not set 190# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
156# CONFIG_PREEMPT_RCU is not set 191# CONFIG_INLINE_SPIN_LOCK is not set
157# CONFIG_TREE_RCU_TRACE is not set 192# CONFIG_INLINE_SPIN_LOCK_BH is not set
158# CONFIG_PREEMPT_RCU_TRACE is not set 193# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
194# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
195CONFIG_INLINE_SPIN_UNLOCK=y
196# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
197CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
198# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
199# CONFIG_INLINE_READ_TRYLOCK is not set
200# CONFIG_INLINE_READ_LOCK is not set
201# CONFIG_INLINE_READ_LOCK_BH is not set
202# CONFIG_INLINE_READ_LOCK_IRQ is not set
203# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
204CONFIG_INLINE_READ_UNLOCK=y
205# CONFIG_INLINE_READ_UNLOCK_BH is not set
206CONFIG_INLINE_READ_UNLOCK_IRQ=y
207# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
208# CONFIG_INLINE_WRITE_TRYLOCK is not set
209# CONFIG_INLINE_WRITE_LOCK is not set
210# CONFIG_INLINE_WRITE_LOCK_BH is not set
211# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
212# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
213CONFIG_INLINE_WRITE_UNLOCK=y
214# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
215CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
216# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
217# CONFIG_MUTEX_SPIN_ON_OWNER is not set
159# CONFIG_FREEZER is not set 218# CONFIG_FREEZER is not set
160# CONFIG_PPC4xx_PCI_EXPRESS is not set 219# CONFIG_PPC4xx_PCI_EXPRESS is not set
161 220
@@ -176,6 +235,8 @@ CONFIG_BAMBOO=y
176# CONFIG_ARCHES is not set 235# CONFIG_ARCHES is not set
177# CONFIG_CANYONLANDS is not set 236# CONFIG_CANYONLANDS is not set
178# CONFIG_GLACIER is not set 237# CONFIG_GLACIER is not set
238# CONFIG_REDWOOD is not set
239# CONFIG_EIGER is not set
179# CONFIG_YOSEMITE is not set 240# CONFIG_YOSEMITE is not set
180# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set 241# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set
181CONFIG_PPC44x_SIMPLE=y 242CONFIG_PPC44x_SIMPLE=y
@@ -218,10 +279,12 @@ CONFIG_BINFMT_ELF=y
218# CONFIG_BINFMT_MISC is not set 279# CONFIG_BINFMT_MISC is not set
219# CONFIG_MATH_EMULATION is not set 280# CONFIG_MATH_EMULATION is not set
220# CONFIG_IOMMU_HELPER is not set 281# CONFIG_IOMMU_HELPER is not set
221CONFIG_PPC_NEED_DMA_SYNC_OPS=y 282# CONFIG_SWIOTLB is not set
222CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 283CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
223CONFIG_ARCH_HAS_WALK_MEMORY=y 284CONFIG_ARCH_HAS_WALK_MEMORY=y
224CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 285CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
286CONFIG_SPARSE_IRQ=y
287CONFIG_MAX_ACTIVE_REGIONS=32
225CONFIG_ARCH_FLATMEM_ENABLE=y 288CONFIG_ARCH_FLATMEM_ENABLE=y
226CONFIG_ARCH_POPULATES_NODE_MAP=y 289CONFIG_ARCH_POPULATES_NODE_MAP=y
227CONFIG_SELECT_MEMORY_MODEL=y 290CONFIG_SELECT_MEMORY_MODEL=y
@@ -237,10 +300,13 @@ CONFIG_PHYS_ADDR_T_64BIT=y
237CONFIG_ZONE_DMA_FLAG=1 300CONFIG_ZONE_DMA_FLAG=1
238CONFIG_BOUNCE=y 301CONFIG_BOUNCE=y
239CONFIG_VIRT_TO_BUS=y 302CONFIG_VIRT_TO_BUS=y
240CONFIG_UNEVICTABLE_LRU=y 303# CONFIG_KSM is not set
304CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
305CONFIG_STDBINUTILS=y
241CONFIG_PPC_4K_PAGES=y 306CONFIG_PPC_4K_PAGES=y
242# CONFIG_PPC_16K_PAGES is not set 307# CONFIG_PPC_16K_PAGES is not set
243# CONFIG_PPC_64K_PAGES is not set 308# CONFIG_PPC_64K_PAGES is not set
309# CONFIG_PPC_256K_PAGES is not set
244CONFIG_FORCE_MAX_ZONEORDER=11 310CONFIG_FORCE_MAX_ZONEORDER=11
245CONFIG_PROC_DEVICETREE=y 311CONFIG_PROC_DEVICETREE=y
246CONFIG_CMDLINE_BOOL=y 312CONFIG_CMDLINE_BOOL=y
@@ -265,6 +331,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
265# CONFIG_PCI_LEGACY is not set 331# CONFIG_PCI_LEGACY is not set
266# CONFIG_PCI_DEBUG is not set 332# CONFIG_PCI_DEBUG is not set
267# CONFIG_PCI_STUB is not set 333# CONFIG_PCI_STUB is not set
334# CONFIG_PCI_IOV is not set
268# CONFIG_PCCARD is not set 335# CONFIG_PCCARD is not set
269# CONFIG_HOTPLUG_PCI is not set 336# CONFIG_HOTPLUG_PCI is not set
270# CONFIG_HAS_RAPIDIO is not set 337# CONFIG_HAS_RAPIDIO is not set
@@ -282,14 +349,12 @@ CONFIG_PAGE_OFFSET=0xc0000000
282CONFIG_KERNEL_START=0xc0000000 349CONFIG_KERNEL_START=0xc0000000
283CONFIG_PHYSICAL_START=0x00000000 350CONFIG_PHYSICAL_START=0x00000000
284CONFIG_TASK_SIZE=0xc0000000 351CONFIG_TASK_SIZE=0xc0000000
285CONFIG_CONSISTENT_START=0xff100000
286CONFIG_CONSISTENT_SIZE=0x00200000 352CONFIG_CONSISTENT_SIZE=0x00200000
287CONFIG_NET=y 353CONFIG_NET=y
288 354
289# 355#
290# Networking options 356# Networking options
291# 357#
292CONFIG_COMPAT_NET_DEV_OPS=y
293CONFIG_PACKET=y 358CONFIG_PACKET=y
294# CONFIG_PACKET_MMAP is not set 359# CONFIG_PACKET_MMAP is not set
295CONFIG_UNIX=y 360CONFIG_UNIX=y
@@ -326,6 +391,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
326# CONFIG_NETFILTER is not set 391# CONFIG_NETFILTER is not set
327# CONFIG_IP_DCCP is not set 392# CONFIG_IP_DCCP is not set
328# CONFIG_IP_SCTP is not set 393# CONFIG_IP_SCTP is not set
394# CONFIG_RDS is not set
329# CONFIG_TIPC is not set 395# CONFIG_TIPC is not set
330# CONFIG_ATM is not set 396# CONFIG_ATM is not set
331# CONFIG_BRIDGE is not set 397# CONFIG_BRIDGE is not set
@@ -339,6 +405,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
339# CONFIG_LAPB is not set 405# CONFIG_LAPB is not set
340# CONFIG_ECONET is not set 406# CONFIG_ECONET is not set
341# CONFIG_WAN_ROUTER is not set 407# CONFIG_WAN_ROUTER is not set
408# CONFIG_PHONET is not set
409# CONFIG_IEEE802154 is not set
342# CONFIG_NET_SCHED is not set 410# CONFIG_NET_SCHED is not set
343# CONFIG_DCB is not set 411# CONFIG_DCB is not set
344 412
@@ -351,8 +419,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
351# CONFIG_IRDA is not set 419# CONFIG_IRDA is not set
352# CONFIG_BT is not set 420# CONFIG_BT is not set
353# CONFIG_AF_RXRPC is not set 421# CONFIG_AF_RXRPC is not set
354# CONFIG_PHONET is not set 422CONFIG_WIRELESS=y
355# CONFIG_WIRELESS is not set 423# CONFIG_CFG80211 is not set
424# CONFIG_LIB80211 is not set
425
426#
427# CFG80211 needs to be enabled for MAC80211
428#
356# CONFIG_WIMAX is not set 429# CONFIG_WIMAX is not set
357# CONFIG_RFKILL is not set 430# CONFIG_RFKILL is not set
358# CONFIG_NET_9P is not set 431# CONFIG_NET_9P is not set
@@ -365,6 +438,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
365# Generic Driver Options 438# Generic Driver Options
366# 439#
367CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 440CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
441# CONFIG_DEVTMPFS is not set
368CONFIG_STANDALONE=y 442CONFIG_STANDALONE=y
369CONFIG_PREVENT_FIRMWARE_BUILD=y 443CONFIG_PREVENT_FIRMWARE_BUILD=y
370CONFIG_FW_LOADER=y 444CONFIG_FW_LOADER=y
@@ -386,6 +460,7 @@ CONFIG_BLK_DEV=y
386# CONFIG_BLK_DEV_UMEM is not set 460# CONFIG_BLK_DEV_UMEM is not set
387# CONFIG_BLK_DEV_COW_COMMON is not set 461# CONFIG_BLK_DEV_COW_COMMON is not set
388# CONFIG_BLK_DEV_LOOP is not set 462# CONFIG_BLK_DEV_LOOP is not set
463# CONFIG_BLK_DEV_DRBD is not set
389# CONFIG_BLK_DEV_NBD is not set 464# CONFIG_BLK_DEV_NBD is not set
390# CONFIG_BLK_DEV_SX8 is not set 465# CONFIG_BLK_DEV_SX8 is not set
391CONFIG_BLK_DEV_RAM=y 466CONFIG_BLK_DEV_RAM=y
@@ -398,12 +473,17 @@ CONFIG_BLK_DEV_RAM_SIZE=35000
398# CONFIG_BLK_DEV_HD is not set 473# CONFIG_BLK_DEV_HD is not set
399CONFIG_MISC_DEVICES=y 474CONFIG_MISC_DEVICES=y
400# CONFIG_PHANTOM is not set 475# CONFIG_PHANTOM is not set
401# CONFIG_EEPROM_93CX6 is not set
402# CONFIG_SGI_IOC4 is not set 476# CONFIG_SGI_IOC4 is not set
403# CONFIG_TIFM_CORE is not set 477# CONFIG_TIFM_CORE is not set
404# CONFIG_ENCLOSURE_SERVICES is not set 478# CONFIG_ENCLOSURE_SERVICES is not set
405# CONFIG_HP_ILO is not set 479# CONFIG_HP_ILO is not set
406# CONFIG_C2PORT is not set 480# CONFIG_C2PORT is not set
481
482#
483# EEPROM support
484#
485# CONFIG_EEPROM_93CX6 is not set
486# CONFIG_CB710_CORE is not set
407CONFIG_HAVE_IDE=y 487CONFIG_HAVE_IDE=y
408# CONFIG_IDE is not set 488# CONFIG_IDE is not set
409 489
@@ -423,7 +503,11 @@ CONFIG_HAVE_IDE=y
423# 503#
424 504
425# 505#
426# Enable only one of the two stacks, unless you know what you are doing 506# You can enable one or both FireWire driver stacks.
507#
508
509#
510# See the help texts for more information.
427# 511#
428# CONFIG_FIREWIRE is not set 512# CONFIG_FIREWIRE is not set
429# CONFIG_IEEE1394 is not set 513# CONFIG_IEEE1394 is not set
@@ -444,6 +528,8 @@ CONFIG_NET_ETHERNET=y
444# CONFIG_SUNGEM is not set 528# CONFIG_SUNGEM is not set
445# CONFIG_CASSINI is not set 529# CONFIG_CASSINI is not set
446# CONFIG_NET_VENDOR_3COM is not set 530# CONFIG_NET_VENDOR_3COM is not set
531# CONFIG_ETHOC is not set
532# CONFIG_DNET is not set
447# CONFIG_NET_TULIP is not set 533# CONFIG_NET_TULIP is not set
448# CONFIG_HP100 is not set 534# CONFIG_HP100 is not set
449CONFIG_IBM_NEW_EMAC=y 535CONFIG_IBM_NEW_EMAC=y
@@ -462,7 +548,10 @@ CONFIG_IBM_NEW_EMAC_ZMII=y
462# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 548# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
463# CONFIG_NET_PCI is not set 549# CONFIG_NET_PCI is not set
464# CONFIG_B44 is not set 550# CONFIG_B44 is not set
551# CONFIG_KS8842 is not set
552# CONFIG_KS8851_MLL is not set
465# CONFIG_ATL2 is not set 553# CONFIG_ATL2 is not set
554# CONFIG_XILINX_EMACLITE is not set
466CONFIG_NETDEV_1000=y 555CONFIG_NETDEV_1000=y
467# CONFIG_ACENIC is not set 556# CONFIG_ACENIC is not set
468# CONFIG_DL2K is not set 557# CONFIG_DL2K is not set
@@ -470,6 +559,7 @@ CONFIG_NETDEV_1000=y
470# CONFIG_E1000E is not set 559# CONFIG_E1000E is not set
471# CONFIG_IP1000 is not set 560# CONFIG_IP1000 is not set
472# CONFIG_IGB is not set 561# CONFIG_IGB is not set
562# CONFIG_IGBVF is not set
473# CONFIG_NS83820 is not set 563# CONFIG_NS83820 is not set
474# CONFIG_HAMACHI is not set 564# CONFIG_HAMACHI is not set
475# CONFIG_YELLOWFIN is not set 565# CONFIG_YELLOWFIN is not set
@@ -480,9 +570,13 @@ CONFIG_NETDEV_1000=y
480# CONFIG_VIA_VELOCITY is not set 570# CONFIG_VIA_VELOCITY is not set
481# CONFIG_TIGON3 is not set 571# CONFIG_TIGON3 is not set
482# CONFIG_BNX2 is not set 572# CONFIG_BNX2 is not set
573# CONFIG_CNIC is not set
574# CONFIG_MV643XX_ETH is not set
575# CONFIG_XILINX_LL_TEMAC is not set
483# CONFIG_QLA3XXX is not set 576# CONFIG_QLA3XXX is not set
484# CONFIG_ATL1 is not set 577# CONFIG_ATL1 is not set
485# CONFIG_ATL1E is not set 578# CONFIG_ATL1E is not set
579# CONFIG_ATL1C is not set
486# CONFIG_JME is not set 580# CONFIG_JME is not set
487CONFIG_NETDEV_10000=y 581CONFIG_NETDEV_10000=y
488# CONFIG_CHELSIO_T1 is not set 582# CONFIG_CHELSIO_T1 is not set
@@ -492,6 +586,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
492# CONFIG_IXGBE is not set 586# CONFIG_IXGBE is not set
493# CONFIG_IXGB is not set 587# CONFIG_IXGB is not set
494# CONFIG_S2IO is not set 588# CONFIG_S2IO is not set
589# CONFIG_VXGE is not set
495# CONFIG_MYRI10GE is not set 590# CONFIG_MYRI10GE is not set
496# CONFIG_NETXEN_NIC is not set 591# CONFIG_NETXEN_NIC is not set
497# CONFIG_NIU is not set 592# CONFIG_NIU is not set
@@ -501,14 +596,13 @@ CONFIG_CHELSIO_T3_DEPENDS=y
501# CONFIG_BNX2X is not set 596# CONFIG_BNX2X is not set
502# CONFIG_QLGE is not set 597# CONFIG_QLGE is not set
503# CONFIG_SFC is not set 598# CONFIG_SFC is not set
599# CONFIG_BE2NET is not set
504# CONFIG_TR is not set 600# CONFIG_TR is not set
505 601CONFIG_WLAN=y
506# 602# CONFIG_AIRO is not set
507# Wireless LAN 603# CONFIG_ATMEL is not set
508# 604# CONFIG_PRISM54 is not set
509# CONFIG_WLAN_PRE80211 is not set 605# CONFIG_HOSTAP is not set
510# CONFIG_WLAN_80211 is not set
511# CONFIG_IWLWIFI_LEDS is not set
512 606
513# 607#
514# Enable WiMAX (Networking options) to see the WiMAX drivers 608# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -521,6 +615,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
521# CONFIG_NETCONSOLE is not set 615# CONFIG_NETCONSOLE is not set
522# CONFIG_NETPOLL is not set 616# CONFIG_NETPOLL is not set
523# CONFIG_NET_POLL_CONTROLLER is not set 617# CONFIG_NET_POLL_CONTROLLER is not set
618# CONFIG_VMXNET3 is not set
524# CONFIG_ISDN is not set 619# CONFIG_ISDN is not set
525# CONFIG_PHONE is not set 620# CONFIG_PHONE is not set
526 621
@@ -566,6 +661,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
566# CONFIG_SERIAL_JSM is not set 661# CONFIG_SERIAL_JSM is not set
567CONFIG_SERIAL_OF_PLATFORM=y 662CONFIG_SERIAL_OF_PLATFORM=y
568# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set 663# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
664# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
569CONFIG_UNIX98_PTYS=y 665CONFIG_UNIX98_PTYS=y
570# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 666# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
571CONFIG_LEGACY_PTYS=y 667CONFIG_LEGACY_PTYS=y
@@ -582,6 +678,11 @@ CONFIG_LEGACY_PTY_COUNT=256
582CONFIG_DEVPORT=y 678CONFIG_DEVPORT=y
583# CONFIG_I2C is not set 679# CONFIG_I2C is not set
584# CONFIG_SPI is not set 680# CONFIG_SPI is not set
681
682#
683# PPS support
684#
685# CONFIG_PPS is not set
585CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 686CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
586# CONFIG_GPIOLIB is not set 687# CONFIG_GPIOLIB is not set
587# CONFIG_W1 is not set 688# CONFIG_W1 is not set
@@ -604,27 +705,13 @@ CONFIG_SSB_POSSIBLE=y
604# CONFIG_HTC_PASIC3 is not set 705# CONFIG_HTC_PASIC3 is not set
605# CONFIG_MFD_TMIO is not set 706# CONFIG_MFD_TMIO is not set
606# CONFIG_REGULATOR is not set 707# CONFIG_REGULATOR is not set
607 708# CONFIG_MEDIA_SUPPORT is not set
608#
609# Multimedia devices
610#
611
612#
613# Multimedia core support
614#
615# CONFIG_VIDEO_DEV is not set
616# CONFIG_DVB_CORE is not set
617# CONFIG_VIDEO_MEDIA is not set
618
619#
620# Multimedia drivers
621#
622CONFIG_DAB=y
623 709
624# 710#
625# Graphics support 711# Graphics support
626# 712#
627# CONFIG_AGP is not set 713# CONFIG_AGP is not set
714CONFIG_VGA_ARB=y
628# CONFIG_DRM is not set 715# CONFIG_DRM is not set
629# CONFIG_VGASTATE is not set 716# CONFIG_VGASTATE is not set
630CONFIG_VIDEO_OUTPUT_CONTROL=m 717CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -649,7 +736,7 @@ CONFIG_USB_ARCH_HAS_EHCI=y
649# 736#
650 737
651# 738#
652# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 739# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
653# 740#
654# CONFIG_USB_GADGET is not set 741# CONFIG_USB_GADGET is not set
655 742
@@ -665,7 +752,12 @@ CONFIG_USB_ARCH_HAS_EHCI=y
665# CONFIG_EDAC is not set 752# CONFIG_EDAC is not set
666# CONFIG_RTC_CLASS is not set 753# CONFIG_RTC_CLASS is not set
667# CONFIG_DMADEVICES is not set 754# CONFIG_DMADEVICES is not set
755# CONFIG_AUXDISPLAY is not set
668# CONFIG_UIO is not set 756# CONFIG_UIO is not set
757
758#
759# TI VLYNQ
760#
669# CONFIG_STAGING is not set 761# CONFIG_STAGING is not set
670 762
671# 763#
@@ -676,14 +768,17 @@ CONFIG_EXT2_FS=y
676# CONFIG_EXT2_FS_XIP is not set 768# CONFIG_EXT2_FS_XIP is not set
677# CONFIG_EXT3_FS is not set 769# CONFIG_EXT3_FS is not set
678# CONFIG_EXT4_FS is not set 770# CONFIG_EXT4_FS is not set
771CONFIG_EXT4_USE_FOR_EXT23=y
679# CONFIG_REISERFS_FS is not set 772# CONFIG_REISERFS_FS is not set
680# CONFIG_JFS_FS is not set 773# CONFIG_JFS_FS is not set
681# CONFIG_FS_POSIX_ACL is not set 774# CONFIG_FS_POSIX_ACL is not set
682CONFIG_FILE_LOCKING=y
683# CONFIG_XFS_FS is not set 775# CONFIG_XFS_FS is not set
684# CONFIG_GFS2_FS is not set 776# CONFIG_GFS2_FS is not set
685# CONFIG_OCFS2_FS is not set 777# CONFIG_OCFS2_FS is not set
686# CONFIG_BTRFS_FS is not set 778# CONFIG_BTRFS_FS is not set
779# CONFIG_NILFS2_FS is not set
780CONFIG_FILE_LOCKING=y
781CONFIG_FSNOTIFY=y
687CONFIG_DNOTIFY=y 782CONFIG_DNOTIFY=y
688CONFIG_INOTIFY=y 783CONFIG_INOTIFY=y
689CONFIG_INOTIFY_USER=y 784CONFIG_INOTIFY_USER=y
@@ -693,6 +788,11 @@ CONFIG_INOTIFY_USER=y
693# CONFIG_FUSE_FS is not set 788# CONFIG_FUSE_FS is not set
694 789
695# 790#
791# Caches
792#
793# CONFIG_FSCACHE is not set
794
795#
696# CD-ROM/DVD Filesystems 796# CD-ROM/DVD Filesystems
697# 797#
698# CONFIG_ISO9660_FS is not set 798# CONFIG_ISO9660_FS is not set
@@ -746,7 +846,6 @@ CONFIG_LOCKD=y
746CONFIG_LOCKD_V4=y 846CONFIG_LOCKD_V4=y
747CONFIG_NFS_COMMON=y 847CONFIG_NFS_COMMON=y
748CONFIG_SUNRPC=y 848CONFIG_SUNRPC=y
749# CONFIG_SUNRPC_REGISTER_V4 is not set
750# CONFIG_RPCSEC_GSS_KRB5 is not set 849# CONFIG_RPCSEC_GSS_KRB5 is not set
751# CONFIG_RPCSEC_GSS_SPKM3 is not set 850# CONFIG_RPCSEC_GSS_SPKM3 is not set
752# CONFIG_SMB_FS is not set 851# CONFIG_SMB_FS is not set
@@ -762,6 +861,7 @@ CONFIG_SUNRPC=y
762CONFIG_MSDOS_PARTITION=y 861CONFIG_MSDOS_PARTITION=y
763# CONFIG_NLS is not set 862# CONFIG_NLS is not set
764# CONFIG_DLM is not set 863# CONFIG_DLM is not set
864# CONFIG_BINARY_PRINTF is not set
765 865
766# 866#
767# Library routines 867# Library routines
@@ -776,11 +876,13 @@ CONFIG_CRC32=y
776# CONFIG_CRC7 is not set 876# CONFIG_CRC7 is not set
777# CONFIG_LIBCRC32C is not set 877# CONFIG_LIBCRC32C is not set
778CONFIG_ZLIB_INFLATE=y 878CONFIG_ZLIB_INFLATE=y
779CONFIG_PLIST=y 879CONFIG_DECOMPRESS_GZIP=y
780CONFIG_HAS_IOMEM=y 880CONFIG_HAS_IOMEM=y
781CONFIG_HAS_IOPORT=y 881CONFIG_HAS_IOPORT=y
782CONFIG_HAS_DMA=y 882CONFIG_HAS_DMA=y
783CONFIG_HAVE_LMB=y 883CONFIG_HAVE_LMB=y
884CONFIG_NLATTR=y
885CONFIG_GENERIC_ATOMIC64=y
784 886
785# 887#
786# Kernel hacking 888# Kernel hacking
@@ -790,6 +892,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
790CONFIG_ENABLE_MUST_CHECK=y 892CONFIG_ENABLE_MUST_CHECK=y
791CONFIG_FRAME_WARN=1024 893CONFIG_FRAME_WARN=1024
792CONFIG_MAGIC_SYSRQ=y 894CONFIG_MAGIC_SYSRQ=y
895# CONFIG_STRIP_ASM_SYMS is not set
793# CONFIG_UNUSED_SYMBOLS is not set 896# CONFIG_UNUSED_SYMBOLS is not set
794CONFIG_DEBUG_FS=y 897CONFIG_DEBUG_FS=y
795# CONFIG_HEADERS_CHECK is not set 898# CONFIG_HEADERS_CHECK is not set
@@ -798,16 +901,23 @@ CONFIG_DEBUG_KERNEL=y
798CONFIG_DETECT_SOFTLOCKUP=y 901CONFIG_DETECT_SOFTLOCKUP=y
799# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 902# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
800CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 903CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
904CONFIG_DETECT_HUNG_TASK=y
905# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
906CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
801CONFIG_SCHED_DEBUG=y 907CONFIG_SCHED_DEBUG=y
802# CONFIG_SCHEDSTATS is not set 908# CONFIG_SCHEDSTATS is not set
803# CONFIG_TIMER_STATS is not set 909# CONFIG_TIMER_STATS is not set
804# CONFIG_DEBUG_OBJECTS is not set 910# CONFIG_DEBUG_OBJECTS is not set
805# CONFIG_SLUB_DEBUG_ON is not set 911# CONFIG_SLUB_DEBUG_ON is not set
806# CONFIG_SLUB_STATS is not set 912# CONFIG_SLUB_STATS is not set
913# CONFIG_DEBUG_KMEMLEAK is not set
807# CONFIG_DEBUG_RT_MUTEXES is not set 914# CONFIG_DEBUG_RT_MUTEXES is not set
808# CONFIG_RT_MUTEX_TESTER is not set 915# CONFIG_RT_MUTEX_TESTER is not set
809# CONFIG_DEBUG_SPINLOCK is not set 916# CONFIG_DEBUG_SPINLOCK is not set
810# CONFIG_DEBUG_MUTEXES is not set 917# CONFIG_DEBUG_MUTEXES is not set
918# CONFIG_DEBUG_LOCK_ALLOC is not set
919# CONFIG_PROVE_LOCKING is not set
920# CONFIG_LOCK_STAT is not set
811# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 921# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
812# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 922# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
813# CONFIG_DEBUG_KOBJECT is not set 923# CONFIG_DEBUG_KOBJECT is not set
@@ -819,35 +929,45 @@ CONFIG_SCHED_DEBUG=y
819# CONFIG_DEBUG_LIST is not set 929# CONFIG_DEBUG_LIST is not set
820# CONFIG_DEBUG_SG is not set 930# CONFIG_DEBUG_SG is not set
821# CONFIG_DEBUG_NOTIFIERS is not set 931# CONFIG_DEBUG_NOTIFIERS is not set
822# CONFIG_BOOT_PRINTK_DELAY is not set 932# CONFIG_DEBUG_CREDENTIALS is not set
823# CONFIG_RCU_TORTURE_TEST is not set 933# CONFIG_RCU_TORTURE_TEST is not set
824# CONFIG_RCU_CPU_STALL_DETECTOR is not set 934# CONFIG_RCU_CPU_STALL_DETECTOR is not set
825# CONFIG_BACKTRACE_SELF_TEST is not set 935# CONFIG_BACKTRACE_SELF_TEST is not set
826# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 936# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
937# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
827# CONFIG_FAULT_INJECTION is not set 938# CONFIG_FAULT_INJECTION is not set
828# CONFIG_LATENCYTOP is not set 939# CONFIG_LATENCYTOP is not set
829CONFIG_SYSCTL_SYSCALL_CHECK=y 940CONFIG_SYSCTL_SYSCALL_CHECK=y
941# CONFIG_DEBUG_PAGEALLOC is not set
830CONFIG_HAVE_FUNCTION_TRACER=y 942CONFIG_HAVE_FUNCTION_TRACER=y
943CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
831CONFIG_HAVE_DYNAMIC_FTRACE=y 944CONFIG_HAVE_DYNAMIC_FTRACE=y
832CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 945CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
833 946CONFIG_TRACING_SUPPORT=y
834# 947CONFIG_FTRACE=y
835# Tracers
836#
837# CONFIG_FUNCTION_TRACER is not set 948# CONFIG_FUNCTION_TRACER is not set
949# CONFIG_IRQSOFF_TRACER is not set
838# CONFIG_SCHED_TRACER is not set 950# CONFIG_SCHED_TRACER is not set
839# CONFIG_CONTEXT_SWITCH_TRACER is not set 951# CONFIG_ENABLE_DEFAULT_TRACERS is not set
840# CONFIG_BOOT_TRACER is not set 952# CONFIG_BOOT_TRACER is not set
841# CONFIG_TRACE_BRANCH_PROFILING is not set 953CONFIG_BRANCH_PROFILE_NONE=y
954# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
955# CONFIG_PROFILE_ALL_BRANCHES is not set
842# CONFIG_STACK_TRACER is not set 956# CONFIG_STACK_TRACER is not set
843# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 957# CONFIG_KMEMTRACE is not set
958# CONFIG_WORKQUEUE_TRACER is not set
959# CONFIG_BLK_DEV_IO_TRACE is not set
960# CONFIG_DYNAMIC_DEBUG is not set
961# CONFIG_DMA_API_DEBUG is not set
844# CONFIG_SAMPLES is not set 962# CONFIG_SAMPLES is not set
845CONFIG_HAVE_ARCH_KGDB=y 963CONFIG_HAVE_ARCH_KGDB=y
846# CONFIG_KGDB is not set 964# CONFIG_KGDB is not set
965# CONFIG_PPC_DISABLE_WERROR is not set
966CONFIG_PPC_WERROR=y
847CONFIG_PRINT_STACK_DEPTH=64 967CONFIG_PRINT_STACK_DEPTH=64
848# CONFIG_DEBUG_STACKOVERFLOW is not set 968# CONFIG_DEBUG_STACKOVERFLOW is not set
849# CONFIG_DEBUG_STACK_USAGE is not set 969# CONFIG_DEBUG_STACK_USAGE is not set
850# CONFIG_DEBUG_PAGEALLOC is not set 970# CONFIG_PPC_EMULATED_STATS is not set
851# CONFIG_CODE_PATCHING_SELFTEST is not set 971# CONFIG_CODE_PATCHING_SELFTEST is not set
852# CONFIG_FTR_FIXUP_SELFTEST is not set 972# CONFIG_FTR_FIXUP_SELFTEST is not set
853# CONFIG_MSI_BITMAP_SELFTEST is not set 973# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -863,13 +983,16 @@ CONFIG_PRINT_STACK_DEPTH=64
863# CONFIG_KEYS is not set 983# CONFIG_KEYS is not set
864# CONFIG_SECURITY is not set 984# CONFIG_SECURITY is not set
865# CONFIG_SECURITYFS is not set 985# CONFIG_SECURITYFS is not set
866# CONFIG_SECURITY_FILE_CAPABILITIES is not set 986# CONFIG_DEFAULT_SECURITY_SELINUX is not set
987# CONFIG_DEFAULT_SECURITY_SMACK is not set
988# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
989CONFIG_DEFAULT_SECURITY_DAC=y
990CONFIG_DEFAULT_SECURITY=""
867CONFIG_CRYPTO=y 991CONFIG_CRYPTO=y
868 992
869# 993#
870# Crypto core or helper 994# Crypto core or helper
871# 995#
872# CONFIG_CRYPTO_FIPS is not set
873CONFIG_CRYPTO_ALGAPI=y 996CONFIG_CRYPTO_ALGAPI=y
874CONFIG_CRYPTO_ALGAPI2=y 997CONFIG_CRYPTO_ALGAPI2=y
875CONFIG_CRYPTO_AEAD2=y 998CONFIG_CRYPTO_AEAD2=y
@@ -878,10 +1001,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
878CONFIG_CRYPTO_HASH=y 1001CONFIG_CRYPTO_HASH=y
879CONFIG_CRYPTO_HASH2=y 1002CONFIG_CRYPTO_HASH2=y
880CONFIG_CRYPTO_RNG2=y 1003CONFIG_CRYPTO_RNG2=y
1004CONFIG_CRYPTO_PCOMP=y
881CONFIG_CRYPTO_MANAGER=y 1005CONFIG_CRYPTO_MANAGER=y
882CONFIG_CRYPTO_MANAGER2=y 1006CONFIG_CRYPTO_MANAGER2=y
883# CONFIG_CRYPTO_GF128MUL is not set 1007# CONFIG_CRYPTO_GF128MUL is not set
884# CONFIG_CRYPTO_NULL is not set 1008# CONFIG_CRYPTO_NULL is not set
1009CONFIG_CRYPTO_WORKQUEUE=y
885# CONFIG_CRYPTO_CRYPTD is not set 1010# CONFIG_CRYPTO_CRYPTD is not set
886# CONFIG_CRYPTO_AUTHENC is not set 1011# CONFIG_CRYPTO_AUTHENC is not set
887# CONFIG_CRYPTO_TEST is not set 1012# CONFIG_CRYPTO_TEST is not set
@@ -909,11 +1034,13 @@ CONFIG_CRYPTO_PCBC=y
909# 1034#
910# CONFIG_CRYPTO_HMAC is not set 1035# CONFIG_CRYPTO_HMAC is not set
911# CONFIG_CRYPTO_XCBC is not set 1036# CONFIG_CRYPTO_XCBC is not set
1037# CONFIG_CRYPTO_VMAC is not set
912 1038
913# 1039#
914# Digest 1040# Digest
915# 1041#
916# CONFIG_CRYPTO_CRC32C is not set 1042# CONFIG_CRYPTO_CRC32C is not set
1043# CONFIG_CRYPTO_GHASH is not set
917# CONFIG_CRYPTO_MD4 is not set 1044# CONFIG_CRYPTO_MD4 is not set
918CONFIG_CRYPTO_MD5=y 1045CONFIG_CRYPTO_MD5=y
919# CONFIG_CRYPTO_MICHAEL_MIC is not set 1046# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -950,6 +1077,7 @@ CONFIG_CRYPTO_DES=y
950# Compression 1077# Compression
951# 1078#
952# CONFIG_CRYPTO_DEFLATE is not set 1079# CONFIG_CRYPTO_DEFLATE is not set
1080# CONFIG_CRYPTO_ZLIB is not set
953# CONFIG_CRYPTO_LZO is not set 1081# CONFIG_CRYPTO_LZO is not set
954 1082
955# 1083#
@@ -958,5 +1086,6 @@ CONFIG_CRYPTO_DES=y
958# CONFIG_CRYPTO_ANSI_CPRNG is not set 1086# CONFIG_CRYPTO_ANSI_CPRNG is not set
959CONFIG_CRYPTO_HW=y 1087CONFIG_CRYPTO_HW=y
960# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1088# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1089# CONFIG_CRYPTO_DEV_PPC4XX is not set
961# CONFIG_PPC_CLOCK is not set 1090# CONFIG_PPC_CLOCK is not set
962# CONFIG_VIRTUALIZATION is not set 1091# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/44x/canyonlands_defconfig b/arch/powerpc/configs/44x/canyonlands_defconfig
index b312b166be66..4ef8bcab61f8 100644
--- a/arch/powerpc/configs/44x/canyonlands_defconfig
+++ b/arch/powerpc/configs/44x/canyonlands_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.33-rc1
4# Wed Jul 29 17:27:20 2009 4# Mon Jan 4 14:12:20 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -20,6 +20,7 @@ CONFIG_BOOKE=y
20CONFIG_PTE_64BIT=y 20CONFIG_PTE_64BIT=y
21CONFIG_PHYS_64BIT=y 21CONFIG_PHYS_64BIT=y
22CONFIG_PPC_MMU_NOHASH=y 22CONFIG_PPC_MMU_NOHASH=y
23CONFIG_PPC_MMU_NOHASH_32=y
23# CONFIG_PPC_MM_SLICES is not set 24# CONFIG_PPC_MM_SLICES is not set
24CONFIG_NOT_COHERENT_CACHE=y 25CONFIG_NOT_COHERENT_CACHE=y
25CONFIG_PPC32=y 26CONFIG_PPC32=y
@@ -33,7 +34,9 @@ CONFIG_GENERIC_CLOCKEVENTS=y
33CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
34CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
35# 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
36CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
37CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
38CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
39CONFIG_TRACE_IRQFLAGS_SUPPORT=y 42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -56,6 +59,7 @@ CONFIG_AUDIT_ARCH=y
56CONFIG_GENERIC_BUG=y 59CONFIG_GENERIC_BUG=y
57CONFIG_DTC=y 60CONFIG_DTC=y
58# CONFIG_DEFAULT_UIMAGE is not set 61# CONFIG_DEFAULT_UIMAGE is not set
62CONFIG_ARCH_HIBERNATION_POSSIBLE=y
59CONFIG_PPC_DCR_NATIVE=y 63CONFIG_PPC_DCR_NATIVE=y
60# CONFIG_PPC_DCR_MMIO is not set 64# CONFIG_PPC_DCR_MMIO is not set
61CONFIG_PPC_DCR=y 65CONFIG_PPC_DCR=y
@@ -83,11 +87,13 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
83# 87#
84# RCU Subsystem 88# RCU Subsystem
85# 89#
86CONFIG_CLASSIC_RCU=y 90CONFIG_TREE_RCU=y
87# CONFIG_TREE_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
88# CONFIG_PREEMPT_RCU is not set 92# CONFIG_TINY_RCU is not set
93# CONFIG_RCU_TRACE is not set
94CONFIG_RCU_FANOUT=32
95# CONFIG_RCU_FANOUT_EXACT is not set
89# CONFIG_TREE_RCU_TRACE is not set 96# CONFIG_TREE_RCU_TRACE is not set
90# CONFIG_PREEMPT_RCU_TRACE is not set
91# CONFIG_IKCONFIG is not set 97# CONFIG_IKCONFIG is not set
92CONFIG_LOG_BUF_SHIFT=14 98CONFIG_LOG_BUF_SHIFT=14
93# CONFIG_GROUP_SCHED is not set 99# CONFIG_GROUP_SCHED is not set
@@ -121,22 +127,21 @@ CONFIG_TIMERFD=y
121CONFIG_EVENTFD=y 127CONFIG_EVENTFD=y
122CONFIG_SHMEM=y 128CONFIG_SHMEM=y
123CONFIG_AIO=y 129CONFIG_AIO=y
124CONFIG_HAVE_PERF_COUNTERS=y 130CONFIG_HAVE_PERF_EVENTS=y
125 131
126# 132#
127# Performance Counters 133# Kernel Performance Events And Counters
128# 134#
135# CONFIG_PERF_EVENTS is not set
129# CONFIG_PERF_COUNTERS is not set 136# CONFIG_PERF_COUNTERS is not set
130CONFIG_VM_EVENT_COUNTERS=y 137CONFIG_VM_EVENT_COUNTERS=y
131CONFIG_PCI_QUIRKS=y 138CONFIG_PCI_QUIRKS=y
132CONFIG_SLUB_DEBUG=y 139CONFIG_SLUB_DEBUG=y
133# CONFIG_STRIP_ASM_SYMS is not set
134CONFIG_COMPAT_BRK=y 140CONFIG_COMPAT_BRK=y
135# CONFIG_SLAB is not set 141# CONFIG_SLAB is not set
136CONFIG_SLUB=y 142CONFIG_SLUB=y
137# CONFIG_SLOB is not set 143# CONFIG_SLOB is not set
138# CONFIG_PROFILING is not set 144# CONFIG_PROFILING is not set
139# CONFIG_MARKERS is not set
140CONFIG_HAVE_OPROFILE=y 145CONFIG_HAVE_OPROFILE=y
141# CONFIG_KPROBES is not set 146# CONFIG_KPROBES is not set
142CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 147CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -144,6 +149,8 @@ CONFIG_HAVE_IOREMAP_PROT=y
144CONFIG_HAVE_KPROBES=y 149CONFIG_HAVE_KPROBES=y
145CONFIG_HAVE_KRETPROBES=y 150CONFIG_HAVE_KRETPROBES=y
146CONFIG_HAVE_ARCH_TRACEHOOK=y 151CONFIG_HAVE_ARCH_TRACEHOOK=y
152CONFIG_HAVE_DMA_ATTRS=y
153CONFIG_HAVE_DMA_API_DEBUG=y
147 154
148# 155#
149# GCOV-based kernel profiling 156# GCOV-based kernel profiling
@@ -169,14 +176,41 @@ CONFIG_LBDAF=y
169# IO Schedulers 176# IO Schedulers
170# 177#
171CONFIG_IOSCHED_NOOP=y 178CONFIG_IOSCHED_NOOP=y
172CONFIG_IOSCHED_AS=y
173CONFIG_IOSCHED_DEADLINE=y 179CONFIG_IOSCHED_DEADLINE=y
174CONFIG_IOSCHED_CFQ=y 180CONFIG_IOSCHED_CFQ=y
175CONFIG_DEFAULT_AS=y
176# CONFIG_DEFAULT_DEADLINE is not set 181# CONFIG_DEFAULT_DEADLINE is not set
177# CONFIG_DEFAULT_CFQ is not set 182CONFIG_DEFAULT_CFQ=y
178# CONFIG_DEFAULT_NOOP is not set 183# CONFIG_DEFAULT_NOOP is not set
179CONFIG_DEFAULT_IOSCHED="anticipatory" 184CONFIG_DEFAULT_IOSCHED="cfq"
185# CONFIG_INLINE_SPIN_TRYLOCK is not set
186# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
187# CONFIG_INLINE_SPIN_LOCK is not set
188# CONFIG_INLINE_SPIN_LOCK_BH is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
191CONFIG_INLINE_SPIN_UNLOCK=y
192# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
193CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
194# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
195# CONFIG_INLINE_READ_TRYLOCK is not set
196# CONFIG_INLINE_READ_LOCK is not set
197# CONFIG_INLINE_READ_LOCK_BH is not set
198# CONFIG_INLINE_READ_LOCK_IRQ is not set
199# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
200CONFIG_INLINE_READ_UNLOCK=y
201# CONFIG_INLINE_READ_UNLOCK_BH is not set
202CONFIG_INLINE_READ_UNLOCK_IRQ=y
203# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_WRITE_TRYLOCK is not set
205# CONFIG_INLINE_WRITE_LOCK is not set
206# CONFIG_INLINE_WRITE_LOCK_BH is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
209CONFIG_INLINE_WRITE_UNLOCK=y
210# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
211CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
212# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
213# CONFIG_MUTEX_SPIN_ON_OWNER is not set
180# CONFIG_FREEZER is not set 214# CONFIG_FREEZER is not set
181CONFIG_PPC4xx_PCI_EXPRESS=y 215CONFIG_PPC4xx_PCI_EXPRESS=y
182 216
@@ -198,6 +232,7 @@ CONFIG_PPC4xx_PCI_EXPRESS=y
198CONFIG_CANYONLANDS=y 232CONFIG_CANYONLANDS=y
199# CONFIG_GLACIER is not set 233# CONFIG_GLACIER is not set
200# CONFIG_REDWOOD is not set 234# CONFIG_REDWOOD is not set
235# CONFIG_EIGER is not set
201# CONFIG_YOSEMITE is not set 236# CONFIG_YOSEMITE is not set
202# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set 237# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set
203CONFIG_PPC44x_SIMPLE=y 238CONFIG_PPC44x_SIMPLE=y
@@ -241,10 +276,11 @@ CONFIG_BINFMT_ELF=y
241# CONFIG_MATH_EMULATION is not set 276# CONFIG_MATH_EMULATION is not set
242# CONFIG_IOMMU_HELPER is not set 277# CONFIG_IOMMU_HELPER is not set
243# CONFIG_SWIOTLB is not set 278# CONFIG_SWIOTLB is not set
244CONFIG_PPC_NEED_DMA_SYNC_OPS=y
245CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 279CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
246CONFIG_ARCH_HAS_WALK_MEMORY=y 280CONFIG_ARCH_HAS_WALK_MEMORY=y
247CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 281CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
282CONFIG_SPARSE_IRQ=y
283CONFIG_MAX_ACTIVE_REGIONS=32
248CONFIG_ARCH_FLATMEM_ENABLE=y 284CONFIG_ARCH_FLATMEM_ENABLE=y
249CONFIG_ARCH_POPULATES_NODE_MAP=y 285CONFIG_ARCH_POPULATES_NODE_MAP=y
250CONFIG_SELECT_MEMORY_MODEL=y 286CONFIG_SELECT_MEMORY_MODEL=y
@@ -260,8 +296,7 @@ CONFIG_PHYS_ADDR_T_64BIT=y
260CONFIG_ZONE_DMA_FLAG=1 296CONFIG_ZONE_DMA_FLAG=1
261CONFIG_BOUNCE=y 297CONFIG_BOUNCE=y
262CONFIG_VIRT_TO_BUS=y 298CONFIG_VIRT_TO_BUS=y
263CONFIG_HAVE_MLOCK=y 299# CONFIG_KSM is not set
264CONFIG_HAVE_MLOCKED_PAGE_BIT=y
265CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 300CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
266CONFIG_STDBINUTILS=y 301CONFIG_STDBINUTILS=y
267CONFIG_PPC_4K_PAGES=y 302CONFIG_PPC_4K_PAGES=y
@@ -352,6 +387,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
352# CONFIG_NETFILTER is not set 387# CONFIG_NETFILTER is not set
353# CONFIG_IP_DCCP is not set 388# CONFIG_IP_DCCP is not set
354# CONFIG_IP_SCTP is not set 389# CONFIG_IP_SCTP is not set
390# CONFIG_RDS is not set
355# CONFIG_TIPC is not set 391# CONFIG_TIPC is not set
356# CONFIG_ATM is not set 392# CONFIG_ATM is not set
357# CONFIG_BRIDGE is not set 393# CONFIG_BRIDGE is not set
@@ -379,7 +415,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
379# CONFIG_IRDA is not set 415# CONFIG_IRDA is not set
380# CONFIG_BT is not set 416# CONFIG_BT is not set
381# CONFIG_AF_RXRPC is not set 417# CONFIG_AF_RXRPC is not set
382# CONFIG_WIRELESS is not set 418CONFIG_WIRELESS=y
419# CONFIG_CFG80211 is not set
420# CONFIG_LIB80211 is not set
421
422#
423# CFG80211 needs to be enabled for MAC80211
424#
383# CONFIG_WIMAX is not set 425# CONFIG_WIMAX is not set
384# CONFIG_RFKILL is not set 426# CONFIG_RFKILL is not set
385# CONFIG_NET_9P is not set 427# CONFIG_NET_9P is not set
@@ -392,6 +434,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
392# Generic Driver Options 434# Generic Driver Options
393# 435#
394CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 436CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
437# CONFIG_DEVTMPFS is not set
395CONFIG_STANDALONE=y 438CONFIG_STANDALONE=y
396CONFIG_PREVENT_FIRMWARE_BUILD=y 439CONFIG_PREVENT_FIRMWARE_BUILD=y
397CONFIG_FW_LOADER=y 440CONFIG_FW_LOADER=y
@@ -404,9 +447,9 @@ CONFIG_CONNECTOR=y
404CONFIG_PROC_EVENTS=y 447CONFIG_PROC_EVENTS=y
405CONFIG_MTD=y 448CONFIG_MTD=y
406# CONFIG_MTD_DEBUG is not set 449# CONFIG_MTD_DEBUG is not set
450# CONFIG_MTD_TESTS is not set
407# CONFIG_MTD_CONCAT is not set 451# CONFIG_MTD_CONCAT is not set
408CONFIG_MTD_PARTITIONS=y 452CONFIG_MTD_PARTITIONS=y
409# CONFIG_MTD_TESTS is not set
410# CONFIG_MTD_REDBOOT_PARTS is not set 453# CONFIG_MTD_REDBOOT_PARTS is not set
411CONFIG_MTD_CMDLINE_PARTS=y 454CONFIG_MTD_CMDLINE_PARTS=y
412CONFIG_MTD_OF_PARTS=y 455CONFIG_MTD_OF_PARTS=y
@@ -508,6 +551,7 @@ CONFIG_BLK_DEV=y
508# CONFIG_BLK_DEV_UMEM is not set 551# CONFIG_BLK_DEV_UMEM is not set
509# CONFIG_BLK_DEV_COW_COMMON is not set 552# CONFIG_BLK_DEV_COW_COMMON is not set
510# CONFIG_BLK_DEV_LOOP is not set 553# CONFIG_BLK_DEV_LOOP is not set
554# CONFIG_BLK_DEV_DRBD is not set
511# CONFIG_BLK_DEV_NBD is not set 555# CONFIG_BLK_DEV_NBD is not set
512# CONFIG_BLK_DEV_SX8 is not set 556# CONFIG_BLK_DEV_SX8 is not set
513# CONFIG_BLK_DEV_UB is not set 557# CONFIG_BLK_DEV_UB is not set
@@ -585,16 +629,18 @@ CONFIG_IBM_NEW_EMAC_EMAC4=y
585# CONFIG_NET_PCI is not set 629# CONFIG_NET_PCI is not set
586# CONFIG_B44 is not set 630# CONFIG_B44 is not set
587# CONFIG_KS8842 is not set 631# CONFIG_KS8842 is not set
632# CONFIG_KS8851_MLL is not set
588# CONFIG_ATL2 is not set 633# CONFIG_ATL2 is not set
634# CONFIG_XILINX_EMACLITE is not set
589# CONFIG_NETDEV_1000 is not set 635# CONFIG_NETDEV_1000 is not set
590# CONFIG_NETDEV_10000 is not set 636# CONFIG_NETDEV_10000 is not set
591# CONFIG_TR is not set 637# CONFIG_TR is not set
592 638CONFIG_WLAN=y
593# 639# CONFIG_AIRO is not set
594# Wireless LAN 640# CONFIG_ATMEL is not set
595# 641# CONFIG_PRISM54 is not set
596# CONFIG_WLAN_PRE80211 is not set 642# CONFIG_USB_ZD1201 is not set
597# CONFIG_WLAN_80211 is not set 643# CONFIG_HOSTAP is not set
598 644
599# 645#
600# Enable WiMAX (Networking options) to see the WiMAX drivers 646# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -616,6 +662,7 @@ CONFIG_IBM_NEW_EMAC_EMAC4=y
616# CONFIG_NETCONSOLE is not set 662# CONFIG_NETCONSOLE is not set
617# CONFIG_NETPOLL is not set 663# CONFIG_NETPOLL is not set
618# CONFIG_NET_POLL_CONTROLLER is not set 664# CONFIG_NET_POLL_CONTROLLER is not set
665# CONFIG_VMXNET3 is not set
619# CONFIG_ISDN is not set 666# CONFIG_ISDN is not set
620# CONFIG_PHONE is not set 667# CONFIG_PHONE is not set
621 668
@@ -661,6 +708,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
661# CONFIG_SERIAL_JSM is not set 708# CONFIG_SERIAL_JSM is not set
662CONFIG_SERIAL_OF_PLATFORM=y 709CONFIG_SERIAL_OF_PLATFORM=y
663# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set 710# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
711# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
664CONFIG_UNIX98_PTYS=y 712CONFIG_UNIX98_PTYS=y
665# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 713# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
666CONFIG_LEGACY_PTYS=y 714CONFIG_LEGACY_PTYS=y
@@ -676,6 +724,7 @@ CONFIG_LEGACY_PTY_COUNT=256
676CONFIG_DEVPORT=y 724CONFIG_DEVPORT=y
677CONFIG_I2C=y 725CONFIG_I2C=y
678CONFIG_I2C_BOARDINFO=y 726CONFIG_I2C_BOARDINFO=y
727CONFIG_I2C_COMPAT=y
679CONFIG_I2C_CHARDEV=y 728CONFIG_I2C_CHARDEV=y
680CONFIG_I2C_HELPER_AUTO=y 729CONFIG_I2C_HELPER_AUTO=y
681 730
@@ -717,11 +766,6 @@ CONFIG_I2C_IBM_IIC=y
717# CONFIG_I2C_TINY_USB is not set 766# CONFIG_I2C_TINY_USB is not set
718 767
719# 768#
720# Graphics adapter I2C/DDC channel drivers
721#
722# CONFIG_I2C_VOODOO3 is not set
723
724#
725# Other I2C/SMBus bus drivers 769# Other I2C/SMBus bus drivers
726# 770#
727# CONFIG_I2C_PCA_PLATFORM is not set 771# CONFIG_I2C_PCA_PLATFORM is not set
@@ -730,10 +774,6 @@ CONFIG_I2C_IBM_IIC=y
730# 774#
731# Miscellaneous I2C Chip support 775# Miscellaneous I2C Chip support
732# 776#
733# CONFIG_DS1682 is not set
734# CONFIG_SENSORS_PCF8574 is not set
735# CONFIG_PCF8575 is not set
736# CONFIG_SENSORS_PCA9539 is not set
737# CONFIG_SENSORS_TSL2550 is not set 777# CONFIG_SENSORS_TSL2550 is not set
738# CONFIG_I2C_DEBUG_CORE is not set 778# CONFIG_I2C_DEBUG_CORE is not set
739# CONFIG_I2C_DEBUG_ALGO is not set 779# CONFIG_I2C_DEBUG_ALGO is not set
@@ -751,6 +791,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
751# CONFIG_POWER_SUPPLY is not set 791# CONFIG_POWER_SUPPLY is not set
752CONFIG_HWMON=y 792CONFIG_HWMON=y
753# CONFIG_HWMON_VID is not set 793# CONFIG_HWMON_VID is not set
794# CONFIG_HWMON_DEBUG_CHIP is not set
795
796#
797# Native drivers
798#
754CONFIG_SENSORS_AD7414=y 799CONFIG_SENSORS_AD7414=y
755# CONFIG_SENSORS_AD7418 is not set 800# CONFIG_SENSORS_AD7418 is not set
756# CONFIG_SENSORS_ADM1021 is not set 801# CONFIG_SENSORS_ADM1021 is not set
@@ -774,6 +819,7 @@ CONFIG_SENSORS_AD7414=y
774# CONFIG_SENSORS_GL520SM is not set 819# CONFIG_SENSORS_GL520SM is not set
775# CONFIG_SENSORS_IT87 is not set 820# CONFIG_SENSORS_IT87 is not set
776# CONFIG_SENSORS_LM63 is not set 821# CONFIG_SENSORS_LM63 is not set
822# CONFIG_SENSORS_LM73 is not set
777# CONFIG_SENSORS_LM75 is not set 823# CONFIG_SENSORS_LM75 is not set
778# CONFIG_SENSORS_LM77 is not set 824# CONFIG_SENSORS_LM77 is not set
779# CONFIG_SENSORS_LM78 is not set 825# CONFIG_SENSORS_LM78 is not set
@@ -800,6 +846,7 @@ CONFIG_SENSORS_AD7414=y
800# CONFIG_SENSORS_ADS7828 is not set 846# CONFIG_SENSORS_ADS7828 is not set
801# CONFIG_SENSORS_THMC50 is not set 847# CONFIG_SENSORS_THMC50 is not set
802# CONFIG_SENSORS_TMP401 is not set 848# CONFIG_SENSORS_TMP401 is not set
849# CONFIG_SENSORS_TMP421 is not set
803# CONFIG_SENSORS_VIA686A is not set 850# CONFIG_SENSORS_VIA686A is not set
804# CONFIG_SENSORS_VT1211 is not set 851# CONFIG_SENSORS_VT1211 is not set
805# CONFIG_SENSORS_VT8231 is not set 852# CONFIG_SENSORS_VT8231 is not set
@@ -811,9 +858,7 @@ CONFIG_SENSORS_AD7414=y
811# CONFIG_SENSORS_W83L786NG is not set 858# CONFIG_SENSORS_W83L786NG is not set
812# CONFIG_SENSORS_W83627HF is not set 859# CONFIG_SENSORS_W83627HF is not set
813# CONFIG_SENSORS_W83627EHF is not set 860# CONFIG_SENSORS_W83627EHF is not set
814# CONFIG_HWMON_DEBUG_CHIP is not set
815# CONFIG_THERMAL is not set 861# CONFIG_THERMAL is not set
816# CONFIG_THERMAL_HWMON is not set
817# CONFIG_WATCHDOG is not set 862# CONFIG_WATCHDOG is not set
818CONFIG_SSB_POSSIBLE=y 863CONFIG_SSB_POSSIBLE=y
819 864
@@ -831,10 +876,13 @@ CONFIG_SSB_POSSIBLE=y
831# CONFIG_TWL4030_CORE is not set 876# CONFIG_TWL4030_CORE is not set
832# CONFIG_MFD_TMIO is not set 877# CONFIG_MFD_TMIO is not set
833# CONFIG_PMIC_DA903X is not set 878# CONFIG_PMIC_DA903X is not set
879# CONFIG_PMIC_ADP5520 is not set
834# CONFIG_MFD_WM8400 is not set 880# CONFIG_MFD_WM8400 is not set
881# CONFIG_MFD_WM831X is not set
835# CONFIG_MFD_WM8350_I2C is not set 882# CONFIG_MFD_WM8350_I2C is not set
836# CONFIG_MFD_PCF50633 is not set 883# CONFIG_MFD_PCF50633 is not set
837# CONFIG_AB3100_CORE is not set 884# CONFIG_AB3100_CORE is not set
885# CONFIG_MFD_88PM8607 is not set
838# CONFIG_REGULATOR is not set 886# CONFIG_REGULATOR is not set
839# CONFIG_MEDIA_SUPPORT is not set 887# CONFIG_MEDIA_SUPPORT is not set
840 888
@@ -842,6 +890,7 @@ CONFIG_SSB_POSSIBLE=y
842# Graphics support 890# Graphics support
843# 891#
844# CONFIG_AGP is not set 892# CONFIG_AGP is not set
893CONFIG_VGA_ARB=y
845# CONFIG_DRM is not set 894# CONFIG_DRM is not set
846# CONFIG_VGASTATE is not set 895# CONFIG_VGASTATE is not set
847# CONFIG_VIDEO_OUTPUT_CONTROL is not set 896# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -882,10 +931,12 @@ CONFIG_USB_MON=y
882CONFIG_USB_EHCI_HCD=m 931CONFIG_USB_EHCI_HCD=m
883# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 932# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
884# CONFIG_USB_EHCI_TT_NEWSCHED is not set 933# CONFIG_USB_EHCI_TT_NEWSCHED is not set
934# CONFIG_XPS_USB_HCD_XILINX is not set
885CONFIG_USB_EHCI_HCD_PPC_OF=y 935CONFIG_USB_EHCI_HCD_PPC_OF=y
886# CONFIG_USB_OXU210HP_HCD is not set 936# CONFIG_USB_OXU210HP_HCD is not set
887# CONFIG_USB_ISP116X_HCD is not set 937# CONFIG_USB_ISP116X_HCD is not set
888# CONFIG_USB_ISP1760_HCD is not set 938# CONFIG_USB_ISP1760_HCD is not set
939# CONFIG_USB_ISP1362_HCD is not set
889CONFIG_USB_OHCI_HCD=y 940CONFIG_USB_OHCI_HCD=y
890CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 941CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
891CONFIG_USB_OHCI_HCD_PPC_OF_LE=y 942CONFIG_USB_OHCI_HCD_PPC_OF_LE=y
@@ -993,6 +1044,7 @@ CONFIG_RTC_INTF_DEV=y
993# CONFIG_RTC_DRV_PCF8583 is not set 1044# CONFIG_RTC_DRV_PCF8583 is not set
994CONFIG_RTC_DRV_M41T80=y 1045CONFIG_RTC_DRV_M41T80=y
995# CONFIG_RTC_DRV_M41T80_WDT is not set 1046# CONFIG_RTC_DRV_M41T80_WDT is not set
1047# CONFIG_RTC_DRV_BQ32K is not set
996# CONFIG_RTC_DRV_S35390A is not set 1048# CONFIG_RTC_DRV_S35390A is not set
997# CONFIG_RTC_DRV_FM3130 is not set 1049# CONFIG_RTC_DRV_FM3130 is not set
998# CONFIG_RTC_DRV_RX8581 is not set 1050# CONFIG_RTC_DRV_RX8581 is not set
@@ -1014,7 +1066,9 @@ CONFIG_RTC_DRV_M41T80=y
1014# CONFIG_RTC_DRV_M48T86 is not set 1066# CONFIG_RTC_DRV_M48T86 is not set
1015# CONFIG_RTC_DRV_M48T35 is not set 1067# CONFIG_RTC_DRV_M48T35 is not set
1016# CONFIG_RTC_DRV_M48T59 is not set 1068# CONFIG_RTC_DRV_M48T59 is not set
1069# CONFIG_RTC_DRV_MSM6242 is not set
1017# CONFIG_RTC_DRV_BQ4802 is not set 1070# CONFIG_RTC_DRV_BQ4802 is not set
1071# CONFIG_RTC_DRV_RP5C01 is not set
1018# CONFIG_RTC_DRV_V3020 is not set 1072# CONFIG_RTC_DRV_V3020 is not set
1019 1073
1020# 1074#
@@ -1038,6 +1092,7 @@ CONFIG_EXT2_FS=y
1038# CONFIG_EXT2_FS_XIP is not set 1092# CONFIG_EXT2_FS_XIP is not set
1039# CONFIG_EXT3_FS is not set 1093# CONFIG_EXT3_FS is not set
1040# CONFIG_EXT4_FS is not set 1094# CONFIG_EXT4_FS is not set
1095CONFIG_EXT4_USE_FOR_EXT23=y
1041# CONFIG_REISERFS_FS is not set 1096# CONFIG_REISERFS_FS is not set
1042# CONFIG_JFS_FS is not set 1097# CONFIG_JFS_FS is not set
1043# CONFIG_FS_POSIX_ACL is not set 1098# CONFIG_FS_POSIX_ACL is not set
@@ -1045,6 +1100,7 @@ CONFIG_EXT2_FS=y
1045# CONFIG_GFS2_FS is not set 1100# CONFIG_GFS2_FS is not set
1046# CONFIG_OCFS2_FS is not set 1101# CONFIG_OCFS2_FS is not set
1047# CONFIG_BTRFS_FS is not set 1102# CONFIG_BTRFS_FS is not set
1103# CONFIG_NILFS2_FS is not set
1048CONFIG_FILE_LOCKING=y 1104CONFIG_FILE_LOCKING=y
1049CONFIG_FSNOTIFY=y 1105CONFIG_FSNOTIFY=y
1050CONFIG_DNOTIFY=y 1106CONFIG_DNOTIFY=y
@@ -1104,7 +1160,6 @@ CONFIG_CRAMFS=y
1104# CONFIG_ROMFS_FS is not set 1160# CONFIG_ROMFS_FS is not set
1105# CONFIG_SYSV_FS is not set 1161# CONFIG_SYSV_FS is not set
1106# CONFIG_UFS_FS is not set 1162# CONFIG_UFS_FS is not set
1107# CONFIG_NILFS2_FS is not set
1108CONFIG_NETWORK_FILESYSTEMS=y 1163CONFIG_NETWORK_FILESYSTEMS=y
1109CONFIG_NFS_FS=y 1164CONFIG_NFS_FS=y
1110CONFIG_NFS_V3=y 1165CONFIG_NFS_V3=y
@@ -1201,6 +1256,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1201CONFIG_ENABLE_MUST_CHECK=y 1256CONFIG_ENABLE_MUST_CHECK=y
1202CONFIG_FRAME_WARN=1024 1257CONFIG_FRAME_WARN=1024
1203CONFIG_MAGIC_SYSRQ=y 1258CONFIG_MAGIC_SYSRQ=y
1259# CONFIG_STRIP_ASM_SYMS is not set
1204# CONFIG_UNUSED_SYMBOLS is not set 1260# CONFIG_UNUSED_SYMBOLS is not set
1205CONFIG_DEBUG_FS=y 1261CONFIG_DEBUG_FS=y
1206# CONFIG_HEADERS_CHECK is not set 1262# CONFIG_HEADERS_CHECK is not set
@@ -1218,6 +1274,7 @@ CONFIG_SCHED_DEBUG=y
1218# CONFIG_DEBUG_OBJECTS is not set 1274# CONFIG_DEBUG_OBJECTS is not set
1219# CONFIG_SLUB_DEBUG_ON is not set 1275# CONFIG_SLUB_DEBUG_ON is not set
1220# CONFIG_SLUB_STATS is not set 1276# CONFIG_SLUB_STATS is not set
1277# CONFIG_DEBUG_KMEMLEAK is not set
1221# CONFIG_DEBUG_RT_MUTEXES is not set 1278# CONFIG_DEBUG_RT_MUTEXES is not set
1222# CONFIG_RT_MUTEX_TESTER is not set 1279# CONFIG_RT_MUTEX_TESTER is not set
1223# CONFIG_DEBUG_SPINLOCK is not set 1280# CONFIG_DEBUG_SPINLOCK is not set
@@ -1236,10 +1293,12 @@ CONFIG_SCHED_DEBUG=y
1236# CONFIG_DEBUG_LIST is not set 1293# CONFIG_DEBUG_LIST is not set
1237# CONFIG_DEBUG_SG is not set 1294# CONFIG_DEBUG_SG is not set
1238# CONFIG_DEBUG_NOTIFIERS is not set 1295# CONFIG_DEBUG_NOTIFIERS is not set
1296# CONFIG_DEBUG_CREDENTIALS is not set
1239# CONFIG_RCU_TORTURE_TEST is not set 1297# CONFIG_RCU_TORTURE_TEST is not set
1240# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1298# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1241# CONFIG_BACKTRACE_SELF_TEST is not set 1299# CONFIG_BACKTRACE_SELF_TEST is not set
1242# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1300# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1301# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1243# CONFIG_FAULT_INJECTION is not set 1302# CONFIG_FAULT_INJECTION is not set
1244# CONFIG_LATENCYTOP is not set 1303# CONFIG_LATENCYTOP is not set
1245CONFIG_SYSCTL_SYSCALL_CHECK=y 1304CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1263,10 +1322,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
1263# CONFIG_WORKQUEUE_TRACER is not set 1322# CONFIG_WORKQUEUE_TRACER is not set
1264# CONFIG_BLK_DEV_IO_TRACE is not set 1323# CONFIG_BLK_DEV_IO_TRACE is not set
1265# CONFIG_DYNAMIC_DEBUG is not set 1324# CONFIG_DYNAMIC_DEBUG is not set
1325# CONFIG_DMA_API_DEBUG is not set
1266# CONFIG_SAMPLES is not set 1326# CONFIG_SAMPLES is not set
1267CONFIG_HAVE_ARCH_KGDB=y 1327CONFIG_HAVE_ARCH_KGDB=y
1268# CONFIG_KGDB is not set 1328# CONFIG_KGDB is not set
1269# CONFIG_KMEMCHECK is not set
1270# CONFIG_PPC_DISABLE_WERROR is not set 1329# CONFIG_PPC_DISABLE_WERROR is not set
1271CONFIG_PPC_WERROR=y 1330CONFIG_PPC_WERROR=y
1272CONFIG_PRINT_STACK_DEPTH=64 1331CONFIG_PRINT_STACK_DEPTH=64
@@ -1288,7 +1347,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1288# CONFIG_KEYS is not set 1347# CONFIG_KEYS is not set
1289# CONFIG_SECURITY is not set 1348# CONFIG_SECURITY is not set
1290# CONFIG_SECURITYFS is not set 1349# CONFIG_SECURITYFS is not set
1291# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1350# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1351# CONFIG_DEFAULT_SECURITY_SMACK is not set
1352# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1353CONFIG_DEFAULT_SECURITY_DAC=y
1354CONFIG_DEFAULT_SECURITY=""
1292# CONFIG_CRYPTO is not set 1355# CONFIG_CRYPTO is not set
1293# CONFIG_PPC_CLOCK is not set 1356# CONFIG_PPC_CLOCK is not set
1294# CONFIG_VIRTUALIZATION is not set 1357# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/44x/ebony_defconfig b/arch/powerpc/configs/44x/ebony_defconfig
index b652f7dcab5a..ca17b1496e32 100644
--- a/arch/powerpc/configs/44x/ebony_defconfig
+++ b/arch/powerpc/configs/44x/ebony_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.29-rc2 3# Linux kernel version: 2.6.33-rc1
4# Tue Jan 20 08:22:36 2009 4# Mon Jan 4 14:20:46 2010
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#
11# CONFIG_6xx is not set 11# CONFIG_PPC_BOOK3S_32 is not set
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
@@ -19,6 +19,7 @@ CONFIG_BOOKE=y
19CONFIG_PTE_64BIT=y 19CONFIG_PTE_64BIT=y
20CONFIG_PHYS_64BIT=y 20CONFIG_PHYS_64BIT=y
21CONFIG_PPC_MMU_NOHASH=y 21CONFIG_PPC_MMU_NOHASH=y
22CONFIG_PPC_MMU_NOHASH_32=y
22# CONFIG_PPC_MM_SLICES is not set 23# CONFIG_PPC_MM_SLICES is not set
23CONFIG_NOT_COHERENT_CACHE=y 24CONFIG_NOT_COHERENT_CACHE=y
24CONFIG_PPC32=y 25CONFIG_PPC32=y
@@ -30,15 +31,18 @@ CONFIG_GENERIC_TIME=y
30CONFIG_GENERIC_TIME_VSYSCALL=y 31CONFIG_GENERIC_TIME_VSYSCALL=y
31CONFIG_GENERIC_CLOCKEVENTS=y 32CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 33CONFIG_GENERIC_HARDIRQS=y
34CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 35# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
36# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
34CONFIG_IRQ_PER_CPU=y 37CONFIG_IRQ_PER_CPU=y
38CONFIG_NR_IRQS=512
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,15 @@ CONFIG_PPC_UDBG_16550=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
55# CONFIG_DEFAULT_UIMAGE is not set 60# CONFIG_DEFAULT_UIMAGE is not set
61CONFIG_ARCH_HIBERNATION_POSSIBLE=y
56CONFIG_PPC_DCR_NATIVE=y 62CONFIG_PPC_DCR_NATIVE=y
57# CONFIG_PPC_DCR_MMIO is not set 63# CONFIG_PPC_DCR_MMIO is not set
58CONFIG_PPC_DCR=y 64CONFIG_PPC_DCR=y
65CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
59CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 66CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
67CONFIG_CONSTRUCTORS=y
60 68
61# 69#
62# General setup 70# General setup
@@ -70,9 +78,21 @@ CONFIG_SWAP=y
70CONFIG_SYSVIPC=y 78CONFIG_SYSVIPC=y
71CONFIG_SYSVIPC_SYSCTL=y 79CONFIG_SYSVIPC_SYSCTL=y
72CONFIG_POSIX_MQUEUE=y 80CONFIG_POSIX_MQUEUE=y
81CONFIG_POSIX_MQUEUE_SYSCTL=y
73# CONFIG_BSD_PROCESS_ACCT is not set 82# CONFIG_BSD_PROCESS_ACCT is not set
74# CONFIG_TASKSTATS is not set 83# CONFIG_TASKSTATS is not set
75# CONFIG_AUDIT is not set 84# CONFIG_AUDIT is not set
85
86#
87# RCU Subsystem
88#
89CONFIG_TREE_RCU=y
90# CONFIG_TREE_PREEMPT_RCU is not set
91# CONFIG_TINY_RCU is not set
92# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set
95# CONFIG_TREE_RCU_TRACE is not set
76# CONFIG_IKCONFIG is not set 96# CONFIG_IKCONFIG is not set
77CONFIG_LOG_BUF_SHIFT=14 97CONFIG_LOG_BUF_SHIFT=14
78CONFIG_GROUP_SCHED=y 98CONFIG_GROUP_SCHED=y
@@ -87,31 +107,40 @@ CONFIG_SYSFS_DEPRECATED_V2=y
87# CONFIG_NAMESPACES is not set 107# CONFIG_NAMESPACES is not set
88CONFIG_BLK_DEV_INITRD=y 108CONFIG_BLK_DEV_INITRD=y
89CONFIG_INITRAMFS_SOURCE="" 109CONFIG_INITRAMFS_SOURCE=""
110CONFIG_RD_GZIP=y
111# CONFIG_RD_BZIP2 is not set
112# CONFIG_RD_LZMA is not set
90# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 113# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
91CONFIG_SYSCTL=y 114CONFIG_SYSCTL=y
115CONFIG_ANON_INODES=y
92CONFIG_EMBEDDED=y 116CONFIG_EMBEDDED=y
93CONFIG_SYSCTL_SYSCALL=y 117CONFIG_SYSCTL_SYSCALL=y
94CONFIG_KALLSYMS=y 118CONFIG_KALLSYMS=y
95CONFIG_KALLSYMS_ALL=y 119CONFIG_KALLSYMS_ALL=y
96CONFIG_KALLSYMS_STRIP_GENERATED=y
97CONFIG_KALLSYMS_EXTRA_PASS=y 120CONFIG_KALLSYMS_EXTRA_PASS=y
98CONFIG_HOTPLUG=y 121CONFIG_HOTPLUG=y
99CONFIG_PRINTK=y 122CONFIG_PRINTK=y
100CONFIG_BUG=y 123CONFIG_BUG=y
101CONFIG_ELF_CORE=y 124CONFIG_ELF_CORE=y
102CONFIG_COMPAT_BRK=y
103CONFIG_BASE_FULL=y 125CONFIG_BASE_FULL=y
104CONFIG_FUTEX=y 126CONFIG_FUTEX=y
105CONFIG_ANON_INODES=y
106CONFIG_EPOLL=y 127CONFIG_EPOLL=y
107CONFIG_SIGNALFD=y 128CONFIG_SIGNALFD=y
108CONFIG_TIMERFD=y 129CONFIG_TIMERFD=y
109CONFIG_EVENTFD=y 130CONFIG_EVENTFD=y
110CONFIG_SHMEM=y 131CONFIG_SHMEM=y
111CONFIG_AIO=y 132CONFIG_AIO=y
133CONFIG_HAVE_PERF_EVENTS=y
134
135#
136# Kernel Performance Events And Counters
137#
138# CONFIG_PERF_EVENTS is not set
139# CONFIG_PERF_COUNTERS is not set
112CONFIG_VM_EVENT_COUNTERS=y 140CONFIG_VM_EVENT_COUNTERS=y
113CONFIG_PCI_QUIRKS=y 141CONFIG_PCI_QUIRKS=y
114CONFIG_SLUB_DEBUG=y 142CONFIG_SLUB_DEBUG=y
143CONFIG_COMPAT_BRK=y
115# CONFIG_SLAB is not set 144# CONFIG_SLAB is not set
116CONFIG_SLUB=y 145CONFIG_SLUB=y
117# CONFIG_SLOB is not set 146# CONFIG_SLOB is not set
@@ -123,6 +152,14 @@ CONFIG_HAVE_IOREMAP_PROT=y
123CONFIG_HAVE_KPROBES=y 152CONFIG_HAVE_KPROBES=y
124CONFIG_HAVE_KRETPROBES=y 153CONFIG_HAVE_KRETPROBES=y
125CONFIG_HAVE_ARCH_TRACEHOOK=y 154CONFIG_HAVE_ARCH_TRACEHOOK=y
155CONFIG_HAVE_DMA_ATTRS=y
156CONFIG_HAVE_DMA_API_DEBUG=y
157
158#
159# GCOV-based kernel profiling
160#
161# CONFIG_GCOV_KERNEL is not set
162# CONFIG_SLOW_WORK is not set
126# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 163# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
127CONFIG_SLABINFO=y 164CONFIG_SLABINFO=y
128CONFIG_RT_MUTEXES=y 165CONFIG_RT_MUTEXES=y
@@ -134,8 +171,7 @@ CONFIG_MODULE_UNLOAD=y
134# CONFIG_MODVERSIONS is not set 171# CONFIG_MODVERSIONS is not set
135# CONFIG_MODULE_SRCVERSION_ALL is not set 172# CONFIG_MODULE_SRCVERSION_ALL is not set
136CONFIG_BLOCK=y 173CONFIG_BLOCK=y
137CONFIG_LBD=y 174CONFIG_LBDAF=y
138# CONFIG_BLK_DEV_IO_TRACE is not set
139# CONFIG_BLK_DEV_BSG is not set 175# CONFIG_BLK_DEV_BSG is not set
140# CONFIG_BLK_DEV_INTEGRITY is not set 176# CONFIG_BLK_DEV_INTEGRITY is not set
141 177
@@ -143,19 +179,41 @@ CONFIG_LBD=y
143# IO Schedulers 179# IO Schedulers
144# 180#
145CONFIG_IOSCHED_NOOP=y 181CONFIG_IOSCHED_NOOP=y
146CONFIG_IOSCHED_AS=y
147CONFIG_IOSCHED_DEADLINE=y 182CONFIG_IOSCHED_DEADLINE=y
148CONFIG_IOSCHED_CFQ=y 183CONFIG_IOSCHED_CFQ=y
149CONFIG_DEFAULT_AS=y
150# CONFIG_DEFAULT_DEADLINE is not set 184# CONFIG_DEFAULT_DEADLINE is not set
151# CONFIG_DEFAULT_CFQ is not set 185CONFIG_DEFAULT_CFQ=y
152# CONFIG_DEFAULT_NOOP is not set 186# CONFIG_DEFAULT_NOOP is not set
153CONFIG_DEFAULT_IOSCHED="anticipatory" 187CONFIG_DEFAULT_IOSCHED="cfq"
154CONFIG_CLASSIC_RCU=y 188# CONFIG_INLINE_SPIN_TRYLOCK is not set
155# CONFIG_TREE_RCU is not set 189# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
156# CONFIG_PREEMPT_RCU is not set 190# CONFIG_INLINE_SPIN_LOCK is not set
157# CONFIG_TREE_RCU_TRACE is not set 191# CONFIG_INLINE_SPIN_LOCK_BH is not set
158# CONFIG_PREEMPT_RCU_TRACE is not set 192# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
193# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
194CONFIG_INLINE_SPIN_UNLOCK=y
195# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
196CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
197# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
198# CONFIG_INLINE_READ_TRYLOCK is not set
199# CONFIG_INLINE_READ_LOCK is not set
200# CONFIG_INLINE_READ_LOCK_BH is not set
201# CONFIG_INLINE_READ_LOCK_IRQ is not set
202# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
203CONFIG_INLINE_READ_UNLOCK=y
204# CONFIG_INLINE_READ_UNLOCK_BH is not set
205CONFIG_INLINE_READ_UNLOCK_IRQ=y
206# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
207# CONFIG_INLINE_WRITE_TRYLOCK is not set
208# CONFIG_INLINE_WRITE_LOCK is not set
209# CONFIG_INLINE_WRITE_LOCK_BH is not set
210# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
211# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
212CONFIG_INLINE_WRITE_UNLOCK=y
213# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
214CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
215# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
216# CONFIG_MUTEX_SPIN_ON_OWNER is not set
159# CONFIG_FREEZER is not set 217# CONFIG_FREEZER is not set
160# CONFIG_PPC4xx_PCI_EXPRESS is not set 218# CONFIG_PPC4xx_PCI_EXPRESS is not set
161 219
@@ -176,6 +234,8 @@ CONFIG_EBONY=y
176# CONFIG_ARCHES is not set 234# CONFIG_ARCHES is not set
177# CONFIG_CANYONLANDS is not set 235# CONFIG_CANYONLANDS is not set
178# CONFIG_GLACIER is not set 236# CONFIG_GLACIER is not set
237# CONFIG_REDWOOD is not set
238# CONFIG_EIGER is not set
179# CONFIG_YOSEMITE is not set 239# CONFIG_YOSEMITE is not set
180# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set 240# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set
181# CONFIG_PPC44x_SIMPLE is not set 241# CONFIG_PPC44x_SIMPLE is not set
@@ -218,10 +278,12 @@ CONFIG_BINFMT_ELF=y
218# CONFIG_BINFMT_MISC is not set 278# CONFIG_BINFMT_MISC is not set
219CONFIG_MATH_EMULATION=y 279CONFIG_MATH_EMULATION=y
220# CONFIG_IOMMU_HELPER is not set 280# CONFIG_IOMMU_HELPER is not set
221CONFIG_PPC_NEED_DMA_SYNC_OPS=y 281# CONFIG_SWIOTLB is not set
222CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 282CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
223CONFIG_ARCH_HAS_WALK_MEMORY=y 283CONFIG_ARCH_HAS_WALK_MEMORY=y
224CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 284CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
285CONFIG_SPARSE_IRQ=y
286CONFIG_MAX_ACTIVE_REGIONS=32
225CONFIG_ARCH_FLATMEM_ENABLE=y 287CONFIG_ARCH_FLATMEM_ENABLE=y
226CONFIG_ARCH_POPULATES_NODE_MAP=y 288CONFIG_ARCH_POPULATES_NODE_MAP=y
227CONFIG_SELECT_MEMORY_MODEL=y 289CONFIG_SELECT_MEMORY_MODEL=y
@@ -237,10 +299,13 @@ CONFIG_PHYS_ADDR_T_64BIT=y
237CONFIG_ZONE_DMA_FLAG=1 299CONFIG_ZONE_DMA_FLAG=1
238CONFIG_BOUNCE=y 300CONFIG_BOUNCE=y
239CONFIG_VIRT_TO_BUS=y 301CONFIG_VIRT_TO_BUS=y
240CONFIG_UNEVICTABLE_LRU=y 302# CONFIG_KSM is not set
303CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
304CONFIG_STDBINUTILS=y
241CONFIG_PPC_4K_PAGES=y 305CONFIG_PPC_4K_PAGES=y
242# CONFIG_PPC_16K_PAGES is not set 306# CONFIG_PPC_16K_PAGES is not set
243# CONFIG_PPC_64K_PAGES is not set 307# CONFIG_PPC_64K_PAGES is not set
308# CONFIG_PPC_256K_PAGES is not set
244CONFIG_FORCE_MAX_ZONEORDER=11 309CONFIG_FORCE_MAX_ZONEORDER=11
245CONFIG_PROC_DEVICETREE=y 310CONFIG_PROC_DEVICETREE=y
246# CONFIG_CMDLINE_BOOL is not set 311# CONFIG_CMDLINE_BOOL is not set
@@ -264,6 +329,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
264# CONFIG_PCI_LEGACY is not set 329# CONFIG_PCI_LEGACY is not set
265# CONFIG_PCI_DEBUG is not set 330# CONFIG_PCI_DEBUG is not set
266# CONFIG_PCI_STUB is not set 331# CONFIG_PCI_STUB is not set
332# CONFIG_PCI_IOV is not set
267# CONFIG_PCCARD is not set 333# CONFIG_PCCARD is not set
268# CONFIG_HOTPLUG_PCI is not set 334# CONFIG_HOTPLUG_PCI is not set
269# CONFIG_HAS_RAPIDIO is not set 335# CONFIG_HAS_RAPIDIO is not set
@@ -281,14 +347,12 @@ CONFIG_PAGE_OFFSET=0xc0000000
281CONFIG_KERNEL_START=0xc0000000 347CONFIG_KERNEL_START=0xc0000000
282CONFIG_PHYSICAL_START=0x00000000 348CONFIG_PHYSICAL_START=0x00000000
283CONFIG_TASK_SIZE=0xc0000000 349CONFIG_TASK_SIZE=0xc0000000
284CONFIG_CONSISTENT_START=0xff100000
285CONFIG_CONSISTENT_SIZE=0x00200000 350CONFIG_CONSISTENT_SIZE=0x00200000
286CONFIG_NET=y 351CONFIG_NET=y
287 352
288# 353#
289# Networking options 354# Networking options
290# 355#
291CONFIG_COMPAT_NET_DEV_OPS=y
292CONFIG_PACKET=y 356CONFIG_PACKET=y
293# CONFIG_PACKET_MMAP is not set 357# CONFIG_PACKET_MMAP is not set
294CONFIG_UNIX=y 358CONFIG_UNIX=y
@@ -325,6 +389,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
325# CONFIG_NETFILTER is not set 389# CONFIG_NETFILTER is not set
326# CONFIG_IP_DCCP is not set 390# CONFIG_IP_DCCP is not set
327# CONFIG_IP_SCTP is not set 391# CONFIG_IP_SCTP is not set
392# CONFIG_RDS is not set
328# CONFIG_TIPC is not set 393# CONFIG_TIPC is not set
329# CONFIG_ATM is not set 394# CONFIG_ATM is not set
330# CONFIG_BRIDGE is not set 395# CONFIG_BRIDGE is not set
@@ -338,6 +403,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
338# CONFIG_LAPB is not set 403# CONFIG_LAPB is not set
339# CONFIG_ECONET is not set 404# CONFIG_ECONET is not set
340# CONFIG_WAN_ROUTER is not set 405# CONFIG_WAN_ROUTER is not set
406# CONFIG_PHONET is not set
407# CONFIG_IEEE802154 is not set
341# CONFIG_NET_SCHED is not set 408# CONFIG_NET_SCHED is not set
342# CONFIG_DCB is not set 409# CONFIG_DCB is not set
343 410
@@ -350,8 +417,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
350# CONFIG_IRDA is not set 417# CONFIG_IRDA is not set
351# CONFIG_BT is not set 418# CONFIG_BT is not set
352# CONFIG_AF_RXRPC is not set 419# CONFIG_AF_RXRPC is not set
353# CONFIG_PHONET is not set 420CONFIG_WIRELESS=y
354# CONFIG_WIRELESS is not set 421# CONFIG_CFG80211 is not set
422# CONFIG_LIB80211 is not set
423
424#
425# CFG80211 needs to be enabled for MAC80211
426#
355# CONFIG_WIMAX is not set 427# CONFIG_WIMAX is not set
356# CONFIG_RFKILL is not set 428# CONFIG_RFKILL is not set
357# CONFIG_NET_9P is not set 429# CONFIG_NET_9P is not set
@@ -364,6 +436,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
364# Generic Driver Options 436# Generic Driver Options
365# 437#
366CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 438CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
439# CONFIG_DEVTMPFS is not set
367CONFIG_STANDALONE=y 440CONFIG_STANDALONE=y
368CONFIG_PREVENT_FIRMWARE_BUILD=y 441CONFIG_PREVENT_FIRMWARE_BUILD=y
369CONFIG_FW_LOADER=y 442CONFIG_FW_LOADER=y
@@ -376,9 +449,9 @@ CONFIG_CONNECTOR=y
376CONFIG_PROC_EVENTS=y 449CONFIG_PROC_EVENTS=y
377CONFIG_MTD=y 450CONFIG_MTD=y
378# CONFIG_MTD_DEBUG is not set 451# CONFIG_MTD_DEBUG is not set
452# CONFIG_MTD_TESTS is not set
379# CONFIG_MTD_CONCAT is not set 453# CONFIG_MTD_CONCAT is not set
380CONFIG_MTD_PARTITIONS=y 454CONFIG_MTD_PARTITIONS=y
381# CONFIG_MTD_TESTS is not set
382# CONFIG_MTD_REDBOOT_PARTS is not set 455# CONFIG_MTD_REDBOOT_PARTS is not set
383# CONFIG_MTD_CMDLINE_PARTS is not set 456# CONFIG_MTD_CMDLINE_PARTS is not set
384CONFIG_MTD_OF_PARTS=y 457CONFIG_MTD_OF_PARTS=y
@@ -453,7 +526,6 @@ CONFIG_MTD_PHYSMAP_OF=y
453# LPDDR flash memory drivers 526# LPDDR flash memory drivers
454# 527#
455# CONFIG_MTD_LPDDR is not set 528# CONFIG_MTD_LPDDR is not set
456# CONFIG_MTD_QINFO_PROBE is not set
457 529
458# 530#
459# UBI - Unsorted block images 531# UBI - Unsorted block images
@@ -469,6 +541,7 @@ CONFIG_BLK_DEV=y
469# CONFIG_BLK_DEV_UMEM is not set 541# CONFIG_BLK_DEV_UMEM is not set
470# CONFIG_BLK_DEV_COW_COMMON is not set 542# CONFIG_BLK_DEV_COW_COMMON is not set
471# CONFIG_BLK_DEV_LOOP is not set 543# CONFIG_BLK_DEV_LOOP is not set
544# CONFIG_BLK_DEV_DRBD is not set
472# CONFIG_BLK_DEV_NBD is not set 545# CONFIG_BLK_DEV_NBD is not set
473# CONFIG_BLK_DEV_SX8 is not set 546# CONFIG_BLK_DEV_SX8 is not set
474CONFIG_BLK_DEV_RAM=y 547CONFIG_BLK_DEV_RAM=y
@@ -481,12 +554,17 @@ CONFIG_BLK_DEV_RAM_SIZE=35000
481# CONFIG_BLK_DEV_HD is not set 554# CONFIG_BLK_DEV_HD is not set
482CONFIG_MISC_DEVICES=y 555CONFIG_MISC_DEVICES=y
483# CONFIG_PHANTOM is not set 556# CONFIG_PHANTOM is not set
484# CONFIG_EEPROM_93CX6 is not set
485# CONFIG_SGI_IOC4 is not set 557# CONFIG_SGI_IOC4 is not set
486# CONFIG_TIFM_CORE is not set 558# CONFIG_TIFM_CORE is not set
487# CONFIG_ENCLOSURE_SERVICES is not set 559# CONFIG_ENCLOSURE_SERVICES is not set
488# CONFIG_HP_ILO is not set 560# CONFIG_HP_ILO is not set
489# CONFIG_C2PORT is not set 561# CONFIG_C2PORT is not set
562
563#
564# EEPROM support
565#
566# CONFIG_EEPROM_93CX6 is not set
567# CONFIG_CB710_CORE is not set
490CONFIG_HAVE_IDE=y 568CONFIG_HAVE_IDE=y
491# CONFIG_IDE is not set 569# CONFIG_IDE is not set
492 570
@@ -506,7 +584,11 @@ CONFIG_HAVE_IDE=y
506# 584#
507 585
508# 586#
509# Enable only one of the two stacks, unless you know what you are doing 587# You can enable one or both FireWire driver stacks.
588#
589
590#
591# See the help texts for more information.
510# 592#
511# CONFIG_FIREWIRE is not set 593# CONFIG_FIREWIRE is not set
512# CONFIG_IEEE1394 is not set 594# CONFIG_IEEE1394 is not set
@@ -527,6 +609,8 @@ CONFIG_NET_ETHERNET=y
527# CONFIG_SUNGEM is not set 609# CONFIG_SUNGEM is not set
528# CONFIG_CASSINI is not set 610# CONFIG_CASSINI is not set
529# CONFIG_NET_VENDOR_3COM is not set 611# CONFIG_NET_VENDOR_3COM is not set
612# CONFIG_ETHOC is not set
613# CONFIG_DNET is not set
530# CONFIG_NET_TULIP is not set 614# CONFIG_NET_TULIP is not set
531# CONFIG_HP100 is not set 615# CONFIG_HP100 is not set
532CONFIG_IBM_NEW_EMAC=y 616CONFIG_IBM_NEW_EMAC=y
@@ -545,7 +629,10 @@ CONFIG_IBM_NEW_EMAC_ZMII=y
545# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 629# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
546# CONFIG_NET_PCI is not set 630# CONFIG_NET_PCI is not set
547# CONFIG_B44 is not set 631# CONFIG_B44 is not set
632# CONFIG_KS8842 is not set
633# CONFIG_KS8851_MLL is not set
548# CONFIG_ATL2 is not set 634# CONFIG_ATL2 is not set
635# CONFIG_XILINX_EMACLITE is not set
549CONFIG_NETDEV_1000=y 636CONFIG_NETDEV_1000=y
550# CONFIG_ACENIC is not set 637# CONFIG_ACENIC is not set
551# CONFIG_DL2K is not set 638# CONFIG_DL2K is not set
@@ -553,6 +640,7 @@ CONFIG_NETDEV_1000=y
553# CONFIG_E1000E is not set 640# CONFIG_E1000E is not set
554# CONFIG_IP1000 is not set 641# CONFIG_IP1000 is not set
555# CONFIG_IGB is not set 642# CONFIG_IGB is not set
643# CONFIG_IGBVF is not set
556# CONFIG_NS83820 is not set 644# CONFIG_NS83820 is not set
557# CONFIG_HAMACHI is not set 645# CONFIG_HAMACHI is not set
558# CONFIG_YELLOWFIN is not set 646# CONFIG_YELLOWFIN is not set
@@ -563,9 +651,13 @@ CONFIG_NETDEV_1000=y
563# CONFIG_VIA_VELOCITY is not set 651# CONFIG_VIA_VELOCITY is not set
564# CONFIG_TIGON3 is not set 652# CONFIG_TIGON3 is not set
565# CONFIG_BNX2 is not set 653# CONFIG_BNX2 is not set
654# CONFIG_CNIC is not set
655# CONFIG_MV643XX_ETH is not set
656# CONFIG_XILINX_LL_TEMAC is not set
566# CONFIG_QLA3XXX is not set 657# CONFIG_QLA3XXX is not set
567# CONFIG_ATL1 is not set 658# CONFIG_ATL1 is not set
568# CONFIG_ATL1E is not set 659# CONFIG_ATL1E is not set
660# CONFIG_ATL1C is not set
569# CONFIG_JME is not set 661# CONFIG_JME is not set
570CONFIG_NETDEV_10000=y 662CONFIG_NETDEV_10000=y
571# CONFIG_CHELSIO_T1 is not set 663# CONFIG_CHELSIO_T1 is not set
@@ -575,6 +667,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
575# CONFIG_IXGBE is not set 667# CONFIG_IXGBE is not set
576# CONFIG_IXGB is not set 668# CONFIG_IXGB is not set
577# CONFIG_S2IO is not set 669# CONFIG_S2IO is not set
670# CONFIG_VXGE is not set
578# CONFIG_MYRI10GE is not set 671# CONFIG_MYRI10GE is not set
579# CONFIG_NETXEN_NIC is not set 672# CONFIG_NETXEN_NIC is not set
580# CONFIG_NIU is not set 673# CONFIG_NIU is not set
@@ -584,14 +677,13 @@ CONFIG_CHELSIO_T3_DEPENDS=y
584# CONFIG_BNX2X is not set 677# CONFIG_BNX2X is not set
585# CONFIG_QLGE is not set 678# CONFIG_QLGE is not set
586# CONFIG_SFC is not set 679# CONFIG_SFC is not set
680# CONFIG_BE2NET is not set
587# CONFIG_TR is not set 681# CONFIG_TR is not set
588 682CONFIG_WLAN=y
589# 683# CONFIG_AIRO is not set
590# Wireless LAN 684# CONFIG_ATMEL is not set
591# 685# CONFIG_PRISM54 is not set
592# CONFIG_WLAN_PRE80211 is not set 686# CONFIG_HOSTAP is not set
593# CONFIG_WLAN_80211 is not set
594# CONFIG_IWLWIFI_LEDS is not set
595 687
596# 688#
597# Enable WiMAX (Networking options) to see the WiMAX drivers 689# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -604,6 +696,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
604# CONFIG_NETCONSOLE is not set 696# CONFIG_NETCONSOLE is not set
605# CONFIG_NETPOLL is not set 697# CONFIG_NETPOLL is not set
606# CONFIG_NET_POLL_CONTROLLER is not set 698# CONFIG_NET_POLL_CONTROLLER is not set
699# CONFIG_VMXNET3 is not set
607# CONFIG_ISDN is not set 700# CONFIG_ISDN is not set
608# CONFIG_PHONE is not set 701# CONFIG_PHONE is not set
609 702
@@ -649,6 +742,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
649# CONFIG_SERIAL_JSM is not set 742# CONFIG_SERIAL_JSM is not set
650CONFIG_SERIAL_OF_PLATFORM=y 743CONFIG_SERIAL_OF_PLATFORM=y
651# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set 744# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
745# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
652CONFIG_UNIX98_PTYS=y 746CONFIG_UNIX98_PTYS=y
653# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 747# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
654CONFIG_LEGACY_PTYS=y 748CONFIG_LEGACY_PTYS=y
@@ -665,6 +759,11 @@ CONFIG_LEGACY_PTY_COUNT=256
665CONFIG_DEVPORT=y 759CONFIG_DEVPORT=y
666# CONFIG_I2C is not set 760# CONFIG_I2C is not set
667# CONFIG_SPI is not set 761# CONFIG_SPI is not set
762
763#
764# PPS support
765#
766# CONFIG_PPS is not set
668CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 767CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
669# CONFIG_GPIOLIB is not set 768# CONFIG_GPIOLIB is not set
670# CONFIG_W1 is not set 769# CONFIG_W1 is not set
@@ -687,27 +786,13 @@ CONFIG_SSB_POSSIBLE=y
687# CONFIG_HTC_PASIC3 is not set 786# CONFIG_HTC_PASIC3 is not set
688# CONFIG_MFD_TMIO is not set 787# CONFIG_MFD_TMIO is not set
689# CONFIG_REGULATOR is not set 788# CONFIG_REGULATOR is not set
690 789# CONFIG_MEDIA_SUPPORT is not set
691#
692# Multimedia devices
693#
694
695#
696# Multimedia core support
697#
698# CONFIG_VIDEO_DEV is not set
699# CONFIG_DVB_CORE is not set
700# CONFIG_VIDEO_MEDIA is not set
701
702#
703# Multimedia drivers
704#
705# CONFIG_DAB is not set
706 790
707# 791#
708# Graphics support 792# Graphics support
709# 793#
710# CONFIG_AGP is not set 794# CONFIG_AGP is not set
795CONFIG_VGA_ARB=y
711# CONFIG_DRM is not set 796# CONFIG_DRM is not set
712# CONFIG_VGASTATE is not set 797# CONFIG_VGASTATE is not set
713# CONFIG_VIDEO_OUTPUT_CONTROL is not set 798# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -732,7 +817,7 @@ CONFIG_USB_ARCH_HAS_EHCI=y
732# 817#
733 818
734# 819#
735# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 820# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
736# 821#
737# CONFIG_USB_GADGET is not set 822# CONFIG_USB_GADGET is not set
738 823
@@ -748,7 +833,12 @@ CONFIG_USB_ARCH_HAS_EHCI=y
748# CONFIG_EDAC is not set 833# CONFIG_EDAC is not set
749# CONFIG_RTC_CLASS is not set 834# CONFIG_RTC_CLASS is not set
750# CONFIG_DMADEVICES is not set 835# CONFIG_DMADEVICES is not set
836# CONFIG_AUXDISPLAY is not set
751# CONFIG_UIO is not set 837# CONFIG_UIO is not set
838
839#
840# TI VLYNQ
841#
752# CONFIG_STAGING is not set 842# CONFIG_STAGING is not set
753 843
754# 844#
@@ -759,14 +849,17 @@ CONFIG_EXT2_FS=y
759# CONFIG_EXT2_FS_XIP is not set 849# CONFIG_EXT2_FS_XIP is not set
760# CONFIG_EXT3_FS is not set 850# CONFIG_EXT3_FS is not set
761# CONFIG_EXT4_FS is not set 851# CONFIG_EXT4_FS is not set
852CONFIG_EXT4_USE_FOR_EXT23=y
762# CONFIG_REISERFS_FS is not set 853# CONFIG_REISERFS_FS is not set
763# CONFIG_JFS_FS is not set 854# CONFIG_JFS_FS is not set
764# CONFIG_FS_POSIX_ACL is not set 855# CONFIG_FS_POSIX_ACL is not set
765CONFIG_FILE_LOCKING=y
766# CONFIG_XFS_FS is not set 856# CONFIG_XFS_FS is not set
767# CONFIG_GFS2_FS is not set 857# CONFIG_GFS2_FS is not set
768# CONFIG_OCFS2_FS is not set 858# CONFIG_OCFS2_FS is not set
769# CONFIG_BTRFS_FS is not set 859# CONFIG_BTRFS_FS is not set
860# CONFIG_NILFS2_FS is not set
861CONFIG_FILE_LOCKING=y
862CONFIG_FSNOTIFY=y
770CONFIG_DNOTIFY=y 863CONFIG_DNOTIFY=y
771CONFIG_INOTIFY=y 864CONFIG_INOTIFY=y
772CONFIG_INOTIFY_USER=y 865CONFIG_INOTIFY_USER=y
@@ -776,6 +869,11 @@ CONFIG_INOTIFY_USER=y
776# CONFIG_FUSE_FS is not set 869# CONFIG_FUSE_FS is not set
777 870
778# 871#
872# Caches
873#
874# CONFIG_FSCACHE is not set
875
876#
779# CD-ROM/DVD Filesystems 877# CD-ROM/DVD Filesystems
780# 878#
781# CONFIG_ISO9660_FS is not set 879# CONFIG_ISO9660_FS is not set
@@ -840,7 +938,6 @@ CONFIG_LOCKD=y
840CONFIG_LOCKD_V4=y 938CONFIG_LOCKD_V4=y
841CONFIG_NFS_COMMON=y 939CONFIG_NFS_COMMON=y
842CONFIG_SUNRPC=y 940CONFIG_SUNRPC=y
843# CONFIG_SUNRPC_REGISTER_V4 is not set
844# CONFIG_RPCSEC_GSS_KRB5 is not set 941# CONFIG_RPCSEC_GSS_KRB5 is not set
845# CONFIG_RPCSEC_GSS_SPKM3 is not set 942# CONFIG_RPCSEC_GSS_SPKM3 is not set
846# CONFIG_SMB_FS is not set 943# CONFIG_SMB_FS is not set
@@ -856,6 +953,7 @@ CONFIG_SUNRPC=y
856CONFIG_MSDOS_PARTITION=y 953CONFIG_MSDOS_PARTITION=y
857# CONFIG_NLS is not set 954# CONFIG_NLS is not set
858# CONFIG_DLM is not set 955# CONFIG_DLM is not set
956# CONFIG_BINARY_PRINTF is not set
859 957
860# 958#
861# Library routines 959# Library routines
@@ -871,11 +969,13 @@ CONFIG_CRC32=y
871# CONFIG_LIBCRC32C is not set 969# CONFIG_LIBCRC32C is not set
872CONFIG_ZLIB_INFLATE=y 970CONFIG_ZLIB_INFLATE=y
873CONFIG_ZLIB_DEFLATE=y 971CONFIG_ZLIB_DEFLATE=y
874CONFIG_PLIST=y 972CONFIG_DECOMPRESS_GZIP=y
875CONFIG_HAS_IOMEM=y 973CONFIG_HAS_IOMEM=y
876CONFIG_HAS_IOPORT=y 974CONFIG_HAS_IOPORT=y
877CONFIG_HAS_DMA=y 975CONFIG_HAS_DMA=y
878CONFIG_HAVE_LMB=y 976CONFIG_HAVE_LMB=y
977CONFIG_NLATTR=y
978CONFIG_GENERIC_ATOMIC64=y
879 979
880# 980#
881# Kernel hacking 981# Kernel hacking
@@ -885,6 +985,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
885CONFIG_ENABLE_MUST_CHECK=y 985CONFIG_ENABLE_MUST_CHECK=y
886CONFIG_FRAME_WARN=1024 986CONFIG_FRAME_WARN=1024
887CONFIG_MAGIC_SYSRQ=y 987CONFIG_MAGIC_SYSRQ=y
988# CONFIG_STRIP_ASM_SYMS is not set
888# CONFIG_UNUSED_SYMBOLS is not set 989# CONFIG_UNUSED_SYMBOLS is not set
889CONFIG_DEBUG_FS=y 990CONFIG_DEBUG_FS=y
890# CONFIG_HEADERS_CHECK is not set 991# CONFIG_HEADERS_CHECK is not set
@@ -893,16 +994,23 @@ CONFIG_DEBUG_KERNEL=y
893CONFIG_DETECT_SOFTLOCKUP=y 994CONFIG_DETECT_SOFTLOCKUP=y
894# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 995# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
895CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 996CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
997CONFIG_DETECT_HUNG_TASK=y
998# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
999CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
896CONFIG_SCHED_DEBUG=y 1000CONFIG_SCHED_DEBUG=y
897# CONFIG_SCHEDSTATS is not set 1001# CONFIG_SCHEDSTATS is not set
898# CONFIG_TIMER_STATS is not set 1002# CONFIG_TIMER_STATS is not set
899# CONFIG_DEBUG_OBJECTS is not set 1003# CONFIG_DEBUG_OBJECTS is not set
900# CONFIG_SLUB_DEBUG_ON is not set 1004# CONFIG_SLUB_DEBUG_ON is not set
901# CONFIG_SLUB_STATS is not set 1005# CONFIG_SLUB_STATS is not set
1006# CONFIG_DEBUG_KMEMLEAK is not set
902# CONFIG_DEBUG_RT_MUTEXES is not set 1007# CONFIG_DEBUG_RT_MUTEXES is not set
903# CONFIG_RT_MUTEX_TESTER is not set 1008# CONFIG_RT_MUTEX_TESTER is not set
904# CONFIG_DEBUG_SPINLOCK is not set 1009# CONFIG_DEBUG_SPINLOCK is not set
905# CONFIG_DEBUG_MUTEXES is not set 1010# CONFIG_DEBUG_MUTEXES is not set
1011# CONFIG_DEBUG_LOCK_ALLOC is not set
1012# CONFIG_PROVE_LOCKING is not set
1013# CONFIG_LOCK_STAT is not set
906# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1014# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
907# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1015# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
908# CONFIG_DEBUG_KOBJECT is not set 1016# CONFIG_DEBUG_KOBJECT is not set
@@ -914,35 +1022,45 @@ CONFIG_DEBUG_BUGVERBOSE=y
914# CONFIG_DEBUG_LIST is not set 1022# CONFIG_DEBUG_LIST is not set
915# CONFIG_DEBUG_SG is not set 1023# CONFIG_DEBUG_SG is not set
916# CONFIG_DEBUG_NOTIFIERS is not set 1024# CONFIG_DEBUG_NOTIFIERS is not set
917# CONFIG_BOOT_PRINTK_DELAY is not set 1025# CONFIG_DEBUG_CREDENTIALS is not set
918# CONFIG_RCU_TORTURE_TEST is not set 1026# CONFIG_RCU_TORTURE_TEST is not set
919# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1027# CONFIG_RCU_CPU_STALL_DETECTOR is not set
920# CONFIG_BACKTRACE_SELF_TEST is not set 1028# CONFIG_BACKTRACE_SELF_TEST is not set
921# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1029# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1030# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
922# CONFIG_FAULT_INJECTION is not set 1031# CONFIG_FAULT_INJECTION is not set
923# CONFIG_LATENCYTOP is not set 1032# CONFIG_LATENCYTOP is not set
924CONFIG_SYSCTL_SYSCALL_CHECK=y 1033CONFIG_SYSCTL_SYSCALL_CHECK=y
1034# CONFIG_DEBUG_PAGEALLOC is not set
925CONFIG_HAVE_FUNCTION_TRACER=y 1035CONFIG_HAVE_FUNCTION_TRACER=y
1036CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
926CONFIG_HAVE_DYNAMIC_FTRACE=y 1037CONFIG_HAVE_DYNAMIC_FTRACE=y
927CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1038CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
928 1039CONFIG_TRACING_SUPPORT=y
929# 1040CONFIG_FTRACE=y
930# Tracers
931#
932# CONFIG_FUNCTION_TRACER is not set 1041# CONFIG_FUNCTION_TRACER is not set
1042# CONFIG_IRQSOFF_TRACER is not set
933# CONFIG_SCHED_TRACER is not set 1043# CONFIG_SCHED_TRACER is not set
934# CONFIG_CONTEXT_SWITCH_TRACER is not set 1044# CONFIG_ENABLE_DEFAULT_TRACERS is not set
935# CONFIG_BOOT_TRACER is not set 1045# CONFIG_BOOT_TRACER is not set
936# CONFIG_TRACE_BRANCH_PROFILING is not set 1046CONFIG_BRANCH_PROFILE_NONE=y
1047# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1048# CONFIG_PROFILE_ALL_BRANCHES is not set
937# CONFIG_STACK_TRACER is not set 1049# CONFIG_STACK_TRACER is not set
938# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1050# CONFIG_KMEMTRACE is not set
1051# CONFIG_WORKQUEUE_TRACER is not set
1052# CONFIG_BLK_DEV_IO_TRACE is not set
1053# CONFIG_DYNAMIC_DEBUG is not set
1054# CONFIG_DMA_API_DEBUG is not set
939# CONFIG_SAMPLES is not set 1055# CONFIG_SAMPLES is not set
940CONFIG_HAVE_ARCH_KGDB=y 1056CONFIG_HAVE_ARCH_KGDB=y
941# CONFIG_KGDB is not set 1057# CONFIG_KGDB is not set
1058# CONFIG_PPC_DISABLE_WERROR is not set
1059CONFIG_PPC_WERROR=y
942CONFIG_PRINT_STACK_DEPTH=64 1060CONFIG_PRINT_STACK_DEPTH=64
943# CONFIG_DEBUG_STACKOVERFLOW is not set 1061# CONFIG_DEBUG_STACKOVERFLOW is not set
944# CONFIG_DEBUG_STACK_USAGE is not set 1062# CONFIG_DEBUG_STACK_USAGE is not set
945# CONFIG_DEBUG_PAGEALLOC is not set 1063# CONFIG_PPC_EMULATED_STATS is not set
946# CONFIG_CODE_PATCHING_SELFTEST is not set 1064# CONFIG_CODE_PATCHING_SELFTEST is not set
947# CONFIG_FTR_FIXUP_SELFTEST is not set 1065# CONFIG_FTR_FIXUP_SELFTEST is not set
948# CONFIG_MSI_BITMAP_SELFTEST is not set 1066# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -958,13 +1076,16 @@ CONFIG_PRINT_STACK_DEPTH=64
958# CONFIG_KEYS is not set 1076# CONFIG_KEYS is not set
959# CONFIG_SECURITY is not set 1077# CONFIG_SECURITY is not set
960# CONFIG_SECURITYFS is not set 1078# CONFIG_SECURITYFS is not set
961# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1079# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1080# CONFIG_DEFAULT_SECURITY_SMACK is not set
1081# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1082CONFIG_DEFAULT_SECURITY_DAC=y
1083CONFIG_DEFAULT_SECURITY=""
962CONFIG_CRYPTO=y 1084CONFIG_CRYPTO=y
963 1085
964# 1086#
965# Crypto core or helper 1087# Crypto core or helper
966# 1088#
967# CONFIG_CRYPTO_FIPS is not set
968CONFIG_CRYPTO_ALGAPI=y 1089CONFIG_CRYPTO_ALGAPI=y
969CONFIG_CRYPTO_ALGAPI2=y 1090CONFIG_CRYPTO_ALGAPI2=y
970CONFIG_CRYPTO_AEAD2=y 1091CONFIG_CRYPTO_AEAD2=y
@@ -973,10 +1094,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
973CONFIG_CRYPTO_HASH=y 1094CONFIG_CRYPTO_HASH=y
974CONFIG_CRYPTO_HASH2=y 1095CONFIG_CRYPTO_HASH2=y
975CONFIG_CRYPTO_RNG2=y 1096CONFIG_CRYPTO_RNG2=y
1097CONFIG_CRYPTO_PCOMP=y
976CONFIG_CRYPTO_MANAGER=y 1098CONFIG_CRYPTO_MANAGER=y
977CONFIG_CRYPTO_MANAGER2=y 1099CONFIG_CRYPTO_MANAGER2=y
978# CONFIG_CRYPTO_GF128MUL is not set 1100# CONFIG_CRYPTO_GF128MUL is not set
979# CONFIG_CRYPTO_NULL is not set 1101# CONFIG_CRYPTO_NULL is not set
1102CONFIG_CRYPTO_WORKQUEUE=y
980# CONFIG_CRYPTO_CRYPTD is not set 1103# CONFIG_CRYPTO_CRYPTD is not set
981# CONFIG_CRYPTO_AUTHENC is not set 1104# CONFIG_CRYPTO_AUTHENC is not set
982# CONFIG_CRYPTO_TEST is not set 1105# CONFIG_CRYPTO_TEST is not set
@@ -1004,11 +1127,13 @@ CONFIG_CRYPTO_PCBC=y
1004# 1127#
1005# CONFIG_CRYPTO_HMAC is not set 1128# CONFIG_CRYPTO_HMAC is not set
1006# CONFIG_CRYPTO_XCBC is not set 1129# CONFIG_CRYPTO_XCBC is not set
1130# CONFIG_CRYPTO_VMAC is not set
1007 1131
1008# 1132#
1009# Digest 1133# Digest
1010# 1134#
1011# CONFIG_CRYPTO_CRC32C is not set 1135# CONFIG_CRYPTO_CRC32C is not set
1136# CONFIG_CRYPTO_GHASH is not set
1012# CONFIG_CRYPTO_MD4 is not set 1137# CONFIG_CRYPTO_MD4 is not set
1013CONFIG_CRYPTO_MD5=y 1138CONFIG_CRYPTO_MD5=y
1014# CONFIG_CRYPTO_MICHAEL_MIC is not set 1139# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1045,6 +1170,7 @@ CONFIG_CRYPTO_DES=y
1045# Compression 1170# Compression
1046# 1171#
1047# CONFIG_CRYPTO_DEFLATE is not set 1172# CONFIG_CRYPTO_DEFLATE is not set
1173# CONFIG_CRYPTO_ZLIB is not set
1048# CONFIG_CRYPTO_LZO is not set 1174# CONFIG_CRYPTO_LZO is not set
1049 1175
1050# 1176#
diff --git a/arch/powerpc/configs/44x/eiger_defconfig b/arch/powerpc/configs/44x/eiger_defconfig
index 007f3bd939e7..e3149bade0b2 100644
--- a/arch/powerpc/configs/44x/eiger_defconfig
+++ b/arch/powerpc/configs/44x/eiger_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-rc6 3# Linux kernel version: 2.6.33-rc1
4# Wed Aug 19 13:06:50 2009 4# Mon Jan 4 14:33:04 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -34,7 +34,9 @@ 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
39CONFIG_NR_IRQS=512
38CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
39CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
40CONFIG_TRACE_IRQFLAGS_SUPPORT=y 42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -57,6 +59,7 @@ CONFIG_AUDIT_ARCH=y
57CONFIG_GENERIC_BUG=y 59CONFIG_GENERIC_BUG=y
58CONFIG_DTC=y 60CONFIG_DTC=y
59# CONFIG_DEFAULT_UIMAGE is not set 61# CONFIG_DEFAULT_UIMAGE is not set
62CONFIG_ARCH_HIBERNATION_POSSIBLE=y
60CONFIG_PPC_DCR_NATIVE=y 63CONFIG_PPC_DCR_NATIVE=y
61# CONFIG_PPC_DCR_MMIO is not set 64# CONFIG_PPC_DCR_MMIO is not set
62CONFIG_PPC_DCR=y 65CONFIG_PPC_DCR=y
@@ -84,11 +87,13 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
84# 87#
85# RCU Subsystem 88# RCU Subsystem
86# 89#
87CONFIG_CLASSIC_RCU=y 90CONFIG_TREE_RCU=y
88# CONFIG_TREE_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_PREEMPT_RCU is not set 92# CONFIG_TINY_RCU is not set
93# CONFIG_RCU_TRACE is not set
94CONFIG_RCU_FANOUT=32
95# CONFIG_RCU_FANOUT_EXACT is not set
90# CONFIG_TREE_RCU_TRACE is not set 96# CONFIG_TREE_RCU_TRACE is not set
91# CONFIG_PREEMPT_RCU_TRACE is not set
92# CONFIG_IKCONFIG is not set 97# CONFIG_IKCONFIG is not set
93CONFIG_LOG_BUF_SHIFT=14 98CONFIG_LOG_BUF_SHIFT=14
94# CONFIG_GROUP_SCHED is not set 99# CONFIG_GROUP_SCHED is not set
@@ -122,22 +127,21 @@ CONFIG_TIMERFD=y
122CONFIG_EVENTFD=y 127CONFIG_EVENTFD=y
123CONFIG_SHMEM=y 128CONFIG_SHMEM=y
124CONFIG_AIO=y 129CONFIG_AIO=y
125CONFIG_HAVE_PERF_COUNTERS=y 130CONFIG_HAVE_PERF_EVENTS=y
126 131
127# 132#
128# Performance Counters 133# Kernel Performance Events And Counters
129# 134#
135# CONFIG_PERF_EVENTS is not set
130# CONFIG_PERF_COUNTERS is not set 136# CONFIG_PERF_COUNTERS is not set
131CONFIG_VM_EVENT_COUNTERS=y 137CONFIG_VM_EVENT_COUNTERS=y
132CONFIG_PCI_QUIRKS=y 138CONFIG_PCI_QUIRKS=y
133CONFIG_SLUB_DEBUG=y 139CONFIG_SLUB_DEBUG=y
134# CONFIG_STRIP_ASM_SYMS is not set
135CONFIG_COMPAT_BRK=y 140CONFIG_COMPAT_BRK=y
136# CONFIG_SLAB is not set 141# CONFIG_SLAB is not set
137CONFIG_SLUB=y 142CONFIG_SLUB=y
138# CONFIG_SLOB is not set 143# CONFIG_SLOB is not set
139# CONFIG_PROFILING is not set 144# CONFIG_PROFILING is not set
140# CONFIG_MARKERS is not set
141CONFIG_HAVE_OPROFILE=y 145CONFIG_HAVE_OPROFILE=y
142# CONFIG_KPROBES is not set 146# CONFIG_KPROBES is not set
143CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 147CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -145,6 +149,8 @@ CONFIG_HAVE_IOREMAP_PROT=y
145CONFIG_HAVE_KPROBES=y 149CONFIG_HAVE_KPROBES=y
146CONFIG_HAVE_KRETPROBES=y 150CONFIG_HAVE_KRETPROBES=y
147CONFIG_HAVE_ARCH_TRACEHOOK=y 151CONFIG_HAVE_ARCH_TRACEHOOK=y
152CONFIG_HAVE_DMA_ATTRS=y
153CONFIG_HAVE_DMA_API_DEBUG=y
148 154
149# 155#
150# GCOV-based kernel profiling 156# GCOV-based kernel profiling
@@ -170,14 +176,41 @@ CONFIG_LBDAF=y
170# IO Schedulers 176# IO Schedulers
171# 177#
172CONFIG_IOSCHED_NOOP=y 178CONFIG_IOSCHED_NOOP=y
173CONFIG_IOSCHED_AS=y
174CONFIG_IOSCHED_DEADLINE=y 179CONFIG_IOSCHED_DEADLINE=y
175CONFIG_IOSCHED_CFQ=y 180CONFIG_IOSCHED_CFQ=y
176CONFIG_DEFAULT_AS=y
177# CONFIG_DEFAULT_DEADLINE is not set 181# CONFIG_DEFAULT_DEADLINE is not set
178# CONFIG_DEFAULT_CFQ is not set 182CONFIG_DEFAULT_CFQ=y
179# CONFIG_DEFAULT_NOOP is not set 183# CONFIG_DEFAULT_NOOP is not set
180CONFIG_DEFAULT_IOSCHED="anticipatory" 184CONFIG_DEFAULT_IOSCHED="cfq"
185# CONFIG_INLINE_SPIN_TRYLOCK is not set
186# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
187# CONFIG_INLINE_SPIN_LOCK is not set
188# CONFIG_INLINE_SPIN_LOCK_BH is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
191CONFIG_INLINE_SPIN_UNLOCK=y
192# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
193CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
194# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
195# CONFIG_INLINE_READ_TRYLOCK is not set
196# CONFIG_INLINE_READ_LOCK is not set
197# CONFIG_INLINE_READ_LOCK_BH is not set
198# CONFIG_INLINE_READ_LOCK_IRQ is not set
199# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
200CONFIG_INLINE_READ_UNLOCK=y
201# CONFIG_INLINE_READ_UNLOCK_BH is not set
202CONFIG_INLINE_READ_UNLOCK_IRQ=y
203# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_WRITE_TRYLOCK is not set
205# CONFIG_INLINE_WRITE_LOCK is not set
206# CONFIG_INLINE_WRITE_LOCK_BH is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
209CONFIG_INLINE_WRITE_UNLOCK=y
210# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
211CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
212# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
213# CONFIG_MUTEX_SPIN_ON_OWNER is not set
181# CONFIG_FREEZER is not set 214# CONFIG_FREEZER is not set
182CONFIG_PPC4xx_PCI_EXPRESS=y 215CONFIG_PPC4xx_PCI_EXPRESS=y
183 216
@@ -243,10 +276,11 @@ CONFIG_BINFMT_ELF=y
243# CONFIG_MATH_EMULATION is not set 276# CONFIG_MATH_EMULATION is not set
244# CONFIG_IOMMU_HELPER is not set 277# CONFIG_IOMMU_HELPER is not set
245# CONFIG_SWIOTLB is not set 278# CONFIG_SWIOTLB is not set
246CONFIG_PPC_NEED_DMA_SYNC_OPS=y
247CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 279CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
248CONFIG_ARCH_HAS_WALK_MEMORY=y 280CONFIG_ARCH_HAS_WALK_MEMORY=y
249CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 281CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
282CONFIG_SPARSE_IRQ=y
283CONFIG_MAX_ACTIVE_REGIONS=32
250CONFIG_ARCH_FLATMEM_ENABLE=y 284CONFIG_ARCH_FLATMEM_ENABLE=y
251CONFIG_ARCH_POPULATES_NODE_MAP=y 285CONFIG_ARCH_POPULATES_NODE_MAP=y
252CONFIG_SELECT_MEMORY_MODEL=y 286CONFIG_SELECT_MEMORY_MODEL=y
@@ -262,8 +296,7 @@ CONFIG_PHYS_ADDR_T_64BIT=y
262CONFIG_ZONE_DMA_FLAG=1 296CONFIG_ZONE_DMA_FLAG=1
263CONFIG_BOUNCE=y 297CONFIG_BOUNCE=y
264CONFIG_VIRT_TO_BUS=y 298CONFIG_VIRT_TO_BUS=y
265CONFIG_HAVE_MLOCK=y 299# CONFIG_KSM is not set
266CONFIG_HAVE_MLOCKED_PAGE_BIT=y
267CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 300CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
268CONFIG_STDBINUTILS=y 301CONFIG_STDBINUTILS=y
269CONFIG_PPC_4K_PAGES=y 302CONFIG_PPC_4K_PAGES=y
@@ -358,6 +391,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
358# CONFIG_NETFILTER is not set 391# CONFIG_NETFILTER is not set
359# CONFIG_IP_DCCP is not set 392# CONFIG_IP_DCCP is not set
360# CONFIG_IP_SCTP is not set 393# CONFIG_IP_SCTP is not set
394# CONFIG_RDS is not set
361# CONFIG_TIPC is not set 395# CONFIG_TIPC is not set
362# CONFIG_ATM is not set 396# CONFIG_ATM is not set
363# CONFIG_BRIDGE is not set 397# CONFIG_BRIDGE is not set
@@ -387,14 +421,11 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
387# CONFIG_AF_RXRPC is not set 421# CONFIG_AF_RXRPC is not set
388CONFIG_WIRELESS=y 422CONFIG_WIRELESS=y
389# CONFIG_CFG80211 is not set 423# CONFIG_CFG80211 is not set
390CONFIG_WIRELESS_OLD_REGULATORY=y
391# CONFIG_WIRELESS_EXT is not set
392# CONFIG_LIB80211 is not set 424# CONFIG_LIB80211 is not set
393 425
394# 426#
395# CFG80211 needs to be enabled for MAC80211 427# CFG80211 needs to be enabled for MAC80211
396# 428#
397CONFIG_MAC80211_DEFAULT_PS_VALUE=0
398# CONFIG_WIMAX is not set 429# CONFIG_WIMAX is not set
399# CONFIG_RFKILL is not set 430# CONFIG_RFKILL is not set
400# CONFIG_NET_9P is not set 431# CONFIG_NET_9P is not set
@@ -407,6 +438,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
407# Generic Driver Options 438# Generic Driver Options
408# 439#
409CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 440CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
441# CONFIG_DEVTMPFS is not set
410CONFIG_STANDALONE=y 442CONFIG_STANDALONE=y
411CONFIG_PREVENT_FIRMWARE_BUILD=y 443CONFIG_PREVENT_FIRMWARE_BUILD=y
412CONFIG_FW_LOADER=y 444CONFIG_FW_LOADER=y
@@ -419,9 +451,9 @@ CONFIG_CONNECTOR=y
419CONFIG_PROC_EVENTS=y 451CONFIG_PROC_EVENTS=y
420CONFIG_MTD=y 452CONFIG_MTD=y
421# CONFIG_MTD_DEBUG is not set 453# CONFIG_MTD_DEBUG is not set
454# CONFIG_MTD_TESTS is not set
422CONFIG_MTD_CONCAT=y 455CONFIG_MTD_CONCAT=y
423CONFIG_MTD_PARTITIONS=y 456CONFIG_MTD_PARTITIONS=y
424# CONFIG_MTD_TESTS is not set
425# CONFIG_MTD_REDBOOT_PARTS is not set 457# CONFIG_MTD_REDBOOT_PARTS is not set
426CONFIG_MTD_CMDLINE_PARTS=y 458CONFIG_MTD_CMDLINE_PARTS=y
427CONFIG_MTD_OF_PARTS=y 459CONFIG_MTD_OF_PARTS=y
@@ -522,6 +554,7 @@ CONFIG_BLK_DEV=y
522# CONFIG_BLK_DEV_UMEM is not set 554# CONFIG_BLK_DEV_UMEM is not set
523# CONFIG_BLK_DEV_COW_COMMON is not set 555# CONFIG_BLK_DEV_COW_COMMON is not set
524# CONFIG_BLK_DEV_LOOP is not set 556# CONFIG_BLK_DEV_LOOP is not set
557# CONFIG_BLK_DEV_DRBD is not set
525# CONFIG_BLK_DEV_NBD is not set 558# CONFIG_BLK_DEV_NBD is not set
526# CONFIG_BLK_DEV_SX8 is not set 559# CONFIG_BLK_DEV_SX8 is not set
527CONFIG_BLK_DEV_RAM=y 560CONFIG_BLK_DEV_RAM=y
@@ -573,8 +606,11 @@ CONFIG_SCSI_SAS_ATTRS=y
573CONFIG_SCSI_LOWLEVEL=y 606CONFIG_SCSI_LOWLEVEL=y
574# CONFIG_ISCSI_TCP is not set 607# CONFIG_ISCSI_TCP is not set
575# CONFIG_SCSI_BNX2_ISCSI is not set 608# CONFIG_SCSI_BNX2_ISCSI is not set
609# CONFIG_BE2ISCSI is not set
576# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 610# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
611# CONFIG_SCSI_HPSA is not set
577# CONFIG_SCSI_3W_9XXX is not set 612# CONFIG_SCSI_3W_9XXX is not set
613# CONFIG_SCSI_3W_SAS is not set
578# CONFIG_SCSI_ACARD is not set 614# CONFIG_SCSI_ACARD is not set
579# CONFIG_SCSI_AACRAID is not set 615# CONFIG_SCSI_AACRAID is not set
580# CONFIG_SCSI_AIC7XXX is not set 616# CONFIG_SCSI_AIC7XXX is not set
@@ -611,7 +647,10 @@ CONFIG_SCSI_LOWLEVEL=y
611# CONFIG_SCSI_DC390T is not set 647# CONFIG_SCSI_DC390T is not set
612# CONFIG_SCSI_NSP32 is not set 648# CONFIG_SCSI_NSP32 is not set
613# CONFIG_SCSI_DEBUG is not set 649# CONFIG_SCSI_DEBUG is not set
650# CONFIG_SCSI_PMCRAID is not set
651# CONFIG_SCSI_PM8001 is not set
614# CONFIG_SCSI_SRP is not set 652# CONFIG_SCSI_SRP is not set
653# CONFIG_SCSI_BFA_FC is not set
615# CONFIG_SCSI_DH is not set 654# CONFIG_SCSI_DH is not set
616# CONFIG_SCSI_OSD_INITIATOR is not set 655# CONFIG_SCSI_OSD_INITIATOR is not set
617# CONFIG_ATA is not set 656# CONFIG_ATA is not set
@@ -682,7 +721,9 @@ CONFIG_IBM_NEW_EMAC_EMAC4=y
682# CONFIG_NET_PCI is not set 721# CONFIG_NET_PCI is not set
683# CONFIG_B44 is not set 722# CONFIG_B44 is not set
684# CONFIG_KS8842 is not set 723# CONFIG_KS8842 is not set
724# CONFIG_KS8851_MLL is not set
685# CONFIG_ATL2 is not set 725# CONFIG_ATL2 is not set
726# CONFIG_XILINX_EMACLITE is not set
686CONFIG_NETDEV_1000=y 727CONFIG_NETDEV_1000=y
687# CONFIG_ACENIC is not set 728# CONFIG_ACENIC is not set
688# CONFIG_DL2K is not set 729# CONFIG_DL2K is not set
@@ -711,12 +752,11 @@ CONFIG_E1000E=y
711# CONFIG_JME is not set 752# CONFIG_JME is not set
712# CONFIG_NETDEV_10000 is not set 753# CONFIG_NETDEV_10000 is not set
713# CONFIG_TR is not set 754# CONFIG_TR is not set
714 755CONFIG_WLAN=y
715# 756# CONFIG_AIRO is not set
716# Wireless LAN 757# CONFIG_ATMEL is not set
717# 758# CONFIG_PRISM54 is not set
718# CONFIG_WLAN_PRE80211 is not set 759# CONFIG_HOSTAP is not set
719# CONFIG_WLAN_80211 is not set
720 760
721# 761#
722# Enable WiMAX (Networking options) to see the WiMAX drivers 762# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -730,6 +770,7 @@ CONFIG_E1000E=y
730# CONFIG_NETCONSOLE is not set 770# CONFIG_NETCONSOLE is not set
731# CONFIG_NETPOLL is not set 771# CONFIG_NETPOLL is not set
732# CONFIG_NET_POLL_CONTROLLER is not set 772# CONFIG_NET_POLL_CONTROLLER is not set
773# CONFIG_VMXNET3 is not set
733# CONFIG_ISDN is not set 774# CONFIG_ISDN is not set
734# CONFIG_PHONE is not set 775# CONFIG_PHONE is not set
735 776
@@ -775,6 +816,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
775# CONFIG_SERIAL_JSM is not set 816# CONFIG_SERIAL_JSM is not set
776CONFIG_SERIAL_OF_PLATFORM=y 817CONFIG_SERIAL_OF_PLATFORM=y
777# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set 818# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
819# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
778CONFIG_UNIX98_PTYS=y 820CONFIG_UNIX98_PTYS=y
779# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 821# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
780CONFIG_LEGACY_PTYS=y 822CONFIG_LEGACY_PTYS=y
@@ -791,6 +833,7 @@ CONFIG_LEGACY_PTY_COUNT=256
791CONFIG_DEVPORT=y 833CONFIG_DEVPORT=y
792CONFIG_I2C=y 834CONFIG_I2C=y
793CONFIG_I2C_BOARDINFO=y 835CONFIG_I2C_BOARDINFO=y
836CONFIG_I2C_COMPAT=y
794CONFIG_I2C_CHARDEV=y 837CONFIG_I2C_CHARDEV=y
795CONFIG_I2C_HELPER_AUTO=y 838CONFIG_I2C_HELPER_AUTO=y
796 839
@@ -831,11 +874,6 @@ CONFIG_I2C_IBM_IIC=y
831# CONFIG_I2C_TAOS_EVM is not set 874# CONFIG_I2C_TAOS_EVM is not set
832 875
833# 876#
834# Graphics adapter I2C/DDC channel drivers
835#
836# CONFIG_I2C_VOODOO3 is not set
837
838#
839# Other I2C/SMBus bus drivers 877# Other I2C/SMBus bus drivers
840# 878#
841# CONFIG_I2C_PCA_PLATFORM is not set 879# CONFIG_I2C_PCA_PLATFORM is not set
@@ -844,10 +882,6 @@ CONFIG_I2C_IBM_IIC=y
844# 882#
845# Miscellaneous I2C Chip support 883# Miscellaneous I2C Chip support
846# 884#
847# CONFIG_DS1682 is not set
848# CONFIG_SENSORS_PCF8574 is not set
849# CONFIG_PCF8575 is not set
850# CONFIG_SENSORS_PCA9539 is not set
851# CONFIG_SENSORS_TSL2550 is not set 885# CONFIG_SENSORS_TSL2550 is not set
852CONFIG_I2C_DEBUG_CORE=y 886CONFIG_I2C_DEBUG_CORE=y
853CONFIG_I2C_DEBUG_ALGO=y 887CONFIG_I2C_DEBUG_ALGO=y
@@ -865,7 +899,6 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
865# CONFIG_POWER_SUPPLY is not set 899# CONFIG_POWER_SUPPLY is not set
866# CONFIG_HWMON is not set 900# CONFIG_HWMON is not set
867# CONFIG_THERMAL is not set 901# CONFIG_THERMAL is not set
868# CONFIG_THERMAL_HWMON is not set
869# CONFIG_WATCHDOG is not set 902# CONFIG_WATCHDOG is not set
870CONFIG_SSB_POSSIBLE=y 903CONFIG_SSB_POSSIBLE=y
871 904
@@ -883,10 +916,13 @@ CONFIG_SSB_POSSIBLE=y
883# CONFIG_TWL4030_CORE is not set 916# CONFIG_TWL4030_CORE is not set
884# CONFIG_MFD_TMIO is not set 917# CONFIG_MFD_TMIO is not set
885# CONFIG_PMIC_DA903X is not set 918# CONFIG_PMIC_DA903X is not set
919# CONFIG_PMIC_ADP5520 is not set
886# CONFIG_MFD_WM8400 is not set 920# CONFIG_MFD_WM8400 is not set
921# CONFIG_MFD_WM831X is not set
887# CONFIG_MFD_WM8350_I2C is not set 922# CONFIG_MFD_WM8350_I2C is not set
888# CONFIG_MFD_PCF50633 is not set 923# CONFIG_MFD_PCF50633 is not set
889# CONFIG_AB3100_CORE is not set 924# CONFIG_AB3100_CORE is not set
925# CONFIG_MFD_88PM8607 is not set
890# CONFIG_REGULATOR is not set 926# CONFIG_REGULATOR is not set
891# CONFIG_MEDIA_SUPPORT is not set 927# CONFIG_MEDIA_SUPPORT is not set
892 928
@@ -894,6 +930,7 @@ CONFIG_SSB_POSSIBLE=y
894# Graphics support 930# Graphics support
895# 931#
896# CONFIG_AGP is not set 932# CONFIG_AGP is not set
933CONFIG_VGA_ARB=y
897# CONFIG_DRM is not set 934# CONFIG_DRM is not set
898# CONFIG_VGASTATE is not set 935# CONFIG_VGASTATE is not set
899CONFIG_VIDEO_OUTPUT_CONTROL=m 936CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -935,6 +972,7 @@ CONFIG_EXT2_FS=y
935# CONFIG_EXT2_FS_XIP is not set 972# CONFIG_EXT2_FS_XIP is not set
936# CONFIG_EXT3_FS is not set 973# CONFIG_EXT3_FS is not set
937# CONFIG_EXT4_FS is not set 974# CONFIG_EXT4_FS is not set
975CONFIG_EXT4_USE_FOR_EXT23=y
938# CONFIG_REISERFS_FS is not set 976# CONFIG_REISERFS_FS is not set
939# CONFIG_JFS_FS is not set 977# CONFIG_JFS_FS is not set
940# CONFIG_FS_POSIX_ACL is not set 978# CONFIG_FS_POSIX_ACL is not set
@@ -942,6 +980,7 @@ CONFIG_EXT2_FS=y
942# CONFIG_GFS2_FS is not set 980# CONFIG_GFS2_FS is not set
943# CONFIG_OCFS2_FS is not set 981# CONFIG_OCFS2_FS is not set
944# CONFIG_BTRFS_FS is not set 982# CONFIG_BTRFS_FS is not set
983# CONFIG_NILFS2_FS is not set
945CONFIG_FILE_LOCKING=y 984CONFIG_FILE_LOCKING=y
946CONFIG_FSNOTIFY=y 985CONFIG_FSNOTIFY=y
947CONFIG_DNOTIFY=y 986CONFIG_DNOTIFY=y
@@ -1001,7 +1040,6 @@ CONFIG_CRAMFS=y
1001# CONFIG_ROMFS_FS is not set 1040# CONFIG_ROMFS_FS is not set
1002# CONFIG_SYSV_FS is not set 1041# CONFIG_SYSV_FS is not set
1003# CONFIG_UFS_FS is not set 1042# CONFIG_UFS_FS is not set
1004# CONFIG_NILFS2_FS is not set
1005CONFIG_NETWORK_FILESYSTEMS=y 1043CONFIG_NETWORK_FILESYSTEMS=y
1006CONFIG_NFS_FS=y 1044CONFIG_NFS_FS=y
1007CONFIG_NFS_V3=y 1045CONFIG_NFS_V3=y
@@ -1059,6 +1097,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1059CONFIG_ENABLE_MUST_CHECK=y 1097CONFIG_ENABLE_MUST_CHECK=y
1060CONFIG_FRAME_WARN=1024 1098CONFIG_FRAME_WARN=1024
1061CONFIG_MAGIC_SYSRQ=y 1099CONFIG_MAGIC_SYSRQ=y
1100# CONFIG_STRIP_ASM_SYMS is not set
1062# CONFIG_UNUSED_SYMBOLS is not set 1101# CONFIG_UNUSED_SYMBOLS is not set
1063CONFIG_DEBUG_FS=y 1102CONFIG_DEBUG_FS=y
1064# CONFIG_HEADERS_CHECK is not set 1103# CONFIG_HEADERS_CHECK is not set
@@ -1095,10 +1134,12 @@ CONFIG_SCHED_DEBUG=y
1095# CONFIG_DEBUG_LIST is not set 1134# CONFIG_DEBUG_LIST is not set
1096# CONFIG_DEBUG_SG is not set 1135# CONFIG_DEBUG_SG is not set
1097# CONFIG_DEBUG_NOTIFIERS is not set 1136# CONFIG_DEBUG_NOTIFIERS is not set
1137# CONFIG_DEBUG_CREDENTIALS is not set
1098# CONFIG_RCU_TORTURE_TEST is not set 1138# CONFIG_RCU_TORTURE_TEST is not set
1099# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1139# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1100# CONFIG_BACKTRACE_SELF_TEST is not set 1140# CONFIG_BACKTRACE_SELF_TEST is not set
1101# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1141# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1142# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1102# CONFIG_FAULT_INJECTION is not set 1143# CONFIG_FAULT_INJECTION is not set
1103# CONFIG_LATENCYTOP is not set 1144# CONFIG_LATENCYTOP is not set
1104CONFIG_SYSCTL_SYSCALL_CHECK=y 1145CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1122,10 +1163,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
1122# CONFIG_WORKQUEUE_TRACER is not set 1163# CONFIG_WORKQUEUE_TRACER is not set
1123# CONFIG_BLK_DEV_IO_TRACE is not set 1164# CONFIG_BLK_DEV_IO_TRACE is not set
1124# CONFIG_DYNAMIC_DEBUG is not set 1165# CONFIG_DYNAMIC_DEBUG is not set
1166# CONFIG_DMA_API_DEBUG is not set
1125# CONFIG_SAMPLES is not set 1167# CONFIG_SAMPLES is not set
1126CONFIG_HAVE_ARCH_KGDB=y 1168CONFIG_HAVE_ARCH_KGDB=y
1127# CONFIG_KGDB is not set 1169# CONFIG_KGDB is not set
1128# CONFIG_KMEMCHECK is not set
1129# CONFIG_PPC_DISABLE_WERROR is not set 1170# CONFIG_PPC_DISABLE_WERROR is not set
1130CONFIG_PPC_WERROR=y 1171CONFIG_PPC_WERROR=y
1131CONFIG_PRINT_STACK_DEPTH=64 1172CONFIG_PRINT_STACK_DEPTH=64
@@ -1147,13 +1188,16 @@ CONFIG_PRINT_STACK_DEPTH=64
1147# CONFIG_KEYS is not set 1188# CONFIG_KEYS is not set
1148# CONFIG_SECURITY is not set 1189# CONFIG_SECURITY is not set
1149# CONFIG_SECURITYFS is not set 1190# CONFIG_SECURITYFS is not set
1150# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1191# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1192# CONFIG_DEFAULT_SECURITY_SMACK is not set
1193# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1194CONFIG_DEFAULT_SECURITY_DAC=y
1195CONFIG_DEFAULT_SECURITY=""
1151CONFIG_CRYPTO=y 1196CONFIG_CRYPTO=y
1152 1197
1153# 1198#
1154# Crypto core or helper 1199# Crypto core or helper
1155# 1200#
1156# CONFIG_CRYPTO_FIPS is not set
1157CONFIG_CRYPTO_ALGAPI=y 1201CONFIG_CRYPTO_ALGAPI=y
1158CONFIG_CRYPTO_ALGAPI2=y 1202CONFIG_CRYPTO_ALGAPI2=y
1159CONFIG_CRYPTO_AEAD=y 1203CONFIG_CRYPTO_AEAD=y
@@ -1197,11 +1241,13 @@ CONFIG_CRYPTO_XTS=y
1197# 1241#
1198CONFIG_CRYPTO_HMAC=y 1242CONFIG_CRYPTO_HMAC=y
1199CONFIG_CRYPTO_XCBC=y 1243CONFIG_CRYPTO_XCBC=y
1244# CONFIG_CRYPTO_VMAC is not set
1200 1245
1201# 1246#
1202# Digest 1247# Digest
1203# 1248#
1204# CONFIG_CRYPTO_CRC32C is not set 1249# CONFIG_CRYPTO_CRC32C is not set
1250CONFIG_CRYPTO_GHASH=y
1205CONFIG_CRYPTO_MD4=y 1251CONFIG_CRYPTO_MD4=y
1206CONFIG_CRYPTO_MD5=y 1252CONFIG_CRYPTO_MD5=y
1207# CONFIG_CRYPTO_MICHAEL_MIC is not set 1253# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/44x/katmai_defconfig b/arch/powerpc/configs/44x/katmai_defconfig
index c23a4ef13e45..dec901f9cc84 100644
--- a/arch/powerpc/configs/44x/katmai_defconfig
+++ b/arch/powerpc/configs/44x/katmai_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.29-rc2 3# Linux kernel version: 2.6.33-rc1
4# Tue Jan 20 08:22:38 2009 4# Mon Jan 4 14:55:34 2010
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#
11# CONFIG_6xx is not set 11# CONFIG_PPC_BOOK3S_32 is not set
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
@@ -19,6 +19,7 @@ CONFIG_BOOKE=y
19CONFIG_PTE_64BIT=y 19CONFIG_PTE_64BIT=y
20CONFIG_PHYS_64BIT=y 20CONFIG_PHYS_64BIT=y
21CONFIG_PPC_MMU_NOHASH=y 21CONFIG_PPC_MMU_NOHASH=y
22CONFIG_PPC_MMU_NOHASH_32=y
22# CONFIG_PPC_MM_SLICES is not set 23# CONFIG_PPC_MM_SLICES is not set
23CONFIG_NOT_COHERENT_CACHE=y 24CONFIG_NOT_COHERENT_CACHE=y
24CONFIG_PPC32=y 25CONFIG_PPC32=y
@@ -30,15 +31,18 @@ CONFIG_GENERIC_TIME=y
30CONFIG_GENERIC_TIME_VSYSCALL=y 31CONFIG_GENERIC_TIME_VSYSCALL=y
31CONFIG_GENERIC_CLOCKEVENTS=y 32CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 33CONFIG_GENERIC_HARDIRQS=y
34CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 35# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
36# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
34CONFIG_IRQ_PER_CPU=y 37CONFIG_IRQ_PER_CPU=y
38CONFIG_NR_IRQS=512
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,15 @@ CONFIG_PPC_UDBG_16550=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
55# CONFIG_DEFAULT_UIMAGE is not set 60# CONFIG_DEFAULT_UIMAGE is not set
61CONFIG_ARCH_HIBERNATION_POSSIBLE=y
56CONFIG_PPC_DCR_NATIVE=y 62CONFIG_PPC_DCR_NATIVE=y
57# CONFIG_PPC_DCR_MMIO is not set 63# CONFIG_PPC_DCR_MMIO is not set
58CONFIG_PPC_DCR=y 64CONFIG_PPC_DCR=y
65CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
59CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 66CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
67CONFIG_CONSTRUCTORS=y
60 68
61# 69#
62# General setup 70# General setup
@@ -70,9 +78,21 @@ CONFIG_SWAP=y
70CONFIG_SYSVIPC=y 78CONFIG_SYSVIPC=y
71CONFIG_SYSVIPC_SYSCTL=y 79CONFIG_SYSVIPC_SYSCTL=y
72CONFIG_POSIX_MQUEUE=y 80CONFIG_POSIX_MQUEUE=y
81CONFIG_POSIX_MQUEUE_SYSCTL=y
73# CONFIG_BSD_PROCESS_ACCT is not set 82# CONFIG_BSD_PROCESS_ACCT is not set
74# CONFIG_TASKSTATS is not set 83# CONFIG_TASKSTATS is not set
75# CONFIG_AUDIT is not set 84# CONFIG_AUDIT is not set
85
86#
87# RCU Subsystem
88#
89CONFIG_TREE_RCU=y
90# CONFIG_TREE_PREEMPT_RCU is not set
91# CONFIG_TINY_RCU is not set
92# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set
95# CONFIG_TREE_RCU_TRACE is not set
76# CONFIG_IKCONFIG is not set 96# CONFIG_IKCONFIG is not set
77CONFIG_LOG_BUF_SHIFT=14 97CONFIG_LOG_BUF_SHIFT=14
78# CONFIG_GROUP_SCHED is not set 98# CONFIG_GROUP_SCHED is not set
@@ -83,8 +103,12 @@ CONFIG_SYSFS_DEPRECATED_V2=y
83# CONFIG_NAMESPACES is not set 103# CONFIG_NAMESPACES is not set
84CONFIG_BLK_DEV_INITRD=y 104CONFIG_BLK_DEV_INITRD=y
85CONFIG_INITRAMFS_SOURCE="" 105CONFIG_INITRAMFS_SOURCE=""
106CONFIG_RD_GZIP=y
107# CONFIG_RD_BZIP2 is not set
108# CONFIG_RD_LZMA is not set
86# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 109# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
87CONFIG_SYSCTL=y 110CONFIG_SYSCTL=y
111CONFIG_ANON_INODES=y
88CONFIG_EMBEDDED=y 112CONFIG_EMBEDDED=y
89CONFIG_SYSCTL_SYSCALL=y 113CONFIG_SYSCTL_SYSCALL=y
90CONFIG_KALLSYMS=y 114CONFIG_KALLSYMS=y
@@ -94,19 +118,25 @@ CONFIG_HOTPLUG=y
94CONFIG_PRINTK=y 118CONFIG_PRINTK=y
95CONFIG_BUG=y 119CONFIG_BUG=y
96CONFIG_ELF_CORE=y 120CONFIG_ELF_CORE=y
97CONFIG_COMPAT_BRK=y
98CONFIG_BASE_FULL=y 121CONFIG_BASE_FULL=y
99CONFIG_FUTEX=y 122CONFIG_FUTEX=y
100CONFIG_ANON_INODES=y
101CONFIG_EPOLL=y 123CONFIG_EPOLL=y
102CONFIG_SIGNALFD=y 124CONFIG_SIGNALFD=y
103CONFIG_TIMERFD=y 125CONFIG_TIMERFD=y
104CONFIG_EVENTFD=y 126CONFIG_EVENTFD=y
105CONFIG_SHMEM=y 127CONFIG_SHMEM=y
106CONFIG_AIO=y 128CONFIG_AIO=y
129CONFIG_HAVE_PERF_EVENTS=y
130
131#
132# Kernel Performance Events And Counters
133#
134# CONFIG_PERF_EVENTS is not set
135# CONFIG_PERF_COUNTERS is not set
107CONFIG_VM_EVENT_COUNTERS=y 136CONFIG_VM_EVENT_COUNTERS=y
108CONFIG_PCI_QUIRKS=y 137CONFIG_PCI_QUIRKS=y
109CONFIG_SLUB_DEBUG=y 138CONFIG_SLUB_DEBUG=y
139CONFIG_COMPAT_BRK=y
110# CONFIG_SLAB is not set 140# CONFIG_SLAB is not set
111CONFIG_SLUB=y 141CONFIG_SLUB=y
112# CONFIG_SLOB is not set 142# CONFIG_SLOB is not set
@@ -118,6 +148,13 @@ CONFIG_HAVE_IOREMAP_PROT=y
118CONFIG_HAVE_KPROBES=y 148CONFIG_HAVE_KPROBES=y
119CONFIG_HAVE_KRETPROBES=y 149CONFIG_HAVE_KRETPROBES=y
120CONFIG_HAVE_ARCH_TRACEHOOK=y 150CONFIG_HAVE_ARCH_TRACEHOOK=y
151CONFIG_HAVE_DMA_ATTRS=y
152CONFIG_HAVE_DMA_API_DEBUG=y
153
154#
155# GCOV-based kernel profiling
156#
157# CONFIG_SLOW_WORK is not set
121# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 158# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
122CONFIG_SLABINFO=y 159CONFIG_SLABINFO=y
123CONFIG_RT_MUTEXES=y 160CONFIG_RT_MUTEXES=y
@@ -129,8 +166,7 @@ CONFIG_MODULE_UNLOAD=y
129# CONFIG_MODVERSIONS is not set 166# CONFIG_MODVERSIONS is not set
130# CONFIG_MODULE_SRCVERSION_ALL is not set 167# CONFIG_MODULE_SRCVERSION_ALL is not set
131CONFIG_BLOCK=y 168CONFIG_BLOCK=y
132CONFIG_LBD=y 169CONFIG_LBDAF=y
133# CONFIG_BLK_DEV_IO_TRACE is not set
134# CONFIG_BLK_DEV_BSG is not set 170# CONFIG_BLK_DEV_BSG is not set
135# CONFIG_BLK_DEV_INTEGRITY is not set 171# CONFIG_BLK_DEV_INTEGRITY is not set
136 172
@@ -138,19 +174,41 @@ CONFIG_LBD=y
138# IO Schedulers 174# IO Schedulers
139# 175#
140CONFIG_IOSCHED_NOOP=y 176CONFIG_IOSCHED_NOOP=y
141CONFIG_IOSCHED_AS=y
142CONFIG_IOSCHED_DEADLINE=y 177CONFIG_IOSCHED_DEADLINE=y
143CONFIG_IOSCHED_CFQ=y 178CONFIG_IOSCHED_CFQ=y
144CONFIG_DEFAULT_AS=y
145# CONFIG_DEFAULT_DEADLINE is not set 179# CONFIG_DEFAULT_DEADLINE is not set
146# CONFIG_DEFAULT_CFQ is not set 180CONFIG_DEFAULT_CFQ=y
147# CONFIG_DEFAULT_NOOP is not set 181# CONFIG_DEFAULT_NOOP is not set
148CONFIG_DEFAULT_IOSCHED="anticipatory" 182CONFIG_DEFAULT_IOSCHED="cfq"
149CONFIG_CLASSIC_RCU=y 183# CONFIG_INLINE_SPIN_TRYLOCK is not set
150# CONFIG_TREE_RCU is not set 184# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
151# CONFIG_PREEMPT_RCU is not set 185# CONFIG_INLINE_SPIN_LOCK is not set
152# CONFIG_TREE_RCU_TRACE is not set 186# CONFIG_INLINE_SPIN_LOCK_BH is not set
153# CONFIG_PREEMPT_RCU_TRACE is not set 187# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
188# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
189CONFIG_INLINE_SPIN_UNLOCK=y
190# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
191CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
192# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
193# CONFIG_INLINE_READ_TRYLOCK is not set
194# CONFIG_INLINE_READ_LOCK is not set
195# CONFIG_INLINE_READ_LOCK_BH is not set
196# CONFIG_INLINE_READ_LOCK_IRQ is not set
197# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
198CONFIG_INLINE_READ_UNLOCK=y
199# CONFIG_INLINE_READ_UNLOCK_BH is not set
200CONFIG_INLINE_READ_UNLOCK_IRQ=y
201# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
202# CONFIG_INLINE_WRITE_TRYLOCK is not set
203# CONFIG_INLINE_WRITE_LOCK is not set
204# CONFIG_INLINE_WRITE_LOCK_BH is not set
205# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
206# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
207CONFIG_INLINE_WRITE_UNLOCK=y
208# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
209CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
210# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
211# CONFIG_MUTEX_SPIN_ON_OWNER is not set
154# CONFIG_FREEZER is not set 212# CONFIG_FREEZER is not set
155CONFIG_PPC4xx_PCI_EXPRESS=y 213CONFIG_PPC4xx_PCI_EXPRESS=y
156 214
@@ -171,6 +229,8 @@ CONFIG_KATMAI=y
171# CONFIG_ARCHES is not set 229# CONFIG_ARCHES is not set
172# CONFIG_CANYONLANDS is not set 230# CONFIG_CANYONLANDS is not set
173# CONFIG_GLACIER is not set 231# CONFIG_GLACIER is not set
232# CONFIG_REDWOOD is not set
233# CONFIG_EIGER is not set
174# CONFIG_YOSEMITE is not set 234# CONFIG_YOSEMITE is not set
175# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set 235# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set
176CONFIG_PPC44x_SIMPLE=y 236CONFIG_PPC44x_SIMPLE=y
@@ -212,10 +272,12 @@ CONFIG_BINFMT_ELF=y
212# CONFIG_BINFMT_MISC is not set 272# CONFIG_BINFMT_MISC is not set
213# CONFIG_MATH_EMULATION is not set 273# CONFIG_MATH_EMULATION is not set
214# CONFIG_IOMMU_HELPER is not set 274# CONFIG_IOMMU_HELPER is not set
215CONFIG_PPC_NEED_DMA_SYNC_OPS=y 275# CONFIG_SWIOTLB is not set
216CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 276CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
217CONFIG_ARCH_HAS_WALK_MEMORY=y 277CONFIG_ARCH_HAS_WALK_MEMORY=y
218CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 278CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
279CONFIG_SPARSE_IRQ=y
280CONFIG_MAX_ACTIVE_REGIONS=32
219CONFIG_ARCH_FLATMEM_ENABLE=y 281CONFIG_ARCH_FLATMEM_ENABLE=y
220CONFIG_ARCH_POPULATES_NODE_MAP=y 282CONFIG_ARCH_POPULATES_NODE_MAP=y
221CONFIG_SELECT_MEMORY_MODEL=y 283CONFIG_SELECT_MEMORY_MODEL=y
@@ -231,10 +293,13 @@ CONFIG_PHYS_ADDR_T_64BIT=y
231CONFIG_ZONE_DMA_FLAG=1 293CONFIG_ZONE_DMA_FLAG=1
232CONFIG_BOUNCE=y 294CONFIG_BOUNCE=y
233CONFIG_VIRT_TO_BUS=y 295CONFIG_VIRT_TO_BUS=y
234CONFIG_UNEVICTABLE_LRU=y 296# CONFIG_KSM is not set
297CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
298CONFIG_STDBINUTILS=y
235CONFIG_PPC_4K_PAGES=y 299CONFIG_PPC_4K_PAGES=y
236# CONFIG_PPC_16K_PAGES is not set 300# CONFIG_PPC_16K_PAGES is not set
237# CONFIG_PPC_64K_PAGES is not set 301# CONFIG_PPC_64K_PAGES is not set
302# CONFIG_PPC_256K_PAGES is not set
238CONFIG_FORCE_MAX_ZONEORDER=11 303CONFIG_FORCE_MAX_ZONEORDER=11
239CONFIG_PROC_DEVICETREE=y 304CONFIG_PROC_DEVICETREE=y
240CONFIG_CMDLINE_BOOL=y 305CONFIG_CMDLINE_BOOL=y
@@ -259,6 +324,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
259# CONFIG_PCI_LEGACY is not set 324# CONFIG_PCI_LEGACY is not set
260# CONFIG_PCI_DEBUG is not set 325# CONFIG_PCI_DEBUG is not set
261# CONFIG_PCI_STUB is not set 326# CONFIG_PCI_STUB is not set
327# CONFIG_PCI_IOV is not set
262# CONFIG_PCCARD is not set 328# CONFIG_PCCARD is not set
263# CONFIG_HOTPLUG_PCI is not set 329# CONFIG_HOTPLUG_PCI is not set
264# CONFIG_HAS_RAPIDIO is not set 330# CONFIG_HAS_RAPIDIO is not set
@@ -276,14 +342,12 @@ CONFIG_PAGE_OFFSET=0xc0000000
276CONFIG_KERNEL_START=0xc0000000 342CONFIG_KERNEL_START=0xc0000000
277CONFIG_PHYSICAL_START=0x00000000 343CONFIG_PHYSICAL_START=0x00000000
278CONFIG_TASK_SIZE=0xc0000000 344CONFIG_TASK_SIZE=0xc0000000
279CONFIG_CONSISTENT_START=0xff100000
280CONFIG_CONSISTENT_SIZE=0x00200000 345CONFIG_CONSISTENT_SIZE=0x00200000
281CONFIG_NET=y 346CONFIG_NET=y
282 347
283# 348#
284# Networking options 349# Networking options
285# 350#
286CONFIG_COMPAT_NET_DEV_OPS=y
287CONFIG_PACKET=y 351CONFIG_PACKET=y
288# CONFIG_PACKET_MMAP is not set 352# CONFIG_PACKET_MMAP is not set
289CONFIG_UNIX=y 353CONFIG_UNIX=y
@@ -320,6 +384,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
320# CONFIG_NETFILTER is not set 384# CONFIG_NETFILTER is not set
321# CONFIG_IP_DCCP is not set 385# CONFIG_IP_DCCP is not set
322# CONFIG_IP_SCTP is not set 386# CONFIG_IP_SCTP is not set
387# CONFIG_RDS is not set
323# CONFIG_TIPC is not set 388# CONFIG_TIPC is not set
324# CONFIG_ATM is not set 389# CONFIG_ATM is not set
325# CONFIG_BRIDGE is not set 390# CONFIG_BRIDGE is not set
@@ -333,6 +398,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
333# CONFIG_LAPB is not set 398# CONFIG_LAPB is not set
334# CONFIG_ECONET is not set 399# CONFIG_ECONET is not set
335# CONFIG_WAN_ROUTER is not set 400# CONFIG_WAN_ROUTER is not set
401# CONFIG_PHONET is not set
402# CONFIG_IEEE802154 is not set
336# CONFIG_NET_SCHED is not set 403# CONFIG_NET_SCHED is not set
337# CONFIG_DCB is not set 404# CONFIG_DCB is not set
338 405
@@ -345,8 +412,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
345# CONFIG_IRDA is not set 412# CONFIG_IRDA is not set
346# CONFIG_BT is not set 413# CONFIG_BT is not set
347# CONFIG_AF_RXRPC is not set 414# CONFIG_AF_RXRPC is not set
348# CONFIG_PHONET is not set 415CONFIG_WIRELESS=y
349# CONFIG_WIRELESS is not set 416# CONFIG_CFG80211 is not set
417# CONFIG_LIB80211 is not set
418
419#
420# CFG80211 needs to be enabled for MAC80211
421#
350# CONFIG_WIMAX is not set 422# CONFIG_WIMAX is not set
351# CONFIG_RFKILL is not set 423# CONFIG_RFKILL is not set
352# CONFIG_NET_9P is not set 424# CONFIG_NET_9P is not set
@@ -359,6 +431,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
359# Generic Driver Options 431# Generic Driver Options
360# 432#
361CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 433CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
434# CONFIG_DEVTMPFS is not set
362CONFIG_STANDALONE=y 435CONFIG_STANDALONE=y
363CONFIG_PREVENT_FIRMWARE_BUILD=y 436CONFIG_PREVENT_FIRMWARE_BUILD=y
364CONFIG_FW_LOADER=y 437CONFIG_FW_LOADER=y
@@ -380,6 +453,7 @@ CONFIG_BLK_DEV=y
380# CONFIG_BLK_DEV_UMEM is not set 453# CONFIG_BLK_DEV_UMEM is not set
381# CONFIG_BLK_DEV_COW_COMMON is not set 454# CONFIG_BLK_DEV_COW_COMMON is not set
382# CONFIG_BLK_DEV_LOOP is not set 455# CONFIG_BLK_DEV_LOOP is not set
456# CONFIG_BLK_DEV_DRBD is not set
383# CONFIG_BLK_DEV_NBD is not set 457# CONFIG_BLK_DEV_NBD is not set
384# CONFIG_BLK_DEV_SX8 is not set 458# CONFIG_BLK_DEV_SX8 is not set
385CONFIG_BLK_DEV_RAM=y 459CONFIG_BLK_DEV_RAM=y
@@ -392,12 +466,17 @@ CONFIG_BLK_DEV_RAM_SIZE=35000
392# CONFIG_BLK_DEV_HD is not set 466# CONFIG_BLK_DEV_HD is not set
393CONFIG_MISC_DEVICES=y 467CONFIG_MISC_DEVICES=y
394# CONFIG_PHANTOM is not set 468# CONFIG_PHANTOM is not set
395# CONFIG_EEPROM_93CX6 is not set
396# CONFIG_SGI_IOC4 is not set 469# CONFIG_SGI_IOC4 is not set
397# CONFIG_TIFM_CORE is not set 470# CONFIG_TIFM_CORE is not set
398# CONFIG_ENCLOSURE_SERVICES is not set 471# CONFIG_ENCLOSURE_SERVICES is not set
399# CONFIG_HP_ILO is not set 472# CONFIG_HP_ILO is not set
400# CONFIG_C2PORT is not set 473# CONFIG_C2PORT is not set
474
475#
476# EEPROM support
477#
478# CONFIG_EEPROM_93CX6 is not set
479# CONFIG_CB710_CORE is not set
401CONFIG_HAVE_IDE=y 480CONFIG_HAVE_IDE=y
402# CONFIG_IDE is not set 481# CONFIG_IDE is not set
403 482
@@ -417,7 +496,11 @@ CONFIG_HAVE_IDE=y
417# 496#
418 497
419# 498#
420# Enable only one of the two stacks, unless you know what you are doing 499# You can enable one or both FireWire driver stacks.
500#
501
502#
503# See the help texts for more information.
421# 504#
422# CONFIG_FIREWIRE is not set 505# CONFIG_FIREWIRE is not set
423# CONFIG_IEEE1394 is not set 506# CONFIG_IEEE1394 is not set
@@ -440,6 +523,8 @@ CONFIG_NET_ETHERNET=y
440# CONFIG_SUNGEM is not set 523# CONFIG_SUNGEM is not set
441# CONFIG_CASSINI is not set 524# CONFIG_CASSINI is not set
442# CONFIG_NET_VENDOR_3COM is not set 525# CONFIG_NET_VENDOR_3COM is not set
526# CONFIG_ETHOC is not set
527# CONFIG_DNET is not set
443# CONFIG_NET_TULIP is not set 528# CONFIG_NET_TULIP is not set
444# CONFIG_HP100 is not set 529# CONFIG_HP100 is not set
445CONFIG_IBM_NEW_EMAC=y 530CONFIG_IBM_NEW_EMAC=y
@@ -458,7 +543,10 @@ CONFIG_IBM_NEW_EMAC_EMAC4=y
458# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 543# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
459# CONFIG_NET_PCI is not set 544# CONFIG_NET_PCI is not set
460# CONFIG_B44 is not set 545# CONFIG_B44 is not set
546# CONFIG_KS8842 is not set
547# CONFIG_KS8851_MLL is not set
461# CONFIG_ATL2 is not set 548# CONFIG_ATL2 is not set
549# CONFIG_XILINX_EMACLITE is not set
462CONFIG_NETDEV_1000=y 550CONFIG_NETDEV_1000=y
463# CONFIG_ACENIC is not set 551# CONFIG_ACENIC is not set
464# CONFIG_DL2K is not set 552# CONFIG_DL2K is not set
@@ -466,6 +554,7 @@ CONFIG_NETDEV_1000=y
466# CONFIG_E1000E is not set 554# CONFIG_E1000E is not set
467# CONFIG_IP1000 is not set 555# CONFIG_IP1000 is not set
468# CONFIG_IGB is not set 556# CONFIG_IGB is not set
557# CONFIG_IGBVF is not set
469# CONFIG_NS83820 is not set 558# CONFIG_NS83820 is not set
470# CONFIG_HAMACHI is not set 559# CONFIG_HAMACHI is not set
471# CONFIG_YELLOWFIN is not set 560# CONFIG_YELLOWFIN is not set
@@ -476,9 +565,13 @@ CONFIG_NETDEV_1000=y
476# CONFIG_VIA_VELOCITY is not set 565# CONFIG_VIA_VELOCITY is not set
477# CONFIG_TIGON3 is not set 566# CONFIG_TIGON3 is not set
478# CONFIG_BNX2 is not set 567# CONFIG_BNX2 is not set
568# CONFIG_CNIC is not set
569# CONFIG_MV643XX_ETH is not set
570# CONFIG_XILINX_LL_TEMAC is not set
479# CONFIG_QLA3XXX is not set 571# CONFIG_QLA3XXX is not set
480# CONFIG_ATL1 is not set 572# CONFIG_ATL1 is not set
481# CONFIG_ATL1E is not set 573# CONFIG_ATL1E is not set
574# CONFIG_ATL1C is not set
482# CONFIG_JME is not set 575# CONFIG_JME is not set
483CONFIG_NETDEV_10000=y 576CONFIG_NETDEV_10000=y
484# CONFIG_CHELSIO_T1 is not set 577# CONFIG_CHELSIO_T1 is not set
@@ -488,6 +581,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
488# CONFIG_IXGBE is not set 581# CONFIG_IXGBE is not set
489# CONFIG_IXGB is not set 582# CONFIG_IXGB is not set
490# CONFIG_S2IO is not set 583# CONFIG_S2IO is not set
584# CONFIG_VXGE is not set
491# CONFIG_MYRI10GE is not set 585# CONFIG_MYRI10GE is not set
492# CONFIG_NETXEN_NIC is not set 586# CONFIG_NETXEN_NIC is not set
493# CONFIG_NIU is not set 587# CONFIG_NIU is not set
@@ -497,14 +591,13 @@ CONFIG_CHELSIO_T3_DEPENDS=y
497# CONFIG_BNX2X is not set 591# CONFIG_BNX2X is not set
498# CONFIG_QLGE is not set 592# CONFIG_QLGE is not set
499# CONFIG_SFC is not set 593# CONFIG_SFC is not set
594# CONFIG_BE2NET is not set
500# CONFIG_TR is not set 595# CONFIG_TR is not set
501 596CONFIG_WLAN=y
502# 597# CONFIG_AIRO is not set
503# Wireless LAN 598# CONFIG_ATMEL is not set
504# 599# CONFIG_PRISM54 is not set
505# CONFIG_WLAN_PRE80211 is not set 600# CONFIG_HOSTAP is not set
506# CONFIG_WLAN_80211 is not set
507# CONFIG_IWLWIFI_LEDS is not set
508 601
509# 602#
510# Enable WiMAX (Networking options) to see the WiMAX drivers 603# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -517,6 +610,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
517# CONFIG_NETCONSOLE is not set 610# CONFIG_NETCONSOLE is not set
518# CONFIG_NETPOLL is not set 611# CONFIG_NETPOLL is not set
519# CONFIG_NET_POLL_CONTROLLER is not set 612# CONFIG_NET_POLL_CONTROLLER is not set
613# CONFIG_VMXNET3 is not set
520# CONFIG_ISDN is not set 614# CONFIG_ISDN is not set
521# CONFIG_PHONE is not set 615# CONFIG_PHONE is not set
522 616
@@ -562,6 +656,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
562# CONFIG_SERIAL_JSM is not set 656# CONFIG_SERIAL_JSM is not set
563CONFIG_SERIAL_OF_PLATFORM=y 657CONFIG_SERIAL_OF_PLATFORM=y
564# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set 658# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
659# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
565CONFIG_UNIX98_PTYS=y 660CONFIG_UNIX98_PTYS=y
566# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 661# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
567CONFIG_LEGACY_PTYS=y 662CONFIG_LEGACY_PTYS=y
@@ -578,13 +673,17 @@ CONFIG_LEGACY_PTY_COUNT=256
578CONFIG_DEVPORT=y 673CONFIG_DEVPORT=y
579# CONFIG_I2C is not set 674# CONFIG_I2C is not set
580# CONFIG_SPI is not set 675# CONFIG_SPI is not set
676
677#
678# PPS support
679#
680# CONFIG_PPS is not set
581CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 681CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
582# CONFIG_GPIOLIB is not set 682# CONFIG_GPIOLIB is not set
583# CONFIG_W1 is not set 683# CONFIG_W1 is not set
584# CONFIG_POWER_SUPPLY is not set 684# CONFIG_POWER_SUPPLY is not set
585# CONFIG_HWMON is not set 685# CONFIG_HWMON is not set
586# CONFIG_THERMAL is not set 686# CONFIG_THERMAL is not set
587# CONFIG_THERMAL_HWMON is not set
588# CONFIG_WATCHDOG is not set 687# CONFIG_WATCHDOG is not set
589CONFIG_SSB_POSSIBLE=y 688CONFIG_SSB_POSSIBLE=y
590 689
@@ -601,27 +700,13 @@ CONFIG_SSB_POSSIBLE=y
601# CONFIG_HTC_PASIC3 is not set 700# CONFIG_HTC_PASIC3 is not set
602# CONFIG_MFD_TMIO is not set 701# CONFIG_MFD_TMIO is not set
603# CONFIG_REGULATOR is not set 702# CONFIG_REGULATOR is not set
604 703# CONFIG_MEDIA_SUPPORT is not set
605#
606# Multimedia devices
607#
608
609#
610# Multimedia core support
611#
612# CONFIG_VIDEO_DEV is not set
613# CONFIG_DVB_CORE is not set
614# CONFIG_VIDEO_MEDIA is not set
615
616#
617# Multimedia drivers
618#
619CONFIG_DAB=y
620 704
621# 705#
622# Graphics support 706# Graphics support
623# 707#
624# CONFIG_AGP is not set 708# CONFIG_AGP is not set
709CONFIG_VGA_ARB=y
625# CONFIG_DRM is not set 710# CONFIG_DRM is not set
626# CONFIG_VGASTATE is not set 711# CONFIG_VGASTATE is not set
627CONFIG_VIDEO_OUTPUT_CONTROL=m 712CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -646,7 +731,7 @@ CONFIG_USB_ARCH_HAS_EHCI=y
646# 731#
647 732
648# 733#
649# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 734# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
650# 735#
651# CONFIG_USB_GADGET is not set 736# CONFIG_USB_GADGET is not set
652 737
@@ -662,7 +747,12 @@ CONFIG_USB_ARCH_HAS_EHCI=y
662# CONFIG_EDAC is not set 747# CONFIG_EDAC is not set
663# CONFIG_RTC_CLASS is not set 748# CONFIG_RTC_CLASS is not set
664# CONFIG_DMADEVICES is not set 749# CONFIG_DMADEVICES is not set
750# CONFIG_AUXDISPLAY is not set
665# CONFIG_UIO is not set 751# CONFIG_UIO is not set
752
753#
754# TI VLYNQ
755#
666# CONFIG_STAGING is not set 756# CONFIG_STAGING is not set
667 757
668# 758#
@@ -673,14 +763,17 @@ CONFIG_EXT2_FS=y
673# CONFIG_EXT2_FS_XIP is not set 763# CONFIG_EXT2_FS_XIP is not set
674# CONFIG_EXT3_FS is not set 764# CONFIG_EXT3_FS is not set
675# CONFIG_EXT4_FS is not set 765# CONFIG_EXT4_FS is not set
766CONFIG_EXT4_USE_FOR_EXT23=y
676# CONFIG_REISERFS_FS is not set 767# CONFIG_REISERFS_FS is not set
677# CONFIG_JFS_FS is not set 768# CONFIG_JFS_FS is not set
678# CONFIG_FS_POSIX_ACL is not set 769# CONFIG_FS_POSIX_ACL is not set
679CONFIG_FILE_LOCKING=y
680# CONFIG_XFS_FS is not set 770# CONFIG_XFS_FS is not set
681# CONFIG_GFS2_FS is not set 771# CONFIG_GFS2_FS is not set
682# CONFIG_OCFS2_FS is not set 772# CONFIG_OCFS2_FS is not set
683# CONFIG_BTRFS_FS is not set 773# CONFIG_BTRFS_FS is not set
774# CONFIG_NILFS2_FS is not set
775CONFIG_FILE_LOCKING=y
776CONFIG_FSNOTIFY=y
684CONFIG_DNOTIFY=y 777CONFIG_DNOTIFY=y
685CONFIG_INOTIFY=y 778CONFIG_INOTIFY=y
686CONFIG_INOTIFY_USER=y 779CONFIG_INOTIFY_USER=y
@@ -690,6 +783,11 @@ CONFIG_INOTIFY_USER=y
690# CONFIG_FUSE_FS is not set 783# CONFIG_FUSE_FS is not set
691 784
692# 785#
786# Caches
787#
788# CONFIG_FSCACHE is not set
789
790#
693# CD-ROM/DVD Filesystems 791# CD-ROM/DVD Filesystems
694# 792#
695# CONFIG_ISO9660_FS is not set 793# CONFIG_ISO9660_FS is not set
@@ -743,7 +841,6 @@ CONFIG_LOCKD=y
743CONFIG_LOCKD_V4=y 841CONFIG_LOCKD_V4=y
744CONFIG_NFS_COMMON=y 842CONFIG_NFS_COMMON=y
745CONFIG_SUNRPC=y 843CONFIG_SUNRPC=y
746# CONFIG_SUNRPC_REGISTER_V4 is not set
747# CONFIG_RPCSEC_GSS_KRB5 is not set 844# CONFIG_RPCSEC_GSS_KRB5 is not set
748# CONFIG_RPCSEC_GSS_SPKM3 is not set 845# CONFIG_RPCSEC_GSS_SPKM3 is not set
749# CONFIG_SMB_FS is not set 846# CONFIG_SMB_FS is not set
@@ -759,6 +856,7 @@ CONFIG_SUNRPC=y
759CONFIG_MSDOS_PARTITION=y 856CONFIG_MSDOS_PARTITION=y
760# CONFIG_NLS is not set 857# CONFIG_NLS is not set
761# CONFIG_DLM is not set 858# CONFIG_DLM is not set
859# CONFIG_BINARY_PRINTF is not set
762 860
763# 861#
764# Library routines 862# Library routines
@@ -773,11 +871,13 @@ CONFIG_CRC32=y
773# CONFIG_CRC7 is not set 871# CONFIG_CRC7 is not set
774# CONFIG_LIBCRC32C is not set 872# CONFIG_LIBCRC32C is not set
775CONFIG_ZLIB_INFLATE=y 873CONFIG_ZLIB_INFLATE=y
776CONFIG_PLIST=y 874CONFIG_DECOMPRESS_GZIP=y
777CONFIG_HAS_IOMEM=y 875CONFIG_HAS_IOMEM=y
778CONFIG_HAS_IOPORT=y 876CONFIG_HAS_IOPORT=y
779CONFIG_HAS_DMA=y 877CONFIG_HAS_DMA=y
780CONFIG_HAVE_LMB=y 878CONFIG_HAVE_LMB=y
879CONFIG_NLATTR=y
880CONFIG_GENERIC_ATOMIC64=y
781 881
782# 882#
783# Kernel hacking 883# Kernel hacking
@@ -787,6 +887,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
787CONFIG_ENABLE_MUST_CHECK=y 887CONFIG_ENABLE_MUST_CHECK=y
788CONFIG_FRAME_WARN=1024 888CONFIG_FRAME_WARN=1024
789CONFIG_MAGIC_SYSRQ=y 889CONFIG_MAGIC_SYSRQ=y
890# CONFIG_STRIP_ASM_SYMS is not set
790# CONFIG_UNUSED_SYMBOLS is not set 891# CONFIG_UNUSED_SYMBOLS is not set
791# CONFIG_DEBUG_FS is not set 892# CONFIG_DEBUG_FS is not set
792# CONFIG_HEADERS_CHECK is not set 893# CONFIG_HEADERS_CHECK is not set
@@ -795,16 +896,23 @@ CONFIG_DEBUG_KERNEL=y
795CONFIG_DETECT_SOFTLOCKUP=y 896CONFIG_DETECT_SOFTLOCKUP=y
796# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 897# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
797CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 898CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
899CONFIG_DETECT_HUNG_TASK=y
900# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
901CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
798CONFIG_SCHED_DEBUG=y 902CONFIG_SCHED_DEBUG=y
799# CONFIG_SCHEDSTATS is not set 903# CONFIG_SCHEDSTATS is not set
800# CONFIG_TIMER_STATS is not set 904# CONFIG_TIMER_STATS is not set
801# CONFIG_DEBUG_OBJECTS is not set 905# CONFIG_DEBUG_OBJECTS is not set
802# CONFIG_SLUB_DEBUG_ON is not set 906# CONFIG_SLUB_DEBUG_ON is not set
803# CONFIG_SLUB_STATS is not set 907# CONFIG_SLUB_STATS is not set
908# CONFIG_DEBUG_KMEMLEAK is not set
804# CONFIG_DEBUG_RT_MUTEXES is not set 909# CONFIG_DEBUG_RT_MUTEXES is not set
805# CONFIG_RT_MUTEX_TESTER is not set 910# CONFIG_RT_MUTEX_TESTER is not set
806# CONFIG_DEBUG_SPINLOCK is not set 911# CONFIG_DEBUG_SPINLOCK is not set
807# CONFIG_DEBUG_MUTEXES is not set 912# CONFIG_DEBUG_MUTEXES is not set
913# CONFIG_DEBUG_LOCK_ALLOC is not set
914# CONFIG_PROVE_LOCKING is not set
915# CONFIG_LOCK_STAT is not set
808# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 916# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
809# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 917# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
810# CONFIG_DEBUG_KOBJECT is not set 918# CONFIG_DEBUG_KOBJECT is not set
@@ -816,35 +924,43 @@ CONFIG_SCHED_DEBUG=y
816# CONFIG_DEBUG_LIST is not set 924# CONFIG_DEBUG_LIST is not set
817# CONFIG_DEBUG_SG is not set 925# CONFIG_DEBUG_SG is not set
818# CONFIG_DEBUG_NOTIFIERS is not set 926# CONFIG_DEBUG_NOTIFIERS is not set
819# CONFIG_BOOT_PRINTK_DELAY is not set 927# CONFIG_DEBUG_CREDENTIALS is not set
820# CONFIG_RCU_TORTURE_TEST is not set 928# CONFIG_RCU_TORTURE_TEST is not set
821# CONFIG_RCU_CPU_STALL_DETECTOR is not set 929# CONFIG_RCU_CPU_STALL_DETECTOR is not set
822# CONFIG_BACKTRACE_SELF_TEST is not set 930# CONFIG_BACKTRACE_SELF_TEST is not set
823# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 931# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
932# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
824# CONFIG_FAULT_INJECTION is not set 933# CONFIG_FAULT_INJECTION is not set
825# CONFIG_LATENCYTOP is not set 934# CONFIG_LATENCYTOP is not set
826CONFIG_SYSCTL_SYSCALL_CHECK=y 935CONFIG_SYSCTL_SYSCALL_CHECK=y
936# CONFIG_DEBUG_PAGEALLOC is not set
827CONFIG_HAVE_FUNCTION_TRACER=y 937CONFIG_HAVE_FUNCTION_TRACER=y
938CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
828CONFIG_HAVE_DYNAMIC_FTRACE=y 939CONFIG_HAVE_DYNAMIC_FTRACE=y
829CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 940CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
830 941CONFIG_TRACING_SUPPORT=y
831# 942CONFIG_FTRACE=y
832# Tracers
833#
834# CONFIG_FUNCTION_TRACER is not set 943# CONFIG_FUNCTION_TRACER is not set
944# CONFIG_IRQSOFF_TRACER is not set
835# CONFIG_SCHED_TRACER is not set 945# CONFIG_SCHED_TRACER is not set
836# CONFIG_CONTEXT_SWITCH_TRACER is not set 946# CONFIG_ENABLE_DEFAULT_TRACERS is not set
837# CONFIG_BOOT_TRACER is not set 947# CONFIG_BOOT_TRACER is not set
838# CONFIG_TRACE_BRANCH_PROFILING is not set 948CONFIG_BRANCH_PROFILE_NONE=y
949# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
950# CONFIG_PROFILE_ALL_BRANCHES is not set
839# CONFIG_STACK_TRACER is not set 951# CONFIG_STACK_TRACER is not set
840# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 952# CONFIG_KMEMTRACE is not set
953# CONFIG_WORKQUEUE_TRACER is not set
954# CONFIG_BLK_DEV_IO_TRACE is not set
955# CONFIG_DMA_API_DEBUG is not set
841# CONFIG_SAMPLES is not set 956# CONFIG_SAMPLES is not set
842CONFIG_HAVE_ARCH_KGDB=y 957CONFIG_HAVE_ARCH_KGDB=y
843# CONFIG_KGDB is not set 958# CONFIG_KGDB is not set
959# CONFIG_PPC_DISABLE_WERROR is not set
960CONFIG_PPC_WERROR=y
844CONFIG_PRINT_STACK_DEPTH=64 961CONFIG_PRINT_STACK_DEPTH=64
845# CONFIG_DEBUG_STACKOVERFLOW is not set 962# CONFIG_DEBUG_STACKOVERFLOW is not set
846# CONFIG_DEBUG_STACK_USAGE is not set 963# CONFIG_DEBUG_STACK_USAGE is not set
847# CONFIG_DEBUG_PAGEALLOC is not set
848# CONFIG_CODE_PATCHING_SELFTEST is not set 964# CONFIG_CODE_PATCHING_SELFTEST is not set
849# CONFIG_FTR_FIXUP_SELFTEST is not set 965# CONFIG_FTR_FIXUP_SELFTEST is not set
850# CONFIG_MSI_BITMAP_SELFTEST is not set 966# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -859,13 +975,16 @@ CONFIG_PRINT_STACK_DEPTH=64
859# CONFIG_KEYS is not set 975# CONFIG_KEYS is not set
860# CONFIG_SECURITY is not set 976# CONFIG_SECURITY is not set
861# CONFIG_SECURITYFS is not set 977# CONFIG_SECURITYFS is not set
862# CONFIG_SECURITY_FILE_CAPABILITIES is not set 978# CONFIG_DEFAULT_SECURITY_SELINUX is not set
979# CONFIG_DEFAULT_SECURITY_SMACK is not set
980# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
981CONFIG_DEFAULT_SECURITY_DAC=y
982CONFIG_DEFAULT_SECURITY=""
863CONFIG_CRYPTO=y 983CONFIG_CRYPTO=y
864 984
865# 985#
866# Crypto core or helper 986# Crypto core or helper
867# 987#
868# CONFIG_CRYPTO_FIPS is not set
869CONFIG_CRYPTO_ALGAPI=y 988CONFIG_CRYPTO_ALGAPI=y
870CONFIG_CRYPTO_ALGAPI2=y 989CONFIG_CRYPTO_ALGAPI2=y
871CONFIG_CRYPTO_AEAD2=y 990CONFIG_CRYPTO_AEAD2=y
@@ -874,10 +993,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
874CONFIG_CRYPTO_HASH=y 993CONFIG_CRYPTO_HASH=y
875CONFIG_CRYPTO_HASH2=y 994CONFIG_CRYPTO_HASH2=y
876CONFIG_CRYPTO_RNG2=y 995CONFIG_CRYPTO_RNG2=y
996CONFIG_CRYPTO_PCOMP=y
877CONFIG_CRYPTO_MANAGER=y 997CONFIG_CRYPTO_MANAGER=y
878CONFIG_CRYPTO_MANAGER2=y 998CONFIG_CRYPTO_MANAGER2=y
879# CONFIG_CRYPTO_GF128MUL is not set 999# CONFIG_CRYPTO_GF128MUL is not set
880# CONFIG_CRYPTO_NULL is not set 1000# CONFIG_CRYPTO_NULL is not set
1001CONFIG_CRYPTO_WORKQUEUE=y
881# CONFIG_CRYPTO_CRYPTD is not set 1002# CONFIG_CRYPTO_CRYPTD is not set
882# CONFIG_CRYPTO_AUTHENC is not set 1003# CONFIG_CRYPTO_AUTHENC is not set
883# CONFIG_CRYPTO_TEST is not set 1004# CONFIG_CRYPTO_TEST is not set
@@ -905,11 +1026,13 @@ CONFIG_CRYPTO_PCBC=y
905# 1026#
906# CONFIG_CRYPTO_HMAC is not set 1027# CONFIG_CRYPTO_HMAC is not set
907# CONFIG_CRYPTO_XCBC is not set 1028# CONFIG_CRYPTO_XCBC is not set
1029# CONFIG_CRYPTO_VMAC is not set
908 1030
909# 1031#
910# Digest 1032# Digest
911# 1033#
912# CONFIG_CRYPTO_CRC32C is not set 1034# CONFIG_CRYPTO_CRC32C is not set
1035# CONFIG_CRYPTO_GHASH is not set
913# CONFIG_CRYPTO_MD4 is not set 1036# CONFIG_CRYPTO_MD4 is not set
914CONFIG_CRYPTO_MD5=y 1037CONFIG_CRYPTO_MD5=y
915# CONFIG_CRYPTO_MICHAEL_MIC is not set 1038# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -946,6 +1069,7 @@ CONFIG_CRYPTO_DES=y
946# Compression 1069# Compression
947# 1070#
948# CONFIG_CRYPTO_DEFLATE is not set 1071# CONFIG_CRYPTO_DEFLATE is not set
1072# CONFIG_CRYPTO_ZLIB is not set
949# CONFIG_CRYPTO_LZO is not set 1073# CONFIG_CRYPTO_LZO is not set
950 1074
951# 1075#
@@ -954,5 +1078,6 @@ CONFIG_CRYPTO_DES=y
954# CONFIG_CRYPTO_ANSI_CPRNG is not set 1078# CONFIG_CRYPTO_ANSI_CPRNG is not set
955CONFIG_CRYPTO_HW=y 1079CONFIG_CRYPTO_HW=y
956# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1080# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1081# CONFIG_CRYPTO_DEV_PPC4XX is not set
957# CONFIG_PPC_CLOCK is not set 1082# CONFIG_PPC_CLOCK is not set
958# CONFIG_VIRTUALIZATION is not set 1083# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/44x/rainier_defconfig b/arch/powerpc/configs/44x/rainier_defconfig
index b25fad1343dc..8fed3b26af2e 100644
--- a/arch/powerpc/configs/44x/rainier_defconfig
+++ b/arch/powerpc/configs/44x/rainier_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.29-rc2 3# Linux kernel version: 2.6.33-rc1
4# Tue Jan 20 08:22:41 2009 4# Mon Jan 4 14:59:12 2010
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#
11# CONFIG_6xx is not set 11# CONFIG_PPC_BOOK3S_32 is not set
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
@@ -19,6 +19,7 @@ CONFIG_BOOKE=y
19CONFIG_PTE_64BIT=y 19CONFIG_PTE_64BIT=y
20CONFIG_PHYS_64BIT=y 20CONFIG_PHYS_64BIT=y
21CONFIG_PPC_MMU_NOHASH=y 21CONFIG_PPC_MMU_NOHASH=y
22CONFIG_PPC_MMU_NOHASH_32=y
22# CONFIG_PPC_MM_SLICES is not set 23# CONFIG_PPC_MM_SLICES is not set
23CONFIG_NOT_COHERENT_CACHE=y 24CONFIG_NOT_COHERENT_CACHE=y
24CONFIG_PPC32=y 25CONFIG_PPC32=y
@@ -30,15 +31,18 @@ CONFIG_GENERIC_TIME=y
30CONFIG_GENERIC_TIME_VSYSCALL=y 31CONFIG_GENERIC_TIME_VSYSCALL=y
31CONFIG_GENERIC_CLOCKEVENTS=y 32CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 33CONFIG_GENERIC_HARDIRQS=y
34CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 35# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
36# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
34CONFIG_IRQ_PER_CPU=y 37CONFIG_IRQ_PER_CPU=y
38CONFIG_NR_IRQS=512
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,15 @@ CONFIG_PPC_UDBG_16550=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
55# CONFIG_DEFAULT_UIMAGE is not set 60# CONFIG_DEFAULT_UIMAGE is not set
61CONFIG_ARCH_HIBERNATION_POSSIBLE=y
56CONFIG_PPC_DCR_NATIVE=y 62CONFIG_PPC_DCR_NATIVE=y
57# CONFIG_PPC_DCR_MMIO is not set 63# CONFIG_PPC_DCR_MMIO is not set
58CONFIG_PPC_DCR=y 64CONFIG_PPC_DCR=y
65CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
59CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 66CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
67CONFIG_CONSTRUCTORS=y
60 68
61# 69#
62# General setup 70# General setup
@@ -70,9 +78,21 @@ CONFIG_SWAP=y
70CONFIG_SYSVIPC=y 78CONFIG_SYSVIPC=y
71CONFIG_SYSVIPC_SYSCTL=y 79CONFIG_SYSVIPC_SYSCTL=y
72CONFIG_POSIX_MQUEUE=y 80CONFIG_POSIX_MQUEUE=y
81CONFIG_POSIX_MQUEUE_SYSCTL=y
73# CONFIG_BSD_PROCESS_ACCT is not set 82# CONFIG_BSD_PROCESS_ACCT is not set
74# CONFIG_TASKSTATS is not set 83# CONFIG_TASKSTATS is not set
75# CONFIG_AUDIT is not set 84# CONFIG_AUDIT is not set
85
86#
87# RCU Subsystem
88#
89CONFIG_TREE_RCU=y
90# CONFIG_TREE_PREEMPT_RCU is not set
91# CONFIG_TINY_RCU is not set
92# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set
95# CONFIG_TREE_RCU_TRACE is not set
76# CONFIG_IKCONFIG is not set 96# CONFIG_IKCONFIG is not set
77CONFIG_LOG_BUF_SHIFT=14 97CONFIG_LOG_BUF_SHIFT=14
78CONFIG_GROUP_SCHED=y 98CONFIG_GROUP_SCHED=y
@@ -87,8 +107,12 @@ CONFIG_SYSFS_DEPRECATED_V2=y
87# CONFIG_NAMESPACES is not set 107# CONFIG_NAMESPACES is not set
88CONFIG_BLK_DEV_INITRD=y 108CONFIG_BLK_DEV_INITRD=y
89CONFIG_INITRAMFS_SOURCE="" 109CONFIG_INITRAMFS_SOURCE=""
110CONFIG_RD_GZIP=y
111# CONFIG_RD_BZIP2 is not set
112# CONFIG_RD_LZMA is not set
90# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 113# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
91CONFIG_SYSCTL=y 114CONFIG_SYSCTL=y
115CONFIG_ANON_INODES=y
92CONFIG_EMBEDDED=y 116CONFIG_EMBEDDED=y
93CONFIG_SYSCTL_SYSCALL=y 117CONFIG_SYSCTL_SYSCALL=y
94CONFIG_KALLSYMS=y 118CONFIG_KALLSYMS=y
@@ -98,19 +122,25 @@ CONFIG_HOTPLUG=y
98CONFIG_PRINTK=y 122CONFIG_PRINTK=y
99CONFIG_BUG=y 123CONFIG_BUG=y
100CONFIG_ELF_CORE=y 124CONFIG_ELF_CORE=y
101CONFIG_COMPAT_BRK=y
102CONFIG_BASE_FULL=y 125CONFIG_BASE_FULL=y
103CONFIG_FUTEX=y 126CONFIG_FUTEX=y
104CONFIG_ANON_INODES=y
105CONFIG_EPOLL=y 127CONFIG_EPOLL=y
106CONFIG_SIGNALFD=y 128CONFIG_SIGNALFD=y
107CONFIG_TIMERFD=y 129CONFIG_TIMERFD=y
108CONFIG_EVENTFD=y 130CONFIG_EVENTFD=y
109CONFIG_SHMEM=y 131CONFIG_SHMEM=y
110CONFIG_AIO=y 132CONFIG_AIO=y
133CONFIG_HAVE_PERF_EVENTS=y
134
135#
136# Kernel Performance Events And Counters
137#
138# CONFIG_PERF_EVENTS is not set
139# CONFIG_PERF_COUNTERS is not set
111CONFIG_VM_EVENT_COUNTERS=y 140CONFIG_VM_EVENT_COUNTERS=y
112CONFIG_PCI_QUIRKS=y 141CONFIG_PCI_QUIRKS=y
113CONFIG_SLUB_DEBUG=y 142CONFIG_SLUB_DEBUG=y
143CONFIG_COMPAT_BRK=y
114# CONFIG_SLAB is not set 144# CONFIG_SLAB is not set
115CONFIG_SLUB=y 145CONFIG_SLUB=y
116# CONFIG_SLOB is not set 146# CONFIG_SLOB is not set
@@ -122,6 +152,14 @@ CONFIG_HAVE_IOREMAP_PROT=y
122CONFIG_HAVE_KPROBES=y 152CONFIG_HAVE_KPROBES=y
123CONFIG_HAVE_KRETPROBES=y 153CONFIG_HAVE_KRETPROBES=y
124CONFIG_HAVE_ARCH_TRACEHOOK=y 154CONFIG_HAVE_ARCH_TRACEHOOK=y
155CONFIG_HAVE_DMA_ATTRS=y
156CONFIG_HAVE_DMA_API_DEBUG=y
157
158#
159# GCOV-based kernel profiling
160#
161# CONFIG_GCOV_KERNEL is not set
162# CONFIG_SLOW_WORK is not set
125# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 163# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
126CONFIG_SLABINFO=y 164CONFIG_SLABINFO=y
127CONFIG_RT_MUTEXES=y 165CONFIG_RT_MUTEXES=y
@@ -133,8 +171,7 @@ CONFIG_MODULE_UNLOAD=y
133# CONFIG_MODVERSIONS is not set 171# CONFIG_MODVERSIONS is not set
134# CONFIG_MODULE_SRCVERSION_ALL is not set 172# CONFIG_MODULE_SRCVERSION_ALL is not set
135CONFIG_BLOCK=y 173CONFIG_BLOCK=y
136CONFIG_LBD=y 174CONFIG_LBDAF=y
137# CONFIG_BLK_DEV_IO_TRACE is not set
138# CONFIG_BLK_DEV_BSG is not set 175# CONFIG_BLK_DEV_BSG is not set
139# CONFIG_BLK_DEV_INTEGRITY is not set 176# CONFIG_BLK_DEV_INTEGRITY is not set
140 177
@@ -142,19 +179,41 @@ CONFIG_LBD=y
142# IO Schedulers 179# IO Schedulers
143# 180#
144CONFIG_IOSCHED_NOOP=y 181CONFIG_IOSCHED_NOOP=y
145CONFIG_IOSCHED_AS=y
146CONFIG_IOSCHED_DEADLINE=y 182CONFIG_IOSCHED_DEADLINE=y
147CONFIG_IOSCHED_CFQ=y 183CONFIG_IOSCHED_CFQ=y
148CONFIG_DEFAULT_AS=y
149# CONFIG_DEFAULT_DEADLINE is not set 184# CONFIG_DEFAULT_DEADLINE is not set
150# CONFIG_DEFAULT_CFQ is not set 185CONFIG_DEFAULT_CFQ=y
151# CONFIG_DEFAULT_NOOP is not set 186# CONFIG_DEFAULT_NOOP is not set
152CONFIG_DEFAULT_IOSCHED="anticipatory" 187CONFIG_DEFAULT_IOSCHED="cfq"
153CONFIG_CLASSIC_RCU=y 188# CONFIG_INLINE_SPIN_TRYLOCK is not set
154# CONFIG_TREE_RCU is not set 189# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
155# CONFIG_PREEMPT_RCU is not set 190# CONFIG_INLINE_SPIN_LOCK is not set
156# CONFIG_TREE_RCU_TRACE is not set 191# CONFIG_INLINE_SPIN_LOCK_BH is not set
157# CONFIG_PREEMPT_RCU_TRACE is not set 192# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
193# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
194CONFIG_INLINE_SPIN_UNLOCK=y
195# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
196CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
197# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
198# CONFIG_INLINE_READ_TRYLOCK is not set
199# CONFIG_INLINE_READ_LOCK is not set
200# CONFIG_INLINE_READ_LOCK_BH is not set
201# CONFIG_INLINE_READ_LOCK_IRQ is not set
202# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
203CONFIG_INLINE_READ_UNLOCK=y
204# CONFIG_INLINE_READ_UNLOCK_BH is not set
205CONFIG_INLINE_READ_UNLOCK_IRQ=y
206# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
207# CONFIG_INLINE_WRITE_TRYLOCK is not set
208# CONFIG_INLINE_WRITE_LOCK is not set
209# CONFIG_INLINE_WRITE_LOCK_BH is not set
210# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
211# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
212CONFIG_INLINE_WRITE_UNLOCK=y
213# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
214CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
215# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
216# CONFIG_MUTEX_SPIN_ON_OWNER is not set
158# CONFIG_FREEZER is not set 217# CONFIG_FREEZER is not set
159# CONFIG_PPC4xx_PCI_EXPRESS is not set 218# CONFIG_PPC4xx_PCI_EXPRESS is not set
160 219
@@ -175,6 +234,8 @@ CONFIG_RAINIER=y
175# CONFIG_ARCHES is not set 234# CONFIG_ARCHES is not set
176# CONFIG_CANYONLANDS is not set 235# CONFIG_CANYONLANDS is not set
177# CONFIG_GLACIER is not set 236# CONFIG_GLACIER is not set
237# CONFIG_REDWOOD is not set
238# CONFIG_EIGER is not set
178# CONFIG_YOSEMITE is not set 239# CONFIG_YOSEMITE is not set
179# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set 240# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set
180CONFIG_PPC44x_SIMPLE=y 241CONFIG_PPC44x_SIMPLE=y
@@ -216,10 +277,12 @@ CONFIG_BINFMT_ELF=y
216# CONFIG_BINFMT_MISC is not set 277# CONFIG_BINFMT_MISC is not set
217CONFIG_MATH_EMULATION=y 278CONFIG_MATH_EMULATION=y
218# CONFIG_IOMMU_HELPER is not set 279# CONFIG_IOMMU_HELPER is not set
219CONFIG_PPC_NEED_DMA_SYNC_OPS=y 280# CONFIG_SWIOTLB is not set
220CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 281CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
221CONFIG_ARCH_HAS_WALK_MEMORY=y 282CONFIG_ARCH_HAS_WALK_MEMORY=y
222CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 283CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
284CONFIG_SPARSE_IRQ=y
285CONFIG_MAX_ACTIVE_REGIONS=32
223CONFIG_ARCH_FLATMEM_ENABLE=y 286CONFIG_ARCH_FLATMEM_ENABLE=y
224CONFIG_ARCH_POPULATES_NODE_MAP=y 287CONFIG_ARCH_POPULATES_NODE_MAP=y
225CONFIG_SELECT_MEMORY_MODEL=y 288CONFIG_SELECT_MEMORY_MODEL=y
@@ -235,10 +298,13 @@ CONFIG_PHYS_ADDR_T_64BIT=y
235CONFIG_ZONE_DMA_FLAG=1 298CONFIG_ZONE_DMA_FLAG=1
236CONFIG_BOUNCE=y 299CONFIG_BOUNCE=y
237CONFIG_VIRT_TO_BUS=y 300CONFIG_VIRT_TO_BUS=y
238CONFIG_UNEVICTABLE_LRU=y 301# CONFIG_KSM is not set
302CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
303CONFIG_STDBINUTILS=y
239CONFIG_PPC_4K_PAGES=y 304CONFIG_PPC_4K_PAGES=y
240# CONFIG_PPC_16K_PAGES is not set 305# CONFIG_PPC_16K_PAGES is not set
241# CONFIG_PPC_64K_PAGES is not set 306# CONFIG_PPC_64K_PAGES is not set
307# CONFIG_PPC_256K_PAGES is not set
242CONFIG_FORCE_MAX_ZONEORDER=11 308CONFIG_FORCE_MAX_ZONEORDER=11
243CONFIG_PROC_DEVICETREE=y 309CONFIG_PROC_DEVICETREE=y
244CONFIG_CMDLINE_BOOL=y 310CONFIG_CMDLINE_BOOL=y
@@ -263,6 +329,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
263# CONFIG_PCI_LEGACY is not set 329# CONFIG_PCI_LEGACY is not set
264# CONFIG_PCI_DEBUG is not set 330# CONFIG_PCI_DEBUG is not set
265# CONFIG_PCI_STUB is not set 331# CONFIG_PCI_STUB is not set
332# CONFIG_PCI_IOV is not set
266# CONFIG_PCCARD is not set 333# CONFIG_PCCARD is not set
267# CONFIG_HOTPLUG_PCI is not set 334# CONFIG_HOTPLUG_PCI is not set
268# CONFIG_HAS_RAPIDIO is not set 335# CONFIG_HAS_RAPIDIO is not set
@@ -280,14 +347,12 @@ CONFIG_PAGE_OFFSET=0xc0000000
280CONFIG_KERNEL_START=0xc0000000 347CONFIG_KERNEL_START=0xc0000000
281CONFIG_PHYSICAL_START=0x00000000 348CONFIG_PHYSICAL_START=0x00000000
282CONFIG_TASK_SIZE=0xc0000000 349CONFIG_TASK_SIZE=0xc0000000
283CONFIG_CONSISTENT_START=0xff100000
284CONFIG_CONSISTENT_SIZE=0x00200000 350CONFIG_CONSISTENT_SIZE=0x00200000
285CONFIG_NET=y 351CONFIG_NET=y
286 352
287# 353#
288# Networking options 354# Networking options
289# 355#
290CONFIG_COMPAT_NET_DEV_OPS=y
291CONFIG_PACKET=y 356CONFIG_PACKET=y
292# CONFIG_PACKET_MMAP is not set 357# CONFIG_PACKET_MMAP is not set
293CONFIG_UNIX=y 358CONFIG_UNIX=y
@@ -324,6 +389,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
324# CONFIG_NETFILTER is not set 389# CONFIG_NETFILTER is not set
325# CONFIG_IP_DCCP is not set 390# CONFIG_IP_DCCP is not set
326# CONFIG_IP_SCTP is not set 391# CONFIG_IP_SCTP is not set
392# CONFIG_RDS is not set
327# CONFIG_TIPC is not set 393# CONFIG_TIPC is not set
328# CONFIG_ATM is not set 394# CONFIG_ATM is not set
329# CONFIG_BRIDGE is not set 395# CONFIG_BRIDGE is not set
@@ -337,6 +403,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
337# CONFIG_LAPB is not set 403# CONFIG_LAPB is not set
338# CONFIG_ECONET is not set 404# CONFIG_ECONET is not set
339# CONFIG_WAN_ROUTER is not set 405# CONFIG_WAN_ROUTER is not set
406# CONFIG_PHONET is not set
407# CONFIG_IEEE802154 is not set
340# CONFIG_NET_SCHED is not set 408# CONFIG_NET_SCHED is not set
341# CONFIG_DCB is not set 409# CONFIG_DCB is not set
342 410
@@ -349,8 +417,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
349# CONFIG_IRDA is not set 417# CONFIG_IRDA is not set
350# CONFIG_BT is not set 418# CONFIG_BT is not set
351# CONFIG_AF_RXRPC is not set 419# CONFIG_AF_RXRPC is not set
352# CONFIG_PHONET is not set 420CONFIG_WIRELESS=y
353# CONFIG_WIRELESS is not set 421# CONFIG_CFG80211 is not set
422# CONFIG_LIB80211 is not set
423
424#
425# CFG80211 needs to be enabled for MAC80211
426#
354# CONFIG_WIMAX is not set 427# CONFIG_WIMAX is not set
355# CONFIG_RFKILL is not set 428# CONFIG_RFKILL is not set
356# CONFIG_NET_9P is not set 429# CONFIG_NET_9P is not set
@@ -363,6 +436,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
363# Generic Driver Options 436# Generic Driver Options
364# 437#
365CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 438CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
439# CONFIG_DEVTMPFS is not set
366CONFIG_STANDALONE=y 440CONFIG_STANDALONE=y
367CONFIG_PREVENT_FIRMWARE_BUILD=y 441CONFIG_PREVENT_FIRMWARE_BUILD=y
368CONFIG_FW_LOADER=y 442CONFIG_FW_LOADER=y
@@ -375,9 +449,9 @@ CONFIG_CONNECTOR=y
375CONFIG_PROC_EVENTS=y 449CONFIG_PROC_EVENTS=y
376CONFIG_MTD=y 450CONFIG_MTD=y
377# CONFIG_MTD_DEBUG is not set 451# CONFIG_MTD_DEBUG is not set
452# CONFIG_MTD_TESTS is not set
378# CONFIG_MTD_CONCAT is not set 453# CONFIG_MTD_CONCAT is not set
379CONFIG_MTD_PARTITIONS=y 454CONFIG_MTD_PARTITIONS=y
380# CONFIG_MTD_TESTS is not set
381# CONFIG_MTD_REDBOOT_PARTS is not set 455# CONFIG_MTD_REDBOOT_PARTS is not set
382CONFIG_MTD_CMDLINE_PARTS=y 456CONFIG_MTD_CMDLINE_PARTS=y
383CONFIG_MTD_OF_PARTS=y 457CONFIG_MTD_OF_PARTS=y
@@ -453,7 +527,6 @@ CONFIG_MTD_PHYSMAP_OF=y
453# LPDDR flash memory drivers 527# LPDDR flash memory drivers
454# 528#
455# CONFIG_MTD_LPDDR is not set 529# CONFIG_MTD_LPDDR is not set
456# CONFIG_MTD_QINFO_PROBE is not set
457 530
458# 531#
459# UBI - Unsorted block images 532# UBI - Unsorted block images
@@ -469,6 +542,7 @@ CONFIG_BLK_DEV=y
469# CONFIG_BLK_DEV_UMEM is not set 542# CONFIG_BLK_DEV_UMEM is not set
470# CONFIG_BLK_DEV_COW_COMMON is not set 543# CONFIG_BLK_DEV_COW_COMMON is not set
471# CONFIG_BLK_DEV_LOOP is not set 544# CONFIG_BLK_DEV_LOOP is not set
545# CONFIG_BLK_DEV_DRBD is not set
472# CONFIG_BLK_DEV_NBD is not set 546# CONFIG_BLK_DEV_NBD is not set
473# CONFIG_BLK_DEV_SX8 is not set 547# CONFIG_BLK_DEV_SX8 is not set
474CONFIG_BLK_DEV_RAM=y 548CONFIG_BLK_DEV_RAM=y
@@ -481,12 +555,17 @@ CONFIG_BLK_DEV_RAM_SIZE=35000
481# CONFIG_BLK_DEV_HD is not set 555# CONFIG_BLK_DEV_HD is not set
482CONFIG_MISC_DEVICES=y 556CONFIG_MISC_DEVICES=y
483# CONFIG_PHANTOM is not set 557# CONFIG_PHANTOM is not set
484# CONFIG_EEPROM_93CX6 is not set
485# CONFIG_SGI_IOC4 is not set 558# CONFIG_SGI_IOC4 is not set
486# CONFIG_TIFM_CORE is not set 559# CONFIG_TIFM_CORE is not set
487# CONFIG_ENCLOSURE_SERVICES is not set 560# CONFIG_ENCLOSURE_SERVICES is not set
488# CONFIG_HP_ILO is not set 561# CONFIG_HP_ILO is not set
489# CONFIG_C2PORT is not set 562# CONFIG_C2PORT is not set
563
564#
565# EEPROM support
566#
567# CONFIG_EEPROM_93CX6 is not set
568# CONFIG_CB710_CORE is not set
490CONFIG_HAVE_IDE=y 569CONFIG_HAVE_IDE=y
491# CONFIG_IDE is not set 570# CONFIG_IDE is not set
492 571
@@ -506,7 +585,11 @@ CONFIG_HAVE_IDE=y
506# 585#
507 586
508# 587#
509# Enable only one of the two stacks, unless you know what you are doing 588# You can enable one or both FireWire driver stacks.
589#
590
591#
592# See the help texts for more information.
510# 593#
511# CONFIG_FIREWIRE is not set 594# CONFIG_FIREWIRE is not set
512# CONFIG_IEEE1394 is not set 595# CONFIG_IEEE1394 is not set
@@ -533,6 +616,7 @@ CONFIG_NETDEV_1000=y
533# CONFIG_E1000E is not set 616# CONFIG_E1000E is not set
534# CONFIG_IP1000 is not set 617# CONFIG_IP1000 is not set
535# CONFIG_IGB is not set 618# CONFIG_IGB is not set
619# CONFIG_IGBVF is not set
536# CONFIG_NS83820 is not set 620# CONFIG_NS83820 is not set
537# CONFIG_HAMACHI is not set 621# CONFIG_HAMACHI is not set
538# CONFIG_YELLOWFIN is not set 622# CONFIG_YELLOWFIN is not set
@@ -543,9 +627,13 @@ CONFIG_NETDEV_1000=y
543# CONFIG_VIA_VELOCITY is not set 627# CONFIG_VIA_VELOCITY is not set
544# CONFIG_TIGON3 is not set 628# CONFIG_TIGON3 is not set
545# CONFIG_BNX2 is not set 629# CONFIG_BNX2 is not set
630# CONFIG_CNIC is not set
631# CONFIG_MV643XX_ETH is not set
632# CONFIG_XILINX_LL_TEMAC is not set
546# CONFIG_QLA3XXX is not set 633# CONFIG_QLA3XXX is not set
547# CONFIG_ATL1 is not set 634# CONFIG_ATL1 is not set
548# CONFIG_ATL1E is not set 635# CONFIG_ATL1E is not set
636# CONFIG_ATL1C is not set
549# CONFIG_JME is not set 637# CONFIG_JME is not set
550CONFIG_NETDEV_10000=y 638CONFIG_NETDEV_10000=y
551# CONFIG_CHELSIO_T1 is not set 639# CONFIG_CHELSIO_T1 is not set
@@ -555,6 +643,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
555# CONFIG_IXGBE is not set 643# CONFIG_IXGBE is not set
556# CONFIG_IXGB is not set 644# CONFIG_IXGB is not set
557# CONFIG_S2IO is not set 645# CONFIG_S2IO is not set
646# CONFIG_VXGE is not set
558# CONFIG_MYRI10GE is not set 647# CONFIG_MYRI10GE is not set
559# CONFIG_NETXEN_NIC is not set 648# CONFIG_NETXEN_NIC is not set
560# CONFIG_NIU is not set 649# CONFIG_NIU is not set
@@ -564,14 +653,13 @@ CONFIG_CHELSIO_T3_DEPENDS=y
564# CONFIG_BNX2X is not set 653# CONFIG_BNX2X is not set
565# CONFIG_QLGE is not set 654# CONFIG_QLGE is not set
566# CONFIG_SFC is not set 655# CONFIG_SFC is not set
656# CONFIG_BE2NET is not set
567# CONFIG_TR is not set 657# CONFIG_TR is not set
568 658CONFIG_WLAN=y
569# 659# CONFIG_AIRO is not set
570# Wireless LAN 660# CONFIG_ATMEL is not set
571# 661# CONFIG_PRISM54 is not set
572# CONFIG_WLAN_PRE80211 is not set 662# CONFIG_HOSTAP is not set
573# CONFIG_WLAN_80211 is not set
574# CONFIG_IWLWIFI_LEDS is not set
575 663
576# 664#
577# Enable WiMAX (Networking options) to see the WiMAX drivers 665# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -584,6 +672,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
584# CONFIG_NETCONSOLE is not set 672# CONFIG_NETCONSOLE is not set
585# CONFIG_NETPOLL is not set 673# CONFIG_NETPOLL is not set
586# CONFIG_NET_POLL_CONTROLLER is not set 674# CONFIG_NET_POLL_CONTROLLER is not set
675# CONFIG_VMXNET3 is not set
587# CONFIG_ISDN is not set 676# CONFIG_ISDN is not set
588# CONFIG_PHONE is not set 677# CONFIG_PHONE is not set
589 678
@@ -629,6 +718,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
629# CONFIG_SERIAL_JSM is not set 718# CONFIG_SERIAL_JSM is not set
630CONFIG_SERIAL_OF_PLATFORM=y 719CONFIG_SERIAL_OF_PLATFORM=y
631# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set 720# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
721# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
632CONFIG_UNIX98_PTYS=y 722CONFIG_UNIX98_PTYS=y
633# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 723# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
634CONFIG_LEGACY_PTYS=y 724CONFIG_LEGACY_PTYS=y
@@ -645,6 +735,11 @@ CONFIG_LEGACY_PTY_COUNT=256
645CONFIG_DEVPORT=y 735CONFIG_DEVPORT=y
646# CONFIG_I2C is not set 736# CONFIG_I2C is not set
647# CONFIG_SPI is not set 737# CONFIG_SPI is not set
738
739#
740# PPS support
741#
742# CONFIG_PPS is not set
648CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 743CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
649# CONFIG_GPIOLIB is not set 744# CONFIG_GPIOLIB is not set
650# CONFIG_W1 is not set 745# CONFIG_W1 is not set
@@ -667,27 +762,13 @@ CONFIG_SSB_POSSIBLE=y
667# CONFIG_HTC_PASIC3 is not set 762# CONFIG_HTC_PASIC3 is not set
668# CONFIG_MFD_TMIO is not set 763# CONFIG_MFD_TMIO is not set
669# CONFIG_REGULATOR is not set 764# CONFIG_REGULATOR is not set
670 765# CONFIG_MEDIA_SUPPORT is not set
671#
672# Multimedia devices
673#
674
675#
676# Multimedia core support
677#
678# CONFIG_VIDEO_DEV is not set
679# CONFIG_DVB_CORE is not set
680# CONFIG_VIDEO_MEDIA is not set
681
682#
683# Multimedia drivers
684#
685CONFIG_DAB=y
686 766
687# 767#
688# Graphics support 768# Graphics support
689# 769#
690# CONFIG_AGP is not set 770# CONFIG_AGP is not set
771CONFIG_VGA_ARB=y
691# CONFIG_DRM is not set 772# CONFIG_DRM is not set
692# CONFIG_VGASTATE is not set 773# CONFIG_VGASTATE is not set
693CONFIG_VIDEO_OUTPUT_CONTROL=m 774CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -712,7 +793,7 @@ CONFIG_USB_ARCH_HAS_EHCI=y
712# 793#
713 794
714# 795#
715# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 796# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
716# 797#
717# CONFIG_USB_GADGET is not set 798# CONFIG_USB_GADGET is not set
718 799
@@ -728,7 +809,12 @@ CONFIG_USB_ARCH_HAS_EHCI=y
728# CONFIG_EDAC is not set 809# CONFIG_EDAC is not set
729# CONFIG_RTC_CLASS is not set 810# CONFIG_RTC_CLASS is not set
730# CONFIG_DMADEVICES is not set 811# CONFIG_DMADEVICES is not set
812# CONFIG_AUXDISPLAY is not set
731# CONFIG_UIO is not set 813# CONFIG_UIO is not set
814
815#
816# TI VLYNQ
817#
732# CONFIG_STAGING is not set 818# CONFIG_STAGING is not set
733 819
734# 820#
@@ -739,14 +825,17 @@ CONFIG_EXT2_FS=y
739# CONFIG_EXT2_FS_XIP is not set 825# CONFIG_EXT2_FS_XIP is not set
740# CONFIG_EXT3_FS is not set 826# CONFIG_EXT3_FS is not set
741# CONFIG_EXT4_FS is not set 827# CONFIG_EXT4_FS is not set
828CONFIG_EXT4_USE_FOR_EXT23=y
742# CONFIG_REISERFS_FS is not set 829# CONFIG_REISERFS_FS is not set
743# CONFIG_JFS_FS is not set 830# CONFIG_JFS_FS is not set
744# CONFIG_FS_POSIX_ACL is not set 831# CONFIG_FS_POSIX_ACL is not set
745CONFIG_FILE_LOCKING=y
746# CONFIG_XFS_FS is not set 832# CONFIG_XFS_FS is not set
747# CONFIG_GFS2_FS is not set 833# CONFIG_GFS2_FS is not set
748# CONFIG_OCFS2_FS is not set 834# CONFIG_OCFS2_FS is not set
749# CONFIG_BTRFS_FS is not set 835# CONFIG_BTRFS_FS is not set
836# CONFIG_NILFS2_FS is not set
837CONFIG_FILE_LOCKING=y
838CONFIG_FSNOTIFY=y
750CONFIG_DNOTIFY=y 839CONFIG_DNOTIFY=y
751CONFIG_INOTIFY=y 840CONFIG_INOTIFY=y
752CONFIG_INOTIFY_USER=y 841CONFIG_INOTIFY_USER=y
@@ -756,6 +845,11 @@ CONFIG_INOTIFY_USER=y
756# CONFIG_FUSE_FS is not set 845# CONFIG_FUSE_FS is not set
757 846
758# 847#
848# Caches
849#
850# CONFIG_FSCACHE is not set
851
852#
759# CD-ROM/DVD Filesystems 853# CD-ROM/DVD Filesystems
760# 854#
761# CONFIG_ISO9660_FS is not set 855# CONFIG_ISO9660_FS is not set
@@ -820,7 +914,6 @@ CONFIG_LOCKD=y
820CONFIG_LOCKD_V4=y 914CONFIG_LOCKD_V4=y
821CONFIG_NFS_COMMON=y 915CONFIG_NFS_COMMON=y
822CONFIG_SUNRPC=y 916CONFIG_SUNRPC=y
823# CONFIG_SUNRPC_REGISTER_V4 is not set
824# CONFIG_RPCSEC_GSS_KRB5 is not set 917# CONFIG_RPCSEC_GSS_KRB5 is not set
825# CONFIG_RPCSEC_GSS_SPKM3 is not set 918# CONFIG_RPCSEC_GSS_SPKM3 is not set
826# CONFIG_SMB_FS is not set 919# CONFIG_SMB_FS is not set
@@ -836,6 +929,7 @@ CONFIG_SUNRPC=y
836CONFIG_MSDOS_PARTITION=y 929CONFIG_MSDOS_PARTITION=y
837# CONFIG_NLS is not set 930# CONFIG_NLS is not set
838# CONFIG_DLM is not set 931# CONFIG_DLM is not set
932# CONFIG_BINARY_PRINTF is not set
839 933
840# 934#
841# Library routines 935# Library routines
@@ -851,11 +945,13 @@ CONFIG_CRC32=y
851# CONFIG_LIBCRC32C is not set 945# CONFIG_LIBCRC32C is not set
852CONFIG_ZLIB_INFLATE=y 946CONFIG_ZLIB_INFLATE=y
853CONFIG_ZLIB_DEFLATE=y 947CONFIG_ZLIB_DEFLATE=y
854CONFIG_PLIST=y 948CONFIG_DECOMPRESS_GZIP=y
855CONFIG_HAS_IOMEM=y 949CONFIG_HAS_IOMEM=y
856CONFIG_HAS_IOPORT=y 950CONFIG_HAS_IOPORT=y
857CONFIG_HAS_DMA=y 951CONFIG_HAS_DMA=y
858CONFIG_HAVE_LMB=y 952CONFIG_HAVE_LMB=y
953CONFIG_NLATTR=y
954CONFIG_GENERIC_ATOMIC64=y
859 955
860# 956#
861# Kernel hacking 957# Kernel hacking
@@ -865,6 +961,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
865CONFIG_ENABLE_MUST_CHECK=y 961CONFIG_ENABLE_MUST_CHECK=y
866CONFIG_FRAME_WARN=1024 962CONFIG_FRAME_WARN=1024
867CONFIG_MAGIC_SYSRQ=y 963CONFIG_MAGIC_SYSRQ=y
964# CONFIG_STRIP_ASM_SYMS is not set
868# CONFIG_UNUSED_SYMBOLS is not set 965# CONFIG_UNUSED_SYMBOLS is not set
869CONFIG_DEBUG_FS=y 966CONFIG_DEBUG_FS=y
870# CONFIG_HEADERS_CHECK is not set 967# CONFIG_HEADERS_CHECK is not set
@@ -873,16 +970,23 @@ CONFIG_DEBUG_KERNEL=y
873CONFIG_DETECT_SOFTLOCKUP=y 970CONFIG_DETECT_SOFTLOCKUP=y
874# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 971# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
875CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 972CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
973CONFIG_DETECT_HUNG_TASK=y
974# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
975CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
876CONFIG_SCHED_DEBUG=y 976CONFIG_SCHED_DEBUG=y
877# CONFIG_SCHEDSTATS is not set 977# CONFIG_SCHEDSTATS is not set
878# CONFIG_TIMER_STATS is not set 978# CONFIG_TIMER_STATS is not set
879# CONFIG_DEBUG_OBJECTS is not set 979# CONFIG_DEBUG_OBJECTS is not set
880# CONFIG_SLUB_DEBUG_ON is not set 980# CONFIG_SLUB_DEBUG_ON is not set
881# CONFIG_SLUB_STATS is not set 981# CONFIG_SLUB_STATS is not set
982# CONFIG_DEBUG_KMEMLEAK is not set
882# CONFIG_DEBUG_RT_MUTEXES is not set 983# CONFIG_DEBUG_RT_MUTEXES is not set
883# CONFIG_RT_MUTEX_TESTER is not set 984# CONFIG_RT_MUTEX_TESTER is not set
884# CONFIG_DEBUG_SPINLOCK is not set 985# CONFIG_DEBUG_SPINLOCK is not set
885# CONFIG_DEBUG_MUTEXES is not set 986# CONFIG_DEBUG_MUTEXES is not set
987# CONFIG_DEBUG_LOCK_ALLOC is not set
988# CONFIG_PROVE_LOCKING is not set
989# CONFIG_LOCK_STAT is not set
886# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 990# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
887# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 991# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
888# CONFIG_DEBUG_KOBJECT is not set 992# CONFIG_DEBUG_KOBJECT is not set
@@ -894,35 +998,45 @@ CONFIG_SCHED_DEBUG=y
894# CONFIG_DEBUG_LIST is not set 998# CONFIG_DEBUG_LIST is not set
895# CONFIG_DEBUG_SG is not set 999# CONFIG_DEBUG_SG is not set
896# CONFIG_DEBUG_NOTIFIERS is not set 1000# CONFIG_DEBUG_NOTIFIERS is not set
897# CONFIG_BOOT_PRINTK_DELAY is not set 1001# CONFIG_DEBUG_CREDENTIALS is not set
898# CONFIG_RCU_TORTURE_TEST is not set 1002# CONFIG_RCU_TORTURE_TEST is not set
899# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1003# CONFIG_RCU_CPU_STALL_DETECTOR is not set
900# CONFIG_BACKTRACE_SELF_TEST is not set 1004# CONFIG_BACKTRACE_SELF_TEST is not set
901# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1005# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1006# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
902# CONFIG_FAULT_INJECTION is not set 1007# CONFIG_FAULT_INJECTION is not set
903# CONFIG_LATENCYTOP is not set 1008# CONFIG_LATENCYTOP is not set
904CONFIG_SYSCTL_SYSCALL_CHECK=y 1009CONFIG_SYSCTL_SYSCALL_CHECK=y
1010# CONFIG_DEBUG_PAGEALLOC is not set
905CONFIG_HAVE_FUNCTION_TRACER=y 1011CONFIG_HAVE_FUNCTION_TRACER=y
1012CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
906CONFIG_HAVE_DYNAMIC_FTRACE=y 1013CONFIG_HAVE_DYNAMIC_FTRACE=y
907CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1014CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
908 1015CONFIG_TRACING_SUPPORT=y
909# 1016CONFIG_FTRACE=y
910# Tracers
911#
912# CONFIG_FUNCTION_TRACER is not set 1017# CONFIG_FUNCTION_TRACER is not set
1018# CONFIG_IRQSOFF_TRACER is not set
913# CONFIG_SCHED_TRACER is not set 1019# CONFIG_SCHED_TRACER is not set
914# CONFIG_CONTEXT_SWITCH_TRACER is not set 1020# CONFIG_ENABLE_DEFAULT_TRACERS is not set
915# CONFIG_BOOT_TRACER is not set 1021# CONFIG_BOOT_TRACER is not set
916# CONFIG_TRACE_BRANCH_PROFILING is not set 1022CONFIG_BRANCH_PROFILE_NONE=y
1023# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1024# CONFIG_PROFILE_ALL_BRANCHES is not set
917# CONFIG_STACK_TRACER is not set 1025# CONFIG_STACK_TRACER is not set
918# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1026# CONFIG_KMEMTRACE is not set
1027# CONFIG_WORKQUEUE_TRACER is not set
1028# CONFIG_BLK_DEV_IO_TRACE is not set
1029# CONFIG_DYNAMIC_DEBUG is not set
1030# CONFIG_DMA_API_DEBUG is not set
919# CONFIG_SAMPLES is not set 1031# CONFIG_SAMPLES is not set
920CONFIG_HAVE_ARCH_KGDB=y 1032CONFIG_HAVE_ARCH_KGDB=y
921# CONFIG_KGDB is not set 1033# CONFIG_KGDB is not set
1034# CONFIG_PPC_DISABLE_WERROR is not set
1035CONFIG_PPC_WERROR=y
922CONFIG_PRINT_STACK_DEPTH=64 1036CONFIG_PRINT_STACK_DEPTH=64
923# CONFIG_DEBUG_STACKOVERFLOW is not set 1037# CONFIG_DEBUG_STACKOVERFLOW is not set
924# CONFIG_DEBUG_STACK_USAGE is not set 1038# CONFIG_DEBUG_STACK_USAGE is not set
925# CONFIG_DEBUG_PAGEALLOC is not set 1039# CONFIG_PPC_EMULATED_STATS is not set
926# CONFIG_CODE_PATCHING_SELFTEST is not set 1040# CONFIG_CODE_PATCHING_SELFTEST is not set
927# CONFIG_FTR_FIXUP_SELFTEST is not set 1041# CONFIG_FTR_FIXUP_SELFTEST is not set
928# CONFIG_MSI_BITMAP_SELFTEST is not set 1042# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -942,6 +1056,7 @@ CONFIG_PPC_EARLY_DEBUG=y
942CONFIG_PPC_EARLY_DEBUG_44x=y 1056CONFIG_PPC_EARLY_DEBUG_44x=y
943# CONFIG_PPC_EARLY_DEBUG_40x is not set 1057# CONFIG_PPC_EARLY_DEBUG_40x is not set
944# CONFIG_PPC_EARLY_DEBUG_CPM is not set 1058# CONFIG_PPC_EARLY_DEBUG_CPM is not set
1059# CONFIG_PPC_EARLY_DEBUG_USBGECKO is not set
945CONFIG_PPC_EARLY_DEBUG_44x_PHYSLOW=0xef600300 1060CONFIG_PPC_EARLY_DEBUG_44x_PHYSLOW=0xef600300
946CONFIG_PPC_EARLY_DEBUG_44x_PHYSHIGH=0x1 1061CONFIG_PPC_EARLY_DEBUG_44x_PHYSHIGH=0x1
947 1062
@@ -951,13 +1066,16 @@ CONFIG_PPC_EARLY_DEBUG_44x_PHYSHIGH=0x1
951# CONFIG_KEYS is not set 1066# CONFIG_KEYS is not set
952# CONFIG_SECURITY is not set 1067# CONFIG_SECURITY is not set
953# CONFIG_SECURITYFS is not set 1068# CONFIG_SECURITYFS is not set
954# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1069# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1070# CONFIG_DEFAULT_SECURITY_SMACK is not set
1071# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1072CONFIG_DEFAULT_SECURITY_DAC=y
1073CONFIG_DEFAULT_SECURITY=""
955CONFIG_CRYPTO=y 1074CONFIG_CRYPTO=y
956 1075
957# 1076#
958# Crypto core or helper 1077# Crypto core or helper
959# 1078#
960# CONFIG_CRYPTO_FIPS is not set
961CONFIG_CRYPTO_ALGAPI=y 1079CONFIG_CRYPTO_ALGAPI=y
962CONFIG_CRYPTO_ALGAPI2=y 1080CONFIG_CRYPTO_ALGAPI2=y
963CONFIG_CRYPTO_AEAD2=y 1081CONFIG_CRYPTO_AEAD2=y
@@ -966,10 +1084,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
966CONFIG_CRYPTO_HASH=y 1084CONFIG_CRYPTO_HASH=y
967CONFIG_CRYPTO_HASH2=y 1085CONFIG_CRYPTO_HASH2=y
968CONFIG_CRYPTO_RNG2=y 1086CONFIG_CRYPTO_RNG2=y
1087CONFIG_CRYPTO_PCOMP=y
969CONFIG_CRYPTO_MANAGER=y 1088CONFIG_CRYPTO_MANAGER=y
970CONFIG_CRYPTO_MANAGER2=y 1089CONFIG_CRYPTO_MANAGER2=y
971# CONFIG_CRYPTO_GF128MUL is not set 1090# CONFIG_CRYPTO_GF128MUL is not set
972# CONFIG_CRYPTO_NULL is not set 1091# CONFIG_CRYPTO_NULL is not set
1092CONFIG_CRYPTO_WORKQUEUE=y
973# CONFIG_CRYPTO_CRYPTD is not set 1093# CONFIG_CRYPTO_CRYPTD is not set
974# CONFIG_CRYPTO_AUTHENC is not set 1094# CONFIG_CRYPTO_AUTHENC is not set
975# CONFIG_CRYPTO_TEST is not set 1095# CONFIG_CRYPTO_TEST is not set
@@ -997,11 +1117,13 @@ CONFIG_CRYPTO_PCBC=y
997# 1117#
998# CONFIG_CRYPTO_HMAC is not set 1118# CONFIG_CRYPTO_HMAC is not set
999# CONFIG_CRYPTO_XCBC is not set 1119# CONFIG_CRYPTO_XCBC is not set
1120# CONFIG_CRYPTO_VMAC is not set
1000 1121
1001# 1122#
1002# Digest 1123# Digest
1003# 1124#
1004# CONFIG_CRYPTO_CRC32C is not set 1125# CONFIG_CRYPTO_CRC32C is not set
1126# CONFIG_CRYPTO_GHASH is not set
1005# CONFIG_CRYPTO_MD4 is not set 1127# CONFIG_CRYPTO_MD4 is not set
1006CONFIG_CRYPTO_MD5=y 1128CONFIG_CRYPTO_MD5=y
1007# CONFIG_CRYPTO_MICHAEL_MIC is not set 1129# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1038,6 +1160,7 @@ CONFIG_CRYPTO_DES=y
1038# Compression 1160# Compression
1039# 1161#
1040# CONFIG_CRYPTO_DEFLATE is not set 1162# CONFIG_CRYPTO_DEFLATE is not set
1163# CONFIG_CRYPTO_ZLIB is not set
1041# CONFIG_CRYPTO_LZO is not set 1164# CONFIG_CRYPTO_LZO is not set
1042 1165
1043# 1166#
@@ -1046,5 +1169,6 @@ CONFIG_CRYPTO_DES=y
1046# CONFIG_CRYPTO_ANSI_CPRNG is not set 1169# CONFIG_CRYPTO_ANSI_CPRNG is not set
1047CONFIG_CRYPTO_HW=y 1170CONFIG_CRYPTO_HW=y
1048# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1171# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1172# CONFIG_CRYPTO_DEV_PPC4XX is not set
1049# CONFIG_PPC_CLOCK is not set 1173# CONFIG_PPC_CLOCK is not set
1050# CONFIG_VIRTUALIZATION is not set 1174# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/44x/redwood_defconfig b/arch/powerpc/configs/44x/redwood_defconfig
index ed31d4f17b5a..a67ec91a28c3 100644
--- a/arch/powerpc/configs/44x/redwood_defconfig
+++ b/arch/powerpc/configs/44x/redwood_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.29-rc3 3# Linux kernel version: 2.6.33-rc1
4# Wed Feb 4 14:31:09 2009 4# Mon Jan 4 15:05:05 2010
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#
11# CONFIG_6xx is not set 11# CONFIG_PPC_BOOK3S_32 is not set
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
@@ -20,6 +20,7 @@ CONFIG_BOOKE=y
20CONFIG_PTE_64BIT=y 20CONFIG_PTE_64BIT=y
21CONFIG_PHYS_64BIT=y 21CONFIG_PHYS_64BIT=y
22CONFIG_PPC_MMU_NOHASH=y 22CONFIG_PPC_MMU_NOHASH=y
23CONFIG_PPC_MMU_NOHASH_32=y
23# CONFIG_PPC_MM_SLICES is not set 24# CONFIG_PPC_MM_SLICES is not set
24CONFIG_NOT_COHERENT_CACHE=y 25CONFIG_NOT_COHERENT_CACHE=y
25CONFIG_PPC32=y 26CONFIG_PPC32=y
@@ -31,15 +32,18 @@ CONFIG_GENERIC_TIME=y
31CONFIG_GENERIC_TIME_VSYSCALL=y 32CONFIG_GENERIC_TIME_VSYSCALL=y
32CONFIG_GENERIC_CLOCKEVENTS=y 33CONFIG_GENERIC_CLOCKEVENTS=y
33CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
34# 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
35CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
36CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
37CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
38CONFIG_LOCKDEP_SUPPORT=y 43CONFIG_LOCKDEP_SUPPORT=y
39CONFIG_RWSEM_XCHGADD_ALGORITHM=y 44CONFIG_RWSEM_XCHGADD_ALGORITHM=y
40CONFIG_ARCH_HAS_ILOG2_U32=y 45CONFIG_ARCH_HAS_ILOG2_U32=y
41CONFIG_GENERIC_HWEIGHT=y 46CONFIG_GENERIC_HWEIGHT=y
42CONFIG_GENERIC_CALIBRATE_DELAY=y
43CONFIG_GENERIC_FIND_NEXT_BIT=y 47CONFIG_GENERIC_FIND_NEXT_BIT=y
44# CONFIG_ARCH_NO_VIRT_TO_BUS is not set 48# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
45CONFIG_PPC=y 49CONFIG_PPC=y
@@ -53,11 +57,15 @@ CONFIG_PPC_UDBG_16550=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
56# CONFIG_DEFAULT_UIMAGE is not set 61# CONFIG_DEFAULT_UIMAGE is not set
62CONFIG_ARCH_HIBERNATION_POSSIBLE=y
57CONFIG_PPC_DCR_NATIVE=y 63CONFIG_PPC_DCR_NATIVE=y
58# CONFIG_PPC_DCR_MMIO is not set 64# CONFIG_PPC_DCR_MMIO is not set
59CONFIG_PPC_DCR=y 65CONFIG_PPC_DCR=y
66CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
60CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 67CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
68CONFIG_CONSTRUCTORS=y
61 69
62# 70#
63# General setup 71# General setup
@@ -71,6 +79,7 @@ CONFIG_SWAP=y
71CONFIG_SYSVIPC=y 79CONFIG_SYSVIPC=y
72CONFIG_SYSVIPC_SYSCTL=y 80CONFIG_SYSVIPC_SYSCTL=y
73CONFIG_POSIX_MQUEUE=y 81CONFIG_POSIX_MQUEUE=y
82CONFIG_POSIX_MQUEUE_SYSCTL=y
74# CONFIG_BSD_PROCESS_ACCT is not set 83# CONFIG_BSD_PROCESS_ACCT is not set
75# CONFIG_TASKSTATS is not set 84# CONFIG_TASKSTATS is not set
76# CONFIG_AUDIT is not set 85# CONFIG_AUDIT is not set
@@ -78,11 +87,13 @@ CONFIG_POSIX_MQUEUE=y
78# 87#
79# RCU Subsystem 88# RCU Subsystem
80# 89#
81CONFIG_CLASSIC_RCU=y 90CONFIG_TREE_RCU=y
82# CONFIG_TREE_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
83# CONFIG_PREEMPT_RCU is not set 92# CONFIG_TINY_RCU is not set
93# CONFIG_RCU_TRACE is not set
94CONFIG_RCU_FANOUT=32
95# CONFIG_RCU_FANOUT_EXACT is not set
84# CONFIG_TREE_RCU_TRACE is not set 96# CONFIG_TREE_RCU_TRACE is not set
85# CONFIG_PREEMPT_RCU_TRACE is not set
86# CONFIG_IKCONFIG is not set 97# CONFIG_IKCONFIG is not set
87CONFIG_LOG_BUF_SHIFT=14 98CONFIG_LOG_BUF_SHIFT=14
88# CONFIG_GROUP_SCHED is not set 99# CONFIG_GROUP_SCHED is not set
@@ -93,8 +104,12 @@ CONFIG_SYSFS_DEPRECATED_V2=y
93# CONFIG_NAMESPACES is not set 104# CONFIG_NAMESPACES is not set
94CONFIG_BLK_DEV_INITRD=y 105CONFIG_BLK_DEV_INITRD=y
95CONFIG_INITRAMFS_SOURCE="" 106CONFIG_INITRAMFS_SOURCE=""
107CONFIG_RD_GZIP=y
108# CONFIG_RD_BZIP2 is not set
109# CONFIG_RD_LZMA is not set
96# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 110# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
97CONFIG_SYSCTL=y 111CONFIG_SYSCTL=y
112CONFIG_ANON_INODES=y
98CONFIG_EMBEDDED=y 113CONFIG_EMBEDDED=y
99CONFIG_SYSCTL_SYSCALL=y 114CONFIG_SYSCTL_SYSCALL=y
100CONFIG_KALLSYMS=y 115CONFIG_KALLSYMS=y
@@ -104,19 +119,25 @@ CONFIG_HOTPLUG=y
104CONFIG_PRINTK=y 119CONFIG_PRINTK=y
105CONFIG_BUG=y 120CONFIG_BUG=y
106CONFIG_ELF_CORE=y 121CONFIG_ELF_CORE=y
107CONFIG_COMPAT_BRK=y
108CONFIG_BASE_FULL=y 122CONFIG_BASE_FULL=y
109CONFIG_FUTEX=y 123CONFIG_FUTEX=y
110CONFIG_ANON_INODES=y
111CONFIG_EPOLL=y 124CONFIG_EPOLL=y
112CONFIG_SIGNALFD=y 125CONFIG_SIGNALFD=y
113CONFIG_TIMERFD=y 126CONFIG_TIMERFD=y
114CONFIG_EVENTFD=y 127CONFIG_EVENTFD=y
115CONFIG_SHMEM=y 128CONFIG_SHMEM=y
116CONFIG_AIO=y 129CONFIG_AIO=y
130CONFIG_HAVE_PERF_EVENTS=y
131
132#
133# Kernel Performance Events And Counters
134#
135# CONFIG_PERF_EVENTS is not set
136# CONFIG_PERF_COUNTERS is not set
117CONFIG_VM_EVENT_COUNTERS=y 137CONFIG_VM_EVENT_COUNTERS=y
118CONFIG_PCI_QUIRKS=y 138CONFIG_PCI_QUIRKS=y
119CONFIG_SLUB_DEBUG=y 139CONFIG_SLUB_DEBUG=y
140CONFIG_COMPAT_BRK=y
120# CONFIG_SLAB is not set 141# CONFIG_SLAB is not set
121CONFIG_SLUB=y 142CONFIG_SLUB=y
122# CONFIG_SLOB is not set 143# CONFIG_SLOB is not set
@@ -128,6 +149,14 @@ CONFIG_HAVE_IOREMAP_PROT=y
128CONFIG_HAVE_KPROBES=y 149CONFIG_HAVE_KPROBES=y
129CONFIG_HAVE_KRETPROBES=y 150CONFIG_HAVE_KRETPROBES=y
130CONFIG_HAVE_ARCH_TRACEHOOK=y 151CONFIG_HAVE_ARCH_TRACEHOOK=y
152CONFIG_HAVE_DMA_ATTRS=y
153CONFIG_HAVE_DMA_API_DEBUG=y
154
155#
156# GCOV-based kernel profiling
157#
158# CONFIG_GCOV_KERNEL is not set
159# CONFIG_SLOW_WORK is not set
131# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 160# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
132CONFIG_SLABINFO=y 161CONFIG_SLABINFO=y
133CONFIG_RT_MUTEXES=y 162CONFIG_RT_MUTEXES=y
@@ -139,8 +168,7 @@ CONFIG_MODULE_UNLOAD=y
139# CONFIG_MODVERSIONS is not set 168# CONFIG_MODVERSIONS is not set
140# CONFIG_MODULE_SRCVERSION_ALL is not set 169# CONFIG_MODULE_SRCVERSION_ALL is not set
141CONFIG_BLOCK=y 170CONFIG_BLOCK=y
142CONFIG_LBD=y 171CONFIG_LBDAF=y
143# CONFIG_BLK_DEV_IO_TRACE is not set
144# CONFIG_BLK_DEV_BSG is not set 172# CONFIG_BLK_DEV_BSG is not set
145# CONFIG_BLK_DEV_INTEGRITY is not set 173# CONFIG_BLK_DEV_INTEGRITY is not set
146 174
@@ -148,14 +176,41 @@ CONFIG_LBD=y
148# IO Schedulers 176# IO Schedulers
149# 177#
150CONFIG_IOSCHED_NOOP=y 178CONFIG_IOSCHED_NOOP=y
151CONFIG_IOSCHED_AS=y
152CONFIG_IOSCHED_DEADLINE=y 179CONFIG_IOSCHED_DEADLINE=y
153CONFIG_IOSCHED_CFQ=y 180CONFIG_IOSCHED_CFQ=y
154CONFIG_DEFAULT_AS=y
155# CONFIG_DEFAULT_DEADLINE is not set 181# CONFIG_DEFAULT_DEADLINE is not set
156# CONFIG_DEFAULT_CFQ is not set 182CONFIG_DEFAULT_CFQ=y
157# CONFIG_DEFAULT_NOOP is not set 183# CONFIG_DEFAULT_NOOP is not set
158CONFIG_DEFAULT_IOSCHED="anticipatory" 184CONFIG_DEFAULT_IOSCHED="cfq"
185# CONFIG_INLINE_SPIN_TRYLOCK is not set
186# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
187# CONFIG_INLINE_SPIN_LOCK is not set
188# CONFIG_INLINE_SPIN_LOCK_BH is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
191CONFIG_INLINE_SPIN_UNLOCK=y
192# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
193CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
194# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
195# CONFIG_INLINE_READ_TRYLOCK is not set
196# CONFIG_INLINE_READ_LOCK is not set
197# CONFIG_INLINE_READ_LOCK_BH is not set
198# CONFIG_INLINE_READ_LOCK_IRQ is not set
199# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
200CONFIG_INLINE_READ_UNLOCK=y
201# CONFIG_INLINE_READ_UNLOCK_BH is not set
202CONFIG_INLINE_READ_UNLOCK_IRQ=y
203# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_WRITE_TRYLOCK is not set
205# CONFIG_INLINE_WRITE_LOCK is not set
206# CONFIG_INLINE_WRITE_LOCK_BH is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
209CONFIG_INLINE_WRITE_UNLOCK=y
210# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
211CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
212# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
213# CONFIG_MUTEX_SPIN_ON_OWNER is not set
159# CONFIG_FREEZER is not set 214# CONFIG_FREEZER is not set
160CONFIG_PPC4xx_PCI_EXPRESS=y 215CONFIG_PPC4xx_PCI_EXPRESS=y
161 216
@@ -177,6 +232,7 @@ CONFIG_PPC4xx_PCI_EXPRESS=y
177# CONFIG_CANYONLANDS is not set 232# CONFIG_CANYONLANDS is not set
178# CONFIG_GLACIER is not set 233# CONFIG_GLACIER is not set
179CONFIG_REDWOOD=y 234CONFIG_REDWOOD=y
235# CONFIG_EIGER is not set
180# CONFIG_YOSEMITE is not set 236# CONFIG_YOSEMITE is not set
181# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set 237# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set
182CONFIG_PPC44x_SIMPLE=y 238CONFIG_PPC44x_SIMPLE=y
@@ -219,10 +275,12 @@ CONFIG_BINFMT_ELF=y
219# CONFIG_BINFMT_MISC is not set 275# CONFIG_BINFMT_MISC is not set
220# CONFIG_MATH_EMULATION is not set 276# CONFIG_MATH_EMULATION is not set
221# CONFIG_IOMMU_HELPER is not set 277# CONFIG_IOMMU_HELPER is not set
222CONFIG_PPC_NEED_DMA_SYNC_OPS=y 278# CONFIG_SWIOTLB is not set
223CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 279CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
224CONFIG_ARCH_HAS_WALK_MEMORY=y 280CONFIG_ARCH_HAS_WALK_MEMORY=y
225CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 281CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
282CONFIG_SPARSE_IRQ=y
283CONFIG_MAX_ACTIVE_REGIONS=32
226CONFIG_ARCH_FLATMEM_ENABLE=y 284CONFIG_ARCH_FLATMEM_ENABLE=y
227CONFIG_ARCH_POPULATES_NODE_MAP=y 285CONFIG_ARCH_POPULATES_NODE_MAP=y
228CONFIG_SELECT_MEMORY_MODEL=y 286CONFIG_SELECT_MEMORY_MODEL=y
@@ -238,10 +296,13 @@ CONFIG_PHYS_ADDR_T_64BIT=y
238CONFIG_ZONE_DMA_FLAG=1 296CONFIG_ZONE_DMA_FLAG=1
239CONFIG_BOUNCE=y 297CONFIG_BOUNCE=y
240CONFIG_VIRT_TO_BUS=y 298CONFIG_VIRT_TO_BUS=y
241CONFIG_UNEVICTABLE_LRU=y 299# CONFIG_KSM is not set
300CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
301CONFIG_STDBINUTILS=y
242CONFIG_PPC_4K_PAGES=y 302CONFIG_PPC_4K_PAGES=y
243# CONFIG_PPC_16K_PAGES is not set 303# CONFIG_PPC_16K_PAGES is not set
244# CONFIG_PPC_64K_PAGES is not set 304# CONFIG_PPC_64K_PAGES is not set
305# CONFIG_PPC_256K_PAGES is not set
245CONFIG_FORCE_MAX_ZONEORDER=11 306CONFIG_FORCE_MAX_ZONEORDER=11
246CONFIG_PROC_DEVICETREE=y 307CONFIG_PROC_DEVICETREE=y
247CONFIG_CMDLINE_BOOL=y 308CONFIG_CMDLINE_BOOL=y
@@ -262,12 +323,15 @@ CONFIG_PCI_DOMAINS=y
262CONFIG_PCI_SYSCALL=y 323CONFIG_PCI_SYSCALL=y
263CONFIG_PCIEPORTBUS=y 324CONFIG_PCIEPORTBUS=y
264CONFIG_PCIEAER=y 325CONFIG_PCIEAER=y
326# CONFIG_PCIE_ECRC is not set
327# CONFIG_PCIEAER_INJECT is not set
265# CONFIG_PCIEASPM is not set 328# CONFIG_PCIEASPM is not set
266CONFIG_ARCH_SUPPORTS_MSI=y 329CONFIG_ARCH_SUPPORTS_MSI=y
267# CONFIG_PCI_MSI is not set 330# CONFIG_PCI_MSI is not set
268# CONFIG_PCI_LEGACY is not set 331# CONFIG_PCI_LEGACY is not set
269# CONFIG_PCI_DEBUG is not set 332# CONFIG_PCI_DEBUG is not set
270# CONFIG_PCI_STUB is not set 333# CONFIG_PCI_STUB is not set
334# CONFIG_PCI_IOV is not set
271# CONFIG_PCCARD is not set 335# CONFIG_PCCARD is not set
272# CONFIG_HOTPLUG_PCI is not set 336# CONFIG_HOTPLUG_PCI is not set
273# CONFIG_HAS_RAPIDIO is not set 337# CONFIG_HAS_RAPIDIO is not set
@@ -285,14 +349,12 @@ CONFIG_PAGE_OFFSET=0xc0000000
285CONFIG_KERNEL_START=0xc0000000 349CONFIG_KERNEL_START=0xc0000000
286CONFIG_PHYSICAL_START=0x00000000 350CONFIG_PHYSICAL_START=0x00000000
287CONFIG_TASK_SIZE=0xc0000000 351CONFIG_TASK_SIZE=0xc0000000
288CONFIG_CONSISTENT_START=0xff100000
289CONFIG_CONSISTENT_SIZE=0x00200000 352CONFIG_CONSISTENT_SIZE=0x00200000
290CONFIG_NET=y 353CONFIG_NET=y
291 354
292# 355#
293# Networking options 356# Networking options
294# 357#
295CONFIG_COMPAT_NET_DEV_OPS=y
296CONFIG_PACKET=y 358CONFIG_PACKET=y
297# CONFIG_PACKET_MMAP is not set 359# CONFIG_PACKET_MMAP is not set
298CONFIG_UNIX=y 360CONFIG_UNIX=y
@@ -329,6 +391,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
329# CONFIG_NETFILTER is not set 391# CONFIG_NETFILTER is not set
330# CONFIG_IP_DCCP is not set 392# CONFIG_IP_DCCP is not set
331# CONFIG_IP_SCTP is not set 393# CONFIG_IP_SCTP is not set
394# CONFIG_RDS is not set
332# CONFIG_TIPC is not set 395# CONFIG_TIPC is not set
333# CONFIG_ATM is not set 396# CONFIG_ATM is not set
334# CONFIG_BRIDGE is not set 397# CONFIG_BRIDGE is not set
@@ -342,6 +405,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
342# CONFIG_LAPB is not set 405# CONFIG_LAPB is not set
343# CONFIG_ECONET is not set 406# CONFIG_ECONET is not set
344# CONFIG_WAN_ROUTER is not set 407# CONFIG_WAN_ROUTER is not set
408# CONFIG_PHONET is not set
409# CONFIG_IEEE802154 is not set
345# CONFIG_NET_SCHED is not set 410# CONFIG_NET_SCHED is not set
346# CONFIG_DCB is not set 411# CONFIG_DCB is not set
347 412
@@ -354,13 +419,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
354# CONFIG_IRDA is not set 419# CONFIG_IRDA is not set
355# CONFIG_BT is not set 420# CONFIG_BT is not set
356# CONFIG_AF_RXRPC is not set 421# CONFIG_AF_RXRPC is not set
357# CONFIG_PHONET is not set
358CONFIG_WIRELESS=y 422CONFIG_WIRELESS=y
359# CONFIG_CFG80211 is not set 423# CONFIG_CFG80211 is not set
360CONFIG_WIRELESS_OLD_REGULATORY=y
361# CONFIG_WIRELESS_EXT is not set
362# CONFIG_LIB80211 is not set 424# CONFIG_LIB80211 is not set
363# CONFIG_MAC80211 is not set 425
426#
427# CFG80211 needs to be enabled for MAC80211
428#
364# CONFIG_WIMAX is not set 429# CONFIG_WIMAX is not set
365# CONFIG_RFKILL is not set 430# CONFIG_RFKILL is not set
366# CONFIG_NET_9P is not set 431# CONFIG_NET_9P is not set
@@ -373,6 +438,7 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
373# Generic Driver Options 438# Generic Driver Options
374# 439#
375CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 440CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
441# CONFIG_DEVTMPFS is not set
376CONFIG_STANDALONE=y 442CONFIG_STANDALONE=y
377CONFIG_PREVENT_FIRMWARE_BUILD=y 443CONFIG_PREVENT_FIRMWARE_BUILD=y
378CONFIG_FW_LOADER=y 444CONFIG_FW_LOADER=y
@@ -385,9 +451,9 @@ CONFIG_CONNECTOR=y
385CONFIG_PROC_EVENTS=y 451CONFIG_PROC_EVENTS=y
386CONFIG_MTD=y 452CONFIG_MTD=y
387# CONFIG_MTD_DEBUG is not set 453# CONFIG_MTD_DEBUG is not set
454# CONFIG_MTD_TESTS is not set
388CONFIG_MTD_CONCAT=y 455CONFIG_MTD_CONCAT=y
389CONFIG_MTD_PARTITIONS=y 456CONFIG_MTD_PARTITIONS=y
390# CONFIG_MTD_TESTS is not set
391# CONFIG_MTD_REDBOOT_PARTS is not set 457# CONFIG_MTD_REDBOOT_PARTS is not set
392CONFIG_MTD_CMDLINE_PARTS=y 458CONFIG_MTD_CMDLINE_PARTS=y
393CONFIG_MTD_OF_PARTS=y 459CONFIG_MTD_OF_PARTS=y
@@ -462,7 +528,6 @@ CONFIG_MTD_PHYSMAP_OF=y
462# LPDDR flash memory drivers 528# LPDDR flash memory drivers
463# 529#
464# CONFIG_MTD_LPDDR is not set 530# CONFIG_MTD_LPDDR is not set
465# CONFIG_MTD_QINFO_PROBE is not set
466 531
467# 532#
468# UBI - Unsorted block images 533# UBI - Unsorted block images
@@ -479,6 +544,7 @@ CONFIG_BLK_DEV=y
479# CONFIG_BLK_DEV_UMEM is not set 544# CONFIG_BLK_DEV_UMEM is not set
480# CONFIG_BLK_DEV_COW_COMMON is not set 545# CONFIG_BLK_DEV_COW_COMMON is not set
481# CONFIG_BLK_DEV_LOOP is not set 546# CONFIG_BLK_DEV_LOOP is not set
547# CONFIG_BLK_DEV_DRBD is not set
482# CONFIG_BLK_DEV_NBD is not set 548# CONFIG_BLK_DEV_NBD is not set
483# CONFIG_BLK_DEV_SX8 is not set 549# CONFIG_BLK_DEV_SX8 is not set
484CONFIG_BLK_DEV_RAM=y 550CONFIG_BLK_DEV_RAM=y
@@ -512,10 +578,6 @@ CONFIG_BLK_DEV_SD=y
512# CONFIG_BLK_DEV_SR is not set 578# CONFIG_BLK_DEV_SR is not set
513CONFIG_CHR_DEV_SG=y 579CONFIG_CHR_DEV_SG=y
514# CONFIG_CHR_DEV_SCH is not set 580# CONFIG_CHR_DEV_SCH is not set
515
516#
517# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
518#
519# CONFIG_SCSI_MULTI_LUN is not set 581# CONFIG_SCSI_MULTI_LUN is not set
520# CONFIG_SCSI_CONSTANTS is not set 582# CONFIG_SCSI_CONSTANTS is not set
521# CONFIG_SCSI_LOGGING is not set 583# CONFIG_SCSI_LOGGING is not set
@@ -533,23 +595,30 @@ CONFIG_SCSI_SAS_ATTRS=y
533# CONFIG_SCSI_SRP_ATTRS is not set 595# CONFIG_SCSI_SRP_ATTRS is not set
534CONFIG_SCSI_LOWLEVEL=y 596CONFIG_SCSI_LOWLEVEL=y
535# CONFIG_ISCSI_TCP is not set 597# CONFIG_ISCSI_TCP is not set
598# CONFIG_SCSI_BNX2_ISCSI is not set
599# CONFIG_BE2ISCSI is not set
536# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 600# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
601# CONFIG_SCSI_HPSA is not set
537# CONFIG_SCSI_3W_9XXX is not set 602# CONFIG_SCSI_3W_9XXX is not set
603# CONFIG_SCSI_3W_SAS is not set
538# CONFIG_SCSI_ACARD is not set 604# CONFIG_SCSI_ACARD is not set
539# CONFIG_SCSI_AACRAID is not set 605# CONFIG_SCSI_AACRAID is not set
540# CONFIG_SCSI_AIC7XXX is not set 606# CONFIG_SCSI_AIC7XXX is not set
541# CONFIG_SCSI_AIC7XXX_OLD is not set 607# CONFIG_SCSI_AIC7XXX_OLD is not set
542# CONFIG_SCSI_AIC79XX is not set 608# CONFIG_SCSI_AIC79XX is not set
543# CONFIG_SCSI_AIC94XX is not set 609# CONFIG_SCSI_AIC94XX is not set
610# CONFIG_SCSI_MVSAS is not set
544# CONFIG_SCSI_DPT_I2O is not set 611# CONFIG_SCSI_DPT_I2O is not set
545# CONFIG_SCSI_ADVANSYS is not set 612# CONFIG_SCSI_ADVANSYS is not set
546# CONFIG_SCSI_ARCMSR is not set 613# CONFIG_SCSI_ARCMSR is not set
547# CONFIG_MEGARAID_NEWGEN is not set 614# CONFIG_MEGARAID_NEWGEN is not set
548# CONFIG_MEGARAID_LEGACY is not set 615# CONFIG_MEGARAID_LEGACY is not set
549# CONFIG_MEGARAID_SAS is not set 616# CONFIG_MEGARAID_SAS is not set
617# CONFIG_SCSI_MPT2SAS is not set
550# CONFIG_SCSI_HPTIOP is not set 618# CONFIG_SCSI_HPTIOP is not set
551# CONFIG_SCSI_BUSLOGIC is not set 619# CONFIG_SCSI_BUSLOGIC is not set
552# CONFIG_LIBFC is not set 620# CONFIG_LIBFC is not set
621# CONFIG_LIBFCOE is not set
553# CONFIG_FCOE is not set 622# CONFIG_FCOE is not set
554# CONFIG_SCSI_DMX3191D is not set 623# CONFIG_SCSI_DMX3191D is not set
555# CONFIG_SCSI_EATA is not set 624# CONFIG_SCSI_EATA is not set
@@ -558,7 +627,6 @@ CONFIG_SCSI_LOWLEVEL=y
558# CONFIG_SCSI_IPS is not set 627# CONFIG_SCSI_IPS is not set
559# CONFIG_SCSI_INITIO is not set 628# CONFIG_SCSI_INITIO is not set
560# CONFIG_SCSI_INIA100 is not set 629# CONFIG_SCSI_INIA100 is not set
561# CONFIG_SCSI_MVSAS is not set
562# CONFIG_SCSI_STEX is not set 630# CONFIG_SCSI_STEX is not set
563# CONFIG_SCSI_SYM53C8XX_2 is not set 631# CONFIG_SCSI_SYM53C8XX_2 is not set
564# CONFIG_SCSI_QLOGIC_1280 is not set 632# CONFIG_SCSI_QLOGIC_1280 is not set
@@ -569,8 +637,12 @@ CONFIG_SCSI_LOWLEVEL=y
569# CONFIG_SCSI_DC390T is not set 637# CONFIG_SCSI_DC390T is not set
570# CONFIG_SCSI_NSP32 is not set 638# CONFIG_SCSI_NSP32 is not set
571# CONFIG_SCSI_DEBUG is not set 639# CONFIG_SCSI_DEBUG is not set
640# CONFIG_SCSI_PMCRAID is not set
641# CONFIG_SCSI_PM8001 is not set
572# CONFIG_SCSI_SRP is not set 642# CONFIG_SCSI_SRP is not set
643# CONFIG_SCSI_BFA_FC is not set
573# CONFIG_SCSI_DH is not set 644# CONFIG_SCSI_DH is not set
645# CONFIG_SCSI_OSD_INITIATOR is not set
574# CONFIG_ATA is not set 646# CONFIG_ATA is not set
575# CONFIG_MD is not set 647# CONFIG_MD is not set
576CONFIG_FUSION=y 648CONFIG_FUSION=y
@@ -586,7 +658,11 @@ CONFIG_FUSION_MAX_SGE=128
586# 658#
587 659
588# 660#
589# Enable only one of the two stacks, unless you know what you are doing 661# You can enable one or both FireWire driver stacks.
662#
663
664#
665# See the help texts for more information.
590# 666#
591# CONFIG_FIREWIRE is not set 667# CONFIG_FIREWIRE is not set
592# CONFIG_IEEE1394 is not set 668# CONFIG_IEEE1394 is not set
@@ -614,6 +690,8 @@ CONFIG_NET_ETHERNET=y
614# CONFIG_SUNGEM is not set 690# CONFIG_SUNGEM is not set
615# CONFIG_CASSINI is not set 691# CONFIG_CASSINI is not set
616# CONFIG_NET_VENDOR_3COM is not set 692# CONFIG_NET_VENDOR_3COM is not set
693# CONFIG_ETHOC is not set
694# CONFIG_DNET is not set
617# CONFIG_NET_TULIP is not set 695# CONFIG_NET_TULIP is not set
618# CONFIG_HP100 is not set 696# CONFIG_HP100 is not set
619CONFIG_IBM_NEW_EMAC=y 697CONFIG_IBM_NEW_EMAC=y
@@ -632,7 +710,10 @@ CONFIG_IBM_NEW_EMAC_EMAC4=y
632# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 710# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
633# CONFIG_NET_PCI is not set 711# CONFIG_NET_PCI is not set
634# CONFIG_B44 is not set 712# CONFIG_B44 is not set
713# CONFIG_KS8842 is not set
714# CONFIG_KS8851_MLL is not set
635# CONFIG_ATL2 is not set 715# CONFIG_ATL2 is not set
716# CONFIG_XILINX_EMACLITE is not set
636CONFIG_NETDEV_1000=y 717CONFIG_NETDEV_1000=y
637# CONFIG_ACENIC is not set 718# CONFIG_ACENIC is not set
638# CONFIG_DL2K is not set 719# CONFIG_DL2K is not set
@@ -640,6 +721,7 @@ CONFIG_NETDEV_1000=y
640CONFIG_E1000E=y 721CONFIG_E1000E=y
641# CONFIG_IP1000 is not set 722# CONFIG_IP1000 is not set
642# CONFIG_IGB is not set 723# CONFIG_IGB is not set
724# CONFIG_IGBVF is not set
643# CONFIG_NS83820 is not set 725# CONFIG_NS83820 is not set
644# CONFIG_HAMACHI is not set 726# CONFIG_HAMACHI is not set
645# CONFIG_YELLOWFIN is not set 727# CONFIG_YELLOWFIN is not set
@@ -650,19 +732,21 @@ CONFIG_E1000E=y
650# CONFIG_VIA_VELOCITY is not set 732# CONFIG_VIA_VELOCITY is not set
651# CONFIG_TIGON3 is not set 733# CONFIG_TIGON3 is not set
652# CONFIG_BNX2 is not set 734# CONFIG_BNX2 is not set
735# CONFIG_CNIC is not set
736# CONFIG_MV643XX_ETH is not set
737# CONFIG_XILINX_LL_TEMAC is not set
653# CONFIG_QLA3XXX is not set 738# CONFIG_QLA3XXX is not set
654# CONFIG_ATL1 is not set 739# CONFIG_ATL1 is not set
655# CONFIG_ATL1E is not set 740# CONFIG_ATL1E is not set
741# CONFIG_ATL1C is not set
656# CONFIG_JME is not set 742# CONFIG_JME is not set
657# CONFIG_NETDEV_10000 is not set 743# CONFIG_NETDEV_10000 is not set
658# CONFIG_TR is not set 744# CONFIG_TR is not set
659 745CONFIG_WLAN=y
660# 746# CONFIG_AIRO is not set
661# Wireless LAN 747# CONFIG_ATMEL is not set
662# 748# CONFIG_PRISM54 is not set
663# CONFIG_WLAN_PRE80211 is not set 749# CONFIG_HOSTAP is not set
664# CONFIG_WLAN_80211 is not set
665# CONFIG_IWLWIFI_LEDS is not set
666 750
667# 751#
668# Enable WiMAX (Networking options) to see the WiMAX drivers 752# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -676,6 +760,7 @@ CONFIG_E1000E=y
676# CONFIG_NETCONSOLE is not set 760# CONFIG_NETCONSOLE is not set
677# CONFIG_NETPOLL is not set 761# CONFIG_NETPOLL is not set
678# CONFIG_NET_POLL_CONTROLLER is not set 762# CONFIG_NET_POLL_CONTROLLER is not set
763# CONFIG_VMXNET3 is not set
679# CONFIG_ISDN is not set 764# CONFIG_ISDN is not set
680# CONFIG_PHONE is not set 765# CONFIG_PHONE is not set
681 766
@@ -721,6 +806,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
721# CONFIG_SERIAL_JSM is not set 806# CONFIG_SERIAL_JSM is not set
722CONFIG_SERIAL_OF_PLATFORM=y 807CONFIG_SERIAL_OF_PLATFORM=y
723# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set 808# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
809# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
724CONFIG_UNIX98_PTYS=y 810CONFIG_UNIX98_PTYS=y
725# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 811# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
726CONFIG_LEGACY_PTYS=y 812CONFIG_LEGACY_PTYS=y
@@ -737,6 +823,7 @@ CONFIG_LEGACY_PTY_COUNT=256
737CONFIG_DEVPORT=y 823CONFIG_DEVPORT=y
738CONFIG_I2C=y 824CONFIG_I2C=y
739CONFIG_I2C_BOARDINFO=y 825CONFIG_I2C_BOARDINFO=y
826CONFIG_I2C_COMPAT=y
740CONFIG_I2C_CHARDEV=y 827CONFIG_I2C_CHARDEV=y
741CONFIG_I2C_HELPER_AUTO=y 828CONFIG_I2C_HELPER_AUTO=y
742 829
@@ -777,11 +864,6 @@ CONFIG_I2C_IBM_IIC=y
777# CONFIG_I2C_TAOS_EVM is not set 864# CONFIG_I2C_TAOS_EVM is not set
778 865
779# 866#
780# Graphics adapter I2C/DDC channel drivers
781#
782# CONFIG_I2C_VOODOO3 is not set
783
784#
785# Other I2C/SMBus bus drivers 867# Other I2C/SMBus bus drivers
786# 868#
787# CONFIG_I2C_PCA_PLATFORM is not set 869# CONFIG_I2C_PCA_PLATFORM is not set
@@ -790,25 +872,23 @@ CONFIG_I2C_IBM_IIC=y
790# 872#
791# Miscellaneous I2C Chip support 873# Miscellaneous I2C Chip support
792# 874#
793# CONFIG_DS1682 is not set
794# CONFIG_SENSORS_PCF8574 is not set
795# CONFIG_PCF8575 is not set
796# CONFIG_SENSORS_PCA9539 is not set
797# CONFIG_SENSORS_PCF8591 is not set
798# CONFIG_SENSORS_MAX6875 is not set
799# CONFIG_SENSORS_TSL2550 is not set 875# CONFIG_SENSORS_TSL2550 is not set
800CONFIG_I2C_DEBUG_CORE=y 876CONFIG_I2C_DEBUG_CORE=y
801CONFIG_I2C_DEBUG_ALGO=y 877CONFIG_I2C_DEBUG_ALGO=y
802CONFIG_I2C_DEBUG_BUS=y 878CONFIG_I2C_DEBUG_BUS=y
803CONFIG_I2C_DEBUG_CHIP=y 879CONFIG_I2C_DEBUG_CHIP=y
804# CONFIG_SPI is not set 880# CONFIG_SPI is not set
881
882#
883# PPS support
884#
885# CONFIG_PPS is not set
805CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 886CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
806# CONFIG_GPIOLIB is not set 887# CONFIG_GPIOLIB is not set
807# CONFIG_W1 is not set 888# CONFIG_W1 is not set
808# CONFIG_POWER_SUPPLY is not set 889# CONFIG_POWER_SUPPLY is not set
809# CONFIG_HWMON is not set 890# CONFIG_HWMON is not set
810# CONFIG_THERMAL is not set 891# CONFIG_THERMAL is not set
811# CONFIG_THERMAL_HWMON is not set
812# CONFIG_WATCHDOG is not set 892# CONFIG_WATCHDOG is not set
813CONFIG_SSB_POSSIBLE=y 893CONFIG_SSB_POSSIBLE=y
814 894
@@ -826,31 +906,21 @@ CONFIG_SSB_POSSIBLE=y
826# CONFIG_TWL4030_CORE is not set 906# CONFIG_TWL4030_CORE is not set
827# CONFIG_MFD_TMIO is not set 907# CONFIG_MFD_TMIO is not set
828# CONFIG_PMIC_DA903X is not set 908# CONFIG_PMIC_DA903X is not set
909# CONFIG_PMIC_ADP5520 is not set
829# CONFIG_MFD_WM8400 is not set 910# CONFIG_MFD_WM8400 is not set
911# CONFIG_MFD_WM831X is not set
830# CONFIG_MFD_WM8350_I2C is not set 912# CONFIG_MFD_WM8350_I2C is not set
831# CONFIG_MFD_PCF50633 is not set 913# CONFIG_MFD_PCF50633 is not set
914# CONFIG_AB3100_CORE is not set
915# CONFIG_MFD_88PM8607 is not set
832# CONFIG_REGULATOR is not set 916# CONFIG_REGULATOR is not set
833 917# CONFIG_MEDIA_SUPPORT is not set
834#
835# Multimedia devices
836#
837
838#
839# Multimedia core support
840#
841# CONFIG_VIDEO_DEV is not set
842# CONFIG_DVB_CORE is not set
843# CONFIG_VIDEO_MEDIA is not set
844
845#
846# Multimedia drivers
847#
848CONFIG_DAB=y
849 918
850# 919#
851# Graphics support 920# Graphics support
852# 921#
853# CONFIG_AGP is not set 922# CONFIG_AGP is not set
923CONFIG_VGA_ARB=y
854# CONFIG_DRM is not set 924# CONFIG_DRM is not set
855# CONFIG_VGASTATE is not set 925# CONFIG_VGASTATE is not set
856CONFIG_VIDEO_OUTPUT_CONTROL=m 926CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -876,7 +946,12 @@ CONFIG_DMADEVICES=y
876# 946#
877# DMA Devices 947# DMA Devices
878# 948#
949# CONFIG_AUXDISPLAY is not set
879# CONFIG_UIO is not set 950# CONFIG_UIO is not set
951
952#
953# TI VLYNQ
954#
880# CONFIG_STAGING is not set 955# CONFIG_STAGING is not set
881 956
882# 957#
@@ -887,14 +962,17 @@ CONFIG_EXT2_FS=y
887# CONFIG_EXT2_FS_XIP is not set 962# CONFIG_EXT2_FS_XIP is not set
888# CONFIG_EXT3_FS is not set 963# CONFIG_EXT3_FS is not set
889# CONFIG_EXT4_FS is not set 964# CONFIG_EXT4_FS is not set
965CONFIG_EXT4_USE_FOR_EXT23=y
890# CONFIG_REISERFS_FS is not set 966# CONFIG_REISERFS_FS is not set
891# CONFIG_JFS_FS is not set 967# CONFIG_JFS_FS is not set
892# CONFIG_FS_POSIX_ACL is not set 968# CONFIG_FS_POSIX_ACL is not set
893CONFIG_FILE_LOCKING=y
894# CONFIG_XFS_FS is not set 969# CONFIG_XFS_FS is not set
895# CONFIG_GFS2_FS is not set 970# CONFIG_GFS2_FS is not set
896# CONFIG_OCFS2_FS is not set 971# CONFIG_OCFS2_FS is not set
897# CONFIG_BTRFS_FS is not set 972# CONFIG_BTRFS_FS is not set
973# CONFIG_NILFS2_FS is not set
974CONFIG_FILE_LOCKING=y
975CONFIG_FSNOTIFY=y
898CONFIG_DNOTIFY=y 976CONFIG_DNOTIFY=y
899CONFIG_INOTIFY=y 977CONFIG_INOTIFY=y
900CONFIG_INOTIFY_USER=y 978CONFIG_INOTIFY_USER=y
@@ -904,6 +982,11 @@ CONFIG_INOTIFY_USER=y
904# CONFIG_FUSE_FS is not set 982# CONFIG_FUSE_FS is not set
905 983
906# 984#
985# Caches
986#
987# CONFIG_FSCACHE is not set
988
989#
907# CD-ROM/DVD Filesystems 990# CD-ROM/DVD Filesystems
908# 991#
909# CONFIG_ISO9660_FS is not set 992# CONFIG_ISO9660_FS is not set
@@ -958,7 +1041,6 @@ CONFIG_LOCKD=y
958CONFIG_LOCKD_V4=y 1041CONFIG_LOCKD_V4=y
959CONFIG_NFS_COMMON=y 1042CONFIG_NFS_COMMON=y
960CONFIG_SUNRPC=y 1043CONFIG_SUNRPC=y
961# CONFIG_SUNRPC_REGISTER_V4 is not set
962# CONFIG_RPCSEC_GSS_KRB5 is not set 1044# CONFIG_RPCSEC_GSS_KRB5 is not set
963# CONFIG_RPCSEC_GSS_SPKM3 is not set 1045# CONFIG_RPCSEC_GSS_SPKM3 is not set
964# CONFIG_SMB_FS is not set 1046# CONFIG_SMB_FS is not set
@@ -974,6 +1056,7 @@ CONFIG_SUNRPC=y
974CONFIG_MSDOS_PARTITION=y 1056CONFIG_MSDOS_PARTITION=y
975# CONFIG_NLS is not set 1057# CONFIG_NLS is not set
976# CONFIG_DLM is not set 1058# CONFIG_DLM is not set
1059# CONFIG_BINARY_PRINTF is not set
977 1060
978# 1061#
979# Library routines 1062# Library routines
@@ -988,11 +1071,13 @@ CONFIG_CRC32=y
988# CONFIG_CRC7 is not set 1071# CONFIG_CRC7 is not set
989# CONFIG_LIBCRC32C is not set 1072# CONFIG_LIBCRC32C is not set
990CONFIG_ZLIB_INFLATE=y 1073CONFIG_ZLIB_INFLATE=y
991CONFIG_PLIST=y 1074CONFIG_DECOMPRESS_GZIP=y
992CONFIG_HAS_IOMEM=y 1075CONFIG_HAS_IOMEM=y
993CONFIG_HAS_IOPORT=y 1076CONFIG_HAS_IOPORT=y
994CONFIG_HAS_DMA=y 1077CONFIG_HAS_DMA=y
995CONFIG_HAVE_LMB=y 1078CONFIG_HAVE_LMB=y
1079CONFIG_NLATTR=y
1080CONFIG_GENERIC_ATOMIC64=y
996 1081
997# 1082#
998# Kernel hacking 1083# Kernel hacking
@@ -1002,6 +1087,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1002CONFIG_ENABLE_MUST_CHECK=y 1087CONFIG_ENABLE_MUST_CHECK=y
1003CONFIG_FRAME_WARN=1024 1088CONFIG_FRAME_WARN=1024
1004CONFIG_MAGIC_SYSRQ=y 1089CONFIG_MAGIC_SYSRQ=y
1090# CONFIG_STRIP_ASM_SYMS is not set
1005# CONFIG_UNUSED_SYMBOLS is not set 1091# CONFIG_UNUSED_SYMBOLS is not set
1006CONFIG_DEBUG_FS=y 1092CONFIG_DEBUG_FS=y
1007# CONFIG_HEADERS_CHECK is not set 1093# CONFIG_HEADERS_CHECK is not set
@@ -1010,16 +1096,23 @@ CONFIG_DEBUG_KERNEL=y
1010CONFIG_DETECT_SOFTLOCKUP=y 1096CONFIG_DETECT_SOFTLOCKUP=y
1011# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1097# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1012CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1098CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1099CONFIG_DETECT_HUNG_TASK=y
1100# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1101CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1013CONFIG_SCHED_DEBUG=y 1102CONFIG_SCHED_DEBUG=y
1014# CONFIG_SCHEDSTATS is not set 1103# CONFIG_SCHEDSTATS is not set
1015# CONFIG_TIMER_STATS is not set 1104# CONFIG_TIMER_STATS is not set
1016# CONFIG_DEBUG_OBJECTS is not set 1105# CONFIG_DEBUG_OBJECTS is not set
1017# CONFIG_SLUB_DEBUG_ON is not set 1106# CONFIG_SLUB_DEBUG_ON is not set
1018# CONFIG_SLUB_STATS is not set 1107# CONFIG_SLUB_STATS is not set
1108# CONFIG_DEBUG_KMEMLEAK is not set
1019# CONFIG_DEBUG_RT_MUTEXES is not set 1109# CONFIG_DEBUG_RT_MUTEXES is not set
1020# CONFIG_RT_MUTEX_TESTER is not set 1110# CONFIG_RT_MUTEX_TESTER is not set
1021# CONFIG_DEBUG_SPINLOCK is not set 1111# CONFIG_DEBUG_SPINLOCK is not set
1022# CONFIG_DEBUG_MUTEXES is not set 1112# CONFIG_DEBUG_MUTEXES is not set
1113# CONFIG_DEBUG_LOCK_ALLOC is not set
1114# CONFIG_PROVE_LOCKING is not set
1115# CONFIG_LOCK_STAT is not set
1023# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1116# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1024# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1117# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1025# CONFIG_DEBUG_KOBJECT is not set 1118# CONFIG_DEBUG_KOBJECT is not set
@@ -1031,35 +1124,45 @@ CONFIG_SCHED_DEBUG=y
1031# CONFIG_DEBUG_LIST is not set 1124# CONFIG_DEBUG_LIST is not set
1032# CONFIG_DEBUG_SG is not set 1125# CONFIG_DEBUG_SG is not set
1033# CONFIG_DEBUG_NOTIFIERS is not set 1126# CONFIG_DEBUG_NOTIFIERS is not set
1034# CONFIG_BOOT_PRINTK_DELAY is not set 1127# CONFIG_DEBUG_CREDENTIALS is not set
1035# CONFIG_RCU_TORTURE_TEST is not set 1128# CONFIG_RCU_TORTURE_TEST is not set
1036# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1129# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1037# CONFIG_BACKTRACE_SELF_TEST is not set 1130# CONFIG_BACKTRACE_SELF_TEST is not set
1038# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1131# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1132# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1039# CONFIG_FAULT_INJECTION is not set 1133# CONFIG_FAULT_INJECTION is not set
1040# CONFIG_LATENCYTOP is not set 1134# CONFIG_LATENCYTOP is not set
1041CONFIG_SYSCTL_SYSCALL_CHECK=y 1135CONFIG_SYSCTL_SYSCALL_CHECK=y
1136# CONFIG_DEBUG_PAGEALLOC is not set
1042CONFIG_HAVE_FUNCTION_TRACER=y 1137CONFIG_HAVE_FUNCTION_TRACER=y
1138CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1043CONFIG_HAVE_DYNAMIC_FTRACE=y 1139CONFIG_HAVE_DYNAMIC_FTRACE=y
1044CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1140CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1045 1141CONFIG_TRACING_SUPPORT=y
1046# 1142CONFIG_FTRACE=y
1047# Tracers
1048#
1049# CONFIG_FUNCTION_TRACER is not set 1143# CONFIG_FUNCTION_TRACER is not set
1144# CONFIG_IRQSOFF_TRACER is not set
1050# CONFIG_SCHED_TRACER is not set 1145# CONFIG_SCHED_TRACER is not set
1051# CONFIG_CONTEXT_SWITCH_TRACER is not set 1146# CONFIG_ENABLE_DEFAULT_TRACERS is not set
1052# CONFIG_BOOT_TRACER is not set 1147# CONFIG_BOOT_TRACER is not set
1053# CONFIG_TRACE_BRANCH_PROFILING is not set 1148CONFIG_BRANCH_PROFILE_NONE=y
1149# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1150# CONFIG_PROFILE_ALL_BRANCHES is not set
1054# CONFIG_STACK_TRACER is not set 1151# CONFIG_STACK_TRACER is not set
1055# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1152# CONFIG_KMEMTRACE is not set
1153# CONFIG_WORKQUEUE_TRACER is not set
1154# CONFIG_BLK_DEV_IO_TRACE is not set
1155# CONFIG_DYNAMIC_DEBUG is not set
1156# CONFIG_DMA_API_DEBUG is not set
1056# CONFIG_SAMPLES is not set 1157# CONFIG_SAMPLES is not set
1057CONFIG_HAVE_ARCH_KGDB=y 1158CONFIG_HAVE_ARCH_KGDB=y
1058# CONFIG_KGDB is not set 1159# CONFIG_KGDB is not set
1160# CONFIG_PPC_DISABLE_WERROR is not set
1161CONFIG_PPC_WERROR=y
1059CONFIG_PRINT_STACK_DEPTH=64 1162CONFIG_PRINT_STACK_DEPTH=64
1060# CONFIG_DEBUG_STACKOVERFLOW is not set 1163# CONFIG_DEBUG_STACKOVERFLOW is not set
1061# CONFIG_DEBUG_STACK_USAGE is not set 1164# CONFIG_DEBUG_STACK_USAGE is not set
1062# CONFIG_DEBUG_PAGEALLOC is not set 1165# CONFIG_PPC_EMULATED_STATS is not set
1063# CONFIG_CODE_PATCHING_SELFTEST is not set 1166# CONFIG_CODE_PATCHING_SELFTEST is not set
1064# CONFIG_FTR_FIXUP_SELFTEST is not set 1167# CONFIG_FTR_FIXUP_SELFTEST is not set
1065# CONFIG_MSI_BITMAP_SELFTEST is not set 1168# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -1075,13 +1178,16 @@ CONFIG_PRINT_STACK_DEPTH=64
1075# CONFIG_KEYS is not set 1178# CONFIG_KEYS is not set
1076# CONFIG_SECURITY is not set 1179# CONFIG_SECURITY is not set
1077# CONFIG_SECURITYFS is not set 1180# CONFIG_SECURITYFS is not set
1078# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1181# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1182# CONFIG_DEFAULT_SECURITY_SMACK is not set
1183# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1184CONFIG_DEFAULT_SECURITY_DAC=y
1185CONFIG_DEFAULT_SECURITY=""
1079CONFIG_CRYPTO=y 1186CONFIG_CRYPTO=y
1080 1187
1081# 1188#
1082# Crypto core or helper 1189# Crypto core or helper
1083# 1190#
1084# CONFIG_CRYPTO_FIPS is not set
1085CONFIG_CRYPTO_ALGAPI=y 1191CONFIG_CRYPTO_ALGAPI=y
1086CONFIG_CRYPTO_ALGAPI2=y 1192CONFIG_CRYPTO_ALGAPI2=y
1087CONFIG_CRYPTO_AEAD=y 1193CONFIG_CRYPTO_AEAD=y
@@ -1092,10 +1198,12 @@ CONFIG_CRYPTO_HASH=y
1092CONFIG_CRYPTO_HASH2=y 1198CONFIG_CRYPTO_HASH2=y
1093CONFIG_CRYPTO_RNG=y 1199CONFIG_CRYPTO_RNG=y
1094CONFIG_CRYPTO_RNG2=y 1200CONFIG_CRYPTO_RNG2=y
1201CONFIG_CRYPTO_PCOMP=y
1095CONFIG_CRYPTO_MANAGER=y 1202CONFIG_CRYPTO_MANAGER=y
1096CONFIG_CRYPTO_MANAGER2=y 1203CONFIG_CRYPTO_MANAGER2=y
1097CONFIG_CRYPTO_GF128MUL=y 1204CONFIG_CRYPTO_GF128MUL=y
1098# CONFIG_CRYPTO_NULL is not set 1205# CONFIG_CRYPTO_NULL is not set
1206CONFIG_CRYPTO_WORKQUEUE=y
1099CONFIG_CRYPTO_CRYPTD=y 1207CONFIG_CRYPTO_CRYPTD=y
1100CONFIG_CRYPTO_AUTHENC=y 1208CONFIG_CRYPTO_AUTHENC=y
1101# CONFIG_CRYPTO_TEST is not set 1209# CONFIG_CRYPTO_TEST is not set
@@ -1123,11 +1231,13 @@ CONFIG_CRYPTO_XTS=y
1123# 1231#
1124CONFIG_CRYPTO_HMAC=y 1232CONFIG_CRYPTO_HMAC=y
1125CONFIG_CRYPTO_XCBC=y 1233CONFIG_CRYPTO_XCBC=y
1234# CONFIG_CRYPTO_VMAC is not set
1126 1235
1127# 1236#
1128# Digest 1237# Digest
1129# 1238#
1130# CONFIG_CRYPTO_CRC32C is not set 1239# CONFIG_CRYPTO_CRC32C is not set
1240CONFIG_CRYPTO_GHASH=y
1131CONFIG_CRYPTO_MD4=y 1241CONFIG_CRYPTO_MD4=y
1132CONFIG_CRYPTO_MD5=y 1242CONFIG_CRYPTO_MD5=y
1133# CONFIG_CRYPTO_MICHAEL_MIC is not set 1243# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1164,6 +1274,7 @@ CONFIG_CRYPTO_DES=y
1164# Compression 1274# Compression
1165# 1275#
1166# CONFIG_CRYPTO_DEFLATE is not set 1276# CONFIG_CRYPTO_DEFLATE is not set
1277# CONFIG_CRYPTO_ZLIB is not set
1167# CONFIG_CRYPTO_LZO is not set 1278# CONFIG_CRYPTO_LZO is not set
1168 1279
1169# 1280#
@@ -1172,5 +1283,6 @@ CONFIG_CRYPTO_DES=y
1172# CONFIG_CRYPTO_ANSI_CPRNG is not set 1283# CONFIG_CRYPTO_ANSI_CPRNG is not set
1173CONFIG_CRYPTO_HW=y 1284CONFIG_CRYPTO_HW=y
1174# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1285# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1286# CONFIG_CRYPTO_DEV_PPC4XX is not set
1175# CONFIG_PPC_CLOCK is not set 1287# CONFIG_PPC_CLOCK is not set
1176# CONFIG_VIRTUALIZATION is not set 1288# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/44x/sam440ep_defconfig b/arch/powerpc/configs/44x/sam440ep_defconfig
index e14e89a5e06b..886cb6aa6432 100644
--- a/arch/powerpc/configs/44x/sam440ep_defconfig
+++ b/arch/powerpc/configs/44x/sam440ep_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.29-rc2 3# Linux kernel version: 2.6.33-rc1
4# Tue Jan 20 08:22:42 2009 4# Mon Jan 4 15:11:24 2010
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#
11# CONFIG_6xx is not set 11# CONFIG_PPC_BOOK3S_32 is not set
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
@@ -20,6 +20,7 @@ CONFIG_BOOKE=y
20CONFIG_PTE_64BIT=y 20CONFIG_PTE_64BIT=y
21CONFIG_PHYS_64BIT=y 21CONFIG_PHYS_64BIT=y
22CONFIG_PPC_MMU_NOHASH=y 22CONFIG_PPC_MMU_NOHASH=y
23CONFIG_PPC_MMU_NOHASH_32=y
23# CONFIG_PPC_MM_SLICES is not set 24# CONFIG_PPC_MM_SLICES is not set
24CONFIG_NOT_COHERENT_CACHE=y 25CONFIG_NOT_COHERENT_CACHE=y
25CONFIG_PPC32=y 26CONFIG_PPC32=y
@@ -31,15 +32,18 @@ CONFIG_GENERIC_TIME=y
31CONFIG_GENERIC_TIME_VSYSCALL=y 32CONFIG_GENERIC_TIME_VSYSCALL=y
32CONFIG_GENERIC_CLOCKEVENTS=y 33CONFIG_GENERIC_CLOCKEVENTS=y
33CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
34# 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
35CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
36CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
37CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
38CONFIG_LOCKDEP_SUPPORT=y 43CONFIG_LOCKDEP_SUPPORT=y
39CONFIG_RWSEM_XCHGADD_ALGORITHM=y 44CONFIG_RWSEM_XCHGADD_ALGORITHM=y
40CONFIG_ARCH_HAS_ILOG2_U32=y 45CONFIG_ARCH_HAS_ILOG2_U32=y
41CONFIG_GENERIC_HWEIGHT=y 46CONFIG_GENERIC_HWEIGHT=y
42CONFIG_GENERIC_CALIBRATE_DELAY=y
43CONFIG_GENERIC_FIND_NEXT_BIT=y 47CONFIG_GENERIC_FIND_NEXT_BIT=y
44# CONFIG_ARCH_NO_VIRT_TO_BUS is not set 48# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
45CONFIG_PPC=y 49CONFIG_PPC=y
@@ -53,11 +57,15 @@ CONFIG_PPC_UDBG_16550=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
56# CONFIG_DEFAULT_UIMAGE is not set 61# CONFIG_DEFAULT_UIMAGE is not set
62CONFIG_ARCH_HIBERNATION_POSSIBLE=y
57CONFIG_PPC_DCR_NATIVE=y 63CONFIG_PPC_DCR_NATIVE=y
58# CONFIG_PPC_DCR_MMIO is not set 64# CONFIG_PPC_DCR_MMIO is not set
59CONFIG_PPC_DCR=y 65CONFIG_PPC_DCR=y
66CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
60CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 67CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
68CONFIG_CONSTRUCTORS=y
61 69
62# 70#
63# General setup 71# General setup
@@ -71,9 +79,21 @@ CONFIG_SWAP=y
71CONFIG_SYSVIPC=y 79CONFIG_SYSVIPC=y
72CONFIG_SYSVIPC_SYSCTL=y 80CONFIG_SYSVIPC_SYSCTL=y
73CONFIG_POSIX_MQUEUE=y 81CONFIG_POSIX_MQUEUE=y
82CONFIG_POSIX_MQUEUE_SYSCTL=y
74# CONFIG_BSD_PROCESS_ACCT is not set 83# CONFIG_BSD_PROCESS_ACCT is not set
75# CONFIG_TASKSTATS is not set 84# CONFIG_TASKSTATS is not set
76# CONFIG_AUDIT is not set 85# CONFIG_AUDIT is not set
86
87#
88# RCU Subsystem
89#
90CONFIG_TREE_RCU=y
91# CONFIG_TREE_PREEMPT_RCU is not set
92# CONFIG_TINY_RCU is not set
93# CONFIG_RCU_TRACE is not set
94CONFIG_RCU_FANOUT=32
95# CONFIG_RCU_FANOUT_EXACT is not set
96# CONFIG_TREE_RCU_TRACE is not set
77CONFIG_IKCONFIG=y 97CONFIG_IKCONFIG=y
78# CONFIG_IKCONFIG_PROC is not set 98# CONFIG_IKCONFIG_PROC is not set
79CONFIG_LOG_BUF_SHIFT=14 99CONFIG_LOG_BUF_SHIFT=14
@@ -89,8 +109,12 @@ CONFIG_SYSFS_DEPRECATED_V2=y
89# CONFIG_NAMESPACES is not set 109# CONFIG_NAMESPACES is not set
90CONFIG_BLK_DEV_INITRD=y 110CONFIG_BLK_DEV_INITRD=y
91CONFIG_INITRAMFS_SOURCE="" 111CONFIG_INITRAMFS_SOURCE=""
112CONFIG_RD_GZIP=y
113# CONFIG_RD_BZIP2 is not set
114# CONFIG_RD_LZMA is not set
92# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 115# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
93CONFIG_SYSCTL=y 116CONFIG_SYSCTL=y
117CONFIG_ANON_INODES=y
94CONFIG_EMBEDDED=y 118CONFIG_EMBEDDED=y
95CONFIG_SYSCTL_SYSCALL=y 119CONFIG_SYSCTL_SYSCALL=y
96CONFIG_KALLSYMS=y 120CONFIG_KALLSYMS=y
@@ -99,19 +123,25 @@ CONFIG_HOTPLUG=y
99CONFIG_PRINTK=y 123CONFIG_PRINTK=y
100CONFIG_BUG=y 124CONFIG_BUG=y
101CONFIG_ELF_CORE=y 125CONFIG_ELF_CORE=y
102CONFIG_COMPAT_BRK=y
103CONFIG_BASE_FULL=y 126CONFIG_BASE_FULL=y
104CONFIG_FUTEX=y 127CONFIG_FUTEX=y
105CONFIG_ANON_INODES=y
106CONFIG_EPOLL=y 128CONFIG_EPOLL=y
107CONFIG_SIGNALFD=y 129CONFIG_SIGNALFD=y
108CONFIG_TIMERFD=y 130CONFIG_TIMERFD=y
109CONFIG_EVENTFD=y 131CONFIG_EVENTFD=y
110CONFIG_SHMEM=y 132CONFIG_SHMEM=y
111CONFIG_AIO=y 133CONFIG_AIO=y
134CONFIG_HAVE_PERF_EVENTS=y
135
136#
137# Kernel Performance Events And Counters
138#
139# CONFIG_PERF_EVENTS is not set
140# CONFIG_PERF_COUNTERS is not set
112CONFIG_VM_EVENT_COUNTERS=y 141CONFIG_VM_EVENT_COUNTERS=y
113CONFIG_PCI_QUIRKS=y 142CONFIG_PCI_QUIRKS=y
114CONFIG_SLUB_DEBUG=y 143CONFIG_SLUB_DEBUG=y
144CONFIG_COMPAT_BRK=y
115# CONFIG_SLAB is not set 145# CONFIG_SLAB is not set
116CONFIG_SLUB=y 146CONFIG_SLUB=y
117# CONFIG_SLOB is not set 147# CONFIG_SLOB is not set
@@ -123,6 +153,13 @@ CONFIG_HAVE_IOREMAP_PROT=y
123CONFIG_HAVE_KPROBES=y 153CONFIG_HAVE_KPROBES=y
124CONFIG_HAVE_KRETPROBES=y 154CONFIG_HAVE_KRETPROBES=y
125CONFIG_HAVE_ARCH_TRACEHOOK=y 155CONFIG_HAVE_ARCH_TRACEHOOK=y
156CONFIG_HAVE_DMA_ATTRS=y
157CONFIG_HAVE_DMA_API_DEBUG=y
158
159#
160# GCOV-based kernel profiling
161#
162# CONFIG_SLOW_WORK is not set
126# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 163# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
127CONFIG_SLABINFO=y 164CONFIG_SLABINFO=y
128CONFIG_RT_MUTEXES=y 165CONFIG_RT_MUTEXES=y
@@ -134,8 +171,7 @@ CONFIG_MODULE_UNLOAD=y
134# CONFIG_MODVERSIONS is not set 171# CONFIG_MODVERSIONS is not set
135# CONFIG_MODULE_SRCVERSION_ALL is not set 172# CONFIG_MODULE_SRCVERSION_ALL is not set
136CONFIG_BLOCK=y 173CONFIG_BLOCK=y
137# CONFIG_LBD is not set 174CONFIG_LBDAF=y
138# CONFIG_BLK_DEV_IO_TRACE is not set
139# CONFIG_BLK_DEV_BSG is not set 175# CONFIG_BLK_DEV_BSG is not set
140# CONFIG_BLK_DEV_INTEGRITY is not set 176# CONFIG_BLK_DEV_INTEGRITY is not set
141 177
@@ -143,19 +179,41 @@ CONFIG_BLOCK=y
143# IO Schedulers 179# IO Schedulers
144# 180#
145CONFIG_IOSCHED_NOOP=y 181CONFIG_IOSCHED_NOOP=y
146CONFIG_IOSCHED_AS=y
147# CONFIG_IOSCHED_DEADLINE is not set 182# CONFIG_IOSCHED_DEADLINE is not set
148# CONFIG_IOSCHED_CFQ is not set 183# CONFIG_IOSCHED_CFQ is not set
149CONFIG_DEFAULT_AS=y
150# CONFIG_DEFAULT_DEADLINE is not set 184# CONFIG_DEFAULT_DEADLINE is not set
151# CONFIG_DEFAULT_CFQ is not set 185# CONFIG_DEFAULT_CFQ is not set
152# CONFIG_DEFAULT_NOOP is not set 186CONFIG_DEFAULT_NOOP=y
153CONFIG_DEFAULT_IOSCHED="anticipatory" 187CONFIG_DEFAULT_IOSCHED="noop"
154CONFIG_CLASSIC_RCU=y 188# CONFIG_INLINE_SPIN_TRYLOCK is not set
155# CONFIG_TREE_RCU is not set 189# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
156# CONFIG_PREEMPT_RCU is not set 190# CONFIG_INLINE_SPIN_LOCK is not set
157# CONFIG_TREE_RCU_TRACE is not set 191# CONFIG_INLINE_SPIN_LOCK_BH is not set
158# CONFIG_PREEMPT_RCU_TRACE is not set 192# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
193# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
194CONFIG_INLINE_SPIN_UNLOCK=y
195# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
196CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
197# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
198# CONFIG_INLINE_READ_TRYLOCK is not set
199# CONFIG_INLINE_READ_LOCK is not set
200# CONFIG_INLINE_READ_LOCK_BH is not set
201# CONFIG_INLINE_READ_LOCK_IRQ is not set
202# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
203CONFIG_INLINE_READ_UNLOCK=y
204# CONFIG_INLINE_READ_UNLOCK_BH is not set
205CONFIG_INLINE_READ_UNLOCK_IRQ=y
206# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
207# CONFIG_INLINE_WRITE_TRYLOCK is not set
208# CONFIG_INLINE_WRITE_LOCK is not set
209# CONFIG_INLINE_WRITE_LOCK_BH is not set
210# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
211# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
212CONFIG_INLINE_WRITE_UNLOCK=y
213# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
214CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
215# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
216# CONFIG_MUTEX_SPIN_ON_OWNER is not set
159# CONFIG_FREEZER is not set 217# CONFIG_FREEZER is not set
160# CONFIG_PPC4xx_PCI_EXPRESS is not set 218# CONFIG_PPC4xx_PCI_EXPRESS is not set
161 219
@@ -176,6 +234,8 @@ CONFIG_SAM440EP=y
176# CONFIG_ARCHES is not set 234# CONFIG_ARCHES is not set
177# CONFIG_CANYONLANDS is not set 235# CONFIG_CANYONLANDS is not set
178# CONFIG_GLACIER is not set 236# CONFIG_GLACIER is not set
237# CONFIG_REDWOOD is not set
238# CONFIG_EIGER is not set
179# CONFIG_YOSEMITE is not set 239# CONFIG_YOSEMITE is not set
180# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set 240# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set
181# CONFIG_PPC44x_SIMPLE is not set 241# CONFIG_PPC44x_SIMPLE is not set
@@ -218,10 +278,12 @@ CONFIG_BINFMT_ELF=y
218# CONFIG_BINFMT_MISC is not set 278# CONFIG_BINFMT_MISC is not set
219# CONFIG_MATH_EMULATION is not set 279# CONFIG_MATH_EMULATION is not set
220# CONFIG_IOMMU_HELPER is not set 280# CONFIG_IOMMU_HELPER is not set
221CONFIG_PPC_NEED_DMA_SYNC_OPS=y 281# CONFIG_SWIOTLB is not set
222CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 282CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
223CONFIG_ARCH_HAS_WALK_MEMORY=y 283CONFIG_ARCH_HAS_WALK_MEMORY=y
224CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 284CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
285CONFIG_SPARSE_IRQ=y
286CONFIG_MAX_ACTIVE_REGIONS=32
225CONFIG_ARCH_FLATMEM_ENABLE=y 287CONFIG_ARCH_FLATMEM_ENABLE=y
226CONFIG_ARCH_POPULATES_NODE_MAP=y 288CONFIG_ARCH_POPULATES_NODE_MAP=y
227CONFIG_SELECT_MEMORY_MODEL=y 289CONFIG_SELECT_MEMORY_MODEL=y
@@ -237,10 +299,13 @@ CONFIG_PHYS_ADDR_T_64BIT=y
237CONFIG_ZONE_DMA_FLAG=1 299CONFIG_ZONE_DMA_FLAG=1
238CONFIG_BOUNCE=y 300CONFIG_BOUNCE=y
239CONFIG_VIRT_TO_BUS=y 301CONFIG_VIRT_TO_BUS=y
240CONFIG_UNEVICTABLE_LRU=y 302# CONFIG_KSM is not set
303CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
304CONFIG_STDBINUTILS=y
241CONFIG_PPC_4K_PAGES=y 305CONFIG_PPC_4K_PAGES=y
242# CONFIG_PPC_16K_PAGES is not set 306# CONFIG_PPC_16K_PAGES is not set
243# CONFIG_PPC_64K_PAGES is not set 307# CONFIG_PPC_64K_PAGES is not set
308# CONFIG_PPC_256K_PAGES is not set
244CONFIG_FORCE_MAX_ZONEORDER=11 309CONFIG_FORCE_MAX_ZONEORDER=11
245CONFIG_PROC_DEVICETREE=y 310CONFIG_PROC_DEVICETREE=y
246CONFIG_CMDLINE_BOOL=y 311CONFIG_CMDLINE_BOOL=y
@@ -264,6 +329,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
264# CONFIG_PCI_MSI is not set 329# CONFIG_PCI_MSI is not set
265# CONFIG_PCI_LEGACY is not set 330# CONFIG_PCI_LEGACY is not set
266# CONFIG_PCI_STUB is not set 331# CONFIG_PCI_STUB is not set
332# CONFIG_PCI_IOV is not set
267# CONFIG_PCCARD is not set 333# CONFIG_PCCARD is not set
268# CONFIG_HOTPLUG_PCI is not set 334# CONFIG_HOTPLUG_PCI is not set
269# CONFIG_HAS_RAPIDIO is not set 335# CONFIG_HAS_RAPIDIO is not set
@@ -281,14 +347,12 @@ CONFIG_PAGE_OFFSET=0xc0000000
281CONFIG_KERNEL_START=0xc0000000 347CONFIG_KERNEL_START=0xc0000000
282CONFIG_PHYSICAL_START=0x00000000 348CONFIG_PHYSICAL_START=0x00000000
283CONFIG_TASK_SIZE=0xc0000000 349CONFIG_TASK_SIZE=0xc0000000
284CONFIG_CONSISTENT_START=0xff100000
285CONFIG_CONSISTENT_SIZE=0x00200000 350CONFIG_CONSISTENT_SIZE=0x00200000
286CONFIG_NET=y 351CONFIG_NET=y
287 352
288# 353#
289# Networking options 354# Networking options
290# 355#
291CONFIG_COMPAT_NET_DEV_OPS=y
292CONFIG_PACKET=y 356CONFIG_PACKET=y
293# CONFIG_PACKET_MMAP is not set 357# CONFIG_PACKET_MMAP is not set
294CONFIG_UNIX=y 358CONFIG_UNIX=y
@@ -325,6 +389,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
325# CONFIG_NETFILTER is not set 389# CONFIG_NETFILTER is not set
326# CONFIG_IP_DCCP is not set 390# CONFIG_IP_DCCP is not set
327# CONFIG_IP_SCTP is not set 391# CONFIG_IP_SCTP is not set
392# CONFIG_RDS is not set
328# CONFIG_TIPC is not set 393# CONFIG_TIPC is not set
329# CONFIG_ATM is not set 394# CONFIG_ATM is not set
330# CONFIG_BRIDGE is not set 395# CONFIG_BRIDGE is not set
@@ -338,6 +403,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
338# CONFIG_LAPB is not set 403# CONFIG_LAPB is not set
339# CONFIG_ECONET is not set 404# CONFIG_ECONET is not set
340# CONFIG_WAN_ROUTER is not set 405# CONFIG_WAN_ROUTER is not set
406# CONFIG_PHONET is not set
407# CONFIG_IEEE802154 is not set
341# CONFIG_NET_SCHED is not set 408# CONFIG_NET_SCHED is not set
342# CONFIG_DCB is not set 409# CONFIG_DCB is not set
343 410
@@ -350,8 +417,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
350# CONFIG_IRDA is not set 417# CONFIG_IRDA is not set
351# CONFIG_BT is not set 418# CONFIG_BT is not set
352# CONFIG_AF_RXRPC is not set 419# CONFIG_AF_RXRPC is not set
353# CONFIG_PHONET is not set 420CONFIG_WIRELESS=y
354# CONFIG_WIRELESS is not set 421# CONFIG_CFG80211 is not set
422# CONFIG_LIB80211 is not set
423
424#
425# CFG80211 needs to be enabled for MAC80211
426#
355# CONFIG_WIMAX is not set 427# CONFIG_WIMAX is not set
356# CONFIG_RFKILL is not set 428# CONFIG_RFKILL is not set
357# CONFIG_NET_9P is not set 429# CONFIG_NET_9P is not set
@@ -364,6 +436,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
364# Generic Driver Options 436# Generic Driver Options
365# 437#
366CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 438CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
439# CONFIG_DEVTMPFS is not set
367CONFIG_STANDALONE=y 440CONFIG_STANDALONE=y
368CONFIG_PREVENT_FIRMWARE_BUILD=y 441CONFIG_PREVENT_FIRMWARE_BUILD=y
369CONFIG_FW_LOADER=y 442CONFIG_FW_LOADER=y
@@ -385,6 +458,7 @@ CONFIG_BLK_DEV=y
385# CONFIG_BLK_DEV_COW_COMMON is not set 458# CONFIG_BLK_DEV_COW_COMMON is not set
386CONFIG_BLK_DEV_LOOP=y 459CONFIG_BLK_DEV_LOOP=y
387# CONFIG_BLK_DEV_CRYPTOLOOP is not set 460# CONFIG_BLK_DEV_CRYPTOLOOP is not set
461# CONFIG_BLK_DEV_DRBD is not set
388# CONFIG_BLK_DEV_NBD is not set 462# CONFIG_BLK_DEV_NBD is not set
389# CONFIG_BLK_DEV_SX8 is not set 463# CONFIG_BLK_DEV_SX8 is not set
390# CONFIG_BLK_DEV_UB is not set 464# CONFIG_BLK_DEV_UB is not set
@@ -420,10 +494,6 @@ CONFIG_BLK_DEV_SR=y
420# CONFIG_BLK_DEV_SR_VENDOR is not set 494# CONFIG_BLK_DEV_SR_VENDOR is not set
421CONFIG_CHR_DEV_SG=y 495CONFIG_CHR_DEV_SG=y
422# CONFIG_CHR_DEV_SCH is not set 496# CONFIG_CHR_DEV_SCH is not set
423
424#
425# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
426#
427# CONFIG_SCSI_MULTI_LUN is not set 497# CONFIG_SCSI_MULTI_LUN is not set
428# CONFIG_SCSI_CONSTANTS is not set 498# CONFIG_SCSI_CONSTANTS is not set
429# CONFIG_SCSI_LOGGING is not set 499# CONFIG_SCSI_LOGGING is not set
@@ -440,8 +510,10 @@ CONFIG_SCSI_WAIT_SCAN=m
440# CONFIG_SCSI_SRP_ATTRS is not set 510# CONFIG_SCSI_SRP_ATTRS is not set
441# CONFIG_SCSI_LOWLEVEL is not set 511# CONFIG_SCSI_LOWLEVEL is not set
442# CONFIG_SCSI_DH is not set 512# CONFIG_SCSI_DH is not set
513# CONFIG_SCSI_OSD_INITIATOR is not set
443CONFIG_ATA=y 514CONFIG_ATA=y
444# CONFIG_ATA_NONSTANDARD is not set 515# CONFIG_ATA_NONSTANDARD is not set
516CONFIG_ATA_VERBOSE_ERROR=y
445# CONFIG_SATA_PMP is not set 517# CONFIG_SATA_PMP is not set
446# CONFIG_SATA_AHCI is not set 518# CONFIG_SATA_AHCI is not set
447# CONFIG_SATA_SIL24 is not set 519# CONFIG_SATA_SIL24 is not set
@@ -463,6 +535,7 @@ CONFIG_SATA_SIL=y
463# CONFIG_PATA_ALI is not set 535# CONFIG_PATA_ALI is not set
464# CONFIG_PATA_AMD is not set 536# CONFIG_PATA_AMD is not set
465# CONFIG_PATA_ARTOP is not set 537# CONFIG_PATA_ARTOP is not set
538# CONFIG_PATA_ATP867X is not set
466# CONFIG_PATA_ATIIXP is not set 539# CONFIG_PATA_ATIIXP is not set
467# CONFIG_PATA_CMD640_PCI is not set 540# CONFIG_PATA_CMD640_PCI is not set
468# CONFIG_PATA_CMD64X is not set 541# CONFIG_PATA_CMD64X is not set
@@ -488,14 +561,16 @@ CONFIG_SATA_SIL=y
488# CONFIG_PATA_NS87415 is not set 561# CONFIG_PATA_NS87415 is not set
489# CONFIG_PATA_OPTI is not set 562# CONFIG_PATA_OPTI is not set
490# CONFIG_PATA_OPTIDMA is not set 563# CONFIG_PATA_OPTIDMA is not set
564# CONFIG_PATA_PDC2027X is not set
491# CONFIG_PATA_PDC_OLD is not set 565# CONFIG_PATA_PDC_OLD is not set
492# CONFIG_PATA_RADISYS is not set 566# CONFIG_PATA_RADISYS is not set
567# CONFIG_PATA_RDC is not set
493# CONFIG_PATA_RZ1000 is not set 568# CONFIG_PATA_RZ1000 is not set
494# CONFIG_PATA_SC1200 is not set 569# CONFIG_PATA_SC1200 is not set
495# CONFIG_PATA_SERVERWORKS is not set 570# CONFIG_PATA_SERVERWORKS is not set
496# CONFIG_PATA_PDC2027X is not set
497# CONFIG_PATA_SIL680 is not set 571# CONFIG_PATA_SIL680 is not set
498# CONFIG_PATA_SIS is not set 572# CONFIG_PATA_SIS is not set
573# CONFIG_PATA_TOSHIBA is not set
499# CONFIG_PATA_VIA is not set 574# CONFIG_PATA_VIA is not set
500# CONFIG_PATA_WINBOND is not set 575# CONFIG_PATA_WINBOND is not set
501# CONFIG_PATA_PLATFORM is not set 576# CONFIG_PATA_PLATFORM is not set
@@ -508,7 +583,11 @@ CONFIG_SATA_SIL=y
508# 583#
509 584
510# 585#
511# Enable only one of the two stacks, unless you know what you are doing 586# You can enable one or both FireWire driver stacks.
587#
588
589#
590# See the help texts for more information.
512# 591#
513# CONFIG_FIREWIRE is not set 592# CONFIG_FIREWIRE is not set
514# CONFIG_IEEE1394 is not set 593# CONFIG_IEEE1394 is not set
@@ -529,6 +608,8 @@ CONFIG_NET_ETHERNET=y
529# CONFIG_SUNGEM is not set 608# CONFIG_SUNGEM is not set
530# CONFIG_CASSINI is not set 609# CONFIG_CASSINI is not set
531# CONFIG_NET_VENDOR_3COM is not set 610# CONFIG_NET_VENDOR_3COM is not set
611# CONFIG_ETHOC is not set
612# CONFIG_DNET is not set
532# CONFIG_NET_TULIP is not set 613# CONFIG_NET_TULIP is not set
533# CONFIG_HP100 is not set 614# CONFIG_HP100 is not set
534CONFIG_IBM_NEW_EMAC=y 615CONFIG_IBM_NEW_EMAC=y
@@ -547,17 +628,19 @@ CONFIG_IBM_NEW_EMAC_ZMII=y
547# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 628# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
548# CONFIG_NET_PCI is not set 629# CONFIG_NET_PCI is not set
549# CONFIG_B44 is not set 630# CONFIG_B44 is not set
631# CONFIG_KS8842 is not set
632# CONFIG_KS8851_MLL is not set
550# CONFIG_ATL2 is not set 633# CONFIG_ATL2 is not set
634# CONFIG_XILINX_EMACLITE is not set
551# CONFIG_NETDEV_1000 is not set 635# CONFIG_NETDEV_1000 is not set
552# CONFIG_NETDEV_10000 is not set 636# CONFIG_NETDEV_10000 is not set
553# CONFIG_TR is not set 637# CONFIG_TR is not set
554 638CONFIG_WLAN=y
555# 639# CONFIG_AIRO is not set
556# Wireless LAN 640# CONFIG_ATMEL is not set
557# 641# CONFIG_PRISM54 is not set
558# CONFIG_WLAN_PRE80211 is not set 642# CONFIG_USB_ZD1201 is not set
559# CONFIG_WLAN_80211 is not set 643# CONFIG_HOSTAP is not set
560# CONFIG_IWLWIFI_LEDS is not set
561 644
562# 645#
563# Enable WiMAX (Networking options) to see the WiMAX drivers 646# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -580,6 +663,7 @@ CONFIG_IBM_NEW_EMAC_ZMII=y
580# CONFIG_NETCONSOLE is not set 663# CONFIG_NETCONSOLE is not set
581# CONFIG_NETPOLL is not set 664# CONFIG_NETPOLL is not set
582# CONFIG_NET_POLL_CONTROLLER is not set 665# CONFIG_NET_POLL_CONTROLLER is not set
666# CONFIG_VMXNET3 is not set
583# CONFIG_ISDN is not set 667# CONFIG_ISDN is not set
584# CONFIG_PHONE is not set 668# CONFIG_PHONE is not set
585 669
@@ -589,6 +673,7 @@ CONFIG_IBM_NEW_EMAC_ZMII=y
589CONFIG_INPUT=y 673CONFIG_INPUT=y
590CONFIG_INPUT_FF_MEMLESS=m 674CONFIG_INPUT_FF_MEMLESS=m
591# CONFIG_INPUT_POLLDEV is not set 675# CONFIG_INPUT_POLLDEV is not set
676# CONFIG_INPUT_SPARSEKMAP is not set
592 677
593# 678#
594# Userland interfaces 679# Userland interfaces
@@ -605,25 +690,30 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
605# Input Device Drivers 690# Input Device Drivers
606# 691#
607CONFIG_INPUT_KEYBOARD=y 692CONFIG_INPUT_KEYBOARD=y
693# CONFIG_KEYBOARD_ADP5588 is not set
608CONFIG_KEYBOARD_ATKBD=y 694CONFIG_KEYBOARD_ATKBD=y
609# CONFIG_KEYBOARD_SUNKBD is not set 695# CONFIG_QT2160 is not set
610# CONFIG_KEYBOARD_LKKBD is not set 696# CONFIG_KEYBOARD_LKKBD is not set
611# CONFIG_KEYBOARD_XTKBD is not set 697# CONFIG_KEYBOARD_MAX7359 is not set
612# CONFIG_KEYBOARD_NEWTON is not set 698# CONFIG_KEYBOARD_NEWTON is not set
699# CONFIG_KEYBOARD_OPENCORES is not set
613# CONFIG_KEYBOARD_STOWAWAY is not set 700# CONFIG_KEYBOARD_STOWAWAY is not set
701# CONFIG_KEYBOARD_SUNKBD is not set
702# CONFIG_KEYBOARD_XTKBD is not set
614CONFIG_INPUT_MOUSE=y 703CONFIG_INPUT_MOUSE=y
615CONFIG_MOUSE_PS2=y 704CONFIG_MOUSE_PS2=y
616CONFIG_MOUSE_PS2_ALPS=y 705CONFIG_MOUSE_PS2_ALPS=y
617CONFIG_MOUSE_PS2_LOGIPS2PP=y 706CONFIG_MOUSE_PS2_LOGIPS2PP=y
618CONFIG_MOUSE_PS2_SYNAPTICS=y 707CONFIG_MOUSE_PS2_SYNAPTICS=y
619CONFIG_MOUSE_PS2_LIFEBOOK=y
620CONFIG_MOUSE_PS2_TRACKPOINT=y 708CONFIG_MOUSE_PS2_TRACKPOINT=y
621# CONFIG_MOUSE_PS2_ELANTECH is not set 709# CONFIG_MOUSE_PS2_ELANTECH is not set
710# CONFIG_MOUSE_PS2_SENTELIC is not set
622# CONFIG_MOUSE_PS2_TOUCHKIT is not set 711# CONFIG_MOUSE_PS2_TOUCHKIT is not set
623# CONFIG_MOUSE_SERIAL is not set 712# CONFIG_MOUSE_SERIAL is not set
624# CONFIG_MOUSE_APPLETOUCH is not set 713# CONFIG_MOUSE_APPLETOUCH is not set
625# CONFIG_MOUSE_BCM5974 is not set 714# CONFIG_MOUSE_BCM5974 is not set
626# CONFIG_MOUSE_VSXXXAA is not set 715# CONFIG_MOUSE_VSXXXAA is not set
716# CONFIG_MOUSE_SYNAPTICS_I2C is not set
627# CONFIG_INPUT_JOYSTICK is not set 717# CONFIG_INPUT_JOYSTICK is not set
628# CONFIG_INPUT_TABLET is not set 718# CONFIG_INPUT_TABLET is not set
629# CONFIG_INPUT_TOUCHSCREEN is not set 719# CONFIG_INPUT_TOUCHSCREEN is not set
@@ -639,6 +729,7 @@ CONFIG_SERIO_SERPORT=y
639CONFIG_SERIO_LIBPS2=y 729CONFIG_SERIO_LIBPS2=y
640# CONFIG_SERIO_RAW is not set 730# CONFIG_SERIO_RAW is not set
641# CONFIG_SERIO_XILINX_XPS_PS2 is not set 731# CONFIG_SERIO_XILINX_XPS_PS2 is not set
732# CONFIG_SERIO_ALTERA_PS2 is not set
642# CONFIG_GAMEPORT is not set 733# CONFIG_GAMEPORT is not set
643 734
644# 735#
@@ -676,6 +767,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
676# CONFIG_SERIAL_JSM is not set 767# CONFIG_SERIAL_JSM is not set
677CONFIG_SERIAL_OF_PLATFORM=y 768CONFIG_SERIAL_OF_PLATFORM=y
678# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set 769# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
770# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
679CONFIG_UNIX98_PTYS=y 771CONFIG_UNIX98_PTYS=y
680# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 772# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
681CONFIG_LEGACY_PTYS=y 773CONFIG_LEGACY_PTYS=y
@@ -691,6 +783,7 @@ CONFIG_LEGACY_PTY_COUNT=256
691CONFIG_DEVPORT=y 783CONFIG_DEVPORT=y
692CONFIG_I2C=y 784CONFIG_I2C=y
693CONFIG_I2C_BOARDINFO=y 785CONFIG_I2C_BOARDINFO=y
786CONFIG_I2C_COMPAT=y
694# CONFIG_I2C_CHARDEV is not set 787# CONFIG_I2C_CHARDEV is not set
695CONFIG_I2C_HELPER_AUTO=y 788CONFIG_I2C_HELPER_AUTO=y
696CONFIG_I2C_ALGOBIT=y 789CONFIG_I2C_ALGOBIT=y
@@ -733,11 +826,6 @@ CONFIG_I2C_IBM_IIC=y
733# CONFIG_I2C_TINY_USB is not set 826# CONFIG_I2C_TINY_USB is not set
734 827
735# 828#
736# Graphics adapter I2C/DDC channel drivers
737#
738# CONFIG_I2C_VOODOO3 is not set
739
740#
741# Other I2C/SMBus bus drivers 829# Other I2C/SMBus bus drivers
742# 830#
743# CONFIG_I2C_PCA_PLATFORM is not set 831# CONFIG_I2C_PCA_PLATFORM is not set
@@ -746,27 +834,23 @@ CONFIG_I2C_IBM_IIC=y
746# 834#
747# Miscellaneous I2C Chip support 835# Miscellaneous I2C Chip support
748# 836#
749# CONFIG_DS1682 is not set
750# CONFIG_EEPROM_AT24 is not set
751# CONFIG_EEPROM_LEGACY is not set
752# CONFIG_SENSORS_PCF8574 is not set
753# CONFIG_PCF8575 is not set
754# CONFIG_SENSORS_PCA9539 is not set
755# CONFIG_SENSORS_PCF8591 is not set
756# CONFIG_SENSORS_MAX6875 is not set
757# CONFIG_SENSORS_TSL2550 is not set 837# CONFIG_SENSORS_TSL2550 is not set
758# CONFIG_I2C_DEBUG_CORE is not set 838# CONFIG_I2C_DEBUG_CORE is not set
759# CONFIG_I2C_DEBUG_ALGO is not set 839# CONFIG_I2C_DEBUG_ALGO is not set
760# CONFIG_I2C_DEBUG_BUS is not set 840# CONFIG_I2C_DEBUG_BUS is not set
761# CONFIG_I2C_DEBUG_CHIP is not set 841# CONFIG_I2C_DEBUG_CHIP is not set
762# CONFIG_SPI is not set 842# CONFIG_SPI is not set
843
844#
845# PPS support
846#
847# CONFIG_PPS is not set
763CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 848CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
764# CONFIG_GPIOLIB is not set 849# CONFIG_GPIOLIB is not set
765# CONFIG_W1 is not set 850# CONFIG_W1 is not set
766# CONFIG_POWER_SUPPLY is not set 851# CONFIG_POWER_SUPPLY is not set
767# CONFIG_HWMON is not set 852# CONFIG_HWMON is not set
768# CONFIG_THERMAL is not set 853# CONFIG_THERMAL is not set
769# CONFIG_THERMAL_HWMON is not set
770# CONFIG_WATCHDOG is not set 854# CONFIG_WATCHDOG is not set
771CONFIG_SSB_POSSIBLE=y 855CONFIG_SSB_POSSIBLE=y
772 856
@@ -784,31 +868,21 @@ CONFIG_SSB_POSSIBLE=y
784# CONFIG_TWL4030_CORE is not set 868# CONFIG_TWL4030_CORE is not set
785# CONFIG_MFD_TMIO is not set 869# CONFIG_MFD_TMIO is not set
786# CONFIG_PMIC_DA903X is not set 870# CONFIG_PMIC_DA903X is not set
871# CONFIG_PMIC_ADP5520 is not set
787# CONFIG_MFD_WM8400 is not set 872# CONFIG_MFD_WM8400 is not set
873# CONFIG_MFD_WM831X is not set
788# CONFIG_MFD_WM8350_I2C is not set 874# CONFIG_MFD_WM8350_I2C is not set
789# CONFIG_MFD_PCF50633 is not set 875# CONFIG_MFD_PCF50633 is not set
876# CONFIG_AB3100_CORE is not set
877# CONFIG_MFD_88PM8607 is not set
790# CONFIG_REGULATOR is not set 878# CONFIG_REGULATOR is not set
791 879# CONFIG_MEDIA_SUPPORT is not set
792#
793# Multimedia devices
794#
795
796#
797# Multimedia core support
798#
799# CONFIG_VIDEO_DEV is not set
800# CONFIG_DVB_CORE is not set
801# CONFIG_VIDEO_MEDIA is not set
802
803#
804# Multimedia drivers
805#
806# CONFIG_DAB is not set
807 880
808# 881#
809# Graphics support 882# Graphics support
810# 883#
811# CONFIG_AGP is not set 884# CONFIG_AGP is not set
885CONFIG_VGA_ARB=y
812# CONFIG_DRM is not set 886# CONFIG_DRM is not set
813# CONFIG_VGASTATE is not set 887# CONFIG_VGASTATE is not set
814CONFIG_VIDEO_OUTPUT_CONTROL=y 888CONFIG_VIDEO_OUTPUT_CONTROL=y
@@ -870,6 +944,7 @@ CONFIG_FB_RADEON_BACKLIGHT=y
870# CONFIG_FB_VIRTUAL is not set 944# CONFIG_FB_VIRTUAL is not set
871# CONFIG_FB_METRONOME is not set 945# CONFIG_FB_METRONOME is not set
872# CONFIG_FB_MB862XX is not set 946# CONFIG_FB_MB862XX is not set
947# CONFIG_FB_BROADSHEET is not set
873CONFIG_BACKLIGHT_LCD_SUPPORT=y 948CONFIG_BACKLIGHT_LCD_SUPPORT=y
874CONFIG_LCD_CLASS_DEVICE=y 949CONFIG_LCD_CLASS_DEVICE=y
875# CONFIG_LCD_ILI9320 is not set 950# CONFIG_LCD_ILI9320 is not set
@@ -899,7 +974,6 @@ CONFIG_LOGO_LINUX_CLUT224=y
899# CONFIG_SOUND is not set 974# CONFIG_SOUND is not set
900CONFIG_HID_SUPPORT=y 975CONFIG_HID_SUPPORT=y
901CONFIG_HID=y 976CONFIG_HID=y
902# CONFIG_HID_DEBUG is not set
903# CONFIG_HIDRAW is not set 977# CONFIG_HIDRAW is not set
904 978
905# 979#
@@ -912,15 +986,18 @@ CONFIG_USB_HID=y
912# 986#
913# Special HID drivers 987# Special HID drivers
914# 988#
915CONFIG_HID_COMPAT=y
916CONFIG_HID_A4TECH=y 989CONFIG_HID_A4TECH=y
917CONFIG_HID_APPLE=y 990CONFIG_HID_APPLE=y
918CONFIG_HID_BELKIN=y 991CONFIG_HID_BELKIN=y
919CONFIG_HID_CHERRY=y 992CONFIG_HID_CHERRY=y
920CONFIG_HID_CHICONY=y 993CONFIG_HID_CHICONY=y
921CONFIG_HID_CYPRESS=y 994CONFIG_HID_CYPRESS=y
995# CONFIG_HID_DRAGONRISE is not set
922CONFIG_HID_EZKEY=y 996CONFIG_HID_EZKEY=y
997# CONFIG_HID_KYE is not set
923CONFIG_HID_GYRATION=y 998CONFIG_HID_GYRATION=y
999# CONFIG_HID_TWINHAN is not set
1000# CONFIG_HID_KENSINGTON is not set
924CONFIG_HID_LOGITECH=y 1001CONFIG_HID_LOGITECH=y
925# CONFIG_LOGITECH_FF is not set 1002# CONFIG_LOGITECH_FF is not set
926# CONFIG_LOGIRUMBLEPAD2_FF is not set 1003# CONFIG_LOGIRUMBLEPAD2_FF is not set
@@ -933,10 +1010,11 @@ CONFIG_HID_PETALYNX=y
933CONFIG_HID_SAMSUNG=y 1010CONFIG_HID_SAMSUNG=y
934CONFIG_HID_SONY=y 1011CONFIG_HID_SONY=y
935CONFIG_HID_SUNPLUS=y 1012CONFIG_HID_SUNPLUS=y
936# CONFIG_GREENASIA_FF is not set 1013# CONFIG_HID_GREENASIA is not set
1014# CONFIG_HID_SMARTJOYPLUS is not set
937# CONFIG_HID_TOPSEED is not set 1015# CONFIG_HID_TOPSEED is not set
938CONFIG_THRUSTMASTER_FF=m 1016# CONFIG_HID_THRUSTMASTER is not set
939CONFIG_ZEROPLUS_FF=m 1017# CONFIG_HID_ZEROPLUS is not set
940CONFIG_USB_SUPPORT=y 1018CONFIG_USB_SUPPORT=y
941CONFIG_USB_ARCH_HAS_HCD=y 1019CONFIG_USB_ARCH_HAS_HCD=y
942CONFIG_USB_ARCH_HAS_OHCI=y 1020CONFIG_USB_ARCH_HAS_OHCI=y
@@ -962,17 +1040,20 @@ CONFIG_USB_DEVICEFS=y
962# USB Host Controller Drivers 1040# USB Host Controller Drivers
963# 1041#
964# CONFIG_USB_C67X00_HCD is not set 1042# CONFIG_USB_C67X00_HCD is not set
1043# CONFIG_USB_XHCI_HCD is not set
965CONFIG_USB_EHCI_HCD=m 1044CONFIG_USB_EHCI_HCD=m
966# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1045# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
967# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1046# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1047# CONFIG_XPS_USB_HCD_XILINX is not set
968CONFIG_USB_EHCI_HCD_PPC_OF=y 1048CONFIG_USB_EHCI_HCD_PPC_OF=y
969# CONFIG_USB_OXU210HP_HCD is not set 1049# CONFIG_USB_OXU210HP_HCD is not set
970# CONFIG_USB_ISP116X_HCD is not set 1050# CONFIG_USB_ISP116X_HCD is not set
971# CONFIG_USB_ISP1760_HCD is not set 1051# CONFIG_USB_ISP1760_HCD is not set
1052# CONFIG_USB_ISP1362_HCD is not set
972CONFIG_USB_OHCI_HCD=y 1053CONFIG_USB_OHCI_HCD=y
973CONFIG_USB_OHCI_HCD_PPC_OF=y
974CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1054CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
975CONFIG_USB_OHCI_HCD_PPC_OF_LE=y 1055CONFIG_USB_OHCI_HCD_PPC_OF_LE=y
1056CONFIG_USB_OHCI_HCD_PPC_OF=y
976CONFIG_USB_OHCI_HCD_PCI=y 1057CONFIG_USB_OHCI_HCD_PCI=y
977CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y 1058CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
978CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y 1059CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
@@ -992,11 +1073,11 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
992# CONFIG_USB_TMC is not set 1073# CONFIG_USB_TMC is not set
993 1074
994# 1075#
995# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 1076# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
996# 1077#
997 1078
998# 1079#
999# see USB_STORAGE Help for more information 1080# also be needed; see USB_STORAGE Help for more info
1000# 1081#
1001CONFIG_USB_STORAGE=m 1082CONFIG_USB_STORAGE=m
1002# CONFIG_USB_STORAGE_DEBUG is not set 1083# CONFIG_USB_STORAGE_DEBUG is not set
@@ -1038,7 +1119,6 @@ CONFIG_USB_STORAGE=m
1038# CONFIG_USB_LED is not set 1119# CONFIG_USB_LED is not set
1039# CONFIG_USB_CYPRESS_CY7C63 is not set 1120# CONFIG_USB_CYPRESS_CY7C63 is not set
1040# CONFIG_USB_CYTHERM is not set 1121# CONFIG_USB_CYTHERM is not set
1041# CONFIG_USB_PHIDGET is not set
1042# CONFIG_USB_IDMOUSE is not set 1122# CONFIG_USB_IDMOUSE is not set
1043# CONFIG_USB_FTDI_ELAN is not set 1123# CONFIG_USB_FTDI_ELAN is not set
1044# CONFIG_USB_APPLEDISPLAY is not set 1124# CONFIG_USB_APPLEDISPLAY is not set
@@ -1054,6 +1134,7 @@ CONFIG_USB_STORAGE=m
1054# 1134#
1055# OTG and related infrastructure 1135# OTG and related infrastructure
1056# 1136#
1137# CONFIG_NOP_USB_XCEIV is not set
1057# CONFIG_UWB is not set 1138# CONFIG_UWB is not set
1058# CONFIG_MMC is not set 1139# CONFIG_MMC is not set
1059# CONFIG_MEMSTICK is not set 1140# CONFIG_MEMSTICK is not set
@@ -1090,9 +1171,11 @@ CONFIG_RTC_INTF_DEV=y
1090# CONFIG_RTC_DRV_PCF8583 is not set 1171# CONFIG_RTC_DRV_PCF8583 is not set
1091CONFIG_RTC_DRV_M41T80=y 1172CONFIG_RTC_DRV_M41T80=y
1092CONFIG_RTC_DRV_M41T80_WDT=y 1173CONFIG_RTC_DRV_M41T80_WDT=y
1174# CONFIG_RTC_DRV_BQ32K is not set
1093# CONFIG_RTC_DRV_S35390A is not set 1175# CONFIG_RTC_DRV_S35390A is not set
1094# CONFIG_RTC_DRV_FM3130 is not set 1176# CONFIG_RTC_DRV_FM3130 is not set
1095# CONFIG_RTC_DRV_RX8581 is not set 1177# CONFIG_RTC_DRV_RX8581 is not set
1178# CONFIG_RTC_DRV_RX8025 is not set
1096 1179
1097# 1180#
1098# SPI RTC drivers 1181# SPI RTC drivers
@@ -1110,15 +1193,22 @@ CONFIG_RTC_DRV_M41T80_WDT=y
1110# CONFIG_RTC_DRV_M48T86 is not set 1193# CONFIG_RTC_DRV_M48T86 is not set
1111# CONFIG_RTC_DRV_M48T35 is not set 1194# CONFIG_RTC_DRV_M48T35 is not set
1112# CONFIG_RTC_DRV_M48T59 is not set 1195# CONFIG_RTC_DRV_M48T59 is not set
1196# CONFIG_RTC_DRV_MSM6242 is not set
1113# CONFIG_RTC_DRV_BQ4802 is not set 1197# CONFIG_RTC_DRV_BQ4802 is not set
1198# CONFIG_RTC_DRV_RP5C01 is not set
1114# CONFIG_RTC_DRV_V3020 is not set 1199# CONFIG_RTC_DRV_V3020 is not set
1115 1200
1116# 1201#
1117# on-CPU RTC drivers 1202# on-CPU RTC drivers
1118# 1203#
1119# CONFIG_RTC_DRV_PPC is not set 1204# CONFIG_RTC_DRV_GENERIC is not set
1120# CONFIG_DMADEVICES is not set 1205# CONFIG_DMADEVICES is not set
1206# CONFIG_AUXDISPLAY is not set
1121# CONFIG_UIO is not set 1207# CONFIG_UIO is not set
1208
1209#
1210# TI VLYNQ
1211#
1122# CONFIG_STAGING is not set 1212# CONFIG_STAGING is not set
1123 1213
1124# 1214#
@@ -1130,6 +1220,7 @@ CONFIG_EXT2_FS_POSIX_ACL=y
1130# CONFIG_EXT2_FS_SECURITY is not set 1220# CONFIG_EXT2_FS_SECURITY is not set
1131# CONFIG_EXT2_FS_XIP is not set 1221# CONFIG_EXT2_FS_XIP is not set
1132CONFIG_EXT3_FS=y 1222CONFIG_EXT3_FS=y
1223# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
1133CONFIG_EXT3_FS_XATTR=y 1224CONFIG_EXT3_FS_XATTR=y
1134CONFIG_EXT3_FS_POSIX_ACL=y 1225CONFIG_EXT3_FS_POSIX_ACL=y
1135# CONFIG_EXT3_FS_SECURITY is not set 1226# CONFIG_EXT3_FS_SECURITY is not set
@@ -1142,10 +1233,13 @@ CONFIG_REISERFS_FS=y
1142# CONFIG_REISERFS_FS_XATTR is not set 1233# CONFIG_REISERFS_FS_XATTR is not set
1143# CONFIG_JFS_FS is not set 1234# CONFIG_JFS_FS is not set
1144CONFIG_FS_POSIX_ACL=y 1235CONFIG_FS_POSIX_ACL=y
1145CONFIG_FILE_LOCKING=y
1146# CONFIG_XFS_FS is not set 1236# CONFIG_XFS_FS is not set
1237# CONFIG_GFS2_FS is not set
1147# CONFIG_OCFS2_FS is not set 1238# CONFIG_OCFS2_FS is not set
1148# CONFIG_BTRFS_FS is not set 1239# CONFIG_BTRFS_FS is not set
1240# CONFIG_NILFS2_FS is not set
1241CONFIG_FILE_LOCKING=y
1242CONFIG_FSNOTIFY=y
1149CONFIG_DNOTIFY=y 1243CONFIG_DNOTIFY=y
1150CONFIG_INOTIFY=y 1244CONFIG_INOTIFY=y
1151CONFIG_INOTIFY_USER=y 1245CONFIG_INOTIFY_USER=y
@@ -1155,6 +1249,11 @@ CONFIG_AUTOFS4_FS=y
1155# CONFIG_FUSE_FS is not set 1249# CONFIG_FUSE_FS is not set
1156 1250
1157# 1251#
1252# Caches
1253#
1254# CONFIG_FSCACHE is not set
1255
1256#
1158# CD-ROM/DVD Filesystems 1257# CD-ROM/DVD Filesystems
1159# 1258#
1160CONFIG_ISO9660_FS=y 1259CONFIG_ISO9660_FS=y
@@ -1267,6 +1366,7 @@ CONFIG_NLS_ISO8859_1=y
1267# CONFIG_NLS_KOI8_U is not set 1366# CONFIG_NLS_KOI8_U is not set
1268# CONFIG_NLS_UTF8 is not set 1367# CONFIG_NLS_UTF8 is not set
1269# CONFIG_DLM is not set 1368# CONFIG_DLM is not set
1369# CONFIG_BINARY_PRINTF is not set
1270 1370
1271# 1371#
1272# Library routines 1372# Library routines
@@ -1281,11 +1381,13 @@ CONFIG_CRC32=y
1281# CONFIG_CRC7 is not set 1381# CONFIG_CRC7 is not set
1282# CONFIG_LIBCRC32C is not set 1382# CONFIG_LIBCRC32C is not set
1283CONFIG_ZLIB_INFLATE=y 1383CONFIG_ZLIB_INFLATE=y
1284CONFIG_PLIST=y 1384CONFIG_DECOMPRESS_GZIP=y
1285CONFIG_HAS_IOMEM=y 1385CONFIG_HAS_IOMEM=y
1286CONFIG_HAS_IOPORT=y 1386CONFIG_HAS_IOPORT=y
1287CONFIG_HAS_DMA=y 1387CONFIG_HAS_DMA=y
1288CONFIG_HAVE_LMB=y 1388CONFIG_HAVE_LMB=y
1389CONFIG_NLATTR=y
1390CONFIG_GENERIC_ATOMIC64=y
1289 1391
1290# 1392#
1291# Kernel hacking 1393# Kernel hacking
@@ -1295,27 +1397,29 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1295CONFIG_ENABLE_MUST_CHECK=y 1397CONFIG_ENABLE_MUST_CHECK=y
1296CONFIG_FRAME_WARN=1024 1398CONFIG_FRAME_WARN=1024
1297CONFIG_MAGIC_SYSRQ=y 1399CONFIG_MAGIC_SYSRQ=y
1400# CONFIG_STRIP_ASM_SYMS is not set
1298# CONFIG_UNUSED_SYMBOLS is not set 1401# CONFIG_UNUSED_SYMBOLS is not set
1299# CONFIG_DEBUG_FS is not set 1402# CONFIG_DEBUG_FS is not set
1300# CONFIG_HEADERS_CHECK is not set 1403# CONFIG_HEADERS_CHECK is not set
1301# CONFIG_DEBUG_KERNEL is not set 1404# CONFIG_DEBUG_KERNEL is not set
1302# CONFIG_SLUB_DEBUG_ON is not set 1405# CONFIG_SLUB_DEBUG_ON is not set
1303# CONFIG_SLUB_STATS is not set 1406# CONFIG_SLUB_STATS is not set
1304# CONFIG_DEBUG_BUGVERBOSE is not set 1407CONFIG_DEBUG_BUGVERBOSE=y
1305# CONFIG_DEBUG_MEMORY_INIT is not set 1408# CONFIG_DEBUG_MEMORY_INIT is not set
1306# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1409# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1307# CONFIG_LATENCYTOP is not set 1410# CONFIG_LATENCYTOP is not set
1308CONFIG_SYSCTL_SYSCALL_CHECK=y 1411CONFIG_SYSCTL_SYSCALL_CHECK=y
1309CONFIG_HAVE_FUNCTION_TRACER=y 1412CONFIG_HAVE_FUNCTION_TRACER=y
1413CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1310CONFIG_HAVE_DYNAMIC_FTRACE=y 1414CONFIG_HAVE_DYNAMIC_FTRACE=y
1311CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1415CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1312 1416CONFIG_TRACING_SUPPORT=y
1313# 1417# CONFIG_FTRACE is not set
1314# Tracers 1418# CONFIG_DMA_API_DEBUG is not set
1315#
1316# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1317# CONFIG_SAMPLES is not set 1419# CONFIG_SAMPLES is not set
1318CONFIG_HAVE_ARCH_KGDB=y 1420CONFIG_HAVE_ARCH_KGDB=y
1421# CONFIG_PPC_DISABLE_WERROR is not set
1422CONFIG_PPC_WERROR=y
1319CONFIG_PRINT_STACK_DEPTH=64 1423CONFIG_PRINT_STACK_DEPTH=64
1320# CONFIG_IRQSTACKS is not set 1424# CONFIG_IRQSTACKS is not set
1321# CONFIG_PPC_EARLY_DEBUG is not set 1425# CONFIG_PPC_EARLY_DEBUG is not set
@@ -1326,7 +1430,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1326# CONFIG_KEYS is not set 1430# CONFIG_KEYS is not set
1327# CONFIG_SECURITY is not set 1431# CONFIG_SECURITY is not set
1328# CONFIG_SECURITYFS is not set 1432# CONFIG_SECURITYFS is not set
1329# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1433# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1434# CONFIG_DEFAULT_SECURITY_SMACK is not set
1435# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1436CONFIG_DEFAULT_SECURITY_DAC=y
1437CONFIG_DEFAULT_SECURITY=""
1330# CONFIG_CRYPTO is not set 1438# CONFIG_CRYPTO is not set
1331# CONFIG_PPC_CLOCK is not set 1439# CONFIG_PPC_CLOCK is not set
1332# CONFIG_VIRTUALIZATION is not set 1440# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/44x/sequoia_defconfig b/arch/powerpc/configs/44x/sequoia_defconfig
index 6400aae04dda..1b2f41dbcafb 100644
--- a/arch/powerpc/configs/44x/sequoia_defconfig
+++ b/arch/powerpc/configs/44x/sequoia_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.29 3# Linux kernel version: 2.6.33-rc1
4# Tue Apr 7 17:04:52 2009 4# Mon Jan 4 15:15:51 2010
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#
11# CONFIG_6xx is not set 11# CONFIG_PPC_BOOK3S_32 is not set
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
@@ -20,6 +20,7 @@ CONFIG_BOOKE=y
20CONFIG_PTE_64BIT=y 20CONFIG_PTE_64BIT=y
21CONFIG_PHYS_64BIT=y 21CONFIG_PHYS_64BIT=y
22CONFIG_PPC_MMU_NOHASH=y 22CONFIG_PPC_MMU_NOHASH=y
23CONFIG_PPC_MMU_NOHASH_32=y
23# CONFIG_PPC_MM_SLICES is not set 24# CONFIG_PPC_MM_SLICES is not set
24CONFIG_NOT_COHERENT_CACHE=y 25CONFIG_NOT_COHERENT_CACHE=y
25CONFIG_PPC32=y 26CONFIG_PPC32=y
@@ -31,15 +32,18 @@ CONFIG_GENERIC_TIME=y
31CONFIG_GENERIC_TIME_VSYSCALL=y 32CONFIG_GENERIC_TIME_VSYSCALL=y
32CONFIG_GENERIC_CLOCKEVENTS=y 33CONFIG_GENERIC_CLOCKEVENTS=y
33CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
34# 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
35CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
36CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
37CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
38CONFIG_LOCKDEP_SUPPORT=y 43CONFIG_LOCKDEP_SUPPORT=y
39CONFIG_RWSEM_XCHGADD_ALGORITHM=y 44CONFIG_RWSEM_XCHGADD_ALGORITHM=y
40CONFIG_ARCH_HAS_ILOG2_U32=y 45CONFIG_ARCH_HAS_ILOG2_U32=y
41CONFIG_GENERIC_HWEIGHT=y 46CONFIG_GENERIC_HWEIGHT=y
42CONFIG_GENERIC_CALIBRATE_DELAY=y
43CONFIG_GENERIC_FIND_NEXT_BIT=y 47CONFIG_GENERIC_FIND_NEXT_BIT=y
44# CONFIG_ARCH_NO_VIRT_TO_BUS is not set 48# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
45CONFIG_PPC=y 49CONFIG_PPC=y
@@ -53,12 +57,15 @@ CONFIG_PPC_UDBG_16550=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
56# CONFIG_DEFAULT_UIMAGE is not set 61# CONFIG_DEFAULT_UIMAGE is not set
62CONFIG_ARCH_HIBERNATION_POSSIBLE=y
57CONFIG_PPC_DCR_NATIVE=y 63CONFIG_PPC_DCR_NATIVE=y
58# CONFIG_PPC_DCR_MMIO is not set 64# CONFIG_PPC_DCR_MMIO is not set
59CONFIG_PPC_DCR=y 65CONFIG_PPC_DCR=y
60CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 66CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
61CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 67CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
68CONFIG_CONSTRUCTORS=y
62 69
63# 70#
64# General setup 71# General setup
@@ -72,6 +79,7 @@ CONFIG_SWAP=y
72CONFIG_SYSVIPC=y 79CONFIG_SYSVIPC=y
73CONFIG_SYSVIPC_SYSCTL=y 80CONFIG_SYSVIPC_SYSCTL=y
74CONFIG_POSIX_MQUEUE=y 81CONFIG_POSIX_MQUEUE=y
82CONFIG_POSIX_MQUEUE_SYSCTL=y
75# CONFIG_BSD_PROCESS_ACCT is not set 83# CONFIG_BSD_PROCESS_ACCT is not set
76# CONFIG_TASKSTATS is not set 84# CONFIG_TASKSTATS is not set
77# CONFIG_AUDIT is not set 85# CONFIG_AUDIT is not set
@@ -79,11 +87,13 @@ CONFIG_POSIX_MQUEUE=y
79# 87#
80# RCU Subsystem 88# RCU Subsystem
81# 89#
82CONFIG_CLASSIC_RCU=y 90CONFIG_TREE_RCU=y
83# CONFIG_TREE_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
84# CONFIG_PREEMPT_RCU is not set 92# CONFIG_TINY_RCU is not set
93# CONFIG_RCU_TRACE is not set
94CONFIG_RCU_FANOUT=32
95# CONFIG_RCU_FANOUT_EXACT is not set
85# CONFIG_TREE_RCU_TRACE is not set 96# CONFIG_TREE_RCU_TRACE is not set
86# CONFIG_PREEMPT_RCU_TRACE is not set
87# CONFIG_IKCONFIG is not set 97# CONFIG_IKCONFIG is not set
88CONFIG_LOG_BUF_SHIFT=14 98CONFIG_LOG_BUF_SHIFT=14
89CONFIG_GROUP_SCHED=y 99CONFIG_GROUP_SCHED=y
@@ -121,6 +131,13 @@ CONFIG_TIMERFD=y
121CONFIG_EVENTFD=y 131CONFIG_EVENTFD=y
122CONFIG_SHMEM=y 132CONFIG_SHMEM=y
123CONFIG_AIO=y 133CONFIG_AIO=y
134CONFIG_HAVE_PERF_EVENTS=y
135
136#
137# Kernel Performance Events And Counters
138#
139# CONFIG_PERF_EVENTS is not set
140# CONFIG_PERF_COUNTERS is not set
124CONFIG_VM_EVENT_COUNTERS=y 141CONFIG_VM_EVENT_COUNTERS=y
125CONFIG_PCI_QUIRKS=y 142CONFIG_PCI_QUIRKS=y
126CONFIG_SLUB_DEBUG=y 143CONFIG_SLUB_DEBUG=y
@@ -129,7 +146,6 @@ CONFIG_COMPAT_BRK=y
129CONFIG_SLUB=y 146CONFIG_SLUB=y
130# CONFIG_SLOB is not set 147# CONFIG_SLOB is not set
131# CONFIG_PROFILING is not set 148# CONFIG_PROFILING is not set
132# CONFIG_MARKERS is not set
133CONFIG_HAVE_OPROFILE=y 149CONFIG_HAVE_OPROFILE=y
134# CONFIG_KPROBES is not set 150# CONFIG_KPROBES is not set
135CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 151CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -137,6 +153,13 @@ CONFIG_HAVE_IOREMAP_PROT=y
137CONFIG_HAVE_KPROBES=y 153CONFIG_HAVE_KPROBES=y
138CONFIG_HAVE_KRETPROBES=y 154CONFIG_HAVE_KRETPROBES=y
139CONFIG_HAVE_ARCH_TRACEHOOK=y 155CONFIG_HAVE_ARCH_TRACEHOOK=y
156CONFIG_HAVE_DMA_ATTRS=y
157CONFIG_HAVE_DMA_API_DEBUG=y
158
159#
160# GCOV-based kernel profiling
161#
162# CONFIG_GCOV_KERNEL is not set
140# CONFIG_SLOW_WORK is not set 163# CONFIG_SLOW_WORK is not set
141# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 164# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
142CONFIG_SLABINFO=y 165CONFIG_SLABINFO=y
@@ -149,7 +172,7 @@ CONFIG_MODULE_UNLOAD=y
149# CONFIG_MODVERSIONS is not set 172# CONFIG_MODVERSIONS is not set
150# CONFIG_MODULE_SRCVERSION_ALL is not set 173# CONFIG_MODULE_SRCVERSION_ALL is not set
151CONFIG_BLOCK=y 174CONFIG_BLOCK=y
152CONFIG_LBD=y 175CONFIG_LBDAF=y
153# CONFIG_BLK_DEV_BSG is not set 176# CONFIG_BLK_DEV_BSG is not set
154# CONFIG_BLK_DEV_INTEGRITY is not set 177# CONFIG_BLK_DEV_INTEGRITY is not set
155 178
@@ -157,14 +180,41 @@ CONFIG_LBD=y
157# IO Schedulers 180# IO Schedulers
158# 181#
159CONFIG_IOSCHED_NOOP=y 182CONFIG_IOSCHED_NOOP=y
160CONFIG_IOSCHED_AS=y
161CONFIG_IOSCHED_DEADLINE=y 183CONFIG_IOSCHED_DEADLINE=y
162CONFIG_IOSCHED_CFQ=y 184CONFIG_IOSCHED_CFQ=y
163CONFIG_DEFAULT_AS=y
164# CONFIG_DEFAULT_DEADLINE is not set 185# CONFIG_DEFAULT_DEADLINE is not set
165# CONFIG_DEFAULT_CFQ is not set 186CONFIG_DEFAULT_CFQ=y
166# CONFIG_DEFAULT_NOOP is not set 187# CONFIG_DEFAULT_NOOP is not set
167CONFIG_DEFAULT_IOSCHED="anticipatory" 188CONFIG_DEFAULT_IOSCHED="cfq"
189# CONFIG_INLINE_SPIN_TRYLOCK is not set
190# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
191# CONFIG_INLINE_SPIN_LOCK is not set
192# CONFIG_INLINE_SPIN_LOCK_BH is not set
193# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
194# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
195CONFIG_INLINE_SPIN_UNLOCK=y
196# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
197CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
198# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
199# CONFIG_INLINE_READ_TRYLOCK is not set
200# CONFIG_INLINE_READ_LOCK is not set
201# CONFIG_INLINE_READ_LOCK_BH is not set
202# CONFIG_INLINE_READ_LOCK_IRQ is not set
203# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
204CONFIG_INLINE_READ_UNLOCK=y
205# CONFIG_INLINE_READ_UNLOCK_BH is not set
206CONFIG_INLINE_READ_UNLOCK_IRQ=y
207# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
208# CONFIG_INLINE_WRITE_TRYLOCK is not set
209# CONFIG_INLINE_WRITE_LOCK is not set
210# CONFIG_INLINE_WRITE_LOCK_BH is not set
211# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
212# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
213CONFIG_INLINE_WRITE_UNLOCK=y
214# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
215CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
216# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
217# CONFIG_MUTEX_SPIN_ON_OWNER is not set
168# CONFIG_FREEZER is not set 218# CONFIG_FREEZER is not set
169# CONFIG_PPC4xx_PCI_EXPRESS is not set 219# CONFIG_PPC4xx_PCI_EXPRESS is not set
170 220
@@ -186,6 +236,7 @@ CONFIG_SEQUOIA=y
186# CONFIG_CANYONLANDS is not set 236# CONFIG_CANYONLANDS is not set
187# CONFIG_GLACIER is not set 237# CONFIG_GLACIER is not set
188# CONFIG_REDWOOD is not set 238# CONFIG_REDWOOD is not set
239# CONFIG_EIGER is not set
189# CONFIG_YOSEMITE is not set 240# CONFIG_YOSEMITE is not set
190# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set 241# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set
191CONFIG_PPC44x_SIMPLE=y 242CONFIG_PPC44x_SIMPLE=y
@@ -228,10 +279,12 @@ CONFIG_BINFMT_ELF=y
228# CONFIG_BINFMT_MISC is not set 279# CONFIG_BINFMT_MISC is not set
229# CONFIG_MATH_EMULATION is not set 280# CONFIG_MATH_EMULATION is not set
230# CONFIG_IOMMU_HELPER is not set 281# CONFIG_IOMMU_HELPER is not set
231CONFIG_PPC_NEED_DMA_SYNC_OPS=y 282# CONFIG_SWIOTLB is not set
232CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 283CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
233CONFIG_ARCH_HAS_WALK_MEMORY=y 284CONFIG_ARCH_HAS_WALK_MEMORY=y
234CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 285CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
286CONFIG_SPARSE_IRQ=y
287CONFIG_MAX_ACTIVE_REGIONS=32
235CONFIG_ARCH_FLATMEM_ENABLE=y 288CONFIG_ARCH_FLATMEM_ENABLE=y
236CONFIG_ARCH_POPULATES_NODE_MAP=y 289CONFIG_ARCH_POPULATES_NODE_MAP=y
237CONFIG_SELECT_MEMORY_MODEL=y 290CONFIG_SELECT_MEMORY_MODEL=y
@@ -247,9 +300,8 @@ CONFIG_PHYS_ADDR_T_64BIT=y
247CONFIG_ZONE_DMA_FLAG=1 300CONFIG_ZONE_DMA_FLAG=1
248CONFIG_BOUNCE=y 301CONFIG_BOUNCE=y
249CONFIG_VIRT_TO_BUS=y 302CONFIG_VIRT_TO_BUS=y
250CONFIG_UNEVICTABLE_LRU=y 303# CONFIG_KSM is not set
251CONFIG_HAVE_MLOCK=y 304CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
252CONFIG_HAVE_MLOCKED_PAGE_BIT=y
253CONFIG_STDBINUTILS=y 305CONFIG_STDBINUTILS=y
254CONFIG_PPC_4K_PAGES=y 306CONFIG_PPC_4K_PAGES=y
255# CONFIG_PPC_16K_PAGES is not set 307# CONFIG_PPC_16K_PAGES is not set
@@ -293,11 +345,11 @@ CONFIG_ARCH_SUPPORTS_MSI=y
293# Default settings for advanced configuration options are used 345# Default settings for advanced configuration options are used
294# 346#
295CONFIG_LOWMEM_SIZE=0x30000000 347CONFIG_LOWMEM_SIZE=0x30000000
296CONFIG_LOWMEM_CAM_NUM=3
297CONFIG_PAGE_OFFSET=0xc0000000 348CONFIG_PAGE_OFFSET=0xc0000000
298CONFIG_KERNEL_START=0xc0000000 349CONFIG_KERNEL_START=0xc0000000
299CONFIG_PHYSICAL_START=0x00000000 350CONFIG_PHYSICAL_START=0x00000000
300CONFIG_TASK_SIZE=0xc0000000 351CONFIG_TASK_SIZE=0xc0000000
352CONFIG_CONSISTENT_SIZE=0x00200000
301CONFIG_NET=y 353CONFIG_NET=y
302 354
303# 355#
@@ -339,6 +391,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
339# CONFIG_NETFILTER is not set 391# CONFIG_NETFILTER is not set
340# CONFIG_IP_DCCP is not set 392# CONFIG_IP_DCCP is not set
341# CONFIG_IP_SCTP is not set 393# CONFIG_IP_SCTP is not set
394# CONFIG_RDS is not set
342# CONFIG_TIPC is not set 395# CONFIG_TIPC is not set
343# CONFIG_ATM is not set 396# CONFIG_ATM is not set
344# CONFIG_BRIDGE is not set 397# CONFIG_BRIDGE is not set
@@ -353,6 +406,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
353# CONFIG_ECONET is not set 406# CONFIG_ECONET is not set
354# CONFIG_WAN_ROUTER is not set 407# CONFIG_WAN_ROUTER is not set
355# CONFIG_PHONET is not set 408# CONFIG_PHONET is not set
409# CONFIG_IEEE802154 is not set
356# CONFIG_NET_SCHED is not set 410# CONFIG_NET_SCHED is not set
357# CONFIG_DCB is not set 411# CONFIG_DCB is not set
358 412
@@ -365,7 +419,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
365# CONFIG_IRDA is not set 419# CONFIG_IRDA is not set
366# CONFIG_BT is not set 420# CONFIG_BT is not set
367# CONFIG_AF_RXRPC is not set 421# CONFIG_AF_RXRPC is not set
368# CONFIG_WIRELESS is not set 422CONFIG_WIRELESS=y
423# CONFIG_CFG80211 is not set
424# CONFIG_LIB80211 is not set
425
426#
427# CFG80211 needs to be enabled for MAC80211
428#
369# CONFIG_WIMAX is not set 429# CONFIG_WIMAX is not set
370# CONFIG_RFKILL is not set 430# CONFIG_RFKILL is not set
371# CONFIG_NET_9P is not set 431# CONFIG_NET_9P is not set
@@ -378,6 +438,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
378# Generic Driver Options 438# Generic Driver Options
379# 439#
380CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 440CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
441# CONFIG_DEVTMPFS is not set
381CONFIG_STANDALONE=y 442CONFIG_STANDALONE=y
382CONFIG_PREVENT_FIRMWARE_BUILD=y 443CONFIG_PREVENT_FIRMWARE_BUILD=y
383CONFIG_FW_LOADER=y 444CONFIG_FW_LOADER=y
@@ -390,9 +451,9 @@ CONFIG_CONNECTOR=y
390CONFIG_PROC_EVENTS=y 451CONFIG_PROC_EVENTS=y
391CONFIG_MTD=y 452CONFIG_MTD=y
392# CONFIG_MTD_DEBUG is not set 453# CONFIG_MTD_DEBUG is not set
454# CONFIG_MTD_TESTS is not set
393# CONFIG_MTD_CONCAT is not set 455# CONFIG_MTD_CONCAT is not set
394CONFIG_MTD_PARTITIONS=y 456CONFIG_MTD_PARTITIONS=y
395# CONFIG_MTD_TESTS is not set
396# CONFIG_MTD_REDBOOT_PARTS is not set 457# CONFIG_MTD_REDBOOT_PARTS is not set
397CONFIG_MTD_CMDLINE_PARTS=y 458CONFIG_MTD_CMDLINE_PARTS=y
398CONFIG_MTD_OF_PARTS=y 459CONFIG_MTD_OF_PARTS=y
@@ -493,6 +554,7 @@ CONFIG_BLK_DEV=y
493# CONFIG_BLK_DEV_UMEM is not set 554# CONFIG_BLK_DEV_UMEM is not set
494# CONFIG_BLK_DEV_COW_COMMON is not set 555# CONFIG_BLK_DEV_COW_COMMON is not set
495# CONFIG_BLK_DEV_LOOP is not set 556# CONFIG_BLK_DEV_LOOP is not set
557# CONFIG_BLK_DEV_DRBD is not set
496# CONFIG_BLK_DEV_NBD is not set 558# CONFIG_BLK_DEV_NBD is not set
497# CONFIG_BLK_DEV_SX8 is not set 559# CONFIG_BLK_DEV_SX8 is not set
498CONFIG_BLK_DEV_RAM=y 560CONFIG_BLK_DEV_RAM=y
@@ -515,6 +577,7 @@ CONFIG_MISC_DEVICES=y
515# EEPROM support 577# EEPROM support
516# 578#
517# CONFIG_EEPROM_93CX6 is not set 579# CONFIG_EEPROM_93CX6 is not set
580# CONFIG_CB710_CORE is not set
518CONFIG_HAVE_IDE=y 581CONFIG_HAVE_IDE=y
519# CONFIG_IDE is not set 582# CONFIG_IDE is not set
520 583
@@ -534,14 +597,17 @@ CONFIG_HAVE_IDE=y
534# 597#
535 598
536# 599#
537# Enable only one of the two stacks, unless you know what you are doing 600# You can enable one or both FireWire driver stacks.
601#
602
603#
604# See the help texts for more information.
538# 605#
539# CONFIG_FIREWIRE is not set 606# CONFIG_FIREWIRE is not set
540# CONFIG_IEEE1394 is not set 607# CONFIG_IEEE1394 is not set
541# CONFIG_I2O is not set 608# CONFIG_I2O is not set
542# CONFIG_MACINTOSH_DRIVERS is not set 609# CONFIG_MACINTOSH_DRIVERS is not set
543CONFIG_NETDEVICES=y 610CONFIG_NETDEVICES=y
544CONFIG_COMPAT_NET_DEV_OPS=y
545# CONFIG_DUMMY is not set 611# CONFIG_DUMMY is not set
546# CONFIG_BONDING is not set 612# CONFIG_BONDING is not set
547# CONFIG_MACVLAN is not set 613# CONFIG_MACVLAN is not set
@@ -576,7 +642,10 @@ CONFIG_IBM_NEW_EMAC_EMAC4=y
576# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 642# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
577# CONFIG_NET_PCI is not set 643# CONFIG_NET_PCI is not set
578# CONFIG_B44 is not set 644# CONFIG_B44 is not set
645# CONFIG_KS8842 is not set
646# CONFIG_KS8851_MLL is not set
579# CONFIG_ATL2 is not set 647# CONFIG_ATL2 is not set
648# CONFIG_XILINX_EMACLITE is not set
580CONFIG_NETDEV_1000=y 649CONFIG_NETDEV_1000=y
581# CONFIG_ACENIC is not set 650# CONFIG_ACENIC is not set
582# CONFIG_DL2K is not set 651# CONFIG_DL2K is not set
@@ -584,6 +653,7 @@ CONFIG_NETDEV_1000=y
584# CONFIG_E1000E is not set 653# CONFIG_E1000E is not set
585# CONFIG_IP1000 is not set 654# CONFIG_IP1000 is not set
586# CONFIG_IGB is not set 655# CONFIG_IGB is not set
656# CONFIG_IGBVF is not set
587# CONFIG_NS83820 is not set 657# CONFIG_NS83820 is not set
588# CONFIG_HAMACHI is not set 658# CONFIG_HAMACHI is not set
589# CONFIG_YELLOWFIN is not set 659# CONFIG_YELLOWFIN is not set
@@ -594,6 +664,9 @@ CONFIG_NETDEV_1000=y
594# CONFIG_VIA_VELOCITY is not set 664# CONFIG_VIA_VELOCITY is not set
595# CONFIG_TIGON3 is not set 665# CONFIG_TIGON3 is not set
596# CONFIG_BNX2 is not set 666# CONFIG_BNX2 is not set
667# CONFIG_CNIC is not set
668# CONFIG_MV643XX_ETH is not set
669# CONFIG_XILINX_LL_TEMAC is not set
597# CONFIG_QLA3XXX is not set 670# CONFIG_QLA3XXX is not set
598# CONFIG_ATL1 is not set 671# CONFIG_ATL1 is not set
599# CONFIG_ATL1E is not set 672# CONFIG_ATL1E is not set
@@ -619,12 +692,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y
619# CONFIG_SFC is not set 692# CONFIG_SFC is not set
620# CONFIG_BE2NET is not set 693# CONFIG_BE2NET is not set
621# CONFIG_TR is not set 694# CONFIG_TR is not set
622 695CONFIG_WLAN=y
623# 696# CONFIG_AIRO is not set
624# Wireless LAN 697# CONFIG_ATMEL is not set
625# 698# CONFIG_PRISM54 is not set
626# CONFIG_WLAN_PRE80211 is not set 699# CONFIG_HOSTAP is not set
627# CONFIG_WLAN_80211 is not set
628 700
629# 701#
630# Enable WiMAX (Networking options) to see the WiMAX drivers 702# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -637,6 +709,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
637# CONFIG_NETCONSOLE is not set 709# CONFIG_NETCONSOLE is not set
638# CONFIG_NETPOLL is not set 710# CONFIG_NETPOLL is not set
639# CONFIG_NET_POLL_CONTROLLER is not set 711# CONFIG_NET_POLL_CONTROLLER is not set
712# CONFIG_VMXNET3 is not set
640# CONFIG_ISDN is not set 713# CONFIG_ISDN is not set
641# CONFIG_PHONE is not set 714# CONFIG_PHONE is not set
642 715
@@ -682,6 +755,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
682# CONFIG_SERIAL_JSM is not set 755# CONFIG_SERIAL_JSM is not set
683CONFIG_SERIAL_OF_PLATFORM=y 756CONFIG_SERIAL_OF_PLATFORM=y
684# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set 757# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
758# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
685CONFIG_UNIX98_PTYS=y 759CONFIG_UNIX98_PTYS=y
686# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 760# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
687CONFIG_LEGACY_PTYS=y 761CONFIG_LEGACY_PTYS=y
@@ -698,6 +772,11 @@ CONFIG_LEGACY_PTY_COUNT=256
698CONFIG_DEVPORT=y 772CONFIG_DEVPORT=y
699# CONFIG_I2C is not set 773# CONFIG_I2C is not set
700# CONFIG_SPI is not set 774# CONFIG_SPI is not set
775
776#
777# PPS support
778#
779# CONFIG_PPS is not set
701CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 780CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
702# CONFIG_GPIOLIB is not set 781# CONFIG_GPIOLIB is not set
703# CONFIG_W1 is not set 782# CONFIG_W1 is not set
@@ -720,27 +799,13 @@ CONFIG_SSB_POSSIBLE=y
720# CONFIG_HTC_PASIC3 is not set 799# CONFIG_HTC_PASIC3 is not set
721# CONFIG_MFD_TMIO is not set 800# CONFIG_MFD_TMIO is not set
722# CONFIG_REGULATOR is not set 801# CONFIG_REGULATOR is not set
723 802# CONFIG_MEDIA_SUPPORT is not set
724#
725# Multimedia devices
726#
727
728#
729# Multimedia core support
730#
731# CONFIG_VIDEO_DEV is not set
732# CONFIG_DVB_CORE is not set
733# CONFIG_VIDEO_MEDIA is not set
734
735#
736# Multimedia drivers
737#
738CONFIG_DAB=y
739 803
740# 804#
741# Graphics support 805# Graphics support
742# 806#
743# CONFIG_AGP is not set 807# CONFIG_AGP is not set
808CONFIG_VGA_ARB=y
744# CONFIG_DRM is not set 809# CONFIG_DRM is not set
745# CONFIG_VGASTATE is not set 810# CONFIG_VGASTATE is not set
746CONFIG_VIDEO_OUTPUT_CONTROL=m 811CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -783,6 +848,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
783# CONFIG_DMADEVICES is not set 848# CONFIG_DMADEVICES is not set
784# CONFIG_AUXDISPLAY is not set 849# CONFIG_AUXDISPLAY is not set
785# CONFIG_UIO is not set 850# CONFIG_UIO is not set
851
852#
853# TI VLYNQ
854#
786# CONFIG_STAGING is not set 855# CONFIG_STAGING is not set
787 856
788# 857#
@@ -793,14 +862,17 @@ CONFIG_EXT2_FS=y
793# CONFIG_EXT2_FS_XIP is not set 862# CONFIG_EXT2_FS_XIP is not set
794# CONFIG_EXT3_FS is not set 863# CONFIG_EXT3_FS is not set
795# CONFIG_EXT4_FS is not set 864# CONFIG_EXT4_FS is not set
865CONFIG_EXT4_USE_FOR_EXT23=y
796# CONFIG_REISERFS_FS is not set 866# CONFIG_REISERFS_FS is not set
797# CONFIG_JFS_FS is not set 867# CONFIG_JFS_FS is not set
798# CONFIG_FS_POSIX_ACL is not set 868# CONFIG_FS_POSIX_ACL is not set
799CONFIG_FILE_LOCKING=y
800# CONFIG_XFS_FS is not set 869# CONFIG_XFS_FS is not set
801# CONFIG_GFS2_FS is not set 870# CONFIG_GFS2_FS is not set
802# CONFIG_OCFS2_FS is not set 871# CONFIG_OCFS2_FS is not set
803# CONFIG_BTRFS_FS is not set 872# CONFIG_BTRFS_FS is not set
873# CONFIG_NILFS2_FS is not set
874CONFIG_FILE_LOCKING=y
875CONFIG_FSNOTIFY=y
804CONFIG_DNOTIFY=y 876CONFIG_DNOTIFY=y
805CONFIG_INOTIFY=y 877CONFIG_INOTIFY=y
806CONFIG_INOTIFY_USER=y 878CONFIG_INOTIFY_USER=y
@@ -916,6 +988,7 @@ CONFIG_HAS_IOPORT=y
916CONFIG_HAS_DMA=y 988CONFIG_HAS_DMA=y
917CONFIG_HAVE_LMB=y 989CONFIG_HAVE_LMB=y
918CONFIG_NLATTR=y 990CONFIG_NLATTR=y
991CONFIG_GENERIC_ATOMIC64=y
919 992
920# 993#
921# Kernel hacking 994# Kernel hacking
@@ -925,6 +998,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
925CONFIG_ENABLE_MUST_CHECK=y 998CONFIG_ENABLE_MUST_CHECK=y
926CONFIG_FRAME_WARN=1024 999CONFIG_FRAME_WARN=1024
927CONFIG_MAGIC_SYSRQ=y 1000CONFIG_MAGIC_SYSRQ=y
1001# CONFIG_STRIP_ASM_SYMS is not set
928# CONFIG_UNUSED_SYMBOLS is not set 1002# CONFIG_UNUSED_SYMBOLS is not set
929CONFIG_DEBUG_FS=y 1003CONFIG_DEBUG_FS=y
930# CONFIG_HEADERS_CHECK is not set 1004# CONFIG_HEADERS_CHECK is not set
@@ -933,16 +1007,23 @@ CONFIG_DEBUG_KERNEL=y
933CONFIG_DETECT_SOFTLOCKUP=y 1007CONFIG_DETECT_SOFTLOCKUP=y
934# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1008# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
935CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1009CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1010CONFIG_DETECT_HUNG_TASK=y
1011# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1012CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
936CONFIG_SCHED_DEBUG=y 1013CONFIG_SCHED_DEBUG=y
937# CONFIG_SCHEDSTATS is not set 1014# CONFIG_SCHEDSTATS is not set
938# CONFIG_TIMER_STATS is not set 1015# CONFIG_TIMER_STATS is not set
939# CONFIG_DEBUG_OBJECTS is not set 1016# CONFIG_DEBUG_OBJECTS is not set
940# CONFIG_SLUB_DEBUG_ON is not set 1017# CONFIG_SLUB_DEBUG_ON is not set
941# CONFIG_SLUB_STATS is not set 1018# CONFIG_SLUB_STATS is not set
1019# CONFIG_DEBUG_KMEMLEAK is not set
942# CONFIG_DEBUG_RT_MUTEXES is not set 1020# CONFIG_DEBUG_RT_MUTEXES is not set
943# CONFIG_RT_MUTEX_TESTER is not set 1021# CONFIG_RT_MUTEX_TESTER is not set
944# CONFIG_DEBUG_SPINLOCK is not set 1022# CONFIG_DEBUG_SPINLOCK is not set
945# CONFIG_DEBUG_MUTEXES is not set 1023# CONFIG_DEBUG_MUTEXES is not set
1024# CONFIG_DEBUG_LOCK_ALLOC is not set
1025# CONFIG_PROVE_LOCKING is not set
1026# CONFIG_LOCK_STAT is not set
946# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1027# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
947# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1028# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
948# CONFIG_DEBUG_KOBJECT is not set 1029# CONFIG_DEBUG_KOBJECT is not set
@@ -954,11 +1035,12 @@ CONFIG_SCHED_DEBUG=y
954# CONFIG_DEBUG_LIST is not set 1035# CONFIG_DEBUG_LIST is not set
955# CONFIG_DEBUG_SG is not set 1036# CONFIG_DEBUG_SG is not set
956# CONFIG_DEBUG_NOTIFIERS is not set 1037# CONFIG_DEBUG_NOTIFIERS is not set
957# CONFIG_BOOT_PRINTK_DELAY is not set 1038# CONFIG_DEBUG_CREDENTIALS is not set
958# CONFIG_RCU_TORTURE_TEST is not set 1039# CONFIG_RCU_TORTURE_TEST is not set
959# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1040# CONFIG_RCU_CPU_STALL_DETECTOR is not set
960# CONFIG_BACKTRACE_SELF_TEST is not set 1041# CONFIG_BACKTRACE_SELF_TEST is not set
961# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1042# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1043# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
962# CONFIG_FAULT_INJECTION is not set 1044# CONFIG_FAULT_INJECTION is not set
963# CONFIG_LATENCYTOP is not set 1045# CONFIG_LATENCYTOP is not set
964CONFIG_SYSCTL_SYSCALL_CHECK=y 1046CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -968,27 +1050,30 @@ CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
968CONFIG_HAVE_DYNAMIC_FTRACE=y 1050CONFIG_HAVE_DYNAMIC_FTRACE=y
969CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1051CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
970CONFIG_TRACING_SUPPORT=y 1052CONFIG_TRACING_SUPPORT=y
971 1053CONFIG_FTRACE=y
972#
973# Tracers
974#
975# CONFIG_FUNCTION_TRACER is not set 1054# CONFIG_FUNCTION_TRACER is not set
1055# CONFIG_IRQSOFF_TRACER is not set
976# CONFIG_SCHED_TRACER is not set 1056# CONFIG_SCHED_TRACER is not set
977# CONFIG_CONTEXT_SWITCH_TRACER is not set 1057# CONFIG_ENABLE_DEFAULT_TRACERS is not set
978# CONFIG_EVENT_TRACER is not set
979# CONFIG_BOOT_TRACER is not set 1058# CONFIG_BOOT_TRACER is not set
980# CONFIG_TRACE_BRANCH_PROFILING is not set 1059CONFIG_BRANCH_PROFILE_NONE=y
1060# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1061# CONFIG_PROFILE_ALL_BRANCHES is not set
981# CONFIG_STACK_TRACER is not set 1062# CONFIG_STACK_TRACER is not set
982# CONFIG_KMEMTRACE is not set 1063# CONFIG_KMEMTRACE is not set
983# CONFIG_WORKQUEUE_TRACER is not set 1064# CONFIG_WORKQUEUE_TRACER is not set
984# CONFIG_BLK_DEV_IO_TRACE is not set 1065# CONFIG_BLK_DEV_IO_TRACE is not set
985# CONFIG_DYNAMIC_DEBUG is not set 1066# CONFIG_DYNAMIC_DEBUG is not set
1067# CONFIG_DMA_API_DEBUG is not set
986# CONFIG_SAMPLES is not set 1068# CONFIG_SAMPLES is not set
987CONFIG_HAVE_ARCH_KGDB=y 1069CONFIG_HAVE_ARCH_KGDB=y
988# CONFIG_KGDB is not set 1070# CONFIG_KGDB is not set
1071# CONFIG_PPC_DISABLE_WERROR is not set
1072CONFIG_PPC_WERROR=y
989CONFIG_PRINT_STACK_DEPTH=64 1073CONFIG_PRINT_STACK_DEPTH=64
990# CONFIG_DEBUG_STACKOVERFLOW is not set 1074# CONFIG_DEBUG_STACKOVERFLOW is not set
991# CONFIG_DEBUG_STACK_USAGE is not set 1075# CONFIG_DEBUG_STACK_USAGE is not set
1076# CONFIG_PPC_EMULATED_STATS is not set
992# CONFIG_CODE_PATCHING_SELFTEST is not set 1077# CONFIG_CODE_PATCHING_SELFTEST is not set
993# CONFIG_FTR_FIXUP_SELFTEST is not set 1078# CONFIG_FTR_FIXUP_SELFTEST is not set
994# CONFIG_MSI_BITMAP_SELFTEST is not set 1079# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -1004,13 +1089,16 @@ CONFIG_PRINT_STACK_DEPTH=64
1004# CONFIG_KEYS is not set 1089# CONFIG_KEYS is not set
1005# CONFIG_SECURITY is not set 1090# CONFIG_SECURITY is not set
1006# CONFIG_SECURITYFS is not set 1091# CONFIG_SECURITYFS is not set
1007# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1092# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1093# CONFIG_DEFAULT_SECURITY_SMACK is not set
1094# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1095CONFIG_DEFAULT_SECURITY_DAC=y
1096CONFIG_DEFAULT_SECURITY=""
1008CONFIG_CRYPTO=y 1097CONFIG_CRYPTO=y
1009 1098
1010# 1099#
1011# Crypto core or helper 1100# Crypto core or helper
1012# 1101#
1013# CONFIG_CRYPTO_FIPS is not set
1014CONFIG_CRYPTO_ALGAPI=y 1102CONFIG_CRYPTO_ALGAPI=y
1015CONFIG_CRYPTO_ALGAPI2=y 1103CONFIG_CRYPTO_ALGAPI2=y
1016CONFIG_CRYPTO_AEAD2=y 1104CONFIG_CRYPTO_AEAD2=y
@@ -1052,11 +1140,13 @@ CONFIG_CRYPTO_PCBC=y
1052# 1140#
1053# CONFIG_CRYPTO_HMAC is not set 1141# CONFIG_CRYPTO_HMAC is not set
1054# CONFIG_CRYPTO_XCBC is not set 1142# CONFIG_CRYPTO_XCBC is not set
1143# CONFIG_CRYPTO_VMAC is not set
1055 1144
1056# 1145#
1057# Digest 1146# Digest
1058# 1147#
1059# CONFIG_CRYPTO_CRC32C is not set 1148# CONFIG_CRYPTO_CRC32C is not set
1149# CONFIG_CRYPTO_GHASH is not set
1060# CONFIG_CRYPTO_MD4 is not set 1150# CONFIG_CRYPTO_MD4 is not set
1061CONFIG_CRYPTO_MD5=y 1151CONFIG_CRYPTO_MD5=y
1062# CONFIG_CRYPTO_MICHAEL_MIC is not set 1152# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/44x/taishan_defconfig b/arch/powerpc/configs/44x/taishan_defconfig
index ef32cc4f82eb..12041d355b8c 100644
--- a/arch/powerpc/configs/44x/taishan_defconfig
+++ b/arch/powerpc/configs/44x/taishan_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.29-rc2 3# Linux kernel version: 2.6.33-rc1
4# Tue Jan 20 08:22:47 2009 4# Mon Jan 4 15:21:04 2010
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#
11# CONFIG_6xx is not set 11# CONFIG_PPC_BOOK3S_32 is not set
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
@@ -19,6 +19,7 @@ CONFIG_BOOKE=y
19CONFIG_PTE_64BIT=y 19CONFIG_PTE_64BIT=y
20CONFIG_PHYS_64BIT=y 20CONFIG_PHYS_64BIT=y
21CONFIG_PPC_MMU_NOHASH=y 21CONFIG_PPC_MMU_NOHASH=y
22CONFIG_PPC_MMU_NOHASH_32=y
22# CONFIG_PPC_MM_SLICES is not set 23# CONFIG_PPC_MM_SLICES is not set
23CONFIG_NOT_COHERENT_CACHE=y 24CONFIG_NOT_COHERENT_CACHE=y
24CONFIG_PPC32=y 25CONFIG_PPC32=y
@@ -30,15 +31,18 @@ CONFIG_GENERIC_TIME=y
30CONFIG_GENERIC_TIME_VSYSCALL=y 31CONFIG_GENERIC_TIME_VSYSCALL=y
31CONFIG_GENERIC_CLOCKEVENTS=y 32CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 33CONFIG_GENERIC_HARDIRQS=y
34CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 35# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
36# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
34CONFIG_IRQ_PER_CPU=y 37CONFIG_IRQ_PER_CPU=y
38CONFIG_NR_IRQS=512
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,15 @@ CONFIG_PPC_UDBG_16550=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
55# CONFIG_DEFAULT_UIMAGE is not set 60# CONFIG_DEFAULT_UIMAGE is not set
61CONFIG_ARCH_HIBERNATION_POSSIBLE=y
56CONFIG_PPC_DCR_NATIVE=y 62CONFIG_PPC_DCR_NATIVE=y
57# CONFIG_PPC_DCR_MMIO is not set 63# CONFIG_PPC_DCR_MMIO is not set
58CONFIG_PPC_DCR=y 64CONFIG_PPC_DCR=y
65CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
59CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 66CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
67CONFIG_CONSTRUCTORS=y
60 68
61# 69#
62# General setup 70# General setup
@@ -70,9 +78,21 @@ CONFIG_SWAP=y
70CONFIG_SYSVIPC=y 78CONFIG_SYSVIPC=y
71CONFIG_SYSVIPC_SYSCTL=y 79CONFIG_SYSVIPC_SYSCTL=y
72CONFIG_POSIX_MQUEUE=y 80CONFIG_POSIX_MQUEUE=y
81CONFIG_POSIX_MQUEUE_SYSCTL=y
73# CONFIG_BSD_PROCESS_ACCT is not set 82# CONFIG_BSD_PROCESS_ACCT is not set
74# CONFIG_TASKSTATS is not set 83# CONFIG_TASKSTATS is not set
75# CONFIG_AUDIT is not set 84# CONFIG_AUDIT is not set
85
86#
87# RCU Subsystem
88#
89CONFIG_TREE_RCU=y
90# CONFIG_TREE_PREEMPT_RCU is not set
91# CONFIG_TINY_RCU is not set
92# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set
95# CONFIG_TREE_RCU_TRACE is not set
76# CONFIG_IKCONFIG is not set 96# CONFIG_IKCONFIG is not set
77CONFIG_LOG_BUF_SHIFT=14 97CONFIG_LOG_BUF_SHIFT=14
78CONFIG_GROUP_SCHED=y 98CONFIG_GROUP_SCHED=y
@@ -87,8 +107,12 @@ CONFIG_SYSFS_DEPRECATED_V2=y
87# CONFIG_NAMESPACES is not set 107# CONFIG_NAMESPACES is not set
88CONFIG_BLK_DEV_INITRD=y 108CONFIG_BLK_DEV_INITRD=y
89CONFIG_INITRAMFS_SOURCE="" 109CONFIG_INITRAMFS_SOURCE=""
110CONFIG_RD_GZIP=y
111# CONFIG_RD_BZIP2 is not set
112# CONFIG_RD_LZMA is not set
90# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 113# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
91CONFIG_SYSCTL=y 114CONFIG_SYSCTL=y
115CONFIG_ANON_INODES=y
92CONFIG_EMBEDDED=y 116CONFIG_EMBEDDED=y
93CONFIG_SYSCTL_SYSCALL=y 117CONFIG_SYSCTL_SYSCALL=y
94CONFIG_KALLSYMS=y 118CONFIG_KALLSYMS=y
@@ -98,19 +122,25 @@ CONFIG_HOTPLUG=y
98CONFIG_PRINTK=y 122CONFIG_PRINTK=y
99CONFIG_BUG=y 123CONFIG_BUG=y
100CONFIG_ELF_CORE=y 124CONFIG_ELF_CORE=y
101CONFIG_COMPAT_BRK=y
102CONFIG_BASE_FULL=y 125CONFIG_BASE_FULL=y
103CONFIG_FUTEX=y 126CONFIG_FUTEX=y
104CONFIG_ANON_INODES=y
105CONFIG_EPOLL=y 127CONFIG_EPOLL=y
106CONFIG_SIGNALFD=y 128CONFIG_SIGNALFD=y
107CONFIG_TIMERFD=y 129CONFIG_TIMERFD=y
108CONFIG_EVENTFD=y 130CONFIG_EVENTFD=y
109CONFIG_SHMEM=y 131CONFIG_SHMEM=y
110CONFIG_AIO=y 132CONFIG_AIO=y
133CONFIG_HAVE_PERF_EVENTS=y
134
135#
136# Kernel Performance Events And Counters
137#
138# CONFIG_PERF_EVENTS is not set
139# CONFIG_PERF_COUNTERS is not set
111CONFIG_VM_EVENT_COUNTERS=y 140CONFIG_VM_EVENT_COUNTERS=y
112CONFIG_PCI_QUIRKS=y 141CONFIG_PCI_QUIRKS=y
113CONFIG_SLUB_DEBUG=y 142CONFIG_SLUB_DEBUG=y
143CONFIG_COMPAT_BRK=y
114# CONFIG_SLAB is not set 144# CONFIG_SLAB is not set
115CONFIG_SLUB=y 145CONFIG_SLUB=y
116# CONFIG_SLOB is not set 146# CONFIG_SLOB is not set
@@ -122,6 +152,14 @@ CONFIG_HAVE_IOREMAP_PROT=y
122CONFIG_HAVE_KPROBES=y 152CONFIG_HAVE_KPROBES=y
123CONFIG_HAVE_KRETPROBES=y 153CONFIG_HAVE_KRETPROBES=y
124CONFIG_HAVE_ARCH_TRACEHOOK=y 154CONFIG_HAVE_ARCH_TRACEHOOK=y
155CONFIG_HAVE_DMA_ATTRS=y
156CONFIG_HAVE_DMA_API_DEBUG=y
157
158#
159# GCOV-based kernel profiling
160#
161# CONFIG_GCOV_KERNEL is not set
162# CONFIG_SLOW_WORK is not set
125# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 163# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
126CONFIG_SLABINFO=y 164CONFIG_SLABINFO=y
127CONFIG_RT_MUTEXES=y 165CONFIG_RT_MUTEXES=y
@@ -133,8 +171,7 @@ CONFIG_MODULE_UNLOAD=y
133# CONFIG_MODVERSIONS is not set 171# CONFIG_MODVERSIONS is not set
134# CONFIG_MODULE_SRCVERSION_ALL is not set 172# CONFIG_MODULE_SRCVERSION_ALL is not set
135CONFIG_BLOCK=y 173CONFIG_BLOCK=y
136CONFIG_LBD=y 174CONFIG_LBDAF=y
137# CONFIG_BLK_DEV_IO_TRACE is not set
138# CONFIG_BLK_DEV_BSG is not set 175# CONFIG_BLK_DEV_BSG is not set
139# CONFIG_BLK_DEV_INTEGRITY is not set 176# CONFIG_BLK_DEV_INTEGRITY is not set
140 177
@@ -142,19 +179,41 @@ CONFIG_LBD=y
142# IO Schedulers 179# IO Schedulers
143# 180#
144CONFIG_IOSCHED_NOOP=y 181CONFIG_IOSCHED_NOOP=y
145CONFIG_IOSCHED_AS=y
146CONFIG_IOSCHED_DEADLINE=y 182CONFIG_IOSCHED_DEADLINE=y
147CONFIG_IOSCHED_CFQ=y 183CONFIG_IOSCHED_CFQ=y
148CONFIG_DEFAULT_AS=y
149# CONFIG_DEFAULT_DEADLINE is not set 184# CONFIG_DEFAULT_DEADLINE is not set
150# CONFIG_DEFAULT_CFQ is not set 185CONFIG_DEFAULT_CFQ=y
151# CONFIG_DEFAULT_NOOP is not set 186# CONFIG_DEFAULT_NOOP is not set
152CONFIG_DEFAULT_IOSCHED="anticipatory" 187CONFIG_DEFAULT_IOSCHED="cfq"
153CONFIG_CLASSIC_RCU=y 188# CONFIG_INLINE_SPIN_TRYLOCK is not set
154# CONFIG_TREE_RCU is not set 189# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
155# CONFIG_PREEMPT_RCU is not set 190# CONFIG_INLINE_SPIN_LOCK is not set
156# CONFIG_TREE_RCU_TRACE is not set 191# CONFIG_INLINE_SPIN_LOCK_BH is not set
157# CONFIG_PREEMPT_RCU_TRACE is not set 192# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
193# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
194CONFIG_INLINE_SPIN_UNLOCK=y
195# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
196CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
197# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
198# CONFIG_INLINE_READ_TRYLOCK is not set
199# CONFIG_INLINE_READ_LOCK is not set
200# CONFIG_INLINE_READ_LOCK_BH is not set
201# CONFIG_INLINE_READ_LOCK_IRQ is not set
202# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
203CONFIG_INLINE_READ_UNLOCK=y
204# CONFIG_INLINE_READ_UNLOCK_BH is not set
205CONFIG_INLINE_READ_UNLOCK_IRQ=y
206# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
207# CONFIG_INLINE_WRITE_TRYLOCK is not set
208# CONFIG_INLINE_WRITE_LOCK is not set
209# CONFIG_INLINE_WRITE_LOCK_BH is not set
210# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
211# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
212CONFIG_INLINE_WRITE_UNLOCK=y
213# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
214CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
215# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
216# CONFIG_MUTEX_SPIN_ON_OWNER is not set
158# CONFIG_FREEZER is not set 217# CONFIG_FREEZER is not set
159# CONFIG_PPC4xx_PCI_EXPRESS is not set 218# CONFIG_PPC4xx_PCI_EXPRESS is not set
160 219
@@ -175,6 +234,8 @@ CONFIG_TAISHAN=y
175# CONFIG_ARCHES is not set 234# CONFIG_ARCHES is not set
176# CONFIG_CANYONLANDS is not set 235# CONFIG_CANYONLANDS is not set
177# CONFIG_GLACIER is not set 236# CONFIG_GLACIER is not set
237# CONFIG_REDWOOD is not set
238# CONFIG_EIGER is not set
178# CONFIG_YOSEMITE is not set 239# CONFIG_YOSEMITE is not set
179# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set 240# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set
180CONFIG_PPC44x_SIMPLE=y 241CONFIG_PPC44x_SIMPLE=y
@@ -216,10 +277,12 @@ CONFIG_BINFMT_ELF=y
216# CONFIG_BINFMT_MISC is not set 277# CONFIG_BINFMT_MISC is not set
217# CONFIG_MATH_EMULATION is not set 278# CONFIG_MATH_EMULATION is not set
218# CONFIG_IOMMU_HELPER is not set 279# CONFIG_IOMMU_HELPER is not set
219CONFIG_PPC_NEED_DMA_SYNC_OPS=y 280# CONFIG_SWIOTLB is not set
220CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 281CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
221CONFIG_ARCH_HAS_WALK_MEMORY=y 282CONFIG_ARCH_HAS_WALK_MEMORY=y
222CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 283CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
284CONFIG_SPARSE_IRQ=y
285CONFIG_MAX_ACTIVE_REGIONS=32
223CONFIG_ARCH_FLATMEM_ENABLE=y 286CONFIG_ARCH_FLATMEM_ENABLE=y
224CONFIG_ARCH_POPULATES_NODE_MAP=y 287CONFIG_ARCH_POPULATES_NODE_MAP=y
225CONFIG_SELECT_MEMORY_MODEL=y 288CONFIG_SELECT_MEMORY_MODEL=y
@@ -235,10 +298,13 @@ CONFIG_PHYS_ADDR_T_64BIT=y
235CONFIG_ZONE_DMA_FLAG=1 298CONFIG_ZONE_DMA_FLAG=1
236CONFIG_BOUNCE=y 299CONFIG_BOUNCE=y
237CONFIG_VIRT_TO_BUS=y 300CONFIG_VIRT_TO_BUS=y
238CONFIG_UNEVICTABLE_LRU=y 301# CONFIG_KSM is not set
302CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
303CONFIG_STDBINUTILS=y
239CONFIG_PPC_4K_PAGES=y 304CONFIG_PPC_4K_PAGES=y
240# CONFIG_PPC_16K_PAGES is not set 305# CONFIG_PPC_16K_PAGES is not set
241# CONFIG_PPC_64K_PAGES is not set 306# CONFIG_PPC_64K_PAGES is not set
307# CONFIG_PPC_256K_PAGES is not set
242CONFIG_FORCE_MAX_ZONEORDER=11 308CONFIG_FORCE_MAX_ZONEORDER=11
243CONFIG_PROC_DEVICETREE=y 309CONFIG_PROC_DEVICETREE=y
244CONFIG_CMDLINE_BOOL=y 310CONFIG_CMDLINE_BOOL=y
@@ -263,6 +329,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
263# CONFIG_PCI_LEGACY is not set 329# CONFIG_PCI_LEGACY is not set
264# CONFIG_PCI_DEBUG is not set 330# CONFIG_PCI_DEBUG is not set
265# CONFIG_PCI_STUB is not set 331# CONFIG_PCI_STUB is not set
332# CONFIG_PCI_IOV is not set
266# CONFIG_PCCARD is not set 333# CONFIG_PCCARD is not set
267# CONFIG_HOTPLUG_PCI is not set 334# CONFIG_HOTPLUG_PCI is not set
268# CONFIG_HAS_RAPIDIO is not set 335# CONFIG_HAS_RAPIDIO is not set
@@ -280,14 +347,12 @@ CONFIG_PAGE_OFFSET=0xc0000000
280CONFIG_KERNEL_START=0xc0000000 347CONFIG_KERNEL_START=0xc0000000
281CONFIG_PHYSICAL_START=0x00000000 348CONFIG_PHYSICAL_START=0x00000000
282CONFIG_TASK_SIZE=0xc0000000 349CONFIG_TASK_SIZE=0xc0000000
283CONFIG_CONSISTENT_START=0xff100000
284CONFIG_CONSISTENT_SIZE=0x00200000 350CONFIG_CONSISTENT_SIZE=0x00200000
285CONFIG_NET=y 351CONFIG_NET=y
286 352
287# 353#
288# Networking options 354# Networking options
289# 355#
290CONFIG_COMPAT_NET_DEV_OPS=y
291CONFIG_PACKET=y 356CONFIG_PACKET=y
292# CONFIG_PACKET_MMAP is not set 357# CONFIG_PACKET_MMAP is not set
293CONFIG_UNIX=y 358CONFIG_UNIX=y
@@ -324,6 +389,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
324# CONFIG_NETFILTER is not set 389# CONFIG_NETFILTER is not set
325# CONFIG_IP_DCCP is not set 390# CONFIG_IP_DCCP is not set
326# CONFIG_IP_SCTP is not set 391# CONFIG_IP_SCTP is not set
392# CONFIG_RDS is not set
327# CONFIG_TIPC is not set 393# CONFIG_TIPC is not set
328# CONFIG_ATM is not set 394# CONFIG_ATM is not set
329# CONFIG_BRIDGE is not set 395# CONFIG_BRIDGE is not set
@@ -337,6 +403,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
337# CONFIG_LAPB is not set 403# CONFIG_LAPB is not set
338# CONFIG_ECONET is not set 404# CONFIG_ECONET is not set
339# CONFIG_WAN_ROUTER is not set 405# CONFIG_WAN_ROUTER is not set
406# CONFIG_PHONET is not set
407# CONFIG_IEEE802154 is not set
340# CONFIG_NET_SCHED is not set 408# CONFIG_NET_SCHED is not set
341# CONFIG_DCB is not set 409# CONFIG_DCB is not set
342 410
@@ -349,8 +417,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
349# CONFIG_IRDA is not set 417# CONFIG_IRDA is not set
350# CONFIG_BT is not set 418# CONFIG_BT is not set
351# CONFIG_AF_RXRPC is not set 419# CONFIG_AF_RXRPC is not set
352# CONFIG_PHONET is not set 420CONFIG_WIRELESS=y
353# CONFIG_WIRELESS is not set 421# CONFIG_CFG80211 is not set
422# CONFIG_LIB80211 is not set
423
424#
425# CFG80211 needs to be enabled for MAC80211
426#
354# CONFIG_WIMAX is not set 427# CONFIG_WIMAX is not set
355# CONFIG_RFKILL is not set 428# CONFIG_RFKILL is not set
356# CONFIG_NET_9P is not set 429# CONFIG_NET_9P is not set
@@ -363,6 +436,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
363# Generic Driver Options 436# Generic Driver Options
364# 437#
365CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 438CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
439# CONFIG_DEVTMPFS is not set
366CONFIG_STANDALONE=y 440CONFIG_STANDALONE=y
367CONFIG_PREVENT_FIRMWARE_BUILD=y 441CONFIG_PREVENT_FIRMWARE_BUILD=y
368CONFIG_FW_LOADER=y 442CONFIG_FW_LOADER=y
@@ -375,9 +449,9 @@ CONFIG_CONNECTOR=y
375CONFIG_PROC_EVENTS=y 449CONFIG_PROC_EVENTS=y
376CONFIG_MTD=y 450CONFIG_MTD=y
377# CONFIG_MTD_DEBUG is not set 451# CONFIG_MTD_DEBUG is not set
452# CONFIG_MTD_TESTS is not set
378# CONFIG_MTD_CONCAT is not set 453# CONFIG_MTD_CONCAT is not set
379CONFIG_MTD_PARTITIONS=y 454CONFIG_MTD_PARTITIONS=y
380# CONFIG_MTD_TESTS is not set
381# CONFIG_MTD_REDBOOT_PARTS is not set 455# CONFIG_MTD_REDBOOT_PARTS is not set
382CONFIG_MTD_CMDLINE_PARTS=y 456CONFIG_MTD_CMDLINE_PARTS=y
383# CONFIG_MTD_OF_PARTS is not set 457# CONFIG_MTD_OF_PARTS is not set
@@ -453,7 +527,6 @@ CONFIG_MTD_PHYSMAP_OF=y
453# LPDDR flash memory drivers 527# LPDDR flash memory drivers
454# 528#
455# CONFIG_MTD_LPDDR is not set 529# CONFIG_MTD_LPDDR is not set
456# CONFIG_MTD_QINFO_PROBE is not set
457 530
458# 531#
459# UBI - Unsorted block images 532# UBI - Unsorted block images
@@ -469,6 +542,7 @@ CONFIG_BLK_DEV=y
469# CONFIG_BLK_DEV_UMEM is not set 542# CONFIG_BLK_DEV_UMEM is not set
470# CONFIG_BLK_DEV_COW_COMMON is not set 543# CONFIG_BLK_DEV_COW_COMMON is not set
471# CONFIG_BLK_DEV_LOOP is not set 544# CONFIG_BLK_DEV_LOOP is not set
545# CONFIG_BLK_DEV_DRBD is not set
472# CONFIG_BLK_DEV_NBD is not set 546# CONFIG_BLK_DEV_NBD is not set
473# CONFIG_BLK_DEV_SX8 is not set 547# CONFIG_BLK_DEV_SX8 is not set
474CONFIG_BLK_DEV_RAM=y 548CONFIG_BLK_DEV_RAM=y
@@ -481,12 +555,17 @@ CONFIG_BLK_DEV_RAM_SIZE=35000
481# CONFIG_BLK_DEV_HD is not set 555# CONFIG_BLK_DEV_HD is not set
482CONFIG_MISC_DEVICES=y 556CONFIG_MISC_DEVICES=y
483# CONFIG_PHANTOM is not set 557# CONFIG_PHANTOM is not set
484# CONFIG_EEPROM_93CX6 is not set
485# CONFIG_SGI_IOC4 is not set 558# CONFIG_SGI_IOC4 is not set
486# CONFIG_TIFM_CORE is not set 559# CONFIG_TIFM_CORE is not set
487# CONFIG_ENCLOSURE_SERVICES is not set 560# CONFIG_ENCLOSURE_SERVICES is not set
488# CONFIG_HP_ILO is not set 561# CONFIG_HP_ILO is not set
489# CONFIG_C2PORT is not set 562# CONFIG_C2PORT is not set
563
564#
565# EEPROM support
566#
567# CONFIG_EEPROM_93CX6 is not set
568# CONFIG_CB710_CORE is not set
490CONFIG_HAVE_IDE=y 569CONFIG_HAVE_IDE=y
491# CONFIG_IDE is not set 570# CONFIG_IDE is not set
492 571
@@ -506,7 +585,11 @@ CONFIG_HAVE_IDE=y
506# 585#
507 586
508# 587#
509# Enable only one of the two stacks, unless you know what you are doing 588# You can enable one or both FireWire driver stacks.
589#
590
591#
592# See the help texts for more information.
510# 593#
511# CONFIG_FIREWIRE is not set 594# CONFIG_FIREWIRE is not set
512# CONFIG_IEEE1394 is not set 595# CONFIG_IEEE1394 is not set
@@ -529,6 +612,8 @@ CONFIG_NET_ETHERNET=y
529# CONFIG_SUNGEM is not set 612# CONFIG_SUNGEM is not set
530# CONFIG_CASSINI is not set 613# CONFIG_CASSINI is not set
531# CONFIG_NET_VENDOR_3COM is not set 614# CONFIG_NET_VENDOR_3COM is not set
615# CONFIG_ETHOC is not set
616# CONFIG_DNET is not set
532# CONFIG_NET_TULIP is not set 617# CONFIG_NET_TULIP is not set
533# CONFIG_HP100 is not set 618# CONFIG_HP100 is not set
534CONFIG_IBM_NEW_EMAC=y 619CONFIG_IBM_NEW_EMAC=y
@@ -547,7 +632,10 @@ CONFIG_IBM_NEW_EMAC_EMAC4=y
547# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 632# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
548# CONFIG_NET_PCI is not set 633# CONFIG_NET_PCI is not set
549# CONFIG_B44 is not set 634# CONFIG_B44 is not set
635# CONFIG_KS8842 is not set
636# CONFIG_KS8851_MLL is not set
550# CONFIG_ATL2 is not set 637# CONFIG_ATL2 is not set
638# CONFIG_XILINX_EMACLITE is not set
551CONFIG_NETDEV_1000=y 639CONFIG_NETDEV_1000=y
552# CONFIG_ACENIC is not set 640# CONFIG_ACENIC is not set
553# CONFIG_DL2K is not set 641# CONFIG_DL2K is not set
@@ -555,6 +643,7 @@ CONFIG_NETDEV_1000=y
555# CONFIG_E1000E is not set 643# CONFIG_E1000E is not set
556# CONFIG_IP1000 is not set 644# CONFIG_IP1000 is not set
557# CONFIG_IGB is not set 645# CONFIG_IGB is not set
646# CONFIG_IGBVF is not set
558# CONFIG_NS83820 is not set 647# CONFIG_NS83820 is not set
559# CONFIG_HAMACHI is not set 648# CONFIG_HAMACHI is not set
560# CONFIG_YELLOWFIN is not set 649# CONFIG_YELLOWFIN is not set
@@ -565,9 +654,13 @@ CONFIG_NETDEV_1000=y
565# CONFIG_VIA_VELOCITY is not set 654# CONFIG_VIA_VELOCITY is not set
566# CONFIG_TIGON3 is not set 655# CONFIG_TIGON3 is not set
567# CONFIG_BNX2 is not set 656# CONFIG_BNX2 is not set
657# CONFIG_CNIC is not set
658# CONFIG_MV643XX_ETH is not set
659# CONFIG_XILINX_LL_TEMAC is not set
568# CONFIG_QLA3XXX is not set 660# CONFIG_QLA3XXX is not set
569# CONFIG_ATL1 is not set 661# CONFIG_ATL1 is not set
570# CONFIG_ATL1E is not set 662# CONFIG_ATL1E is not set
663# CONFIG_ATL1C is not set
571# CONFIG_JME is not set 664# CONFIG_JME is not set
572CONFIG_NETDEV_10000=y 665CONFIG_NETDEV_10000=y
573# CONFIG_CHELSIO_T1 is not set 666# CONFIG_CHELSIO_T1 is not set
@@ -577,6 +670,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
577# CONFIG_IXGBE is not set 670# CONFIG_IXGBE is not set
578# CONFIG_IXGB is not set 671# CONFIG_IXGB is not set
579# CONFIG_S2IO is not set 672# CONFIG_S2IO is not set
673# CONFIG_VXGE is not set
580# CONFIG_MYRI10GE is not set 674# CONFIG_MYRI10GE is not set
581# CONFIG_NETXEN_NIC is not set 675# CONFIG_NETXEN_NIC is not set
582# CONFIG_NIU is not set 676# CONFIG_NIU is not set
@@ -586,14 +680,13 @@ CONFIG_CHELSIO_T3_DEPENDS=y
586# CONFIG_BNX2X is not set 680# CONFIG_BNX2X is not set
587# CONFIG_QLGE is not set 681# CONFIG_QLGE is not set
588# CONFIG_SFC is not set 682# CONFIG_SFC is not set
683# CONFIG_BE2NET is not set
589# CONFIG_TR is not set 684# CONFIG_TR is not set
590 685CONFIG_WLAN=y
591# 686# CONFIG_AIRO is not set
592# Wireless LAN 687# CONFIG_ATMEL is not set
593# 688# CONFIG_PRISM54 is not set
594# CONFIG_WLAN_PRE80211 is not set 689# CONFIG_HOSTAP is not set
595# CONFIG_WLAN_80211 is not set
596# CONFIG_IWLWIFI_LEDS is not set
597 690
598# 691#
599# Enable WiMAX (Networking options) to see the WiMAX drivers 692# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -606,6 +699,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
606# CONFIG_NETCONSOLE is not set 699# CONFIG_NETCONSOLE is not set
607# CONFIG_NETPOLL is not set 700# CONFIG_NETPOLL is not set
608# CONFIG_NET_POLL_CONTROLLER is not set 701# CONFIG_NET_POLL_CONTROLLER is not set
702# CONFIG_VMXNET3 is not set
609# CONFIG_ISDN is not set 703# CONFIG_ISDN is not set
610# CONFIG_PHONE is not set 704# CONFIG_PHONE is not set
611 705
@@ -651,6 +745,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
651# CONFIG_SERIAL_JSM is not set 745# CONFIG_SERIAL_JSM is not set
652CONFIG_SERIAL_OF_PLATFORM=y 746CONFIG_SERIAL_OF_PLATFORM=y
653# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set 747# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
748# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
654CONFIG_UNIX98_PTYS=y 749CONFIG_UNIX98_PTYS=y
655# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 750# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
656CONFIG_LEGACY_PTYS=y 751CONFIG_LEGACY_PTYS=y
@@ -667,6 +762,11 @@ CONFIG_LEGACY_PTY_COUNT=256
667CONFIG_DEVPORT=y 762CONFIG_DEVPORT=y
668# CONFIG_I2C is not set 763# CONFIG_I2C is not set
669# CONFIG_SPI is not set 764# CONFIG_SPI is not set
765
766#
767# PPS support
768#
769# CONFIG_PPS is not set
670CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 770CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
671# CONFIG_GPIOLIB is not set 771# CONFIG_GPIOLIB is not set
672# CONFIG_W1 is not set 772# CONFIG_W1 is not set
@@ -689,27 +789,13 @@ CONFIG_SSB_POSSIBLE=y
689# CONFIG_HTC_PASIC3 is not set 789# CONFIG_HTC_PASIC3 is not set
690# CONFIG_MFD_TMIO is not set 790# CONFIG_MFD_TMIO is not set
691# CONFIG_REGULATOR is not set 791# CONFIG_REGULATOR is not set
692 792# CONFIG_MEDIA_SUPPORT is not set
693#
694# Multimedia devices
695#
696
697#
698# Multimedia core support
699#
700# CONFIG_VIDEO_DEV is not set
701# CONFIG_DVB_CORE is not set
702# CONFIG_VIDEO_MEDIA is not set
703
704#
705# Multimedia drivers
706#
707CONFIG_DAB=y
708 793
709# 794#
710# Graphics support 795# Graphics support
711# 796#
712# CONFIG_AGP is not set 797# CONFIG_AGP is not set
798CONFIG_VGA_ARB=y
713# CONFIG_DRM is not set 799# CONFIG_DRM is not set
714# CONFIG_VGASTATE is not set 800# CONFIG_VGASTATE is not set
715CONFIG_VIDEO_OUTPUT_CONTROL=m 801CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -734,7 +820,7 @@ CONFIG_USB_ARCH_HAS_EHCI=y
734# 820#
735 821
736# 822#
737# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 823# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
738# 824#
739# CONFIG_USB_GADGET is not set 825# CONFIG_USB_GADGET is not set
740 826
@@ -750,7 +836,12 @@ CONFIG_USB_ARCH_HAS_EHCI=y
750# CONFIG_EDAC is not set 836# CONFIG_EDAC is not set
751# CONFIG_RTC_CLASS is not set 837# CONFIG_RTC_CLASS is not set
752# CONFIG_DMADEVICES is not set 838# CONFIG_DMADEVICES is not set
839# CONFIG_AUXDISPLAY is not set
753# CONFIG_UIO is not set 840# CONFIG_UIO is not set
841
842#
843# TI VLYNQ
844#
754# CONFIG_STAGING is not set 845# CONFIG_STAGING is not set
755 846
756# 847#
@@ -761,14 +852,17 @@ CONFIG_EXT2_FS=y
761# CONFIG_EXT2_FS_XIP is not set 852# CONFIG_EXT2_FS_XIP is not set
762# CONFIG_EXT3_FS is not set 853# CONFIG_EXT3_FS is not set
763# CONFIG_EXT4_FS is not set 854# CONFIG_EXT4_FS is not set
855CONFIG_EXT4_USE_FOR_EXT23=y
764# CONFIG_REISERFS_FS is not set 856# CONFIG_REISERFS_FS is not set
765# CONFIG_JFS_FS is not set 857# CONFIG_JFS_FS is not set
766# CONFIG_FS_POSIX_ACL is not set 858# CONFIG_FS_POSIX_ACL is not set
767CONFIG_FILE_LOCKING=y
768# CONFIG_XFS_FS is not set 859# CONFIG_XFS_FS is not set
769# CONFIG_GFS2_FS is not set 860# CONFIG_GFS2_FS is not set
770# CONFIG_OCFS2_FS is not set 861# CONFIG_OCFS2_FS is not set
771# CONFIG_BTRFS_FS is not set 862# CONFIG_BTRFS_FS is not set
863# CONFIG_NILFS2_FS is not set
864CONFIG_FILE_LOCKING=y
865CONFIG_FSNOTIFY=y
772CONFIG_DNOTIFY=y 866CONFIG_DNOTIFY=y
773CONFIG_INOTIFY=y 867CONFIG_INOTIFY=y
774CONFIG_INOTIFY_USER=y 868CONFIG_INOTIFY_USER=y
@@ -778,6 +872,11 @@ CONFIG_INOTIFY_USER=y
778# CONFIG_FUSE_FS is not set 872# CONFIG_FUSE_FS is not set
779 873
780# 874#
875# Caches
876#
877# CONFIG_FSCACHE is not set
878
879#
781# CD-ROM/DVD Filesystems 880# CD-ROM/DVD Filesystems
782# 881#
783# CONFIG_ISO9660_FS is not set 882# CONFIG_ISO9660_FS is not set
@@ -832,7 +931,6 @@ CONFIG_LOCKD=y
832CONFIG_LOCKD_V4=y 931CONFIG_LOCKD_V4=y
833CONFIG_NFS_COMMON=y 932CONFIG_NFS_COMMON=y
834CONFIG_SUNRPC=y 933CONFIG_SUNRPC=y
835# CONFIG_SUNRPC_REGISTER_V4 is not set
836# CONFIG_RPCSEC_GSS_KRB5 is not set 934# CONFIG_RPCSEC_GSS_KRB5 is not set
837# CONFIG_RPCSEC_GSS_SPKM3 is not set 935# CONFIG_RPCSEC_GSS_SPKM3 is not set
838# CONFIG_SMB_FS is not set 936# CONFIG_SMB_FS is not set
@@ -848,6 +946,7 @@ CONFIG_SUNRPC=y
848CONFIG_MSDOS_PARTITION=y 946CONFIG_MSDOS_PARTITION=y
849# CONFIG_NLS is not set 947# CONFIG_NLS is not set
850# CONFIG_DLM is not set 948# CONFIG_DLM is not set
949# CONFIG_BINARY_PRINTF is not set
851 950
852# 951#
853# Library routines 952# Library routines
@@ -862,11 +961,13 @@ CONFIG_CRC32=y
862# CONFIG_CRC7 is not set 961# CONFIG_CRC7 is not set
863# CONFIG_LIBCRC32C is not set 962# CONFIG_LIBCRC32C is not set
864CONFIG_ZLIB_INFLATE=y 963CONFIG_ZLIB_INFLATE=y
865CONFIG_PLIST=y 964CONFIG_DECOMPRESS_GZIP=y
866CONFIG_HAS_IOMEM=y 965CONFIG_HAS_IOMEM=y
867CONFIG_HAS_IOPORT=y 966CONFIG_HAS_IOPORT=y
868CONFIG_HAS_DMA=y 967CONFIG_HAS_DMA=y
869CONFIG_HAVE_LMB=y 968CONFIG_HAVE_LMB=y
969CONFIG_NLATTR=y
970CONFIG_GENERIC_ATOMIC64=y
870 971
871# 972#
872# Kernel hacking 973# Kernel hacking
@@ -876,6 +977,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
876CONFIG_ENABLE_MUST_CHECK=y 977CONFIG_ENABLE_MUST_CHECK=y
877CONFIG_FRAME_WARN=1024 978CONFIG_FRAME_WARN=1024
878CONFIG_MAGIC_SYSRQ=y 979CONFIG_MAGIC_SYSRQ=y
980# CONFIG_STRIP_ASM_SYMS is not set
879# CONFIG_UNUSED_SYMBOLS is not set 981# CONFIG_UNUSED_SYMBOLS is not set
880CONFIG_DEBUG_FS=y 982CONFIG_DEBUG_FS=y
881# CONFIG_HEADERS_CHECK is not set 983# CONFIG_HEADERS_CHECK is not set
@@ -884,16 +986,23 @@ CONFIG_DEBUG_KERNEL=y
884CONFIG_DETECT_SOFTLOCKUP=y 986CONFIG_DETECT_SOFTLOCKUP=y
885# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 987# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
886CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 988CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
989CONFIG_DETECT_HUNG_TASK=y
990# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
991CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
887CONFIG_SCHED_DEBUG=y 992CONFIG_SCHED_DEBUG=y
888# CONFIG_SCHEDSTATS is not set 993# CONFIG_SCHEDSTATS is not set
889# CONFIG_TIMER_STATS is not set 994# CONFIG_TIMER_STATS is not set
890# CONFIG_DEBUG_OBJECTS is not set 995# CONFIG_DEBUG_OBJECTS is not set
891# CONFIG_SLUB_DEBUG_ON is not set 996# CONFIG_SLUB_DEBUG_ON is not set
892# CONFIG_SLUB_STATS is not set 997# CONFIG_SLUB_STATS is not set
998# CONFIG_DEBUG_KMEMLEAK is not set
893# CONFIG_DEBUG_RT_MUTEXES is not set 999# CONFIG_DEBUG_RT_MUTEXES is not set
894# CONFIG_RT_MUTEX_TESTER is not set 1000# CONFIG_RT_MUTEX_TESTER is not set
895# CONFIG_DEBUG_SPINLOCK is not set 1001# CONFIG_DEBUG_SPINLOCK is not set
896# CONFIG_DEBUG_MUTEXES is not set 1002# CONFIG_DEBUG_MUTEXES is not set
1003# CONFIG_DEBUG_LOCK_ALLOC is not set
1004# CONFIG_PROVE_LOCKING is not set
1005# CONFIG_LOCK_STAT is not set
897# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1006# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
898# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1007# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
899# CONFIG_DEBUG_KOBJECT is not set 1008# CONFIG_DEBUG_KOBJECT is not set
@@ -905,35 +1014,45 @@ CONFIG_SCHED_DEBUG=y
905# CONFIG_DEBUG_LIST is not set 1014# CONFIG_DEBUG_LIST is not set
906# CONFIG_DEBUG_SG is not set 1015# CONFIG_DEBUG_SG is not set
907# CONFIG_DEBUG_NOTIFIERS is not set 1016# CONFIG_DEBUG_NOTIFIERS is not set
908# CONFIG_BOOT_PRINTK_DELAY is not set 1017# CONFIG_DEBUG_CREDENTIALS is not set
909# CONFIG_RCU_TORTURE_TEST is not set 1018# CONFIG_RCU_TORTURE_TEST is not set
910# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1019# CONFIG_RCU_CPU_STALL_DETECTOR is not set
911# CONFIG_BACKTRACE_SELF_TEST is not set 1020# CONFIG_BACKTRACE_SELF_TEST is not set
912# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1021# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1022# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
913# CONFIG_FAULT_INJECTION is not set 1023# CONFIG_FAULT_INJECTION is not set
914# CONFIG_LATENCYTOP is not set 1024# CONFIG_LATENCYTOP is not set
915CONFIG_SYSCTL_SYSCALL_CHECK=y 1025CONFIG_SYSCTL_SYSCALL_CHECK=y
1026# CONFIG_DEBUG_PAGEALLOC is not set
916CONFIG_HAVE_FUNCTION_TRACER=y 1027CONFIG_HAVE_FUNCTION_TRACER=y
1028CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
917CONFIG_HAVE_DYNAMIC_FTRACE=y 1029CONFIG_HAVE_DYNAMIC_FTRACE=y
918CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1030CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
919 1031CONFIG_TRACING_SUPPORT=y
920# 1032CONFIG_FTRACE=y
921# Tracers
922#
923# CONFIG_FUNCTION_TRACER is not set 1033# CONFIG_FUNCTION_TRACER is not set
1034# CONFIG_IRQSOFF_TRACER is not set
924# CONFIG_SCHED_TRACER is not set 1035# CONFIG_SCHED_TRACER is not set
925# CONFIG_CONTEXT_SWITCH_TRACER is not set 1036# CONFIG_ENABLE_DEFAULT_TRACERS is not set
926# CONFIG_BOOT_TRACER is not set 1037# CONFIG_BOOT_TRACER is not set
927# CONFIG_TRACE_BRANCH_PROFILING is not set 1038CONFIG_BRANCH_PROFILE_NONE=y
1039# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1040# CONFIG_PROFILE_ALL_BRANCHES is not set
928# CONFIG_STACK_TRACER is not set 1041# CONFIG_STACK_TRACER is not set
929# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1042# CONFIG_KMEMTRACE is not set
1043# CONFIG_WORKQUEUE_TRACER is not set
1044# CONFIG_BLK_DEV_IO_TRACE is not set
1045# CONFIG_DYNAMIC_DEBUG is not set
1046# CONFIG_DMA_API_DEBUG is not set
930# CONFIG_SAMPLES is not set 1047# CONFIG_SAMPLES is not set
931CONFIG_HAVE_ARCH_KGDB=y 1048CONFIG_HAVE_ARCH_KGDB=y
932# CONFIG_KGDB is not set 1049# CONFIG_KGDB is not set
1050# CONFIG_PPC_DISABLE_WERROR is not set
1051CONFIG_PPC_WERROR=y
933CONFIG_PRINT_STACK_DEPTH=64 1052CONFIG_PRINT_STACK_DEPTH=64
934# CONFIG_DEBUG_STACKOVERFLOW is not set 1053# CONFIG_DEBUG_STACKOVERFLOW is not set
935# CONFIG_DEBUG_STACK_USAGE is not set 1054# CONFIG_DEBUG_STACK_USAGE is not set
936# CONFIG_DEBUG_PAGEALLOC is not set 1055# CONFIG_PPC_EMULATED_STATS is not set
937# CONFIG_CODE_PATCHING_SELFTEST is not set 1056# CONFIG_CODE_PATCHING_SELFTEST is not set
938# CONFIG_FTR_FIXUP_SELFTEST is not set 1057# CONFIG_FTR_FIXUP_SELFTEST is not set
939# CONFIG_MSI_BITMAP_SELFTEST is not set 1058# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -949,13 +1068,16 @@ CONFIG_PRINT_STACK_DEPTH=64
949# CONFIG_KEYS is not set 1068# CONFIG_KEYS is not set
950# CONFIG_SECURITY is not set 1069# CONFIG_SECURITY is not set
951# CONFIG_SECURITYFS is not set 1070# CONFIG_SECURITYFS is not set
952# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1071# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1072# CONFIG_DEFAULT_SECURITY_SMACK is not set
1073# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1074CONFIG_DEFAULT_SECURITY_DAC=y
1075CONFIG_DEFAULT_SECURITY=""
953CONFIG_CRYPTO=y 1076CONFIG_CRYPTO=y
954 1077
955# 1078#
956# Crypto core or helper 1079# Crypto core or helper
957# 1080#
958# CONFIG_CRYPTO_FIPS is not set
959CONFIG_CRYPTO_ALGAPI=y 1081CONFIG_CRYPTO_ALGAPI=y
960CONFIG_CRYPTO_ALGAPI2=y 1082CONFIG_CRYPTO_ALGAPI2=y
961CONFIG_CRYPTO_AEAD2=y 1083CONFIG_CRYPTO_AEAD2=y
@@ -964,10 +1086,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
964CONFIG_CRYPTO_HASH=y 1086CONFIG_CRYPTO_HASH=y
965CONFIG_CRYPTO_HASH2=y 1087CONFIG_CRYPTO_HASH2=y
966CONFIG_CRYPTO_RNG2=y 1088CONFIG_CRYPTO_RNG2=y
1089CONFIG_CRYPTO_PCOMP=y
967CONFIG_CRYPTO_MANAGER=y 1090CONFIG_CRYPTO_MANAGER=y
968CONFIG_CRYPTO_MANAGER2=y 1091CONFIG_CRYPTO_MANAGER2=y
969# CONFIG_CRYPTO_GF128MUL is not set 1092# CONFIG_CRYPTO_GF128MUL is not set
970# CONFIG_CRYPTO_NULL is not set 1093# CONFIG_CRYPTO_NULL is not set
1094CONFIG_CRYPTO_WORKQUEUE=y
971# CONFIG_CRYPTO_CRYPTD is not set 1095# CONFIG_CRYPTO_CRYPTD is not set
972# CONFIG_CRYPTO_AUTHENC is not set 1096# CONFIG_CRYPTO_AUTHENC is not set
973# CONFIG_CRYPTO_TEST is not set 1097# CONFIG_CRYPTO_TEST is not set
@@ -995,11 +1119,13 @@ CONFIG_CRYPTO_PCBC=y
995# 1119#
996# CONFIG_CRYPTO_HMAC is not set 1120# CONFIG_CRYPTO_HMAC is not set
997# CONFIG_CRYPTO_XCBC is not set 1121# CONFIG_CRYPTO_XCBC is not set
1122# CONFIG_CRYPTO_VMAC is not set
998 1123
999# 1124#
1000# Digest 1125# Digest
1001# 1126#
1002# CONFIG_CRYPTO_CRC32C is not set 1127# CONFIG_CRYPTO_CRC32C is not set
1128# CONFIG_CRYPTO_GHASH is not set
1003# CONFIG_CRYPTO_MD4 is not set 1129# CONFIG_CRYPTO_MD4 is not set
1004CONFIG_CRYPTO_MD5=y 1130CONFIG_CRYPTO_MD5=y
1005# CONFIG_CRYPTO_MICHAEL_MIC is not set 1131# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1036,6 +1162,7 @@ CONFIG_CRYPTO_DES=y
1036# Compression 1162# Compression
1037# 1163#
1038# CONFIG_CRYPTO_DEFLATE is not set 1164# CONFIG_CRYPTO_DEFLATE is not set
1165# CONFIG_CRYPTO_ZLIB is not set
1039# CONFIG_CRYPTO_LZO is not set 1166# CONFIG_CRYPTO_LZO is not set
1040 1167
1041# 1168#
@@ -1044,5 +1171,6 @@ CONFIG_CRYPTO_DES=y
1044# CONFIG_CRYPTO_ANSI_CPRNG is not set 1171# CONFIG_CRYPTO_ANSI_CPRNG is not set
1045CONFIG_CRYPTO_HW=y 1172CONFIG_CRYPTO_HW=y
1046# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1173# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1174# CONFIG_CRYPTO_DEV_PPC4XX is not set
1047# CONFIG_PPC_CLOCK is not set 1175# CONFIG_PPC_CLOCK is not set
1048# CONFIG_VIRTUALIZATION is not set 1176# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/44x/warp_defconfig b/arch/powerpc/configs/44x/warp_defconfig
index 787635f23d8f..99eff4dd9364 100644
--- a/arch/powerpc/configs/44x/warp_defconfig
+++ b/arch/powerpc/configs/44x/warp_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.30 3# Linux kernel version: 2.6.33-rc1
4# Tue Jun 9 23:35:36 2009 4# Mon Jan 4 15:27:46 2010
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#
11# CONFIG_6xx is not set 11# CONFIG_PPC_BOOK3S_32 is not set
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
@@ -20,6 +20,7 @@ CONFIG_BOOKE=y
20CONFIG_PTE_64BIT=y 20CONFIG_PTE_64BIT=y
21CONFIG_PHYS_64BIT=y 21CONFIG_PHYS_64BIT=y
22CONFIG_PPC_MMU_NOHASH=y 22CONFIG_PPC_MMU_NOHASH=y
23CONFIG_PPC_MMU_NOHASH_32=y
23# CONFIG_PPC_MM_SLICES is not set 24# CONFIG_PPC_MM_SLICES is not set
24CONFIG_NOT_COHERENT_CACHE=y 25CONFIG_NOT_COHERENT_CACHE=y
25CONFIG_PPC32=y 26CONFIG_PPC32=y
@@ -31,15 +32,18 @@ CONFIG_GENERIC_TIME=y
31CONFIG_GENERIC_TIME_VSYSCALL=y 32CONFIG_GENERIC_TIME_VSYSCALL=y
32CONFIG_GENERIC_CLOCKEVENTS=y 33CONFIG_GENERIC_CLOCKEVENTS=y
33CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
34# 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
35CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
36CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
37CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
38CONFIG_LOCKDEP_SUPPORT=y 43CONFIG_LOCKDEP_SUPPORT=y
39CONFIG_RWSEM_XCHGADD_ALGORITHM=y 44CONFIG_RWSEM_XCHGADD_ALGORITHM=y
40CONFIG_ARCH_HAS_ILOG2_U32=y 45CONFIG_ARCH_HAS_ILOG2_U32=y
41CONFIG_GENERIC_HWEIGHT=y 46CONFIG_GENERIC_HWEIGHT=y
42CONFIG_GENERIC_CALIBRATE_DELAY=y
43CONFIG_GENERIC_FIND_NEXT_BIT=y 47CONFIG_GENERIC_FIND_NEXT_BIT=y
44CONFIG_GENERIC_GPIO=y 48CONFIG_GENERIC_GPIO=y
45# CONFIG_ARCH_NO_VIRT_TO_BUS is not set 49# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
@@ -56,11 +60,13 @@ CONFIG_AUDIT_ARCH=y
56CONFIG_GENERIC_BUG=y 60CONFIG_GENERIC_BUG=y
57CONFIG_DTC=y 61CONFIG_DTC=y
58# CONFIG_DEFAULT_UIMAGE is not set 62# CONFIG_DEFAULT_UIMAGE is not set
63CONFIG_ARCH_HIBERNATION_POSSIBLE=y
59CONFIG_PPC_DCR_NATIVE=y 64CONFIG_PPC_DCR_NATIVE=y
60# CONFIG_PPC_DCR_MMIO is not set 65# CONFIG_PPC_DCR_MMIO is not set
61CONFIG_PPC_DCR=y 66CONFIG_PPC_DCR=y
62CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 67CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
63CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 68CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
69CONFIG_CONSTRUCTORS=y
64 70
65# 71#
66# General setup 72# General setup
@@ -81,11 +87,13 @@ CONFIG_SYSVIPC_SYSCTL=y
81# 87#
82# RCU Subsystem 88# RCU Subsystem
83# 89#
84CONFIG_CLASSIC_RCU=y 90CONFIG_TREE_RCU=y
85# CONFIG_TREE_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
86# CONFIG_PREEMPT_RCU is not set 92# CONFIG_TINY_RCU is not set
93# CONFIG_RCU_TRACE is not set
94CONFIG_RCU_FANOUT=32
95# CONFIG_RCU_FANOUT_EXACT is not set
87# CONFIG_TREE_RCU_TRACE is not set 96# CONFIG_TREE_RCU_TRACE is not set
88# CONFIG_PREEMPT_RCU_TRACE is not set
89CONFIG_IKCONFIG=y 97CONFIG_IKCONFIG=y
90CONFIG_IKCONFIG_PROC=y 98CONFIG_IKCONFIG_PROC=y
91CONFIG_LOG_BUF_SHIFT=14 99CONFIG_LOG_BUF_SHIFT=14
@@ -111,7 +119,6 @@ CONFIG_SYSCTL_SYSCALL=y
111CONFIG_KALLSYMS=y 119CONFIG_KALLSYMS=y
112# CONFIG_KALLSYMS_ALL is not set 120# CONFIG_KALLSYMS_ALL is not set
113# CONFIG_KALLSYMS_EXTRA_PASS is not set 121# CONFIG_KALLSYMS_EXTRA_PASS is not set
114# CONFIG_STRIP_ASM_SYMS is not set
115CONFIG_HOTPLUG=y 122CONFIG_HOTPLUG=y
116CONFIG_PRINTK=y 123CONFIG_PRINTK=y
117CONFIG_BUG=y 124CONFIG_BUG=y
@@ -124,6 +131,13 @@ CONFIG_TIMERFD=y
124CONFIG_EVENTFD=y 131CONFIG_EVENTFD=y
125CONFIG_SHMEM=y 132CONFIG_SHMEM=y
126CONFIG_AIO=y 133CONFIG_AIO=y
134CONFIG_HAVE_PERF_EVENTS=y
135
136#
137# Kernel Performance Events And Counters
138#
139# CONFIG_PERF_EVENTS is not set
140# CONFIG_PERF_COUNTERS is not set
127CONFIG_VM_EVENT_COUNTERS=y 141CONFIG_VM_EVENT_COUNTERS=y
128CONFIG_SLUB_DEBUG=y 142CONFIG_SLUB_DEBUG=y
129CONFIG_COMPAT_BRK=y 143CONFIG_COMPAT_BRK=y
@@ -131,7 +145,6 @@ CONFIG_COMPAT_BRK=y
131CONFIG_SLUB=y 145CONFIG_SLUB=y
132# CONFIG_SLOB is not set 146# CONFIG_SLOB is not set
133# CONFIG_PROFILING is not set 147# CONFIG_PROFILING is not set
134# CONFIG_MARKERS is not set
135CONFIG_HAVE_OPROFILE=y 148CONFIG_HAVE_OPROFILE=y
136# CONFIG_KPROBES is not set 149# CONFIG_KPROBES is not set
137CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 150CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -139,6 +152,13 @@ CONFIG_HAVE_IOREMAP_PROT=y
139CONFIG_HAVE_KPROBES=y 152CONFIG_HAVE_KPROBES=y
140CONFIG_HAVE_KRETPROBES=y 153CONFIG_HAVE_KRETPROBES=y
141CONFIG_HAVE_ARCH_TRACEHOOK=y 154CONFIG_HAVE_ARCH_TRACEHOOK=y
155CONFIG_HAVE_DMA_ATTRS=y
156CONFIG_HAVE_DMA_API_DEBUG=y
157
158#
159# GCOV-based kernel profiling
160#
161# CONFIG_GCOV_KERNEL is not set
142# CONFIG_SLOW_WORK is not set 162# CONFIG_SLOW_WORK is not set
143# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 163# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
144CONFIG_SLABINFO=y 164CONFIG_SLABINFO=y
@@ -151,7 +171,7 @@ CONFIG_MODULE_UNLOAD=y
151# CONFIG_MODVERSIONS is not set 171# CONFIG_MODVERSIONS is not set
152# CONFIG_MODULE_SRCVERSION_ALL is not set 172# CONFIG_MODULE_SRCVERSION_ALL is not set
153CONFIG_BLOCK=y 173CONFIG_BLOCK=y
154# CONFIG_LBD is not set 174CONFIG_LBDAF=y
155# CONFIG_BLK_DEV_BSG is not set 175# CONFIG_BLK_DEV_BSG is not set
156# CONFIG_BLK_DEV_INTEGRITY is not set 176# CONFIG_BLK_DEV_INTEGRITY is not set
157 177
@@ -159,14 +179,41 @@ CONFIG_BLOCK=y
159# IO Schedulers 179# IO Schedulers
160# 180#
161CONFIG_IOSCHED_NOOP=y 181CONFIG_IOSCHED_NOOP=y
162CONFIG_IOSCHED_AS=y
163CONFIG_IOSCHED_DEADLINE=y 182CONFIG_IOSCHED_DEADLINE=y
164CONFIG_IOSCHED_CFQ=y 183CONFIG_IOSCHED_CFQ=y
165CONFIG_DEFAULT_AS=y
166# CONFIG_DEFAULT_DEADLINE is not set 184# CONFIG_DEFAULT_DEADLINE is not set
167# CONFIG_DEFAULT_CFQ is not set 185CONFIG_DEFAULT_CFQ=y
168# CONFIG_DEFAULT_NOOP is not set 186# CONFIG_DEFAULT_NOOP is not set
169CONFIG_DEFAULT_IOSCHED="anticipatory" 187CONFIG_DEFAULT_IOSCHED="cfq"
188# CONFIG_INLINE_SPIN_TRYLOCK is not set
189# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
190# CONFIG_INLINE_SPIN_LOCK is not set
191# CONFIG_INLINE_SPIN_LOCK_BH is not set
192# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
193# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
194CONFIG_INLINE_SPIN_UNLOCK=y
195# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
196CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
197# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
198# CONFIG_INLINE_READ_TRYLOCK is not set
199# CONFIG_INLINE_READ_LOCK is not set
200# CONFIG_INLINE_READ_LOCK_BH is not set
201# CONFIG_INLINE_READ_LOCK_IRQ is not set
202# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
203CONFIG_INLINE_READ_UNLOCK=y
204# CONFIG_INLINE_READ_UNLOCK_BH is not set
205CONFIG_INLINE_READ_UNLOCK_IRQ=y
206# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
207# CONFIG_INLINE_WRITE_TRYLOCK is not set
208# CONFIG_INLINE_WRITE_LOCK is not set
209# CONFIG_INLINE_WRITE_LOCK_BH is not set
210# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
211# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
212CONFIG_INLINE_WRITE_UNLOCK=y
213# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
214CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
215# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
216# CONFIG_MUTEX_SPIN_ON_OWNER is not set
170# CONFIG_FREEZER is not set 217# CONFIG_FREEZER is not set
171 218
172# 219#
@@ -187,6 +234,7 @@ CONFIG_WARP=y
187# CONFIG_CANYONLANDS is not set 234# CONFIG_CANYONLANDS is not set
188# CONFIG_GLACIER is not set 235# CONFIG_GLACIER is not set
189# CONFIG_REDWOOD is not set 236# CONFIG_REDWOOD is not set
237# CONFIG_EIGER is not set
190# CONFIG_YOSEMITE is not set 238# CONFIG_YOSEMITE is not set
191# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set 239# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set
192# CONFIG_PPC44x_SIMPLE is not set 240# CONFIG_PPC44x_SIMPLE is not set
@@ -229,10 +277,12 @@ CONFIG_BINFMT_ELF=y
229# CONFIG_BINFMT_MISC is not set 277# CONFIG_BINFMT_MISC is not set
230# CONFIG_MATH_EMULATION is not set 278# CONFIG_MATH_EMULATION is not set
231# CONFIG_IOMMU_HELPER is not set 279# CONFIG_IOMMU_HELPER is not set
232CONFIG_PPC_NEED_DMA_SYNC_OPS=y 280# CONFIG_SWIOTLB is not set
233CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 281CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
234CONFIG_ARCH_HAS_WALK_MEMORY=y 282CONFIG_ARCH_HAS_WALK_MEMORY=y
235CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 283CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
284CONFIG_SPARSE_IRQ=y
285CONFIG_MAX_ACTIVE_REGIONS=32
236CONFIG_ARCH_FLATMEM_ENABLE=y 286CONFIG_ARCH_FLATMEM_ENABLE=y
237CONFIG_ARCH_POPULATES_NODE_MAP=y 287CONFIG_ARCH_POPULATES_NODE_MAP=y
238CONFIG_SELECT_MEMORY_MODEL=y 288CONFIG_SELECT_MEMORY_MODEL=y
@@ -248,9 +298,8 @@ CONFIG_PHYS_ADDR_T_64BIT=y
248CONFIG_ZONE_DMA_FLAG=1 298CONFIG_ZONE_DMA_FLAG=1
249CONFIG_BOUNCE=y 299CONFIG_BOUNCE=y
250CONFIG_VIRT_TO_BUS=y 300CONFIG_VIRT_TO_BUS=y
251CONFIG_UNEVICTABLE_LRU=y 301# CONFIG_KSM is not set
252CONFIG_HAVE_MLOCK=y 302CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
253CONFIG_HAVE_MLOCKED_PAGE_BIT=y
254CONFIG_STDBINUTILS=y 303CONFIG_STDBINUTILS=y
255CONFIG_PPC_4K_PAGES=y 304CONFIG_PPC_4K_PAGES=y
256# CONFIG_PPC_16K_PAGES is not set 305# CONFIG_PPC_16K_PAGES is not set
@@ -356,6 +405,7 @@ CONFIG_NETFILTER_ADVANCED=y
356# CONFIG_IP_NF_ARPTABLES is not set 405# CONFIG_IP_NF_ARPTABLES is not set
357# CONFIG_IP_DCCP is not set 406# CONFIG_IP_DCCP is not set
358# CONFIG_IP_SCTP is not set 407# CONFIG_IP_SCTP is not set
408# CONFIG_RDS is not set
359# CONFIG_TIPC is not set 409# CONFIG_TIPC is not set
360# CONFIG_ATM is not set 410# CONFIG_ATM is not set
361# CONFIG_BRIDGE is not set 411# CONFIG_BRIDGE is not set
@@ -371,6 +421,7 @@ CONFIG_VLAN_8021Q=y
371# CONFIG_ECONET is not set 421# CONFIG_ECONET is not set
372# CONFIG_WAN_ROUTER is not set 422# CONFIG_WAN_ROUTER is not set
373# CONFIG_PHONET is not set 423# CONFIG_PHONET is not set
424# CONFIG_IEEE802154 is not set
374# CONFIG_NET_SCHED is not set 425# CONFIG_NET_SCHED is not set
375# CONFIG_DCB is not set 426# CONFIG_DCB is not set
376 427
@@ -383,7 +434,13 @@ CONFIG_VLAN_8021Q=y
383# CONFIG_IRDA is not set 434# CONFIG_IRDA is not set
384# CONFIG_BT is not set 435# CONFIG_BT is not set
385# CONFIG_AF_RXRPC is not set 436# CONFIG_AF_RXRPC is not set
386# CONFIG_WIRELESS is not set 437CONFIG_WIRELESS=y
438# CONFIG_CFG80211 is not set
439# CONFIG_LIB80211 is not set
440
441#
442# CFG80211 needs to be enabled for MAC80211
443#
387# CONFIG_WIMAX is not set 444# CONFIG_WIMAX is not set
388# CONFIG_RFKILL is not set 445# CONFIG_RFKILL is not set
389# CONFIG_NET_9P is not set 446# CONFIG_NET_9P is not set
@@ -396,6 +453,7 @@ CONFIG_VLAN_8021Q=y
396# Generic Driver Options 453# Generic Driver Options
397# 454#
398CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 455CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
456# CONFIG_DEVTMPFS is not set
399# CONFIG_STANDALONE is not set 457# CONFIG_STANDALONE is not set
400CONFIG_PREVENT_FIRMWARE_BUILD=y 458CONFIG_PREVENT_FIRMWARE_BUILD=y
401CONFIG_FW_LOADER=y 459CONFIG_FW_LOADER=y
@@ -407,9 +465,9 @@ CONFIG_EXTRA_FIRMWARE=""
407# CONFIG_CONNECTOR is not set 465# CONFIG_CONNECTOR is not set
408CONFIG_MTD=y 466CONFIG_MTD=y
409# CONFIG_MTD_DEBUG is not set 467# CONFIG_MTD_DEBUG is not set
468# CONFIG_MTD_TESTS is not set
410# CONFIG_MTD_CONCAT is not set 469# CONFIG_MTD_CONCAT is not set
411CONFIG_MTD_PARTITIONS=y 470CONFIG_MTD_PARTITIONS=y
412# CONFIG_MTD_TESTS is not set
413# CONFIG_MTD_REDBOOT_PARTS is not set 471# CONFIG_MTD_REDBOOT_PARTS is not set
414CONFIG_MTD_CMDLINE_PARTS=y 472CONFIG_MTD_CMDLINE_PARTS=y
415CONFIG_MTD_OF_PARTS=y 473CONFIG_MTD_OF_PARTS=y
@@ -513,6 +571,10 @@ CONFIG_BLK_DEV=y
513# CONFIG_BLK_DEV_FD is not set 571# CONFIG_BLK_DEV_FD is not set
514# CONFIG_BLK_DEV_COW_COMMON is not set 572# CONFIG_BLK_DEV_COW_COMMON is not set
515# CONFIG_BLK_DEV_LOOP is not set 573# CONFIG_BLK_DEV_LOOP is not set
574
575#
576# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
577#
516# CONFIG_BLK_DEV_NBD is not set 578# CONFIG_BLK_DEV_NBD is not set
517# CONFIG_BLK_DEV_UB is not set 579# CONFIG_BLK_DEV_UB is not set
518CONFIG_BLK_DEV_RAM=y 580CONFIG_BLK_DEV_RAM=y
@@ -524,9 +586,11 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
524# CONFIG_XILINX_SYSACE is not set 586# CONFIG_XILINX_SYSACE is not set
525# CONFIG_BLK_DEV_HD is not set 587# CONFIG_BLK_DEV_HD is not set
526CONFIG_MISC_DEVICES=y 588CONFIG_MISC_DEVICES=y
589# CONFIG_AD525X_DPOT is not set
527# CONFIG_ICS932S401 is not set 590# CONFIG_ICS932S401 is not set
528# CONFIG_ENCLOSURE_SERVICES is not set 591# CONFIG_ENCLOSURE_SERVICES is not set
529# CONFIG_ISL29003 is not set 592# CONFIG_ISL29003 is not set
593# CONFIG_DS1682 is not set
530# CONFIG_C2PORT is not set 594# CONFIG_C2PORT is not set
531 595
532# 596#
@@ -534,7 +598,9 @@ CONFIG_MISC_DEVICES=y
534# 598#
535CONFIG_EEPROM_AT24=y 599CONFIG_EEPROM_AT24=y
536# CONFIG_EEPROM_LEGACY is not set 600# CONFIG_EEPROM_LEGACY is not set
601# CONFIG_EEPROM_MAX6875 is not set
537# CONFIG_EEPROM_93CX6 is not set 602# CONFIG_EEPROM_93CX6 is not set
603# CONFIG_IWMC3200TOP is not set
538CONFIG_HAVE_IDE=y 604CONFIG_HAVE_IDE=y
539# CONFIG_IDE is not set 605# CONFIG_IDE is not set
540 606
@@ -557,15 +623,11 @@ CONFIG_BLK_DEV_SD=y
557# CONFIG_BLK_DEV_SR is not set 623# CONFIG_BLK_DEV_SR is not set
558# CONFIG_CHR_DEV_SG is not set 624# CONFIG_CHR_DEV_SG is not set
559# CONFIG_CHR_DEV_SCH is not set 625# CONFIG_CHR_DEV_SCH is not set
560
561#
562# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
563#
564# CONFIG_SCSI_MULTI_LUN is not set 626# CONFIG_SCSI_MULTI_LUN is not set
565# CONFIG_SCSI_CONSTANTS is not set 627# CONFIG_SCSI_CONSTANTS is not set
566# CONFIG_SCSI_LOGGING is not set 628# CONFIG_SCSI_LOGGING is not set
567# CONFIG_SCSI_SCAN_ASYNC is not set 629# CONFIG_SCSI_SCAN_ASYNC is not set
568# CONFIG_SCSI_WAIT_SCAN is not set 630CONFIG_SCSI_WAIT_SCAN=m
569 631
570# 632#
571# SCSI Transports 633# SCSI Transports
@@ -582,7 +644,6 @@ CONFIG_SCSI_SPI_ATTRS=y
582# CONFIG_MD is not set 644# CONFIG_MD is not set
583# CONFIG_MACINTOSH_DRIVERS is not set 645# CONFIG_MACINTOSH_DRIVERS is not set
584CONFIG_NETDEVICES=y 646CONFIG_NETDEVICES=y
585CONFIG_COMPAT_NET_DEV_OPS=y
586# CONFIG_DUMMY is not set 647# CONFIG_DUMMY is not set
587# CONFIG_BONDING is not set 648# CONFIG_BONDING is not set
588# CONFIG_MACVLAN is not set 649# CONFIG_MACVLAN is not set
@@ -609,14 +670,14 @@ CONFIG_IBM_NEW_EMAC_ZMII=y
609# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 670# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
610# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 671# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
611# CONFIG_B44 is not set 672# CONFIG_B44 is not set
673# CONFIG_KS8842 is not set
674# CONFIG_KS8851_MLL is not set
675# CONFIG_XILINX_EMACLITE is not set
612# CONFIG_NETDEV_1000 is not set 676# CONFIG_NETDEV_1000 is not set
613# CONFIG_NETDEV_10000 is not set 677# CONFIG_NETDEV_10000 is not set
614 678CONFIG_WLAN=y
615# 679# CONFIG_USB_ZD1201 is not set
616# Wireless LAN 680# CONFIG_HOSTAP is not set
617#
618# CONFIG_WLAN_PRE80211 is not set
619# CONFIG_WLAN_80211 is not set
620 681
621# 682#
622# Enable WiMAX (Networking options) to see the WiMAX drivers 683# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -678,6 +739,7 @@ CONFIG_SERIAL_CORE=y
678CONFIG_SERIAL_CORE_CONSOLE=y 739CONFIG_SERIAL_CORE_CONSOLE=y
679# CONFIG_SERIAL_OF_PLATFORM is not set 740# CONFIG_SERIAL_OF_PLATFORM is not set
680# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set 741# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
742# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
681CONFIG_UNIX98_PTYS=y 743CONFIG_UNIX98_PTYS=y
682# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 744# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
683CONFIG_LEGACY_PTYS=y 745CONFIG_LEGACY_PTYS=y
@@ -693,6 +755,7 @@ CONFIG_HW_RANDOM=y
693# CONFIG_TCG_TPM is not set 755# CONFIG_TCG_TPM is not set
694CONFIG_I2C=y 756CONFIG_I2C=y
695CONFIG_I2C_BOARDINFO=y 757CONFIG_I2C_BOARDINFO=y
758CONFIG_I2C_COMPAT=y
696# CONFIG_I2C_CHARDEV is not set 759# CONFIG_I2C_CHARDEV is not set
697CONFIG_I2C_HELPER_AUTO=y 760CONFIG_I2C_HELPER_AUTO=y
698 761
@@ -725,17 +788,17 @@ CONFIG_I2C_IBM_IIC=y
725# 788#
726# Miscellaneous I2C Chip support 789# Miscellaneous I2C Chip support
727# 790#
728# CONFIG_DS1682 is not set
729# CONFIG_SENSORS_PCF8574 is not set
730# CONFIG_PCF8575 is not set
731# CONFIG_SENSORS_PCA9539 is not set
732# CONFIG_SENSORS_MAX6875 is not set
733# CONFIG_SENSORS_TSL2550 is not set 791# CONFIG_SENSORS_TSL2550 is not set
734# CONFIG_I2C_DEBUG_CORE is not set 792# CONFIG_I2C_DEBUG_CORE is not set
735# CONFIG_I2C_DEBUG_ALGO is not set 793# CONFIG_I2C_DEBUG_ALGO is not set
736# CONFIG_I2C_DEBUG_BUS is not set 794# CONFIG_I2C_DEBUG_BUS is not set
737# CONFIG_I2C_DEBUG_CHIP is not set 795# CONFIG_I2C_DEBUG_CHIP is not set
738# CONFIG_SPI is not set 796# CONFIG_SPI is not set
797
798#
799# PPS support
800#
801# CONFIG_PPS is not set
739CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 802CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
740CONFIG_ARCH_REQUIRE_GPIOLIB=y 803CONFIG_ARCH_REQUIRE_GPIOLIB=y
741CONFIG_GPIOLIB=y 804CONFIG_GPIOLIB=y
@@ -761,10 +824,19 @@ CONFIG_GPIO_SYSFS=y
761# 824#
762# SPI GPIO expanders: 825# SPI GPIO expanders:
763# 826#
827
828#
829# AC97 GPIO expanders:
830#
764# CONFIG_W1 is not set 831# CONFIG_W1 is not set
765# CONFIG_POWER_SUPPLY is not set 832# CONFIG_POWER_SUPPLY is not set
766CONFIG_HWMON=y 833CONFIG_HWMON=y
767# CONFIG_HWMON_VID is not set 834# CONFIG_HWMON_VID is not set
835# CONFIG_HWMON_DEBUG_CHIP is not set
836
837#
838# Native drivers
839#
768CONFIG_SENSORS_AD7414=y 840CONFIG_SENSORS_AD7414=y
769# CONFIG_SENSORS_AD7418 is not set 841# CONFIG_SENSORS_AD7418 is not set
770# CONFIG_SENSORS_ADM1021 is not set 842# CONFIG_SENSORS_ADM1021 is not set
@@ -787,6 +859,7 @@ CONFIG_SENSORS_AD7414=y
787# CONFIG_SENSORS_GL520SM is not set 859# CONFIG_SENSORS_GL520SM is not set
788# CONFIG_SENSORS_IT87 is not set 860# CONFIG_SENSORS_IT87 is not set
789# CONFIG_SENSORS_LM63 is not set 861# CONFIG_SENSORS_LM63 is not set
862# CONFIG_SENSORS_LM73 is not set
790# CONFIG_SENSORS_LM75 is not set 863# CONFIG_SENSORS_LM75 is not set
791# CONFIG_SENSORS_LM77 is not set 864# CONFIG_SENSORS_LM77 is not set
792# CONFIG_SENSORS_LM78 is not set 865# CONFIG_SENSORS_LM78 is not set
@@ -812,6 +885,8 @@ CONFIG_SENSORS_AD7414=y
812# CONFIG_SENSORS_SMSC47B397 is not set 885# CONFIG_SENSORS_SMSC47B397 is not set
813# CONFIG_SENSORS_ADS7828 is not set 886# CONFIG_SENSORS_ADS7828 is not set
814# CONFIG_SENSORS_THMC50 is not set 887# CONFIG_SENSORS_THMC50 is not set
888# CONFIG_SENSORS_TMP401 is not set
889# CONFIG_SENSORS_TMP421 is not set
815# CONFIG_SENSORS_VT1211 is not set 890# CONFIG_SENSORS_VT1211 is not set
816# CONFIG_SENSORS_W83781D is not set 891# CONFIG_SENSORS_W83781D is not set
817# CONFIG_SENSORS_W83791D is not set 892# CONFIG_SENSORS_W83791D is not set
@@ -821,7 +896,6 @@ CONFIG_SENSORS_AD7414=y
821# CONFIG_SENSORS_W83L786NG is not set 896# CONFIG_SENSORS_W83L786NG is not set
822# CONFIG_SENSORS_W83627HF is not set 897# CONFIG_SENSORS_W83627HF is not set
823# CONFIG_SENSORS_W83627EHF is not set 898# CONFIG_SENSORS_W83627EHF is not set
824# CONFIG_HWMON_DEBUG_CHIP is not set
825CONFIG_THERMAL=y 899CONFIG_THERMAL=y
826CONFIG_THERMAL_HWMON=y 900CONFIG_THERMAL_HWMON=y
827CONFIG_WATCHDOG=y 901CONFIG_WATCHDOG=y
@@ -855,26 +929,15 @@ CONFIG_SSB_POSSIBLE=y
855# CONFIG_TWL4030_CORE is not set 929# CONFIG_TWL4030_CORE is not set
856# CONFIG_MFD_TMIO is not set 930# CONFIG_MFD_TMIO is not set
857# CONFIG_PMIC_DA903X is not set 931# CONFIG_PMIC_DA903X is not set
932# CONFIG_PMIC_ADP5520 is not set
858# CONFIG_MFD_WM8400 is not set 933# CONFIG_MFD_WM8400 is not set
934# CONFIG_MFD_WM831X is not set
859# CONFIG_MFD_WM8350_I2C is not set 935# CONFIG_MFD_WM8350_I2C is not set
860# CONFIG_MFD_PCF50633 is not set 936# CONFIG_MFD_PCF50633 is not set
937# CONFIG_AB3100_CORE is not set
938# CONFIG_MFD_88PM8607 is not set
861# CONFIG_REGULATOR is not set 939# CONFIG_REGULATOR is not set
862 940# CONFIG_MEDIA_SUPPORT is not set
863#
864# Multimedia devices
865#
866
867#
868# Multimedia core support
869#
870# CONFIG_VIDEO_DEV is not set
871# CONFIG_DVB_CORE is not set
872# CONFIG_VIDEO_MEDIA is not set
873
874#
875# Multimedia drivers
876#
877# CONFIG_DAB is not set
878 941
879# 942#
880# Graphics support 943# Graphics support
@@ -917,10 +980,11 @@ CONFIG_USB_MON=y
917# CONFIG_USB_OXU210HP_HCD is not set 980# CONFIG_USB_OXU210HP_HCD is not set
918# CONFIG_USB_ISP116X_HCD is not set 981# CONFIG_USB_ISP116X_HCD is not set
919# CONFIG_USB_ISP1760_HCD is not set 982# CONFIG_USB_ISP1760_HCD is not set
983# CONFIG_USB_ISP1362_HCD is not set
920CONFIG_USB_OHCI_HCD=y 984CONFIG_USB_OHCI_HCD=y
921CONFIG_USB_OHCI_HCD_PPC_OF=y
922CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 985CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
923# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set 986# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
987CONFIG_USB_OHCI_HCD_PPC_OF=y
924CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y 988CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
925CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y 989CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
926CONFIG_USB_OHCI_LITTLE_ENDIAN=y 990CONFIG_USB_OHCI_LITTLE_ENDIAN=y
@@ -988,6 +1052,7 @@ CONFIG_USB_STORAGE=y
988# CONFIG_USB_LD is not set 1052# CONFIG_USB_LD is not set
989# CONFIG_USB_TRANCEVIBRATOR is not set 1053# CONFIG_USB_TRANCEVIBRATOR is not set
990# CONFIG_USB_IOWARRIOR is not set 1054# CONFIG_USB_IOWARRIOR is not set
1055# CONFIG_USB_TEST is not set
991# CONFIG_USB_ISIGHTFW is not set 1056# CONFIG_USB_ISIGHTFW is not set
992# CONFIG_USB_VST is not set 1057# CONFIG_USB_VST is not set
993# CONFIG_USB_GADGET is not set 1058# CONFIG_USB_GADGET is not set
@@ -1014,7 +1079,8 @@ CONFIG_MMC_BLOCK_BOUNCE=y
1014# 1079#
1015# CONFIG_MMC_SDHCI is not set 1080# CONFIG_MMC_SDHCI is not set
1016# CONFIG_MMC_WBSD is not set 1081# CONFIG_MMC_WBSD is not set
1017CONFIG_MMC_PIKASD=y 1082# CONFIG_MMC_AT91 is not set
1083# CONFIG_MMC_ATMELMCI is not set
1018# CONFIG_MEMSTICK is not set 1084# CONFIG_MEMSTICK is not set
1019CONFIG_NEW_LEDS=y 1085CONFIG_NEW_LEDS=y
1020CONFIG_LEDS_CLASS=y 1086CONFIG_LEDS_CLASS=y
@@ -1025,9 +1091,10 @@ CONFIG_LEDS_CLASS=y
1025CONFIG_LEDS_GPIO=y 1091CONFIG_LEDS_GPIO=y
1026# CONFIG_LEDS_GPIO_PLATFORM is not set 1092# CONFIG_LEDS_GPIO_PLATFORM is not set
1027CONFIG_LEDS_GPIO_OF=y 1093CONFIG_LEDS_GPIO_OF=y
1028# CONFIG_LEDS_LP5521 is not set 1094# CONFIG_LEDS_LP3944 is not set
1029# CONFIG_LEDS_PCA955X is not set 1095# CONFIG_LEDS_PCA955X is not set
1030# CONFIG_LEDS_BD2802 is not set 1096# CONFIG_LEDS_BD2802 is not set
1097# CONFIG_LEDS_LT3593 is not set
1031 1098
1032# 1099#
1033# LED Triggers 1100# LED Triggers
@@ -1048,6 +1115,10 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
1048# CONFIG_DMADEVICES is not set 1115# CONFIG_DMADEVICES is not set
1049# CONFIG_AUXDISPLAY is not set 1116# CONFIG_AUXDISPLAY is not set
1050# CONFIG_UIO is not set 1117# CONFIG_UIO is not set
1118
1119#
1120# TI VLYNQ
1121#
1051# CONFIG_STAGING is not set 1122# CONFIG_STAGING is not set
1052 1123
1053# 1124#
@@ -1065,10 +1136,13 @@ CONFIG_JBD=y
1065# CONFIG_REISERFS_FS is not set 1136# CONFIG_REISERFS_FS is not set
1066# CONFIG_JFS_FS is not set 1137# CONFIG_JFS_FS is not set
1067# CONFIG_FS_POSIX_ACL is not set 1138# CONFIG_FS_POSIX_ACL is not set
1068CONFIG_FILE_LOCKING=y
1069# CONFIG_XFS_FS is not set 1139# CONFIG_XFS_FS is not set
1140# CONFIG_GFS2_FS is not set
1070# CONFIG_OCFS2_FS is not set 1141# CONFIG_OCFS2_FS is not set
1071# CONFIG_BTRFS_FS is not set 1142# CONFIG_BTRFS_FS is not set
1143# CONFIG_NILFS2_FS is not set
1144CONFIG_FILE_LOCKING=y
1145CONFIG_FSNOTIFY=y
1072CONFIG_DNOTIFY=y 1146CONFIG_DNOTIFY=y
1073CONFIG_INOTIFY=y 1147CONFIG_INOTIFY=y
1074CONFIG_INOTIFY_USER=y 1148CONFIG_INOTIFY_USER=y
@@ -1145,7 +1219,6 @@ CONFIG_CRAMFS=y
1145# CONFIG_ROMFS_FS is not set 1219# CONFIG_ROMFS_FS is not set
1146# CONFIG_SYSV_FS is not set 1220# CONFIG_SYSV_FS is not set
1147# CONFIG_UFS_FS is not set 1221# CONFIG_UFS_FS is not set
1148# CONFIG_NILFS2_FS is not set
1149CONFIG_NETWORK_FILESYSTEMS=y 1222CONFIG_NETWORK_FILESYSTEMS=y
1150CONFIG_NFS_FS=y 1223CONFIG_NFS_FS=y
1151CONFIG_NFS_V3=y 1224CONFIG_NFS_V3=y
@@ -1235,6 +1308,7 @@ CONFIG_HAS_IOPORT=y
1235CONFIG_HAS_DMA=y 1308CONFIG_HAS_DMA=y
1236CONFIG_HAVE_LMB=y 1309CONFIG_HAVE_LMB=y
1237CONFIG_NLATTR=y 1310CONFIG_NLATTR=y
1311CONFIG_GENERIC_ATOMIC64=y
1238 1312
1239# 1313#
1240# Kernel hacking 1314# Kernel hacking
@@ -1244,6 +1318,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1244CONFIG_ENABLE_MUST_CHECK=y 1318CONFIG_ENABLE_MUST_CHECK=y
1245CONFIG_FRAME_WARN=1024 1319CONFIG_FRAME_WARN=1024
1246CONFIG_MAGIC_SYSRQ=y 1320CONFIG_MAGIC_SYSRQ=y
1321# CONFIG_STRIP_ASM_SYMS is not set
1247# CONFIG_UNUSED_SYMBOLS is not set 1322# CONFIG_UNUSED_SYMBOLS is not set
1248CONFIG_DEBUG_FS=y 1323CONFIG_DEBUG_FS=y
1249# CONFIG_HEADERS_CHECK is not set 1324# CONFIG_HEADERS_CHECK is not set
@@ -1261,10 +1336,14 @@ CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1261# CONFIG_DEBUG_OBJECTS is not set 1336# CONFIG_DEBUG_OBJECTS is not set
1262# CONFIG_SLUB_DEBUG_ON is not set 1337# CONFIG_SLUB_DEBUG_ON is not set
1263# CONFIG_SLUB_STATS is not set 1338# CONFIG_SLUB_STATS is not set
1339# CONFIG_DEBUG_KMEMLEAK is not set
1264# CONFIG_DEBUG_RT_MUTEXES is not set 1340# CONFIG_DEBUG_RT_MUTEXES is not set
1265# CONFIG_RT_MUTEX_TESTER is not set 1341# CONFIG_RT_MUTEX_TESTER is not set
1266# CONFIG_DEBUG_SPINLOCK is not set 1342# CONFIG_DEBUG_SPINLOCK is not set
1267# CONFIG_DEBUG_MUTEXES is not set 1343# CONFIG_DEBUG_MUTEXES is not set
1344# CONFIG_DEBUG_LOCK_ALLOC is not set
1345# CONFIG_PROVE_LOCKING is not set
1346# CONFIG_LOCK_STAT is not set
1268# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1347# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1269# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1348# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1270# CONFIG_DEBUG_KOBJECT is not set 1349# CONFIG_DEBUG_KOBJECT is not set
@@ -1276,11 +1355,12 @@ CONFIG_DEBUG_INFO=y
1276# CONFIG_DEBUG_LIST is not set 1355# CONFIG_DEBUG_LIST is not set
1277# CONFIG_DEBUG_SG is not set 1356# CONFIG_DEBUG_SG is not set
1278# CONFIG_DEBUG_NOTIFIERS is not set 1357# CONFIG_DEBUG_NOTIFIERS is not set
1279# CONFIG_BOOT_PRINTK_DELAY is not set 1358# CONFIG_DEBUG_CREDENTIALS is not set
1280# CONFIG_RCU_TORTURE_TEST is not set 1359# CONFIG_RCU_TORTURE_TEST is not set
1281# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1360# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1282# CONFIG_BACKTRACE_SELF_TEST is not set 1361# CONFIG_BACKTRACE_SELF_TEST is not set
1283# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1362# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1363# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1284# CONFIG_FAULT_INJECTION is not set 1364# CONFIG_FAULT_INJECTION is not set
1285# CONFIG_LATENCYTOP is not set 1365# CONFIG_LATENCYTOP is not set
1286CONFIG_SYSCTL_SYSCALL_CHECK=y 1366CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1290,27 +1370,30 @@ CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1290CONFIG_HAVE_DYNAMIC_FTRACE=y 1370CONFIG_HAVE_DYNAMIC_FTRACE=y
1291CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1371CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1292CONFIG_TRACING_SUPPORT=y 1372CONFIG_TRACING_SUPPORT=y
1293 1373CONFIG_FTRACE=y
1294#
1295# Tracers
1296#
1297# CONFIG_FUNCTION_TRACER is not set 1374# CONFIG_FUNCTION_TRACER is not set
1375# CONFIG_IRQSOFF_TRACER is not set
1298# CONFIG_SCHED_TRACER is not set 1376# CONFIG_SCHED_TRACER is not set
1299# CONFIG_CONTEXT_SWITCH_TRACER is not set 1377# CONFIG_ENABLE_DEFAULT_TRACERS is not set
1300# CONFIG_EVENT_TRACER is not set
1301# CONFIG_BOOT_TRACER is not set 1378# CONFIG_BOOT_TRACER is not set
1302# CONFIG_TRACE_BRANCH_PROFILING is not set 1379CONFIG_BRANCH_PROFILE_NONE=y
1380# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1381# CONFIG_PROFILE_ALL_BRANCHES is not set
1303# CONFIG_STACK_TRACER is not set 1382# CONFIG_STACK_TRACER is not set
1304# CONFIG_KMEMTRACE is not set 1383# CONFIG_KMEMTRACE is not set
1305# CONFIG_WORKQUEUE_TRACER is not set 1384# CONFIG_WORKQUEUE_TRACER is not set
1306# CONFIG_BLK_DEV_IO_TRACE is not set 1385# CONFIG_BLK_DEV_IO_TRACE is not set
1307# CONFIG_DYNAMIC_DEBUG is not set 1386# CONFIG_DYNAMIC_DEBUG is not set
1387# CONFIG_DMA_API_DEBUG is not set
1308# CONFIG_SAMPLES is not set 1388# CONFIG_SAMPLES is not set
1309CONFIG_HAVE_ARCH_KGDB=y 1389CONFIG_HAVE_ARCH_KGDB=y
1310# CONFIG_KGDB is not set 1390# CONFIG_KGDB is not set
1391# CONFIG_PPC_DISABLE_WERROR is not set
1392CONFIG_PPC_WERROR=y
1311CONFIG_PRINT_STACK_DEPTH=64 1393CONFIG_PRINT_STACK_DEPTH=64
1312# CONFIG_DEBUG_STACKOVERFLOW is not set 1394# CONFIG_DEBUG_STACKOVERFLOW is not set
1313# CONFIG_DEBUG_STACK_USAGE is not set 1395# CONFIG_DEBUG_STACK_USAGE is not set
1396# CONFIG_PPC_EMULATED_STATS is not set
1314# CONFIG_CODE_PATCHING_SELFTEST is not set 1397# CONFIG_CODE_PATCHING_SELFTEST is not set
1315# CONFIG_FTR_FIXUP_SELFTEST is not set 1398# CONFIG_FTR_FIXUP_SELFTEST is not set
1316# CONFIG_MSI_BITMAP_SELFTEST is not set 1399# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -1326,13 +1409,16 @@ CONFIG_IRQSTACKS=y
1326# CONFIG_KEYS is not set 1409# CONFIG_KEYS is not set
1327# CONFIG_SECURITY is not set 1410# CONFIG_SECURITY is not set
1328# CONFIG_SECURITYFS is not set 1411# CONFIG_SECURITYFS is not set
1329# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1412# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1413# CONFIG_DEFAULT_SECURITY_SMACK is not set
1414# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1415CONFIG_DEFAULT_SECURITY_DAC=y
1416CONFIG_DEFAULT_SECURITY=""
1330CONFIG_CRYPTO=y 1417CONFIG_CRYPTO=y
1331 1418
1332# 1419#
1333# Crypto core or helper 1420# Crypto core or helper
1334# 1421#
1335# CONFIG_CRYPTO_FIPS is not set
1336CONFIG_CRYPTO_ALGAPI=y 1422CONFIG_CRYPTO_ALGAPI=y
1337CONFIG_CRYPTO_ALGAPI2=y 1423CONFIG_CRYPTO_ALGAPI2=y
1338# CONFIG_CRYPTO_MANAGER is not set 1424# CONFIG_CRYPTO_MANAGER is not set
@@ -1366,11 +1452,13 @@ CONFIG_CRYPTO_ALGAPI2=y
1366# 1452#
1367# CONFIG_CRYPTO_HMAC is not set 1453# CONFIG_CRYPTO_HMAC is not set
1368# CONFIG_CRYPTO_XCBC is not set 1454# CONFIG_CRYPTO_XCBC is not set
1455# CONFIG_CRYPTO_VMAC is not set
1369 1456
1370# 1457#
1371# Digest 1458# Digest
1372# 1459#
1373# CONFIG_CRYPTO_CRC32C is not set 1460# CONFIG_CRYPTO_CRC32C is not set
1461# CONFIG_CRYPTO_GHASH is not set
1374# CONFIG_CRYPTO_MD4 is not set 1462# CONFIG_CRYPTO_MD4 is not set
1375# CONFIG_CRYPTO_MD5 is not set 1463# CONFIG_CRYPTO_MD5 is not set
1376# CONFIG_CRYPTO_MICHAEL_MIC is not set 1464# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/52xx/cm5200_defconfig b/arch/powerpc/configs/52xx/cm5200_defconfig
index 0396ce7bffc6..ff9bdb28197d 100644
--- a/arch/powerpc/configs/52xx/cm5200_defconfig
+++ b/arch/powerpc/configs/52xx/cm5200_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.32-rc4 3# Linux kernel version: 2.6.33-rc2
4# Thu Oct 15 10:33:22 2009 4# Wed Dec 30 14:45:07 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -36,6 +36,7 @@ CONFIG_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 37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
41CONFIG_TRACE_IRQFLAGS_SUPPORT=y 42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -58,6 +59,7 @@ CONFIG_AUDIT_ARCH=y
58CONFIG_GENERIC_BUG=y 59CONFIG_GENERIC_BUG=y
59CONFIG_DTC=y 60CONFIG_DTC=y
60CONFIG_DEFAULT_UIMAGE=y 61CONFIG_DEFAULT_UIMAGE=y
62CONFIG_ARCH_HIBERNATION_POSSIBLE=y
61# CONFIG_PPC_DCR_NATIVE is not set 63# CONFIG_PPC_DCR_NATIVE is not set
62# CONFIG_PPC_DCR_MMIO is not set 64# CONFIG_PPC_DCR_MMIO is not set
63CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 65CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -85,6 +87,7 @@ CONFIG_SYSVIPC_SYSCTL=y
85# 87#
86CONFIG_TREE_RCU=y 88CONFIG_TREE_RCU=y
87# CONFIG_TREE_PREEMPT_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
90# CONFIG_TINY_RCU is not set
88# CONFIG_RCU_TRACE is not set 91# CONFIG_RCU_TRACE is not set
89CONFIG_RCU_FANOUT=32 92CONFIG_RCU_FANOUT=32
90# CONFIG_RCU_FANOUT_EXACT is not set 93# CONFIG_RCU_FANOUT_EXACT is not set
@@ -166,14 +169,41 @@ CONFIG_LBDAF=y
166# IO Schedulers 169# IO Schedulers
167# 170#
168CONFIG_IOSCHED_NOOP=y 171CONFIG_IOSCHED_NOOP=y
169CONFIG_IOSCHED_AS=y
170CONFIG_IOSCHED_DEADLINE=y 172CONFIG_IOSCHED_DEADLINE=y
171CONFIG_IOSCHED_CFQ=y 173CONFIG_IOSCHED_CFQ=y
172CONFIG_DEFAULT_AS=y
173# CONFIG_DEFAULT_DEADLINE is not set 174# CONFIG_DEFAULT_DEADLINE is not set
174# CONFIG_DEFAULT_CFQ is not set 175CONFIG_DEFAULT_CFQ=y
175# CONFIG_DEFAULT_NOOP is not set 176# CONFIG_DEFAULT_NOOP is not set
176CONFIG_DEFAULT_IOSCHED="anticipatory" 177CONFIG_DEFAULT_IOSCHED="cfq"
178# CONFIG_INLINE_SPIN_TRYLOCK is not set
179# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
180# CONFIG_INLINE_SPIN_LOCK is not set
181# CONFIG_INLINE_SPIN_LOCK_BH is not set
182# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
183# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
184CONFIG_INLINE_SPIN_UNLOCK=y
185# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
186CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
187# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
188# CONFIG_INLINE_READ_TRYLOCK is not set
189# CONFIG_INLINE_READ_LOCK is not set
190# CONFIG_INLINE_READ_LOCK_BH is not set
191# CONFIG_INLINE_READ_LOCK_IRQ is not set
192# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
193CONFIG_INLINE_READ_UNLOCK=y
194# CONFIG_INLINE_READ_UNLOCK_BH is not set
195CONFIG_INLINE_READ_UNLOCK_IRQ=y
196# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
197# CONFIG_INLINE_WRITE_TRYLOCK is not set
198# CONFIG_INLINE_WRITE_LOCK is not set
199# CONFIG_INLINE_WRITE_LOCK_BH is not set
200# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
201# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
202CONFIG_INLINE_WRITE_UNLOCK=y
203# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
204CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
205# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
206# CONFIG_MUTEX_SPIN_ON_OWNER is not set
177# CONFIG_FREEZER is not set 207# CONFIG_FREEZER is not set
178 208
179# 209#
@@ -189,6 +219,7 @@ CONFIG_PPC_MPC5200_SIMPLE=y
189# CONFIG_PPC_MEDIA5200 is not set 219# CONFIG_PPC_MEDIA5200 is not set
190# CONFIG_PPC_MPC5200_BUGFIX is not set 220# CONFIG_PPC_MPC5200_BUGFIX is not set
191# CONFIG_PPC_MPC5200_GPIO is not set 221# CONFIG_PPC_MPC5200_GPIO is not set
222# CONFIG_PPC_MPC5200_LPBFIFO is not set
192# CONFIG_PPC_PMAC is not set 223# CONFIG_PPC_PMAC is not set
193# CONFIG_PPC_CELL is not set 224# CONFIG_PPC_CELL is not set
194# CONFIG_PPC_CELL_NATIVE is not set 225# CONFIG_PPC_CELL_NATIVE is not set
@@ -243,6 +274,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
243CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 274CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
244# CONFIG_KEXEC is not set 275# CONFIG_KEXEC is not set
245# CONFIG_CRASH_DUMP is not set 276# CONFIG_CRASH_DUMP is not set
277CONFIG_SPARSE_IRQ=y
246CONFIG_MAX_ACTIVE_REGIONS=32 278CONFIG_MAX_ACTIVE_REGIONS=32
247CONFIG_ARCH_FLATMEM_ENABLE=y 279CONFIG_ARCH_FLATMEM_ENABLE=y
248CONFIG_ARCH_POPULATES_NODE_MAP=y 280CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -259,8 +291,6 @@ CONFIG_MIGRATION=y
259CONFIG_ZONE_DMA_FLAG=1 291CONFIG_ZONE_DMA_FLAG=1
260CONFIG_BOUNCE=y 292CONFIG_BOUNCE=y
261CONFIG_VIRT_TO_BUS=y 293CONFIG_VIRT_TO_BUS=y
262CONFIG_HAVE_MLOCK=y
263CONFIG_HAVE_MLOCKED_PAGE_BIT=y
264# CONFIG_KSM is not set 294# CONFIG_KSM is not set
265CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 295CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
266CONFIG_PPC_4K_PAGES=y 296CONFIG_PPC_4K_PAGES=y
@@ -273,6 +303,7 @@ CONFIG_PROC_DEVICETREE=y
273CONFIG_EXTRA_TARGETS="" 303CONFIG_EXTRA_TARGETS=""
274CONFIG_PM=y 304CONFIG_PM=y
275# CONFIG_PM_DEBUG is not set 305# CONFIG_PM_DEBUG is not set
306# CONFIG_HIBERNATION is not set
276# CONFIG_PM_RUNTIME is not set 307# CONFIG_PM_RUNTIME is not set
277CONFIG_SECCOMP=y 308CONFIG_SECCOMP=y
278CONFIG_ISA_DMA_API=y 309CONFIG_ISA_DMA_API=y
@@ -378,7 +409,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
378# CONFIG_IRDA is not set 409# CONFIG_IRDA is not set
379# CONFIG_BT is not set 410# CONFIG_BT is not set
380# CONFIG_AF_RXRPC is not set 411# CONFIG_AF_RXRPC is not set
381# CONFIG_WIRELESS is not set 412CONFIG_WIRELESS=y
413# CONFIG_CFG80211 is not set
414# CONFIG_LIB80211 is not set
415
416#
417# CFG80211 needs to be enabled for MAC80211
418#
382# CONFIG_WIMAX is not set 419# CONFIG_WIMAX is not set
383# CONFIG_RFKILL is not set 420# CONFIG_RFKILL is not set
384# CONFIG_NET_9P is not set 421# CONFIG_NET_9P is not set
@@ -489,6 +526,10 @@ CONFIG_BLK_DEV=y
489# CONFIG_BLK_DEV_COW_COMMON is not set 526# CONFIG_BLK_DEV_COW_COMMON is not set
490CONFIG_BLK_DEV_LOOP=y 527CONFIG_BLK_DEV_LOOP=y
491# CONFIG_BLK_DEV_CRYPTOLOOP is not set 528# CONFIG_BLK_DEV_CRYPTOLOOP is not set
529
530#
531# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
532#
492# CONFIG_BLK_DEV_NBD is not set 533# CONFIG_BLK_DEV_NBD is not set
493# CONFIG_BLK_DEV_UB is not set 534# CONFIG_BLK_DEV_UB is not set
494CONFIG_BLK_DEV_RAM=y 535CONFIG_BLK_DEV_RAM=y
@@ -587,8 +628,8 @@ CONFIG_FEC_MPC52xx_MDIO=y
587# CONFIG_NETDEV_1000 is not set 628# CONFIG_NETDEV_1000 is not set
588# CONFIG_NETDEV_10000 is not set 629# CONFIG_NETDEV_10000 is not set
589CONFIG_WLAN=y 630CONFIG_WLAN=y
590# CONFIG_WLAN_PRE80211 is not set 631# CONFIG_USB_ZD1201 is not set
591# CONFIG_WLAN_80211 is not set 632# CONFIG_HOSTAP is not set
592 633
593# 634#
594# Enable WiMAX (Networking options) to see the WiMAX drivers 635# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -643,6 +684,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
643CONFIG_SERIAL_MPC52xx=y 684CONFIG_SERIAL_MPC52xx=y
644CONFIG_SERIAL_MPC52xx_CONSOLE=y 685CONFIG_SERIAL_MPC52xx_CONSOLE=y
645CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=57600 686CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=57600
687# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
646CONFIG_UNIX98_PTYS=y 688CONFIG_UNIX98_PTYS=y
647# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 689# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
648CONFIG_LEGACY_PTYS=y 690CONFIG_LEGACY_PTYS=y
@@ -688,7 +730,6 @@ CONFIG_I2C_MPC=y
688# 730#
689# Miscellaneous I2C Chip support 731# Miscellaneous I2C Chip support
690# 732#
691# CONFIG_DS1682 is not set
692# CONFIG_SENSORS_TSL2550 is not set 733# CONFIG_SENSORS_TSL2550 is not set
693# CONFIG_I2C_DEBUG_CORE is not set 734# CONFIG_I2C_DEBUG_CORE is not set
694# CONFIG_I2C_DEBUG_ALGO is not set 735# CONFIG_I2C_DEBUG_ALGO is not set
@@ -735,11 +776,13 @@ CONFIG_SSB_POSSIBLE=y
735# CONFIG_TWL4030_CORE is not set 776# CONFIG_TWL4030_CORE is not set
736# CONFIG_MFD_TMIO is not set 777# CONFIG_MFD_TMIO is not set
737# CONFIG_PMIC_DA903X is not set 778# CONFIG_PMIC_DA903X is not set
779# CONFIG_PMIC_ADP5520 is not set
738# CONFIG_MFD_WM8400 is not set 780# CONFIG_MFD_WM8400 is not set
739# CONFIG_MFD_WM831X is not set 781# CONFIG_MFD_WM831X is not set
740# CONFIG_MFD_WM8350_I2C is not set 782# CONFIG_MFD_WM8350_I2C is not set
741# CONFIG_MFD_PCF50633 is not set 783# CONFIG_MFD_PCF50633 is not set
742# CONFIG_AB3100_CORE is not set 784# CONFIG_AB3100_CORE is not set
785# CONFIG_MFD_88PM8607 is not set
743# CONFIG_REGULATOR is not set 786# CONFIG_REGULATOR is not set
744# CONFIG_MEDIA_SUPPORT is not set 787# CONFIG_MEDIA_SUPPORT is not set
745 788
@@ -797,7 +840,6 @@ CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
797# CONFIG_USB_SL811_HCD is not set 840# CONFIG_USB_SL811_HCD is not set
798# CONFIG_USB_R8A66597_HCD is not set 841# CONFIG_USB_R8A66597_HCD is not set
799# CONFIG_USB_HWA_HCD is not set 842# CONFIG_USB_HWA_HCD is not set
800# CONFIG_USB_MUSB_HDRC is not set
801 843
802# 844#
803# USB Device Class drivers 845# USB Device Class drivers
@@ -1137,6 +1179,7 @@ CONFIG_SCHED_DEBUG=y
1137# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set 1179# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1138# CONFIG_FAULT_INJECTION is not set 1180# CONFIG_FAULT_INJECTION is not set
1139# CONFIG_LATENCYTOP is not set 1181# CONFIG_LATENCYTOP is not set
1182# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1140# CONFIG_DEBUG_PAGEALLOC is not set 1183# CONFIG_DEBUG_PAGEALLOC is not set
1141CONFIG_HAVE_FUNCTION_TRACER=y 1184CONFIG_HAVE_FUNCTION_TRACER=y
1142CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 1185CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
@@ -1180,7 +1223,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1180# CONFIG_KEYS is not set 1223# CONFIG_KEYS is not set
1181# CONFIG_SECURITY is not set 1224# CONFIG_SECURITY is not set
1182# CONFIG_SECURITYFS is not set 1225# CONFIG_SECURITYFS is not set
1183# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1226# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1227# CONFIG_DEFAULT_SECURITY_SMACK is not set
1228# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1229CONFIG_DEFAULT_SECURITY_DAC=y
1230CONFIG_DEFAULT_SECURITY=""
1184CONFIG_CRYPTO=y 1231CONFIG_CRYPTO=y
1185 1232
1186# 1233#
diff --git a/arch/powerpc/configs/52xx/lite5200b_defconfig b/arch/powerpc/configs/52xx/lite5200b_defconfig
index f5c07fd72239..7b3f4d0ed404 100644
--- a/arch/powerpc/configs/52xx/lite5200b_defconfig
+++ b/arch/powerpc/configs/52xx/lite5200b_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.32-rc4 3# Linux kernel version: 2.6.33-rc2
4# Thu Oct 15 10:33:24 2009 4# Wed Dec 30 14:45:09 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -36,6 +36,7 @@ CONFIG_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 37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
41CONFIG_TRACE_IRQFLAGS_SUPPORT=y 42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -58,6 +59,7 @@ CONFIG_AUDIT_ARCH=y
58CONFIG_GENERIC_BUG=y 59CONFIG_GENERIC_BUG=y
59CONFIG_DTC=y 60CONFIG_DTC=y
60CONFIG_DEFAULT_UIMAGE=y 61CONFIG_DEFAULT_UIMAGE=y
62CONFIG_ARCH_HIBERNATION_POSSIBLE=y
61CONFIG_ARCH_SUSPEND_POSSIBLE=y 63CONFIG_ARCH_SUSPEND_POSSIBLE=y
62# CONFIG_PPC_DCR_NATIVE is not set 64# CONFIG_PPC_DCR_NATIVE is not set
63# CONFIG_PPC_DCR_MMIO is not set 65# CONFIG_PPC_DCR_MMIO is not set
@@ -86,6 +88,7 @@ CONFIG_SYSVIPC_SYSCTL=y
86# 88#
87CONFIG_TREE_RCU=y 89CONFIG_TREE_RCU=y
88# CONFIG_TREE_PREEMPT_RCU is not set 90# CONFIG_TREE_PREEMPT_RCU is not set
91# CONFIG_TINY_RCU is not set
89# CONFIG_RCU_TRACE is not set 92# CONFIG_RCU_TRACE is not set
90CONFIG_RCU_FANOUT=32 93CONFIG_RCU_FANOUT=32
91# CONFIG_RCU_FANOUT_EXACT is not set 94# CONFIG_RCU_FANOUT_EXACT is not set
@@ -173,14 +176,41 @@ CONFIG_LBDAF=y
173# IO Schedulers 176# IO Schedulers
174# 177#
175CONFIG_IOSCHED_NOOP=y 178CONFIG_IOSCHED_NOOP=y
176CONFIG_IOSCHED_AS=y
177CONFIG_IOSCHED_DEADLINE=y 179CONFIG_IOSCHED_DEADLINE=y
178CONFIG_IOSCHED_CFQ=y 180CONFIG_IOSCHED_CFQ=y
179CONFIG_DEFAULT_AS=y
180# CONFIG_DEFAULT_DEADLINE is not set 181# CONFIG_DEFAULT_DEADLINE is not set
181# CONFIG_DEFAULT_CFQ is not set 182CONFIG_DEFAULT_CFQ=y
182# CONFIG_DEFAULT_NOOP is not set 183# CONFIG_DEFAULT_NOOP is not set
183CONFIG_DEFAULT_IOSCHED="anticipatory" 184CONFIG_DEFAULT_IOSCHED="cfq"
185# CONFIG_INLINE_SPIN_TRYLOCK is not set
186# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
187# CONFIG_INLINE_SPIN_LOCK is not set
188# CONFIG_INLINE_SPIN_LOCK_BH is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
191CONFIG_INLINE_SPIN_UNLOCK=y
192# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
193CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
194# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
195# CONFIG_INLINE_READ_TRYLOCK is not set
196# CONFIG_INLINE_READ_LOCK is not set
197# CONFIG_INLINE_READ_LOCK_BH is not set
198# CONFIG_INLINE_READ_LOCK_IRQ is not set
199# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
200CONFIG_INLINE_READ_UNLOCK=y
201# CONFIG_INLINE_READ_UNLOCK_BH is not set
202CONFIG_INLINE_READ_UNLOCK_IRQ=y
203# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_WRITE_TRYLOCK is not set
205# CONFIG_INLINE_WRITE_LOCK is not set
206# CONFIG_INLINE_WRITE_LOCK_BH is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
209CONFIG_INLINE_WRITE_UNLOCK=y
210# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
211CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
212# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
213# CONFIG_MUTEX_SPIN_ON_OWNER is not set
184CONFIG_FREEZER=y 214CONFIG_FREEZER=y
185 215
186# 216#
@@ -196,6 +226,7 @@ CONFIG_PPC_LITE5200=y
196# CONFIG_PPC_MEDIA5200 is not set 226# CONFIG_PPC_MEDIA5200 is not set
197# CONFIG_PPC_MPC5200_BUGFIX is not set 227# CONFIG_PPC_MPC5200_BUGFIX is not set
198# CONFIG_PPC_MPC5200_GPIO is not set 228# CONFIG_PPC_MPC5200_GPIO is not set
229# CONFIG_PPC_MPC5200_LPBFIFO is not set
199# CONFIG_PPC_PMAC is not set 230# CONFIG_PPC_PMAC is not set
200# CONFIG_PPC_CELL is not set 231# CONFIG_PPC_CELL is not set
201# CONFIG_PPC_CELL_NATIVE is not set 232# CONFIG_PPC_CELL_NATIVE is not set
@@ -252,6 +283,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
252CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 283CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
253# CONFIG_KEXEC is not set 284# CONFIG_KEXEC is not set
254# CONFIG_CRASH_DUMP is not set 285# CONFIG_CRASH_DUMP is not set
286CONFIG_SPARSE_IRQ=y
255CONFIG_MAX_ACTIVE_REGIONS=32 287CONFIG_MAX_ACTIVE_REGIONS=32
256CONFIG_ARCH_FLATMEM_ENABLE=y 288CONFIG_ARCH_FLATMEM_ENABLE=y
257CONFIG_ARCH_POPULATES_NODE_MAP=y 289CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -268,8 +300,6 @@ CONFIG_MIGRATION=y
268CONFIG_ZONE_DMA_FLAG=1 300CONFIG_ZONE_DMA_FLAG=1
269CONFIG_BOUNCE=y 301CONFIG_BOUNCE=y
270CONFIG_VIRT_TO_BUS=y 302CONFIG_VIRT_TO_BUS=y
271CONFIG_HAVE_MLOCK=y
272CONFIG_HAVE_MLOCKED_PAGE_BIT=y
273# CONFIG_KSM is not set 303# CONFIG_KSM is not set
274CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 304CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
275CONFIG_PPC_4K_PAGES=y 305CONFIG_PPC_4K_PAGES=y
@@ -285,6 +315,7 @@ CONFIG_PM=y
285CONFIG_PM_SLEEP=y 315CONFIG_PM_SLEEP=y
286CONFIG_SUSPEND=y 316CONFIG_SUSPEND=y
287CONFIG_SUSPEND_FREEZER=y 317CONFIG_SUSPEND_FREEZER=y
318# CONFIG_HIBERNATION is not set
288# CONFIG_PM_RUNTIME is not set 319# CONFIG_PM_RUNTIME is not set
289CONFIG_SECCOMP=y 320CONFIG_SECCOMP=y
290CONFIG_ISA_DMA_API=y 321CONFIG_ISA_DMA_API=y
@@ -398,7 +429,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
398# CONFIG_IRDA is not set 429# CONFIG_IRDA is not set
399# CONFIG_BT is not set 430# CONFIG_BT is not set
400# CONFIG_AF_RXRPC is not set 431# CONFIG_AF_RXRPC is not set
401# CONFIG_WIRELESS is not set 432CONFIG_WIRELESS=y
433# CONFIG_CFG80211 is not set
434# CONFIG_LIB80211 is not set
435
436#
437# CFG80211 needs to be enabled for MAC80211
438#
402# CONFIG_WIMAX is not set 439# CONFIG_WIMAX is not set
403# CONFIG_RFKILL is not set 440# CONFIG_RFKILL is not set
404# CONFIG_NET_9P is not set 441# CONFIG_NET_9P is not set
@@ -433,6 +470,10 @@ CONFIG_BLK_DEV=y
433# CONFIG_BLK_DEV_COW_COMMON is not set 470# CONFIG_BLK_DEV_COW_COMMON is not set
434CONFIG_BLK_DEV_LOOP=y 471CONFIG_BLK_DEV_LOOP=y
435# CONFIG_BLK_DEV_CRYPTOLOOP is not set 472# CONFIG_BLK_DEV_CRYPTOLOOP is not set
473
474#
475# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
476#
436# CONFIG_BLK_DEV_NBD is not set 477# CONFIG_BLK_DEV_NBD is not set
437# CONFIG_BLK_DEV_SX8 is not set 478# CONFIG_BLK_DEV_SX8 is not set
438CONFIG_BLK_DEV_RAM=y 479CONFIG_BLK_DEV_RAM=y
@@ -443,6 +484,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
443# CONFIG_ATA_OVER_ETH is not set 484# CONFIG_ATA_OVER_ETH is not set
444# CONFIG_BLK_DEV_HD is not set 485# CONFIG_BLK_DEV_HD is not set
445CONFIG_MISC_DEVICES=y 486CONFIG_MISC_DEVICES=y
487# CONFIG_AD525X_DPOT is not set
446# CONFIG_PHANTOM is not set 488# CONFIG_PHANTOM is not set
447# CONFIG_SGI_IOC4 is not set 489# CONFIG_SGI_IOC4 is not set
448# CONFIG_TIFM_CORE is not set 490# CONFIG_TIFM_CORE is not set
@@ -450,6 +492,7 @@ CONFIG_MISC_DEVICES=y
450# CONFIG_ENCLOSURE_SERVICES is not set 492# CONFIG_ENCLOSURE_SERVICES is not set
451# CONFIG_HP_ILO is not set 493# CONFIG_HP_ILO is not set
452# CONFIG_ISL29003 is not set 494# CONFIG_ISL29003 is not set
495# CONFIG_DS1682 is not set
453# CONFIG_C2PORT is not set 496# CONFIG_C2PORT is not set
454 497
455# 498#
@@ -502,7 +545,9 @@ CONFIG_SCSI_LOWLEVEL=y
502# CONFIG_SCSI_BNX2_ISCSI is not set 545# CONFIG_SCSI_BNX2_ISCSI is not set
503# CONFIG_BE2ISCSI is not set 546# CONFIG_BE2ISCSI is not set
504# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 547# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
548# CONFIG_SCSI_HPSA is not set
505# CONFIG_SCSI_3W_9XXX is not set 549# CONFIG_SCSI_3W_9XXX is not set
550# CONFIG_SCSI_3W_SAS is not set
506# CONFIG_SCSI_ACARD is not set 551# CONFIG_SCSI_ACARD is not set
507# CONFIG_SCSI_AACRAID is not set 552# CONFIG_SCSI_AACRAID is not set
508# CONFIG_SCSI_AIC7XXX is not set 553# CONFIG_SCSI_AIC7XXX is not set
@@ -541,6 +586,7 @@ CONFIG_SCSI_LOWLEVEL=y
541# CONFIG_SCSI_NSP32 is not set 586# CONFIG_SCSI_NSP32 is not set
542# CONFIG_SCSI_DEBUG is not set 587# CONFIG_SCSI_DEBUG is not set
543# CONFIG_SCSI_PMCRAID is not set 588# CONFIG_SCSI_PMCRAID is not set
589# CONFIG_SCSI_PM8001 is not set
544# CONFIG_SCSI_SRP is not set 590# CONFIG_SCSI_SRP is not set
545# CONFIG_SCSI_BFA_FC is not set 591# CONFIG_SCSI_BFA_FC is not set
546# CONFIG_SCSI_DH is not set 592# CONFIG_SCSI_DH is not set
@@ -596,15 +642,16 @@ CONFIG_PATA_MPC52xx=y
596# CONFIG_PATA_NS87415 is not set 642# CONFIG_PATA_NS87415 is not set
597# CONFIG_PATA_OPTI is not set 643# CONFIG_PATA_OPTI is not set
598# CONFIG_PATA_OPTIDMA is not set 644# CONFIG_PATA_OPTIDMA is not set
645# CONFIG_PATA_PDC2027X is not set
599# CONFIG_PATA_PDC_OLD is not set 646# CONFIG_PATA_PDC_OLD is not set
600# CONFIG_PATA_RADISYS is not set 647# CONFIG_PATA_RADISYS is not set
601# CONFIG_PATA_RDC is not set 648# CONFIG_PATA_RDC is not set
602# CONFIG_PATA_RZ1000 is not set 649# CONFIG_PATA_RZ1000 is not set
603# CONFIG_PATA_SC1200 is not set 650# CONFIG_PATA_SC1200 is not set
604# CONFIG_PATA_SERVERWORKS is not set 651# CONFIG_PATA_SERVERWORKS is not set
605# CONFIG_PATA_PDC2027X is not set
606# CONFIG_PATA_SIL680 is not set 652# CONFIG_PATA_SIL680 is not set
607# CONFIG_PATA_SIS is not set 653# CONFIG_PATA_SIS is not set
654# CONFIG_PATA_TOSHIBA is not set
608# CONFIG_PATA_VIA is not set 655# CONFIG_PATA_VIA is not set
609# CONFIG_PATA_WINBOND is not set 656# CONFIG_PATA_WINBOND is not set
610# CONFIG_PATA_PLATFORM is not set 657# CONFIG_PATA_PLATFORM is not set
@@ -726,8 +773,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y
726# CONFIG_BE2NET is not set 773# CONFIG_BE2NET is not set
727# CONFIG_TR is not set 774# CONFIG_TR is not set
728CONFIG_WLAN=y 775CONFIG_WLAN=y
729# CONFIG_WLAN_PRE80211 is not set 776# CONFIG_AIRO is not set
730# CONFIG_WLAN_80211 is not set 777# CONFIG_ATMEL is not set
778# CONFIG_PRISM54 is not set
779# CONFIG_HOSTAP is not set
731 780
732# 781#
733# Enable WiMAX (Networking options) to see the WiMAX drivers 782# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -741,6 +790,7 @@ CONFIG_WLAN=y
741# CONFIG_NETCONSOLE is not set 790# CONFIG_NETCONSOLE is not set
742# CONFIG_NETPOLL is not set 791# CONFIG_NETPOLL is not set
743# CONFIG_NET_POLL_CONTROLLER is not set 792# CONFIG_NET_POLL_CONTROLLER is not set
793# CONFIG_VMXNET3 is not set
744# CONFIG_ISDN is not set 794# CONFIG_ISDN is not set
745# CONFIG_PHONE is not set 795# CONFIG_PHONE is not set
746 796
@@ -778,6 +828,7 @@ CONFIG_SERIAL_MPC52xx=y
778CONFIG_SERIAL_MPC52xx_CONSOLE=y 828CONFIG_SERIAL_MPC52xx_CONSOLE=y
779CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200 829CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
780# CONFIG_SERIAL_JSM is not set 830# CONFIG_SERIAL_JSM is not set
831# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
781CONFIG_UNIX98_PTYS=y 832CONFIG_UNIX98_PTYS=y
782# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 833# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
783CONFIG_LEGACY_PTYS=y 834CONFIG_LEGACY_PTYS=y
@@ -836,11 +887,6 @@ CONFIG_I2C_MPC=y
836# CONFIG_I2C_TAOS_EVM is not set 887# CONFIG_I2C_TAOS_EVM is not set
837 888
838# 889#
839# Graphics adapter I2C/DDC channel drivers
840#
841# CONFIG_I2C_VOODOO3 is not set
842
843#
844# Other I2C/SMBus bus drivers 890# Other I2C/SMBus bus drivers
845# 891#
846# CONFIG_I2C_PCA_PLATFORM is not set 892# CONFIG_I2C_PCA_PLATFORM is not set
@@ -849,7 +895,6 @@ CONFIG_I2C_MPC=y
849# 895#
850# Miscellaneous I2C Chip support 896# Miscellaneous I2C Chip support
851# 897#
852# CONFIG_DS1682 is not set
853# CONFIG_SENSORS_TSL2550 is not set 898# CONFIG_SENSORS_TSL2550 is not set
854# CONFIG_I2C_DEBUG_CORE is not set 899# CONFIG_I2C_DEBUG_CORE is not set
855# CONFIG_I2C_DEBUG_ALGO is not set 900# CONFIG_I2C_DEBUG_ALGO is not set
@@ -884,11 +929,13 @@ CONFIG_SSB_POSSIBLE=y
884# CONFIG_TWL4030_CORE is not set 929# CONFIG_TWL4030_CORE is not set
885# CONFIG_MFD_TMIO is not set 930# CONFIG_MFD_TMIO is not set
886# CONFIG_PMIC_DA903X is not set 931# CONFIG_PMIC_DA903X is not set
932# CONFIG_PMIC_ADP5520 is not set
887# CONFIG_MFD_WM8400 is not set 933# CONFIG_MFD_WM8400 is not set
888# CONFIG_MFD_WM831X is not set 934# CONFIG_MFD_WM831X is not set
889# CONFIG_MFD_WM8350_I2C is not set 935# CONFIG_MFD_WM8350_I2C is not set
890# CONFIG_MFD_PCF50633 is not set 936# CONFIG_MFD_PCF50633 is not set
891# CONFIG_AB3100_CORE is not set 937# CONFIG_AB3100_CORE is not set
938# CONFIG_MFD_88PM8607 is not set
892# CONFIG_REGULATOR is not set 939# CONFIG_REGULATOR is not set
893# CONFIG_MEDIA_SUPPORT is not set 940# CONFIG_MEDIA_SUPPORT is not set
894 941
@@ -1129,6 +1176,7 @@ CONFIG_DEBUG_INFO=y
1129# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set 1176# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1130# CONFIG_FAULT_INJECTION is not set 1177# CONFIG_FAULT_INJECTION is not set
1131# CONFIG_LATENCYTOP is not set 1178# CONFIG_LATENCYTOP is not set
1179# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1132# CONFIG_DEBUG_PAGEALLOC is not set 1180# CONFIG_DEBUG_PAGEALLOC is not set
1133CONFIG_HAVE_FUNCTION_TRACER=y 1181CONFIG_HAVE_FUNCTION_TRACER=y
1134CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 1182CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
@@ -1172,7 +1220,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1172# CONFIG_KEYS is not set 1220# CONFIG_KEYS is not set
1173# CONFIG_SECURITY is not set 1221# CONFIG_SECURITY is not set
1174# CONFIG_SECURITYFS is not set 1222# CONFIG_SECURITYFS is not set
1175# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1223# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1224# CONFIG_DEFAULT_SECURITY_SMACK is not set
1225# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1226CONFIG_DEFAULT_SECURITY_DAC=y
1227CONFIG_DEFAULT_SECURITY=""
1176CONFIG_CRYPTO=y 1228CONFIG_CRYPTO=y
1177 1229
1178# 1230#
diff --git a/arch/powerpc/configs/52xx/motionpro_defconfig b/arch/powerpc/configs/52xx/motionpro_defconfig
index 4f77a1bdc8f9..eaae2d469aa0 100644
--- a/arch/powerpc/configs/52xx/motionpro_defconfig
+++ b/arch/powerpc/configs/52xx/motionpro_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.32-rc4 3# Linux kernel version: 2.6.33-rc2
4# Thu Oct 15 10:33:22 2009 4# Wed Dec 30 14:45:08 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -36,6 +36,7 @@ CONFIG_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 37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
41CONFIG_TRACE_IRQFLAGS_SUPPORT=y 42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -58,6 +59,7 @@ CONFIG_AUDIT_ARCH=y
58CONFIG_GENERIC_BUG=y 59CONFIG_GENERIC_BUG=y
59CONFIG_DTC=y 60CONFIG_DTC=y
60CONFIG_DEFAULT_UIMAGE=y 61CONFIG_DEFAULT_UIMAGE=y
62CONFIG_ARCH_HIBERNATION_POSSIBLE=y
61# CONFIG_PPC_DCR_NATIVE is not set 63# CONFIG_PPC_DCR_NATIVE is not set
62# CONFIG_PPC_DCR_MMIO is not set 64# CONFIG_PPC_DCR_MMIO is not set
63CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 65CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -85,6 +87,7 @@ CONFIG_SYSVIPC_SYSCTL=y
85# 87#
86CONFIG_TREE_RCU=y 88CONFIG_TREE_RCU=y
87# CONFIG_TREE_PREEMPT_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
90# CONFIG_TINY_RCU is not set
88# CONFIG_RCU_TRACE is not set 91# CONFIG_RCU_TRACE is not set
89CONFIG_RCU_FANOUT=32 92CONFIG_RCU_FANOUT=32
90# CONFIG_RCU_FANOUT_EXACT is not set 93# CONFIG_RCU_FANOUT_EXACT is not set
@@ -166,14 +169,41 @@ CONFIG_LBDAF=y
166# IO Schedulers 169# IO Schedulers
167# 170#
168CONFIG_IOSCHED_NOOP=y 171CONFIG_IOSCHED_NOOP=y
169CONFIG_IOSCHED_AS=y
170CONFIG_IOSCHED_DEADLINE=y 172CONFIG_IOSCHED_DEADLINE=y
171CONFIG_IOSCHED_CFQ=y 173CONFIG_IOSCHED_CFQ=y
172CONFIG_DEFAULT_AS=y
173# CONFIG_DEFAULT_DEADLINE is not set 174# CONFIG_DEFAULT_DEADLINE is not set
174# CONFIG_DEFAULT_CFQ is not set 175CONFIG_DEFAULT_CFQ=y
175# CONFIG_DEFAULT_NOOP is not set 176# CONFIG_DEFAULT_NOOP is not set
176CONFIG_DEFAULT_IOSCHED="anticipatory" 177CONFIG_DEFAULT_IOSCHED="cfq"
178# CONFIG_INLINE_SPIN_TRYLOCK is not set
179# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
180# CONFIG_INLINE_SPIN_LOCK is not set
181# CONFIG_INLINE_SPIN_LOCK_BH is not set
182# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
183# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
184CONFIG_INLINE_SPIN_UNLOCK=y
185# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
186CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
187# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
188# CONFIG_INLINE_READ_TRYLOCK is not set
189# CONFIG_INLINE_READ_LOCK is not set
190# CONFIG_INLINE_READ_LOCK_BH is not set
191# CONFIG_INLINE_READ_LOCK_IRQ is not set
192# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
193CONFIG_INLINE_READ_UNLOCK=y
194# CONFIG_INLINE_READ_UNLOCK_BH is not set
195CONFIG_INLINE_READ_UNLOCK_IRQ=y
196# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
197# CONFIG_INLINE_WRITE_TRYLOCK is not set
198# CONFIG_INLINE_WRITE_LOCK is not set
199# CONFIG_INLINE_WRITE_LOCK_BH is not set
200# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
201# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
202CONFIG_INLINE_WRITE_UNLOCK=y
203# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
204CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
205# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
206# CONFIG_MUTEX_SPIN_ON_OWNER is not set
177# CONFIG_FREEZER is not set 207# CONFIG_FREEZER is not set
178 208
179# 209#
@@ -189,6 +219,7 @@ CONFIG_PPC_MPC5200_SIMPLE=y
189# CONFIG_PPC_MEDIA5200 is not set 219# CONFIG_PPC_MEDIA5200 is not set
190# CONFIG_PPC_MPC5200_BUGFIX is not set 220# CONFIG_PPC_MPC5200_BUGFIX is not set
191# CONFIG_PPC_MPC5200_GPIO is not set 221# CONFIG_PPC_MPC5200_GPIO is not set
222# CONFIG_PPC_MPC5200_LPBFIFO is not set
192# CONFIG_PPC_PMAC is not set 223# CONFIG_PPC_PMAC is not set
193# CONFIG_PPC_CELL is not set 224# CONFIG_PPC_CELL is not set
194# CONFIG_PPC_CELL_NATIVE is not set 225# CONFIG_PPC_CELL_NATIVE is not set
@@ -244,6 +275,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
244CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 275CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
245# CONFIG_KEXEC is not set 276# CONFIG_KEXEC is not set
246# CONFIG_CRASH_DUMP is not set 277# CONFIG_CRASH_DUMP is not set
278CONFIG_SPARSE_IRQ=y
247CONFIG_MAX_ACTIVE_REGIONS=32 279CONFIG_MAX_ACTIVE_REGIONS=32
248CONFIG_ARCH_FLATMEM_ENABLE=y 280CONFIG_ARCH_FLATMEM_ENABLE=y
249CONFIG_ARCH_POPULATES_NODE_MAP=y 281CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -260,8 +292,6 @@ CONFIG_MIGRATION=y
260CONFIG_ZONE_DMA_FLAG=1 292CONFIG_ZONE_DMA_FLAG=1
261CONFIG_BOUNCE=y 293CONFIG_BOUNCE=y
262CONFIG_VIRT_TO_BUS=y 294CONFIG_VIRT_TO_BUS=y
263CONFIG_HAVE_MLOCK=y
264CONFIG_HAVE_MLOCKED_PAGE_BIT=y
265# CONFIG_KSM is not set 295# CONFIG_KSM is not set
266CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 296CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
267CONFIG_PPC_4K_PAGES=y 297CONFIG_PPC_4K_PAGES=y
@@ -274,6 +304,7 @@ CONFIG_PROC_DEVICETREE=y
274CONFIG_EXTRA_TARGETS="" 304CONFIG_EXTRA_TARGETS=""
275CONFIG_PM=y 305CONFIG_PM=y
276# CONFIG_PM_DEBUG is not set 306# CONFIG_PM_DEBUG is not set
307# CONFIG_HIBERNATION is not set
277# CONFIG_PM_RUNTIME is not set 308# CONFIG_PM_RUNTIME is not set
278CONFIG_SECCOMP=y 309CONFIG_SECCOMP=y
279CONFIG_ISA_DMA_API=y 310CONFIG_ISA_DMA_API=y
@@ -379,7 +410,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
379# CONFIG_IRDA is not set 410# CONFIG_IRDA is not set
380# CONFIG_BT is not set 411# CONFIG_BT is not set
381# CONFIG_AF_RXRPC is not set 412# CONFIG_AF_RXRPC is not set
382# CONFIG_WIRELESS is not set 413CONFIG_WIRELESS=y
414# CONFIG_CFG80211 is not set
415# CONFIG_LIB80211 is not set
416
417#
418# CFG80211 needs to be enabled for MAC80211
419#
383# CONFIG_WIMAX is not set 420# CONFIG_WIMAX is not set
384# CONFIG_RFKILL is not set 421# CONFIG_RFKILL is not set
385# CONFIG_NET_9P is not set 422# CONFIG_NET_9P is not set
@@ -490,6 +527,10 @@ CONFIG_BLK_DEV=y
490# CONFIG_BLK_DEV_COW_COMMON is not set 527# CONFIG_BLK_DEV_COW_COMMON is not set
491CONFIG_BLK_DEV_LOOP=y 528CONFIG_BLK_DEV_LOOP=y
492# CONFIG_BLK_DEV_CRYPTOLOOP is not set 529# CONFIG_BLK_DEV_CRYPTOLOOP is not set
530
531#
532# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
533#
493# CONFIG_BLK_DEV_NBD is not set 534# CONFIG_BLK_DEV_NBD is not set
494CONFIG_BLK_DEV_RAM=y 535CONFIG_BLK_DEV_RAM=y
495CONFIG_BLK_DEV_RAM_COUNT=16 536CONFIG_BLK_DEV_RAM_COUNT=16
@@ -499,9 +540,11 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
499# CONFIG_ATA_OVER_ETH is not set 540# CONFIG_ATA_OVER_ETH is not set
500# CONFIG_BLK_DEV_HD is not set 541# CONFIG_BLK_DEV_HD is not set
501CONFIG_MISC_DEVICES=y 542CONFIG_MISC_DEVICES=y
543# CONFIG_AD525X_DPOT is not set
502# CONFIG_ICS932S401 is not set 544# CONFIG_ICS932S401 is not set
503# CONFIG_ENCLOSURE_SERVICES is not set 545# CONFIG_ENCLOSURE_SERVICES is not set
504# CONFIG_ISL29003 is not set 546# CONFIG_ISL29003 is not set
547# CONFIG_DS1682 is not set
505# CONFIG_C2PORT is not set 548# CONFIG_C2PORT is not set
506 549
507# 550#
@@ -610,8 +653,7 @@ CONFIG_FEC_MPC52xx_MDIO=y
610# CONFIG_NETDEV_1000 is not set 653# CONFIG_NETDEV_1000 is not set
611# CONFIG_NETDEV_10000 is not set 654# CONFIG_NETDEV_10000 is not set
612CONFIG_WLAN=y 655CONFIG_WLAN=y
613# CONFIG_WLAN_PRE80211 is not set 656# CONFIG_HOSTAP is not set
614# CONFIG_WLAN_80211 is not set
615 657
616# 658#
617# Enable WiMAX (Networking options) to see the WiMAX drivers 659# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -657,6 +699,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
657CONFIG_SERIAL_MPC52xx=y 699CONFIG_SERIAL_MPC52xx=y
658CONFIG_SERIAL_MPC52xx_CONSOLE=y 700CONFIG_SERIAL_MPC52xx_CONSOLE=y
659CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200 701CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
702# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
660CONFIG_UNIX98_PTYS=y 703CONFIG_UNIX98_PTYS=y
661# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 704# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
662CONFIG_LEGACY_PTYS=y 705CONFIG_LEGACY_PTYS=y
@@ -700,7 +743,6 @@ CONFIG_I2C_MPC=y
700# 743#
701# Miscellaneous I2C Chip support 744# Miscellaneous I2C Chip support
702# 745#
703# CONFIG_DS1682 is not set
704# CONFIG_SENSORS_TSL2550 is not set 746# CONFIG_SENSORS_TSL2550 is not set
705# CONFIG_I2C_DEBUG_CORE is not set 747# CONFIG_I2C_DEBUG_CORE is not set
706# CONFIG_I2C_DEBUG_ALGO is not set 748# CONFIG_I2C_DEBUG_ALGO is not set
@@ -745,6 +787,7 @@ CONFIG_HWMON=y
745# CONFIG_SENSORS_GL520SM is not set 787# CONFIG_SENSORS_GL520SM is not set
746# CONFIG_SENSORS_IT87 is not set 788# CONFIG_SENSORS_IT87 is not set
747# CONFIG_SENSORS_LM63 is not set 789# CONFIG_SENSORS_LM63 is not set
790# CONFIG_SENSORS_LM73 is not set
748# CONFIG_SENSORS_LM75 is not set 791# CONFIG_SENSORS_LM75 is not set
749# CONFIG_SENSORS_LM77 is not set 792# CONFIG_SENSORS_LM77 is not set
750# CONFIG_SENSORS_LM78 is not set 793# CONFIG_SENSORS_LM78 is not set
@@ -805,11 +848,13 @@ CONFIG_SSB_POSSIBLE=y
805# CONFIG_TWL4030_CORE is not set 848# CONFIG_TWL4030_CORE is not set
806# CONFIG_MFD_TMIO is not set 849# CONFIG_MFD_TMIO is not set
807# CONFIG_PMIC_DA903X is not set 850# CONFIG_PMIC_DA903X is not set
851# CONFIG_PMIC_ADP5520 is not set
808# CONFIG_MFD_WM8400 is not set 852# CONFIG_MFD_WM8400 is not set
809# CONFIG_MFD_WM831X is not set 853# CONFIG_MFD_WM831X is not set
810# CONFIG_MFD_WM8350_I2C is not set 854# CONFIG_MFD_WM8350_I2C is not set
811# CONFIG_MFD_PCF50633 is not set 855# CONFIG_MFD_PCF50633 is not set
812# CONFIG_AB3100_CORE is not set 856# CONFIG_AB3100_CORE is not set
857# CONFIG_MFD_88PM8607 is not set
813# CONFIG_REGULATOR is not set 858# CONFIG_REGULATOR is not set
814# CONFIG_MEDIA_SUPPORT is not set 859# CONFIG_MEDIA_SUPPORT is not set
815 860
@@ -881,6 +926,7 @@ CONFIG_RTC_DRV_DS1307=y
881# CONFIG_RTC_DRV_PCF8563 is not set 926# CONFIG_RTC_DRV_PCF8563 is not set
882# CONFIG_RTC_DRV_PCF8583 is not set 927# CONFIG_RTC_DRV_PCF8583 is not set
883# CONFIG_RTC_DRV_M41T80 is not set 928# CONFIG_RTC_DRV_M41T80 is not set
929# CONFIG_RTC_DRV_BQ32K is not set
884# CONFIG_RTC_DRV_S35390A is not set 930# CONFIG_RTC_DRV_S35390A is not set
885# CONFIG_RTC_DRV_FM3130 is not set 931# CONFIG_RTC_DRV_FM3130 is not set
886# CONFIG_RTC_DRV_RX8581 is not set 932# CONFIG_RTC_DRV_RX8581 is not set
@@ -902,7 +948,9 @@ CONFIG_RTC_DRV_DS1307=y
902# CONFIG_RTC_DRV_M48T86 is not set 948# CONFIG_RTC_DRV_M48T86 is not set
903# CONFIG_RTC_DRV_M48T35 is not set 949# CONFIG_RTC_DRV_M48T35 is not set
904# CONFIG_RTC_DRV_M48T59 is not set 950# CONFIG_RTC_DRV_M48T59 is not set
951# CONFIG_RTC_DRV_MSM6242 is not set
905# CONFIG_RTC_DRV_BQ4802 is not set 952# CONFIG_RTC_DRV_BQ4802 is not set
953# CONFIG_RTC_DRV_RP5C01 is not set
906# CONFIG_RTC_DRV_V3020 is not set 954# CONFIG_RTC_DRV_V3020 is not set
907 955
908# 956#
@@ -1172,6 +1220,7 @@ CONFIG_DEBUG_INFO=y
1172# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set 1220# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1173# CONFIG_FAULT_INJECTION is not set 1221# CONFIG_FAULT_INJECTION is not set
1174# CONFIG_LATENCYTOP is not set 1222# CONFIG_LATENCYTOP is not set
1223# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1175# CONFIG_DEBUG_PAGEALLOC is not set 1224# CONFIG_DEBUG_PAGEALLOC is not set
1176CONFIG_HAVE_FUNCTION_TRACER=y 1225CONFIG_HAVE_FUNCTION_TRACER=y
1177CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 1226CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
@@ -1215,7 +1264,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1215# CONFIG_KEYS is not set 1264# CONFIG_KEYS is not set
1216# CONFIG_SECURITY is not set 1265# CONFIG_SECURITY is not set
1217# CONFIG_SECURITYFS is not set 1266# CONFIG_SECURITYFS is not set
1218# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1267# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1268# CONFIG_DEFAULT_SECURITY_SMACK is not set
1269# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1270CONFIG_DEFAULT_SECURITY_DAC=y
1271CONFIG_DEFAULT_SECURITY=""
1219CONFIG_CRYPTO=y 1272CONFIG_CRYPTO=y
1220 1273
1221# 1274#
diff --git a/arch/powerpc/configs/52xx/pcm030_defconfig b/arch/powerpc/configs/52xx/pcm030_defconfig
index f9168c1a2fa5..1742c0200b75 100644
--- a/arch/powerpc/configs/52xx/pcm030_defconfig
+++ b/arch/powerpc/configs/52xx/pcm030_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.32-rc4 3# Linux kernel version: 2.6.33-rc2
4# Thu Oct 15 10:33:25 2009 4# Wed Dec 30 14:45:10 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -36,6 +36,7 @@ CONFIG_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 37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
41CONFIG_TRACE_IRQFLAGS_SUPPORT=y 42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -58,6 +59,7 @@ CONFIG_AUDIT_ARCH=y
58CONFIG_GENERIC_BUG=y 59CONFIG_GENERIC_BUG=y
59CONFIG_DTC=y 60CONFIG_DTC=y
60CONFIG_DEFAULT_UIMAGE=y 61CONFIG_DEFAULT_UIMAGE=y
62CONFIG_ARCH_HIBERNATION_POSSIBLE=y
61# CONFIG_PPC_DCR_NATIVE is not set 63# CONFIG_PPC_DCR_NATIVE is not set
62# CONFIG_PPC_DCR_MMIO is not set 64# CONFIG_PPC_DCR_MMIO is not set
63CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 65CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -87,6 +89,7 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
87# 89#
88CONFIG_TREE_RCU=y 90CONFIG_TREE_RCU=y
89# CONFIG_TREE_PREEMPT_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
92# CONFIG_TINY_RCU is not set
90# CONFIG_RCU_TRACE is not set 93# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32 94CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set 95# CONFIG_RCU_FANOUT_EXACT is not set
@@ -172,14 +175,41 @@ CONFIG_LBDAF=y
172# IO Schedulers 175# IO Schedulers
173# 176#
174CONFIG_IOSCHED_NOOP=y 177CONFIG_IOSCHED_NOOP=y
175# CONFIG_IOSCHED_AS is not set
176# CONFIG_IOSCHED_DEADLINE is not set 178# CONFIG_IOSCHED_DEADLINE is not set
177# CONFIG_IOSCHED_CFQ is not set 179# CONFIG_IOSCHED_CFQ is not set
178# CONFIG_DEFAULT_AS is not set
179# CONFIG_DEFAULT_DEADLINE is not set 180# CONFIG_DEFAULT_DEADLINE is not set
180# CONFIG_DEFAULT_CFQ is not set 181# CONFIG_DEFAULT_CFQ is not set
181CONFIG_DEFAULT_NOOP=y 182CONFIG_DEFAULT_NOOP=y
182CONFIG_DEFAULT_IOSCHED="noop" 183CONFIG_DEFAULT_IOSCHED="noop"
184# CONFIG_INLINE_SPIN_TRYLOCK is not set
185# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
186# CONFIG_INLINE_SPIN_LOCK is not set
187# CONFIG_INLINE_SPIN_LOCK_BH is not set
188# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
190# CONFIG_INLINE_SPIN_UNLOCK is not set
191# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
192# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
193# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
194# CONFIG_INLINE_READ_TRYLOCK is not set
195# CONFIG_INLINE_READ_LOCK is not set
196# CONFIG_INLINE_READ_LOCK_BH is not set
197# CONFIG_INLINE_READ_LOCK_IRQ is not set
198# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
199# CONFIG_INLINE_READ_UNLOCK is not set
200# CONFIG_INLINE_READ_UNLOCK_BH is not set
201# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
202# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
203# CONFIG_INLINE_WRITE_TRYLOCK is not set
204# CONFIG_INLINE_WRITE_LOCK is not set
205# CONFIG_INLINE_WRITE_LOCK_BH is not set
206# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
208# CONFIG_INLINE_WRITE_UNLOCK is not set
209# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
210# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
211# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
212# CONFIG_MUTEX_SPIN_ON_OWNER is not set
183# CONFIG_FREEZER is not set 213# CONFIG_FREEZER is not set
184 214
185# 215#
@@ -195,6 +225,7 @@ CONFIG_PPC_MPC5200_SIMPLE=y
195# CONFIG_PPC_MEDIA5200 is not set 225# CONFIG_PPC_MEDIA5200 is not set
196# CONFIG_PPC_MPC5200_BUGFIX is not set 226# CONFIG_PPC_MPC5200_BUGFIX is not set
197# CONFIG_PPC_MPC5200_GPIO is not set 227# CONFIG_PPC_MPC5200_GPIO is not set
228# CONFIG_PPC_MPC5200_LPBFIFO is not set
198# CONFIG_PPC_PMAC is not set 229# CONFIG_PPC_PMAC is not set
199# CONFIG_PPC_CELL is not set 230# CONFIG_PPC_CELL is not set
200# CONFIG_PPC_CELL_NATIVE is not set 231# CONFIG_PPC_CELL_NATIVE is not set
@@ -251,6 +282,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
251CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 282CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
252# CONFIG_KEXEC is not set 283# CONFIG_KEXEC is not set
253# CONFIG_CRASH_DUMP is not set 284# CONFIG_CRASH_DUMP is not set
285CONFIG_SPARSE_IRQ=y
254CONFIG_MAX_ACTIVE_REGIONS=32 286CONFIG_MAX_ACTIVE_REGIONS=32
255CONFIG_ARCH_FLATMEM_ENABLE=y 287CONFIG_ARCH_FLATMEM_ENABLE=y
256CONFIG_ARCH_POPULATES_NODE_MAP=y 288CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -267,8 +299,6 @@ CONFIG_MIGRATION=y
267CONFIG_ZONE_DMA_FLAG=1 299CONFIG_ZONE_DMA_FLAG=1
268CONFIG_BOUNCE=y 300CONFIG_BOUNCE=y
269CONFIG_VIRT_TO_BUS=y 301CONFIG_VIRT_TO_BUS=y
270CONFIG_HAVE_MLOCK=y
271CONFIG_HAVE_MLOCKED_PAGE_BIT=y
272# CONFIG_KSM is not set 302# CONFIG_KSM is not set
273CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 303CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
274CONFIG_PPC_4K_PAGES=y 304CONFIG_PPC_4K_PAGES=y
@@ -385,7 +415,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
385# CONFIG_IRDA is not set 415# CONFIG_IRDA is not set
386# CONFIG_BT is not set 416# CONFIG_BT is not set
387# CONFIG_AF_RXRPC is not set 417# CONFIG_AF_RXRPC is not set
388# CONFIG_WIRELESS is not set 418CONFIG_WIRELESS=y
419# CONFIG_CFG80211 is not set
420# CONFIG_LIB80211 is not set
421
422#
423# CFG80211 needs to be enabled for MAC80211
424#
389# CONFIG_WIMAX is not set 425# CONFIG_WIMAX is not set
390# CONFIG_RFKILL is not set 426# CONFIG_RFKILL is not set
391# CONFIG_NET_9P is not set 427# CONFIG_NET_9P is not set
@@ -585,15 +621,16 @@ CONFIG_PATA_MPC52xx=m
585# CONFIG_PATA_NS87415 is not set 621# CONFIG_PATA_NS87415 is not set
586# CONFIG_PATA_OPTI is not set 622# CONFIG_PATA_OPTI is not set
587# CONFIG_PATA_OPTIDMA is not set 623# CONFIG_PATA_OPTIDMA is not set
624# CONFIG_PATA_PDC2027X is not set
588# CONFIG_PATA_PDC_OLD is not set 625# CONFIG_PATA_PDC_OLD is not set
589# CONFIG_PATA_RADISYS is not set 626# CONFIG_PATA_RADISYS is not set
590# CONFIG_PATA_RDC is not set 627# CONFIG_PATA_RDC is not set
591# CONFIG_PATA_RZ1000 is not set 628# CONFIG_PATA_RZ1000 is not set
592# CONFIG_PATA_SC1200 is not set 629# CONFIG_PATA_SC1200 is not set
593# CONFIG_PATA_SERVERWORKS is not set 630# CONFIG_PATA_SERVERWORKS is not set
594# CONFIG_PATA_PDC2027X is not set
595# CONFIG_PATA_SIL680 is not set 631# CONFIG_PATA_SIL680 is not set
596# CONFIG_PATA_SIS is not set 632# CONFIG_PATA_SIS is not set
633# CONFIG_PATA_TOSHIBA is not set
597# CONFIG_PATA_VIA is not set 634# CONFIG_PATA_VIA is not set
598# CONFIG_PATA_WINBOND is not set 635# CONFIG_PATA_WINBOND is not set
599# CONFIG_PATA_PLATFORM is not set 636# CONFIG_PATA_PLATFORM is not set
@@ -673,8 +710,11 @@ CONFIG_FEC_MPC52xx_MDIO=y
673# CONFIG_NETDEV_10000 is not set 710# CONFIG_NETDEV_10000 is not set
674# CONFIG_TR is not set 711# CONFIG_TR is not set
675CONFIG_WLAN=y 712CONFIG_WLAN=y
676# CONFIG_WLAN_PRE80211 is not set 713# CONFIG_AIRO is not set
677# CONFIG_WLAN_80211 is not set 714# CONFIG_ATMEL is not set
715# CONFIG_PRISM54 is not set
716# CONFIG_USB_ZD1201 is not set
717# CONFIG_HOSTAP is not set
678 718
679# 719#
680# Enable WiMAX (Networking options) to see the WiMAX drivers 720# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -697,6 +737,7 @@ CONFIG_WLAN=y
697# CONFIG_NETCONSOLE is not set 737# CONFIG_NETCONSOLE is not set
698# CONFIG_NETPOLL is not set 738# CONFIG_NETPOLL is not set
699# CONFIG_NET_POLL_CONTROLLER is not set 739# CONFIG_NET_POLL_CONTROLLER is not set
740# CONFIG_VMXNET3 is not set
700# CONFIG_ISDN is not set 741# CONFIG_ISDN is not set
701# CONFIG_PHONE is not set 742# CONFIG_PHONE is not set
702 743
@@ -734,6 +775,7 @@ CONFIG_SERIAL_MPC52xx=y
734CONFIG_SERIAL_MPC52xx_CONSOLE=y 775CONFIG_SERIAL_MPC52xx_CONSOLE=y
735CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=9600 776CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=9600
736# CONFIG_SERIAL_JSM is not set 777# CONFIG_SERIAL_JSM is not set
778# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
737CONFIG_UNIX98_PTYS=y 779CONFIG_UNIX98_PTYS=y
738# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 780# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
739# CONFIG_LEGACY_PTYS is not set 781# CONFIG_LEGACY_PTYS is not set
@@ -791,11 +833,6 @@ CONFIG_I2C_MPC=y
791# CONFIG_I2C_TINY_USB is not set 833# CONFIG_I2C_TINY_USB is not set
792 834
793# 835#
794# Graphics adapter I2C/DDC channel drivers
795#
796# CONFIG_I2C_VOODOO3 is not set
797
798#
799# Other I2C/SMBus bus drivers 836# Other I2C/SMBus bus drivers
800# 837#
801# CONFIG_I2C_PCA_PLATFORM is not set 838# CONFIG_I2C_PCA_PLATFORM is not set
@@ -804,7 +841,6 @@ CONFIG_I2C_MPC=y
804# 841#
805# Miscellaneous I2C Chip support 842# Miscellaneous I2C Chip support
806# 843#
807# CONFIG_DS1682 is not set
808# CONFIG_SENSORS_TSL2550 is not set 844# CONFIG_SENSORS_TSL2550 is not set
809# CONFIG_I2C_DEBUG_CORE is not set 845# CONFIG_I2C_DEBUG_CORE is not set
810# CONFIG_I2C_DEBUG_ALGO is not set 846# CONFIG_I2C_DEBUG_ALGO is not set
@@ -839,11 +875,13 @@ CONFIG_SSB_POSSIBLE=y
839# CONFIG_TWL4030_CORE is not set 875# CONFIG_TWL4030_CORE is not set
840# CONFIG_MFD_TMIO is not set 876# CONFIG_MFD_TMIO is not set
841# CONFIG_PMIC_DA903X is not set 877# CONFIG_PMIC_DA903X is not set
878# CONFIG_PMIC_ADP5520 is not set
842# CONFIG_MFD_WM8400 is not set 879# CONFIG_MFD_WM8400 is not set
843# CONFIG_MFD_WM831X is not set 880# CONFIG_MFD_WM831X is not set
844# CONFIG_MFD_WM8350_I2C is not set 881# CONFIG_MFD_WM8350_I2C is not set
845# CONFIG_MFD_PCF50633 is not set 882# CONFIG_MFD_PCF50633 is not set
846# CONFIG_AB3100_CORE is not set 883# CONFIG_AB3100_CORE is not set
884# CONFIG_MFD_88PM8607 is not set
847# CONFIG_REGULATOR is not set 885# CONFIG_REGULATOR is not set
848# CONFIG_MEDIA_SUPPORT is not set 886# CONFIG_MEDIA_SUPPORT is not set
849 887
@@ -908,7 +946,6 @@ CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
908# CONFIG_USB_R8A66597_HCD is not set 946# CONFIG_USB_R8A66597_HCD is not set
909# CONFIG_USB_WHCI_HCD is not set 947# CONFIG_USB_WHCI_HCD is not set
910# CONFIG_USB_HWA_HCD is not set 948# CONFIG_USB_HWA_HCD is not set
911# CONFIG_USB_MUSB_HDRC is not set
912 949
913# 950#
914# USB Device Class drivers 951# USB Device Class drivers
@@ -1011,6 +1048,7 @@ CONFIG_RTC_INTF_DEV=y
1011CONFIG_RTC_DRV_PCF8563=m 1048CONFIG_RTC_DRV_PCF8563=m
1012# CONFIG_RTC_DRV_PCF8583 is not set 1049# CONFIG_RTC_DRV_PCF8583 is not set
1013# CONFIG_RTC_DRV_M41T80 is not set 1050# CONFIG_RTC_DRV_M41T80 is not set
1051# CONFIG_RTC_DRV_BQ32K is not set
1014# CONFIG_RTC_DRV_S35390A is not set 1052# CONFIG_RTC_DRV_S35390A is not set
1015# CONFIG_RTC_DRV_FM3130 is not set 1053# CONFIG_RTC_DRV_FM3130 is not set
1016# CONFIG_RTC_DRV_RX8581 is not set 1054# CONFIG_RTC_DRV_RX8581 is not set
@@ -1032,7 +1070,9 @@ CONFIG_RTC_DRV_PCF8563=m
1032# CONFIG_RTC_DRV_M48T86 is not set 1070# CONFIG_RTC_DRV_M48T86 is not set
1033# CONFIG_RTC_DRV_M48T35 is not set 1071# CONFIG_RTC_DRV_M48T35 is not set
1034# CONFIG_RTC_DRV_M48T59 is not set 1072# CONFIG_RTC_DRV_M48T59 is not set
1073# CONFIG_RTC_DRV_MSM6242 is not set
1035# CONFIG_RTC_DRV_BQ4802 is not set 1074# CONFIG_RTC_DRV_BQ4802 is not set
1075# CONFIG_RTC_DRV_RP5C01 is not set
1036# CONFIG_RTC_DRV_V3020 is not set 1076# CONFIG_RTC_DRV_V3020 is not set
1037 1077
1038# 1078#
@@ -1243,10 +1283,11 @@ CONFIG_FRAME_WARN=1024
1243# CONFIG_DEBUG_FS is not set 1283# CONFIG_DEBUG_FS is not set
1244# CONFIG_HEADERS_CHECK is not set 1284# CONFIG_HEADERS_CHECK is not set
1245# CONFIG_DEBUG_KERNEL is not set 1285# CONFIG_DEBUG_KERNEL is not set
1246# CONFIG_DEBUG_BUGVERBOSE is not set 1286CONFIG_DEBUG_BUGVERBOSE=y
1247# CONFIG_DEBUG_MEMORY_INIT is not set 1287# CONFIG_DEBUG_MEMORY_INIT is not set
1248# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1288# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1249# CONFIG_LATENCYTOP is not set 1289# CONFIG_LATENCYTOP is not set
1290# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1250CONFIG_HAVE_FUNCTION_TRACER=y 1291CONFIG_HAVE_FUNCTION_TRACER=y
1251CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 1292CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1252CONFIG_HAVE_DYNAMIC_FTRACE=y 1293CONFIG_HAVE_DYNAMIC_FTRACE=y
@@ -1269,7 +1310,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1269# CONFIG_KEYS is not set 1310# CONFIG_KEYS is not set
1270# CONFIG_SECURITY is not set 1311# CONFIG_SECURITY is not set
1271# CONFIG_SECURITYFS is not set 1312# CONFIG_SECURITYFS is not set
1272# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1313# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1314# CONFIG_DEFAULT_SECURITY_SMACK is not set
1315# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1316CONFIG_DEFAULT_SECURITY_DAC=y
1317CONFIG_DEFAULT_SECURITY=""
1273# CONFIG_CRYPTO is not set 1318# CONFIG_CRYPTO is not set
1274CONFIG_PPC_CLOCK=y 1319CONFIG_PPC_CLOCK=y
1275CONFIG_PPC_LIB_RHEAP=y 1320CONFIG_PPC_LIB_RHEAP=y
diff --git a/arch/powerpc/configs/52xx/tqm5200_defconfig b/arch/powerpc/configs/52xx/tqm5200_defconfig
index 75c835c2ae66..3972438db719 100644
--- a/arch/powerpc/configs/52xx/tqm5200_defconfig
+++ b/arch/powerpc/configs/52xx/tqm5200_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.32-rc4 3# Linux kernel version: 2.6.33-rc2
4# Thu Oct 15 10:33:23 2009 4# Wed Dec 30 14:45:09 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -36,6 +36,7 @@ CONFIG_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 37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
41CONFIG_TRACE_IRQFLAGS_SUPPORT=y 42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -58,6 +59,7 @@ CONFIG_AUDIT_ARCH=y
58CONFIG_GENERIC_BUG=y 59CONFIG_GENERIC_BUG=y
59CONFIG_DTC=y 60CONFIG_DTC=y
60CONFIG_DEFAULT_UIMAGE=y 61CONFIG_DEFAULT_UIMAGE=y
62CONFIG_ARCH_HIBERNATION_POSSIBLE=y
61# CONFIG_PPC_DCR_NATIVE is not set 63# CONFIG_PPC_DCR_NATIVE is not set
62# CONFIG_PPC_DCR_MMIO is not set 64# CONFIG_PPC_DCR_MMIO is not set
63CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 65CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -85,6 +87,7 @@ CONFIG_SYSVIPC_SYSCTL=y
85# 87#
86CONFIG_TREE_RCU=y 88CONFIG_TREE_RCU=y
87# CONFIG_TREE_PREEMPT_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
90# CONFIG_TINY_RCU is not set
88# CONFIG_RCU_TRACE is not set 91# CONFIG_RCU_TRACE is not set
89CONFIG_RCU_FANOUT=32 92CONFIG_RCU_FANOUT=32
90# CONFIG_RCU_FANOUT_EXACT is not set 93# CONFIG_RCU_FANOUT_EXACT is not set
@@ -171,14 +174,41 @@ CONFIG_LBDAF=y
171# IO Schedulers 174# IO Schedulers
172# 175#
173CONFIG_IOSCHED_NOOP=y 176CONFIG_IOSCHED_NOOP=y
174CONFIG_IOSCHED_AS=y
175CONFIG_IOSCHED_DEADLINE=y 177CONFIG_IOSCHED_DEADLINE=y
176CONFIG_IOSCHED_CFQ=y 178CONFIG_IOSCHED_CFQ=y
177CONFIG_DEFAULT_AS=y
178# CONFIG_DEFAULT_DEADLINE is not set 179# CONFIG_DEFAULT_DEADLINE is not set
179# CONFIG_DEFAULT_CFQ is not set 180CONFIG_DEFAULT_CFQ=y
180# CONFIG_DEFAULT_NOOP is not set 181# CONFIG_DEFAULT_NOOP is not set
181CONFIG_DEFAULT_IOSCHED="anticipatory" 182CONFIG_DEFAULT_IOSCHED="cfq"
183# CONFIG_INLINE_SPIN_TRYLOCK is not set
184# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
185# CONFIG_INLINE_SPIN_LOCK is not set
186# CONFIG_INLINE_SPIN_LOCK_BH is not set
187# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
188# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
189CONFIG_INLINE_SPIN_UNLOCK=y
190# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
191CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
192# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
193# CONFIG_INLINE_READ_TRYLOCK is not set
194# CONFIG_INLINE_READ_LOCK is not set
195# CONFIG_INLINE_READ_LOCK_BH is not set
196# CONFIG_INLINE_READ_LOCK_IRQ is not set
197# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
198CONFIG_INLINE_READ_UNLOCK=y
199# CONFIG_INLINE_READ_UNLOCK_BH is not set
200CONFIG_INLINE_READ_UNLOCK_IRQ=y
201# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
202# CONFIG_INLINE_WRITE_TRYLOCK is not set
203# CONFIG_INLINE_WRITE_LOCK is not set
204# CONFIG_INLINE_WRITE_LOCK_BH is not set
205# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
206# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
207CONFIG_INLINE_WRITE_UNLOCK=y
208# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
209CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
210# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
211# CONFIG_MUTEX_SPIN_ON_OWNER is not set
182# CONFIG_FREEZER is not set 212# CONFIG_FREEZER is not set
183 213
184# 214#
@@ -194,6 +224,7 @@ CONFIG_PPC_MPC5200_SIMPLE=y
194# CONFIG_PPC_MEDIA5200 is not set 224# CONFIG_PPC_MEDIA5200 is not set
195CONFIG_PPC_MPC5200_BUGFIX=y 225CONFIG_PPC_MPC5200_BUGFIX=y
196# CONFIG_PPC_MPC5200_GPIO is not set 226# CONFIG_PPC_MPC5200_GPIO is not set
227# CONFIG_PPC_MPC5200_LPBFIFO is not set
197# CONFIG_PPC_PMAC is not set 228# CONFIG_PPC_PMAC is not set
198# CONFIG_PPC_CELL is not set 229# CONFIG_PPC_CELL is not set
199# CONFIG_PPC_CELL_NATIVE is not set 230# CONFIG_PPC_CELL_NATIVE is not set
@@ -249,6 +280,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
249CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 280CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
250# CONFIG_KEXEC is not set 281# CONFIG_KEXEC is not set
251# CONFIG_CRASH_DUMP is not set 282# CONFIG_CRASH_DUMP is not set
283CONFIG_SPARSE_IRQ=y
252CONFIG_MAX_ACTIVE_REGIONS=32 284CONFIG_MAX_ACTIVE_REGIONS=32
253CONFIG_ARCH_FLATMEM_ENABLE=y 285CONFIG_ARCH_FLATMEM_ENABLE=y
254CONFIG_ARCH_POPULATES_NODE_MAP=y 286CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -265,8 +297,6 @@ CONFIG_MIGRATION=y
265CONFIG_ZONE_DMA_FLAG=1 297CONFIG_ZONE_DMA_FLAG=1
266CONFIG_BOUNCE=y 298CONFIG_BOUNCE=y
267CONFIG_VIRT_TO_BUS=y 299CONFIG_VIRT_TO_BUS=y
268CONFIG_HAVE_MLOCK=y
269CONFIG_HAVE_MLOCKED_PAGE_BIT=y
270# CONFIG_KSM is not set 300# CONFIG_KSM is not set
271CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 301CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
272CONFIG_PPC_4K_PAGES=y 302CONFIG_PPC_4K_PAGES=y
@@ -279,6 +309,7 @@ CONFIG_PROC_DEVICETREE=y
279CONFIG_EXTRA_TARGETS="" 309CONFIG_EXTRA_TARGETS=""
280CONFIG_PM=y 310CONFIG_PM=y
281# CONFIG_PM_DEBUG is not set 311# CONFIG_PM_DEBUG is not set
312# CONFIG_HIBERNATION is not set
282# CONFIG_PM_RUNTIME is not set 313# CONFIG_PM_RUNTIME is not set
283CONFIG_SECCOMP=y 314CONFIG_SECCOMP=y
284CONFIG_ISA_DMA_API=y 315CONFIG_ISA_DMA_API=y
@@ -384,7 +415,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
384# CONFIG_IRDA is not set 415# CONFIG_IRDA is not set
385# CONFIG_BT is not set 416# CONFIG_BT is not set
386# CONFIG_AF_RXRPC is not set 417# CONFIG_AF_RXRPC is not set
387# CONFIG_WIRELESS is not set 418CONFIG_WIRELESS=y
419# CONFIG_CFG80211 is not set
420# CONFIG_LIB80211 is not set
421
422#
423# CFG80211 needs to be enabled for MAC80211
424#
388# CONFIG_WIMAX is not set 425# CONFIG_WIMAX is not set
389# CONFIG_RFKILL is not set 426# CONFIG_RFKILL is not set
390# CONFIG_NET_9P is not set 427# CONFIG_NET_9P is not set
@@ -496,6 +533,10 @@ CONFIG_BLK_DEV=y
496# CONFIG_BLK_DEV_COW_COMMON is not set 533# CONFIG_BLK_DEV_COW_COMMON is not set
497CONFIG_BLK_DEV_LOOP=y 534CONFIG_BLK_DEV_LOOP=y
498# CONFIG_BLK_DEV_CRYPTOLOOP is not set 535# CONFIG_BLK_DEV_CRYPTOLOOP is not set
536
537#
538# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
539#
499# CONFIG_BLK_DEV_NBD is not set 540# CONFIG_BLK_DEV_NBD is not set
500# CONFIG_BLK_DEV_UB is not set 541# CONFIG_BLK_DEV_UB is not set
501CONFIG_BLK_DEV_RAM=y 542CONFIG_BLK_DEV_RAM=y
@@ -607,8 +648,8 @@ CONFIG_FEC_MPC52xx_MDIO=y
607# CONFIG_NETDEV_1000 is not set 648# CONFIG_NETDEV_1000 is not set
608# CONFIG_NETDEV_10000 is not set 649# CONFIG_NETDEV_10000 is not set
609CONFIG_WLAN=y 650CONFIG_WLAN=y
610# CONFIG_WLAN_PRE80211 is not set 651# CONFIG_USB_ZD1201 is not set
611# CONFIG_WLAN_80211 is not set 652# CONFIG_HOSTAP is not set
612 653
613# 654#
614# Enable WiMAX (Networking options) to see the WiMAX drivers 655# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -663,6 +704,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
663CONFIG_SERIAL_MPC52xx=y 704CONFIG_SERIAL_MPC52xx=y
664CONFIG_SERIAL_MPC52xx_CONSOLE=y 705CONFIG_SERIAL_MPC52xx_CONSOLE=y
665CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200 706CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
707# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
666CONFIG_UNIX98_PTYS=y 708CONFIG_UNIX98_PTYS=y
667# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 709# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
668CONFIG_LEGACY_PTYS=y 710CONFIG_LEGACY_PTYS=y
@@ -708,7 +750,6 @@ CONFIG_I2C_MPC=y
708# 750#
709# Miscellaneous I2C Chip support 751# Miscellaneous I2C Chip support
710# 752#
711# CONFIG_DS1682 is not set
712# CONFIG_SENSORS_TSL2550 is not set 753# CONFIG_SENSORS_TSL2550 is not set
713# CONFIG_I2C_DEBUG_CORE is not set 754# CONFIG_I2C_DEBUG_CORE is not set
714# CONFIG_I2C_DEBUG_ALGO is not set 755# CONFIG_I2C_DEBUG_ALGO is not set
@@ -753,6 +794,7 @@ CONFIG_HWMON=y
753# CONFIG_SENSORS_GL520SM is not set 794# CONFIG_SENSORS_GL520SM is not set
754# CONFIG_SENSORS_IT87 is not set 795# CONFIG_SENSORS_IT87 is not set
755# CONFIG_SENSORS_LM63 is not set 796# CONFIG_SENSORS_LM63 is not set
797# CONFIG_SENSORS_LM73 is not set
756# CONFIG_SENSORS_LM75 is not set 798# CONFIG_SENSORS_LM75 is not set
757# CONFIG_SENSORS_LM77 is not set 799# CONFIG_SENSORS_LM77 is not set
758# CONFIG_SENSORS_LM78 is not set 800# CONFIG_SENSORS_LM78 is not set
@@ -818,11 +860,13 @@ CONFIG_SSB_POSSIBLE=y
818# CONFIG_TWL4030_CORE is not set 860# CONFIG_TWL4030_CORE is not set
819# CONFIG_MFD_TMIO is not set 861# CONFIG_MFD_TMIO is not set
820# CONFIG_PMIC_DA903X is not set 862# CONFIG_PMIC_DA903X is not set
863# CONFIG_PMIC_ADP5520 is not set
821# CONFIG_MFD_WM8400 is not set 864# CONFIG_MFD_WM8400 is not set
822# CONFIG_MFD_WM831X is not set 865# CONFIG_MFD_WM831X is not set
823# CONFIG_MFD_WM8350_I2C is not set 866# CONFIG_MFD_WM8350_I2C is not set
824# CONFIG_MFD_PCF50633 is not set 867# CONFIG_MFD_PCF50633 is not set
825# CONFIG_AB3100_CORE is not set 868# CONFIG_AB3100_CORE is not set
869# CONFIG_MFD_88PM8607 is not set
826# CONFIG_REGULATOR is not set 870# CONFIG_REGULATOR is not set
827# CONFIG_MEDIA_SUPPORT is not set 871# CONFIG_MEDIA_SUPPORT is not set
828 872
@@ -880,7 +924,6 @@ CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
880# CONFIG_USB_SL811_HCD is not set 924# CONFIG_USB_SL811_HCD is not set
881# CONFIG_USB_R8A66597_HCD is not set 925# CONFIG_USB_R8A66597_HCD is not set
882# CONFIG_USB_HWA_HCD is not set 926# CONFIG_USB_HWA_HCD is not set
883# CONFIG_USB_MUSB_HDRC is not set
884 927
885# 928#
886# USB Device Class drivers 929# USB Device Class drivers
@@ -984,6 +1027,7 @@ CONFIG_RTC_DRV_DS1307=y
984# CONFIG_RTC_DRV_PCF8563 is not set 1027# CONFIG_RTC_DRV_PCF8563 is not set
985# CONFIG_RTC_DRV_PCF8583 is not set 1028# CONFIG_RTC_DRV_PCF8583 is not set
986# CONFIG_RTC_DRV_M41T80 is not set 1029# CONFIG_RTC_DRV_M41T80 is not set
1030# CONFIG_RTC_DRV_BQ32K is not set
987# CONFIG_RTC_DRV_S35390A is not set 1031# CONFIG_RTC_DRV_S35390A is not set
988# CONFIG_RTC_DRV_FM3130 is not set 1032# CONFIG_RTC_DRV_FM3130 is not set
989# CONFIG_RTC_DRV_RX8581 is not set 1033# CONFIG_RTC_DRV_RX8581 is not set
@@ -1005,7 +1049,9 @@ CONFIG_RTC_DRV_DS1307=y
1005# CONFIG_RTC_DRV_M48T86 is not set 1049# CONFIG_RTC_DRV_M48T86 is not set
1006# CONFIG_RTC_DRV_M48T35 is not set 1050# CONFIG_RTC_DRV_M48T35 is not set
1007# CONFIG_RTC_DRV_M48T59 is not set 1051# CONFIG_RTC_DRV_M48T59 is not set
1052# CONFIG_RTC_DRV_MSM6242 is not set
1008# CONFIG_RTC_DRV_BQ4802 is not set 1053# CONFIG_RTC_DRV_BQ4802 is not set
1054# CONFIG_RTC_DRV_RP5C01 is not set
1009# CONFIG_RTC_DRV_V3020 is not set 1055# CONFIG_RTC_DRV_V3020 is not set
1010 1056
1011# 1057#
@@ -1275,6 +1321,7 @@ CONFIG_DEBUG_INFO=y
1275# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set 1321# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1276# CONFIG_FAULT_INJECTION is not set 1322# CONFIG_FAULT_INJECTION is not set
1277# CONFIG_LATENCYTOP is not set 1323# CONFIG_LATENCYTOP is not set
1324# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1278# CONFIG_DEBUG_PAGEALLOC is not set 1325# CONFIG_DEBUG_PAGEALLOC is not set
1279CONFIG_HAVE_FUNCTION_TRACER=y 1326CONFIG_HAVE_FUNCTION_TRACER=y
1280CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 1327CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
@@ -1318,7 +1365,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1318# CONFIG_KEYS is not set 1365# CONFIG_KEYS is not set
1319# CONFIG_SECURITY is not set 1366# CONFIG_SECURITY is not set
1320# CONFIG_SECURITYFS is not set 1367# CONFIG_SECURITYFS is not set
1321# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1368# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1369# CONFIG_DEFAULT_SECURITY_SMACK is not set
1370# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1371CONFIG_DEFAULT_SECURITY_DAC=y
1372CONFIG_DEFAULT_SECURITY=""
1322CONFIG_CRYPTO=y 1373CONFIG_CRYPTO=y
1323 1374
1324# 1375#
diff --git a/arch/powerpc/configs/83xx/asp8347_defconfig b/arch/powerpc/configs/83xx/asp8347_defconfig
index 466f09ac3153..baa2bbb6c096 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:20 2009 4# Wed Jan 6 09:24:14 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -37,6 +37,7 @@ CONFIG_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 38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
40CONFIG_NR_IRQS=512
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y 43CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -60,6 +61,7 @@ CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y 61CONFIG_DTC=y
61# CONFIG_DEFAULT_UIMAGE is not set 62# CONFIG_DEFAULT_UIMAGE is not set
62CONFIG_REDBOOT=y 63CONFIG_REDBOOT=y
64CONFIG_ARCH_HIBERNATION_POSSIBLE=y
63CONFIG_ARCH_SUSPEND_POSSIBLE=y 65CONFIG_ARCH_SUSPEND_POSSIBLE=y
64# CONFIG_PPC_DCR_NATIVE is not set 66# CONFIG_PPC_DCR_NATIVE is not set
65# CONFIG_PPC_DCR_MMIO is not set 67# CONFIG_PPC_DCR_MMIO is not set
@@ -88,6 +90,7 @@ CONFIG_SYSVIPC_SYSCTL=y
88# 90#
89CONFIG_TREE_RCU=y 91CONFIG_TREE_RCU=y
90# CONFIG_TREE_PREEMPT_RCU is not set 92# CONFIG_TREE_PREEMPT_RCU is not set
93# CONFIG_TINY_RCU is not set
91# CONFIG_RCU_TRACE is not set 94# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32 95CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set 96# CONFIG_RCU_FANOUT_EXACT is not set
@@ -174,14 +177,41 @@ CONFIG_LBDAF=y
174# IO Schedulers 177# IO Schedulers
175# 178#
176CONFIG_IOSCHED_NOOP=y 179CONFIG_IOSCHED_NOOP=y
177CONFIG_IOSCHED_AS=y
178CONFIG_IOSCHED_DEADLINE=y 180CONFIG_IOSCHED_DEADLINE=y
179CONFIG_IOSCHED_CFQ=y 181CONFIG_IOSCHED_CFQ=y
180CONFIG_DEFAULT_AS=y
181# CONFIG_DEFAULT_DEADLINE is not set 182# CONFIG_DEFAULT_DEADLINE is not set
182# CONFIG_DEFAULT_CFQ is not set 183CONFIG_DEFAULT_CFQ=y
183# CONFIG_DEFAULT_NOOP is not set 184# CONFIG_DEFAULT_NOOP is not set
184CONFIG_DEFAULT_IOSCHED="anticipatory" 185CONFIG_DEFAULT_IOSCHED="cfq"
186# CONFIG_INLINE_SPIN_TRYLOCK is not set
187# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
188# CONFIG_INLINE_SPIN_LOCK is not set
189# CONFIG_INLINE_SPIN_LOCK_BH is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
191# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
192CONFIG_INLINE_SPIN_UNLOCK=y
193# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
194CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
195# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
196# CONFIG_INLINE_READ_TRYLOCK is not set
197# CONFIG_INLINE_READ_LOCK is not set
198# CONFIG_INLINE_READ_LOCK_BH is not set
199# CONFIG_INLINE_READ_LOCK_IRQ is not set
200# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
201CONFIG_INLINE_READ_UNLOCK=y
202# CONFIG_INLINE_READ_UNLOCK_BH is not set
203CONFIG_INLINE_READ_UNLOCK_IRQ=y
204# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
205# CONFIG_INLINE_WRITE_TRYLOCK is not set
206# CONFIG_INLINE_WRITE_LOCK is not set
207# CONFIG_INLINE_WRITE_LOCK_BH is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
209# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
210CONFIG_INLINE_WRITE_UNLOCK=y
211# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
212CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
213# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
214# CONFIG_MUTEX_SPIN_ON_OWNER is not set
185# CONFIG_FREEZER is not set 215# CONFIG_FREEZER is not set
186 216
187# 217#
@@ -260,6 +290,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
260CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 290CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
261# CONFIG_KEXEC is not set 291# CONFIG_KEXEC is not set
262# CONFIG_CRASH_DUMP is not set 292# CONFIG_CRASH_DUMP is not set
293CONFIG_SPARSE_IRQ=y
263CONFIG_MAX_ACTIVE_REGIONS=32 294CONFIG_MAX_ACTIVE_REGIONS=32
264CONFIG_ARCH_FLATMEM_ENABLE=y 295CONFIG_ARCH_FLATMEM_ENABLE=y
265CONFIG_ARCH_POPULATES_NODE_MAP=y 296CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -276,8 +307,6 @@ CONFIG_MIGRATION=y
276CONFIG_ZONE_DMA_FLAG=1 307CONFIG_ZONE_DMA_FLAG=1
277CONFIG_BOUNCE=y 308CONFIG_BOUNCE=y
278CONFIG_VIRT_TO_BUS=y 309CONFIG_VIRT_TO_BUS=y
279CONFIG_HAVE_MLOCK=y
280CONFIG_HAVE_MLOCKED_PAGE_BIT=y
281# CONFIG_KSM is not set 310# CONFIG_KSM is not set
282CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 311CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
283CONFIG_PPC_4K_PAGES=y 312CONFIG_PPC_4K_PAGES=y
@@ -404,9 +433,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
404# CONFIG_AF_RXRPC is not set 433# CONFIG_AF_RXRPC is not set
405CONFIG_WIRELESS=y 434CONFIG_WIRELESS=y
406# CONFIG_CFG80211 is not set 435# CONFIG_CFG80211 is not set
407CONFIG_CFG80211_DEFAULT_PS_VALUE=0
408CONFIG_WIRELESS_OLD_REGULATORY=y
409# CONFIG_WIRELESS_EXT is not set
410# CONFIG_LIB80211 is not set 436# CONFIG_LIB80211 is not set
411 437
412# 438#
@@ -530,6 +556,10 @@ CONFIG_BLK_DEV=y
530# CONFIG_BLK_DEV_COW_COMMON is not set 556# CONFIG_BLK_DEV_COW_COMMON is not set
531CONFIG_BLK_DEV_LOOP=y 557CONFIG_BLK_DEV_LOOP=y
532# CONFIG_BLK_DEV_CRYPTOLOOP is not set 558# CONFIG_BLK_DEV_CRYPTOLOOP is not set
559
560#
561# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
562#
533# CONFIG_BLK_DEV_NBD is not set 563# CONFIG_BLK_DEV_NBD is not set
534# CONFIG_BLK_DEV_SX8 is not set 564# CONFIG_BLK_DEV_SX8 is not set
535# CONFIG_BLK_DEV_UB is not set 565# CONFIG_BLK_DEV_UB is not set
@@ -541,6 +571,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
541# CONFIG_ATA_OVER_ETH is not set 571# CONFIG_ATA_OVER_ETH is not set
542# CONFIG_BLK_DEV_HD is not set 572# CONFIG_BLK_DEV_HD is not set
543CONFIG_MISC_DEVICES=y 573CONFIG_MISC_DEVICES=y
574# CONFIG_AD525X_DPOT is not set
544# CONFIG_PHANTOM is not set 575# CONFIG_PHANTOM is not set
545# CONFIG_SGI_IOC4 is not set 576# CONFIG_SGI_IOC4 is not set
546# CONFIG_TIFM_CORE is not set 577# CONFIG_TIFM_CORE is not set
@@ -548,6 +579,7 @@ CONFIG_MISC_DEVICES=y
548# CONFIG_ENCLOSURE_SERVICES is not set 579# CONFIG_ENCLOSURE_SERVICES is not set
549# CONFIG_HP_ILO is not set 580# CONFIG_HP_ILO is not set
550# CONFIG_ISL29003 is not set 581# CONFIG_ISL29003 is not set
582# CONFIG_DS1682 is not set
551# CONFIG_C2PORT is not set 583# CONFIG_C2PORT is not set
552 584
553# 585#
@@ -581,7 +613,7 @@ CONFIG_HAVE_IDE=y
581# 613#
582 614
583# 615#
584# See the help texts for more information. 616# The newer stack is recommended.
585# 617#
586# CONFIG_FIREWIRE is not set 618# CONFIG_FIREWIRE is not set
587# CONFIG_IEEE1394 is not set 619# CONFIG_IEEE1394 is not set
@@ -668,8 +700,11 @@ CONFIG_GIANFAR=y
668# CONFIG_NETDEV_10000 is not set 700# CONFIG_NETDEV_10000 is not set
669# CONFIG_TR is not set 701# CONFIG_TR is not set
670CONFIG_WLAN=y 702CONFIG_WLAN=y
671# CONFIG_WLAN_PRE80211 is not set 703# CONFIG_AIRO is not set
672# CONFIG_WLAN_80211 is not set 704# CONFIG_ATMEL is not set
705# CONFIG_PRISM54 is not set
706# CONFIG_USB_ZD1201 is not set
707# CONFIG_HOSTAP is not set
673 708
674# 709#
675# Enable WiMAX (Networking options) to see the WiMAX drivers 710# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -691,6 +726,7 @@ CONFIG_WLAN=y
691# CONFIG_NETCONSOLE is not set 726# CONFIG_NETCONSOLE is not set
692# CONFIG_NETPOLL is not set 727# CONFIG_NETPOLL is not set
693# CONFIG_NET_POLL_CONTROLLER is not set 728# CONFIG_NET_POLL_CONTROLLER is not set
729# CONFIG_VMXNET3 is not set
694# CONFIG_ISDN is not set 730# CONFIG_ISDN is not set
695# CONFIG_PHONE is not set 731# CONFIG_PHONE is not set
696 732
@@ -700,6 +736,7 @@ CONFIG_WLAN=y
700CONFIG_INPUT=y 736CONFIG_INPUT=y
701# CONFIG_INPUT_FF_MEMLESS is not set 737# CONFIG_INPUT_FF_MEMLESS is not set
702# CONFIG_INPUT_POLLDEV is not set 738# CONFIG_INPUT_POLLDEV is not set
739# CONFIG_INPUT_SPARSEKMAP is not set
703 740
704# 741#
705# Userland interfaces 742# Userland interfaces
@@ -751,6 +788,7 @@ CONFIG_SERIAL_CORE=y
751CONFIG_SERIAL_CORE_CONSOLE=y 788CONFIG_SERIAL_CORE_CONSOLE=y
752# CONFIG_SERIAL_JSM is not set 789# CONFIG_SERIAL_JSM is not set
753# CONFIG_SERIAL_OF_PLATFORM is not set 790# CONFIG_SERIAL_OF_PLATFORM is not set
791# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
754CONFIG_UNIX98_PTYS=y 792CONFIG_UNIX98_PTYS=y
755# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 793# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
756CONFIG_LEGACY_PTYS=y 794CONFIG_LEGACY_PTYS=y
@@ -807,11 +845,6 @@ CONFIG_I2C_MPC=y
807# CONFIG_I2C_TINY_USB is not set 845# CONFIG_I2C_TINY_USB is not set
808 846
809# 847#
810# Graphics adapter I2C/DDC channel drivers
811#
812# CONFIG_I2C_VOODOO3 is not set
813
814#
815# Other I2C/SMBus bus drivers 848# Other I2C/SMBus bus drivers
816# 849#
817# CONFIG_I2C_PCA_PLATFORM is not set 850# CONFIG_I2C_PCA_PLATFORM is not set
@@ -820,7 +853,6 @@ CONFIG_I2C_MPC=y
820# 853#
821# Miscellaneous I2C Chip support 854# Miscellaneous I2C Chip support
822# 855#
823# CONFIG_DS1682 is not set
824# CONFIG_SENSORS_TSL2550 is not set 856# CONFIG_SENSORS_TSL2550 is not set
825# CONFIG_I2C_DEBUG_CORE is not set 857# CONFIG_I2C_DEBUG_CORE is not set
826# CONFIG_I2C_DEBUG_ALGO is not set 858# CONFIG_I2C_DEBUG_ALGO is not set
@@ -866,6 +898,7 @@ CONFIG_HWMON=y
866# CONFIG_SENSORS_GL520SM is not set 898# CONFIG_SENSORS_GL520SM is not set
867# CONFIG_SENSORS_IT87 is not set 899# CONFIG_SENSORS_IT87 is not set
868# CONFIG_SENSORS_LM63 is not set 900# CONFIG_SENSORS_LM63 is not set
901# CONFIG_SENSORS_LM73 is not set
869# CONFIG_SENSORS_LM75 is not set 902# CONFIG_SENSORS_LM75 is not set
870# CONFIG_SENSORS_LM77 is not set 903# CONFIG_SENSORS_LM77 is not set
871# CONFIG_SENSORS_LM78 is not set 904# CONFIG_SENSORS_LM78 is not set
@@ -904,6 +937,7 @@ CONFIG_HWMON=y
904# CONFIG_SENSORS_W83L786NG is not set 937# CONFIG_SENSORS_W83L786NG is not set
905# CONFIG_SENSORS_W83627HF is not set 938# CONFIG_SENSORS_W83627HF is not set
906# CONFIG_SENSORS_W83627EHF is not set 939# CONFIG_SENSORS_W83627EHF is not set
940# CONFIG_SENSORS_LIS3_I2C is not set
907CONFIG_THERMAL=y 941CONFIG_THERMAL=y
908# CONFIG_THERMAL_HWMON is not set 942# CONFIG_THERMAL_HWMON is not set
909CONFIG_WATCHDOG=y 943CONFIG_WATCHDOG=y
@@ -942,11 +976,13 @@ CONFIG_SSB_POSSIBLE=y
942# CONFIG_TWL4030_CORE is not set 976# CONFIG_TWL4030_CORE is not set
943# CONFIG_MFD_TMIO is not set 977# CONFIG_MFD_TMIO is not set
944# CONFIG_PMIC_DA903X is not set 978# CONFIG_PMIC_DA903X is not set
979# CONFIG_PMIC_ADP5520 is not set
945# CONFIG_MFD_WM8400 is not set 980# CONFIG_MFD_WM8400 is not set
946# CONFIG_MFD_WM831X is not set 981# CONFIG_MFD_WM831X is not set
947# CONFIG_MFD_WM8350_I2C is not set 982# CONFIG_MFD_WM8350_I2C is not set
948# CONFIG_MFD_PCF50633 is not set 983# CONFIG_MFD_PCF50633 is not set
949# CONFIG_AB3100_CORE is not set 984# CONFIG_AB3100_CORE is not set
985# CONFIG_MFD_88PM8607 is not set
950# CONFIG_REGULATOR is not set 986# CONFIG_REGULATOR is not set
951# CONFIG_MEDIA_SUPPORT is not set 987# CONFIG_MEDIA_SUPPORT is not set
952 988
@@ -996,6 +1032,7 @@ CONFIG_USB_MON=y
996CONFIG_USB_EHCI_HCD=y 1032CONFIG_USB_EHCI_HCD=y
997CONFIG_USB_EHCI_ROOT_HUB_TT=y 1033CONFIG_USB_EHCI_ROOT_HUB_TT=y
998# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1034# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1035# CONFIG_XPS_USB_HCD_XILINX is not set
999CONFIG_USB_EHCI_FSL=y 1036CONFIG_USB_EHCI_FSL=y
1000CONFIG_USB_EHCI_HCD_PPC_OF=y 1037CONFIG_USB_EHCI_HCD_PPC_OF=y
1001# CONFIG_USB_OXU210HP_HCD is not set 1038# CONFIG_USB_OXU210HP_HCD is not set
@@ -1101,6 +1138,7 @@ CONFIG_RTC_DRV_DS1374=y
1101# CONFIG_RTC_DRV_PCF8563 is not set 1138# CONFIG_RTC_DRV_PCF8563 is not set
1102# CONFIG_RTC_DRV_PCF8583 is not set 1139# CONFIG_RTC_DRV_PCF8583 is not set
1103# CONFIG_RTC_DRV_M41T80 is not set 1140# CONFIG_RTC_DRV_M41T80 is not set
1141# CONFIG_RTC_DRV_BQ32K is not set
1104# CONFIG_RTC_DRV_S35390A is not set 1142# CONFIG_RTC_DRV_S35390A is not set
1105# CONFIG_RTC_DRV_FM3130 is not set 1143# CONFIG_RTC_DRV_FM3130 is not set
1106# CONFIG_RTC_DRV_RX8581 is not set 1144# CONFIG_RTC_DRV_RX8581 is not set
@@ -1122,7 +1160,9 @@ CONFIG_RTC_DRV_DS1374=y
1122# CONFIG_RTC_DRV_M48T86 is not set 1160# CONFIG_RTC_DRV_M48T86 is not set
1123# CONFIG_RTC_DRV_M48T35 is not set 1161# CONFIG_RTC_DRV_M48T35 is not set
1124# CONFIG_RTC_DRV_M48T59 is not set 1162# CONFIG_RTC_DRV_M48T59 is not set
1163# CONFIG_RTC_DRV_MSM6242 is not set
1125# CONFIG_RTC_DRV_BQ4802 is not set 1164# CONFIG_RTC_DRV_BQ4802 is not set
1165# CONFIG_RTC_DRV_RP5C01 is not set
1126# CONFIG_RTC_DRV_V3020 is not set 1166# CONFIG_RTC_DRV_V3020 is not set
1127 1167
1128# 1168#
@@ -1347,7 +1387,7 @@ CONFIG_FRAME_WARN=1024
1347# CONFIG_DEBUG_KERNEL is not set 1387# CONFIG_DEBUG_KERNEL is not set
1348# CONFIG_SLUB_DEBUG_ON is not set 1388# CONFIG_SLUB_DEBUG_ON is not set
1349# CONFIG_SLUB_STATS is not set 1389# CONFIG_SLUB_STATS is not set
1350# CONFIG_DEBUG_BUGVERBOSE is not set 1390CONFIG_DEBUG_BUGVERBOSE=y
1351# CONFIG_DEBUG_MEMORY_INIT is not set 1391# CONFIG_DEBUG_MEMORY_INIT is not set
1352# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1392# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1353# CONFIG_LATENCYTOP is not set 1393# CONFIG_LATENCYTOP is not set
@@ -1374,7 +1414,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1374# CONFIG_KEYS is not set 1414# CONFIG_KEYS is not set
1375# CONFIG_SECURITY is not set 1415# CONFIG_SECURITY is not set
1376# CONFIG_SECURITYFS is not set 1416# CONFIG_SECURITYFS is not set
1377# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1417# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1418# CONFIG_DEFAULT_SECURITY_SMACK is not set
1419# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1420CONFIG_DEFAULT_SECURITY_DAC=y
1421CONFIG_DEFAULT_SECURITY=""
1378CONFIG_CRYPTO=y 1422CONFIG_CRYPTO=y
1379 1423
1380# 1424#
diff --git a/arch/powerpc/configs/83xx/kmeter1_defconfig b/arch/powerpc/configs/83xx/kmeter1_defconfig
index 6694fb73cd99..8b1aa806e548 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:21 2009 4# Wed Jan 6 09:24:14 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -37,6 +37,7 @@ CONFIG_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 38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
40CONFIG_NR_IRQS=512
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y 43CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y
59CONFIG_GENERIC_BUG=y 60CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y 61CONFIG_DTC=y
61CONFIG_DEFAULT_UIMAGE=y 62CONFIG_DEFAULT_UIMAGE=y
63CONFIG_ARCH_HIBERNATION_POSSIBLE=y
62CONFIG_ARCH_SUSPEND_POSSIBLE=y 64CONFIG_ARCH_SUSPEND_POSSIBLE=y
63# CONFIG_PPC_DCR_NATIVE is not set 65# CONFIG_PPC_DCR_NATIVE is not set
64# CONFIG_PPC_DCR_MMIO is not set 66# CONFIG_PPC_DCR_MMIO is not set
@@ -89,6 +91,7 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
89# 91#
90CONFIG_TREE_RCU=y 92CONFIG_TREE_RCU=y
91# CONFIG_TREE_PREEMPT_RCU is not set 93# CONFIG_TREE_PREEMPT_RCU is not set
94# CONFIG_TINY_RCU is not set
92# CONFIG_RCU_TRACE is not set 95# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32 96CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set 97# CONFIG_RCU_FANOUT_EXACT is not set
@@ -168,14 +171,41 @@ CONFIG_LBDAF=y
168# IO Schedulers 171# IO Schedulers
169# 172#
170CONFIG_IOSCHED_NOOP=y 173CONFIG_IOSCHED_NOOP=y
171# CONFIG_IOSCHED_AS is not set
172# CONFIG_IOSCHED_DEADLINE is not set 174# CONFIG_IOSCHED_DEADLINE is not set
173# CONFIG_IOSCHED_CFQ is not set 175# CONFIG_IOSCHED_CFQ is not set
174# CONFIG_DEFAULT_AS is not set
175# CONFIG_DEFAULT_DEADLINE is not set 176# CONFIG_DEFAULT_DEADLINE is not set
176# CONFIG_DEFAULT_CFQ is not set 177# CONFIG_DEFAULT_CFQ is not set
177CONFIG_DEFAULT_NOOP=y 178CONFIG_DEFAULT_NOOP=y
178CONFIG_DEFAULT_IOSCHED="noop" 179CONFIG_DEFAULT_IOSCHED="noop"
180# CONFIG_INLINE_SPIN_TRYLOCK is not set
181# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
182# CONFIG_INLINE_SPIN_LOCK is not set
183# CONFIG_INLINE_SPIN_LOCK_BH is not set
184# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
185# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
186# CONFIG_INLINE_SPIN_UNLOCK is not set
187# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
188# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
189# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
190# CONFIG_INLINE_READ_TRYLOCK is not set
191# CONFIG_INLINE_READ_LOCK is not set
192# CONFIG_INLINE_READ_LOCK_BH is not set
193# CONFIG_INLINE_READ_LOCK_IRQ is not set
194# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
195# CONFIG_INLINE_READ_UNLOCK is not set
196# CONFIG_INLINE_READ_UNLOCK_BH is not set
197# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
198# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
199# CONFIG_INLINE_WRITE_TRYLOCK is not set
200# CONFIG_INLINE_WRITE_LOCK is not set
201# CONFIG_INLINE_WRITE_LOCK_BH is not set
202# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
203# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
204# CONFIG_INLINE_WRITE_UNLOCK is not set
205# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
206# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
207# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
208# CONFIG_MUTEX_SPIN_ON_OWNER is not set
179# CONFIG_FREEZER is not set 209# CONFIG_FREEZER is not set
180 210
181# 211#
@@ -253,6 +283,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
253CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 283CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
254# CONFIG_KEXEC is not set 284# CONFIG_KEXEC is not set
255# CONFIG_CRASH_DUMP is not set 285# CONFIG_CRASH_DUMP is not set
286CONFIG_SPARSE_IRQ=y
256CONFIG_MAX_ACTIVE_REGIONS=32 287CONFIG_MAX_ACTIVE_REGIONS=32
257CONFIG_ARCH_FLATMEM_ENABLE=y 288CONFIG_ARCH_FLATMEM_ENABLE=y
258CONFIG_ARCH_POPULATES_NODE_MAP=y 289CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -269,8 +300,6 @@ CONFIG_MIGRATION=y
269CONFIG_ZONE_DMA_FLAG=1 300CONFIG_ZONE_DMA_FLAG=1
270CONFIG_BOUNCE=y 301CONFIG_BOUNCE=y
271CONFIG_VIRT_TO_BUS=y 302CONFIG_VIRT_TO_BUS=y
272CONFIG_HAVE_MLOCK=y
273CONFIG_HAVE_MLOCKED_PAGE_BIT=y
274# CONFIG_KSM is not set 303# CONFIG_KSM is not set
275CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 304CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
276CONFIG_PPC_4K_PAGES=y 305CONFIG_PPC_4K_PAGES=y
@@ -384,7 +413,13 @@ CONFIG_LLC=m
384# CONFIG_IRDA is not set 413# CONFIG_IRDA is not set
385# CONFIG_BT is not set 414# CONFIG_BT is not set
386# CONFIG_AF_RXRPC is not set 415# CONFIG_AF_RXRPC is not set
387# CONFIG_WIRELESS is not set 416CONFIG_WIRELESS=y
417# CONFIG_CFG80211 is not set
418# CONFIG_LIB80211 is not set
419
420#
421# CFG80211 needs to be enabled for MAC80211
422#
388# CONFIG_WIMAX is not set 423# CONFIG_WIMAX is not set
389# CONFIG_RFKILL is not set 424# CONFIG_RFKILL is not set
390# CONFIG_NET_9P is not set 425# CONFIG_NET_9P is not set
@@ -512,6 +547,10 @@ CONFIG_BLK_DEV=y
512# CONFIG_BLK_DEV_FD is not set 547# CONFIG_BLK_DEV_FD is not set
513# CONFIG_BLK_DEV_COW_COMMON is not set 548# CONFIG_BLK_DEV_COW_COMMON is not set
514# CONFIG_BLK_DEV_LOOP is not set 549# CONFIG_BLK_DEV_LOOP is not set
550
551#
552# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
553#
515# CONFIG_BLK_DEV_NBD is not set 554# CONFIG_BLK_DEV_NBD is not set
516# CONFIG_BLK_DEV_RAM is not set 555# CONFIG_BLK_DEV_RAM is not set
517# CONFIG_CDROM_PKTCDVD is not set 556# CONFIG_CDROM_PKTCDVD is not set
@@ -581,8 +620,7 @@ CONFIG_UCC_GETH=y
581# CONFIG_MV643XX_ETH is not set 620# CONFIG_MV643XX_ETH is not set
582# CONFIG_NETDEV_10000 is not set 621# CONFIG_NETDEV_10000 is not set
583CONFIG_WLAN=y 622CONFIG_WLAN=y
584# CONFIG_WLAN_PRE80211 is not set 623# CONFIG_HOSTAP is not set
585# CONFIG_WLAN_80211 is not set
586 624
587# 625#
588# Enable WiMAX (Networking options) to see the WiMAX drivers 626# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -652,6 +690,7 @@ CONFIG_SERIAL_CORE=y
652CONFIG_SERIAL_CORE_CONSOLE=y 690CONFIG_SERIAL_CORE_CONSOLE=y
653# CONFIG_SERIAL_OF_PLATFORM is not set 691# CONFIG_SERIAL_OF_PLATFORM is not set
654# CONFIG_SERIAL_QE is not set 692# CONFIG_SERIAL_QE is not set
693# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
655CONFIG_UNIX98_PTYS=y 694CONFIG_UNIX98_PTYS=y
656# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 695# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
657CONFIG_LEGACY_PTYS=y 696CONFIG_LEGACY_PTYS=y
@@ -697,7 +736,6 @@ CONFIG_I2C_MPC=y
697# 736#
698# Miscellaneous I2C Chip support 737# Miscellaneous I2C Chip support
699# 738#
700# CONFIG_DS1682 is not set
701# CONFIG_SENSORS_TSL2550 is not set 739# CONFIG_SENSORS_TSL2550 is not set
702# CONFIG_I2C_DEBUG_CORE is not set 740# CONFIG_I2C_DEBUG_CORE is not set
703# CONFIG_I2C_DEBUG_ALGO is not set 741# CONFIG_I2C_DEBUG_ALGO is not set
@@ -732,11 +770,13 @@ CONFIG_SSB_POSSIBLE=y
732# CONFIG_TWL4030_CORE is not set 770# CONFIG_TWL4030_CORE is not set
733# CONFIG_MFD_TMIO is not set 771# CONFIG_MFD_TMIO is not set
734# CONFIG_PMIC_DA903X is not set 772# CONFIG_PMIC_DA903X is not set
773# CONFIG_PMIC_ADP5520 is not set
735# CONFIG_MFD_WM8400 is not set 774# CONFIG_MFD_WM8400 is not set
736# CONFIG_MFD_WM831X is not set 775# CONFIG_MFD_WM831X is not set
737# CONFIG_MFD_WM8350_I2C is not set 776# CONFIG_MFD_WM8350_I2C is not set
738# CONFIG_MFD_PCF50633 is not set 777# CONFIG_MFD_PCF50633 is not set
739# CONFIG_AB3100_CORE is not set 778# CONFIG_AB3100_CORE is not set
779# CONFIG_MFD_88PM8607 is not set
740# CONFIG_REGULATOR is not set 780# CONFIG_REGULATOR is not set
741# CONFIG_MEDIA_SUPPORT is not set 781# CONFIG_MEDIA_SUPPORT is not set
742 782
@@ -933,7 +973,7 @@ CONFIG_FRAME_WARN=1024
933CONFIG_DEBUG_FS=y 973CONFIG_DEBUG_FS=y
934# CONFIG_HEADERS_CHECK is not set 974# CONFIG_HEADERS_CHECK is not set
935# CONFIG_DEBUG_KERNEL is not set 975# CONFIG_DEBUG_KERNEL is not set
936# CONFIG_DEBUG_BUGVERBOSE is not set 976CONFIG_DEBUG_BUGVERBOSE=y
937# CONFIG_DEBUG_MEMORY_INIT is not set 977# CONFIG_DEBUG_MEMORY_INIT is not set
938# CONFIG_RCU_CPU_STALL_DETECTOR is not set 978# CONFIG_RCU_CPU_STALL_DETECTOR is not set
939# CONFIG_LATENCYTOP is not set 979# CONFIG_LATENCYTOP is not set
@@ -963,7 +1003,11 @@ CONFIG_PRINT_STACK_DEPTH=64
963# CONFIG_KEYS is not set 1003# CONFIG_KEYS is not set
964# CONFIG_SECURITY is not set 1004# CONFIG_SECURITY is not set
965# CONFIG_SECURITYFS is not set 1005# CONFIG_SECURITYFS is not set
966# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1006# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1007# CONFIG_DEFAULT_SECURITY_SMACK is not set
1008# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1009CONFIG_DEFAULT_SECURITY_DAC=y
1010CONFIG_DEFAULT_SECURITY=""
967# CONFIG_CRYPTO is not set 1011# CONFIG_CRYPTO is not set
968# CONFIG_PPC_CLOCK is not set 1012# CONFIG_PPC_CLOCK is not set
969CONFIG_PPC_LIB_RHEAP=y 1013CONFIG_PPC_LIB_RHEAP=y
diff --git a/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig b/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig
index 86df19f041a4..2f2d98558e44 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:22 2009 4# Wed Jan 6 09:24:15 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -37,6 +37,7 @@ CONFIG_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 38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
40CONFIG_NR_IRQS=512
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y 43CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y
59CONFIG_GENERIC_BUG=y 60CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y 61CONFIG_DTC=y
61CONFIG_DEFAULT_UIMAGE=y 62CONFIG_DEFAULT_UIMAGE=y
63CONFIG_ARCH_HIBERNATION_POSSIBLE=y
62CONFIG_ARCH_SUSPEND_POSSIBLE=y 64CONFIG_ARCH_SUSPEND_POSSIBLE=y
63# CONFIG_PPC_DCR_NATIVE is not set 65# CONFIG_PPC_DCR_NATIVE is not set
64# CONFIG_PPC_DCR_MMIO is not set 66# CONFIG_PPC_DCR_MMIO is not set
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y
87# 89#
88CONFIG_TREE_RCU=y 90CONFIG_TREE_RCU=y
89# CONFIG_TREE_PREEMPT_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
92# CONFIG_TINY_RCU is not set
90# CONFIG_RCU_TRACE is not set 93# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32 94CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set 95# CONFIG_RCU_FANOUT_EXACT is not set
@@ -173,14 +176,41 @@ CONFIG_LBDAF=y
173# IO Schedulers 176# IO Schedulers
174# 177#
175CONFIG_IOSCHED_NOOP=y 178CONFIG_IOSCHED_NOOP=y
176CONFIG_IOSCHED_AS=y
177CONFIG_IOSCHED_DEADLINE=y 179CONFIG_IOSCHED_DEADLINE=y
178CONFIG_IOSCHED_CFQ=y 180CONFIG_IOSCHED_CFQ=y
179CONFIG_DEFAULT_AS=y
180# CONFIG_DEFAULT_DEADLINE is not set 181# CONFIG_DEFAULT_DEADLINE is not set
181# CONFIG_DEFAULT_CFQ is not set 182CONFIG_DEFAULT_CFQ=y
182# CONFIG_DEFAULT_NOOP is not set 183# CONFIG_DEFAULT_NOOP is not set
183CONFIG_DEFAULT_IOSCHED="anticipatory" 184CONFIG_DEFAULT_IOSCHED="cfq"
185# CONFIG_INLINE_SPIN_TRYLOCK is not set
186# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
187# CONFIG_INLINE_SPIN_LOCK is not set
188# CONFIG_INLINE_SPIN_LOCK_BH is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
191CONFIG_INLINE_SPIN_UNLOCK=y
192# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
193CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
194# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
195# CONFIG_INLINE_READ_TRYLOCK is not set
196# CONFIG_INLINE_READ_LOCK is not set
197# CONFIG_INLINE_READ_LOCK_BH is not set
198# CONFIG_INLINE_READ_LOCK_IRQ is not set
199# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
200CONFIG_INLINE_READ_UNLOCK=y
201# CONFIG_INLINE_READ_UNLOCK_BH is not set
202CONFIG_INLINE_READ_UNLOCK_IRQ=y
203# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_WRITE_TRYLOCK is not set
205# CONFIG_INLINE_WRITE_LOCK is not set
206# CONFIG_INLINE_WRITE_LOCK_BH is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
209CONFIG_INLINE_WRITE_UNLOCK=y
210# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
211CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
212# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
213# CONFIG_MUTEX_SPIN_ON_OWNER is not set
184# CONFIG_FREEZER is not set 214# CONFIG_FREEZER is not set
185 215
186# 216#
@@ -259,6 +289,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 289CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
260# CONFIG_KEXEC is not set 290# CONFIG_KEXEC is not set
261# CONFIG_CRASH_DUMP is not set 291# CONFIG_CRASH_DUMP is not set
292CONFIG_SPARSE_IRQ=y
262CONFIG_MAX_ACTIVE_REGIONS=32 293CONFIG_MAX_ACTIVE_REGIONS=32
263CONFIG_ARCH_FLATMEM_ENABLE=y 294CONFIG_ARCH_FLATMEM_ENABLE=y
264CONFIG_ARCH_POPULATES_NODE_MAP=y 295CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -275,8 +306,6 @@ CONFIG_MIGRATION=y
275CONFIG_ZONE_DMA_FLAG=1 306CONFIG_ZONE_DMA_FLAG=1
276CONFIG_BOUNCE=y 307CONFIG_BOUNCE=y
277CONFIG_VIRT_TO_BUS=y 308CONFIG_VIRT_TO_BUS=y
278CONFIG_HAVE_MLOCK=y
279CONFIG_HAVE_MLOCKED_PAGE_BIT=y
280# CONFIG_KSM is not set 309# CONFIG_KSM is not set
281CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 310CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
282CONFIG_PPC_4K_PAGES=y 311CONFIG_PPC_4K_PAGES=y
@@ -404,9 +433,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
404# CONFIG_AF_RXRPC is not set 433# CONFIG_AF_RXRPC is not set
405CONFIG_WIRELESS=y 434CONFIG_WIRELESS=y
406# CONFIG_CFG80211 is not set 435# CONFIG_CFG80211 is not set
407CONFIG_CFG80211_DEFAULT_PS_VALUE=0
408CONFIG_WIRELESS_OLD_REGULATORY=y
409# CONFIG_WIRELESS_EXT is not set
410# CONFIG_LIB80211 is not set 436# CONFIG_LIB80211 is not set
411 437
412# 438#
@@ -544,6 +570,10 @@ CONFIG_BLK_DEV=y
544# CONFIG_BLK_DEV_COW_COMMON is not set 570# CONFIG_BLK_DEV_COW_COMMON is not set
545CONFIG_BLK_DEV_LOOP=y 571CONFIG_BLK_DEV_LOOP=y
546# CONFIG_BLK_DEV_CRYPTOLOOP is not set 572# CONFIG_BLK_DEV_CRYPTOLOOP is not set
573
574#
575# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
576#
547# CONFIG_BLK_DEV_NBD is not set 577# CONFIG_BLK_DEV_NBD is not set
548# CONFIG_BLK_DEV_SX8 is not set 578# CONFIG_BLK_DEV_SX8 is not set
549# CONFIG_BLK_DEV_UB is not set 579# CONFIG_BLK_DEV_UB is not set
@@ -555,6 +585,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
555# CONFIG_ATA_OVER_ETH is not set 585# CONFIG_ATA_OVER_ETH is not set
556# CONFIG_BLK_DEV_HD is not set 586# CONFIG_BLK_DEV_HD is not set
557CONFIG_MISC_DEVICES=y 587CONFIG_MISC_DEVICES=y
588# CONFIG_AD525X_DPOT is not set
558# CONFIG_PHANTOM is not set 589# CONFIG_PHANTOM is not set
559# CONFIG_SGI_IOC4 is not set 590# CONFIG_SGI_IOC4 is not set
560# CONFIG_TIFM_CORE is not set 591# CONFIG_TIFM_CORE is not set
@@ -562,6 +593,8 @@ CONFIG_MISC_DEVICES=y
562# CONFIG_ENCLOSURE_SERVICES is not set 593# CONFIG_ENCLOSURE_SERVICES is not set
563# CONFIG_HP_ILO is not set 594# CONFIG_HP_ILO is not set
564# CONFIG_ISL29003 is not set 595# CONFIG_ISL29003 is not set
596# CONFIG_DS1682 is not set
597# CONFIG_TI_DAC7512 is not set
565# CONFIG_C2PORT is not set 598# CONFIG_C2PORT is not set
566 599
567# 600#
@@ -615,7 +648,9 @@ CONFIG_SCSI_LOWLEVEL=y
615# CONFIG_SCSI_BNX2_ISCSI is not set 648# CONFIG_SCSI_BNX2_ISCSI is not set
616# CONFIG_BE2ISCSI is not set 649# CONFIG_BE2ISCSI is not set
617# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 650# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
651# CONFIG_SCSI_HPSA is not set
618# CONFIG_SCSI_3W_9XXX is not set 652# CONFIG_SCSI_3W_9XXX is not set
653# CONFIG_SCSI_3W_SAS is not set
619# CONFIG_SCSI_ACARD is not set 654# CONFIG_SCSI_ACARD is not set
620# CONFIG_SCSI_AACRAID is not set 655# CONFIG_SCSI_AACRAID is not set
621# CONFIG_SCSI_AIC7XXX is not set 656# CONFIG_SCSI_AIC7XXX is not set
@@ -653,6 +688,7 @@ CONFIG_SCSI_LOWLEVEL=y
653# CONFIG_SCSI_NSP32 is not set 688# CONFIG_SCSI_NSP32 is not set
654# CONFIG_SCSI_DEBUG is not set 689# CONFIG_SCSI_DEBUG is not set
655# CONFIG_SCSI_PMCRAID is not set 690# CONFIG_SCSI_PMCRAID is not set
691# CONFIG_SCSI_PM8001 is not set
656# CONFIG_SCSI_SRP is not set 692# CONFIG_SCSI_SRP is not set
657# CONFIG_SCSI_BFA_FC is not set 693# CONFIG_SCSI_BFA_FC is not set
658# CONFIG_SCSI_DH is not set 694# CONFIG_SCSI_DH is not set
@@ -680,7 +716,7 @@ CONFIG_MD_RAID1=y
680# 716#
681 717
682# 718#
683# See the help texts for more information. 719# The newer stack is recommended.
684# 720#
685# CONFIG_FIREWIRE is not set 721# CONFIG_FIREWIRE is not set
686# CONFIG_IEEE1394 is not set 722# CONFIG_IEEE1394 is not set
@@ -805,8 +841,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y
805# CONFIG_BE2NET is not set 841# CONFIG_BE2NET is not set
806# CONFIG_TR is not set 842# CONFIG_TR is not set
807CONFIG_WLAN=y 843CONFIG_WLAN=y
808# CONFIG_WLAN_PRE80211 is not set 844# CONFIG_AIRO is not set
809# CONFIG_WLAN_80211 is not set 845# CONFIG_ATMEL is not set
846# CONFIG_PRISM54 is not set
847# CONFIG_USB_ZD1201 is not set
848# CONFIG_HOSTAP is not set
810 849
811# 850#
812# Enable WiMAX (Networking options) to see the WiMAX drivers 851# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -829,6 +868,7 @@ CONFIG_WLAN=y
829# CONFIG_NETCONSOLE is not set 868# CONFIG_NETCONSOLE is not set
830# CONFIG_NETPOLL is not set 869# CONFIG_NETPOLL is not set
831# CONFIG_NET_POLL_CONTROLLER is not set 870# CONFIG_NET_POLL_CONTROLLER is not set
871# CONFIG_VMXNET3 is not set
832# CONFIG_ISDN is not set 872# CONFIG_ISDN is not set
833# CONFIG_PHONE is not set 873# CONFIG_PHONE is not set
834 874
@@ -838,6 +878,7 @@ CONFIG_WLAN=y
838CONFIG_INPUT=y 878CONFIG_INPUT=y
839# CONFIG_INPUT_FF_MEMLESS is not set 879# CONFIG_INPUT_FF_MEMLESS is not set
840# CONFIG_INPUT_POLLDEV is not set 880# CONFIG_INPUT_POLLDEV is not set
881# CONFIG_INPUT_SPARSEKMAP is not set
841 882
842# 883#
843# Userland interfaces 884# Userland interfaces
@@ -890,6 +931,7 @@ CONFIG_SERIAL_CORE=y
890CONFIG_SERIAL_CORE_CONSOLE=y 931CONFIG_SERIAL_CORE_CONSOLE=y
891# CONFIG_SERIAL_JSM is not set 932# CONFIG_SERIAL_JSM is not set
892# CONFIG_SERIAL_OF_PLATFORM is not set 933# CONFIG_SERIAL_OF_PLATFORM is not set
934# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
893CONFIG_UNIX98_PTYS=y 935CONFIG_UNIX98_PTYS=y
894# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 936# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
895CONFIG_LEGACY_PTYS=y 937CONFIG_LEGACY_PTYS=y
@@ -947,11 +989,6 @@ CONFIG_I2C_MPC=y
947# CONFIG_I2C_TINY_USB is not set 989# CONFIG_I2C_TINY_USB is not set
948 990
949# 991#
950# Graphics adapter I2C/DDC channel drivers
951#
952# CONFIG_I2C_VOODOO3 is not set
953
954#
955# Other I2C/SMBus bus drivers 992# Other I2C/SMBus bus drivers
956# 993#
957# CONFIG_I2C_PCA_PLATFORM is not set 994# CONFIG_I2C_PCA_PLATFORM is not set
@@ -960,7 +997,6 @@ CONFIG_I2C_MPC=y
960# 997#
961# Miscellaneous I2C Chip support 998# Miscellaneous I2C Chip support
962# 999#
963# CONFIG_DS1682 is not set
964# CONFIG_SENSORS_TSL2550 is not set 1000# CONFIG_SENSORS_TSL2550 is not set
965# CONFIG_I2C_DEBUG_CORE is not set 1001# CONFIG_I2C_DEBUG_CORE is not set
966# CONFIG_I2C_DEBUG_ALGO is not set 1002# CONFIG_I2C_DEBUG_ALGO is not set
@@ -975,6 +1011,8 @@ CONFIG_SPI_MASTER=y
975# 1011#
976CONFIG_SPI_BITBANG=y 1012CONFIG_SPI_BITBANG=y
977# CONFIG_SPI_MPC8xxx is not set 1013# CONFIG_SPI_MPC8xxx is not set
1014# CONFIG_SPI_XILINX is not set
1015# CONFIG_SPI_DESIGNWARE is not set
978 1016
979# 1017#
980# SPI Protocol Masters 1018# SPI Protocol Masters
@@ -1022,6 +1060,7 @@ CONFIG_HWMON=y
1022# CONFIG_SENSORS_IT87 is not set 1060# CONFIG_SENSORS_IT87 is not set
1023# CONFIG_SENSORS_LM63 is not set 1061# CONFIG_SENSORS_LM63 is not set
1024# CONFIG_SENSORS_LM70 is not set 1062# CONFIG_SENSORS_LM70 is not set
1063# CONFIG_SENSORS_LM73 is not set
1025# CONFIG_SENSORS_LM75 is not set 1064# CONFIG_SENSORS_LM75 is not set
1026# CONFIG_SENSORS_LM77 is not set 1065# CONFIG_SENSORS_LM77 is not set
1027# CONFIG_SENSORS_LM78 is not set 1066# CONFIG_SENSORS_LM78 is not set
@@ -1062,6 +1101,7 @@ CONFIG_HWMON=y
1062# CONFIG_SENSORS_W83627HF is not set 1101# CONFIG_SENSORS_W83627HF is not set
1063# CONFIG_SENSORS_W83627EHF is not set 1102# CONFIG_SENSORS_W83627EHF is not set
1064# CONFIG_SENSORS_LIS3_SPI is not set 1103# CONFIG_SENSORS_LIS3_SPI is not set
1104# CONFIG_SENSORS_LIS3_I2C is not set
1065# CONFIG_THERMAL is not set 1105# CONFIG_THERMAL is not set
1066CONFIG_WATCHDOG=y 1106CONFIG_WATCHDOG=y
1067# CONFIG_WATCHDOG_NOWAYOUT is not set 1107# CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -1099,6 +1139,7 @@ CONFIG_SSB_POSSIBLE=y
1099# CONFIG_TWL4030_CORE is not set 1139# CONFIG_TWL4030_CORE is not set
1100# CONFIG_MFD_TMIO is not set 1140# CONFIG_MFD_TMIO is not set
1101# CONFIG_PMIC_DA903X is not set 1141# CONFIG_PMIC_DA903X is not set
1142# CONFIG_PMIC_ADP5520 is not set
1102# CONFIG_MFD_WM8400 is not set 1143# CONFIG_MFD_WM8400 is not set
1103# CONFIG_MFD_WM831X is not set 1144# CONFIG_MFD_WM831X is not set
1104# CONFIG_MFD_WM8350_I2C is not set 1145# CONFIG_MFD_WM8350_I2C is not set
@@ -1106,6 +1147,8 @@ CONFIG_SSB_POSSIBLE=y
1106# CONFIG_MFD_MC13783 is not set 1147# CONFIG_MFD_MC13783 is not set
1107# CONFIG_AB3100_CORE is not set 1148# CONFIG_AB3100_CORE is not set
1108# CONFIG_EZX_PCAP is not set 1149# CONFIG_EZX_PCAP is not set
1150# CONFIG_MFD_88PM8607 is not set
1151# CONFIG_AB4500_CORE is not set
1109# CONFIG_REGULATOR is not set 1152# CONFIG_REGULATOR is not set
1110# CONFIG_MEDIA_SUPPORT is not set 1153# CONFIG_MEDIA_SUPPORT is not set
1111 1154
@@ -1173,6 +1216,7 @@ CONFIG_USB_MON=y
1173CONFIG_USB_EHCI_HCD=y 1216CONFIG_USB_EHCI_HCD=y
1174CONFIG_USB_EHCI_ROOT_HUB_TT=y 1217CONFIG_USB_EHCI_ROOT_HUB_TT=y
1175# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1218# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1219# CONFIG_XPS_USB_HCD_XILINX is not set
1176CONFIG_USB_EHCI_FSL=y 1220CONFIG_USB_EHCI_FSL=y
1177CONFIG_USB_EHCI_HCD_PPC_OF=y 1221CONFIG_USB_EHCI_HCD_PPC_OF=y
1178# CONFIG_USB_OXU210HP_HCD is not set 1222# CONFIG_USB_OXU210HP_HCD is not set
@@ -1287,15 +1331,17 @@ CONFIG_USB_NET2280=y
1287CONFIG_USB_GADGET_DUALSPEED=y 1331CONFIG_USB_GADGET_DUALSPEED=y
1288# CONFIG_USB_ZERO is not set 1332# CONFIG_USB_ZERO is not set
1289# CONFIG_USB_AUDIO is not set 1333# CONFIG_USB_AUDIO is not set
1290CONFIG_USB_ETH=y 1334CONFIG_USB_ETH=m
1291CONFIG_USB_ETH_RNDIS=y 1335CONFIG_USB_ETH_RNDIS=y
1292# CONFIG_USB_ETH_EEM is not set 1336# CONFIG_USB_ETH_EEM is not set
1293# CONFIG_USB_GADGETFS is not set 1337# CONFIG_USB_GADGETFS is not set
1294# CONFIG_USB_FILE_STORAGE is not set 1338# CONFIG_USB_FILE_STORAGE is not set
1339# CONFIG_USB_MASS_STORAGE is not set
1295# CONFIG_USB_G_SERIAL is not set 1340# CONFIG_USB_G_SERIAL is not set
1296# CONFIG_USB_MIDI_GADGET is not set 1341# CONFIG_USB_MIDI_GADGET is not set
1297# CONFIG_USB_G_PRINTER is not set 1342# CONFIG_USB_G_PRINTER is not set
1298# CONFIG_USB_CDC_COMPOSITE is not set 1343# CONFIG_USB_CDC_COMPOSITE is not set
1344# CONFIG_USB_G_MULTI is not set
1299 1345
1300# 1346#
1301# OTG and related infrastructure 1347# OTG and related infrastructure
@@ -1336,6 +1382,7 @@ CONFIG_RTC_DRV_DS1307=y
1336# CONFIG_RTC_DRV_PCF8563 is not set 1382# CONFIG_RTC_DRV_PCF8563 is not set
1337# CONFIG_RTC_DRV_PCF8583 is not set 1383# CONFIG_RTC_DRV_PCF8583 is not set
1338# CONFIG_RTC_DRV_M41T80 is not set 1384# CONFIG_RTC_DRV_M41T80 is not set
1385# CONFIG_RTC_DRV_BQ32K is not set
1339# CONFIG_RTC_DRV_S35390A is not set 1386# CONFIG_RTC_DRV_S35390A is not set
1340# CONFIG_RTC_DRV_FM3130 is not set 1387# CONFIG_RTC_DRV_FM3130 is not set
1341# CONFIG_RTC_DRV_RX8581 is not set 1388# CONFIG_RTC_DRV_RX8581 is not set
@@ -1365,7 +1412,9 @@ CONFIG_RTC_DRV_DS1307=y
1365# CONFIG_RTC_DRV_M48T86 is not set 1412# CONFIG_RTC_DRV_M48T86 is not set
1366# CONFIG_RTC_DRV_M48T35 is not set 1413# CONFIG_RTC_DRV_M48T35 is not set
1367# CONFIG_RTC_DRV_M48T59 is not set 1414# CONFIG_RTC_DRV_M48T59 is not set
1415# CONFIG_RTC_DRV_MSM6242 is not set
1368# CONFIG_RTC_DRV_BQ4802 is not set 1416# CONFIG_RTC_DRV_BQ4802 is not set
1417# CONFIG_RTC_DRV_RP5C01 is not set
1369# CONFIG_RTC_DRV_V3020 is not set 1418# CONFIG_RTC_DRV_V3020 is not set
1370 1419
1371# 1420#
@@ -1676,7 +1725,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1676# CONFIG_KEYS is not set 1725# CONFIG_KEYS is not set
1677# CONFIG_SECURITY is not set 1726# CONFIG_SECURITY is not set
1678# CONFIG_SECURITYFS is not set 1727# CONFIG_SECURITYFS is not set
1679# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1728# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1729# CONFIG_DEFAULT_SECURITY_SMACK is not set
1730# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1731CONFIG_DEFAULT_SECURITY_DAC=y
1732CONFIG_DEFAULT_SECURITY=""
1680CONFIG_CRYPTO=y 1733CONFIG_CRYPTO=y
1681 1734
1682# 1735#
diff --git a/arch/powerpc/configs/83xx/mpc8315_rdb_defconfig b/arch/powerpc/configs/83xx/mpc8315_rdb_defconfig
index 7bf71d577033..633e61194603 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:23 2009 4# Wed Jan 6 09:24:16 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -37,6 +37,7 @@ CONFIG_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 38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
40CONFIG_NR_IRQS=512
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y 43CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y
59CONFIG_GENERIC_BUG=y 60CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y 61CONFIG_DTC=y
61CONFIG_DEFAULT_UIMAGE=y 62CONFIG_DEFAULT_UIMAGE=y
63CONFIG_ARCH_HIBERNATION_POSSIBLE=y
62CONFIG_ARCH_SUSPEND_POSSIBLE=y 64CONFIG_ARCH_SUSPEND_POSSIBLE=y
63# CONFIG_PPC_DCR_NATIVE is not set 65# CONFIG_PPC_DCR_NATIVE is not set
64# CONFIG_PPC_DCR_MMIO is not set 66# CONFIG_PPC_DCR_MMIO is not set
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y
87# 89#
88CONFIG_TREE_RCU=y 90CONFIG_TREE_RCU=y
89# CONFIG_TREE_PREEMPT_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
92# CONFIG_TINY_RCU is not set
90# CONFIG_RCU_TRACE is not set 93# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32 94CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set 95# CONFIG_RCU_FANOUT_EXACT is not set
@@ -173,14 +176,41 @@ CONFIG_LBDAF=y
173# IO Schedulers 176# IO Schedulers
174# 177#
175CONFIG_IOSCHED_NOOP=y 178CONFIG_IOSCHED_NOOP=y
176CONFIG_IOSCHED_AS=y
177CONFIG_IOSCHED_DEADLINE=y 179CONFIG_IOSCHED_DEADLINE=y
178CONFIG_IOSCHED_CFQ=y 180CONFIG_IOSCHED_CFQ=y
179CONFIG_DEFAULT_AS=y
180# CONFIG_DEFAULT_DEADLINE is not set 181# CONFIG_DEFAULT_DEADLINE is not set
181# CONFIG_DEFAULT_CFQ is not set 182CONFIG_DEFAULT_CFQ=y
182# CONFIG_DEFAULT_NOOP is not set 183# CONFIG_DEFAULT_NOOP is not set
183CONFIG_DEFAULT_IOSCHED="anticipatory" 184CONFIG_DEFAULT_IOSCHED="cfq"
185# CONFIG_INLINE_SPIN_TRYLOCK is not set
186# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
187# CONFIG_INLINE_SPIN_LOCK is not set
188# CONFIG_INLINE_SPIN_LOCK_BH is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
191CONFIG_INLINE_SPIN_UNLOCK=y
192# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
193CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
194# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
195# CONFIG_INLINE_READ_TRYLOCK is not set
196# CONFIG_INLINE_READ_LOCK is not set
197# CONFIG_INLINE_READ_LOCK_BH is not set
198# CONFIG_INLINE_READ_LOCK_IRQ is not set
199# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
200CONFIG_INLINE_READ_UNLOCK=y
201# CONFIG_INLINE_READ_UNLOCK_BH is not set
202CONFIG_INLINE_READ_UNLOCK_IRQ=y
203# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_WRITE_TRYLOCK is not set
205# CONFIG_INLINE_WRITE_LOCK is not set
206# CONFIG_INLINE_WRITE_LOCK_BH is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
209CONFIG_INLINE_WRITE_UNLOCK=y
210# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
211CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
212# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
213# CONFIG_MUTEX_SPIN_ON_OWNER is not set
184# CONFIG_FREEZER is not set 214# CONFIG_FREEZER is not set
185 215
186# 216#
@@ -259,6 +289,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 289CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
260# CONFIG_KEXEC is not set 290# CONFIG_KEXEC is not set
261# CONFIG_CRASH_DUMP is not set 291# CONFIG_CRASH_DUMP is not set
292CONFIG_SPARSE_IRQ=y
262CONFIG_MAX_ACTIVE_REGIONS=32 293CONFIG_MAX_ACTIVE_REGIONS=32
263CONFIG_ARCH_FLATMEM_ENABLE=y 294CONFIG_ARCH_FLATMEM_ENABLE=y
264CONFIG_ARCH_POPULATES_NODE_MAP=y 295CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -275,8 +306,6 @@ CONFIG_MIGRATION=y
275CONFIG_ZONE_DMA_FLAG=1 306CONFIG_ZONE_DMA_FLAG=1
276CONFIG_BOUNCE=y 307CONFIG_BOUNCE=y
277CONFIG_VIRT_TO_BUS=y 308CONFIG_VIRT_TO_BUS=y
278CONFIG_HAVE_MLOCK=y
279CONFIG_HAVE_MLOCKED_PAGE_BIT=y
280# CONFIG_KSM is not set 309# CONFIG_KSM is not set
281CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 310CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
282CONFIG_PPC_4K_PAGES=y 311CONFIG_PPC_4K_PAGES=y
@@ -404,9 +433,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
404# CONFIG_AF_RXRPC is not set 433# CONFIG_AF_RXRPC is not set
405CONFIG_WIRELESS=y 434CONFIG_WIRELESS=y
406# CONFIG_CFG80211 is not set 435# CONFIG_CFG80211 is not set
407CONFIG_CFG80211_DEFAULT_PS_VALUE=0
408CONFIG_WIRELESS_OLD_REGULATORY=y
409# CONFIG_WIRELESS_EXT is not set
410# CONFIG_LIB80211 is not set 436# CONFIG_LIB80211 is not set
411 437
412# 438#
@@ -544,6 +570,10 @@ CONFIG_BLK_DEV=y
544# CONFIG_BLK_DEV_COW_COMMON is not set 570# CONFIG_BLK_DEV_COW_COMMON is not set
545CONFIG_BLK_DEV_LOOP=y 571CONFIG_BLK_DEV_LOOP=y
546# CONFIG_BLK_DEV_CRYPTOLOOP is not set 572# CONFIG_BLK_DEV_CRYPTOLOOP is not set
573
574#
575# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
576#
547# CONFIG_BLK_DEV_NBD is not set 577# CONFIG_BLK_DEV_NBD is not set
548# CONFIG_BLK_DEV_SX8 is not set 578# CONFIG_BLK_DEV_SX8 is not set
549# CONFIG_BLK_DEV_UB is not set 579# CONFIG_BLK_DEV_UB is not set
@@ -555,6 +585,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
555# CONFIG_ATA_OVER_ETH is not set 585# CONFIG_ATA_OVER_ETH is not set
556# CONFIG_BLK_DEV_HD is not set 586# CONFIG_BLK_DEV_HD is not set
557CONFIG_MISC_DEVICES=y 587CONFIG_MISC_DEVICES=y
588# CONFIG_AD525X_DPOT is not set
558# CONFIG_PHANTOM is not set 589# CONFIG_PHANTOM is not set
559# CONFIG_SGI_IOC4 is not set 590# CONFIG_SGI_IOC4 is not set
560# CONFIG_TIFM_CORE is not set 591# CONFIG_TIFM_CORE is not set
@@ -562,6 +593,8 @@ CONFIG_MISC_DEVICES=y
562# CONFIG_ENCLOSURE_SERVICES is not set 593# CONFIG_ENCLOSURE_SERVICES is not set
563# CONFIG_HP_ILO is not set 594# CONFIG_HP_ILO is not set
564# CONFIG_ISL29003 is not set 595# CONFIG_ISL29003 is not set
596# CONFIG_DS1682 is not set
597# CONFIG_TI_DAC7512 is not set
565# CONFIG_C2PORT is not set 598# CONFIG_C2PORT is not set
566 599
567# 600#
@@ -615,7 +648,9 @@ CONFIG_SCSI_LOWLEVEL=y
615# CONFIG_SCSI_BNX2_ISCSI is not set 648# CONFIG_SCSI_BNX2_ISCSI is not set
616# CONFIG_BE2ISCSI is not set 649# CONFIG_BE2ISCSI is not set
617# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 650# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
651# CONFIG_SCSI_HPSA is not set
618# CONFIG_SCSI_3W_9XXX is not set 652# CONFIG_SCSI_3W_9XXX is not set
653# CONFIG_SCSI_3W_SAS is not set
619# CONFIG_SCSI_ACARD is not set 654# CONFIG_SCSI_ACARD is not set
620# CONFIG_SCSI_AACRAID is not set 655# CONFIG_SCSI_AACRAID is not set
621# CONFIG_SCSI_AIC7XXX is not set 656# CONFIG_SCSI_AIC7XXX is not set
@@ -654,6 +689,7 @@ CONFIG_SCSI_LOWLEVEL=y
654# CONFIG_SCSI_NSP32 is not set 689# CONFIG_SCSI_NSP32 is not set
655# CONFIG_SCSI_DEBUG is not set 690# CONFIG_SCSI_DEBUG is not set
656# CONFIG_SCSI_PMCRAID is not set 691# CONFIG_SCSI_PMCRAID is not set
692# CONFIG_SCSI_PM8001 is not set
657# CONFIG_SCSI_SRP is not set 693# CONFIG_SCSI_SRP is not set
658# CONFIG_SCSI_BFA_FC is not set 694# CONFIG_SCSI_BFA_FC is not set
659# CONFIG_SCSI_DH is not set 695# CONFIG_SCSI_DH is not set
@@ -709,15 +745,16 @@ CONFIG_ATA_SFF=y
709# CONFIG_PATA_NS87415 is not set 745# CONFIG_PATA_NS87415 is not set
710# CONFIG_PATA_OPTI is not set 746# CONFIG_PATA_OPTI is not set
711# CONFIG_PATA_OPTIDMA is not set 747# CONFIG_PATA_OPTIDMA is not set
748# CONFIG_PATA_PDC2027X is not set
712# CONFIG_PATA_PDC_OLD is not set 749# CONFIG_PATA_PDC_OLD is not set
713# CONFIG_PATA_RADISYS is not set 750# CONFIG_PATA_RADISYS is not set
714# CONFIG_PATA_RDC is not set 751# CONFIG_PATA_RDC is not set
715# CONFIG_PATA_RZ1000 is not set 752# CONFIG_PATA_RZ1000 is not set
716# CONFIG_PATA_SC1200 is not set 753# CONFIG_PATA_SC1200 is not set
717# CONFIG_PATA_SERVERWORKS is not set 754# CONFIG_PATA_SERVERWORKS is not set
718# CONFIG_PATA_PDC2027X is not set
719# CONFIG_PATA_SIL680 is not set 755# CONFIG_PATA_SIL680 is not set
720# CONFIG_PATA_SIS is not set 756# CONFIG_PATA_SIS is not set
757# CONFIG_PATA_TOSHIBA is not set
721# CONFIG_PATA_VIA is not set 758# CONFIG_PATA_VIA is not set
722# CONFIG_PATA_WINBOND is not set 759# CONFIG_PATA_WINBOND is not set
723# CONFIG_PATA_PLATFORM is not set 760# CONFIG_PATA_PLATFORM is not set
@@ -744,7 +781,7 @@ CONFIG_MD_RAID1=y
744# 781#
745 782
746# 783#
747# See the help texts for more information. 784# The newer stack is recommended.
748# 785#
749# CONFIG_FIREWIRE is not set 786# CONFIG_FIREWIRE is not set
750# CONFIG_IEEE1394 is not set 787# CONFIG_IEEE1394 is not set
@@ -869,8 +906,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y
869# CONFIG_BE2NET is not set 906# CONFIG_BE2NET is not set
870# CONFIG_TR is not set 907# CONFIG_TR is not set
871CONFIG_WLAN=y 908CONFIG_WLAN=y
872# CONFIG_WLAN_PRE80211 is not set 909# CONFIG_AIRO is not set
873# CONFIG_WLAN_80211 is not set 910# CONFIG_ATMEL is not set
911# CONFIG_PRISM54 is not set
912# CONFIG_USB_ZD1201 is not set
913# CONFIG_HOSTAP is not set
874 914
875# 915#
876# Enable WiMAX (Networking options) to see the WiMAX drivers 916# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -893,6 +933,7 @@ CONFIG_WLAN=y
893# CONFIG_NETCONSOLE is not set 933# CONFIG_NETCONSOLE is not set
894# CONFIG_NETPOLL is not set 934# CONFIG_NETPOLL is not set
895# CONFIG_NET_POLL_CONTROLLER is not set 935# CONFIG_NET_POLL_CONTROLLER is not set
936# CONFIG_VMXNET3 is not set
896# CONFIG_ISDN is not set 937# CONFIG_ISDN is not set
897# CONFIG_PHONE is not set 938# CONFIG_PHONE is not set
898 939
@@ -902,6 +943,7 @@ CONFIG_WLAN=y
902CONFIG_INPUT=y 943CONFIG_INPUT=y
903# CONFIG_INPUT_FF_MEMLESS is not set 944# CONFIG_INPUT_FF_MEMLESS is not set
904# CONFIG_INPUT_POLLDEV is not set 945# CONFIG_INPUT_POLLDEV is not set
946# CONFIG_INPUT_SPARSEKMAP is not set
905 947
906# 948#
907# Userland interfaces 949# Userland interfaces
@@ -954,6 +996,7 @@ CONFIG_SERIAL_CORE=y
954CONFIG_SERIAL_CORE_CONSOLE=y 996CONFIG_SERIAL_CORE_CONSOLE=y
955# CONFIG_SERIAL_JSM is not set 997# CONFIG_SERIAL_JSM is not set
956# CONFIG_SERIAL_OF_PLATFORM is not set 998# CONFIG_SERIAL_OF_PLATFORM is not set
999# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
957CONFIG_UNIX98_PTYS=y 1000CONFIG_UNIX98_PTYS=y
958# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 1001# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
959CONFIG_LEGACY_PTYS=y 1002CONFIG_LEGACY_PTYS=y
@@ -1011,11 +1054,6 @@ CONFIG_I2C_MPC=y
1011# CONFIG_I2C_TINY_USB is not set 1054# CONFIG_I2C_TINY_USB is not set
1012 1055
1013# 1056#
1014# Graphics adapter I2C/DDC channel drivers
1015#
1016# CONFIG_I2C_VOODOO3 is not set
1017
1018#
1019# Other I2C/SMBus bus drivers 1057# Other I2C/SMBus bus drivers
1020# 1058#
1021# CONFIG_I2C_PCA_PLATFORM is not set 1059# CONFIG_I2C_PCA_PLATFORM is not set
@@ -1024,7 +1062,6 @@ CONFIG_I2C_MPC=y
1024# 1062#
1025# Miscellaneous I2C Chip support 1063# Miscellaneous I2C Chip support
1026# 1064#
1027# CONFIG_DS1682 is not set
1028# CONFIG_SENSORS_TSL2550 is not set 1065# CONFIG_SENSORS_TSL2550 is not set
1029# CONFIG_I2C_DEBUG_CORE is not set 1066# CONFIG_I2C_DEBUG_CORE is not set
1030# CONFIG_I2C_DEBUG_ALGO is not set 1067# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1039,6 +1076,8 @@ CONFIG_SPI_MASTER=y
1039# 1076#
1040CONFIG_SPI_BITBANG=y 1077CONFIG_SPI_BITBANG=y
1041# CONFIG_SPI_MPC8xxx is not set 1078# CONFIG_SPI_MPC8xxx is not set
1079# CONFIG_SPI_XILINX is not set
1080# CONFIG_SPI_DESIGNWARE is not set
1042 1081
1043# 1082#
1044# SPI Protocol Masters 1083# SPI Protocol Masters
@@ -1086,6 +1125,7 @@ CONFIG_HWMON=y
1086# CONFIG_SENSORS_IT87 is not set 1125# CONFIG_SENSORS_IT87 is not set
1087# CONFIG_SENSORS_LM63 is not set 1126# CONFIG_SENSORS_LM63 is not set
1088# CONFIG_SENSORS_LM70 is not set 1127# CONFIG_SENSORS_LM70 is not set
1128# CONFIG_SENSORS_LM73 is not set
1089# CONFIG_SENSORS_LM75 is not set 1129# CONFIG_SENSORS_LM75 is not set
1090# CONFIG_SENSORS_LM77 is not set 1130# CONFIG_SENSORS_LM77 is not set
1091# CONFIG_SENSORS_LM78 is not set 1131# CONFIG_SENSORS_LM78 is not set
@@ -1126,6 +1166,7 @@ CONFIG_HWMON=y
1126# CONFIG_SENSORS_W83627HF is not set 1166# CONFIG_SENSORS_W83627HF is not set
1127# CONFIG_SENSORS_W83627EHF is not set 1167# CONFIG_SENSORS_W83627EHF is not set
1128# CONFIG_SENSORS_LIS3_SPI is not set 1168# CONFIG_SENSORS_LIS3_SPI is not set
1169# CONFIG_SENSORS_LIS3_I2C is not set
1129# CONFIG_THERMAL is not set 1170# CONFIG_THERMAL is not set
1130CONFIG_WATCHDOG=y 1171CONFIG_WATCHDOG=y
1131# CONFIG_WATCHDOG_NOWAYOUT is not set 1172# CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -1163,6 +1204,7 @@ CONFIG_SSB_POSSIBLE=y
1163# CONFIG_TWL4030_CORE is not set 1204# CONFIG_TWL4030_CORE is not set
1164# CONFIG_MFD_TMIO is not set 1205# CONFIG_MFD_TMIO is not set
1165# CONFIG_PMIC_DA903X is not set 1206# CONFIG_PMIC_DA903X is not set
1207# CONFIG_PMIC_ADP5520 is not set
1166# CONFIG_MFD_WM8400 is not set 1208# CONFIG_MFD_WM8400 is not set
1167# CONFIG_MFD_WM831X is not set 1209# CONFIG_MFD_WM831X is not set
1168# CONFIG_MFD_WM8350_I2C is not set 1210# CONFIG_MFD_WM8350_I2C is not set
@@ -1170,6 +1212,8 @@ CONFIG_SSB_POSSIBLE=y
1170# CONFIG_MFD_MC13783 is not set 1212# CONFIG_MFD_MC13783 is not set
1171# CONFIG_AB3100_CORE is not set 1213# CONFIG_AB3100_CORE is not set
1172# CONFIG_EZX_PCAP is not set 1214# CONFIG_EZX_PCAP is not set
1215# CONFIG_MFD_88PM8607 is not set
1216# CONFIG_AB4500_CORE is not set
1173# CONFIG_REGULATOR is not set 1217# CONFIG_REGULATOR is not set
1174# CONFIG_MEDIA_SUPPORT is not set 1218# CONFIG_MEDIA_SUPPORT is not set
1175 1219
@@ -1237,6 +1281,7 @@ CONFIG_USB_MON=y
1237CONFIG_USB_EHCI_HCD=y 1281CONFIG_USB_EHCI_HCD=y
1238CONFIG_USB_EHCI_ROOT_HUB_TT=y 1282CONFIG_USB_EHCI_ROOT_HUB_TT=y
1239# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1283# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1284# CONFIG_XPS_USB_HCD_XILINX is not set
1240CONFIG_USB_EHCI_FSL=y 1285CONFIG_USB_EHCI_FSL=y
1241CONFIG_USB_EHCI_HCD_PPC_OF=y 1286CONFIG_USB_EHCI_HCD_PPC_OF=y
1242# CONFIG_USB_OXU210HP_HCD is not set 1287# CONFIG_USB_OXU210HP_HCD is not set
@@ -1351,15 +1396,17 @@ CONFIG_USB_NET2280=y
1351CONFIG_USB_GADGET_DUALSPEED=y 1396CONFIG_USB_GADGET_DUALSPEED=y
1352# CONFIG_USB_ZERO is not set 1397# CONFIG_USB_ZERO is not set
1353# CONFIG_USB_AUDIO is not set 1398# CONFIG_USB_AUDIO is not set
1354CONFIG_USB_ETH=y 1399CONFIG_USB_ETH=m
1355CONFIG_USB_ETH_RNDIS=y 1400CONFIG_USB_ETH_RNDIS=y
1356# CONFIG_USB_ETH_EEM is not set 1401# CONFIG_USB_ETH_EEM is not set
1357# CONFIG_USB_GADGETFS is not set 1402# CONFIG_USB_GADGETFS is not set
1358# CONFIG_USB_FILE_STORAGE is not set 1403# CONFIG_USB_FILE_STORAGE is not set
1404# CONFIG_USB_MASS_STORAGE is not set
1359# CONFIG_USB_G_SERIAL is not set 1405# CONFIG_USB_G_SERIAL is not set
1360# CONFIG_USB_MIDI_GADGET is not set 1406# CONFIG_USB_MIDI_GADGET is not set
1361# CONFIG_USB_G_PRINTER is not set 1407# CONFIG_USB_G_PRINTER is not set
1362# CONFIG_USB_CDC_COMPOSITE is not set 1408# CONFIG_USB_CDC_COMPOSITE is not set
1409# CONFIG_USB_G_MULTI is not set
1363 1410
1364# 1411#
1365# OTG and related infrastructure 1412# OTG and related infrastructure
@@ -1400,6 +1447,7 @@ CONFIG_RTC_DRV_DS1307=y
1400# CONFIG_RTC_DRV_PCF8563 is not set 1447# CONFIG_RTC_DRV_PCF8563 is not set
1401# CONFIG_RTC_DRV_PCF8583 is not set 1448# CONFIG_RTC_DRV_PCF8583 is not set
1402# CONFIG_RTC_DRV_M41T80 is not set 1449# CONFIG_RTC_DRV_M41T80 is not set
1450# CONFIG_RTC_DRV_BQ32K is not set
1403# CONFIG_RTC_DRV_S35390A is not set 1451# CONFIG_RTC_DRV_S35390A is not set
1404# CONFIG_RTC_DRV_FM3130 is not set 1452# CONFIG_RTC_DRV_FM3130 is not set
1405# CONFIG_RTC_DRV_RX8581 is not set 1453# CONFIG_RTC_DRV_RX8581 is not set
@@ -1429,7 +1477,9 @@ CONFIG_RTC_DRV_DS1307=y
1429# CONFIG_RTC_DRV_M48T86 is not set 1477# CONFIG_RTC_DRV_M48T86 is not set
1430# CONFIG_RTC_DRV_M48T35 is not set 1478# CONFIG_RTC_DRV_M48T35 is not set
1431# CONFIG_RTC_DRV_M48T59 is not set 1479# CONFIG_RTC_DRV_M48T59 is not set
1480# CONFIG_RTC_DRV_MSM6242 is not set
1432# CONFIG_RTC_DRV_BQ4802 is not set 1481# CONFIG_RTC_DRV_BQ4802 is not set
1482# CONFIG_RTC_DRV_RP5C01 is not set
1433# CONFIG_RTC_DRV_V3020 is not set 1483# CONFIG_RTC_DRV_V3020 is not set
1434 1484
1435# 1485#
@@ -1740,7 +1790,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1740# CONFIG_KEYS is not set 1790# CONFIG_KEYS is not set
1741# CONFIG_SECURITY is not set 1791# CONFIG_SECURITY is not set
1742# CONFIG_SECURITYFS is not set 1792# CONFIG_SECURITYFS is not set
1743# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1793# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1794# CONFIG_DEFAULT_SECURITY_SMACK is not set
1795# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1796CONFIG_DEFAULT_SECURITY_DAC=y
1797CONFIG_DEFAULT_SECURITY=""
1744CONFIG_CRYPTO=y 1798CONFIG_CRYPTO=y
1745 1799
1746# 1800#
diff --git a/arch/powerpc/configs/83xx/mpc832x_mds_defconfig b/arch/powerpc/configs/83xx/mpc832x_mds_defconfig
index 7def83518a6c..0b4262bd4917 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:24 2009 4# Wed Jan 6 09:24:17 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -37,6 +37,7 @@ CONFIG_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 38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
40CONFIG_NR_IRQS=512
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y 43CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y
59CONFIG_GENERIC_BUG=y 60CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y 61CONFIG_DTC=y
61CONFIG_DEFAULT_UIMAGE=y 62CONFIG_DEFAULT_UIMAGE=y
63CONFIG_ARCH_HIBERNATION_POSSIBLE=y
62CONFIG_ARCH_SUSPEND_POSSIBLE=y 64CONFIG_ARCH_SUSPEND_POSSIBLE=y
63# CONFIG_PPC_DCR_NATIVE is not set 65# CONFIG_PPC_DCR_NATIVE is not set
64# CONFIG_PPC_DCR_MMIO is not set 66# CONFIG_PPC_DCR_MMIO is not set
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y
87# 89#
88CONFIG_TREE_RCU=y 90CONFIG_TREE_RCU=y
89# CONFIG_TREE_PREEMPT_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
92# CONFIG_TINY_RCU is not set
90# CONFIG_RCU_TRACE is not set 93# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32 94CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set 95# CONFIG_RCU_FANOUT_EXACT is not set
@@ -173,14 +176,41 @@ CONFIG_LBDAF=y
173# IO Schedulers 176# IO Schedulers
174# 177#
175CONFIG_IOSCHED_NOOP=y 178CONFIG_IOSCHED_NOOP=y
176CONFIG_IOSCHED_AS=y
177CONFIG_IOSCHED_DEADLINE=y 179CONFIG_IOSCHED_DEADLINE=y
178CONFIG_IOSCHED_CFQ=y 180CONFIG_IOSCHED_CFQ=y
179CONFIG_DEFAULT_AS=y
180# CONFIG_DEFAULT_DEADLINE is not set 181# CONFIG_DEFAULT_DEADLINE is not set
181# CONFIG_DEFAULT_CFQ is not set 182CONFIG_DEFAULT_CFQ=y
182# CONFIG_DEFAULT_NOOP is not set 183# CONFIG_DEFAULT_NOOP is not set
183CONFIG_DEFAULT_IOSCHED="anticipatory" 184CONFIG_DEFAULT_IOSCHED="cfq"
185# CONFIG_INLINE_SPIN_TRYLOCK is not set
186# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
187# CONFIG_INLINE_SPIN_LOCK is not set
188# CONFIG_INLINE_SPIN_LOCK_BH is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
191CONFIG_INLINE_SPIN_UNLOCK=y
192# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
193CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
194# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
195# CONFIG_INLINE_READ_TRYLOCK is not set
196# CONFIG_INLINE_READ_LOCK is not set
197# CONFIG_INLINE_READ_LOCK_BH is not set
198# CONFIG_INLINE_READ_LOCK_IRQ is not set
199# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
200CONFIG_INLINE_READ_UNLOCK=y
201# CONFIG_INLINE_READ_UNLOCK_BH is not set
202CONFIG_INLINE_READ_UNLOCK_IRQ=y
203# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_WRITE_TRYLOCK is not set
205# CONFIG_INLINE_WRITE_LOCK is not set
206# CONFIG_INLINE_WRITE_LOCK_BH is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
209CONFIG_INLINE_WRITE_UNLOCK=y
210# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
211CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
212# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
213# CONFIG_MUTEX_SPIN_ON_OWNER is not set
184# CONFIG_FREEZER is not set 214# CONFIG_FREEZER is not set
185 215
186# 216#
@@ -260,6 +290,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
260CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 290CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
261# CONFIG_KEXEC is not set 291# CONFIG_KEXEC is not set
262# CONFIG_CRASH_DUMP is not set 292# CONFIG_CRASH_DUMP is not set
293CONFIG_SPARSE_IRQ=y
263CONFIG_MAX_ACTIVE_REGIONS=32 294CONFIG_MAX_ACTIVE_REGIONS=32
264CONFIG_ARCH_FLATMEM_ENABLE=y 295CONFIG_ARCH_FLATMEM_ENABLE=y
265CONFIG_ARCH_POPULATES_NODE_MAP=y 296CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -276,8 +307,6 @@ CONFIG_MIGRATION=y
276CONFIG_ZONE_DMA_FLAG=1 307CONFIG_ZONE_DMA_FLAG=1
277CONFIG_BOUNCE=y 308CONFIG_BOUNCE=y
278CONFIG_VIRT_TO_BUS=y 309CONFIG_VIRT_TO_BUS=y
279CONFIG_HAVE_MLOCK=y
280CONFIG_HAVE_MLOCKED_PAGE_BIT=y
281# CONFIG_KSM is not set 310# CONFIG_KSM is not set
282CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 311CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
283CONFIG_PPC_4K_PAGES=y 312CONFIG_PPC_4K_PAGES=y
@@ -404,9 +433,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
404# CONFIG_AF_RXRPC is not set 433# CONFIG_AF_RXRPC is not set
405CONFIG_WIRELESS=y 434CONFIG_WIRELESS=y
406# CONFIG_CFG80211 is not set 435# CONFIG_CFG80211 is not set
407CONFIG_CFG80211_DEFAULT_PS_VALUE=0
408CONFIG_WIRELESS_OLD_REGULATORY=y
409# CONFIG_WIRELESS_EXT is not set
410# CONFIG_LIB80211 is not set 436# CONFIG_LIB80211 is not set
411 437
412# 438#
@@ -444,6 +470,10 @@ CONFIG_BLK_DEV=y
444# CONFIG_BLK_DEV_COW_COMMON is not set 470# CONFIG_BLK_DEV_COW_COMMON is not set
445CONFIG_BLK_DEV_LOOP=y 471CONFIG_BLK_DEV_LOOP=y
446# CONFIG_BLK_DEV_CRYPTOLOOP is not set 472# CONFIG_BLK_DEV_CRYPTOLOOP is not set
473
474#
475# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
476#
447# CONFIG_BLK_DEV_NBD is not set 477# CONFIG_BLK_DEV_NBD is not set
448# CONFIG_BLK_DEV_SX8 is not set 478# CONFIG_BLK_DEV_SX8 is not set
449CONFIG_BLK_DEV_RAM=y 479CONFIG_BLK_DEV_RAM=y
@@ -454,6 +484,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
454# CONFIG_ATA_OVER_ETH is not set 484# CONFIG_ATA_OVER_ETH is not set
455# CONFIG_BLK_DEV_HD is not set 485# CONFIG_BLK_DEV_HD is not set
456CONFIG_MISC_DEVICES=y 486CONFIG_MISC_DEVICES=y
487# CONFIG_AD525X_DPOT is not set
457# CONFIG_PHANTOM is not set 488# CONFIG_PHANTOM is not set
458# CONFIG_SGI_IOC4 is not set 489# CONFIG_SGI_IOC4 is not set
459# CONFIG_TIFM_CORE is not set 490# CONFIG_TIFM_CORE is not set
@@ -461,6 +492,7 @@ CONFIG_MISC_DEVICES=y
461# CONFIG_ENCLOSURE_SERVICES is not set 492# CONFIG_ENCLOSURE_SERVICES is not set
462# CONFIG_HP_ILO is not set 493# CONFIG_HP_ILO is not set
463# CONFIG_ISL29003 is not set 494# CONFIG_ISL29003 is not set
495# CONFIG_DS1682 is not set
464# CONFIG_C2PORT is not set 496# CONFIG_C2PORT is not set
465 497
466# 498#
@@ -513,7 +545,9 @@ CONFIG_SCSI_LOWLEVEL=y
513# CONFIG_SCSI_BNX2_ISCSI is not set 545# CONFIG_SCSI_BNX2_ISCSI is not set
514# CONFIG_BE2ISCSI is not set 546# CONFIG_BE2ISCSI is not set
515# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 547# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
548# CONFIG_SCSI_HPSA is not set
516# CONFIG_SCSI_3W_9XXX is not set 549# CONFIG_SCSI_3W_9XXX is not set
550# CONFIG_SCSI_3W_SAS is not set
517# CONFIG_SCSI_ACARD is not set 551# CONFIG_SCSI_ACARD is not set
518# CONFIG_SCSI_AACRAID is not set 552# CONFIG_SCSI_AACRAID is not set
519# CONFIG_SCSI_AIC7XXX is not set 553# CONFIG_SCSI_AIC7XXX is not set
@@ -551,6 +585,7 @@ CONFIG_SCSI_LOWLEVEL=y
551# CONFIG_SCSI_NSP32 is not set 585# CONFIG_SCSI_NSP32 is not set
552# CONFIG_SCSI_DEBUG is not set 586# CONFIG_SCSI_DEBUG is not set
553# CONFIG_SCSI_PMCRAID is not set 587# CONFIG_SCSI_PMCRAID is not set
588# CONFIG_SCSI_PM8001 is not set
554# CONFIG_SCSI_SRP is not set 589# CONFIG_SCSI_SRP is not set
555# CONFIG_SCSI_BFA_FC is not set 590# CONFIG_SCSI_BFA_FC is not set
556# CONFIG_SCSI_DH is not set 591# CONFIG_SCSI_DH is not set
@@ -568,7 +603,7 @@ CONFIG_SCSI_LOWLEVEL=y
568# 603#
569 604
570# 605#
571# See the help texts for more information. 606# The newer stack is recommended.
572# 607#
573# CONFIG_FIREWIRE is not set 608# CONFIG_FIREWIRE is not set
574# CONFIG_IEEE1394 is not set 609# CONFIG_IEEE1394 is not set
@@ -675,8 +710,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y
675# CONFIG_BE2NET is not set 710# CONFIG_BE2NET is not set
676# CONFIG_TR is not set 711# CONFIG_TR is not set
677CONFIG_WLAN=y 712CONFIG_WLAN=y
678# CONFIG_WLAN_PRE80211 is not set 713# CONFIG_AIRO is not set
679# CONFIG_WLAN_80211 is not set 714# CONFIG_ATMEL is not set
715# CONFIG_PRISM54 is not set
716# CONFIG_HOSTAP is not set
680 717
681# 718#
682# Enable WiMAX (Networking options) to see the WiMAX drivers 719# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -690,6 +727,7 @@ CONFIG_WLAN=y
690# CONFIG_NETCONSOLE is not set 727# CONFIG_NETCONSOLE is not set
691# CONFIG_NETPOLL is not set 728# CONFIG_NETPOLL is not set
692# CONFIG_NET_POLL_CONTROLLER is not set 729# CONFIG_NET_POLL_CONTROLLER is not set
730# CONFIG_VMXNET3 is not set
693# CONFIG_ISDN is not set 731# CONFIG_ISDN is not set
694# CONFIG_PHONE is not set 732# CONFIG_PHONE is not set
695 733
@@ -699,6 +737,7 @@ CONFIG_WLAN=y
699CONFIG_INPUT=y 737CONFIG_INPUT=y
700# CONFIG_INPUT_FF_MEMLESS is not set 738# CONFIG_INPUT_FF_MEMLESS is not set
701# CONFIG_INPUT_POLLDEV is not set 739# CONFIG_INPUT_POLLDEV is not set
740# CONFIG_INPUT_SPARSEKMAP is not set
702 741
703# 742#
704# Userland interfaces 743# Userland interfaces
@@ -751,6 +790,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
751# CONFIG_SERIAL_JSM is not set 790# CONFIG_SERIAL_JSM is not set
752# CONFIG_SERIAL_OF_PLATFORM is not set 791# CONFIG_SERIAL_OF_PLATFORM is not set
753# CONFIG_SERIAL_QE is not set 792# CONFIG_SERIAL_QE is not set
793# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
754CONFIG_UNIX98_PTYS=y 794CONFIG_UNIX98_PTYS=y
755# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 795# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
756CONFIG_LEGACY_PTYS=y 796CONFIG_LEGACY_PTYS=y
@@ -807,11 +847,6 @@ CONFIG_I2C_MPC=y
807# CONFIG_I2C_TAOS_EVM is not set 847# CONFIG_I2C_TAOS_EVM is not set
808 848
809# 849#
810# Graphics adapter I2C/DDC channel drivers
811#
812# CONFIG_I2C_VOODOO3 is not set
813
814#
815# Other I2C/SMBus bus drivers 850# Other I2C/SMBus bus drivers
816# 851#
817# CONFIG_I2C_PCA_PLATFORM is not set 852# CONFIG_I2C_PCA_PLATFORM is not set
@@ -820,7 +855,6 @@ CONFIG_I2C_MPC=y
820# 855#
821# Miscellaneous I2C Chip support 856# Miscellaneous I2C Chip support
822# 857#
823# CONFIG_DS1682 is not set
824# CONFIG_SENSORS_TSL2550 is not set 858# CONFIG_SENSORS_TSL2550 is not set
825# CONFIG_I2C_DEBUG_CORE is not set 859# CONFIG_I2C_DEBUG_CORE is not set
826# CONFIG_I2C_DEBUG_ALGO is not set 860# CONFIG_I2C_DEBUG_ALGO is not set
@@ -866,6 +900,7 @@ CONFIG_HWMON=y
866# CONFIG_SENSORS_GL520SM is not set 900# CONFIG_SENSORS_GL520SM is not set
867# CONFIG_SENSORS_IT87 is not set 901# CONFIG_SENSORS_IT87 is not set
868# CONFIG_SENSORS_LM63 is not set 902# CONFIG_SENSORS_LM63 is not set
903# CONFIG_SENSORS_LM73 is not set
869# CONFIG_SENSORS_LM75 is not set 904# CONFIG_SENSORS_LM75 is not set
870# CONFIG_SENSORS_LM77 is not set 905# CONFIG_SENSORS_LM77 is not set
871# CONFIG_SENSORS_LM78 is not set 906# CONFIG_SENSORS_LM78 is not set
@@ -904,6 +939,7 @@ CONFIG_HWMON=y
904# CONFIG_SENSORS_W83L786NG is not set 939# CONFIG_SENSORS_W83L786NG is not set
905# CONFIG_SENSORS_W83627HF is not set 940# CONFIG_SENSORS_W83627HF is not set
906# CONFIG_SENSORS_W83627EHF is not set 941# CONFIG_SENSORS_W83627EHF is not set
942# CONFIG_SENSORS_LIS3_I2C is not set
907# CONFIG_THERMAL is not set 943# CONFIG_THERMAL is not set
908CONFIG_WATCHDOG=y 944CONFIG_WATCHDOG=y
909# CONFIG_WATCHDOG_NOWAYOUT is not set 945# CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -936,11 +972,13 @@ CONFIG_SSB_POSSIBLE=y
936# CONFIG_TWL4030_CORE is not set 972# CONFIG_TWL4030_CORE is not set
937# CONFIG_MFD_TMIO is not set 973# CONFIG_MFD_TMIO is not set
938# CONFIG_PMIC_DA903X is not set 974# CONFIG_PMIC_DA903X is not set
975# CONFIG_PMIC_ADP5520 is not set
939# CONFIG_MFD_WM8400 is not set 976# CONFIG_MFD_WM8400 is not set
940# CONFIG_MFD_WM831X is not set 977# CONFIG_MFD_WM831X is not set
941# CONFIG_MFD_WM8350_I2C is not set 978# CONFIG_MFD_WM8350_I2C is not set
942# CONFIG_MFD_PCF50633 is not set 979# CONFIG_MFD_PCF50633 is not set
943# CONFIG_AB3100_CORE is not set 980# CONFIG_AB3100_CORE is not set
981# CONFIG_MFD_88PM8607 is not set
944# CONFIG_REGULATOR is not set 982# CONFIG_REGULATOR is not set
945# CONFIG_MEDIA_SUPPORT is not set 983# CONFIG_MEDIA_SUPPORT is not set
946 984
@@ -1023,6 +1061,7 @@ CONFIG_RTC_DRV_DS1374=y
1023# CONFIG_RTC_DRV_PCF8563 is not set 1061# CONFIG_RTC_DRV_PCF8563 is not set
1024# CONFIG_RTC_DRV_PCF8583 is not set 1062# CONFIG_RTC_DRV_PCF8583 is not set
1025# CONFIG_RTC_DRV_M41T80 is not set 1063# CONFIG_RTC_DRV_M41T80 is not set
1064# CONFIG_RTC_DRV_BQ32K is not set
1026# CONFIG_RTC_DRV_S35390A is not set 1065# CONFIG_RTC_DRV_S35390A is not set
1027# CONFIG_RTC_DRV_FM3130 is not set 1066# CONFIG_RTC_DRV_FM3130 is not set
1028# CONFIG_RTC_DRV_RX8581 is not set 1067# CONFIG_RTC_DRV_RX8581 is not set
@@ -1044,7 +1083,9 @@ CONFIG_RTC_DRV_DS1374=y
1044# CONFIG_RTC_DRV_M48T86 is not set 1083# CONFIG_RTC_DRV_M48T86 is not set
1045# CONFIG_RTC_DRV_M48T35 is not set 1084# CONFIG_RTC_DRV_M48T35 is not set
1046# CONFIG_RTC_DRV_M48T59 is not set 1085# CONFIG_RTC_DRV_M48T59 is not set
1086# CONFIG_RTC_DRV_MSM6242 is not set
1047# CONFIG_RTC_DRV_BQ4802 is not set 1087# CONFIG_RTC_DRV_BQ4802 is not set
1088# CONFIG_RTC_DRV_RP5C01 is not set
1048# CONFIG_RTC_DRV_V3020 is not set 1089# CONFIG_RTC_DRV_V3020 is not set
1049 1090
1050# 1091#
@@ -1220,7 +1261,7 @@ CONFIG_FRAME_WARN=1024
1220# CONFIG_DEBUG_KERNEL is not set 1261# CONFIG_DEBUG_KERNEL is not set
1221# CONFIG_SLUB_DEBUG_ON is not set 1262# CONFIG_SLUB_DEBUG_ON is not set
1222# CONFIG_SLUB_STATS is not set 1263# CONFIG_SLUB_STATS is not set
1223# CONFIG_DEBUG_BUGVERBOSE is not set 1264CONFIG_DEBUG_BUGVERBOSE=y
1224# CONFIG_DEBUG_MEMORY_INIT is not set 1265# CONFIG_DEBUG_MEMORY_INIT is not set
1225# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1266# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1226# CONFIG_LATENCYTOP is not set 1267# CONFIG_LATENCYTOP is not set
@@ -1247,7 +1288,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1247# CONFIG_KEYS is not set 1288# CONFIG_KEYS is not set
1248# CONFIG_SECURITY is not set 1289# CONFIG_SECURITY is not set
1249# CONFIG_SECURITYFS is not set 1290# CONFIG_SECURITYFS is not set
1250# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1291# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1292# CONFIG_DEFAULT_SECURITY_SMACK is not set
1293# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1294CONFIG_DEFAULT_SECURITY_DAC=y
1295CONFIG_DEFAULT_SECURITY=""
1251CONFIG_CRYPTO=y 1296CONFIG_CRYPTO=y
1252 1297
1253# 1298#
diff --git a/arch/powerpc/configs/83xx/mpc832x_rdb_defconfig b/arch/powerpc/configs/83xx/mpc832x_rdb_defconfig
index b398b9b2b635..155af009f7b5 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:24 2009 4# Wed Jan 6 09:24:18 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -37,6 +37,7 @@ CONFIG_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 38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
40CONFIG_NR_IRQS=512
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y 43CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y
59CONFIG_GENERIC_BUG=y 60CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y 61CONFIG_DTC=y
61CONFIG_DEFAULT_UIMAGE=y 62CONFIG_DEFAULT_UIMAGE=y
63CONFIG_ARCH_HIBERNATION_POSSIBLE=y
62CONFIG_ARCH_SUSPEND_POSSIBLE=y 64CONFIG_ARCH_SUSPEND_POSSIBLE=y
63# CONFIG_PPC_DCR_NATIVE is not set 65# CONFIG_PPC_DCR_NATIVE is not set
64# CONFIG_PPC_DCR_MMIO is not set 66# CONFIG_PPC_DCR_MMIO is not set
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y
87# 89#
88CONFIG_TREE_RCU=y 90CONFIG_TREE_RCU=y
89# CONFIG_TREE_PREEMPT_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
92# CONFIG_TINY_RCU is not set
90# CONFIG_RCU_TRACE is not set 93# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32 94CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set 95# CONFIG_RCU_FANOUT_EXACT is not set
@@ -173,14 +176,41 @@ CONFIG_LBDAF=y
173# IO Schedulers 176# IO Schedulers
174# 177#
175CONFIG_IOSCHED_NOOP=y 178CONFIG_IOSCHED_NOOP=y
176CONFIG_IOSCHED_AS=y
177CONFIG_IOSCHED_DEADLINE=y 179CONFIG_IOSCHED_DEADLINE=y
178CONFIG_IOSCHED_CFQ=y 180CONFIG_IOSCHED_CFQ=y
179CONFIG_DEFAULT_AS=y
180# CONFIG_DEFAULT_DEADLINE is not set 181# CONFIG_DEFAULT_DEADLINE is not set
181# CONFIG_DEFAULT_CFQ is not set 182CONFIG_DEFAULT_CFQ=y
182# CONFIG_DEFAULT_NOOP is not set 183# CONFIG_DEFAULT_NOOP is not set
183CONFIG_DEFAULT_IOSCHED="anticipatory" 184CONFIG_DEFAULT_IOSCHED="cfq"
185# CONFIG_INLINE_SPIN_TRYLOCK is not set
186# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
187# CONFIG_INLINE_SPIN_LOCK is not set
188# CONFIG_INLINE_SPIN_LOCK_BH is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
191CONFIG_INLINE_SPIN_UNLOCK=y
192# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
193CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
194# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
195# CONFIG_INLINE_READ_TRYLOCK is not set
196# CONFIG_INLINE_READ_LOCK is not set
197# CONFIG_INLINE_READ_LOCK_BH is not set
198# CONFIG_INLINE_READ_LOCK_IRQ is not set
199# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
200CONFIG_INLINE_READ_UNLOCK=y
201# CONFIG_INLINE_READ_UNLOCK_BH is not set
202CONFIG_INLINE_READ_UNLOCK_IRQ=y
203# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_WRITE_TRYLOCK is not set
205# CONFIG_INLINE_WRITE_LOCK is not set
206# CONFIG_INLINE_WRITE_LOCK_BH is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
209CONFIG_INLINE_WRITE_UNLOCK=y
210# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
211CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
212# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
213# CONFIG_MUTEX_SPIN_ON_OWNER is not set
184# CONFIG_FREEZER is not set 214# CONFIG_FREEZER is not set
185 215
186# 216#
@@ -260,6 +290,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
260CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 290CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
261# CONFIG_KEXEC is not set 291# CONFIG_KEXEC is not set
262# CONFIG_CRASH_DUMP is not set 292# CONFIG_CRASH_DUMP is not set
293CONFIG_SPARSE_IRQ=y
263CONFIG_MAX_ACTIVE_REGIONS=32 294CONFIG_MAX_ACTIVE_REGIONS=32
264CONFIG_ARCH_FLATMEM_ENABLE=y 295CONFIG_ARCH_FLATMEM_ENABLE=y
265CONFIG_ARCH_POPULATES_NODE_MAP=y 296CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -276,8 +307,6 @@ CONFIG_MIGRATION=y
276CONFIG_ZONE_DMA_FLAG=1 307CONFIG_ZONE_DMA_FLAG=1
277CONFIG_BOUNCE=y 308CONFIG_BOUNCE=y
278CONFIG_VIRT_TO_BUS=y 309CONFIG_VIRT_TO_BUS=y
279CONFIG_HAVE_MLOCK=y
280CONFIG_HAVE_MLOCKED_PAGE_BIT=y
281# CONFIG_KSM is not set 310# CONFIG_KSM is not set
282CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 311CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
283CONFIG_PPC_4K_PAGES=y 312CONFIG_PPC_4K_PAGES=y
@@ -404,9 +433,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
404# CONFIG_AF_RXRPC is not set 433# CONFIG_AF_RXRPC is not set
405CONFIG_WIRELESS=y 434CONFIG_WIRELESS=y
406# CONFIG_CFG80211 is not set 435# CONFIG_CFG80211 is not set
407CONFIG_CFG80211_DEFAULT_PS_VALUE=0
408CONFIG_WIRELESS_OLD_REGULATORY=y
409# CONFIG_WIRELESS_EXT is not set
410# CONFIG_LIB80211 is not set 436# CONFIG_LIB80211 is not set
411 437
412# 438#
@@ -445,6 +471,10 @@ CONFIG_BLK_DEV=y
445# CONFIG_BLK_DEV_COW_COMMON is not set 471# CONFIG_BLK_DEV_COW_COMMON is not set
446CONFIG_BLK_DEV_LOOP=y 472CONFIG_BLK_DEV_LOOP=y
447# CONFIG_BLK_DEV_CRYPTOLOOP is not set 473# CONFIG_BLK_DEV_CRYPTOLOOP is not set
474
475#
476# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
477#
448# CONFIG_BLK_DEV_NBD is not set 478# CONFIG_BLK_DEV_NBD is not set
449# CONFIG_BLK_DEV_SX8 is not set 479# CONFIG_BLK_DEV_SX8 is not set
450# CONFIG_BLK_DEV_UB is not set 480# CONFIG_BLK_DEV_UB is not set
@@ -456,6 +486,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
456# CONFIG_ATA_OVER_ETH is not set 486# CONFIG_ATA_OVER_ETH is not set
457# CONFIG_BLK_DEV_HD is not set 487# CONFIG_BLK_DEV_HD is not set
458CONFIG_MISC_DEVICES=y 488CONFIG_MISC_DEVICES=y
489# CONFIG_AD525X_DPOT is not set
459# CONFIG_PHANTOM is not set 490# CONFIG_PHANTOM is not set
460# CONFIG_SGI_IOC4 is not set 491# CONFIG_SGI_IOC4 is not set
461# CONFIG_TIFM_CORE is not set 492# CONFIG_TIFM_CORE is not set
@@ -463,6 +494,8 @@ CONFIG_MISC_DEVICES=y
463# CONFIG_ENCLOSURE_SERVICES is not set 494# CONFIG_ENCLOSURE_SERVICES is not set
464# CONFIG_HP_ILO is not set 495# CONFIG_HP_ILO is not set
465# CONFIG_ISL29003 is not set 496# CONFIG_ISL29003 is not set
497# CONFIG_DS1682 is not set
498# CONFIG_TI_DAC7512 is not set
466# CONFIG_C2PORT is not set 499# CONFIG_C2PORT is not set
467 500
468# 501#
@@ -474,6 +507,7 @@ CONFIG_MISC_DEVICES=y
474# CONFIG_EEPROM_MAX6875 is not set 507# CONFIG_EEPROM_MAX6875 is not set
475# CONFIG_EEPROM_93CX6 is not set 508# CONFIG_EEPROM_93CX6 is not set
476# CONFIG_CB710_CORE is not set 509# CONFIG_CB710_CORE is not set
510# CONFIG_IWMC3200TOP is not set
477CONFIG_HAVE_IDE=y 511CONFIG_HAVE_IDE=y
478# CONFIG_IDE is not set 512# CONFIG_IDE is not set
479 513
@@ -516,7 +550,9 @@ CONFIG_SCSI_LOWLEVEL=y
516# CONFIG_SCSI_BNX2_ISCSI is not set 550# CONFIG_SCSI_BNX2_ISCSI is not set
517# CONFIG_BE2ISCSI is not set 551# CONFIG_BE2ISCSI is not set
518# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 552# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
553# CONFIG_SCSI_HPSA is not set
519# CONFIG_SCSI_3W_9XXX is not set 554# CONFIG_SCSI_3W_9XXX is not set
555# CONFIG_SCSI_3W_SAS is not set
520# CONFIG_SCSI_ACARD is not set 556# CONFIG_SCSI_ACARD is not set
521# CONFIG_SCSI_AACRAID is not set 557# CONFIG_SCSI_AACRAID is not set
522# CONFIG_SCSI_AIC7XXX is not set 558# CONFIG_SCSI_AIC7XXX is not set
@@ -554,6 +590,7 @@ CONFIG_SCSI_LOWLEVEL=y
554# CONFIG_SCSI_NSP32 is not set 590# CONFIG_SCSI_NSP32 is not set
555# CONFIG_SCSI_DEBUG is not set 591# CONFIG_SCSI_DEBUG is not set
556# CONFIG_SCSI_PMCRAID is not set 592# CONFIG_SCSI_PMCRAID is not set
593# CONFIG_SCSI_PM8001 is not set
557# CONFIG_SCSI_SRP is not set 594# CONFIG_SCSI_SRP is not set
558# CONFIG_SCSI_BFA_FC is not set 595# CONFIG_SCSI_BFA_FC is not set
559# CONFIG_SCSI_DH is not set 596# CONFIG_SCSI_DH is not set
@@ -571,7 +608,7 @@ CONFIG_SCSI_LOWLEVEL=y
571# 608#
572 609
573# 610#
574# See the help texts for more information. 611# The newer stack is recommended.
575# 612#
576# CONFIG_FIREWIRE is not set 613# CONFIG_FIREWIRE is not set
577# CONFIG_IEEE1394 is not set 614# CONFIG_IEEE1394 is not set
@@ -680,8 +717,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y
680# CONFIG_BE2NET is not set 717# CONFIG_BE2NET is not set
681# CONFIG_TR is not set 718# CONFIG_TR is not set
682CONFIG_WLAN=y 719CONFIG_WLAN=y
683# CONFIG_WLAN_PRE80211 is not set 720# CONFIG_AIRO is not set
684# CONFIG_WLAN_80211 is not set 721# CONFIG_ATMEL is not set
722# CONFIG_PRISM54 is not set
723# CONFIG_USB_ZD1201 is not set
724# CONFIG_HOSTAP is not set
685 725
686# 726#
687# Enable WiMAX (Networking options) to see the WiMAX drivers 727# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -704,6 +744,7 @@ CONFIG_WLAN=y
704# CONFIG_NETCONSOLE is not set 744# CONFIG_NETCONSOLE is not set
705# CONFIG_NETPOLL is not set 745# CONFIG_NETPOLL is not set
706# CONFIG_NET_POLL_CONTROLLER is not set 746# CONFIG_NET_POLL_CONTROLLER is not set
747# CONFIG_VMXNET3 is not set
707# CONFIG_ISDN is not set 748# CONFIG_ISDN is not set
708# CONFIG_PHONE is not set 749# CONFIG_PHONE is not set
709 750
@@ -713,6 +754,7 @@ CONFIG_WLAN=y
713CONFIG_INPUT=y 754CONFIG_INPUT=y
714# CONFIG_INPUT_FF_MEMLESS is not set 755# CONFIG_INPUT_FF_MEMLESS is not set
715# CONFIG_INPUT_POLLDEV is not set 756# CONFIG_INPUT_POLLDEV is not set
757# CONFIG_INPUT_SPARSEKMAP is not set
716 758
717# 759#
718# Userland interfaces 760# Userland interfaces
@@ -766,6 +808,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
766# CONFIG_SERIAL_JSM is not set 808# CONFIG_SERIAL_JSM is not set
767# CONFIG_SERIAL_OF_PLATFORM is not set 809# CONFIG_SERIAL_OF_PLATFORM is not set
768# CONFIG_SERIAL_QE is not set 810# CONFIG_SERIAL_QE is not set
811# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
769CONFIG_UNIX98_PTYS=y 812CONFIG_UNIX98_PTYS=y
770# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 813# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
771CONFIG_LEGACY_PTYS=y 814CONFIG_LEGACY_PTYS=y
@@ -825,11 +868,6 @@ CONFIG_I2C_MPC=y
825# CONFIG_I2C_TINY_USB is not set 868# CONFIG_I2C_TINY_USB is not set
826 869
827# 870#
828# Graphics adapter I2C/DDC channel drivers
829#
830# CONFIG_I2C_VOODOO3 is not set
831
832#
833# Other I2C/SMBus bus drivers 871# Other I2C/SMBus bus drivers
834# 872#
835# CONFIG_I2C_PCA_PLATFORM is not set 873# CONFIG_I2C_PCA_PLATFORM is not set
@@ -838,7 +876,6 @@ CONFIG_I2C_MPC=y
838# 876#
839# Miscellaneous I2C Chip support 877# Miscellaneous I2C Chip support
840# 878#
841# CONFIG_DS1682 is not set
842# CONFIG_SENSORS_TSL2550 is not set 879# CONFIG_SENSORS_TSL2550 is not set
843# CONFIG_I2C_DEBUG_CORE is not set 880# CONFIG_I2C_DEBUG_CORE is not set
844# CONFIG_I2C_DEBUG_ALGO is not set 881# CONFIG_I2C_DEBUG_ALGO is not set
@@ -852,6 +889,8 @@ CONFIG_SPI_MASTER=y
852# 889#
853CONFIG_SPI_BITBANG=y 890CONFIG_SPI_BITBANG=y
854# CONFIG_SPI_MPC8xxx is not set 891# CONFIG_SPI_MPC8xxx is not set
892# CONFIG_SPI_XILINX is not set
893# CONFIG_SPI_DESIGNWARE is not set
855 894
856# 895#
857# SPI Protocol Masters 896# SPI Protocol Masters
@@ -899,6 +938,7 @@ CONFIG_HWMON=y
899# CONFIG_SENSORS_IT87 is not set 938# CONFIG_SENSORS_IT87 is not set
900# CONFIG_SENSORS_LM63 is not set 939# CONFIG_SENSORS_LM63 is not set
901# CONFIG_SENSORS_LM70 is not set 940# CONFIG_SENSORS_LM70 is not set
941# CONFIG_SENSORS_LM73 is not set
902# CONFIG_SENSORS_LM75 is not set 942# CONFIG_SENSORS_LM75 is not set
903# CONFIG_SENSORS_LM77 is not set 943# CONFIG_SENSORS_LM77 is not set
904# CONFIG_SENSORS_LM78 is not set 944# CONFIG_SENSORS_LM78 is not set
@@ -939,6 +979,7 @@ CONFIG_HWMON=y
939# CONFIG_SENSORS_W83627HF is not set 979# CONFIG_SENSORS_W83627HF is not set
940# CONFIG_SENSORS_W83627EHF is not set 980# CONFIG_SENSORS_W83627EHF is not set
941# CONFIG_SENSORS_LIS3_SPI is not set 981# CONFIG_SENSORS_LIS3_SPI is not set
982# CONFIG_SENSORS_LIS3_I2C is not set
942# CONFIG_THERMAL is not set 983# CONFIG_THERMAL is not set
943CONFIG_WATCHDOG=y 984CONFIG_WATCHDOG=y
944# CONFIG_WATCHDOG_NOWAYOUT is not set 985# CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -976,6 +1017,7 @@ CONFIG_SSB_POSSIBLE=y
976# CONFIG_TWL4030_CORE is not set 1017# CONFIG_TWL4030_CORE is not set
977# CONFIG_MFD_TMIO is not set 1018# CONFIG_MFD_TMIO is not set
978# CONFIG_PMIC_DA903X is not set 1019# CONFIG_PMIC_DA903X is not set
1020# CONFIG_PMIC_ADP5520 is not set
979# CONFIG_MFD_WM8400 is not set 1021# CONFIG_MFD_WM8400 is not set
980# CONFIG_MFD_WM831X is not set 1022# CONFIG_MFD_WM831X is not set
981# CONFIG_MFD_WM8350_I2C is not set 1023# CONFIG_MFD_WM8350_I2C is not set
@@ -983,6 +1025,8 @@ CONFIG_SSB_POSSIBLE=y
983# CONFIG_MFD_MC13783 is not set 1025# CONFIG_MFD_MC13783 is not set
984# CONFIG_AB3100_CORE is not set 1026# CONFIG_AB3100_CORE is not set
985# CONFIG_EZX_PCAP is not set 1027# CONFIG_EZX_PCAP is not set
1028# CONFIG_MFD_88PM8607 is not set
1029# CONFIG_AB4500_CORE is not set
986# CONFIG_REGULATOR is not set 1030# CONFIG_REGULATOR is not set
987# CONFIG_MEDIA_SUPPORT is not set 1031# CONFIG_MEDIA_SUPPORT is not set
988 1032
@@ -1050,6 +1094,7 @@ CONFIG_USB_MON=y
1050CONFIG_USB_EHCI_HCD=y 1094CONFIG_USB_EHCI_HCD=y
1051# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1095# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1052# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1096# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1097# CONFIG_XPS_USB_HCD_XILINX is not set
1053# CONFIG_USB_EHCI_FSL is not set 1098# CONFIG_USB_EHCI_FSL is not set
1054CONFIG_USB_EHCI_HCD_PPC_OF=y 1099CONFIG_USB_EHCI_HCD_PPC_OF=y
1055# CONFIG_USB_OXU210HP_HCD is not set 1100# CONFIG_USB_OXU210HP_HCD is not set
@@ -1387,7 +1432,7 @@ CONFIG_FRAME_WARN=1024
1387# CONFIG_DEBUG_KERNEL is not set 1432# CONFIG_DEBUG_KERNEL is not set
1388# CONFIG_SLUB_DEBUG_ON is not set 1433# CONFIG_SLUB_DEBUG_ON is not set
1389# CONFIG_SLUB_STATS is not set 1434# CONFIG_SLUB_STATS is not set
1390# CONFIG_DEBUG_BUGVERBOSE is not set 1435CONFIG_DEBUG_BUGVERBOSE=y
1391# CONFIG_DEBUG_MEMORY_INIT is not set 1436# CONFIG_DEBUG_MEMORY_INIT is not set
1392# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1437# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1393# CONFIG_LATENCYTOP is not set 1438# CONFIG_LATENCYTOP is not set
@@ -1414,7 +1459,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1414# CONFIG_KEYS is not set 1459# CONFIG_KEYS is not set
1415# CONFIG_SECURITY is not set 1460# CONFIG_SECURITY is not set
1416# CONFIG_SECURITYFS is not set 1461# CONFIG_SECURITYFS is not set
1417# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1462# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1463# CONFIG_DEFAULT_SECURITY_SMACK is not set
1464# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1465CONFIG_DEFAULT_SECURITY_DAC=y
1466CONFIG_DEFAULT_SECURITY=""
1418CONFIG_CRYPTO=y 1467CONFIG_CRYPTO=y
1419 1468
1420# 1469#
diff --git a/arch/powerpc/configs/83xx/mpc834x_itx_defconfig b/arch/powerpc/configs/83xx/mpc834x_itx_defconfig
index f67317e1934c..ff45f4904488 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:25 2009 4# Wed Jan 6 09:24:19 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -37,6 +37,7 @@ CONFIG_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 38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
40CONFIG_NR_IRQS=512
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y 43CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y
59CONFIG_GENERIC_BUG=y 60CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y 61CONFIG_DTC=y
61CONFIG_DEFAULT_UIMAGE=y 62CONFIG_DEFAULT_UIMAGE=y
63CONFIG_ARCH_HIBERNATION_POSSIBLE=y
62CONFIG_ARCH_SUSPEND_POSSIBLE=y 64CONFIG_ARCH_SUSPEND_POSSIBLE=y
63# CONFIG_PPC_DCR_NATIVE is not set 65# CONFIG_PPC_DCR_NATIVE is not set
64# CONFIG_PPC_DCR_MMIO is not set 66# CONFIG_PPC_DCR_MMIO is not set
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y
87# 89#
88CONFIG_TREE_RCU=y 90CONFIG_TREE_RCU=y
89# CONFIG_TREE_PREEMPT_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
92# CONFIG_TINY_RCU is not set
90# CONFIG_RCU_TRACE is not set 93# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32 94CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set 95# CONFIG_RCU_FANOUT_EXACT is not set
@@ -173,14 +176,41 @@ CONFIG_LBDAF=y
173# IO Schedulers 176# IO Schedulers
174# 177#
175CONFIG_IOSCHED_NOOP=y 178CONFIG_IOSCHED_NOOP=y
176CONFIG_IOSCHED_AS=y
177CONFIG_IOSCHED_DEADLINE=y 179CONFIG_IOSCHED_DEADLINE=y
178CONFIG_IOSCHED_CFQ=y 180CONFIG_IOSCHED_CFQ=y
179CONFIG_DEFAULT_AS=y
180# CONFIG_DEFAULT_DEADLINE is not set 181# CONFIG_DEFAULT_DEADLINE is not set
181# CONFIG_DEFAULT_CFQ is not set 182CONFIG_DEFAULT_CFQ=y
182# CONFIG_DEFAULT_NOOP is not set 183# CONFIG_DEFAULT_NOOP is not set
183CONFIG_DEFAULT_IOSCHED="anticipatory" 184CONFIG_DEFAULT_IOSCHED="cfq"
185# CONFIG_INLINE_SPIN_TRYLOCK is not set
186# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
187# CONFIG_INLINE_SPIN_LOCK is not set
188# CONFIG_INLINE_SPIN_LOCK_BH is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
191CONFIG_INLINE_SPIN_UNLOCK=y
192# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
193CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
194# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
195# CONFIG_INLINE_READ_TRYLOCK is not set
196# CONFIG_INLINE_READ_LOCK is not set
197# CONFIG_INLINE_READ_LOCK_BH is not set
198# CONFIG_INLINE_READ_LOCK_IRQ is not set
199# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
200CONFIG_INLINE_READ_UNLOCK=y
201# CONFIG_INLINE_READ_UNLOCK_BH is not set
202CONFIG_INLINE_READ_UNLOCK_IRQ=y
203# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_WRITE_TRYLOCK is not set
205# CONFIG_INLINE_WRITE_LOCK is not set
206# CONFIG_INLINE_WRITE_LOCK_BH is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
209CONFIG_INLINE_WRITE_UNLOCK=y
210# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
211CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
212# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
213# CONFIG_MUTEX_SPIN_ON_OWNER is not set
184# CONFIG_FREEZER is not set 214# CONFIG_FREEZER is not set
185 215
186# 216#
@@ -259,6 +289,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 289CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
260# CONFIG_KEXEC is not set 290# CONFIG_KEXEC is not set
261# CONFIG_CRASH_DUMP is not set 291# CONFIG_CRASH_DUMP is not set
292CONFIG_SPARSE_IRQ=y
262CONFIG_MAX_ACTIVE_REGIONS=32 293CONFIG_MAX_ACTIVE_REGIONS=32
263CONFIG_ARCH_FLATMEM_ENABLE=y 294CONFIG_ARCH_FLATMEM_ENABLE=y
264CONFIG_ARCH_POPULATES_NODE_MAP=y 295CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -275,8 +306,6 @@ CONFIG_MIGRATION=y
275CONFIG_ZONE_DMA_FLAG=1 306CONFIG_ZONE_DMA_FLAG=1
276CONFIG_BOUNCE=y 307CONFIG_BOUNCE=y
277CONFIG_VIRT_TO_BUS=y 308CONFIG_VIRT_TO_BUS=y
278CONFIG_HAVE_MLOCK=y
279CONFIG_HAVE_MLOCKED_PAGE_BIT=y
280# CONFIG_KSM is not set 309# CONFIG_KSM is not set
281CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 310CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
282CONFIG_PPC_4K_PAGES=y 311CONFIG_PPC_4K_PAGES=y
@@ -403,9 +432,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
403# CONFIG_AF_RXRPC is not set 432# CONFIG_AF_RXRPC is not set
404CONFIG_WIRELESS=y 433CONFIG_WIRELESS=y
405# CONFIG_CFG80211 is not set 434# CONFIG_CFG80211 is not set
406CONFIG_CFG80211_DEFAULT_PS_VALUE=0
407CONFIG_WIRELESS_OLD_REGULATORY=y
408# CONFIG_WIRELESS_EXT is not set
409# CONFIG_LIB80211 is not set 435# CONFIG_LIB80211 is not set
410 436
411# 437#
@@ -528,6 +554,10 @@ CONFIG_BLK_DEV=y
528# CONFIG_BLK_DEV_COW_COMMON is not set 554# CONFIG_BLK_DEV_COW_COMMON is not set
529CONFIG_BLK_DEV_LOOP=y 555CONFIG_BLK_DEV_LOOP=y
530# CONFIG_BLK_DEV_CRYPTOLOOP is not set 556# CONFIG_BLK_DEV_CRYPTOLOOP is not set
557
558#
559# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
560#
531# CONFIG_BLK_DEV_NBD is not set 561# CONFIG_BLK_DEV_NBD is not set
532# CONFIG_BLK_DEV_SX8 is not set 562# CONFIG_BLK_DEV_SX8 is not set
533# CONFIG_BLK_DEV_UB is not set 563# CONFIG_BLK_DEV_UB is not set
@@ -539,6 +569,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
539# CONFIG_ATA_OVER_ETH is not set 569# CONFIG_ATA_OVER_ETH is not set
540# CONFIG_BLK_DEV_HD is not set 570# CONFIG_BLK_DEV_HD is not set
541CONFIG_MISC_DEVICES=y 571CONFIG_MISC_DEVICES=y
572# CONFIG_AD525X_DPOT is not set
542# CONFIG_PHANTOM is not set 573# CONFIG_PHANTOM is not set
543# CONFIG_SGI_IOC4 is not set 574# CONFIG_SGI_IOC4 is not set
544# CONFIG_TIFM_CORE is not set 575# CONFIG_TIFM_CORE is not set
@@ -546,6 +577,8 @@ CONFIG_MISC_DEVICES=y
546# CONFIG_ENCLOSURE_SERVICES is not set 577# CONFIG_ENCLOSURE_SERVICES is not set
547# CONFIG_HP_ILO is not set 578# CONFIG_HP_ILO is not set
548# CONFIG_ISL29003 is not set 579# CONFIG_ISL29003 is not set
580# CONFIG_DS1682 is not set
581# CONFIG_TI_DAC7512 is not set
549# CONFIG_C2PORT is not set 582# CONFIG_C2PORT is not set
550 583
551# 584#
@@ -647,7 +680,9 @@ CONFIG_SCSI_LOWLEVEL=y
647# CONFIG_SCSI_BNX2_ISCSI is not set 680# CONFIG_SCSI_BNX2_ISCSI is not set
648# CONFIG_BE2ISCSI is not set 681# CONFIG_BE2ISCSI is not set
649# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 682# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
683# CONFIG_SCSI_HPSA is not set
650# CONFIG_SCSI_3W_9XXX is not set 684# CONFIG_SCSI_3W_9XXX is not set
685# CONFIG_SCSI_3W_SAS is not set
651# CONFIG_SCSI_ACARD is not set 686# CONFIG_SCSI_ACARD is not set
652# CONFIG_SCSI_AACRAID is not set 687# CONFIG_SCSI_AACRAID is not set
653# CONFIG_SCSI_AIC7XXX is not set 688# CONFIG_SCSI_AIC7XXX is not set
@@ -686,6 +721,7 @@ CONFIG_SCSI_LOWLEVEL=y
686# CONFIG_SCSI_NSP32 is not set 721# CONFIG_SCSI_NSP32 is not set
687# CONFIG_SCSI_DEBUG is not set 722# CONFIG_SCSI_DEBUG is not set
688# CONFIG_SCSI_PMCRAID is not set 723# CONFIG_SCSI_PMCRAID is not set
724# CONFIG_SCSI_PM8001 is not set
689# CONFIG_SCSI_SRP is not set 725# CONFIG_SCSI_SRP is not set
690# CONFIG_SCSI_BFA_FC is not set 726# CONFIG_SCSI_BFA_FC is not set
691# CONFIG_SCSI_DH is not set 727# CONFIG_SCSI_DH is not set
@@ -741,15 +777,16 @@ CONFIG_SATA_SIL=y
741# CONFIG_PATA_NS87415 is not set 777# CONFIG_PATA_NS87415 is not set
742# CONFIG_PATA_OPTI is not set 778# CONFIG_PATA_OPTI is not set
743# CONFIG_PATA_OPTIDMA is not set 779# CONFIG_PATA_OPTIDMA is not set
780# CONFIG_PATA_PDC2027X is not set
744# CONFIG_PATA_PDC_OLD is not set 781# CONFIG_PATA_PDC_OLD is not set
745# CONFIG_PATA_RADISYS is not set 782# CONFIG_PATA_RADISYS is not set
746# CONFIG_PATA_RDC is not set 783# CONFIG_PATA_RDC is not set
747# CONFIG_PATA_RZ1000 is not set 784# CONFIG_PATA_RZ1000 is not set
748# CONFIG_PATA_SC1200 is not set 785# CONFIG_PATA_SC1200 is not set
749# CONFIG_PATA_SERVERWORKS is not set 786# CONFIG_PATA_SERVERWORKS is not set
750# CONFIG_PATA_PDC2027X is not set
751# CONFIG_PATA_SIL680 is not set 787# CONFIG_PATA_SIL680 is not set
752# CONFIG_PATA_SIS is not set 788# CONFIG_PATA_SIS is not set
789# CONFIG_PATA_TOSHIBA is not set
753# CONFIG_PATA_VIA is not set 790# CONFIG_PATA_VIA is not set
754# CONFIG_PATA_WINBOND is not set 791# CONFIG_PATA_WINBOND is not set
755CONFIG_PATA_PLATFORM=y 792CONFIG_PATA_PLATFORM=y
@@ -777,7 +814,7 @@ CONFIG_MD_RAID1=y
777# 814#
778 815
779# 816#
780# See the help texts for more information. 817# The newer stack is recommended.
781# 818#
782# CONFIG_FIREWIRE is not set 819# CONFIG_FIREWIRE is not set
783# CONFIG_IEEE1394 is not set 820# CONFIG_IEEE1394 is not set
@@ -860,8 +897,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y
860# CONFIG_BE2NET is not set 897# CONFIG_BE2NET is not set
861# CONFIG_TR is not set 898# CONFIG_TR is not set
862CONFIG_WLAN=y 899CONFIG_WLAN=y
863# CONFIG_WLAN_PRE80211 is not set 900# CONFIG_AIRO is not set
864# CONFIG_WLAN_80211 is not set 901# CONFIG_ATMEL is not set
902# CONFIG_PRISM54 is not set
903# CONFIG_USB_ZD1201 is not set
904# CONFIG_HOSTAP is not set
865 905
866# 906#
867# Enable WiMAX (Networking options) to see the WiMAX drivers 907# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -884,6 +924,7 @@ CONFIG_WLAN=y
884# CONFIG_NETCONSOLE is not set 924# CONFIG_NETCONSOLE is not set
885# CONFIG_NETPOLL is not set 925# CONFIG_NETPOLL is not set
886# CONFIG_NET_POLL_CONTROLLER is not set 926# CONFIG_NET_POLL_CONTROLLER is not set
927# CONFIG_VMXNET3 is not set
887# CONFIG_ISDN is not set 928# CONFIG_ISDN is not set
888# CONFIG_PHONE is not set 929# CONFIG_PHONE is not set
889 930
@@ -925,6 +966,7 @@ CONFIG_SERIAL_CORE=y
925CONFIG_SERIAL_CORE_CONSOLE=y 966CONFIG_SERIAL_CORE_CONSOLE=y
926# CONFIG_SERIAL_JSM is not set 967# CONFIG_SERIAL_JSM is not set
927# CONFIG_SERIAL_OF_PLATFORM is not set 968# CONFIG_SERIAL_OF_PLATFORM is not set
969# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
928CONFIG_UNIX98_PTYS=y 970CONFIG_UNIX98_PTYS=y
929# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 971# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
930CONFIG_LEGACY_PTYS=y 972CONFIG_LEGACY_PTYS=y
@@ -982,11 +1024,6 @@ CONFIG_I2C_MPC=y
982# CONFIG_I2C_TINY_USB is not set 1024# CONFIG_I2C_TINY_USB is not set
983 1025
984# 1026#
985# Graphics adapter I2C/DDC channel drivers
986#
987# CONFIG_I2C_VOODOO3 is not set
988
989#
990# Other I2C/SMBus bus drivers 1027# Other I2C/SMBus bus drivers
991# 1028#
992# CONFIG_I2C_PCA_PLATFORM is not set 1029# CONFIG_I2C_PCA_PLATFORM is not set
@@ -995,7 +1032,6 @@ CONFIG_I2C_MPC=y
995# 1032#
996# Miscellaneous I2C Chip support 1033# Miscellaneous I2C Chip support
997# 1034#
998# CONFIG_DS1682 is not set
999# CONFIG_SENSORS_TSL2550 is not set 1035# CONFIG_SENSORS_TSL2550 is not set
1000# CONFIG_I2C_DEBUG_CORE is not set 1036# CONFIG_I2C_DEBUG_CORE is not set
1001# CONFIG_I2C_DEBUG_ALGO is not set 1037# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1009,6 +1045,8 @@ CONFIG_SPI_MASTER=y
1009# 1045#
1010CONFIG_SPI_BITBANG=y 1046CONFIG_SPI_BITBANG=y
1011# CONFIG_SPI_MPC8xxx is not set 1047# CONFIG_SPI_MPC8xxx is not set
1048# CONFIG_SPI_XILINX is not set
1049# CONFIG_SPI_DESIGNWARE is not set
1012 1050
1013# 1051#
1014# SPI Protocol Masters 1052# SPI Protocol Masters
@@ -1062,6 +1100,7 @@ CONFIG_SSB_POSSIBLE=y
1062# CONFIG_TWL4030_CORE is not set 1100# CONFIG_TWL4030_CORE is not set
1063# CONFIG_MFD_TMIO is not set 1101# CONFIG_MFD_TMIO is not set
1064# CONFIG_PMIC_DA903X is not set 1102# CONFIG_PMIC_DA903X is not set
1103# CONFIG_PMIC_ADP5520 is not set
1065# CONFIG_MFD_WM8400 is not set 1104# CONFIG_MFD_WM8400 is not set
1066# CONFIG_MFD_WM831X is not set 1105# CONFIG_MFD_WM831X is not set
1067# CONFIG_MFD_WM8350_I2C is not set 1106# CONFIG_MFD_WM8350_I2C is not set
@@ -1069,6 +1108,8 @@ CONFIG_SSB_POSSIBLE=y
1069# CONFIG_MFD_MC13783 is not set 1108# CONFIG_MFD_MC13783 is not set
1070# CONFIG_AB3100_CORE is not set 1109# CONFIG_AB3100_CORE is not set
1071# CONFIG_EZX_PCAP is not set 1110# CONFIG_EZX_PCAP is not set
1111# CONFIG_MFD_88PM8607 is not set
1112# CONFIG_AB4500_CORE is not set
1072# CONFIG_REGULATOR is not set 1113# CONFIG_REGULATOR is not set
1073# CONFIG_MEDIA_SUPPORT is not set 1114# CONFIG_MEDIA_SUPPORT is not set
1074 1115
@@ -1117,6 +1158,7 @@ CONFIG_USB_MON=y
1117CONFIG_USB_EHCI_HCD=y 1158CONFIG_USB_EHCI_HCD=y
1118CONFIG_USB_EHCI_ROOT_HUB_TT=y 1159CONFIG_USB_EHCI_ROOT_HUB_TT=y
1119# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1160# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1161# CONFIG_XPS_USB_HCD_XILINX is not set
1120CONFIG_USB_EHCI_FSL=y 1162CONFIG_USB_EHCI_FSL=y
1121CONFIG_USB_EHCI_HCD_PPC_OF=y 1163CONFIG_USB_EHCI_HCD_PPC_OF=y
1122# CONFIG_USB_OXU210HP_HCD is not set 1164# CONFIG_USB_OXU210HP_HCD is not set
@@ -1235,6 +1277,7 @@ CONFIG_RTC_DRV_DS1307=y
1235# CONFIG_RTC_DRV_PCF8563 is not set 1277# CONFIG_RTC_DRV_PCF8563 is not set
1236# CONFIG_RTC_DRV_PCF8583 is not set 1278# CONFIG_RTC_DRV_PCF8583 is not set
1237# CONFIG_RTC_DRV_M41T80 is not set 1279# CONFIG_RTC_DRV_M41T80 is not set
1280# CONFIG_RTC_DRV_BQ32K is not set
1238# CONFIG_RTC_DRV_S35390A is not set 1281# CONFIG_RTC_DRV_S35390A is not set
1239# CONFIG_RTC_DRV_FM3130 is not set 1282# CONFIG_RTC_DRV_FM3130 is not set
1240# CONFIG_RTC_DRV_RX8581 is not set 1283# CONFIG_RTC_DRV_RX8581 is not set
@@ -1264,7 +1307,9 @@ CONFIG_RTC_DRV_DS1307=y
1264# CONFIG_RTC_DRV_M48T86 is not set 1307# CONFIG_RTC_DRV_M48T86 is not set
1265# CONFIG_RTC_DRV_M48T35 is not set 1308# CONFIG_RTC_DRV_M48T35 is not set
1266# CONFIG_RTC_DRV_M48T59 is not set 1309# CONFIG_RTC_DRV_M48T59 is not set
1310# CONFIG_RTC_DRV_MSM6242 is not set
1267# CONFIG_RTC_DRV_BQ4802 is not set 1311# CONFIG_RTC_DRV_BQ4802 is not set
1312# CONFIG_RTC_DRV_RP5C01 is not set
1268# CONFIG_RTC_DRV_V3020 is not set 1313# CONFIG_RTC_DRV_V3020 is not set
1269 1314
1270# 1315#
@@ -1485,7 +1530,7 @@ CONFIG_FRAME_WARN=1024
1485# CONFIG_DEBUG_KERNEL is not set 1530# CONFIG_DEBUG_KERNEL is not set
1486# CONFIG_SLUB_DEBUG_ON is not set 1531# CONFIG_SLUB_DEBUG_ON is not set
1487# CONFIG_SLUB_STATS is not set 1532# CONFIG_SLUB_STATS is not set
1488# CONFIG_DEBUG_BUGVERBOSE is not set 1533CONFIG_DEBUG_BUGVERBOSE=y
1489# CONFIG_DEBUG_MEMORY_INIT is not set 1534# CONFIG_DEBUG_MEMORY_INIT is not set
1490# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1535# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1491# CONFIG_LATENCYTOP is not set 1536# CONFIG_LATENCYTOP is not set
@@ -1512,7 +1557,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1512# CONFIG_KEYS is not set 1557# CONFIG_KEYS is not set
1513# CONFIG_SECURITY is not set 1558# CONFIG_SECURITY is not set
1514# CONFIG_SECURITYFS is not set 1559# CONFIG_SECURITYFS is not set
1515# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1560# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1561# CONFIG_DEFAULT_SECURITY_SMACK is not set
1562# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1563CONFIG_DEFAULT_SECURITY_DAC=y
1564CONFIG_DEFAULT_SECURITY=""
1516CONFIG_CRYPTO=y 1565CONFIG_CRYPTO=y
1517 1566
1518# 1567#
diff --git a/arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig b/arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig
index a668110c10f6..28d8ff3e8fca 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:26 2009 4# Wed Jan 6 09:24:20 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -37,6 +37,7 @@ CONFIG_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 38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
40CONFIG_NR_IRQS=512
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y 43CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y
59CONFIG_GENERIC_BUG=y 60CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y 61CONFIG_DTC=y
61CONFIG_DEFAULT_UIMAGE=y 62CONFIG_DEFAULT_UIMAGE=y
63CONFIG_ARCH_HIBERNATION_POSSIBLE=y
62CONFIG_ARCH_SUSPEND_POSSIBLE=y 64CONFIG_ARCH_SUSPEND_POSSIBLE=y
63# CONFIG_PPC_DCR_NATIVE is not set 65# CONFIG_PPC_DCR_NATIVE is not set
64# CONFIG_PPC_DCR_MMIO is not set 66# CONFIG_PPC_DCR_MMIO is not set
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y
87# 89#
88CONFIG_TREE_RCU=y 90CONFIG_TREE_RCU=y
89# CONFIG_TREE_PREEMPT_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
92# CONFIG_TINY_RCU is not set
90# CONFIG_RCU_TRACE is not set 93# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32 94CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set 95# CONFIG_RCU_FANOUT_EXACT is not set
@@ -173,14 +176,41 @@ CONFIG_LBDAF=y
173# IO Schedulers 176# IO Schedulers
174# 177#
175CONFIG_IOSCHED_NOOP=y 178CONFIG_IOSCHED_NOOP=y
176CONFIG_IOSCHED_AS=y
177CONFIG_IOSCHED_DEADLINE=y 179CONFIG_IOSCHED_DEADLINE=y
178CONFIG_IOSCHED_CFQ=y 180CONFIG_IOSCHED_CFQ=y
179CONFIG_DEFAULT_AS=y
180# CONFIG_DEFAULT_DEADLINE is not set 181# CONFIG_DEFAULT_DEADLINE is not set
181# CONFIG_DEFAULT_CFQ is not set 182CONFIG_DEFAULT_CFQ=y
182# CONFIG_DEFAULT_NOOP is not set 183# CONFIG_DEFAULT_NOOP is not set
183CONFIG_DEFAULT_IOSCHED="anticipatory" 184CONFIG_DEFAULT_IOSCHED="cfq"
185# CONFIG_INLINE_SPIN_TRYLOCK is not set
186# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
187# CONFIG_INLINE_SPIN_LOCK is not set
188# CONFIG_INLINE_SPIN_LOCK_BH is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
191CONFIG_INLINE_SPIN_UNLOCK=y
192# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
193CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
194# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
195# CONFIG_INLINE_READ_TRYLOCK is not set
196# CONFIG_INLINE_READ_LOCK is not set
197# CONFIG_INLINE_READ_LOCK_BH is not set
198# CONFIG_INLINE_READ_LOCK_IRQ is not set
199# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
200CONFIG_INLINE_READ_UNLOCK=y
201# CONFIG_INLINE_READ_UNLOCK_BH is not set
202CONFIG_INLINE_READ_UNLOCK_IRQ=y
203# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_WRITE_TRYLOCK is not set
205# CONFIG_INLINE_WRITE_LOCK is not set
206# CONFIG_INLINE_WRITE_LOCK_BH is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
209CONFIG_INLINE_WRITE_UNLOCK=y
210# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
211CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
212# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
213# CONFIG_MUTEX_SPIN_ON_OWNER is not set
184# CONFIG_FREEZER is not set 214# CONFIG_FREEZER is not set
185 215
186# 216#
@@ -259,6 +289,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 289CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
260# CONFIG_KEXEC is not set 290# CONFIG_KEXEC is not set
261# CONFIG_CRASH_DUMP is not set 291# CONFIG_CRASH_DUMP is not set
292CONFIG_SPARSE_IRQ=y
262CONFIG_MAX_ACTIVE_REGIONS=32 293CONFIG_MAX_ACTIVE_REGIONS=32
263CONFIG_ARCH_FLATMEM_ENABLE=y 294CONFIG_ARCH_FLATMEM_ENABLE=y
264CONFIG_ARCH_POPULATES_NODE_MAP=y 295CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -275,8 +306,6 @@ CONFIG_MIGRATION=y
275CONFIG_ZONE_DMA_FLAG=1 306CONFIG_ZONE_DMA_FLAG=1
276CONFIG_BOUNCE=y 307CONFIG_BOUNCE=y
277CONFIG_VIRT_TO_BUS=y 308CONFIG_VIRT_TO_BUS=y
278CONFIG_HAVE_MLOCK=y
279CONFIG_HAVE_MLOCKED_PAGE_BIT=y
280# CONFIG_KSM is not set 309# CONFIG_KSM is not set
281CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 310CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
282CONFIG_PPC_4K_PAGES=y 311CONFIG_PPC_4K_PAGES=y
@@ -403,9 +432,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
403# CONFIG_AF_RXRPC is not set 432# CONFIG_AF_RXRPC is not set
404CONFIG_WIRELESS=y 433CONFIG_WIRELESS=y
405# CONFIG_CFG80211 is not set 434# CONFIG_CFG80211 is not set
406CONFIG_CFG80211_DEFAULT_PS_VALUE=0
407CONFIG_WIRELESS_OLD_REGULATORY=y
408# CONFIG_WIRELESS_EXT is not set
409# CONFIG_LIB80211 is not set 435# CONFIG_LIB80211 is not set
410 436
411# 437#
@@ -528,6 +554,10 @@ CONFIG_BLK_DEV=y
528# CONFIG_BLK_DEV_COW_COMMON is not set 554# CONFIG_BLK_DEV_COW_COMMON is not set
529CONFIG_BLK_DEV_LOOP=y 555CONFIG_BLK_DEV_LOOP=y
530# CONFIG_BLK_DEV_CRYPTOLOOP is not set 556# CONFIG_BLK_DEV_CRYPTOLOOP is not set
557
558#
559# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
560#
531# CONFIG_BLK_DEV_NBD is not set 561# CONFIG_BLK_DEV_NBD is not set
532# CONFIG_BLK_DEV_SX8 is not set 562# CONFIG_BLK_DEV_SX8 is not set
533# CONFIG_BLK_DEV_UB is not set 563# CONFIG_BLK_DEV_UB is not set
@@ -539,6 +569,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
539# CONFIG_ATA_OVER_ETH is not set 569# CONFIG_ATA_OVER_ETH is not set
540# CONFIG_BLK_DEV_HD is not set 570# CONFIG_BLK_DEV_HD is not set
541CONFIG_MISC_DEVICES=y 571CONFIG_MISC_DEVICES=y
572# CONFIG_AD525X_DPOT is not set
542# CONFIG_PHANTOM is not set 573# CONFIG_PHANTOM is not set
543# CONFIG_SGI_IOC4 is not set 574# CONFIG_SGI_IOC4 is not set
544# CONFIG_TIFM_CORE is not set 575# CONFIG_TIFM_CORE is not set
@@ -546,6 +577,8 @@ CONFIG_MISC_DEVICES=y
546# CONFIG_ENCLOSURE_SERVICES is not set 577# CONFIG_ENCLOSURE_SERVICES is not set
547# CONFIG_HP_ILO is not set 578# CONFIG_HP_ILO is not set
548# CONFIG_ISL29003 is not set 579# CONFIG_ISL29003 is not set
580# CONFIG_DS1682 is not set
581# CONFIG_TI_DAC7512 is not set
549# CONFIG_C2PORT is not set 582# CONFIG_C2PORT is not set
550 583
551# 584#
@@ -599,7 +632,9 @@ CONFIG_SCSI_LOWLEVEL=y
599# CONFIG_SCSI_BNX2_ISCSI is not set 632# CONFIG_SCSI_BNX2_ISCSI is not set
600# CONFIG_BE2ISCSI is not set 633# CONFIG_BE2ISCSI is not set
601# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 634# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
635# CONFIG_SCSI_HPSA is not set
602# CONFIG_SCSI_3W_9XXX is not set 636# CONFIG_SCSI_3W_9XXX is not set
637# CONFIG_SCSI_3W_SAS is not set
603# CONFIG_SCSI_ACARD is not set 638# CONFIG_SCSI_ACARD is not set
604# CONFIG_SCSI_AACRAID is not set 639# CONFIG_SCSI_AACRAID is not set
605# CONFIG_SCSI_AIC7XXX is not set 640# CONFIG_SCSI_AIC7XXX is not set
@@ -637,6 +672,7 @@ CONFIG_SCSI_LOWLEVEL=y
637# CONFIG_SCSI_NSP32 is not set 672# CONFIG_SCSI_NSP32 is not set
638# CONFIG_SCSI_DEBUG is not set 673# CONFIG_SCSI_DEBUG is not set
639# CONFIG_SCSI_PMCRAID is not set 674# CONFIG_SCSI_PMCRAID is not set
675# CONFIG_SCSI_PM8001 is not set
640# CONFIG_SCSI_SRP is not set 676# CONFIG_SCSI_SRP is not set
641# CONFIG_SCSI_BFA_FC is not set 677# CONFIG_SCSI_BFA_FC is not set
642# CONFIG_SCSI_DH is not set 678# CONFIG_SCSI_DH is not set
@@ -654,7 +690,7 @@ CONFIG_SCSI_LOWLEVEL=y
654# 690#
655 691
656# 692#
657# See the help texts for more information. 693# The newer stack is recommended.
658# 694#
659# CONFIG_FIREWIRE is not set 695# CONFIG_FIREWIRE is not set
660# CONFIG_IEEE1394 is not set 696# CONFIG_IEEE1394 is not set
@@ -737,8 +773,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y
737# CONFIG_BE2NET is not set 773# CONFIG_BE2NET is not set
738# CONFIG_TR is not set 774# CONFIG_TR is not set
739CONFIG_WLAN=y 775CONFIG_WLAN=y
740# CONFIG_WLAN_PRE80211 is not set 776# CONFIG_AIRO is not set
741# CONFIG_WLAN_80211 is not set 777# CONFIG_ATMEL is not set
778# CONFIG_PRISM54 is not set
779# CONFIG_USB_ZD1201 is not set
780# CONFIG_HOSTAP is not set
742 781
743# 782#
744# Enable WiMAX (Networking options) to see the WiMAX drivers 783# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -761,6 +800,7 @@ CONFIG_WLAN=y
761# CONFIG_NETCONSOLE is not set 800# CONFIG_NETCONSOLE is not set
762# CONFIG_NETPOLL is not set 801# CONFIG_NETPOLL is not set
763# CONFIG_NET_POLL_CONTROLLER is not set 802# CONFIG_NET_POLL_CONTROLLER is not set
803# CONFIG_VMXNET3 is not set
764# CONFIG_ISDN is not set 804# CONFIG_ISDN is not set
765# CONFIG_PHONE is not set 805# CONFIG_PHONE is not set
766 806
@@ -802,6 +842,7 @@ CONFIG_SERIAL_CORE=y
802CONFIG_SERIAL_CORE_CONSOLE=y 842CONFIG_SERIAL_CORE_CONSOLE=y
803# CONFIG_SERIAL_JSM is not set 843# CONFIG_SERIAL_JSM is not set
804# CONFIG_SERIAL_OF_PLATFORM is not set 844# CONFIG_SERIAL_OF_PLATFORM is not set
845# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
805CONFIG_UNIX98_PTYS=y 846CONFIG_UNIX98_PTYS=y
806# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 847# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
807CONFIG_LEGACY_PTYS=y 848CONFIG_LEGACY_PTYS=y
@@ -859,11 +900,6 @@ CONFIG_I2C_MPC=y
859# CONFIG_I2C_TINY_USB is not set 900# CONFIG_I2C_TINY_USB is not set
860 901
861# 902#
862# Graphics adapter I2C/DDC channel drivers
863#
864# CONFIG_I2C_VOODOO3 is not set
865
866#
867# Other I2C/SMBus bus drivers 903# Other I2C/SMBus bus drivers
868# 904#
869# CONFIG_I2C_PCA_PLATFORM is not set 905# CONFIG_I2C_PCA_PLATFORM is not set
@@ -872,7 +908,6 @@ CONFIG_I2C_MPC=y
872# 908#
873# Miscellaneous I2C Chip support 909# Miscellaneous I2C Chip support
874# 910#
875# CONFIG_DS1682 is not set
876# CONFIG_SENSORS_TSL2550 is not set 911# CONFIG_SENSORS_TSL2550 is not set
877# CONFIG_I2C_DEBUG_CORE is not set 912# CONFIG_I2C_DEBUG_CORE is not set
878# CONFIG_I2C_DEBUG_ALGO is not set 913# CONFIG_I2C_DEBUG_ALGO is not set
@@ -886,6 +921,8 @@ CONFIG_SPI_MASTER=y
886# 921#
887CONFIG_SPI_BITBANG=y 922CONFIG_SPI_BITBANG=y
888# CONFIG_SPI_MPC8xxx is not set 923# CONFIG_SPI_MPC8xxx is not set
924# CONFIG_SPI_XILINX is not set
925# CONFIG_SPI_DESIGNWARE is not set
889 926
890# 927#
891# SPI Protocol Masters 928# SPI Protocol Masters
@@ -939,6 +976,7 @@ CONFIG_SSB_POSSIBLE=y
939# CONFIG_TWL4030_CORE is not set 976# CONFIG_TWL4030_CORE is not set
940# CONFIG_MFD_TMIO is not set 977# CONFIG_MFD_TMIO is not set
941# CONFIG_PMIC_DA903X is not set 978# CONFIG_PMIC_DA903X is not set
979# CONFIG_PMIC_ADP5520 is not set
942# CONFIG_MFD_WM8400 is not set 980# CONFIG_MFD_WM8400 is not set
943# CONFIG_MFD_WM831X is not set 981# CONFIG_MFD_WM831X is not set
944# CONFIG_MFD_WM8350_I2C is not set 982# CONFIG_MFD_WM8350_I2C is not set
@@ -946,6 +984,8 @@ CONFIG_SSB_POSSIBLE=y
946# CONFIG_MFD_MC13783 is not set 984# CONFIG_MFD_MC13783 is not set
947# CONFIG_AB3100_CORE is not set 985# CONFIG_AB3100_CORE is not set
948# CONFIG_EZX_PCAP is not set 986# CONFIG_EZX_PCAP is not set
987# CONFIG_MFD_88PM8607 is not set
988# CONFIG_AB4500_CORE is not set
949# CONFIG_REGULATOR is not set 989# CONFIG_REGULATOR is not set
950# CONFIG_MEDIA_SUPPORT is not set 990# CONFIG_MEDIA_SUPPORT is not set
951 991
@@ -994,6 +1034,7 @@ CONFIG_USB_MON=y
994CONFIG_USB_EHCI_HCD=y 1034CONFIG_USB_EHCI_HCD=y
995CONFIG_USB_EHCI_ROOT_HUB_TT=y 1035CONFIG_USB_EHCI_ROOT_HUB_TT=y
996# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1036# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1037# CONFIG_XPS_USB_HCD_XILINX is not set
997CONFIG_USB_EHCI_FSL=y 1038CONFIG_USB_EHCI_FSL=y
998CONFIG_USB_EHCI_HCD_PPC_OF=y 1039CONFIG_USB_EHCI_HCD_PPC_OF=y
999# CONFIG_USB_OXU210HP_HCD is not set 1040# CONFIG_USB_OXU210HP_HCD is not set
@@ -1112,6 +1153,7 @@ CONFIG_RTC_DRV_DS1307=y
1112# CONFIG_RTC_DRV_PCF8563 is not set 1153# CONFIG_RTC_DRV_PCF8563 is not set
1113# CONFIG_RTC_DRV_PCF8583 is not set 1154# CONFIG_RTC_DRV_PCF8583 is not set
1114# CONFIG_RTC_DRV_M41T80 is not set 1155# CONFIG_RTC_DRV_M41T80 is not set
1156# CONFIG_RTC_DRV_BQ32K is not set
1115# CONFIG_RTC_DRV_S35390A is not set 1157# CONFIG_RTC_DRV_S35390A is not set
1116# CONFIG_RTC_DRV_FM3130 is not set 1158# CONFIG_RTC_DRV_FM3130 is not set
1117# CONFIG_RTC_DRV_RX8581 is not set 1159# CONFIG_RTC_DRV_RX8581 is not set
@@ -1141,7 +1183,9 @@ CONFIG_RTC_DRV_DS1307=y
1141# CONFIG_RTC_DRV_M48T86 is not set 1183# CONFIG_RTC_DRV_M48T86 is not set
1142# CONFIG_RTC_DRV_M48T35 is not set 1184# CONFIG_RTC_DRV_M48T35 is not set
1143# CONFIG_RTC_DRV_M48T59 is not set 1185# CONFIG_RTC_DRV_M48T59 is not set
1186# CONFIG_RTC_DRV_MSM6242 is not set
1144# CONFIG_RTC_DRV_BQ4802 is not set 1187# CONFIG_RTC_DRV_BQ4802 is not set
1188# CONFIG_RTC_DRV_RP5C01 is not set
1145# CONFIG_RTC_DRV_V3020 is not set 1189# CONFIG_RTC_DRV_V3020 is not set
1146 1190
1147# 1191#
@@ -1362,7 +1406,7 @@ CONFIG_FRAME_WARN=1024
1362# CONFIG_DEBUG_KERNEL is not set 1406# CONFIG_DEBUG_KERNEL is not set
1363# CONFIG_SLUB_DEBUG_ON is not set 1407# CONFIG_SLUB_DEBUG_ON is not set
1364# CONFIG_SLUB_STATS is not set 1408# CONFIG_SLUB_STATS is not set
1365# CONFIG_DEBUG_BUGVERBOSE is not set 1409CONFIG_DEBUG_BUGVERBOSE=y
1366# CONFIG_DEBUG_MEMORY_INIT is not set 1410# CONFIG_DEBUG_MEMORY_INIT is not set
1367# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1411# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1368# CONFIG_LATENCYTOP is not set 1412# CONFIG_LATENCYTOP is not set
@@ -1389,7 +1433,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1389# CONFIG_KEYS is not set 1433# CONFIG_KEYS is not set
1390# CONFIG_SECURITY is not set 1434# CONFIG_SECURITY is not set
1391# CONFIG_SECURITYFS is not set 1435# CONFIG_SECURITYFS is not set
1392# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1436# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1437# CONFIG_DEFAULT_SECURITY_SMACK is not set
1438# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1439CONFIG_DEFAULT_SECURITY_DAC=y
1440CONFIG_DEFAULT_SECURITY=""
1393CONFIG_CRYPTO=y 1441CONFIG_CRYPTO=y
1394 1442
1395# 1443#
diff --git a/arch/powerpc/configs/83xx/mpc834x_mds_defconfig b/arch/powerpc/configs/83xx/mpc834x_mds_defconfig
index c4e92ba5c38b..6252ab5bf181 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:27 2009 4# Wed Jan 6 09:24:21 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -37,6 +37,7 @@ CONFIG_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 38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
40CONFIG_NR_IRQS=512
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y 43CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y
59CONFIG_GENERIC_BUG=y 60CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y 61CONFIG_DTC=y
61CONFIG_DEFAULT_UIMAGE=y 62CONFIG_DEFAULT_UIMAGE=y
63CONFIG_ARCH_HIBERNATION_POSSIBLE=y
62CONFIG_ARCH_SUSPEND_POSSIBLE=y 64CONFIG_ARCH_SUSPEND_POSSIBLE=y
63# CONFIG_PPC_DCR_NATIVE is not set 65# CONFIG_PPC_DCR_NATIVE is not set
64# CONFIG_PPC_DCR_MMIO is not set 66# CONFIG_PPC_DCR_MMIO is not set
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y
87# 89#
88CONFIG_TREE_RCU=y 90CONFIG_TREE_RCU=y
89# CONFIG_TREE_PREEMPT_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
92# CONFIG_TINY_RCU is not set
90# CONFIG_RCU_TRACE is not set 93# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32 94CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set 95# CONFIG_RCU_FANOUT_EXACT is not set
@@ -173,14 +176,41 @@ CONFIG_LBDAF=y
173# IO Schedulers 176# IO Schedulers
174# 177#
175CONFIG_IOSCHED_NOOP=y 178CONFIG_IOSCHED_NOOP=y
176CONFIG_IOSCHED_AS=y
177CONFIG_IOSCHED_DEADLINE=y 179CONFIG_IOSCHED_DEADLINE=y
178CONFIG_IOSCHED_CFQ=y 180CONFIG_IOSCHED_CFQ=y
179CONFIG_DEFAULT_AS=y
180# CONFIG_DEFAULT_DEADLINE is not set 181# CONFIG_DEFAULT_DEADLINE is not set
181# CONFIG_DEFAULT_CFQ is not set 182CONFIG_DEFAULT_CFQ=y
182# CONFIG_DEFAULT_NOOP is not set 183# CONFIG_DEFAULT_NOOP is not set
183CONFIG_DEFAULT_IOSCHED="anticipatory" 184CONFIG_DEFAULT_IOSCHED="cfq"
185# CONFIG_INLINE_SPIN_TRYLOCK is not set
186# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
187# CONFIG_INLINE_SPIN_LOCK is not set
188# CONFIG_INLINE_SPIN_LOCK_BH is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
191CONFIG_INLINE_SPIN_UNLOCK=y
192# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
193CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
194# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
195# CONFIG_INLINE_READ_TRYLOCK is not set
196# CONFIG_INLINE_READ_LOCK is not set
197# CONFIG_INLINE_READ_LOCK_BH is not set
198# CONFIG_INLINE_READ_LOCK_IRQ is not set
199# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
200CONFIG_INLINE_READ_UNLOCK=y
201# CONFIG_INLINE_READ_UNLOCK_BH is not set
202CONFIG_INLINE_READ_UNLOCK_IRQ=y
203# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_WRITE_TRYLOCK is not set
205# CONFIG_INLINE_WRITE_LOCK is not set
206# CONFIG_INLINE_WRITE_LOCK_BH is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
209CONFIG_INLINE_WRITE_UNLOCK=y
210# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
211CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
212# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
213# CONFIG_MUTEX_SPIN_ON_OWNER is not set
184# CONFIG_FREEZER is not set 214# CONFIG_FREEZER is not set
185 215
186# 216#
@@ -259,6 +289,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 289CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
260# CONFIG_KEXEC is not set 290# CONFIG_KEXEC is not set
261# CONFIG_CRASH_DUMP is not set 291# CONFIG_CRASH_DUMP is not set
292CONFIG_SPARSE_IRQ=y
262CONFIG_MAX_ACTIVE_REGIONS=32 293CONFIG_MAX_ACTIVE_REGIONS=32
263CONFIG_ARCH_FLATMEM_ENABLE=y 294CONFIG_ARCH_FLATMEM_ENABLE=y
264CONFIG_ARCH_POPULATES_NODE_MAP=y 295CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -275,8 +306,6 @@ CONFIG_MIGRATION=y
275CONFIG_ZONE_DMA_FLAG=1 306CONFIG_ZONE_DMA_FLAG=1
276CONFIG_BOUNCE=y 307CONFIG_BOUNCE=y
277CONFIG_VIRT_TO_BUS=y 308CONFIG_VIRT_TO_BUS=y
278CONFIG_HAVE_MLOCK=y
279CONFIG_HAVE_MLOCKED_PAGE_BIT=y
280# CONFIG_KSM is not set 309# CONFIG_KSM is not set
281CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 310CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
282CONFIG_PPC_4K_PAGES=y 311CONFIG_PPC_4K_PAGES=y
@@ -403,9 +432,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
403# CONFIG_AF_RXRPC is not set 432# CONFIG_AF_RXRPC is not set
404CONFIG_WIRELESS=y 433CONFIG_WIRELESS=y
405# CONFIG_CFG80211 is not set 434# CONFIG_CFG80211 is not set
406CONFIG_CFG80211_DEFAULT_PS_VALUE=0
407CONFIG_WIRELESS_OLD_REGULATORY=y
408# CONFIG_WIRELESS_EXT is not set
409# CONFIG_LIB80211 is not set 435# CONFIG_LIB80211 is not set
410 436
411# 437#
@@ -443,6 +469,10 @@ CONFIG_BLK_DEV=y
443# CONFIG_BLK_DEV_COW_COMMON is not set 469# CONFIG_BLK_DEV_COW_COMMON is not set
444CONFIG_BLK_DEV_LOOP=y 470CONFIG_BLK_DEV_LOOP=y
445# CONFIG_BLK_DEV_CRYPTOLOOP is not set 471# CONFIG_BLK_DEV_CRYPTOLOOP is not set
472
473#
474# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
475#
446# CONFIG_BLK_DEV_NBD is not set 476# CONFIG_BLK_DEV_NBD is not set
447# CONFIG_BLK_DEV_SX8 is not set 477# CONFIG_BLK_DEV_SX8 is not set
448CONFIG_BLK_DEV_RAM=y 478CONFIG_BLK_DEV_RAM=y
@@ -453,6 +483,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
453# CONFIG_ATA_OVER_ETH is not set 483# CONFIG_ATA_OVER_ETH is not set
454# CONFIG_BLK_DEV_HD is not set 484# CONFIG_BLK_DEV_HD is not set
455CONFIG_MISC_DEVICES=y 485CONFIG_MISC_DEVICES=y
486# CONFIG_AD525X_DPOT is not set
456# CONFIG_PHANTOM is not set 487# CONFIG_PHANTOM is not set
457# CONFIG_SGI_IOC4 is not set 488# CONFIG_SGI_IOC4 is not set
458# CONFIG_TIFM_CORE is not set 489# CONFIG_TIFM_CORE is not set
@@ -460,6 +491,7 @@ CONFIG_MISC_DEVICES=y
460# CONFIG_ENCLOSURE_SERVICES is not set 491# CONFIG_ENCLOSURE_SERVICES is not set
461# CONFIG_HP_ILO is not set 492# CONFIG_HP_ILO is not set
462# CONFIG_ISL29003 is not set 493# CONFIG_ISL29003 is not set
494# CONFIG_DS1682 is not set
463# CONFIG_C2PORT is not set 495# CONFIG_C2PORT is not set
464 496
465# 497#
@@ -493,7 +525,7 @@ CONFIG_HAVE_IDE=y
493# 525#
494 526
495# 527#
496# See the help texts for more information. 528# The newer stack is recommended.
497# 529#
498# CONFIG_FIREWIRE is not set 530# CONFIG_FIREWIRE is not set
499# CONFIG_IEEE1394 is not set 531# CONFIG_IEEE1394 is not set
@@ -616,8 +648,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y
616# CONFIG_BE2NET is not set 648# CONFIG_BE2NET is not set
617# CONFIG_TR is not set 649# CONFIG_TR is not set
618CONFIG_WLAN=y 650CONFIG_WLAN=y
619# CONFIG_WLAN_PRE80211 is not set 651# CONFIG_AIRO is not set
620# CONFIG_WLAN_80211 is not set 652# CONFIG_ATMEL is not set
653# CONFIG_PRISM54 is not set
654# CONFIG_HOSTAP is not set
621 655
622# 656#
623# Enable WiMAX (Networking options) to see the WiMAX drivers 657# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -630,6 +664,7 @@ CONFIG_WLAN=y
630# CONFIG_NETCONSOLE is not set 664# CONFIG_NETCONSOLE is not set
631# CONFIG_NETPOLL is not set 665# CONFIG_NETPOLL is not set
632# CONFIG_NET_POLL_CONTROLLER is not set 666# CONFIG_NET_POLL_CONTROLLER is not set
667# CONFIG_VMXNET3 is not set
633# CONFIG_ISDN is not set 668# CONFIG_ISDN is not set
634# CONFIG_PHONE is not set 669# CONFIG_PHONE is not set
635 670
@@ -639,6 +674,7 @@ CONFIG_WLAN=y
639CONFIG_INPUT=y 674CONFIG_INPUT=y
640# CONFIG_INPUT_FF_MEMLESS is not set 675# CONFIG_INPUT_FF_MEMLESS is not set
641# CONFIG_INPUT_POLLDEV is not set 676# CONFIG_INPUT_POLLDEV is not set
677# CONFIG_INPUT_SPARSEKMAP is not set
642 678
643# 679#
644# Userland interfaces 680# Userland interfaces
@@ -690,6 +726,7 @@ CONFIG_SERIAL_CORE=y
690CONFIG_SERIAL_CORE_CONSOLE=y 726CONFIG_SERIAL_CORE_CONSOLE=y
691# CONFIG_SERIAL_JSM is not set 727# CONFIG_SERIAL_JSM is not set
692# CONFIG_SERIAL_OF_PLATFORM is not set 728# CONFIG_SERIAL_OF_PLATFORM is not set
729# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
693CONFIG_UNIX98_PTYS=y 730CONFIG_UNIX98_PTYS=y
694# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 731# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
695CONFIG_LEGACY_PTYS=y 732CONFIG_LEGACY_PTYS=y
@@ -745,11 +782,6 @@ CONFIG_I2C_MPC=y
745# CONFIG_I2C_TAOS_EVM is not set 782# CONFIG_I2C_TAOS_EVM is not set
746 783
747# 784#
748# Graphics adapter I2C/DDC channel drivers
749#
750# CONFIG_I2C_VOODOO3 is not set
751
752#
753# Other I2C/SMBus bus drivers 785# Other I2C/SMBus bus drivers
754# 786#
755# CONFIG_I2C_PCA_PLATFORM is not set 787# CONFIG_I2C_PCA_PLATFORM is not set
@@ -758,7 +790,6 @@ CONFIG_I2C_MPC=y
758# 790#
759# Miscellaneous I2C Chip support 791# Miscellaneous I2C Chip support
760# 792#
761# CONFIG_DS1682 is not set
762# CONFIG_SENSORS_TSL2550 is not set 793# CONFIG_SENSORS_TSL2550 is not set
763# CONFIG_I2C_DEBUG_CORE is not set 794# CONFIG_I2C_DEBUG_CORE is not set
764# CONFIG_I2C_DEBUG_ALGO is not set 795# CONFIG_I2C_DEBUG_ALGO is not set
@@ -804,6 +835,7 @@ CONFIG_HWMON=y
804# CONFIG_SENSORS_GL520SM is not set 835# CONFIG_SENSORS_GL520SM is not set
805# CONFIG_SENSORS_IT87 is not set 836# CONFIG_SENSORS_IT87 is not set
806# CONFIG_SENSORS_LM63 is not set 837# CONFIG_SENSORS_LM63 is not set
838# CONFIG_SENSORS_LM73 is not set
807# CONFIG_SENSORS_LM75 is not set 839# CONFIG_SENSORS_LM75 is not set
808# CONFIG_SENSORS_LM77 is not set 840# CONFIG_SENSORS_LM77 is not set
809# CONFIG_SENSORS_LM78 is not set 841# CONFIG_SENSORS_LM78 is not set
@@ -842,6 +874,7 @@ CONFIG_HWMON=y
842# CONFIG_SENSORS_W83L786NG is not set 874# CONFIG_SENSORS_W83L786NG is not set
843# CONFIG_SENSORS_W83627HF is not set 875# CONFIG_SENSORS_W83627HF is not set
844# CONFIG_SENSORS_W83627EHF is not set 876# CONFIG_SENSORS_W83627EHF is not set
877# CONFIG_SENSORS_LIS3_I2C is not set
845# CONFIG_THERMAL is not set 878# CONFIG_THERMAL is not set
846CONFIG_WATCHDOG=y 879CONFIG_WATCHDOG=y
847# CONFIG_WATCHDOG_NOWAYOUT is not set 880# CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -874,11 +907,13 @@ CONFIG_SSB_POSSIBLE=y
874# CONFIG_TWL4030_CORE is not set 907# CONFIG_TWL4030_CORE is not set
875# CONFIG_MFD_TMIO is not set 908# CONFIG_MFD_TMIO is not set
876# CONFIG_PMIC_DA903X is not set 909# CONFIG_PMIC_DA903X is not set
910# CONFIG_PMIC_ADP5520 is not set
877# CONFIG_MFD_WM8400 is not set 911# CONFIG_MFD_WM8400 is not set
878# CONFIG_MFD_WM831X is not set 912# CONFIG_MFD_WM831X is not set
879# CONFIG_MFD_WM8350_I2C is not set 913# CONFIG_MFD_WM8350_I2C is not set
880# CONFIG_MFD_PCF50633 is not set 914# CONFIG_MFD_PCF50633 is not set
881# CONFIG_AB3100_CORE is not set 915# CONFIG_AB3100_CORE is not set
916# CONFIG_MFD_88PM8607 is not set
882# CONFIG_REGULATOR is not set 917# CONFIG_REGULATOR is not set
883# CONFIG_MEDIA_SUPPORT is not set 918# CONFIG_MEDIA_SUPPORT is not set
884 919
@@ -961,6 +996,7 @@ CONFIG_RTC_DRV_DS1374=y
961# CONFIG_RTC_DRV_PCF8563 is not set 996# CONFIG_RTC_DRV_PCF8563 is not set
962# CONFIG_RTC_DRV_PCF8583 is not set 997# CONFIG_RTC_DRV_PCF8583 is not set
963# CONFIG_RTC_DRV_M41T80 is not set 998# CONFIG_RTC_DRV_M41T80 is not set
999# CONFIG_RTC_DRV_BQ32K is not set
964# CONFIG_RTC_DRV_S35390A is not set 1000# CONFIG_RTC_DRV_S35390A is not set
965# CONFIG_RTC_DRV_FM3130 is not set 1001# CONFIG_RTC_DRV_FM3130 is not set
966# CONFIG_RTC_DRV_RX8581 is not set 1002# CONFIG_RTC_DRV_RX8581 is not set
@@ -982,7 +1018,9 @@ CONFIG_RTC_DRV_DS1374=y
982# CONFIG_RTC_DRV_M48T86 is not set 1018# CONFIG_RTC_DRV_M48T86 is not set
983# CONFIG_RTC_DRV_M48T35 is not set 1019# CONFIG_RTC_DRV_M48T35 is not set
984# CONFIG_RTC_DRV_M48T59 is not set 1020# CONFIG_RTC_DRV_M48T59 is not set
1021# CONFIG_RTC_DRV_MSM6242 is not set
985# CONFIG_RTC_DRV_BQ4802 is not set 1022# CONFIG_RTC_DRV_BQ4802 is not set
1023# CONFIG_RTC_DRV_RP5C01 is not set
986# CONFIG_RTC_DRV_V3020 is not set 1024# CONFIG_RTC_DRV_V3020 is not set
987 1025
988# 1026#
@@ -1156,7 +1194,7 @@ CONFIG_FRAME_WARN=1024
1156# CONFIG_DEBUG_KERNEL is not set 1194# CONFIG_DEBUG_KERNEL is not set
1157# CONFIG_SLUB_DEBUG_ON is not set 1195# CONFIG_SLUB_DEBUG_ON is not set
1158# CONFIG_SLUB_STATS is not set 1196# CONFIG_SLUB_STATS is not set
1159# CONFIG_DEBUG_BUGVERBOSE is not set 1197CONFIG_DEBUG_BUGVERBOSE=y
1160# CONFIG_DEBUG_MEMORY_INIT is not set 1198# CONFIG_DEBUG_MEMORY_INIT is not set
1161# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1199# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1162# CONFIG_LATENCYTOP is not set 1200# CONFIG_LATENCYTOP is not set
@@ -1183,7 +1221,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1183# CONFIG_KEYS is not set 1221# CONFIG_KEYS is not set
1184# CONFIG_SECURITY is not set 1222# CONFIG_SECURITY is not set
1185# CONFIG_SECURITYFS is not set 1223# CONFIG_SECURITYFS is not set
1186# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1224# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1225# CONFIG_DEFAULT_SECURITY_SMACK is not set
1226# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1227CONFIG_DEFAULT_SECURITY_DAC=y
1228CONFIG_DEFAULT_SECURITY=""
1187CONFIG_CRYPTO=y 1229CONFIG_CRYPTO=y
1188 1230
1189# 1231#
diff --git a/arch/powerpc/configs/83xx/mpc836x_mds_defconfig b/arch/powerpc/configs/83xx/mpc836x_mds_defconfig
index 4f434b1492fa..78227378e678 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:28 2009 4# Wed Jan 6 09:24:21 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -37,6 +37,7 @@ CONFIG_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 38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
40CONFIG_NR_IRQS=512
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y 43CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y
59CONFIG_GENERIC_BUG=y 60CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y 61CONFIG_DTC=y
61CONFIG_DEFAULT_UIMAGE=y 62CONFIG_DEFAULT_UIMAGE=y
63CONFIG_ARCH_HIBERNATION_POSSIBLE=y
62CONFIG_ARCH_SUSPEND_POSSIBLE=y 64CONFIG_ARCH_SUSPEND_POSSIBLE=y
63# CONFIG_PPC_DCR_NATIVE is not set 65# CONFIG_PPC_DCR_NATIVE is not set
64# CONFIG_PPC_DCR_MMIO is not set 66# CONFIG_PPC_DCR_MMIO is not set
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y
87# 89#
88CONFIG_TREE_RCU=y 90CONFIG_TREE_RCU=y
89# CONFIG_TREE_PREEMPT_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
92# CONFIG_TINY_RCU is not set
90# CONFIG_RCU_TRACE is not set 93# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32 94CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set 95# CONFIG_RCU_FANOUT_EXACT is not set
@@ -173,14 +176,41 @@ CONFIG_LBDAF=y
173# IO Schedulers 176# IO Schedulers
174# 177#
175CONFIG_IOSCHED_NOOP=y 178CONFIG_IOSCHED_NOOP=y
176CONFIG_IOSCHED_AS=y
177CONFIG_IOSCHED_DEADLINE=y 179CONFIG_IOSCHED_DEADLINE=y
178CONFIG_IOSCHED_CFQ=y 180CONFIG_IOSCHED_CFQ=y
179CONFIG_DEFAULT_AS=y
180# CONFIG_DEFAULT_DEADLINE is not set 181# CONFIG_DEFAULT_DEADLINE is not set
181# CONFIG_DEFAULT_CFQ is not set 182CONFIG_DEFAULT_CFQ=y
182# CONFIG_DEFAULT_NOOP is not set 183# CONFIG_DEFAULT_NOOP is not set
183CONFIG_DEFAULT_IOSCHED="anticipatory" 184CONFIG_DEFAULT_IOSCHED="cfq"
185# CONFIG_INLINE_SPIN_TRYLOCK is not set
186# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
187# CONFIG_INLINE_SPIN_LOCK is not set
188# CONFIG_INLINE_SPIN_LOCK_BH is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
191CONFIG_INLINE_SPIN_UNLOCK=y
192# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
193CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
194# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
195# CONFIG_INLINE_READ_TRYLOCK is not set
196# CONFIG_INLINE_READ_LOCK is not set
197# CONFIG_INLINE_READ_LOCK_BH is not set
198# CONFIG_INLINE_READ_LOCK_IRQ is not set
199# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
200CONFIG_INLINE_READ_UNLOCK=y
201# CONFIG_INLINE_READ_UNLOCK_BH is not set
202CONFIG_INLINE_READ_UNLOCK_IRQ=y
203# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_WRITE_TRYLOCK is not set
205# CONFIG_INLINE_WRITE_LOCK is not set
206# CONFIG_INLINE_WRITE_LOCK_BH is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
209CONFIG_INLINE_WRITE_UNLOCK=y
210# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
211CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
212# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
213# CONFIG_MUTEX_SPIN_ON_OWNER is not set
184# CONFIG_FREEZER is not set 214# CONFIG_FREEZER is not set
185 215
186# 216#
@@ -258,6 +288,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
258CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 288CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
259# CONFIG_KEXEC is not set 289# CONFIG_KEXEC is not set
260# CONFIG_CRASH_DUMP is not set 290# CONFIG_CRASH_DUMP is not set
291CONFIG_SPARSE_IRQ=y
261CONFIG_MAX_ACTIVE_REGIONS=32 292CONFIG_MAX_ACTIVE_REGIONS=32
262CONFIG_ARCH_FLATMEM_ENABLE=y 293CONFIG_ARCH_FLATMEM_ENABLE=y
263CONFIG_ARCH_POPULATES_NODE_MAP=y 294CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -274,8 +305,6 @@ CONFIG_MIGRATION=y
274CONFIG_ZONE_DMA_FLAG=1 305CONFIG_ZONE_DMA_FLAG=1
275CONFIG_BOUNCE=y 306CONFIG_BOUNCE=y
276CONFIG_VIRT_TO_BUS=y 307CONFIG_VIRT_TO_BUS=y
277CONFIG_HAVE_MLOCK=y
278CONFIG_HAVE_MLOCKED_PAGE_BIT=y
279# CONFIG_KSM is not set 308# CONFIG_KSM is not set
280CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 309CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
281CONFIG_PPC_4K_PAGES=y 310CONFIG_PPC_4K_PAGES=y
@@ -402,9 +431,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
402# CONFIG_AF_RXRPC is not set 431# CONFIG_AF_RXRPC is not set
403CONFIG_WIRELESS=y 432CONFIG_WIRELESS=y
404# CONFIG_CFG80211 is not set 433# CONFIG_CFG80211 is not set
405CONFIG_CFG80211_DEFAULT_PS_VALUE=0
406CONFIG_WIRELESS_OLD_REGULATORY=y
407# CONFIG_WIRELESS_EXT is not set
408# CONFIG_LIB80211 is not set 434# CONFIG_LIB80211 is not set
409 435
410# 436#
@@ -525,6 +551,10 @@ CONFIG_BLK_DEV=y
525# CONFIG_BLK_DEV_COW_COMMON is not set 551# CONFIG_BLK_DEV_COW_COMMON is not set
526CONFIG_BLK_DEV_LOOP=y 552CONFIG_BLK_DEV_LOOP=y
527# CONFIG_BLK_DEV_CRYPTOLOOP is not set 553# CONFIG_BLK_DEV_CRYPTOLOOP is not set
554
555#
556# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
557#
528# CONFIG_BLK_DEV_NBD is not set 558# CONFIG_BLK_DEV_NBD is not set
529# CONFIG_BLK_DEV_SX8 is not set 559# CONFIG_BLK_DEV_SX8 is not set
530CONFIG_BLK_DEV_RAM=y 560CONFIG_BLK_DEV_RAM=y
@@ -535,6 +565,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
535# CONFIG_ATA_OVER_ETH is not set 565# CONFIG_ATA_OVER_ETH is not set
536# CONFIG_BLK_DEV_HD is not set 566# CONFIG_BLK_DEV_HD is not set
537CONFIG_MISC_DEVICES=y 567CONFIG_MISC_DEVICES=y
568# CONFIG_AD525X_DPOT is not set
538# CONFIG_PHANTOM is not set 569# CONFIG_PHANTOM is not set
539# CONFIG_SGI_IOC4 is not set 570# CONFIG_SGI_IOC4 is not set
540# CONFIG_TIFM_CORE is not set 571# CONFIG_TIFM_CORE is not set
@@ -542,6 +573,7 @@ CONFIG_MISC_DEVICES=y
542# CONFIG_ENCLOSURE_SERVICES is not set 573# CONFIG_ENCLOSURE_SERVICES is not set
543# CONFIG_HP_ILO is not set 574# CONFIG_HP_ILO is not set
544# CONFIG_ISL29003 is not set 575# CONFIG_ISL29003 is not set
576# CONFIG_DS1682 is not set
545# CONFIG_C2PORT is not set 577# CONFIG_C2PORT is not set
546 578
547# 579#
@@ -594,7 +626,9 @@ CONFIG_SCSI_LOWLEVEL=y
594# CONFIG_SCSI_BNX2_ISCSI is not set 626# CONFIG_SCSI_BNX2_ISCSI is not set
595# CONFIG_BE2ISCSI is not set 627# CONFIG_BE2ISCSI is not set
596# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 628# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
629# CONFIG_SCSI_HPSA is not set
597# CONFIG_SCSI_3W_9XXX is not set 630# CONFIG_SCSI_3W_9XXX is not set
631# CONFIG_SCSI_3W_SAS is not set
598# CONFIG_SCSI_ACARD is not set 632# CONFIG_SCSI_ACARD is not set
599# CONFIG_SCSI_AACRAID is not set 633# CONFIG_SCSI_AACRAID is not set
600# CONFIG_SCSI_AIC7XXX is not set 634# CONFIG_SCSI_AIC7XXX is not set
@@ -632,6 +666,7 @@ CONFIG_SCSI_LOWLEVEL=y
632# CONFIG_SCSI_NSP32 is not set 666# CONFIG_SCSI_NSP32 is not set
633# CONFIG_SCSI_DEBUG is not set 667# CONFIG_SCSI_DEBUG is not set
634# CONFIG_SCSI_PMCRAID is not set 668# CONFIG_SCSI_PMCRAID is not set
669# CONFIG_SCSI_PM8001 is not set
635# CONFIG_SCSI_SRP is not set 670# CONFIG_SCSI_SRP is not set
636# CONFIG_SCSI_BFA_FC is not set 671# CONFIG_SCSI_BFA_FC is not set
637# CONFIG_SCSI_DH is not set 672# CONFIG_SCSI_DH is not set
@@ -649,7 +684,7 @@ CONFIG_SCSI_LOWLEVEL=y
649# 684#
650 685
651# 686#
652# See the help texts for more information. 687# The newer stack is recommended.
653# 688#
654# CONFIG_FIREWIRE is not set 689# CONFIG_FIREWIRE is not set
655# CONFIG_IEEE1394 is not set 690# CONFIG_IEEE1394 is not set
@@ -756,8 +791,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y
756# CONFIG_BE2NET is not set 791# CONFIG_BE2NET is not set
757# CONFIG_TR is not set 792# CONFIG_TR is not set
758CONFIG_WLAN=y 793CONFIG_WLAN=y
759# CONFIG_WLAN_PRE80211 is not set 794# CONFIG_AIRO is not set
760# CONFIG_WLAN_80211 is not set 795# CONFIG_ATMEL is not set
796# CONFIG_PRISM54 is not set
797# CONFIG_HOSTAP is not set
761 798
762# 799#
763# Enable WiMAX (Networking options) to see the WiMAX drivers 800# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -771,6 +808,7 @@ CONFIG_WLAN=y
771# CONFIG_NETCONSOLE is not set 808# CONFIG_NETCONSOLE is not set
772# CONFIG_NETPOLL is not set 809# CONFIG_NETPOLL is not set
773# CONFIG_NET_POLL_CONTROLLER is not set 810# CONFIG_NET_POLL_CONTROLLER is not set
811# CONFIG_VMXNET3 is not set
774# CONFIG_ISDN is not set 812# CONFIG_ISDN is not set
775# CONFIG_PHONE is not set 813# CONFIG_PHONE is not set
776 814
@@ -780,6 +818,7 @@ CONFIG_WLAN=y
780CONFIG_INPUT=y 818CONFIG_INPUT=y
781# CONFIG_INPUT_FF_MEMLESS is not set 819# CONFIG_INPUT_FF_MEMLESS is not set
782# CONFIG_INPUT_POLLDEV is not set 820# CONFIG_INPUT_POLLDEV is not set
821# CONFIG_INPUT_SPARSEKMAP is not set
783 822
784# 823#
785# Userland interfaces 824# Userland interfaces
@@ -832,6 +871,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
832# CONFIG_SERIAL_JSM is not set 871# CONFIG_SERIAL_JSM is not set
833# CONFIG_SERIAL_OF_PLATFORM is not set 872# CONFIG_SERIAL_OF_PLATFORM is not set
834# CONFIG_SERIAL_QE is not set 873# CONFIG_SERIAL_QE is not set
874# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
835CONFIG_UNIX98_PTYS=y 875CONFIG_UNIX98_PTYS=y
836# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 876# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
837CONFIG_LEGACY_PTYS=y 877CONFIG_LEGACY_PTYS=y
@@ -888,11 +928,6 @@ CONFIG_I2C_MPC=y
888# CONFIG_I2C_TAOS_EVM is not set 928# CONFIG_I2C_TAOS_EVM is not set
889 929
890# 930#
891# Graphics adapter I2C/DDC channel drivers
892#
893# CONFIG_I2C_VOODOO3 is not set
894
895#
896# Other I2C/SMBus bus drivers 931# Other I2C/SMBus bus drivers
897# 932#
898# CONFIG_I2C_PCA_PLATFORM is not set 933# CONFIG_I2C_PCA_PLATFORM is not set
@@ -901,7 +936,6 @@ CONFIG_I2C_MPC=y
901# 936#
902# Miscellaneous I2C Chip support 937# Miscellaneous I2C Chip support
903# 938#
904# CONFIG_DS1682 is not set
905# CONFIG_SENSORS_TSL2550 is not set 939# CONFIG_SENSORS_TSL2550 is not set
906# CONFIG_I2C_DEBUG_CORE is not set 940# CONFIG_I2C_DEBUG_CORE is not set
907# CONFIG_I2C_DEBUG_ALGO is not set 941# CONFIG_I2C_DEBUG_ALGO is not set
@@ -947,6 +981,7 @@ CONFIG_HWMON=y
947# CONFIG_SENSORS_GL520SM is not set 981# CONFIG_SENSORS_GL520SM is not set
948# CONFIG_SENSORS_IT87 is not set 982# CONFIG_SENSORS_IT87 is not set
949# CONFIG_SENSORS_LM63 is not set 983# CONFIG_SENSORS_LM63 is not set
984# CONFIG_SENSORS_LM73 is not set
950# CONFIG_SENSORS_LM75 is not set 985# CONFIG_SENSORS_LM75 is not set
951# CONFIG_SENSORS_LM77 is not set 986# CONFIG_SENSORS_LM77 is not set
952# CONFIG_SENSORS_LM78 is not set 987# CONFIG_SENSORS_LM78 is not set
@@ -985,6 +1020,7 @@ CONFIG_HWMON=y
985# CONFIG_SENSORS_W83L786NG is not set 1020# CONFIG_SENSORS_W83L786NG is not set
986# CONFIG_SENSORS_W83627HF is not set 1021# CONFIG_SENSORS_W83627HF is not set
987# CONFIG_SENSORS_W83627EHF is not set 1022# CONFIG_SENSORS_W83627EHF is not set
1023# CONFIG_SENSORS_LIS3_I2C is not set
988# CONFIG_THERMAL is not set 1024# CONFIG_THERMAL is not set
989CONFIG_WATCHDOG=y 1025CONFIG_WATCHDOG=y
990# CONFIG_WATCHDOG_NOWAYOUT is not set 1026# CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -1017,11 +1053,13 @@ CONFIG_SSB_POSSIBLE=y
1017# CONFIG_TWL4030_CORE is not set 1053# CONFIG_TWL4030_CORE is not set
1018# CONFIG_MFD_TMIO is not set 1054# CONFIG_MFD_TMIO is not set
1019# CONFIG_PMIC_DA903X is not set 1055# CONFIG_PMIC_DA903X is not set
1056# CONFIG_PMIC_ADP5520 is not set
1020# CONFIG_MFD_WM8400 is not set 1057# CONFIG_MFD_WM8400 is not set
1021# CONFIG_MFD_WM831X is not set 1058# CONFIG_MFD_WM831X is not set
1022# CONFIG_MFD_WM8350_I2C is not set 1059# CONFIG_MFD_WM8350_I2C is not set
1023# CONFIG_MFD_PCF50633 is not set 1060# CONFIG_MFD_PCF50633 is not set
1024# CONFIG_AB3100_CORE is not set 1061# CONFIG_AB3100_CORE is not set
1062# CONFIG_MFD_88PM8607 is not set
1025# CONFIG_REGULATOR is not set 1063# CONFIG_REGULATOR is not set
1026# CONFIG_MEDIA_SUPPORT is not set 1064# CONFIG_MEDIA_SUPPORT is not set
1027 1065
@@ -1104,6 +1142,7 @@ CONFIG_RTC_DRV_DS1374=y
1104# CONFIG_RTC_DRV_PCF8563 is not set 1142# CONFIG_RTC_DRV_PCF8563 is not set
1105# CONFIG_RTC_DRV_PCF8583 is not set 1143# CONFIG_RTC_DRV_PCF8583 is not set
1106# CONFIG_RTC_DRV_M41T80 is not set 1144# CONFIG_RTC_DRV_M41T80 is not set
1145# CONFIG_RTC_DRV_BQ32K is not set
1107# CONFIG_RTC_DRV_S35390A is not set 1146# CONFIG_RTC_DRV_S35390A is not set
1108# CONFIG_RTC_DRV_FM3130 is not set 1147# CONFIG_RTC_DRV_FM3130 is not set
1109# CONFIG_RTC_DRV_RX8581 is not set 1148# CONFIG_RTC_DRV_RX8581 is not set
@@ -1125,7 +1164,9 @@ CONFIG_RTC_DRV_DS1374=y
1125# CONFIG_RTC_DRV_M48T86 is not set 1164# CONFIG_RTC_DRV_M48T86 is not set
1126# CONFIG_RTC_DRV_M48T35 is not set 1165# CONFIG_RTC_DRV_M48T35 is not set
1127# CONFIG_RTC_DRV_M48T59 is not set 1166# CONFIG_RTC_DRV_M48T59 is not set
1167# CONFIG_RTC_DRV_MSM6242 is not set
1128# CONFIG_RTC_DRV_BQ4802 is not set 1168# CONFIG_RTC_DRV_BQ4802 is not set
1169# CONFIG_RTC_DRV_RP5C01 is not set
1129# CONFIG_RTC_DRV_V3020 is not set 1170# CONFIG_RTC_DRV_V3020 is not set
1130 1171
1131# 1172#
@@ -1302,7 +1343,7 @@ CONFIG_FRAME_WARN=1024
1302# CONFIG_DEBUG_KERNEL is not set 1343# CONFIG_DEBUG_KERNEL is not set
1303# CONFIG_SLUB_DEBUG_ON is not set 1344# CONFIG_SLUB_DEBUG_ON is not set
1304# CONFIG_SLUB_STATS is not set 1345# CONFIG_SLUB_STATS is not set
1305# CONFIG_DEBUG_BUGVERBOSE is not set 1346CONFIG_DEBUG_BUGVERBOSE=y
1306# CONFIG_DEBUG_MEMORY_INIT is not set 1347# CONFIG_DEBUG_MEMORY_INIT is not set
1307# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1348# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1308# CONFIG_LATENCYTOP is not set 1349# CONFIG_LATENCYTOP is not set
@@ -1329,7 +1370,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1329# CONFIG_KEYS is not set 1370# CONFIG_KEYS is not set
1330# CONFIG_SECURITY is not set 1371# CONFIG_SECURITY is not set
1331# CONFIG_SECURITYFS is not set 1372# CONFIG_SECURITYFS is not set
1332# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1373# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1374# CONFIG_DEFAULT_SECURITY_SMACK is not set
1375# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1376CONFIG_DEFAULT_SECURITY_DAC=y
1377CONFIG_DEFAULT_SECURITY=""
1333CONFIG_CRYPTO=y 1378CONFIG_CRYPTO=y
1334 1379
1335# 1380#
diff --git a/arch/powerpc/configs/83xx/mpc836x_rdk_defconfig b/arch/powerpc/configs/83xx/mpc836x_rdk_defconfig
index b52ec0861679..9451d6e5c802 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:30 2009 4# Wed Jan 6 09:24:23 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -37,6 +37,7 @@ CONFIG_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 38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
40CONFIG_NR_IRQS=512
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y 43CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -60,6 +61,7 @@ CONFIG_AUDIT_ARCH=y
60CONFIG_GENERIC_BUG=y 61CONFIG_GENERIC_BUG=y
61CONFIG_DTC=y 62CONFIG_DTC=y
62CONFIG_DEFAULT_UIMAGE=y 63CONFIG_DEFAULT_UIMAGE=y
64CONFIG_ARCH_HIBERNATION_POSSIBLE=y
63CONFIG_ARCH_SUSPEND_POSSIBLE=y 65CONFIG_ARCH_SUSPEND_POSSIBLE=y
64# CONFIG_PPC_DCR_NATIVE is not set 66# CONFIG_PPC_DCR_NATIVE is not set
65# CONFIG_PPC_DCR_MMIO is not set 67# CONFIG_PPC_DCR_MMIO is not set
@@ -88,6 +90,7 @@ CONFIG_SYSVIPC_SYSCTL=y
88# 90#
89CONFIG_TREE_RCU=y 91CONFIG_TREE_RCU=y
90# CONFIG_TREE_PREEMPT_RCU is not set 92# CONFIG_TREE_PREEMPT_RCU is not set
93# CONFIG_TINY_RCU is not set
91# CONFIG_RCU_TRACE is not set 94# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32 95CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set 96# CONFIG_RCU_FANOUT_EXACT is not set
@@ -174,14 +177,41 @@ CONFIG_LBDAF=y
174# IO Schedulers 177# IO Schedulers
175# 178#
176CONFIG_IOSCHED_NOOP=y 179CONFIG_IOSCHED_NOOP=y
177CONFIG_IOSCHED_AS=y
178CONFIG_IOSCHED_DEADLINE=y 180CONFIG_IOSCHED_DEADLINE=y
179CONFIG_IOSCHED_CFQ=y 181CONFIG_IOSCHED_CFQ=y
180CONFIG_DEFAULT_AS=y
181# CONFIG_DEFAULT_DEADLINE is not set 182# CONFIG_DEFAULT_DEADLINE is not set
182# CONFIG_DEFAULT_CFQ is not set 183CONFIG_DEFAULT_CFQ=y
183# CONFIG_DEFAULT_NOOP is not set 184# CONFIG_DEFAULT_NOOP is not set
184CONFIG_DEFAULT_IOSCHED="anticipatory" 185CONFIG_DEFAULT_IOSCHED="cfq"
186# CONFIG_INLINE_SPIN_TRYLOCK is not set
187# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
188# CONFIG_INLINE_SPIN_LOCK is not set
189# CONFIG_INLINE_SPIN_LOCK_BH is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
191# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
192CONFIG_INLINE_SPIN_UNLOCK=y
193# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
194CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
195# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
196# CONFIG_INLINE_READ_TRYLOCK is not set
197# CONFIG_INLINE_READ_LOCK is not set
198# CONFIG_INLINE_READ_LOCK_BH is not set
199# CONFIG_INLINE_READ_LOCK_IRQ is not set
200# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
201CONFIG_INLINE_READ_UNLOCK=y
202# CONFIG_INLINE_READ_UNLOCK_BH is not set
203CONFIG_INLINE_READ_UNLOCK_IRQ=y
204# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
205# CONFIG_INLINE_WRITE_TRYLOCK is not set
206# CONFIG_INLINE_WRITE_LOCK is not set
207# CONFIG_INLINE_WRITE_LOCK_BH is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
209# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
210CONFIG_INLINE_WRITE_UNLOCK=y
211# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
212CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
213# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
214# CONFIG_MUTEX_SPIN_ON_OWNER is not set
185# CONFIG_FREEZER is not set 215# CONFIG_FREEZER is not set
186 216
187# 217#
@@ -258,6 +288,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
258CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 288CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
259# CONFIG_KEXEC is not set 289# CONFIG_KEXEC is not set
260# CONFIG_CRASH_DUMP is not set 290# CONFIG_CRASH_DUMP is not set
291CONFIG_SPARSE_IRQ=y
261CONFIG_MAX_ACTIVE_REGIONS=32 292CONFIG_MAX_ACTIVE_REGIONS=32
262CONFIG_ARCH_FLATMEM_ENABLE=y 293CONFIG_ARCH_FLATMEM_ENABLE=y
263CONFIG_ARCH_POPULATES_NODE_MAP=y 294CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -274,8 +305,6 @@ CONFIG_MIGRATION=y
274CONFIG_ZONE_DMA_FLAG=1 305CONFIG_ZONE_DMA_FLAG=1
275CONFIG_BOUNCE=y 306CONFIG_BOUNCE=y
276CONFIG_VIRT_TO_BUS=y 307CONFIG_VIRT_TO_BUS=y
277CONFIG_HAVE_MLOCK=y
278CONFIG_HAVE_MLOCKED_PAGE_BIT=y
279# CONFIG_KSM is not set 308# CONFIG_KSM is not set
280CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 309CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
281CONFIG_PPC_4K_PAGES=y 310CONFIG_PPC_4K_PAGES=y
@@ -404,9 +433,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
404# CONFIG_AF_RXRPC is not set 433# CONFIG_AF_RXRPC is not set
405CONFIG_WIRELESS=y 434CONFIG_WIRELESS=y
406# CONFIG_CFG80211 is not set 435# CONFIG_CFG80211 is not set
407CONFIG_CFG80211_DEFAULT_PS_VALUE=0
408CONFIG_WIRELESS_OLD_REGULATORY=y
409# CONFIG_WIRELESS_EXT is not set
410# CONFIG_LIB80211 is not set 436# CONFIG_LIB80211 is not set
411 437
412# 438#
@@ -539,6 +565,10 @@ CONFIG_BLK_DEV=y
539# CONFIG_BLK_DEV_COW_COMMON is not set 565# CONFIG_BLK_DEV_COW_COMMON is not set
540CONFIG_BLK_DEV_LOOP=y 566CONFIG_BLK_DEV_LOOP=y
541# CONFIG_BLK_DEV_CRYPTOLOOP is not set 567# CONFIG_BLK_DEV_CRYPTOLOOP is not set
568
569#
570# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
571#
542# CONFIG_BLK_DEV_NBD is not set 572# CONFIG_BLK_DEV_NBD is not set
543# CONFIG_BLK_DEV_SX8 is not set 573# CONFIG_BLK_DEV_SX8 is not set
544CONFIG_BLK_DEV_RAM=y 574CONFIG_BLK_DEV_RAM=y
@@ -549,6 +579,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
549# CONFIG_ATA_OVER_ETH is not set 579# CONFIG_ATA_OVER_ETH is not set
550# CONFIG_BLK_DEV_HD is not set 580# CONFIG_BLK_DEV_HD is not set
551CONFIG_MISC_DEVICES=y 581CONFIG_MISC_DEVICES=y
582# CONFIG_AD525X_DPOT is not set
552# CONFIG_PHANTOM is not set 583# CONFIG_PHANTOM is not set
553# CONFIG_SGI_IOC4 is not set 584# CONFIG_SGI_IOC4 is not set
554# CONFIG_TIFM_CORE is not set 585# CONFIG_TIFM_CORE is not set
@@ -556,6 +587,8 @@ CONFIG_MISC_DEVICES=y
556# CONFIG_ENCLOSURE_SERVICES is not set 587# CONFIG_ENCLOSURE_SERVICES is not set
557# CONFIG_HP_ILO is not set 588# CONFIG_HP_ILO is not set
558# CONFIG_ISL29003 is not set 589# CONFIG_ISL29003 is not set
590# CONFIG_DS1682 is not set
591# CONFIG_TI_DAC7512 is not set
559# CONFIG_C2PORT is not set 592# CONFIG_C2PORT is not set
560 593
561# 594#
@@ -590,7 +623,7 @@ CONFIG_HAVE_IDE=y
590# 623#
591 624
592# 625#
593# See the help texts for more information. 626# The newer stack is recommended.
594# 627#
595# CONFIG_FIREWIRE is not set 628# CONFIG_FIREWIRE is not set
596# CONFIG_IEEE1394 is not set 629# CONFIG_IEEE1394 is not set
@@ -657,8 +690,10 @@ CONFIG_UCC_GETH=y
657# CONFIG_NETDEV_10000 is not set 690# CONFIG_NETDEV_10000 is not set
658# CONFIG_TR is not set 691# CONFIG_TR is not set
659CONFIG_WLAN=y 692CONFIG_WLAN=y
660# CONFIG_WLAN_PRE80211 is not set 693# CONFIG_AIRO is not set
661# CONFIG_WLAN_80211 is not set 694# CONFIG_ATMEL is not set
695# CONFIG_PRISM54 is not set
696# CONFIG_HOSTAP is not set
662 697
663# 698#
664# Enable WiMAX (Networking options) to see the WiMAX drivers 699# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -671,6 +706,7 @@ CONFIG_WLAN=y
671# CONFIG_NETCONSOLE is not set 706# CONFIG_NETCONSOLE is not set
672# CONFIG_NETPOLL is not set 707# CONFIG_NETPOLL is not set
673# CONFIG_NET_POLL_CONTROLLER is not set 708# CONFIG_NET_POLL_CONTROLLER is not set
709# CONFIG_VMXNET3 is not set
674# CONFIG_ISDN is not set 710# CONFIG_ISDN is not set
675# CONFIG_PHONE is not set 711# CONFIG_PHONE is not set
676 712
@@ -680,6 +716,7 @@ CONFIG_WLAN=y
680CONFIG_INPUT=y 716CONFIG_INPUT=y
681# CONFIG_INPUT_FF_MEMLESS is not set 717# CONFIG_INPUT_FF_MEMLESS is not set
682# CONFIG_INPUT_POLLDEV is not set 718# CONFIG_INPUT_POLLDEV is not set
719# CONFIG_INPUT_SPARSEKMAP is not set
683 720
684# 721#
685# Userland interfaces 722# Userland interfaces
@@ -737,6 +774,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
737# CONFIG_SERIAL_JSM is not set 774# CONFIG_SERIAL_JSM is not set
738# CONFIG_SERIAL_OF_PLATFORM is not set 775# CONFIG_SERIAL_OF_PLATFORM is not set
739CONFIG_SERIAL_QE=y 776CONFIG_SERIAL_QE=y
777# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
740CONFIG_UNIX98_PTYS=y 778CONFIG_UNIX98_PTYS=y
741# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 779# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
742CONFIG_LEGACY_PTYS=y 780CONFIG_LEGACY_PTYS=y
@@ -795,11 +833,6 @@ CONFIG_I2C_MPC=y
795# CONFIG_I2C_TAOS_EVM is not set 833# CONFIG_I2C_TAOS_EVM is not set
796 834
797# 835#
798# Graphics adapter I2C/DDC channel drivers
799#
800# CONFIG_I2C_VOODOO3 is not set
801
802#
803# Other I2C/SMBus bus drivers 836# Other I2C/SMBus bus drivers
804# 837#
805# CONFIG_I2C_PCA_PLATFORM is not set 838# CONFIG_I2C_PCA_PLATFORM is not set
@@ -808,7 +841,6 @@ CONFIG_I2C_MPC=y
808# 841#
809# Miscellaneous I2C Chip support 842# Miscellaneous I2C Chip support
810# 843#
811# CONFIG_DS1682 is not set
812# CONFIG_SENSORS_TSL2550 is not set 844# CONFIG_SENSORS_TSL2550 is not set
813# CONFIG_I2C_DEBUG_CORE is not set 845# CONFIG_I2C_DEBUG_CORE is not set
814# CONFIG_I2C_DEBUG_ALGO is not set 846# CONFIG_I2C_DEBUG_ALGO is not set
@@ -823,6 +855,8 @@ CONFIG_SPI_MASTER=y
823CONFIG_SPI_BITBANG=y 855CONFIG_SPI_BITBANG=y
824# CONFIG_SPI_GPIO is not set 856# CONFIG_SPI_GPIO is not set
825# CONFIG_SPI_MPC8xxx is not set 857# CONFIG_SPI_MPC8xxx is not set
858# CONFIG_SPI_XILINX is not set
859# CONFIG_SPI_DESIGNWARE is not set
826 860
827# 861#
828# SPI Protocol Masters 862# SPI Protocol Masters
@@ -854,6 +888,7 @@ CONFIG_GPIOLIB=y
854# 888#
855# PCI GPIO expanders: 889# PCI GPIO expanders:
856# 890#
891# CONFIG_GPIO_CS5535 is not set
857# CONFIG_GPIO_BT8XX is not set 892# CONFIG_GPIO_BT8XX is not set
858# CONFIG_GPIO_LANGWELL is not set 893# CONFIG_GPIO_LANGWELL is not set
859 894
@@ -903,6 +938,7 @@ CONFIG_SSB_POSSIBLE=y
903# CONFIG_TWL4030_CORE is not set 938# CONFIG_TWL4030_CORE is not set
904# CONFIG_MFD_TMIO is not set 939# CONFIG_MFD_TMIO is not set
905# CONFIG_PMIC_DA903X is not set 940# CONFIG_PMIC_DA903X is not set
941# CONFIG_PMIC_ADP5520 is not set
906# CONFIG_MFD_WM8400 is not set 942# CONFIG_MFD_WM8400 is not set
907# CONFIG_MFD_WM831X is not set 943# CONFIG_MFD_WM831X is not set
908# CONFIG_MFD_WM8350_I2C is not set 944# CONFIG_MFD_WM8350_I2C is not set
@@ -910,6 +946,8 @@ CONFIG_SSB_POSSIBLE=y
910# CONFIG_MFD_MC13783 is not set 946# CONFIG_MFD_MC13783 is not set
911# CONFIG_AB3100_CORE is not set 947# CONFIG_AB3100_CORE is not set
912# CONFIG_EZX_PCAP is not set 948# CONFIG_EZX_PCAP is not set
949# CONFIG_MFD_88PM8607 is not set
950# CONFIG_AB4500_CORE is not set
913# CONFIG_REGULATOR is not set 951# CONFIG_REGULATOR is not set
914# CONFIG_MEDIA_SUPPORT is not set 952# CONFIG_MEDIA_SUPPORT is not set
915 953
@@ -1199,7 +1237,7 @@ CONFIG_FRAME_WARN=1024
1199# CONFIG_DEBUG_KERNEL is not set 1237# CONFIG_DEBUG_KERNEL is not set
1200# CONFIG_SLUB_DEBUG_ON is not set 1238# CONFIG_SLUB_DEBUG_ON is not set
1201# CONFIG_SLUB_STATS is not set 1239# CONFIG_SLUB_STATS is not set
1202# CONFIG_DEBUG_BUGVERBOSE is not set 1240CONFIG_DEBUG_BUGVERBOSE=y
1203# CONFIG_DEBUG_MEMORY_INIT is not set 1241# CONFIG_DEBUG_MEMORY_INIT is not set
1204# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1242# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1205# CONFIG_LATENCYTOP is not set 1243# CONFIG_LATENCYTOP is not set
@@ -1230,6 +1268,7 @@ CONFIG_PPC_EARLY_DEBUG=y
1230# CONFIG_PPC_EARLY_DEBUG_44x is not set 1268# CONFIG_PPC_EARLY_DEBUG_44x is not set
1231# CONFIG_PPC_EARLY_DEBUG_40x is not set 1269# CONFIG_PPC_EARLY_DEBUG_40x is not set
1232# CONFIG_PPC_EARLY_DEBUG_CPM is not set 1270# CONFIG_PPC_EARLY_DEBUG_CPM is not set
1271# CONFIG_PPC_EARLY_DEBUG_USBGECKO is not set
1233 1272
1234# 1273#
1235# Security options 1274# Security options
@@ -1237,7 +1276,11 @@ CONFIG_PPC_EARLY_DEBUG=y
1237# CONFIG_KEYS is not set 1276# CONFIG_KEYS is not set
1238# CONFIG_SECURITY is not set 1277# CONFIG_SECURITY is not set
1239# CONFIG_SECURITYFS is not set 1278# CONFIG_SECURITYFS is not set
1240# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1279# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1280# CONFIG_DEFAULT_SECURITY_SMACK is not set
1281# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1282CONFIG_DEFAULT_SECURITY_DAC=y
1283CONFIG_DEFAULT_SECURITY=""
1241CONFIG_CRYPTO=y 1284CONFIG_CRYPTO=y
1242 1285
1243# 1286#
diff --git a/arch/powerpc/configs/83xx/mpc837x_mds_defconfig b/arch/powerpc/configs/83xx/mpc837x_mds_defconfig
index 730061574f96..f67b70d0b292 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:29 2009 4# Wed Jan 6 09:24:22 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -37,6 +37,7 @@ CONFIG_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 38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
40CONFIG_NR_IRQS=512
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y 43CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y
59CONFIG_GENERIC_BUG=y 60CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y 61CONFIG_DTC=y
61CONFIG_DEFAULT_UIMAGE=y 62CONFIG_DEFAULT_UIMAGE=y
63CONFIG_ARCH_HIBERNATION_POSSIBLE=y
62CONFIG_ARCH_SUSPEND_POSSIBLE=y 64CONFIG_ARCH_SUSPEND_POSSIBLE=y
63# CONFIG_PPC_DCR_NATIVE is not set 65# CONFIG_PPC_DCR_NATIVE is not set
64# CONFIG_PPC_DCR_MMIO is not set 66# CONFIG_PPC_DCR_MMIO is not set
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y
87# 89#
88CONFIG_TREE_RCU=y 90CONFIG_TREE_RCU=y
89# CONFIG_TREE_PREEMPT_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
92# CONFIG_TINY_RCU is not set
90# CONFIG_RCU_TRACE is not set 93# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32 94CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set 95# CONFIG_RCU_FANOUT_EXACT is not set
@@ -174,14 +177,41 @@ CONFIG_LBDAF=y
174# IO Schedulers 177# IO Schedulers
175# 178#
176CONFIG_IOSCHED_NOOP=y 179CONFIG_IOSCHED_NOOP=y
177CONFIG_IOSCHED_AS=y
178CONFIG_IOSCHED_DEADLINE=y 180CONFIG_IOSCHED_DEADLINE=y
179CONFIG_IOSCHED_CFQ=y 181CONFIG_IOSCHED_CFQ=y
180CONFIG_DEFAULT_AS=y
181# CONFIG_DEFAULT_DEADLINE is not set 182# CONFIG_DEFAULT_DEADLINE is not set
182# CONFIG_DEFAULT_CFQ is not set 183CONFIG_DEFAULT_CFQ=y
183# CONFIG_DEFAULT_NOOP is not set 184# CONFIG_DEFAULT_NOOP is not set
184CONFIG_DEFAULT_IOSCHED="anticipatory" 185CONFIG_DEFAULT_IOSCHED="cfq"
186# CONFIG_INLINE_SPIN_TRYLOCK is not set
187# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
188# CONFIG_INLINE_SPIN_LOCK is not set
189# CONFIG_INLINE_SPIN_LOCK_BH is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
191# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
192CONFIG_INLINE_SPIN_UNLOCK=y
193# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
194CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
195# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
196# CONFIG_INLINE_READ_TRYLOCK is not set
197# CONFIG_INLINE_READ_LOCK is not set
198# CONFIG_INLINE_READ_LOCK_BH is not set
199# CONFIG_INLINE_READ_LOCK_IRQ is not set
200# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
201CONFIG_INLINE_READ_UNLOCK=y
202# CONFIG_INLINE_READ_UNLOCK_BH is not set
203CONFIG_INLINE_READ_UNLOCK_IRQ=y
204# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
205# CONFIG_INLINE_WRITE_TRYLOCK is not set
206# CONFIG_INLINE_WRITE_LOCK is not set
207# CONFIG_INLINE_WRITE_LOCK_BH is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
209# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
210CONFIG_INLINE_WRITE_UNLOCK=y
211# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
212CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
213# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
214# CONFIG_MUTEX_SPIN_ON_OWNER is not set
185# CONFIG_FREEZER is not set 215# CONFIG_FREEZER is not set
186 216
187# 217#
@@ -259,6 +289,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 289CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
260# CONFIG_KEXEC is not set 290# CONFIG_KEXEC is not set
261# CONFIG_CRASH_DUMP is not set 291# CONFIG_CRASH_DUMP is not set
292CONFIG_SPARSE_IRQ=y
262CONFIG_MAX_ACTIVE_REGIONS=32 293CONFIG_MAX_ACTIVE_REGIONS=32
263CONFIG_ARCH_FLATMEM_ENABLE=y 294CONFIG_ARCH_FLATMEM_ENABLE=y
264CONFIG_ARCH_POPULATES_NODE_MAP=y 295CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -275,8 +306,6 @@ CONFIG_MIGRATION=y
275CONFIG_ZONE_DMA_FLAG=1 306CONFIG_ZONE_DMA_FLAG=1
276CONFIG_BOUNCE=y 307CONFIG_BOUNCE=y
277CONFIG_VIRT_TO_BUS=y 308CONFIG_VIRT_TO_BUS=y
278CONFIG_HAVE_MLOCK=y
279CONFIG_HAVE_MLOCKED_PAGE_BIT=y
280# CONFIG_KSM is not set 309# CONFIG_KSM is not set
281CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 310CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
282CONFIG_PPC_4K_PAGES=y 311CONFIG_PPC_4K_PAGES=y
@@ -403,9 +432,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
403# CONFIG_AF_RXRPC is not set 432# CONFIG_AF_RXRPC is not set
404CONFIG_WIRELESS=y 433CONFIG_WIRELESS=y
405# CONFIG_CFG80211 is not set 434# CONFIG_CFG80211 is not set
406CONFIG_CFG80211_DEFAULT_PS_VALUE=0
407CONFIG_WIRELESS_OLD_REGULATORY=y
408# CONFIG_WIRELESS_EXT is not set
409# CONFIG_LIB80211 is not set 435# CONFIG_LIB80211 is not set
410 436
411# 437#
@@ -443,6 +469,10 @@ CONFIG_BLK_DEV=y
443# CONFIG_BLK_DEV_COW_COMMON is not set 469# CONFIG_BLK_DEV_COW_COMMON is not set
444CONFIG_BLK_DEV_LOOP=y 470CONFIG_BLK_DEV_LOOP=y
445# CONFIG_BLK_DEV_CRYPTOLOOP is not set 471# CONFIG_BLK_DEV_CRYPTOLOOP is not set
472
473#
474# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
475#
446# CONFIG_BLK_DEV_NBD is not set 476# CONFIG_BLK_DEV_NBD is not set
447# CONFIG_BLK_DEV_SX8 is not set 477# CONFIG_BLK_DEV_SX8 is not set
448CONFIG_BLK_DEV_RAM=y 478CONFIG_BLK_DEV_RAM=y
@@ -453,6 +483,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
453# CONFIG_ATA_OVER_ETH is not set 483# CONFIG_ATA_OVER_ETH is not set
454# CONFIG_BLK_DEV_HD is not set 484# CONFIG_BLK_DEV_HD is not set
455CONFIG_MISC_DEVICES=y 485CONFIG_MISC_DEVICES=y
486# CONFIG_AD525X_DPOT is not set
456# CONFIG_PHANTOM is not set 487# CONFIG_PHANTOM is not set
457# CONFIG_SGI_IOC4 is not set 488# CONFIG_SGI_IOC4 is not set
458# CONFIG_TIFM_CORE is not set 489# CONFIG_TIFM_CORE is not set
@@ -460,6 +491,7 @@ CONFIG_MISC_DEVICES=y
460# CONFIG_ENCLOSURE_SERVICES is not set 491# CONFIG_ENCLOSURE_SERVICES is not set
461# CONFIG_HP_ILO is not set 492# CONFIG_HP_ILO is not set
462# CONFIG_ISL29003 is not set 493# CONFIG_ISL29003 is not set
494# CONFIG_DS1682 is not set
463# CONFIG_C2PORT is not set 495# CONFIG_C2PORT is not set
464 496
465# 497#
@@ -512,7 +544,9 @@ CONFIG_SCSI_LOWLEVEL=y
512# CONFIG_SCSI_BNX2_ISCSI is not set 544# CONFIG_SCSI_BNX2_ISCSI is not set
513# CONFIG_BE2ISCSI is not set 545# CONFIG_BE2ISCSI is not set
514# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 546# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
547# CONFIG_SCSI_HPSA is not set
515# CONFIG_SCSI_3W_9XXX is not set 548# CONFIG_SCSI_3W_9XXX is not set
549# CONFIG_SCSI_3W_SAS is not set
516# CONFIG_SCSI_ACARD is not set 550# CONFIG_SCSI_ACARD is not set
517# CONFIG_SCSI_AACRAID is not set 551# CONFIG_SCSI_AACRAID is not set
518# CONFIG_SCSI_AIC7XXX is not set 552# CONFIG_SCSI_AIC7XXX is not set
@@ -551,6 +585,7 @@ CONFIG_SCSI_LOWLEVEL=y
551# CONFIG_SCSI_NSP32 is not set 585# CONFIG_SCSI_NSP32 is not set
552# CONFIG_SCSI_DEBUG is not set 586# CONFIG_SCSI_DEBUG is not set
553# CONFIG_SCSI_PMCRAID is not set 587# CONFIG_SCSI_PMCRAID is not set
588# CONFIG_SCSI_PM8001 is not set
554# CONFIG_SCSI_SRP is not set 589# CONFIG_SCSI_SRP is not set
555# CONFIG_SCSI_BFA_FC is not set 590# CONFIG_SCSI_BFA_FC is not set
556# CONFIG_SCSI_DH is not set 591# CONFIG_SCSI_DH is not set
@@ -606,15 +641,16 @@ CONFIG_ATA_SFF=y
606# CONFIG_PATA_NS87415 is not set 641# CONFIG_PATA_NS87415 is not set
607# CONFIG_PATA_OPTI is not set 642# CONFIG_PATA_OPTI is not set
608# CONFIG_PATA_OPTIDMA is not set 643# CONFIG_PATA_OPTIDMA is not set
644# CONFIG_PATA_PDC2027X is not set
609# CONFIG_PATA_PDC_OLD is not set 645# CONFIG_PATA_PDC_OLD is not set
610# CONFIG_PATA_RADISYS is not set 646# CONFIG_PATA_RADISYS is not set
611# CONFIG_PATA_RDC is not set 647# CONFIG_PATA_RDC is not set
612# CONFIG_PATA_RZ1000 is not set 648# CONFIG_PATA_RZ1000 is not set
613# CONFIG_PATA_SC1200 is not set 649# CONFIG_PATA_SC1200 is not set
614# CONFIG_PATA_SERVERWORKS is not set 650# CONFIG_PATA_SERVERWORKS is not set
615# CONFIG_PATA_PDC2027X is not set
616# CONFIG_PATA_SIL680 is not set 651# CONFIG_PATA_SIL680 is not set
617# CONFIG_PATA_SIS is not set 652# CONFIG_PATA_SIS is not set
653# CONFIG_PATA_TOSHIBA is not set
618# CONFIG_PATA_VIA is not set 654# CONFIG_PATA_VIA is not set
619# CONFIG_PATA_WINBOND is not set 655# CONFIG_PATA_WINBOND is not set
620# CONFIG_PATA_PLATFORM is not set 656# CONFIG_PATA_PLATFORM is not set
@@ -631,7 +667,7 @@ CONFIG_ATA_SFF=y
631# 667#
632 668
633# 669#
634# See the help texts for more information. 670# The newer stack is recommended.
635# 671#
636# CONFIG_FIREWIRE is not set 672# CONFIG_FIREWIRE is not set
637# CONFIG_IEEE1394 is not set 673# CONFIG_IEEE1394 is not set
@@ -736,8 +772,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y
736# CONFIG_BE2NET is not set 772# CONFIG_BE2NET is not set
737# CONFIG_TR is not set 773# CONFIG_TR is not set
738CONFIG_WLAN=y 774CONFIG_WLAN=y
739# CONFIG_WLAN_PRE80211 is not set 775# CONFIG_AIRO is not set
740# CONFIG_WLAN_80211 is not set 776# CONFIG_ATMEL is not set
777# CONFIG_PRISM54 is not set
778# CONFIG_HOSTAP is not set
741 779
742# 780#
743# Enable WiMAX (Networking options) to see the WiMAX drivers 781# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -751,6 +789,7 @@ CONFIG_WLAN=y
751# CONFIG_NETCONSOLE is not set 789# CONFIG_NETCONSOLE is not set
752# CONFIG_NETPOLL is not set 790# CONFIG_NETPOLL is not set
753# CONFIG_NET_POLL_CONTROLLER is not set 791# CONFIG_NET_POLL_CONTROLLER is not set
792# CONFIG_VMXNET3 is not set
754# CONFIG_ISDN is not set 793# CONFIG_ISDN is not set
755# CONFIG_PHONE is not set 794# CONFIG_PHONE is not set
756 795
@@ -760,6 +799,7 @@ CONFIG_WLAN=y
760CONFIG_INPUT=y 799CONFIG_INPUT=y
761# CONFIG_INPUT_FF_MEMLESS is not set 800# CONFIG_INPUT_FF_MEMLESS is not set
762# CONFIG_INPUT_POLLDEV is not set 801# CONFIG_INPUT_POLLDEV is not set
802# CONFIG_INPUT_SPARSEKMAP is not set
763 803
764# 804#
765# Userland interfaces 805# Userland interfaces
@@ -811,6 +851,7 @@ CONFIG_SERIAL_CORE=y
811CONFIG_SERIAL_CORE_CONSOLE=y 851CONFIG_SERIAL_CORE_CONSOLE=y
812# CONFIG_SERIAL_JSM is not set 852# CONFIG_SERIAL_JSM is not set
813# CONFIG_SERIAL_OF_PLATFORM is not set 853# CONFIG_SERIAL_OF_PLATFORM is not set
854# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
814CONFIG_UNIX98_PTYS=y 855CONFIG_UNIX98_PTYS=y
815# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 856# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
816CONFIG_LEGACY_PTYS=y 857CONFIG_LEGACY_PTYS=y
@@ -868,11 +909,6 @@ CONFIG_I2C_MPC=y
868# CONFIG_I2C_TAOS_EVM is not set 909# CONFIG_I2C_TAOS_EVM is not set
869 910
870# 911#
871# Graphics adapter I2C/DDC channel drivers
872#
873# CONFIG_I2C_VOODOO3 is not set
874
875#
876# Other I2C/SMBus bus drivers 912# Other I2C/SMBus bus drivers
877# 913#
878# CONFIG_I2C_PCA_PLATFORM is not set 914# CONFIG_I2C_PCA_PLATFORM is not set
@@ -881,7 +917,6 @@ CONFIG_I2C_MPC=y
881# 917#
882# Miscellaneous I2C Chip support 918# Miscellaneous I2C Chip support
883# 919#
884# CONFIG_DS1682 is not set
885# CONFIG_SENSORS_TSL2550 is not set 920# CONFIG_SENSORS_TSL2550 is not set
886# CONFIG_I2C_DEBUG_CORE is not set 921# CONFIG_I2C_DEBUG_CORE is not set
887# CONFIG_I2C_DEBUG_ALGO is not set 922# CONFIG_I2C_DEBUG_ALGO is not set
@@ -927,6 +962,7 @@ CONFIG_HWMON=y
927# CONFIG_SENSORS_GL520SM is not set 962# CONFIG_SENSORS_GL520SM is not set
928# CONFIG_SENSORS_IT87 is not set 963# CONFIG_SENSORS_IT87 is not set
929# CONFIG_SENSORS_LM63 is not set 964# CONFIG_SENSORS_LM63 is not set
965# CONFIG_SENSORS_LM73 is not set
930# CONFIG_SENSORS_LM75 is not set 966# CONFIG_SENSORS_LM75 is not set
931# CONFIG_SENSORS_LM77 is not set 967# CONFIG_SENSORS_LM77 is not set
932# CONFIG_SENSORS_LM78 is not set 968# CONFIG_SENSORS_LM78 is not set
@@ -965,6 +1001,7 @@ CONFIG_HWMON=y
965# CONFIG_SENSORS_W83L786NG is not set 1001# CONFIG_SENSORS_W83L786NG is not set
966# CONFIG_SENSORS_W83627HF is not set 1002# CONFIG_SENSORS_W83627HF is not set
967# CONFIG_SENSORS_W83627EHF is not set 1003# CONFIG_SENSORS_W83627EHF is not set
1004# CONFIG_SENSORS_LIS3_I2C is not set
968# CONFIG_THERMAL is not set 1005# CONFIG_THERMAL is not set
969CONFIG_WATCHDOG=y 1006CONFIG_WATCHDOG=y
970# CONFIG_WATCHDOG_NOWAYOUT is not set 1007# CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -997,11 +1034,13 @@ CONFIG_SSB_POSSIBLE=y
997# CONFIG_TWL4030_CORE is not set 1034# CONFIG_TWL4030_CORE is not set
998# CONFIG_MFD_TMIO is not set 1035# CONFIG_MFD_TMIO is not set
999# CONFIG_PMIC_DA903X is not set 1036# CONFIG_PMIC_DA903X is not set
1037# CONFIG_PMIC_ADP5520 is not set
1000# CONFIG_MFD_WM8400 is not set 1038# CONFIG_MFD_WM8400 is not set
1001# CONFIG_MFD_WM831X is not set 1039# CONFIG_MFD_WM831X is not set
1002# CONFIG_MFD_WM8350_I2C is not set 1040# CONFIG_MFD_WM8350_I2C is not set
1003# CONFIG_MFD_PCF50633 is not set 1041# CONFIG_MFD_PCF50633 is not set
1004# CONFIG_AB3100_CORE is not set 1042# CONFIG_AB3100_CORE is not set
1043# CONFIG_MFD_88PM8607 is not set
1005# CONFIG_REGULATOR is not set 1044# CONFIG_REGULATOR is not set
1006# CONFIG_MEDIA_SUPPORT is not set 1045# CONFIG_MEDIA_SUPPORT is not set
1007 1046
@@ -1226,7 +1265,7 @@ CONFIG_FRAME_WARN=1024
1226# CONFIG_DEBUG_FS is not set 1265# CONFIG_DEBUG_FS is not set
1227# CONFIG_HEADERS_CHECK is not set 1266# CONFIG_HEADERS_CHECK is not set
1228# CONFIG_DEBUG_KERNEL is not set 1267# CONFIG_DEBUG_KERNEL is not set
1229# CONFIG_DEBUG_BUGVERBOSE is not set 1268CONFIG_DEBUG_BUGVERBOSE=y
1230# CONFIG_DEBUG_MEMORY_INIT is not set 1269# CONFIG_DEBUG_MEMORY_INIT is not set
1231# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1270# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1232# CONFIG_LATENCYTOP is not set 1271# CONFIG_LATENCYTOP is not set
@@ -1253,7 +1292,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1253# CONFIG_KEYS is not set 1292# CONFIG_KEYS is not set
1254# CONFIG_SECURITY is not set 1293# CONFIG_SECURITY is not set
1255# CONFIG_SECURITYFS is not set 1294# CONFIG_SECURITYFS is not set
1256# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1295# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1296# CONFIG_DEFAULT_SECURITY_SMACK is not set
1297# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1298CONFIG_DEFAULT_SECURITY_DAC=y
1299CONFIG_DEFAULT_SECURITY=""
1257CONFIG_CRYPTO=y 1300CONFIG_CRYPTO=y
1258 1301
1259# 1302#
diff --git a/arch/powerpc/configs/83xx/mpc837x_rdb_defconfig b/arch/powerpc/configs/83xx/mpc837x_rdb_defconfig
index 9e9158a5b190..a84fd1194e2b 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:30 2009 4# Wed Jan 6 09:24:24 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -37,6 +37,7 @@ CONFIG_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 38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
40CONFIG_NR_IRQS=512
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y 43CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y
59CONFIG_GENERIC_BUG=y 60CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y 61CONFIG_DTC=y
61CONFIG_DEFAULT_UIMAGE=y 62CONFIG_DEFAULT_UIMAGE=y
63CONFIG_ARCH_HIBERNATION_POSSIBLE=y
62CONFIG_ARCH_SUSPEND_POSSIBLE=y 64CONFIG_ARCH_SUSPEND_POSSIBLE=y
63# CONFIG_PPC_DCR_NATIVE is not set 65# CONFIG_PPC_DCR_NATIVE is not set
64# CONFIG_PPC_DCR_MMIO is not set 66# CONFIG_PPC_DCR_MMIO is not set
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y
87# 89#
88CONFIG_TREE_RCU=y 90CONFIG_TREE_RCU=y
89# CONFIG_TREE_PREEMPT_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
92# CONFIG_TINY_RCU is not set
90# CONFIG_RCU_TRACE is not set 93# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32 94CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set 95# CONFIG_RCU_FANOUT_EXACT is not set
@@ -174,14 +177,41 @@ CONFIG_LBDAF=y
174# IO Schedulers 177# IO Schedulers
175# 178#
176CONFIG_IOSCHED_NOOP=y 179CONFIG_IOSCHED_NOOP=y
177CONFIG_IOSCHED_AS=y
178CONFIG_IOSCHED_DEADLINE=y 180CONFIG_IOSCHED_DEADLINE=y
179CONFIG_IOSCHED_CFQ=y 181CONFIG_IOSCHED_CFQ=y
180CONFIG_DEFAULT_AS=y
181# CONFIG_DEFAULT_DEADLINE is not set 182# CONFIG_DEFAULT_DEADLINE is not set
182# CONFIG_DEFAULT_CFQ is not set 183CONFIG_DEFAULT_CFQ=y
183# CONFIG_DEFAULT_NOOP is not set 184# CONFIG_DEFAULT_NOOP is not set
184CONFIG_DEFAULT_IOSCHED="anticipatory" 185CONFIG_DEFAULT_IOSCHED="cfq"
186# CONFIG_INLINE_SPIN_TRYLOCK is not set
187# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
188# CONFIG_INLINE_SPIN_LOCK is not set
189# CONFIG_INLINE_SPIN_LOCK_BH is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
191# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
192CONFIG_INLINE_SPIN_UNLOCK=y
193# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
194CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
195# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
196# CONFIG_INLINE_READ_TRYLOCK is not set
197# CONFIG_INLINE_READ_LOCK is not set
198# CONFIG_INLINE_READ_LOCK_BH is not set
199# CONFIG_INLINE_READ_LOCK_IRQ is not set
200# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
201CONFIG_INLINE_READ_UNLOCK=y
202# CONFIG_INLINE_READ_UNLOCK_BH is not set
203CONFIG_INLINE_READ_UNLOCK_IRQ=y
204# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
205# CONFIG_INLINE_WRITE_TRYLOCK is not set
206# CONFIG_INLINE_WRITE_LOCK is not set
207# CONFIG_INLINE_WRITE_LOCK_BH is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
209# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
210CONFIG_INLINE_WRITE_UNLOCK=y
211# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
212CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
213# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
214# CONFIG_MUTEX_SPIN_ON_OWNER is not set
185# CONFIG_FREEZER is not set 215# CONFIG_FREEZER is not set
186 216
187# 217#
@@ -259,6 +289,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 289CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
260# CONFIG_KEXEC is not set 290# CONFIG_KEXEC is not set
261# CONFIG_CRASH_DUMP is not set 291# CONFIG_CRASH_DUMP is not set
292CONFIG_SPARSE_IRQ=y
262CONFIG_MAX_ACTIVE_REGIONS=32 293CONFIG_MAX_ACTIVE_REGIONS=32
263CONFIG_ARCH_FLATMEM_ENABLE=y 294CONFIG_ARCH_FLATMEM_ENABLE=y
264CONFIG_ARCH_POPULATES_NODE_MAP=y 295CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -275,8 +306,6 @@ CONFIG_MIGRATION=y
275CONFIG_ZONE_DMA_FLAG=1 306CONFIG_ZONE_DMA_FLAG=1
276CONFIG_BOUNCE=y 307CONFIG_BOUNCE=y
277CONFIG_VIRT_TO_BUS=y 308CONFIG_VIRT_TO_BUS=y
278CONFIG_HAVE_MLOCK=y
279CONFIG_HAVE_MLOCKED_PAGE_BIT=y
280# CONFIG_KSM is not set 309# CONFIG_KSM is not set
281CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 310CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
282CONFIG_PPC_4K_PAGES=y 311CONFIG_PPC_4K_PAGES=y
@@ -398,9 +427,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
398# CONFIG_AF_RXRPC is not set 427# CONFIG_AF_RXRPC is not set
399CONFIG_WIRELESS=y 428CONFIG_WIRELESS=y
400# CONFIG_CFG80211 is not set 429# CONFIG_CFG80211 is not set
401CONFIG_CFG80211_DEFAULT_PS_VALUE=0
402CONFIG_WIRELESS_OLD_REGULATORY=y
403# CONFIG_WIRELESS_EXT is not set
404# CONFIG_LIB80211 is not set 430# CONFIG_LIB80211 is not set
405 431
406# 432#
@@ -438,6 +464,10 @@ CONFIG_BLK_DEV=y
438# CONFIG_BLK_DEV_COW_COMMON is not set 464# CONFIG_BLK_DEV_COW_COMMON is not set
439CONFIG_BLK_DEV_LOOP=y 465CONFIG_BLK_DEV_LOOP=y
440# CONFIG_BLK_DEV_CRYPTOLOOP is not set 466# CONFIG_BLK_DEV_CRYPTOLOOP is not set
467
468#
469# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
470#
441# CONFIG_BLK_DEV_NBD is not set 471# CONFIG_BLK_DEV_NBD is not set
442# CONFIG_BLK_DEV_SX8 is not set 472# CONFIG_BLK_DEV_SX8 is not set
443# CONFIG_BLK_DEV_UB is not set 473# CONFIG_BLK_DEV_UB is not set
@@ -449,6 +479,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
449# CONFIG_ATA_OVER_ETH is not set 479# CONFIG_ATA_OVER_ETH is not set
450# CONFIG_BLK_DEV_HD is not set 480# CONFIG_BLK_DEV_HD is not set
451CONFIG_MISC_DEVICES=y 481CONFIG_MISC_DEVICES=y
482# CONFIG_AD525X_DPOT is not set
452# CONFIG_PHANTOM is not set 483# CONFIG_PHANTOM is not set
453# CONFIG_SGI_IOC4 is not set 484# CONFIG_SGI_IOC4 is not set
454# CONFIG_TIFM_CORE is not set 485# CONFIG_TIFM_CORE is not set
@@ -456,6 +487,7 @@ CONFIG_MISC_DEVICES=y
456# CONFIG_ENCLOSURE_SERVICES is not set 487# CONFIG_ENCLOSURE_SERVICES is not set
457# CONFIG_HP_ILO is not set 488# CONFIG_HP_ILO is not set
458# CONFIG_ISL29003 is not set 489# CONFIG_ISL29003 is not set
490# CONFIG_DS1682 is not set
459# CONFIG_C2PORT is not set 491# CONFIG_C2PORT is not set
460 492
461# 493#
@@ -507,7 +539,9 @@ CONFIG_SCSI_LOWLEVEL=y
507# CONFIG_SCSI_BNX2_ISCSI is not set 539# CONFIG_SCSI_BNX2_ISCSI is not set
508# CONFIG_BE2ISCSI is not set 540# CONFIG_BE2ISCSI is not set
509# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 541# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
542# CONFIG_SCSI_HPSA is not set
510# CONFIG_SCSI_3W_9XXX is not set 543# CONFIG_SCSI_3W_9XXX is not set
544# CONFIG_SCSI_3W_SAS is not set
511# CONFIG_SCSI_ACARD is not set 545# CONFIG_SCSI_ACARD is not set
512# CONFIG_SCSI_AACRAID is not set 546# CONFIG_SCSI_AACRAID is not set
513# CONFIG_SCSI_AIC7XXX is not set 547# CONFIG_SCSI_AIC7XXX is not set
@@ -546,6 +580,7 @@ CONFIG_SCSI_LOWLEVEL=y
546# CONFIG_SCSI_NSP32 is not set 580# CONFIG_SCSI_NSP32 is not set
547# CONFIG_SCSI_DEBUG is not set 581# CONFIG_SCSI_DEBUG is not set
548# CONFIG_SCSI_PMCRAID is not set 582# CONFIG_SCSI_PMCRAID is not set
583# CONFIG_SCSI_PM8001 is not set
549# CONFIG_SCSI_SRP is not set 584# CONFIG_SCSI_SRP is not set
550# CONFIG_SCSI_BFA_FC is not set 585# CONFIG_SCSI_BFA_FC is not set
551# CONFIG_SCSI_DH is not set 586# CONFIG_SCSI_DH is not set
@@ -601,15 +636,16 @@ CONFIG_ATA_SFF=y
601# CONFIG_PATA_NS87415 is not set 636# CONFIG_PATA_NS87415 is not set
602# CONFIG_PATA_OPTI is not set 637# CONFIG_PATA_OPTI is not set
603# CONFIG_PATA_OPTIDMA is not set 638# CONFIG_PATA_OPTIDMA is not set
639# CONFIG_PATA_PDC2027X is not set
604# CONFIG_PATA_PDC_OLD is not set 640# CONFIG_PATA_PDC_OLD is not set
605# CONFIG_PATA_RADISYS is not set 641# CONFIG_PATA_RADISYS is not set
606# CONFIG_PATA_RDC is not set 642# CONFIG_PATA_RDC is not set
607# CONFIG_PATA_RZ1000 is not set 643# CONFIG_PATA_RZ1000 is not set
608# CONFIG_PATA_SC1200 is not set 644# CONFIG_PATA_SC1200 is not set
609# CONFIG_PATA_SERVERWORKS is not set 645# CONFIG_PATA_SERVERWORKS is not set
610# CONFIG_PATA_PDC2027X is not set
611# CONFIG_PATA_SIL680 is not set 646# CONFIG_PATA_SIL680 is not set
612# CONFIG_PATA_SIS is not set 647# CONFIG_PATA_SIS is not set
648# CONFIG_PATA_TOSHIBA is not set
613# CONFIG_PATA_VIA is not set 649# CONFIG_PATA_VIA is not set
614# CONFIG_PATA_WINBOND is not set 650# CONFIG_PATA_WINBOND is not set
615# CONFIG_PATA_PLATFORM is not set 651# CONFIG_PATA_PLATFORM is not set
@@ -638,7 +674,7 @@ CONFIG_MD_RAID6_PQ=y
638# 674#
639 675
640# 676#
641# See the help texts for more information. 677# The newer stack is recommended.
642# 678#
643# CONFIG_FIREWIRE is not set 679# CONFIG_FIREWIRE is not set
644# CONFIG_IEEE1394 is not set 680# CONFIG_IEEE1394 is not set
@@ -725,8 +761,11 @@ CONFIG_GIANFAR=y
725# CONFIG_NETDEV_10000 is not set 761# CONFIG_NETDEV_10000 is not set
726# CONFIG_TR is not set 762# CONFIG_TR is not set
727CONFIG_WLAN=y 763CONFIG_WLAN=y
728# CONFIG_WLAN_PRE80211 is not set 764# CONFIG_AIRO is not set
729# CONFIG_WLAN_80211 is not set 765# CONFIG_ATMEL is not set
766# CONFIG_PRISM54 is not set
767# CONFIG_USB_ZD1201 is not set
768# CONFIG_HOSTAP is not set
730 769
731# 770#
732# Enable WiMAX (Networking options) to see the WiMAX drivers 771# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -749,6 +788,7 @@ CONFIG_WLAN=y
749# CONFIG_NETCONSOLE is not set 788# CONFIG_NETCONSOLE is not set
750# CONFIG_NETPOLL is not set 789# CONFIG_NETPOLL is not set
751# CONFIG_NET_POLL_CONTROLLER is not set 790# CONFIG_NET_POLL_CONTROLLER is not set
791# CONFIG_VMXNET3 is not set
752# CONFIG_ISDN is not set 792# CONFIG_ISDN is not set
753# CONFIG_PHONE is not set 793# CONFIG_PHONE is not set
754 794
@@ -758,6 +798,7 @@ CONFIG_WLAN=y
758CONFIG_INPUT=y 798CONFIG_INPUT=y
759CONFIG_INPUT_FF_MEMLESS=m 799CONFIG_INPUT_FF_MEMLESS=m
760# CONFIG_INPUT_POLLDEV is not set 800# CONFIG_INPUT_POLLDEV is not set
801# CONFIG_INPUT_SPARSEKMAP is not set
761 802
762# 803#
763# Userland interfaces 804# Userland interfaces
@@ -809,6 +850,7 @@ CONFIG_SERIAL_CORE=y
809CONFIG_SERIAL_CORE_CONSOLE=y 850CONFIG_SERIAL_CORE_CONSOLE=y
810# CONFIG_SERIAL_JSM is not set 851# CONFIG_SERIAL_JSM is not set
811# CONFIG_SERIAL_OF_PLATFORM is not set 852# CONFIG_SERIAL_OF_PLATFORM is not set
853# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
812CONFIG_UNIX98_PTYS=y 854CONFIG_UNIX98_PTYS=y
813# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 855# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
814CONFIG_LEGACY_PTYS=y 856CONFIG_LEGACY_PTYS=y
@@ -867,11 +909,6 @@ CONFIG_I2C_MPC=y
867# CONFIG_I2C_TINY_USB is not set 909# CONFIG_I2C_TINY_USB is not set
868 910
869# 911#
870# Graphics adapter I2C/DDC channel drivers
871#
872# CONFIG_I2C_VOODOO3 is not set
873
874#
875# Other I2C/SMBus bus drivers 912# Other I2C/SMBus bus drivers
876# 913#
877# CONFIG_I2C_PCA_PLATFORM is not set 914# CONFIG_I2C_PCA_PLATFORM is not set
@@ -880,7 +917,6 @@ CONFIG_I2C_MPC=y
880# 917#
881# Miscellaneous I2C Chip support 918# Miscellaneous I2C Chip support
882# 919#
883# CONFIG_DS1682 is not set
884# CONFIG_SENSORS_TSL2550 is not set 920# CONFIG_SENSORS_TSL2550 is not set
885# CONFIG_I2C_DEBUG_CORE is not set 921# CONFIG_I2C_DEBUG_CORE is not set
886# CONFIG_I2C_DEBUG_ALGO is not set 922# CONFIG_I2C_DEBUG_ALGO is not set
@@ -926,6 +962,7 @@ CONFIG_HWMON=y
926# CONFIG_SENSORS_GL520SM is not set 962# CONFIG_SENSORS_GL520SM is not set
927# CONFIG_SENSORS_IT87 is not set 963# CONFIG_SENSORS_IT87 is not set
928# CONFIG_SENSORS_LM63 is not set 964# CONFIG_SENSORS_LM63 is not set
965# CONFIG_SENSORS_LM73 is not set
929# CONFIG_SENSORS_LM75 is not set 966# CONFIG_SENSORS_LM75 is not set
930# CONFIG_SENSORS_LM77 is not set 967# CONFIG_SENSORS_LM77 is not set
931# CONFIG_SENSORS_LM78 is not set 968# CONFIG_SENSORS_LM78 is not set
@@ -964,6 +1001,7 @@ CONFIG_HWMON=y
964# CONFIG_SENSORS_W83L786NG is not set 1001# CONFIG_SENSORS_W83L786NG is not set
965# CONFIG_SENSORS_W83627HF is not set 1002# CONFIG_SENSORS_W83627HF is not set
966# CONFIG_SENSORS_W83627EHF is not set 1003# CONFIG_SENSORS_W83627EHF is not set
1004# CONFIG_SENSORS_LIS3_I2C is not set
967# CONFIG_THERMAL is not set 1005# CONFIG_THERMAL is not set
968CONFIG_WATCHDOG=y 1006CONFIG_WATCHDOG=y
969# CONFIG_WATCHDOG_NOWAYOUT is not set 1007# CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -1001,11 +1039,13 @@ CONFIG_SSB_POSSIBLE=y
1001# CONFIG_TWL4030_CORE is not set 1039# CONFIG_TWL4030_CORE is not set
1002# CONFIG_MFD_TMIO is not set 1040# CONFIG_MFD_TMIO is not set
1003# CONFIG_PMIC_DA903X is not set 1041# CONFIG_PMIC_DA903X is not set
1042# CONFIG_PMIC_ADP5520 is not set
1004# CONFIG_MFD_WM8400 is not set 1043# CONFIG_MFD_WM8400 is not set
1005# CONFIG_MFD_WM831X is not set 1044# CONFIG_MFD_WM831X is not set
1006# CONFIG_MFD_WM8350_I2C is not set 1045# CONFIG_MFD_WM8350_I2C is not set
1007# CONFIG_MFD_PCF50633 is not set 1046# CONFIG_MFD_PCF50633 is not set
1008# CONFIG_AB3100_CORE is not set 1047# CONFIG_AB3100_CORE is not set
1048# CONFIG_MFD_88PM8607 is not set
1009# CONFIG_REGULATOR is not set 1049# CONFIG_REGULATOR is not set
1010# CONFIG_MEDIA_SUPPORT is not set 1050# CONFIG_MEDIA_SUPPORT is not set
1011 1051
@@ -1097,6 +1137,7 @@ CONFIG_USB_MON=y
1097CONFIG_USB_EHCI_HCD=y 1137CONFIG_USB_EHCI_HCD=y
1098CONFIG_USB_EHCI_ROOT_HUB_TT=y 1138CONFIG_USB_EHCI_ROOT_HUB_TT=y
1099# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1139# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1140# CONFIG_XPS_USB_HCD_XILINX is not set
1100CONFIG_USB_EHCI_FSL=y 1141CONFIG_USB_EHCI_FSL=y
1101CONFIG_USB_EHCI_HCD_PPC_OF=y 1142CONFIG_USB_EHCI_HCD_PPC_OF=y
1102# CONFIG_USB_OXU210HP_HCD is not set 1143# CONFIG_USB_OXU210HP_HCD is not set
@@ -1385,7 +1426,7 @@ CONFIG_FRAME_WARN=1024
1385# CONFIG_DEBUG_FS is not set 1426# CONFIG_DEBUG_FS is not set
1386# CONFIG_HEADERS_CHECK is not set 1427# CONFIG_HEADERS_CHECK is not set
1387# CONFIG_DEBUG_KERNEL is not set 1428# CONFIG_DEBUG_KERNEL is not set
1388# CONFIG_DEBUG_BUGVERBOSE is not set 1429CONFIG_DEBUG_BUGVERBOSE=y
1389# CONFIG_DEBUG_MEMORY_INIT is not set 1430# CONFIG_DEBUG_MEMORY_INIT is not set
1390# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1431# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1391# CONFIG_LATENCYTOP is not set 1432# CONFIG_LATENCYTOP is not set
@@ -1412,7 +1453,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1412# CONFIG_KEYS is not set 1453# CONFIG_KEYS is not set
1413# CONFIG_SECURITY is not set 1454# CONFIG_SECURITY is not set
1414# CONFIG_SECURITYFS is not set 1455# CONFIG_SECURITYFS is not set
1415# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1456# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1457# CONFIG_DEFAULT_SECURITY_SMACK is not set
1458# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1459CONFIG_DEFAULT_SECURITY_DAC=y
1460CONFIG_DEFAULT_SECURITY=""
1416CONFIG_XOR_BLOCKS=y 1461CONFIG_XOR_BLOCKS=y
1417CONFIG_ASYNC_CORE=y 1462CONFIG_ASYNC_CORE=y
1418CONFIG_ASYNC_MEMCPY=y 1463CONFIG_ASYNC_MEMCPY=y
diff --git a/arch/powerpc/configs/83xx/sbc834x_defconfig b/arch/powerpc/configs/83xx/sbc834x_defconfig
index 6b399154970f..72c2067137b9 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:31 2009 4# Wed Jan 6 09:24:25 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -37,6 +37,7 @@ CONFIG_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 38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
40CONFIG_NR_IRQS=512
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y 43CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y
59CONFIG_GENERIC_BUG=y 60CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y 61CONFIG_DTC=y
61CONFIG_DEFAULT_UIMAGE=y 62CONFIG_DEFAULT_UIMAGE=y
63CONFIG_ARCH_HIBERNATION_POSSIBLE=y
62CONFIG_ARCH_SUSPEND_POSSIBLE=y 64CONFIG_ARCH_SUSPEND_POSSIBLE=y
63# CONFIG_PPC_DCR_NATIVE is not set 65# CONFIG_PPC_DCR_NATIVE is not set
64# CONFIG_PPC_DCR_MMIO is not set 66# CONFIG_PPC_DCR_MMIO is not set
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y
87# 89#
88CONFIG_TREE_RCU=y 90CONFIG_TREE_RCU=y
89# CONFIG_TREE_PREEMPT_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
92# CONFIG_TINY_RCU is not set
90# CONFIG_RCU_TRACE is not set 93# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32 94CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set 95# CONFIG_RCU_FANOUT_EXACT is not set
@@ -172,14 +175,41 @@ CONFIG_LBDAF=y
172# IO Schedulers 175# IO Schedulers
173# 176#
174CONFIG_IOSCHED_NOOP=y 177CONFIG_IOSCHED_NOOP=y
175CONFIG_IOSCHED_AS=y
176CONFIG_IOSCHED_DEADLINE=y 178CONFIG_IOSCHED_DEADLINE=y
177CONFIG_IOSCHED_CFQ=y 179CONFIG_IOSCHED_CFQ=y
178CONFIG_DEFAULT_AS=y
179# CONFIG_DEFAULT_DEADLINE is not set 180# CONFIG_DEFAULT_DEADLINE is not set
180# CONFIG_DEFAULT_CFQ is not set 181CONFIG_DEFAULT_CFQ=y
181# CONFIG_DEFAULT_NOOP is not set 182# CONFIG_DEFAULT_NOOP is not set
182CONFIG_DEFAULT_IOSCHED="anticipatory" 183CONFIG_DEFAULT_IOSCHED="cfq"
184# CONFIG_INLINE_SPIN_TRYLOCK is not set
185# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
186# CONFIG_INLINE_SPIN_LOCK is not set
187# CONFIG_INLINE_SPIN_LOCK_BH is not set
188# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
190CONFIG_INLINE_SPIN_UNLOCK=y
191# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
192CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
193# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
194# CONFIG_INLINE_READ_TRYLOCK is not set
195# CONFIG_INLINE_READ_LOCK is not set
196# CONFIG_INLINE_READ_LOCK_BH is not set
197# CONFIG_INLINE_READ_LOCK_IRQ is not set
198# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
199CONFIG_INLINE_READ_UNLOCK=y
200# CONFIG_INLINE_READ_UNLOCK_BH is not set
201CONFIG_INLINE_READ_UNLOCK_IRQ=y
202# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
203# CONFIG_INLINE_WRITE_TRYLOCK is not set
204# CONFIG_INLINE_WRITE_LOCK is not set
205# CONFIG_INLINE_WRITE_LOCK_BH is not set
206# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
208CONFIG_INLINE_WRITE_UNLOCK=y
209# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
210CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
211# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
212# CONFIG_MUTEX_SPIN_ON_OWNER is not set
183# CONFIG_FREEZER is not set 213# CONFIG_FREEZER is not set
184 214
185# 215#
@@ -257,6 +287,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
257CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 287CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
258# CONFIG_KEXEC is not set 288# CONFIG_KEXEC is not set
259# CONFIG_CRASH_DUMP is not set 289# CONFIG_CRASH_DUMP is not set
290CONFIG_SPARSE_IRQ=y
260CONFIG_MAX_ACTIVE_REGIONS=32 291CONFIG_MAX_ACTIVE_REGIONS=32
261CONFIG_ARCH_FLATMEM_ENABLE=y 292CONFIG_ARCH_FLATMEM_ENABLE=y
262CONFIG_ARCH_POPULATES_NODE_MAP=y 293CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -273,8 +304,6 @@ CONFIG_MIGRATION=y
273CONFIG_ZONE_DMA_FLAG=1 304CONFIG_ZONE_DMA_FLAG=1
274CONFIG_BOUNCE=y 305CONFIG_BOUNCE=y
275CONFIG_VIRT_TO_BUS=y 306CONFIG_VIRT_TO_BUS=y
276CONFIG_HAVE_MLOCK=y
277CONFIG_HAVE_MLOCKED_PAGE_BIT=y
278# CONFIG_KSM is not set 307# CONFIG_KSM is not set
279CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 308CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
280CONFIG_PPC_4K_PAGES=y 309CONFIG_PPC_4K_PAGES=y
@@ -401,9 +430,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
401# CONFIG_AF_RXRPC is not set 430# CONFIG_AF_RXRPC is not set
402CONFIG_WIRELESS=y 431CONFIG_WIRELESS=y
403# CONFIG_CFG80211 is not set 432# CONFIG_CFG80211 is not set
404CONFIG_CFG80211_DEFAULT_PS_VALUE=0
405CONFIG_WIRELESS_OLD_REGULATORY=y
406# CONFIG_WIRELESS_EXT is not set
407# CONFIG_LIB80211 is not set 433# CONFIG_LIB80211 is not set
408 434
409# 435#
@@ -524,6 +550,10 @@ CONFIG_BLK_DEV=y
524# CONFIG_BLK_DEV_COW_COMMON is not set 550# CONFIG_BLK_DEV_COW_COMMON is not set
525CONFIG_BLK_DEV_LOOP=y 551CONFIG_BLK_DEV_LOOP=y
526# CONFIG_BLK_DEV_CRYPTOLOOP is not set 552# CONFIG_BLK_DEV_CRYPTOLOOP is not set
553
554#
555# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
556#
527# CONFIG_BLK_DEV_NBD is not set 557# CONFIG_BLK_DEV_NBD is not set
528# CONFIG_BLK_DEV_SX8 is not set 558# CONFIG_BLK_DEV_SX8 is not set
529# CONFIG_BLK_DEV_UB is not set 559# CONFIG_BLK_DEV_UB is not set
@@ -535,6 +565,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
535# CONFIG_ATA_OVER_ETH is not set 565# CONFIG_ATA_OVER_ETH is not set
536# CONFIG_BLK_DEV_HD is not set 566# CONFIG_BLK_DEV_HD is not set
537CONFIG_MISC_DEVICES=y 567CONFIG_MISC_DEVICES=y
568# CONFIG_AD525X_DPOT is not set
538# CONFIG_PHANTOM is not set 569# CONFIG_PHANTOM is not set
539# CONFIG_SGI_IOC4 is not set 570# CONFIG_SGI_IOC4 is not set
540# CONFIG_TIFM_CORE is not set 571# CONFIG_TIFM_CORE is not set
@@ -542,6 +573,7 @@ CONFIG_MISC_DEVICES=y
542# CONFIG_ENCLOSURE_SERVICES is not set 573# CONFIG_ENCLOSURE_SERVICES is not set
543# CONFIG_HP_ILO is not set 574# CONFIG_HP_ILO is not set
544# CONFIG_ISL29003 is not set 575# CONFIG_ISL29003 is not set
576# CONFIG_DS1682 is not set
545# CONFIG_C2PORT is not set 577# CONFIG_C2PORT is not set
546 578
547# 579#
@@ -604,7 +636,7 @@ CONFIG_SCSI_WAIT_SCAN=m
604# 636#
605 637
606# 638#
607# See the help texts for more information. 639# The newer stack is recommended.
608# 640#
609# CONFIG_FIREWIRE is not set 641# CONFIG_FIREWIRE is not set
610# CONFIG_IEEE1394 is not set 642# CONFIG_IEEE1394 is not set
@@ -691,8 +723,11 @@ CONFIG_GIANFAR=y
691# CONFIG_NETDEV_10000 is not set 723# CONFIG_NETDEV_10000 is not set
692# CONFIG_TR is not set 724# CONFIG_TR is not set
693CONFIG_WLAN=y 725CONFIG_WLAN=y
694# CONFIG_WLAN_PRE80211 is not set 726# CONFIG_AIRO is not set
695# CONFIG_WLAN_80211 is not set 727# CONFIG_ATMEL is not set
728# CONFIG_PRISM54 is not set
729# CONFIG_USB_ZD1201 is not set
730# CONFIG_HOSTAP is not set
696 731
697# 732#
698# Enable WiMAX (Networking options) to see the WiMAX drivers 733# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -715,6 +750,7 @@ CONFIG_WLAN=y
715# CONFIG_NETCONSOLE is not set 750# CONFIG_NETCONSOLE is not set
716# CONFIG_NETPOLL is not set 751# CONFIG_NETPOLL is not set
717# CONFIG_NET_POLL_CONTROLLER is not set 752# CONFIG_NET_POLL_CONTROLLER is not set
753# CONFIG_VMXNET3 is not set
718# CONFIG_ISDN is not set 754# CONFIG_ISDN is not set
719# CONFIG_PHONE is not set 755# CONFIG_PHONE is not set
720 756
@@ -724,6 +760,7 @@ CONFIG_WLAN=y
724CONFIG_INPUT=y 760CONFIG_INPUT=y
725# CONFIG_INPUT_FF_MEMLESS is not set 761# CONFIG_INPUT_FF_MEMLESS is not set
726# CONFIG_INPUT_POLLDEV is not set 762# CONFIG_INPUT_POLLDEV is not set
763# CONFIG_INPUT_SPARSEKMAP is not set
727 764
728# 765#
729# Userland interfaces 766# Userland interfaces
@@ -775,6 +812,7 @@ CONFIG_SERIAL_CORE=y
775CONFIG_SERIAL_CORE_CONSOLE=y 812CONFIG_SERIAL_CORE_CONSOLE=y
776# CONFIG_SERIAL_JSM is not set 813# CONFIG_SERIAL_JSM is not set
777# CONFIG_SERIAL_OF_PLATFORM is not set 814# CONFIG_SERIAL_OF_PLATFORM is not set
815# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
778CONFIG_UNIX98_PTYS=y 816CONFIG_UNIX98_PTYS=y
779# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 817# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
780CONFIG_LEGACY_PTYS=y 818CONFIG_LEGACY_PTYS=y
@@ -833,11 +871,6 @@ CONFIG_I2C_MPC=y
833# CONFIG_I2C_TINY_USB is not set 871# CONFIG_I2C_TINY_USB is not set
834 872
835# 873#
836# Graphics adapter I2C/DDC channel drivers
837#
838# CONFIG_I2C_VOODOO3 is not set
839
840#
841# Other I2C/SMBus bus drivers 874# Other I2C/SMBus bus drivers
842# 875#
843# CONFIG_I2C_PCA_PLATFORM is not set 876# CONFIG_I2C_PCA_PLATFORM is not set
@@ -846,7 +879,6 @@ CONFIG_I2C_MPC=y
846# 879#
847# Miscellaneous I2C Chip support 880# Miscellaneous I2C Chip support
848# 881#
849# CONFIG_DS1682 is not set
850# CONFIG_SENSORS_TSL2550 is not set 882# CONFIG_SENSORS_TSL2550 is not set
851# CONFIG_I2C_DEBUG_CORE is not set 883# CONFIG_I2C_DEBUG_CORE is not set
852# CONFIG_I2C_DEBUG_ALGO is not set 884# CONFIG_I2C_DEBUG_ALGO is not set
@@ -892,6 +924,7 @@ CONFIG_HWMON=y
892# CONFIG_SENSORS_GL520SM is not set 924# CONFIG_SENSORS_GL520SM is not set
893# CONFIG_SENSORS_IT87 is not set 925# CONFIG_SENSORS_IT87 is not set
894# CONFIG_SENSORS_LM63 is not set 926# CONFIG_SENSORS_LM63 is not set
927# CONFIG_SENSORS_LM73 is not set
895# CONFIG_SENSORS_LM75 is not set 928# CONFIG_SENSORS_LM75 is not set
896# CONFIG_SENSORS_LM77 is not set 929# CONFIG_SENSORS_LM77 is not set
897# CONFIG_SENSORS_LM78 is not set 930# CONFIG_SENSORS_LM78 is not set
@@ -930,6 +963,7 @@ CONFIG_HWMON=y
930# CONFIG_SENSORS_W83L786NG is not set 963# CONFIG_SENSORS_W83L786NG is not set
931# CONFIG_SENSORS_W83627HF is not set 964# CONFIG_SENSORS_W83627HF is not set
932# CONFIG_SENSORS_W83627EHF is not set 965# CONFIG_SENSORS_W83627EHF is not set
966# CONFIG_SENSORS_LIS3_I2C is not set
933# CONFIG_THERMAL is not set 967# CONFIG_THERMAL is not set
934CONFIG_WATCHDOG=y 968CONFIG_WATCHDOG=y
935# CONFIG_WATCHDOG_NOWAYOUT is not set 969# CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -967,11 +1001,13 @@ CONFIG_SSB_POSSIBLE=y
967# CONFIG_TWL4030_CORE is not set 1001# CONFIG_TWL4030_CORE is not set
968# CONFIG_MFD_TMIO is not set 1002# CONFIG_MFD_TMIO is not set
969# CONFIG_PMIC_DA903X is not set 1003# CONFIG_PMIC_DA903X is not set
1004# CONFIG_PMIC_ADP5520 is not set
970# CONFIG_MFD_WM8400 is not set 1005# CONFIG_MFD_WM8400 is not set
971# CONFIG_MFD_WM831X is not set 1006# CONFIG_MFD_WM831X is not set
972# CONFIG_MFD_WM8350_I2C is not set 1007# CONFIG_MFD_WM8350_I2C is not set
973# CONFIG_MFD_PCF50633 is not set 1008# CONFIG_MFD_PCF50633 is not set
974# CONFIG_AB3100_CORE is not set 1009# CONFIG_AB3100_CORE is not set
1010# CONFIG_MFD_88PM8607 is not set
975# CONFIG_REGULATOR is not set 1011# CONFIG_REGULATOR is not set
976# CONFIG_MEDIA_SUPPORT is not set 1012# CONFIG_MEDIA_SUPPORT is not set
977 1013
@@ -1039,6 +1075,7 @@ CONFIG_USB_MON=y
1039CONFIG_USB_EHCI_HCD=y 1075CONFIG_USB_EHCI_HCD=y
1040CONFIG_USB_EHCI_ROOT_HUB_TT=y 1076CONFIG_USB_EHCI_ROOT_HUB_TT=y
1041# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1077# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1078# CONFIG_XPS_USB_HCD_XILINX is not set
1042CONFIG_USB_EHCI_FSL=y 1079CONFIG_USB_EHCI_FSL=y
1043CONFIG_USB_EHCI_HCD_PPC_OF=y 1080CONFIG_USB_EHCI_HCD_PPC_OF=y
1044# CONFIG_USB_OXU210HP_HCD is not set 1081# CONFIG_USB_OXU210HP_HCD is not set
@@ -1321,7 +1358,7 @@ CONFIG_FRAME_WARN=1024
1321# CONFIG_DEBUG_FS is not set 1358# CONFIG_DEBUG_FS is not set
1322# CONFIG_HEADERS_CHECK is not set 1359# CONFIG_HEADERS_CHECK is not set
1323# CONFIG_DEBUG_KERNEL is not set 1360# CONFIG_DEBUG_KERNEL is not set
1324# CONFIG_DEBUG_BUGVERBOSE is not set 1361CONFIG_DEBUG_BUGVERBOSE=y
1325# CONFIG_DEBUG_MEMORY_INIT is not set 1362# CONFIG_DEBUG_MEMORY_INIT is not set
1326# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1363# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1327# CONFIG_LATENCYTOP is not set 1364# CONFIG_LATENCYTOP is not set
@@ -1348,7 +1385,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1348# CONFIG_KEYS is not set 1385# CONFIG_KEYS is not set
1349# CONFIG_SECURITY is not set 1386# CONFIG_SECURITY is not set
1350# CONFIG_SECURITYFS is not set 1387# CONFIG_SECURITYFS is not set
1351# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1388# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1389# CONFIG_DEFAULT_SECURITY_SMACK is not set
1390# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1391CONFIG_DEFAULT_SECURITY_DAC=y
1392CONFIG_DEFAULT_SECURITY=""
1352CONFIG_CRYPTO=y 1393CONFIG_CRYPTO=y
1353 1394
1354# 1395#
diff --git a/arch/powerpc/configs/85xx/ksi8560_defconfig b/arch/powerpc/configs/85xx/ksi8560_defconfig
index a5bde8da462c..21dad38b156f 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:32 2009 4# Wed Jan 6 09:24:26 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_E500=y 17CONFIG_E500=y
18# CONFIG_PPC_E500MC is not set 18# CONFIG_PPC_E500MC is not set
19CONFIG_FSL_EMB_PERFMON=y
19CONFIG_BOOKE=y 20CONFIG_BOOKE=y
20CONFIG_FSL_BOOKE=y 21CONFIG_FSL_BOOKE=y
21CONFIG_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
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
39# 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 40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
41CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
42CONFIG_NR_IRQS=512
42CONFIG_STACKTRACE_SUPPORT=y 43CONFIG_STACKTRACE_SUPPORT=y
43CONFIG_HAVE_LATENCYTOP_SUPPORT=y 44CONFIG_HAVE_LATENCYTOP_SUPPORT=y
44CONFIG_TRACE_IRQFLAGS_SUPPORT=y 45CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -62,6 +63,8 @@ CONFIG_AUDIT_ARCH=y
62CONFIG_GENERIC_BUG=y 63CONFIG_GENERIC_BUG=y
63CONFIG_DTC=y 64CONFIG_DTC=y
64CONFIG_DEFAULT_UIMAGE=y 65CONFIG_DEFAULT_UIMAGE=y
66CONFIG_ARCH_HIBERNATION_POSSIBLE=y
67CONFIG_ARCH_SUSPEND_POSSIBLE=y
65# CONFIG_PPC_DCR_NATIVE is not set 68# CONFIG_PPC_DCR_NATIVE is not set
66# CONFIG_PPC_DCR_MMIO is not set 69# CONFIG_PPC_DCR_MMIO is not set
67CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 70CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -89,6 +92,7 @@ CONFIG_SYSVIPC_SYSCTL=y
89# 92#
90CONFIG_TREE_RCU=y 93CONFIG_TREE_RCU=y
91# CONFIG_TREE_PREEMPT_RCU is not set 94# CONFIG_TREE_PREEMPT_RCU is not set
95# CONFIG_TINY_RCU is not set
92# CONFIG_RCU_TRACE is not set 96# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32 97CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set 98# CONFIG_RCU_FANOUT_EXACT is not set
@@ -169,14 +173,41 @@ CONFIG_LBDAF=y
169# IO Schedulers 173# IO Schedulers
170# 174#
171CONFIG_IOSCHED_NOOP=y 175CONFIG_IOSCHED_NOOP=y
172CONFIG_IOSCHED_AS=y
173CONFIG_IOSCHED_DEADLINE=y 176CONFIG_IOSCHED_DEADLINE=y
174CONFIG_IOSCHED_CFQ=y 177CONFIG_IOSCHED_CFQ=y
175CONFIG_DEFAULT_AS=y
176# CONFIG_DEFAULT_DEADLINE is not set 178# CONFIG_DEFAULT_DEADLINE is not set
177# CONFIG_DEFAULT_CFQ is not set 179CONFIG_DEFAULT_CFQ=y
178# CONFIG_DEFAULT_NOOP is not set 180# CONFIG_DEFAULT_NOOP is not set
179CONFIG_DEFAULT_IOSCHED="anticipatory" 181CONFIG_DEFAULT_IOSCHED="cfq"
182# CONFIG_INLINE_SPIN_TRYLOCK is not set
183# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
184# CONFIG_INLINE_SPIN_LOCK is not set
185# CONFIG_INLINE_SPIN_LOCK_BH is not set
186# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
187# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
188CONFIG_INLINE_SPIN_UNLOCK=y
189# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
190CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
191# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
192# CONFIG_INLINE_READ_TRYLOCK is not set
193# CONFIG_INLINE_READ_LOCK is not set
194# CONFIG_INLINE_READ_LOCK_BH is not set
195# CONFIG_INLINE_READ_LOCK_IRQ is not set
196# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
197CONFIG_INLINE_READ_UNLOCK=y
198# CONFIG_INLINE_READ_UNLOCK_BH is not set
199CONFIG_INLINE_READ_UNLOCK_IRQ=y
200# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
201# CONFIG_INLINE_WRITE_TRYLOCK is not set
202# CONFIG_INLINE_WRITE_LOCK is not set
203# CONFIG_INLINE_WRITE_LOCK_BH is not set
204# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
205# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
206CONFIG_INLINE_WRITE_UNLOCK=y
207# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
208CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
209# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
210# CONFIG_MUTEX_SPIN_ON_OWNER is not set
180# CONFIG_FREEZER is not set 211# CONFIG_FREEZER is not set
181 212
182# 213#
@@ -185,7 +216,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
185# CONFIG_PPC_CELL is not set 216# CONFIG_PPC_CELL is not set
186# CONFIG_PPC_CELL_NATIVE is not set 217# CONFIG_PPC_CELL_NATIVE is not set
187# CONFIG_PQ2ADS is not set 218# CONFIG_PQ2ADS is not set
188CONFIG_MPC85xx=y 219CONFIG_FSL_SOC_BOOKE=y
189# CONFIG_MPC8540_ADS is not set 220# CONFIG_MPC8540_ADS is not set
190# CONFIG_MPC8560_ADS is not set 221# CONFIG_MPC8560_ADS is not set
191# CONFIG_MPC85xx_CDS is not set 222# CONFIG_MPC85xx_CDS is not set
@@ -204,6 +235,7 @@ CONFIG_KSI8560=y
204# CONFIG_TQM8560 is not set 235# CONFIG_TQM8560 is not set
205# CONFIG_SBC8548 is not set 236# CONFIG_SBC8548 is not set
206# CONFIG_SBC8560 is not set 237# CONFIG_SBC8560 is not set
238# CONFIG_P4080_DS is not set
207# CONFIG_IPIC is not set 239# CONFIG_IPIC is not set
208CONFIG_MPIC=y 240CONFIG_MPIC=y
209# CONFIG_MPIC_WEIRD is not set 241# CONFIG_MPIC_WEIRD is not set
@@ -248,6 +280,7 @@ CONFIG_MATH_EMULATION=y
248CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 280CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
249CONFIG_ARCH_HAS_WALK_MEMORY=y 281CONFIG_ARCH_HAS_WALK_MEMORY=y
250CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 282CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
283CONFIG_SPARSE_IRQ=y
251CONFIG_MAX_ACTIVE_REGIONS=32 284CONFIG_MAX_ACTIVE_REGIONS=32
252CONFIG_ARCH_FLATMEM_ENABLE=y 285CONFIG_ARCH_FLATMEM_ENABLE=y
253CONFIG_ARCH_POPULATES_NODE_MAP=y 286CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -264,8 +297,6 @@ CONFIG_MIGRATION=y
264CONFIG_ZONE_DMA_FLAG=1 297CONFIG_ZONE_DMA_FLAG=1
265CONFIG_BOUNCE=y 298CONFIG_BOUNCE=y
266CONFIG_VIRT_TO_BUS=y 299CONFIG_VIRT_TO_BUS=y
267CONFIG_HAVE_MLOCK=y
268CONFIG_HAVE_MLOCKED_PAGE_BIT=y
269# CONFIG_KSM is not set 300# CONFIG_KSM is not set
270CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 301CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
271CONFIG_PPC_4K_PAGES=y 302CONFIG_PPC_4K_PAGES=y
@@ -385,9 +416,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
385# CONFIG_AF_RXRPC is not set 416# CONFIG_AF_RXRPC is not set
386CONFIG_WIRELESS=y 417CONFIG_WIRELESS=y
387# CONFIG_CFG80211 is not set 418# CONFIG_CFG80211 is not set
388CONFIG_CFG80211_DEFAULT_PS_VALUE=0
389CONFIG_WIRELESS_OLD_REGULATORY=y
390# CONFIG_WIRELESS_EXT is not set
391# CONFIG_LIB80211 is not set 419# CONFIG_LIB80211 is not set
392 420
393# 421#
@@ -503,6 +531,10 @@ CONFIG_BLK_DEV=y
503# CONFIG_BLK_DEV_COW_COMMON is not set 531# CONFIG_BLK_DEV_COW_COMMON is not set
504CONFIG_BLK_DEV_LOOP=y 532CONFIG_BLK_DEV_LOOP=y
505# CONFIG_BLK_DEV_CRYPTOLOOP is not set 533# CONFIG_BLK_DEV_CRYPTOLOOP is not set
534
535#
536# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
537#
506# CONFIG_BLK_DEV_NBD is not set 538# CONFIG_BLK_DEV_NBD is not set
507CONFIG_BLK_DEV_RAM=y 539CONFIG_BLK_DEV_RAM=y
508CONFIG_BLK_DEV_RAM_COUNT=16 540CONFIG_BLK_DEV_RAM_COUNT=16
@@ -603,8 +635,7 @@ CONFIG_GIANFAR=y
603# CONFIG_MV643XX_ETH is not set 635# CONFIG_MV643XX_ETH is not set
604CONFIG_NETDEV_10000=y 636CONFIG_NETDEV_10000=y
605CONFIG_WLAN=y 637CONFIG_WLAN=y
606# CONFIG_WLAN_PRE80211 is not set 638# CONFIG_HOSTAP is not set
607# CONFIG_WLAN_80211 is not set
608 639
609# 640#
610# Enable WiMAX (Networking options) to see the WiMAX drivers 641# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -624,6 +655,7 @@ CONFIG_WLAN=y
624CONFIG_INPUT=y 655CONFIG_INPUT=y
625# CONFIG_INPUT_FF_MEMLESS is not set 656# CONFIG_INPUT_FF_MEMLESS is not set
626# CONFIG_INPUT_POLLDEV is not set 657# CONFIG_INPUT_POLLDEV is not set
658# CONFIG_INPUT_SPARSEKMAP is not set
627 659
628# 660#
629# Userland interfaces 661# Userland interfaces
@@ -669,6 +701,7 @@ CONFIG_SERIAL_CORE=y
669CONFIG_SERIAL_CORE_CONSOLE=y 701CONFIG_SERIAL_CORE_CONSOLE=y
670CONFIG_SERIAL_CPM=y 702CONFIG_SERIAL_CPM=y
671CONFIG_SERIAL_CPM_CONSOLE=y 703CONFIG_SERIAL_CPM_CONSOLE=y
704# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
672CONFIG_UNIX98_PTYS=y 705CONFIG_UNIX98_PTYS=y
673# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 706# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
674CONFIG_LEGACY_PTYS=y 707CONFIG_LEGACY_PTYS=y
@@ -1051,7 +1084,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1051# CONFIG_KEYS is not set 1084# CONFIG_KEYS is not set
1052# CONFIG_SECURITY is not set 1085# CONFIG_SECURITY is not set
1053# CONFIG_SECURITYFS is not set 1086# CONFIG_SECURITYFS is not set
1054# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1087# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1088# CONFIG_DEFAULT_SECURITY_SMACK is not set
1089# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1090CONFIG_DEFAULT_SECURITY_DAC=y
1091CONFIG_DEFAULT_SECURITY=""
1055CONFIG_CRYPTO=y 1092CONFIG_CRYPTO=y
1056 1093
1057# 1094#
diff --git a/arch/powerpc/configs/85xx/mpc8540_ads_defconfig b/arch/powerpc/configs/85xx/mpc8540_ads_defconfig
index c10e26f8763f..5db54cd274c6 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:33 2009 4# Wed Jan 6 09:24:27 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_E500=y 17CONFIG_E500=y
18# CONFIG_PPC_E500MC is not set 18# CONFIG_PPC_E500MC is not set
19CONFIG_FSL_EMB_PERFMON=y
19CONFIG_BOOKE=y 20CONFIG_BOOKE=y
20CONFIG_FSL_BOOKE=y 21CONFIG_FSL_BOOKE=y
21CONFIG_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
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
39# 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 40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
41CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
42CONFIG_NR_IRQS=512
42CONFIG_STACKTRACE_SUPPORT=y 43CONFIG_STACKTRACE_SUPPORT=y
43CONFIG_HAVE_LATENCYTOP_SUPPORT=y 44CONFIG_HAVE_LATENCYTOP_SUPPORT=y
44CONFIG_TRACE_IRQFLAGS_SUPPORT=y 45CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -61,6 +62,8 @@ CONFIG_AUDIT_ARCH=y
61CONFIG_GENERIC_BUG=y 62CONFIG_GENERIC_BUG=y
62CONFIG_DTC=y 63CONFIG_DTC=y
63CONFIG_DEFAULT_UIMAGE=y 64CONFIG_DEFAULT_UIMAGE=y
65CONFIG_ARCH_HIBERNATION_POSSIBLE=y
66CONFIG_ARCH_SUSPEND_POSSIBLE=y
64# CONFIG_PPC_DCR_NATIVE is not set 67# CONFIG_PPC_DCR_NATIVE is not set
65# CONFIG_PPC_DCR_MMIO is not set 68# CONFIG_PPC_DCR_MMIO is not set
66CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 69CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -88,6 +91,7 @@ CONFIG_SYSVIPC_SYSCTL=y
88# 91#
89CONFIG_TREE_RCU=y 92CONFIG_TREE_RCU=y
90# CONFIG_TREE_PREEMPT_RCU is not set 93# CONFIG_TREE_PREEMPT_RCU is not set
94# CONFIG_TINY_RCU is not set
91# CONFIG_RCU_TRACE is not set 95# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32 96CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set 97# CONFIG_RCU_FANOUT_EXACT is not set
@@ -170,14 +174,41 @@ CONFIG_LBDAF=y
170# IO Schedulers 174# IO Schedulers
171# 175#
172CONFIG_IOSCHED_NOOP=y 176CONFIG_IOSCHED_NOOP=y
173CONFIG_IOSCHED_AS=y
174CONFIG_IOSCHED_DEADLINE=y 177CONFIG_IOSCHED_DEADLINE=y
175CONFIG_IOSCHED_CFQ=y 178CONFIG_IOSCHED_CFQ=y
176CONFIG_DEFAULT_AS=y
177# CONFIG_DEFAULT_DEADLINE is not set 179# CONFIG_DEFAULT_DEADLINE is not set
178# CONFIG_DEFAULT_CFQ is not set 180CONFIG_DEFAULT_CFQ=y
179# CONFIG_DEFAULT_NOOP is not set 181# CONFIG_DEFAULT_NOOP is not set
180CONFIG_DEFAULT_IOSCHED="anticipatory" 182CONFIG_DEFAULT_IOSCHED="cfq"
183# CONFIG_INLINE_SPIN_TRYLOCK is not set
184# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
185# CONFIG_INLINE_SPIN_LOCK is not set
186# CONFIG_INLINE_SPIN_LOCK_BH is not set
187# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
188# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
189CONFIG_INLINE_SPIN_UNLOCK=y
190# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
191CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
192# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
193# CONFIG_INLINE_READ_TRYLOCK is not set
194# CONFIG_INLINE_READ_LOCK is not set
195# CONFIG_INLINE_READ_LOCK_BH is not set
196# CONFIG_INLINE_READ_LOCK_IRQ is not set
197# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
198CONFIG_INLINE_READ_UNLOCK=y
199# CONFIG_INLINE_READ_UNLOCK_BH is not set
200CONFIG_INLINE_READ_UNLOCK_IRQ=y
201# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
202# CONFIG_INLINE_WRITE_TRYLOCK is not set
203# CONFIG_INLINE_WRITE_LOCK is not set
204# CONFIG_INLINE_WRITE_LOCK_BH is not set
205# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
206# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
207CONFIG_INLINE_WRITE_UNLOCK=y
208# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
209CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
210# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
211# CONFIG_MUTEX_SPIN_ON_OWNER is not set
181# CONFIG_FREEZER is not set 212# CONFIG_FREEZER is not set
182 213
183# 214#
@@ -186,7 +217,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
186# CONFIG_PPC_CELL is not set 217# CONFIG_PPC_CELL is not set
187# CONFIG_PPC_CELL_NATIVE is not set 218# CONFIG_PPC_CELL_NATIVE is not set
188# CONFIG_PQ2ADS is not set 219# CONFIG_PQ2ADS is not set
189CONFIG_MPC85xx=y 220CONFIG_FSL_SOC_BOOKE=y
190CONFIG_MPC8540_ADS=y 221CONFIG_MPC8540_ADS=y
191# CONFIG_MPC8560_ADS is not set 222# CONFIG_MPC8560_ADS is not set
192# CONFIG_MPC85xx_CDS is not set 223# CONFIG_MPC85xx_CDS is not set
@@ -205,6 +236,7 @@ CONFIG_MPC8540_ADS=y
205# CONFIG_TQM8560 is not set 236# CONFIG_TQM8560 is not set
206# CONFIG_SBC8548 is not set 237# CONFIG_SBC8548 is not set
207# CONFIG_SBC8560 is not set 238# CONFIG_SBC8560 is not set
239# CONFIG_P4080_DS is not set
208# CONFIG_IPIC is not set 240# CONFIG_IPIC is not set
209CONFIG_MPIC=y 241CONFIG_MPIC=y
210# CONFIG_MPIC_WEIRD is not set 242# CONFIG_MPIC_WEIRD is not set
@@ -249,6 +281,7 @@ CONFIG_MATH_EMULATION=y
249CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 281CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
250CONFIG_ARCH_HAS_WALK_MEMORY=y 282CONFIG_ARCH_HAS_WALK_MEMORY=y
251CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 283CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
284CONFIG_SPARSE_IRQ=y
252CONFIG_MAX_ACTIVE_REGIONS=32 285CONFIG_MAX_ACTIVE_REGIONS=32
253CONFIG_ARCH_FLATMEM_ENABLE=y 286CONFIG_ARCH_FLATMEM_ENABLE=y
254CONFIG_ARCH_POPULATES_NODE_MAP=y 287CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -265,8 +298,6 @@ CONFIG_MIGRATION=y
265CONFIG_ZONE_DMA_FLAG=1 298CONFIG_ZONE_DMA_FLAG=1
266CONFIG_BOUNCE=y 299CONFIG_BOUNCE=y
267CONFIG_VIRT_TO_BUS=y 300CONFIG_VIRT_TO_BUS=y
268CONFIG_HAVE_MLOCK=y
269CONFIG_HAVE_MLOCKED_PAGE_BIT=y
270# CONFIG_KSM is not set 301# CONFIG_KSM is not set
271CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 302CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
272CONFIG_PPC_4K_PAGES=y 303CONFIG_PPC_4K_PAGES=y
@@ -386,9 +417,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
386# CONFIG_AF_RXRPC is not set 417# CONFIG_AF_RXRPC is not set
387CONFIG_WIRELESS=y 418CONFIG_WIRELESS=y
388# CONFIG_CFG80211 is not set 419# CONFIG_CFG80211 is not set
389CONFIG_CFG80211_DEFAULT_PS_VALUE=0
390CONFIG_WIRELESS_OLD_REGULATORY=y
391# CONFIG_WIRELESS_EXT is not set
392# CONFIG_LIB80211 is not set 420# CONFIG_LIB80211 is not set
393 421
394# 422#
@@ -423,6 +451,10 @@ CONFIG_BLK_DEV=y
423# CONFIG_BLK_DEV_COW_COMMON is not set 451# CONFIG_BLK_DEV_COW_COMMON is not set
424CONFIG_BLK_DEV_LOOP=y 452CONFIG_BLK_DEV_LOOP=y
425# CONFIG_BLK_DEV_CRYPTOLOOP is not set 453# CONFIG_BLK_DEV_CRYPTOLOOP is not set
454
455#
456# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
457#
426# CONFIG_BLK_DEV_NBD is not set 458# CONFIG_BLK_DEV_NBD is not set
427CONFIG_BLK_DEV_RAM=y 459CONFIG_BLK_DEV_RAM=y
428CONFIG_BLK_DEV_RAM_COUNT=16 460CONFIG_BLK_DEV_RAM_COUNT=16
@@ -500,8 +532,7 @@ CONFIG_GIANFAR=y
500# CONFIG_MV643XX_ETH is not set 532# CONFIG_MV643XX_ETH is not set
501CONFIG_NETDEV_10000=y 533CONFIG_NETDEV_10000=y
502CONFIG_WLAN=y 534CONFIG_WLAN=y
503# CONFIG_WLAN_PRE80211 is not set 535# CONFIG_HOSTAP is not set
504# CONFIG_WLAN_80211 is not set
505 536
506# 537#
507# Enable WiMAX (Networking options) to see the WiMAX drivers 538# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -521,6 +552,7 @@ CONFIG_WLAN=y
521CONFIG_INPUT=y 552CONFIG_INPUT=y
522# CONFIG_INPUT_FF_MEMLESS is not set 553# CONFIG_INPUT_FF_MEMLESS is not set
523# CONFIG_INPUT_POLLDEV is not set 554# CONFIG_INPUT_POLLDEV is not set
555# CONFIG_INPUT_SPARSEKMAP is not set
524 556
525# 557#
526# Userland interfaces 558# Userland interfaces
@@ -570,6 +602,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
570CONFIG_SERIAL_CORE=y 602CONFIG_SERIAL_CORE=y
571CONFIG_SERIAL_CORE_CONSOLE=y 603CONFIG_SERIAL_CORE_CONSOLE=y
572# CONFIG_SERIAL_OF_PLATFORM is not set 604# CONFIG_SERIAL_OF_PLATFORM is not set
605# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
573CONFIG_UNIX98_PTYS=y 606CONFIG_UNIX98_PTYS=y
574# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 607# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
575CONFIG_LEGACY_PTYS=y 608CONFIG_LEGACY_PTYS=y
@@ -920,7 +953,11 @@ CONFIG_PRINT_STACK_DEPTH=64
920# CONFIG_KEYS is not set 953# CONFIG_KEYS is not set
921# CONFIG_SECURITY is not set 954# CONFIG_SECURITY is not set
922# CONFIG_SECURITYFS is not set 955# CONFIG_SECURITYFS is not set
923# CONFIG_SECURITY_FILE_CAPABILITIES is not set 956# CONFIG_DEFAULT_SECURITY_SELINUX is not set
957# CONFIG_DEFAULT_SECURITY_SMACK is not set
958# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
959CONFIG_DEFAULT_SECURITY_DAC=y
960CONFIG_DEFAULT_SECURITY=""
924CONFIG_CRYPTO=y 961CONFIG_CRYPTO=y
925 962
926# 963#
diff --git a/arch/powerpc/configs/85xx/mpc8560_ads_defconfig b/arch/powerpc/configs/85xx/mpc8560_ads_defconfig
index 8d9f0a4b5205..76c7018c5cd2 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:34 2009 4# Wed Jan 6 09:24:28 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_E500=y 17CONFIG_E500=y
18# CONFIG_PPC_E500MC is not set 18# CONFIG_PPC_E500MC is not set
19CONFIG_FSL_EMB_PERFMON=y
19CONFIG_BOOKE=y 20CONFIG_BOOKE=y
20CONFIG_FSL_BOOKE=y 21CONFIG_FSL_BOOKE=y
21CONFIG_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
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
39# 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 40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
41CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
42CONFIG_NR_IRQS=512
42CONFIG_STACKTRACE_SUPPORT=y 43CONFIG_STACKTRACE_SUPPORT=y
43CONFIG_HAVE_LATENCYTOP_SUPPORT=y 44CONFIG_HAVE_LATENCYTOP_SUPPORT=y
44CONFIG_TRACE_IRQFLAGS_SUPPORT=y 45CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -62,6 +63,8 @@ CONFIG_AUDIT_ARCH=y
62CONFIG_GENERIC_BUG=y 63CONFIG_GENERIC_BUG=y
63CONFIG_DTC=y 64CONFIG_DTC=y
64CONFIG_DEFAULT_UIMAGE=y 65CONFIG_DEFAULT_UIMAGE=y
66CONFIG_ARCH_HIBERNATION_POSSIBLE=y
67CONFIG_ARCH_SUSPEND_POSSIBLE=y
65# CONFIG_PPC_DCR_NATIVE is not set 68# CONFIG_PPC_DCR_NATIVE is not set
66# CONFIG_PPC_DCR_MMIO is not set 69# CONFIG_PPC_DCR_MMIO is not set
67CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 70CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -89,6 +92,7 @@ CONFIG_SYSVIPC_SYSCTL=y
89# 92#
90CONFIG_TREE_RCU=y 93CONFIG_TREE_RCU=y
91# CONFIG_TREE_PREEMPT_RCU is not set 94# CONFIG_TREE_PREEMPT_RCU is not set
95# CONFIG_TINY_RCU is not set
92# CONFIG_RCU_TRACE is not set 96# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32 97CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set 98# CONFIG_RCU_FANOUT_EXACT is not set
@@ -173,14 +177,41 @@ CONFIG_LBDAF=y
173# IO Schedulers 177# IO Schedulers
174# 178#
175CONFIG_IOSCHED_NOOP=y 179CONFIG_IOSCHED_NOOP=y
176CONFIG_IOSCHED_AS=y
177CONFIG_IOSCHED_DEADLINE=y 180CONFIG_IOSCHED_DEADLINE=y
178CONFIG_IOSCHED_CFQ=y 181CONFIG_IOSCHED_CFQ=y
179CONFIG_DEFAULT_AS=y
180# CONFIG_DEFAULT_DEADLINE is not set 182# CONFIG_DEFAULT_DEADLINE is not set
181# CONFIG_DEFAULT_CFQ is not set 183CONFIG_DEFAULT_CFQ=y
182# CONFIG_DEFAULT_NOOP is not set 184# CONFIG_DEFAULT_NOOP is not set
183CONFIG_DEFAULT_IOSCHED="anticipatory" 185CONFIG_DEFAULT_IOSCHED="cfq"
186# CONFIG_INLINE_SPIN_TRYLOCK is not set
187# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
188# CONFIG_INLINE_SPIN_LOCK is not set
189# CONFIG_INLINE_SPIN_LOCK_BH is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
191# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
192CONFIG_INLINE_SPIN_UNLOCK=y
193# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
194CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
195# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
196# CONFIG_INLINE_READ_TRYLOCK is not set
197# CONFIG_INLINE_READ_LOCK is not set
198# CONFIG_INLINE_READ_LOCK_BH is not set
199# CONFIG_INLINE_READ_LOCK_IRQ is not set
200# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
201CONFIG_INLINE_READ_UNLOCK=y
202# CONFIG_INLINE_READ_UNLOCK_BH is not set
203CONFIG_INLINE_READ_UNLOCK_IRQ=y
204# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
205# CONFIG_INLINE_WRITE_TRYLOCK is not set
206# CONFIG_INLINE_WRITE_LOCK is not set
207# CONFIG_INLINE_WRITE_LOCK_BH is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
209# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
210CONFIG_INLINE_WRITE_UNLOCK=y
211# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
212CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
213# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
214# CONFIG_MUTEX_SPIN_ON_OWNER is not set
184# CONFIG_FREEZER is not set 215# CONFIG_FREEZER is not set
185 216
186# 217#
@@ -189,7 +220,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
189# CONFIG_PPC_CELL is not set 220# CONFIG_PPC_CELL is not set
190# CONFIG_PPC_CELL_NATIVE is not set 221# CONFIG_PPC_CELL_NATIVE is not set
191# CONFIG_PQ2ADS is not set 222# CONFIG_PQ2ADS is not set
192CONFIG_MPC85xx=y 223CONFIG_FSL_SOC_BOOKE=y
193# CONFIG_MPC8540_ADS is not set 224# CONFIG_MPC8540_ADS is not set
194CONFIG_MPC8560_ADS=y 225CONFIG_MPC8560_ADS=y
195# CONFIG_MPC85xx_CDS is not set 226# CONFIG_MPC85xx_CDS is not set
@@ -208,6 +239,7 @@ CONFIG_MPC8560_ADS=y
208# CONFIG_TQM8560 is not set 239# CONFIG_TQM8560 is not set
209# CONFIG_SBC8548 is not set 240# CONFIG_SBC8548 is not set
210# CONFIG_SBC8560 is not set 241# CONFIG_SBC8560 is not set
242# CONFIG_P4080_DS is not set
211# CONFIG_IPIC is not set 243# CONFIG_IPIC is not set
212CONFIG_MPIC=y 244CONFIG_MPIC=y
213# CONFIG_MPIC_WEIRD is not set 245# CONFIG_MPIC_WEIRD is not set
@@ -252,6 +284,7 @@ CONFIG_MATH_EMULATION=y
252CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 284CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
253CONFIG_ARCH_HAS_WALK_MEMORY=y 285CONFIG_ARCH_HAS_WALK_MEMORY=y
254CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 286CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
287CONFIG_SPARSE_IRQ=y
255CONFIG_MAX_ACTIVE_REGIONS=32 288CONFIG_MAX_ACTIVE_REGIONS=32
256CONFIG_ARCH_FLATMEM_ENABLE=y 289CONFIG_ARCH_FLATMEM_ENABLE=y
257CONFIG_ARCH_POPULATES_NODE_MAP=y 290CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -268,8 +301,6 @@ CONFIG_MIGRATION=y
268CONFIG_ZONE_DMA_FLAG=1 301CONFIG_ZONE_DMA_FLAG=1
269CONFIG_BOUNCE=y 302CONFIG_BOUNCE=y
270CONFIG_VIRT_TO_BUS=y 303CONFIG_VIRT_TO_BUS=y
271CONFIG_HAVE_MLOCK=y
272CONFIG_HAVE_MLOCKED_PAGE_BIT=y
273# CONFIG_KSM is not set 304# CONFIG_KSM is not set
274CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 305CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
275CONFIG_PPC_4K_PAGES=y 306CONFIG_PPC_4K_PAGES=y
@@ -398,9 +429,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
398# CONFIG_AF_RXRPC is not set 429# CONFIG_AF_RXRPC is not set
399CONFIG_WIRELESS=y 430CONFIG_WIRELESS=y
400# CONFIG_CFG80211 is not set 431# CONFIG_CFG80211 is not set
401CONFIG_CFG80211_DEFAULT_PS_VALUE=0
402CONFIG_WIRELESS_OLD_REGULATORY=y
403# CONFIG_WIRELESS_EXT is not set
404# CONFIG_LIB80211 is not set 432# CONFIG_LIB80211 is not set
405 433
406# 434#
@@ -440,6 +468,10 @@ CONFIG_BLK_DEV=y
440# CONFIG_BLK_DEV_COW_COMMON is not set 468# CONFIG_BLK_DEV_COW_COMMON is not set
441CONFIG_BLK_DEV_LOOP=y 469CONFIG_BLK_DEV_LOOP=y
442# CONFIG_BLK_DEV_CRYPTOLOOP is not set 470# CONFIG_BLK_DEV_CRYPTOLOOP is not set
471
472#
473# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
474#
443# CONFIG_BLK_DEV_NBD is not set 475# CONFIG_BLK_DEV_NBD is not set
444# CONFIG_BLK_DEV_SX8 is not set 476# CONFIG_BLK_DEV_SX8 is not set
445CONFIG_BLK_DEV_RAM=y 477CONFIG_BLK_DEV_RAM=y
@@ -485,7 +517,7 @@ CONFIG_HAVE_IDE=y
485# 517#
486 518
487# 519#
488# See the help texts for more information. 520# The newer stack is recommended.
489# 521#
490# CONFIG_FIREWIRE is not set 522# CONFIG_FIREWIRE is not set
491# CONFIG_IEEE1394 is not set 523# CONFIG_IEEE1394 is not set
@@ -594,8 +626,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y
594# CONFIG_BE2NET is not set 626# CONFIG_BE2NET is not set
595# CONFIG_TR is not set 627# CONFIG_TR is not set
596CONFIG_WLAN=y 628CONFIG_WLAN=y
597# CONFIG_WLAN_PRE80211 is not set 629# CONFIG_AIRO is not set
598# CONFIG_WLAN_80211 is not set 630# CONFIG_ATMEL is not set
631# CONFIG_PRISM54 is not set
632# CONFIG_HOSTAP is not set
599 633
600# 634#
601# Enable WiMAX (Networking options) to see the WiMAX drivers 635# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -608,6 +642,7 @@ CONFIG_WLAN=y
608# CONFIG_NETCONSOLE is not set 642# CONFIG_NETCONSOLE is not set
609# CONFIG_NETPOLL is not set 643# CONFIG_NETPOLL is not set
610# CONFIG_NET_POLL_CONTROLLER is not set 644# CONFIG_NET_POLL_CONTROLLER is not set
645# CONFIG_VMXNET3 is not set
611# CONFIG_ISDN is not set 646# CONFIG_ISDN is not set
612# CONFIG_PHONE is not set 647# CONFIG_PHONE is not set
613 648
@@ -617,6 +652,7 @@ CONFIG_WLAN=y
617CONFIG_INPUT=y 652CONFIG_INPUT=y
618# CONFIG_INPUT_FF_MEMLESS is not set 653# CONFIG_INPUT_FF_MEMLESS is not set
619# CONFIG_INPUT_POLLDEV is not set 654# CONFIG_INPUT_POLLDEV is not set
655# CONFIG_INPUT_SPARSEKMAP is not set
620 656
621# 657#
622# Userland interfaces 658# Userland interfaces
@@ -664,6 +700,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
664CONFIG_SERIAL_CPM=y 700CONFIG_SERIAL_CPM=y
665CONFIG_SERIAL_CPM_CONSOLE=y 701CONFIG_SERIAL_CPM_CONSOLE=y
666# CONFIG_SERIAL_JSM is not set 702# CONFIG_SERIAL_JSM is not set
703# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
667CONFIG_UNIX98_PTYS=y 704CONFIG_UNIX98_PTYS=y
668# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 705# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
669CONFIG_LEGACY_PTYS=y 706CONFIG_LEGACY_PTYS=y
@@ -705,6 +742,7 @@ CONFIG_GPIOLIB=y
705# 742#
706# PCI GPIO expanders: 743# PCI GPIO expanders:
707# 744#
745# CONFIG_GPIO_CS5535 is not set
708# CONFIG_GPIO_BT8XX is not set 746# CONFIG_GPIO_BT8XX is not set
709# CONFIG_GPIO_LANGWELL is not set 747# CONFIG_GPIO_LANGWELL is not set
710 748
@@ -1054,7 +1092,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1054# CONFIG_KEYS is not set 1092# CONFIG_KEYS is not set
1055# CONFIG_SECURITY is not set 1093# CONFIG_SECURITY is not set
1056# CONFIG_SECURITYFS is not set 1094# CONFIG_SECURITYFS is not set
1057# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1095# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1096# CONFIG_DEFAULT_SECURITY_SMACK is not set
1097# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1098CONFIG_DEFAULT_SECURITY_DAC=y
1099CONFIG_DEFAULT_SECURITY=""
1058CONFIG_CRYPTO=y 1100CONFIG_CRYPTO=y
1059 1101
1060# 1102#
diff --git a/arch/powerpc/configs/85xx/mpc85xx_cds_defconfig b/arch/powerpc/configs/85xx/mpc85xx_cds_defconfig
index 9b63e258dac6..fab8adacbf79 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:35 2009 4# Wed Jan 6 09:24:29 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_E500=y 17CONFIG_E500=y
18# CONFIG_PPC_E500MC is not set 18# CONFIG_PPC_E500MC is not set
19CONFIG_FSL_EMB_PERFMON=y
19CONFIG_BOOKE=y 20CONFIG_BOOKE=y
20CONFIG_FSL_BOOKE=y 21CONFIG_FSL_BOOKE=y
21CONFIG_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
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
39# 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 40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
41CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
42CONFIG_NR_IRQS=512
42CONFIG_STACKTRACE_SUPPORT=y 43CONFIG_STACKTRACE_SUPPORT=y
43CONFIG_HAVE_LATENCYTOP_SUPPORT=y 44CONFIG_HAVE_LATENCYTOP_SUPPORT=y
44CONFIG_TRACE_IRQFLAGS_SUPPORT=y 45CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -61,6 +62,8 @@ CONFIG_AUDIT_ARCH=y
61CONFIG_GENERIC_BUG=y 62CONFIG_GENERIC_BUG=y
62CONFIG_DTC=y 63CONFIG_DTC=y
63CONFIG_DEFAULT_UIMAGE=y 64CONFIG_DEFAULT_UIMAGE=y
65CONFIG_ARCH_HIBERNATION_POSSIBLE=y
66CONFIG_ARCH_SUSPEND_POSSIBLE=y
64# CONFIG_PPC_DCR_NATIVE is not set 67# CONFIG_PPC_DCR_NATIVE is not set
65# CONFIG_PPC_DCR_MMIO is not set 68# CONFIG_PPC_DCR_MMIO is not set
66CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 69CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -88,6 +91,7 @@ CONFIG_SYSVIPC_SYSCTL=y
88# 91#
89CONFIG_TREE_RCU=y 92CONFIG_TREE_RCU=y
90# CONFIG_TREE_PREEMPT_RCU is not set 93# CONFIG_TREE_PREEMPT_RCU is not set
94# CONFIG_TINY_RCU is not set
91# CONFIG_RCU_TRACE is not set 95# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32 96CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set 97# CONFIG_RCU_FANOUT_EXACT is not set
@@ -171,14 +175,41 @@ CONFIG_LBDAF=y
171# IO Schedulers 175# IO Schedulers
172# 176#
173CONFIG_IOSCHED_NOOP=y 177CONFIG_IOSCHED_NOOP=y
174CONFIG_IOSCHED_AS=y
175CONFIG_IOSCHED_DEADLINE=y 178CONFIG_IOSCHED_DEADLINE=y
176CONFIG_IOSCHED_CFQ=y 179CONFIG_IOSCHED_CFQ=y
177CONFIG_DEFAULT_AS=y
178# CONFIG_DEFAULT_DEADLINE is not set 180# CONFIG_DEFAULT_DEADLINE is not set
179# CONFIG_DEFAULT_CFQ is not set 181CONFIG_DEFAULT_CFQ=y
180# CONFIG_DEFAULT_NOOP is not set 182# CONFIG_DEFAULT_NOOP is not set
181CONFIG_DEFAULT_IOSCHED="anticipatory" 183CONFIG_DEFAULT_IOSCHED="cfq"
184# CONFIG_INLINE_SPIN_TRYLOCK is not set
185# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
186# CONFIG_INLINE_SPIN_LOCK is not set
187# CONFIG_INLINE_SPIN_LOCK_BH is not set
188# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
190CONFIG_INLINE_SPIN_UNLOCK=y
191# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
192CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
193# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
194# CONFIG_INLINE_READ_TRYLOCK is not set
195# CONFIG_INLINE_READ_LOCK is not set
196# CONFIG_INLINE_READ_LOCK_BH is not set
197# CONFIG_INLINE_READ_LOCK_IRQ is not set
198# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
199CONFIG_INLINE_READ_UNLOCK=y
200# CONFIG_INLINE_READ_UNLOCK_BH is not set
201CONFIG_INLINE_READ_UNLOCK_IRQ=y
202# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
203# CONFIG_INLINE_WRITE_TRYLOCK is not set
204# CONFIG_INLINE_WRITE_LOCK is not set
205# CONFIG_INLINE_WRITE_LOCK_BH is not set
206# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
208CONFIG_INLINE_WRITE_UNLOCK=y
209# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
210CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
211# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
212# CONFIG_MUTEX_SPIN_ON_OWNER is not set
182# CONFIG_FREEZER is not set 213# CONFIG_FREEZER is not set
183 214
184# 215#
@@ -187,7 +218,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
187# CONFIG_PPC_CELL is not set 218# CONFIG_PPC_CELL is not set
188# CONFIG_PPC_CELL_NATIVE is not set 219# CONFIG_PPC_CELL_NATIVE is not set
189# CONFIG_PQ2ADS is not set 220# CONFIG_PQ2ADS is not set
190CONFIG_MPC85xx=y 221CONFIG_FSL_SOC_BOOKE=y
191# CONFIG_MPC8540_ADS is not set 222# CONFIG_MPC8540_ADS is not set
192# CONFIG_MPC8560_ADS is not set 223# CONFIG_MPC8560_ADS is not set
193CONFIG_MPC85xx_CDS=y 224CONFIG_MPC85xx_CDS=y
@@ -206,6 +237,7 @@ CONFIG_MPC85xx_CDS=y
206# CONFIG_TQM8560 is not set 237# CONFIG_TQM8560 is not set
207# CONFIG_SBC8548 is not set 238# CONFIG_SBC8548 is not set
208# CONFIG_SBC8560 is not set 239# CONFIG_SBC8560 is not set
240# CONFIG_P4080_DS is not set
209# CONFIG_IPIC is not set 241# CONFIG_IPIC is not set
210CONFIG_MPIC=y 242CONFIG_MPIC=y
211# CONFIG_MPIC_WEIRD is not set 243# CONFIG_MPIC_WEIRD is not set
@@ -250,6 +282,7 @@ CONFIG_MATH_EMULATION=y
250CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 282CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
251CONFIG_ARCH_HAS_WALK_MEMORY=y 283CONFIG_ARCH_HAS_WALK_MEMORY=y
252CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 284CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
285CONFIG_SPARSE_IRQ=y
253CONFIG_MAX_ACTIVE_REGIONS=32 286CONFIG_MAX_ACTIVE_REGIONS=32
254CONFIG_ARCH_FLATMEM_ENABLE=y 287CONFIG_ARCH_FLATMEM_ENABLE=y
255CONFIG_ARCH_POPULATES_NODE_MAP=y 288CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -266,8 +299,6 @@ CONFIG_MIGRATION=y
266CONFIG_ZONE_DMA_FLAG=1 299CONFIG_ZONE_DMA_FLAG=1
267CONFIG_BOUNCE=y 300CONFIG_BOUNCE=y
268CONFIG_VIRT_TO_BUS=y 301CONFIG_VIRT_TO_BUS=y
269CONFIG_HAVE_MLOCK=y
270CONFIG_HAVE_MLOCKED_PAGE_BIT=y
271# CONFIG_KSM is not set 302# CONFIG_KSM is not set
272CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 303CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
273CONFIG_PPC_4K_PAGES=y 304CONFIG_PPC_4K_PAGES=y
@@ -396,9 +427,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
396# CONFIG_AF_RXRPC is not set 427# CONFIG_AF_RXRPC is not set
397CONFIG_WIRELESS=y 428CONFIG_WIRELESS=y
398# CONFIG_CFG80211 is not set 429# CONFIG_CFG80211 is not set
399CONFIG_CFG80211_DEFAULT_PS_VALUE=0
400CONFIG_WIRELESS_OLD_REGULATORY=y
401# CONFIG_WIRELESS_EXT is not set
402# CONFIG_LIB80211 is not set 430# CONFIG_LIB80211 is not set
403 431
404# 432#
@@ -437,6 +465,10 @@ CONFIG_BLK_DEV=y
437# CONFIG_BLK_DEV_COW_COMMON is not set 465# CONFIG_BLK_DEV_COW_COMMON is not set
438CONFIG_BLK_DEV_LOOP=y 466CONFIG_BLK_DEV_LOOP=y
439# CONFIG_BLK_DEV_CRYPTOLOOP is not set 467# CONFIG_BLK_DEV_CRYPTOLOOP is not set
468
469#
470# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
471#
440# CONFIG_BLK_DEV_NBD is not set 472# CONFIG_BLK_DEV_NBD is not set
441# CONFIG_BLK_DEV_SX8 is not set 473# CONFIG_BLK_DEV_SX8 is not set
442CONFIG_BLK_DEV_RAM=y 474CONFIG_BLK_DEV_RAM=y
@@ -537,7 +569,7 @@ CONFIG_BLK_DEV_IDEDMA=y
537# 569#
538 570
539# 571#
540# See the help texts for more information. 572# The newer stack is recommended.
541# 573#
542# CONFIG_FIREWIRE is not set 574# CONFIG_FIREWIRE is not set
543# CONFIG_IEEE1394 is not set 575# CONFIG_IEEE1394 is not set
@@ -642,8 +674,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y
642# CONFIG_BE2NET is not set 674# CONFIG_BE2NET is not set
643# CONFIG_TR is not set 675# CONFIG_TR is not set
644CONFIG_WLAN=y 676CONFIG_WLAN=y
645# CONFIG_WLAN_PRE80211 is not set 677# CONFIG_AIRO is not set
646# CONFIG_WLAN_80211 is not set 678# CONFIG_ATMEL is not set
679# CONFIG_PRISM54 is not set
680# CONFIG_HOSTAP is not set
647 681
648# 682#
649# Enable WiMAX (Networking options) to see the WiMAX drivers 683# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -656,6 +690,7 @@ CONFIG_WLAN=y
656# CONFIG_NETCONSOLE is not set 690# CONFIG_NETCONSOLE is not set
657# CONFIG_NETPOLL is not set 691# CONFIG_NETPOLL is not set
658# CONFIG_NET_POLL_CONTROLLER is not set 692# CONFIG_NET_POLL_CONTROLLER is not set
693# CONFIG_VMXNET3 is not set
659# CONFIG_ISDN is not set 694# CONFIG_ISDN is not set
660# CONFIG_PHONE is not set 695# CONFIG_PHONE is not set
661 696
@@ -665,6 +700,7 @@ CONFIG_WLAN=y
665CONFIG_INPUT=y 700CONFIG_INPUT=y
666# CONFIG_INPUT_FF_MEMLESS is not set 701# CONFIG_INPUT_FF_MEMLESS is not set
667# CONFIG_INPUT_POLLDEV is not set 702# CONFIG_INPUT_POLLDEV is not set
703# CONFIG_INPUT_SPARSEKMAP is not set
668 704
669# 705#
670# Userland interfaces 706# Userland interfaces
@@ -717,6 +753,7 @@ CONFIG_SERIAL_CORE=y
717CONFIG_SERIAL_CORE_CONSOLE=y 753CONFIG_SERIAL_CORE_CONSOLE=y
718# CONFIG_SERIAL_JSM is not set 754# CONFIG_SERIAL_JSM is not set
719# CONFIG_SERIAL_OF_PLATFORM is not set 755# CONFIG_SERIAL_OF_PLATFORM is not set
756# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
720CONFIG_UNIX98_PTYS=y 757CONFIG_UNIX98_PTYS=y
721# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 758# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
722CONFIG_LEGACY_PTYS=y 759CONFIG_LEGACY_PTYS=y
@@ -1079,7 +1116,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1079# CONFIG_KEYS is not set 1116# CONFIG_KEYS is not set
1080# CONFIG_SECURITY is not set 1117# CONFIG_SECURITY is not set
1081# CONFIG_SECURITYFS is not set 1118# CONFIG_SECURITYFS is not set
1082# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1119# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1120# CONFIG_DEFAULT_SECURITY_SMACK is not set
1121# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1122CONFIG_DEFAULT_SECURITY_DAC=y
1123CONFIG_DEFAULT_SECURITY=""
1083CONFIG_CRYPTO=y 1124CONFIG_CRYPTO=y
1084 1125
1085# 1126#
diff --git a/arch/powerpc/configs/85xx/sbc8548_defconfig b/arch/powerpc/configs/85xx/sbc8548_defconfig
index 1b2356830173..8290385e9b94 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:36 2009 4# Wed Jan 6 09:24:29 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_E500=y 17CONFIG_E500=y
18# CONFIG_PPC_E500MC is not set 18# CONFIG_PPC_E500MC is not set
19CONFIG_FSL_EMB_PERFMON=y
19CONFIG_BOOKE=y 20CONFIG_BOOKE=y
20CONFIG_FSL_BOOKE=y 21CONFIG_FSL_BOOKE=y
21CONFIG_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
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
39# 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 40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
41CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
42CONFIG_NR_IRQS=512
42CONFIG_STACKTRACE_SUPPORT=y 43CONFIG_STACKTRACE_SUPPORT=y
43CONFIG_HAVE_LATENCYTOP_SUPPORT=y 44CONFIG_HAVE_LATENCYTOP_SUPPORT=y
44CONFIG_TRACE_IRQFLAGS_SUPPORT=y 45CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -61,6 +62,8 @@ CONFIG_AUDIT_ARCH=y
61CONFIG_GENERIC_BUG=y 62CONFIG_GENERIC_BUG=y
62CONFIG_DTC=y 63CONFIG_DTC=y
63CONFIG_DEFAULT_UIMAGE=y 64CONFIG_DEFAULT_UIMAGE=y
65CONFIG_ARCH_HIBERNATION_POSSIBLE=y
66CONFIG_ARCH_SUSPEND_POSSIBLE=y
64# CONFIG_PPC_DCR_NATIVE is not set 67# CONFIG_PPC_DCR_NATIVE is not set
65# CONFIG_PPC_DCR_MMIO is not set 68# CONFIG_PPC_DCR_MMIO is not set
66CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 69CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -88,6 +91,7 @@ CONFIG_SYSVIPC_SYSCTL=y
88# 91#
89CONFIG_TREE_RCU=y 92CONFIG_TREE_RCU=y
90# CONFIG_TREE_PREEMPT_RCU is not set 93# CONFIG_TREE_PREEMPT_RCU is not set
94# CONFIG_TINY_RCU is not set
91# CONFIG_RCU_TRACE is not set 95# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32 96CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set 97# CONFIG_RCU_FANOUT_EXACT is not set
@@ -169,14 +173,41 @@ CONFIG_LBDAF=y
169# IO Schedulers 173# IO Schedulers
170# 174#
171CONFIG_IOSCHED_NOOP=y 175CONFIG_IOSCHED_NOOP=y
172CONFIG_IOSCHED_AS=y
173CONFIG_IOSCHED_DEADLINE=y 176CONFIG_IOSCHED_DEADLINE=y
174CONFIG_IOSCHED_CFQ=y 177CONFIG_IOSCHED_CFQ=y
175CONFIG_DEFAULT_AS=y
176# CONFIG_DEFAULT_DEADLINE is not set 178# CONFIG_DEFAULT_DEADLINE is not set
177# CONFIG_DEFAULT_CFQ is not set 179CONFIG_DEFAULT_CFQ=y
178# CONFIG_DEFAULT_NOOP is not set 180# CONFIG_DEFAULT_NOOP is not set
179CONFIG_DEFAULT_IOSCHED="anticipatory" 181CONFIG_DEFAULT_IOSCHED="cfq"
182# CONFIG_INLINE_SPIN_TRYLOCK is not set
183# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
184# CONFIG_INLINE_SPIN_LOCK is not set
185# CONFIG_INLINE_SPIN_LOCK_BH is not set
186# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
187# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
188CONFIG_INLINE_SPIN_UNLOCK=y
189# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
190CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
191# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
192# CONFIG_INLINE_READ_TRYLOCK is not set
193# CONFIG_INLINE_READ_LOCK is not set
194# CONFIG_INLINE_READ_LOCK_BH is not set
195# CONFIG_INLINE_READ_LOCK_IRQ is not set
196# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
197CONFIG_INLINE_READ_UNLOCK=y
198# CONFIG_INLINE_READ_UNLOCK_BH is not set
199CONFIG_INLINE_READ_UNLOCK_IRQ=y
200# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
201# CONFIG_INLINE_WRITE_TRYLOCK is not set
202# CONFIG_INLINE_WRITE_LOCK is not set
203# CONFIG_INLINE_WRITE_LOCK_BH is not set
204# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
205# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
206CONFIG_INLINE_WRITE_UNLOCK=y
207# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
208CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
209# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
210# CONFIG_MUTEX_SPIN_ON_OWNER is not set
180# CONFIG_FREEZER is not set 211# CONFIG_FREEZER is not set
181 212
182# 213#
@@ -185,7 +216,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
185# CONFIG_PPC_CELL is not set 216# CONFIG_PPC_CELL is not set
186# CONFIG_PPC_CELL_NATIVE is not set 217# CONFIG_PPC_CELL_NATIVE is not set
187# CONFIG_PQ2ADS is not set 218# CONFIG_PQ2ADS is not set
188CONFIG_MPC85xx=y 219CONFIG_FSL_SOC_BOOKE=y
189# CONFIG_MPC8540_ADS is not set 220# CONFIG_MPC8540_ADS is not set
190# CONFIG_MPC8560_ADS is not set 221# CONFIG_MPC8560_ADS is not set
191# CONFIG_MPC85xx_CDS is not set 222# CONFIG_MPC85xx_CDS is not set
@@ -204,6 +235,7 @@ CONFIG_MPC85xx=y
204# CONFIG_TQM8560 is not set 235# CONFIG_TQM8560 is not set
205CONFIG_SBC8548=y 236CONFIG_SBC8548=y
206# CONFIG_SBC8560 is not set 237# CONFIG_SBC8560 is not set
238# CONFIG_P4080_DS is not set
207# CONFIG_IPIC is not set 239# CONFIG_IPIC is not set
208CONFIG_MPIC=y 240CONFIG_MPIC=y
209# CONFIG_MPIC_WEIRD is not set 241# CONFIG_MPIC_WEIRD is not set
@@ -247,6 +279,7 @@ CONFIG_MATH_EMULATION=y
247CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 279CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
248CONFIG_ARCH_HAS_WALK_MEMORY=y 280CONFIG_ARCH_HAS_WALK_MEMORY=y
249CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 281CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
282CONFIG_SPARSE_IRQ=y
250CONFIG_MAX_ACTIVE_REGIONS=32 283CONFIG_MAX_ACTIVE_REGIONS=32
251CONFIG_ARCH_FLATMEM_ENABLE=y 284CONFIG_ARCH_FLATMEM_ENABLE=y
252CONFIG_ARCH_POPULATES_NODE_MAP=y 285CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -263,8 +296,6 @@ CONFIG_MIGRATION=y
263CONFIG_ZONE_DMA_FLAG=1 296CONFIG_ZONE_DMA_FLAG=1
264CONFIG_BOUNCE=y 297CONFIG_BOUNCE=y
265CONFIG_VIRT_TO_BUS=y 298CONFIG_VIRT_TO_BUS=y
266CONFIG_HAVE_MLOCK=y
267CONFIG_HAVE_MLOCKED_PAGE_BIT=y
268# CONFIG_KSM is not set 299# CONFIG_KSM is not set
269CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 300CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
270CONFIG_PPC_4K_PAGES=y 301CONFIG_PPC_4K_PAGES=y
@@ -392,9 +423,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
392# CONFIG_AF_RXRPC is not set 423# CONFIG_AF_RXRPC is not set
393CONFIG_WIRELESS=y 424CONFIG_WIRELESS=y
394# CONFIG_CFG80211 is not set 425# CONFIG_CFG80211 is not set
395CONFIG_CFG80211_DEFAULT_PS_VALUE=0
396CONFIG_WIRELESS_OLD_REGULATORY=y
397# CONFIG_WIRELESS_EXT is not set
398# CONFIG_LIB80211 is not set 426# CONFIG_LIB80211 is not set
399 427
400# 428#
@@ -431,6 +459,10 @@ CONFIG_BLK_DEV=y
431# CONFIG_BLK_DEV_COW_COMMON is not set 459# CONFIG_BLK_DEV_COW_COMMON is not set
432CONFIG_BLK_DEV_LOOP=y 460CONFIG_BLK_DEV_LOOP=y
433# CONFIG_BLK_DEV_CRYPTOLOOP is not set 461# CONFIG_BLK_DEV_CRYPTOLOOP is not set
462
463#
464# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
465#
434# CONFIG_BLK_DEV_NBD is not set 466# CONFIG_BLK_DEV_NBD is not set
435# CONFIG_BLK_DEV_SX8 is not set 467# CONFIG_BLK_DEV_SX8 is not set
436CONFIG_BLK_DEV_RAM=y 468CONFIG_BLK_DEV_RAM=y
@@ -476,7 +508,7 @@ CONFIG_HAVE_IDE=y
476# 508#
477 509
478# 510#
479# See the help texts for more information. 511# The newer stack is recommended.
480# 512#
481# CONFIG_FIREWIRE is not set 513# CONFIG_FIREWIRE is not set
482# CONFIG_IEEE1394 is not set 514# CONFIG_IEEE1394 is not set
@@ -581,8 +613,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y
581# CONFIG_BE2NET is not set 613# CONFIG_BE2NET is not set
582# CONFIG_TR is not set 614# CONFIG_TR is not set
583CONFIG_WLAN=y 615CONFIG_WLAN=y
584# CONFIG_WLAN_PRE80211 is not set 616# CONFIG_AIRO is not set
585# CONFIG_WLAN_80211 is not set 617# CONFIG_ATMEL is not set
618# CONFIG_PRISM54 is not set
619# CONFIG_HOSTAP is not set
586 620
587# 621#
588# Enable WiMAX (Networking options) to see the WiMAX drivers 622# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -595,6 +629,7 @@ CONFIG_WLAN=y
595# CONFIG_NETCONSOLE is not set 629# CONFIG_NETCONSOLE is not set
596# CONFIG_NETPOLL is not set 630# CONFIG_NETPOLL is not set
597# CONFIG_NET_POLL_CONTROLLER is not set 631# CONFIG_NET_POLL_CONTROLLER is not set
632# CONFIG_VMXNET3 is not set
598# CONFIG_ISDN is not set 633# CONFIG_ISDN is not set
599# CONFIG_PHONE is not set 634# CONFIG_PHONE is not set
600 635
@@ -604,6 +639,7 @@ CONFIG_WLAN=y
604CONFIG_INPUT=y 639CONFIG_INPUT=y
605# CONFIG_INPUT_FF_MEMLESS is not set 640# CONFIG_INPUT_FF_MEMLESS is not set
606# CONFIG_INPUT_POLLDEV is not set 641# CONFIG_INPUT_POLLDEV is not set
642# CONFIG_INPUT_SPARSEKMAP is not set
607 643
608# 644#
609# Userland interfaces 645# Userland interfaces
@@ -656,6 +692,7 @@ CONFIG_SERIAL_CORE=y
656CONFIG_SERIAL_CORE_CONSOLE=y 692CONFIG_SERIAL_CORE_CONSOLE=y
657# CONFIG_SERIAL_JSM is not set 693# CONFIG_SERIAL_JSM is not set
658# CONFIG_SERIAL_OF_PLATFORM is not set 694# CONFIG_SERIAL_OF_PLATFORM is not set
695# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
659CONFIG_UNIX98_PTYS=y 696CONFIG_UNIX98_PTYS=y
660# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 697# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
661CONFIG_LEGACY_PTYS=y 698CONFIG_LEGACY_PTYS=y
@@ -889,7 +926,7 @@ CONFIG_FRAME_WARN=1024
889# CONFIG_DEBUG_FS is not set 926# CONFIG_DEBUG_FS is not set
890# CONFIG_HEADERS_CHECK is not set 927# CONFIG_HEADERS_CHECK is not set
891# CONFIG_DEBUG_KERNEL is not set 928# CONFIG_DEBUG_KERNEL is not set
892# CONFIG_DEBUG_BUGVERBOSE is not set 929CONFIG_DEBUG_BUGVERBOSE=y
893# CONFIG_DEBUG_MEMORY_INIT is not set 930# CONFIG_DEBUG_MEMORY_INIT is not set
894# CONFIG_RCU_CPU_STALL_DETECTOR is not set 931# CONFIG_RCU_CPU_STALL_DETECTOR is not set
895# CONFIG_LATENCYTOP is not set 932# CONFIG_LATENCYTOP is not set
@@ -915,7 +952,11 @@ CONFIG_PRINT_STACK_DEPTH=64
915# CONFIG_KEYS is not set 952# CONFIG_KEYS is not set
916# CONFIG_SECURITY is not set 953# CONFIG_SECURITY is not set
917# CONFIG_SECURITYFS is not set 954# CONFIG_SECURITYFS is not set
918# CONFIG_SECURITY_FILE_CAPABILITIES is not set 955# CONFIG_DEFAULT_SECURITY_SELINUX is not set
956# CONFIG_DEFAULT_SECURITY_SMACK is not set
957# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
958CONFIG_DEFAULT_SECURITY_DAC=y
959CONFIG_DEFAULT_SECURITY=""
919CONFIG_CRYPTO=y 960CONFIG_CRYPTO=y
920 961
921# 962#
diff --git a/arch/powerpc/configs/85xx/sbc8560_defconfig b/arch/powerpc/configs/85xx/sbc8560_defconfig
index 959d0281431b..2499b5ba7141 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:37 2009 4# Wed Jan 6 09:24:30 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_E500=y 17CONFIG_E500=y
18# CONFIG_PPC_E500MC is not set 18# CONFIG_PPC_E500MC is not set
19CONFIG_FSL_EMB_PERFMON=y
19CONFIG_BOOKE=y 20CONFIG_BOOKE=y
20CONFIG_FSL_BOOKE=y 21CONFIG_FSL_BOOKE=y
21CONFIG_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
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
39# 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 40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
41CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
42CONFIG_NR_IRQS=512
42CONFIG_STACKTRACE_SUPPORT=y 43CONFIG_STACKTRACE_SUPPORT=y
43CONFIG_HAVE_LATENCYTOP_SUPPORT=y 44CONFIG_HAVE_LATENCYTOP_SUPPORT=y
44CONFIG_TRACE_IRQFLAGS_SUPPORT=y 45CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -61,6 +62,8 @@ CONFIG_AUDIT_ARCH=y
61CONFIG_GENERIC_BUG=y 62CONFIG_GENERIC_BUG=y
62CONFIG_DTC=y 63CONFIG_DTC=y
63CONFIG_DEFAULT_UIMAGE=y 64CONFIG_DEFAULT_UIMAGE=y
65CONFIG_ARCH_HIBERNATION_POSSIBLE=y
66CONFIG_ARCH_SUSPEND_POSSIBLE=y
64# CONFIG_PPC_DCR_NATIVE is not set 67# CONFIG_PPC_DCR_NATIVE is not set
65# CONFIG_PPC_DCR_MMIO is not set 68# CONFIG_PPC_DCR_MMIO is not set
66CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 69CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -88,6 +91,7 @@ CONFIG_SYSVIPC_SYSCTL=y
88# 91#
89CONFIG_TREE_RCU=y 92CONFIG_TREE_RCU=y
90# CONFIG_TREE_PREEMPT_RCU is not set 93# CONFIG_TREE_PREEMPT_RCU is not set
94# CONFIG_TINY_RCU is not set
91# CONFIG_RCU_TRACE is not set 95# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32 96CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set 97# CONFIG_RCU_FANOUT_EXACT is not set
@@ -169,14 +173,41 @@ CONFIG_LBDAF=y
169# IO Schedulers 173# IO Schedulers
170# 174#
171CONFIG_IOSCHED_NOOP=y 175CONFIG_IOSCHED_NOOP=y
172CONFIG_IOSCHED_AS=y
173CONFIG_IOSCHED_DEADLINE=y 176CONFIG_IOSCHED_DEADLINE=y
174CONFIG_IOSCHED_CFQ=y 177CONFIG_IOSCHED_CFQ=y
175CONFIG_DEFAULT_AS=y
176# CONFIG_DEFAULT_DEADLINE is not set 178# CONFIG_DEFAULT_DEADLINE is not set
177# CONFIG_DEFAULT_CFQ is not set 179CONFIG_DEFAULT_CFQ=y
178# CONFIG_DEFAULT_NOOP is not set 180# CONFIG_DEFAULT_NOOP is not set
179CONFIG_DEFAULT_IOSCHED="anticipatory" 181CONFIG_DEFAULT_IOSCHED="cfq"
182# CONFIG_INLINE_SPIN_TRYLOCK is not set
183# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
184# CONFIG_INLINE_SPIN_LOCK is not set
185# CONFIG_INLINE_SPIN_LOCK_BH is not set
186# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
187# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
188CONFIG_INLINE_SPIN_UNLOCK=y
189# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
190CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
191# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
192# CONFIG_INLINE_READ_TRYLOCK is not set
193# CONFIG_INLINE_READ_LOCK is not set
194# CONFIG_INLINE_READ_LOCK_BH is not set
195# CONFIG_INLINE_READ_LOCK_IRQ is not set
196# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
197CONFIG_INLINE_READ_UNLOCK=y
198# CONFIG_INLINE_READ_UNLOCK_BH is not set
199CONFIG_INLINE_READ_UNLOCK_IRQ=y
200# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
201# CONFIG_INLINE_WRITE_TRYLOCK is not set
202# CONFIG_INLINE_WRITE_LOCK is not set
203# CONFIG_INLINE_WRITE_LOCK_BH is not set
204# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
205# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
206CONFIG_INLINE_WRITE_UNLOCK=y
207# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
208CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
209# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
210# CONFIG_MUTEX_SPIN_ON_OWNER is not set
180# CONFIG_FREEZER is not set 211# CONFIG_FREEZER is not set
181 212
182# 213#
@@ -185,7 +216,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
185# CONFIG_PPC_CELL is not set 216# CONFIG_PPC_CELL is not set
186# CONFIG_PPC_CELL_NATIVE is not set 217# CONFIG_PPC_CELL_NATIVE is not set
187# CONFIG_PQ2ADS is not set 218# CONFIG_PQ2ADS is not set
188CONFIG_MPC85xx=y 219CONFIG_FSL_SOC_BOOKE=y
189# CONFIG_MPC8540_ADS is not set 220# CONFIG_MPC8540_ADS is not set
190# CONFIG_MPC8560_ADS is not set 221# CONFIG_MPC8560_ADS is not set
191# CONFIG_MPC85xx_CDS is not set 222# CONFIG_MPC85xx_CDS is not set
@@ -204,6 +235,7 @@ CONFIG_MPC85xx=y
204# CONFIG_TQM8560 is not set 235# CONFIG_TQM8560 is not set
205# CONFIG_SBC8548 is not set 236# CONFIG_SBC8548 is not set
206CONFIG_SBC8560=y 237CONFIG_SBC8560=y
238# CONFIG_P4080_DS is not set
207# CONFIG_IPIC is not set 239# CONFIG_IPIC is not set
208CONFIG_MPIC=y 240CONFIG_MPIC=y
209# CONFIG_MPIC_WEIRD is not set 241# CONFIG_MPIC_WEIRD is not set
@@ -247,6 +279,7 @@ CONFIG_BINFMT_MISC=y
247CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 279CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
248CONFIG_ARCH_HAS_WALK_MEMORY=y 280CONFIG_ARCH_HAS_WALK_MEMORY=y
249CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 281CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
282CONFIG_SPARSE_IRQ=y
250CONFIG_MAX_ACTIVE_REGIONS=32 283CONFIG_MAX_ACTIVE_REGIONS=32
251CONFIG_ARCH_FLATMEM_ENABLE=y 284CONFIG_ARCH_FLATMEM_ENABLE=y
252CONFIG_ARCH_POPULATES_NODE_MAP=y 285CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -263,8 +296,6 @@ CONFIG_MIGRATION=y
263CONFIG_ZONE_DMA_FLAG=1 296CONFIG_ZONE_DMA_FLAG=1
264CONFIG_BOUNCE=y 297CONFIG_BOUNCE=y
265CONFIG_VIRT_TO_BUS=y 298CONFIG_VIRT_TO_BUS=y
266CONFIG_HAVE_MLOCK=y
267CONFIG_HAVE_MLOCKED_PAGE_BIT=y
268# CONFIG_KSM is not set 299# CONFIG_KSM is not set
269CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 300CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
270CONFIG_PPC_4K_PAGES=y 301CONFIG_PPC_4K_PAGES=y
@@ -384,9 +415,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
384# CONFIG_AF_RXRPC is not set 415# CONFIG_AF_RXRPC is not set
385CONFIG_WIRELESS=y 416CONFIG_WIRELESS=y
386# CONFIG_CFG80211 is not set 417# CONFIG_CFG80211 is not set
387CONFIG_CFG80211_DEFAULT_PS_VALUE=0
388CONFIG_WIRELESS_OLD_REGULATORY=y
389# CONFIG_WIRELESS_EXT is not set
390# CONFIG_LIB80211 is not set 418# CONFIG_LIB80211 is not set
391 419
392# 420#
@@ -421,6 +449,10 @@ CONFIG_BLK_DEV=y
421# CONFIG_BLK_DEV_COW_COMMON is not set 449# CONFIG_BLK_DEV_COW_COMMON is not set
422CONFIG_BLK_DEV_LOOP=y 450CONFIG_BLK_DEV_LOOP=y
423# CONFIG_BLK_DEV_CRYPTOLOOP is not set 451# CONFIG_BLK_DEV_CRYPTOLOOP is not set
452
453#
454# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
455#
424# CONFIG_BLK_DEV_NBD is not set 456# CONFIG_BLK_DEV_NBD is not set
425CONFIG_BLK_DEV_RAM=y 457CONFIG_BLK_DEV_RAM=y
426CONFIG_BLK_DEV_RAM_COUNT=16 458CONFIG_BLK_DEV_RAM_COUNT=16
@@ -498,8 +530,7 @@ CONFIG_GIANFAR=y
498# CONFIG_MV643XX_ETH is not set 530# CONFIG_MV643XX_ETH is not set
499CONFIG_NETDEV_10000=y 531CONFIG_NETDEV_10000=y
500CONFIG_WLAN=y 532CONFIG_WLAN=y
501# CONFIG_WLAN_PRE80211 is not set 533# CONFIG_HOSTAP is not set
502# CONFIG_WLAN_80211 is not set
503 534
504# 535#
505# Enable WiMAX (Networking options) to see the WiMAX drivers 536# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -519,6 +550,7 @@ CONFIG_WLAN=y
519CONFIG_INPUT=y 550CONFIG_INPUT=y
520# CONFIG_INPUT_FF_MEMLESS is not set 551# CONFIG_INPUT_FF_MEMLESS is not set
521# CONFIG_INPUT_POLLDEV is not set 552# CONFIG_INPUT_POLLDEV is not set
553# CONFIG_INPUT_SPARSEKMAP is not set
522 554
523# 555#
524# Userland interfaces 556# Userland interfaces
@@ -568,6 +600,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
568CONFIG_SERIAL_CORE=y 600CONFIG_SERIAL_CORE=y
569CONFIG_SERIAL_CORE_CONSOLE=y 601CONFIG_SERIAL_CORE_CONSOLE=y
570# CONFIG_SERIAL_OF_PLATFORM is not set 602# CONFIG_SERIAL_OF_PLATFORM is not set
603# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
571CONFIG_UNIX98_PTYS=y 604CONFIG_UNIX98_PTYS=y
572# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 605# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
573CONFIG_LEGACY_PTYS=y 606CONFIG_LEGACY_PTYS=y
@@ -702,7 +735,9 @@ CONFIG_RTC_INTF_DEV=y
702# CONFIG_RTC_DRV_M48T86 is not set 735# CONFIG_RTC_DRV_M48T86 is not set
703# CONFIG_RTC_DRV_M48T35 is not set 736# CONFIG_RTC_DRV_M48T35 is not set
704CONFIG_RTC_DRV_M48T59=y 737CONFIG_RTC_DRV_M48T59=y
738# CONFIG_RTC_DRV_MSM6242 is not set
705# CONFIG_RTC_DRV_BQ4802 is not set 739# CONFIG_RTC_DRV_BQ4802 is not set
740# CONFIG_RTC_DRV_RP5C01 is not set
706# CONFIG_RTC_DRV_V3020 is not set 741# CONFIG_RTC_DRV_V3020 is not set
707 742
708# 743#
@@ -948,6 +983,7 @@ CONFIG_PPC_EARLY_DEBUG=y
948# CONFIG_PPC_EARLY_DEBUG_44x is not set 983# CONFIG_PPC_EARLY_DEBUG_44x is not set
949# CONFIG_PPC_EARLY_DEBUG_40x is not set 984# CONFIG_PPC_EARLY_DEBUG_40x is not set
950# CONFIG_PPC_EARLY_DEBUG_CPM is not set 985# CONFIG_PPC_EARLY_DEBUG_CPM is not set
986# CONFIG_PPC_EARLY_DEBUG_USBGECKO is not set
951 987
952# 988#
953# Security options 989# Security options
@@ -955,7 +991,11 @@ CONFIG_PPC_EARLY_DEBUG=y
955# CONFIG_KEYS is not set 991# CONFIG_KEYS is not set
956# CONFIG_SECURITY is not set 992# CONFIG_SECURITY is not set
957# CONFIG_SECURITYFS is not set 993# CONFIG_SECURITYFS is not set
958# CONFIG_SECURITY_FILE_CAPABILITIES is not set 994# CONFIG_DEFAULT_SECURITY_SELINUX is not set
995# CONFIG_DEFAULT_SECURITY_SMACK is not set
996# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
997CONFIG_DEFAULT_SECURITY_DAC=y
998CONFIG_DEFAULT_SECURITY=""
959CONFIG_CRYPTO=y 999CONFIG_CRYPTO=y
960 1000
961# 1001#
diff --git a/arch/powerpc/configs/85xx/socrates_defconfig b/arch/powerpc/configs/85xx/socrates_defconfig
index 7f5ec35bf199..e2edb79cfd1a 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:37 2009 4# Wed Jan 6 09:24:31 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_E500=y 17CONFIG_E500=y
18# CONFIG_PPC_E500MC is not set 18# CONFIG_PPC_E500MC is not set
19CONFIG_FSL_EMB_PERFMON=y
19CONFIG_BOOKE=y 20CONFIG_BOOKE=y
20CONFIG_FSL_BOOKE=y 21CONFIG_FSL_BOOKE=y
21CONFIG_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
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
39# 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 40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
41CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
42CONFIG_NR_IRQS=512
42CONFIG_STACKTRACE_SUPPORT=y 43CONFIG_STACKTRACE_SUPPORT=y
43CONFIG_HAVE_LATENCYTOP_SUPPORT=y 44CONFIG_HAVE_LATENCYTOP_SUPPORT=y
44CONFIG_TRACE_IRQFLAGS_SUPPORT=y 45CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -61,6 +62,8 @@ CONFIG_AUDIT_ARCH=y
61CONFIG_GENERIC_BUG=y 62CONFIG_GENERIC_BUG=y
62CONFIG_DTC=y 63CONFIG_DTC=y
63CONFIG_DEFAULT_UIMAGE=y 64CONFIG_DEFAULT_UIMAGE=y
65CONFIG_ARCH_HIBERNATION_POSSIBLE=y
66CONFIG_ARCH_SUSPEND_POSSIBLE=y
64# CONFIG_PPC_DCR_NATIVE is not set 67# CONFIG_PPC_DCR_NATIVE is not set
65# CONFIG_PPC_DCR_MMIO is not set 68# CONFIG_PPC_DCR_MMIO is not set
66CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 69CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -88,6 +91,7 @@ CONFIG_SYSVIPC_SYSCTL=y
88# 91#
89CONFIG_TREE_RCU=y 92CONFIG_TREE_RCU=y
90# CONFIG_TREE_PREEMPT_RCU is not set 93# CONFIG_TREE_PREEMPT_RCU is not set
94# CONFIG_TINY_RCU is not set
91# CONFIG_RCU_TRACE is not set 95# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32 96CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set 97# CONFIG_RCU_FANOUT_EXACT is not set
@@ -174,14 +178,41 @@ CONFIG_LBDAF=y
174# IO Schedulers 178# IO Schedulers
175# 179#
176CONFIG_IOSCHED_NOOP=y 180CONFIG_IOSCHED_NOOP=y
177CONFIG_IOSCHED_AS=y
178CONFIG_IOSCHED_DEADLINE=y 181CONFIG_IOSCHED_DEADLINE=y
179CONFIG_IOSCHED_CFQ=y 182CONFIG_IOSCHED_CFQ=y
180CONFIG_DEFAULT_AS=y
181# CONFIG_DEFAULT_DEADLINE is not set 183# CONFIG_DEFAULT_DEADLINE is not set
182# CONFIG_DEFAULT_CFQ is not set 184CONFIG_DEFAULT_CFQ=y
183# CONFIG_DEFAULT_NOOP is not set 185# CONFIG_DEFAULT_NOOP is not set
184CONFIG_DEFAULT_IOSCHED="anticipatory" 186CONFIG_DEFAULT_IOSCHED="cfq"
187# CONFIG_INLINE_SPIN_TRYLOCK is not set
188# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
189# CONFIG_INLINE_SPIN_LOCK is not set
190# CONFIG_INLINE_SPIN_LOCK_BH is not set
191# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
192# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
193CONFIG_INLINE_SPIN_UNLOCK=y
194# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
195CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
196# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
197# CONFIG_INLINE_READ_TRYLOCK is not set
198# CONFIG_INLINE_READ_LOCK is not set
199# CONFIG_INLINE_READ_LOCK_BH is not set
200# CONFIG_INLINE_READ_LOCK_IRQ is not set
201# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
202CONFIG_INLINE_READ_UNLOCK=y
203# CONFIG_INLINE_READ_UNLOCK_BH is not set
204CONFIG_INLINE_READ_UNLOCK_IRQ=y
205# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
206# CONFIG_INLINE_WRITE_TRYLOCK is not set
207# CONFIG_INLINE_WRITE_LOCK is not set
208# CONFIG_INLINE_WRITE_LOCK_BH is not set
209# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
210# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
211CONFIG_INLINE_WRITE_UNLOCK=y
212# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
213CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
214# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
215# CONFIG_MUTEX_SPIN_ON_OWNER is not set
185# CONFIG_FREEZER is not set 216# CONFIG_FREEZER is not set
186 217
187# 218#
@@ -190,7 +221,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
190# CONFIG_PPC_CELL is not set 221# CONFIG_PPC_CELL is not set
191# CONFIG_PPC_CELL_NATIVE is not set 222# CONFIG_PPC_CELL_NATIVE is not set
192# CONFIG_PQ2ADS is not set 223# CONFIG_PQ2ADS is not set
193CONFIG_MPC85xx=y 224CONFIG_FSL_SOC_BOOKE=y
194# CONFIG_MPC8540_ADS is not set 225# CONFIG_MPC8540_ADS is not set
195# CONFIG_MPC8560_ADS is not set 226# CONFIG_MPC8560_ADS is not set
196# CONFIG_MPC85xx_CDS is not set 227# CONFIG_MPC85xx_CDS is not set
@@ -209,6 +240,7 @@ CONFIG_SOCRATES=y
209# CONFIG_TQM8560 is not set 240# CONFIG_TQM8560 is not set
210# CONFIG_SBC8548 is not set 241# CONFIG_SBC8548 is not set
211# CONFIG_SBC8560 is not set 242# CONFIG_SBC8560 is not set
243# CONFIG_P4080_DS is not set
212# CONFIG_IPIC is not set 244# CONFIG_IPIC is not set
213CONFIG_MPIC=y 245CONFIG_MPIC=y
214# CONFIG_MPIC_WEIRD is not set 246# CONFIG_MPIC_WEIRD is not set
@@ -252,6 +284,7 @@ CONFIG_MATH_EMULATION=y
252CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 284CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
253CONFIG_ARCH_HAS_WALK_MEMORY=y 285CONFIG_ARCH_HAS_WALK_MEMORY=y
254CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 286CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
287CONFIG_SPARSE_IRQ=y
255CONFIG_MAX_ACTIVE_REGIONS=32 288CONFIG_MAX_ACTIVE_REGIONS=32
256CONFIG_ARCH_FLATMEM_ENABLE=y 289CONFIG_ARCH_FLATMEM_ENABLE=y
257CONFIG_ARCH_POPULATES_NODE_MAP=y 290CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -268,8 +301,6 @@ CONFIG_MIGRATION=y
268CONFIG_ZONE_DMA_FLAG=1 301CONFIG_ZONE_DMA_FLAG=1
269CONFIG_BOUNCE=y 302CONFIG_BOUNCE=y
270CONFIG_VIRT_TO_BUS=y 303CONFIG_VIRT_TO_BUS=y
271CONFIG_HAVE_MLOCK=y
272CONFIG_HAVE_MLOCKED_PAGE_BIT=y
273# CONFIG_KSM is not set 304# CONFIG_KSM is not set
274CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 305CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
275CONFIG_PPC_4K_PAGES=y 306CONFIG_PPC_4K_PAGES=y
@@ -404,9 +435,6 @@ CONFIG_CAN_BCM=y
404# CONFIG_AF_RXRPC is not set 435# CONFIG_AF_RXRPC is not set
405CONFIG_WIRELESS=y 436CONFIG_WIRELESS=y
406# CONFIG_CFG80211 is not set 437# CONFIG_CFG80211 is not set
407CONFIG_CFG80211_DEFAULT_PS_VALUE=0
408# CONFIG_WIRELESS_OLD_REGULATORY is not set
409# CONFIG_WIRELESS_EXT is not set
410# CONFIG_LIB80211 is not set 438# CONFIG_LIB80211 is not set
411 439
412# 440#
@@ -540,6 +568,10 @@ CONFIG_BLK_DEV=y
540# CONFIG_BLK_DEV_COW_COMMON is not set 568# CONFIG_BLK_DEV_COW_COMMON is not set
541CONFIG_BLK_DEV_LOOP=y 569CONFIG_BLK_DEV_LOOP=y
542# CONFIG_BLK_DEV_CRYPTOLOOP is not set 570# CONFIG_BLK_DEV_CRYPTOLOOP is not set
571
572#
573# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
574#
543# CONFIG_BLK_DEV_NBD is not set 575# CONFIG_BLK_DEV_NBD is not set
544# CONFIG_BLK_DEV_SX8 is not set 576# CONFIG_BLK_DEV_SX8 is not set
545# CONFIG_BLK_DEV_UB is not set 577# CONFIG_BLK_DEV_UB is not set
@@ -551,6 +583,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
551# CONFIG_ATA_OVER_ETH is not set 583# CONFIG_ATA_OVER_ETH is not set
552# CONFIG_BLK_DEV_HD is not set 584# CONFIG_BLK_DEV_HD is not set
553CONFIG_MISC_DEVICES=y 585CONFIG_MISC_DEVICES=y
586# CONFIG_AD525X_DPOT is not set
554# CONFIG_PHANTOM is not set 587# CONFIG_PHANTOM is not set
555# CONFIG_SGI_IOC4 is not set 588# CONFIG_SGI_IOC4 is not set
556# CONFIG_TIFM_CORE is not set 589# CONFIG_TIFM_CORE is not set
@@ -558,6 +591,8 @@ CONFIG_MISC_DEVICES=y
558# CONFIG_ENCLOSURE_SERVICES is not set 591# CONFIG_ENCLOSURE_SERVICES is not set
559# CONFIG_HP_ILO is not set 592# CONFIG_HP_ILO is not set
560# CONFIG_ISL29003 is not set 593# CONFIG_ISL29003 is not set
594# CONFIG_DS1682 is not set
595# CONFIG_TI_DAC7512 is not set
561# CONFIG_C2PORT is not set 596# CONFIG_C2PORT is not set
562 597
563# 598#
@@ -621,7 +656,7 @@ CONFIG_SCSI_WAIT_SCAN=m
621# 656#
622 657
623# 658#
624# See the help texts for more information. 659# The newer stack is recommended.
625# 660#
626# CONFIG_FIREWIRE is not set 661# CONFIG_FIREWIRE is not set
627# CONFIG_IEEE1394 is not set 662# CONFIG_IEEE1394 is not set
@@ -710,8 +745,11 @@ CONFIG_GIANFAR=y
710# CONFIG_NETDEV_10000 is not set 745# CONFIG_NETDEV_10000 is not set
711# CONFIG_TR is not set 746# CONFIG_TR is not set
712CONFIG_WLAN=y 747CONFIG_WLAN=y
713# CONFIG_WLAN_PRE80211 is not set 748# CONFIG_AIRO is not set
714# CONFIG_WLAN_80211 is not set 749# CONFIG_ATMEL is not set
750# CONFIG_PRISM54 is not set
751# CONFIG_USB_ZD1201 is not set
752# CONFIG_HOSTAP is not set
715 753
716# 754#
717# Enable WiMAX (Networking options) to see the WiMAX drivers 755# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -734,6 +772,7 @@ CONFIG_WLAN=y
734# CONFIG_NETCONSOLE is not set 772# CONFIG_NETCONSOLE is not set
735# CONFIG_NETPOLL is not set 773# CONFIG_NETPOLL is not set
736# CONFIG_NET_POLL_CONTROLLER is not set 774# CONFIG_NET_POLL_CONTROLLER is not set
775# CONFIG_VMXNET3 is not set
737# CONFIG_ISDN is not set 776# CONFIG_ISDN is not set
738# CONFIG_PHONE is not set 777# CONFIG_PHONE is not set
739 778
@@ -743,6 +782,7 @@ CONFIG_WLAN=y
743CONFIG_INPUT=y 782CONFIG_INPUT=y
744# CONFIG_INPUT_FF_MEMLESS is not set 783# CONFIG_INPUT_FF_MEMLESS is not set
745# CONFIG_INPUT_POLLDEV is not set 784# CONFIG_INPUT_POLLDEV is not set
785# CONFIG_INPUT_SPARSEKMAP is not set
746 786
747# 787#
748# Userland interfaces 788# Userland interfaces
@@ -768,6 +808,7 @@ CONFIG_INPUT_TOUCHSCREEN=y
768# CONFIG_TOUCHSCREEN_AD7879_I2C is not set 808# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
769# CONFIG_TOUCHSCREEN_AD7879_SPI is not set 809# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
770# CONFIG_TOUCHSCREEN_AD7879 is not set 810# CONFIG_TOUCHSCREEN_AD7879 is not set
811# CONFIG_TOUCHSCREEN_DYNAPRO is not set
771# CONFIG_TOUCHSCREEN_EETI is not set 812# CONFIG_TOUCHSCREEN_EETI is not set
772# CONFIG_TOUCHSCREEN_FUJITSU is not set 813# CONFIG_TOUCHSCREEN_FUJITSU is not set
773# CONFIG_TOUCHSCREEN_GUNZE is not set 814# CONFIG_TOUCHSCREEN_GUNZE is not set
@@ -826,6 +867,7 @@ CONFIG_SERIAL_CORE=y
826CONFIG_SERIAL_CORE_CONSOLE=y 867CONFIG_SERIAL_CORE_CONSOLE=y
827# CONFIG_SERIAL_JSM is not set 868# CONFIG_SERIAL_JSM is not set
828# CONFIG_SERIAL_OF_PLATFORM is not set 869# CONFIG_SERIAL_OF_PLATFORM is not set
870# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
829CONFIG_UNIX98_PTYS=y 871CONFIG_UNIX98_PTYS=y
830# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 872# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
831CONFIG_LEGACY_PTYS=y 873CONFIG_LEGACY_PTYS=y
@@ -883,11 +925,6 @@ CONFIG_I2C_MPC=y
883# CONFIG_I2C_TINY_USB is not set 925# CONFIG_I2C_TINY_USB is not set
884 926
885# 927#
886# Graphics adapter I2C/DDC channel drivers
887#
888# CONFIG_I2C_VOODOO3 is not set
889
890#
891# Other I2C/SMBus bus drivers 928# Other I2C/SMBus bus drivers
892# 929#
893# CONFIG_I2C_PCA_PLATFORM is not set 930# CONFIG_I2C_PCA_PLATFORM is not set
@@ -896,7 +933,6 @@ CONFIG_I2C_MPC=y
896# 933#
897# Miscellaneous I2C Chip support 934# Miscellaneous I2C Chip support
898# 935#
899# CONFIG_DS1682 is not set
900# CONFIG_SENSORS_TSL2550 is not set 936# CONFIG_SENSORS_TSL2550 is not set
901# CONFIG_I2C_DEBUG_CORE is not set 937# CONFIG_I2C_DEBUG_CORE is not set
902# CONFIG_I2C_DEBUG_ALGO is not set 938# CONFIG_I2C_DEBUG_ALGO is not set
@@ -910,6 +946,8 @@ CONFIG_SPI_MASTER=y
910# 946#
911# CONFIG_SPI_BITBANG is not set 947# CONFIG_SPI_BITBANG is not set
912# CONFIG_SPI_MPC8xxx is not set 948# CONFIG_SPI_MPC8xxx is not set
949# CONFIG_SPI_XILINX is not set
950# CONFIG_SPI_DESIGNWARE is not set
913 951
914# 952#
915# SPI Protocol Masters 953# SPI Protocol Masters
@@ -957,6 +995,7 @@ CONFIG_HWMON_DEBUG_CHIP=y
957# CONFIG_SENSORS_IT87 is not set 995# CONFIG_SENSORS_IT87 is not set
958# CONFIG_SENSORS_LM63 is not set 996# CONFIG_SENSORS_LM63 is not set
959# CONFIG_SENSORS_LM70 is not set 997# CONFIG_SENSORS_LM70 is not set
998# CONFIG_SENSORS_LM73 is not set
960CONFIG_SENSORS_LM75=y 999CONFIG_SENSORS_LM75=y
961# CONFIG_SENSORS_LM77 is not set 1000# CONFIG_SENSORS_LM77 is not set
962# CONFIG_SENSORS_LM78 is not set 1001# CONFIG_SENSORS_LM78 is not set
@@ -997,6 +1036,7 @@ CONFIG_SENSORS_W83781D=y
997# CONFIG_SENSORS_W83627HF is not set 1036# CONFIG_SENSORS_W83627HF is not set
998# CONFIG_SENSORS_W83627EHF is not set 1037# CONFIG_SENSORS_W83627EHF is not set
999# CONFIG_SENSORS_LIS3_SPI is not set 1038# CONFIG_SENSORS_LIS3_SPI is not set
1039# CONFIG_SENSORS_LIS3_I2C is not set
1000# CONFIG_THERMAL is not set 1040# CONFIG_THERMAL is not set
1001# CONFIG_WATCHDOG is not set 1041# CONFIG_WATCHDOG is not set
1002CONFIG_SSB_POSSIBLE=y 1042CONFIG_SSB_POSSIBLE=y
@@ -1015,6 +1055,7 @@ CONFIG_SSB_POSSIBLE=y
1015# CONFIG_TWL4030_CORE is not set 1055# CONFIG_TWL4030_CORE is not set
1016# CONFIG_MFD_TMIO is not set 1056# CONFIG_MFD_TMIO is not set
1017# CONFIG_PMIC_DA903X is not set 1057# CONFIG_PMIC_DA903X is not set
1058# CONFIG_PMIC_ADP5520 is not set
1018# CONFIG_MFD_WM8400 is not set 1059# CONFIG_MFD_WM8400 is not set
1019# CONFIG_MFD_WM831X is not set 1060# CONFIG_MFD_WM831X is not set
1020# CONFIG_MFD_WM8350_I2C is not set 1061# CONFIG_MFD_WM8350_I2C is not set
@@ -1022,6 +1063,8 @@ CONFIG_SSB_POSSIBLE=y
1022# CONFIG_MFD_MC13783 is not set 1063# CONFIG_MFD_MC13783 is not set
1023# CONFIG_AB3100_CORE is not set 1064# CONFIG_AB3100_CORE is not set
1024# CONFIG_EZX_PCAP is not set 1065# CONFIG_EZX_PCAP is not set
1066# CONFIG_MFD_88PM8607 is not set
1067# CONFIG_AB4500_CORE is not set
1025# CONFIG_REGULATOR is not set 1068# CONFIG_REGULATOR is not set
1026# CONFIG_MEDIA_SUPPORT is not set 1069# CONFIG_MEDIA_SUPPORT is not set
1027 1070
@@ -1192,6 +1235,7 @@ CONFIG_USB_MON=y
1192CONFIG_USB_EHCI_HCD=y 1235CONFIG_USB_EHCI_HCD=y
1193# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1236# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1194# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1237# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1238# CONFIG_XPS_USB_HCD_XILINX is not set
1195# CONFIG_USB_EHCI_FSL is not set 1239# CONFIG_USB_EHCI_FSL is not set
1196CONFIG_USB_EHCI_HCD_PPC_OF=y 1240CONFIG_USB_EHCI_HCD_PPC_OF=y
1197# CONFIG_USB_OXU210HP_HCD is not set 1241# CONFIG_USB_OXU210HP_HCD is not set
@@ -1318,6 +1362,7 @@ CONFIG_RTC_INTF_DEV=y
1318# CONFIG_RTC_DRV_PCF8563 is not set 1362# CONFIG_RTC_DRV_PCF8563 is not set
1319# CONFIG_RTC_DRV_PCF8583 is not set 1363# CONFIG_RTC_DRV_PCF8583 is not set
1320# CONFIG_RTC_DRV_M41T80 is not set 1364# CONFIG_RTC_DRV_M41T80 is not set
1365# CONFIG_RTC_DRV_BQ32K is not set
1321# CONFIG_RTC_DRV_S35390A is not set 1366# CONFIG_RTC_DRV_S35390A is not set
1322# CONFIG_RTC_DRV_FM3130 is not set 1367# CONFIG_RTC_DRV_FM3130 is not set
1323# CONFIG_RTC_DRV_RX8581 is not set 1368# CONFIG_RTC_DRV_RX8581 is not set
@@ -1347,7 +1392,9 @@ CONFIG_RTC_INTF_DEV=y
1347# CONFIG_RTC_DRV_M48T86 is not set 1392# CONFIG_RTC_DRV_M48T86 is not set
1348# CONFIG_RTC_DRV_M48T35 is not set 1393# CONFIG_RTC_DRV_M48T35 is not set
1349# CONFIG_RTC_DRV_M48T59 is not set 1394# CONFIG_RTC_DRV_M48T59 is not set
1395# CONFIG_RTC_DRV_MSM6242 is not set
1350# CONFIG_RTC_DRV_BQ4802 is not set 1396# CONFIG_RTC_DRV_BQ4802 is not set
1397# CONFIG_RTC_DRV_RP5C01 is not set
1351# CONFIG_RTC_DRV_V3020 is not set 1398# CONFIG_RTC_DRV_V3020 is not set
1352 1399
1353# 1400#
@@ -1574,7 +1621,7 @@ CONFIG_FRAME_WARN=1024
1574# CONFIG_DEBUG_KERNEL is not set 1621# CONFIG_DEBUG_KERNEL is not set
1575# CONFIG_SLUB_DEBUG_ON is not set 1622# CONFIG_SLUB_DEBUG_ON is not set
1576# CONFIG_SLUB_STATS is not set 1623# CONFIG_SLUB_STATS is not set
1577# CONFIG_DEBUG_BUGVERBOSE is not set 1624CONFIG_DEBUG_BUGVERBOSE=y
1578# CONFIG_DEBUG_MEMORY_INIT is not set 1625# CONFIG_DEBUG_MEMORY_INIT is not set
1579# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1626# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1580# CONFIG_LATENCYTOP is not set 1627# CONFIG_LATENCYTOP is not set
@@ -1600,7 +1647,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1600# CONFIG_KEYS is not set 1647# CONFIG_KEYS is not set
1601# CONFIG_SECURITY is not set 1648# CONFIG_SECURITY is not set
1602# CONFIG_SECURITYFS is not set 1649# CONFIG_SECURITYFS is not set
1603# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1650# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1651# CONFIG_DEFAULT_SECURITY_SMACK is not set
1652# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1653CONFIG_DEFAULT_SECURITY_DAC=y
1654CONFIG_DEFAULT_SECURITY=""
1604CONFIG_CRYPTO=y 1655CONFIG_CRYPTO=y
1605 1656
1606# 1657#
diff --git a/arch/powerpc/configs/85xx/stx_gp3_defconfig b/arch/powerpc/configs/85xx/stx_gp3_defconfig
index c8327e88a987..ce313259df14 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:38 2009 4# Wed Jan 6 09:24:32 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_E500=y 17CONFIG_E500=y
18# CONFIG_PPC_E500MC is not set 18# CONFIG_PPC_E500MC is not set
19CONFIG_FSL_EMB_PERFMON=y
19CONFIG_BOOKE=y 20CONFIG_BOOKE=y
20CONFIG_FSL_BOOKE=y 21CONFIG_FSL_BOOKE=y
21CONFIG_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
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
39# 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 40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
41CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
42CONFIG_NR_IRQS=512
42CONFIG_STACKTRACE_SUPPORT=y 43CONFIG_STACKTRACE_SUPPORT=y
43CONFIG_HAVE_LATENCYTOP_SUPPORT=y 44CONFIG_HAVE_LATENCYTOP_SUPPORT=y
44CONFIG_TRACE_IRQFLAGS_SUPPORT=y 45CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -62,6 +63,8 @@ CONFIG_AUDIT_ARCH=y
62CONFIG_GENERIC_BUG=y 63CONFIG_GENERIC_BUG=y
63CONFIG_DTC=y 64CONFIG_DTC=y
64CONFIG_DEFAULT_UIMAGE=y 65CONFIG_DEFAULT_UIMAGE=y
66CONFIG_ARCH_HIBERNATION_POSSIBLE=y
67CONFIG_ARCH_SUSPEND_POSSIBLE=y
65# CONFIG_PPC_DCR_NATIVE is not set 68# CONFIG_PPC_DCR_NATIVE is not set
66# CONFIG_PPC_DCR_MMIO is not set 69# CONFIG_PPC_DCR_MMIO is not set
67CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 70CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -89,6 +92,7 @@ CONFIG_SYSVIPC_SYSCTL=y
89# 92#
90CONFIG_TREE_RCU=y 93CONFIG_TREE_RCU=y
91# CONFIG_TREE_PREEMPT_RCU is not set 94# CONFIG_TREE_PREEMPT_RCU is not set
95# CONFIG_TINY_RCU is not set
92# CONFIG_RCU_TRACE is not set 96# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32 97CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set 98# CONFIG_RCU_FANOUT_EXACT is not set
@@ -178,14 +182,41 @@ CONFIG_LBDAF=y
178# IO Schedulers 182# IO Schedulers
179# 183#
180CONFIG_IOSCHED_NOOP=y 184CONFIG_IOSCHED_NOOP=y
181CONFIG_IOSCHED_AS=y
182CONFIG_IOSCHED_DEADLINE=y 185CONFIG_IOSCHED_DEADLINE=y
183CONFIG_IOSCHED_CFQ=y 186CONFIG_IOSCHED_CFQ=y
184# CONFIG_DEFAULT_AS is not set
185# CONFIG_DEFAULT_DEADLINE is not set 187# CONFIG_DEFAULT_DEADLINE is not set
186CONFIG_DEFAULT_CFQ=y 188CONFIG_DEFAULT_CFQ=y
187# CONFIG_DEFAULT_NOOP is not set 189# CONFIG_DEFAULT_NOOP is not set
188CONFIG_DEFAULT_IOSCHED="cfq" 190CONFIG_DEFAULT_IOSCHED="cfq"
191# CONFIG_INLINE_SPIN_TRYLOCK is not set
192# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
193# CONFIG_INLINE_SPIN_LOCK is not set
194# CONFIG_INLINE_SPIN_LOCK_BH is not set
195# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
196# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
197CONFIG_INLINE_SPIN_UNLOCK=y
198# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
199CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
200# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
201# CONFIG_INLINE_READ_TRYLOCK is not set
202# CONFIG_INLINE_READ_LOCK is not set
203# CONFIG_INLINE_READ_LOCK_BH is not set
204# CONFIG_INLINE_READ_LOCK_IRQ is not set
205# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
206CONFIG_INLINE_READ_UNLOCK=y
207# CONFIG_INLINE_READ_UNLOCK_BH is not set
208CONFIG_INLINE_READ_UNLOCK_IRQ=y
209# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
210# CONFIG_INLINE_WRITE_TRYLOCK is not set
211# CONFIG_INLINE_WRITE_LOCK is not set
212# CONFIG_INLINE_WRITE_LOCK_BH is not set
213# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
214# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
215CONFIG_INLINE_WRITE_UNLOCK=y
216# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
217CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
218# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
219# CONFIG_MUTEX_SPIN_ON_OWNER is not set
189# CONFIG_FREEZER is not set 220# CONFIG_FREEZER is not set
190 221
191# 222#
@@ -194,7 +225,7 @@ CONFIG_DEFAULT_IOSCHED="cfq"
194# CONFIG_PPC_CELL is not set 225# CONFIG_PPC_CELL is not set
195# CONFIG_PPC_CELL_NATIVE is not set 226# CONFIG_PPC_CELL_NATIVE is not set
196# CONFIG_PQ2ADS is not set 227# CONFIG_PQ2ADS is not set
197CONFIG_MPC85xx=y 228CONFIG_FSL_SOC_BOOKE=y
198# CONFIG_MPC8540_ADS is not set 229# CONFIG_MPC8540_ADS is not set
199# CONFIG_MPC8560_ADS is not set 230# CONFIG_MPC8560_ADS is not set
200# CONFIG_MPC85xx_CDS is not set 231# CONFIG_MPC85xx_CDS is not set
@@ -213,6 +244,7 @@ CONFIG_STX_GP3=y
213# CONFIG_TQM8560 is not set 244# CONFIG_TQM8560 is not set
214# CONFIG_SBC8548 is not set 245# CONFIG_SBC8548 is not set
215# CONFIG_SBC8560 is not set 246# CONFIG_SBC8560 is not set
247# CONFIG_P4080_DS is not set
216# CONFIG_IPIC is not set 248# CONFIG_IPIC is not set
217CONFIG_MPIC=y 249CONFIG_MPIC=y
218# CONFIG_MPIC_WEIRD is not set 250# CONFIG_MPIC_WEIRD is not set
@@ -257,6 +289,7 @@ CONFIG_MATH_EMULATION=y
257CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 289CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
258CONFIG_ARCH_HAS_WALK_MEMORY=y 290CONFIG_ARCH_HAS_WALK_MEMORY=y
259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 291CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
292CONFIG_SPARSE_IRQ=y
260CONFIG_MAX_ACTIVE_REGIONS=32 293CONFIG_MAX_ACTIVE_REGIONS=32
261CONFIG_ARCH_FLATMEM_ENABLE=y 294CONFIG_ARCH_FLATMEM_ENABLE=y
262CONFIG_ARCH_POPULATES_NODE_MAP=y 295CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -273,8 +306,6 @@ CONFIG_MIGRATION=y
273CONFIG_ZONE_DMA_FLAG=1 306CONFIG_ZONE_DMA_FLAG=1
274CONFIG_BOUNCE=y 307CONFIG_BOUNCE=y
275CONFIG_VIRT_TO_BUS=y 308CONFIG_VIRT_TO_BUS=y
276CONFIG_HAVE_MLOCK=y
277CONFIG_HAVE_MLOCKED_PAGE_BIT=y
278# CONFIG_KSM is not set 309# CONFIG_KSM is not set
279CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 310CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
280CONFIG_PPC_4K_PAGES=y 311CONFIG_PPC_4K_PAGES=y
@@ -463,9 +494,6 @@ CONFIG_NET_PKTGEN=y
463# CONFIG_AF_RXRPC is not set 494# CONFIG_AF_RXRPC is not set
464CONFIG_WIRELESS=y 495CONFIG_WIRELESS=y
465# CONFIG_CFG80211 is not set 496# CONFIG_CFG80211 is not set
466CONFIG_CFG80211_DEFAULT_PS_VALUE=0
467CONFIG_WIRELESS_OLD_REGULATORY=y
468# CONFIG_WIRELESS_EXT is not set
469# CONFIG_LIB80211 is not set 497# CONFIG_LIB80211 is not set
470 498
471# 499#
@@ -513,6 +541,10 @@ CONFIG_BLK_DEV=y
513# CONFIG_BLK_DEV_COW_COMMON is not set 541# CONFIG_BLK_DEV_COW_COMMON is not set
514CONFIG_BLK_DEV_LOOP=m 542CONFIG_BLK_DEV_LOOP=m
515# CONFIG_BLK_DEV_CRYPTOLOOP is not set 543# CONFIG_BLK_DEV_CRYPTOLOOP is not set
544
545#
546# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
547#
516CONFIG_BLK_DEV_NBD=m 548CONFIG_BLK_DEV_NBD=m
517# CONFIG_BLK_DEV_SX8 is not set 549# CONFIG_BLK_DEV_SX8 is not set
518CONFIG_BLK_DEV_RAM=y 550CONFIG_BLK_DEV_RAM=y
@@ -523,6 +555,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
523# CONFIG_ATA_OVER_ETH is not set 555# CONFIG_ATA_OVER_ETH is not set
524# CONFIG_BLK_DEV_HD is not set 556# CONFIG_BLK_DEV_HD is not set
525CONFIG_MISC_DEVICES=y 557CONFIG_MISC_DEVICES=y
558# CONFIG_AD525X_DPOT is not set
526# CONFIG_PHANTOM is not set 559# CONFIG_PHANTOM is not set
527# CONFIG_SGI_IOC4 is not set 560# CONFIG_SGI_IOC4 is not set
528# CONFIG_TIFM_CORE is not set 561# CONFIG_TIFM_CORE is not set
@@ -530,6 +563,7 @@ CONFIG_MISC_DEVICES=y
530# CONFIG_ENCLOSURE_SERVICES is not set 563# CONFIG_ENCLOSURE_SERVICES is not set
531# CONFIG_HP_ILO is not set 564# CONFIG_HP_ILO is not set
532# CONFIG_ISL29003 is not set 565# CONFIG_ISL29003 is not set
566# CONFIG_DS1682 is not set
533# CONFIG_C2PORT is not set 567# CONFIG_C2PORT is not set
534 568
535# 569#
@@ -633,7 +667,9 @@ CONFIG_SCSI_LOWLEVEL=y
633# CONFIG_SCSI_BNX2_ISCSI is not set 667# CONFIG_SCSI_BNX2_ISCSI is not set
634# CONFIG_BE2ISCSI is not set 668# CONFIG_BE2ISCSI is not set
635# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 669# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
670# CONFIG_SCSI_HPSA is not set
636# CONFIG_SCSI_3W_9XXX is not set 671# CONFIG_SCSI_3W_9XXX is not set
672# CONFIG_SCSI_3W_SAS is not set
637# CONFIG_SCSI_ACARD is not set 673# CONFIG_SCSI_ACARD is not set
638# CONFIG_SCSI_AACRAID is not set 674# CONFIG_SCSI_AACRAID is not set
639# CONFIG_SCSI_AIC7XXX is not set 675# CONFIG_SCSI_AIC7XXX is not set
@@ -673,6 +709,7 @@ CONFIG_SCSI_LOWLEVEL=y
673# CONFIG_SCSI_NSP32 is not set 709# CONFIG_SCSI_NSP32 is not set
674# CONFIG_SCSI_DEBUG is not set 710# CONFIG_SCSI_DEBUG is not set
675# CONFIG_SCSI_PMCRAID is not set 711# CONFIG_SCSI_PMCRAID is not set
712# CONFIG_SCSI_PM8001 is not set
676# CONFIG_SCSI_SRP is not set 713# CONFIG_SCSI_SRP is not set
677# CONFIG_SCSI_BFA_FC is not set 714# CONFIG_SCSI_BFA_FC is not set
678# CONFIG_SCSI_DH is not set 715# CONFIG_SCSI_DH is not set
@@ -690,7 +727,7 @@ CONFIG_SCSI_LOWLEVEL=y
690# 727#
691 728
692# 729#
693# See the help texts for more information. 730# The newer stack is recommended.
694# 731#
695# CONFIG_FIREWIRE is not set 732# CONFIG_FIREWIRE is not set
696# CONFIG_IEEE1394 is not set 733# CONFIG_IEEE1394 is not set
@@ -797,8 +834,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y
797# CONFIG_BE2NET is not set 834# CONFIG_BE2NET is not set
798# CONFIG_TR is not set 835# CONFIG_TR is not set
799CONFIG_WLAN=y 836CONFIG_WLAN=y
800# CONFIG_WLAN_PRE80211 is not set 837# CONFIG_AIRO is not set
801# CONFIG_WLAN_80211 is not set 838# CONFIG_ATMEL is not set
839# CONFIG_PRISM54 is not set
840# CONFIG_HOSTAP is not set
802 841
803# 842#
804# Enable WiMAX (Networking options) to see the WiMAX drivers 843# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -813,6 +852,7 @@ CONFIG_WLAN=y
813# CONFIG_NETCONSOLE is not set 852# CONFIG_NETCONSOLE is not set
814# CONFIG_NETPOLL is not set 853# CONFIG_NETPOLL is not set
815# CONFIG_NET_POLL_CONTROLLER is not set 854# CONFIG_NET_POLL_CONTROLLER is not set
855# CONFIG_VMXNET3 is not set
816# CONFIG_ISDN is not set 856# CONFIG_ISDN is not set
817# CONFIG_PHONE is not set 857# CONFIG_PHONE is not set
818 858
@@ -822,6 +862,7 @@ CONFIG_WLAN=y
822CONFIG_INPUT=y 862CONFIG_INPUT=y
823# CONFIG_INPUT_FF_MEMLESS is not set 863# CONFIG_INPUT_FF_MEMLESS is not set
824# CONFIG_INPUT_POLLDEV is not set 864# CONFIG_INPUT_POLLDEV is not set
865# CONFIG_INPUT_SPARSEKMAP is not set
825 866
826# 867#
827# Userland interfaces 868# Userland interfaces
@@ -881,6 +922,7 @@ CONFIG_SERIO_SERPORT=y
881CONFIG_SERIO_LIBPS2=y 922CONFIG_SERIO_LIBPS2=y
882# CONFIG_SERIO_RAW is not set 923# CONFIG_SERIO_RAW is not set
883# CONFIG_SERIO_XILINX_XPS_PS2 is not set 924# CONFIG_SERIO_XILINX_XPS_PS2 is not set
925# CONFIG_SERIO_ALTERA_PS2 is not set
884# CONFIG_GAMEPORT is not set 926# CONFIG_GAMEPORT is not set
885 927
886# 928#
@@ -905,6 +947,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
905CONFIG_SERIAL_CPM=y 947CONFIG_SERIAL_CPM=y
906CONFIG_SERIAL_CPM_CONSOLE=y 948CONFIG_SERIAL_CPM_CONSOLE=y
907# CONFIG_SERIAL_JSM is not set 949# CONFIG_SERIAL_JSM is not set
950# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
908CONFIG_UNIX98_PTYS=y 951CONFIG_UNIX98_PTYS=y
909# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 952# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
910CONFIG_LEGACY_PTYS=y 953CONFIG_LEGACY_PTYS=y
@@ -970,11 +1013,6 @@ CONFIG_I2C_ALGOBIT=m
970# CONFIG_I2C_TAOS_EVM is not set 1013# CONFIG_I2C_TAOS_EVM is not set
971 1014
972# 1015#
973# Graphics adapter I2C/DDC channel drivers
974#
975# CONFIG_I2C_VOODOO3 is not set
976
977#
978# Other I2C/SMBus bus drivers 1016# Other I2C/SMBus bus drivers
979# 1017#
980# CONFIG_I2C_PCA_PLATFORM is not set 1018# CONFIG_I2C_PCA_PLATFORM is not set
@@ -983,7 +1021,6 @@ CONFIG_I2C_ALGOBIT=m
983# 1021#
984# Miscellaneous I2C Chip support 1022# Miscellaneous I2C Chip support
985# 1023#
986# CONFIG_DS1682 is not set
987# CONFIG_SENSORS_TSL2550 is not set 1024# CONFIG_SENSORS_TSL2550 is not set
988# CONFIG_I2C_DEBUG_CORE is not set 1025# CONFIG_I2C_DEBUG_CORE is not set
989# CONFIG_I2C_DEBUG_ALGO is not set 1026# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1016,6 +1053,7 @@ CONFIG_GPIOLIB=y
1016# 1053#
1017# PCI GPIO expanders: 1054# PCI GPIO expanders:
1018# 1055#
1056# CONFIG_GPIO_CS5535 is not set
1019# CONFIG_GPIO_BT8XX is not set 1057# CONFIG_GPIO_BT8XX is not set
1020# CONFIG_GPIO_LANGWELL is not set 1058# CONFIG_GPIO_LANGWELL is not set
1021 1059
@@ -1058,6 +1096,7 @@ CONFIG_HWMON=y
1058# CONFIG_SENSORS_GL520SM is not set 1096# CONFIG_SENSORS_GL520SM is not set
1059# CONFIG_SENSORS_IT87 is not set 1097# CONFIG_SENSORS_IT87 is not set
1060# CONFIG_SENSORS_LM63 is not set 1098# CONFIG_SENSORS_LM63 is not set
1099# CONFIG_SENSORS_LM73 is not set
1061# CONFIG_SENSORS_LM75 is not set 1100# CONFIG_SENSORS_LM75 is not set
1062# CONFIG_SENSORS_LM77 is not set 1101# CONFIG_SENSORS_LM77 is not set
1063# CONFIG_SENSORS_LM78 is not set 1102# CONFIG_SENSORS_LM78 is not set
@@ -1097,6 +1136,7 @@ CONFIG_HWMON=y
1097# CONFIG_SENSORS_W83L786NG is not set 1136# CONFIG_SENSORS_W83L786NG is not set
1098# CONFIG_SENSORS_W83627HF is not set 1137# CONFIG_SENSORS_W83627HF is not set
1099# CONFIG_SENSORS_W83627EHF is not set 1138# CONFIG_SENSORS_W83627EHF is not set
1139# CONFIG_SENSORS_LIS3_I2C is not set
1100# CONFIG_THERMAL is not set 1140# CONFIG_THERMAL is not set
1101# CONFIG_WATCHDOG is not set 1141# CONFIG_WATCHDOG is not set
1102CONFIG_SSB_POSSIBLE=y 1142CONFIG_SSB_POSSIBLE=y
@@ -1115,7 +1155,6 @@ CONFIG_SSB_POSSIBLE=y
1115# CONFIG_TPS65010 is not set 1155# CONFIG_TPS65010 is not set
1116# CONFIG_MFD_TMIO is not set 1156# CONFIG_MFD_TMIO is not set
1117# CONFIG_MFD_WM8400 is not set 1157# CONFIG_MFD_WM8400 is not set
1118# CONFIG_MFD_WM831X is not set
1119# CONFIG_MFD_WM8350_I2C is not set 1158# CONFIG_MFD_WM8350_I2C is not set
1120# CONFIG_MFD_PCF50633 is not set 1159# CONFIG_MFD_PCF50633 is not set
1121# CONFIG_AB3100_CORE is not set 1160# CONFIG_AB3100_CORE is not set
@@ -1465,7 +1504,11 @@ CONFIG_BDI_SWITCH=y
1465# CONFIG_KEYS is not set 1504# CONFIG_KEYS is not set
1466# CONFIG_SECURITY is not set 1505# CONFIG_SECURITY is not set
1467# CONFIG_SECURITYFS is not set 1506# CONFIG_SECURITYFS is not set
1468# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1507# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1508# CONFIG_DEFAULT_SECURITY_SMACK is not set
1509# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1510CONFIG_DEFAULT_SECURITY_DAC=y
1511CONFIG_DEFAULT_SECURITY=""
1469CONFIG_CRYPTO=y 1512CONFIG_CRYPTO=y
1470 1513
1471# 1514#
diff --git a/arch/powerpc/configs/85xx/tqm8540_defconfig b/arch/powerpc/configs/85xx/tqm8540_defconfig
index 82563703d5e3..0824b4667229 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:39 2009 4# Wed Jan 6 09:24:33 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_E500=y 17CONFIG_E500=y
18# CONFIG_PPC_E500MC is not set 18# CONFIG_PPC_E500MC is not set
19CONFIG_FSL_EMB_PERFMON=y
19CONFIG_BOOKE=y 20CONFIG_BOOKE=y
20CONFIG_FSL_BOOKE=y 21CONFIG_FSL_BOOKE=y
21CONFIG_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
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
39# 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 40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
41CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
42CONFIG_NR_IRQS=512
42CONFIG_STACKTRACE_SUPPORT=y 43CONFIG_STACKTRACE_SUPPORT=y
43CONFIG_HAVE_LATENCYTOP_SUPPORT=y 44CONFIG_HAVE_LATENCYTOP_SUPPORT=y
44CONFIG_TRACE_IRQFLAGS_SUPPORT=y 45CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -61,6 +62,8 @@ CONFIG_AUDIT_ARCH=y
61CONFIG_GENERIC_BUG=y 62CONFIG_GENERIC_BUG=y
62CONFIG_DTC=y 63CONFIG_DTC=y
63CONFIG_DEFAULT_UIMAGE=y 64CONFIG_DEFAULT_UIMAGE=y
65CONFIG_ARCH_HIBERNATION_POSSIBLE=y
66CONFIG_ARCH_SUSPEND_POSSIBLE=y
64# CONFIG_PPC_DCR_NATIVE is not set 67# CONFIG_PPC_DCR_NATIVE is not set
65# CONFIG_PPC_DCR_MMIO is not set 68# CONFIG_PPC_DCR_MMIO is not set
66CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 69CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -88,6 +91,7 @@ CONFIG_SYSVIPC_SYSCTL=y
88# 91#
89CONFIG_TREE_RCU=y 92CONFIG_TREE_RCU=y
90# CONFIG_TREE_PREEMPT_RCU is not set 93# CONFIG_TREE_PREEMPT_RCU is not set
94# CONFIG_TINY_RCU is not set
91# CONFIG_RCU_TRACE is not set 95# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32 96CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set 97# CONFIG_RCU_FANOUT_EXACT is not set
@@ -169,14 +173,41 @@ CONFIG_LBDAF=y
169# IO Schedulers 173# IO Schedulers
170# 174#
171CONFIG_IOSCHED_NOOP=y 175CONFIG_IOSCHED_NOOP=y
172CONFIG_IOSCHED_AS=y
173CONFIG_IOSCHED_DEADLINE=y 176CONFIG_IOSCHED_DEADLINE=y
174CONFIG_IOSCHED_CFQ=y 177CONFIG_IOSCHED_CFQ=y
175CONFIG_DEFAULT_AS=y
176# CONFIG_DEFAULT_DEADLINE is not set 178# CONFIG_DEFAULT_DEADLINE is not set
177# CONFIG_DEFAULT_CFQ is not set 179CONFIG_DEFAULT_CFQ=y
178# CONFIG_DEFAULT_NOOP is not set 180# CONFIG_DEFAULT_NOOP is not set
179CONFIG_DEFAULT_IOSCHED="anticipatory" 181CONFIG_DEFAULT_IOSCHED="cfq"
182# CONFIG_INLINE_SPIN_TRYLOCK is not set
183# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
184# CONFIG_INLINE_SPIN_LOCK is not set
185# CONFIG_INLINE_SPIN_LOCK_BH is not set
186# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
187# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
188CONFIG_INLINE_SPIN_UNLOCK=y
189# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
190CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
191# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
192# CONFIG_INLINE_READ_TRYLOCK is not set
193# CONFIG_INLINE_READ_LOCK is not set
194# CONFIG_INLINE_READ_LOCK_BH is not set
195# CONFIG_INLINE_READ_LOCK_IRQ is not set
196# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
197CONFIG_INLINE_READ_UNLOCK=y
198# CONFIG_INLINE_READ_UNLOCK_BH is not set
199CONFIG_INLINE_READ_UNLOCK_IRQ=y
200# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
201# CONFIG_INLINE_WRITE_TRYLOCK is not set
202# CONFIG_INLINE_WRITE_LOCK is not set
203# CONFIG_INLINE_WRITE_LOCK_BH is not set
204# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
205# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
206CONFIG_INLINE_WRITE_UNLOCK=y
207# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
208CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
209# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
210# CONFIG_MUTEX_SPIN_ON_OWNER is not set
180# CONFIG_FREEZER is not set 211# CONFIG_FREEZER is not set
181 212
182# 213#
@@ -185,7 +216,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
185# CONFIG_PPC_CELL is not set 216# CONFIG_PPC_CELL is not set
186# CONFIG_PPC_CELL_NATIVE is not set 217# CONFIG_PPC_CELL_NATIVE is not set
187# CONFIG_PQ2ADS is not set 218# CONFIG_PQ2ADS is not set
188CONFIG_MPC85xx=y 219CONFIG_FSL_SOC_BOOKE=y
189# CONFIG_MPC8540_ADS is not set 220# CONFIG_MPC8540_ADS is not set
190# CONFIG_MPC8560_ADS is not set 221# CONFIG_MPC8560_ADS is not set
191# CONFIG_MPC85xx_CDS is not set 222# CONFIG_MPC85xx_CDS is not set
@@ -204,6 +235,7 @@ CONFIG_TQM8540=y
204# CONFIG_TQM8560 is not set 235# CONFIG_TQM8560 is not set
205# CONFIG_SBC8548 is not set 236# CONFIG_SBC8548 is not set
206# CONFIG_SBC8560 is not set 237# CONFIG_SBC8560 is not set
238# CONFIG_P4080_DS is not set
207CONFIG_TQM85xx=y 239CONFIG_TQM85xx=y
208# CONFIG_IPIC is not set 240# CONFIG_IPIC is not set
209CONFIG_MPIC=y 241CONFIG_MPIC=y
@@ -248,6 +280,7 @@ CONFIG_MATH_EMULATION=y
248CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 280CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
249CONFIG_ARCH_HAS_WALK_MEMORY=y 281CONFIG_ARCH_HAS_WALK_MEMORY=y
250CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 282CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
283CONFIG_SPARSE_IRQ=y
251CONFIG_MAX_ACTIVE_REGIONS=32 284CONFIG_MAX_ACTIVE_REGIONS=32
252CONFIG_ARCH_FLATMEM_ENABLE=y 285CONFIG_ARCH_FLATMEM_ENABLE=y
253CONFIG_ARCH_POPULATES_NODE_MAP=y 286CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -264,8 +297,6 @@ CONFIG_MIGRATION=y
264CONFIG_ZONE_DMA_FLAG=1 297CONFIG_ZONE_DMA_FLAG=1
265CONFIG_BOUNCE=y 298CONFIG_BOUNCE=y
266CONFIG_VIRT_TO_BUS=y 299CONFIG_VIRT_TO_BUS=y
267CONFIG_HAVE_MLOCK=y
268CONFIG_HAVE_MLOCKED_PAGE_BIT=y
269# CONFIG_KSM is not set 300# CONFIG_KSM is not set
270CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 301CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
271CONFIG_PPC_4K_PAGES=y 302CONFIG_PPC_4K_PAGES=y
@@ -391,9 +422,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
391# CONFIG_AF_RXRPC is not set 422# CONFIG_AF_RXRPC is not set
392CONFIG_WIRELESS=y 423CONFIG_WIRELESS=y
393# CONFIG_CFG80211 is not set 424# CONFIG_CFG80211 is not set
394CONFIG_CFG80211_DEFAULT_PS_VALUE=0
395CONFIG_WIRELESS_OLD_REGULATORY=y
396# CONFIG_WIRELESS_EXT is not set
397# CONFIG_LIB80211 is not set 425# CONFIG_LIB80211 is not set
398 426
399# 427#
@@ -510,6 +538,10 @@ CONFIG_BLK_DEV=y
510# CONFIG_BLK_DEV_COW_COMMON is not set 538# CONFIG_BLK_DEV_COW_COMMON is not set
511CONFIG_BLK_DEV_LOOP=y 539CONFIG_BLK_DEV_LOOP=y
512# CONFIG_BLK_DEV_CRYPTOLOOP is not set 540# CONFIG_BLK_DEV_CRYPTOLOOP is not set
541
542#
543# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
544#
513# CONFIG_BLK_DEV_NBD is not set 545# CONFIG_BLK_DEV_NBD is not set
514# CONFIG_BLK_DEV_SX8 is not set 546# CONFIG_BLK_DEV_SX8 is not set
515CONFIG_BLK_DEV_RAM=y 547CONFIG_BLK_DEV_RAM=y
@@ -520,6 +552,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
520# CONFIG_ATA_OVER_ETH is not set 552# CONFIG_ATA_OVER_ETH is not set
521# CONFIG_BLK_DEV_HD is not set 553# CONFIG_BLK_DEV_HD is not set
522CONFIG_MISC_DEVICES=y 554CONFIG_MISC_DEVICES=y
555# CONFIG_AD525X_DPOT is not set
523# CONFIG_PHANTOM is not set 556# CONFIG_PHANTOM is not set
524# CONFIG_SGI_IOC4 is not set 557# CONFIG_SGI_IOC4 is not set
525# CONFIG_TIFM_CORE is not set 558# CONFIG_TIFM_CORE is not set
@@ -527,6 +560,7 @@ CONFIG_MISC_DEVICES=y
527# CONFIG_ENCLOSURE_SERVICES is not set 560# CONFIG_ENCLOSURE_SERVICES is not set
528# CONFIG_HP_ILO is not set 561# CONFIG_HP_ILO is not set
529# CONFIG_ISL29003 is not set 562# CONFIG_ISL29003 is not set
563# CONFIG_DS1682 is not set
530# CONFIG_C2PORT is not set 564# CONFIG_C2PORT is not set
531 565
532# 566#
@@ -615,7 +649,7 @@ CONFIG_BLK_DEV_IDEDMA=y
615# 649#
616 650
617# 651#
618# See the help texts for more information. 652# The newer stack is recommended.
619# 653#
620# CONFIG_FIREWIRE is not set 654# CONFIG_FIREWIRE is not set
621# CONFIG_IEEE1394 is not set 655# CONFIG_IEEE1394 is not set
@@ -738,8 +772,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y
738# CONFIG_BE2NET is not set 772# CONFIG_BE2NET is not set
739# CONFIG_TR is not set 773# CONFIG_TR is not set
740CONFIG_WLAN=y 774CONFIG_WLAN=y
741# CONFIG_WLAN_PRE80211 is not set 775# CONFIG_AIRO is not set
742# CONFIG_WLAN_80211 is not set 776# CONFIG_ATMEL is not set
777# CONFIG_PRISM54 is not set
778# CONFIG_HOSTAP is not set
743 779
744# 780#
745# Enable WiMAX (Networking options) to see the WiMAX drivers 781# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -752,6 +788,7 @@ CONFIG_WLAN=y
752# CONFIG_NETCONSOLE is not set 788# CONFIG_NETCONSOLE is not set
753# CONFIG_NETPOLL is not set 789# CONFIG_NETPOLL is not set
754# CONFIG_NET_POLL_CONTROLLER is not set 790# CONFIG_NET_POLL_CONTROLLER is not set
791# CONFIG_VMXNET3 is not set
755# CONFIG_ISDN is not set 792# CONFIG_ISDN is not set
756# CONFIG_PHONE is not set 793# CONFIG_PHONE is not set
757 794
@@ -761,6 +798,7 @@ CONFIG_WLAN=y
761CONFIG_INPUT=y 798CONFIG_INPUT=y
762# CONFIG_INPUT_FF_MEMLESS is not set 799# CONFIG_INPUT_FF_MEMLESS is not set
763# CONFIG_INPUT_POLLDEV is not set 800# CONFIG_INPUT_POLLDEV is not set
801# CONFIG_INPUT_SPARSEKMAP is not set
764 802
765# 803#
766# Userland interfaces 804# Userland interfaces
@@ -813,6 +851,7 @@ CONFIG_SERIAL_CORE=y
813CONFIG_SERIAL_CORE_CONSOLE=y 851CONFIG_SERIAL_CORE_CONSOLE=y
814# CONFIG_SERIAL_JSM is not set 852# CONFIG_SERIAL_JSM is not set
815# CONFIG_SERIAL_OF_PLATFORM is not set 853# CONFIG_SERIAL_OF_PLATFORM is not set
854# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
816CONFIG_UNIX98_PTYS=y 855CONFIG_UNIX98_PTYS=y
817# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 856# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
818CONFIG_LEGACY_PTYS=y 857CONFIG_LEGACY_PTYS=y
@@ -871,11 +910,6 @@ CONFIG_I2C_MPC=y
871# CONFIG_I2C_TAOS_EVM is not set 910# CONFIG_I2C_TAOS_EVM is not set
872 911
873# 912#
874# Graphics adapter I2C/DDC channel drivers
875#
876# CONFIG_I2C_VOODOO3 is not set
877
878#
879# Other I2C/SMBus bus drivers 913# Other I2C/SMBus bus drivers
880# 914#
881# CONFIG_I2C_PCA_PLATFORM is not set 915# CONFIG_I2C_PCA_PLATFORM is not set
@@ -883,7 +917,6 @@ CONFIG_I2C_MPC=y
883# 917#
884# Miscellaneous I2C Chip support 918# Miscellaneous I2C Chip support
885# 919#
886# CONFIG_DS1682 is not set
887# CONFIG_SENSORS_TSL2550 is not set 920# CONFIG_SENSORS_TSL2550 is not set
888# CONFIG_I2C_DEBUG_CORE is not set 921# CONFIG_I2C_DEBUG_CORE is not set
889# CONFIG_I2C_DEBUG_ALGO is not set 922# CONFIG_I2C_DEBUG_ALGO is not set
@@ -929,6 +962,7 @@ CONFIG_HWMON_DEBUG_CHIP=y
929# CONFIG_SENSORS_GL520SM is not set 962# CONFIG_SENSORS_GL520SM is not set
930# CONFIG_SENSORS_IT87 is not set 963# CONFIG_SENSORS_IT87 is not set
931# CONFIG_SENSORS_LM63 is not set 964# CONFIG_SENSORS_LM63 is not set
965# CONFIG_SENSORS_LM73 is not set
932CONFIG_SENSORS_LM75=y 966CONFIG_SENSORS_LM75=y
933# CONFIG_SENSORS_LM77 is not set 967# CONFIG_SENSORS_LM77 is not set
934# CONFIG_SENSORS_LM78 is not set 968# CONFIG_SENSORS_LM78 is not set
@@ -967,6 +1001,7 @@ CONFIG_SENSORS_LM75=y
967# CONFIG_SENSORS_W83L786NG is not set 1001# CONFIG_SENSORS_W83L786NG is not set
968# CONFIG_SENSORS_W83627HF is not set 1002# CONFIG_SENSORS_W83627HF is not set
969# CONFIG_SENSORS_W83627EHF is not set 1003# CONFIG_SENSORS_W83627EHF is not set
1004# CONFIG_SENSORS_LIS3_I2C is not set
970# CONFIG_THERMAL is not set 1005# CONFIG_THERMAL is not set
971# CONFIG_WATCHDOG is not set 1006# CONFIG_WATCHDOG is not set
972CONFIG_SSB_POSSIBLE=y 1007CONFIG_SSB_POSSIBLE=y
@@ -985,11 +1020,13 @@ CONFIG_SSB_POSSIBLE=y
985# CONFIG_TWL4030_CORE is not set 1020# CONFIG_TWL4030_CORE is not set
986# CONFIG_MFD_TMIO is not set 1021# CONFIG_MFD_TMIO is not set
987# CONFIG_PMIC_DA903X is not set 1022# CONFIG_PMIC_DA903X is not set
1023# CONFIG_PMIC_ADP5520 is not set
988# CONFIG_MFD_WM8400 is not set 1024# CONFIG_MFD_WM8400 is not set
989# CONFIG_MFD_WM831X is not set 1025# CONFIG_MFD_WM831X is not set
990# CONFIG_MFD_WM8350_I2C is not set 1026# CONFIG_MFD_WM8350_I2C is not set
991# CONFIG_MFD_PCF50633 is not set 1027# CONFIG_MFD_PCF50633 is not set
992# CONFIG_AB3100_CORE is not set 1028# CONFIG_AB3100_CORE is not set
1029# CONFIG_MFD_88PM8607 is not set
993# CONFIG_REGULATOR is not set 1030# CONFIG_REGULATOR is not set
994# CONFIG_MEDIA_SUPPORT is not set 1031# CONFIG_MEDIA_SUPPORT is not set
995 1032
@@ -1220,7 +1257,7 @@ CONFIG_FRAME_WARN=1024
1220# CONFIG_DEBUG_KERNEL is not set 1257# CONFIG_DEBUG_KERNEL is not set
1221# CONFIG_SLUB_DEBUG_ON is not set 1258# CONFIG_SLUB_DEBUG_ON is not set
1222# CONFIG_SLUB_STATS is not set 1259# CONFIG_SLUB_STATS is not set
1223# CONFIG_DEBUG_BUGVERBOSE is not set 1260CONFIG_DEBUG_BUGVERBOSE=y
1224# CONFIG_DEBUG_MEMORY_INIT is not set 1261# CONFIG_DEBUG_MEMORY_INIT is not set
1225# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1262# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1226# CONFIG_LATENCYTOP is not set 1263# CONFIG_LATENCYTOP is not set
@@ -1246,7 +1283,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1246# CONFIG_KEYS is not set 1283# CONFIG_KEYS is not set
1247# CONFIG_SECURITY is not set 1284# CONFIG_SECURITY is not set
1248# CONFIG_SECURITYFS is not set 1285# CONFIG_SECURITYFS is not set
1249# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1286# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1287# CONFIG_DEFAULT_SECURITY_SMACK is not set
1288# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1289CONFIG_DEFAULT_SECURITY_DAC=y
1290CONFIG_DEFAULT_SECURITY=""
1250CONFIG_CRYPTO=y 1291CONFIG_CRYPTO=y
1251 1292
1252# 1293#
diff --git a/arch/powerpc/configs/85xx/tqm8541_defconfig b/arch/powerpc/configs/85xx/tqm8541_defconfig
index 91d85d733827..2137be4100ed 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:40 2009 4# Wed Jan 6 09:24:34 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_E500=y 17CONFIG_E500=y
18# CONFIG_PPC_E500MC is not set 18# CONFIG_PPC_E500MC is not set
19CONFIG_FSL_EMB_PERFMON=y
19CONFIG_BOOKE=y 20CONFIG_BOOKE=y
20CONFIG_FSL_BOOKE=y 21CONFIG_FSL_BOOKE=y
21CONFIG_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
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
39# 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 40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
41CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
42CONFIG_NR_IRQS=512
42CONFIG_STACKTRACE_SUPPORT=y 43CONFIG_STACKTRACE_SUPPORT=y
43CONFIG_HAVE_LATENCYTOP_SUPPORT=y 44CONFIG_HAVE_LATENCYTOP_SUPPORT=y
44CONFIG_TRACE_IRQFLAGS_SUPPORT=y 45CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -62,6 +63,8 @@ CONFIG_AUDIT_ARCH=y
62CONFIG_GENERIC_BUG=y 63CONFIG_GENERIC_BUG=y
63CONFIG_DTC=y 64CONFIG_DTC=y
64CONFIG_DEFAULT_UIMAGE=y 65CONFIG_DEFAULT_UIMAGE=y
66CONFIG_ARCH_HIBERNATION_POSSIBLE=y
67CONFIG_ARCH_SUSPEND_POSSIBLE=y
65# CONFIG_PPC_DCR_NATIVE is not set 68# CONFIG_PPC_DCR_NATIVE is not set
66# CONFIG_PPC_DCR_MMIO is not set 69# CONFIG_PPC_DCR_MMIO is not set
67CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 70CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -89,6 +92,7 @@ CONFIG_SYSVIPC_SYSCTL=y
89# 92#
90CONFIG_TREE_RCU=y 93CONFIG_TREE_RCU=y
91# CONFIG_TREE_PREEMPT_RCU is not set 94# CONFIG_TREE_PREEMPT_RCU is not set
95# CONFIG_TINY_RCU is not set
92# CONFIG_RCU_TRACE is not set 96# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32 97CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set 98# CONFIG_RCU_FANOUT_EXACT is not set
@@ -171,14 +175,41 @@ CONFIG_LBDAF=y
171# IO Schedulers 175# IO Schedulers
172# 176#
173CONFIG_IOSCHED_NOOP=y 177CONFIG_IOSCHED_NOOP=y
174CONFIG_IOSCHED_AS=y
175CONFIG_IOSCHED_DEADLINE=y 178CONFIG_IOSCHED_DEADLINE=y
176CONFIG_IOSCHED_CFQ=y 179CONFIG_IOSCHED_CFQ=y
177CONFIG_DEFAULT_AS=y
178# CONFIG_DEFAULT_DEADLINE is not set 180# CONFIG_DEFAULT_DEADLINE is not set
179# CONFIG_DEFAULT_CFQ is not set 181CONFIG_DEFAULT_CFQ=y
180# CONFIG_DEFAULT_NOOP is not set 182# CONFIG_DEFAULT_NOOP is not set
181CONFIG_DEFAULT_IOSCHED="anticipatory" 183CONFIG_DEFAULT_IOSCHED="cfq"
184# CONFIG_INLINE_SPIN_TRYLOCK is not set
185# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
186# CONFIG_INLINE_SPIN_LOCK is not set
187# CONFIG_INLINE_SPIN_LOCK_BH is not set
188# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
190CONFIG_INLINE_SPIN_UNLOCK=y
191# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
192CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
193# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
194# CONFIG_INLINE_READ_TRYLOCK is not set
195# CONFIG_INLINE_READ_LOCK is not set
196# CONFIG_INLINE_READ_LOCK_BH is not set
197# CONFIG_INLINE_READ_LOCK_IRQ is not set
198# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
199CONFIG_INLINE_READ_UNLOCK=y
200# CONFIG_INLINE_READ_UNLOCK_BH is not set
201CONFIG_INLINE_READ_UNLOCK_IRQ=y
202# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
203# CONFIG_INLINE_WRITE_TRYLOCK is not set
204# CONFIG_INLINE_WRITE_LOCK is not set
205# CONFIG_INLINE_WRITE_LOCK_BH is not set
206# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
208CONFIG_INLINE_WRITE_UNLOCK=y
209# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
210CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
211# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
212# CONFIG_MUTEX_SPIN_ON_OWNER is not set
182# CONFIG_FREEZER is not set 213# CONFIG_FREEZER is not set
183 214
184# 215#
@@ -187,7 +218,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
187# CONFIG_PPC_CELL is not set 218# CONFIG_PPC_CELL is not set
188# CONFIG_PPC_CELL_NATIVE is not set 219# CONFIG_PPC_CELL_NATIVE is not set
189# CONFIG_PQ2ADS is not set 220# CONFIG_PQ2ADS is not set
190CONFIG_MPC85xx=y 221CONFIG_FSL_SOC_BOOKE=y
191# CONFIG_MPC8540_ADS is not set 222# CONFIG_MPC8540_ADS is not set
192# CONFIG_MPC8560_ADS is not set 223# CONFIG_MPC8560_ADS is not set
193# CONFIG_MPC85xx_CDS is not set 224# CONFIG_MPC85xx_CDS is not set
@@ -206,6 +237,7 @@ CONFIG_TQM8541=y
206# CONFIG_TQM8560 is not set 237# CONFIG_TQM8560 is not set
207# CONFIG_SBC8548 is not set 238# CONFIG_SBC8548 is not set
208# CONFIG_SBC8560 is not set 239# CONFIG_SBC8560 is not set
240# CONFIG_P4080_DS is not set
209CONFIG_TQM85xx=y 241CONFIG_TQM85xx=y
210# CONFIG_IPIC is not set 242# CONFIG_IPIC is not set
211CONFIG_MPIC=y 243CONFIG_MPIC=y
@@ -251,6 +283,7 @@ CONFIG_MATH_EMULATION=y
251CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 283CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
252CONFIG_ARCH_HAS_WALK_MEMORY=y 284CONFIG_ARCH_HAS_WALK_MEMORY=y
253CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 285CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
286CONFIG_SPARSE_IRQ=y
254CONFIG_MAX_ACTIVE_REGIONS=32 287CONFIG_MAX_ACTIVE_REGIONS=32
255CONFIG_ARCH_FLATMEM_ENABLE=y 288CONFIG_ARCH_FLATMEM_ENABLE=y
256CONFIG_ARCH_POPULATES_NODE_MAP=y 289CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -267,8 +300,6 @@ CONFIG_MIGRATION=y
267CONFIG_ZONE_DMA_FLAG=1 300CONFIG_ZONE_DMA_FLAG=1
268CONFIG_BOUNCE=y 301CONFIG_BOUNCE=y
269CONFIG_VIRT_TO_BUS=y 302CONFIG_VIRT_TO_BUS=y
270CONFIG_HAVE_MLOCK=y
271CONFIG_HAVE_MLOCKED_PAGE_BIT=y
272# CONFIG_KSM is not set 303# CONFIG_KSM is not set
273CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 304CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
274CONFIG_PPC_4K_PAGES=y 305CONFIG_PPC_4K_PAGES=y
@@ -394,9 +425,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
394# CONFIG_AF_RXRPC is not set 425# CONFIG_AF_RXRPC is not set
395CONFIG_WIRELESS=y 426CONFIG_WIRELESS=y
396# CONFIG_CFG80211 is not set 427# CONFIG_CFG80211 is not set
397CONFIG_CFG80211_DEFAULT_PS_VALUE=0
398CONFIG_WIRELESS_OLD_REGULATORY=y
399# CONFIG_WIRELESS_EXT is not set
400# CONFIG_LIB80211 is not set 428# CONFIG_LIB80211 is not set
401 429
402# 430#
@@ -514,6 +542,10 @@ CONFIG_BLK_DEV=y
514# CONFIG_BLK_DEV_COW_COMMON is not set 542# CONFIG_BLK_DEV_COW_COMMON is not set
515CONFIG_BLK_DEV_LOOP=y 543CONFIG_BLK_DEV_LOOP=y
516# CONFIG_BLK_DEV_CRYPTOLOOP is not set 544# CONFIG_BLK_DEV_CRYPTOLOOP is not set
545
546#
547# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
548#
517# CONFIG_BLK_DEV_NBD is not set 549# CONFIG_BLK_DEV_NBD is not set
518# CONFIG_BLK_DEV_SX8 is not set 550# CONFIG_BLK_DEV_SX8 is not set
519CONFIG_BLK_DEV_RAM=y 551CONFIG_BLK_DEV_RAM=y
@@ -524,6 +556,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
524# CONFIG_ATA_OVER_ETH is not set 556# CONFIG_ATA_OVER_ETH is not set
525# CONFIG_BLK_DEV_HD is not set 557# CONFIG_BLK_DEV_HD is not set
526CONFIG_MISC_DEVICES=y 558CONFIG_MISC_DEVICES=y
559# CONFIG_AD525X_DPOT is not set
527# CONFIG_PHANTOM is not set 560# CONFIG_PHANTOM is not set
528# CONFIG_SGI_IOC4 is not set 561# CONFIG_SGI_IOC4 is not set
529# CONFIG_TIFM_CORE is not set 562# CONFIG_TIFM_CORE is not set
@@ -531,6 +564,7 @@ CONFIG_MISC_DEVICES=y
531# CONFIG_ENCLOSURE_SERVICES is not set 564# CONFIG_ENCLOSURE_SERVICES is not set
532# CONFIG_HP_ILO is not set 565# CONFIG_HP_ILO is not set
533# CONFIG_ISL29003 is not set 566# CONFIG_ISL29003 is not set
567# CONFIG_DS1682 is not set
534# CONFIG_C2PORT is not set 568# CONFIG_C2PORT is not set
535 569
536# 570#
@@ -619,7 +653,7 @@ CONFIG_BLK_DEV_IDEDMA=y
619# 653#
620 654
621# 655#
622# See the help texts for more information. 656# The newer stack is recommended.
623# 657#
624# CONFIG_FIREWIRE is not set 658# CONFIG_FIREWIRE is not set
625# CONFIG_IEEE1394 is not set 659# CONFIG_IEEE1394 is not set
@@ -743,8 +777,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y
743# CONFIG_BE2NET is not set 777# CONFIG_BE2NET is not set
744# CONFIG_TR is not set 778# CONFIG_TR is not set
745CONFIG_WLAN=y 779CONFIG_WLAN=y
746# CONFIG_WLAN_PRE80211 is not set 780# CONFIG_AIRO is not set
747# CONFIG_WLAN_80211 is not set 781# CONFIG_ATMEL is not set
782# CONFIG_PRISM54 is not set
783# CONFIG_HOSTAP is not set
748 784
749# 785#
750# Enable WiMAX (Networking options) to see the WiMAX drivers 786# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -757,6 +793,7 @@ CONFIG_WLAN=y
757# CONFIG_NETCONSOLE is not set 793# CONFIG_NETCONSOLE is not set
758# CONFIG_NETPOLL is not set 794# CONFIG_NETPOLL is not set
759# CONFIG_NET_POLL_CONTROLLER is not set 795# CONFIG_NET_POLL_CONTROLLER is not set
796# CONFIG_VMXNET3 is not set
760# CONFIG_ISDN is not set 797# CONFIG_ISDN is not set
761# CONFIG_PHONE is not set 798# CONFIG_PHONE is not set
762 799
@@ -766,6 +803,7 @@ CONFIG_WLAN=y
766CONFIG_INPUT=y 803CONFIG_INPUT=y
767# CONFIG_INPUT_FF_MEMLESS is not set 804# CONFIG_INPUT_FF_MEMLESS is not set
768# CONFIG_INPUT_POLLDEV is not set 805# CONFIG_INPUT_POLLDEV is not set
806# CONFIG_INPUT_SPARSEKMAP is not set
769 807
770# 808#
771# Userland interfaces 809# Userland interfaces
@@ -820,6 +858,7 @@ CONFIG_SERIAL_CPM=y
820CONFIG_SERIAL_CPM_CONSOLE=y 858CONFIG_SERIAL_CPM_CONSOLE=y
821# CONFIG_SERIAL_JSM is not set 859# CONFIG_SERIAL_JSM is not set
822# CONFIG_SERIAL_OF_PLATFORM is not set 860# CONFIG_SERIAL_OF_PLATFORM is not set
861# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
823CONFIG_UNIX98_PTYS=y 862CONFIG_UNIX98_PTYS=y
824# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 863# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
825CONFIG_LEGACY_PTYS=y 864CONFIG_LEGACY_PTYS=y
@@ -881,11 +920,6 @@ CONFIG_I2C_MPC=y
881# CONFIG_I2C_TAOS_EVM is not set 920# CONFIG_I2C_TAOS_EVM is not set
882 921
883# 922#
884# Graphics adapter I2C/DDC channel drivers
885#
886# CONFIG_I2C_VOODOO3 is not set
887
888#
889# Other I2C/SMBus bus drivers 923# Other I2C/SMBus bus drivers
890# 924#
891# CONFIG_I2C_PCA_PLATFORM is not set 925# CONFIG_I2C_PCA_PLATFORM is not set
@@ -893,7 +927,6 @@ CONFIG_I2C_MPC=y
893# 927#
894# Miscellaneous I2C Chip support 928# Miscellaneous I2C Chip support
895# 929#
896# CONFIG_DS1682 is not set
897# CONFIG_SENSORS_TSL2550 is not set 930# CONFIG_SENSORS_TSL2550 is not set
898# CONFIG_I2C_DEBUG_CORE is not set 931# CONFIG_I2C_DEBUG_CORE is not set
899# CONFIG_I2C_DEBUG_ALGO is not set 932# CONFIG_I2C_DEBUG_ALGO is not set
@@ -925,6 +958,7 @@ CONFIG_GPIOLIB=y
925# 958#
926# PCI GPIO expanders: 959# PCI GPIO expanders:
927# 960#
961# CONFIG_GPIO_CS5535 is not set
928# CONFIG_GPIO_BT8XX is not set 962# CONFIG_GPIO_BT8XX is not set
929# CONFIG_GPIO_LANGWELL is not set 963# CONFIG_GPIO_LANGWELL is not set
930 964
@@ -967,6 +1001,7 @@ CONFIG_HWMON_DEBUG_CHIP=y
967# CONFIG_SENSORS_GL520SM is not set 1001# CONFIG_SENSORS_GL520SM is not set
968# CONFIG_SENSORS_IT87 is not set 1002# CONFIG_SENSORS_IT87 is not set
969# CONFIG_SENSORS_LM63 is not set 1003# CONFIG_SENSORS_LM63 is not set
1004# CONFIG_SENSORS_LM73 is not set
970CONFIG_SENSORS_LM75=y 1005CONFIG_SENSORS_LM75=y
971# CONFIG_SENSORS_LM77 is not set 1006# CONFIG_SENSORS_LM77 is not set
972# CONFIG_SENSORS_LM78 is not set 1007# CONFIG_SENSORS_LM78 is not set
@@ -1006,6 +1041,7 @@ CONFIG_SENSORS_LM75=y
1006# CONFIG_SENSORS_W83L786NG is not set 1041# CONFIG_SENSORS_W83L786NG is not set
1007# CONFIG_SENSORS_W83627HF is not set 1042# CONFIG_SENSORS_W83627HF is not set
1008# CONFIG_SENSORS_W83627EHF is not set 1043# CONFIG_SENSORS_W83627EHF is not set
1044# CONFIG_SENSORS_LIS3_I2C is not set
1009# CONFIG_THERMAL is not set 1045# CONFIG_THERMAL is not set
1010# CONFIG_WATCHDOG is not set 1046# CONFIG_WATCHDOG is not set
1011CONFIG_SSB_POSSIBLE=y 1047CONFIG_SSB_POSSIBLE=y
@@ -1025,11 +1061,13 @@ CONFIG_SSB_POSSIBLE=y
1025# CONFIG_TWL4030_CORE is not set 1061# CONFIG_TWL4030_CORE is not set
1026# CONFIG_MFD_TMIO is not set 1062# CONFIG_MFD_TMIO is not set
1027# CONFIG_PMIC_DA903X is not set 1063# CONFIG_PMIC_DA903X is not set
1064# CONFIG_PMIC_ADP5520 is not set
1028# CONFIG_MFD_WM8400 is not set 1065# CONFIG_MFD_WM8400 is not set
1029# CONFIG_MFD_WM831X is not set 1066# CONFIG_MFD_WM831X is not set
1030# CONFIG_MFD_WM8350_I2C is not set 1067# CONFIG_MFD_WM8350_I2C is not set
1031# CONFIG_MFD_PCF50633 is not set 1068# CONFIG_MFD_PCF50633 is not set
1032# CONFIG_AB3100_CORE is not set 1069# CONFIG_AB3100_CORE is not set
1070# CONFIG_MFD_88PM8607 is not set
1033# CONFIG_REGULATOR is not set 1071# CONFIG_REGULATOR is not set
1034# CONFIG_MEDIA_SUPPORT is not set 1072# CONFIG_MEDIA_SUPPORT is not set
1035 1073
@@ -1260,7 +1298,7 @@ CONFIG_FRAME_WARN=1024
1260# CONFIG_DEBUG_KERNEL is not set 1298# CONFIG_DEBUG_KERNEL is not set
1261# CONFIG_SLUB_DEBUG_ON is not set 1299# CONFIG_SLUB_DEBUG_ON is not set
1262# CONFIG_SLUB_STATS is not set 1300# CONFIG_SLUB_STATS is not set
1263# CONFIG_DEBUG_BUGVERBOSE is not set 1301CONFIG_DEBUG_BUGVERBOSE=y
1264# CONFIG_DEBUG_MEMORY_INIT is not set 1302# CONFIG_DEBUG_MEMORY_INIT is not set
1265# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1303# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1266# CONFIG_LATENCYTOP is not set 1304# CONFIG_LATENCYTOP is not set
@@ -1286,7 +1324,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1286# CONFIG_KEYS is not set 1324# CONFIG_KEYS is not set
1287# CONFIG_SECURITY is not set 1325# CONFIG_SECURITY is not set
1288# CONFIG_SECURITYFS is not set 1326# CONFIG_SECURITYFS is not set
1289# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1327# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1328# CONFIG_DEFAULT_SECURITY_SMACK is not set
1329# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1330CONFIG_DEFAULT_SECURITY_DAC=y
1331CONFIG_DEFAULT_SECURITY=""
1290CONFIG_CRYPTO=y 1332CONFIG_CRYPTO=y
1291 1333
1292# 1334#
diff --git a/arch/powerpc/configs/85xx/tqm8548_defconfig b/arch/powerpc/configs/85xx/tqm8548_defconfig
index debe268f43d1..5cc89aac3fec 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:41 2009 4# Wed Jan 6 09:24:35 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_E500=y 17CONFIG_E500=y
18# CONFIG_PPC_E500MC is not set 18# CONFIG_PPC_E500MC is not set
19CONFIG_FSL_EMB_PERFMON=y
19CONFIG_BOOKE=y 20CONFIG_BOOKE=y
20CONFIG_FSL_BOOKE=y 21CONFIG_FSL_BOOKE=y
21CONFIG_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
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
39# 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 40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
41CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
42CONFIG_NR_IRQS=512
42CONFIG_STACKTRACE_SUPPORT=y 43CONFIG_STACKTRACE_SUPPORT=y
43CONFIG_HAVE_LATENCYTOP_SUPPORT=y 44CONFIG_HAVE_LATENCYTOP_SUPPORT=y
44CONFIG_TRACE_IRQFLAGS_SUPPORT=y 45CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -61,6 +62,8 @@ CONFIG_AUDIT_ARCH=y
61CONFIG_GENERIC_BUG=y 62CONFIG_GENERIC_BUG=y
62CONFIG_DTC=y 63CONFIG_DTC=y
63CONFIG_DEFAULT_UIMAGE=y 64CONFIG_DEFAULT_UIMAGE=y
65CONFIG_ARCH_HIBERNATION_POSSIBLE=y
66CONFIG_ARCH_SUSPEND_POSSIBLE=y
64# CONFIG_PPC_DCR_NATIVE is not set 67# CONFIG_PPC_DCR_NATIVE is not set
65# CONFIG_PPC_DCR_MMIO is not set 68# CONFIG_PPC_DCR_MMIO is not set
66CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 69CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -88,6 +91,7 @@ CONFIG_SYSVIPC_SYSCTL=y
88# 91#
89CONFIG_TREE_RCU=y 92CONFIG_TREE_RCU=y
90# CONFIG_TREE_PREEMPT_RCU is not set 93# CONFIG_TREE_PREEMPT_RCU is not set
94# CONFIG_TINY_RCU is not set
91# CONFIG_RCU_TRACE is not set 95# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32 96CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set 97# CONFIG_RCU_FANOUT_EXACT is not set
@@ -177,14 +181,41 @@ CONFIG_LBDAF=y
177# IO Schedulers 181# IO Schedulers
178# 182#
179CONFIG_IOSCHED_NOOP=y 183CONFIG_IOSCHED_NOOP=y
180CONFIG_IOSCHED_AS=y
181CONFIG_IOSCHED_DEADLINE=y 184CONFIG_IOSCHED_DEADLINE=y
182CONFIG_IOSCHED_CFQ=y 185CONFIG_IOSCHED_CFQ=y
183CONFIG_DEFAULT_AS=y
184# CONFIG_DEFAULT_DEADLINE is not set 186# CONFIG_DEFAULT_DEADLINE is not set
185# CONFIG_DEFAULT_CFQ is not set 187CONFIG_DEFAULT_CFQ=y
186# CONFIG_DEFAULT_NOOP is not set 188# CONFIG_DEFAULT_NOOP is not set
187CONFIG_DEFAULT_IOSCHED="anticipatory" 189CONFIG_DEFAULT_IOSCHED="cfq"
190# CONFIG_INLINE_SPIN_TRYLOCK is not set
191# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
192# CONFIG_INLINE_SPIN_LOCK is not set
193# CONFIG_INLINE_SPIN_LOCK_BH is not set
194# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
195# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
196CONFIG_INLINE_SPIN_UNLOCK=y
197# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
198CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
199# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
200# CONFIG_INLINE_READ_TRYLOCK is not set
201# CONFIG_INLINE_READ_LOCK is not set
202# CONFIG_INLINE_READ_LOCK_BH is not set
203# CONFIG_INLINE_READ_LOCK_IRQ is not set
204# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
205CONFIG_INLINE_READ_UNLOCK=y
206# CONFIG_INLINE_READ_UNLOCK_BH is not set
207CONFIG_INLINE_READ_UNLOCK_IRQ=y
208# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
209# CONFIG_INLINE_WRITE_TRYLOCK is not set
210# CONFIG_INLINE_WRITE_LOCK is not set
211# CONFIG_INLINE_WRITE_LOCK_BH is not set
212# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
213# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
214CONFIG_INLINE_WRITE_UNLOCK=y
215# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
216CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
217# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
218# CONFIG_MUTEX_SPIN_ON_OWNER is not set
188# CONFIG_FREEZER is not set 219# CONFIG_FREEZER is not set
189 220
190# 221#
@@ -193,7 +224,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
193# CONFIG_PPC_CELL is not set 224# CONFIG_PPC_CELL is not set
194# CONFIG_PPC_CELL_NATIVE is not set 225# CONFIG_PPC_CELL_NATIVE is not set
195# CONFIG_PQ2ADS is not set 226# CONFIG_PQ2ADS is not set
196CONFIG_MPC85xx=y 227CONFIG_FSL_SOC_BOOKE=y
197# CONFIG_MPC8540_ADS is not set 228# CONFIG_MPC8540_ADS is not set
198# CONFIG_MPC8560_ADS is not set 229# CONFIG_MPC8560_ADS is not set
199# CONFIG_MPC85xx_CDS is not set 230# CONFIG_MPC85xx_CDS is not set
@@ -212,6 +243,7 @@ CONFIG_TQM8548=y
212# CONFIG_TQM8560 is not set 243# CONFIG_TQM8560 is not set
213# CONFIG_SBC8548 is not set 244# CONFIG_SBC8548 is not set
214# CONFIG_SBC8560 is not set 245# CONFIG_SBC8560 is not set
246# CONFIG_P4080_DS is not set
215CONFIG_TQM85xx=y 247CONFIG_TQM85xx=y
216# CONFIG_IPIC is not set 248# CONFIG_IPIC is not set
217CONFIG_MPIC=y 249CONFIG_MPIC=y
@@ -257,6 +289,7 @@ CONFIG_MATH_EMULATION=y
257CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 289CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
258CONFIG_ARCH_HAS_WALK_MEMORY=y 290CONFIG_ARCH_HAS_WALK_MEMORY=y
259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 291CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
292CONFIG_SPARSE_IRQ=y
260CONFIG_MAX_ACTIVE_REGIONS=32 293CONFIG_MAX_ACTIVE_REGIONS=32
261CONFIG_ARCH_FLATMEM_ENABLE=y 294CONFIG_ARCH_FLATMEM_ENABLE=y
262CONFIG_ARCH_POPULATES_NODE_MAP=y 295CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -273,8 +306,6 @@ CONFIG_MIGRATION=y
273CONFIG_ZONE_DMA_FLAG=1 306CONFIG_ZONE_DMA_FLAG=1
274CONFIG_BOUNCE=y 307CONFIG_BOUNCE=y
275CONFIG_VIRT_TO_BUS=y 308CONFIG_VIRT_TO_BUS=y
276CONFIG_HAVE_MLOCK=y
277CONFIG_HAVE_MLOCKED_PAGE_BIT=y
278# CONFIG_KSM is not set 309# CONFIG_KSM is not set
279CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 310CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
280CONFIG_PPC_4K_PAGES=y 311CONFIG_PPC_4K_PAGES=y
@@ -406,7 +437,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
406# CONFIG_IRDA is not set 437# CONFIG_IRDA is not set
407# CONFIG_BT is not set 438# CONFIG_BT is not set
408# CONFIG_AF_RXRPC is not set 439# CONFIG_AF_RXRPC is not set
409# CONFIG_WIRELESS is not set 440CONFIG_WIRELESS=y
441# CONFIG_CFG80211 is not set
442# CONFIG_LIB80211 is not set
443
444#
445# CFG80211 needs to be enabled for MAC80211
446#
410# CONFIG_WIMAX is not set 447# CONFIG_WIMAX is not set
411# CONFIG_RFKILL is not set 448# CONFIG_RFKILL is not set
412# CONFIG_NET_9P is not set 449# CONFIG_NET_9P is not set
@@ -535,6 +572,10 @@ CONFIG_BLK_DEV=y
535# CONFIG_BLK_DEV_COW_COMMON is not set 572# CONFIG_BLK_DEV_COW_COMMON is not set
536CONFIG_BLK_DEV_LOOP=y 573CONFIG_BLK_DEV_LOOP=y
537# CONFIG_BLK_DEV_CRYPTOLOOP is not set 574# CONFIG_BLK_DEV_CRYPTOLOOP is not set
575
576#
577# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
578#
538# CONFIG_BLK_DEV_NBD is not set 579# CONFIG_BLK_DEV_NBD is not set
539# CONFIG_BLK_DEV_SX8 is not set 580# CONFIG_BLK_DEV_SX8 is not set
540CONFIG_BLK_DEV_RAM=y 581CONFIG_BLK_DEV_RAM=y
@@ -545,6 +586,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
545# CONFIG_ATA_OVER_ETH is not set 586# CONFIG_ATA_OVER_ETH is not set
546# CONFIG_BLK_DEV_HD is not set 587# CONFIG_BLK_DEV_HD is not set
547CONFIG_MISC_DEVICES=y 588CONFIG_MISC_DEVICES=y
589# CONFIG_AD525X_DPOT is not set
548# CONFIG_PHANTOM is not set 590# CONFIG_PHANTOM is not set
549# CONFIG_SGI_IOC4 is not set 591# CONFIG_SGI_IOC4 is not set
550# CONFIG_TIFM_CORE is not set 592# CONFIG_TIFM_CORE is not set
@@ -552,6 +594,7 @@ CONFIG_MISC_DEVICES=y
552# CONFIG_ENCLOSURE_SERVICES is not set 594# CONFIG_ENCLOSURE_SERVICES is not set
553# CONFIG_HP_ILO is not set 595# CONFIG_HP_ILO is not set
554# CONFIG_ISL29003 is not set 596# CONFIG_ISL29003 is not set
597# CONFIG_DS1682 is not set
555# CONFIG_C2PORT is not set 598# CONFIG_C2PORT is not set
556 599
557# 600#
@@ -585,7 +628,7 @@ CONFIG_HAVE_IDE=y
585# 628#
586 629
587# 630#
588# See the help texts for more information. 631# The newer stack is recommended.
589# 632#
590# CONFIG_FIREWIRE is not set 633# CONFIG_FIREWIRE is not set
591# CONFIG_IEEE1394 is not set 634# CONFIG_IEEE1394 is not set
@@ -690,8 +733,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y
690# CONFIG_BE2NET is not set 733# CONFIG_BE2NET is not set
691# CONFIG_TR is not set 734# CONFIG_TR is not set
692CONFIG_WLAN=y 735CONFIG_WLAN=y
693# CONFIG_WLAN_PRE80211 is not set 736# CONFIG_AIRO is not set
694# CONFIG_WLAN_80211 is not set 737# CONFIG_ATMEL is not set
738# CONFIG_PRISM54 is not set
739# CONFIG_HOSTAP is not set
695 740
696# 741#
697# Enable WiMAX (Networking options) to see the WiMAX drivers 742# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -704,6 +749,7 @@ CONFIG_WLAN=y
704# CONFIG_NETCONSOLE is not set 749# CONFIG_NETCONSOLE is not set
705# CONFIG_NETPOLL is not set 750# CONFIG_NETPOLL is not set
706# CONFIG_NET_POLL_CONTROLLER is not set 751# CONFIG_NET_POLL_CONTROLLER is not set
752# CONFIG_VMXNET3 is not set
707# CONFIG_ISDN is not set 753# CONFIG_ISDN is not set
708# CONFIG_PHONE is not set 754# CONFIG_PHONE is not set
709 755
@@ -713,6 +759,7 @@ CONFIG_WLAN=y
713CONFIG_INPUT=y 759CONFIG_INPUT=y
714# CONFIG_INPUT_FF_MEMLESS is not set 760# CONFIG_INPUT_FF_MEMLESS is not set
715# CONFIG_INPUT_POLLDEV is not set 761# CONFIG_INPUT_POLLDEV is not set
762# CONFIG_INPUT_SPARSEKMAP is not set
716 763
717# 764#
718# Userland interfaces 765# Userland interfaces
@@ -765,6 +812,7 @@ CONFIG_SERIAL_CORE=y
765CONFIG_SERIAL_CORE_CONSOLE=y 812CONFIG_SERIAL_CORE_CONSOLE=y
766# CONFIG_SERIAL_JSM is not set 813# CONFIG_SERIAL_JSM is not set
767# CONFIG_SERIAL_OF_PLATFORM is not set 814# CONFIG_SERIAL_OF_PLATFORM is not set
815# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
768CONFIG_UNIX98_PTYS=y 816CONFIG_UNIX98_PTYS=y
769# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 817# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
770CONFIG_LEGACY_PTYS=y 818CONFIG_LEGACY_PTYS=y
@@ -820,11 +868,6 @@ CONFIG_I2C_MPC=y
820# CONFIG_I2C_TAOS_EVM is not set 868# CONFIG_I2C_TAOS_EVM is not set
821 869
822# 870#
823# Graphics adapter I2C/DDC channel drivers
824#
825# CONFIG_I2C_VOODOO3 is not set
826
827#
828# Other I2C/SMBus bus drivers 871# Other I2C/SMBus bus drivers
829# 872#
830# CONFIG_I2C_PCA_PLATFORM is not set 873# CONFIG_I2C_PCA_PLATFORM is not set
@@ -833,7 +876,6 @@ CONFIG_I2C_MPC=y
833# 876#
834# Miscellaneous I2C Chip support 877# Miscellaneous I2C Chip support
835# 878#
836# CONFIG_DS1682 is not set
837# CONFIG_SENSORS_TSL2550 is not set 879# CONFIG_SENSORS_TSL2550 is not set
838# CONFIG_I2C_DEBUG_CORE is not set 880# CONFIG_I2C_DEBUG_CORE is not set
839# CONFIG_I2C_DEBUG_ALGO is not set 881# CONFIG_I2C_DEBUG_ALGO is not set
@@ -879,6 +921,7 @@ CONFIG_HWMON=y
879# CONFIG_SENSORS_GL520SM is not set 921# CONFIG_SENSORS_GL520SM is not set
880# CONFIG_SENSORS_IT87 is not set 922# CONFIG_SENSORS_IT87 is not set
881# CONFIG_SENSORS_LM63 is not set 923# CONFIG_SENSORS_LM63 is not set
924# CONFIG_SENSORS_LM73 is not set
882CONFIG_SENSORS_LM75=y 925CONFIG_SENSORS_LM75=y
883# CONFIG_SENSORS_LM77 is not set 926# CONFIG_SENSORS_LM77 is not set
884# CONFIG_SENSORS_LM78 is not set 927# CONFIG_SENSORS_LM78 is not set
@@ -917,6 +960,7 @@ CONFIG_SENSORS_LM75=y
917# CONFIG_SENSORS_W83L786NG is not set 960# CONFIG_SENSORS_W83L786NG is not set
918# CONFIG_SENSORS_W83627HF is not set 961# CONFIG_SENSORS_W83627HF is not set
919# CONFIG_SENSORS_W83627EHF is not set 962# CONFIG_SENSORS_W83627EHF is not set
963# CONFIG_SENSORS_LIS3_I2C is not set
920# CONFIG_THERMAL is not set 964# CONFIG_THERMAL is not set
921# CONFIG_WATCHDOG is not set 965# CONFIG_WATCHDOG is not set
922CONFIG_SSB_POSSIBLE=y 966CONFIG_SSB_POSSIBLE=y
@@ -935,11 +979,13 @@ CONFIG_SSB_POSSIBLE=y
935# CONFIG_TWL4030_CORE is not set 979# CONFIG_TWL4030_CORE is not set
936# CONFIG_MFD_TMIO is not set 980# CONFIG_MFD_TMIO is not set
937# CONFIG_PMIC_DA903X is not set 981# CONFIG_PMIC_DA903X is not set
982# CONFIG_PMIC_ADP5520 is not set
938# CONFIG_MFD_WM8400 is not set 983# CONFIG_MFD_WM8400 is not set
939# CONFIG_MFD_WM831X is not set 984# CONFIG_MFD_WM831X is not set
940# CONFIG_MFD_WM8350_I2C is not set 985# CONFIG_MFD_WM8350_I2C is not set
941# CONFIG_MFD_PCF50633 is not set 986# CONFIG_MFD_PCF50633 is not set
942# CONFIG_AB3100_CORE is not set 987# CONFIG_AB3100_CORE is not set
988# CONFIG_MFD_88PM8607 is not set
943# CONFIG_REGULATOR is not set 989# CONFIG_REGULATOR is not set
944# CONFIG_MEDIA_SUPPORT is not set 990# CONFIG_MEDIA_SUPPORT is not set
945 991
@@ -1003,6 +1049,7 @@ CONFIG_RTC_DRV_DS1307=y
1003# CONFIG_RTC_DRV_PCF8563 is not set 1049# CONFIG_RTC_DRV_PCF8563 is not set
1004# CONFIG_RTC_DRV_PCF8583 is not set 1050# CONFIG_RTC_DRV_PCF8583 is not set
1005# CONFIG_RTC_DRV_M41T80 is not set 1051# CONFIG_RTC_DRV_M41T80 is not set
1052# CONFIG_RTC_DRV_BQ32K is not set
1006# CONFIG_RTC_DRV_S35390A is not set 1053# CONFIG_RTC_DRV_S35390A is not set
1007# CONFIG_RTC_DRV_FM3130 is not set 1054# CONFIG_RTC_DRV_FM3130 is not set
1008# CONFIG_RTC_DRV_RX8581 is not set 1055# CONFIG_RTC_DRV_RX8581 is not set
@@ -1024,7 +1071,9 @@ CONFIG_RTC_DRV_DS1307=y
1024# CONFIG_RTC_DRV_M48T86 is not set 1071# CONFIG_RTC_DRV_M48T86 is not set
1025# CONFIG_RTC_DRV_M48T35 is not set 1072# CONFIG_RTC_DRV_M48T35 is not set
1026# CONFIG_RTC_DRV_M48T59 is not set 1073# CONFIG_RTC_DRV_M48T59 is not set
1074# CONFIG_RTC_DRV_MSM6242 is not set
1027# CONFIG_RTC_DRV_BQ4802 is not set 1075# CONFIG_RTC_DRV_BQ4802 is not set
1076# CONFIG_RTC_DRV_RP5C01 is not set
1028# CONFIG_RTC_DRV_V3020 is not set 1077# CONFIG_RTC_DRV_V3020 is not set
1029 1078
1030# 1079#
@@ -1280,7 +1329,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1280# CONFIG_KEYS is not set 1329# CONFIG_KEYS is not set
1281# CONFIG_SECURITY is not set 1330# CONFIG_SECURITY is not set
1282# CONFIG_SECURITYFS is not set 1331# CONFIG_SECURITYFS is not set
1283# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1332# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1333# CONFIG_DEFAULT_SECURITY_SMACK is not set
1334# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1335CONFIG_DEFAULT_SECURITY_DAC=y
1336CONFIG_DEFAULT_SECURITY=""
1284CONFIG_CRYPTO=y 1337CONFIG_CRYPTO=y
1285 1338
1286# 1339#
diff --git a/arch/powerpc/configs/85xx/tqm8555_defconfig b/arch/powerpc/configs/85xx/tqm8555_defconfig
index 74515501f5b7..e7b9148e58cf 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:42 2009 4# Wed Jan 6 09:24:36 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_E500=y 17CONFIG_E500=y
18# CONFIG_PPC_E500MC is not set 18# CONFIG_PPC_E500MC is not set
19CONFIG_FSL_EMB_PERFMON=y
19CONFIG_BOOKE=y 20CONFIG_BOOKE=y
20CONFIG_FSL_BOOKE=y 21CONFIG_FSL_BOOKE=y
21CONFIG_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
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
39# 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 40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
41CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
42CONFIG_NR_IRQS=512
42CONFIG_STACKTRACE_SUPPORT=y 43CONFIG_STACKTRACE_SUPPORT=y
43CONFIG_HAVE_LATENCYTOP_SUPPORT=y 44CONFIG_HAVE_LATENCYTOP_SUPPORT=y
44CONFIG_TRACE_IRQFLAGS_SUPPORT=y 45CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -62,6 +63,8 @@ CONFIG_AUDIT_ARCH=y
62CONFIG_GENERIC_BUG=y 63CONFIG_GENERIC_BUG=y
63CONFIG_DTC=y 64CONFIG_DTC=y
64CONFIG_DEFAULT_UIMAGE=y 65CONFIG_DEFAULT_UIMAGE=y
66CONFIG_ARCH_HIBERNATION_POSSIBLE=y
67CONFIG_ARCH_SUSPEND_POSSIBLE=y
65# CONFIG_PPC_DCR_NATIVE is not set 68# CONFIG_PPC_DCR_NATIVE is not set
66# CONFIG_PPC_DCR_MMIO is not set 69# CONFIG_PPC_DCR_MMIO is not set
67CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 70CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -89,6 +92,7 @@ CONFIG_SYSVIPC_SYSCTL=y
89# 92#
90CONFIG_TREE_RCU=y 93CONFIG_TREE_RCU=y
91# CONFIG_TREE_PREEMPT_RCU is not set 94# CONFIG_TREE_PREEMPT_RCU is not set
95# CONFIG_TINY_RCU is not set
92# CONFIG_RCU_TRACE is not set 96# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32 97CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set 98# CONFIG_RCU_FANOUT_EXACT is not set
@@ -171,14 +175,41 @@ CONFIG_LBDAF=y
171# IO Schedulers 175# IO Schedulers
172# 176#
173CONFIG_IOSCHED_NOOP=y 177CONFIG_IOSCHED_NOOP=y
174CONFIG_IOSCHED_AS=y
175CONFIG_IOSCHED_DEADLINE=y 178CONFIG_IOSCHED_DEADLINE=y
176CONFIG_IOSCHED_CFQ=y 179CONFIG_IOSCHED_CFQ=y
177CONFIG_DEFAULT_AS=y
178# CONFIG_DEFAULT_DEADLINE is not set 180# CONFIG_DEFAULT_DEADLINE is not set
179# CONFIG_DEFAULT_CFQ is not set 181CONFIG_DEFAULT_CFQ=y
180# CONFIG_DEFAULT_NOOP is not set 182# CONFIG_DEFAULT_NOOP is not set
181CONFIG_DEFAULT_IOSCHED="anticipatory" 183CONFIG_DEFAULT_IOSCHED="cfq"
184# CONFIG_INLINE_SPIN_TRYLOCK is not set
185# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
186# CONFIG_INLINE_SPIN_LOCK is not set
187# CONFIG_INLINE_SPIN_LOCK_BH is not set
188# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
190CONFIG_INLINE_SPIN_UNLOCK=y
191# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
192CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
193# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
194# CONFIG_INLINE_READ_TRYLOCK is not set
195# CONFIG_INLINE_READ_LOCK is not set
196# CONFIG_INLINE_READ_LOCK_BH is not set
197# CONFIG_INLINE_READ_LOCK_IRQ is not set
198# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
199CONFIG_INLINE_READ_UNLOCK=y
200# CONFIG_INLINE_READ_UNLOCK_BH is not set
201CONFIG_INLINE_READ_UNLOCK_IRQ=y
202# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
203# CONFIG_INLINE_WRITE_TRYLOCK is not set
204# CONFIG_INLINE_WRITE_LOCK is not set
205# CONFIG_INLINE_WRITE_LOCK_BH is not set
206# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
208CONFIG_INLINE_WRITE_UNLOCK=y
209# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
210CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
211# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
212# CONFIG_MUTEX_SPIN_ON_OWNER is not set
182# CONFIG_FREEZER is not set 213# CONFIG_FREEZER is not set
183 214
184# 215#
@@ -187,7 +218,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
187# CONFIG_PPC_CELL is not set 218# CONFIG_PPC_CELL is not set
188# CONFIG_PPC_CELL_NATIVE is not set 219# CONFIG_PPC_CELL_NATIVE is not set
189# CONFIG_PQ2ADS is not set 220# CONFIG_PQ2ADS is not set
190CONFIG_MPC85xx=y 221CONFIG_FSL_SOC_BOOKE=y
191# CONFIG_MPC8540_ADS is not set 222# CONFIG_MPC8540_ADS is not set
192# CONFIG_MPC8560_ADS is not set 223# CONFIG_MPC8560_ADS is not set
193# CONFIG_MPC85xx_CDS is not set 224# CONFIG_MPC85xx_CDS is not set
@@ -206,6 +237,7 @@ CONFIG_TQM8555=y
206# CONFIG_TQM8560 is not set 237# CONFIG_TQM8560 is not set
207# CONFIG_SBC8548 is not set 238# CONFIG_SBC8548 is not set
208# CONFIG_SBC8560 is not set 239# CONFIG_SBC8560 is not set
240# CONFIG_P4080_DS is not set
209CONFIG_TQM85xx=y 241CONFIG_TQM85xx=y
210# CONFIG_IPIC is not set 242# CONFIG_IPIC is not set
211CONFIG_MPIC=y 243CONFIG_MPIC=y
@@ -251,6 +283,7 @@ CONFIG_MATH_EMULATION=y
251CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 283CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
252CONFIG_ARCH_HAS_WALK_MEMORY=y 284CONFIG_ARCH_HAS_WALK_MEMORY=y
253CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 285CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
286CONFIG_SPARSE_IRQ=y
254CONFIG_MAX_ACTIVE_REGIONS=32 287CONFIG_MAX_ACTIVE_REGIONS=32
255CONFIG_ARCH_FLATMEM_ENABLE=y 288CONFIG_ARCH_FLATMEM_ENABLE=y
256CONFIG_ARCH_POPULATES_NODE_MAP=y 289CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -267,8 +300,6 @@ CONFIG_MIGRATION=y
267CONFIG_ZONE_DMA_FLAG=1 300CONFIG_ZONE_DMA_FLAG=1
268CONFIG_BOUNCE=y 301CONFIG_BOUNCE=y
269CONFIG_VIRT_TO_BUS=y 302CONFIG_VIRT_TO_BUS=y
270CONFIG_HAVE_MLOCK=y
271CONFIG_HAVE_MLOCKED_PAGE_BIT=y
272# CONFIG_KSM is not set 303# CONFIG_KSM is not set
273CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 304CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
274CONFIG_PPC_4K_PAGES=y 305CONFIG_PPC_4K_PAGES=y
@@ -394,9 +425,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
394# CONFIG_AF_RXRPC is not set 425# CONFIG_AF_RXRPC is not set
395CONFIG_WIRELESS=y 426CONFIG_WIRELESS=y
396# CONFIG_CFG80211 is not set 427# CONFIG_CFG80211 is not set
397CONFIG_CFG80211_DEFAULT_PS_VALUE=0
398CONFIG_WIRELESS_OLD_REGULATORY=y
399# CONFIG_WIRELESS_EXT is not set
400# CONFIG_LIB80211 is not set 428# CONFIG_LIB80211 is not set
401 429
402# 430#
@@ -514,6 +542,10 @@ CONFIG_BLK_DEV=y
514# CONFIG_BLK_DEV_COW_COMMON is not set 542# CONFIG_BLK_DEV_COW_COMMON is not set
515CONFIG_BLK_DEV_LOOP=y 543CONFIG_BLK_DEV_LOOP=y
516# CONFIG_BLK_DEV_CRYPTOLOOP is not set 544# CONFIG_BLK_DEV_CRYPTOLOOP is not set
545
546#
547# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
548#
517# CONFIG_BLK_DEV_NBD is not set 549# CONFIG_BLK_DEV_NBD is not set
518# CONFIG_BLK_DEV_SX8 is not set 550# CONFIG_BLK_DEV_SX8 is not set
519CONFIG_BLK_DEV_RAM=y 551CONFIG_BLK_DEV_RAM=y
@@ -524,6 +556,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
524# CONFIG_ATA_OVER_ETH is not set 556# CONFIG_ATA_OVER_ETH is not set
525# CONFIG_BLK_DEV_HD is not set 557# CONFIG_BLK_DEV_HD is not set
526CONFIG_MISC_DEVICES=y 558CONFIG_MISC_DEVICES=y
559# CONFIG_AD525X_DPOT is not set
527# CONFIG_PHANTOM is not set 560# CONFIG_PHANTOM is not set
528# CONFIG_SGI_IOC4 is not set 561# CONFIG_SGI_IOC4 is not set
529# CONFIG_TIFM_CORE is not set 562# CONFIG_TIFM_CORE is not set
@@ -531,6 +564,7 @@ CONFIG_MISC_DEVICES=y
531# CONFIG_ENCLOSURE_SERVICES is not set 564# CONFIG_ENCLOSURE_SERVICES is not set
532# CONFIG_HP_ILO is not set 565# CONFIG_HP_ILO is not set
533# CONFIG_ISL29003 is not set 566# CONFIG_ISL29003 is not set
567# CONFIG_DS1682 is not set
534# CONFIG_C2PORT is not set 568# CONFIG_C2PORT is not set
535 569
536# 570#
@@ -619,7 +653,7 @@ CONFIG_BLK_DEV_IDEDMA=y
619# 653#
620 654
621# 655#
622# See the help texts for more information. 656# The newer stack is recommended.
623# 657#
624# CONFIG_FIREWIRE is not set 658# CONFIG_FIREWIRE is not set
625# CONFIG_IEEE1394 is not set 659# CONFIG_IEEE1394 is not set
@@ -743,8 +777,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y
743# CONFIG_BE2NET is not set 777# CONFIG_BE2NET is not set
744# CONFIG_TR is not set 778# CONFIG_TR is not set
745CONFIG_WLAN=y 779CONFIG_WLAN=y
746# CONFIG_WLAN_PRE80211 is not set 780# CONFIG_AIRO is not set
747# CONFIG_WLAN_80211 is not set 781# CONFIG_ATMEL is not set
782# CONFIG_PRISM54 is not set
783# CONFIG_HOSTAP is not set
748 784
749# 785#
750# Enable WiMAX (Networking options) to see the WiMAX drivers 786# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -757,6 +793,7 @@ CONFIG_WLAN=y
757# CONFIG_NETCONSOLE is not set 793# CONFIG_NETCONSOLE is not set
758# CONFIG_NETPOLL is not set 794# CONFIG_NETPOLL is not set
759# CONFIG_NET_POLL_CONTROLLER is not set 795# CONFIG_NET_POLL_CONTROLLER is not set
796# CONFIG_VMXNET3 is not set
760# CONFIG_ISDN is not set 797# CONFIG_ISDN is not set
761# CONFIG_PHONE is not set 798# CONFIG_PHONE is not set
762 799
@@ -766,6 +803,7 @@ CONFIG_WLAN=y
766CONFIG_INPUT=y 803CONFIG_INPUT=y
767# CONFIG_INPUT_FF_MEMLESS is not set 804# CONFIG_INPUT_FF_MEMLESS is not set
768# CONFIG_INPUT_POLLDEV is not set 805# CONFIG_INPUT_POLLDEV is not set
806# CONFIG_INPUT_SPARSEKMAP is not set
769 807
770# 808#
771# Userland interfaces 809# Userland interfaces
@@ -820,6 +858,7 @@ CONFIG_SERIAL_CPM=y
820CONFIG_SERIAL_CPM_CONSOLE=y 858CONFIG_SERIAL_CPM_CONSOLE=y
821# CONFIG_SERIAL_JSM is not set 859# CONFIG_SERIAL_JSM is not set
822# CONFIG_SERIAL_OF_PLATFORM is not set 860# CONFIG_SERIAL_OF_PLATFORM is not set
861# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
823CONFIG_UNIX98_PTYS=y 862CONFIG_UNIX98_PTYS=y
824# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 863# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
825CONFIG_LEGACY_PTYS=y 864CONFIG_LEGACY_PTYS=y
@@ -881,11 +920,6 @@ CONFIG_I2C_MPC=y
881# CONFIG_I2C_TAOS_EVM is not set 920# CONFIG_I2C_TAOS_EVM is not set
882 921
883# 922#
884# Graphics adapter I2C/DDC channel drivers
885#
886# CONFIG_I2C_VOODOO3 is not set
887
888#
889# Other I2C/SMBus bus drivers 923# Other I2C/SMBus bus drivers
890# 924#
891# CONFIG_I2C_PCA_PLATFORM is not set 925# CONFIG_I2C_PCA_PLATFORM is not set
@@ -893,7 +927,6 @@ CONFIG_I2C_MPC=y
893# 927#
894# Miscellaneous I2C Chip support 928# Miscellaneous I2C Chip support
895# 929#
896# CONFIG_DS1682 is not set
897# CONFIG_SENSORS_TSL2550 is not set 930# CONFIG_SENSORS_TSL2550 is not set
898# CONFIG_I2C_DEBUG_CORE is not set 931# CONFIG_I2C_DEBUG_CORE is not set
899# CONFIG_I2C_DEBUG_ALGO is not set 932# CONFIG_I2C_DEBUG_ALGO is not set
@@ -925,6 +958,7 @@ CONFIG_GPIOLIB=y
925# 958#
926# PCI GPIO expanders: 959# PCI GPIO expanders:
927# 960#
961# CONFIG_GPIO_CS5535 is not set
928# CONFIG_GPIO_BT8XX is not set 962# CONFIG_GPIO_BT8XX is not set
929# CONFIG_GPIO_LANGWELL is not set 963# CONFIG_GPIO_LANGWELL is not set
930 964
@@ -967,6 +1001,7 @@ CONFIG_HWMON_DEBUG_CHIP=y
967# CONFIG_SENSORS_GL520SM is not set 1001# CONFIG_SENSORS_GL520SM is not set
968# CONFIG_SENSORS_IT87 is not set 1002# CONFIG_SENSORS_IT87 is not set
969# CONFIG_SENSORS_LM63 is not set 1003# CONFIG_SENSORS_LM63 is not set
1004# CONFIG_SENSORS_LM73 is not set
970CONFIG_SENSORS_LM75=y 1005CONFIG_SENSORS_LM75=y
971# CONFIG_SENSORS_LM77 is not set 1006# CONFIG_SENSORS_LM77 is not set
972# CONFIG_SENSORS_LM78 is not set 1007# CONFIG_SENSORS_LM78 is not set
@@ -1006,6 +1041,7 @@ CONFIG_SENSORS_LM75=y
1006# CONFIG_SENSORS_W83L786NG is not set 1041# CONFIG_SENSORS_W83L786NG is not set
1007# CONFIG_SENSORS_W83627HF is not set 1042# CONFIG_SENSORS_W83627HF is not set
1008# CONFIG_SENSORS_W83627EHF is not set 1043# CONFIG_SENSORS_W83627EHF is not set
1044# CONFIG_SENSORS_LIS3_I2C is not set
1009# CONFIG_THERMAL is not set 1045# CONFIG_THERMAL is not set
1010# CONFIG_WATCHDOG is not set 1046# CONFIG_WATCHDOG is not set
1011CONFIG_SSB_POSSIBLE=y 1047CONFIG_SSB_POSSIBLE=y
@@ -1025,11 +1061,13 @@ CONFIG_SSB_POSSIBLE=y
1025# CONFIG_TWL4030_CORE is not set 1061# CONFIG_TWL4030_CORE is not set
1026# CONFIG_MFD_TMIO is not set 1062# CONFIG_MFD_TMIO is not set
1027# CONFIG_PMIC_DA903X is not set 1063# CONFIG_PMIC_DA903X is not set
1064# CONFIG_PMIC_ADP5520 is not set
1028# CONFIG_MFD_WM8400 is not set 1065# CONFIG_MFD_WM8400 is not set
1029# CONFIG_MFD_WM831X is not set 1066# CONFIG_MFD_WM831X is not set
1030# CONFIG_MFD_WM8350_I2C is not set 1067# CONFIG_MFD_WM8350_I2C is not set
1031# CONFIG_MFD_PCF50633 is not set 1068# CONFIG_MFD_PCF50633 is not set
1032# CONFIG_AB3100_CORE is not set 1069# CONFIG_AB3100_CORE is not set
1070# CONFIG_MFD_88PM8607 is not set
1033# CONFIG_REGULATOR is not set 1071# CONFIG_REGULATOR is not set
1034# CONFIG_MEDIA_SUPPORT is not set 1072# CONFIG_MEDIA_SUPPORT is not set
1035 1073
@@ -1260,7 +1298,7 @@ CONFIG_FRAME_WARN=1024
1260# CONFIG_DEBUG_KERNEL is not set 1298# CONFIG_DEBUG_KERNEL is not set
1261# CONFIG_SLUB_DEBUG_ON is not set 1299# CONFIG_SLUB_DEBUG_ON is not set
1262# CONFIG_SLUB_STATS is not set 1300# CONFIG_SLUB_STATS is not set
1263# CONFIG_DEBUG_BUGVERBOSE is not set 1301CONFIG_DEBUG_BUGVERBOSE=y
1264# CONFIG_DEBUG_MEMORY_INIT is not set 1302# CONFIG_DEBUG_MEMORY_INIT is not set
1265# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1303# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1266# CONFIG_LATENCYTOP is not set 1304# CONFIG_LATENCYTOP is not set
@@ -1286,7 +1324,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1286# CONFIG_KEYS is not set 1324# CONFIG_KEYS is not set
1287# CONFIG_SECURITY is not set 1325# CONFIG_SECURITY is not set
1288# CONFIG_SECURITYFS is not set 1326# CONFIG_SECURITYFS is not set
1289# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1327# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1328# CONFIG_DEFAULT_SECURITY_SMACK is not set
1329# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1330CONFIG_DEFAULT_SECURITY_DAC=y
1331CONFIG_DEFAULT_SECURITY=""
1290CONFIG_CRYPTO=y 1332CONFIG_CRYPTO=y
1291 1333
1292# 1334#
diff --git a/arch/powerpc/configs/85xx/tqm8560_defconfig b/arch/powerpc/configs/85xx/tqm8560_defconfig
index 631d92b4d4e6..a998e401bbfc 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:43 2009 4# Wed Jan 6 09:24:36 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_E500=y 17CONFIG_E500=y
18# CONFIG_PPC_E500MC is not set 18# CONFIG_PPC_E500MC is not set
19CONFIG_FSL_EMB_PERFMON=y
19CONFIG_BOOKE=y 20CONFIG_BOOKE=y
20CONFIG_FSL_BOOKE=y 21CONFIG_FSL_BOOKE=y
21CONFIG_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
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
39# 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 40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
41CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
42CONFIG_NR_IRQS=512
42CONFIG_STACKTRACE_SUPPORT=y 43CONFIG_STACKTRACE_SUPPORT=y
43CONFIG_HAVE_LATENCYTOP_SUPPORT=y 44CONFIG_HAVE_LATENCYTOP_SUPPORT=y
44CONFIG_TRACE_IRQFLAGS_SUPPORT=y 45CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -62,6 +63,8 @@ CONFIG_AUDIT_ARCH=y
62CONFIG_GENERIC_BUG=y 63CONFIG_GENERIC_BUG=y
63CONFIG_DTC=y 64CONFIG_DTC=y
64CONFIG_DEFAULT_UIMAGE=y 65CONFIG_DEFAULT_UIMAGE=y
66CONFIG_ARCH_HIBERNATION_POSSIBLE=y
67CONFIG_ARCH_SUSPEND_POSSIBLE=y
65# CONFIG_PPC_DCR_NATIVE is not set 68# CONFIG_PPC_DCR_NATIVE is not set
66# CONFIG_PPC_DCR_MMIO is not set 69# CONFIG_PPC_DCR_MMIO is not set
67CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 70CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -89,6 +92,7 @@ CONFIG_SYSVIPC_SYSCTL=y
89# 92#
90CONFIG_TREE_RCU=y 93CONFIG_TREE_RCU=y
91# CONFIG_TREE_PREEMPT_RCU is not set 94# CONFIG_TREE_PREEMPT_RCU is not set
95# CONFIG_TINY_RCU is not set
92# CONFIG_RCU_TRACE is not set 96# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32 97CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set 98# CONFIG_RCU_FANOUT_EXACT is not set
@@ -171,14 +175,41 @@ CONFIG_LBDAF=y
171# IO Schedulers 175# IO Schedulers
172# 176#
173CONFIG_IOSCHED_NOOP=y 177CONFIG_IOSCHED_NOOP=y
174CONFIG_IOSCHED_AS=y
175CONFIG_IOSCHED_DEADLINE=y 178CONFIG_IOSCHED_DEADLINE=y
176CONFIG_IOSCHED_CFQ=y 179CONFIG_IOSCHED_CFQ=y
177CONFIG_DEFAULT_AS=y
178# CONFIG_DEFAULT_DEADLINE is not set 180# CONFIG_DEFAULT_DEADLINE is not set
179# CONFIG_DEFAULT_CFQ is not set 181CONFIG_DEFAULT_CFQ=y
180# CONFIG_DEFAULT_NOOP is not set 182# CONFIG_DEFAULT_NOOP is not set
181CONFIG_DEFAULT_IOSCHED="anticipatory" 183CONFIG_DEFAULT_IOSCHED="cfq"
184# CONFIG_INLINE_SPIN_TRYLOCK is not set
185# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
186# CONFIG_INLINE_SPIN_LOCK is not set
187# CONFIG_INLINE_SPIN_LOCK_BH is not set
188# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
190CONFIG_INLINE_SPIN_UNLOCK=y
191# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
192CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
193# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
194# CONFIG_INLINE_READ_TRYLOCK is not set
195# CONFIG_INLINE_READ_LOCK is not set
196# CONFIG_INLINE_READ_LOCK_BH is not set
197# CONFIG_INLINE_READ_LOCK_IRQ is not set
198# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
199CONFIG_INLINE_READ_UNLOCK=y
200# CONFIG_INLINE_READ_UNLOCK_BH is not set
201CONFIG_INLINE_READ_UNLOCK_IRQ=y
202# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
203# CONFIG_INLINE_WRITE_TRYLOCK is not set
204# CONFIG_INLINE_WRITE_LOCK is not set
205# CONFIG_INLINE_WRITE_LOCK_BH is not set
206# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
208CONFIG_INLINE_WRITE_UNLOCK=y
209# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
210CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
211# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
212# CONFIG_MUTEX_SPIN_ON_OWNER is not set
182# CONFIG_FREEZER is not set 213# CONFIG_FREEZER is not set
183 214
184# 215#
@@ -187,7 +218,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
187# CONFIG_PPC_CELL is not set 218# CONFIG_PPC_CELL is not set
188# CONFIG_PPC_CELL_NATIVE is not set 219# CONFIG_PPC_CELL_NATIVE is not set
189# CONFIG_PQ2ADS is not set 220# CONFIG_PQ2ADS is not set
190CONFIG_MPC85xx=y 221CONFIG_FSL_SOC_BOOKE=y
191# CONFIG_MPC8540_ADS is not set 222# CONFIG_MPC8540_ADS is not set
192# CONFIG_MPC8560_ADS is not set 223# CONFIG_MPC8560_ADS is not set
193# CONFIG_MPC85xx_CDS is not set 224# CONFIG_MPC85xx_CDS is not set
@@ -206,6 +237,7 @@ CONFIG_MPC85xx=y
206CONFIG_TQM8560=y 237CONFIG_TQM8560=y
207# CONFIG_SBC8548 is not set 238# CONFIG_SBC8548 is not set
208# CONFIG_SBC8560 is not set 239# CONFIG_SBC8560 is not set
240# CONFIG_P4080_DS is not set
209CONFIG_TQM85xx=y 241CONFIG_TQM85xx=y
210# CONFIG_IPIC is not set 242# CONFIG_IPIC is not set
211CONFIG_MPIC=y 243CONFIG_MPIC=y
@@ -251,6 +283,7 @@ CONFIG_MATH_EMULATION=y
251CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 283CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
252CONFIG_ARCH_HAS_WALK_MEMORY=y 284CONFIG_ARCH_HAS_WALK_MEMORY=y
253CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 285CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
286CONFIG_SPARSE_IRQ=y
254CONFIG_MAX_ACTIVE_REGIONS=32 287CONFIG_MAX_ACTIVE_REGIONS=32
255CONFIG_ARCH_FLATMEM_ENABLE=y 288CONFIG_ARCH_FLATMEM_ENABLE=y
256CONFIG_ARCH_POPULATES_NODE_MAP=y 289CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -267,8 +300,6 @@ CONFIG_MIGRATION=y
267CONFIG_ZONE_DMA_FLAG=1 300CONFIG_ZONE_DMA_FLAG=1
268CONFIG_BOUNCE=y 301CONFIG_BOUNCE=y
269CONFIG_VIRT_TO_BUS=y 302CONFIG_VIRT_TO_BUS=y
270CONFIG_HAVE_MLOCK=y
271CONFIG_HAVE_MLOCKED_PAGE_BIT=y
272# CONFIG_KSM is not set 303# CONFIG_KSM is not set
273CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 304CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
274CONFIG_PPC_4K_PAGES=y 305CONFIG_PPC_4K_PAGES=y
@@ -394,9 +425,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
394# CONFIG_AF_RXRPC is not set 425# CONFIG_AF_RXRPC is not set
395CONFIG_WIRELESS=y 426CONFIG_WIRELESS=y
396# CONFIG_CFG80211 is not set 427# CONFIG_CFG80211 is not set
397CONFIG_CFG80211_DEFAULT_PS_VALUE=0
398CONFIG_WIRELESS_OLD_REGULATORY=y
399# CONFIG_WIRELESS_EXT is not set
400# CONFIG_LIB80211 is not set 428# CONFIG_LIB80211 is not set
401 429
402# 430#
@@ -514,6 +542,10 @@ CONFIG_BLK_DEV=y
514# CONFIG_BLK_DEV_COW_COMMON is not set 542# CONFIG_BLK_DEV_COW_COMMON is not set
515CONFIG_BLK_DEV_LOOP=y 543CONFIG_BLK_DEV_LOOP=y
516# CONFIG_BLK_DEV_CRYPTOLOOP is not set 544# CONFIG_BLK_DEV_CRYPTOLOOP is not set
545
546#
547# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
548#
517# CONFIG_BLK_DEV_NBD is not set 549# CONFIG_BLK_DEV_NBD is not set
518# CONFIG_BLK_DEV_SX8 is not set 550# CONFIG_BLK_DEV_SX8 is not set
519CONFIG_BLK_DEV_RAM=y 551CONFIG_BLK_DEV_RAM=y
@@ -524,6 +556,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
524# CONFIG_ATA_OVER_ETH is not set 556# CONFIG_ATA_OVER_ETH is not set
525# CONFIG_BLK_DEV_HD is not set 557# CONFIG_BLK_DEV_HD is not set
526CONFIG_MISC_DEVICES=y 558CONFIG_MISC_DEVICES=y
559# CONFIG_AD525X_DPOT is not set
527# CONFIG_PHANTOM is not set 560# CONFIG_PHANTOM is not set
528# CONFIG_SGI_IOC4 is not set 561# CONFIG_SGI_IOC4 is not set
529# CONFIG_TIFM_CORE is not set 562# CONFIG_TIFM_CORE is not set
@@ -531,6 +564,7 @@ CONFIG_MISC_DEVICES=y
531# CONFIG_ENCLOSURE_SERVICES is not set 564# CONFIG_ENCLOSURE_SERVICES is not set
532# CONFIG_HP_ILO is not set 565# CONFIG_HP_ILO is not set
533# CONFIG_ISL29003 is not set 566# CONFIG_ISL29003 is not set
567# CONFIG_DS1682 is not set
534# CONFIG_C2PORT is not set 568# CONFIG_C2PORT is not set
535 569
536# 570#
@@ -619,7 +653,7 @@ CONFIG_BLK_DEV_IDEDMA=y
619# 653#
620 654
621# 655#
622# See the help texts for more information. 656# The newer stack is recommended.
623# 657#
624# CONFIG_FIREWIRE is not set 658# CONFIG_FIREWIRE is not set
625# CONFIG_IEEE1394 is not set 659# CONFIG_IEEE1394 is not set
@@ -743,8 +777,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y
743# CONFIG_BE2NET is not set 777# CONFIG_BE2NET is not set
744# CONFIG_TR is not set 778# CONFIG_TR is not set
745CONFIG_WLAN=y 779CONFIG_WLAN=y
746# CONFIG_WLAN_PRE80211 is not set 780# CONFIG_AIRO is not set
747# CONFIG_WLAN_80211 is not set 781# CONFIG_ATMEL is not set
782# CONFIG_PRISM54 is not set
783# CONFIG_HOSTAP is not set
748 784
749# 785#
750# Enable WiMAX (Networking options) to see the WiMAX drivers 786# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -757,6 +793,7 @@ CONFIG_WLAN=y
757# CONFIG_NETCONSOLE is not set 793# CONFIG_NETCONSOLE is not set
758# CONFIG_NETPOLL is not set 794# CONFIG_NETPOLL is not set
759# CONFIG_NET_POLL_CONTROLLER is not set 795# CONFIG_NET_POLL_CONTROLLER is not set
796# CONFIG_VMXNET3 is not set
760# CONFIG_ISDN is not set 797# CONFIG_ISDN is not set
761# CONFIG_PHONE is not set 798# CONFIG_PHONE is not set
762 799
@@ -766,6 +803,7 @@ CONFIG_WLAN=y
766CONFIG_INPUT=y 803CONFIG_INPUT=y
767# CONFIG_INPUT_FF_MEMLESS is not set 804# CONFIG_INPUT_FF_MEMLESS is not set
768# CONFIG_INPUT_POLLDEV is not set 805# CONFIG_INPUT_POLLDEV is not set
806# CONFIG_INPUT_SPARSEKMAP is not set
769 807
770# 808#
771# Userland interfaces 809# Userland interfaces
@@ -820,6 +858,7 @@ CONFIG_SERIAL_CPM=y
820CONFIG_SERIAL_CPM_CONSOLE=y 858CONFIG_SERIAL_CPM_CONSOLE=y
821# CONFIG_SERIAL_JSM is not set 859# CONFIG_SERIAL_JSM is not set
822# CONFIG_SERIAL_OF_PLATFORM is not set 860# CONFIG_SERIAL_OF_PLATFORM is not set
861# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
823CONFIG_UNIX98_PTYS=y 862CONFIG_UNIX98_PTYS=y
824# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 863# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
825CONFIG_LEGACY_PTYS=y 864CONFIG_LEGACY_PTYS=y
@@ -881,11 +920,6 @@ CONFIG_I2C_MPC=y
881# CONFIG_I2C_TAOS_EVM is not set 920# CONFIG_I2C_TAOS_EVM is not set
882 921
883# 922#
884# Graphics adapter I2C/DDC channel drivers
885#
886# CONFIG_I2C_VOODOO3 is not set
887
888#
889# Other I2C/SMBus bus drivers 923# Other I2C/SMBus bus drivers
890# 924#
891# CONFIG_I2C_PCA_PLATFORM is not set 925# CONFIG_I2C_PCA_PLATFORM is not set
@@ -893,7 +927,6 @@ CONFIG_I2C_MPC=y
893# 927#
894# Miscellaneous I2C Chip support 928# Miscellaneous I2C Chip support
895# 929#
896# CONFIG_DS1682 is not set
897# CONFIG_SENSORS_TSL2550 is not set 930# CONFIG_SENSORS_TSL2550 is not set
898# CONFIG_I2C_DEBUG_CORE is not set 931# CONFIG_I2C_DEBUG_CORE is not set
899# CONFIG_I2C_DEBUG_ALGO is not set 932# CONFIG_I2C_DEBUG_ALGO is not set
@@ -925,6 +958,7 @@ CONFIG_GPIOLIB=y
925# 958#
926# PCI GPIO expanders: 959# PCI GPIO expanders:
927# 960#
961# CONFIG_GPIO_CS5535 is not set
928# CONFIG_GPIO_BT8XX is not set 962# CONFIG_GPIO_BT8XX is not set
929# CONFIG_GPIO_LANGWELL is not set 963# CONFIG_GPIO_LANGWELL is not set
930 964
@@ -967,6 +1001,7 @@ CONFIG_HWMON_DEBUG_CHIP=y
967# CONFIG_SENSORS_GL520SM is not set 1001# CONFIG_SENSORS_GL520SM is not set
968# CONFIG_SENSORS_IT87 is not set 1002# CONFIG_SENSORS_IT87 is not set
969# CONFIG_SENSORS_LM63 is not set 1003# CONFIG_SENSORS_LM63 is not set
1004# CONFIG_SENSORS_LM73 is not set
970CONFIG_SENSORS_LM75=y 1005CONFIG_SENSORS_LM75=y
971# CONFIG_SENSORS_LM77 is not set 1006# CONFIG_SENSORS_LM77 is not set
972# CONFIG_SENSORS_LM78 is not set 1007# CONFIG_SENSORS_LM78 is not set
@@ -1006,6 +1041,7 @@ CONFIG_SENSORS_LM75=y
1006# CONFIG_SENSORS_W83L786NG is not set 1041# CONFIG_SENSORS_W83L786NG is not set
1007# CONFIG_SENSORS_W83627HF is not set 1042# CONFIG_SENSORS_W83627HF is not set
1008# CONFIG_SENSORS_W83627EHF is not set 1043# CONFIG_SENSORS_W83627EHF is not set
1044# CONFIG_SENSORS_LIS3_I2C is not set
1009# CONFIG_THERMAL is not set 1045# CONFIG_THERMAL is not set
1010# CONFIG_WATCHDOG is not set 1046# CONFIG_WATCHDOG is not set
1011CONFIG_SSB_POSSIBLE=y 1047CONFIG_SSB_POSSIBLE=y
@@ -1025,11 +1061,13 @@ CONFIG_SSB_POSSIBLE=y
1025# CONFIG_TWL4030_CORE is not set 1061# CONFIG_TWL4030_CORE is not set
1026# CONFIG_MFD_TMIO is not set 1062# CONFIG_MFD_TMIO is not set
1027# CONFIG_PMIC_DA903X is not set 1063# CONFIG_PMIC_DA903X is not set
1064# CONFIG_PMIC_ADP5520 is not set
1028# CONFIG_MFD_WM8400 is not set 1065# CONFIG_MFD_WM8400 is not set
1029# CONFIG_MFD_WM831X is not set 1066# CONFIG_MFD_WM831X is not set
1030# CONFIG_MFD_WM8350_I2C is not set 1067# CONFIG_MFD_WM8350_I2C is not set
1031# CONFIG_MFD_PCF50633 is not set 1068# CONFIG_MFD_PCF50633 is not set
1032# CONFIG_AB3100_CORE is not set 1069# CONFIG_AB3100_CORE is not set
1070# CONFIG_MFD_88PM8607 is not set
1033# CONFIG_REGULATOR is not set 1071# CONFIG_REGULATOR is not set
1034# CONFIG_MEDIA_SUPPORT is not set 1072# CONFIG_MEDIA_SUPPORT is not set
1035 1073
@@ -1260,7 +1298,7 @@ CONFIG_FRAME_WARN=1024
1260# CONFIG_DEBUG_KERNEL is not set 1298# CONFIG_DEBUG_KERNEL is not set
1261# CONFIG_SLUB_DEBUG_ON is not set 1299# CONFIG_SLUB_DEBUG_ON is not set
1262# CONFIG_SLUB_STATS is not set 1300# CONFIG_SLUB_STATS is not set
1263# CONFIG_DEBUG_BUGVERBOSE is not set 1301CONFIG_DEBUG_BUGVERBOSE=y
1264# CONFIG_DEBUG_MEMORY_INIT is not set 1302# CONFIG_DEBUG_MEMORY_INIT is not set
1265# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1303# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1266# CONFIG_LATENCYTOP is not set 1304# CONFIG_LATENCYTOP is not set
@@ -1286,7 +1324,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1286# CONFIG_KEYS is not set 1324# CONFIG_KEYS is not set
1287# CONFIG_SECURITY is not set 1325# CONFIG_SECURITY is not set
1288# CONFIG_SECURITYFS is not set 1326# CONFIG_SECURITYFS is not set
1289# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1327# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1328# CONFIG_DEFAULT_SECURITY_SMACK is not set
1329# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1330CONFIG_DEFAULT_SECURITY_DAC=y
1331CONFIG_DEFAULT_SECURITY=""
1290CONFIG_CRYPTO=y 1332CONFIG_CRYPTO=y
1291 1333
1292# 1334#
diff --git a/arch/powerpc/configs/85xx/xes_mpc85xx_defconfig b/arch/powerpc/configs/85xx/xes_mpc85xx_defconfig
index 52acbac0c4fe..fc656af04ea1 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:44 2009 4# Wed Jan 6 09:24:37 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_E500=y 17CONFIG_E500=y
18# CONFIG_PPC_E500MC is not set 18# CONFIG_PPC_E500MC is not set
19CONFIG_FSL_EMB_PERFMON=y
19CONFIG_BOOKE=y 20CONFIG_BOOKE=y
20CONFIG_FSL_BOOKE=y 21CONFIG_FSL_BOOKE=y
21CONFIG_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
@@ -40,6 +40,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
40# 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 41# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
42CONFIG_IRQ_PER_CPU=y 42CONFIG_IRQ_PER_CPU=y
43CONFIG_NR_IRQS=512
43CONFIG_STACKTRACE_SUPPORT=y 44CONFIG_STACKTRACE_SUPPORT=y
44CONFIG_HAVE_LATENCYTOP_SUPPORT=y 45CONFIG_HAVE_LATENCYTOP_SUPPORT=y
45CONFIG_TRACE_IRQFLAGS_SUPPORT=y 46CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -63,6 +64,8 @@ CONFIG_AUDIT_ARCH=y
63CONFIG_GENERIC_BUG=y 64CONFIG_GENERIC_BUG=y
64CONFIG_DTC=y 65CONFIG_DTC=y
65CONFIG_DEFAULT_UIMAGE=y 66CONFIG_DEFAULT_UIMAGE=y
67CONFIG_ARCH_HIBERNATION_POSSIBLE=y
68CONFIG_ARCH_SUSPEND_POSSIBLE=y
66# CONFIG_PPC_DCR_NATIVE is not set 69# CONFIG_PPC_DCR_NATIVE is not set
67# CONFIG_PPC_DCR_MMIO is not set 70# CONFIG_PPC_DCR_MMIO is not set
68CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 71CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -93,6 +96,7 @@ CONFIG_AUDIT=y
93# 96#
94CONFIG_TREE_RCU=y 97CONFIG_TREE_RCU=y
95# CONFIG_TREE_PREEMPT_RCU is not set 98# CONFIG_TREE_PREEMPT_RCU is not set
99# CONFIG_TINY_RCU is not set
96# CONFIG_RCU_TRACE is not set 100# CONFIG_RCU_TRACE is not set
97CONFIG_RCU_FANOUT=32 101CONFIG_RCU_FANOUT=32
98# CONFIG_RCU_FANOUT_EXACT is not set 102# CONFIG_RCU_FANOUT_EXACT is not set
@@ -181,14 +185,41 @@ CONFIG_LBDAF=y
181# IO Schedulers 185# IO Schedulers
182# 186#
183CONFIG_IOSCHED_NOOP=y 187CONFIG_IOSCHED_NOOP=y
184CONFIG_IOSCHED_AS=y
185CONFIG_IOSCHED_DEADLINE=y 188CONFIG_IOSCHED_DEADLINE=y
186CONFIG_IOSCHED_CFQ=y 189CONFIG_IOSCHED_CFQ=y
187# CONFIG_DEFAULT_AS is not set
188# CONFIG_DEFAULT_DEADLINE is not set 190# CONFIG_DEFAULT_DEADLINE is not set
189CONFIG_DEFAULT_CFQ=y 191CONFIG_DEFAULT_CFQ=y
190# CONFIG_DEFAULT_NOOP is not set 192# CONFIG_DEFAULT_NOOP is not set
191CONFIG_DEFAULT_IOSCHED="cfq" 193CONFIG_DEFAULT_IOSCHED="cfq"
194# CONFIG_INLINE_SPIN_TRYLOCK is not set
195# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
196# CONFIG_INLINE_SPIN_LOCK is not set
197# CONFIG_INLINE_SPIN_LOCK_BH is not set
198# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
199# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
200CONFIG_INLINE_SPIN_UNLOCK=y
201# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
202CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
203# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_READ_TRYLOCK is not set
205# CONFIG_INLINE_READ_LOCK is not set
206# CONFIG_INLINE_READ_LOCK_BH is not set
207# CONFIG_INLINE_READ_LOCK_IRQ is not set
208# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
209CONFIG_INLINE_READ_UNLOCK=y
210# CONFIG_INLINE_READ_UNLOCK_BH is not set
211CONFIG_INLINE_READ_UNLOCK_IRQ=y
212# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
213# CONFIG_INLINE_WRITE_TRYLOCK is not set
214# CONFIG_INLINE_WRITE_LOCK is not set
215# CONFIG_INLINE_WRITE_LOCK_BH is not set
216# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
217# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
218CONFIG_INLINE_WRITE_UNLOCK=y
219# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
220CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
221# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
222CONFIG_MUTEX_SPIN_ON_OWNER=y
192# CONFIG_FREEZER is not set 223# CONFIG_FREEZER is not set
193CONFIG_PPC_MSI_BITMAP=y 224CONFIG_PPC_MSI_BITMAP=y
194 225
@@ -198,7 +229,7 @@ CONFIG_PPC_MSI_BITMAP=y
198# CONFIG_PPC_CELL is not set 229# CONFIG_PPC_CELL is not set
199# CONFIG_PPC_CELL_NATIVE is not set 230# CONFIG_PPC_CELL_NATIVE is not set
200# CONFIG_PQ2ADS is not set 231# CONFIG_PQ2ADS is not set
201CONFIG_MPC85xx=y 232CONFIG_FSL_SOC_BOOKE=y
202# CONFIG_MPC8540_ADS is not set 233# CONFIG_MPC8540_ADS is not set
203# CONFIG_MPC8560_ADS is not set 234# CONFIG_MPC8560_ADS is not set
204# CONFIG_MPC85xx_CDS is not set 235# CONFIG_MPC85xx_CDS is not set
@@ -217,6 +248,7 @@ CONFIG_XES_MPC85xx=y
217# CONFIG_TQM8560 is not set 248# CONFIG_TQM8560 is not set
218# CONFIG_SBC8548 is not set 249# CONFIG_SBC8548 is not set
219# CONFIG_SBC8560 is not set 250# CONFIG_SBC8560 is not set
251# CONFIG_P4080_DS is not set
220# CONFIG_IPIC is not set 252# CONFIG_IPIC is not set
221CONFIG_MPIC=y 253CONFIG_MPIC=y
222# CONFIG_MPIC_WEIRD is not set 254# CONFIG_MPIC_WEIRD is not set
@@ -261,6 +293,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
261CONFIG_ARCH_HAS_WALK_MEMORY=y 293CONFIG_ARCH_HAS_WALK_MEMORY=y
262CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 294CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
263# CONFIG_IRQ_ALL_CPUS is not set 295# CONFIG_IRQ_ALL_CPUS is not set
296CONFIG_SPARSE_IRQ=y
264CONFIG_MAX_ACTIVE_REGIONS=32 297CONFIG_MAX_ACTIVE_REGIONS=32
265CONFIG_ARCH_FLATMEM_ENABLE=y 298CONFIG_ARCH_FLATMEM_ENABLE=y
266CONFIG_ARCH_POPULATES_NODE_MAP=y 299CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -277,8 +310,6 @@ CONFIG_MIGRATION=y
277CONFIG_ZONE_DMA_FLAG=1 310CONFIG_ZONE_DMA_FLAG=1
278CONFIG_BOUNCE=y 311CONFIG_BOUNCE=y
279CONFIG_VIRT_TO_BUS=y 312CONFIG_VIRT_TO_BUS=y
280CONFIG_HAVE_MLOCK=y
281CONFIG_HAVE_MLOCKED_PAGE_BIT=y
282# CONFIG_KSM is not set 313# CONFIG_KSM is not set
283CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 314CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
284CONFIG_PPC_4K_PAGES=y 315CONFIG_PPC_4K_PAGES=y
@@ -404,6 +435,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y
404CONFIG_INET6_XFRM_MODE_BEET=y 435CONFIG_INET6_XFRM_MODE_BEET=y
405# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 436# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
406CONFIG_IPV6_SIT=y 437CONFIG_IPV6_SIT=y
438# CONFIG_IPV6_SIT_6RD is not set
407CONFIG_IPV6_NDISC_NODETYPE=y 439CONFIG_IPV6_NDISC_NODETYPE=y
408# CONFIG_IPV6_TUNNEL is not set 440# CONFIG_IPV6_TUNNEL is not set
409# CONFIG_IPV6_MULTIPLE_TABLES is not set 441# CONFIG_IPV6_MULTIPLE_TABLES is not set
@@ -441,7 +473,13 @@ CONFIG_IPV6_NDISC_NODETYPE=y
441# CONFIG_BT is not set 473# CONFIG_BT is not set
442# CONFIG_AF_RXRPC is not set 474# CONFIG_AF_RXRPC is not set
443CONFIG_FIB_RULES=y 475CONFIG_FIB_RULES=y
444# CONFIG_WIRELESS is not set 476CONFIG_WIRELESS=y
477# CONFIG_CFG80211 is not set
478# CONFIG_LIB80211 is not set
479
480#
481# CFG80211 needs to be enabled for MAC80211
482#
445# CONFIG_WIMAX is not set 483# CONFIG_WIMAX is not set
446# CONFIG_RFKILL is not set 484# CONFIG_RFKILL is not set
447# CONFIG_NET_9P is not set 485# CONFIG_NET_9P is not set
@@ -576,6 +614,10 @@ CONFIG_BLK_DEV=y
576# CONFIG_BLK_DEV_COW_COMMON is not set 614# CONFIG_BLK_DEV_COW_COMMON is not set
577CONFIG_BLK_DEV_LOOP=y 615CONFIG_BLK_DEV_LOOP=y
578# CONFIG_BLK_DEV_CRYPTOLOOP is not set 616# CONFIG_BLK_DEV_CRYPTOLOOP is not set
617
618#
619# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
620#
579CONFIG_BLK_DEV_NBD=y 621CONFIG_BLK_DEV_NBD=y
580# CONFIG_BLK_DEV_SX8 is not set 622# CONFIG_BLK_DEV_SX8 is not set
581# CONFIG_BLK_DEV_UB is not set 623# CONFIG_BLK_DEV_UB is not set
@@ -587,6 +629,7 @@ CONFIG_BLK_DEV_RAM_SIZE=131072
587# CONFIG_ATA_OVER_ETH is not set 629# CONFIG_ATA_OVER_ETH is not set
588# CONFIG_BLK_DEV_HD is not set 630# CONFIG_BLK_DEV_HD is not set
589CONFIG_MISC_DEVICES=y 631CONFIG_MISC_DEVICES=y
632# CONFIG_AD525X_DPOT is not set
590# CONFIG_PHANTOM is not set 633# CONFIG_PHANTOM is not set
591# CONFIG_SGI_IOC4 is not set 634# CONFIG_SGI_IOC4 is not set
592# CONFIG_TIFM_CORE is not set 635# CONFIG_TIFM_CORE is not set
@@ -594,6 +637,7 @@ CONFIG_MISC_DEVICES=y
594# CONFIG_ENCLOSURE_SERVICES is not set 637# CONFIG_ENCLOSURE_SERVICES is not set
595# CONFIG_HP_ILO is not set 638# CONFIG_HP_ILO is not set
596# CONFIG_ISL29003 is not set 639# CONFIG_ISL29003 is not set
640# CONFIG_DS1682 is not set
597# CONFIG_C2PORT is not set 641# CONFIG_C2PORT is not set
598 642
599# 643#
@@ -646,7 +690,9 @@ CONFIG_SCSI_LOWLEVEL=y
646# CONFIG_SCSI_BNX2_ISCSI is not set 690# CONFIG_SCSI_BNX2_ISCSI is not set
647# CONFIG_BE2ISCSI is not set 691# CONFIG_BE2ISCSI is not set
648# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 692# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
693# CONFIG_SCSI_HPSA is not set
649# CONFIG_SCSI_3W_9XXX is not set 694# CONFIG_SCSI_3W_9XXX is not set
695# CONFIG_SCSI_3W_SAS is not set
650# CONFIG_SCSI_ACARD is not set 696# CONFIG_SCSI_ACARD is not set
651# CONFIG_SCSI_AACRAID is not set 697# CONFIG_SCSI_AACRAID is not set
652# CONFIG_SCSI_AIC7XXX is not set 698# CONFIG_SCSI_AIC7XXX is not set
@@ -685,6 +731,7 @@ CONFIG_SCSI_LOWLEVEL=y
685# CONFIG_SCSI_NSP32 is not set 731# CONFIG_SCSI_NSP32 is not set
686# CONFIG_SCSI_DEBUG is not set 732# CONFIG_SCSI_DEBUG is not set
687# CONFIG_SCSI_PMCRAID is not set 733# CONFIG_SCSI_PMCRAID is not set
734# CONFIG_SCSI_PM8001 is not set
688# CONFIG_SCSI_SRP is not set 735# CONFIG_SCSI_SRP is not set
689# CONFIG_SCSI_BFA_FC is not set 736# CONFIG_SCSI_BFA_FC is not set
690# CONFIG_SCSI_DH is not set 737# CONFIG_SCSI_DH is not set
@@ -740,15 +787,16 @@ CONFIG_PATA_ALI=y
740# CONFIG_PATA_NS87415 is not set 787# CONFIG_PATA_NS87415 is not set
741# CONFIG_PATA_OPTI is not set 788# CONFIG_PATA_OPTI is not set
742# CONFIG_PATA_OPTIDMA is not set 789# CONFIG_PATA_OPTIDMA is not set
790# CONFIG_PATA_PDC2027X is not set
743# CONFIG_PATA_PDC_OLD is not set 791# CONFIG_PATA_PDC_OLD is not set
744# CONFIG_PATA_RADISYS is not set 792# CONFIG_PATA_RADISYS is not set
745# CONFIG_PATA_RDC is not set 793# CONFIG_PATA_RDC is not set
746# CONFIG_PATA_RZ1000 is not set 794# CONFIG_PATA_RZ1000 is not set
747# CONFIG_PATA_SC1200 is not set 795# CONFIG_PATA_SC1200 is not set
748# CONFIG_PATA_SERVERWORKS is not set 796# CONFIG_PATA_SERVERWORKS is not set
749# CONFIG_PATA_PDC2027X is not set
750# CONFIG_PATA_SIL680 is not set 797# CONFIG_PATA_SIL680 is not set
751# CONFIG_PATA_SIS is not set 798# CONFIG_PATA_SIS is not set
799# CONFIG_PATA_TOSHIBA is not set
752# CONFIG_PATA_VIA is not set 800# CONFIG_PATA_VIA is not set
753# CONFIG_PATA_WINBOND is not set 801# CONFIG_PATA_WINBOND is not set
754# CONFIG_PATA_PLATFORM is not set 802# CONFIG_PATA_PLATFORM is not set
@@ -765,7 +813,7 @@ CONFIG_PATA_ALI=y
765# 813#
766 814
767# 815#
768# See the help texts for more information. 816# The newer stack is recommended.
769# 817#
770# CONFIG_FIREWIRE is not set 818# CONFIG_FIREWIRE is not set
771# CONFIG_IEEE1394 is not set 819# CONFIG_IEEE1394 is not set
@@ -852,8 +900,11 @@ CONFIG_GIANFAR=y
852# CONFIG_NETDEV_10000 is not set 900# CONFIG_NETDEV_10000 is not set
853# CONFIG_TR is not set 901# CONFIG_TR is not set
854CONFIG_WLAN=y 902CONFIG_WLAN=y
855# CONFIG_WLAN_PRE80211 is not set 903# CONFIG_AIRO is not set
856# CONFIG_WLAN_80211 is not set 904# CONFIG_ATMEL is not set
905# CONFIG_PRISM54 is not set
906# CONFIG_USB_ZD1201 is not set
907# CONFIG_HOSTAP is not set
857 908
858# 909#
859# Enable WiMAX (Networking options) to see the WiMAX drivers 910# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -876,6 +927,7 @@ CONFIG_WLAN=y
876# CONFIG_NETCONSOLE is not set 927# CONFIG_NETCONSOLE is not set
877# CONFIG_NETPOLL is not set 928# CONFIG_NETPOLL is not set
878# CONFIG_NET_POLL_CONTROLLER is not set 929# CONFIG_NET_POLL_CONTROLLER is not set
930# CONFIG_VMXNET3 is not set
879# CONFIG_ISDN is not set 931# CONFIG_ISDN is not set
880# CONFIG_PHONE is not set 932# CONFIG_PHONE is not set
881 933
@@ -885,6 +937,7 @@ CONFIG_WLAN=y
885CONFIG_INPUT=y 937CONFIG_INPUT=y
886# CONFIG_INPUT_FF_MEMLESS is not set 938# CONFIG_INPUT_FF_MEMLESS is not set
887# CONFIG_INPUT_POLLDEV is not set 939# CONFIG_INPUT_POLLDEV is not set
940# CONFIG_INPUT_SPARSEKMAP is not set
888 941
889# 942#
890# Userland interfaces 943# Userland interfaces
@@ -914,6 +967,7 @@ CONFIG_SERIO_SERPORT=y
914CONFIG_SERIO_LIBPS2=y 967CONFIG_SERIO_LIBPS2=y
915# CONFIG_SERIO_RAW is not set 968# CONFIG_SERIO_RAW is not set
916# CONFIG_SERIO_XILINX_XPS_PS2 is not set 969# CONFIG_SERIO_XILINX_XPS_PS2 is not set
970# CONFIG_SERIO_ALTERA_PS2 is not set
917# CONFIG_GAMEPORT is not set 971# CONFIG_GAMEPORT is not set
918 972
919# 973#
@@ -950,6 +1004,7 @@ CONFIG_SERIAL_CORE=y
950CONFIG_SERIAL_CORE_CONSOLE=y 1004CONFIG_SERIAL_CORE_CONSOLE=y
951# CONFIG_SERIAL_JSM is not set 1005# CONFIG_SERIAL_JSM is not set
952# CONFIG_SERIAL_OF_PLATFORM is not set 1006# CONFIG_SERIAL_OF_PLATFORM is not set
1007# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
953CONFIG_UNIX98_PTYS=y 1008CONFIG_UNIX98_PTYS=y
954# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 1009# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
955CONFIG_LEGACY_PTYS=y 1010CONFIG_LEGACY_PTYS=y
@@ -1007,11 +1062,6 @@ CONFIG_I2C_MPC=y
1007# CONFIG_I2C_TINY_USB is not set 1062# CONFIG_I2C_TINY_USB is not set
1008 1063
1009# 1064#
1010# Graphics adapter I2C/DDC channel drivers
1011#
1012# CONFIG_I2C_VOODOO3 is not set
1013
1014#
1015# Other I2C/SMBus bus drivers 1065# Other I2C/SMBus bus drivers
1016# 1066#
1017# CONFIG_I2C_PCA_PLATFORM is not set 1067# CONFIG_I2C_PCA_PLATFORM is not set
@@ -1020,7 +1070,6 @@ CONFIG_I2C_MPC=y
1020# 1070#
1021# Miscellaneous I2C Chip support 1071# Miscellaneous I2C Chip support
1022# 1072#
1023# CONFIG_DS1682 is not set
1024# CONFIG_SENSORS_TSL2550 is not set 1073# CONFIG_SENSORS_TSL2550 is not set
1025# CONFIG_I2C_DEBUG_CORE is not set 1074# CONFIG_I2C_DEBUG_CORE is not set
1026# CONFIG_I2C_DEBUG_ALGO is not set 1075# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1053,6 +1102,7 @@ CONFIG_GPIO_PCA953X=y
1053# 1102#
1054# PCI GPIO expanders: 1103# PCI GPIO expanders:
1055# 1104#
1105# CONFIG_GPIO_CS5535 is not set
1056# CONFIG_GPIO_BT8XX is not set 1106# CONFIG_GPIO_BT8XX is not set
1057# CONFIG_GPIO_LANGWELL is not set 1107# CONFIG_GPIO_LANGWELL is not set
1058 1108
@@ -1095,6 +1145,7 @@ CONFIG_SENSORS_DS1621=y
1095# CONFIG_SENSORS_GL520SM is not set 1145# CONFIG_SENSORS_GL520SM is not set
1096# CONFIG_SENSORS_IT87 is not set 1146# CONFIG_SENSORS_IT87 is not set
1097# CONFIG_SENSORS_LM63 is not set 1147# CONFIG_SENSORS_LM63 is not set
1148# CONFIG_SENSORS_LM73 is not set
1098# CONFIG_SENSORS_LM75 is not set 1149# CONFIG_SENSORS_LM75 is not set
1099# CONFIG_SENSORS_LM77 is not set 1150# CONFIG_SENSORS_LM77 is not set
1100# CONFIG_SENSORS_LM78 is not set 1151# CONFIG_SENSORS_LM78 is not set
@@ -1134,6 +1185,7 @@ CONFIG_SENSORS_LM90=y
1134# CONFIG_SENSORS_W83L786NG is not set 1185# CONFIG_SENSORS_W83L786NG is not set
1135# CONFIG_SENSORS_W83627HF is not set 1186# CONFIG_SENSORS_W83627HF is not set
1136# CONFIG_SENSORS_W83627EHF is not set 1187# CONFIG_SENSORS_W83627EHF is not set
1188# CONFIG_SENSORS_LIS3_I2C is not set
1137# CONFIG_THERMAL is not set 1189# CONFIG_THERMAL is not set
1138CONFIG_WATCHDOG=y 1190CONFIG_WATCHDOG=y
1139# CONFIG_WATCHDOG_NOWAYOUT is not set 1191# CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -1172,11 +1224,13 @@ CONFIG_SSB_POSSIBLE=y
1172# CONFIG_TWL4030_CORE is not set 1224# CONFIG_TWL4030_CORE is not set
1173# CONFIG_MFD_TMIO is not set 1225# CONFIG_MFD_TMIO is not set
1174# CONFIG_PMIC_DA903X is not set 1226# CONFIG_PMIC_DA903X is not set
1227# CONFIG_PMIC_ADP5520 is not set
1175# CONFIG_MFD_WM8400 is not set 1228# CONFIG_MFD_WM8400 is not set
1176# CONFIG_MFD_WM831X is not set 1229# CONFIG_MFD_WM831X is not set
1177# CONFIG_MFD_WM8350_I2C is not set 1230# CONFIG_MFD_WM8350_I2C is not set
1178# CONFIG_MFD_PCF50633 is not set 1231# CONFIG_MFD_PCF50633 is not set
1179# CONFIG_AB3100_CORE is not set 1232# CONFIG_AB3100_CORE is not set
1233# CONFIG_MFD_88PM8607 is not set
1180# CONFIG_REGULATOR is not set 1234# CONFIG_REGULATOR is not set
1181# CONFIG_MEDIA_SUPPORT is not set 1235# CONFIG_MEDIA_SUPPORT is not set
1182 1236
@@ -1368,6 +1422,7 @@ CONFIG_LEDS_GPIO_OF=y
1368# CONFIG_LEDS_LP3944 is not set 1422# CONFIG_LEDS_LP3944 is not set
1369CONFIG_LEDS_PCA955X=y 1423CONFIG_LEDS_PCA955X=y
1370# CONFIG_LEDS_BD2802 is not set 1424# CONFIG_LEDS_BD2802 is not set
1425# CONFIG_LEDS_LT3593 is not set
1371 1426
1372# 1427#
1373# LED Triggers 1428# LED Triggers
@@ -1391,7 +1446,6 @@ CONFIG_EDAC=y
1391# 1446#
1392# CONFIG_EDAC_DEBUG is not set 1447# CONFIG_EDAC_DEBUG is not set
1393CONFIG_EDAC_MM_EDAC=y 1448CONFIG_EDAC_MM_EDAC=y
1394CONFIG_EDAC_MPC85XX=y
1395CONFIG_RTC_LIB=y 1449CONFIG_RTC_LIB=y
1396CONFIG_RTC_CLASS=y 1450CONFIG_RTC_CLASS=y
1397CONFIG_RTC_HCTOSYS=y 1451CONFIG_RTC_HCTOSYS=y
@@ -1420,6 +1474,7 @@ CONFIG_RTC_DRV_DS1307=y
1420# CONFIG_RTC_DRV_PCF8563 is not set 1474# CONFIG_RTC_DRV_PCF8563 is not set
1421# CONFIG_RTC_DRV_PCF8583 is not set 1475# CONFIG_RTC_DRV_PCF8583 is not set
1422# CONFIG_RTC_DRV_M41T80 is not set 1476# CONFIG_RTC_DRV_M41T80 is not set
1477# CONFIG_RTC_DRV_BQ32K is not set
1423# CONFIG_RTC_DRV_S35390A is not set 1478# CONFIG_RTC_DRV_S35390A is not set
1424# CONFIG_RTC_DRV_FM3130 is not set 1479# CONFIG_RTC_DRV_FM3130 is not set
1425# CONFIG_RTC_DRV_RX8581 is not set 1480# CONFIG_RTC_DRV_RX8581 is not set
@@ -1441,7 +1496,9 @@ CONFIG_RTC_DRV_CMOS=y
1441# CONFIG_RTC_DRV_M48T86 is not set 1496# CONFIG_RTC_DRV_M48T86 is not set
1442# CONFIG_RTC_DRV_M48T35 is not set 1497# CONFIG_RTC_DRV_M48T35 is not set
1443# CONFIG_RTC_DRV_M48T59 is not set 1498# CONFIG_RTC_DRV_M48T59 is not set
1499# CONFIG_RTC_DRV_MSM6242 is not set
1444# CONFIG_RTC_DRV_BQ4802 is not set 1500# CONFIG_RTC_DRV_BQ4802 is not set
1501# CONFIG_RTC_DRV_RP5C01 is not set
1445# CONFIG_RTC_DRV_V3020 is not set 1502# CONFIG_RTC_DRV_V3020 is not set
1446 1503
1447# 1504#
@@ -1772,7 +1829,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1772# CONFIG_KEYS is not set 1829# CONFIG_KEYS is not set
1773# CONFIG_SECURITY is not set 1830# CONFIG_SECURITY is not set
1774# CONFIG_SECURITYFS is not set 1831# CONFIG_SECURITYFS is not set
1775# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1832# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1833# CONFIG_DEFAULT_SECURITY_SMACK is not set
1834# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1835CONFIG_DEFAULT_SECURITY_DAC=y
1836CONFIG_DEFAULT_SECURITY=""
1776CONFIG_CRYPTO=y 1837CONFIG_CRYPTO=y
1777 1838
1778# 1839#
diff --git a/arch/powerpc/configs/86xx/gef_ppc9a_defconfig b/arch/powerpc/configs/86xx/gef_ppc9a_defconfig
index 6cd2cd65c2cd..a85f927bf225 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:49 2009 4# Wed Jan 6 09:24:43 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -38,6 +38,7 @@ CONFIG_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 39# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
40CONFIG_IRQ_PER_CPU=y 40CONFIG_IRQ_PER_CPU=y
41CONFIG_NR_IRQS=512
41CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
42CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
43CONFIG_TRACE_IRQFLAGS_SUPPORT=y 44CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -62,6 +63,8 @@ CONFIG_AUDIT_ARCH=y
62CONFIG_GENERIC_BUG=y 63CONFIG_GENERIC_BUG=y
63CONFIG_DTC=y 64CONFIG_DTC=y
64CONFIG_DEFAULT_UIMAGE=y 65CONFIG_DEFAULT_UIMAGE=y
66CONFIG_ARCH_HIBERNATION_POSSIBLE=y
67CONFIG_ARCH_SUSPEND_POSSIBLE=y
65# CONFIG_PPC_DCR_NATIVE is not set 68# CONFIG_PPC_DCR_NATIVE is not set
66# CONFIG_PPC_DCR_MMIO is not set 69# CONFIG_PPC_DCR_MMIO is not set
67CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 70CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -91,6 +94,7 @@ CONFIG_BSD_PROCESS_ACCT_V3=y
91# 94#
92CONFIG_TREE_RCU=y 95CONFIG_TREE_RCU=y
93# CONFIG_TREE_PREEMPT_RCU is not set 96# CONFIG_TREE_PREEMPT_RCU is not set
97# CONFIG_TINY_RCU is not set
94# CONFIG_RCU_TRACE is not set 98# CONFIG_RCU_TRACE is not set
95CONFIG_RCU_FANOUT=32 99CONFIG_RCU_FANOUT=32
96# CONFIG_RCU_FANOUT_EXACT is not set 100# CONFIG_RCU_FANOUT_EXACT is not set
@@ -181,14 +185,41 @@ CONFIG_LBDAF=y
181# IO Schedulers 185# IO Schedulers
182# 186#
183CONFIG_IOSCHED_NOOP=y 187CONFIG_IOSCHED_NOOP=y
184CONFIG_IOSCHED_AS=y
185CONFIG_IOSCHED_DEADLINE=y 188CONFIG_IOSCHED_DEADLINE=y
186CONFIG_IOSCHED_CFQ=y 189CONFIG_IOSCHED_CFQ=y
187# CONFIG_DEFAULT_AS is not set
188# CONFIG_DEFAULT_DEADLINE is not set 190# CONFIG_DEFAULT_DEADLINE is not set
189CONFIG_DEFAULT_CFQ=y 191CONFIG_DEFAULT_CFQ=y
190# CONFIG_DEFAULT_NOOP is not set 192# CONFIG_DEFAULT_NOOP is not set
191CONFIG_DEFAULT_IOSCHED="cfq" 193CONFIG_DEFAULT_IOSCHED="cfq"
194# CONFIG_INLINE_SPIN_TRYLOCK is not set
195# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
196# CONFIG_INLINE_SPIN_LOCK is not set
197# CONFIG_INLINE_SPIN_LOCK_BH is not set
198# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
199# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
200# CONFIG_INLINE_SPIN_UNLOCK is not set
201# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
202# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
203# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_READ_TRYLOCK is not set
205# CONFIG_INLINE_READ_LOCK is not set
206# CONFIG_INLINE_READ_LOCK_BH is not set
207# CONFIG_INLINE_READ_LOCK_IRQ is not set
208# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
209# CONFIG_INLINE_READ_UNLOCK is not set
210# CONFIG_INLINE_READ_UNLOCK_BH is not set
211# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
212# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
213# CONFIG_INLINE_WRITE_TRYLOCK is not set
214# CONFIG_INLINE_WRITE_LOCK is not set
215# CONFIG_INLINE_WRITE_LOCK_BH is not set
216# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
217# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
218# CONFIG_INLINE_WRITE_UNLOCK is not set
219# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
220# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
221# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
222CONFIG_MUTEX_SPIN_ON_OWNER=y
192# CONFIG_FREEZER is not set 223# CONFIG_FREEZER is not set
193 224
194# 225#
@@ -259,6 +290,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
259# CONFIG_KEXEC is not set 290# CONFIG_KEXEC is not set
260# CONFIG_CRASH_DUMP is not set 291# CONFIG_CRASH_DUMP is not set
261CONFIG_IRQ_ALL_CPUS=y 292CONFIG_IRQ_ALL_CPUS=y
293CONFIG_SPARSE_IRQ=y
262CONFIG_MAX_ACTIVE_REGIONS=32 294CONFIG_MAX_ACTIVE_REGIONS=32
263CONFIG_ARCH_FLATMEM_ENABLE=y 295CONFIG_ARCH_FLATMEM_ENABLE=y
264CONFIG_ARCH_POPULATES_NODE_MAP=y 296CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -275,8 +307,6 @@ CONFIG_MIGRATION=y
275CONFIG_ZONE_DMA_FLAG=1 307CONFIG_ZONE_DMA_FLAG=1
276CONFIG_BOUNCE=y 308CONFIG_BOUNCE=y
277CONFIG_VIRT_TO_BUS=y 309CONFIG_VIRT_TO_BUS=y
278CONFIG_HAVE_MLOCK=y
279CONFIG_HAVE_MLOCKED_PAGE_BIT=y
280# CONFIG_KSM is not set 310# CONFIG_KSM is not set
281CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 311CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
282CONFIG_PPC_4K_PAGES=y 312CONFIG_PPC_4K_PAGES=y
@@ -314,7 +344,6 @@ CONFIG_ARCH_SUPPORTS_MSI=y
314# CONFIG_PCI_STUB is not set 344# CONFIG_PCI_STUB is not set
315# CONFIG_PCI_IOV is not set 345# CONFIG_PCI_IOV is not set
316CONFIG_PCCARD=y 346CONFIG_PCCARD=y
317# CONFIG_PCMCIA_DEBUG is not set
318CONFIG_PCMCIA=y 347CONFIG_PCMCIA=y
319# CONFIG_PCMCIA_LOAD_CIS is not set 348# CONFIG_PCMCIA_LOAD_CIS is not set
320# CONFIG_PCMCIA_IOCTL is not set 349# CONFIG_PCMCIA_IOCTL is not set
@@ -414,6 +443,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m
414CONFIG_INET6_XFRM_MODE_BEET=m 443CONFIG_INET6_XFRM_MODE_BEET=m
415# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 444# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
416CONFIG_IPV6_SIT=m 445CONFIG_IPV6_SIT=m
446# CONFIG_IPV6_SIT_6RD is not set
417CONFIG_IPV6_NDISC_NODETYPE=y 447CONFIG_IPV6_NDISC_NODETYPE=y
418CONFIG_IPV6_TUNNEL=m 448CONFIG_IPV6_TUNNEL=m
419# CONFIG_IPV6_MULTIPLE_TABLES is not set 449# CONFIG_IPV6_MULTIPLE_TABLES is not set
@@ -451,7 +481,13 @@ CONFIG_NET_PKTGEN=m
451# CONFIG_BT is not set 481# CONFIG_BT is not set
452# CONFIG_AF_RXRPC is not set 482# CONFIG_AF_RXRPC is not set
453CONFIG_FIB_RULES=y 483CONFIG_FIB_RULES=y
454# CONFIG_WIRELESS is not set 484CONFIG_WIRELESS=y
485# CONFIG_CFG80211 is not set
486# CONFIG_LIB80211 is not set
487
488#
489# CFG80211 needs to be enabled for MAC80211
490#
455# CONFIG_WIMAX is not set 491# CONFIG_WIMAX is not set
456# CONFIG_RFKILL is not set 492# CONFIG_RFKILL is not set
457# CONFIG_NET_9P is not set 493# CONFIG_NET_9P is not set
@@ -570,6 +606,10 @@ CONFIG_BLK_DEV=y
570# CONFIG_BLK_DEV_COW_COMMON is not set 606# CONFIG_BLK_DEV_COW_COMMON is not set
571CONFIG_BLK_DEV_LOOP=m 607CONFIG_BLK_DEV_LOOP=m
572CONFIG_BLK_DEV_CRYPTOLOOP=m 608CONFIG_BLK_DEV_CRYPTOLOOP=m
609
610#
611# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
612#
573CONFIG_BLK_DEV_NBD=m 613CONFIG_BLK_DEV_NBD=m
574# CONFIG_BLK_DEV_SX8 is not set 614# CONFIG_BLK_DEV_SX8 is not set
575# CONFIG_BLK_DEV_UB is not set 615# CONFIG_BLK_DEV_UB is not set
@@ -581,6 +621,7 @@ CONFIG_BLK_DEV_RAM_SIZE=131072
581# CONFIG_ATA_OVER_ETH is not set 621# CONFIG_ATA_OVER_ETH is not set
582# CONFIG_BLK_DEV_HD is not set 622# CONFIG_BLK_DEV_HD is not set
583CONFIG_MISC_DEVICES=y 623CONFIG_MISC_DEVICES=y
624# CONFIG_AD525X_DPOT is not set
584# CONFIG_PHANTOM is not set 625# CONFIG_PHANTOM is not set
585# CONFIG_SGI_IOC4 is not set 626# CONFIG_SGI_IOC4 is not set
586# CONFIG_TIFM_CORE is not set 627# CONFIG_TIFM_CORE is not set
@@ -588,6 +629,7 @@ CONFIG_MISC_DEVICES=y
588# CONFIG_ENCLOSURE_SERVICES is not set 629# CONFIG_ENCLOSURE_SERVICES is not set
589# CONFIG_HP_ILO is not set 630# CONFIG_HP_ILO is not set
590# CONFIG_ISL29003 is not set 631# CONFIG_ISL29003 is not set
632CONFIG_DS1682=y
591# CONFIG_C2PORT is not set 633# CONFIG_C2PORT is not set
592 634
593# 635#
@@ -689,7 +731,9 @@ CONFIG_SCSI_LOWLEVEL=y
689# CONFIG_SCSI_BNX2_ISCSI is not set 731# CONFIG_SCSI_BNX2_ISCSI is not set
690# CONFIG_BE2ISCSI is not set 732# CONFIG_BE2ISCSI is not set
691# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 733# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
734# CONFIG_SCSI_HPSA is not set
692# CONFIG_SCSI_3W_9XXX is not set 735# CONFIG_SCSI_3W_9XXX is not set
736# CONFIG_SCSI_3W_SAS is not set
693# CONFIG_SCSI_ACARD is not set 737# CONFIG_SCSI_ACARD is not set
694# CONFIG_SCSI_AACRAID is not set 738# CONFIG_SCSI_AACRAID is not set
695# CONFIG_SCSI_AIC7XXX is not set 739# CONFIG_SCSI_AIC7XXX is not set
@@ -728,6 +772,7 @@ CONFIG_SCSI_LOWLEVEL=y
728# CONFIG_SCSI_NSP32 is not set 772# CONFIG_SCSI_NSP32 is not set
729# CONFIG_SCSI_DEBUG is not set 773# CONFIG_SCSI_DEBUG is not set
730# CONFIG_SCSI_PMCRAID is not set 774# CONFIG_SCSI_PMCRAID is not set
775# CONFIG_SCSI_PM8001 is not set
731# CONFIG_SCSI_SRP is not set 776# CONFIG_SCSI_SRP is not set
732# CONFIG_SCSI_BFA_FC is not set 777# CONFIG_SCSI_BFA_FC is not set
733# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set 778# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
@@ -785,15 +830,16 @@ CONFIG_SATA_SIL=y
785# CONFIG_PATA_OPTI is not set 830# CONFIG_PATA_OPTI is not set
786# CONFIG_PATA_OPTIDMA is not set 831# CONFIG_PATA_OPTIDMA is not set
787# CONFIG_PATA_PCMCIA is not set 832# CONFIG_PATA_PCMCIA is not set
833# CONFIG_PATA_PDC2027X is not set
788# CONFIG_PATA_PDC_OLD is not set 834# CONFIG_PATA_PDC_OLD is not set
789# CONFIG_PATA_RADISYS is not set 835# CONFIG_PATA_RADISYS is not set
790# CONFIG_PATA_RDC is not set 836# CONFIG_PATA_RDC is not set
791# CONFIG_PATA_RZ1000 is not set 837# CONFIG_PATA_RZ1000 is not set
792# CONFIG_PATA_SC1200 is not set 838# CONFIG_PATA_SC1200 is not set
793# CONFIG_PATA_SERVERWORKS is not set 839# CONFIG_PATA_SERVERWORKS is not set
794# CONFIG_PATA_PDC2027X is not set
795# CONFIG_PATA_SIL680 is not set 840# CONFIG_PATA_SIL680 is not set
796# CONFIG_PATA_SIS is not set 841# CONFIG_PATA_SIS is not set
842# CONFIG_PATA_TOSHIBA is not set
797# CONFIG_PATA_VIA is not set 843# CONFIG_PATA_VIA is not set
798# CONFIG_PATA_WINBOND is not set 844# CONFIG_PATA_WINBOND is not set
799# CONFIG_PATA_PLATFORM is not set 845# CONFIG_PATA_PLATFORM is not set
@@ -810,7 +856,7 @@ CONFIG_SATA_SIL=y
810# 856#
811 857
812# 858#
813# See the help texts for more information. 859# The newer stack is recommended.
814# 860#
815# CONFIG_FIREWIRE is not set 861# CONFIG_FIREWIRE is not set
816# CONFIG_IEEE1394 is not set 862# CONFIG_IEEE1394 is not set
@@ -897,8 +943,14 @@ CONFIG_GIANFAR=y
897# CONFIG_NETDEV_10000 is not set 943# CONFIG_NETDEV_10000 is not set
898# CONFIG_TR is not set 944# CONFIG_TR is not set
899CONFIG_WLAN=y 945CONFIG_WLAN=y
900# CONFIG_WLAN_PRE80211 is not set 946# CONFIG_PCMCIA_RAYCS is not set
901# CONFIG_WLAN_80211 is not set 947# CONFIG_AIRO is not set
948# CONFIG_ATMEL is not set
949# CONFIG_AIRO_CS is not set
950# CONFIG_PCMCIA_WL3501 is not set
951# CONFIG_PRISM54 is not set
952# CONFIG_USB_ZD1201 is not set
953# CONFIG_HOSTAP is not set
902 954
903# 955#
904# Enable WiMAX (Networking options) to see the WiMAX drivers 956# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -937,6 +989,7 @@ CONFIG_NETCONSOLE=y
937CONFIG_NETPOLL=y 989CONFIG_NETPOLL=y
938CONFIG_NETPOLL_TRAP=y 990CONFIG_NETPOLL_TRAP=y
939CONFIG_NET_POLL_CONTROLLER=y 991CONFIG_NET_POLL_CONTROLLER=y
992# CONFIG_VMXNET3 is not set
940# CONFIG_ISDN is not set 993# CONFIG_ISDN is not set
941# CONFIG_PHONE is not set 994# CONFIG_PHONE is not set
942 995
@@ -946,6 +999,7 @@ CONFIG_NET_POLL_CONTROLLER=y
946CONFIG_INPUT=y 999CONFIG_INPUT=y
947# CONFIG_INPUT_FF_MEMLESS is not set 1000# CONFIG_INPUT_FF_MEMLESS is not set
948# CONFIG_INPUT_POLLDEV is not set 1001# CONFIG_INPUT_POLLDEV is not set
1002# CONFIG_INPUT_SPARSEKMAP is not set
949 1003
950# 1004#
951# Userland interfaces 1005# Userland interfaces
@@ -1005,6 +1059,7 @@ CONFIG_SERIAL_CORE=y
1005CONFIG_SERIAL_CORE_CONSOLE=y 1059CONFIG_SERIAL_CORE_CONSOLE=y
1006# CONFIG_SERIAL_JSM is not set 1060# CONFIG_SERIAL_JSM is not set
1007# CONFIG_SERIAL_OF_PLATFORM is not set 1061# CONFIG_SERIAL_OF_PLATFORM is not set
1062# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
1008CONFIG_UNIX98_PTYS=y 1063CONFIG_UNIX98_PTYS=y
1009# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 1064# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
1010# CONFIG_LEGACY_PTYS is not set 1065# CONFIG_LEGACY_PTYS is not set
@@ -1070,11 +1125,6 @@ CONFIG_I2C_MPC=y
1070# CONFIG_I2C_TINY_USB is not set 1125# CONFIG_I2C_TINY_USB is not set
1071 1126
1072# 1127#
1073# Graphics adapter I2C/DDC channel drivers
1074#
1075# CONFIG_I2C_VOODOO3 is not set
1076
1077#
1078# Other I2C/SMBus bus drivers 1128# Other I2C/SMBus bus drivers
1079# 1129#
1080# CONFIG_I2C_PCA_PLATFORM is not set 1130# CONFIG_I2C_PCA_PLATFORM is not set
@@ -1083,7 +1133,6 @@ CONFIG_I2C_MPC=y
1083# 1133#
1084# Miscellaneous I2C Chip support 1134# Miscellaneous I2C Chip support
1085# 1135#
1086CONFIG_DS1682=y
1087# CONFIG_SENSORS_TSL2550 is not set 1136# CONFIG_SENSORS_TSL2550 is not set
1088# CONFIG_I2C_DEBUG_CORE is not set 1137# CONFIG_I2C_DEBUG_CORE is not set
1089# CONFIG_I2C_DEBUG_ALGO is not set 1138# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1115,6 +1164,7 @@ CONFIG_GPIO_SYSFS=y
1115# 1164#
1116# PCI GPIO expanders: 1165# PCI GPIO expanders:
1117# 1166#
1167# CONFIG_GPIO_CS5535 is not set
1118# CONFIG_GPIO_BT8XX is not set 1168# CONFIG_GPIO_BT8XX is not set
1119# CONFIG_GPIO_LANGWELL is not set 1169# CONFIG_GPIO_LANGWELL is not set
1120 1170
@@ -1157,6 +1207,7 @@ CONFIG_HWMON=y
1157# CONFIG_SENSORS_GL520SM is not set 1207# CONFIG_SENSORS_GL520SM is not set
1158# CONFIG_SENSORS_IT87 is not set 1208# CONFIG_SENSORS_IT87 is not set
1159# CONFIG_SENSORS_LM63 is not set 1209# CONFIG_SENSORS_LM63 is not set
1210# CONFIG_SENSORS_LM73 is not set
1160# CONFIG_SENSORS_LM75 is not set 1211# CONFIG_SENSORS_LM75 is not set
1161# CONFIG_SENSORS_LM77 is not set 1212# CONFIG_SENSORS_LM77 is not set
1162# CONFIG_SENSORS_LM78 is not set 1213# CONFIG_SENSORS_LM78 is not set
@@ -1196,6 +1247,7 @@ CONFIG_SENSORS_LM92=y
1196# CONFIG_SENSORS_W83L786NG is not set 1247# CONFIG_SENSORS_W83L786NG is not set
1197# CONFIG_SENSORS_W83627HF is not set 1248# CONFIG_SENSORS_W83627HF is not set
1198# CONFIG_SENSORS_W83627EHF is not set 1249# CONFIG_SENSORS_W83627EHF is not set
1250# CONFIG_SENSORS_LIS3_I2C is not set
1199# CONFIG_THERMAL is not set 1251# CONFIG_THERMAL is not set
1200CONFIG_WATCHDOG=y 1252CONFIG_WATCHDOG=y
1201# CONFIG_WATCHDOG_NOWAYOUT is not set 1253# CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -1235,11 +1287,13 @@ CONFIG_SSB_POSSIBLE=y
1235# CONFIG_TWL4030_CORE is not set 1287# CONFIG_TWL4030_CORE is not set
1236# CONFIG_MFD_TMIO is not set 1288# CONFIG_MFD_TMIO is not set
1237# CONFIG_PMIC_DA903X is not set 1289# CONFIG_PMIC_DA903X is not set
1290# CONFIG_PMIC_ADP5520 is not set
1238# CONFIG_MFD_WM8400 is not set 1291# CONFIG_MFD_WM8400 is not set
1239# CONFIG_MFD_WM831X is not set 1292# CONFIG_MFD_WM831X is not set
1240# CONFIG_MFD_WM8350_I2C is not set 1293# CONFIG_MFD_WM8350_I2C is not set
1241# CONFIG_MFD_PCF50633 is not set 1294# CONFIG_MFD_PCF50633 is not set
1242# CONFIG_AB3100_CORE is not set 1295# CONFIG_AB3100_CORE is not set
1296# CONFIG_MFD_88PM8607 is not set
1243# CONFIG_REGULATOR is not set 1297# CONFIG_REGULATOR is not set
1244# CONFIG_MEDIA_SUPPORT is not set 1298# CONFIG_MEDIA_SUPPORT is not set
1245 1299
@@ -1338,6 +1392,7 @@ CONFIG_USB=y
1338CONFIG_USB_EHCI_HCD=y 1392CONFIG_USB_EHCI_HCD=y
1339# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1393# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1340# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1394# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1395# CONFIG_XPS_USB_HCD_XILINX is not set
1341# CONFIG_USB_EHCI_FSL is not set 1396# CONFIG_USB_EHCI_FSL is not set
1342# CONFIG_USB_EHCI_HCD_PPC_OF is not set 1397# CONFIG_USB_EHCI_HCD_PPC_OF is not set
1343# CONFIG_USB_OXU210HP_HCD is not set 1398# CONFIG_USB_OXU210HP_HCD is not set
@@ -1464,6 +1519,7 @@ CONFIG_RTC_INTF_DEV=y
1464# CONFIG_RTC_DRV_PCF8563 is not set 1519# CONFIG_RTC_DRV_PCF8563 is not set
1465# CONFIG_RTC_DRV_PCF8583 is not set 1520# CONFIG_RTC_DRV_PCF8583 is not set
1466# CONFIG_RTC_DRV_M41T80 is not set 1521# CONFIG_RTC_DRV_M41T80 is not set
1522# CONFIG_RTC_DRV_BQ32K is not set
1467# CONFIG_RTC_DRV_S35390A is not set 1523# CONFIG_RTC_DRV_S35390A is not set
1468# CONFIG_RTC_DRV_FM3130 is not set 1524# CONFIG_RTC_DRV_FM3130 is not set
1469CONFIG_RTC_DRV_RX8581=y 1525CONFIG_RTC_DRV_RX8581=y
@@ -1485,7 +1541,9 @@ CONFIG_RTC_DRV_RX8581=y
1485# CONFIG_RTC_DRV_M48T86 is not set 1541# CONFIG_RTC_DRV_M48T86 is not set
1486# CONFIG_RTC_DRV_M48T35 is not set 1542# CONFIG_RTC_DRV_M48T35 is not set
1487# CONFIG_RTC_DRV_M48T59 is not set 1543# CONFIG_RTC_DRV_M48T59 is not set
1544# CONFIG_RTC_DRV_MSM6242 is not set
1488# CONFIG_RTC_DRV_BQ4802 is not set 1545# CONFIG_RTC_DRV_BQ4802 is not set
1546# CONFIG_RTC_DRV_RP5C01 is not set
1489# CONFIG_RTC_DRV_V3020 is not set 1547# CONFIG_RTC_DRV_V3020 is not set
1490 1548
1491# 1549#
@@ -1710,7 +1768,7 @@ CONFIG_MAGIC_SYSRQ=y
1710# CONFIG_DEBUG_FS is not set 1768# CONFIG_DEBUG_FS is not set
1711# CONFIG_HEADERS_CHECK is not set 1769# CONFIG_HEADERS_CHECK is not set
1712# CONFIG_DEBUG_KERNEL is not set 1770# CONFIG_DEBUG_KERNEL is not set
1713# CONFIG_DEBUG_BUGVERBOSE is not set 1771CONFIG_DEBUG_BUGVERBOSE=y
1714# CONFIG_DEBUG_MEMORY_INIT is not set 1772# CONFIG_DEBUG_MEMORY_INIT is not set
1715# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1773# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1716# CONFIG_LATENCYTOP is not set 1774# CONFIG_LATENCYTOP is not set
@@ -1737,7 +1795,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1737# CONFIG_KEYS is not set 1795# CONFIG_KEYS is not set
1738# CONFIG_SECURITY is not set 1796# CONFIG_SECURITY is not set
1739# CONFIG_SECURITYFS is not set 1797# CONFIG_SECURITYFS is not set
1740# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1798# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1799# CONFIG_DEFAULT_SECURITY_SMACK is not set
1800# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1801CONFIG_DEFAULT_SECURITY_DAC=y
1802CONFIG_DEFAULT_SECURITY=""
1741CONFIG_CRYPTO=y 1803CONFIG_CRYPTO=y
1742 1804
1743# 1805#
diff --git a/arch/powerpc/configs/86xx/gef_sbc310_defconfig b/arch/powerpc/configs/86xx/gef_sbc310_defconfig
index a6a3768f7304..eb58dec11a61 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:47 2009 4# Wed Jan 6 09:24:41 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -38,6 +38,7 @@ CONFIG_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 39# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
40CONFIG_IRQ_PER_CPU=y 40CONFIG_IRQ_PER_CPU=y
41CONFIG_NR_IRQS=512
41CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
42CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
43CONFIG_TRACE_IRQFLAGS_SUPPORT=y 44CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -62,6 +63,8 @@ CONFIG_AUDIT_ARCH=y
62CONFIG_GENERIC_BUG=y 63CONFIG_GENERIC_BUG=y
63CONFIG_DTC=y 64CONFIG_DTC=y
64CONFIG_DEFAULT_UIMAGE=y 65CONFIG_DEFAULT_UIMAGE=y
66CONFIG_ARCH_HIBERNATION_POSSIBLE=y
67CONFIG_ARCH_SUSPEND_POSSIBLE=y
65# CONFIG_PPC_DCR_NATIVE is not set 68# CONFIG_PPC_DCR_NATIVE is not set
66# CONFIG_PPC_DCR_MMIO is not set 69# CONFIG_PPC_DCR_MMIO is not set
67CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 70CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -91,6 +94,7 @@ CONFIG_BSD_PROCESS_ACCT_V3=y
91# 94#
92CONFIG_TREE_RCU=y 95CONFIG_TREE_RCU=y
93# CONFIG_TREE_PREEMPT_RCU is not set 96# CONFIG_TREE_PREEMPT_RCU is not set
97# CONFIG_TINY_RCU is not set
94# CONFIG_RCU_TRACE is not set 98# CONFIG_RCU_TRACE is not set
95CONFIG_RCU_FANOUT=32 99CONFIG_RCU_FANOUT=32
96# CONFIG_RCU_FANOUT_EXACT is not set 100# CONFIG_RCU_FANOUT_EXACT is not set
@@ -181,14 +185,41 @@ CONFIG_LBDAF=y
181# IO Schedulers 185# IO Schedulers
182# 186#
183CONFIG_IOSCHED_NOOP=y 187CONFIG_IOSCHED_NOOP=y
184CONFIG_IOSCHED_AS=y
185CONFIG_IOSCHED_DEADLINE=y 188CONFIG_IOSCHED_DEADLINE=y
186CONFIG_IOSCHED_CFQ=y 189CONFIG_IOSCHED_CFQ=y
187# CONFIG_DEFAULT_AS is not set
188# CONFIG_DEFAULT_DEADLINE is not set 190# CONFIG_DEFAULT_DEADLINE is not set
189CONFIG_DEFAULT_CFQ=y 191CONFIG_DEFAULT_CFQ=y
190# CONFIG_DEFAULT_NOOP is not set 192# CONFIG_DEFAULT_NOOP is not set
191CONFIG_DEFAULT_IOSCHED="cfq" 193CONFIG_DEFAULT_IOSCHED="cfq"
194# CONFIG_INLINE_SPIN_TRYLOCK is not set
195# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
196# CONFIG_INLINE_SPIN_LOCK is not set
197# CONFIG_INLINE_SPIN_LOCK_BH is not set
198# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
199# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
200# CONFIG_INLINE_SPIN_UNLOCK is not set
201# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
202# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
203# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_READ_TRYLOCK is not set
205# CONFIG_INLINE_READ_LOCK is not set
206# CONFIG_INLINE_READ_LOCK_BH is not set
207# CONFIG_INLINE_READ_LOCK_IRQ is not set
208# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
209# CONFIG_INLINE_READ_UNLOCK is not set
210# CONFIG_INLINE_READ_UNLOCK_BH is not set
211# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
212# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
213# CONFIG_INLINE_WRITE_TRYLOCK is not set
214# CONFIG_INLINE_WRITE_LOCK is not set
215# CONFIG_INLINE_WRITE_LOCK_BH is not set
216# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
217# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
218# CONFIG_INLINE_WRITE_UNLOCK is not set
219# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
220# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
221# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
222CONFIG_MUTEX_SPIN_ON_OWNER=y
192# CONFIG_FREEZER is not set 223# CONFIG_FREEZER is not set
193 224
194# 225#
@@ -259,6 +290,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
259# CONFIG_KEXEC is not set 290# CONFIG_KEXEC is not set
260# CONFIG_CRASH_DUMP is not set 291# CONFIG_CRASH_DUMP is not set
261CONFIG_IRQ_ALL_CPUS=y 292CONFIG_IRQ_ALL_CPUS=y
293CONFIG_SPARSE_IRQ=y
262CONFIG_MAX_ACTIVE_REGIONS=32 294CONFIG_MAX_ACTIVE_REGIONS=32
263CONFIG_ARCH_FLATMEM_ENABLE=y 295CONFIG_ARCH_FLATMEM_ENABLE=y
264CONFIG_ARCH_POPULATES_NODE_MAP=y 296CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -275,8 +307,6 @@ CONFIG_MIGRATION=y
275CONFIG_ZONE_DMA_FLAG=1 307CONFIG_ZONE_DMA_FLAG=1
276CONFIG_BOUNCE=y 308CONFIG_BOUNCE=y
277CONFIG_VIRT_TO_BUS=y 309CONFIG_VIRT_TO_BUS=y
278CONFIG_HAVE_MLOCK=y
279CONFIG_HAVE_MLOCKED_PAGE_BIT=y
280# CONFIG_KSM is not set 310# CONFIG_KSM is not set
281CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 311CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
282CONFIG_PPC_4K_PAGES=y 312CONFIG_PPC_4K_PAGES=y
@@ -314,7 +344,6 @@ CONFIG_ARCH_SUPPORTS_MSI=y
314# CONFIG_PCI_STUB is not set 344# CONFIG_PCI_STUB is not set
315# CONFIG_PCI_IOV is not set 345# CONFIG_PCI_IOV is not set
316CONFIG_PCCARD=y 346CONFIG_PCCARD=y
317# CONFIG_PCMCIA_DEBUG is not set
318CONFIG_PCMCIA=y 347CONFIG_PCMCIA=y
319# CONFIG_PCMCIA_LOAD_CIS is not set 348# CONFIG_PCMCIA_LOAD_CIS is not set
320# CONFIG_PCMCIA_IOCTL is not set 349# CONFIG_PCMCIA_IOCTL is not set
@@ -414,6 +443,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m
414CONFIG_INET6_XFRM_MODE_BEET=m 443CONFIG_INET6_XFRM_MODE_BEET=m
415# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 444# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
416CONFIG_IPV6_SIT=m 445CONFIG_IPV6_SIT=m
446# CONFIG_IPV6_SIT_6RD is not set
417CONFIG_IPV6_NDISC_NODETYPE=y 447CONFIG_IPV6_NDISC_NODETYPE=y
418CONFIG_IPV6_TUNNEL=m 448CONFIG_IPV6_TUNNEL=m
419# CONFIG_IPV6_MULTIPLE_TABLES is not set 449# CONFIG_IPV6_MULTIPLE_TABLES is not set
@@ -451,7 +481,13 @@ CONFIG_NET_PKTGEN=m
451# CONFIG_BT is not set 481# CONFIG_BT is not set
452# CONFIG_AF_RXRPC is not set 482# CONFIG_AF_RXRPC is not set
453CONFIG_FIB_RULES=y 483CONFIG_FIB_RULES=y
454# CONFIG_WIRELESS is not set 484CONFIG_WIRELESS=y
485# CONFIG_CFG80211 is not set
486# CONFIG_LIB80211 is not set
487
488#
489# CFG80211 needs to be enabled for MAC80211
490#
455# CONFIG_WIMAX is not set 491# CONFIG_WIMAX is not set
456# CONFIG_RFKILL is not set 492# CONFIG_RFKILL is not set
457# CONFIG_NET_9P is not set 493# CONFIG_NET_9P is not set
@@ -570,6 +606,10 @@ CONFIG_BLK_DEV=y
570# CONFIG_BLK_DEV_COW_COMMON is not set 606# CONFIG_BLK_DEV_COW_COMMON is not set
571CONFIG_BLK_DEV_LOOP=m 607CONFIG_BLK_DEV_LOOP=m
572CONFIG_BLK_DEV_CRYPTOLOOP=m 608CONFIG_BLK_DEV_CRYPTOLOOP=m
609
610#
611# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
612#
573CONFIG_BLK_DEV_NBD=m 613CONFIG_BLK_DEV_NBD=m
574# CONFIG_BLK_DEV_SX8 is not set 614# CONFIG_BLK_DEV_SX8 is not set
575# CONFIG_BLK_DEV_UB is not set 615# CONFIG_BLK_DEV_UB is not set
@@ -581,6 +621,7 @@ CONFIG_BLK_DEV_RAM_SIZE=131072
581# CONFIG_ATA_OVER_ETH is not set 621# CONFIG_ATA_OVER_ETH is not set
582# CONFIG_BLK_DEV_HD is not set 622# CONFIG_BLK_DEV_HD is not set
583CONFIG_MISC_DEVICES=y 623CONFIG_MISC_DEVICES=y
624# CONFIG_AD525X_DPOT is not set
584# CONFIG_PHANTOM is not set 625# CONFIG_PHANTOM is not set
585# CONFIG_SGI_IOC4 is not set 626# CONFIG_SGI_IOC4 is not set
586# CONFIG_TIFM_CORE is not set 627# CONFIG_TIFM_CORE is not set
@@ -588,6 +629,7 @@ CONFIG_MISC_DEVICES=y
588# CONFIG_ENCLOSURE_SERVICES is not set 629# CONFIG_ENCLOSURE_SERVICES is not set
589# CONFIG_HP_ILO is not set 630# CONFIG_HP_ILO is not set
590# CONFIG_ISL29003 is not set 631# CONFIG_ISL29003 is not set
632CONFIG_DS1682=y
591# CONFIG_C2PORT is not set 633# CONFIG_C2PORT is not set
592 634
593# 635#
@@ -689,7 +731,9 @@ CONFIG_SCSI_LOWLEVEL=y
689# CONFIG_SCSI_BNX2_ISCSI is not set 731# CONFIG_SCSI_BNX2_ISCSI is not set
690# CONFIG_BE2ISCSI is not set 732# CONFIG_BE2ISCSI is not set
691# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 733# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
734# CONFIG_SCSI_HPSA is not set
692# CONFIG_SCSI_3W_9XXX is not set 735# CONFIG_SCSI_3W_9XXX is not set
736# CONFIG_SCSI_3W_SAS is not set
693# CONFIG_SCSI_ACARD is not set 737# CONFIG_SCSI_ACARD is not set
694# CONFIG_SCSI_AACRAID is not set 738# CONFIG_SCSI_AACRAID is not set
695# CONFIG_SCSI_AIC7XXX is not set 739# CONFIG_SCSI_AIC7XXX is not set
@@ -728,6 +772,7 @@ CONFIG_SCSI_LOWLEVEL=y
728# CONFIG_SCSI_NSP32 is not set 772# CONFIG_SCSI_NSP32 is not set
729# CONFIG_SCSI_DEBUG is not set 773# CONFIG_SCSI_DEBUG is not set
730# CONFIG_SCSI_PMCRAID is not set 774# CONFIG_SCSI_PMCRAID is not set
775# CONFIG_SCSI_PM8001 is not set
731# CONFIG_SCSI_SRP is not set 776# CONFIG_SCSI_SRP is not set
732# CONFIG_SCSI_BFA_FC is not set 777# CONFIG_SCSI_BFA_FC is not set
733# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set 778# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
@@ -753,7 +798,7 @@ CONFIG_SATA_SIL24=y
753# 798#
754 799
755# 800#
756# See the help texts for more information. 801# The newer stack is recommended.
757# 802#
758# CONFIG_FIREWIRE is not set 803# CONFIG_FIREWIRE is not set
759# CONFIG_IEEE1394 is not set 804# CONFIG_IEEE1394 is not set
@@ -840,8 +885,14 @@ CONFIG_GIANFAR=y
840# CONFIG_NETDEV_10000 is not set 885# CONFIG_NETDEV_10000 is not set
841# CONFIG_TR is not set 886# CONFIG_TR is not set
842CONFIG_WLAN=y 887CONFIG_WLAN=y
843# CONFIG_WLAN_PRE80211 is not set 888# CONFIG_PCMCIA_RAYCS is not set
844# CONFIG_WLAN_80211 is not set 889# CONFIG_AIRO is not set
890# CONFIG_ATMEL is not set
891# CONFIG_AIRO_CS is not set
892# CONFIG_PCMCIA_WL3501 is not set
893# CONFIG_PRISM54 is not set
894# CONFIG_USB_ZD1201 is not set
895# CONFIG_HOSTAP is not set
845 896
846# 897#
847# Enable WiMAX (Networking options) to see the WiMAX drivers 898# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -880,6 +931,7 @@ CONFIG_NETCONSOLE=y
880CONFIG_NETPOLL=y 931CONFIG_NETPOLL=y
881CONFIG_NETPOLL_TRAP=y 932CONFIG_NETPOLL_TRAP=y
882CONFIG_NET_POLL_CONTROLLER=y 933CONFIG_NET_POLL_CONTROLLER=y
934# CONFIG_VMXNET3 is not set
883# CONFIG_ISDN is not set 935# CONFIG_ISDN is not set
884# CONFIG_PHONE is not set 936# CONFIG_PHONE is not set
885 937
@@ -889,6 +941,7 @@ CONFIG_NET_POLL_CONTROLLER=y
889CONFIG_INPUT=y 941CONFIG_INPUT=y
890# CONFIG_INPUT_FF_MEMLESS is not set 942# CONFIG_INPUT_FF_MEMLESS is not set
891# CONFIG_INPUT_POLLDEV is not set 943# CONFIG_INPUT_POLLDEV is not set
944# CONFIG_INPUT_SPARSEKMAP is not set
892 945
893# 946#
894# Userland interfaces 947# Userland interfaces
@@ -948,6 +1001,7 @@ CONFIG_SERIAL_CORE=y
948CONFIG_SERIAL_CORE_CONSOLE=y 1001CONFIG_SERIAL_CORE_CONSOLE=y
949# CONFIG_SERIAL_JSM is not set 1002# CONFIG_SERIAL_JSM is not set
950# CONFIG_SERIAL_OF_PLATFORM is not set 1003# CONFIG_SERIAL_OF_PLATFORM is not set
1004# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
951CONFIG_UNIX98_PTYS=y 1005CONFIG_UNIX98_PTYS=y
952# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 1006# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
953# CONFIG_LEGACY_PTYS is not set 1007# CONFIG_LEGACY_PTYS is not set
@@ -1013,11 +1067,6 @@ CONFIG_I2C_MPC=y
1013# CONFIG_I2C_TINY_USB is not set 1067# CONFIG_I2C_TINY_USB is not set
1014 1068
1015# 1069#
1016# Graphics adapter I2C/DDC channel drivers
1017#
1018# CONFIG_I2C_VOODOO3 is not set
1019
1020#
1021# Other I2C/SMBus bus drivers 1070# Other I2C/SMBus bus drivers
1022# 1071#
1023# CONFIG_I2C_PCA_PLATFORM is not set 1072# CONFIG_I2C_PCA_PLATFORM is not set
@@ -1026,7 +1075,6 @@ CONFIG_I2C_MPC=y
1026# 1075#
1027# Miscellaneous I2C Chip support 1076# Miscellaneous I2C Chip support
1028# 1077#
1029CONFIG_DS1682=y
1030# CONFIG_SENSORS_TSL2550 is not set 1078# CONFIG_SENSORS_TSL2550 is not set
1031# CONFIG_I2C_DEBUG_CORE is not set 1079# CONFIG_I2C_DEBUG_CORE is not set
1032# CONFIG_I2C_DEBUG_ALGO is not set 1080# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1058,6 +1106,7 @@ CONFIG_GPIO_SYSFS=y
1058# 1106#
1059# PCI GPIO expanders: 1107# PCI GPIO expanders:
1060# 1108#
1109# CONFIG_GPIO_CS5535 is not set
1061# CONFIG_GPIO_BT8XX is not set 1110# CONFIG_GPIO_BT8XX is not set
1062# CONFIG_GPIO_LANGWELL is not set 1111# CONFIG_GPIO_LANGWELL is not set
1063 1112
@@ -1100,6 +1149,7 @@ CONFIG_HWMON=y
1100# CONFIG_SENSORS_GL520SM is not set 1149# CONFIG_SENSORS_GL520SM is not set
1101# CONFIG_SENSORS_IT87 is not set 1150# CONFIG_SENSORS_IT87 is not set
1102# CONFIG_SENSORS_LM63 is not set 1151# CONFIG_SENSORS_LM63 is not set
1152# CONFIG_SENSORS_LM73 is not set
1103# CONFIG_SENSORS_LM75 is not set 1153# CONFIG_SENSORS_LM75 is not set
1104# CONFIG_SENSORS_LM77 is not set 1154# CONFIG_SENSORS_LM77 is not set
1105# CONFIG_SENSORS_LM78 is not set 1155# CONFIG_SENSORS_LM78 is not set
@@ -1139,6 +1189,7 @@ CONFIG_SENSORS_LM92=y
1139# CONFIG_SENSORS_W83L786NG is not set 1189# CONFIG_SENSORS_W83L786NG is not set
1140# CONFIG_SENSORS_W83627HF is not set 1190# CONFIG_SENSORS_W83627HF is not set
1141# CONFIG_SENSORS_W83627EHF is not set 1191# CONFIG_SENSORS_W83627EHF is not set
1192# CONFIG_SENSORS_LIS3_I2C is not set
1142# CONFIG_THERMAL is not set 1193# CONFIG_THERMAL is not set
1143CONFIG_WATCHDOG=y 1194CONFIG_WATCHDOG=y
1144# CONFIG_WATCHDOG_NOWAYOUT is not set 1195# CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -1178,11 +1229,13 @@ CONFIG_SSB_POSSIBLE=y
1178# CONFIG_TWL4030_CORE is not set 1229# CONFIG_TWL4030_CORE is not set
1179# CONFIG_MFD_TMIO is not set 1230# CONFIG_MFD_TMIO is not set
1180# CONFIG_PMIC_DA903X is not set 1231# CONFIG_PMIC_DA903X is not set
1232# CONFIG_PMIC_ADP5520 is not set
1181# CONFIG_MFD_WM8400 is not set 1233# CONFIG_MFD_WM8400 is not set
1182# CONFIG_MFD_WM831X is not set 1234# CONFIG_MFD_WM831X is not set
1183# CONFIG_MFD_WM8350_I2C is not set 1235# CONFIG_MFD_WM8350_I2C is not set
1184# CONFIG_MFD_PCF50633 is not set 1236# CONFIG_MFD_PCF50633 is not set
1185# CONFIG_AB3100_CORE is not set 1237# CONFIG_AB3100_CORE is not set
1238# CONFIG_MFD_88PM8607 is not set
1186# CONFIG_REGULATOR is not set 1239# CONFIG_REGULATOR is not set
1187# CONFIG_MEDIA_SUPPORT is not set 1240# CONFIG_MEDIA_SUPPORT is not set
1188 1241
@@ -1281,6 +1334,7 @@ CONFIG_USB=y
1281CONFIG_USB_EHCI_HCD=y 1334CONFIG_USB_EHCI_HCD=y
1282# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1335# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1283# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1336# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1337# CONFIG_XPS_USB_HCD_XILINX is not set
1284# CONFIG_USB_EHCI_FSL is not set 1338# CONFIG_USB_EHCI_FSL is not set
1285# CONFIG_USB_EHCI_HCD_PPC_OF is not set 1339# CONFIG_USB_EHCI_HCD_PPC_OF is not set
1286# CONFIG_USB_OXU210HP_HCD is not set 1340# CONFIG_USB_OXU210HP_HCD is not set
@@ -1407,6 +1461,7 @@ CONFIG_RTC_INTF_DEV=y
1407# CONFIG_RTC_DRV_PCF8563 is not set 1461# CONFIG_RTC_DRV_PCF8563 is not set
1408# CONFIG_RTC_DRV_PCF8583 is not set 1462# CONFIG_RTC_DRV_PCF8583 is not set
1409# CONFIG_RTC_DRV_M41T80 is not set 1463# CONFIG_RTC_DRV_M41T80 is not set
1464# CONFIG_RTC_DRV_BQ32K is not set
1410# CONFIG_RTC_DRV_S35390A is not set 1465# CONFIG_RTC_DRV_S35390A is not set
1411# CONFIG_RTC_DRV_FM3130 is not set 1466# CONFIG_RTC_DRV_FM3130 is not set
1412CONFIG_RTC_DRV_RX8581=y 1467CONFIG_RTC_DRV_RX8581=y
@@ -1428,7 +1483,9 @@ CONFIG_RTC_DRV_RX8581=y
1428# CONFIG_RTC_DRV_M48T86 is not set 1483# CONFIG_RTC_DRV_M48T86 is not set
1429# CONFIG_RTC_DRV_M48T35 is not set 1484# CONFIG_RTC_DRV_M48T35 is not set
1430# CONFIG_RTC_DRV_M48T59 is not set 1485# CONFIG_RTC_DRV_M48T59 is not set
1486# CONFIG_RTC_DRV_MSM6242 is not set
1431# CONFIG_RTC_DRV_BQ4802 is not set 1487# CONFIG_RTC_DRV_BQ4802 is not set
1488# CONFIG_RTC_DRV_RP5C01 is not set
1432# CONFIG_RTC_DRV_V3020 is not set 1489# CONFIG_RTC_DRV_V3020 is not set
1433 1490
1434# 1491#
@@ -1653,7 +1710,7 @@ CONFIG_MAGIC_SYSRQ=y
1653# CONFIG_DEBUG_FS is not set 1710# CONFIG_DEBUG_FS is not set
1654# CONFIG_HEADERS_CHECK is not set 1711# CONFIG_HEADERS_CHECK is not set
1655# CONFIG_DEBUG_KERNEL is not set 1712# CONFIG_DEBUG_KERNEL is not set
1656# CONFIG_DEBUG_BUGVERBOSE is not set 1713CONFIG_DEBUG_BUGVERBOSE=y
1657# CONFIG_DEBUG_MEMORY_INIT is not set 1714# CONFIG_DEBUG_MEMORY_INIT is not set
1658# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1715# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1659# CONFIG_LATENCYTOP is not set 1716# CONFIG_LATENCYTOP is not set
@@ -1680,7 +1737,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1680# CONFIG_KEYS is not set 1737# CONFIG_KEYS is not set
1681# CONFIG_SECURITY is not set 1738# CONFIG_SECURITY is not set
1682# CONFIG_SECURITYFS is not set 1739# CONFIG_SECURITYFS is not set
1683# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1740# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1741# CONFIG_DEFAULT_SECURITY_SMACK is not set
1742# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1743CONFIG_DEFAULT_SECURITY_DAC=y
1744CONFIG_DEFAULT_SECURITY=""
1684CONFIG_CRYPTO=y 1745CONFIG_CRYPTO=y
1685 1746
1686# 1747#
diff --git a/arch/powerpc/configs/86xx/gef_sbc610_defconfig b/arch/powerpc/configs/86xx/gef_sbc610_defconfig
index 1975d41e0763..4554d9bb03e5 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:48 2009 4# Wed Jan 6 09:24:42 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -38,6 +38,7 @@ CONFIG_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 39# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
40CONFIG_IRQ_PER_CPU=y 40CONFIG_IRQ_PER_CPU=y
41CONFIG_NR_IRQS=512
41CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
42CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
43CONFIG_TRACE_IRQFLAGS_SUPPORT=y 44CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -62,6 +63,8 @@ CONFIG_AUDIT_ARCH=y
62CONFIG_GENERIC_BUG=y 63CONFIG_GENERIC_BUG=y
63CONFIG_DTC=y 64CONFIG_DTC=y
64CONFIG_DEFAULT_UIMAGE=y 65CONFIG_DEFAULT_UIMAGE=y
66CONFIG_ARCH_HIBERNATION_POSSIBLE=y
67CONFIG_ARCH_SUSPEND_POSSIBLE=y
65# CONFIG_PPC_DCR_NATIVE is not set 68# CONFIG_PPC_DCR_NATIVE is not set
66# CONFIG_PPC_DCR_MMIO is not set 69# CONFIG_PPC_DCR_MMIO is not set
67CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 70CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -91,6 +94,7 @@ CONFIG_BSD_PROCESS_ACCT_V3=y
91# 94#
92CONFIG_TREE_RCU=y 95CONFIG_TREE_RCU=y
93# CONFIG_TREE_PREEMPT_RCU is not set 96# CONFIG_TREE_PREEMPT_RCU is not set
97# CONFIG_TINY_RCU is not set
94# CONFIG_RCU_TRACE is not set 98# CONFIG_RCU_TRACE is not set
95CONFIG_RCU_FANOUT=32 99CONFIG_RCU_FANOUT=32
96# CONFIG_RCU_FANOUT_EXACT is not set 100# CONFIG_RCU_FANOUT_EXACT is not set
@@ -182,14 +186,41 @@ CONFIG_LBDAF=y
182# IO Schedulers 186# IO Schedulers
183# 187#
184CONFIG_IOSCHED_NOOP=y 188CONFIG_IOSCHED_NOOP=y
185CONFIG_IOSCHED_AS=y
186CONFIG_IOSCHED_DEADLINE=y 189CONFIG_IOSCHED_DEADLINE=y
187CONFIG_IOSCHED_CFQ=y 190CONFIG_IOSCHED_CFQ=y
188# CONFIG_DEFAULT_AS is not set
189# CONFIG_DEFAULT_DEADLINE is not set 191# CONFIG_DEFAULT_DEADLINE is not set
190CONFIG_DEFAULT_CFQ=y 192CONFIG_DEFAULT_CFQ=y
191# CONFIG_DEFAULT_NOOP is not set 193# CONFIG_DEFAULT_NOOP is not set
192CONFIG_DEFAULT_IOSCHED="cfq" 194CONFIG_DEFAULT_IOSCHED="cfq"
195# CONFIG_INLINE_SPIN_TRYLOCK is not set
196# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
197# CONFIG_INLINE_SPIN_LOCK is not set
198# CONFIG_INLINE_SPIN_LOCK_BH is not set
199# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
200# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
201# CONFIG_INLINE_SPIN_UNLOCK is not set
202# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
203# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
204# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
205# CONFIG_INLINE_READ_TRYLOCK is not set
206# CONFIG_INLINE_READ_LOCK is not set
207# CONFIG_INLINE_READ_LOCK_BH is not set
208# CONFIG_INLINE_READ_LOCK_IRQ is not set
209# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
210# CONFIG_INLINE_READ_UNLOCK is not set
211# CONFIG_INLINE_READ_UNLOCK_BH is not set
212# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
213# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
214# CONFIG_INLINE_WRITE_TRYLOCK is not set
215# CONFIG_INLINE_WRITE_LOCK is not set
216# CONFIG_INLINE_WRITE_LOCK_BH is not set
217# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
218# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
219# CONFIG_INLINE_WRITE_UNLOCK is not set
220# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
221# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
222# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
223CONFIG_MUTEX_SPIN_ON_OWNER=y
193# CONFIG_FREEZER is not set 224# CONFIG_FREEZER is not set
194 225
195# 226#
@@ -260,6 +291,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
260# CONFIG_KEXEC is not set 291# CONFIG_KEXEC is not set
261# CONFIG_CRASH_DUMP is not set 292# CONFIG_CRASH_DUMP is not set
262CONFIG_IRQ_ALL_CPUS=y 293CONFIG_IRQ_ALL_CPUS=y
294CONFIG_SPARSE_IRQ=y
263CONFIG_MAX_ACTIVE_REGIONS=32 295CONFIG_MAX_ACTIVE_REGIONS=32
264CONFIG_ARCH_FLATMEM_ENABLE=y 296CONFIG_ARCH_FLATMEM_ENABLE=y
265CONFIG_ARCH_POPULATES_NODE_MAP=y 297CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -276,8 +308,6 @@ CONFIG_MIGRATION=y
276CONFIG_ZONE_DMA_FLAG=1 308CONFIG_ZONE_DMA_FLAG=1
277CONFIG_BOUNCE=y 309CONFIG_BOUNCE=y
278CONFIG_VIRT_TO_BUS=y 310CONFIG_VIRT_TO_BUS=y
279CONFIG_HAVE_MLOCK=y
280CONFIG_HAVE_MLOCKED_PAGE_BIT=y
281# CONFIG_KSM is not set 311# CONFIG_KSM is not set
282CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 312CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
283CONFIG_PPC_4K_PAGES=y 313CONFIG_PPC_4K_PAGES=y
@@ -400,6 +430,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m
400CONFIG_INET6_XFRM_MODE_BEET=m 430CONFIG_INET6_XFRM_MODE_BEET=m
401# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 431# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
402CONFIG_IPV6_SIT=m 432CONFIG_IPV6_SIT=m
433# CONFIG_IPV6_SIT_6RD is not set
403CONFIG_IPV6_NDISC_NODETYPE=y 434CONFIG_IPV6_NDISC_NODETYPE=y
404CONFIG_IPV6_TUNNEL=m 435CONFIG_IPV6_TUNNEL=m
405# CONFIG_IPV6_MULTIPLE_TABLES is not set 436# CONFIG_IPV6_MULTIPLE_TABLES is not set
@@ -588,9 +619,6 @@ CONFIG_NET_PKTGEN=m
588CONFIG_FIB_RULES=y 619CONFIG_FIB_RULES=y
589CONFIG_WIRELESS=y 620CONFIG_WIRELESS=y
590# CONFIG_CFG80211 is not set 621# CONFIG_CFG80211 is not set
591CONFIG_CFG80211_DEFAULT_PS_VALUE=0
592CONFIG_WIRELESS_OLD_REGULATORY=y
593# CONFIG_WIRELESS_EXT is not set
594# CONFIG_LIB80211 is not set 622# CONFIG_LIB80211 is not set
595 623
596# 624#
@@ -719,6 +747,10 @@ CONFIG_BLK_DEV=y
719# CONFIG_BLK_DEV_COW_COMMON is not set 747# CONFIG_BLK_DEV_COW_COMMON is not set
720CONFIG_BLK_DEV_LOOP=m 748CONFIG_BLK_DEV_LOOP=m
721CONFIG_BLK_DEV_CRYPTOLOOP=m 749CONFIG_BLK_DEV_CRYPTOLOOP=m
750
751#
752# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
753#
722CONFIG_BLK_DEV_NBD=m 754CONFIG_BLK_DEV_NBD=m
723# CONFIG_BLK_DEV_SX8 is not set 755# CONFIG_BLK_DEV_SX8 is not set
724# CONFIG_BLK_DEV_UB is not set 756# CONFIG_BLK_DEV_UB is not set
@@ -730,6 +762,7 @@ CONFIG_BLK_DEV_RAM_SIZE=131072
730# CONFIG_ATA_OVER_ETH is not set 762# CONFIG_ATA_OVER_ETH is not set
731# CONFIG_BLK_DEV_HD is not set 763# CONFIG_BLK_DEV_HD is not set
732CONFIG_MISC_DEVICES=y 764CONFIG_MISC_DEVICES=y
765# CONFIG_AD525X_DPOT is not set
733# CONFIG_PHANTOM is not set 766# CONFIG_PHANTOM is not set
734# CONFIG_SGI_IOC4 is not set 767# CONFIG_SGI_IOC4 is not set
735# CONFIG_TIFM_CORE is not set 768# CONFIG_TIFM_CORE is not set
@@ -737,6 +770,7 @@ CONFIG_MISC_DEVICES=y
737# CONFIG_ENCLOSURE_SERVICES is not set 770# CONFIG_ENCLOSURE_SERVICES is not set
738# CONFIG_HP_ILO is not set 771# CONFIG_HP_ILO is not set
739# CONFIG_ISL29003 is not set 772# CONFIG_ISL29003 is not set
773CONFIG_DS1682=y
740# CONFIG_C2PORT is not set 774# CONFIG_C2PORT is not set
741 775
742# 776#
@@ -789,7 +823,9 @@ CONFIG_SCSI_LOWLEVEL=y
789# CONFIG_SCSI_BNX2_ISCSI is not set 823# CONFIG_SCSI_BNX2_ISCSI is not set
790# CONFIG_BE2ISCSI is not set 824# CONFIG_BE2ISCSI is not set
791# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 825# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
826# CONFIG_SCSI_HPSA is not set
792# CONFIG_SCSI_3W_9XXX is not set 827# CONFIG_SCSI_3W_9XXX is not set
828# CONFIG_SCSI_3W_SAS is not set
793# CONFIG_SCSI_ACARD is not set 829# CONFIG_SCSI_ACARD is not set
794# CONFIG_SCSI_AACRAID is not set 830# CONFIG_SCSI_AACRAID is not set
795# CONFIG_SCSI_AIC7XXX is not set 831# CONFIG_SCSI_AIC7XXX is not set
@@ -828,6 +864,7 @@ CONFIG_SCSI_LOWLEVEL=y
828# CONFIG_SCSI_NSP32 is not set 864# CONFIG_SCSI_NSP32 is not set
829# CONFIG_SCSI_DEBUG is not set 865# CONFIG_SCSI_DEBUG is not set
830# CONFIG_SCSI_PMCRAID is not set 866# CONFIG_SCSI_PMCRAID is not set
867# CONFIG_SCSI_PM8001 is not set
831# CONFIG_SCSI_SRP is not set 868# CONFIG_SCSI_SRP is not set
832# CONFIG_SCSI_BFA_FC is not set 869# CONFIG_SCSI_BFA_FC is not set
833# CONFIG_SCSI_DH is not set 870# CONFIG_SCSI_DH is not set
@@ -883,15 +920,16 @@ CONFIG_SATA_SIL=y
883# CONFIG_PATA_NS87415 is not set 920# CONFIG_PATA_NS87415 is not set
884# CONFIG_PATA_OPTI is not set 921# CONFIG_PATA_OPTI is not set
885# CONFIG_PATA_OPTIDMA is not set 922# CONFIG_PATA_OPTIDMA is not set
923# CONFIG_PATA_PDC2027X is not set
886# CONFIG_PATA_PDC_OLD is not set 924# CONFIG_PATA_PDC_OLD is not set
887# CONFIG_PATA_RADISYS is not set 925# CONFIG_PATA_RADISYS is not set
888# CONFIG_PATA_RDC is not set 926# CONFIG_PATA_RDC is not set
889# CONFIG_PATA_RZ1000 is not set 927# CONFIG_PATA_RZ1000 is not set
890# CONFIG_PATA_SC1200 is not set 928# CONFIG_PATA_SC1200 is not set
891# CONFIG_PATA_SERVERWORKS is not set 929# CONFIG_PATA_SERVERWORKS is not set
892# CONFIG_PATA_PDC2027X is not set
893# CONFIG_PATA_SIL680 is not set 930# CONFIG_PATA_SIL680 is not set
894# CONFIG_PATA_SIS is not set 931# CONFIG_PATA_SIS is not set
932# CONFIG_PATA_TOSHIBA is not set
895# CONFIG_PATA_VIA is not set 933# CONFIG_PATA_VIA is not set
896# CONFIG_PATA_WINBOND is not set 934# CONFIG_PATA_WINBOND is not set
897# CONFIG_PATA_PLATFORM is not set 935# CONFIG_PATA_PLATFORM is not set
@@ -908,7 +946,7 @@ CONFIG_SATA_SIL=y
908# 946#
909 947
910# 948#
911# See the help texts for more information. 949# The newer stack is recommended.
912# 950#
913# CONFIG_FIREWIRE is not set 951# CONFIG_FIREWIRE is not set
914# CONFIG_IEEE1394 is not set 952# CONFIG_IEEE1394 is not set
@@ -995,8 +1033,11 @@ CONFIG_GIANFAR=y
995# CONFIG_NETDEV_10000 is not set 1033# CONFIG_NETDEV_10000 is not set
996# CONFIG_TR is not set 1034# CONFIG_TR is not set
997CONFIG_WLAN=y 1035CONFIG_WLAN=y
998# CONFIG_WLAN_PRE80211 is not set 1036# CONFIG_AIRO is not set
999# CONFIG_WLAN_80211 is not set 1037# CONFIG_ATMEL is not set
1038# CONFIG_PRISM54 is not set
1039# CONFIG_USB_ZD1201 is not set
1040# CONFIG_HOSTAP is not set
1000 1041
1001# 1042#
1002# Enable WiMAX (Networking options) to see the WiMAX drivers 1043# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -1050,6 +1091,7 @@ CONFIG_NETCONSOLE=y
1050CONFIG_NETPOLL=y 1091CONFIG_NETPOLL=y
1051CONFIG_NETPOLL_TRAP=y 1092CONFIG_NETPOLL_TRAP=y
1052CONFIG_NET_POLL_CONTROLLER=y 1093CONFIG_NET_POLL_CONTROLLER=y
1094# CONFIG_VMXNET3 is not set
1053# CONFIG_ISDN is not set 1095# CONFIG_ISDN is not set
1054# CONFIG_PHONE is not set 1096# CONFIG_PHONE is not set
1055 1097
@@ -1059,6 +1101,7 @@ CONFIG_NET_POLL_CONTROLLER=y
1059CONFIG_INPUT=y 1101CONFIG_INPUT=y
1060CONFIG_INPUT_FF_MEMLESS=m 1102CONFIG_INPUT_FF_MEMLESS=m
1061# CONFIG_INPUT_POLLDEV is not set 1103# CONFIG_INPUT_POLLDEV is not set
1104# CONFIG_INPUT_SPARSEKMAP is not set
1062 1105
1063# 1106#
1064# Userland interfaces 1107# Userland interfaces
@@ -1117,6 +1160,7 @@ CONFIG_SERIAL_CORE=y
1117CONFIG_SERIAL_CORE_CONSOLE=y 1160CONFIG_SERIAL_CORE_CONSOLE=y
1118# CONFIG_SERIAL_JSM is not set 1161# CONFIG_SERIAL_JSM is not set
1119# CONFIG_SERIAL_OF_PLATFORM is not set 1162# CONFIG_SERIAL_OF_PLATFORM is not set
1163# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
1120CONFIG_UNIX98_PTYS=y 1164CONFIG_UNIX98_PTYS=y
1121# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 1165# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
1122# CONFIG_LEGACY_PTYS is not set 1166# CONFIG_LEGACY_PTYS is not set
@@ -1174,11 +1218,6 @@ CONFIG_I2C_MPC=y
1174# CONFIG_I2C_TINY_USB is not set 1218# CONFIG_I2C_TINY_USB is not set
1175 1219
1176# 1220#
1177# Graphics adapter I2C/DDC channel drivers
1178#
1179# CONFIG_I2C_VOODOO3 is not set
1180
1181#
1182# Other I2C/SMBus bus drivers 1221# Other I2C/SMBus bus drivers
1183# 1222#
1184# CONFIG_I2C_PCA_PLATFORM is not set 1223# CONFIG_I2C_PCA_PLATFORM is not set
@@ -1187,7 +1226,6 @@ CONFIG_I2C_MPC=y
1187# 1226#
1188# Miscellaneous I2C Chip support 1227# Miscellaneous I2C Chip support
1189# 1228#
1190CONFIG_DS1682=y
1191# CONFIG_SENSORS_TSL2550 is not set 1229# CONFIG_SENSORS_TSL2550 is not set
1192# CONFIG_I2C_DEBUG_CORE is not set 1230# CONFIG_I2C_DEBUG_CORE is not set
1193# CONFIG_I2C_DEBUG_ALGO is not set 1231# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1220,6 +1258,7 @@ CONFIG_GPIOLIB=y
1220# 1258#
1221# PCI GPIO expanders: 1259# PCI GPIO expanders:
1222# 1260#
1261# CONFIG_GPIO_CS5535 is not set
1223# CONFIG_GPIO_BT8XX is not set 1262# CONFIG_GPIO_BT8XX is not set
1224# CONFIG_GPIO_LANGWELL is not set 1263# CONFIG_GPIO_LANGWELL is not set
1225 1264
@@ -1262,6 +1301,7 @@ CONFIG_HWMON=y
1262# CONFIG_SENSORS_GL520SM is not set 1301# CONFIG_SENSORS_GL520SM is not set
1263# CONFIG_SENSORS_IT87 is not set 1302# CONFIG_SENSORS_IT87 is not set
1264# CONFIG_SENSORS_LM63 is not set 1303# CONFIG_SENSORS_LM63 is not set
1304# CONFIG_SENSORS_LM73 is not set
1265# CONFIG_SENSORS_LM75 is not set 1305# CONFIG_SENSORS_LM75 is not set
1266# CONFIG_SENSORS_LM77 is not set 1306# CONFIG_SENSORS_LM77 is not set
1267# CONFIG_SENSORS_LM78 is not set 1307# CONFIG_SENSORS_LM78 is not set
@@ -1301,6 +1341,7 @@ CONFIG_SENSORS_LM92=y
1301# CONFIG_SENSORS_W83L786NG is not set 1341# CONFIG_SENSORS_W83L786NG is not set
1302# CONFIG_SENSORS_W83627HF is not set 1342# CONFIG_SENSORS_W83627HF is not set
1303# CONFIG_SENSORS_W83627EHF is not set 1343# CONFIG_SENSORS_W83627EHF is not set
1344# CONFIG_SENSORS_LIS3_I2C is not set
1304# CONFIG_THERMAL is not set 1345# CONFIG_THERMAL is not set
1305CONFIG_WATCHDOG=y 1346CONFIG_WATCHDOG=y
1306# CONFIG_WATCHDOG_NOWAYOUT is not set 1347# CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -1340,11 +1381,13 @@ CONFIG_SSB_POSSIBLE=y
1340# CONFIG_TWL4030_CORE is not set 1381# CONFIG_TWL4030_CORE is not set
1341# CONFIG_MFD_TMIO is not set 1382# CONFIG_MFD_TMIO is not set
1342# CONFIG_PMIC_DA903X is not set 1383# CONFIG_PMIC_DA903X is not set
1384# CONFIG_PMIC_ADP5520 is not set
1343# CONFIG_MFD_WM8400 is not set 1385# CONFIG_MFD_WM8400 is not set
1344# CONFIG_MFD_WM831X is not set 1386# CONFIG_MFD_WM831X is not set
1345# CONFIG_MFD_WM8350_I2C is not set 1387# CONFIG_MFD_WM8350_I2C is not set
1346# CONFIG_MFD_PCF50633 is not set 1388# CONFIG_MFD_PCF50633 is not set
1347# CONFIG_AB3100_CORE is not set 1389# CONFIG_AB3100_CORE is not set
1390# CONFIG_MFD_88PM8607 is not set
1348# CONFIG_REGULATOR is not set 1391# CONFIG_REGULATOR is not set
1349# CONFIG_MEDIA_SUPPORT is not set 1392# CONFIG_MEDIA_SUPPORT is not set
1350 1393
@@ -1443,6 +1486,7 @@ CONFIG_USB=y
1443CONFIG_USB_EHCI_HCD=y 1486CONFIG_USB_EHCI_HCD=y
1444# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1487# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1445# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1488# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1489# CONFIG_XPS_USB_HCD_XILINX is not set
1446# CONFIG_USB_EHCI_FSL is not set 1490# CONFIG_USB_EHCI_FSL is not set
1447# CONFIG_USB_EHCI_HCD_PPC_OF is not set 1491# CONFIG_USB_EHCI_HCD_PPC_OF is not set
1448# CONFIG_USB_OXU210HP_HCD is not set 1492# CONFIG_USB_OXU210HP_HCD is not set
@@ -1570,6 +1614,7 @@ CONFIG_RTC_INTF_DEV=y
1570# CONFIG_RTC_DRV_PCF8563 is not set 1614# CONFIG_RTC_DRV_PCF8563 is not set
1571# CONFIG_RTC_DRV_PCF8583 is not set 1615# CONFIG_RTC_DRV_PCF8583 is not set
1572# CONFIG_RTC_DRV_M41T80 is not set 1616# CONFIG_RTC_DRV_M41T80 is not set
1617# CONFIG_RTC_DRV_BQ32K is not set
1573# CONFIG_RTC_DRV_S35390A is not set 1618# CONFIG_RTC_DRV_S35390A is not set
1574# CONFIG_RTC_DRV_FM3130 is not set 1619# CONFIG_RTC_DRV_FM3130 is not set
1575CONFIG_RTC_DRV_RX8581=y 1620CONFIG_RTC_DRV_RX8581=y
@@ -1591,7 +1636,9 @@ CONFIG_RTC_DRV_RX8581=y
1591# CONFIG_RTC_DRV_M48T86 is not set 1636# CONFIG_RTC_DRV_M48T86 is not set
1592# CONFIG_RTC_DRV_M48T35 is not set 1637# CONFIG_RTC_DRV_M48T35 is not set
1593# CONFIG_RTC_DRV_M48T59 is not set 1638# CONFIG_RTC_DRV_M48T59 is not set
1639# CONFIG_RTC_DRV_MSM6242 is not set
1594# CONFIG_RTC_DRV_BQ4802 is not set 1640# CONFIG_RTC_DRV_BQ4802 is not set
1641# CONFIG_RTC_DRV_RP5C01 is not set
1595# CONFIG_RTC_DRV_V3020 is not set 1642# CONFIG_RTC_DRV_V3020 is not set
1596 1643
1597# 1644#
@@ -1891,9 +1938,12 @@ CONFIG_SECURITY=y
1891CONFIG_SECURITY_NETWORK=y 1938CONFIG_SECURITY_NETWORK=y
1892# CONFIG_SECURITY_NETWORK_XFRM is not set 1939# CONFIG_SECURITY_NETWORK_XFRM is not set
1893# CONFIG_SECURITY_PATH is not set 1940# CONFIG_SECURITY_PATH is not set
1894# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1895# CONFIG_SECURITY_ROOTPLUG is not set
1896# CONFIG_SECURITY_TOMOYO is not set 1941# CONFIG_SECURITY_TOMOYO is not set
1942# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1943# CONFIG_DEFAULT_SECURITY_SMACK is not set
1944# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1945CONFIG_DEFAULT_SECURITY_DAC=y
1946CONFIG_DEFAULT_SECURITY=""
1897CONFIG_CRYPTO=y 1947CONFIG_CRYPTO=y
1898 1948
1899# 1949#
diff --git a/arch/powerpc/configs/86xx/mpc8610_hpcd_defconfig b/arch/powerpc/configs/86xx/mpc8610_hpcd_defconfig
index de4d52504fe4..aab3baebab8c 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:45 2009 4# Wed Jan 6 09:24:39 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -37,6 +37,7 @@ CONFIG_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 38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
40CONFIG_NR_IRQS=512
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y 43CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -59,6 +60,8 @@ CONFIG_AUDIT_ARCH=y
59CONFIG_GENERIC_BUG=y 60CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y 61CONFIG_DTC=y
61CONFIG_DEFAULT_UIMAGE=y 62CONFIG_DEFAULT_UIMAGE=y
63CONFIG_ARCH_HIBERNATION_POSSIBLE=y
64CONFIG_ARCH_SUSPEND_POSSIBLE=y
62# CONFIG_PPC_DCR_NATIVE is not set 65# CONFIG_PPC_DCR_NATIVE is not set
63# CONFIG_PPC_DCR_MMIO is not set 66# CONFIG_PPC_DCR_MMIO is not set
64CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 67CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -86,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y
86# 89#
87CONFIG_TREE_RCU=y 90CONFIG_TREE_RCU=y
88# CONFIG_TREE_PREEMPT_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
92# CONFIG_TINY_RCU is not set
89# CONFIG_RCU_TRACE is not set 93# CONFIG_RCU_TRACE is not set
90CONFIG_RCU_FANOUT=32 94CONFIG_RCU_FANOUT=32
91# CONFIG_RCU_FANOUT_EXACT is not set 95# CONFIG_RCU_FANOUT_EXACT is not set
@@ -176,14 +180,41 @@ CONFIG_LBDAF=y
176# IO Schedulers 180# IO Schedulers
177# 181#
178CONFIG_IOSCHED_NOOP=y 182CONFIG_IOSCHED_NOOP=y
179# CONFIG_IOSCHED_AS is not set
180CONFIG_IOSCHED_DEADLINE=y 183CONFIG_IOSCHED_DEADLINE=y
181# CONFIG_IOSCHED_CFQ is not set 184# CONFIG_IOSCHED_CFQ is not set
182# CONFIG_DEFAULT_AS is not set
183CONFIG_DEFAULT_DEADLINE=y 185CONFIG_DEFAULT_DEADLINE=y
184# CONFIG_DEFAULT_CFQ is not set 186# CONFIG_DEFAULT_CFQ is not set
185# CONFIG_DEFAULT_NOOP is not set 187# CONFIG_DEFAULT_NOOP is not set
186CONFIG_DEFAULT_IOSCHED="deadline" 188CONFIG_DEFAULT_IOSCHED="deadline"
189# CONFIG_INLINE_SPIN_TRYLOCK is not set
190# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
191# CONFIG_INLINE_SPIN_LOCK is not set
192# CONFIG_INLINE_SPIN_LOCK_BH is not set
193# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
194# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
195CONFIG_INLINE_SPIN_UNLOCK=y
196# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
197CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
198# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
199# CONFIG_INLINE_READ_TRYLOCK is not set
200# CONFIG_INLINE_READ_LOCK is not set
201# CONFIG_INLINE_READ_LOCK_BH is not set
202# CONFIG_INLINE_READ_LOCK_IRQ is not set
203# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
204CONFIG_INLINE_READ_UNLOCK=y
205# CONFIG_INLINE_READ_UNLOCK_BH is not set
206CONFIG_INLINE_READ_UNLOCK_IRQ=y
207# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
208# CONFIG_INLINE_WRITE_TRYLOCK is not set
209# CONFIG_INLINE_WRITE_LOCK is not set
210# CONFIG_INLINE_WRITE_LOCK_BH is not set
211# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
212# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
213CONFIG_INLINE_WRITE_UNLOCK=y
214# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
215CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
216# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
217# CONFIG_MUTEX_SPIN_ON_OWNER is not set
187# CONFIG_FREEZER is not set 218# CONFIG_FREEZER is not set
188 219
189# 220#
@@ -254,6 +285,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
254CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 285CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
255# CONFIG_KEXEC is not set 286# CONFIG_KEXEC is not set
256# CONFIG_CRASH_DUMP is not set 287# CONFIG_CRASH_DUMP is not set
288CONFIG_SPARSE_IRQ=y
257CONFIG_MAX_ACTIVE_REGIONS=32 289CONFIG_MAX_ACTIVE_REGIONS=32
258CONFIG_ARCH_FLATMEM_ENABLE=y 290CONFIG_ARCH_FLATMEM_ENABLE=y
259CONFIG_ARCH_POPULATES_NODE_MAP=y 291CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -270,8 +302,6 @@ CONFIG_MIGRATION=y
270CONFIG_ZONE_DMA_FLAG=1 302CONFIG_ZONE_DMA_FLAG=1
271CONFIG_BOUNCE=y 303CONFIG_BOUNCE=y
272CONFIG_VIRT_TO_BUS=y 304CONFIG_VIRT_TO_BUS=y
273CONFIG_HAVE_MLOCK=y
274CONFIG_HAVE_MLOCKED_PAGE_BIT=y
275# CONFIG_KSM is not set 305# CONFIG_KSM is not set
276CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 306CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
277CONFIG_PPC_4K_PAGES=y 307CONFIG_PPC_4K_PAGES=y
@@ -382,6 +412,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y
382CONFIG_INET6_XFRM_MODE_BEET=y 412CONFIG_INET6_XFRM_MODE_BEET=y
383# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 413# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
384CONFIG_IPV6_SIT=y 414CONFIG_IPV6_SIT=y
415# CONFIG_IPV6_SIT_6RD is not set
385CONFIG_IPV6_NDISC_NODETYPE=y 416CONFIG_IPV6_NDISC_NODETYPE=y
386# CONFIG_IPV6_TUNNEL is not set 417# CONFIG_IPV6_TUNNEL is not set
387# CONFIG_IPV6_MULTIPLE_TABLES is not set 418# CONFIG_IPV6_MULTIPLE_TABLES is not set
@@ -420,9 +451,6 @@ CONFIG_IPV6_NDISC_NODETYPE=y
420# CONFIG_AF_RXRPC is not set 451# CONFIG_AF_RXRPC is not set
421CONFIG_WIRELESS=y 452CONFIG_WIRELESS=y
422# CONFIG_CFG80211 is not set 453# CONFIG_CFG80211 is not set
423CONFIG_CFG80211_DEFAULT_PS_VALUE=0
424CONFIG_WIRELESS_OLD_REGULATORY=y
425# CONFIG_WIRELESS_EXT is not set
426# CONFIG_LIB80211 is not set 454# CONFIG_LIB80211 is not set
427 455
428# 456#
@@ -555,6 +583,10 @@ CONFIG_BLK_DEV=y
555# CONFIG_BLK_DEV_COW_COMMON is not set 583# CONFIG_BLK_DEV_COW_COMMON is not set
556CONFIG_BLK_DEV_LOOP=y 584CONFIG_BLK_DEV_LOOP=y
557# CONFIG_BLK_DEV_CRYPTOLOOP is not set 585# CONFIG_BLK_DEV_CRYPTOLOOP is not set
586
587#
588# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
589#
558# CONFIG_BLK_DEV_NBD is not set 590# CONFIG_BLK_DEV_NBD is not set
559# CONFIG_BLK_DEV_SX8 is not set 591# CONFIG_BLK_DEV_SX8 is not set
560CONFIG_BLK_DEV_RAM=y 592CONFIG_BLK_DEV_RAM=y
@@ -565,6 +597,7 @@ CONFIG_BLK_DEV_RAM_SIZE=131072
565# CONFIG_ATA_OVER_ETH is not set 597# CONFIG_ATA_OVER_ETH is not set
566# CONFIG_BLK_DEV_HD is not set 598# CONFIG_BLK_DEV_HD is not set
567CONFIG_MISC_DEVICES=y 599CONFIG_MISC_DEVICES=y
600# CONFIG_AD525X_DPOT is not set
568# CONFIG_PHANTOM is not set 601# CONFIG_PHANTOM is not set
569# CONFIG_SGI_IOC4 is not set 602# CONFIG_SGI_IOC4 is not set
570# CONFIG_TIFM_CORE is not set 603# CONFIG_TIFM_CORE is not set
@@ -572,6 +605,7 @@ CONFIG_MISC_DEVICES=y
572# CONFIG_ENCLOSURE_SERVICES is not set 605# CONFIG_ENCLOSURE_SERVICES is not set
573# CONFIG_HP_ILO is not set 606# CONFIG_HP_ILO is not set
574# CONFIG_ISL29003 is not set 607# CONFIG_ISL29003 is not set
608# CONFIG_DS1682 is not set
575# CONFIG_C2PORT is not set 609# CONFIG_C2PORT is not set
576 610
577# 611#
@@ -671,7 +705,9 @@ CONFIG_SCSI_LOWLEVEL=y
671# CONFIG_SCSI_BNX2_ISCSI is not set 705# CONFIG_SCSI_BNX2_ISCSI is not set
672# CONFIG_BE2ISCSI is not set 706# CONFIG_BE2ISCSI is not set
673# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 707# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
708# CONFIG_SCSI_HPSA is not set
674# CONFIG_SCSI_3W_9XXX is not set 709# CONFIG_SCSI_3W_9XXX is not set
710# CONFIG_SCSI_3W_SAS is not set
675# CONFIG_SCSI_ACARD is not set 711# CONFIG_SCSI_ACARD is not set
676# CONFIG_SCSI_AACRAID is not set 712# CONFIG_SCSI_AACRAID is not set
677# CONFIG_SCSI_AIC7XXX is not set 713# CONFIG_SCSI_AIC7XXX is not set
@@ -710,6 +746,7 @@ CONFIG_SCSI_LOWLEVEL=y
710# CONFIG_SCSI_NSP32 is not set 746# CONFIG_SCSI_NSP32 is not set
711# CONFIG_SCSI_DEBUG is not set 747# CONFIG_SCSI_DEBUG is not set
712# CONFIG_SCSI_PMCRAID is not set 748# CONFIG_SCSI_PMCRAID is not set
749# CONFIG_SCSI_PM8001 is not set
713# CONFIG_SCSI_SRP is not set 750# CONFIG_SCSI_SRP is not set
714# CONFIG_SCSI_BFA_FC is not set 751# CONFIG_SCSI_BFA_FC is not set
715# CONFIG_SCSI_DH is not set 752# CONFIG_SCSI_DH is not set
@@ -765,15 +802,16 @@ CONFIG_PATA_ALI=y
765# CONFIG_PATA_NS87415 is not set 802# CONFIG_PATA_NS87415 is not set
766# CONFIG_PATA_OPTI is not set 803# CONFIG_PATA_OPTI is not set
767# CONFIG_PATA_OPTIDMA is not set 804# CONFIG_PATA_OPTIDMA is not set
805# CONFIG_PATA_PDC2027X is not set
768# CONFIG_PATA_PDC_OLD is not set 806# CONFIG_PATA_PDC_OLD is not set
769# CONFIG_PATA_RADISYS is not set 807# CONFIG_PATA_RADISYS is not set
770# CONFIG_PATA_RDC is not set 808# CONFIG_PATA_RDC is not set
771# CONFIG_PATA_RZ1000 is not set 809# CONFIG_PATA_RZ1000 is not set
772# CONFIG_PATA_SC1200 is not set 810# CONFIG_PATA_SC1200 is not set
773# CONFIG_PATA_SERVERWORKS is not set 811# CONFIG_PATA_SERVERWORKS is not set
774# CONFIG_PATA_PDC2027X is not set
775# CONFIG_PATA_SIL680 is not set 812# CONFIG_PATA_SIL680 is not set
776# CONFIG_PATA_SIS is not set 813# CONFIG_PATA_SIS is not set
814# CONFIG_PATA_TOSHIBA is not set
777# CONFIG_PATA_VIA is not set 815# CONFIG_PATA_VIA is not set
778# CONFIG_PATA_WINBOND is not set 816# CONFIG_PATA_WINBOND is not set
779# CONFIG_PATA_PLATFORM is not set 817# CONFIG_PATA_PLATFORM is not set
@@ -790,7 +828,7 @@ CONFIG_PATA_ALI=y
790# 828#
791 829
792# 830#
793# See the help texts for more information. 831# The newer stack is recommended.
794# 832#
795# CONFIG_FIREWIRE is not set 833# CONFIG_FIREWIRE is not set
796# CONFIG_IEEE1394 is not set 834# CONFIG_IEEE1394 is not set
@@ -838,8 +876,10 @@ CONFIG_ULI526X=y
838# CONFIG_NETDEV_10000 is not set 876# CONFIG_NETDEV_10000 is not set
839# CONFIG_TR is not set 877# CONFIG_TR is not set
840CONFIG_WLAN=y 878CONFIG_WLAN=y
841# CONFIG_WLAN_PRE80211 is not set 879# CONFIG_AIRO is not set
842# CONFIG_WLAN_80211 is not set 880# CONFIG_ATMEL is not set
881# CONFIG_PRISM54 is not set
882# CONFIG_HOSTAP is not set
843 883
844# 884#
845# Enable WiMAX (Networking options) to see the WiMAX drivers 885# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -853,6 +893,7 @@ CONFIG_WLAN=y
853# CONFIG_NETCONSOLE is not set 893# CONFIG_NETCONSOLE is not set
854# CONFIG_NETPOLL is not set 894# CONFIG_NETPOLL is not set
855# CONFIG_NET_POLL_CONTROLLER is not set 895# CONFIG_NET_POLL_CONTROLLER is not set
896# CONFIG_VMXNET3 is not set
856# CONFIG_ISDN is not set 897# CONFIG_ISDN is not set
857# CONFIG_PHONE is not set 898# CONFIG_PHONE is not set
858 899
@@ -862,6 +903,7 @@ CONFIG_WLAN=y
862CONFIG_INPUT=y 903CONFIG_INPUT=y
863# CONFIG_INPUT_FF_MEMLESS is not set 904# CONFIG_INPUT_FF_MEMLESS is not set
864# CONFIG_INPUT_POLLDEV is not set 905# CONFIG_INPUT_POLLDEV is not set
906# CONFIG_INPUT_SPARSEKMAP is not set
865 907
866# 908#
867# Userland interfaces 909# Userland interfaces
@@ -891,6 +933,7 @@ CONFIG_SERIO_SERPORT=y
891CONFIG_SERIO_LIBPS2=y 933CONFIG_SERIO_LIBPS2=y
892# CONFIG_SERIO_RAW is not set 934# CONFIG_SERIO_RAW is not set
893# CONFIG_SERIO_XILINX_XPS_PS2 is not set 935# CONFIG_SERIO_XILINX_XPS_PS2 is not set
936# CONFIG_SERIO_ALTERA_PS2 is not set
894# CONFIG_GAMEPORT is not set 937# CONFIG_GAMEPORT is not set
895 938
896# 939#
@@ -927,6 +970,7 @@ CONFIG_SERIAL_CORE=y
927CONFIG_SERIAL_CORE_CONSOLE=y 970CONFIG_SERIAL_CORE_CONSOLE=y
928# CONFIG_SERIAL_JSM is not set 971# CONFIG_SERIAL_JSM is not set
929# CONFIG_SERIAL_OF_PLATFORM is not set 972# CONFIG_SERIAL_OF_PLATFORM is not set
973# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
930CONFIG_UNIX98_PTYS=y 974CONFIG_UNIX98_PTYS=y
931# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 975# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
932# CONFIG_LEGACY_PTYS is not set 976# CONFIG_LEGACY_PTYS is not set
@@ -981,11 +1025,6 @@ CONFIG_I2C_MPC=y
981# CONFIG_I2C_TAOS_EVM is not set 1025# CONFIG_I2C_TAOS_EVM is not set
982 1026
983# 1027#
984# Graphics adapter I2C/DDC channel drivers
985#
986# CONFIG_I2C_VOODOO3 is not set
987
988#
989# Other I2C/SMBus bus drivers 1028# Other I2C/SMBus bus drivers
990# 1029#
991# CONFIG_I2C_PCA_PLATFORM is not set 1030# CONFIG_I2C_PCA_PLATFORM is not set
@@ -994,7 +1033,6 @@ CONFIG_I2C_MPC=y
994# 1033#
995# Miscellaneous I2C Chip support 1034# Miscellaneous I2C Chip support
996# 1035#
997# CONFIG_DS1682 is not set
998# CONFIG_SENSORS_TSL2550 is not set 1036# CONFIG_SENSORS_TSL2550 is not set
999# CONFIG_I2C_DEBUG_CORE is not set 1037# CONFIG_I2C_DEBUG_CORE is not set
1000# CONFIG_I2C_DEBUG_ALGO is not set 1038# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1029,11 +1067,13 @@ CONFIG_SSB_POSSIBLE=y
1029# CONFIG_TWL4030_CORE is not set 1067# CONFIG_TWL4030_CORE is not set
1030# CONFIG_MFD_TMIO is not set 1068# CONFIG_MFD_TMIO is not set
1031# CONFIG_PMIC_DA903X is not set 1069# CONFIG_PMIC_DA903X is not set
1070# CONFIG_PMIC_ADP5520 is not set
1032# CONFIG_MFD_WM8400 is not set 1071# CONFIG_MFD_WM8400 is not set
1033# CONFIG_MFD_WM831X is not set 1072# CONFIG_MFD_WM831X is not set
1034# CONFIG_MFD_WM8350_I2C is not set 1073# CONFIG_MFD_WM8350_I2C is not set
1035# CONFIG_MFD_PCF50633 is not set 1074# CONFIG_MFD_PCF50633 is not set
1036# CONFIG_AB3100_CORE is not set 1075# CONFIG_AB3100_CORE is not set
1076# CONFIG_MFD_88PM8607 is not set
1037# CONFIG_REGULATOR is not set 1077# CONFIG_REGULATOR is not set
1038# CONFIG_MEDIA_SUPPORT is not set 1078# CONFIG_MEDIA_SUPPORT is not set
1039 1079
@@ -1163,6 +1203,7 @@ CONFIG_SND_PCI=y
1163# CONFIG_SND_CS4281 is not set 1203# CONFIG_SND_CS4281 is not set
1164# CONFIG_SND_CS46XX is not set 1204# CONFIG_SND_CS46XX is not set
1165# CONFIG_SND_CS5530 is not set 1205# CONFIG_SND_CS5530 is not set
1206# CONFIG_SND_CS5535AUDIO is not set
1166# CONFIG_SND_CTXFI is not set 1207# CONFIG_SND_CTXFI is not set
1167# CONFIG_SND_DARLA20 is not set 1208# CONFIG_SND_DARLA20 is not set
1168# CONFIG_SND_GINA20 is not set 1209# CONFIG_SND_GINA20 is not set
@@ -1282,6 +1323,7 @@ CONFIG_RTC_INTF_DEV=y
1282# CONFIG_RTC_DRV_PCF8563 is not set 1323# CONFIG_RTC_DRV_PCF8563 is not set
1283# CONFIG_RTC_DRV_PCF8583 is not set 1324# CONFIG_RTC_DRV_PCF8583 is not set
1284# CONFIG_RTC_DRV_M41T80 is not set 1325# CONFIG_RTC_DRV_M41T80 is not set
1326# CONFIG_RTC_DRV_BQ32K is not set
1285# CONFIG_RTC_DRV_S35390A is not set 1327# CONFIG_RTC_DRV_S35390A is not set
1286# CONFIG_RTC_DRV_FM3130 is not set 1328# CONFIG_RTC_DRV_FM3130 is not set
1287# CONFIG_RTC_DRV_RX8581 is not set 1329# CONFIG_RTC_DRV_RX8581 is not set
@@ -1303,7 +1345,9 @@ CONFIG_RTC_DRV_CMOS=y
1303# CONFIG_RTC_DRV_M48T86 is not set 1345# CONFIG_RTC_DRV_M48T86 is not set
1304# CONFIG_RTC_DRV_M48T35 is not set 1346# CONFIG_RTC_DRV_M48T35 is not set
1305# CONFIG_RTC_DRV_M48T59 is not set 1347# CONFIG_RTC_DRV_M48T59 is not set
1348# CONFIG_RTC_DRV_MSM6242 is not set
1306# CONFIG_RTC_DRV_BQ4802 is not set 1349# CONFIG_RTC_DRV_BQ4802 is not set
1350# CONFIG_RTC_DRV_RP5C01 is not set
1307# CONFIG_RTC_DRV_V3020 is not set 1351# CONFIG_RTC_DRV_V3020 is not set
1308 1352
1309# 1353#
@@ -1606,7 +1650,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1606# CONFIG_KEYS is not set 1650# CONFIG_KEYS is not set
1607# CONFIG_SECURITY is not set 1651# CONFIG_SECURITY is not set
1608# CONFIG_SECURITYFS is not set 1652# CONFIG_SECURITYFS is not set
1609# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1653# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1654# CONFIG_DEFAULT_SECURITY_SMACK is not set
1655# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1656CONFIG_DEFAULT_SECURITY_DAC=y
1657CONFIG_DEFAULT_SECURITY=""
1610CONFIG_CRYPTO=y 1658CONFIG_CRYPTO=y
1611 1659
1612# 1660#
diff --git a/arch/powerpc/configs/86xx/mpc8641_hpcn_defconfig b/arch/powerpc/configs/86xx/mpc8641_hpcn_defconfig
index 754a79ba74a9..727a8c8d15b5 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:46 2009 4# Wed Jan 6 09:24:40 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -38,6 +38,7 @@ CONFIG_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 39# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
40CONFIG_IRQ_PER_CPU=y 40CONFIG_IRQ_PER_CPU=y
41CONFIG_NR_IRQS=512
41CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
42CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
43CONFIG_TRACE_IRQFLAGS_SUPPORT=y 44CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -60,6 +61,8 @@ CONFIG_AUDIT_ARCH=y
60CONFIG_GENERIC_BUG=y 61CONFIG_GENERIC_BUG=y
61CONFIG_DTC=y 62CONFIG_DTC=y
62CONFIG_DEFAULT_UIMAGE=y 63CONFIG_DEFAULT_UIMAGE=y
64CONFIG_ARCH_HIBERNATION_POSSIBLE=y
65CONFIG_ARCH_SUSPEND_POSSIBLE=y
63# CONFIG_PPC_DCR_NATIVE is not set 66# CONFIG_PPC_DCR_NATIVE is not set
64# CONFIG_PPC_DCR_MMIO is not set 67# CONFIG_PPC_DCR_MMIO is not set
65CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 68CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -90,6 +93,7 @@ CONFIG_AUDIT=y
90# 93#
91CONFIG_TREE_RCU=y 94CONFIG_TREE_RCU=y
92# CONFIG_TREE_PREEMPT_RCU is not set 95# CONFIG_TREE_PREEMPT_RCU is not set
96# CONFIG_TINY_RCU is not set
93# CONFIG_RCU_TRACE is not set 97# CONFIG_RCU_TRACE is not set
94CONFIG_RCU_FANOUT=32 98CONFIG_RCU_FANOUT=32
95# CONFIG_RCU_FANOUT_EXACT is not set 99# CONFIG_RCU_FANOUT_EXACT is not set
@@ -182,14 +186,41 @@ CONFIG_LBDAF=y
182# IO Schedulers 186# IO Schedulers
183# 187#
184CONFIG_IOSCHED_NOOP=y 188CONFIG_IOSCHED_NOOP=y
185CONFIG_IOSCHED_AS=y
186CONFIG_IOSCHED_DEADLINE=y 189CONFIG_IOSCHED_DEADLINE=y
187CONFIG_IOSCHED_CFQ=y 190CONFIG_IOSCHED_CFQ=y
188# CONFIG_DEFAULT_AS is not set
189# CONFIG_DEFAULT_DEADLINE is not set 191# CONFIG_DEFAULT_DEADLINE is not set
190CONFIG_DEFAULT_CFQ=y 192CONFIG_DEFAULT_CFQ=y
191# CONFIG_DEFAULT_NOOP is not set 193# CONFIG_DEFAULT_NOOP is not set
192CONFIG_DEFAULT_IOSCHED="cfq" 194CONFIG_DEFAULT_IOSCHED="cfq"
195# CONFIG_INLINE_SPIN_TRYLOCK is not set
196# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
197# CONFIG_INLINE_SPIN_LOCK is not set
198# CONFIG_INLINE_SPIN_LOCK_BH is not set
199# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
200# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
201CONFIG_INLINE_SPIN_UNLOCK=y
202# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
203CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
204# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
205# CONFIG_INLINE_READ_TRYLOCK is not set
206# CONFIG_INLINE_READ_LOCK is not set
207# CONFIG_INLINE_READ_LOCK_BH is not set
208# CONFIG_INLINE_READ_LOCK_IRQ is not set
209# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
210CONFIG_INLINE_READ_UNLOCK=y
211# CONFIG_INLINE_READ_UNLOCK_BH is not set
212CONFIG_INLINE_READ_UNLOCK_IRQ=y
213# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
214# CONFIG_INLINE_WRITE_TRYLOCK is not set
215# CONFIG_INLINE_WRITE_LOCK is not set
216# CONFIG_INLINE_WRITE_LOCK_BH is not set
217# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
218# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
219CONFIG_INLINE_WRITE_UNLOCK=y
220# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
221CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
222# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
223CONFIG_MUTEX_SPIN_ON_OWNER=y
193# CONFIG_FREEZER is not set 224# CONFIG_FREEZER is not set
194 225
195# 226#
@@ -260,6 +291,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
260# CONFIG_KEXEC is not set 291# CONFIG_KEXEC is not set
261# CONFIG_CRASH_DUMP is not set 292# CONFIG_CRASH_DUMP is not set
262# CONFIG_IRQ_ALL_CPUS is not set 293# CONFIG_IRQ_ALL_CPUS is not set
294CONFIG_SPARSE_IRQ=y
263CONFIG_MAX_ACTIVE_REGIONS=32 295CONFIG_MAX_ACTIVE_REGIONS=32
264CONFIG_ARCH_FLATMEM_ENABLE=y 296CONFIG_ARCH_FLATMEM_ENABLE=y
265CONFIG_ARCH_POPULATES_NODE_MAP=y 297CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -276,8 +308,6 @@ CONFIG_MIGRATION=y
276CONFIG_ZONE_DMA_FLAG=1 308CONFIG_ZONE_DMA_FLAG=1
277CONFIG_BOUNCE=y 309CONFIG_BOUNCE=y
278CONFIG_VIRT_TO_BUS=y 310CONFIG_VIRT_TO_BUS=y
279CONFIG_HAVE_MLOCK=y
280CONFIG_HAVE_MLOCKED_PAGE_BIT=y
281# CONFIG_KSM is not set 311# CONFIG_KSM is not set
282CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 312CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
283CONFIG_PPC_4K_PAGES=y 313CONFIG_PPC_4K_PAGES=y
@@ -395,6 +425,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y
395CONFIG_INET6_XFRM_MODE_BEET=y 425CONFIG_INET6_XFRM_MODE_BEET=y
396# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 426# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
397CONFIG_IPV6_SIT=y 427CONFIG_IPV6_SIT=y
428# CONFIG_IPV6_SIT_6RD is not set
398CONFIG_IPV6_NDISC_NODETYPE=y 429CONFIG_IPV6_NDISC_NODETYPE=y
399# CONFIG_IPV6_TUNNEL is not set 430# CONFIG_IPV6_TUNNEL is not set
400# CONFIG_IPV6_MULTIPLE_TABLES is not set 431# CONFIG_IPV6_MULTIPLE_TABLES is not set
@@ -439,9 +470,6 @@ CONFIG_SCTP_HMAC_MD5=y
439CONFIG_FIB_RULES=y 470CONFIG_FIB_RULES=y
440CONFIG_WIRELESS=y 471CONFIG_WIRELESS=y
441# CONFIG_CFG80211 is not set 472# CONFIG_CFG80211 is not set
442CONFIG_CFG80211_DEFAULT_PS_VALUE=0
443CONFIG_WIRELESS_OLD_REGULATORY=y
444# CONFIG_WIRELESS_EXT is not set
445# CONFIG_LIB80211 is not set 473# CONFIG_LIB80211 is not set
446 474
447# 475#
@@ -483,6 +511,10 @@ CONFIG_BLK_DEV=y
483# CONFIG_BLK_DEV_COW_COMMON is not set 511# CONFIG_BLK_DEV_COW_COMMON is not set
484CONFIG_BLK_DEV_LOOP=y 512CONFIG_BLK_DEV_LOOP=y
485# CONFIG_BLK_DEV_CRYPTOLOOP is not set 513# CONFIG_BLK_DEV_CRYPTOLOOP is not set
514
515#
516# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
517#
486CONFIG_BLK_DEV_NBD=y 518CONFIG_BLK_DEV_NBD=y
487# CONFIG_BLK_DEV_SX8 is not set 519# CONFIG_BLK_DEV_SX8 is not set
488# CONFIG_BLK_DEV_UB is not set 520# CONFIG_BLK_DEV_UB is not set
@@ -494,6 +526,7 @@ CONFIG_BLK_DEV_RAM_SIZE=131072
494# CONFIG_ATA_OVER_ETH is not set 526# CONFIG_ATA_OVER_ETH is not set
495# CONFIG_BLK_DEV_HD is not set 527# CONFIG_BLK_DEV_HD is not set
496CONFIG_MISC_DEVICES=y 528CONFIG_MISC_DEVICES=y
529# CONFIG_AD525X_DPOT is not set
497# CONFIG_PHANTOM is not set 530# CONFIG_PHANTOM is not set
498# CONFIG_SGI_IOC4 is not set 531# CONFIG_SGI_IOC4 is not set
499# CONFIG_TIFM_CORE is not set 532# CONFIG_TIFM_CORE is not set
@@ -501,6 +534,7 @@ CONFIG_MISC_DEVICES=y
501# CONFIG_ENCLOSURE_SERVICES is not set 534# CONFIG_ENCLOSURE_SERVICES is not set
502# CONFIG_HP_ILO is not set 535# CONFIG_HP_ILO is not set
503# CONFIG_ISL29003 is not set 536# CONFIG_ISL29003 is not set
537# CONFIG_DS1682 is not set
504# CONFIG_C2PORT is not set 538# CONFIG_C2PORT is not set
505 539
506# 540#
@@ -554,7 +588,9 @@ CONFIG_SCSI_LOWLEVEL=y
554# CONFIG_SCSI_BNX2_ISCSI is not set 588# CONFIG_SCSI_BNX2_ISCSI is not set
555# CONFIG_BE2ISCSI is not set 589# CONFIG_BE2ISCSI is not set
556# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 590# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
591# CONFIG_SCSI_HPSA is not set
557# CONFIG_SCSI_3W_9XXX is not set 592# CONFIG_SCSI_3W_9XXX is not set
593# CONFIG_SCSI_3W_SAS is not set
558# CONFIG_SCSI_ACARD is not set 594# CONFIG_SCSI_ACARD is not set
559# CONFIG_SCSI_AACRAID is not set 595# CONFIG_SCSI_AACRAID is not set
560# CONFIG_SCSI_AIC7XXX is not set 596# CONFIG_SCSI_AIC7XXX is not set
@@ -593,6 +629,7 @@ CONFIG_SCSI_LOWLEVEL=y
593# CONFIG_SCSI_NSP32 is not set 629# CONFIG_SCSI_NSP32 is not set
594# CONFIG_SCSI_DEBUG is not set 630# CONFIG_SCSI_DEBUG is not set
595# CONFIG_SCSI_PMCRAID is not set 631# CONFIG_SCSI_PMCRAID is not set
632# CONFIG_SCSI_PM8001 is not set
596# CONFIG_SCSI_SRP is not set 633# CONFIG_SCSI_SRP is not set
597# CONFIG_SCSI_BFA_FC is not set 634# CONFIG_SCSI_BFA_FC is not set
598# CONFIG_SCSI_DH is not set 635# CONFIG_SCSI_DH is not set
@@ -648,15 +685,16 @@ CONFIG_PATA_ALI=y
648# CONFIG_PATA_NS87415 is not set 685# CONFIG_PATA_NS87415 is not set
649# CONFIG_PATA_OPTI is not set 686# CONFIG_PATA_OPTI is not set
650# CONFIG_PATA_OPTIDMA is not set 687# CONFIG_PATA_OPTIDMA is not set
688# CONFIG_PATA_PDC2027X is not set
651# CONFIG_PATA_PDC_OLD is not set 689# CONFIG_PATA_PDC_OLD is not set
652# CONFIG_PATA_RADISYS is not set 690# CONFIG_PATA_RADISYS is not set
653# CONFIG_PATA_RDC is not set 691# CONFIG_PATA_RDC is not set
654# CONFIG_PATA_RZ1000 is not set 692# CONFIG_PATA_RZ1000 is not set
655# CONFIG_PATA_SC1200 is not set 693# CONFIG_PATA_SC1200 is not set
656# CONFIG_PATA_SERVERWORKS is not set 694# CONFIG_PATA_SERVERWORKS is not set
657# CONFIG_PATA_PDC2027X is not set
658# CONFIG_PATA_SIL680 is not set 695# CONFIG_PATA_SIL680 is not set
659# CONFIG_PATA_SIS is not set 696# CONFIG_PATA_SIS is not set
697# CONFIG_PATA_TOSHIBA is not set
660# CONFIG_PATA_VIA is not set 698# CONFIG_PATA_VIA is not set
661# CONFIG_PATA_WINBOND is not set 699# CONFIG_PATA_WINBOND is not set
662# CONFIG_PATA_PLATFORM is not set 700# CONFIG_PATA_PLATFORM is not set
@@ -673,7 +711,7 @@ CONFIG_PATA_ALI=y
673# 711#
674 712
675# 713#
676# See the help texts for more information. 714# The newer stack is recommended.
677# 715#
678# CONFIG_FIREWIRE is not set 716# CONFIG_FIREWIRE is not set
679# CONFIG_IEEE1394 is not set 717# CONFIG_IEEE1394 is not set
@@ -778,8 +816,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y
778# CONFIG_BE2NET is not set 816# CONFIG_BE2NET is not set
779# CONFIG_TR is not set 817# CONFIG_TR is not set
780CONFIG_WLAN=y 818CONFIG_WLAN=y
781# CONFIG_WLAN_PRE80211 is not set 819# CONFIG_AIRO is not set
782# CONFIG_WLAN_80211 is not set 820# CONFIG_ATMEL is not set
821# CONFIG_PRISM54 is not set
822# CONFIG_USB_ZD1201 is not set
823# CONFIG_HOSTAP is not set
783 824
784# 825#
785# Enable WiMAX (Networking options) to see the WiMAX drivers 826# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -802,6 +843,7 @@ CONFIG_WLAN=y
802# CONFIG_NETCONSOLE is not set 843# CONFIG_NETCONSOLE is not set
803# CONFIG_NETPOLL is not set 844# CONFIG_NETPOLL is not set
804# CONFIG_NET_POLL_CONTROLLER is not set 845# CONFIG_NET_POLL_CONTROLLER is not set
846# CONFIG_VMXNET3 is not set
805# CONFIG_ISDN is not set 847# CONFIG_ISDN is not set
806# CONFIG_PHONE is not set 848# CONFIG_PHONE is not set
807 849
@@ -811,6 +853,7 @@ CONFIG_WLAN=y
811CONFIG_INPUT=y 853CONFIG_INPUT=y
812CONFIG_INPUT_FF_MEMLESS=m 854CONFIG_INPUT_FF_MEMLESS=m
813# CONFIG_INPUT_POLLDEV is not set 855# CONFIG_INPUT_POLLDEV is not set
856# CONFIG_INPUT_SPARSEKMAP is not set
814 857
815# 858#
816# Userland interfaces 859# Userland interfaces
@@ -840,6 +883,7 @@ CONFIG_SERIO_SERPORT=y
840CONFIG_SERIO_LIBPS2=y 883CONFIG_SERIO_LIBPS2=y
841# CONFIG_SERIO_RAW is not set 884# CONFIG_SERIO_RAW is not set
842# CONFIG_SERIO_XILINX_XPS_PS2 is not set 885# CONFIG_SERIO_XILINX_XPS_PS2 is not set
886# CONFIG_SERIO_ALTERA_PS2 is not set
843# CONFIG_GAMEPORT is not set 887# CONFIG_GAMEPORT is not set
844 888
845# 889#
@@ -876,6 +920,7 @@ CONFIG_SERIAL_CORE=y
876CONFIG_SERIAL_CORE_CONSOLE=y 920CONFIG_SERIAL_CORE_CONSOLE=y
877# CONFIG_SERIAL_JSM is not set 921# CONFIG_SERIAL_JSM is not set
878# CONFIG_SERIAL_OF_PLATFORM is not set 922# CONFIG_SERIAL_OF_PLATFORM is not set
923# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
879CONFIG_UNIX98_PTYS=y 924CONFIG_UNIX98_PTYS=y
880# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 925# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
881CONFIG_LEGACY_PTYS=y 926CONFIG_LEGACY_PTYS=y
@@ -932,11 +977,6 @@ CONFIG_I2C_MPC=y
932# CONFIG_I2C_TINY_USB is not set 977# CONFIG_I2C_TINY_USB is not set
933 978
934# 979#
935# Graphics adapter I2C/DDC channel drivers
936#
937# CONFIG_I2C_VOODOO3 is not set
938
939#
940# Other I2C/SMBus bus drivers 980# Other I2C/SMBus bus drivers
941# 981#
942# CONFIG_I2C_PCA_PLATFORM is not set 982# CONFIG_I2C_PCA_PLATFORM is not set
@@ -945,7 +985,6 @@ CONFIG_I2C_MPC=y
945# 985#
946# Miscellaneous I2C Chip support 986# Miscellaneous I2C Chip support
947# 987#
948# CONFIG_DS1682 is not set
949# CONFIG_SENSORS_TSL2550 is not set 988# CONFIG_SENSORS_TSL2550 is not set
950# CONFIG_I2C_DEBUG_CORE is not set 989# CONFIG_I2C_DEBUG_CORE is not set
951# CONFIG_I2C_DEBUG_ALGO is not set 990# CONFIG_I2C_DEBUG_ALGO is not set
@@ -980,11 +1019,13 @@ CONFIG_SSB_POSSIBLE=y
980# CONFIG_TWL4030_CORE is not set 1019# CONFIG_TWL4030_CORE is not set
981# CONFIG_MFD_TMIO is not set 1020# CONFIG_MFD_TMIO is not set
982# CONFIG_PMIC_DA903X is not set 1021# CONFIG_PMIC_DA903X is not set
1022# CONFIG_PMIC_ADP5520 is not set
983# CONFIG_MFD_WM8400 is not set 1023# CONFIG_MFD_WM8400 is not set
984# CONFIG_MFD_WM831X is not set 1024# CONFIG_MFD_WM831X is not set
985# CONFIG_MFD_WM8350_I2C is not set 1025# CONFIG_MFD_WM8350_I2C is not set
986# CONFIG_MFD_PCF50633 is not set 1026# CONFIG_MFD_PCF50633 is not set
987# CONFIG_AB3100_CORE is not set 1027# CONFIG_AB3100_CORE is not set
1028# CONFIG_MFD_88PM8607 is not set
988# CONFIG_REGULATOR is not set 1029# CONFIG_REGULATOR is not set
989# CONFIG_MEDIA_SUPPORT is not set 1030# CONFIG_MEDIA_SUPPORT is not set
990 1031
@@ -1059,6 +1100,7 @@ CONFIG_SND_PCI=y
1059# CONFIG_SND_CS4281 is not set 1100# CONFIG_SND_CS4281 is not set
1060# CONFIG_SND_CS46XX is not set 1101# CONFIG_SND_CS46XX is not set
1061# CONFIG_SND_CS5530 is not set 1102# CONFIG_SND_CS5530 is not set
1103# CONFIG_SND_CS5535AUDIO is not set
1062# CONFIG_SND_CTXFI is not set 1104# CONFIG_SND_CTXFI is not set
1063# CONFIG_SND_DARLA20 is not set 1105# CONFIG_SND_DARLA20 is not set
1064# CONFIG_SND_GINA20 is not set 1106# CONFIG_SND_GINA20 is not set
@@ -1186,6 +1228,7 @@ CONFIG_USB_MON=y
1186CONFIG_USB_EHCI_HCD=y 1228CONFIG_USB_EHCI_HCD=y
1187# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1229# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1188# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1230# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1231# CONFIG_XPS_USB_HCD_XILINX is not set
1189# CONFIG_USB_EHCI_FSL is not set 1232# CONFIG_USB_EHCI_FSL is not set
1190CONFIG_USB_EHCI_HCD_PPC_OF=y 1233CONFIG_USB_EHCI_HCD_PPC_OF=y
1191# CONFIG_USB_OXU210HP_HCD is not set 1234# CONFIG_USB_OXU210HP_HCD is not set
@@ -1312,6 +1355,7 @@ CONFIG_RTC_INTF_DEV=y
1312# CONFIG_RTC_DRV_PCF8563 is not set 1355# CONFIG_RTC_DRV_PCF8563 is not set
1313# CONFIG_RTC_DRV_PCF8583 is not set 1356# CONFIG_RTC_DRV_PCF8583 is not set
1314# CONFIG_RTC_DRV_M41T80 is not set 1357# CONFIG_RTC_DRV_M41T80 is not set
1358# CONFIG_RTC_DRV_BQ32K is not set
1315# CONFIG_RTC_DRV_S35390A is not set 1359# CONFIG_RTC_DRV_S35390A is not set
1316# CONFIG_RTC_DRV_FM3130 is not set 1360# CONFIG_RTC_DRV_FM3130 is not set
1317# CONFIG_RTC_DRV_RX8581 is not set 1361# CONFIG_RTC_DRV_RX8581 is not set
@@ -1333,7 +1377,9 @@ CONFIG_RTC_DRV_CMOS=y
1333# CONFIG_RTC_DRV_M48T86 is not set 1377# CONFIG_RTC_DRV_M48T86 is not set
1334# CONFIG_RTC_DRV_M48T35 is not set 1378# CONFIG_RTC_DRV_M48T35 is not set
1335# CONFIG_RTC_DRV_M48T59 is not set 1379# CONFIG_RTC_DRV_M48T59 is not set
1380# CONFIG_RTC_DRV_MSM6242 is not set
1336# CONFIG_RTC_DRV_BQ4802 is not set 1381# CONFIG_RTC_DRV_BQ4802 is not set
1382# CONFIG_RTC_DRV_RP5C01 is not set
1337# CONFIG_RTC_DRV_V3020 is not set 1383# CONFIG_RTC_DRV_V3020 is not set
1338 1384
1339# 1385#
@@ -1648,7 +1694,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1648# CONFIG_KEYS is not set 1694# CONFIG_KEYS is not set
1649# CONFIG_SECURITY is not set 1695# CONFIG_SECURITY is not set
1650# CONFIG_SECURITYFS is not set 1696# CONFIG_SECURITYFS is not set
1651# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1697# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1698# CONFIG_DEFAULT_SECURITY_SMACK is not set
1699# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1700CONFIG_DEFAULT_SECURITY_DAC=y
1701CONFIG_DEFAULT_SECURITY=""
1652CONFIG_CRYPTO=y 1702CONFIG_CRYPTO=y
1653 1703
1654# 1704#
diff --git a/arch/powerpc/configs/86xx/sbc8641d_defconfig b/arch/powerpc/configs/86xx/sbc8641d_defconfig
index 89991f157ae8..4fb04dd2cde3 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:45 2009 4# Wed Jan 6 09:24:38 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -38,6 +38,7 @@ CONFIG_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 39# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
40CONFIG_IRQ_PER_CPU=y 40CONFIG_IRQ_PER_CPU=y
41CONFIG_NR_IRQS=512
41CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
42CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
43CONFIG_TRACE_IRQFLAGS_SUPPORT=y 44CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -61,6 +62,8 @@ CONFIG_AUDIT_ARCH=y
61CONFIG_GENERIC_BUG=y 62CONFIG_GENERIC_BUG=y
62CONFIG_DTC=y 63CONFIG_DTC=y
63CONFIG_DEFAULT_UIMAGE=y 64CONFIG_DEFAULT_UIMAGE=y
65CONFIG_ARCH_HIBERNATION_POSSIBLE=y
66CONFIG_ARCH_SUSPEND_POSSIBLE=y
64# CONFIG_PPC_DCR_NATIVE is not set 67# CONFIG_PPC_DCR_NATIVE is not set
65# CONFIG_PPC_DCR_MMIO is not set 68# CONFIG_PPC_DCR_MMIO is not set
66CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 69CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -90,6 +93,7 @@ CONFIG_BSD_PROCESS_ACCT_V3=y
90# 93#
91CONFIG_TREE_RCU=y 94CONFIG_TREE_RCU=y
92# CONFIG_TREE_PREEMPT_RCU is not set 95# CONFIG_TREE_PREEMPT_RCU is not set
96# CONFIG_TINY_RCU is not set
93# CONFIG_RCU_TRACE is not set 97# CONFIG_RCU_TRACE is not set
94CONFIG_RCU_FANOUT=32 98CONFIG_RCU_FANOUT=32
95# CONFIG_RCU_FANOUT_EXACT is not set 99# CONFIG_RCU_FANOUT_EXACT is not set
@@ -162,6 +166,7 @@ CONFIG_HAVE_DMA_API_DEBUG=y
162# 166#
163# CONFIG_GCOV_KERNEL is not set 167# CONFIG_GCOV_KERNEL is not set
164CONFIG_SLOW_WORK=y 168CONFIG_SLOW_WORK=y
169# CONFIG_SLOW_WORK_DEBUG is not set
165# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 170# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
166CONFIG_SLABINFO=y 171CONFIG_SLABINFO=y
167CONFIG_RT_MUTEXES=y 172CONFIG_RT_MUTEXES=y
@@ -182,14 +187,41 @@ CONFIG_LBDAF=y
182# IO Schedulers 187# IO Schedulers
183# 188#
184CONFIG_IOSCHED_NOOP=y 189CONFIG_IOSCHED_NOOP=y
185CONFIG_IOSCHED_AS=y
186CONFIG_IOSCHED_DEADLINE=y 190CONFIG_IOSCHED_DEADLINE=y
187CONFIG_IOSCHED_CFQ=y 191CONFIG_IOSCHED_CFQ=y
188# CONFIG_DEFAULT_AS is not set
189# CONFIG_DEFAULT_DEADLINE is not set 192# CONFIG_DEFAULT_DEADLINE is not set
190CONFIG_DEFAULT_CFQ=y 193CONFIG_DEFAULT_CFQ=y
191# CONFIG_DEFAULT_NOOP is not set 194# CONFIG_DEFAULT_NOOP is not set
192CONFIG_DEFAULT_IOSCHED="cfq" 195CONFIG_DEFAULT_IOSCHED="cfq"
196# CONFIG_INLINE_SPIN_TRYLOCK is not set
197# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
198# CONFIG_INLINE_SPIN_LOCK is not set
199# CONFIG_INLINE_SPIN_LOCK_BH is not set
200# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
201# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
202# CONFIG_INLINE_SPIN_UNLOCK is not set
203# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
204# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
205# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
206# CONFIG_INLINE_READ_TRYLOCK is not set
207# CONFIG_INLINE_READ_LOCK is not set
208# CONFIG_INLINE_READ_LOCK_BH is not set
209# CONFIG_INLINE_READ_LOCK_IRQ is not set
210# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
211# CONFIG_INLINE_READ_UNLOCK is not set
212# CONFIG_INLINE_READ_UNLOCK_BH is not set
213# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
214# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
215# CONFIG_INLINE_WRITE_TRYLOCK is not set
216# CONFIG_INLINE_WRITE_LOCK is not set
217# CONFIG_INLINE_WRITE_LOCK_BH is not set
218# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
219# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
220# CONFIG_INLINE_WRITE_UNLOCK is not set
221# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
222# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
223# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
224CONFIG_MUTEX_SPIN_ON_OWNER=y
193# CONFIG_FREEZER is not set 225# CONFIG_FREEZER is not set
194 226
195# 227#
@@ -260,6 +292,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
260# CONFIG_KEXEC is not set 292# CONFIG_KEXEC is not set
261# CONFIG_CRASH_DUMP is not set 293# CONFIG_CRASH_DUMP is not set
262CONFIG_IRQ_ALL_CPUS=y 294CONFIG_IRQ_ALL_CPUS=y
295CONFIG_SPARSE_IRQ=y
263CONFIG_MAX_ACTIVE_REGIONS=32 296CONFIG_MAX_ACTIVE_REGIONS=32
264CONFIG_ARCH_FLATMEM_ENABLE=y 297CONFIG_ARCH_FLATMEM_ENABLE=y
265CONFIG_ARCH_POPULATES_NODE_MAP=y 298CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -276,8 +309,6 @@ CONFIG_MIGRATION=y
276CONFIG_ZONE_DMA_FLAG=1 309CONFIG_ZONE_DMA_FLAG=1
277CONFIG_BOUNCE=y 310CONFIG_BOUNCE=y
278CONFIG_VIRT_TO_BUS=y 311CONFIG_VIRT_TO_BUS=y
279CONFIG_HAVE_MLOCK=y
280CONFIG_HAVE_MLOCKED_PAGE_BIT=y
281# CONFIG_KSM is not set 312# CONFIG_KSM is not set
282CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 313CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
283CONFIG_PPC_4K_PAGES=y 314CONFIG_PPC_4K_PAGES=y
@@ -399,6 +430,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m
399CONFIG_INET6_XFRM_MODE_BEET=m 430CONFIG_INET6_XFRM_MODE_BEET=m
400# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 431# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
401CONFIG_IPV6_SIT=m 432CONFIG_IPV6_SIT=m
433# CONFIG_IPV6_SIT_6RD is not set
402CONFIG_IPV6_NDISC_NODETYPE=y 434CONFIG_IPV6_NDISC_NODETYPE=y
403CONFIG_IPV6_TUNNEL=m 435CONFIG_IPV6_TUNNEL=m
404# CONFIG_IPV6_MULTIPLE_TABLES is not set 436# CONFIG_IPV6_MULTIPLE_TABLES is not set
@@ -587,9 +619,6 @@ CONFIG_NET_PKTGEN=m
587CONFIG_FIB_RULES=y 619CONFIG_FIB_RULES=y
588CONFIG_WIRELESS=y 620CONFIG_WIRELESS=y
589# CONFIG_CFG80211 is not set 621# CONFIG_CFG80211 is not set
590CONFIG_CFG80211_DEFAULT_PS_VALUE=0
591CONFIG_WIRELESS_OLD_REGULATORY=y
592# CONFIG_WIRELESS_EXT is not set
593# CONFIG_LIB80211 is not set 622# CONFIG_LIB80211 is not set
594 623
595# 624#
@@ -717,6 +746,10 @@ CONFIG_BLK_DEV=y
717# CONFIG_BLK_DEV_COW_COMMON is not set 746# CONFIG_BLK_DEV_COW_COMMON is not set
718CONFIG_BLK_DEV_LOOP=m 747CONFIG_BLK_DEV_LOOP=m
719CONFIG_BLK_DEV_CRYPTOLOOP=m 748CONFIG_BLK_DEV_CRYPTOLOOP=m
749
750#
751# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
752#
720CONFIG_BLK_DEV_NBD=m 753CONFIG_BLK_DEV_NBD=m
721# CONFIG_BLK_DEV_SX8 is not set 754# CONFIG_BLK_DEV_SX8 is not set
722CONFIG_BLK_DEV_RAM=y 755CONFIG_BLK_DEV_RAM=y
@@ -727,6 +760,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
727# CONFIG_ATA_OVER_ETH is not set 760# CONFIG_ATA_OVER_ETH is not set
728# CONFIG_BLK_DEV_HD is not set 761# CONFIG_BLK_DEV_HD is not set
729CONFIG_MISC_DEVICES=y 762CONFIG_MISC_DEVICES=y
763# CONFIG_AD525X_DPOT is not set
730# CONFIG_PHANTOM is not set 764# CONFIG_PHANTOM is not set
731# CONFIG_SGI_IOC4 is not set 765# CONFIG_SGI_IOC4 is not set
732# CONFIG_TIFM_CORE is not set 766# CONFIG_TIFM_CORE is not set
@@ -734,6 +768,7 @@ CONFIG_MISC_DEVICES=y
734# CONFIG_ENCLOSURE_SERVICES is not set 768# CONFIG_ENCLOSURE_SERVICES is not set
735# CONFIG_HP_ILO is not set 769# CONFIG_HP_ILO is not set
736# CONFIG_ISL29003 is not set 770# CONFIG_ISL29003 is not set
771# CONFIG_DS1682 is not set
737# CONFIG_C2PORT is not set 772# CONFIG_C2PORT is not set
738 773
739# 774#
@@ -786,7 +821,7 @@ CONFIG_DM_ZERO=y
786# 821#
787 822
788# 823#
789# See the help texts for more information. 824# The newer stack is recommended.
790# 825#
791# CONFIG_FIREWIRE is not set 826# CONFIG_FIREWIRE is not set
792# CONFIG_IEEE1394 is not set 827# CONFIG_IEEE1394 is not set
@@ -873,8 +908,10 @@ CONFIG_GIANFAR=y
873# CONFIG_NETDEV_10000 is not set 908# CONFIG_NETDEV_10000 is not set
874# CONFIG_TR is not set 909# CONFIG_TR is not set
875CONFIG_WLAN=y 910CONFIG_WLAN=y
876# CONFIG_WLAN_PRE80211 is not set 911# CONFIG_AIRO is not set
877# CONFIG_WLAN_80211 is not set 912# CONFIG_ATMEL is not set
913# CONFIG_PRISM54 is not set
914# CONFIG_HOSTAP is not set
878 915
879# 916#
880# Enable WiMAX (Networking options) to see the WiMAX drivers 917# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -918,6 +955,7 @@ CONFIG_NETCONSOLE=y
918CONFIG_NETPOLL=y 955CONFIG_NETPOLL=y
919CONFIG_NETPOLL_TRAP=y 956CONFIG_NETPOLL_TRAP=y
920CONFIG_NET_POLL_CONTROLLER=y 957CONFIG_NET_POLL_CONTROLLER=y
958# CONFIG_VMXNET3 is not set
921# CONFIG_ISDN is not set 959# CONFIG_ISDN is not set
922# CONFIG_PHONE is not set 960# CONFIG_PHONE is not set
923 961
@@ -927,6 +965,7 @@ CONFIG_NET_POLL_CONTROLLER=y
927CONFIG_INPUT=y 965CONFIG_INPUT=y
928# CONFIG_INPUT_FF_MEMLESS is not set 966# CONFIG_INPUT_FF_MEMLESS is not set
929# CONFIG_INPUT_POLLDEV is not set 967# CONFIG_INPUT_POLLDEV is not set
968# CONFIG_INPUT_SPARSEKMAP is not set
930 969
931# 970#
932# Userland interfaces 971# Userland interfaces
@@ -985,6 +1024,7 @@ CONFIG_SERIAL_CORE=y
985CONFIG_SERIAL_CORE_CONSOLE=y 1024CONFIG_SERIAL_CORE_CONSOLE=y
986# CONFIG_SERIAL_JSM is not set 1025# CONFIG_SERIAL_JSM is not set
987# CONFIG_SERIAL_OF_PLATFORM is not set 1026# CONFIG_SERIAL_OF_PLATFORM is not set
1027# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
988CONFIG_UNIX98_PTYS=y 1028CONFIG_UNIX98_PTYS=y
989# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 1029# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
990CONFIG_LEGACY_PTYS=y 1030CONFIG_LEGACY_PTYS=y
@@ -1042,11 +1082,6 @@ CONFIG_I2C_MPC=y
1042# CONFIG_I2C_TAOS_EVM is not set 1082# CONFIG_I2C_TAOS_EVM is not set
1043 1083
1044# 1084#
1045# Graphics adapter I2C/DDC channel drivers
1046#
1047# CONFIG_I2C_VOODOO3 is not set
1048
1049#
1050# Other I2C/SMBus bus drivers 1085# Other I2C/SMBus bus drivers
1051# 1086#
1052# CONFIG_I2C_PCA_PLATFORM is not set 1087# CONFIG_I2C_PCA_PLATFORM is not set
@@ -1055,7 +1090,6 @@ CONFIG_I2C_MPC=y
1055# 1090#
1056# Miscellaneous I2C Chip support 1091# Miscellaneous I2C Chip support
1057# 1092#
1058# CONFIG_DS1682 is not set
1059# CONFIG_SENSORS_TSL2550 is not set 1093# CONFIG_SENSORS_TSL2550 is not set
1060# CONFIG_I2C_DEBUG_CORE is not set 1094# CONFIG_I2C_DEBUG_CORE is not set
1061# CONFIG_I2C_DEBUG_ALGO is not set 1095# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1101,6 +1135,7 @@ CONFIG_HWMON=y
1101# CONFIG_SENSORS_GL520SM is not set 1135# CONFIG_SENSORS_GL520SM is not set
1102# CONFIG_SENSORS_IT87 is not set 1136# CONFIG_SENSORS_IT87 is not set
1103# CONFIG_SENSORS_LM63 is not set 1137# CONFIG_SENSORS_LM63 is not set
1138# CONFIG_SENSORS_LM73 is not set
1104# CONFIG_SENSORS_LM75 is not set 1139# CONFIG_SENSORS_LM75 is not set
1105# CONFIG_SENSORS_LM77 is not set 1140# CONFIG_SENSORS_LM77 is not set
1106# CONFIG_SENSORS_LM78 is not set 1141# CONFIG_SENSORS_LM78 is not set
@@ -1139,6 +1174,7 @@ CONFIG_HWMON=y
1139# CONFIG_SENSORS_W83L786NG is not set 1174# CONFIG_SENSORS_W83L786NG is not set
1140# CONFIG_SENSORS_W83627HF is not set 1175# CONFIG_SENSORS_W83627HF is not set
1141# CONFIG_SENSORS_W83627EHF is not set 1176# CONFIG_SENSORS_W83627EHF is not set
1177# CONFIG_SENSORS_LIS3_I2C is not set
1142# CONFIG_THERMAL is not set 1178# CONFIG_THERMAL is not set
1143CONFIG_WATCHDOG=y 1179CONFIG_WATCHDOG=y
1144# CONFIG_WATCHDOG_NOWAYOUT is not set 1180# CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -1171,11 +1207,13 @@ CONFIG_SSB_POSSIBLE=y
1171# CONFIG_TWL4030_CORE is not set 1207# CONFIG_TWL4030_CORE is not set
1172# CONFIG_MFD_TMIO is not set 1208# CONFIG_MFD_TMIO is not set
1173# CONFIG_PMIC_DA903X is not set 1209# CONFIG_PMIC_DA903X is not set
1210# CONFIG_PMIC_ADP5520 is not set
1174# CONFIG_MFD_WM8400 is not set 1211# CONFIG_MFD_WM8400 is not set
1175# CONFIG_MFD_WM831X is not set 1212# CONFIG_MFD_WM831X is not set
1176# CONFIG_MFD_WM8350_I2C is not set 1213# CONFIG_MFD_WM8350_I2C is not set
1177# CONFIG_MFD_PCF50633 is not set 1214# CONFIG_MFD_PCF50633 is not set
1178# CONFIG_AB3100_CORE is not set 1215# CONFIG_AB3100_CORE is not set
1216# CONFIG_MFD_88PM8607 is not set
1179# CONFIG_REGULATOR is not set 1217# CONFIG_REGULATOR is not set
1180# CONFIG_MEDIA_SUPPORT is not set 1218# CONFIG_MEDIA_SUPPORT is not set
1181 1219
@@ -1281,7 +1319,6 @@ CONFIG_OCFS2_FS_O2CB=m
1281CONFIG_OCFS2_FS_STATS=y 1319CONFIG_OCFS2_FS_STATS=y
1282CONFIG_OCFS2_DEBUG_MASKLOG=y 1320CONFIG_OCFS2_DEBUG_MASKLOG=y
1283# CONFIG_OCFS2_DEBUG_FS is not set 1321# CONFIG_OCFS2_DEBUG_FS is not set
1284# CONFIG_OCFS2_FS_POSIX_ACL is not set
1285# CONFIG_BTRFS_FS is not set 1322# CONFIG_BTRFS_FS is not set
1286# CONFIG_NILFS2_FS is not set 1323# CONFIG_NILFS2_FS is not set
1287CONFIG_FILE_LOCKING=y 1324CONFIG_FILE_LOCKING=y
@@ -1556,8 +1593,12 @@ CONFIG_SECURITY=y
1556CONFIG_SECURITY_NETWORK=y 1593CONFIG_SECURITY_NETWORK=y
1557# CONFIG_SECURITY_NETWORK_XFRM is not set 1594# CONFIG_SECURITY_NETWORK_XFRM is not set
1558# CONFIG_SECURITY_PATH is not set 1595# CONFIG_SECURITY_PATH is not set
1559# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1560# CONFIG_SECURITY_TOMOYO is not set 1596# CONFIG_SECURITY_TOMOYO is not set
1597# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1598# CONFIG_DEFAULT_SECURITY_SMACK is not set
1599# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1600CONFIG_DEFAULT_SECURITY_DAC=y
1601CONFIG_DEFAULT_SECURITY=""
1561CONFIG_CRYPTO=y 1602CONFIG_CRYPTO=y
1562 1603
1563# 1604#
diff --git a/arch/powerpc/configs/adder875_defconfig b/arch/powerpc/configs/adder875_defconfig
index 052cf134e018..5c1dc768bbd8 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:04 2009 4# Wed Jan 6 09:23:58 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
32# 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 33# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_NR_IRQS=512
35CONFIG_STACKTRACE_SUPPORT=y 36CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_HAVE_LATENCYTOP_SUPPORT=y 37CONFIG_HAVE_LATENCYTOP_SUPPORT=y
37CONFIG_TRACE_IRQFLAGS_SUPPORT=y 38CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -55,6 +56,7 @@ CONFIG_GENERIC_BUG=y
55CONFIG_DTC=y 56CONFIG_DTC=y
56# CONFIG_DEFAULT_UIMAGE is not set 57# CONFIG_DEFAULT_UIMAGE is not set
57CONFIG_REDBOOT=y 58CONFIG_REDBOOT=y
59CONFIG_ARCH_HIBERNATION_POSSIBLE=y
58# CONFIG_PPC_DCR_NATIVE is not set 60# CONFIG_PPC_DCR_NATIVE is not set
59# CONFIG_PPC_DCR_MMIO is not set 61# CONFIG_PPC_DCR_MMIO is not set
60CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 62CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -82,6 +84,7 @@ CONFIG_SYSVIPC_SYSCTL=y
82# 84#
83CONFIG_TREE_RCU=y 85CONFIG_TREE_RCU=y
84# CONFIG_TREE_PREEMPT_RCU is not set 86# CONFIG_TREE_PREEMPT_RCU is not set
87# CONFIG_TINY_RCU is not set
85# CONFIG_RCU_TRACE is not set 88# CONFIG_RCU_TRACE is not set
86CONFIG_RCU_FANOUT=32 89CONFIG_RCU_FANOUT=32
87# CONFIG_RCU_FANOUT_EXACT is not set 90# CONFIG_RCU_FANOUT_EXACT is not set
@@ -161,14 +164,41 @@ CONFIG_LBDAF=y
161# IO Schedulers 164# IO Schedulers
162# 165#
163CONFIG_IOSCHED_NOOP=y 166CONFIG_IOSCHED_NOOP=y
164# CONFIG_IOSCHED_AS is not set
165CONFIG_IOSCHED_DEADLINE=y 167CONFIG_IOSCHED_DEADLINE=y
166# CONFIG_IOSCHED_CFQ is not set 168# CONFIG_IOSCHED_CFQ is not set
167# CONFIG_DEFAULT_AS is not set
168CONFIG_DEFAULT_DEADLINE=y 169CONFIG_DEFAULT_DEADLINE=y
169# CONFIG_DEFAULT_CFQ is not set 170# CONFIG_DEFAULT_CFQ is not set
170# CONFIG_DEFAULT_NOOP is not set 171# CONFIG_DEFAULT_NOOP is not set
171CONFIG_DEFAULT_IOSCHED="deadline" 172CONFIG_DEFAULT_IOSCHED="deadline"
173# CONFIG_INLINE_SPIN_TRYLOCK is not set
174# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
175# CONFIG_INLINE_SPIN_LOCK is not set
176# CONFIG_INLINE_SPIN_LOCK_BH is not set
177# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
178# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
179CONFIG_INLINE_SPIN_UNLOCK=y
180# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
181CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
182# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
183# CONFIG_INLINE_READ_TRYLOCK is not set
184# CONFIG_INLINE_READ_LOCK is not set
185# CONFIG_INLINE_READ_LOCK_BH is not set
186# CONFIG_INLINE_READ_LOCK_IRQ is not set
187# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
188CONFIG_INLINE_READ_UNLOCK=y
189# CONFIG_INLINE_READ_UNLOCK_BH is not set
190CONFIG_INLINE_READ_UNLOCK_IRQ=y
191# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
192# CONFIG_INLINE_WRITE_TRYLOCK is not set
193# CONFIG_INLINE_WRITE_LOCK is not set
194# CONFIG_INLINE_WRITE_LOCK_BH is not set
195# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
196# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
197CONFIG_INLINE_WRITE_UNLOCK=y
198# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
199CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
200# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
201# CONFIG_MUTEX_SPIN_ON_OWNER is not set
172# CONFIG_FREEZER is not set 202# CONFIG_FREEZER is not set
173 203
174# 204#
@@ -242,6 +272,7 @@ CONFIG_BINFMT_ELF=y
242CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 272CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
243CONFIG_ARCH_HAS_WALK_MEMORY=y 273CONFIG_ARCH_HAS_WALK_MEMORY=y
244CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 274CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
275CONFIG_SPARSE_IRQ=y
245CONFIG_MAX_ACTIVE_REGIONS=32 276CONFIG_MAX_ACTIVE_REGIONS=32
246CONFIG_ARCH_FLATMEM_ENABLE=y 277CONFIG_ARCH_FLATMEM_ENABLE=y
247CONFIG_ARCH_POPULATES_NODE_MAP=y 278CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -258,8 +289,6 @@ CONFIG_MIGRATION=y
258CONFIG_ZONE_DMA_FLAG=1 289CONFIG_ZONE_DMA_FLAG=1
259CONFIG_BOUNCE=y 290CONFIG_BOUNCE=y
260CONFIG_VIRT_TO_BUS=y 291CONFIG_VIRT_TO_BUS=y
261CONFIG_HAVE_MLOCK=y
262CONFIG_HAVE_MLOCKED_PAGE_BIT=y
263# CONFIG_KSM is not set 292# CONFIG_KSM is not set
264CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 293CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
265CONFIG_PPC_4K_PAGES=y 294CONFIG_PPC_4K_PAGES=y
@@ -373,9 +402,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
373# CONFIG_AF_RXRPC is not set 402# CONFIG_AF_RXRPC is not set
374CONFIG_WIRELESS=y 403CONFIG_WIRELESS=y
375# CONFIG_CFG80211 is not set 404# CONFIG_CFG80211 is not set
376CONFIG_CFG80211_DEFAULT_PS_VALUE=0
377CONFIG_WIRELESS_OLD_REGULATORY=y
378# CONFIG_WIRELESS_EXT is not set
379# CONFIG_LIB80211 is not set 405# CONFIG_LIB80211 is not set
380 406
381# 407#
@@ -546,8 +572,7 @@ CONFIG_FS_ENET_MDIO_FEC=y
546# CONFIG_NETDEV_1000 is not set 572# CONFIG_NETDEV_1000 is not set
547# CONFIG_NETDEV_10000 is not set 573# CONFIG_NETDEV_10000 is not set
548CONFIG_WLAN=y 574CONFIG_WLAN=y
549# CONFIG_WLAN_PRE80211 is not set 575# CONFIG_HOSTAP is not set
550# CONFIG_WLAN_80211 is not set
551 576
552# 577#
553# Enable WiMAX (Networking options) to see the WiMAX drivers 578# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -567,6 +592,7 @@ CONFIG_WLAN=y
567CONFIG_INPUT=y 592CONFIG_INPUT=y
568# CONFIG_INPUT_FF_MEMLESS is not set 593# CONFIG_INPUT_FF_MEMLESS is not set
569# CONFIG_INPUT_POLLDEV is not set 594# CONFIG_INPUT_POLLDEV is not set
595# CONFIG_INPUT_SPARSEKMAP is not set
570 596
571# 597#
572# Userland interfaces 598# Userland interfaces
@@ -615,6 +641,7 @@ CONFIG_SERIO_SERPORT=y
615CONFIG_SERIO_LIBPS2=y 641CONFIG_SERIO_LIBPS2=y
616# CONFIG_SERIO_RAW is not set 642# CONFIG_SERIO_RAW is not set
617# CONFIG_SERIO_XILINX_XPS_PS2 is not set 643# CONFIG_SERIO_XILINX_XPS_PS2 is not set
644# CONFIG_SERIO_ALTERA_PS2 is not set
618# CONFIG_GAMEPORT is not set 645# CONFIG_GAMEPORT is not set
619 646
620# 647#
@@ -637,6 +664,7 @@ CONFIG_SERIAL_CORE=y
637CONFIG_SERIAL_CORE_CONSOLE=y 664CONFIG_SERIAL_CORE_CONSOLE=y
638CONFIG_SERIAL_CPM=y 665CONFIG_SERIAL_CPM=y
639CONFIG_SERIAL_CPM_CONSOLE=y 666CONFIG_SERIAL_CPM_CONSOLE=y
667# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
640CONFIG_UNIX98_PTYS=y 668CONFIG_UNIX98_PTYS=y
641# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 669# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
642# CONFIG_LEGACY_PTYS is not set 670# CONFIG_LEGACY_PTYS is not set
@@ -898,6 +926,7 @@ CONFIG_DEBUG_INFO=y
898# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set 926# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
899# CONFIG_FAULT_INJECTION is not set 927# CONFIG_FAULT_INJECTION is not set
900# CONFIG_LATENCYTOP is not set 928# CONFIG_LATENCYTOP is not set
929# CONFIG_SYSCTL_SYSCALL_CHECK is not set
901# CONFIG_DEBUG_PAGEALLOC is not set 930# CONFIG_DEBUG_PAGEALLOC is not set
902CONFIG_HAVE_FUNCTION_TRACER=y 931CONFIG_HAVE_FUNCTION_TRACER=y
903CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 932CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
@@ -943,7 +972,11 @@ CONFIG_PRINT_STACK_DEPTH=64
943# CONFIG_KEYS is not set 972# CONFIG_KEYS is not set
944# CONFIG_SECURITY is not set 973# CONFIG_SECURITY is not set
945# CONFIG_SECURITYFS is not set 974# CONFIG_SECURITYFS is not set
946# CONFIG_SECURITY_FILE_CAPABILITIES is not set 975# CONFIG_DEFAULT_SECURITY_SELINUX is not set
976# CONFIG_DEFAULT_SECURITY_SMACK is not set
977# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
978CONFIG_DEFAULT_SECURITY_DAC=y
979CONFIG_DEFAULT_SECURITY=""
947# CONFIG_CRYPTO is not set 980# CONFIG_CRYPTO is not set
948CONFIG_PPC_CLOCK=y 981CONFIG_PPC_CLOCK=y
949CONFIG_PPC_LIB_RHEAP=y 982CONFIG_PPC_LIB_RHEAP=y
diff --git a/arch/powerpc/configs/c2k_defconfig b/arch/powerpc/configs/c2k_defconfig
index 0fb65a85dfdf..72137cd881da 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:05 2009 4# Wed Jan 6 09:23:59 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
39# 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 40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
41CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
42CONFIG_NR_IRQS=512
42CONFIG_STACKTRACE_SUPPORT=y 43CONFIG_STACKTRACE_SUPPORT=y
43CONFIG_HAVE_LATENCYTOP_SUPPORT=y 44CONFIG_HAVE_LATENCYTOP_SUPPORT=y
44CONFIG_TRACE_IRQFLAGS_SUPPORT=y 45CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -61,6 +62,7 @@ CONFIG_AUDIT_ARCH=y
61CONFIG_GENERIC_BUG=y 62CONFIG_GENERIC_BUG=y
62CONFIG_DTC=y 63CONFIG_DTC=y
63# CONFIG_DEFAULT_UIMAGE is not set 64# CONFIG_DEFAULT_UIMAGE is not set
65CONFIG_ARCH_HIBERNATION_POSSIBLE=y
64# CONFIG_PPC_DCR_NATIVE is not set 66# CONFIG_PPC_DCR_NATIVE is not set
65# CONFIG_PPC_DCR_MMIO is not set 67# CONFIG_PPC_DCR_MMIO is not set
66CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 68CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -92,6 +94,7 @@ CONFIG_AUDIT_TREE=y
92# 94#
93CONFIG_TREE_RCU=y 95CONFIG_TREE_RCU=y
94# CONFIG_TREE_PREEMPT_RCU is not set 96# CONFIG_TREE_PREEMPT_RCU is not set
97# CONFIG_TINY_RCU is not set
95# CONFIG_RCU_TRACE is not set 98# CONFIG_RCU_TRACE is not set
96CONFIG_RCU_FANOUT=32 99CONFIG_RCU_FANOUT=32
97# CONFIG_RCU_FANOUT_EXACT is not set 100# CONFIG_RCU_FANOUT_EXACT is not set
@@ -173,6 +176,7 @@ CONFIG_HAVE_DMA_API_DEBUG=y
173# 176#
174# CONFIG_GCOV_KERNEL is not set 177# CONFIG_GCOV_KERNEL is not set
175CONFIG_SLOW_WORK=y 178CONFIG_SLOW_WORK=y
179# CONFIG_SLOW_WORK_DEBUG is not set
176# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 180# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
177CONFIG_SLABINFO=y 181CONFIG_SLABINFO=y
178CONFIG_RT_MUTEXES=y 182CONFIG_RT_MUTEXES=y
@@ -192,14 +196,41 @@ CONFIG_LBDAF=y
192# IO Schedulers 196# IO Schedulers
193# 197#
194CONFIG_IOSCHED_NOOP=y 198CONFIG_IOSCHED_NOOP=y
195CONFIG_IOSCHED_AS=y
196CONFIG_IOSCHED_DEADLINE=y 199CONFIG_IOSCHED_DEADLINE=y
197CONFIG_IOSCHED_CFQ=y 200CONFIG_IOSCHED_CFQ=y
198# CONFIG_DEFAULT_AS is not set
199# CONFIG_DEFAULT_DEADLINE is not set 201# CONFIG_DEFAULT_DEADLINE is not set
200CONFIG_DEFAULT_CFQ=y 202CONFIG_DEFAULT_CFQ=y
201# CONFIG_DEFAULT_NOOP is not set 203# CONFIG_DEFAULT_NOOP is not set
202CONFIG_DEFAULT_IOSCHED="cfq" 204CONFIG_DEFAULT_IOSCHED="cfq"
205# CONFIG_INLINE_SPIN_TRYLOCK is not set
206# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
207# CONFIG_INLINE_SPIN_LOCK is not set
208# CONFIG_INLINE_SPIN_LOCK_BH is not set
209# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
210# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
211# CONFIG_INLINE_SPIN_UNLOCK is not set
212# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
213# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
214# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
215# CONFIG_INLINE_READ_TRYLOCK is not set
216# CONFIG_INLINE_READ_LOCK is not set
217# CONFIG_INLINE_READ_LOCK_BH is not set
218# CONFIG_INLINE_READ_LOCK_IRQ is not set
219# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
220# CONFIG_INLINE_READ_UNLOCK is not set
221# CONFIG_INLINE_READ_UNLOCK_BH is not set
222# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
223# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
224# CONFIG_INLINE_WRITE_TRYLOCK is not set
225# CONFIG_INLINE_WRITE_LOCK is not set
226# CONFIG_INLINE_WRITE_LOCK_BH is not set
227# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
228# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
229# CONFIG_INLINE_WRITE_UNLOCK is not set
230# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
231# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
232# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
233# CONFIG_MUTEX_SPIN_ON_OWNER is not set
203# CONFIG_FREEZER is not set 234# CONFIG_FREEZER is not set
204 235
205# 236#
@@ -224,6 +255,8 @@ CONFIG_EMBEDDED6xx=y
224# CONFIG_PPC_PRPMC2800 is not set 255# CONFIG_PPC_PRPMC2800 is not set
225CONFIG_PPC_C2K=y 256CONFIG_PPC_C2K=y
226CONFIG_MV64X60=y 257CONFIG_MV64X60=y
258# CONFIG_GAMECUBE is not set
259# CONFIG_WII is not set
227# CONFIG_AMIGAONE is not set 260# CONFIG_AMIGAONE is not set
228CONFIG_PPC_OF_BOOT_TRAMPOLINE=y 261CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
229# CONFIG_IPIC is not set 262# CONFIG_IPIC is not set
@@ -286,6 +319,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
286CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 319CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
287# CONFIG_KEXEC is not set 320# CONFIG_KEXEC is not set
288# CONFIG_CRASH_DUMP is not set 321# CONFIG_CRASH_DUMP is not set
322CONFIG_SPARSE_IRQ=y
289CONFIG_MAX_ACTIVE_REGIONS=32 323CONFIG_MAX_ACTIVE_REGIONS=32
290CONFIG_ARCH_FLATMEM_ENABLE=y 324CONFIG_ARCH_FLATMEM_ENABLE=y
291CONFIG_ARCH_POPULATES_NODE_MAP=y 325CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -296,14 +330,12 @@ CONFIG_FLATMEM_MANUAL=y
296CONFIG_FLATMEM=y 330CONFIG_FLATMEM=y
297CONFIG_FLAT_NODE_MEM_MAP=y 331CONFIG_FLAT_NODE_MEM_MAP=y
298CONFIG_PAGEFLAGS_EXTENDED=y 332CONFIG_PAGEFLAGS_EXTENDED=y
299CONFIG_SPLIT_PTLOCK_CPUS=4 333CONFIG_SPLIT_PTLOCK_CPUS=999999
300CONFIG_MIGRATION=y 334CONFIG_MIGRATION=y
301# CONFIG_PHYS_ADDR_T_64BIT is not set 335# CONFIG_PHYS_ADDR_T_64BIT is not set
302CONFIG_ZONE_DMA_FLAG=1 336CONFIG_ZONE_DMA_FLAG=1
303CONFIG_BOUNCE=y 337CONFIG_BOUNCE=y
304CONFIG_VIRT_TO_BUS=y 338CONFIG_VIRT_TO_BUS=y
305CONFIG_HAVE_MLOCK=y
306CONFIG_HAVE_MLOCKED_PAGE_BIT=y
307# CONFIG_KSM is not set 339# CONFIG_KSM is not set
308CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 340CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
309CONFIG_PPC_4K_PAGES=y 341CONFIG_PPC_4K_PAGES=y
@@ -316,6 +348,7 @@ CONFIG_FORCE_MAX_ZONEORDER=11
316CONFIG_EXTRA_TARGETS="" 348CONFIG_EXTRA_TARGETS=""
317CONFIG_PM=y 349CONFIG_PM=y
318# CONFIG_PM_DEBUG is not set 350# CONFIG_PM_DEBUG is not set
351# CONFIG_HIBERNATION is not set
319# CONFIG_PM_RUNTIME is not set 352# CONFIG_PM_RUNTIME is not set
320CONFIG_SECCOMP=y 353CONFIG_SECCOMP=y
321CONFIG_ISA_DMA_API=y 354CONFIG_ISA_DMA_API=y
@@ -424,6 +457,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m
424CONFIG_INET6_XFRM_MODE_BEET=m 457CONFIG_INET6_XFRM_MODE_BEET=m
425# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 458# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
426CONFIG_IPV6_SIT=m 459CONFIG_IPV6_SIT=m
460# CONFIG_IPV6_SIT_6RD is not set
427CONFIG_IPV6_NDISC_NODETYPE=y 461CONFIG_IPV6_NDISC_NODETYPE=y
428CONFIG_IPV6_TUNNEL=m 462CONFIG_IPV6_TUNNEL=m
429# CONFIG_IPV6_MULTIPLE_TABLES is not set 463# CONFIG_IPV6_MULTIPLE_TABLES is not set
@@ -687,10 +721,6 @@ CONFIG_BT_HCIVHCI=m
687CONFIG_FIB_RULES=y 721CONFIG_FIB_RULES=y
688CONFIG_WIRELESS=y 722CONFIG_WIRELESS=y
689# CONFIG_CFG80211 is not set 723# CONFIG_CFG80211 is not set
690CONFIG_CFG80211_DEFAULT_PS_VALUE=0
691CONFIG_WIRELESS_OLD_REGULATORY=y
692CONFIG_WIRELESS_EXT=y
693CONFIG_WIRELESS_EXT_SYSFS=y
694# CONFIG_LIB80211 is not set 724# CONFIG_LIB80211 is not set
695 725
696# 726#
@@ -773,7 +803,6 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
773# CONFIG_MTD_PHYSMAP is not set 803# CONFIG_MTD_PHYSMAP is not set
774CONFIG_MTD_PHYSMAP_OF=y 804CONFIG_MTD_PHYSMAP_OF=y
775# CONFIG_MTD_PCI is not set 805# CONFIG_MTD_PCI is not set
776# CONFIG_MTD_GPIO_ADDR is not set
777# CONFIG_MTD_INTEL_VR_NOR is not set 806# CONFIG_MTD_INTEL_VR_NOR is not set
778# CONFIG_MTD_PLATRAM is not set 807# CONFIG_MTD_PLATRAM is not set
779 808
@@ -817,6 +846,10 @@ CONFIG_BLK_DEV=y
817# CONFIG_BLK_DEV_COW_COMMON is not set 846# CONFIG_BLK_DEV_COW_COMMON is not set
818CONFIG_BLK_DEV_LOOP=m 847CONFIG_BLK_DEV_LOOP=m
819CONFIG_BLK_DEV_CRYPTOLOOP=m 848CONFIG_BLK_DEV_CRYPTOLOOP=m
849
850#
851# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
852#
820CONFIG_BLK_DEV_NBD=m 853CONFIG_BLK_DEV_NBD=m
821# CONFIG_BLK_DEV_SX8 is not set 854# CONFIG_BLK_DEV_SX8 is not set
822# CONFIG_BLK_DEV_UB is not set 855# CONFIG_BLK_DEV_UB is not set
@@ -870,7 +903,9 @@ CONFIG_SCSI_LOWLEVEL=y
870# CONFIG_SCSI_BNX2_ISCSI is not set 903# CONFIG_SCSI_BNX2_ISCSI is not set
871# CONFIG_BE2ISCSI is not set 904# CONFIG_BE2ISCSI is not set
872CONFIG_BLK_DEV_3W_XXXX_RAID=m 905CONFIG_BLK_DEV_3W_XXXX_RAID=m
906# CONFIG_SCSI_HPSA is not set
873CONFIG_SCSI_3W_9XXX=m 907CONFIG_SCSI_3W_9XXX=m
908# CONFIG_SCSI_3W_SAS is not set
874CONFIG_SCSI_ACARD=m 909CONFIG_SCSI_ACARD=m
875CONFIG_SCSI_AACRAID=m 910CONFIG_SCSI_AACRAID=m
876CONFIG_SCSI_AIC7XXX=m 911CONFIG_SCSI_AIC7XXX=m
@@ -925,6 +960,7 @@ CONFIG_SCSI_LPFC=m
925# CONFIG_SCSI_NSP32 is not set 960# CONFIG_SCSI_NSP32 is not set
926# CONFIG_SCSI_DEBUG is not set 961# CONFIG_SCSI_DEBUG is not set
927# CONFIG_SCSI_PMCRAID is not set 962# CONFIG_SCSI_PMCRAID is not set
963# CONFIG_SCSI_PM8001 is not set
928# CONFIG_SCSI_SRP is not set 964# CONFIG_SCSI_SRP is not set
929# CONFIG_SCSI_BFA_FC is not set 965# CONFIG_SCSI_BFA_FC is not set
930# CONFIG_SCSI_DH is not set 966# CONFIG_SCSI_DH is not set
@@ -942,7 +978,7 @@ CONFIG_SCSI_LPFC=m
942# 978#
943 979
944# 980#
945# See the help texts for more information. 981# The newer stack is recommended.
946# 982#
947# CONFIG_FIREWIRE is not set 983# CONFIG_FIREWIRE is not set
948# CONFIG_IEEE1394 is not set 984# CONFIG_IEEE1394 is not set
@@ -1027,8 +1063,11 @@ CONFIG_MV643XX_ETH=y
1027# CONFIG_NETDEV_10000 is not set 1063# CONFIG_NETDEV_10000 is not set
1028# CONFIG_TR is not set 1064# CONFIG_TR is not set
1029CONFIG_WLAN=y 1065CONFIG_WLAN=y
1030# CONFIG_WLAN_PRE80211 is not set 1066# CONFIG_AIRO is not set
1031# CONFIG_WLAN_80211 is not set 1067# CONFIG_ATMEL is not set
1068# CONFIG_PRISM54 is not set
1069# CONFIG_USB_ZD1201 is not set
1070# CONFIG_HOSTAP is not set
1032 1071
1033# 1072#
1034# Enable WiMAX (Networking options) to see the WiMAX drivers 1073# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -1054,6 +1093,7 @@ CONFIG_NETCONSOLE=m
1054CONFIG_NETPOLL=y 1093CONFIG_NETPOLL=y
1055CONFIG_NETPOLL_TRAP=y 1094CONFIG_NETPOLL_TRAP=y
1056CONFIG_NET_POLL_CONTROLLER=y 1095CONFIG_NET_POLL_CONTROLLER=y
1096# CONFIG_VMXNET3 is not set
1057# CONFIG_ISDN is not set 1097# CONFIG_ISDN is not set
1058# CONFIG_PHONE is not set 1098# CONFIG_PHONE is not set
1059 1099
@@ -1063,6 +1103,7 @@ CONFIG_NET_POLL_CONTROLLER=y
1063CONFIG_INPUT=y 1103CONFIG_INPUT=y
1064# CONFIG_INPUT_FF_MEMLESS is not set 1104# CONFIG_INPUT_FF_MEMLESS is not set
1065# CONFIG_INPUT_POLLDEV is not set 1105# CONFIG_INPUT_POLLDEV is not set
1106# CONFIG_INPUT_SPARSEKMAP is not set
1066 1107
1067# 1108#
1068# Userland interfaces 1109# Userland interfaces
@@ -1121,8 +1162,6 @@ CONFIG_SERIAL_NONSTANDARD=y
1121# CONFIG_N_HDLC is not set 1162# CONFIG_N_HDLC is not set
1122# CONFIG_RISCOM8 is not set 1163# CONFIG_RISCOM8 is not set
1123# CONFIG_SPECIALIX is not set 1164# CONFIG_SPECIALIX is not set
1124# CONFIG_SX is not set
1125# CONFIG_RIO is not set
1126# CONFIG_STALDRV is not set 1165# CONFIG_STALDRV is not set
1127# CONFIG_NOZOMI is not set 1166# CONFIG_NOZOMI is not set
1128 1167
@@ -1140,6 +1179,7 @@ CONFIG_SERIAL_MPSC_CONSOLE=y
1140CONFIG_SERIAL_CORE=y 1179CONFIG_SERIAL_CORE=y
1141CONFIG_SERIAL_CORE_CONSOLE=y 1180CONFIG_SERIAL_CORE_CONSOLE=y
1142# CONFIG_SERIAL_JSM is not set 1181# CONFIG_SERIAL_JSM is not set
1182# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
1143CONFIG_UNIX98_PTYS=y 1183CONFIG_UNIX98_PTYS=y
1144# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 1184# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
1145# CONFIG_LEGACY_PTYS is not set 1185# CONFIG_LEGACY_PTYS is not set
@@ -1200,11 +1240,6 @@ CONFIG_I2C_MV64XXX=m
1200# CONFIG_I2C_TINY_USB is not set 1240# CONFIG_I2C_TINY_USB is not set
1201 1241
1202# 1242#
1203# Graphics adapter I2C/DDC channel drivers
1204#
1205# CONFIG_I2C_VOODOO3 is not set
1206
1207#
1208# Other I2C/SMBus bus drivers 1243# Other I2C/SMBus bus drivers
1209# 1244#
1210# CONFIG_I2C_PCA_PLATFORM is not set 1245# CONFIG_I2C_PCA_PLATFORM is not set
@@ -1213,7 +1248,6 @@ CONFIG_I2C_MV64XXX=m
1213# 1248#
1214# Miscellaneous I2C Chip support 1249# Miscellaneous I2C Chip support
1215# 1250#
1216# CONFIG_DS1682 is not set
1217# CONFIG_SENSORS_TSL2550 is not set 1251# CONFIG_SENSORS_TSL2550 is not set
1218# CONFIG_I2C_DEBUG_CORE is not set 1252# CONFIG_I2C_DEBUG_CORE is not set
1219# CONFIG_I2C_DEBUG_ALGO is not set 1253# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1259,6 +1293,7 @@ CONFIG_SENSORS_GL518SM=m
1259# CONFIG_SENSORS_GL520SM is not set 1293# CONFIG_SENSORS_GL520SM is not set
1260CONFIG_SENSORS_IT87=m 1294CONFIG_SENSORS_IT87=m
1261# CONFIG_SENSORS_LM63 is not set 1295# CONFIG_SENSORS_LM63 is not set
1296# CONFIG_SENSORS_LM73 is not set
1262CONFIG_SENSORS_LM75=m 1297CONFIG_SENSORS_LM75=m
1263CONFIG_SENSORS_LM77=m 1298CONFIG_SENSORS_LM77=m
1264CONFIG_SENSORS_LM78=m 1299CONFIG_SENSORS_LM78=m
@@ -1297,6 +1332,7 @@ CONFIG_SENSORS_W83L785TS=m
1297# CONFIG_SENSORS_W83L786NG is not set 1332# CONFIG_SENSORS_W83L786NG is not set
1298CONFIG_SENSORS_W83627HF=m 1333CONFIG_SENSORS_W83627HF=m
1299# CONFIG_SENSORS_W83627EHF is not set 1334# CONFIG_SENSORS_W83627EHF is not set
1335# CONFIG_SENSORS_LIS3_I2C is not set
1300# CONFIG_THERMAL is not set 1336# CONFIG_THERMAL is not set
1301CONFIG_WATCHDOG=y 1337CONFIG_WATCHDOG=y
1302# CONFIG_WATCHDOG_NOWAYOUT is not set 1338# CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -1333,7 +1369,6 @@ CONFIG_SSB_POSSIBLE=y
1333# CONFIG_HTC_PASIC3 is not set 1369# CONFIG_HTC_PASIC3 is not set
1334# CONFIG_MFD_TMIO is not set 1370# CONFIG_MFD_TMIO is not set
1335# CONFIG_MFD_WM8400 is not set 1371# CONFIG_MFD_WM8400 is not set
1336# CONFIG_MFD_WM831X is not set
1337# CONFIG_MFD_WM8350_I2C is not set 1372# CONFIG_MFD_WM8350_I2C is not set
1338# CONFIG_MFD_PCF50633 is not set 1373# CONFIG_MFD_PCF50633 is not set
1339# CONFIG_AB3100_CORE is not set 1374# CONFIG_AB3100_CORE is not set
@@ -1392,6 +1427,7 @@ CONFIG_USB_MON=m
1392CONFIG_USB_EHCI_HCD=m 1427CONFIG_USB_EHCI_HCD=m
1393CONFIG_USB_EHCI_ROOT_HUB_TT=y 1428CONFIG_USB_EHCI_ROOT_HUB_TT=y
1394# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1429# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1430# CONFIG_XPS_USB_HCD_XILINX is not set
1395CONFIG_USB_EHCI_HCD_PPC_OF=y 1431CONFIG_USB_EHCI_HCD_PPC_OF=y
1396# CONFIG_USB_OXU210HP_HCD is not set 1432# CONFIG_USB_OXU210HP_HCD is not set
1397# CONFIG_USB_ISP116X_HCD is not set 1433# CONFIG_USB_ISP116X_HCD is not set
@@ -1923,7 +1959,6 @@ CONFIG_SECURITY=y
1923CONFIG_SECURITY_NETWORK=y 1959CONFIG_SECURITY_NETWORK=y
1924# CONFIG_SECURITY_NETWORK_XFRM is not set 1960# CONFIG_SECURITY_NETWORK_XFRM is not set
1925# CONFIG_SECURITY_PATH is not set 1961# CONFIG_SECURITY_PATH is not set
1926# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1927CONFIG_LSM_MMAP_MIN_ADDR=65536 1962CONFIG_LSM_MMAP_MIN_ADDR=65536
1928CONFIG_SECURITY_SELINUX=y 1963CONFIG_SECURITY_SELINUX=y
1929CONFIG_SECURITY_SELINUX_BOOTPARAM=y 1964CONFIG_SECURITY_SELINUX_BOOTPARAM=y
@@ -1934,6 +1969,11 @@ CONFIG_SECURITY_SELINUX_AVC_STATS=y
1934CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 1969CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
1935# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set 1970# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
1936# CONFIG_SECURITY_TOMOYO is not set 1971# CONFIG_SECURITY_TOMOYO is not set
1972CONFIG_DEFAULT_SECURITY_SELINUX=y
1973# CONFIG_DEFAULT_SECURITY_SMACK is not set
1974# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1975# CONFIG_DEFAULT_SECURITY_DAC is not set
1976CONFIG_DEFAULT_SECURITY="selinux"
1937CONFIG_CRYPTO=y 1977CONFIG_CRYPTO=y
1938 1978
1939# 1979#
diff --git a/arch/powerpc/configs/ep8248e_defconfig b/arch/powerpc/configs/ep8248e_defconfig
index ef5edc7203f5..79105413884e 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:06 2009 4# Wed Jan 6 09:23:59 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -36,6 +36,7 @@ CONFIG_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 37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
41CONFIG_TRACE_IRQFLAGS_SUPPORT=y 42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y
59CONFIG_GENERIC_BUG=y 60CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y 61CONFIG_DTC=y
61# CONFIG_DEFAULT_UIMAGE is not set 62# CONFIG_DEFAULT_UIMAGE is not set
63CONFIG_ARCH_HIBERNATION_POSSIBLE=y
62# CONFIG_PPC_DCR_NATIVE is not set 64# CONFIG_PPC_DCR_NATIVE is not set
63# CONFIG_PPC_DCR_MMIO is not set 65# CONFIG_PPC_DCR_MMIO is not set
64CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 66CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -85,6 +87,7 @@ CONFIG_SYSVIPC_SYSCTL=y
85# 87#
86CONFIG_TREE_RCU=y 88CONFIG_TREE_RCU=y
87# CONFIG_TREE_PREEMPT_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
90# CONFIG_TINY_RCU is not set
88# CONFIG_RCU_TRACE is not set 91# CONFIG_RCU_TRACE is not set
89CONFIG_RCU_FANOUT=32 92CONFIG_RCU_FANOUT=32
90# CONFIG_RCU_FANOUT_EXACT is not set 93# CONFIG_RCU_FANOUT_EXACT is not set
@@ -160,14 +163,41 @@ CONFIG_BLK_DEV_BSG=y
160# IO Schedulers 163# IO Schedulers
161# 164#
162CONFIG_IOSCHED_NOOP=y 165CONFIG_IOSCHED_NOOP=y
163# CONFIG_IOSCHED_AS is not set
164CONFIG_IOSCHED_DEADLINE=y 166CONFIG_IOSCHED_DEADLINE=y
165# CONFIG_IOSCHED_CFQ is not set 167# CONFIG_IOSCHED_CFQ is not set
166# CONFIG_DEFAULT_AS is not set
167CONFIG_DEFAULT_DEADLINE=y 168CONFIG_DEFAULT_DEADLINE=y
168# CONFIG_DEFAULT_CFQ is not set 169# CONFIG_DEFAULT_CFQ is not set
169# CONFIG_DEFAULT_NOOP is not set 170# CONFIG_DEFAULT_NOOP is not set
170CONFIG_DEFAULT_IOSCHED="deadline" 171CONFIG_DEFAULT_IOSCHED="deadline"
172# CONFIG_INLINE_SPIN_TRYLOCK is not set
173# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
174# CONFIG_INLINE_SPIN_LOCK is not set
175# CONFIG_INLINE_SPIN_LOCK_BH is not set
176# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
177# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
178CONFIG_INLINE_SPIN_UNLOCK=y
179# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
180CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
181# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
182# CONFIG_INLINE_READ_TRYLOCK is not set
183# CONFIG_INLINE_READ_LOCK is not set
184# CONFIG_INLINE_READ_LOCK_BH is not set
185# CONFIG_INLINE_READ_LOCK_IRQ is not set
186# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
187CONFIG_INLINE_READ_UNLOCK=y
188# CONFIG_INLINE_READ_UNLOCK_BH is not set
189CONFIG_INLINE_READ_UNLOCK_IRQ=y
190# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
191# CONFIG_INLINE_WRITE_TRYLOCK is not set
192# CONFIG_INLINE_WRITE_LOCK is not set
193# CONFIG_INLINE_WRITE_LOCK_BH is not set
194# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
195# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
196CONFIG_INLINE_WRITE_UNLOCK=y
197# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
198CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
199# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
200# CONFIG_MUTEX_SPIN_ON_OWNER is not set
171# CONFIG_FREEZER is not set 201# CONFIG_FREEZER is not set
172 202
173# 203#
@@ -237,6 +267,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
237CONFIG_ARCH_HAS_WALK_MEMORY=y 267CONFIG_ARCH_HAS_WALK_MEMORY=y
238CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 268CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
239# CONFIG_CRASH_DUMP is not set 269# CONFIG_CRASH_DUMP is not set
270CONFIG_SPARSE_IRQ=y
240CONFIG_MAX_ACTIVE_REGIONS=32 271CONFIG_MAX_ACTIVE_REGIONS=32
241CONFIG_ARCH_FLATMEM_ENABLE=y 272CONFIG_ARCH_FLATMEM_ENABLE=y
242CONFIG_ARCH_POPULATES_NODE_MAP=y 273CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -249,8 +280,6 @@ CONFIG_MIGRATION=y
249CONFIG_ZONE_DMA_FLAG=1 280CONFIG_ZONE_DMA_FLAG=1
250CONFIG_BOUNCE=y 281CONFIG_BOUNCE=y
251CONFIG_VIRT_TO_BUS=y 282CONFIG_VIRT_TO_BUS=y
252CONFIG_HAVE_MLOCK=y
253CONFIG_HAVE_MLOCKED_PAGE_BIT=y
254# CONFIG_KSM is not set 283# CONFIG_KSM is not set
255CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 284CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
256CONFIG_PPC_4K_PAGES=y 285CONFIG_PPC_4K_PAGES=y
@@ -400,9 +429,6 @@ CONFIG_NETFILTER_ADVANCED=y
400# CONFIG_BT is not set 429# CONFIG_BT is not set
401CONFIG_WIRELESS=y 430CONFIG_WIRELESS=y
402# CONFIG_CFG80211 is not set 431# CONFIG_CFG80211 is not set
403CONFIG_CFG80211_DEFAULT_PS_VALUE=0
404CONFIG_WIRELESS_OLD_REGULATORY=y
405# CONFIG_WIRELESS_EXT is not set
406# CONFIG_LIB80211 is not set 432# CONFIG_LIB80211 is not set
407 433
408# 434#
@@ -523,6 +549,10 @@ CONFIG_BLK_DEV=y
523# CONFIG_BLK_DEV_COW_COMMON is not set 549# CONFIG_BLK_DEV_COW_COMMON is not set
524CONFIG_BLK_DEV_LOOP=y 550CONFIG_BLK_DEV_LOOP=y
525# CONFIG_BLK_DEV_CRYPTOLOOP is not set 551# CONFIG_BLK_DEV_CRYPTOLOOP is not set
552
553#
554# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
555#
526# CONFIG_BLK_DEV_NBD is not set 556# CONFIG_BLK_DEV_NBD is not set
527# CONFIG_BLK_DEV_SX8 is not set 557# CONFIG_BLK_DEV_SX8 is not set
528# CONFIG_BLK_DEV_RAM is not set 558# CONFIG_BLK_DEV_RAM is not set
@@ -553,7 +583,7 @@ CONFIG_HAVE_IDE=y
553# 583#
554 584
555# 585#
556# See the help texts for more information. 586# The newer stack is recommended.
557# 587#
558# CONFIG_FIREWIRE is not set 588# CONFIG_FIREWIRE is not set
559# CONFIG_IEEE1394 is not set 589# CONFIG_IEEE1394 is not set
@@ -658,8 +688,9 @@ CONFIG_CHELSIO_T3_DEPENDS=y
658# CONFIG_BE2NET is not set 688# CONFIG_BE2NET is not set
659# CONFIG_TR is not set 689# CONFIG_TR is not set
660CONFIG_WLAN=y 690CONFIG_WLAN=y
661# CONFIG_WLAN_PRE80211 is not set 691# CONFIG_AIRO is not set
662# CONFIG_WLAN_80211 is not set 692# CONFIG_ATMEL is not set
693# CONFIG_HOSTAP is not set
663 694
664# 695#
665# Enable WiMAX (Networking options) to see the WiMAX drivers 696# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -670,6 +701,7 @@ CONFIG_WLAN=y
670# CONFIG_SLIP is not set 701# CONFIG_SLIP is not set
671# CONFIG_NETPOLL is not set 702# CONFIG_NETPOLL is not set
672# CONFIG_NET_POLL_CONTROLLER is not set 703# CONFIG_NET_POLL_CONTROLLER is not set
704# CONFIG_VMXNET3 is not set
673# CONFIG_ISDN is not set 705# CONFIG_ISDN is not set
674# CONFIG_PHONE is not set 706# CONFIG_PHONE is not set
675 707
@@ -705,6 +737,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
705CONFIG_SERIAL_CPM=y 737CONFIG_SERIAL_CPM=y
706CONFIG_SERIAL_CPM_CONSOLE=y 738CONFIG_SERIAL_CPM_CONSOLE=y
707# CONFIG_SERIAL_JSM is not set 739# CONFIG_SERIAL_JSM is not set
740# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
708CONFIG_UNIX98_PTYS=y 741CONFIG_UNIX98_PTYS=y
709# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 742# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
710CONFIG_LEGACY_PTYS=y 743CONFIG_LEGACY_PTYS=y
@@ -741,6 +774,7 @@ CONFIG_GPIOLIB=y
741# 774#
742# PCI GPIO expanders: 775# PCI GPIO expanders:
743# 776#
777# CONFIG_GPIO_CS5535 is not set
744# CONFIG_GPIO_BT8XX is not set 778# CONFIG_GPIO_BT8XX is not set
745# CONFIG_GPIO_LANGWELL is not set 779# CONFIG_GPIO_LANGWELL is not set
746 780
@@ -1061,7 +1095,11 @@ CONFIG_BDI_SWITCH=y
1061# CONFIG_KEYS is not set 1095# CONFIG_KEYS is not set
1062# CONFIG_SECURITY is not set 1096# CONFIG_SECURITY is not set
1063# CONFIG_SECURITYFS is not set 1097# CONFIG_SECURITYFS is not set
1064# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1098# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1099# CONFIG_DEFAULT_SECURITY_SMACK is not set
1100# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1101CONFIG_DEFAULT_SECURITY_DAC=y
1102CONFIG_DEFAULT_SECURITY=""
1065CONFIG_CRYPTO=y 1103CONFIG_CRYPTO=y
1066 1104
1067# 1105#
diff --git a/arch/powerpc/configs/ep88xc_defconfig b/arch/powerpc/configs/ep88xc_defconfig
index 73ef9be41280..58f7ca71a59d 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:07 2009 4# Wed Jan 6 09:24:00 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
32# 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 33# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_NR_IRQS=512
35CONFIG_STACKTRACE_SUPPORT=y 36CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_HAVE_LATENCYTOP_SUPPORT=y 37CONFIG_HAVE_LATENCYTOP_SUPPORT=y
37CONFIG_TRACE_IRQFLAGS_SUPPORT=y 38CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -54,6 +55,7 @@ CONFIG_AUDIT_ARCH=y
54CONFIG_GENERIC_BUG=y 55CONFIG_GENERIC_BUG=y
55CONFIG_DTC=y 56CONFIG_DTC=y
56# CONFIG_DEFAULT_UIMAGE is not set 57# CONFIG_DEFAULT_UIMAGE is not set
58CONFIG_ARCH_HIBERNATION_POSSIBLE=y
57# CONFIG_PPC_DCR_NATIVE is not set 59# CONFIG_PPC_DCR_NATIVE is not set
58# CONFIG_PPC_DCR_MMIO is not set 60# CONFIG_PPC_DCR_MMIO is not set
59CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 61CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -81,6 +83,7 @@ CONFIG_SYSVIPC_SYSCTL=y
81# 83#
82CONFIG_TREE_RCU=y 84CONFIG_TREE_RCU=y
83# CONFIG_TREE_PREEMPT_RCU is not set 85# CONFIG_TREE_PREEMPT_RCU is not set
86# CONFIG_TINY_RCU is not set
84# CONFIG_RCU_TRACE is not set 87# CONFIG_RCU_TRACE is not set
85CONFIG_RCU_FANOUT=32 88CONFIG_RCU_FANOUT=32
86# CONFIG_RCU_FANOUT_EXACT is not set 89# CONFIG_RCU_FANOUT_EXACT is not set
@@ -159,14 +162,41 @@ CONFIG_LBDAF=y
159# IO Schedulers 162# IO Schedulers
160# 163#
161CONFIG_IOSCHED_NOOP=y 164CONFIG_IOSCHED_NOOP=y
162# CONFIG_IOSCHED_AS is not set
163CONFIG_IOSCHED_DEADLINE=y 165CONFIG_IOSCHED_DEADLINE=y
164# CONFIG_IOSCHED_CFQ is not set 166# CONFIG_IOSCHED_CFQ is not set
165# CONFIG_DEFAULT_AS is not set
166CONFIG_DEFAULT_DEADLINE=y 167CONFIG_DEFAULT_DEADLINE=y
167# CONFIG_DEFAULT_CFQ is not set 168# CONFIG_DEFAULT_CFQ is not set
168# CONFIG_DEFAULT_NOOP is not set 169# CONFIG_DEFAULT_NOOP is not set
169CONFIG_DEFAULT_IOSCHED="deadline" 170CONFIG_DEFAULT_IOSCHED="deadline"
171# CONFIG_INLINE_SPIN_TRYLOCK is not set
172# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
173# CONFIG_INLINE_SPIN_LOCK is not set
174# CONFIG_INLINE_SPIN_LOCK_BH is not set
175# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
176# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
177CONFIG_INLINE_SPIN_UNLOCK=y
178# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
179CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
180# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
181# CONFIG_INLINE_READ_TRYLOCK is not set
182# CONFIG_INLINE_READ_LOCK is not set
183# CONFIG_INLINE_READ_LOCK_BH is not set
184# CONFIG_INLINE_READ_LOCK_IRQ is not set
185# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
186CONFIG_INLINE_READ_UNLOCK=y
187# CONFIG_INLINE_READ_UNLOCK_BH is not set
188CONFIG_INLINE_READ_UNLOCK_IRQ=y
189# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
190# CONFIG_INLINE_WRITE_TRYLOCK is not set
191# CONFIG_INLINE_WRITE_LOCK is not set
192# CONFIG_INLINE_WRITE_LOCK_BH is not set
193# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
194# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
195CONFIG_INLINE_WRITE_UNLOCK=y
196# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
197CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
198# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
199# CONFIG_MUTEX_SPIN_ON_OWNER is not set
170# CONFIG_FREEZER is not set 200# CONFIG_FREEZER is not set
171 201
172# 202#
@@ -241,6 +271,7 @@ CONFIG_8XX_MINIMAL_FPEMU=y
241CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 271CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
242CONFIG_ARCH_HAS_WALK_MEMORY=y 272CONFIG_ARCH_HAS_WALK_MEMORY=y
243CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 273CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
274CONFIG_SPARSE_IRQ=y
244CONFIG_MAX_ACTIVE_REGIONS=32 275CONFIG_MAX_ACTIVE_REGIONS=32
245CONFIG_ARCH_FLATMEM_ENABLE=y 276CONFIG_ARCH_FLATMEM_ENABLE=y
246CONFIG_ARCH_POPULATES_NODE_MAP=y 277CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -257,8 +288,6 @@ CONFIG_MIGRATION=y
257CONFIG_ZONE_DMA_FLAG=1 288CONFIG_ZONE_DMA_FLAG=1
258CONFIG_BOUNCE=y 289CONFIG_BOUNCE=y
259CONFIG_VIRT_TO_BUS=y 290CONFIG_VIRT_TO_BUS=y
260CONFIG_HAVE_MLOCK=y
261CONFIG_HAVE_MLOCKED_PAGE_BIT=y
262# CONFIG_KSM is not set 291# CONFIG_KSM is not set
263CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 292CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
264CONFIG_PPC_4K_PAGES=y 293CONFIG_PPC_4K_PAGES=y
@@ -372,9 +401,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
372# CONFIG_AF_RXRPC is not set 401# CONFIG_AF_RXRPC is not set
373CONFIG_WIRELESS=y 402CONFIG_WIRELESS=y
374# CONFIG_CFG80211 is not set 403# CONFIG_CFG80211 is not set
375CONFIG_CFG80211_DEFAULT_PS_VALUE=0
376CONFIG_WIRELESS_OLD_REGULATORY=y
377# CONFIG_WIRELESS_EXT is not set
378# CONFIG_LIB80211 is not set 404# CONFIG_LIB80211 is not set
379 405
380# 406#
@@ -545,8 +571,7 @@ CONFIG_FS_ENET_MDIO_FEC=y
545# CONFIG_NETDEV_1000 is not set 571# CONFIG_NETDEV_1000 is not set
546# CONFIG_NETDEV_10000 is not set 572# CONFIG_NETDEV_10000 is not set
547CONFIG_WLAN=y 573CONFIG_WLAN=y
548# CONFIG_WLAN_PRE80211 is not set 574# CONFIG_HOSTAP is not set
549# CONFIG_WLAN_80211 is not set
550 575
551# 576#
552# Enable WiMAX (Networking options) to see the WiMAX drivers 577# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -591,6 +616,7 @@ CONFIG_SERIAL_CORE=y
591CONFIG_SERIAL_CORE_CONSOLE=y 616CONFIG_SERIAL_CORE_CONSOLE=y
592CONFIG_SERIAL_CPM=y 617CONFIG_SERIAL_CPM=y
593CONFIG_SERIAL_CPM_CONSOLE=y 618CONFIG_SERIAL_CPM_CONSOLE=y
619# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
594CONFIG_UNIX98_PTYS=y 620CONFIG_UNIX98_PTYS=y
595# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 621# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
596# CONFIG_LEGACY_PTYS is not set 622# CONFIG_LEGACY_PTYS is not set
@@ -851,6 +877,7 @@ CONFIG_DEBUG_INFO=y
851# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set 877# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
852# CONFIG_FAULT_INJECTION is not set 878# CONFIG_FAULT_INJECTION is not set
853# CONFIG_LATENCYTOP is not set 879# CONFIG_LATENCYTOP is not set
880# CONFIG_SYSCTL_SYSCALL_CHECK is not set
854# CONFIG_DEBUG_PAGEALLOC is not set 881# CONFIG_DEBUG_PAGEALLOC is not set
855CONFIG_HAVE_FUNCTION_TRACER=y 882CONFIG_HAVE_FUNCTION_TRACER=y
856CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 883CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
@@ -893,7 +920,11 @@ CONFIG_PRINT_STACK_DEPTH=64
893# CONFIG_KEYS is not set 920# CONFIG_KEYS is not set
894# CONFIG_SECURITY is not set 921# CONFIG_SECURITY is not set
895# CONFIG_SECURITYFS is not set 922# CONFIG_SECURITYFS is not set
896# CONFIG_SECURITY_FILE_CAPABILITIES is not set 923# CONFIG_DEFAULT_SECURITY_SELINUX is not set
924# CONFIG_DEFAULT_SECURITY_SMACK is not set
925# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
926CONFIG_DEFAULT_SECURITY_DAC=y
927CONFIG_DEFAULT_SECURITY=""
897# CONFIG_CRYPTO is not set 928# CONFIG_CRYPTO is not set
898CONFIG_PPC_CLOCK=y 929CONFIG_PPC_CLOCK=y
899CONFIG_PPC_LIB_RHEAP=y 930CONFIG_PPC_LIB_RHEAP=y
diff --git a/arch/powerpc/configs/linkstation_defconfig b/arch/powerpc/configs/linkstation_defconfig
index 63c3e8de8f16..9a0c981277eb 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:08 2009 4# Wed Jan 6 09:24:01 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -36,6 +36,7 @@ CONFIG_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 37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
41CONFIG_TRACE_IRQFLAGS_SUPPORT=y 42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -58,6 +59,7 @@ CONFIG_AUDIT_ARCH=y
58CONFIG_GENERIC_BUG=y 59CONFIG_GENERIC_BUG=y
59CONFIG_DTC=y 60CONFIG_DTC=y
60CONFIG_DEFAULT_UIMAGE=y 61CONFIG_DEFAULT_UIMAGE=y
62CONFIG_ARCH_HIBERNATION_POSSIBLE=y
61# CONFIG_PPC_DCR_NATIVE is not set 63# CONFIG_PPC_DCR_NATIVE is not set
62# CONFIG_PPC_DCR_MMIO is not set 64# CONFIG_PPC_DCR_MMIO is not set
63CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 65CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -86,6 +88,7 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
86# 88#
87CONFIG_TREE_RCU=y 89CONFIG_TREE_RCU=y
88# CONFIG_TREE_PREEMPT_RCU is not set 90# CONFIG_TREE_PREEMPT_RCU is not set
91# CONFIG_TINY_RCU is not set
89# CONFIG_RCU_TRACE is not set 92# CONFIG_RCU_TRACE is not set
90CONFIG_RCU_FANOUT=32 93CONFIG_RCU_FANOUT=32
91# CONFIG_RCU_FANOUT_EXACT is not set 94# CONFIG_RCU_FANOUT_EXACT is not set
@@ -181,14 +184,41 @@ CONFIG_LBDAF=y
181# IO Schedulers 184# IO Schedulers
182# 185#
183CONFIG_IOSCHED_NOOP=y 186CONFIG_IOSCHED_NOOP=y
184CONFIG_IOSCHED_AS=y
185CONFIG_IOSCHED_DEADLINE=y 187CONFIG_IOSCHED_DEADLINE=y
186CONFIG_IOSCHED_CFQ=y 188CONFIG_IOSCHED_CFQ=y
187CONFIG_DEFAULT_AS=y
188# CONFIG_DEFAULT_DEADLINE is not set 189# CONFIG_DEFAULT_DEADLINE is not set
189# CONFIG_DEFAULT_CFQ is not set 190CONFIG_DEFAULT_CFQ=y
190# CONFIG_DEFAULT_NOOP is not set 191# CONFIG_DEFAULT_NOOP is not set
191CONFIG_DEFAULT_IOSCHED="anticipatory" 192CONFIG_DEFAULT_IOSCHED="cfq"
193# CONFIG_INLINE_SPIN_TRYLOCK is not set
194# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
195# CONFIG_INLINE_SPIN_LOCK is not set
196# CONFIG_INLINE_SPIN_LOCK_BH is not set
197# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
198# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
199CONFIG_INLINE_SPIN_UNLOCK=y
200# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
201CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
202# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
203# CONFIG_INLINE_READ_TRYLOCK is not set
204# CONFIG_INLINE_READ_LOCK is not set
205# CONFIG_INLINE_READ_LOCK_BH is not set
206# CONFIG_INLINE_READ_LOCK_IRQ is not set
207# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
208CONFIG_INLINE_READ_UNLOCK=y
209# CONFIG_INLINE_READ_UNLOCK_BH is not set
210CONFIG_INLINE_READ_UNLOCK_IRQ=y
211# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
212# CONFIG_INLINE_WRITE_TRYLOCK is not set
213# CONFIG_INLINE_WRITE_LOCK is not set
214# CONFIG_INLINE_WRITE_LOCK_BH is not set
215# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
216# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
217CONFIG_INLINE_WRITE_UNLOCK=y
218# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
219CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
220# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
221# CONFIG_MUTEX_SPIN_ON_OWNER is not set
192# CONFIG_FREEZER is not set 222# CONFIG_FREEZER is not set
193 223
194# 224#
@@ -215,6 +245,8 @@ CONFIG_LINKSTATION=y
215CONFIG_MPC10X_BRIDGE=y 245CONFIG_MPC10X_BRIDGE=y
216CONFIG_MPC10X_OPENPIC=y 246CONFIG_MPC10X_OPENPIC=y
217# CONFIG_MPC10X_STORE_GATHERING is not set 247# CONFIG_MPC10X_STORE_GATHERING is not set
248# CONFIG_GAMECUBE is not set
249# CONFIG_WII is not set
218# CONFIG_AMIGAONE is not set 250# CONFIG_AMIGAONE is not set
219CONFIG_PPC_OF_BOOT_TRAMPOLINE=y 251CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
220# CONFIG_IPIC is not set 252# CONFIG_IPIC is not set
@@ -261,6 +293,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
261CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 293CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
262# CONFIG_KEXEC is not set 294# CONFIG_KEXEC is not set
263# CONFIG_CRASH_DUMP is not set 295# CONFIG_CRASH_DUMP is not set
296CONFIG_SPARSE_IRQ=y
264CONFIG_MAX_ACTIVE_REGIONS=32 297CONFIG_MAX_ACTIVE_REGIONS=32
265CONFIG_ARCH_FLATMEM_ENABLE=y 298CONFIG_ARCH_FLATMEM_ENABLE=y
266CONFIG_ARCH_POPULATES_NODE_MAP=y 299CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -277,8 +310,6 @@ CONFIG_MIGRATION=y
277CONFIG_ZONE_DMA_FLAG=1 310CONFIG_ZONE_DMA_FLAG=1
278CONFIG_BOUNCE=y 311CONFIG_BOUNCE=y
279CONFIG_VIRT_TO_BUS=y 312CONFIG_VIRT_TO_BUS=y
280CONFIG_HAVE_MLOCK=y
281CONFIG_HAVE_MLOCKED_PAGE_BIT=y
282# CONFIG_KSM is not set 313# CONFIG_KSM is not set
283CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 314CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
284CONFIG_PPC_4K_PAGES=y 315CONFIG_PPC_4K_PAGES=y
@@ -517,10 +548,6 @@ CONFIG_IP_NF_ARP_MANGLE=m
517# CONFIG_AF_RXRPC is not set 548# CONFIG_AF_RXRPC is not set
518CONFIG_WIRELESS=y 549CONFIG_WIRELESS=y
519# CONFIG_CFG80211 is not set 550# CONFIG_CFG80211 is not set
520CONFIG_CFG80211_DEFAULT_PS_VALUE=0
521CONFIG_WIRELESS_OLD_REGULATORY=y
522CONFIG_WIRELESS_EXT=y
523CONFIG_WIRELESS_EXT_SYSFS=y
524# CONFIG_LIB80211 is not set 551# CONFIG_LIB80211 is not set
525 552
526# 553#
@@ -650,6 +677,10 @@ CONFIG_BLK_DEV=y
650# CONFIG_BLK_DEV_COW_COMMON is not set 677# CONFIG_BLK_DEV_COW_COMMON is not set
651CONFIG_BLK_DEV_LOOP=y 678CONFIG_BLK_DEV_LOOP=y
652# CONFIG_BLK_DEV_CRYPTOLOOP is not set 679# CONFIG_BLK_DEV_CRYPTOLOOP is not set
680
681#
682# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
683#
653# CONFIG_BLK_DEV_NBD is not set 684# CONFIG_BLK_DEV_NBD is not set
654# CONFIG_BLK_DEV_SX8 is not set 685# CONFIG_BLK_DEV_SX8 is not set
655# CONFIG_BLK_DEV_UB is not set 686# CONFIG_BLK_DEV_UB is not set
@@ -661,6 +692,7 @@ CONFIG_BLK_DEV_RAM_SIZE=8192
661# CONFIG_ATA_OVER_ETH is not set 692# CONFIG_ATA_OVER_ETH is not set
662# CONFIG_BLK_DEV_HD is not set 693# CONFIG_BLK_DEV_HD is not set
663CONFIG_MISC_DEVICES=y 694CONFIG_MISC_DEVICES=y
695# CONFIG_AD525X_DPOT is not set
664# CONFIG_PHANTOM is not set 696# CONFIG_PHANTOM is not set
665# CONFIG_SGI_IOC4 is not set 697# CONFIG_SGI_IOC4 is not set
666# CONFIG_TIFM_CORE is not set 698# CONFIG_TIFM_CORE is not set
@@ -668,6 +700,7 @@ CONFIG_MISC_DEVICES=y
668# CONFIG_ENCLOSURE_SERVICES is not set 700# CONFIG_ENCLOSURE_SERVICES is not set
669# CONFIG_HP_ILO is not set 701# CONFIG_HP_ILO is not set
670# CONFIG_ISL29003 is not set 702# CONFIG_ISL29003 is not set
703# CONFIG_DS1682 is not set
671# CONFIG_C2PORT is not set 704# CONFIG_C2PORT is not set
672 705
673# 706#
@@ -720,7 +753,9 @@ CONFIG_SCSI_LOWLEVEL=y
720# CONFIG_SCSI_BNX2_ISCSI is not set 753# CONFIG_SCSI_BNX2_ISCSI is not set
721# CONFIG_BE2ISCSI is not set 754# CONFIG_BE2ISCSI is not set
722# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 755# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
756# CONFIG_SCSI_HPSA is not set
723# CONFIG_SCSI_3W_9XXX is not set 757# CONFIG_SCSI_3W_9XXX is not set
758# CONFIG_SCSI_3W_SAS is not set
724# CONFIG_SCSI_ACARD is not set 759# CONFIG_SCSI_ACARD is not set
725# CONFIG_SCSI_AACRAID is not set 760# CONFIG_SCSI_AACRAID is not set
726# CONFIG_SCSI_AIC7XXX is not set 761# CONFIG_SCSI_AIC7XXX is not set
@@ -759,6 +794,7 @@ CONFIG_SCSI_LOWLEVEL=y
759# CONFIG_SCSI_NSP32 is not set 794# CONFIG_SCSI_NSP32 is not set
760# CONFIG_SCSI_DEBUG is not set 795# CONFIG_SCSI_DEBUG is not set
761# CONFIG_SCSI_PMCRAID is not set 796# CONFIG_SCSI_PMCRAID is not set
797# CONFIG_SCSI_PM8001 is not set
762# CONFIG_SCSI_SRP is not set 798# CONFIG_SCSI_SRP is not set
763# CONFIG_SCSI_BFA_FC is not set 799# CONFIG_SCSI_BFA_FC is not set
764# CONFIG_SCSI_DH is not set 800# CONFIG_SCSI_DH is not set
@@ -814,15 +850,16 @@ CONFIG_PATA_IT821X=y
814# CONFIG_PATA_NS87415 is not set 850# CONFIG_PATA_NS87415 is not set
815# CONFIG_PATA_OPTI is not set 851# CONFIG_PATA_OPTI is not set
816# CONFIG_PATA_OPTIDMA is not set 852# CONFIG_PATA_OPTIDMA is not set
853# CONFIG_PATA_PDC2027X is not set
817# CONFIG_PATA_PDC_OLD is not set 854# CONFIG_PATA_PDC_OLD is not set
818# CONFIG_PATA_RADISYS is not set 855# CONFIG_PATA_RADISYS is not set
819# CONFIG_PATA_RDC is not set 856# CONFIG_PATA_RDC is not set
820# CONFIG_PATA_RZ1000 is not set 857# CONFIG_PATA_RZ1000 is not set
821# CONFIG_PATA_SC1200 is not set 858# CONFIG_PATA_SC1200 is not set
822# CONFIG_PATA_SERVERWORKS is not set 859# CONFIG_PATA_SERVERWORKS is not set
823# CONFIG_PATA_PDC2027X is not set
824CONFIG_PATA_SIL680=y 860CONFIG_PATA_SIL680=y
825# CONFIG_PATA_SIS is not set 861# CONFIG_PATA_SIS is not set
862# CONFIG_PATA_TOSHIBA is not set
826# CONFIG_PATA_VIA is not set 863# CONFIG_PATA_VIA is not set
827# CONFIG_PATA_WINBOND is not set 864# CONFIG_PATA_WINBOND is not set
828# CONFIG_PATA_PLATFORM is not set 865# CONFIG_PATA_PLATFORM is not set
@@ -839,7 +876,7 @@ CONFIG_PATA_SIL680=y
839# 876#
840 877
841# 878#
842# See the help texts for more information. 879# The newer stack is recommended.
843# 880#
844# CONFIG_FIREWIRE is not set 881# CONFIG_FIREWIRE is not set
845# CONFIG_IEEE1394 is not set 882# CONFIG_IEEE1394 is not set
@@ -934,8 +971,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y
934# CONFIG_BE2NET is not set 971# CONFIG_BE2NET is not set
935# CONFIG_TR is not set 972# CONFIG_TR is not set
936CONFIG_WLAN=y 973CONFIG_WLAN=y
937# CONFIG_WLAN_PRE80211 is not set 974# CONFIG_AIRO is not set
938# CONFIG_WLAN_80211 is not set 975# CONFIG_ATMEL is not set
976# CONFIG_PRISM54 is not set
977# CONFIG_USB_ZD1201 is not set
978# CONFIG_HOSTAP is not set
939 979
940# 980#
941# Enable WiMAX (Networking options) to see the WiMAX drivers 981# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -960,6 +1000,7 @@ CONFIG_NETCONSOLE=y
960CONFIG_NETPOLL=y 1000CONFIG_NETPOLL=y
961# CONFIG_NETPOLL_TRAP is not set 1001# CONFIG_NETPOLL_TRAP is not set
962CONFIG_NET_POLL_CONTROLLER=y 1002CONFIG_NET_POLL_CONTROLLER=y
1003# CONFIG_VMXNET3 is not set
963# CONFIG_ISDN is not set 1004# CONFIG_ISDN is not set
964# CONFIG_PHONE is not set 1005# CONFIG_PHONE is not set
965 1006
@@ -969,6 +1010,7 @@ CONFIG_NET_POLL_CONTROLLER=y
969CONFIG_INPUT=y 1010CONFIG_INPUT=y
970# CONFIG_INPUT_FF_MEMLESS is not set 1011# CONFIG_INPUT_FF_MEMLESS is not set
971# CONFIG_INPUT_POLLDEV is not set 1012# CONFIG_INPUT_POLLDEV is not set
1013# CONFIG_INPUT_SPARSEKMAP is not set
972 1014
973# 1015#
974# Userland interfaces 1016# Userland interfaces
@@ -1007,6 +1049,7 @@ CONFIG_SERIO_SERPORT=y
1007# CONFIG_SERIO_PCIPS2 is not set 1049# CONFIG_SERIO_PCIPS2 is not set
1008# CONFIG_SERIO_RAW is not set 1050# CONFIG_SERIO_RAW is not set
1009# CONFIG_SERIO_XILINX_XPS_PS2 is not set 1051# CONFIG_SERIO_XILINX_XPS_PS2 is not set
1052# CONFIG_SERIO_ALTERA_PS2 is not set
1010# CONFIG_GAMEPORT is not set 1053# CONFIG_GAMEPORT is not set
1011 1054
1012# 1055#
@@ -1039,6 +1082,7 @@ CONFIG_SERIAL_CORE=y
1039CONFIG_SERIAL_CORE_CONSOLE=y 1082CONFIG_SERIAL_CORE_CONSOLE=y
1040# CONFIG_SERIAL_JSM is not set 1083# CONFIG_SERIAL_JSM is not set
1041# CONFIG_SERIAL_OF_PLATFORM is not set 1084# CONFIG_SERIAL_OF_PLATFORM is not set
1085# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
1042CONFIG_UNIX98_PTYS=y 1086CONFIG_UNIX98_PTYS=y
1043# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 1087# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
1044CONFIG_LEGACY_PTYS=y 1088CONFIG_LEGACY_PTYS=y
@@ -1096,11 +1140,6 @@ CONFIG_I2C_MPC=y
1096# CONFIG_I2C_TINY_USB is not set 1140# CONFIG_I2C_TINY_USB is not set
1097 1141
1098# 1142#
1099# Graphics adapter I2C/DDC channel drivers
1100#
1101# CONFIG_I2C_VOODOO3 is not set
1102
1103#
1104# Other I2C/SMBus bus drivers 1143# Other I2C/SMBus bus drivers
1105# 1144#
1106# CONFIG_I2C_PCA_PLATFORM is not set 1145# CONFIG_I2C_PCA_PLATFORM is not set
@@ -1109,7 +1148,6 @@ CONFIG_I2C_MPC=y
1109# 1148#
1110# Miscellaneous I2C Chip support 1149# Miscellaneous I2C Chip support
1111# 1150#
1112# CONFIG_DS1682 is not set
1113# CONFIG_SENSORS_TSL2550 is not set 1151# CONFIG_SENSORS_TSL2550 is not set
1114# CONFIG_I2C_DEBUG_CORE is not set 1152# CONFIG_I2C_DEBUG_CORE is not set
1115# CONFIG_I2C_DEBUG_ALGO is not set 1153# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1155,6 +1193,7 @@ CONFIG_HWMON=y
1155# CONFIG_SENSORS_GL520SM is not set 1193# CONFIG_SENSORS_GL520SM is not set
1156# CONFIG_SENSORS_IT87 is not set 1194# CONFIG_SENSORS_IT87 is not set
1157# CONFIG_SENSORS_LM63 is not set 1195# CONFIG_SENSORS_LM63 is not set
1196# CONFIG_SENSORS_LM73 is not set
1158# CONFIG_SENSORS_LM75 is not set 1197# CONFIG_SENSORS_LM75 is not set
1159# CONFIG_SENSORS_LM77 is not set 1198# CONFIG_SENSORS_LM77 is not set
1160# CONFIG_SENSORS_LM78 is not set 1199# CONFIG_SENSORS_LM78 is not set
@@ -1193,6 +1232,7 @@ CONFIG_HWMON=y
1193# CONFIG_SENSORS_W83L786NG is not set 1232# CONFIG_SENSORS_W83L786NG is not set
1194# CONFIG_SENSORS_W83627HF is not set 1233# CONFIG_SENSORS_W83627HF is not set
1195# CONFIG_SENSORS_W83627EHF is not set 1234# CONFIG_SENSORS_W83627EHF is not set
1235# CONFIG_SENSORS_LIS3_I2C is not set
1196# CONFIG_THERMAL is not set 1236# CONFIG_THERMAL is not set
1197# CONFIG_WATCHDOG is not set 1237# CONFIG_WATCHDOG is not set
1198CONFIG_SSB_POSSIBLE=y 1238CONFIG_SSB_POSSIBLE=y
@@ -1211,11 +1251,13 @@ CONFIG_SSB_POSSIBLE=y
1211# CONFIG_TWL4030_CORE is not set 1251# CONFIG_TWL4030_CORE is not set
1212# CONFIG_MFD_TMIO is not set 1252# CONFIG_MFD_TMIO is not set
1213# CONFIG_PMIC_DA903X is not set 1253# CONFIG_PMIC_DA903X is not set
1254# CONFIG_PMIC_ADP5520 is not set
1214# CONFIG_MFD_WM8400 is not set 1255# CONFIG_MFD_WM8400 is not set
1215# CONFIG_MFD_WM831X is not set 1256# CONFIG_MFD_WM831X is not set
1216# CONFIG_MFD_WM8350_I2C is not set 1257# CONFIG_MFD_WM8350_I2C is not set
1217# CONFIG_MFD_PCF50633 is not set 1258# CONFIG_MFD_PCF50633 is not set
1218# CONFIG_AB3100_CORE is not set 1259# CONFIG_AB3100_CORE is not set
1260# CONFIG_MFD_88PM8607 is not set
1219# CONFIG_REGULATOR is not set 1261# CONFIG_REGULATOR is not set
1220# CONFIG_MEDIA_SUPPORT is not set 1262# CONFIG_MEDIA_SUPPORT is not set
1221 1263
@@ -1281,6 +1323,7 @@ CONFIG_USB_MON=y
1281CONFIG_USB_EHCI_HCD=y 1323CONFIG_USB_EHCI_HCD=y
1282# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1324# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1283# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1325# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1326# CONFIG_XPS_USB_HCD_XILINX is not set
1284# CONFIG_USB_EHCI_FSL is not set 1327# CONFIG_USB_EHCI_FSL is not set
1285CONFIG_USB_EHCI_HCD_PPC_OF=y 1328CONFIG_USB_EHCI_HCD_PPC_OF=y
1286# CONFIG_USB_OXU210HP_HCD is not set 1329# CONFIG_USB_OXU210HP_HCD is not set
@@ -1454,6 +1497,7 @@ CONFIG_RTC_DRV_RS5C372=y
1454# CONFIG_RTC_DRV_PCF8563 is not set 1497# CONFIG_RTC_DRV_PCF8563 is not set
1455# CONFIG_RTC_DRV_PCF8583 is not set 1498# CONFIG_RTC_DRV_PCF8583 is not set
1456# CONFIG_RTC_DRV_M41T80 is not set 1499# CONFIG_RTC_DRV_M41T80 is not set
1500# CONFIG_RTC_DRV_BQ32K is not set
1457# CONFIG_RTC_DRV_S35390A is not set 1501# CONFIG_RTC_DRV_S35390A is not set
1458# CONFIG_RTC_DRV_FM3130 is not set 1502# CONFIG_RTC_DRV_FM3130 is not set
1459# CONFIG_RTC_DRV_RX8581 is not set 1503# CONFIG_RTC_DRV_RX8581 is not set
@@ -1475,7 +1519,9 @@ CONFIG_RTC_DRV_RS5C372=y
1475# CONFIG_RTC_DRV_M48T86 is not set 1519# CONFIG_RTC_DRV_M48T86 is not set
1476# CONFIG_RTC_DRV_M48T35 is not set 1520# CONFIG_RTC_DRV_M48T35 is not set
1477# CONFIG_RTC_DRV_M48T59 is not set 1521# CONFIG_RTC_DRV_M48T59 is not set
1522# CONFIG_RTC_DRV_MSM6242 is not set
1478# CONFIG_RTC_DRV_BQ4802 is not set 1523# CONFIG_RTC_DRV_BQ4802 is not set
1524# CONFIG_RTC_DRV_RP5C01 is not set
1479# CONFIG_RTC_DRV_V3020 is not set 1525# CONFIG_RTC_DRV_V3020 is not set
1480 1526
1481# 1527#
@@ -1786,7 +1832,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1786# CONFIG_KEYS is not set 1832# CONFIG_KEYS is not set
1787# CONFIG_SECURITY is not set 1833# CONFIG_SECURITY is not set
1788# CONFIG_SECURITYFS is not set 1834# CONFIG_SECURITYFS is not set
1789# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1835# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1836# CONFIG_DEFAULT_SECURITY_SMACK is not set
1837# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1838CONFIG_DEFAULT_SECURITY_DAC=y
1839CONFIG_DEFAULT_SECURITY=""
1790CONFIG_CRYPTO=y 1840CONFIG_CRYPTO=y
1791 1841
1792# 1842#
diff --git a/arch/powerpc/configs/mgcoge_defconfig b/arch/powerpc/configs/mgcoge_defconfig
index 520b04a0def9..4c2c877f9363 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:09 2009 4# Wed Jan 6 09:24:02 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -36,6 +36,7 @@ CONFIG_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 37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
41CONFIG_TRACE_IRQFLAGS_SUPPORT=y 42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -59,7 +60,6 @@ CONFIG_AUDIT_ARCH=y
59CONFIG_GENERIC_BUG=y 60CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y 61CONFIG_DTC=y
61# CONFIG_DEFAULT_UIMAGE is not set 62# CONFIG_DEFAULT_UIMAGE is not set
62CONFIG_HIBERNATE_32=y
63CONFIG_ARCH_HIBERNATION_POSSIBLE=y 63CONFIG_ARCH_HIBERNATION_POSSIBLE=y
64# CONFIG_PPC_DCR_NATIVE is not set 64# CONFIG_PPC_DCR_NATIVE is not set
65# CONFIG_PPC_DCR_MMIO is not set 65# CONFIG_PPC_DCR_MMIO is not set
@@ -87,6 +87,7 @@ CONFIG_SYSVIPC_SYSCTL=y
87# 87#
88CONFIG_TREE_RCU=y 88CONFIG_TREE_RCU=y
89# CONFIG_TREE_PREEMPT_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
90# CONFIG_TINY_RCU is not set
90# CONFIG_RCU_TRACE is not set 91# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32 92CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set 93# CONFIG_RCU_FANOUT_EXACT is not set
@@ -168,14 +169,41 @@ CONFIG_BLK_DEV_BSG=y
168# IO Schedulers 169# IO Schedulers
169# 170#
170CONFIG_IOSCHED_NOOP=y 171CONFIG_IOSCHED_NOOP=y
171# CONFIG_IOSCHED_AS is not set
172CONFIG_IOSCHED_DEADLINE=y 172CONFIG_IOSCHED_DEADLINE=y
173# CONFIG_IOSCHED_CFQ is not set 173# CONFIG_IOSCHED_CFQ is not set
174# CONFIG_DEFAULT_AS is not set
175CONFIG_DEFAULT_DEADLINE=y 174CONFIG_DEFAULT_DEADLINE=y
176# CONFIG_DEFAULT_CFQ is not set 175# CONFIG_DEFAULT_CFQ is not set
177# CONFIG_DEFAULT_NOOP is not set 176# CONFIG_DEFAULT_NOOP is not set
178CONFIG_DEFAULT_IOSCHED="deadline" 177CONFIG_DEFAULT_IOSCHED="deadline"
178# CONFIG_INLINE_SPIN_TRYLOCK is not set
179# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
180# CONFIG_INLINE_SPIN_LOCK is not set
181# CONFIG_INLINE_SPIN_LOCK_BH is not set
182# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
183# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
184CONFIG_INLINE_SPIN_UNLOCK=y
185# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
186CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
187# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
188# CONFIG_INLINE_READ_TRYLOCK is not set
189# CONFIG_INLINE_READ_LOCK is not set
190# CONFIG_INLINE_READ_LOCK_BH is not set
191# CONFIG_INLINE_READ_LOCK_IRQ is not set
192# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
193CONFIG_INLINE_READ_UNLOCK=y
194# CONFIG_INLINE_READ_UNLOCK_BH is not set
195CONFIG_INLINE_READ_UNLOCK_IRQ=y
196# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
197# CONFIG_INLINE_WRITE_TRYLOCK is not set
198# CONFIG_INLINE_WRITE_LOCK is not set
199# CONFIG_INLINE_WRITE_LOCK_BH is not set
200# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
201# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
202CONFIG_INLINE_WRITE_UNLOCK=y
203# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
204CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
205# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
206# CONFIG_MUTEX_SPIN_ON_OWNER is not set
179# CONFIG_FREEZER is not set 207# CONFIG_FREEZER is not set
180 208
181# 209#
@@ -208,7 +236,8 @@ CONFIG_MPIC=y
208# CONFIG_MPIC_WEIRD is not set 236# CONFIG_MPIC_WEIRD is not set
209CONFIG_PPC_I8259=y 237CONFIG_PPC_I8259=y
210CONFIG_PPC_RTAS=y 238CONFIG_PPC_RTAS=y
211# CONFIG_RTAS_ERROR_LOGGING is not set 239CONFIG_RTAS_ERROR_LOGGING=y
240CONFIG_PPC_RTAS_DAEMON=y
212CONFIG_RTAS_PROC=y 241CONFIG_RTAS_PROC=y
213# CONFIG_MMIO_NVRAM is not set 242# CONFIG_MMIO_NVRAM is not set
214CONFIG_PPC_MPC106=y 243CONFIG_PPC_MPC106=y
@@ -250,6 +279,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
250CONFIG_ARCH_HAS_WALK_MEMORY=y 279CONFIG_ARCH_HAS_WALK_MEMORY=y
251CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 280CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
252# CONFIG_CRASH_DUMP is not set 281# CONFIG_CRASH_DUMP is not set
282CONFIG_SPARSE_IRQ=y
253CONFIG_MAX_ACTIVE_REGIONS=32 283CONFIG_MAX_ACTIVE_REGIONS=32
254CONFIG_ARCH_FLATMEM_ENABLE=y 284CONFIG_ARCH_FLATMEM_ENABLE=y
255CONFIG_ARCH_POPULATES_NODE_MAP=y 285CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -262,8 +292,6 @@ CONFIG_MIGRATION=y
262CONFIG_ZONE_DMA_FLAG=1 292CONFIG_ZONE_DMA_FLAG=1
263CONFIG_BOUNCE=y 293CONFIG_BOUNCE=y
264CONFIG_VIRT_TO_BUS=y 294CONFIG_VIRT_TO_BUS=y
265CONFIG_HAVE_MLOCK=y
266CONFIG_HAVE_MLOCKED_PAGE_BIT=y
267# CONFIG_KSM is not set 295# CONFIG_KSM is not set
268CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 296CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
269CONFIG_PPC_4K_PAGES=y 297CONFIG_PPC_4K_PAGES=y
@@ -395,9 +423,6 @@ CONFIG_NETFILTER_ADVANCED=y
395# CONFIG_BT is not set 423# CONFIG_BT is not set
396CONFIG_WIRELESS=y 424CONFIG_WIRELESS=y
397# CONFIG_CFG80211 is not set 425# CONFIG_CFG80211 is not set
398CONFIG_CFG80211_DEFAULT_PS_VALUE=0
399CONFIG_WIRELESS_OLD_REGULATORY=y
400# CONFIG_WIRELESS_EXT is not set
401# CONFIG_LIB80211 is not set 426# CONFIG_LIB80211 is not set
402 427
403# 428#
@@ -525,6 +550,10 @@ CONFIG_BLK_DEV=y
525# CONFIG_BLK_DEV_COW_COMMON is not set 550# CONFIG_BLK_DEV_COW_COMMON is not set
526CONFIG_BLK_DEV_LOOP=y 551CONFIG_BLK_DEV_LOOP=y
527# CONFIG_BLK_DEV_CRYPTOLOOP is not set 552# CONFIG_BLK_DEV_CRYPTOLOOP is not set
553
554#
555# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
556#
528# CONFIG_BLK_DEV_NBD is not set 557# CONFIG_BLK_DEV_NBD is not set
529# CONFIG_BLK_DEV_SX8 is not set 558# CONFIG_BLK_DEV_SX8 is not set
530CONFIG_BLK_DEV_RAM=y 559CONFIG_BLK_DEV_RAM=y
@@ -558,7 +587,7 @@ CONFIG_HAVE_IDE=y
558# 587#
559 588
560# 589#
561# See the help texts for more information. 590# The newer stack is recommended.
562# 591#
563# CONFIG_FIREWIRE is not set 592# CONFIG_FIREWIRE is not set
564# CONFIG_IEEE1394 is not set 593# CONFIG_IEEE1394 is not set
@@ -625,8 +654,9 @@ CONFIG_FS_ENET_MDIO_FCC=y
625# CONFIG_NETDEV_10000 is not set 654# CONFIG_NETDEV_10000 is not set
626# CONFIG_TR is not set 655# CONFIG_TR is not set
627CONFIG_WLAN=y 656CONFIG_WLAN=y
628# CONFIG_WLAN_PRE80211 is not set 657# CONFIG_AIRO is not set
629# CONFIG_WLAN_80211 is not set 658# CONFIG_ATMEL is not set
659# CONFIG_HOSTAP is not set
630 660
631# 661#
632# Enable WiMAX (Networking options) to see the WiMAX drivers 662# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -637,6 +667,7 @@ CONFIG_WLAN=y
637# CONFIG_SLIP is not set 667# CONFIG_SLIP is not set
638# CONFIG_NETPOLL is not set 668# CONFIG_NETPOLL is not set
639# CONFIG_NET_POLL_CONTROLLER is not set 669# CONFIG_NET_POLL_CONTROLLER is not set
670# CONFIG_VMXNET3 is not set
640# CONFIG_ISDN is not set 671# CONFIG_ISDN is not set
641# CONFIG_PHONE is not set 672# CONFIG_PHONE is not set
642 673
@@ -673,6 +704,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
673CONFIG_SERIAL_CPM=y 704CONFIG_SERIAL_CPM=y
674CONFIG_SERIAL_CPM_CONSOLE=y 705CONFIG_SERIAL_CPM_CONSOLE=y
675# CONFIG_SERIAL_JSM is not set 706# CONFIG_SERIAL_JSM is not set
707# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
676CONFIG_UNIX98_PTYS=y 708CONFIG_UNIX98_PTYS=y
677# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 709# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
678CONFIG_LEGACY_PTYS=y 710CONFIG_LEGACY_PTYS=y
@@ -734,11 +766,6 @@ CONFIG_I2C_CPM=y
734# CONFIG_I2C_PARPORT_LIGHT is not set 766# CONFIG_I2C_PARPORT_LIGHT is not set
735 767
736# 768#
737# Graphics adapter I2C/DDC channel drivers
738#
739# CONFIG_I2C_VOODOO3 is not set
740
741#
742# Other I2C/SMBus bus drivers 769# Other I2C/SMBus bus drivers
743# 770#
744# CONFIG_I2C_PCA_PLATFORM is not set 771# CONFIG_I2C_PCA_PLATFORM is not set
@@ -775,6 +802,7 @@ CONFIG_GPIOLIB=y
775# 802#
776# PCI GPIO expanders: 803# PCI GPIO expanders:
777# 804#
805# CONFIG_GPIO_CS5535 is not set
778# CONFIG_GPIO_BT8XX is not set 806# CONFIG_GPIO_BT8XX is not set
779# CONFIG_GPIO_LANGWELL is not set 807# CONFIG_GPIO_LANGWELL is not set
780 808
@@ -807,11 +835,13 @@ CONFIG_SSB_POSSIBLE=y
807# CONFIG_TWL4030_CORE is not set 835# CONFIG_TWL4030_CORE is not set
808# CONFIG_MFD_TMIO is not set 836# CONFIG_MFD_TMIO is not set
809# CONFIG_PMIC_DA903X is not set 837# CONFIG_PMIC_DA903X is not set
838# CONFIG_PMIC_ADP5520 is not set
810# CONFIG_MFD_WM8400 is not set 839# CONFIG_MFD_WM8400 is not set
811# CONFIG_MFD_WM831X is not set 840# CONFIG_MFD_WM831X is not set
812# CONFIG_MFD_WM8350_I2C is not set 841# CONFIG_MFD_WM8350_I2C is not set
813# CONFIG_MFD_PCF50633 is not set 842# CONFIG_MFD_PCF50633 is not set
814# CONFIG_AB3100_CORE is not set 843# CONFIG_AB3100_CORE is not set
844# CONFIG_MFD_88PM8607 is not set
815# CONFIG_REGULATOR is not set 845# CONFIG_REGULATOR is not set
816# CONFIG_MEDIA_SUPPORT is not set 846# CONFIG_MEDIA_SUPPORT is not set
817 847
@@ -1118,7 +1148,11 @@ CONFIG_BDI_SWITCH=y
1118# CONFIG_KEYS is not set 1148# CONFIG_KEYS is not set
1119# CONFIG_SECURITY is not set 1149# CONFIG_SECURITY is not set
1120# CONFIG_SECURITYFS is not set 1150# CONFIG_SECURITYFS is not set
1121# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1151# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1152# CONFIG_DEFAULT_SECURITY_SMACK is not set
1153# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1154CONFIG_DEFAULT_SECURITY_DAC=y
1155CONFIG_DEFAULT_SECURITY=""
1122CONFIG_CRYPTO=y 1156CONFIG_CRYPTO=y
1123 1157
1124# 1158#
diff --git a/arch/powerpc/configs/mgsuvd_defconfig b/arch/powerpc/configs/mgsuvd_defconfig
index 43c3c4fcdce3..9e090f2c7e36 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:10 2009 4# Wed Jan 6 09:24:03 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
32# 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 33# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_NR_IRQS=512
35CONFIG_STACKTRACE_SUPPORT=y 36CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_HAVE_LATENCYTOP_SUPPORT=y 37CONFIG_HAVE_LATENCYTOP_SUPPORT=y
37CONFIG_TRACE_IRQFLAGS_SUPPORT=y 38CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -53,6 +54,7 @@ CONFIG_OF=y
53CONFIG_AUDIT_ARCH=y 54CONFIG_AUDIT_ARCH=y
54CONFIG_DTC=y 55CONFIG_DTC=y
55# CONFIG_DEFAULT_UIMAGE is not set 56# CONFIG_DEFAULT_UIMAGE is not set
57CONFIG_ARCH_HIBERNATION_POSSIBLE=y
56# CONFIG_PPC_DCR_NATIVE is not set 58# CONFIG_PPC_DCR_NATIVE is not set
57# CONFIG_PPC_DCR_MMIO is not set 59# CONFIG_PPC_DCR_MMIO is not set
58CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 60CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -80,6 +82,7 @@ CONFIG_SYSVIPC_SYSCTL=y
80# 82#
81CONFIG_TREE_RCU=y 83CONFIG_TREE_RCU=y
82# CONFIG_TREE_PREEMPT_RCU is not set 84# CONFIG_TREE_PREEMPT_RCU is not set
85# CONFIG_TINY_RCU is not set
83# CONFIG_RCU_TRACE is not set 86# CONFIG_RCU_TRACE is not set
84CONFIG_RCU_FANOUT=32 87CONFIG_RCU_FANOUT=32
85# CONFIG_RCU_FANOUT_EXACT is not set 88# CONFIG_RCU_FANOUT_EXACT is not set
@@ -162,14 +165,41 @@ CONFIG_LBDAF=y
162# IO Schedulers 165# IO Schedulers
163# 166#
164CONFIG_IOSCHED_NOOP=y 167CONFIG_IOSCHED_NOOP=y
165CONFIG_IOSCHED_AS=y
166CONFIG_IOSCHED_DEADLINE=y 168CONFIG_IOSCHED_DEADLINE=y
167CONFIG_IOSCHED_CFQ=y 169CONFIG_IOSCHED_CFQ=y
168CONFIG_DEFAULT_AS=y
169# CONFIG_DEFAULT_DEADLINE is not set 170# CONFIG_DEFAULT_DEADLINE is not set
170# CONFIG_DEFAULT_CFQ is not set 171CONFIG_DEFAULT_CFQ=y
171# CONFIG_DEFAULT_NOOP is not set 172# CONFIG_DEFAULT_NOOP is not set
172CONFIG_DEFAULT_IOSCHED="anticipatory" 173CONFIG_DEFAULT_IOSCHED="cfq"
174# CONFIG_INLINE_SPIN_TRYLOCK is not set
175# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
176# CONFIG_INLINE_SPIN_LOCK is not set
177# CONFIG_INLINE_SPIN_LOCK_BH is not set
178# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
179# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
180CONFIG_INLINE_SPIN_UNLOCK=y
181# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
182CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
183# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
184# CONFIG_INLINE_READ_TRYLOCK is not set
185# CONFIG_INLINE_READ_LOCK is not set
186# CONFIG_INLINE_READ_LOCK_BH is not set
187# CONFIG_INLINE_READ_LOCK_IRQ is not set
188# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
189CONFIG_INLINE_READ_UNLOCK=y
190# CONFIG_INLINE_READ_UNLOCK_BH is not set
191CONFIG_INLINE_READ_UNLOCK_IRQ=y
192# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
193# CONFIG_INLINE_WRITE_TRYLOCK is not set
194# CONFIG_INLINE_WRITE_LOCK is not set
195# CONFIG_INLINE_WRITE_LOCK_BH is not set
196# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
197# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
198CONFIG_INLINE_WRITE_UNLOCK=y
199# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
200CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
201# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
202# CONFIG_MUTEX_SPIN_ON_OWNER is not set
173# CONFIG_FREEZER is not set 203# CONFIG_FREEZER is not set
174 204
175# 205#
@@ -244,6 +274,7 @@ CONFIG_MATH_EMULATION=y
244CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 274CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
245CONFIG_ARCH_HAS_WALK_MEMORY=y 275CONFIG_ARCH_HAS_WALK_MEMORY=y
246CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 276CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
277CONFIG_SPARSE_IRQ=y
247CONFIG_MAX_ACTIVE_REGIONS=32 278CONFIG_MAX_ACTIVE_REGIONS=32
248CONFIG_ARCH_FLATMEM_ENABLE=y 279CONFIG_ARCH_FLATMEM_ENABLE=y
249CONFIG_ARCH_POPULATES_NODE_MAP=y 280CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -260,8 +291,6 @@ CONFIG_MIGRATION=y
260CONFIG_ZONE_DMA_FLAG=1 291CONFIG_ZONE_DMA_FLAG=1
261CONFIG_BOUNCE=y 292CONFIG_BOUNCE=y
262CONFIG_VIRT_TO_BUS=y 293CONFIG_VIRT_TO_BUS=y
263CONFIG_HAVE_MLOCK=y
264CONFIG_HAVE_MLOCKED_PAGE_BIT=y
265# CONFIG_KSM is not set 294# CONFIG_KSM is not set
266CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 295CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
267CONFIG_PPC_4K_PAGES=y 296CONFIG_PPC_4K_PAGES=y
@@ -379,9 +408,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
379# CONFIG_AF_RXRPC is not set 408# CONFIG_AF_RXRPC is not set
380CONFIG_WIRELESS=y 409CONFIG_WIRELESS=y
381# CONFIG_CFG80211 is not set 410# CONFIG_CFG80211 is not set
382CONFIG_CFG80211_DEFAULT_PS_VALUE=0
383CONFIG_WIRELESS_OLD_REGULATORY=y
384# CONFIG_WIRELESS_EXT is not set
385# CONFIG_LIB80211 is not set 411# CONFIG_LIB80211 is not set
386 412
387# 413#
@@ -497,6 +523,10 @@ CONFIG_BLK_DEV=y
497# CONFIG_BLK_DEV_COW_COMMON is not set 523# CONFIG_BLK_DEV_COW_COMMON is not set
498CONFIG_BLK_DEV_LOOP=y 524CONFIG_BLK_DEV_LOOP=y
499# CONFIG_BLK_DEV_CRYPTOLOOP is not set 525# CONFIG_BLK_DEV_CRYPTOLOOP is not set
526
527#
528# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
529#
500# CONFIG_BLK_DEV_NBD is not set 530# CONFIG_BLK_DEV_NBD is not set
501CONFIG_BLK_DEV_RAM=y 531CONFIG_BLK_DEV_RAM=y
502CONFIG_BLK_DEV_RAM_COUNT=16 532CONFIG_BLK_DEV_RAM_COUNT=16
@@ -568,8 +598,7 @@ CONFIG_FS_ENET_HAS_SCC=y
568# CONFIG_NETDEV_1000 is not set 598# CONFIG_NETDEV_1000 is not set
569# CONFIG_NETDEV_10000 is not set 599# CONFIG_NETDEV_10000 is not set
570CONFIG_WLAN=y 600CONFIG_WLAN=y
571# CONFIG_WLAN_PRE80211 is not set 601# CONFIG_HOSTAP is not set
572# CONFIG_WLAN_80211 is not set
573 602
574# 603#
575# Enable WiMAX (Networking options) to see the WiMAX drivers 604# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -614,6 +643,7 @@ CONFIG_SERIAL_CORE=y
614CONFIG_SERIAL_CORE_CONSOLE=y 643CONFIG_SERIAL_CORE_CONSOLE=y
615CONFIG_SERIAL_CPM=y 644CONFIG_SERIAL_CPM=y
616CONFIG_SERIAL_CPM_CONSOLE=y 645CONFIG_SERIAL_CPM_CONSOLE=y
646# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
617CONFIG_UNIX98_PTYS=y 647CONFIG_UNIX98_PTYS=y
618# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 648# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
619# CONFIG_LEGACY_PTYS is not set 649# CONFIG_LEGACY_PTYS is not set
@@ -863,6 +893,7 @@ CONFIG_DEBUG_FS=y
863# CONFIG_DEBUG_MEMORY_INIT is not set 893# CONFIG_DEBUG_MEMORY_INIT is not set
864# CONFIG_RCU_CPU_STALL_DETECTOR is not set 894# CONFIG_RCU_CPU_STALL_DETECTOR is not set
865# CONFIG_LATENCYTOP is not set 895# CONFIG_LATENCYTOP is not set
896# CONFIG_SYSCTL_SYSCALL_CHECK is not set
866CONFIG_HAVE_FUNCTION_TRACER=y 897CONFIG_HAVE_FUNCTION_TRACER=y
867CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 898CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
868CONFIG_HAVE_DYNAMIC_FTRACE=y 899CONFIG_HAVE_DYNAMIC_FTRACE=y
@@ -887,7 +918,11 @@ CONFIG_PRINT_STACK_DEPTH=64
887# CONFIG_KEYS is not set 918# CONFIG_KEYS is not set
888# CONFIG_SECURITY is not set 919# CONFIG_SECURITY is not set
889# CONFIG_SECURITYFS is not set 920# CONFIG_SECURITYFS is not set
890# CONFIG_SECURITY_FILE_CAPABILITIES is not set 921# CONFIG_DEFAULT_SECURITY_SELINUX is not set
922# CONFIG_DEFAULT_SECURITY_SMACK is not set
923# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
924CONFIG_DEFAULT_SECURITY_DAC=y
925CONFIG_DEFAULT_SECURITY=""
891CONFIG_CRYPTO=y 926CONFIG_CRYPTO=y
892 927
893# 928#
diff --git a/arch/powerpc/configs/mpc5200_defconfig b/arch/powerpc/configs/mpc5200_defconfig
index 523d5fe18c0e..61cf73d0000f 100644
--- a/arch/powerpc/configs/mpc5200_defconfig
+++ b/arch/powerpc/configs/mpc5200_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.32-rc4 3# Linux kernel version: 2.6.33-rc2
4# Thu Oct 15 10:33:21 2009 4# Wed Dec 30 15:08:52 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -36,6 +36,7 @@ CONFIG_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 37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
41CONFIG_TRACE_IRQFLAGS_SUPPORT=y 42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y
59CONFIG_GENERIC_BUG=y 60CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y 61CONFIG_DTC=y
61CONFIG_DEFAULT_UIMAGE=y 62CONFIG_DEFAULT_UIMAGE=y
63CONFIG_ARCH_HIBERNATION_POSSIBLE=y
62CONFIG_ARCH_SUSPEND_POSSIBLE=y 64CONFIG_ARCH_SUSPEND_POSSIBLE=y
63# CONFIG_PPC_DCR_NATIVE is not set 65# CONFIG_PPC_DCR_NATIVE is not set
64# CONFIG_PPC_DCR_MMIO is not set 66# CONFIG_PPC_DCR_MMIO is not set
@@ -87,6 +89,7 @@ CONFIG_SYSVIPC_SYSCTL=y
87# 89#
88CONFIG_TREE_RCU=y 90CONFIG_TREE_RCU=y
89# CONFIG_TREE_PREEMPT_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
92# CONFIG_TINY_RCU is not set
90# CONFIG_RCU_TRACE is not set 93# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32 94CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set 95# CONFIG_RCU_FANOUT_EXACT is not set
@@ -170,14 +173,41 @@ CONFIG_LBDAF=y
170# IO Schedulers 173# IO Schedulers
171# 174#
172CONFIG_IOSCHED_NOOP=y 175CONFIG_IOSCHED_NOOP=y
173CONFIG_IOSCHED_AS=y
174CONFIG_IOSCHED_DEADLINE=y 176CONFIG_IOSCHED_DEADLINE=y
175CONFIG_IOSCHED_CFQ=y 177CONFIG_IOSCHED_CFQ=y
176CONFIG_DEFAULT_AS=y
177# CONFIG_DEFAULT_DEADLINE is not set 178# CONFIG_DEFAULT_DEADLINE is not set
178# CONFIG_DEFAULT_CFQ is not set 179CONFIG_DEFAULT_CFQ=y
179# CONFIG_DEFAULT_NOOP is not set 180# CONFIG_DEFAULT_NOOP is not set
180CONFIG_DEFAULT_IOSCHED="anticipatory" 181CONFIG_DEFAULT_IOSCHED="cfq"
182# CONFIG_INLINE_SPIN_TRYLOCK is not set
183# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
184# CONFIG_INLINE_SPIN_LOCK is not set
185# CONFIG_INLINE_SPIN_LOCK_BH is not set
186# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
187# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
188CONFIG_INLINE_SPIN_UNLOCK=y
189# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
190CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
191# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
192# CONFIG_INLINE_READ_TRYLOCK is not set
193# CONFIG_INLINE_READ_LOCK is not set
194# CONFIG_INLINE_READ_LOCK_BH is not set
195# CONFIG_INLINE_READ_LOCK_IRQ is not set
196# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
197CONFIG_INLINE_READ_UNLOCK=y
198# CONFIG_INLINE_READ_UNLOCK_BH is not set
199CONFIG_INLINE_READ_UNLOCK_IRQ=y
200# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
201# CONFIG_INLINE_WRITE_TRYLOCK is not set
202# CONFIG_INLINE_WRITE_LOCK is not set
203# CONFIG_INLINE_WRITE_LOCK_BH is not set
204# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
205# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
206CONFIG_INLINE_WRITE_UNLOCK=y
207# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
208CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
209# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
210# CONFIG_MUTEX_SPIN_ON_OWNER is not set
181CONFIG_FREEZER=y 211CONFIG_FREEZER=y
182 212
183# 213#
@@ -193,6 +223,7 @@ CONFIG_PPC_LITE5200=y
193CONFIG_PPC_MEDIA5200=y 223CONFIG_PPC_MEDIA5200=y
194CONFIG_PPC_MPC5200_BUGFIX=y 224CONFIG_PPC_MPC5200_BUGFIX=y
195CONFIG_PPC_MPC5200_GPIO=y 225CONFIG_PPC_MPC5200_GPIO=y
226CONFIG_PPC_MPC5200_LPBFIFO=m
196# CONFIG_PPC_PMAC is not set 227# CONFIG_PPC_PMAC is not set
197# CONFIG_PPC_CELL is not set 228# CONFIG_PPC_CELL is not set
198# CONFIG_PPC_CELL_NATIVE is not set 229# CONFIG_PPC_CELL_NATIVE is not set
@@ -211,6 +242,7 @@ CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
211# CONFIG_PPC_I8259 is not set 242# CONFIG_PPC_I8259 is not set
212CONFIG_PPC_RTAS=y 243CONFIG_PPC_RTAS=y
213# CONFIG_RTAS_ERROR_LOGGING is not set 244# CONFIG_RTAS_ERROR_LOGGING is not set
245# CONFIG_PPC_RTAS_DAEMON is not set
214CONFIG_RTAS_PROC=y 246CONFIG_RTAS_PROC=y
215# CONFIG_MMIO_NVRAM is not set 247# CONFIG_MMIO_NVRAM is not set
216# CONFIG_PPC_MPC106 is not set 248# CONFIG_PPC_MPC106 is not set
@@ -223,6 +255,7 @@ CONFIG_RTAS_PROC=y
223CONFIG_PPC_BESTCOMM=y 255CONFIG_PPC_BESTCOMM=y
224CONFIG_PPC_BESTCOMM_ATA=y 256CONFIG_PPC_BESTCOMM_ATA=y
225CONFIG_PPC_BESTCOMM_FEC=y 257CONFIG_PPC_BESTCOMM_FEC=y
258CONFIG_PPC_BESTCOMM_GEN_BD=m
226CONFIG_SIMPLE_GPIO=y 259CONFIG_SIMPLE_GPIO=y
227 260
228# 261#
@@ -253,6 +286,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
253CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 286CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
254# CONFIG_KEXEC is not set 287# CONFIG_KEXEC is not set
255# CONFIG_CRASH_DUMP is not set 288# CONFIG_CRASH_DUMP is not set
289CONFIG_SPARSE_IRQ=y
256CONFIG_MAX_ACTIVE_REGIONS=32 290CONFIG_MAX_ACTIVE_REGIONS=32
257CONFIG_ARCH_FLATMEM_ENABLE=y 291CONFIG_ARCH_FLATMEM_ENABLE=y
258CONFIG_ARCH_POPULATES_NODE_MAP=y 292CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -269,8 +303,6 @@ CONFIG_MIGRATION=y
269CONFIG_ZONE_DMA_FLAG=1 303CONFIG_ZONE_DMA_FLAG=1
270CONFIG_BOUNCE=y 304CONFIG_BOUNCE=y
271CONFIG_VIRT_TO_BUS=y 305CONFIG_VIRT_TO_BUS=y
272CONFIG_HAVE_MLOCK=y
273CONFIG_HAVE_MLOCKED_PAGE_BIT=y
274# CONFIG_KSM is not set 306# CONFIG_KSM is not set
275CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 307CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
276CONFIG_PPC_4K_PAGES=y 308CONFIG_PPC_4K_PAGES=y
@@ -286,6 +318,7 @@ CONFIG_PM=y
286CONFIG_PM_SLEEP=y 318CONFIG_PM_SLEEP=y
287CONFIG_SUSPEND=y 319CONFIG_SUSPEND=y
288CONFIG_SUSPEND_FREEZER=y 320CONFIG_SUSPEND_FREEZER=y
321# CONFIG_HIBERNATION is not set
289# CONFIG_PM_RUNTIME is not set 322# CONFIG_PM_RUNTIME is not set
290CONFIG_SECCOMP=y 323CONFIG_SECCOMP=y
291CONFIG_ISA_DMA_API=y 324CONFIG_ISA_DMA_API=y
@@ -399,7 +432,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
399# CONFIG_IRDA is not set 432# CONFIG_IRDA is not set
400# CONFIG_BT is not set 433# CONFIG_BT is not set
401# CONFIG_AF_RXRPC is not set 434# CONFIG_AF_RXRPC is not set
402# CONFIG_WIRELESS is not set 435CONFIG_WIRELESS=y
436# CONFIG_CFG80211 is not set
437# CONFIG_LIB80211 is not set
438
439#
440# CFG80211 needs to be enabled for MAC80211
441#
403# CONFIG_WIMAX is not set 442# CONFIG_WIMAX is not set
404# CONFIG_RFKILL is not set 443# CONFIG_RFKILL is not set
405# CONFIG_NET_9P is not set 444# CONFIG_NET_9P is not set
@@ -530,6 +569,10 @@ CONFIG_BLK_DEV=y
530# CONFIG_BLK_DEV_COW_COMMON is not set 569# CONFIG_BLK_DEV_COW_COMMON is not set
531CONFIG_BLK_DEV_LOOP=y 570CONFIG_BLK_DEV_LOOP=y
532# CONFIG_BLK_DEV_CRYPTOLOOP is not set 571# CONFIG_BLK_DEV_CRYPTOLOOP is not set
572
573#
574# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
575#
533# CONFIG_BLK_DEV_NBD is not set 576# CONFIG_BLK_DEV_NBD is not set
534# CONFIG_BLK_DEV_SX8 is not set 577# CONFIG_BLK_DEV_SX8 is not set
535# CONFIG_BLK_DEV_UB is not set 578# CONFIG_BLK_DEV_UB is not set
@@ -541,6 +584,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
541# CONFIG_ATA_OVER_ETH is not set 584# CONFIG_ATA_OVER_ETH is not set
542# CONFIG_BLK_DEV_HD is not set 585# CONFIG_BLK_DEV_HD is not set
543CONFIG_MISC_DEVICES=y 586CONFIG_MISC_DEVICES=y
587# CONFIG_AD525X_DPOT is not set
544# CONFIG_PHANTOM is not set 588# CONFIG_PHANTOM is not set
545# CONFIG_SGI_IOC4 is not set 589# CONFIG_SGI_IOC4 is not set
546# CONFIG_TIFM_CORE is not set 590# CONFIG_TIFM_CORE is not set
@@ -548,6 +592,8 @@ CONFIG_MISC_DEVICES=y
548# CONFIG_ENCLOSURE_SERVICES is not set 592# CONFIG_ENCLOSURE_SERVICES is not set
549# CONFIG_HP_ILO is not set 593# CONFIG_HP_ILO is not set
550# CONFIG_ISL29003 is not set 594# CONFIG_ISL29003 is not set
595# CONFIG_DS1682 is not set
596# CONFIG_TI_DAC7512 is not set
551# CONFIG_C2PORT is not set 597# CONFIG_C2PORT is not set
552 598
553# 599#
@@ -600,7 +646,9 @@ CONFIG_SCSI_LOWLEVEL=y
600# CONFIG_SCSI_BNX2_ISCSI is not set 646# CONFIG_SCSI_BNX2_ISCSI is not set
601# CONFIG_BE2ISCSI is not set 647# CONFIG_BE2ISCSI is not set
602# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 648# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
649# CONFIG_SCSI_HPSA is not set
603# CONFIG_SCSI_3W_9XXX is not set 650# CONFIG_SCSI_3W_9XXX is not set
651# CONFIG_SCSI_3W_SAS is not set
604# CONFIG_SCSI_ACARD is not set 652# CONFIG_SCSI_ACARD is not set
605# CONFIG_SCSI_AACRAID is not set 653# CONFIG_SCSI_AACRAID is not set
606# CONFIG_SCSI_AIC7XXX is not set 654# CONFIG_SCSI_AIC7XXX is not set
@@ -639,6 +687,7 @@ CONFIG_SCSI_LOWLEVEL=y
639# CONFIG_SCSI_NSP32 is not set 687# CONFIG_SCSI_NSP32 is not set
640# CONFIG_SCSI_DEBUG is not set 688# CONFIG_SCSI_DEBUG is not set
641# CONFIG_SCSI_PMCRAID is not set 689# CONFIG_SCSI_PMCRAID is not set
690# CONFIG_SCSI_PM8001 is not set
642# CONFIG_SCSI_SRP is not set 691# CONFIG_SCSI_SRP is not set
643# CONFIG_SCSI_BFA_FC is not set 692# CONFIG_SCSI_BFA_FC is not set
644# CONFIG_SCSI_DH is not set 693# CONFIG_SCSI_DH is not set
@@ -694,15 +743,16 @@ CONFIG_PATA_MPC52xx=y
694# CONFIG_PATA_NS87415 is not set 743# CONFIG_PATA_NS87415 is not set
695# CONFIG_PATA_OPTI is not set 744# CONFIG_PATA_OPTI is not set
696# CONFIG_PATA_OPTIDMA is not set 745# CONFIG_PATA_OPTIDMA is not set
746# CONFIG_PATA_PDC2027X is not set
697# CONFIG_PATA_PDC_OLD is not set 747# CONFIG_PATA_PDC_OLD is not set
698# CONFIG_PATA_RADISYS is not set 748# CONFIG_PATA_RADISYS is not set
699# CONFIG_PATA_RDC is not set 749# CONFIG_PATA_RDC is not set
700# CONFIG_PATA_RZ1000 is not set 750# CONFIG_PATA_RZ1000 is not set
701# CONFIG_PATA_SC1200 is not set 751# CONFIG_PATA_SC1200 is not set
702# CONFIG_PATA_SERVERWORKS is not set 752# CONFIG_PATA_SERVERWORKS is not set
703# CONFIG_PATA_PDC2027X is not set
704# CONFIG_PATA_SIL680 is not set 753# CONFIG_PATA_SIL680 is not set
705# CONFIG_PATA_SIS is not set 754# CONFIG_PATA_SIS is not set
755# CONFIG_PATA_TOSHIBA is not set
706# CONFIG_PATA_VIA is not set 756# CONFIG_PATA_VIA is not set
707# CONFIG_PATA_WINBOND is not set 757# CONFIG_PATA_WINBOND is not set
708CONFIG_PATA_PLATFORM=y 758CONFIG_PATA_PLATFORM=y
@@ -785,8 +835,11 @@ CONFIG_FEC_MPC52xx_MDIO=y
785# CONFIG_NETDEV_10000 is not set 835# CONFIG_NETDEV_10000 is not set
786# CONFIG_TR is not set 836# CONFIG_TR is not set
787CONFIG_WLAN=y 837CONFIG_WLAN=y
788# CONFIG_WLAN_PRE80211 is not set 838# CONFIG_AIRO is not set
789# CONFIG_WLAN_80211 is not set 839# CONFIG_ATMEL is not set
840# CONFIG_PRISM54 is not set
841# CONFIG_USB_ZD1201 is not set
842# CONFIG_HOSTAP is not set
790 843
791# 844#
792# Enable WiMAX (Networking options) to see the WiMAX drivers 845# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -809,6 +862,7 @@ CONFIG_WLAN=y
809# CONFIG_NETCONSOLE is not set 862# CONFIG_NETCONSOLE is not set
810# CONFIG_NETPOLL is not set 863# CONFIG_NETPOLL is not set
811# CONFIG_NET_POLL_CONTROLLER is not set 864# CONFIG_NET_POLL_CONTROLLER is not set
865# CONFIG_VMXNET3 is not set
812# CONFIG_ISDN is not set 866# CONFIG_ISDN is not set
813# CONFIG_PHONE is not set 867# CONFIG_PHONE is not set
814 868
@@ -818,6 +872,7 @@ CONFIG_WLAN=y
818CONFIG_INPUT=y 872CONFIG_INPUT=y
819# CONFIG_INPUT_FF_MEMLESS is not set 873# CONFIG_INPUT_FF_MEMLESS is not set
820# CONFIG_INPUT_POLLDEV is not set 874# CONFIG_INPUT_POLLDEV is not set
875# CONFIG_INPUT_SPARSEKMAP is not set
821 876
822# 877#
823# Userland interfaces 878# Userland interfaces
@@ -874,6 +929,7 @@ CONFIG_SERIAL_MPC52xx=y
874CONFIG_SERIAL_MPC52xx_CONSOLE=y 929CONFIG_SERIAL_MPC52xx_CONSOLE=y
875CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200 930CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
876# CONFIG_SERIAL_JSM is not set 931# CONFIG_SERIAL_JSM is not set
932# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
877CONFIG_UNIX98_PTYS=y 933CONFIG_UNIX98_PTYS=y
878# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 934# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
879CONFIG_LEGACY_PTYS=y 935CONFIG_LEGACY_PTYS=y
@@ -934,11 +990,6 @@ CONFIG_I2C_MPC=y
934# CONFIG_I2C_TINY_USB is not set 990# CONFIG_I2C_TINY_USB is not set
935 991
936# 992#
937# Graphics adapter I2C/DDC channel drivers
938#
939# CONFIG_I2C_VOODOO3 is not set
940
941#
942# Other I2C/SMBus bus drivers 993# Other I2C/SMBus bus drivers
943# 994#
944# CONFIG_I2C_PCA_PLATFORM is not set 995# CONFIG_I2C_PCA_PLATFORM is not set
@@ -947,7 +998,6 @@ CONFIG_I2C_MPC=y
947# 998#
948# Miscellaneous I2C Chip support 999# Miscellaneous I2C Chip support
949# 1000#
950# CONFIG_DS1682 is not set
951# CONFIG_SENSORS_TSL2550 is not set 1001# CONFIG_SENSORS_TSL2550 is not set
952# CONFIG_I2C_DEBUG_CORE is not set 1002# CONFIG_I2C_DEBUG_CORE is not set
953# CONFIG_I2C_DEBUG_ALGO is not set 1003# CONFIG_I2C_DEBUG_ALGO is not set
@@ -962,7 +1012,10 @@ CONFIG_SPI_MASTER=y
962# 1012#
963# CONFIG_SPI_BITBANG is not set 1013# CONFIG_SPI_BITBANG is not set
964# CONFIG_SPI_GPIO is not set 1014# CONFIG_SPI_GPIO is not set
1015# CONFIG_SPI_MPC52xx is not set
965CONFIG_SPI_MPC52xx_PSC=m 1016CONFIG_SPI_MPC52xx_PSC=m
1017# CONFIG_SPI_XILINX is not set
1018# CONFIG_SPI_DESIGNWARE is not set
966 1019
967# 1020#
968# SPI Protocol Masters 1021# SPI Protocol Masters
@@ -995,6 +1048,7 @@ CONFIG_GPIOLIB=y
995# 1048#
996# PCI GPIO expanders: 1049# PCI GPIO expanders:
997# 1050#
1051# CONFIG_GPIO_CS5535 is not set
998# CONFIG_GPIO_BT8XX is not set 1052# CONFIG_GPIO_BT8XX is not set
999# CONFIG_GPIO_LANGWELL is not set 1053# CONFIG_GPIO_LANGWELL is not set
1000 1054
@@ -1042,6 +1096,7 @@ CONFIG_HWMON=y
1042# CONFIG_SENSORS_IT87 is not set 1096# CONFIG_SENSORS_IT87 is not set
1043# CONFIG_SENSORS_LM63 is not set 1097# CONFIG_SENSORS_LM63 is not set
1044# CONFIG_SENSORS_LM70 is not set 1098# CONFIG_SENSORS_LM70 is not set
1099# CONFIG_SENSORS_LM73 is not set
1045# CONFIG_SENSORS_LM75 is not set 1100# CONFIG_SENSORS_LM75 is not set
1046# CONFIG_SENSORS_LM77 is not set 1101# CONFIG_SENSORS_LM77 is not set
1047# CONFIG_SENSORS_LM78 is not set 1102# CONFIG_SENSORS_LM78 is not set
@@ -1083,6 +1138,7 @@ CONFIG_HWMON=y
1083# CONFIG_SENSORS_W83627HF is not set 1138# CONFIG_SENSORS_W83627HF is not set
1084# CONFIG_SENSORS_W83627EHF is not set 1139# CONFIG_SENSORS_W83627EHF is not set
1085# CONFIG_SENSORS_LIS3_SPI is not set 1140# CONFIG_SENSORS_LIS3_SPI is not set
1141# CONFIG_SENSORS_LIS3_I2C is not set
1086# CONFIG_THERMAL is not set 1142# CONFIG_THERMAL is not set
1087CONFIG_WATCHDOG=y 1143CONFIG_WATCHDOG=y
1088# CONFIG_WATCHDOG_NOWAYOUT is not set 1144# CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -1122,6 +1178,7 @@ CONFIG_SSB_POSSIBLE=y
1122# CONFIG_TWL4030_CORE is not set 1178# CONFIG_TWL4030_CORE is not set
1123# CONFIG_MFD_TMIO is not set 1179# CONFIG_MFD_TMIO is not set
1124# CONFIG_PMIC_DA903X is not set 1180# CONFIG_PMIC_DA903X is not set
1181# CONFIG_PMIC_ADP5520 is not set
1125# CONFIG_MFD_WM8400 is not set 1182# CONFIG_MFD_WM8400 is not set
1126# CONFIG_MFD_WM831X is not set 1183# CONFIG_MFD_WM831X is not set
1127# CONFIG_MFD_WM8350_I2C is not set 1184# CONFIG_MFD_WM8350_I2C is not set
@@ -1129,6 +1186,8 @@ CONFIG_SSB_POSSIBLE=y
1129# CONFIG_MFD_MC13783 is not set 1186# CONFIG_MFD_MC13783 is not set
1130# CONFIG_AB3100_CORE is not set 1187# CONFIG_AB3100_CORE is not set
1131# CONFIG_EZX_PCAP is not set 1188# CONFIG_EZX_PCAP is not set
1189# CONFIG_MFD_88PM8607 is not set
1190# CONFIG_AB4500_CORE is not set
1132# CONFIG_REGULATOR is not set 1191# CONFIG_REGULATOR is not set
1133# CONFIG_MEDIA_SUPPORT is not set 1192# CONFIG_MEDIA_SUPPORT is not set
1134 1193
@@ -1322,7 +1381,6 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1322# CONFIG_USB_R8A66597_HCD is not set 1381# CONFIG_USB_R8A66597_HCD is not set
1323# CONFIG_USB_WHCI_HCD is not set 1382# CONFIG_USB_WHCI_HCD is not set
1324# CONFIG_USB_HWA_HCD is not set 1383# CONFIG_USB_HWA_HCD is not set
1325# CONFIG_USB_MUSB_HDRC is not set
1326 1384
1327# 1385#
1328# USB Device Class drivers 1386# USB Device Class drivers
@@ -1440,6 +1498,7 @@ CONFIG_RTC_DRV_DS1307=y
1440# CONFIG_RTC_DRV_PCF8563 is not set 1498# CONFIG_RTC_DRV_PCF8563 is not set
1441# CONFIG_RTC_DRV_PCF8583 is not set 1499# CONFIG_RTC_DRV_PCF8583 is not set
1442# CONFIG_RTC_DRV_M41T80 is not set 1500# CONFIG_RTC_DRV_M41T80 is not set
1501# CONFIG_RTC_DRV_BQ32K is not set
1443# CONFIG_RTC_DRV_S35390A is not set 1502# CONFIG_RTC_DRV_S35390A is not set
1444# CONFIG_RTC_DRV_FM3130 is not set 1503# CONFIG_RTC_DRV_FM3130 is not set
1445# CONFIG_RTC_DRV_RX8581 is not set 1504# CONFIG_RTC_DRV_RX8581 is not set
@@ -1469,7 +1528,9 @@ CONFIG_RTC_DRV_DS1307=y
1469# CONFIG_RTC_DRV_M48T86 is not set 1528# CONFIG_RTC_DRV_M48T86 is not set
1470# CONFIG_RTC_DRV_M48T35 is not set 1529# CONFIG_RTC_DRV_M48T35 is not set
1471# CONFIG_RTC_DRV_M48T59 is not set 1530# CONFIG_RTC_DRV_M48T59 is not set
1531# CONFIG_RTC_DRV_MSM6242 is not set
1472# CONFIG_RTC_DRV_BQ4802 is not set 1532# CONFIG_RTC_DRV_BQ4802 is not set
1533# CONFIG_RTC_DRV_RP5C01 is not set
1473# CONFIG_RTC_DRV_V3020 is not set 1534# CONFIG_RTC_DRV_V3020 is not set
1474 1535
1475# 1536#
@@ -1731,6 +1792,7 @@ CONFIG_DEBUG_INFO=y
1731# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set 1792# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1732# CONFIG_FAULT_INJECTION is not set 1793# CONFIG_FAULT_INJECTION is not set
1733# CONFIG_LATENCYTOP is not set 1794# CONFIG_LATENCYTOP is not set
1795# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1734# CONFIG_DEBUG_PAGEALLOC is not set 1796# CONFIG_DEBUG_PAGEALLOC is not set
1735CONFIG_HAVE_FUNCTION_TRACER=y 1797CONFIG_HAVE_FUNCTION_TRACER=y
1736CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 1798CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
@@ -1774,7 +1836,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1774# CONFIG_KEYS is not set 1836# CONFIG_KEYS is not set
1775# CONFIG_SECURITY is not set 1837# CONFIG_SECURITY is not set
1776# CONFIG_SECURITYFS is not set 1838# CONFIG_SECURITYFS is not set
1777# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1839# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1840# CONFIG_DEFAULT_SECURITY_SMACK is not set
1841# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1842CONFIG_DEFAULT_SECURITY_DAC=y
1843CONFIG_DEFAULT_SECURITY=""
1778CONFIG_CRYPTO=y 1844CONFIG_CRYPTO=y
1779 1845
1780# 1846#
diff --git a/arch/powerpc/configs/mpc7448_hpc2_defconfig b/arch/powerpc/configs/mpc7448_hpc2_defconfig
index d8b364a45944..1315b775a6d2 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:10 2009 4# Wed Jan 6 09:24:04 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -36,6 +36,7 @@ CONFIG_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 37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
41CONFIG_TRACE_IRQFLAGS_SUPPORT=y 42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -58,6 +59,7 @@ CONFIG_AUDIT_ARCH=y
58CONFIG_GENERIC_BUG=y 59CONFIG_GENERIC_BUG=y
59CONFIG_DTC=y 60CONFIG_DTC=y
60CONFIG_DEFAULT_UIMAGE=y 61CONFIG_DEFAULT_UIMAGE=y
62CONFIG_ARCH_HIBERNATION_POSSIBLE=y
61# CONFIG_PPC_DCR_NATIVE is not set 63# CONFIG_PPC_DCR_NATIVE is not set
62# CONFIG_PPC_DCR_MMIO is not set 64# CONFIG_PPC_DCR_MMIO is not set
63CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 65CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -85,6 +87,7 @@ CONFIG_SYSVIPC_SYSCTL=y
85# 87#
86CONFIG_TREE_RCU=y 88CONFIG_TREE_RCU=y
87# CONFIG_TREE_PREEMPT_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
90# CONFIG_TINY_RCU is not set
88# CONFIG_RCU_TRACE is not set 91# CONFIG_RCU_TRACE is not set
89CONFIG_RCU_FANOUT=32 92CONFIG_RCU_FANOUT=32
90# CONFIG_RCU_FANOUT_EXACT is not set 93# CONFIG_RCU_FANOUT_EXACT is not set
@@ -167,14 +170,41 @@ CONFIG_LBDAF=y
167# IO Schedulers 170# IO Schedulers
168# 171#
169CONFIG_IOSCHED_NOOP=y 172CONFIG_IOSCHED_NOOP=y
170CONFIG_IOSCHED_AS=y
171CONFIG_IOSCHED_DEADLINE=y 173CONFIG_IOSCHED_DEADLINE=y
172CONFIG_IOSCHED_CFQ=y 174CONFIG_IOSCHED_CFQ=y
173CONFIG_DEFAULT_AS=y
174# CONFIG_DEFAULT_DEADLINE is not set 175# CONFIG_DEFAULT_DEADLINE is not set
175# CONFIG_DEFAULT_CFQ is not set 176CONFIG_DEFAULT_CFQ=y
176# CONFIG_DEFAULT_NOOP is not set 177# CONFIG_DEFAULT_NOOP is not set
177CONFIG_DEFAULT_IOSCHED="anticipatory" 178CONFIG_DEFAULT_IOSCHED="cfq"
179# CONFIG_INLINE_SPIN_TRYLOCK is not set
180# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
181# CONFIG_INLINE_SPIN_LOCK is not set
182# CONFIG_INLINE_SPIN_LOCK_BH is not set
183# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
184# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
185CONFIG_INLINE_SPIN_UNLOCK=y
186# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
187CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
188# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
189# CONFIG_INLINE_READ_TRYLOCK is not set
190# CONFIG_INLINE_READ_LOCK is not set
191# CONFIG_INLINE_READ_LOCK_BH is not set
192# CONFIG_INLINE_READ_LOCK_IRQ is not set
193# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
194CONFIG_INLINE_READ_UNLOCK=y
195# CONFIG_INLINE_READ_UNLOCK_BH is not set
196CONFIG_INLINE_READ_UNLOCK_IRQ=y
197# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
198# CONFIG_INLINE_WRITE_TRYLOCK is not set
199# CONFIG_INLINE_WRITE_LOCK is not set
200# CONFIG_INLINE_WRITE_LOCK_BH is not set
201# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
202# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
203CONFIG_INLINE_WRITE_UNLOCK=y
204# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
205CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
206# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
207# CONFIG_MUTEX_SPIN_ON_OWNER is not set
178# CONFIG_FREEZER is not set 208# CONFIG_FREEZER is not set
179 209
180# 210#
@@ -199,6 +229,8 @@ CONFIG_MPC7448HPC2=y
199# CONFIG_PPC_PRPMC2800 is not set 229# CONFIG_PPC_PRPMC2800 is not set
200# CONFIG_PPC_C2K is not set 230# CONFIG_PPC_C2K is not set
201CONFIG_TSI108_BRIDGE=y 231CONFIG_TSI108_BRIDGE=y
232# CONFIG_GAMECUBE is not set
233# CONFIG_WII is not set
202# CONFIG_AMIGAONE is not set 234# CONFIG_AMIGAONE is not set
203CONFIG_PPC_OF_BOOT_TRAMPOLINE=y 235CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
204# CONFIG_IPIC is not set 236# CONFIG_IPIC is not set
@@ -244,6 +276,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
244CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 276CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
245# CONFIG_KEXEC is not set 277# CONFIG_KEXEC is not set
246# CONFIG_CRASH_DUMP is not set 278# CONFIG_CRASH_DUMP is not set
279CONFIG_SPARSE_IRQ=y
247CONFIG_MAX_ACTIVE_REGIONS=32 280CONFIG_MAX_ACTIVE_REGIONS=32
248CONFIG_ARCH_FLATMEM_ENABLE=y 281CONFIG_ARCH_FLATMEM_ENABLE=y
249CONFIG_ARCH_POPULATES_NODE_MAP=y 282CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -260,8 +293,6 @@ CONFIG_MIGRATION=y
260CONFIG_ZONE_DMA_FLAG=1 293CONFIG_ZONE_DMA_FLAG=1
261CONFIG_BOUNCE=y 294CONFIG_BOUNCE=y
262CONFIG_VIRT_TO_BUS=y 295CONFIG_VIRT_TO_BUS=y
263CONFIG_HAVE_MLOCK=y
264CONFIG_HAVE_MLOCKED_PAGE_BIT=y
265# CONFIG_KSM is not set 296# CONFIG_KSM is not set
266CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 297CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
267CONFIG_PPC_4K_PAGES=y 298CONFIG_PPC_4K_PAGES=y
@@ -385,9 +416,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
385# CONFIG_AF_RXRPC is not set 416# CONFIG_AF_RXRPC is not set
386CONFIG_WIRELESS=y 417CONFIG_WIRELESS=y
387# CONFIG_CFG80211 is not set 418# CONFIG_CFG80211 is not set
388CONFIG_CFG80211_DEFAULT_PS_VALUE=0
389CONFIG_WIRELESS_OLD_REGULATORY=y
390# CONFIG_WIRELESS_EXT is not set
391# CONFIG_LIB80211 is not set 419# CONFIG_LIB80211 is not set
392 420
393# 421#
@@ -424,6 +452,10 @@ CONFIG_BLK_DEV=y
424# CONFIG_BLK_DEV_COW_COMMON is not set 452# CONFIG_BLK_DEV_COW_COMMON is not set
425CONFIG_BLK_DEV_LOOP=y 453CONFIG_BLK_DEV_LOOP=y
426# CONFIG_BLK_DEV_CRYPTOLOOP is not set 454# CONFIG_BLK_DEV_CRYPTOLOOP is not set
455
456#
457# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
458#
427# CONFIG_BLK_DEV_NBD is not set 459# CONFIG_BLK_DEV_NBD is not set
428# CONFIG_BLK_DEV_SX8 is not set 460# CONFIG_BLK_DEV_SX8 is not set
429CONFIG_BLK_DEV_RAM=y 461CONFIG_BLK_DEV_RAM=y
@@ -487,7 +519,9 @@ CONFIG_SCSI_LOWLEVEL=y
487# CONFIG_SCSI_BNX2_ISCSI is not set 519# CONFIG_SCSI_BNX2_ISCSI is not set
488# CONFIG_BE2ISCSI is not set 520# CONFIG_BE2ISCSI is not set
489# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 521# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
522# CONFIG_SCSI_HPSA is not set
490# CONFIG_SCSI_3W_9XXX is not set 523# CONFIG_SCSI_3W_9XXX is not set
524# CONFIG_SCSI_3W_SAS is not set
491# CONFIG_SCSI_ACARD is not set 525# CONFIG_SCSI_ACARD is not set
492# CONFIG_SCSI_AACRAID is not set 526# CONFIG_SCSI_AACRAID is not set
493# CONFIG_SCSI_AIC7XXX is not set 527# CONFIG_SCSI_AIC7XXX is not set
@@ -526,6 +560,7 @@ CONFIG_SCSI_LOWLEVEL=y
526# CONFIG_SCSI_NSP32 is not set 560# CONFIG_SCSI_NSP32 is not set
527# CONFIG_SCSI_DEBUG is not set 561# CONFIG_SCSI_DEBUG is not set
528# CONFIG_SCSI_PMCRAID is not set 562# CONFIG_SCSI_PMCRAID is not set
563# CONFIG_SCSI_PM8001 is not set
529# CONFIG_SCSI_SRP is not set 564# CONFIG_SCSI_SRP is not set
530# CONFIG_SCSI_BFA_FC is not set 565# CONFIG_SCSI_BFA_FC is not set
531# CONFIG_SCSI_DH is not set 566# CONFIG_SCSI_DH is not set
@@ -580,15 +615,16 @@ CONFIG_SATA_MV=y
580# CONFIG_PATA_NS87415 is not set 615# CONFIG_PATA_NS87415 is not set
581# CONFIG_PATA_OPTI is not set 616# CONFIG_PATA_OPTI is not set
582# CONFIG_PATA_OPTIDMA is not set 617# CONFIG_PATA_OPTIDMA is not set
618# CONFIG_PATA_PDC2027X is not set
583# CONFIG_PATA_PDC_OLD is not set 619# CONFIG_PATA_PDC_OLD is not set
584# CONFIG_PATA_RADISYS is not set 620# CONFIG_PATA_RADISYS is not set
585# CONFIG_PATA_RDC is not set 621# CONFIG_PATA_RDC is not set
586# CONFIG_PATA_RZ1000 is not set 622# CONFIG_PATA_RZ1000 is not set
587# CONFIG_PATA_SC1200 is not set 623# CONFIG_PATA_SC1200 is not set
588# CONFIG_PATA_SERVERWORKS is not set 624# CONFIG_PATA_SERVERWORKS is not set
589# CONFIG_PATA_PDC2027X is not set
590# CONFIG_PATA_SIL680 is not set 625# CONFIG_PATA_SIL680 is not set
591# CONFIG_PATA_SIS is not set 626# CONFIG_PATA_SIS is not set
627# CONFIG_PATA_TOSHIBA is not set
592# CONFIG_PATA_VIA is not set 628# CONFIG_PATA_VIA is not set
593# CONFIG_PATA_WINBOND is not set 629# CONFIG_PATA_WINBOND is not set
594# CONFIG_PATA_PLATFORM is not set 630# CONFIG_PATA_PLATFORM is not set
@@ -605,7 +641,7 @@ CONFIG_SATA_MV=y
605# 641#
606 642
607# 643#
608# See the help texts for more information. 644# The newer stack is recommended.
609# 645#
610# CONFIG_FIREWIRE is not set 646# CONFIG_FIREWIRE is not set
611# CONFIG_IEEE1394 is not set 647# CONFIG_IEEE1394 is not set
@@ -731,8 +767,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y
731# CONFIG_BE2NET is not set 767# CONFIG_BE2NET is not set
732# CONFIG_TR is not set 768# CONFIG_TR is not set
733CONFIG_WLAN=y 769CONFIG_WLAN=y
734# CONFIG_WLAN_PRE80211 is not set 770# CONFIG_AIRO is not set
735# CONFIG_WLAN_80211 is not set 771# CONFIG_ATMEL is not set
772# CONFIG_PRISM54 is not set
773# CONFIG_HOSTAP is not set
736 774
737# 775#
738# Enable WiMAX (Networking options) to see the WiMAX drivers 776# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -746,6 +784,7 @@ CONFIG_WLAN=y
746# CONFIG_NETCONSOLE is not set 784# CONFIG_NETCONSOLE is not set
747# CONFIG_NETPOLL is not set 785# CONFIG_NETPOLL is not set
748# CONFIG_NET_POLL_CONTROLLER is not set 786# CONFIG_NET_POLL_CONTROLLER is not set
787# CONFIG_VMXNET3 is not set
749# CONFIG_ISDN is not set 788# CONFIG_ISDN is not set
750# CONFIG_PHONE is not set 789# CONFIG_PHONE is not set
751 790
@@ -755,6 +794,7 @@ CONFIG_WLAN=y
755CONFIG_INPUT=y 794CONFIG_INPUT=y
756# CONFIG_INPUT_FF_MEMLESS is not set 795# CONFIG_INPUT_FF_MEMLESS is not set
757# CONFIG_INPUT_POLLDEV is not set 796# CONFIG_INPUT_POLLDEV is not set
797# CONFIG_INPUT_SPARSEKMAP is not set
758 798
759# 799#
760# Userland interfaces 800# Userland interfaces
@@ -806,6 +846,7 @@ CONFIG_SERIAL_CORE=y
806CONFIG_SERIAL_CORE_CONSOLE=y 846CONFIG_SERIAL_CORE_CONSOLE=y
807# CONFIG_SERIAL_JSM is not set 847# CONFIG_SERIAL_JSM is not set
808# CONFIG_SERIAL_OF_PLATFORM is not set 848# CONFIG_SERIAL_OF_PLATFORM is not set
849# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
809CONFIG_UNIX98_PTYS=y 850CONFIG_UNIX98_PTYS=y
810# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 851# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
811CONFIG_LEGACY_PTYS=y 852CONFIG_LEGACY_PTYS=y
@@ -1091,7 +1132,7 @@ CONFIG_FRAME_WARN=1024
1091# CONFIG_DEBUG_KERNEL is not set 1132# CONFIG_DEBUG_KERNEL is not set
1092# CONFIG_SLUB_DEBUG_ON is not set 1133# CONFIG_SLUB_DEBUG_ON is not set
1093# CONFIG_SLUB_STATS is not set 1134# CONFIG_SLUB_STATS is not set
1094# CONFIG_DEBUG_BUGVERBOSE is not set 1135CONFIG_DEBUG_BUGVERBOSE=y
1095# CONFIG_DEBUG_MEMORY_INIT is not set 1136# CONFIG_DEBUG_MEMORY_INIT is not set
1096# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1137# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1097# CONFIG_LATENCYTOP is not set 1138# CONFIG_LATENCYTOP is not set
@@ -1118,7 +1159,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1118# CONFIG_KEYS is not set 1159# CONFIG_KEYS is not set
1119# CONFIG_SECURITY is not set 1160# CONFIG_SECURITY is not set
1120# CONFIG_SECURITYFS is not set 1161# CONFIG_SECURITYFS is not set
1121# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1162# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1163# CONFIG_DEFAULT_SECURITY_SMACK is not set
1164# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1165CONFIG_DEFAULT_SECURITY_DAC=y
1166CONFIG_DEFAULT_SECURITY=""
1122CONFIG_CRYPTO=y 1167CONFIG_CRYPTO=y
1123 1168
1124# 1169#
diff --git a/arch/powerpc/configs/mpc8272_ads_defconfig b/arch/powerpc/configs/mpc8272_ads_defconfig
index 00fad81b6fce..9073778d3575 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:11 2009 4# Wed Jan 6 09:24:05 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -36,6 +36,7 @@ CONFIG_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 37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
41CONFIG_TRACE_IRQFLAGS_SUPPORT=y 42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y
59CONFIG_GENERIC_BUG=y 60CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y 61CONFIG_DTC=y
61CONFIG_DEFAULT_UIMAGE=y 62CONFIG_DEFAULT_UIMAGE=y
63CONFIG_ARCH_HIBERNATION_POSSIBLE=y
62# CONFIG_PPC_DCR_NATIVE is not set 64# CONFIG_PPC_DCR_NATIVE is not set
63# CONFIG_PPC_DCR_MMIO is not set 65# CONFIG_PPC_DCR_MMIO is not set
64CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 66CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -85,6 +87,7 @@ CONFIG_SYSVIPC_SYSCTL=y
85# 87#
86CONFIG_TREE_RCU=y 88CONFIG_TREE_RCU=y
87# CONFIG_TREE_PREEMPT_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
90# CONFIG_TINY_RCU is not set
88# CONFIG_RCU_TRACE is not set 91# CONFIG_RCU_TRACE is not set
89CONFIG_RCU_FANOUT=32 92CONFIG_RCU_FANOUT=32
90# CONFIG_RCU_FANOUT_EXACT is not set 93# CONFIG_RCU_FANOUT_EXACT is not set
@@ -161,14 +164,41 @@ CONFIG_BLK_DEV_BSG=y
161# IO Schedulers 164# IO Schedulers
162# 165#
163CONFIG_IOSCHED_NOOP=y 166CONFIG_IOSCHED_NOOP=y
164CONFIG_IOSCHED_AS=y
165CONFIG_IOSCHED_DEADLINE=y 167CONFIG_IOSCHED_DEADLINE=y
166CONFIG_IOSCHED_CFQ=y 168CONFIG_IOSCHED_CFQ=y
167CONFIG_DEFAULT_AS=y
168# CONFIG_DEFAULT_DEADLINE is not set 169# CONFIG_DEFAULT_DEADLINE is not set
169# CONFIG_DEFAULT_CFQ is not set 170CONFIG_DEFAULT_CFQ=y
170# CONFIG_DEFAULT_NOOP is not set 171# CONFIG_DEFAULT_NOOP is not set
171CONFIG_DEFAULT_IOSCHED="anticipatory" 172CONFIG_DEFAULT_IOSCHED="cfq"
173# CONFIG_INLINE_SPIN_TRYLOCK is not set
174# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
175# CONFIG_INLINE_SPIN_LOCK is not set
176# CONFIG_INLINE_SPIN_LOCK_BH is not set
177# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
178# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
179CONFIG_INLINE_SPIN_UNLOCK=y
180# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
181CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
182# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
183# CONFIG_INLINE_READ_TRYLOCK is not set
184# CONFIG_INLINE_READ_LOCK is not set
185# CONFIG_INLINE_READ_LOCK_BH is not set
186# CONFIG_INLINE_READ_LOCK_IRQ is not set
187# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
188CONFIG_INLINE_READ_UNLOCK=y
189# CONFIG_INLINE_READ_UNLOCK_BH is not set
190CONFIG_INLINE_READ_UNLOCK_IRQ=y
191# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
192# CONFIG_INLINE_WRITE_TRYLOCK is not set
193# CONFIG_INLINE_WRITE_LOCK is not set
194# CONFIG_INLINE_WRITE_LOCK_BH is not set
195# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
196# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
197CONFIG_INLINE_WRITE_UNLOCK=y
198# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
199CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
200# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
201# CONFIG_MUTEX_SPIN_ON_OWNER is not set
172# CONFIG_FREEZER is not set 202# CONFIG_FREEZER is not set
173 203
174# 204#
@@ -240,6 +270,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
240CONFIG_ARCH_HAS_WALK_MEMORY=y 270CONFIG_ARCH_HAS_WALK_MEMORY=y
241CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 271CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
242# CONFIG_CRASH_DUMP is not set 272# CONFIG_CRASH_DUMP is not set
273CONFIG_SPARSE_IRQ=y
243CONFIG_MAX_ACTIVE_REGIONS=32 274CONFIG_MAX_ACTIVE_REGIONS=32
244CONFIG_ARCH_FLATMEM_ENABLE=y 275CONFIG_ARCH_FLATMEM_ENABLE=y
245CONFIG_ARCH_POPULATES_NODE_MAP=y 276CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -252,8 +283,6 @@ CONFIG_MIGRATION=y
252CONFIG_ZONE_DMA_FLAG=1 283CONFIG_ZONE_DMA_FLAG=1
253CONFIG_BOUNCE=y 284CONFIG_BOUNCE=y
254CONFIG_VIRT_TO_BUS=y 285CONFIG_VIRT_TO_BUS=y
255CONFIG_HAVE_MLOCK=y
256CONFIG_HAVE_MLOCKED_PAGE_BIT=y
257# CONFIG_KSM is not set 286# CONFIG_KSM is not set
258CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 287CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
259CONFIG_PPC_4K_PAGES=y 288CONFIG_PPC_4K_PAGES=y
@@ -403,9 +432,6 @@ CONFIG_NETFILTER_ADVANCED=y
403# CONFIG_BT is not set 432# CONFIG_BT is not set
404CONFIG_WIRELESS=y 433CONFIG_WIRELESS=y
405# CONFIG_CFG80211 is not set 434# CONFIG_CFG80211 is not set
406CONFIG_CFG80211_DEFAULT_PS_VALUE=0
407CONFIG_WIRELESS_OLD_REGULATORY=y
408# CONFIG_WIRELESS_EXT is not set
409# CONFIG_LIB80211 is not set 435# CONFIG_LIB80211 is not set
410 436
411# 437#
@@ -526,6 +552,10 @@ CONFIG_BLK_DEV=y
526# CONFIG_BLK_DEV_COW_COMMON is not set 552# CONFIG_BLK_DEV_COW_COMMON is not set
527CONFIG_BLK_DEV_LOOP=y 553CONFIG_BLK_DEV_LOOP=y
528# CONFIG_BLK_DEV_CRYPTOLOOP is not set 554# CONFIG_BLK_DEV_CRYPTOLOOP is not set
555
556#
557# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
558#
529# CONFIG_BLK_DEV_NBD is not set 559# CONFIG_BLK_DEV_NBD is not set
530# CONFIG_BLK_DEV_SX8 is not set 560# CONFIG_BLK_DEV_SX8 is not set
531# CONFIG_BLK_DEV_RAM is not set 561# CONFIG_BLK_DEV_RAM is not set
@@ -556,7 +586,7 @@ CONFIG_HAVE_IDE=y
556# 586#
557 587
558# 588#
559# See the help texts for more information. 589# The newer stack is recommended.
560# 590#
561# CONFIG_FIREWIRE is not set 591# CONFIG_FIREWIRE is not set
562# CONFIG_IEEE1394 is not set 592# CONFIG_IEEE1394 is not set
@@ -661,8 +691,9 @@ CONFIG_CHELSIO_T3_DEPENDS=y
661# CONFIG_BE2NET is not set 691# CONFIG_BE2NET is not set
662# CONFIG_TR is not set 692# CONFIG_TR is not set
663CONFIG_WLAN=y 693CONFIG_WLAN=y
664# CONFIG_WLAN_PRE80211 is not set 694# CONFIG_AIRO is not set
665# CONFIG_WLAN_80211 is not set 695# CONFIG_ATMEL is not set
696# CONFIG_HOSTAP is not set
666 697
667# 698#
668# Enable WiMAX (Networking options) to see the WiMAX drivers 699# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -679,6 +710,7 @@ CONFIG_PPP_DEFLATE=y
679CONFIG_SLHC=y 710CONFIG_SLHC=y
680# CONFIG_NETPOLL is not set 711# CONFIG_NETPOLL is not set
681# CONFIG_NET_POLL_CONTROLLER is not set 712# CONFIG_NET_POLL_CONTROLLER is not set
713# CONFIG_VMXNET3 is not set
682# CONFIG_ISDN is not set 714# CONFIG_ISDN is not set
683# CONFIG_PHONE is not set 715# CONFIG_PHONE is not set
684 716
@@ -688,6 +720,7 @@ CONFIG_SLHC=y
688CONFIG_INPUT=y 720CONFIG_INPUT=y
689# CONFIG_INPUT_FF_MEMLESS is not set 721# CONFIG_INPUT_FF_MEMLESS is not set
690# CONFIG_INPUT_POLLDEV is not set 722# CONFIG_INPUT_POLLDEV is not set
723# CONFIG_INPUT_SPARSEKMAP is not set
691 724
692# 725#
693# Userland interfaces 726# Userland interfaces
@@ -740,6 +773,7 @@ CONFIG_SERIO_SERPORT=y
740CONFIG_SERIO_LIBPS2=y 773CONFIG_SERIO_LIBPS2=y
741# CONFIG_SERIO_RAW is not set 774# CONFIG_SERIO_RAW is not set
742# CONFIG_SERIO_XILINX_XPS_PS2 is not set 775# CONFIG_SERIO_XILINX_XPS_PS2 is not set
776# CONFIG_SERIO_ALTERA_PS2 is not set
743# CONFIG_GAMEPORT is not set 777# CONFIG_GAMEPORT is not set
744 778
745# 779#
@@ -763,6 +797,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
763CONFIG_SERIAL_CPM=y 797CONFIG_SERIAL_CPM=y
764CONFIG_SERIAL_CPM_CONSOLE=y 798CONFIG_SERIAL_CPM_CONSOLE=y
765# CONFIG_SERIAL_JSM is not set 799# CONFIG_SERIAL_JSM is not set
800# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
766CONFIG_UNIX98_PTYS=y 801CONFIG_UNIX98_PTYS=y
767# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 802# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
768CONFIG_LEGACY_PTYS=y 803CONFIG_LEGACY_PTYS=y
@@ -799,6 +834,7 @@ CONFIG_GPIOLIB=y
799# 834#
800# PCI GPIO expanders: 835# PCI GPIO expanders:
801# 836#
837# CONFIG_GPIO_CS5535 is not set
802# CONFIG_GPIO_BT8XX is not set 838# CONFIG_GPIO_BT8XX is not set
803# CONFIG_GPIO_LANGWELL is not set 839# CONFIG_GPIO_LANGWELL is not set
804 840
@@ -1131,7 +1167,11 @@ CONFIG_BDI_SWITCH=y
1131# CONFIG_KEYS is not set 1167# CONFIG_KEYS is not set
1132# CONFIG_SECURITY is not set 1168# CONFIG_SECURITY is not set
1133# CONFIG_SECURITYFS is not set 1169# CONFIG_SECURITYFS is not set
1134# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1170# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1171# CONFIG_DEFAULT_SECURITY_SMACK is not set
1172# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1173CONFIG_DEFAULT_SECURITY_DAC=y
1174CONFIG_DEFAULT_SECURITY=""
1135CONFIG_CRYPTO=y 1175CONFIG_CRYPTO=y
1136 1176
1137# 1177#
diff --git a/arch/powerpc/configs/mpc83xx_defconfig b/arch/powerpc/configs/mpc83xx_defconfig
index 64dff21516cb..05bec4835687 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:12 2009 4# Wed Jan 6 09:24:06 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -37,6 +37,7 @@ CONFIG_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 38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
40CONFIG_NR_IRQS=512
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y 43CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -61,6 +62,7 @@ CONFIG_GENERIC_BUG=y
61CONFIG_DTC=y 62CONFIG_DTC=y
62CONFIG_DEFAULT_UIMAGE=y 63CONFIG_DEFAULT_UIMAGE=y
63CONFIG_REDBOOT=y 64CONFIG_REDBOOT=y
65CONFIG_ARCH_HIBERNATION_POSSIBLE=y
64CONFIG_ARCH_SUSPEND_POSSIBLE=y 66CONFIG_ARCH_SUSPEND_POSSIBLE=y
65# CONFIG_PPC_DCR_NATIVE is not set 67# CONFIG_PPC_DCR_NATIVE is not set
66# CONFIG_PPC_DCR_MMIO is not set 68# CONFIG_PPC_DCR_MMIO is not set
@@ -89,6 +91,7 @@ CONFIG_SYSVIPC_SYSCTL=y
89# 91#
90CONFIG_TREE_RCU=y 92CONFIG_TREE_RCU=y
91# CONFIG_TREE_PREEMPT_RCU is not set 93# CONFIG_TREE_PREEMPT_RCU is not set
94# CONFIG_TINY_RCU is not set
92# CONFIG_RCU_TRACE is not set 95# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32 96CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set 97# CONFIG_RCU_FANOUT_EXACT is not set
@@ -176,14 +179,41 @@ CONFIG_LBDAF=y
176# IO Schedulers 179# IO Schedulers
177# 180#
178CONFIG_IOSCHED_NOOP=y 181CONFIG_IOSCHED_NOOP=y
179CONFIG_IOSCHED_AS=y
180CONFIG_IOSCHED_DEADLINE=y 182CONFIG_IOSCHED_DEADLINE=y
181CONFIG_IOSCHED_CFQ=y 183CONFIG_IOSCHED_CFQ=y
182CONFIG_DEFAULT_AS=y
183# CONFIG_DEFAULT_DEADLINE is not set 184# CONFIG_DEFAULT_DEADLINE is not set
184# CONFIG_DEFAULT_CFQ is not set 185CONFIG_DEFAULT_CFQ=y
185# CONFIG_DEFAULT_NOOP is not set 186# CONFIG_DEFAULT_NOOP is not set
186CONFIG_DEFAULT_IOSCHED="anticipatory" 187CONFIG_DEFAULT_IOSCHED="cfq"
188# CONFIG_INLINE_SPIN_TRYLOCK is not set
189# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
190# CONFIG_INLINE_SPIN_LOCK is not set
191# CONFIG_INLINE_SPIN_LOCK_BH is not set
192# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
193# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
194CONFIG_INLINE_SPIN_UNLOCK=y
195# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
196CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
197# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
198# CONFIG_INLINE_READ_TRYLOCK is not set
199# CONFIG_INLINE_READ_LOCK is not set
200# CONFIG_INLINE_READ_LOCK_BH is not set
201# CONFIG_INLINE_READ_LOCK_IRQ is not set
202# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
203CONFIG_INLINE_READ_UNLOCK=y
204# CONFIG_INLINE_READ_UNLOCK_BH is not set
205CONFIG_INLINE_READ_UNLOCK_IRQ=y
206# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
207# CONFIG_INLINE_WRITE_TRYLOCK is not set
208# CONFIG_INLINE_WRITE_LOCK is not set
209# CONFIG_INLINE_WRITE_LOCK_BH is not set
210# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
211# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
212CONFIG_INLINE_WRITE_UNLOCK=y
213# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
214CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
215# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
216# CONFIG_MUTEX_SPIN_ON_OWNER is not set
187# CONFIG_FREEZER is not set 217# CONFIG_FREEZER is not set
188 218
189# 219#
@@ -266,6 +296,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
266CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 296CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
267# CONFIG_KEXEC is not set 297# CONFIG_KEXEC is not set
268# CONFIG_CRASH_DUMP is not set 298# CONFIG_CRASH_DUMP is not set
299CONFIG_SPARSE_IRQ=y
269CONFIG_MAX_ACTIVE_REGIONS=32 300CONFIG_MAX_ACTIVE_REGIONS=32
270CONFIG_ARCH_FLATMEM_ENABLE=y 301CONFIG_ARCH_FLATMEM_ENABLE=y
271CONFIG_ARCH_POPULATES_NODE_MAP=y 302CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -282,8 +313,6 @@ CONFIG_MIGRATION=y
282CONFIG_ZONE_DMA_FLAG=1 313CONFIG_ZONE_DMA_FLAG=1
283CONFIG_BOUNCE=y 314CONFIG_BOUNCE=y
284CONFIG_VIRT_TO_BUS=y 315CONFIG_VIRT_TO_BUS=y
285CONFIG_HAVE_MLOCK=y
286CONFIG_HAVE_MLOCKED_PAGE_BIT=y
287# CONFIG_KSM is not set 316# CONFIG_KSM is not set
288CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 317CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
289CONFIG_PPC_4K_PAGES=y 318CONFIG_PPC_4K_PAGES=y
@@ -413,9 +442,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
413# CONFIG_AF_RXRPC is not set 442# CONFIG_AF_RXRPC is not set
414CONFIG_WIRELESS=y 443CONFIG_WIRELESS=y
415# CONFIG_CFG80211 is not set 444# CONFIG_CFG80211 is not set
416CONFIG_CFG80211_DEFAULT_PS_VALUE=0
417CONFIG_WIRELESS_OLD_REGULATORY=y
418# CONFIG_WIRELESS_EXT is not set
419# CONFIG_LIB80211 is not set 445# CONFIG_LIB80211 is not set
420 446
421# 447#
@@ -548,6 +574,10 @@ CONFIG_BLK_DEV=y
548# CONFIG_BLK_DEV_COW_COMMON is not set 574# CONFIG_BLK_DEV_COW_COMMON is not set
549CONFIG_BLK_DEV_LOOP=y 575CONFIG_BLK_DEV_LOOP=y
550# CONFIG_BLK_DEV_CRYPTOLOOP is not set 576# CONFIG_BLK_DEV_CRYPTOLOOP is not set
577
578#
579# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
580#
551# CONFIG_BLK_DEV_NBD is not set 581# CONFIG_BLK_DEV_NBD is not set
552# CONFIG_BLK_DEV_SX8 is not set 582# CONFIG_BLK_DEV_SX8 is not set
553# CONFIG_BLK_DEV_UB is not set 583# CONFIG_BLK_DEV_UB is not set
@@ -559,6 +589,7 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
559# CONFIG_ATA_OVER_ETH is not set 589# CONFIG_ATA_OVER_ETH is not set
560# CONFIG_BLK_DEV_HD is not set 590# CONFIG_BLK_DEV_HD is not set
561CONFIG_MISC_DEVICES=y 591CONFIG_MISC_DEVICES=y
592# CONFIG_AD525X_DPOT is not set
562# CONFIG_PHANTOM is not set 593# CONFIG_PHANTOM is not set
563# CONFIG_SGI_IOC4 is not set 594# CONFIG_SGI_IOC4 is not set
564# CONFIG_TIFM_CORE is not set 595# CONFIG_TIFM_CORE is not set
@@ -566,6 +597,7 @@ CONFIG_MISC_DEVICES=y
566# CONFIG_ENCLOSURE_SERVICES is not set 597# CONFIG_ENCLOSURE_SERVICES is not set
567# CONFIG_HP_ILO is not set 598# CONFIG_HP_ILO is not set
568# CONFIG_ISL29003 is not set 599# CONFIG_ISL29003 is not set
600# CONFIG_DS1682 is not set
569# CONFIG_C2PORT is not set 601# CONFIG_C2PORT is not set
570 602
571# 603#
@@ -618,7 +650,9 @@ CONFIG_SCSI_LOWLEVEL=y
618# CONFIG_SCSI_BNX2_ISCSI is not set 650# CONFIG_SCSI_BNX2_ISCSI is not set
619# CONFIG_BE2ISCSI is not set 651# CONFIG_BE2ISCSI is not set
620# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 652# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
653# CONFIG_SCSI_HPSA is not set
621# CONFIG_SCSI_3W_9XXX is not set 654# CONFIG_SCSI_3W_9XXX is not set
655# CONFIG_SCSI_3W_SAS is not set
622# CONFIG_SCSI_ACARD is not set 656# CONFIG_SCSI_ACARD is not set
623# CONFIG_SCSI_AACRAID is not set 657# CONFIG_SCSI_AACRAID is not set
624# CONFIG_SCSI_AIC7XXX is not set 658# CONFIG_SCSI_AIC7XXX is not set
@@ -657,6 +691,7 @@ CONFIG_SCSI_LOWLEVEL=y
657# CONFIG_SCSI_NSP32 is not set 691# CONFIG_SCSI_NSP32 is not set
658# CONFIG_SCSI_DEBUG is not set 692# CONFIG_SCSI_DEBUG is not set
659# CONFIG_SCSI_PMCRAID is not set 693# CONFIG_SCSI_PMCRAID is not set
694# CONFIG_SCSI_PM8001 is not set
660# CONFIG_SCSI_SRP is not set 695# CONFIG_SCSI_SRP is not set
661# CONFIG_SCSI_BFA_FC is not set 696# CONFIG_SCSI_BFA_FC is not set
662# CONFIG_SCSI_DH is not set 697# CONFIG_SCSI_DH is not set
@@ -712,15 +747,16 @@ CONFIG_ATA_SFF=y
712# CONFIG_PATA_NS87415 is not set 747# CONFIG_PATA_NS87415 is not set
713# CONFIG_PATA_OPTI is not set 748# CONFIG_PATA_OPTI is not set
714# CONFIG_PATA_OPTIDMA is not set 749# CONFIG_PATA_OPTIDMA is not set
750# CONFIG_PATA_PDC2027X is not set
715# CONFIG_PATA_PDC_OLD is not set 751# CONFIG_PATA_PDC_OLD is not set
716# CONFIG_PATA_RADISYS is not set 752# CONFIG_PATA_RADISYS is not set
717# CONFIG_PATA_RDC is not set 753# CONFIG_PATA_RDC is not set
718# CONFIG_PATA_RZ1000 is not set 754# CONFIG_PATA_RZ1000 is not set
719# CONFIG_PATA_SC1200 is not set 755# CONFIG_PATA_SC1200 is not set
720# CONFIG_PATA_SERVERWORKS is not set 756# CONFIG_PATA_SERVERWORKS is not set
721# CONFIG_PATA_PDC2027X is not set
722# CONFIG_PATA_SIL680 is not set 757# CONFIG_PATA_SIL680 is not set
723# CONFIG_PATA_SIS is not set 758# CONFIG_PATA_SIS is not set
759# CONFIG_PATA_TOSHIBA is not set
724# CONFIG_PATA_VIA is not set 760# CONFIG_PATA_VIA is not set
725# CONFIG_PATA_WINBOND is not set 761# CONFIG_PATA_WINBOND is not set
726# CONFIG_PATA_PLATFORM is not set 762# CONFIG_PATA_PLATFORM is not set
@@ -737,7 +773,7 @@ CONFIG_ATA_SFF=y
737# 773#
738 774
739# 775#
740# See the help texts for more information. 776# The newer stack is recommended.
741# 777#
742# CONFIG_FIREWIRE is not set 778# CONFIG_FIREWIRE is not set
743# CONFIG_IEEE1394 is not set 779# CONFIG_IEEE1394 is not set
@@ -844,8 +880,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y
844# CONFIG_BE2NET is not set 880# CONFIG_BE2NET is not set
845# CONFIG_TR is not set 881# CONFIG_TR is not set
846CONFIG_WLAN=y 882CONFIG_WLAN=y
847# CONFIG_WLAN_PRE80211 is not set 883# CONFIG_AIRO is not set
848# CONFIG_WLAN_80211 is not set 884# CONFIG_ATMEL is not set
885# CONFIG_PRISM54 is not set
886# CONFIG_USB_ZD1201 is not set
887# CONFIG_HOSTAP is not set
849 888
850# 889#
851# Enable WiMAX (Networking options) to see the WiMAX drivers 890# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -868,6 +907,7 @@ CONFIG_WLAN=y
868# CONFIG_NETCONSOLE is not set 907# CONFIG_NETCONSOLE is not set
869# CONFIG_NETPOLL is not set 908# CONFIG_NETPOLL is not set
870# CONFIG_NET_POLL_CONTROLLER is not set 909# CONFIG_NET_POLL_CONTROLLER is not set
910# CONFIG_VMXNET3 is not set
871# CONFIG_ISDN is not set 911# CONFIG_ISDN is not set
872# CONFIG_PHONE is not set 912# CONFIG_PHONE is not set
873 913
@@ -877,6 +917,7 @@ CONFIG_WLAN=y
877CONFIG_INPUT=y 917CONFIG_INPUT=y
878CONFIG_INPUT_FF_MEMLESS=m 918CONFIG_INPUT_FF_MEMLESS=m
879# CONFIG_INPUT_POLLDEV is not set 919# CONFIG_INPUT_POLLDEV is not set
920# CONFIG_INPUT_SPARSEKMAP is not set
880 921
881# 922#
882# Userland interfaces 923# Userland interfaces
@@ -929,6 +970,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
929# CONFIG_SERIAL_JSM is not set 970# CONFIG_SERIAL_JSM is not set
930# CONFIG_SERIAL_OF_PLATFORM is not set 971# CONFIG_SERIAL_OF_PLATFORM is not set
931# CONFIG_SERIAL_QE is not set 972# CONFIG_SERIAL_QE is not set
973# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
932CONFIG_UNIX98_PTYS=y 974CONFIG_UNIX98_PTYS=y
933# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 975# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
934CONFIG_LEGACY_PTYS=y 976CONFIG_LEGACY_PTYS=y
@@ -989,11 +1031,6 @@ CONFIG_I2C_MPC=y
989# CONFIG_I2C_TINY_USB is not set 1031# CONFIG_I2C_TINY_USB is not set
990 1032
991# 1033#
992# Graphics adapter I2C/DDC channel drivers
993#
994# CONFIG_I2C_VOODOO3 is not set
995
996#
997# Other I2C/SMBus bus drivers 1034# Other I2C/SMBus bus drivers
998# 1035#
999# CONFIG_I2C_PCA_PLATFORM is not set 1036# CONFIG_I2C_PCA_PLATFORM is not set
@@ -1002,7 +1039,6 @@ CONFIG_I2C_MPC=y
1002# 1039#
1003# Miscellaneous I2C Chip support 1040# Miscellaneous I2C Chip support
1004# 1041#
1005# CONFIG_DS1682 is not set
1006# CONFIG_SENSORS_TSL2550 is not set 1042# CONFIG_SENSORS_TSL2550 is not set
1007# CONFIG_I2C_DEBUG_CORE is not set 1043# CONFIG_I2C_DEBUG_CORE is not set
1008# CONFIG_I2C_DEBUG_ALGO is not set 1044# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1034,6 +1070,7 @@ CONFIG_GPIOLIB=y
1034# 1070#
1035# PCI GPIO expanders: 1071# PCI GPIO expanders:
1036# 1072#
1073# CONFIG_GPIO_CS5535 is not set
1037# CONFIG_GPIO_BT8XX is not set 1074# CONFIG_GPIO_BT8XX is not set
1038# CONFIG_GPIO_LANGWELL is not set 1075# CONFIG_GPIO_LANGWELL is not set
1039 1076
@@ -1076,6 +1113,7 @@ CONFIG_HWMON=y
1076# CONFIG_SENSORS_GL520SM is not set 1113# CONFIG_SENSORS_GL520SM is not set
1077# CONFIG_SENSORS_IT87 is not set 1114# CONFIG_SENSORS_IT87 is not set
1078# CONFIG_SENSORS_LM63 is not set 1115# CONFIG_SENSORS_LM63 is not set
1116# CONFIG_SENSORS_LM73 is not set
1079# CONFIG_SENSORS_LM75 is not set 1117# CONFIG_SENSORS_LM75 is not set
1080# CONFIG_SENSORS_LM77 is not set 1118# CONFIG_SENSORS_LM77 is not set
1081# CONFIG_SENSORS_LM78 is not set 1119# CONFIG_SENSORS_LM78 is not set
@@ -1115,6 +1153,7 @@ CONFIG_HWMON=y
1115# CONFIG_SENSORS_W83L786NG is not set 1153# CONFIG_SENSORS_W83L786NG is not set
1116# CONFIG_SENSORS_W83627HF is not set 1154# CONFIG_SENSORS_W83627HF is not set
1117# CONFIG_SENSORS_W83627EHF is not set 1155# CONFIG_SENSORS_W83627EHF is not set
1156# CONFIG_SENSORS_LIS3_I2C is not set
1118# CONFIG_THERMAL is not set 1157# CONFIG_THERMAL is not set
1119CONFIG_WATCHDOG=y 1158CONFIG_WATCHDOG=y
1120# CONFIG_WATCHDOG_NOWAYOUT is not set 1159# CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -1153,11 +1192,13 @@ CONFIG_SSB_POSSIBLE=y
1153# CONFIG_TWL4030_CORE is not set 1192# CONFIG_TWL4030_CORE is not set
1154# CONFIG_MFD_TMIO is not set 1193# CONFIG_MFD_TMIO is not set
1155# CONFIG_PMIC_DA903X is not set 1194# CONFIG_PMIC_DA903X is not set
1195# CONFIG_PMIC_ADP5520 is not set
1156# CONFIG_MFD_WM8400 is not set 1196# CONFIG_MFD_WM8400 is not set
1157# CONFIG_MFD_WM831X is not set 1197# CONFIG_MFD_WM831X is not set
1158# CONFIG_MFD_WM8350_I2C is not set 1198# CONFIG_MFD_WM8350_I2C is not set
1159# CONFIG_MFD_PCF50633 is not set 1199# CONFIG_MFD_PCF50633 is not set
1160# CONFIG_AB3100_CORE is not set 1200# CONFIG_AB3100_CORE is not set
1201# CONFIG_MFD_88PM8607 is not set
1161# CONFIG_REGULATOR is not set 1202# CONFIG_REGULATOR is not set
1162# CONFIG_MEDIA_SUPPORT is not set 1203# CONFIG_MEDIA_SUPPORT is not set
1163 1204
@@ -1249,6 +1290,7 @@ CONFIG_USB_MON=y
1249CONFIG_USB_EHCI_HCD=y 1290CONFIG_USB_EHCI_HCD=y
1250CONFIG_USB_EHCI_ROOT_HUB_TT=y 1291CONFIG_USB_EHCI_ROOT_HUB_TT=y
1251# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1292# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1293# CONFIG_XPS_USB_HCD_XILINX is not set
1252CONFIG_USB_EHCI_FSL=y 1294CONFIG_USB_EHCI_FSL=y
1253CONFIG_USB_EHCI_HCD_PPC_OF=y 1295CONFIG_USB_EHCI_HCD_PPC_OF=y
1254# CONFIG_USB_OXU210HP_HCD is not set 1296# CONFIG_USB_OXU210HP_HCD is not set
@@ -1542,7 +1584,7 @@ CONFIG_FRAME_WARN=1024
1542# CONFIG_DEBUG_FS is not set 1584# CONFIG_DEBUG_FS is not set
1543# CONFIG_HEADERS_CHECK is not set 1585# CONFIG_HEADERS_CHECK is not set
1544# CONFIG_DEBUG_KERNEL is not set 1586# CONFIG_DEBUG_KERNEL is not set
1545# CONFIG_DEBUG_BUGVERBOSE is not set 1587CONFIG_DEBUG_BUGVERBOSE=y
1546# CONFIG_DEBUG_MEMORY_INIT is not set 1588# CONFIG_DEBUG_MEMORY_INIT is not set
1547# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1589# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1548# CONFIG_LATENCYTOP is not set 1590# CONFIG_LATENCYTOP is not set
@@ -1569,7 +1611,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1569# CONFIG_KEYS is not set 1611# CONFIG_KEYS is not set
1570# CONFIG_SECURITY is not set 1612# CONFIG_SECURITY is not set
1571# CONFIG_SECURITYFS is not set 1613# CONFIG_SECURITYFS is not set
1572# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1614# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1615# CONFIG_DEFAULT_SECURITY_SMACK is not set
1616# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1617CONFIG_DEFAULT_SECURITY_DAC=y
1618CONFIG_DEFAULT_SECURITY=""
1573CONFIG_CRYPTO=y 1619CONFIG_CRYPTO=y
1574 1620
1575# 1621#
diff --git a/arch/powerpc/configs/mpc85xx_defconfig b/arch/powerpc/configs/mpc85xx_defconfig
index a12e7ba87a43..8f35f8049c92 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:25:20 2009 4# Wed Jan 6 09:24:06 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_E500=y 17CONFIG_E500=y
18# CONFIG_PPC_E500MC is not set 18# CONFIG_PPC_E500MC is not set
19CONFIG_FSL_EMB_PERFMON=y
19CONFIG_BOOKE=y 20CONFIG_BOOKE=y
20CONFIG_FSL_BOOKE=y 21CONFIG_FSL_BOOKE=y
21CONFIG_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
@@ -39,6 +39,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
39# 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 40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
41CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
42CONFIG_NR_IRQS=512
42CONFIG_STACKTRACE_SUPPORT=y 43CONFIG_STACKTRACE_SUPPORT=y
43CONFIG_HAVE_LATENCYTOP_SUPPORT=y 44CONFIG_HAVE_LATENCYTOP_SUPPORT=y
44CONFIG_TRACE_IRQFLAGS_SUPPORT=y 45CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -62,6 +63,8 @@ CONFIG_AUDIT_ARCH=y
62CONFIG_GENERIC_BUG=y 63CONFIG_GENERIC_BUG=y
63CONFIG_DTC=y 64CONFIG_DTC=y
64CONFIG_DEFAULT_UIMAGE=y 65CONFIG_DEFAULT_UIMAGE=y
66CONFIG_ARCH_HIBERNATION_POSSIBLE=y
67CONFIG_ARCH_SUSPEND_POSSIBLE=y
65# CONFIG_PPC_DCR_NATIVE is not set 68# CONFIG_PPC_DCR_NATIVE is not set
66# CONFIG_PPC_DCR_MMIO is not set 69# CONFIG_PPC_DCR_MMIO is not set
67CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 70CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -92,6 +95,7 @@ CONFIG_AUDIT=y
92# 95#
93CONFIG_TREE_RCU=y 96CONFIG_TREE_RCU=y
94# CONFIG_TREE_PREEMPT_RCU is not set 97# CONFIG_TREE_PREEMPT_RCU is not set
98# CONFIG_TINY_RCU is not set
95# CONFIG_RCU_TRACE is not set 99# CONFIG_RCU_TRACE is not set
96CONFIG_RCU_FANOUT=32 100CONFIG_RCU_FANOUT=32
97# CONFIG_RCU_FANOUT_EXACT is not set 101# CONFIG_RCU_FANOUT_EXACT is not set
@@ -184,14 +188,41 @@ CONFIG_LBDAF=y
184# IO Schedulers 188# IO Schedulers
185# 189#
186CONFIG_IOSCHED_NOOP=y 190CONFIG_IOSCHED_NOOP=y
187CONFIG_IOSCHED_AS=y
188CONFIG_IOSCHED_DEADLINE=y 191CONFIG_IOSCHED_DEADLINE=y
189CONFIG_IOSCHED_CFQ=y 192CONFIG_IOSCHED_CFQ=y
190# CONFIG_DEFAULT_AS is not set
191# CONFIG_DEFAULT_DEADLINE is not set 193# CONFIG_DEFAULT_DEADLINE is not set
192CONFIG_DEFAULT_CFQ=y 194CONFIG_DEFAULT_CFQ=y
193# CONFIG_DEFAULT_NOOP is not set 195# CONFIG_DEFAULT_NOOP is not set
194CONFIG_DEFAULT_IOSCHED="cfq" 196CONFIG_DEFAULT_IOSCHED="cfq"
197# CONFIG_INLINE_SPIN_TRYLOCK is not set
198# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
199# CONFIG_INLINE_SPIN_LOCK is not set
200# CONFIG_INLINE_SPIN_LOCK_BH is not set
201# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
202# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
203CONFIG_INLINE_SPIN_UNLOCK=y
204# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
205CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
206# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
207# CONFIG_INLINE_READ_TRYLOCK is not set
208# CONFIG_INLINE_READ_LOCK is not set
209# CONFIG_INLINE_READ_LOCK_BH is not set
210# CONFIG_INLINE_READ_LOCK_IRQ is not set
211# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
212CONFIG_INLINE_READ_UNLOCK=y
213# CONFIG_INLINE_READ_UNLOCK_BH is not set
214CONFIG_INLINE_READ_UNLOCK_IRQ=y
215# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
216# CONFIG_INLINE_WRITE_TRYLOCK is not set
217# CONFIG_INLINE_WRITE_LOCK is not set
218# CONFIG_INLINE_WRITE_LOCK_BH is not set
219# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
220# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
221CONFIG_INLINE_WRITE_UNLOCK=y
222# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
223CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
224# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
225# CONFIG_MUTEX_SPIN_ON_OWNER is not set
195# CONFIG_FREEZER is not set 226# CONFIG_FREEZER is not set
196CONFIG_PPC_MSI_BITMAP=y 227CONFIG_PPC_MSI_BITMAP=y
197 228
@@ -201,7 +232,7 @@ CONFIG_PPC_MSI_BITMAP=y
201# CONFIG_PPC_CELL is not set 232# CONFIG_PPC_CELL is not set
202# CONFIG_PPC_CELL_NATIVE is not set 233# CONFIG_PPC_CELL_NATIVE is not set
203# CONFIG_PQ2ADS is not set 234# CONFIG_PQ2ADS is not set
204CONFIG_MPC85xx=y 235CONFIG_FSL_SOC_BOOKE=y
205CONFIG_MPC8540_ADS=y 236CONFIG_MPC8540_ADS=y
206CONFIG_MPC8560_ADS=y 237CONFIG_MPC8560_ADS=y
207CONFIG_MPC85xx_CDS=y 238CONFIG_MPC85xx_CDS=y
@@ -220,6 +251,7 @@ CONFIG_TQM8555=y
220CONFIG_TQM8560=y 251CONFIG_TQM8560=y
221CONFIG_SBC8548=y 252CONFIG_SBC8548=y
222# CONFIG_SBC8560 is not set 253# CONFIG_SBC8560 is not set
254# CONFIG_P4080_DS is not set
223CONFIG_TQM85xx=y 255CONFIG_TQM85xx=y
224# CONFIG_IPIC is not set 256# CONFIG_IPIC is not set
225CONFIG_MPIC=y 257CONFIG_MPIC=y
@@ -267,6 +299,7 @@ CONFIG_SWIOTLB=y
267CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 299CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
268CONFIG_ARCH_HAS_WALK_MEMORY=y 300CONFIG_ARCH_HAS_WALK_MEMORY=y
269CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 301CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
302CONFIG_SPARSE_IRQ=y
270CONFIG_MAX_ACTIVE_REGIONS=32 303CONFIG_MAX_ACTIVE_REGIONS=32
271CONFIG_ARCH_FLATMEM_ENABLE=y 304CONFIG_ARCH_FLATMEM_ENABLE=y
272CONFIG_ARCH_POPULATES_NODE_MAP=y 305CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -283,8 +316,6 @@ CONFIG_MIGRATION=y
283CONFIG_ZONE_DMA_FLAG=1 316CONFIG_ZONE_DMA_FLAG=1
284CONFIG_BOUNCE=y 317CONFIG_BOUNCE=y
285CONFIG_VIRT_TO_BUS=y 318CONFIG_VIRT_TO_BUS=y
286CONFIG_HAVE_MLOCK=y
287CONFIG_HAVE_MLOCKED_PAGE_BIT=y
288# CONFIG_KSM is not set 319# CONFIG_KSM is not set
289CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 320CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
290CONFIG_PPC_4K_PAGES=y 321CONFIG_PPC_4K_PAGES=y
@@ -405,6 +436,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y
405CONFIG_INET6_XFRM_MODE_BEET=y 436CONFIG_INET6_XFRM_MODE_BEET=y
406# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 437# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
407CONFIG_IPV6_SIT=y 438CONFIG_IPV6_SIT=y
439# CONFIG_IPV6_SIT_6RD is not set
408CONFIG_IPV6_NDISC_NODETYPE=y 440CONFIG_IPV6_NDISC_NODETYPE=y
409# CONFIG_IPV6_TUNNEL is not set 441# CONFIG_IPV6_TUNNEL is not set
410# CONFIG_IPV6_MULTIPLE_TABLES is not set 442# CONFIG_IPV6_MULTIPLE_TABLES is not set
@@ -449,9 +481,6 @@ CONFIG_SCTP_HMAC_MD5=y
449CONFIG_FIB_RULES=y 481CONFIG_FIB_RULES=y
450CONFIG_WIRELESS=y 482CONFIG_WIRELESS=y
451# CONFIG_CFG80211 is not set 483# CONFIG_CFG80211 is not set
452CONFIG_CFG80211_DEFAULT_PS_VALUE=0
453CONFIG_WIRELESS_OLD_REGULATORY=y
454# CONFIG_WIRELESS_EXT is not set
455# CONFIG_LIB80211 is not set 484# CONFIG_LIB80211 is not set
456 485
457# 486#
@@ -494,6 +523,10 @@ CONFIG_BLK_DEV=y
494# CONFIG_BLK_DEV_COW_COMMON is not set 523# CONFIG_BLK_DEV_COW_COMMON is not set
495CONFIG_BLK_DEV_LOOP=y 524CONFIG_BLK_DEV_LOOP=y
496# CONFIG_BLK_DEV_CRYPTOLOOP is not set 525# CONFIG_BLK_DEV_CRYPTOLOOP is not set
526
527#
528# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
529#
497CONFIG_BLK_DEV_NBD=y 530CONFIG_BLK_DEV_NBD=y
498# CONFIG_BLK_DEV_SX8 is not set 531# CONFIG_BLK_DEV_SX8 is not set
499# CONFIG_BLK_DEV_UB is not set 532# CONFIG_BLK_DEV_UB is not set
@@ -505,6 +538,7 @@ CONFIG_BLK_DEV_RAM_SIZE=131072
505# CONFIG_ATA_OVER_ETH is not set 538# CONFIG_ATA_OVER_ETH is not set
506# CONFIG_BLK_DEV_HD is not set 539# CONFIG_BLK_DEV_HD is not set
507CONFIG_MISC_DEVICES=y 540CONFIG_MISC_DEVICES=y
541# CONFIG_AD525X_DPOT is not set
508# CONFIG_PHANTOM is not set 542# CONFIG_PHANTOM is not set
509# CONFIG_SGI_IOC4 is not set 543# CONFIG_SGI_IOC4 is not set
510# CONFIG_TIFM_CORE is not set 544# CONFIG_TIFM_CORE is not set
@@ -512,6 +546,7 @@ CONFIG_MISC_DEVICES=y
512# CONFIG_ENCLOSURE_SERVICES is not set 546# CONFIG_ENCLOSURE_SERVICES is not set
513# CONFIG_HP_ILO is not set 547# CONFIG_HP_ILO is not set
514# CONFIG_ISL29003 is not set 548# CONFIG_ISL29003 is not set
549# CONFIG_DS1682 is not set
515# CONFIG_C2PORT is not set 550# CONFIG_C2PORT is not set
516 551
517# 552#
@@ -565,7 +600,9 @@ CONFIG_SCSI_LOWLEVEL=y
565# CONFIG_SCSI_BNX2_ISCSI is not set 600# CONFIG_SCSI_BNX2_ISCSI is not set
566# CONFIG_BE2ISCSI is not set 601# CONFIG_BE2ISCSI is not set
567# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 602# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
603# CONFIG_SCSI_HPSA is not set
568# CONFIG_SCSI_3W_9XXX is not set 604# CONFIG_SCSI_3W_9XXX is not set
605# CONFIG_SCSI_3W_SAS is not set
569# CONFIG_SCSI_ACARD is not set 606# CONFIG_SCSI_ACARD is not set
570# CONFIG_SCSI_AACRAID is not set 607# CONFIG_SCSI_AACRAID is not set
571# CONFIG_SCSI_AIC7XXX is not set 608# CONFIG_SCSI_AIC7XXX is not set
@@ -604,6 +641,7 @@ CONFIG_SCSI_LOWLEVEL=y
604# CONFIG_SCSI_NSP32 is not set 641# CONFIG_SCSI_NSP32 is not set
605# CONFIG_SCSI_DEBUG is not set 642# CONFIG_SCSI_DEBUG is not set
606# CONFIG_SCSI_PMCRAID is not set 643# CONFIG_SCSI_PMCRAID is not set
644# CONFIG_SCSI_PM8001 is not set
607# CONFIG_SCSI_SRP is not set 645# CONFIG_SCSI_SRP is not set
608# CONFIG_SCSI_BFA_FC is not set 646# CONFIG_SCSI_BFA_FC is not set
609# CONFIG_SCSI_DH is not set 647# CONFIG_SCSI_DH is not set
@@ -659,15 +697,16 @@ CONFIG_PATA_ALI=y
659# CONFIG_PATA_NS87415 is not set 697# CONFIG_PATA_NS87415 is not set
660# CONFIG_PATA_OPTI is not set 698# CONFIG_PATA_OPTI is not set
661# CONFIG_PATA_OPTIDMA is not set 699# CONFIG_PATA_OPTIDMA is not set
700# CONFIG_PATA_PDC2027X is not set
662# CONFIG_PATA_PDC_OLD is not set 701# CONFIG_PATA_PDC_OLD is not set
663# CONFIG_PATA_RADISYS is not set 702# CONFIG_PATA_RADISYS is not set
664# CONFIG_PATA_RDC is not set 703# CONFIG_PATA_RDC is not set
665# CONFIG_PATA_RZ1000 is not set 704# CONFIG_PATA_RZ1000 is not set
666# CONFIG_PATA_SC1200 is not set 705# CONFIG_PATA_SC1200 is not set
667# CONFIG_PATA_SERVERWORKS is not set 706# CONFIG_PATA_SERVERWORKS is not set
668# CONFIG_PATA_PDC2027X is not set
669# CONFIG_PATA_SIL680 is not set 707# CONFIG_PATA_SIL680 is not set
670# CONFIG_PATA_SIS is not set 708# CONFIG_PATA_SIS is not set
709# CONFIG_PATA_TOSHIBA is not set
671# CONFIG_PATA_VIA is not set 710# CONFIG_PATA_VIA is not set
672# CONFIG_PATA_WINBOND is not set 711# CONFIG_PATA_WINBOND is not set
673# CONFIG_PATA_PLATFORM is not set 712# CONFIG_PATA_PLATFORM is not set
@@ -684,7 +723,7 @@ CONFIG_PATA_ALI=y
684# 723#
685 724
686# 725#
687# See the help texts for more information. 726# The newer stack is recommended.
688# 727#
689# CONFIG_FIREWIRE is not set 728# CONFIG_FIREWIRE is not set
690# CONFIG_IEEE1394 is not set 729# CONFIG_IEEE1394 is not set
@@ -795,8 +834,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y
795# CONFIG_BE2NET is not set 834# CONFIG_BE2NET is not set
796# CONFIG_TR is not set 835# CONFIG_TR is not set
797CONFIG_WLAN=y 836CONFIG_WLAN=y
798# CONFIG_WLAN_PRE80211 is not set 837# CONFIG_AIRO is not set
799# CONFIG_WLAN_80211 is not set 838# CONFIG_ATMEL is not set
839# CONFIG_PRISM54 is not set
840# CONFIG_USB_ZD1201 is not set
841# CONFIG_HOSTAP is not set
800 842
801# 843#
802# Enable WiMAX (Networking options) to see the WiMAX drivers 844# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -820,6 +862,7 @@ CONFIG_WLAN=y
820# CONFIG_NETCONSOLE is not set 862# CONFIG_NETCONSOLE is not set
821# CONFIG_NETPOLL is not set 863# CONFIG_NETPOLL is not set
822# CONFIG_NET_POLL_CONTROLLER is not set 864# CONFIG_NET_POLL_CONTROLLER is not set
865# CONFIG_VMXNET3 is not set
823# CONFIG_ISDN is not set 866# CONFIG_ISDN is not set
824# CONFIG_PHONE is not set 867# CONFIG_PHONE is not set
825 868
@@ -829,6 +872,7 @@ CONFIG_WLAN=y
829CONFIG_INPUT=y 872CONFIG_INPUT=y
830CONFIG_INPUT_FF_MEMLESS=m 873CONFIG_INPUT_FF_MEMLESS=m
831# CONFIG_INPUT_POLLDEV is not set 874# CONFIG_INPUT_POLLDEV is not set
875# CONFIG_INPUT_SPARSEKMAP is not set
832 876
833# 877#
834# Userland interfaces 878# Userland interfaces
@@ -858,6 +902,7 @@ CONFIG_SERIO_SERPORT=y
858CONFIG_SERIO_LIBPS2=y 902CONFIG_SERIO_LIBPS2=y
859# CONFIG_SERIO_RAW is not set 903# CONFIG_SERIO_RAW is not set
860# CONFIG_SERIO_XILINX_XPS_PS2 is not set 904# CONFIG_SERIO_XILINX_XPS_PS2 is not set
905# CONFIG_SERIO_ALTERA_PS2 is not set
861# CONFIG_GAMEPORT is not set 906# CONFIG_GAMEPORT is not set
862 907
863# 908#
@@ -896,6 +941,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
896# CONFIG_SERIAL_JSM is not set 941# CONFIG_SERIAL_JSM is not set
897# CONFIG_SERIAL_OF_PLATFORM is not set 942# CONFIG_SERIAL_OF_PLATFORM is not set
898CONFIG_SERIAL_QE=m 943CONFIG_SERIAL_QE=m
944# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
899CONFIG_UNIX98_PTYS=y 945CONFIG_UNIX98_PTYS=y
900# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 946# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
901CONFIG_LEGACY_PTYS=y 947CONFIG_LEGACY_PTYS=y
@@ -956,11 +1002,6 @@ CONFIG_I2C_MPC=y
956# CONFIG_I2C_TINY_USB is not set 1002# CONFIG_I2C_TINY_USB is not set
957 1003
958# 1004#
959# Graphics adapter I2C/DDC channel drivers
960#
961# CONFIG_I2C_VOODOO3 is not set
962
963#
964# Other I2C/SMBus bus drivers 1005# Other I2C/SMBus bus drivers
965# 1006#
966# CONFIG_I2C_PCA_PLATFORM is not set 1007# CONFIG_I2C_PCA_PLATFORM is not set
@@ -969,7 +1010,6 @@ CONFIG_I2C_MPC=y
969# 1010#
970# Miscellaneous I2C Chip support 1011# Miscellaneous I2C Chip support
971# 1012#
972# CONFIG_DS1682 is not set
973# CONFIG_SENSORS_TSL2550 is not set 1013# CONFIG_SENSORS_TSL2550 is not set
974# CONFIG_I2C_DEBUG_CORE is not set 1014# CONFIG_I2C_DEBUG_CORE is not set
975# CONFIG_I2C_DEBUG_ALGO is not set 1015# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1002,6 +1042,7 @@ CONFIG_GPIOLIB=y
1002# 1042#
1003# PCI GPIO expanders: 1043# PCI GPIO expanders:
1004# 1044#
1045# CONFIG_GPIO_CS5535 is not set
1005# CONFIG_GPIO_BT8XX is not set 1046# CONFIG_GPIO_BT8XX is not set
1006# CONFIG_GPIO_LANGWELL is not set 1047# CONFIG_GPIO_LANGWELL is not set
1007 1048
@@ -1035,11 +1076,13 @@ CONFIG_SSB_POSSIBLE=y
1035# CONFIG_TWL4030_CORE is not set 1076# CONFIG_TWL4030_CORE is not set
1036# CONFIG_MFD_TMIO is not set 1077# CONFIG_MFD_TMIO is not set
1037# CONFIG_PMIC_DA903X is not set 1078# CONFIG_PMIC_DA903X is not set
1079# CONFIG_PMIC_ADP5520 is not set
1038# CONFIG_MFD_WM8400 is not set 1080# CONFIG_MFD_WM8400 is not set
1039# CONFIG_MFD_WM831X is not set 1081# CONFIG_MFD_WM831X is not set
1040# CONFIG_MFD_WM8350_I2C is not set 1082# CONFIG_MFD_WM8350_I2C is not set
1041# CONFIG_MFD_PCF50633 is not set 1083# CONFIG_MFD_PCF50633 is not set
1042# CONFIG_AB3100_CORE is not set 1084# CONFIG_AB3100_CORE is not set
1085# CONFIG_MFD_88PM8607 is not set
1043# CONFIG_REGULATOR is not set 1086# CONFIG_REGULATOR is not set
1044# CONFIG_MEDIA_SUPPORT is not set 1087# CONFIG_MEDIA_SUPPORT is not set
1045 1088
@@ -1114,6 +1157,7 @@ CONFIG_SND_PCI=y
1114# CONFIG_SND_CS4281 is not set 1157# CONFIG_SND_CS4281 is not set
1115# CONFIG_SND_CS46XX is not set 1158# CONFIG_SND_CS46XX is not set
1116# CONFIG_SND_CS5530 is not set 1159# CONFIG_SND_CS5530 is not set
1160# CONFIG_SND_CS5535AUDIO is not set
1117# CONFIG_SND_CTXFI is not set 1161# CONFIG_SND_CTXFI is not set
1118# CONFIG_SND_DARLA20 is not set 1162# CONFIG_SND_DARLA20 is not set
1119# CONFIG_SND_GINA20 is not set 1163# CONFIG_SND_GINA20 is not set
@@ -1241,6 +1285,7 @@ CONFIG_USB_MON=y
1241CONFIG_USB_EHCI_HCD=y 1285CONFIG_USB_EHCI_HCD=y
1242CONFIG_USB_EHCI_ROOT_HUB_TT=y 1286CONFIG_USB_EHCI_ROOT_HUB_TT=y
1243# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1287# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1288# CONFIG_XPS_USB_HCD_XILINX is not set
1244CONFIG_USB_EHCI_FSL=y 1289CONFIG_USB_EHCI_FSL=y
1245CONFIG_USB_EHCI_HCD_PPC_OF=y 1290CONFIG_USB_EHCI_HCD_PPC_OF=y
1246# CONFIG_USB_OXU210HP_HCD is not set 1291# CONFIG_USB_OXU210HP_HCD is not set
@@ -1347,7 +1392,6 @@ CONFIG_EDAC=y
1347# 1392#
1348# CONFIG_EDAC_DEBUG is not set 1393# CONFIG_EDAC_DEBUG is not set
1349CONFIG_EDAC_MM_EDAC=y 1394CONFIG_EDAC_MM_EDAC=y
1350CONFIG_EDAC_MPC85XX=y
1351CONFIG_RTC_LIB=y 1395CONFIG_RTC_LIB=y
1352CONFIG_RTC_CLASS=y 1396CONFIG_RTC_CLASS=y
1353CONFIG_RTC_HCTOSYS=y 1397CONFIG_RTC_HCTOSYS=y
@@ -1376,6 +1420,7 @@ CONFIG_RTC_INTF_DEV=y
1376# CONFIG_RTC_DRV_PCF8563 is not set 1420# CONFIG_RTC_DRV_PCF8563 is not set
1377# CONFIG_RTC_DRV_PCF8583 is not set 1421# CONFIG_RTC_DRV_PCF8583 is not set
1378# CONFIG_RTC_DRV_M41T80 is not set 1422# CONFIG_RTC_DRV_M41T80 is not set
1423# CONFIG_RTC_DRV_BQ32K is not set
1379# CONFIG_RTC_DRV_S35390A is not set 1424# CONFIG_RTC_DRV_S35390A is not set
1380# CONFIG_RTC_DRV_FM3130 is not set 1425# CONFIG_RTC_DRV_FM3130 is not set
1381# CONFIG_RTC_DRV_RX8581 is not set 1426# CONFIG_RTC_DRV_RX8581 is not set
@@ -1397,7 +1442,9 @@ CONFIG_RTC_DRV_CMOS=y
1397# CONFIG_RTC_DRV_M48T86 is not set 1442# CONFIG_RTC_DRV_M48T86 is not set
1398# CONFIG_RTC_DRV_M48T35 is not set 1443# CONFIG_RTC_DRV_M48T35 is not set
1399# CONFIG_RTC_DRV_M48T59 is not set 1444# CONFIG_RTC_DRV_M48T59 is not set
1445# CONFIG_RTC_DRV_MSM6242 is not set
1400# CONFIG_RTC_DRV_BQ4802 is not set 1446# CONFIG_RTC_DRV_BQ4802 is not set
1447# CONFIG_RTC_DRV_RP5C01 is not set
1401# CONFIG_RTC_DRV_V3020 is not set 1448# CONFIG_RTC_DRV_V3020 is not set
1402 1449
1403# 1450#
@@ -1731,7 +1778,11 @@ CONFIG_VIRQ_DEBUG=y
1731# CONFIG_KEYS is not set 1778# CONFIG_KEYS is not set
1732# CONFIG_SECURITY is not set 1779# CONFIG_SECURITY is not set
1733# CONFIG_SECURITYFS is not set 1780# CONFIG_SECURITYFS is not set
1734# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1781# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1782# CONFIG_DEFAULT_SECURITY_SMACK is not set
1783# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1784CONFIG_DEFAULT_SECURITY_DAC=y
1785CONFIG_DEFAULT_SECURITY=""
1735CONFIG_CRYPTO=y 1786CONFIG_CRYPTO=y
1736 1787
1737# 1788#
diff --git a/arch/powerpc/configs/mpc85xx_smp_defconfig b/arch/powerpc/configs/mpc85xx_smp_defconfig
index cd70b4a4ce01..8755ea3c7f5f 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:26:01 2009 4# Wed Jan 6 09:24:07 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,9 +16,9 @@ CONFIG_PPC_85xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_E500=y 17CONFIG_E500=y
18# CONFIG_PPC_E500MC is not set 18# CONFIG_PPC_E500MC is not set
19CONFIG_FSL_EMB_PERFMON=y
19CONFIG_BOOKE=y 20CONFIG_BOOKE=y
20CONFIG_FSL_BOOKE=y 21CONFIG_FSL_BOOKE=y
21CONFIG_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
@@ -40,6 +40,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
40# 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 41# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
42CONFIG_IRQ_PER_CPU=y 42CONFIG_IRQ_PER_CPU=y
43CONFIG_NR_IRQS=512
43CONFIG_STACKTRACE_SUPPORT=y 44CONFIG_STACKTRACE_SUPPORT=y
44CONFIG_HAVE_LATENCYTOP_SUPPORT=y 45CONFIG_HAVE_LATENCYTOP_SUPPORT=y
45CONFIG_TRACE_IRQFLAGS_SUPPORT=y 46CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -63,6 +64,8 @@ CONFIG_AUDIT_ARCH=y
63CONFIG_GENERIC_BUG=y 64CONFIG_GENERIC_BUG=y
64CONFIG_DTC=y 65CONFIG_DTC=y
65CONFIG_DEFAULT_UIMAGE=y 66CONFIG_DEFAULT_UIMAGE=y
67CONFIG_ARCH_HIBERNATION_POSSIBLE=y
68CONFIG_ARCH_SUSPEND_POSSIBLE=y
66# CONFIG_PPC_DCR_NATIVE is not set 69# CONFIG_PPC_DCR_NATIVE is not set
67# CONFIG_PPC_DCR_MMIO is not set 70# CONFIG_PPC_DCR_MMIO is not set
68CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 71CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -93,6 +96,7 @@ CONFIG_AUDIT=y
93# 96#
94CONFIG_TREE_RCU=y 97CONFIG_TREE_RCU=y
95# CONFIG_TREE_PREEMPT_RCU is not set 98# CONFIG_TREE_PREEMPT_RCU is not set
99# CONFIG_TINY_RCU is not set
96# CONFIG_RCU_TRACE is not set 100# CONFIG_RCU_TRACE is not set
97CONFIG_RCU_FANOUT=32 101CONFIG_RCU_FANOUT=32
98# CONFIG_RCU_FANOUT_EXACT is not set 102# CONFIG_RCU_FANOUT_EXACT is not set
@@ -187,14 +191,41 @@ CONFIG_LBDAF=y
187# IO Schedulers 191# IO Schedulers
188# 192#
189CONFIG_IOSCHED_NOOP=y 193CONFIG_IOSCHED_NOOP=y
190CONFIG_IOSCHED_AS=y
191CONFIG_IOSCHED_DEADLINE=y 194CONFIG_IOSCHED_DEADLINE=y
192CONFIG_IOSCHED_CFQ=y 195CONFIG_IOSCHED_CFQ=y
193# CONFIG_DEFAULT_AS is not set
194# CONFIG_DEFAULT_DEADLINE is not set 196# CONFIG_DEFAULT_DEADLINE is not set
195CONFIG_DEFAULT_CFQ=y 197CONFIG_DEFAULT_CFQ=y
196# CONFIG_DEFAULT_NOOP is not set 198# CONFIG_DEFAULT_NOOP is not set
197CONFIG_DEFAULT_IOSCHED="cfq" 199CONFIG_DEFAULT_IOSCHED="cfq"
200# CONFIG_INLINE_SPIN_TRYLOCK is not set
201# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
202# CONFIG_INLINE_SPIN_LOCK is not set
203# CONFIG_INLINE_SPIN_LOCK_BH is not set
204# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
205# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
206CONFIG_INLINE_SPIN_UNLOCK=y
207# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
208CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
209# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
210# CONFIG_INLINE_READ_TRYLOCK is not set
211# CONFIG_INLINE_READ_LOCK is not set
212# CONFIG_INLINE_READ_LOCK_BH is not set
213# CONFIG_INLINE_READ_LOCK_IRQ is not set
214# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
215CONFIG_INLINE_READ_UNLOCK=y
216# CONFIG_INLINE_READ_UNLOCK_BH is not set
217CONFIG_INLINE_READ_UNLOCK_IRQ=y
218# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
219# CONFIG_INLINE_WRITE_TRYLOCK is not set
220# CONFIG_INLINE_WRITE_LOCK is not set
221# CONFIG_INLINE_WRITE_LOCK_BH is not set
222# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
223# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
224CONFIG_INLINE_WRITE_UNLOCK=y
225# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
226CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
227# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
228CONFIG_MUTEX_SPIN_ON_OWNER=y
198# CONFIG_FREEZER is not set 229# CONFIG_FREEZER is not set
199CONFIG_PPC_MSI_BITMAP=y 230CONFIG_PPC_MSI_BITMAP=y
200 231
@@ -204,7 +235,7 @@ CONFIG_PPC_MSI_BITMAP=y
204# CONFIG_PPC_CELL is not set 235# CONFIG_PPC_CELL is not set
205# CONFIG_PPC_CELL_NATIVE is not set 236# CONFIG_PPC_CELL_NATIVE is not set
206# CONFIG_PQ2ADS is not set 237# CONFIG_PQ2ADS is not set
207CONFIG_MPC85xx=y 238CONFIG_FSL_SOC_BOOKE=y
208CONFIG_MPC8540_ADS=y 239CONFIG_MPC8540_ADS=y
209CONFIG_MPC8560_ADS=y 240CONFIG_MPC8560_ADS=y
210CONFIG_MPC85xx_CDS=y 241CONFIG_MPC85xx_CDS=y
@@ -223,6 +254,7 @@ CONFIG_TQM8555=y
223CONFIG_TQM8560=y 254CONFIG_TQM8560=y
224CONFIG_SBC8548=y 255CONFIG_SBC8548=y
225# CONFIG_SBC8560 is not set 256# CONFIG_SBC8560 is not set
257# CONFIG_P4080_DS is not set
226CONFIG_TQM85xx=y 258CONFIG_TQM85xx=y
227# CONFIG_IPIC is not set 259# CONFIG_IPIC is not set
228CONFIG_MPIC=y 260CONFIG_MPIC=y
@@ -271,6 +303,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
271CONFIG_ARCH_HAS_WALK_MEMORY=y 303CONFIG_ARCH_HAS_WALK_MEMORY=y
272CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 304CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
273# CONFIG_IRQ_ALL_CPUS is not set 305# CONFIG_IRQ_ALL_CPUS is not set
306CONFIG_SPARSE_IRQ=y
274CONFIG_MAX_ACTIVE_REGIONS=32 307CONFIG_MAX_ACTIVE_REGIONS=32
275CONFIG_ARCH_FLATMEM_ENABLE=y 308CONFIG_ARCH_FLATMEM_ENABLE=y
276CONFIG_ARCH_POPULATES_NODE_MAP=y 309CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -287,8 +320,6 @@ CONFIG_MIGRATION=y
287CONFIG_ZONE_DMA_FLAG=1 320CONFIG_ZONE_DMA_FLAG=1
288CONFIG_BOUNCE=y 321CONFIG_BOUNCE=y
289CONFIG_VIRT_TO_BUS=y 322CONFIG_VIRT_TO_BUS=y
290CONFIG_HAVE_MLOCK=y
291CONFIG_HAVE_MLOCKED_PAGE_BIT=y
292# CONFIG_KSM is not set 323# CONFIG_KSM is not set
293CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 324CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
294CONFIG_PPC_4K_PAGES=y 325CONFIG_PPC_4K_PAGES=y
@@ -409,6 +440,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y
409CONFIG_INET6_XFRM_MODE_BEET=y 440CONFIG_INET6_XFRM_MODE_BEET=y
410# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 441# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
411CONFIG_IPV6_SIT=y 442CONFIG_IPV6_SIT=y
443# CONFIG_IPV6_SIT_6RD is not set
412CONFIG_IPV6_NDISC_NODETYPE=y 444CONFIG_IPV6_NDISC_NODETYPE=y
413# CONFIG_IPV6_TUNNEL is not set 445# CONFIG_IPV6_TUNNEL is not set
414# CONFIG_IPV6_MULTIPLE_TABLES is not set 446# CONFIG_IPV6_MULTIPLE_TABLES is not set
@@ -453,9 +485,6 @@ CONFIG_SCTP_HMAC_MD5=y
453CONFIG_FIB_RULES=y 485CONFIG_FIB_RULES=y
454CONFIG_WIRELESS=y 486CONFIG_WIRELESS=y
455# CONFIG_CFG80211 is not set 487# CONFIG_CFG80211 is not set
456CONFIG_CFG80211_DEFAULT_PS_VALUE=0
457CONFIG_WIRELESS_OLD_REGULATORY=y
458# CONFIG_WIRELESS_EXT is not set
459# CONFIG_LIB80211 is not set 488# CONFIG_LIB80211 is not set
460 489
461# 490#
@@ -498,6 +527,10 @@ CONFIG_BLK_DEV=y
498# CONFIG_BLK_DEV_COW_COMMON is not set 527# CONFIG_BLK_DEV_COW_COMMON is not set
499CONFIG_BLK_DEV_LOOP=y 528CONFIG_BLK_DEV_LOOP=y
500# CONFIG_BLK_DEV_CRYPTOLOOP is not set 529# CONFIG_BLK_DEV_CRYPTOLOOP is not set
530
531#
532# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
533#
501CONFIG_BLK_DEV_NBD=y 534CONFIG_BLK_DEV_NBD=y
502# CONFIG_BLK_DEV_SX8 is not set 535# CONFIG_BLK_DEV_SX8 is not set
503# CONFIG_BLK_DEV_UB is not set 536# CONFIG_BLK_DEV_UB is not set
@@ -509,6 +542,7 @@ CONFIG_BLK_DEV_RAM_SIZE=131072
509# CONFIG_ATA_OVER_ETH is not set 542# CONFIG_ATA_OVER_ETH is not set
510# CONFIG_BLK_DEV_HD is not set 543# CONFIG_BLK_DEV_HD is not set
511CONFIG_MISC_DEVICES=y 544CONFIG_MISC_DEVICES=y
545# CONFIG_AD525X_DPOT is not set
512# CONFIG_PHANTOM is not set 546# CONFIG_PHANTOM is not set
513# CONFIG_SGI_IOC4 is not set 547# CONFIG_SGI_IOC4 is not set
514# CONFIG_TIFM_CORE is not set 548# CONFIG_TIFM_CORE is not set
@@ -516,6 +550,7 @@ CONFIG_MISC_DEVICES=y
516# CONFIG_ENCLOSURE_SERVICES is not set 550# CONFIG_ENCLOSURE_SERVICES is not set
517# CONFIG_HP_ILO is not set 551# CONFIG_HP_ILO is not set
518# CONFIG_ISL29003 is not set 552# CONFIG_ISL29003 is not set
553# CONFIG_DS1682 is not set
519# CONFIG_C2PORT is not set 554# CONFIG_C2PORT is not set
520 555
521# 556#
@@ -569,7 +604,9 @@ CONFIG_SCSI_LOWLEVEL=y
569# CONFIG_SCSI_BNX2_ISCSI is not set 604# CONFIG_SCSI_BNX2_ISCSI is not set
570# CONFIG_BE2ISCSI is not set 605# CONFIG_BE2ISCSI is not set
571# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 606# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
607# CONFIG_SCSI_HPSA is not set
572# CONFIG_SCSI_3W_9XXX is not set 608# CONFIG_SCSI_3W_9XXX is not set
609# CONFIG_SCSI_3W_SAS is not set
573# CONFIG_SCSI_ACARD is not set 610# CONFIG_SCSI_ACARD is not set
574# CONFIG_SCSI_AACRAID is not set 611# CONFIG_SCSI_AACRAID is not set
575# CONFIG_SCSI_AIC7XXX is not set 612# CONFIG_SCSI_AIC7XXX is not set
@@ -608,6 +645,7 @@ CONFIG_SCSI_LOWLEVEL=y
608# CONFIG_SCSI_NSP32 is not set 645# CONFIG_SCSI_NSP32 is not set
609# CONFIG_SCSI_DEBUG is not set 646# CONFIG_SCSI_DEBUG is not set
610# CONFIG_SCSI_PMCRAID is not set 647# CONFIG_SCSI_PMCRAID is not set
648# CONFIG_SCSI_PM8001 is not set
611# CONFIG_SCSI_SRP is not set 649# CONFIG_SCSI_SRP is not set
612# CONFIG_SCSI_BFA_FC is not set 650# CONFIG_SCSI_BFA_FC is not set
613# CONFIG_SCSI_DH is not set 651# CONFIG_SCSI_DH is not set
@@ -663,15 +701,16 @@ CONFIG_PATA_ALI=y
663# CONFIG_PATA_NS87415 is not set 701# CONFIG_PATA_NS87415 is not set
664# CONFIG_PATA_OPTI is not set 702# CONFIG_PATA_OPTI is not set
665# CONFIG_PATA_OPTIDMA is not set 703# CONFIG_PATA_OPTIDMA is not set
704# CONFIG_PATA_PDC2027X is not set
666# CONFIG_PATA_PDC_OLD is not set 705# CONFIG_PATA_PDC_OLD is not set
667# CONFIG_PATA_RADISYS is not set 706# CONFIG_PATA_RADISYS is not set
668# CONFIG_PATA_RDC is not set 707# CONFIG_PATA_RDC is not set
669# CONFIG_PATA_RZ1000 is not set 708# CONFIG_PATA_RZ1000 is not set
670# CONFIG_PATA_SC1200 is not set 709# CONFIG_PATA_SC1200 is not set
671# CONFIG_PATA_SERVERWORKS is not set 710# CONFIG_PATA_SERVERWORKS is not set
672# CONFIG_PATA_PDC2027X is not set
673# CONFIG_PATA_SIL680 is not set 711# CONFIG_PATA_SIL680 is not set
674# CONFIG_PATA_SIS is not set 712# CONFIG_PATA_SIS is not set
713# CONFIG_PATA_TOSHIBA is not set
675# CONFIG_PATA_VIA is not set 714# CONFIG_PATA_VIA is not set
676# CONFIG_PATA_WINBOND is not set 715# CONFIG_PATA_WINBOND is not set
677# CONFIG_PATA_PLATFORM is not set 716# CONFIG_PATA_PLATFORM is not set
@@ -688,7 +727,7 @@ CONFIG_PATA_ALI=y
688# 727#
689 728
690# 729#
691# See the help texts for more information. 730# The newer stack is recommended.
692# 731#
693# CONFIG_FIREWIRE is not set 732# CONFIG_FIREWIRE is not set
694# CONFIG_IEEE1394 is not set 733# CONFIG_IEEE1394 is not set
@@ -799,8 +838,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y
799# CONFIG_BE2NET is not set 838# CONFIG_BE2NET is not set
800# CONFIG_TR is not set 839# CONFIG_TR is not set
801CONFIG_WLAN=y 840CONFIG_WLAN=y
802# CONFIG_WLAN_PRE80211 is not set 841# CONFIG_AIRO is not set
803# CONFIG_WLAN_80211 is not set 842# CONFIG_ATMEL is not set
843# CONFIG_PRISM54 is not set
844# CONFIG_USB_ZD1201 is not set
845# CONFIG_HOSTAP is not set
804 846
805# 847#
806# Enable WiMAX (Networking options) to see the WiMAX drivers 848# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -824,6 +866,7 @@ CONFIG_WLAN=y
824# CONFIG_NETCONSOLE is not set 866# CONFIG_NETCONSOLE is not set
825# CONFIG_NETPOLL is not set 867# CONFIG_NETPOLL is not set
826# CONFIG_NET_POLL_CONTROLLER is not set 868# CONFIG_NET_POLL_CONTROLLER is not set
869# CONFIG_VMXNET3 is not set
827# CONFIG_ISDN is not set 870# CONFIG_ISDN is not set
828# CONFIG_PHONE is not set 871# CONFIG_PHONE is not set
829 872
@@ -833,6 +876,7 @@ CONFIG_WLAN=y
833CONFIG_INPUT=y 876CONFIG_INPUT=y
834CONFIG_INPUT_FF_MEMLESS=m 877CONFIG_INPUT_FF_MEMLESS=m
835# CONFIG_INPUT_POLLDEV is not set 878# CONFIG_INPUT_POLLDEV is not set
879# CONFIG_INPUT_SPARSEKMAP is not set
836 880
837# 881#
838# Userland interfaces 882# Userland interfaces
@@ -862,6 +906,7 @@ CONFIG_SERIO_SERPORT=y
862CONFIG_SERIO_LIBPS2=y 906CONFIG_SERIO_LIBPS2=y
863# CONFIG_SERIO_RAW is not set 907# CONFIG_SERIO_RAW is not set
864# CONFIG_SERIO_XILINX_XPS_PS2 is not set 908# CONFIG_SERIO_XILINX_XPS_PS2 is not set
909# CONFIG_SERIO_ALTERA_PS2 is not set
865# CONFIG_GAMEPORT is not set 910# CONFIG_GAMEPORT is not set
866 911
867# 912#
@@ -900,6 +945,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
900# CONFIG_SERIAL_JSM is not set 945# CONFIG_SERIAL_JSM is not set
901# CONFIG_SERIAL_OF_PLATFORM is not set 946# CONFIG_SERIAL_OF_PLATFORM is not set
902CONFIG_SERIAL_QE=m 947CONFIG_SERIAL_QE=m
948# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
903CONFIG_UNIX98_PTYS=y 949CONFIG_UNIX98_PTYS=y
904# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 950# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
905CONFIG_LEGACY_PTYS=y 951CONFIG_LEGACY_PTYS=y
@@ -960,11 +1006,6 @@ CONFIG_I2C_MPC=y
960# CONFIG_I2C_TINY_USB is not set 1006# CONFIG_I2C_TINY_USB is not set
961 1007
962# 1008#
963# Graphics adapter I2C/DDC channel drivers
964#
965# CONFIG_I2C_VOODOO3 is not set
966
967#
968# Other I2C/SMBus bus drivers 1009# Other I2C/SMBus bus drivers
969# 1010#
970# CONFIG_I2C_PCA_PLATFORM is not set 1011# CONFIG_I2C_PCA_PLATFORM is not set
@@ -973,7 +1014,6 @@ CONFIG_I2C_MPC=y
973# 1014#
974# Miscellaneous I2C Chip support 1015# Miscellaneous I2C Chip support
975# 1016#
976# CONFIG_DS1682 is not set
977# CONFIG_SENSORS_TSL2550 is not set 1017# CONFIG_SENSORS_TSL2550 is not set
978# CONFIG_I2C_DEBUG_CORE is not set 1018# CONFIG_I2C_DEBUG_CORE is not set
979# CONFIG_I2C_DEBUG_ALGO is not set 1019# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1006,6 +1046,7 @@ CONFIG_GPIOLIB=y
1006# 1046#
1007# PCI GPIO expanders: 1047# PCI GPIO expanders:
1008# 1048#
1049# CONFIG_GPIO_CS5535 is not set
1009# CONFIG_GPIO_BT8XX is not set 1050# CONFIG_GPIO_BT8XX is not set
1010# CONFIG_GPIO_LANGWELL is not set 1051# CONFIG_GPIO_LANGWELL is not set
1011 1052
@@ -1039,11 +1080,13 @@ CONFIG_SSB_POSSIBLE=y
1039# CONFIG_TWL4030_CORE is not set 1080# CONFIG_TWL4030_CORE is not set
1040# CONFIG_MFD_TMIO is not set 1081# CONFIG_MFD_TMIO is not set
1041# CONFIG_PMIC_DA903X is not set 1082# CONFIG_PMIC_DA903X is not set
1083# CONFIG_PMIC_ADP5520 is not set
1042# CONFIG_MFD_WM8400 is not set 1084# CONFIG_MFD_WM8400 is not set
1043# CONFIG_MFD_WM831X is not set 1085# CONFIG_MFD_WM831X is not set
1044# CONFIG_MFD_WM8350_I2C is not set 1086# CONFIG_MFD_WM8350_I2C is not set
1045# CONFIG_MFD_PCF50633 is not set 1087# CONFIG_MFD_PCF50633 is not set
1046# CONFIG_AB3100_CORE is not set 1088# CONFIG_AB3100_CORE is not set
1089# CONFIG_MFD_88PM8607 is not set
1047# CONFIG_REGULATOR is not set 1090# CONFIG_REGULATOR is not set
1048# CONFIG_MEDIA_SUPPORT is not set 1091# CONFIG_MEDIA_SUPPORT is not set
1049 1092
@@ -1118,6 +1161,7 @@ CONFIG_SND_PCI=y
1118# CONFIG_SND_CS4281 is not set 1161# CONFIG_SND_CS4281 is not set
1119# CONFIG_SND_CS46XX is not set 1162# CONFIG_SND_CS46XX is not set
1120# CONFIG_SND_CS5530 is not set 1163# CONFIG_SND_CS5530 is not set
1164# CONFIG_SND_CS5535AUDIO is not set
1121# CONFIG_SND_CTXFI is not set 1165# CONFIG_SND_CTXFI is not set
1122# CONFIG_SND_DARLA20 is not set 1166# CONFIG_SND_DARLA20 is not set
1123# CONFIG_SND_GINA20 is not set 1167# CONFIG_SND_GINA20 is not set
@@ -1245,6 +1289,7 @@ CONFIG_USB_MON=y
1245CONFIG_USB_EHCI_HCD=y 1289CONFIG_USB_EHCI_HCD=y
1246CONFIG_USB_EHCI_ROOT_HUB_TT=y 1290CONFIG_USB_EHCI_ROOT_HUB_TT=y
1247# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1291# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1292# CONFIG_XPS_USB_HCD_XILINX is not set
1248CONFIG_USB_EHCI_FSL=y 1293CONFIG_USB_EHCI_FSL=y
1249CONFIG_USB_EHCI_HCD_PPC_OF=y 1294CONFIG_USB_EHCI_HCD_PPC_OF=y
1250# CONFIG_USB_OXU210HP_HCD is not set 1295# CONFIG_USB_OXU210HP_HCD is not set
@@ -1351,7 +1396,6 @@ CONFIG_EDAC=y
1351# 1396#
1352# CONFIG_EDAC_DEBUG is not set 1397# CONFIG_EDAC_DEBUG is not set
1353CONFIG_EDAC_MM_EDAC=y 1398CONFIG_EDAC_MM_EDAC=y
1354CONFIG_EDAC_MPC85XX=y
1355CONFIG_RTC_LIB=y 1399CONFIG_RTC_LIB=y
1356CONFIG_RTC_CLASS=y 1400CONFIG_RTC_CLASS=y
1357CONFIG_RTC_HCTOSYS=y 1401CONFIG_RTC_HCTOSYS=y
@@ -1380,6 +1424,7 @@ CONFIG_RTC_INTF_DEV=y
1380# CONFIG_RTC_DRV_PCF8563 is not set 1424# CONFIG_RTC_DRV_PCF8563 is not set
1381# CONFIG_RTC_DRV_PCF8583 is not set 1425# CONFIG_RTC_DRV_PCF8583 is not set
1382# CONFIG_RTC_DRV_M41T80 is not set 1426# CONFIG_RTC_DRV_M41T80 is not set
1427# CONFIG_RTC_DRV_BQ32K is not set
1383# CONFIG_RTC_DRV_S35390A is not set 1428# CONFIG_RTC_DRV_S35390A is not set
1384# CONFIG_RTC_DRV_FM3130 is not set 1429# CONFIG_RTC_DRV_FM3130 is not set
1385# CONFIG_RTC_DRV_RX8581 is not set 1430# CONFIG_RTC_DRV_RX8581 is not set
@@ -1401,7 +1446,9 @@ CONFIG_RTC_DRV_CMOS=y
1401# CONFIG_RTC_DRV_M48T86 is not set 1446# CONFIG_RTC_DRV_M48T86 is not set
1402# CONFIG_RTC_DRV_M48T35 is not set 1447# CONFIG_RTC_DRV_M48T35 is not set
1403# CONFIG_RTC_DRV_M48T59 is not set 1448# CONFIG_RTC_DRV_M48T59 is not set
1449# CONFIG_RTC_DRV_MSM6242 is not set
1404# CONFIG_RTC_DRV_BQ4802 is not set 1450# CONFIG_RTC_DRV_BQ4802 is not set
1451# CONFIG_RTC_DRV_RP5C01 is not set
1405# CONFIG_RTC_DRV_V3020 is not set 1452# CONFIG_RTC_DRV_V3020 is not set
1406 1453
1407# 1454#
@@ -1735,7 +1782,11 @@ CONFIG_VIRQ_DEBUG=y
1735# CONFIG_KEYS is not set 1782# CONFIG_KEYS is not set
1736# CONFIG_SECURITY is not set 1783# CONFIG_SECURITY is not set
1737# CONFIG_SECURITYFS is not set 1784# CONFIG_SECURITYFS is not set
1738# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1785# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1786# CONFIG_DEFAULT_SECURITY_SMACK is not set
1787# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1788CONFIG_DEFAULT_SECURITY_DAC=y
1789CONFIG_DEFAULT_SECURITY=""
1739CONFIG_CRYPTO=y 1790CONFIG_CRYPTO=y
1740 1791
1741# 1792#
diff --git a/arch/powerpc/configs/mpc866_ads_defconfig b/arch/powerpc/configs/mpc866_ads_defconfig
index 40d6f0568ca5..3f6b11b6f4f3 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:15 2009 4# Wed Jan 6 09:24:08 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
32# 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 33# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_NR_IRQS=512
35CONFIG_STACKTRACE_SUPPORT=y 36CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_HAVE_LATENCYTOP_SUPPORT=y 37CONFIG_HAVE_LATENCYTOP_SUPPORT=y
37CONFIG_TRACE_IRQFLAGS_SUPPORT=y 38CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -53,6 +54,7 @@ CONFIG_OF=y
53CONFIG_AUDIT_ARCH=y 54CONFIG_AUDIT_ARCH=y
54CONFIG_DTC=y 55CONFIG_DTC=y
55# CONFIG_DEFAULT_UIMAGE is not set 56# CONFIG_DEFAULT_UIMAGE is not set
57CONFIG_ARCH_HIBERNATION_POSSIBLE=y
56# CONFIG_PPC_DCR_NATIVE is not set 58# CONFIG_PPC_DCR_NATIVE is not set
57# CONFIG_PPC_DCR_MMIO is not set 59# CONFIG_PPC_DCR_MMIO is not set
58CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 60CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -80,6 +82,7 @@ CONFIG_SYSVIPC_SYSCTL=y
80# 82#
81CONFIG_TREE_RCU=y 83CONFIG_TREE_RCU=y
82# CONFIG_TREE_PREEMPT_RCU is not set 84# CONFIG_TREE_PREEMPT_RCU is not set
85# CONFIG_TINY_RCU is not set
83# CONFIG_RCU_TRACE is not set 86# CONFIG_RCU_TRACE is not set
84CONFIG_RCU_FANOUT=32 87CONFIG_RCU_FANOUT=32
85# CONFIG_RCU_FANOUT_EXACT is not set 88# CONFIG_RCU_FANOUT_EXACT is not set
@@ -158,14 +161,41 @@ CONFIG_LBDAF=y
158# IO Schedulers 161# IO Schedulers
159# 162#
160CONFIG_IOSCHED_NOOP=y 163CONFIG_IOSCHED_NOOP=y
161CONFIG_IOSCHED_AS=y
162CONFIG_IOSCHED_DEADLINE=y 164CONFIG_IOSCHED_DEADLINE=y
163CONFIG_IOSCHED_CFQ=y 165CONFIG_IOSCHED_CFQ=y
164CONFIG_DEFAULT_AS=y
165# CONFIG_DEFAULT_DEADLINE is not set 166# CONFIG_DEFAULT_DEADLINE is not set
166# CONFIG_DEFAULT_CFQ is not set 167CONFIG_DEFAULT_CFQ=y
167# CONFIG_DEFAULT_NOOP is not set 168# CONFIG_DEFAULT_NOOP is not set
168CONFIG_DEFAULT_IOSCHED="anticipatory" 169CONFIG_DEFAULT_IOSCHED="cfq"
170# CONFIG_INLINE_SPIN_TRYLOCK is not set
171# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
172# CONFIG_INLINE_SPIN_LOCK is not set
173# CONFIG_INLINE_SPIN_LOCK_BH is not set
174# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
175# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
176CONFIG_INLINE_SPIN_UNLOCK=y
177# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
178CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
179# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
180# CONFIG_INLINE_READ_TRYLOCK is not set
181# CONFIG_INLINE_READ_LOCK is not set
182# CONFIG_INLINE_READ_LOCK_BH is not set
183# CONFIG_INLINE_READ_LOCK_IRQ is not set
184# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
185CONFIG_INLINE_READ_UNLOCK=y
186# CONFIG_INLINE_READ_UNLOCK_BH is not set
187CONFIG_INLINE_READ_UNLOCK_IRQ=y
188# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
189# CONFIG_INLINE_WRITE_TRYLOCK is not set
190# CONFIG_INLINE_WRITE_LOCK is not set
191# CONFIG_INLINE_WRITE_LOCK_BH is not set
192# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
193# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
194CONFIG_INLINE_WRITE_UNLOCK=y
195# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
196CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
197# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
198# CONFIG_MUTEX_SPIN_ON_OWNER is not set
169# CONFIG_FREEZER is not set 199# CONFIG_FREEZER is not set
170 200
171# 201#
@@ -240,6 +270,7 @@ CONFIG_MATH_EMULATION=y
240CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 270CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
241CONFIG_ARCH_HAS_WALK_MEMORY=y 271CONFIG_ARCH_HAS_WALK_MEMORY=y
242CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 272CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
273CONFIG_SPARSE_IRQ=y
243CONFIG_MAX_ACTIVE_REGIONS=32 274CONFIG_MAX_ACTIVE_REGIONS=32
244CONFIG_ARCH_FLATMEM_ENABLE=y 275CONFIG_ARCH_FLATMEM_ENABLE=y
245CONFIG_ARCH_POPULATES_NODE_MAP=y 276CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -256,8 +287,6 @@ CONFIG_MIGRATION=y
256CONFIG_ZONE_DMA_FLAG=1 287CONFIG_ZONE_DMA_FLAG=1
257CONFIG_BOUNCE=y 288CONFIG_BOUNCE=y
258CONFIG_VIRT_TO_BUS=y 289CONFIG_VIRT_TO_BUS=y
259CONFIG_HAVE_MLOCK=y
260CONFIG_HAVE_MLOCKED_PAGE_BIT=y
261# CONFIG_KSM is not set 290# CONFIG_KSM is not set
262CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 291CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
263CONFIG_PPC_4K_PAGES=y 292CONFIG_PPC_4K_PAGES=y
@@ -375,9 +404,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
375# CONFIG_AF_RXRPC is not set 404# CONFIG_AF_RXRPC is not set
376CONFIG_WIRELESS=y 405CONFIG_WIRELESS=y
377# CONFIG_CFG80211 is not set 406# CONFIG_CFG80211 is not set
378CONFIG_CFG80211_DEFAULT_PS_VALUE=0
379CONFIG_WIRELESS_OLD_REGULATORY=y
380# CONFIG_WIRELESS_EXT is not set
381# CONFIG_LIB80211 is not set 407# CONFIG_LIB80211 is not set
382 408
383# 409#
@@ -407,6 +433,10 @@ CONFIG_BLK_DEV=y
407# CONFIG_BLK_DEV_COW_COMMON is not set 433# CONFIG_BLK_DEV_COW_COMMON is not set
408CONFIG_BLK_DEV_LOOP=y 434CONFIG_BLK_DEV_LOOP=y
409# CONFIG_BLK_DEV_CRYPTOLOOP is not set 435# CONFIG_BLK_DEV_CRYPTOLOOP is not set
436
437#
438# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
439#
410# CONFIG_BLK_DEV_NBD is not set 440# CONFIG_BLK_DEV_NBD is not set
411# CONFIG_BLK_DEV_RAM is not set 441# CONFIG_BLK_DEV_RAM is not set
412# CONFIG_CDROM_PKTCDVD is not set 442# CONFIG_CDROM_PKTCDVD is not set
@@ -485,8 +515,7 @@ CONFIG_NETDEV_1000=y
485# CONFIG_MV643XX_ETH is not set 515# CONFIG_MV643XX_ETH is not set
486CONFIG_NETDEV_10000=y 516CONFIG_NETDEV_10000=y
487CONFIG_WLAN=y 517CONFIG_WLAN=y
488# CONFIG_WLAN_PRE80211 is not set 518# CONFIG_HOSTAP is not set
489# CONFIG_WLAN_80211 is not set
490 519
491# 520#
492# Enable WiMAX (Networking options) to see the WiMAX drivers 521# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -506,6 +535,7 @@ CONFIG_WLAN=y
506CONFIG_INPUT=y 535CONFIG_INPUT=y
507# CONFIG_INPUT_FF_MEMLESS is not set 536# CONFIG_INPUT_FF_MEMLESS is not set
508# CONFIG_INPUT_POLLDEV is not set 537# CONFIG_INPUT_POLLDEV is not set
538# CONFIG_INPUT_SPARSEKMAP is not set
509 539
510# 540#
511# Userland interfaces 541# Userland interfaces
@@ -554,6 +584,7 @@ CONFIG_SERIO_SERPORT=y
554CONFIG_SERIO_LIBPS2=y 584CONFIG_SERIO_LIBPS2=y
555# CONFIG_SERIO_RAW is not set 585# CONFIG_SERIO_RAW is not set
556# CONFIG_SERIO_XILINX_XPS_PS2 is not set 586# CONFIG_SERIO_XILINX_XPS_PS2 is not set
587# CONFIG_SERIO_ALTERA_PS2 is not set
557# CONFIG_GAMEPORT is not set 588# CONFIG_GAMEPORT is not set
558 589
559# 590#
@@ -576,6 +607,7 @@ CONFIG_SERIAL_CORE=y
576CONFIG_SERIAL_CORE_CONSOLE=y 607CONFIG_SERIAL_CORE_CONSOLE=y
577CONFIG_SERIAL_CPM=y 608CONFIG_SERIAL_CPM=y
578CONFIG_SERIAL_CPM_CONSOLE=y 609CONFIG_SERIAL_CPM_CONSOLE=y
610# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
579CONFIG_UNIX98_PTYS=y 611CONFIG_UNIX98_PTYS=y
580# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 612# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
581# CONFIG_LEGACY_PTYS is not set 613# CONFIG_LEGACY_PTYS is not set
@@ -855,6 +887,7 @@ CONFIG_FRAME_WARN=1024
855# CONFIG_DEBUG_MEMORY_INIT is not set 887# CONFIG_DEBUG_MEMORY_INIT is not set
856# CONFIG_RCU_CPU_STALL_DETECTOR is not set 888# CONFIG_RCU_CPU_STALL_DETECTOR is not set
857# CONFIG_LATENCYTOP is not set 889# CONFIG_LATENCYTOP is not set
890# CONFIG_SYSCTL_SYSCALL_CHECK is not set
858CONFIG_HAVE_FUNCTION_TRACER=y 891CONFIG_HAVE_FUNCTION_TRACER=y
859CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 892CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
860CONFIG_HAVE_DYNAMIC_FTRACE=y 893CONFIG_HAVE_DYNAMIC_FTRACE=y
@@ -876,7 +909,11 @@ CONFIG_PRINT_STACK_DEPTH=64
876# CONFIG_KEYS is not set 909# CONFIG_KEYS is not set
877# CONFIG_SECURITY is not set 910# CONFIG_SECURITY is not set
878# CONFIG_SECURITYFS is not set 911# CONFIG_SECURITYFS is not set
879# CONFIG_SECURITY_FILE_CAPABILITIES is not set 912# CONFIG_DEFAULT_SECURITY_SELINUX is not set
913# CONFIG_DEFAULT_SECURITY_SMACK is not set
914# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
915CONFIG_DEFAULT_SECURITY_DAC=y
916CONFIG_DEFAULT_SECURITY=""
880CONFIG_CRYPTO=y 917CONFIG_CRYPTO=y
881 918
882# 919#
diff --git a/arch/powerpc/configs/mpc86xx_defconfig b/arch/powerpc/configs/mpc86xx_defconfig
index 5b3abb42ae30..41884c97a4f3 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:16 2009 4# Wed Jan 6 09:24:09 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -38,6 +38,7 @@ CONFIG_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 39# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
40CONFIG_IRQ_PER_CPU=y 40CONFIG_IRQ_PER_CPU=y
41CONFIG_NR_IRQS=512
41CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
42CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
43CONFIG_TRACE_IRQFLAGS_SUPPORT=y 44CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -61,6 +62,8 @@ CONFIG_AUDIT_ARCH=y
61CONFIG_GENERIC_BUG=y 62CONFIG_GENERIC_BUG=y
62CONFIG_DTC=y 63CONFIG_DTC=y
63CONFIG_DEFAULT_UIMAGE=y 64CONFIG_DEFAULT_UIMAGE=y
65CONFIG_ARCH_HIBERNATION_POSSIBLE=y
66CONFIG_ARCH_SUSPEND_POSSIBLE=y
64# CONFIG_PPC_DCR_NATIVE is not set 67# CONFIG_PPC_DCR_NATIVE is not set
65# CONFIG_PPC_DCR_MMIO is not set 68# CONFIG_PPC_DCR_MMIO is not set
66CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 69CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -91,6 +94,7 @@ CONFIG_AUDIT=y
91# 94#
92CONFIG_TREE_RCU=y 95CONFIG_TREE_RCU=y
93# CONFIG_TREE_PREEMPT_RCU is not set 96# CONFIG_TREE_PREEMPT_RCU is not set
97# CONFIG_TINY_RCU is not set
94# CONFIG_RCU_TRACE is not set 98# CONFIG_RCU_TRACE is not set
95CONFIG_RCU_FANOUT=32 99CONFIG_RCU_FANOUT=32
96# CONFIG_RCU_FANOUT_EXACT is not set 100# CONFIG_RCU_FANOUT_EXACT is not set
@@ -183,14 +187,41 @@ CONFIG_LBDAF=y
183# IO Schedulers 187# IO Schedulers
184# 188#
185CONFIG_IOSCHED_NOOP=y 189CONFIG_IOSCHED_NOOP=y
186CONFIG_IOSCHED_AS=y
187CONFIG_IOSCHED_DEADLINE=y 190CONFIG_IOSCHED_DEADLINE=y
188CONFIG_IOSCHED_CFQ=y 191CONFIG_IOSCHED_CFQ=y
189# CONFIG_DEFAULT_AS is not set
190# CONFIG_DEFAULT_DEADLINE is not set 192# CONFIG_DEFAULT_DEADLINE is not set
191CONFIG_DEFAULT_CFQ=y 193CONFIG_DEFAULT_CFQ=y
192# CONFIG_DEFAULT_NOOP is not set 194# CONFIG_DEFAULT_NOOP is not set
193CONFIG_DEFAULT_IOSCHED="cfq" 195CONFIG_DEFAULT_IOSCHED="cfq"
196# CONFIG_INLINE_SPIN_TRYLOCK is not set
197# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
198# CONFIG_INLINE_SPIN_LOCK is not set
199# CONFIG_INLINE_SPIN_LOCK_BH is not set
200# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
201# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
202CONFIG_INLINE_SPIN_UNLOCK=y
203# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
204CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
205# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
206# CONFIG_INLINE_READ_TRYLOCK is not set
207# CONFIG_INLINE_READ_LOCK is not set
208# CONFIG_INLINE_READ_LOCK_BH is not set
209# CONFIG_INLINE_READ_LOCK_IRQ is not set
210# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
211CONFIG_INLINE_READ_UNLOCK=y
212# CONFIG_INLINE_READ_UNLOCK_BH is not set
213CONFIG_INLINE_READ_UNLOCK_IRQ=y
214# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
215# CONFIG_INLINE_WRITE_TRYLOCK is not set
216# CONFIG_INLINE_WRITE_LOCK is not set
217# CONFIG_INLINE_WRITE_LOCK_BH is not set
218# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
219# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
220CONFIG_INLINE_WRITE_UNLOCK=y
221# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
222CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
223# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
224CONFIG_MUTEX_SPIN_ON_OWNER=y
194# CONFIG_FREEZER is not set 225# CONFIG_FREEZER is not set
195 226
196# 227#
@@ -221,7 +252,7 @@ CONFIG_MPIC=y
221# CONFIG_MPIC_WEIRD is not set 252# CONFIG_MPIC_WEIRD is not set
222CONFIG_PPC_I8259=y 253CONFIG_PPC_I8259=y
223# CONFIG_PPC_RTAS is not set 254# CONFIG_PPC_RTAS is not set
224# CONFIG_MMIO_NVRAM is not set 255CONFIG_MMIO_NVRAM=y
225# CONFIG_PPC_MPC106 is not set 256# CONFIG_PPC_MPC106 is not set
226# CONFIG_PPC_970_NAP is not set 257# CONFIG_PPC_970_NAP is not set
227# CONFIG_PPC_INDIRECT_IO is not set 258# CONFIG_PPC_INDIRECT_IO is not set
@@ -262,6 +293,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
262# CONFIG_KEXEC is not set 293# CONFIG_KEXEC is not set
263# CONFIG_CRASH_DUMP is not set 294# CONFIG_CRASH_DUMP is not set
264# CONFIG_IRQ_ALL_CPUS is not set 295# CONFIG_IRQ_ALL_CPUS is not set
296CONFIG_SPARSE_IRQ=y
265CONFIG_MAX_ACTIVE_REGIONS=32 297CONFIG_MAX_ACTIVE_REGIONS=32
266CONFIG_ARCH_FLATMEM_ENABLE=y 298CONFIG_ARCH_FLATMEM_ENABLE=y
267CONFIG_ARCH_POPULATES_NODE_MAP=y 299CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -278,8 +310,6 @@ CONFIG_MIGRATION=y
278CONFIG_ZONE_DMA_FLAG=1 310CONFIG_ZONE_DMA_FLAG=1
279CONFIG_BOUNCE=y 311CONFIG_BOUNCE=y
280CONFIG_VIRT_TO_BUS=y 312CONFIG_VIRT_TO_BUS=y
281CONFIG_HAVE_MLOCK=y
282CONFIG_HAVE_MLOCKED_PAGE_BIT=y
283# CONFIG_KSM is not set 313# CONFIG_KSM is not set
284CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 314CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
285CONFIG_PPC_4K_PAGES=y 315CONFIG_PPC_4K_PAGES=y
@@ -397,6 +427,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y
397CONFIG_INET6_XFRM_MODE_BEET=y 427CONFIG_INET6_XFRM_MODE_BEET=y
398# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 428# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
399CONFIG_IPV6_SIT=y 429CONFIG_IPV6_SIT=y
430# CONFIG_IPV6_SIT_6RD is not set
400CONFIG_IPV6_NDISC_NODETYPE=y 431CONFIG_IPV6_NDISC_NODETYPE=y
401# CONFIG_IPV6_TUNNEL is not set 432# CONFIG_IPV6_TUNNEL is not set
402# CONFIG_IPV6_MULTIPLE_TABLES is not set 433# CONFIG_IPV6_MULTIPLE_TABLES is not set
@@ -441,9 +472,6 @@ CONFIG_SCTP_HMAC_MD5=y
441CONFIG_FIB_RULES=y 472CONFIG_FIB_RULES=y
442CONFIG_WIRELESS=y 473CONFIG_WIRELESS=y
443# CONFIG_CFG80211 is not set 474# CONFIG_CFG80211 is not set
444CONFIG_CFG80211_DEFAULT_PS_VALUE=0
445CONFIG_WIRELESS_OLD_REGULATORY=y
446# CONFIG_WIRELESS_EXT is not set
447# CONFIG_LIB80211 is not set 475# CONFIG_LIB80211 is not set
448 476
449# 477#
@@ -486,6 +514,10 @@ CONFIG_BLK_DEV=y
486# CONFIG_BLK_DEV_COW_COMMON is not set 514# CONFIG_BLK_DEV_COW_COMMON is not set
487CONFIG_BLK_DEV_LOOP=y 515CONFIG_BLK_DEV_LOOP=y
488# CONFIG_BLK_DEV_CRYPTOLOOP is not set 516# CONFIG_BLK_DEV_CRYPTOLOOP is not set
517
518#
519# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
520#
489CONFIG_BLK_DEV_NBD=y 521CONFIG_BLK_DEV_NBD=y
490# CONFIG_BLK_DEV_SX8 is not set 522# CONFIG_BLK_DEV_SX8 is not set
491# CONFIG_BLK_DEV_UB is not set 523# CONFIG_BLK_DEV_UB is not set
@@ -497,6 +529,7 @@ CONFIG_BLK_DEV_RAM_SIZE=131072
497# CONFIG_ATA_OVER_ETH is not set 529# CONFIG_ATA_OVER_ETH is not set
498# CONFIG_BLK_DEV_HD is not set 530# CONFIG_BLK_DEV_HD is not set
499CONFIG_MISC_DEVICES=y 531CONFIG_MISC_DEVICES=y
532# CONFIG_AD525X_DPOT is not set
500# CONFIG_PHANTOM is not set 533# CONFIG_PHANTOM is not set
501# CONFIG_SGI_IOC4 is not set 534# CONFIG_SGI_IOC4 is not set
502# CONFIG_TIFM_CORE is not set 535# CONFIG_TIFM_CORE is not set
@@ -504,6 +537,7 @@ CONFIG_MISC_DEVICES=y
504# CONFIG_ENCLOSURE_SERVICES is not set 537# CONFIG_ENCLOSURE_SERVICES is not set
505# CONFIG_HP_ILO is not set 538# CONFIG_HP_ILO is not set
506# CONFIG_ISL29003 is not set 539# CONFIG_ISL29003 is not set
540# CONFIG_DS1682 is not set
507# CONFIG_C2PORT is not set 541# CONFIG_C2PORT is not set
508 542
509# 543#
@@ -557,7 +591,9 @@ CONFIG_SCSI_LOWLEVEL=y
557# CONFIG_SCSI_BNX2_ISCSI is not set 591# CONFIG_SCSI_BNX2_ISCSI is not set
558# CONFIG_BE2ISCSI is not set 592# CONFIG_BE2ISCSI is not set
559# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 593# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
594# CONFIG_SCSI_HPSA is not set
560# CONFIG_SCSI_3W_9XXX is not set 595# CONFIG_SCSI_3W_9XXX is not set
596# CONFIG_SCSI_3W_SAS is not set
561# CONFIG_SCSI_ACARD is not set 597# CONFIG_SCSI_ACARD is not set
562# CONFIG_SCSI_AACRAID is not set 598# CONFIG_SCSI_AACRAID is not set
563# CONFIG_SCSI_AIC7XXX is not set 599# CONFIG_SCSI_AIC7XXX is not set
@@ -596,6 +632,7 @@ CONFIG_SCSI_LOWLEVEL=y
596# CONFIG_SCSI_NSP32 is not set 632# CONFIG_SCSI_NSP32 is not set
597# CONFIG_SCSI_DEBUG is not set 633# CONFIG_SCSI_DEBUG is not set
598# CONFIG_SCSI_PMCRAID is not set 634# CONFIG_SCSI_PMCRAID is not set
635# CONFIG_SCSI_PM8001 is not set
599# CONFIG_SCSI_SRP is not set 636# CONFIG_SCSI_SRP is not set
600# CONFIG_SCSI_BFA_FC is not set 637# CONFIG_SCSI_BFA_FC is not set
601# CONFIG_SCSI_DH is not set 638# CONFIG_SCSI_DH is not set
@@ -651,15 +688,16 @@ CONFIG_PATA_ALI=y
651# CONFIG_PATA_NS87415 is not set 688# CONFIG_PATA_NS87415 is not set
652# CONFIG_PATA_OPTI is not set 689# CONFIG_PATA_OPTI is not set
653# CONFIG_PATA_OPTIDMA is not set 690# CONFIG_PATA_OPTIDMA is not set
691# CONFIG_PATA_PDC2027X is not set
654# CONFIG_PATA_PDC_OLD is not set 692# CONFIG_PATA_PDC_OLD is not set
655# CONFIG_PATA_RADISYS is not set 693# CONFIG_PATA_RADISYS is not set
656# CONFIG_PATA_RDC is not set 694# CONFIG_PATA_RDC is not set
657# CONFIG_PATA_RZ1000 is not set 695# CONFIG_PATA_RZ1000 is not set
658# CONFIG_PATA_SC1200 is not set 696# CONFIG_PATA_SC1200 is not set
659# CONFIG_PATA_SERVERWORKS is not set 697# CONFIG_PATA_SERVERWORKS is not set
660# CONFIG_PATA_PDC2027X is not set
661# CONFIG_PATA_SIL680 is not set 698# CONFIG_PATA_SIL680 is not set
662# CONFIG_PATA_SIS is not set 699# CONFIG_PATA_SIS is not set
700# CONFIG_PATA_TOSHIBA is not set
663# CONFIG_PATA_VIA is not set 701# CONFIG_PATA_VIA is not set
664# CONFIG_PATA_WINBOND is not set 702# CONFIG_PATA_WINBOND is not set
665# CONFIG_PATA_PLATFORM is not set 703# CONFIG_PATA_PLATFORM is not set
@@ -676,7 +714,7 @@ CONFIG_PATA_ALI=y
676# 714#
677 715
678# 716#
679# See the help texts for more information. 717# The newer stack is recommended.
680# 718#
681# CONFIG_FIREWIRE is not set 719# CONFIG_FIREWIRE is not set
682# CONFIG_IEEE1394 is not set 720# CONFIG_IEEE1394 is not set
@@ -781,8 +819,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y
781# CONFIG_BE2NET is not set 819# CONFIG_BE2NET is not set
782# CONFIG_TR is not set 820# CONFIG_TR is not set
783CONFIG_WLAN=y 821CONFIG_WLAN=y
784# CONFIG_WLAN_PRE80211 is not set 822# CONFIG_AIRO is not set
785# CONFIG_WLAN_80211 is not set 823# CONFIG_ATMEL is not set
824# CONFIG_PRISM54 is not set
825# CONFIG_USB_ZD1201 is not set
826# CONFIG_HOSTAP is not set
786 827
787# 828#
788# Enable WiMAX (Networking options) to see the WiMAX drivers 829# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -805,6 +846,7 @@ CONFIG_WLAN=y
805# CONFIG_NETCONSOLE is not set 846# CONFIG_NETCONSOLE is not set
806# CONFIG_NETPOLL is not set 847# CONFIG_NETPOLL is not set
807# CONFIG_NET_POLL_CONTROLLER is not set 848# CONFIG_NET_POLL_CONTROLLER is not set
849# CONFIG_VMXNET3 is not set
808# CONFIG_ISDN is not set 850# CONFIG_ISDN is not set
809# CONFIG_PHONE is not set 851# CONFIG_PHONE is not set
810 852
@@ -814,6 +856,7 @@ CONFIG_WLAN=y
814CONFIG_INPUT=y 856CONFIG_INPUT=y
815CONFIG_INPUT_FF_MEMLESS=m 857CONFIG_INPUT_FF_MEMLESS=m
816# CONFIG_INPUT_POLLDEV is not set 858# CONFIG_INPUT_POLLDEV is not set
859# CONFIG_INPUT_SPARSEKMAP is not set
817 860
818# 861#
819# Userland interfaces 862# Userland interfaces
@@ -843,6 +886,7 @@ CONFIG_SERIO_SERPORT=y
843CONFIG_SERIO_LIBPS2=y 886CONFIG_SERIO_LIBPS2=y
844# CONFIG_SERIO_RAW is not set 887# CONFIG_SERIO_RAW is not set
845# CONFIG_SERIO_XILINX_XPS_PS2 is not set 888# CONFIG_SERIO_XILINX_XPS_PS2 is not set
889# CONFIG_SERIO_ALTERA_PS2 is not set
846# CONFIG_GAMEPORT is not set 890# CONFIG_GAMEPORT is not set
847 891
848# 892#
@@ -879,6 +923,7 @@ CONFIG_SERIAL_CORE=y
879CONFIG_SERIAL_CORE_CONSOLE=y 923CONFIG_SERIAL_CORE_CONSOLE=y
880# CONFIG_SERIAL_JSM is not set 924# CONFIG_SERIAL_JSM is not set
881# CONFIG_SERIAL_OF_PLATFORM is not set 925# CONFIG_SERIAL_OF_PLATFORM is not set
926# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
882CONFIG_UNIX98_PTYS=y 927CONFIG_UNIX98_PTYS=y
883# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 928# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
884CONFIG_LEGACY_PTYS=y 929CONFIG_LEGACY_PTYS=y
@@ -936,11 +981,6 @@ CONFIG_I2C_MPC=y
936# CONFIG_I2C_TINY_USB is not set 981# CONFIG_I2C_TINY_USB is not set
937 982
938# 983#
939# Graphics adapter I2C/DDC channel drivers
940#
941# CONFIG_I2C_VOODOO3 is not set
942
943#
944# Other I2C/SMBus bus drivers 984# Other I2C/SMBus bus drivers
945# 985#
946# CONFIG_I2C_PCA_PLATFORM is not set 986# CONFIG_I2C_PCA_PLATFORM is not set
@@ -949,7 +989,6 @@ CONFIG_I2C_MPC=y
949# 989#
950# Miscellaneous I2C Chip support 990# Miscellaneous I2C Chip support
951# 991#
952# CONFIG_DS1682 is not set
953# CONFIG_SENSORS_TSL2550 is not set 992# CONFIG_SENSORS_TSL2550 is not set
954# CONFIG_I2C_DEBUG_CORE is not set 993# CONFIG_I2C_DEBUG_CORE is not set
955# CONFIG_I2C_DEBUG_ALGO is not set 994# CONFIG_I2C_DEBUG_ALGO is not set
@@ -982,6 +1021,7 @@ CONFIG_GPIOLIB=y
982# 1021#
983# PCI GPIO expanders: 1022# PCI GPIO expanders:
984# 1023#
1024# CONFIG_GPIO_CS5535 is not set
985# CONFIG_GPIO_BT8XX is not set 1025# CONFIG_GPIO_BT8XX is not set
986# CONFIG_GPIO_LANGWELL is not set 1026# CONFIG_GPIO_LANGWELL is not set
987 1027
@@ -1015,11 +1055,13 @@ CONFIG_SSB_POSSIBLE=y
1015# CONFIG_TWL4030_CORE is not set 1055# CONFIG_TWL4030_CORE is not set
1016# CONFIG_MFD_TMIO is not set 1056# CONFIG_MFD_TMIO is not set
1017# CONFIG_PMIC_DA903X is not set 1057# CONFIG_PMIC_DA903X is not set
1058# CONFIG_PMIC_ADP5520 is not set
1018# CONFIG_MFD_WM8400 is not set 1059# CONFIG_MFD_WM8400 is not set
1019# CONFIG_MFD_WM831X is not set 1060# CONFIG_MFD_WM831X is not set
1020# CONFIG_MFD_WM8350_I2C is not set 1061# CONFIG_MFD_WM8350_I2C is not set
1021# CONFIG_MFD_PCF50633 is not set 1062# CONFIG_MFD_PCF50633 is not set
1022# CONFIG_AB3100_CORE is not set 1063# CONFIG_AB3100_CORE is not set
1064# CONFIG_MFD_88PM8607 is not set
1023# CONFIG_REGULATOR is not set 1065# CONFIG_REGULATOR is not set
1024# CONFIG_MEDIA_SUPPORT is not set 1066# CONFIG_MEDIA_SUPPORT is not set
1025 1067
@@ -1094,6 +1136,7 @@ CONFIG_SND_PCI=y
1094# CONFIG_SND_CS4281 is not set 1136# CONFIG_SND_CS4281 is not set
1095# CONFIG_SND_CS46XX is not set 1137# CONFIG_SND_CS46XX is not set
1096# CONFIG_SND_CS5530 is not set 1138# CONFIG_SND_CS5530 is not set
1139# CONFIG_SND_CS5535AUDIO is not set
1097# CONFIG_SND_CTXFI is not set 1140# CONFIG_SND_CTXFI is not set
1098# CONFIG_SND_DARLA20 is not set 1141# CONFIG_SND_DARLA20 is not set
1099# CONFIG_SND_GINA20 is not set 1142# CONFIG_SND_GINA20 is not set
@@ -1221,6 +1264,7 @@ CONFIG_USB_MON=y
1221CONFIG_USB_EHCI_HCD=y 1264CONFIG_USB_EHCI_HCD=y
1222# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1265# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1223# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1266# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1267# CONFIG_XPS_USB_HCD_XILINX is not set
1224# CONFIG_USB_EHCI_FSL is not set 1268# CONFIG_USB_EHCI_FSL is not set
1225CONFIG_USB_EHCI_HCD_PPC_OF=y 1269CONFIG_USB_EHCI_HCD_PPC_OF=y
1226# CONFIG_USB_OXU210HP_HCD is not set 1270# CONFIG_USB_OXU210HP_HCD is not set
@@ -1348,6 +1392,7 @@ CONFIG_RTC_INTF_DEV=y
1348# CONFIG_RTC_DRV_PCF8563 is not set 1392# CONFIG_RTC_DRV_PCF8563 is not set
1349# CONFIG_RTC_DRV_PCF8583 is not set 1393# CONFIG_RTC_DRV_PCF8583 is not set
1350# CONFIG_RTC_DRV_M41T80 is not set 1394# CONFIG_RTC_DRV_M41T80 is not set
1395# CONFIG_RTC_DRV_BQ32K is not set
1351# CONFIG_RTC_DRV_S35390A is not set 1396# CONFIG_RTC_DRV_S35390A is not set
1352# CONFIG_RTC_DRV_FM3130 is not set 1397# CONFIG_RTC_DRV_FM3130 is not set
1353# CONFIG_RTC_DRV_RX8581 is not set 1398# CONFIG_RTC_DRV_RX8581 is not set
@@ -1369,7 +1414,9 @@ CONFIG_RTC_DRV_CMOS=y
1369# CONFIG_RTC_DRV_M48T86 is not set 1414# CONFIG_RTC_DRV_M48T86 is not set
1370# CONFIG_RTC_DRV_M48T35 is not set 1415# CONFIG_RTC_DRV_M48T35 is not set
1371# CONFIG_RTC_DRV_M48T59 is not set 1416# CONFIG_RTC_DRV_M48T59 is not set
1417# CONFIG_RTC_DRV_MSM6242 is not set
1372# CONFIG_RTC_DRV_BQ4802 is not set 1418# CONFIG_RTC_DRV_BQ4802 is not set
1419# CONFIG_RTC_DRV_RP5C01 is not set
1373# CONFIG_RTC_DRV_V3020 is not set 1420# CONFIG_RTC_DRV_V3020 is not set
1374 1421
1375# 1422#
@@ -1684,7 +1731,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1684# CONFIG_KEYS is not set 1731# CONFIG_KEYS is not set
1685# CONFIG_SECURITY is not set 1732# CONFIG_SECURITY is not set
1686# CONFIG_SECURITYFS is not set 1733# CONFIG_SECURITYFS is not set
1687# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1734# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1735# CONFIG_DEFAULT_SECURITY_SMACK is not set
1736# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1737CONFIG_DEFAULT_SECURITY_DAC=y
1738CONFIG_DEFAULT_SECURITY=""
1688CONFIG_CRYPTO=y 1739CONFIG_CRYPTO=y
1689 1740
1690# 1741#
diff --git a/arch/powerpc/configs/mpc885_ads_defconfig b/arch/powerpc/configs/mpc885_ads_defconfig
index 1da3488a603d..6b9e6bd2c98d 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:17 2009 4# Wed Jan 6 09:24:10 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,7 @@ CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
32# 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 33# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_NR_IRQS=512
35CONFIG_STACKTRACE_SUPPORT=y 36CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_HAVE_LATENCYTOP_SUPPORT=y 37CONFIG_HAVE_LATENCYTOP_SUPPORT=y
37CONFIG_TRACE_IRQFLAGS_SUPPORT=y 38CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -54,6 +55,7 @@ CONFIG_AUDIT_ARCH=y
54CONFIG_GENERIC_BUG=y 55CONFIG_GENERIC_BUG=y
55CONFIG_DTC=y 56CONFIG_DTC=y
56# CONFIG_DEFAULT_UIMAGE is not set 57# CONFIG_DEFAULT_UIMAGE is not set
58CONFIG_ARCH_HIBERNATION_POSSIBLE=y
57# CONFIG_PPC_DCR_NATIVE is not set 59# CONFIG_PPC_DCR_NATIVE is not set
58# CONFIG_PPC_DCR_MMIO is not set 60# CONFIG_PPC_DCR_MMIO is not set
59CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 61CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -81,6 +83,7 @@ CONFIG_SYSVIPC_SYSCTL=y
81# 83#
82CONFIG_TREE_RCU=y 84CONFIG_TREE_RCU=y
83# CONFIG_TREE_PREEMPT_RCU is not set 85# CONFIG_TREE_PREEMPT_RCU is not set
86# CONFIG_TINY_RCU is not set
84# CONFIG_RCU_TRACE is not set 87# CONFIG_RCU_TRACE is not set
85CONFIG_RCU_FANOUT=32 88CONFIG_RCU_FANOUT=32
86# CONFIG_RCU_FANOUT_EXACT is not set 89# CONFIG_RCU_FANOUT_EXACT is not set
@@ -159,14 +162,41 @@ CONFIG_LBDAF=y
159# IO Schedulers 162# IO Schedulers
160# 163#
161CONFIG_IOSCHED_NOOP=y 164CONFIG_IOSCHED_NOOP=y
162# CONFIG_IOSCHED_AS is not set
163CONFIG_IOSCHED_DEADLINE=y 165CONFIG_IOSCHED_DEADLINE=y
164# CONFIG_IOSCHED_CFQ is not set 166# CONFIG_IOSCHED_CFQ is not set
165# CONFIG_DEFAULT_AS is not set
166CONFIG_DEFAULT_DEADLINE=y 167CONFIG_DEFAULT_DEADLINE=y
167# CONFIG_DEFAULT_CFQ is not set 168# CONFIG_DEFAULT_CFQ is not set
168# CONFIG_DEFAULT_NOOP is not set 169# CONFIG_DEFAULT_NOOP is not set
169CONFIG_DEFAULT_IOSCHED="deadline" 170CONFIG_DEFAULT_IOSCHED="deadline"
171# CONFIG_INLINE_SPIN_TRYLOCK is not set
172# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
173# CONFIG_INLINE_SPIN_LOCK is not set
174# CONFIG_INLINE_SPIN_LOCK_BH is not set
175# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
176# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
177CONFIG_INLINE_SPIN_UNLOCK=y
178# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
179CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
180# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
181# CONFIG_INLINE_READ_TRYLOCK is not set
182# CONFIG_INLINE_READ_LOCK is not set
183# CONFIG_INLINE_READ_LOCK_BH is not set
184# CONFIG_INLINE_READ_LOCK_IRQ is not set
185# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
186CONFIG_INLINE_READ_UNLOCK=y
187# CONFIG_INLINE_READ_UNLOCK_BH is not set
188CONFIG_INLINE_READ_UNLOCK_IRQ=y
189# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
190# CONFIG_INLINE_WRITE_TRYLOCK is not set
191# CONFIG_INLINE_WRITE_LOCK is not set
192# CONFIG_INLINE_WRITE_LOCK_BH is not set
193# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
194# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
195CONFIG_INLINE_WRITE_UNLOCK=y
196# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
197CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
198# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
199# CONFIG_MUTEX_SPIN_ON_OWNER is not set
170# CONFIG_FREEZER is not set 200# CONFIG_FREEZER is not set
171 201
172# 202#
@@ -248,6 +278,7 @@ CONFIG_8XX_MINIMAL_FPEMU=y
248CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 278CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
249CONFIG_ARCH_HAS_WALK_MEMORY=y 279CONFIG_ARCH_HAS_WALK_MEMORY=y
250CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 280CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
281CONFIG_SPARSE_IRQ=y
251CONFIG_MAX_ACTIVE_REGIONS=32 282CONFIG_MAX_ACTIVE_REGIONS=32
252CONFIG_ARCH_FLATMEM_ENABLE=y 283CONFIG_ARCH_FLATMEM_ENABLE=y
253CONFIG_ARCH_POPULATES_NODE_MAP=y 284CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -264,8 +295,6 @@ CONFIG_MIGRATION=y
264CONFIG_ZONE_DMA_FLAG=1 295CONFIG_ZONE_DMA_FLAG=1
265CONFIG_BOUNCE=y 296CONFIG_BOUNCE=y
266CONFIG_VIRT_TO_BUS=y 297CONFIG_VIRT_TO_BUS=y
267CONFIG_HAVE_MLOCK=y
268CONFIG_HAVE_MLOCKED_PAGE_BIT=y
269# CONFIG_KSM is not set 298# CONFIG_KSM is not set
270CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 299CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
271CONFIG_PPC_4K_PAGES=y 300CONFIG_PPC_4K_PAGES=y
@@ -379,9 +408,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
379# CONFIG_AF_RXRPC is not set 408# CONFIG_AF_RXRPC is not set
380CONFIG_WIRELESS=y 409CONFIG_WIRELESS=y
381# CONFIG_CFG80211 is not set 410# CONFIG_CFG80211 is not set
382CONFIG_CFG80211_DEFAULT_PS_VALUE=0
383CONFIG_WIRELESS_OLD_REGULATORY=y
384# CONFIG_WIRELESS_EXT is not set
385# CONFIG_LIB80211 is not set 411# CONFIG_LIB80211 is not set
386 412
387# 413#
@@ -556,8 +582,7 @@ CONFIG_FS_ENET_MDIO_FEC=y
556# CONFIG_NETDEV_1000 is not set 582# CONFIG_NETDEV_1000 is not set
557# CONFIG_NETDEV_10000 is not set 583# CONFIG_NETDEV_10000 is not set
558CONFIG_WLAN=y 584CONFIG_WLAN=y
559# CONFIG_WLAN_PRE80211 is not set 585# CONFIG_HOSTAP is not set
560# CONFIG_WLAN_80211 is not set
561 586
562# 587#
563# Enable WiMAX (Networking options) to see the WiMAX drivers 588# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -602,6 +627,7 @@ CONFIG_SERIAL_CORE=y
602CONFIG_SERIAL_CORE_CONSOLE=y 627CONFIG_SERIAL_CORE_CONSOLE=y
603CONFIG_SERIAL_CPM=y 628CONFIG_SERIAL_CPM=y
604CONFIG_SERIAL_CPM_CONSOLE=y 629CONFIG_SERIAL_CPM_CONSOLE=y
630# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
605CONFIG_UNIX98_PTYS=y 631CONFIG_UNIX98_PTYS=y
606# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 632# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
607# CONFIG_LEGACY_PTYS is not set 633# CONFIG_LEGACY_PTYS is not set
@@ -862,6 +888,7 @@ CONFIG_DEBUG_INFO=y
862# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set 888# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
863# CONFIG_FAULT_INJECTION is not set 889# CONFIG_FAULT_INJECTION is not set
864# CONFIG_LATENCYTOP is not set 890# CONFIG_LATENCYTOP is not set
891# CONFIG_SYSCTL_SYSCALL_CHECK is not set
865# CONFIG_DEBUG_PAGEALLOC is not set 892# CONFIG_DEBUG_PAGEALLOC is not set
866CONFIG_HAVE_FUNCTION_TRACER=y 893CONFIG_HAVE_FUNCTION_TRACER=y
867CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 894CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
@@ -904,7 +931,11 @@ CONFIG_PRINT_STACK_DEPTH=64
904# CONFIG_KEYS is not set 931# CONFIG_KEYS is not set
905# CONFIG_SECURITY is not set 932# CONFIG_SECURITY is not set
906# CONFIG_SECURITYFS is not set 933# CONFIG_SECURITYFS is not set
907# CONFIG_SECURITY_FILE_CAPABILITIES is not set 934# CONFIG_DEFAULT_SECURITY_SELINUX is not set
935# CONFIG_DEFAULT_SECURITY_SMACK is not set
936# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
937CONFIG_DEFAULT_SECURITY_DAC=y
938CONFIG_DEFAULT_SECURITY=""
908# CONFIG_CRYPTO is not set 939# CONFIG_CRYPTO is not set
909CONFIG_PPC_CLOCK=y 940CONFIG_PPC_CLOCK=y
910CONFIG_PPC_LIB_RHEAP=y 941CONFIG_PPC_LIB_RHEAP=y
diff --git a/arch/powerpc/configs/ppc40x_defconfig b/arch/powerpc/configs/ppc40x_defconfig
index 326205cabf77..35b60683cde5 100644
--- a/arch/powerpc/configs/ppc40x_defconfig
+++ b/arch/powerpc/configs/ppc40x_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.29-rc2 3# Linux kernel version: 2.6.33-rc1
4# Fri Jan 23 08:44:03 2009 4# Mon Jan 4 13:54:06 2010
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#
11# CONFIG_6xx is not set 11# CONFIG_PPC_BOOK3S_32 is not set
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
14CONFIG_40x=y 14CONFIG_40x=y
@@ -16,6 +16,7 @@ CONFIG_40x=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_4xx=y 17CONFIG_4xx=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
@@ -27,15 +28,18 @@ CONFIG_GENERIC_TIME=y
27CONFIG_GENERIC_TIME_VSYSCALL=y 28CONFIG_GENERIC_TIME_VSYSCALL=y
28CONFIG_GENERIC_CLOCKEVENTS=y 29CONFIG_GENERIC_CLOCKEVENTS=y
29CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
31CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
30# 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
31CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_NR_IRQS=512
32CONFIG_STACKTRACE_SUPPORT=y 36CONFIG_STACKTRACE_SUPPORT=y
33CONFIG_HAVE_LATENCYTOP_SUPPORT=y 37CONFIG_HAVE_LATENCYTOP_SUPPORT=y
38CONFIG_TRACE_IRQFLAGS_SUPPORT=y
34CONFIG_LOCKDEP_SUPPORT=y 39CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 40CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 41CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 42CONFIG_GENERIC_HWEIGHT=y
38CONFIG_GENERIC_CALIBRATE_DELAY=y
39CONFIG_GENERIC_FIND_NEXT_BIT=y 43CONFIG_GENERIC_FIND_NEXT_BIT=y
40CONFIG_GENERIC_GPIO=y 44CONFIG_GENERIC_GPIO=y
41# CONFIG_ARCH_NO_VIRT_TO_BUS is not set 45# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
@@ -50,11 +54,15 @@ CONFIG_PPC_UDBG_16550=y
50# CONFIG_GENERIC_TBSYNC is not set 54# CONFIG_GENERIC_TBSYNC is not set
51CONFIG_AUDIT_ARCH=y 55CONFIG_AUDIT_ARCH=y
52CONFIG_GENERIC_BUG=y 56CONFIG_GENERIC_BUG=y
53# CONFIG_DEFAULT_UIMAGE is not set 57CONFIG_DTC=y
58CONFIG_DEFAULT_UIMAGE=y
59CONFIG_ARCH_HIBERNATION_POSSIBLE=y
54CONFIG_PPC_DCR_NATIVE=y 60CONFIG_PPC_DCR_NATIVE=y
55# CONFIG_PPC_DCR_MMIO is not set 61# CONFIG_PPC_DCR_MMIO is not set
56CONFIG_PPC_DCR=y 62CONFIG_PPC_DCR=y
63CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
57CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 64CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
65CONFIG_CONSTRUCTORS=y
58 66
59# 67#
60# General setup 68# General setup
@@ -68,9 +76,21 @@ CONFIG_SWAP=y
68CONFIG_SYSVIPC=y 76CONFIG_SYSVIPC=y
69CONFIG_SYSVIPC_SYSCTL=y 77CONFIG_SYSVIPC_SYSCTL=y
70CONFIG_POSIX_MQUEUE=y 78CONFIG_POSIX_MQUEUE=y
79CONFIG_POSIX_MQUEUE_SYSCTL=y
71# CONFIG_BSD_PROCESS_ACCT is not set 80# CONFIG_BSD_PROCESS_ACCT is not set
72# CONFIG_TASKSTATS is not set 81# CONFIG_TASKSTATS is not set
73# CONFIG_AUDIT is not set 82# CONFIG_AUDIT is not set
83
84#
85# RCU Subsystem
86#
87CONFIG_TREE_RCU=y
88# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_TINY_RCU is not set
90# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set
93# CONFIG_TREE_RCU_TRACE is not set
74# CONFIG_IKCONFIG is not set 94# CONFIG_IKCONFIG is not set
75CONFIG_LOG_BUF_SHIFT=14 95CONFIG_LOG_BUF_SHIFT=14
76CONFIG_GROUP_SCHED=y 96CONFIG_GROUP_SCHED=y
@@ -85,31 +105,40 @@ CONFIG_SYSFS_DEPRECATED_V2=y
85# CONFIG_NAMESPACES is not set 105# CONFIG_NAMESPACES is not set
86CONFIG_BLK_DEV_INITRD=y 106CONFIG_BLK_DEV_INITRD=y
87CONFIG_INITRAMFS_SOURCE="" 107CONFIG_INITRAMFS_SOURCE=""
108CONFIG_RD_GZIP=y
109# CONFIG_RD_BZIP2 is not set
110# CONFIG_RD_LZMA is not set
88# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 111# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
89CONFIG_SYSCTL=y 112CONFIG_SYSCTL=y
113CONFIG_ANON_INODES=y
90CONFIG_EMBEDDED=y 114CONFIG_EMBEDDED=y
91CONFIG_SYSCTL_SYSCALL=y 115CONFIG_SYSCTL_SYSCALL=y
92CONFIG_KALLSYMS=y 116CONFIG_KALLSYMS=y
93CONFIG_KALLSYMS_ALL=y 117CONFIG_KALLSYMS_ALL=y
94CONFIG_KALLSYMS_STRIP_GENERATED=y
95CONFIG_KALLSYMS_EXTRA_PASS=y 118CONFIG_KALLSYMS_EXTRA_PASS=y
96CONFIG_HOTPLUG=y 119CONFIG_HOTPLUG=y
97CONFIG_PRINTK=y 120CONFIG_PRINTK=y
98CONFIG_BUG=y 121CONFIG_BUG=y
99CONFIG_ELF_CORE=y 122CONFIG_ELF_CORE=y
100CONFIG_COMPAT_BRK=y
101CONFIG_BASE_FULL=y 123CONFIG_BASE_FULL=y
102CONFIG_FUTEX=y 124CONFIG_FUTEX=y
103CONFIG_ANON_INODES=y
104CONFIG_EPOLL=y 125CONFIG_EPOLL=y
105CONFIG_SIGNALFD=y 126CONFIG_SIGNALFD=y
106CONFIG_TIMERFD=y 127CONFIG_TIMERFD=y
107CONFIG_EVENTFD=y 128CONFIG_EVENTFD=y
108CONFIG_SHMEM=y 129CONFIG_SHMEM=y
109CONFIG_AIO=y 130CONFIG_AIO=y
131CONFIG_HAVE_PERF_EVENTS=y
132
133#
134# Kernel Performance Events And Counters
135#
136# CONFIG_PERF_EVENTS is not set
137# CONFIG_PERF_COUNTERS is not set
110CONFIG_VM_EVENT_COUNTERS=y 138CONFIG_VM_EVENT_COUNTERS=y
111CONFIG_PCI_QUIRKS=y 139CONFIG_PCI_QUIRKS=y
112CONFIG_SLUB_DEBUG=y 140CONFIG_SLUB_DEBUG=y
141CONFIG_COMPAT_BRK=y
113# CONFIG_SLAB is not set 142# CONFIG_SLAB is not set
114CONFIG_SLUB=y 143CONFIG_SLUB=y
115# CONFIG_SLOB is not set 144# CONFIG_SLOB is not set
@@ -121,6 +150,14 @@ CONFIG_HAVE_IOREMAP_PROT=y
121CONFIG_HAVE_KPROBES=y 150CONFIG_HAVE_KPROBES=y
122CONFIG_HAVE_KRETPROBES=y 151CONFIG_HAVE_KRETPROBES=y
123CONFIG_HAVE_ARCH_TRACEHOOK=y 152CONFIG_HAVE_ARCH_TRACEHOOK=y
153CONFIG_HAVE_DMA_ATTRS=y
154CONFIG_HAVE_DMA_API_DEBUG=y
155
156#
157# GCOV-based kernel profiling
158#
159# CONFIG_GCOV_KERNEL is not set
160# CONFIG_SLOW_WORK is not set
124# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 161# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
125CONFIG_SLABINFO=y 162CONFIG_SLABINFO=y
126CONFIG_RT_MUTEXES=y 163CONFIG_RT_MUTEXES=y
@@ -132,8 +169,7 @@ CONFIG_MODULE_UNLOAD=y
132# CONFIG_MODVERSIONS is not set 169# CONFIG_MODVERSIONS is not set
133# CONFIG_MODULE_SRCVERSION_ALL is not set 170# CONFIG_MODULE_SRCVERSION_ALL is not set
134CONFIG_BLOCK=y 171CONFIG_BLOCK=y
135CONFIG_LBD=y 172CONFIG_LBDAF=y
136# CONFIG_BLK_DEV_IO_TRACE is not set
137# CONFIG_BLK_DEV_BSG is not set 173# CONFIG_BLK_DEV_BSG is not set
138# CONFIG_BLK_DEV_INTEGRITY is not set 174# CONFIG_BLK_DEV_INTEGRITY is not set
139 175
@@ -141,19 +177,41 @@ CONFIG_LBD=y
141# IO Schedulers 177# IO Schedulers
142# 178#
143CONFIG_IOSCHED_NOOP=y 179CONFIG_IOSCHED_NOOP=y
144CONFIG_IOSCHED_AS=y
145CONFIG_IOSCHED_DEADLINE=y 180CONFIG_IOSCHED_DEADLINE=y
146CONFIG_IOSCHED_CFQ=y 181CONFIG_IOSCHED_CFQ=y
147CONFIG_DEFAULT_AS=y
148# CONFIG_DEFAULT_DEADLINE is not set 182# CONFIG_DEFAULT_DEADLINE is not set
149# CONFIG_DEFAULT_CFQ is not set 183CONFIG_DEFAULT_CFQ=y
150# CONFIG_DEFAULT_NOOP is not set 184# CONFIG_DEFAULT_NOOP is not set
151CONFIG_DEFAULT_IOSCHED="anticipatory" 185CONFIG_DEFAULT_IOSCHED="cfq"
152CONFIG_CLASSIC_RCU=y 186# CONFIG_INLINE_SPIN_TRYLOCK is not set
153# CONFIG_TREE_RCU is not set 187# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
154# CONFIG_PREEMPT_RCU is not set 188# CONFIG_INLINE_SPIN_LOCK is not set
155# CONFIG_TREE_RCU_TRACE is not set 189# CONFIG_INLINE_SPIN_LOCK_BH is not set
156# CONFIG_PREEMPT_RCU_TRACE is not set 190# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
191# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
192CONFIG_INLINE_SPIN_UNLOCK=y
193# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
194CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
195# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
196# CONFIG_INLINE_READ_TRYLOCK is not set
197# CONFIG_INLINE_READ_LOCK is not set
198# CONFIG_INLINE_READ_LOCK_BH is not set
199# CONFIG_INLINE_READ_LOCK_IRQ is not set
200# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
201CONFIG_INLINE_READ_UNLOCK=y
202# CONFIG_INLINE_READ_UNLOCK_BH is not set
203CONFIG_INLINE_READ_UNLOCK_IRQ=y
204# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
205# CONFIG_INLINE_WRITE_TRYLOCK is not set
206# CONFIG_INLINE_WRITE_LOCK is not set
207# CONFIG_INLINE_WRITE_LOCK_BH is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
209# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
210CONFIG_INLINE_WRITE_UNLOCK=y
211# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
212CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
213# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
214# CONFIG_MUTEX_SPIN_ON_OWNER is not set
157# CONFIG_FREEZER is not set 215# CONFIG_FREEZER is not set
158CONFIG_PPC4xx_PCI_EXPRESS=y 216CONFIG_PPC4xx_PCI_EXPRESS=y
159 217
@@ -168,12 +226,14 @@ CONFIG_XILINX_VIRTEX=y
168CONFIG_ACADIA=y 226CONFIG_ACADIA=y
169CONFIG_EP405=y 227CONFIG_EP405=y
170CONFIG_HCU4=y 228CONFIG_HCU4=y
229CONFIG_HOTFOOT=y
171CONFIG_KILAUEA=y 230CONFIG_KILAUEA=y
172CONFIG_MAKALU=y 231CONFIG_MAKALU=y
173CONFIG_WALNUT=y 232CONFIG_WALNUT=y
174CONFIG_XILINX_VIRTEX_GENERIC_BOARD=y 233CONFIG_XILINX_VIRTEX_GENERIC_BOARD=y
175CONFIG_PPC40x_SIMPLE=y 234CONFIG_PPC40x_SIMPLE=y
176CONFIG_405GP=y 235CONFIG_405GP=y
236CONFIG_405EP=y
177CONFIG_405EX=y 237CONFIG_405EX=y
178CONFIG_405EZ=y 238CONFIG_405EZ=y
179CONFIG_405GPR=y 239CONFIG_405GPR=y
@@ -195,6 +255,7 @@ CONFIG_IBM405_ERR51=y
195# CONFIG_FSL_ULI1575 is not set 255# CONFIG_FSL_ULI1575 is not set
196CONFIG_OF_RTC=y 256CONFIG_OF_RTC=y
197# CONFIG_SIMPLE_GPIO is not set 257# CONFIG_SIMPLE_GPIO is not set
258# CONFIG_XILINX_PCI is not set
198 259
199# 260#
200# Kernel options 261# Kernel options
@@ -218,10 +279,12 @@ CONFIG_BINFMT_ELF=y
218# CONFIG_BINFMT_MISC is not set 279# CONFIG_BINFMT_MISC is not set
219# CONFIG_MATH_EMULATION is not set 280# CONFIG_MATH_EMULATION is not set
220# CONFIG_IOMMU_HELPER is not set 281# CONFIG_IOMMU_HELPER is not set
221CONFIG_PPC_NEED_DMA_SYNC_OPS=y 282# CONFIG_SWIOTLB is not set
222CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 283CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
223CONFIG_ARCH_HAS_WALK_MEMORY=y 284CONFIG_ARCH_HAS_WALK_MEMORY=y
224CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 285CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
286CONFIG_SPARSE_IRQ=y
287CONFIG_MAX_ACTIVE_REGIONS=32
225CONFIG_ARCH_FLATMEM_ENABLE=y 288CONFIG_ARCH_FLATMEM_ENABLE=y
226CONFIG_ARCH_POPULATES_NODE_MAP=y 289CONFIG_ARCH_POPULATES_NODE_MAP=y
227CONFIG_SELECT_MEMORY_MODEL=y 290CONFIG_SELECT_MEMORY_MODEL=y
@@ -237,10 +300,12 @@ CONFIG_MIGRATION=y
237CONFIG_ZONE_DMA_FLAG=1 300CONFIG_ZONE_DMA_FLAG=1
238CONFIG_BOUNCE=y 301CONFIG_BOUNCE=y
239CONFIG_VIRT_TO_BUS=y 302CONFIG_VIRT_TO_BUS=y
240CONFIG_UNEVICTABLE_LRU=y 303# CONFIG_KSM is not set
304CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
241CONFIG_PPC_4K_PAGES=y 305CONFIG_PPC_4K_PAGES=y
242# CONFIG_PPC_16K_PAGES is not set 306# CONFIG_PPC_16K_PAGES is not set
243# CONFIG_PPC_64K_PAGES is not set 307# CONFIG_PPC_64K_PAGES is not set
308# CONFIG_PPC_256K_PAGES is not set
244CONFIG_FORCE_MAX_ZONEORDER=11 309CONFIG_FORCE_MAX_ZONEORDER=11
245CONFIG_PROC_DEVICETREE=y 310CONFIG_PROC_DEVICETREE=y
246# CONFIG_CMDLINE_BOOL is not set 311# CONFIG_CMDLINE_BOOL is not set
@@ -265,6 +330,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
265# CONFIG_PCI_LEGACY is not set 330# CONFIG_PCI_LEGACY is not set
266# CONFIG_PCI_DEBUG is not set 331# CONFIG_PCI_DEBUG is not set
267# CONFIG_PCI_STUB is not set 332# CONFIG_PCI_STUB is not set
333# CONFIG_PCI_IOV is not set
268# CONFIG_PCCARD is not set 334# CONFIG_PCCARD is not set
269# CONFIG_HOTPLUG_PCI is not set 335# CONFIG_HOTPLUG_PCI is not set
270# CONFIG_HAS_RAPIDIO is not set 336# CONFIG_HAS_RAPIDIO is not set
@@ -282,14 +348,12 @@ CONFIG_PAGE_OFFSET=0xc0000000
282CONFIG_KERNEL_START=0xc0000000 348CONFIG_KERNEL_START=0xc0000000
283CONFIG_PHYSICAL_START=0x00000000 349CONFIG_PHYSICAL_START=0x00000000
284CONFIG_TASK_SIZE=0xc0000000 350CONFIG_TASK_SIZE=0xc0000000
285CONFIG_CONSISTENT_START=0xff100000
286CONFIG_CONSISTENT_SIZE=0x00200000 351CONFIG_CONSISTENT_SIZE=0x00200000
287CONFIG_NET=y 352CONFIG_NET=y
288 353
289# 354#
290# Networking options 355# Networking options
291# 356#
292CONFIG_COMPAT_NET_DEV_OPS=y
293CONFIG_PACKET=y 357CONFIG_PACKET=y
294# CONFIG_PACKET_MMAP is not set 358# CONFIG_PACKET_MMAP is not set
295CONFIG_UNIX=y 359CONFIG_UNIX=y
@@ -341,6 +405,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m
341CONFIG_INET6_XFRM_MODE_BEET=m 405CONFIG_INET6_XFRM_MODE_BEET=m
342# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 406# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
343CONFIG_IPV6_SIT=m 407CONFIG_IPV6_SIT=m
408# CONFIG_IPV6_SIT_6RD is not set
344CONFIG_IPV6_NDISC_NODETYPE=y 409CONFIG_IPV6_NDISC_NODETYPE=y
345# CONFIG_IPV6_TUNNEL is not set 410# CONFIG_IPV6_TUNNEL is not set
346# CONFIG_IPV6_MULTIPLE_TABLES is not set 411# CONFIG_IPV6_MULTIPLE_TABLES is not set
@@ -349,6 +414,7 @@ CONFIG_IPV6_NDISC_NODETYPE=y
349# CONFIG_NETFILTER is not set 414# CONFIG_NETFILTER is not set
350# CONFIG_IP_DCCP is not set 415# CONFIG_IP_DCCP is not set
351# CONFIG_IP_SCTP is not set 416# CONFIG_IP_SCTP is not set
417# CONFIG_RDS is not set
352# CONFIG_TIPC is not set 418# CONFIG_TIPC is not set
353# CONFIG_ATM is not set 419# CONFIG_ATM is not set
354# CONFIG_BRIDGE is not set 420# CONFIG_BRIDGE is not set
@@ -362,6 +428,8 @@ CONFIG_IPV6_NDISC_NODETYPE=y
362# CONFIG_LAPB is not set 428# CONFIG_LAPB is not set
363# CONFIG_ECONET is not set 429# CONFIG_ECONET is not set
364# CONFIG_WAN_ROUTER is not set 430# CONFIG_WAN_ROUTER is not set
431# CONFIG_PHONET is not set
432# CONFIG_IEEE802154 is not set
365# CONFIG_NET_SCHED is not set 433# CONFIG_NET_SCHED is not set
366# CONFIG_DCB is not set 434# CONFIG_DCB is not set
367 435
@@ -374,13 +442,13 @@ CONFIG_IPV6_NDISC_NODETYPE=y
374# CONFIG_IRDA is not set 442# CONFIG_IRDA is not set
375# CONFIG_BT is not set 443# CONFIG_BT is not set
376# CONFIG_AF_RXRPC is not set 444# CONFIG_AF_RXRPC is not set
377# CONFIG_PHONET is not set
378CONFIG_WIRELESS=y 445CONFIG_WIRELESS=y
379# CONFIG_CFG80211 is not set 446# CONFIG_CFG80211 is not set
380CONFIG_WIRELESS_OLD_REGULATORY=y
381# CONFIG_WIRELESS_EXT is not set
382# CONFIG_LIB80211 is not set 447# CONFIG_LIB80211 is not set
383# CONFIG_MAC80211 is not set 448
449#
450# CFG80211 needs to be enabled for MAC80211
451#
384# CONFIG_WIMAX is not set 452# CONFIG_WIMAX is not set
385# CONFIG_RFKILL is not set 453# CONFIG_RFKILL is not set
386# CONFIG_NET_9P is not set 454# CONFIG_NET_9P is not set
@@ -393,6 +461,7 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
393# Generic Driver Options 461# Generic Driver Options
394# 462#
395CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 463CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
464# CONFIG_DEVTMPFS is not set
396CONFIG_STANDALONE=y 465CONFIG_STANDALONE=y
397CONFIG_PREVENT_FIRMWARE_BUILD=y 466CONFIG_PREVENT_FIRMWARE_BUILD=y
398CONFIG_FW_LOADER=y 467CONFIG_FW_LOADER=y
@@ -405,9 +474,9 @@ CONFIG_CONNECTOR=y
405CONFIG_PROC_EVENTS=y 474CONFIG_PROC_EVENTS=y
406CONFIG_MTD=y 475CONFIG_MTD=y
407# CONFIG_MTD_DEBUG is not set 476# CONFIG_MTD_DEBUG is not set
477# CONFIG_MTD_TESTS is not set
408# CONFIG_MTD_CONCAT is not set 478# CONFIG_MTD_CONCAT is not set
409CONFIG_MTD_PARTITIONS=y 479CONFIG_MTD_PARTITIONS=y
410# CONFIG_MTD_TESTS is not set
411# CONFIG_MTD_REDBOOT_PARTS is not set 480# CONFIG_MTD_REDBOOT_PARTS is not set
412CONFIG_MTD_CMDLINE_PARTS=y 481CONFIG_MTD_CMDLINE_PARTS=y
413CONFIG_MTD_OF_PARTS=y 482CONFIG_MTD_OF_PARTS=y
@@ -483,7 +552,6 @@ CONFIG_MTD_PHYSMAP_OF=y
483# LPDDR flash memory drivers 552# LPDDR flash memory drivers
484# 553#
485# CONFIG_MTD_LPDDR is not set 554# CONFIG_MTD_LPDDR is not set
486# CONFIG_MTD_QINFO_PROBE is not set
487 555
488# 556#
489# UBI - Unsorted block images 557# UBI - Unsorted block images
@@ -491,7 +559,7 @@ CONFIG_MTD_PHYSMAP_OF=y
491CONFIG_MTD_UBI=m 559CONFIG_MTD_UBI=m
492CONFIG_MTD_UBI_WL_THRESHOLD=4096 560CONFIG_MTD_UBI_WL_THRESHOLD=4096
493CONFIG_MTD_UBI_BEB_RESERVE=1 561CONFIG_MTD_UBI_BEB_RESERVE=1
494CONFIG_MTD_UBI_GLUEBI=y 562CONFIG_MTD_UBI_GLUEBI=m
495 563
496# 564#
497# UBI debugging options 565# UBI debugging options
@@ -509,6 +577,7 @@ CONFIG_BLK_DEV=y
509# CONFIG_BLK_DEV_UMEM is not set 577# CONFIG_BLK_DEV_UMEM is not set
510# CONFIG_BLK_DEV_COW_COMMON is not set 578# CONFIG_BLK_DEV_COW_COMMON is not set
511# CONFIG_BLK_DEV_LOOP is not set 579# CONFIG_BLK_DEV_LOOP is not set
580# CONFIG_BLK_DEV_DRBD is not set
512# CONFIG_BLK_DEV_NBD is not set 581# CONFIG_BLK_DEV_NBD is not set
513# CONFIG_BLK_DEV_SX8 is not set 582# CONFIG_BLK_DEV_SX8 is not set
514CONFIG_BLK_DEV_RAM=y 583CONFIG_BLK_DEV_RAM=y
@@ -520,14 +589,25 @@ CONFIG_BLK_DEV_RAM_SIZE=35000
520CONFIG_XILINX_SYSACE=m 589CONFIG_XILINX_SYSACE=m
521# CONFIG_BLK_DEV_HD is not set 590# CONFIG_BLK_DEV_HD is not set
522CONFIG_MISC_DEVICES=y 591CONFIG_MISC_DEVICES=y
592# CONFIG_AD525X_DPOT is not set
523# CONFIG_PHANTOM is not set 593# CONFIG_PHANTOM is not set
524# CONFIG_EEPROM_93CX6 is not set
525# CONFIG_SGI_IOC4 is not set 594# CONFIG_SGI_IOC4 is not set
526# CONFIG_TIFM_CORE is not set 595# CONFIG_TIFM_CORE is not set
527# CONFIG_ICS932S401 is not set 596# CONFIG_ICS932S401 is not set
528# CONFIG_ENCLOSURE_SERVICES is not set 597# CONFIG_ENCLOSURE_SERVICES is not set
529# CONFIG_HP_ILO is not set 598# CONFIG_HP_ILO is not set
599# CONFIG_ISL29003 is not set
600# CONFIG_DS1682 is not set
530# CONFIG_C2PORT is not set 601# CONFIG_C2PORT is not set
602
603#
604# EEPROM support
605#
606# CONFIG_EEPROM_AT24 is not set
607# CONFIG_EEPROM_LEGACY is not set
608# CONFIG_EEPROM_MAX6875 is not set
609# CONFIG_EEPROM_93CX6 is not set
610# CONFIG_CB710_CORE is not set
531CONFIG_HAVE_IDE=y 611CONFIG_HAVE_IDE=y
532# CONFIG_IDE is not set 612# CONFIG_IDE is not set
533 613
@@ -547,7 +627,11 @@ CONFIG_HAVE_IDE=y
547# 627#
548 628
549# 629#
550# Enable only one of the two stacks, unless you know what you are doing 630# You can enable one or both FireWire driver stacks.
631#
632
633#
634# See the help texts for more information.
551# 635#
552# CONFIG_FIREWIRE is not set 636# CONFIG_FIREWIRE is not set
553# CONFIG_IEEE1394 is not set 637# CONFIG_IEEE1394 is not set
@@ -568,6 +652,8 @@ CONFIG_NET_ETHERNET=y
568# CONFIG_SUNGEM is not set 652# CONFIG_SUNGEM is not set
569# CONFIG_CASSINI is not set 653# CONFIG_CASSINI is not set
570# CONFIG_NET_VENDOR_3COM is not set 654# CONFIG_NET_VENDOR_3COM is not set
655# CONFIG_ETHOC is not set
656# CONFIG_DNET is not set
571# CONFIG_NET_TULIP is not set 657# CONFIG_NET_TULIP is not set
572# CONFIG_HP100 is not set 658# CONFIG_HP100 is not set
573CONFIG_IBM_NEW_EMAC=y 659CONFIG_IBM_NEW_EMAC=y
@@ -586,7 +672,10 @@ CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT=y
586CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR=y 672CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR=y
587# CONFIG_NET_PCI is not set 673# CONFIG_NET_PCI is not set
588# CONFIG_B44 is not set 674# CONFIG_B44 is not set
675# CONFIG_KS8842 is not set
676# CONFIG_KS8851_MLL is not set
589# CONFIG_ATL2 is not set 677# CONFIG_ATL2 is not set
678# CONFIG_XILINX_EMACLITE is not set
590CONFIG_NETDEV_1000=y 679CONFIG_NETDEV_1000=y
591# CONFIG_ACENIC is not set 680# CONFIG_ACENIC is not set
592# CONFIG_DL2K is not set 681# CONFIG_DL2K is not set
@@ -594,6 +683,7 @@ CONFIG_NETDEV_1000=y
594# CONFIG_E1000E is not set 683# CONFIG_E1000E is not set
595# CONFIG_IP1000 is not set 684# CONFIG_IP1000 is not set
596# CONFIG_IGB is not set 685# CONFIG_IGB is not set
686# CONFIG_IGBVF is not set
597# CONFIG_NS83820 is not set 687# CONFIG_NS83820 is not set
598# CONFIG_HAMACHI is not set 688# CONFIG_HAMACHI is not set
599# CONFIG_YELLOWFIN is not set 689# CONFIG_YELLOWFIN is not set
@@ -604,9 +694,13 @@ CONFIG_NETDEV_1000=y
604# CONFIG_VIA_VELOCITY is not set 694# CONFIG_VIA_VELOCITY is not set
605# CONFIG_TIGON3 is not set 695# CONFIG_TIGON3 is not set
606# CONFIG_BNX2 is not set 696# CONFIG_BNX2 is not set
697# CONFIG_CNIC is not set
698# CONFIG_MV643XX_ETH is not set
699# CONFIG_XILINX_LL_TEMAC is not set
607# CONFIG_QLA3XXX is not set 700# CONFIG_QLA3XXX is not set
608# CONFIG_ATL1 is not set 701# CONFIG_ATL1 is not set
609# CONFIG_ATL1E is not set 702# CONFIG_ATL1E is not set
703# CONFIG_ATL1C is not set
610# CONFIG_JME is not set 704# CONFIG_JME is not set
611CONFIG_NETDEV_10000=y 705CONFIG_NETDEV_10000=y
612# CONFIG_CHELSIO_T1 is not set 706# CONFIG_CHELSIO_T1 is not set
@@ -616,6 +710,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
616# CONFIG_IXGBE is not set 710# CONFIG_IXGBE is not set
617# CONFIG_IXGB is not set 711# CONFIG_IXGB is not set
618# CONFIG_S2IO is not set 712# CONFIG_S2IO is not set
713# CONFIG_VXGE is not set
619# CONFIG_MYRI10GE is not set 714# CONFIG_MYRI10GE is not set
620# CONFIG_NETXEN_NIC is not set 715# CONFIG_NETXEN_NIC is not set
621# CONFIG_NIU is not set 716# CONFIG_NIU is not set
@@ -625,14 +720,13 @@ CONFIG_CHELSIO_T3_DEPENDS=y
625# CONFIG_BNX2X is not set 720# CONFIG_BNX2X is not set
626# CONFIG_QLGE is not set 721# CONFIG_QLGE is not set
627# CONFIG_SFC is not set 722# CONFIG_SFC is not set
723# CONFIG_BE2NET is not set
628# CONFIG_TR is not set 724# CONFIG_TR is not set
629 725CONFIG_WLAN=y
630# 726# CONFIG_AIRO is not set
631# Wireless LAN 727# CONFIG_ATMEL is not set
632# 728# CONFIG_PRISM54 is not set
633# CONFIG_WLAN_PRE80211 is not set 729# CONFIG_HOSTAP is not set
634# CONFIG_WLAN_80211 is not set
635# CONFIG_IWLWIFI_LEDS is not set
636 730
637# 731#
638# Enable WiMAX (Networking options) to see the WiMAX drivers 732# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -645,6 +739,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
645# CONFIG_NETCONSOLE is not set 739# CONFIG_NETCONSOLE is not set
646# CONFIG_NETPOLL is not set 740# CONFIG_NETPOLL is not set
647# CONFIG_NET_POLL_CONTROLLER is not set 741# CONFIG_NET_POLL_CONTROLLER is not set
742# CONFIG_VMXNET3 is not set
648# CONFIG_ISDN is not set 743# CONFIG_ISDN is not set
649# CONFIG_PHONE is not set 744# CONFIG_PHONE is not set
650 745
@@ -663,6 +758,7 @@ CONFIG_SERIO=m
663# CONFIG_SERIO_LIBPS2 is not set 758# CONFIG_SERIO_LIBPS2 is not set
664# CONFIG_SERIO_RAW is not set 759# CONFIG_SERIO_RAW is not set
665CONFIG_SERIO_XILINX_XPS_PS2=m 760CONFIG_SERIO_XILINX_XPS_PS2=m
761# CONFIG_SERIO_ALTERA_PS2 is not set
666# CONFIG_GAMEPORT is not set 762# CONFIG_GAMEPORT is not set
667 763
668# 764#
@@ -697,6 +793,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
697# CONFIG_SERIAL_JSM is not set 793# CONFIG_SERIAL_JSM is not set
698CONFIG_SERIAL_OF_PLATFORM=y 794CONFIG_SERIAL_OF_PLATFORM=y
699# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set 795# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
796# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
700CONFIG_UNIX98_PTYS=y 797CONFIG_UNIX98_PTYS=y
701# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 798# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
702CONFIG_LEGACY_PTYS=y 799CONFIG_LEGACY_PTYS=y
@@ -714,6 +811,7 @@ CONFIG_XILINX_HWICAP=m
714CONFIG_DEVPORT=y 811CONFIG_DEVPORT=y
715CONFIG_I2C=m 812CONFIG_I2C=m
716CONFIG_I2C_BOARDINFO=y 813CONFIG_I2C_BOARDINFO=y
814CONFIG_I2C_COMPAT=y
717CONFIG_I2C_CHARDEV=m 815CONFIG_I2C_CHARDEV=m
718CONFIG_I2C_HELPER_AUTO=y 816CONFIG_I2C_HELPER_AUTO=y
719CONFIG_I2C_ALGOBIT=m 817CONFIG_I2C_ALGOBIT=m
@@ -756,11 +854,6 @@ CONFIG_I2C_IBM_IIC=m
756# CONFIG_I2C_TAOS_EVM is not set 854# CONFIG_I2C_TAOS_EVM is not set
757 855
758# 856#
759# Graphics adapter I2C/DDC channel drivers
760#
761# CONFIG_I2C_VOODOO3 is not set
762
763#
764# Other I2C/SMBus bus drivers 857# Other I2C/SMBus bus drivers
765# 858#
766# CONFIG_I2C_PCA_PLATFORM is not set 859# CONFIG_I2C_PCA_PLATFORM is not set
@@ -769,20 +862,17 @@ CONFIG_I2C_IBM_IIC=m
769# 862#
770# Miscellaneous I2C Chip support 863# Miscellaneous I2C Chip support
771# 864#
772# CONFIG_DS1682 is not set
773# CONFIG_EEPROM_AT24 is not set
774# CONFIG_EEPROM_LEGACY is not set
775# CONFIG_SENSORS_PCF8574 is not set
776# CONFIG_PCF8575 is not set
777# CONFIG_SENSORS_PCA9539 is not set
778# CONFIG_SENSORS_PCF8591 is not set
779# CONFIG_SENSORS_MAX6875 is not set
780# CONFIG_SENSORS_TSL2550 is not set 865# CONFIG_SENSORS_TSL2550 is not set
781# CONFIG_I2C_DEBUG_CORE is not set 866# CONFIG_I2C_DEBUG_CORE is not set
782# CONFIG_I2C_DEBUG_ALGO is not set 867# CONFIG_I2C_DEBUG_ALGO is not set
783# CONFIG_I2C_DEBUG_BUS is not set 868# CONFIG_I2C_DEBUG_BUS is not set
784# CONFIG_I2C_DEBUG_CHIP is not set 869# CONFIG_I2C_DEBUG_CHIP is not set
785# CONFIG_SPI is not set 870# CONFIG_SPI is not set
871
872#
873# PPS support
874#
875# CONFIG_PPS is not set
786CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 876CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
787CONFIG_ARCH_REQUIRE_GPIOLIB=y 877CONFIG_ARCH_REQUIRE_GPIOLIB=y
788CONFIG_GPIOLIB=y 878CONFIG_GPIOLIB=y
@@ -804,11 +894,17 @@ CONFIG_GPIO_XILINX=y
804# 894#
805# PCI GPIO expanders: 895# PCI GPIO expanders:
806# 896#
897# CONFIG_GPIO_CS5535 is not set
807# CONFIG_GPIO_BT8XX is not set 898# CONFIG_GPIO_BT8XX is not set
899# CONFIG_GPIO_LANGWELL is not set
808 900
809# 901#
810# SPI GPIO expanders: 902# SPI GPIO expanders:
811# 903#
904
905#
906# AC97 GPIO expanders:
907#
812# CONFIG_W1 is not set 908# CONFIG_W1 is not set
813# CONFIG_POWER_SUPPLY is not set 909# CONFIG_POWER_SUPPLY is not set
814# CONFIG_HWMON is not set 910# CONFIG_HWMON is not set
@@ -832,28 +928,15 @@ CONFIG_SSB_POSSIBLE=y
832# CONFIG_MFD_WM8400 is not set 928# CONFIG_MFD_WM8400 is not set
833# CONFIG_MFD_WM8350_I2C is not set 929# CONFIG_MFD_WM8350_I2C is not set
834# CONFIG_MFD_PCF50633 is not set 930# CONFIG_MFD_PCF50633 is not set
931# CONFIG_AB3100_CORE is not set
835# CONFIG_REGULATOR is not set 932# CONFIG_REGULATOR is not set
836 933# CONFIG_MEDIA_SUPPORT is not set
837#
838# Multimedia devices
839#
840
841#
842# Multimedia core support
843#
844# CONFIG_VIDEO_DEV is not set
845# CONFIG_DVB_CORE is not set
846# CONFIG_VIDEO_MEDIA is not set
847
848#
849# Multimedia drivers
850#
851# CONFIG_DAB is not set
852 934
853# 935#
854# Graphics support 936# Graphics support
855# 937#
856# CONFIG_AGP is not set 938# CONFIG_AGP is not set
939CONFIG_VGA_ARB=y
857# CONFIG_DRM is not set 940# CONFIG_DRM is not set
858# CONFIG_VGASTATE is not set 941# CONFIG_VGASTATE is not set
859CONFIG_VIDEO_OUTPUT_CONTROL=m 942CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -909,6 +992,7 @@ CONFIG_FB_XILINX=m
909# CONFIG_FB_VIRTUAL is not set 992# CONFIG_FB_VIRTUAL is not set
910# CONFIG_FB_METRONOME is not set 993# CONFIG_FB_METRONOME is not set
911# CONFIG_FB_MB862XX is not set 994# CONFIG_FB_MB862XX is not set
995# CONFIG_FB_BROADSHEET is not set
912# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 996# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
913 997
914# 998#
@@ -930,7 +1014,7 @@ CONFIG_USB_ARCH_HAS_EHCI=y
930# 1014#
931 1015
932# 1016#
933# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 1017# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
934# 1018#
935# CONFIG_USB_GADGET is not set 1019# CONFIG_USB_GADGET is not set
936 1020
@@ -946,7 +1030,12 @@ CONFIG_USB_ARCH_HAS_EHCI=y
946# CONFIG_EDAC is not set 1030# CONFIG_EDAC is not set
947# CONFIG_RTC_CLASS is not set 1031# CONFIG_RTC_CLASS is not set
948# CONFIG_DMADEVICES is not set 1032# CONFIG_DMADEVICES is not set
1033# CONFIG_AUXDISPLAY is not set
949# CONFIG_UIO is not set 1034# CONFIG_UIO is not set
1035
1036#
1037# TI VLYNQ
1038#
950# CONFIG_STAGING is not set 1039# CONFIG_STAGING is not set
951 1040
952# 1041#
@@ -956,6 +1045,7 @@ CONFIG_EXT2_FS=y
956# CONFIG_EXT2_FS_XATTR is not set 1045# CONFIG_EXT2_FS_XATTR is not set
957# CONFIG_EXT2_FS_XIP is not set 1046# CONFIG_EXT2_FS_XIP is not set
958CONFIG_EXT3_FS=m 1047CONFIG_EXT3_FS=m
1048# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
959CONFIG_EXT3_FS_XATTR=y 1049CONFIG_EXT3_FS_XATTR=y
960# CONFIG_EXT3_FS_POSIX_ACL is not set 1050# CONFIG_EXT3_FS_POSIX_ACL is not set
961# CONFIG_EXT3_FS_SECURITY is not set 1051# CONFIG_EXT3_FS_SECURITY is not set
@@ -966,11 +1056,13 @@ CONFIG_FS_MBCACHE=m
966# CONFIG_REISERFS_FS is not set 1056# CONFIG_REISERFS_FS is not set
967# CONFIG_JFS_FS is not set 1057# CONFIG_JFS_FS is not set
968# CONFIG_FS_POSIX_ACL is not set 1058# CONFIG_FS_POSIX_ACL is not set
969CONFIG_FILE_LOCKING=y
970# CONFIG_XFS_FS is not set 1059# CONFIG_XFS_FS is not set
971# CONFIG_GFS2_FS is not set 1060# CONFIG_GFS2_FS is not set
972# CONFIG_OCFS2_FS is not set 1061# CONFIG_OCFS2_FS is not set
973# CONFIG_BTRFS_FS is not set 1062# CONFIG_BTRFS_FS is not set
1063# CONFIG_NILFS2_FS is not set
1064CONFIG_FILE_LOCKING=y
1065CONFIG_FSNOTIFY=y
974CONFIG_DNOTIFY=y 1066CONFIG_DNOTIFY=y
975CONFIG_INOTIFY=y 1067CONFIG_INOTIFY=y
976CONFIG_INOTIFY_USER=y 1068CONFIG_INOTIFY_USER=y
@@ -980,6 +1072,11 @@ CONFIG_INOTIFY_USER=y
980# CONFIG_FUSE_FS is not set 1072# CONFIG_FUSE_FS is not set
981 1073
982# 1074#
1075# Caches
1076#
1077# CONFIG_FSCACHE is not set
1078
1079#
983# CD-ROM/DVD Filesystems 1080# CD-ROM/DVD Filesystems
984# 1081#
985# CONFIG_ISO9660_FS is not set 1082# CONFIG_ISO9660_FS is not set
@@ -1053,7 +1150,6 @@ CONFIG_LOCKD=y
1053CONFIG_LOCKD_V4=y 1150CONFIG_LOCKD_V4=y
1054CONFIG_NFS_COMMON=y 1151CONFIG_NFS_COMMON=y
1055CONFIG_SUNRPC=y 1152CONFIG_SUNRPC=y
1056# CONFIG_SUNRPC_REGISTER_V4 is not set
1057# CONFIG_RPCSEC_GSS_KRB5 is not set 1153# CONFIG_RPCSEC_GSS_KRB5 is not set
1058# CONFIG_RPCSEC_GSS_SPKM3 is not set 1154# CONFIG_RPCSEC_GSS_SPKM3 is not set
1059# CONFIG_SMB_FS is not set 1155# CONFIG_SMB_FS is not set
@@ -1108,6 +1204,7 @@ CONFIG_NLS_ISO8859_1=m
1108# CONFIG_NLS_KOI8_U is not set 1204# CONFIG_NLS_KOI8_U is not set
1109# CONFIG_NLS_UTF8 is not set 1205# CONFIG_NLS_UTF8 is not set
1110# CONFIG_DLM is not set 1206# CONFIG_DLM is not set
1207# CONFIG_BINARY_PRINTF is not set
1111 1208
1112# 1209#
1113# Library routines 1210# Library routines
@@ -1125,11 +1222,13 @@ CONFIG_ZLIB_INFLATE=y
1125CONFIG_ZLIB_DEFLATE=m 1222CONFIG_ZLIB_DEFLATE=m
1126CONFIG_LZO_COMPRESS=m 1223CONFIG_LZO_COMPRESS=m
1127CONFIG_LZO_DECOMPRESS=m 1224CONFIG_LZO_DECOMPRESS=m
1128CONFIG_PLIST=y 1225CONFIG_DECOMPRESS_GZIP=y
1129CONFIG_HAS_IOMEM=y 1226CONFIG_HAS_IOMEM=y
1130CONFIG_HAS_IOPORT=y 1227CONFIG_HAS_IOPORT=y
1131CONFIG_HAS_DMA=y 1228CONFIG_HAS_DMA=y
1132CONFIG_HAVE_LMB=y 1229CONFIG_HAVE_LMB=y
1230CONFIG_NLATTR=y
1231CONFIG_GENERIC_ATOMIC64=y
1133 1232
1134# 1233#
1135# Kernel hacking 1234# Kernel hacking
@@ -1139,6 +1238,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1139CONFIG_ENABLE_MUST_CHECK=y 1238CONFIG_ENABLE_MUST_CHECK=y
1140CONFIG_FRAME_WARN=1024 1239CONFIG_FRAME_WARN=1024
1141CONFIG_MAGIC_SYSRQ=y 1240CONFIG_MAGIC_SYSRQ=y
1241# CONFIG_STRIP_ASM_SYMS is not set
1142# CONFIG_UNUSED_SYMBOLS is not set 1242# CONFIG_UNUSED_SYMBOLS is not set
1143CONFIG_DEBUG_FS=y 1243CONFIG_DEBUG_FS=y
1144# CONFIG_HEADERS_CHECK is not set 1244# CONFIG_HEADERS_CHECK is not set
@@ -1147,16 +1247,23 @@ CONFIG_DEBUG_KERNEL=y
1147CONFIG_DETECT_SOFTLOCKUP=y 1247CONFIG_DETECT_SOFTLOCKUP=y
1148# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1248# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1149CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1249CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1250CONFIG_DETECT_HUNG_TASK=y
1251# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1252CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1150CONFIG_SCHED_DEBUG=y 1253CONFIG_SCHED_DEBUG=y
1151# CONFIG_SCHEDSTATS is not set 1254# CONFIG_SCHEDSTATS is not set
1152# CONFIG_TIMER_STATS is not set 1255# CONFIG_TIMER_STATS is not set
1153# CONFIG_DEBUG_OBJECTS is not set 1256# CONFIG_DEBUG_OBJECTS is not set
1154# CONFIG_SLUB_DEBUG_ON is not set 1257# CONFIG_SLUB_DEBUG_ON is not set
1155# CONFIG_SLUB_STATS is not set 1258# CONFIG_SLUB_STATS is not set
1259# CONFIG_DEBUG_KMEMLEAK is not set
1156# CONFIG_DEBUG_RT_MUTEXES is not set 1260# CONFIG_DEBUG_RT_MUTEXES is not set
1157# CONFIG_RT_MUTEX_TESTER is not set 1261# CONFIG_RT_MUTEX_TESTER is not set
1158# CONFIG_DEBUG_SPINLOCK is not set 1262# CONFIG_DEBUG_SPINLOCK is not set
1159# CONFIG_DEBUG_MUTEXES is not set 1263# CONFIG_DEBUG_MUTEXES is not set
1264# CONFIG_DEBUG_LOCK_ALLOC is not set
1265# CONFIG_PROVE_LOCKING is not set
1266# CONFIG_LOCK_STAT is not set
1160# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1267# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1161# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1268# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1162# CONFIG_DEBUG_KOBJECT is not set 1269# CONFIG_DEBUG_KOBJECT is not set
@@ -1168,35 +1275,45 @@ CONFIG_DEBUG_BUGVERBOSE=y
1168# CONFIG_DEBUG_LIST is not set 1275# CONFIG_DEBUG_LIST is not set
1169# CONFIG_DEBUG_SG is not set 1276# CONFIG_DEBUG_SG is not set
1170# CONFIG_DEBUG_NOTIFIERS is not set 1277# CONFIG_DEBUG_NOTIFIERS is not set
1171# CONFIG_BOOT_PRINTK_DELAY is not set 1278# CONFIG_DEBUG_CREDENTIALS is not set
1172# CONFIG_RCU_TORTURE_TEST is not set 1279# CONFIG_RCU_TORTURE_TEST is not set
1173# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1280# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1174# CONFIG_BACKTRACE_SELF_TEST is not set 1281# CONFIG_BACKTRACE_SELF_TEST is not set
1175# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1282# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1283# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1176# CONFIG_FAULT_INJECTION is not set 1284# CONFIG_FAULT_INJECTION is not set
1177# CONFIG_LATENCYTOP is not set 1285# CONFIG_LATENCYTOP is not set
1178CONFIG_SYSCTL_SYSCALL_CHECK=y 1286CONFIG_SYSCTL_SYSCALL_CHECK=y
1287# CONFIG_DEBUG_PAGEALLOC is not set
1179CONFIG_HAVE_FUNCTION_TRACER=y 1288CONFIG_HAVE_FUNCTION_TRACER=y
1289CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1180CONFIG_HAVE_DYNAMIC_FTRACE=y 1290CONFIG_HAVE_DYNAMIC_FTRACE=y
1181CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1291CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1182 1292CONFIG_TRACING_SUPPORT=y
1183# 1293CONFIG_FTRACE=y
1184# Tracers
1185#
1186# CONFIG_FUNCTION_TRACER is not set 1294# CONFIG_FUNCTION_TRACER is not set
1295# CONFIG_IRQSOFF_TRACER is not set
1187# CONFIG_SCHED_TRACER is not set 1296# CONFIG_SCHED_TRACER is not set
1188# CONFIG_CONTEXT_SWITCH_TRACER is not set 1297# CONFIG_ENABLE_DEFAULT_TRACERS is not set
1189# CONFIG_BOOT_TRACER is not set 1298# CONFIG_BOOT_TRACER is not set
1190# CONFIG_TRACE_BRANCH_PROFILING is not set 1299CONFIG_BRANCH_PROFILE_NONE=y
1300# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1301# CONFIG_PROFILE_ALL_BRANCHES is not set
1191# CONFIG_STACK_TRACER is not set 1302# CONFIG_STACK_TRACER is not set
1192# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1303# CONFIG_KMEMTRACE is not set
1304# CONFIG_WORKQUEUE_TRACER is not set
1305# CONFIG_BLK_DEV_IO_TRACE is not set
1306# CONFIG_DYNAMIC_DEBUG is not set
1307# CONFIG_DMA_API_DEBUG is not set
1193# CONFIG_SAMPLES is not set 1308# CONFIG_SAMPLES is not set
1194CONFIG_HAVE_ARCH_KGDB=y 1309CONFIG_HAVE_ARCH_KGDB=y
1195# CONFIG_KGDB is not set 1310# CONFIG_KGDB is not set
1311# CONFIG_PPC_DISABLE_WERROR is not set
1312CONFIG_PPC_WERROR=y
1196CONFIG_PRINT_STACK_DEPTH=64 1313CONFIG_PRINT_STACK_DEPTH=64
1197# CONFIG_DEBUG_STACKOVERFLOW is not set 1314# CONFIG_DEBUG_STACKOVERFLOW is not set
1198# CONFIG_DEBUG_STACK_USAGE is not set 1315# CONFIG_DEBUG_STACK_USAGE is not set
1199# CONFIG_DEBUG_PAGEALLOC is not set 1316# CONFIG_PPC_EMULATED_STATS is not set
1200# CONFIG_CODE_PATCHING_SELFTEST is not set 1317# CONFIG_CODE_PATCHING_SELFTEST is not set
1201# CONFIG_FTR_FIXUP_SELFTEST is not set 1318# CONFIG_FTR_FIXUP_SELFTEST is not set
1202# CONFIG_MSI_BITMAP_SELFTEST is not set 1319# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -1212,13 +1329,16 @@ CONFIG_PRINT_STACK_DEPTH=64
1212# CONFIG_KEYS is not set 1329# CONFIG_KEYS is not set
1213# CONFIG_SECURITY is not set 1330# CONFIG_SECURITY is not set
1214# CONFIG_SECURITYFS is not set 1331# CONFIG_SECURITYFS is not set
1215# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1332# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1333# CONFIG_DEFAULT_SECURITY_SMACK is not set
1334# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1335CONFIG_DEFAULT_SECURITY_DAC=y
1336CONFIG_DEFAULT_SECURITY=""
1216CONFIG_CRYPTO=y 1337CONFIG_CRYPTO=y
1217 1338
1218# 1339#
1219# Crypto core or helper 1340# Crypto core or helper
1220# 1341#
1221# CONFIG_CRYPTO_FIPS is not set
1222CONFIG_CRYPTO_ALGAPI=y 1342CONFIG_CRYPTO_ALGAPI=y
1223CONFIG_CRYPTO_ALGAPI2=y 1343CONFIG_CRYPTO_ALGAPI2=y
1224CONFIG_CRYPTO_AEAD2=y 1344CONFIG_CRYPTO_AEAD2=y
@@ -1227,10 +1347,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
1227CONFIG_CRYPTO_HASH=y 1347CONFIG_CRYPTO_HASH=y
1228CONFIG_CRYPTO_HASH2=y 1348CONFIG_CRYPTO_HASH2=y
1229CONFIG_CRYPTO_RNG2=y 1349CONFIG_CRYPTO_RNG2=y
1350CONFIG_CRYPTO_PCOMP=y
1230CONFIG_CRYPTO_MANAGER=y 1351CONFIG_CRYPTO_MANAGER=y
1231CONFIG_CRYPTO_MANAGER2=y 1352CONFIG_CRYPTO_MANAGER2=y
1232# CONFIG_CRYPTO_GF128MUL is not set 1353# CONFIG_CRYPTO_GF128MUL is not set
1233# CONFIG_CRYPTO_NULL is not set 1354# CONFIG_CRYPTO_NULL is not set
1355CONFIG_CRYPTO_WORKQUEUE=y
1234# CONFIG_CRYPTO_CRYPTD is not set 1356# CONFIG_CRYPTO_CRYPTD is not set
1235# CONFIG_CRYPTO_AUTHENC is not set 1357# CONFIG_CRYPTO_AUTHENC is not set
1236# CONFIG_CRYPTO_TEST is not set 1358# CONFIG_CRYPTO_TEST is not set
@@ -1258,11 +1380,13 @@ CONFIG_CRYPTO_PCBC=y
1258# 1380#
1259# CONFIG_CRYPTO_HMAC is not set 1381# CONFIG_CRYPTO_HMAC is not set
1260# CONFIG_CRYPTO_XCBC is not set 1382# CONFIG_CRYPTO_XCBC is not set
1383# CONFIG_CRYPTO_VMAC is not set
1261 1384
1262# 1385#
1263# Digest 1386# Digest
1264# 1387#
1265# CONFIG_CRYPTO_CRC32C is not set 1388# CONFIG_CRYPTO_CRC32C is not set
1389# CONFIG_CRYPTO_GHASH is not set
1266# CONFIG_CRYPTO_MD4 is not set 1390# CONFIG_CRYPTO_MD4 is not set
1267CONFIG_CRYPTO_MD5=y 1391CONFIG_CRYPTO_MD5=y
1268# CONFIG_CRYPTO_MICHAEL_MIC is not set 1392# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1299,6 +1423,7 @@ CONFIG_CRYPTO_DES=y
1299# Compression 1423# Compression
1300# 1424#
1301CONFIG_CRYPTO_DEFLATE=m 1425CONFIG_CRYPTO_DEFLATE=m
1426# CONFIG_CRYPTO_ZLIB is not set
1302CONFIG_CRYPTO_LZO=m 1427CONFIG_CRYPTO_LZO=m
1303 1428
1304# 1429#
@@ -1307,5 +1432,6 @@ CONFIG_CRYPTO_LZO=m
1307# CONFIG_CRYPTO_ANSI_CPRNG is not set 1432# CONFIG_CRYPTO_ANSI_CPRNG is not set
1308CONFIG_CRYPTO_HW=y 1433CONFIG_CRYPTO_HW=y
1309# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1434# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1435# CONFIG_CRYPTO_DEV_PPC4XX is not set
1310# CONFIG_PPC_CLOCK is not set 1436# CONFIG_PPC_CLOCK is not set
1311# CONFIG_VIRTUALIZATION is not set 1437# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/ppc44x_defconfig b/arch/powerpc/configs/ppc44x_defconfig
index 5e6d55f006bb..46f5c47e9f85 100644
--- a/arch/powerpc/configs/ppc44x_defconfig
+++ b/arch/powerpc/configs/ppc44x_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.29-rc2 3# Linux kernel version: 2.6.33-rc1
4# Fri Jan 23 08:43:46 2009 4# Mon Jan 4 13:42:17 2010
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#
11# CONFIG_6xx is not set 11# CONFIG_PPC_BOOK3S_32 is not set
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
@@ -20,6 +20,7 @@ CONFIG_BOOKE=y
20CONFIG_PTE_64BIT=y 20CONFIG_PTE_64BIT=y
21CONFIG_PHYS_64BIT=y 21CONFIG_PHYS_64BIT=y
22CONFIG_PPC_MMU_NOHASH=y 22CONFIG_PPC_MMU_NOHASH=y
23CONFIG_PPC_MMU_NOHASH_32=y
23# CONFIG_PPC_MM_SLICES is not set 24# CONFIG_PPC_MM_SLICES is not set
24CONFIG_NOT_COHERENT_CACHE=y 25CONFIG_NOT_COHERENT_CACHE=y
25CONFIG_PPC32=y 26CONFIG_PPC32=y
@@ -31,15 +32,18 @@ CONFIG_GENERIC_TIME=y
31CONFIG_GENERIC_TIME_VSYSCALL=y 32CONFIG_GENERIC_TIME_VSYSCALL=y
32CONFIG_GENERIC_CLOCKEVENTS=y 33CONFIG_GENERIC_CLOCKEVENTS=y
33CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
34# 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
35CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
36CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
37CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
38CONFIG_LOCKDEP_SUPPORT=y 43CONFIG_LOCKDEP_SUPPORT=y
39CONFIG_RWSEM_XCHGADD_ALGORITHM=y 44CONFIG_RWSEM_XCHGADD_ALGORITHM=y
40CONFIG_ARCH_HAS_ILOG2_U32=y 45CONFIG_ARCH_HAS_ILOG2_U32=y
41CONFIG_GENERIC_HWEIGHT=y 46CONFIG_GENERIC_HWEIGHT=y
42CONFIG_GENERIC_CALIBRATE_DELAY=y
43CONFIG_GENERIC_FIND_NEXT_BIT=y 47CONFIG_GENERIC_FIND_NEXT_BIT=y
44CONFIG_GENERIC_GPIO=y 48CONFIG_GENERIC_GPIO=y
45# CONFIG_ARCH_NO_VIRT_TO_BUS is not set 49# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
@@ -54,11 +58,15 @@ CONFIG_PPC_UDBG_16550=y
54# CONFIG_GENERIC_TBSYNC is not set 58# CONFIG_GENERIC_TBSYNC is not set
55CONFIG_AUDIT_ARCH=y 59CONFIG_AUDIT_ARCH=y
56CONFIG_GENERIC_BUG=y 60CONFIG_GENERIC_BUG=y
57# CONFIG_DEFAULT_UIMAGE is not set 61CONFIG_DTC=y
62CONFIG_DEFAULT_UIMAGE=y
63CONFIG_ARCH_HIBERNATION_POSSIBLE=y
58CONFIG_PPC_DCR_NATIVE=y 64CONFIG_PPC_DCR_NATIVE=y
59# CONFIG_PPC_DCR_MMIO is not set 65# CONFIG_PPC_DCR_MMIO is not set
60CONFIG_PPC_DCR=y 66CONFIG_PPC_DCR=y
67CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
61CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 68CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
69CONFIG_CONSTRUCTORS=y
62 70
63# 71#
64# General setup 72# General setup
@@ -72,9 +80,21 @@ CONFIG_SWAP=y
72CONFIG_SYSVIPC=y 80CONFIG_SYSVIPC=y
73CONFIG_SYSVIPC_SYSCTL=y 81CONFIG_SYSVIPC_SYSCTL=y
74CONFIG_POSIX_MQUEUE=y 82CONFIG_POSIX_MQUEUE=y
83CONFIG_POSIX_MQUEUE_SYSCTL=y
75# CONFIG_BSD_PROCESS_ACCT is not set 84# CONFIG_BSD_PROCESS_ACCT is not set
76# CONFIG_TASKSTATS is not set 85# CONFIG_TASKSTATS is not set
77# 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_TINY_RCU is not set
94# CONFIG_RCU_TRACE is not set
95CONFIG_RCU_FANOUT=32
96# CONFIG_RCU_FANOUT_EXACT is not set
97# CONFIG_TREE_RCU_TRACE is not set
78# CONFIG_IKCONFIG is not set 98# CONFIG_IKCONFIG is not set
79CONFIG_LOG_BUF_SHIFT=14 99CONFIG_LOG_BUF_SHIFT=14
80CONFIG_GROUP_SCHED=y 100CONFIG_GROUP_SCHED=y
@@ -89,31 +109,40 @@ CONFIG_SYSFS_DEPRECATED_V2=y
89# CONFIG_NAMESPACES is not set 109# CONFIG_NAMESPACES is not set
90CONFIG_BLK_DEV_INITRD=y 110CONFIG_BLK_DEV_INITRD=y
91CONFIG_INITRAMFS_SOURCE="" 111CONFIG_INITRAMFS_SOURCE=""
112CONFIG_RD_GZIP=y
113# CONFIG_RD_BZIP2 is not set
114# CONFIG_RD_LZMA is not set
92# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 115# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
93CONFIG_SYSCTL=y 116CONFIG_SYSCTL=y
117CONFIG_ANON_INODES=y
94CONFIG_EMBEDDED=y 118CONFIG_EMBEDDED=y
95CONFIG_SYSCTL_SYSCALL=y 119CONFIG_SYSCTL_SYSCALL=y
96CONFIG_KALLSYMS=y 120CONFIG_KALLSYMS=y
97CONFIG_KALLSYMS_ALL=y 121CONFIG_KALLSYMS_ALL=y
98CONFIG_KALLSYMS_STRIP_GENERATED=y
99CONFIG_KALLSYMS_EXTRA_PASS=y 122CONFIG_KALLSYMS_EXTRA_PASS=y
100CONFIG_HOTPLUG=y 123CONFIG_HOTPLUG=y
101CONFIG_PRINTK=y 124CONFIG_PRINTK=y
102CONFIG_BUG=y 125CONFIG_BUG=y
103CONFIG_ELF_CORE=y 126CONFIG_ELF_CORE=y
104CONFIG_COMPAT_BRK=y
105CONFIG_BASE_FULL=y 127CONFIG_BASE_FULL=y
106CONFIG_FUTEX=y 128CONFIG_FUTEX=y
107CONFIG_ANON_INODES=y
108CONFIG_EPOLL=y 129CONFIG_EPOLL=y
109CONFIG_SIGNALFD=y 130CONFIG_SIGNALFD=y
110CONFIG_TIMERFD=y 131CONFIG_TIMERFD=y
111CONFIG_EVENTFD=y 132CONFIG_EVENTFD=y
112CONFIG_SHMEM=y 133CONFIG_SHMEM=y
113CONFIG_AIO=y 134CONFIG_AIO=y
135CONFIG_HAVE_PERF_EVENTS=y
136
137#
138# Kernel Performance Events And Counters
139#
140# CONFIG_PERF_EVENTS is not set
141# CONFIG_PERF_COUNTERS is not set
114CONFIG_VM_EVENT_COUNTERS=y 142CONFIG_VM_EVENT_COUNTERS=y
115CONFIG_PCI_QUIRKS=y 143CONFIG_PCI_QUIRKS=y
116CONFIG_SLUB_DEBUG=y 144CONFIG_SLUB_DEBUG=y
145CONFIG_COMPAT_BRK=y
117# CONFIG_SLAB is not set 146# CONFIG_SLAB is not set
118CONFIG_SLUB=y 147CONFIG_SLUB=y
119# CONFIG_SLOB is not set 148# CONFIG_SLOB is not set
@@ -125,6 +154,13 @@ CONFIG_HAVE_IOREMAP_PROT=y
125CONFIG_HAVE_KPROBES=y 154CONFIG_HAVE_KPROBES=y
126CONFIG_HAVE_KRETPROBES=y 155CONFIG_HAVE_KRETPROBES=y
127CONFIG_HAVE_ARCH_TRACEHOOK=y 156CONFIG_HAVE_ARCH_TRACEHOOK=y
157CONFIG_HAVE_DMA_ATTRS=y
158CONFIG_HAVE_DMA_API_DEBUG=y
159
160#
161# GCOV-based kernel profiling
162#
163# CONFIG_SLOW_WORK is not set
128# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 164# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
129CONFIG_SLABINFO=y 165CONFIG_SLABINFO=y
130CONFIG_RT_MUTEXES=y 166CONFIG_RT_MUTEXES=y
@@ -136,8 +172,7 @@ CONFIG_MODULE_UNLOAD=y
136# CONFIG_MODVERSIONS is not set 172# CONFIG_MODVERSIONS is not set
137# CONFIG_MODULE_SRCVERSION_ALL is not set 173# CONFIG_MODULE_SRCVERSION_ALL is not set
138CONFIG_BLOCK=y 174CONFIG_BLOCK=y
139CONFIG_LBD=y 175CONFIG_LBDAF=y
140# CONFIG_BLK_DEV_IO_TRACE is not set
141# CONFIG_BLK_DEV_BSG is not set 176# CONFIG_BLK_DEV_BSG is not set
142# CONFIG_BLK_DEV_INTEGRITY is not set 177# CONFIG_BLK_DEV_INTEGRITY is not set
143 178
@@ -145,20 +180,42 @@ CONFIG_LBD=y
145# IO Schedulers 180# IO Schedulers
146# 181#
147CONFIG_IOSCHED_NOOP=y 182CONFIG_IOSCHED_NOOP=y
148CONFIG_IOSCHED_AS=y
149CONFIG_IOSCHED_DEADLINE=y 183CONFIG_IOSCHED_DEADLINE=y
150CONFIG_IOSCHED_CFQ=y 184CONFIG_IOSCHED_CFQ=y
151CONFIG_DEFAULT_AS=y
152# CONFIG_DEFAULT_DEADLINE is not set 185# CONFIG_DEFAULT_DEADLINE is not set
153# CONFIG_DEFAULT_CFQ is not set 186CONFIG_DEFAULT_CFQ=y
154# CONFIG_DEFAULT_NOOP is not set 187# CONFIG_DEFAULT_NOOP is not set
155CONFIG_DEFAULT_IOSCHED="anticipatory" 188CONFIG_DEFAULT_IOSCHED="cfq"
156CONFIG_PREEMPT_NOTIFIERS=y 189CONFIG_PREEMPT_NOTIFIERS=y
157CONFIG_CLASSIC_RCU=y 190# CONFIG_INLINE_SPIN_TRYLOCK is not set
158# CONFIG_TREE_RCU is not set 191# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
159# CONFIG_PREEMPT_RCU is not set 192# CONFIG_INLINE_SPIN_LOCK is not set
160# CONFIG_TREE_RCU_TRACE is not set 193# CONFIG_INLINE_SPIN_LOCK_BH is not set
161# CONFIG_PREEMPT_RCU_TRACE is not set 194# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
195# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
196CONFIG_INLINE_SPIN_UNLOCK=y
197# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
198CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
199# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
200# CONFIG_INLINE_READ_TRYLOCK is not set
201# CONFIG_INLINE_READ_LOCK is not set
202# CONFIG_INLINE_READ_LOCK_BH is not set
203# CONFIG_INLINE_READ_LOCK_IRQ is not set
204# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
205CONFIG_INLINE_READ_UNLOCK=y
206# CONFIG_INLINE_READ_UNLOCK_BH is not set
207CONFIG_INLINE_READ_UNLOCK_IRQ=y
208# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
209# CONFIG_INLINE_WRITE_TRYLOCK is not set
210# CONFIG_INLINE_WRITE_LOCK is not set
211# CONFIG_INLINE_WRITE_LOCK_BH is not set
212# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
213# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
214CONFIG_INLINE_WRITE_UNLOCK=y
215# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
216CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
217# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
218# CONFIG_MUTEX_SPIN_ON_OWNER is not set
162# CONFIG_FREEZER is not set 219# CONFIG_FREEZER is not set
163CONFIG_PPC4xx_PCI_EXPRESS=y 220CONFIG_PPC4xx_PCI_EXPRESS=y
164 221
@@ -179,8 +236,11 @@ CONFIG_WARP=y
179CONFIG_ARCHES=y 236CONFIG_ARCHES=y
180CONFIG_CANYONLANDS=y 237CONFIG_CANYONLANDS=y
181CONFIG_GLACIER=y 238CONFIG_GLACIER=y
239CONFIG_REDWOOD=y
240CONFIG_EIGER=y
182CONFIG_YOSEMITE=y 241CONFIG_YOSEMITE=y
183CONFIG_XILINX_VIRTEX440_GENERIC_BOARD=y 242CONFIG_XILINX_VIRTEX440_GENERIC_BOARD=y
243# CONFIG_XILINX_ML510 is not set
184CONFIG_PPC44x_SIMPLE=y 244CONFIG_PPC44x_SIMPLE=y
185CONFIG_PPC4xx_GPIO=y 245CONFIG_PPC4xx_GPIO=y
186CONFIG_440EP=y 246CONFIG_440EP=y
@@ -190,6 +250,7 @@ CONFIG_440GP=y
190CONFIG_440GX=y 250CONFIG_440GX=y
191CONFIG_440SPe=y 251CONFIG_440SPe=y
192CONFIG_460EX=y 252CONFIG_460EX=y
253CONFIG_460SX=y
193CONFIG_IBM440EP_ERR42=y 254CONFIG_IBM440EP_ERR42=y
194CONFIG_XILINX_VIRTEX=y 255CONFIG_XILINX_VIRTEX=y
195CONFIG_XILINX_VIRTEX_5_FXT=y 256CONFIG_XILINX_VIRTEX_5_FXT=y
@@ -207,6 +268,7 @@ CONFIG_XILINX_VIRTEX_5_FXT=y
207# CONFIG_FSL_ULI1575 is not set 268# CONFIG_FSL_ULI1575 is not set
208CONFIG_OF_RTC=y 269CONFIG_OF_RTC=y
209# CONFIG_SIMPLE_GPIO is not set 270# CONFIG_SIMPLE_GPIO is not set
271# CONFIG_XILINX_PCI is not set
210 272
211# 273#
212# Kernel options 274# Kernel options
@@ -230,10 +292,12 @@ CONFIG_BINFMT_ELF=y
230# CONFIG_BINFMT_MISC is not set 292# CONFIG_BINFMT_MISC is not set
231CONFIG_MATH_EMULATION=y 293CONFIG_MATH_EMULATION=y
232# CONFIG_IOMMU_HELPER is not set 294# CONFIG_IOMMU_HELPER is not set
233CONFIG_PPC_NEED_DMA_SYNC_OPS=y 295# CONFIG_SWIOTLB is not set
234CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 296CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
235CONFIG_ARCH_HAS_WALK_MEMORY=y 297CONFIG_ARCH_HAS_WALK_MEMORY=y
236CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 298CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
299CONFIG_SPARSE_IRQ=y
300CONFIG_MAX_ACTIVE_REGIONS=32
237CONFIG_ARCH_FLATMEM_ENABLE=y 301CONFIG_ARCH_FLATMEM_ENABLE=y
238CONFIG_ARCH_POPULATES_NODE_MAP=y 302CONFIG_ARCH_POPULATES_NODE_MAP=y
239CONFIG_SELECT_MEMORY_MODEL=y 303CONFIG_SELECT_MEMORY_MODEL=y
@@ -249,10 +313,13 @@ CONFIG_PHYS_ADDR_T_64BIT=y
249CONFIG_ZONE_DMA_FLAG=1 313CONFIG_ZONE_DMA_FLAG=1
250CONFIG_BOUNCE=y 314CONFIG_BOUNCE=y
251CONFIG_VIRT_TO_BUS=y 315CONFIG_VIRT_TO_BUS=y
252CONFIG_UNEVICTABLE_LRU=y 316# CONFIG_KSM is not set
317CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
318CONFIG_STDBINUTILS=y
253CONFIG_PPC_4K_PAGES=y 319CONFIG_PPC_4K_PAGES=y
254# CONFIG_PPC_16K_PAGES is not set 320# CONFIG_PPC_16K_PAGES is not set
255# CONFIG_PPC_64K_PAGES is not set 321# CONFIG_PPC_64K_PAGES is not set
322# CONFIG_PPC_256K_PAGES is not set
256CONFIG_FORCE_MAX_ZONEORDER=11 323CONFIG_FORCE_MAX_ZONEORDER=11
257CONFIG_PROC_DEVICETREE=y 324CONFIG_PROC_DEVICETREE=y
258# CONFIG_CMDLINE_BOOL is not set 325# CONFIG_CMDLINE_BOOL is not set
@@ -276,6 +343,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
276# CONFIG_PCI_LEGACY is not set 343# CONFIG_PCI_LEGACY is not set
277# CONFIG_PCI_DEBUG is not set 344# CONFIG_PCI_DEBUG is not set
278# CONFIG_PCI_STUB is not set 345# CONFIG_PCI_STUB is not set
346# CONFIG_PCI_IOV is not set
279# CONFIG_PCCARD is not set 347# CONFIG_PCCARD is not set
280# CONFIG_HOTPLUG_PCI is not set 348# CONFIG_HOTPLUG_PCI is not set
281# CONFIG_HAS_RAPIDIO is not set 349# CONFIG_HAS_RAPIDIO is not set
@@ -293,14 +361,12 @@ CONFIG_PAGE_OFFSET=0xc0000000
293CONFIG_KERNEL_START=0xc0000000 361CONFIG_KERNEL_START=0xc0000000
294CONFIG_PHYSICAL_START=0x00000000 362CONFIG_PHYSICAL_START=0x00000000
295CONFIG_TASK_SIZE=0xc0000000 363CONFIG_TASK_SIZE=0xc0000000
296CONFIG_CONSISTENT_START=0xff100000
297CONFIG_CONSISTENT_SIZE=0x00200000 364CONFIG_CONSISTENT_SIZE=0x00200000
298CONFIG_NET=y 365CONFIG_NET=y
299 366
300# 367#
301# Networking options 368# Networking options
302# 369#
303CONFIG_COMPAT_NET_DEV_OPS=y
304CONFIG_PACKET=y 370CONFIG_PACKET=y
305# CONFIG_PACKET_MMAP is not set 371# CONFIG_PACKET_MMAP is not set
306CONFIG_UNIX=y 372CONFIG_UNIX=y
@@ -352,6 +418,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m
352CONFIG_INET6_XFRM_MODE_BEET=m 418CONFIG_INET6_XFRM_MODE_BEET=m
353# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 419# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
354CONFIG_IPV6_SIT=m 420CONFIG_IPV6_SIT=m
421# CONFIG_IPV6_SIT_6RD is not set
355CONFIG_IPV6_NDISC_NODETYPE=y 422CONFIG_IPV6_NDISC_NODETYPE=y
356# CONFIG_IPV6_TUNNEL is not set 423# CONFIG_IPV6_TUNNEL is not set
357# CONFIG_IPV6_MULTIPLE_TABLES is not set 424# CONFIG_IPV6_MULTIPLE_TABLES is not set
@@ -360,6 +427,7 @@ CONFIG_IPV6_NDISC_NODETYPE=y
360# CONFIG_NETFILTER is not set 427# CONFIG_NETFILTER is not set
361# CONFIG_IP_DCCP is not set 428# CONFIG_IP_DCCP is not set
362# CONFIG_IP_SCTP is not set 429# CONFIG_IP_SCTP is not set
430# CONFIG_RDS is not set
363# CONFIG_TIPC is not set 431# CONFIG_TIPC is not set
364# CONFIG_ATM is not set 432# CONFIG_ATM is not set
365CONFIG_STP=m 433CONFIG_STP=m
@@ -375,6 +443,8 @@ CONFIG_LLC=m
375# CONFIG_LAPB is not set 443# CONFIG_LAPB is not set
376# CONFIG_ECONET is not set 444# CONFIG_ECONET is not set
377# CONFIG_WAN_ROUTER is not set 445# CONFIG_WAN_ROUTER is not set
446# CONFIG_PHONET is not set
447# CONFIG_IEEE802154 is not set
378# CONFIG_NET_SCHED is not set 448# CONFIG_NET_SCHED is not set
379# CONFIG_DCB is not set 449# CONFIG_DCB is not set
380 450
@@ -387,8 +457,13 @@ CONFIG_LLC=m
387# CONFIG_IRDA is not set 457# CONFIG_IRDA is not set
388# CONFIG_BT is not set 458# CONFIG_BT is not set
389# CONFIG_AF_RXRPC is not set 459# CONFIG_AF_RXRPC is not set
390# CONFIG_PHONET is not set 460CONFIG_WIRELESS=y
391# CONFIG_WIRELESS is not set 461# CONFIG_CFG80211 is not set
462# CONFIG_LIB80211 is not set
463
464#
465# CFG80211 needs to be enabled for MAC80211
466#
392# CONFIG_WIMAX is not set 467# CONFIG_WIMAX is not set
393# CONFIG_RFKILL is not set 468# CONFIG_RFKILL is not set
394# CONFIG_NET_9P is not set 469# CONFIG_NET_9P is not set
@@ -401,6 +476,7 @@ CONFIG_LLC=m
401# Generic Driver Options 476# Generic Driver Options
402# 477#
403CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 478CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
479# CONFIG_DEVTMPFS is not set
404CONFIG_STANDALONE=y 480CONFIG_STANDALONE=y
405CONFIG_PREVENT_FIRMWARE_BUILD=y 481CONFIG_PREVENT_FIRMWARE_BUILD=y
406CONFIG_FW_LOADER=y 482CONFIG_FW_LOADER=y
@@ -413,9 +489,9 @@ CONFIG_CONNECTOR=y
413CONFIG_PROC_EVENTS=y 489CONFIG_PROC_EVENTS=y
414CONFIG_MTD=y 490CONFIG_MTD=y
415# CONFIG_MTD_DEBUG is not set 491# CONFIG_MTD_DEBUG is not set
492# CONFIG_MTD_TESTS is not set
416# CONFIG_MTD_CONCAT is not set 493# CONFIG_MTD_CONCAT is not set
417CONFIG_MTD_PARTITIONS=y 494CONFIG_MTD_PARTITIONS=y
418# CONFIG_MTD_TESTS is not set
419# CONFIG_MTD_REDBOOT_PARTS is not set 495# CONFIG_MTD_REDBOOT_PARTS is not set
420# CONFIG_MTD_CMDLINE_PARTS is not set 496# CONFIG_MTD_CMDLINE_PARTS is not set
421CONFIG_MTD_OF_PARTS=y 497CONFIG_MTD_OF_PARTS=y
@@ -490,7 +566,6 @@ CONFIG_MTD_PHYSMAP_OF=y
490# LPDDR flash memory drivers 566# LPDDR flash memory drivers
491# 567#
492# CONFIG_MTD_LPDDR is not set 568# CONFIG_MTD_LPDDR is not set
493# CONFIG_MTD_QINFO_PROBE is not set
494 569
495# 570#
496# UBI - Unsorted block images 571# UBI - Unsorted block images
@@ -498,7 +573,7 @@ CONFIG_MTD_PHYSMAP_OF=y
498CONFIG_MTD_UBI=m 573CONFIG_MTD_UBI=m
499CONFIG_MTD_UBI_WL_THRESHOLD=4096 574CONFIG_MTD_UBI_WL_THRESHOLD=4096
500CONFIG_MTD_UBI_BEB_RESERVE=1 575CONFIG_MTD_UBI_BEB_RESERVE=1
501CONFIG_MTD_UBI_GLUEBI=y 576CONFIG_MTD_UBI_GLUEBI=m
502 577
503# 578#
504# UBI debugging options 579# UBI debugging options
@@ -516,6 +591,7 @@ CONFIG_BLK_DEV=y
516# CONFIG_BLK_DEV_UMEM is not set 591# CONFIG_BLK_DEV_UMEM is not set
517# CONFIG_BLK_DEV_COW_COMMON is not set 592# CONFIG_BLK_DEV_COW_COMMON is not set
518# CONFIG_BLK_DEV_LOOP is not set 593# CONFIG_BLK_DEV_LOOP is not set
594# CONFIG_BLK_DEV_DRBD is not set
519# CONFIG_BLK_DEV_NBD is not set 595# CONFIG_BLK_DEV_NBD is not set
520# CONFIG_BLK_DEV_SX8 is not set 596# CONFIG_BLK_DEV_SX8 is not set
521# CONFIG_BLK_DEV_UB is not set 597# CONFIG_BLK_DEV_UB is not set
@@ -528,14 +604,25 @@ CONFIG_BLK_DEV_RAM_SIZE=35000
528CONFIG_XILINX_SYSACE=m 604CONFIG_XILINX_SYSACE=m
529# CONFIG_BLK_DEV_HD is not set 605# CONFIG_BLK_DEV_HD is not set
530CONFIG_MISC_DEVICES=y 606CONFIG_MISC_DEVICES=y
607# CONFIG_AD525X_DPOT is not set
531# CONFIG_PHANTOM is not set 608# CONFIG_PHANTOM is not set
532# CONFIG_EEPROM_93CX6 is not set
533# CONFIG_SGI_IOC4 is not set 609# CONFIG_SGI_IOC4 is not set
534# CONFIG_TIFM_CORE is not set 610# CONFIG_TIFM_CORE is not set
535# CONFIG_ICS932S401 is not set 611# CONFIG_ICS932S401 is not set
536# CONFIG_ENCLOSURE_SERVICES is not set 612# CONFIG_ENCLOSURE_SERVICES is not set
537# CONFIG_HP_ILO is not set 613# CONFIG_HP_ILO is not set
614# CONFIG_ISL29003 is not set
615# CONFIG_DS1682 is not set
538# CONFIG_C2PORT is not set 616# CONFIG_C2PORT is not set
617
618#
619# EEPROM support
620#
621# CONFIG_EEPROM_AT24 is not set
622# CONFIG_EEPROM_LEGACY is not set
623# CONFIG_EEPROM_MAX6875 is not set
624# CONFIG_EEPROM_93CX6 is not set
625# CONFIG_CB710_CORE is not set
539CONFIG_HAVE_IDE=y 626CONFIG_HAVE_IDE=y
540# CONFIG_IDE is not set 627# CONFIG_IDE is not set
541 628
@@ -558,10 +645,6 @@ CONFIG_BLK_DEV_SD=m
558# CONFIG_BLK_DEV_SR is not set 645# CONFIG_BLK_DEV_SR is not set
559# CONFIG_CHR_DEV_SG is not set 646# CONFIG_CHR_DEV_SG is not set
560# CONFIG_CHR_DEV_SCH is not set 647# CONFIG_CHR_DEV_SCH is not set
561
562#
563# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
564#
565# CONFIG_SCSI_MULTI_LUN is not set 648# CONFIG_SCSI_MULTI_LUN is not set
566# CONFIG_SCSI_CONSTANTS is not set 649# CONFIG_SCSI_CONSTANTS is not set
567# CONFIG_SCSI_LOGGING is not set 650# CONFIG_SCSI_LOGGING is not set
@@ -578,6 +661,7 @@ CONFIG_SCSI_WAIT_SCAN=m
578# CONFIG_SCSI_SRP_ATTRS is not set 661# CONFIG_SCSI_SRP_ATTRS is not set
579# CONFIG_SCSI_LOWLEVEL is not set 662# CONFIG_SCSI_LOWLEVEL is not set
580# CONFIG_SCSI_DH is not set 663# CONFIG_SCSI_DH is not set
664# CONFIG_SCSI_OSD_INITIATOR is not set
581# CONFIG_ATA is not set 665# CONFIG_ATA is not set
582# CONFIG_MD is not set 666# CONFIG_MD is not set
583# CONFIG_FUSION is not set 667# CONFIG_FUSION is not set
@@ -587,7 +671,11 @@ CONFIG_SCSI_WAIT_SCAN=m
587# 671#
588 672
589# 673#
590# Enable only one of the two stacks, unless you know what you are doing 674# You can enable one or both FireWire driver stacks.
675#
676
677#
678# See the help texts for more information.
591# 679#
592# CONFIG_FIREWIRE is not set 680# CONFIG_FIREWIRE is not set
593# CONFIG_IEEE1394 is not set 681# CONFIG_IEEE1394 is not set
@@ -608,6 +696,8 @@ CONFIG_NET_ETHERNET=y
608# CONFIG_SUNGEM is not set 696# CONFIG_SUNGEM is not set
609# CONFIG_CASSINI is not set 697# CONFIG_CASSINI is not set
610# CONFIG_NET_VENDOR_3COM is not set 698# CONFIG_NET_VENDOR_3COM is not set
699# CONFIG_ETHOC is not set
700# CONFIG_DNET is not set
611# CONFIG_NET_TULIP is not set 701# CONFIG_NET_TULIP is not set
612# CONFIG_HP100 is not set 702# CONFIG_HP100 is not set
613CONFIG_IBM_NEW_EMAC=y 703CONFIG_IBM_NEW_EMAC=y
@@ -626,7 +716,10 @@ CONFIG_IBM_NEW_EMAC_EMAC4=y
626# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 716# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
627# CONFIG_NET_PCI is not set 717# CONFIG_NET_PCI is not set
628# CONFIG_B44 is not set 718# CONFIG_B44 is not set
719# CONFIG_KS8842 is not set
720# CONFIG_KS8851_MLL is not set
629# CONFIG_ATL2 is not set 721# CONFIG_ATL2 is not set
722# CONFIG_XILINX_EMACLITE is not set
630CONFIG_NETDEV_1000=y 723CONFIG_NETDEV_1000=y
631# CONFIG_ACENIC is not set 724# CONFIG_ACENIC is not set
632# CONFIG_DL2K is not set 725# CONFIG_DL2K is not set
@@ -634,6 +727,7 @@ CONFIG_NETDEV_1000=y
634# CONFIG_E1000E is not set 727# CONFIG_E1000E is not set
635# CONFIG_IP1000 is not set 728# CONFIG_IP1000 is not set
636# CONFIG_IGB is not set 729# CONFIG_IGB is not set
730# CONFIG_IGBVF is not set
637# CONFIG_NS83820 is not set 731# CONFIG_NS83820 is not set
638# CONFIG_HAMACHI is not set 732# CONFIG_HAMACHI is not set
639# CONFIG_YELLOWFIN is not set 733# CONFIG_YELLOWFIN is not set
@@ -644,9 +738,13 @@ CONFIG_NETDEV_1000=y
644# CONFIG_VIA_VELOCITY is not set 738# CONFIG_VIA_VELOCITY is not set
645# CONFIG_TIGON3 is not set 739# CONFIG_TIGON3 is not set
646# CONFIG_BNX2 is not set 740# CONFIG_BNX2 is not set
741# CONFIG_CNIC is not set
742# CONFIG_MV643XX_ETH is not set
743# CONFIG_XILINX_LL_TEMAC is not set
647# CONFIG_QLA3XXX is not set 744# CONFIG_QLA3XXX is not set
648# CONFIG_ATL1 is not set 745# CONFIG_ATL1 is not set
649# CONFIG_ATL1E is not set 746# CONFIG_ATL1E is not set
747# CONFIG_ATL1C is not set
650# CONFIG_JME is not set 748# CONFIG_JME is not set
651CONFIG_NETDEV_10000=y 749CONFIG_NETDEV_10000=y
652# CONFIG_CHELSIO_T1 is not set 750# CONFIG_CHELSIO_T1 is not set
@@ -656,6 +754,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
656# CONFIG_IXGBE is not set 754# CONFIG_IXGBE is not set
657# CONFIG_IXGB is not set 755# CONFIG_IXGB is not set
658# CONFIG_S2IO is not set 756# CONFIG_S2IO is not set
757# CONFIG_VXGE is not set
659# CONFIG_MYRI10GE is not set 758# CONFIG_MYRI10GE is not set
660# CONFIG_NETXEN_NIC is not set 759# CONFIG_NETXEN_NIC is not set
661# CONFIG_NIU is not set 760# CONFIG_NIU is not set
@@ -665,14 +764,14 @@ CONFIG_CHELSIO_T3_DEPENDS=y
665# CONFIG_BNX2X is not set 764# CONFIG_BNX2X is not set
666# CONFIG_QLGE is not set 765# CONFIG_QLGE is not set
667# CONFIG_SFC is not set 766# CONFIG_SFC is not set
767# CONFIG_BE2NET is not set
668# CONFIG_TR is not set 768# CONFIG_TR is not set
669 769CONFIG_WLAN=y
670# 770# CONFIG_AIRO is not set
671# Wireless LAN 771# CONFIG_ATMEL is not set
672# 772# CONFIG_PRISM54 is not set
673# CONFIG_WLAN_PRE80211 is not set 773# CONFIG_USB_ZD1201 is not set
674# CONFIG_WLAN_80211 is not set 774# CONFIG_HOSTAP is not set
675# CONFIG_IWLWIFI_LEDS is not set
676 775
677# 776#
678# Enable WiMAX (Networking options) to see the WiMAX drivers 777# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -695,6 +794,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
695# CONFIG_NETCONSOLE is not set 794# CONFIG_NETCONSOLE is not set
696# CONFIG_NETPOLL is not set 795# CONFIG_NETPOLL is not set
697# CONFIG_NET_POLL_CONTROLLER is not set 796# CONFIG_NET_POLL_CONTROLLER is not set
797# CONFIG_VMXNET3 is not set
698# CONFIG_ISDN is not set 798# CONFIG_ISDN is not set
699# CONFIG_PHONE is not set 799# CONFIG_PHONE is not set
700 800
@@ -713,6 +813,7 @@ CONFIG_SERIO=m
713# CONFIG_SERIO_LIBPS2 is not set 813# CONFIG_SERIO_LIBPS2 is not set
714# CONFIG_SERIO_RAW is not set 814# CONFIG_SERIO_RAW is not set
715CONFIG_SERIO_XILINX_XPS_PS2=m 815CONFIG_SERIO_XILINX_XPS_PS2=m
816# CONFIG_SERIO_ALTERA_PS2 is not set
716# CONFIG_GAMEPORT is not set 817# CONFIG_GAMEPORT is not set
717 818
718# 819#
@@ -747,6 +848,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
747# CONFIG_SERIAL_JSM is not set 848# CONFIG_SERIAL_JSM is not set
748CONFIG_SERIAL_OF_PLATFORM=y 849CONFIG_SERIAL_OF_PLATFORM=y
749# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set 850# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
851# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
750CONFIG_UNIX98_PTYS=y 852CONFIG_UNIX98_PTYS=y
751# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 853# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
752CONFIG_LEGACY_PTYS=y 854CONFIG_LEGACY_PTYS=y
@@ -764,6 +866,7 @@ CONFIG_XILINX_HWICAP=m
764CONFIG_DEVPORT=y 866CONFIG_DEVPORT=y
765CONFIG_I2C=m 867CONFIG_I2C=m
766CONFIG_I2C_BOARDINFO=y 868CONFIG_I2C_BOARDINFO=y
869CONFIG_I2C_COMPAT=y
767CONFIG_I2C_CHARDEV=m 870CONFIG_I2C_CHARDEV=m
768CONFIG_I2C_HELPER_AUTO=y 871CONFIG_I2C_HELPER_AUTO=y
769CONFIG_I2C_ALGOBIT=m 872CONFIG_I2C_ALGOBIT=m
@@ -807,11 +910,6 @@ CONFIG_I2C_IBM_IIC=m
807# CONFIG_I2C_TINY_USB is not set 910# CONFIG_I2C_TINY_USB is not set
808 911
809# 912#
810# Graphics adapter I2C/DDC channel drivers
811#
812# CONFIG_I2C_VOODOO3 is not set
813
814#
815# Other I2C/SMBus bus drivers 913# Other I2C/SMBus bus drivers
816# 914#
817# CONFIG_I2C_PCA_PLATFORM is not set 915# CONFIG_I2C_PCA_PLATFORM is not set
@@ -820,20 +918,17 @@ CONFIG_I2C_IBM_IIC=m
820# 918#
821# Miscellaneous I2C Chip support 919# Miscellaneous I2C Chip support
822# 920#
823# CONFIG_DS1682 is not set
824# CONFIG_EEPROM_AT24 is not set
825# CONFIG_EEPROM_LEGACY is not set
826# CONFIG_SENSORS_PCF8574 is not set
827# CONFIG_PCF8575 is not set
828# CONFIG_SENSORS_PCA9539 is not set
829# CONFIG_SENSORS_PCF8591 is not set
830# CONFIG_SENSORS_MAX6875 is not set
831# CONFIG_SENSORS_TSL2550 is not set 921# CONFIG_SENSORS_TSL2550 is not set
832# CONFIG_I2C_DEBUG_CORE is not set 922# CONFIG_I2C_DEBUG_CORE is not set
833# CONFIG_I2C_DEBUG_ALGO is not set 923# CONFIG_I2C_DEBUG_ALGO is not set
834# CONFIG_I2C_DEBUG_BUS is not set 924# CONFIG_I2C_DEBUG_BUS is not set
835# CONFIG_I2C_DEBUG_CHIP is not set 925# CONFIG_I2C_DEBUG_CHIP is not set
836# CONFIG_SPI is not set 926# CONFIG_SPI is not set
927
928#
929# PPS support
930#
931# CONFIG_PPS is not set
837CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 932CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
838CONFIG_ARCH_REQUIRE_GPIOLIB=y 933CONFIG_ARCH_REQUIRE_GPIOLIB=y
839CONFIG_GPIOLIB=y 934CONFIG_GPIOLIB=y
@@ -855,16 +950,21 @@ CONFIG_GPIO_XILINX=y
855# 950#
856# PCI GPIO expanders: 951# PCI GPIO expanders:
857# 952#
953# CONFIG_GPIO_CS5535 is not set
858# CONFIG_GPIO_BT8XX is not set 954# CONFIG_GPIO_BT8XX is not set
955# CONFIG_GPIO_LANGWELL is not set
859 956
860# 957#
861# SPI GPIO expanders: 958# SPI GPIO expanders:
862# 959#
960
961#
962# AC97 GPIO expanders:
963#
863# CONFIG_W1 is not set 964# CONFIG_W1 is not set
864# CONFIG_POWER_SUPPLY is not set 965# CONFIG_POWER_SUPPLY is not set
865# CONFIG_HWMON is not set 966# CONFIG_HWMON is not set
866# CONFIG_THERMAL is not set 967# CONFIG_THERMAL is not set
867# CONFIG_THERMAL_HWMON is not set
868# CONFIG_WATCHDOG is not set 968# CONFIG_WATCHDOG is not set
869CONFIG_SSB_POSSIBLE=y 969CONFIG_SSB_POSSIBLE=y
870 970
@@ -884,28 +984,15 @@ CONFIG_SSB_POSSIBLE=y
884# CONFIG_MFD_WM8400 is not set 984# CONFIG_MFD_WM8400 is not set
885# CONFIG_MFD_WM8350_I2C is not set 985# CONFIG_MFD_WM8350_I2C is not set
886# CONFIG_MFD_PCF50633 is not set 986# CONFIG_MFD_PCF50633 is not set
987# CONFIG_AB3100_CORE is not set
887# CONFIG_REGULATOR is not set 988# CONFIG_REGULATOR is not set
888 989# CONFIG_MEDIA_SUPPORT is not set
889#
890# Multimedia devices
891#
892
893#
894# Multimedia core support
895#
896# CONFIG_VIDEO_DEV is not set
897# CONFIG_DVB_CORE is not set
898# CONFIG_VIDEO_MEDIA is not set
899
900#
901# Multimedia drivers
902#
903# CONFIG_DAB is not set
904 990
905# 991#
906# Graphics support 992# Graphics support
907# 993#
908# CONFIG_AGP is not set 994# CONFIG_AGP is not set
995CONFIG_VGA_ARB=y
909# CONFIG_DRM is not set 996# CONFIG_DRM is not set
910# CONFIG_VGASTATE is not set 997# CONFIG_VGASTATE is not set
911# CONFIG_VIDEO_OUTPUT_CONTROL is not set 998# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -961,6 +1048,7 @@ CONFIG_FB_XILINX=m
961# CONFIG_FB_VIRTUAL is not set 1048# CONFIG_FB_VIRTUAL is not set
962# CONFIG_FB_METRONOME is not set 1049# CONFIG_FB_METRONOME is not set
963# CONFIG_FB_MB862XX is not set 1050# CONFIG_FB_MB862XX is not set
1051# CONFIG_FB_BROADSHEET is not set
964# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 1052# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
965 1053
966# 1054#
@@ -994,19 +1082,22 @@ CONFIG_USB_DEVICE_CLASS=y
994# USB Host Controller Drivers 1082# USB Host Controller Drivers
995# 1083#
996# CONFIG_USB_C67X00_HCD is not set 1084# CONFIG_USB_C67X00_HCD is not set
1085# CONFIG_USB_XHCI_HCD is not set
997CONFIG_USB_EHCI_HCD=m 1086CONFIG_USB_EHCI_HCD=m
998# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1087# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
999# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1088# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1000CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y 1089CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y
1001CONFIG_USB_EHCI_BIG_ENDIAN_DESC=y 1090CONFIG_USB_EHCI_BIG_ENDIAN_DESC=y
1091# CONFIG_XPS_USB_HCD_XILINX is not set
1002CONFIG_USB_EHCI_HCD_PPC_OF=y 1092CONFIG_USB_EHCI_HCD_PPC_OF=y
1003# CONFIG_USB_OXU210HP_HCD is not set 1093# CONFIG_USB_OXU210HP_HCD is not set
1004# CONFIG_USB_ISP116X_HCD is not set 1094# CONFIG_USB_ISP116X_HCD is not set
1005# CONFIG_USB_ISP1760_HCD is not set 1095# CONFIG_USB_ISP1760_HCD is not set
1096# CONFIG_USB_ISP1362_HCD is not set
1006CONFIG_USB_OHCI_HCD=m 1097CONFIG_USB_OHCI_HCD=m
1007CONFIG_USB_OHCI_HCD_PPC_OF=y
1008CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1098CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
1009# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set 1099# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
1100CONFIG_USB_OHCI_HCD_PPC_OF=y
1010# CONFIG_USB_OHCI_HCD_PCI is not set 1101# CONFIG_USB_OHCI_HCD_PCI is not set
1011CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y 1102CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
1012CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y 1103CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
@@ -1030,11 +1121,11 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1030# CONFIG_USB_TMC is not set 1121# CONFIG_USB_TMC is not set
1031 1122
1032# 1123#
1033# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 1124# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
1034# 1125#
1035 1126
1036# 1127#
1037# see USB_STORAGE Help for more information 1128# also be needed; see USB_STORAGE Help for more info
1038# 1129#
1039CONFIG_USB_STORAGE=m 1130CONFIG_USB_STORAGE=m
1040# CONFIG_USB_STORAGE_DEBUG is not set 1131# CONFIG_USB_STORAGE_DEBUG is not set
@@ -1075,7 +1166,6 @@ CONFIG_USB_STORAGE=m
1075# CONFIG_USB_LED is not set 1166# CONFIG_USB_LED is not set
1076# CONFIG_USB_CYPRESS_CY7C63 is not set 1167# CONFIG_USB_CYPRESS_CY7C63 is not set
1077# CONFIG_USB_CYTHERM is not set 1168# CONFIG_USB_CYTHERM is not set
1078# CONFIG_USB_PHIDGET is not set
1079# CONFIG_USB_IDMOUSE is not set 1169# CONFIG_USB_IDMOUSE is not set
1080# CONFIG_USB_FTDI_ELAN is not set 1170# CONFIG_USB_FTDI_ELAN is not set
1081# CONFIG_USB_APPLEDISPLAY is not set 1171# CONFIG_USB_APPLEDISPLAY is not set
@@ -1083,6 +1173,7 @@ CONFIG_USB_STORAGE=m
1083# CONFIG_USB_LD is not set 1173# CONFIG_USB_LD is not set
1084# CONFIG_USB_TRANCEVIBRATOR is not set 1174# CONFIG_USB_TRANCEVIBRATOR is not set
1085# CONFIG_USB_IOWARRIOR is not set 1175# CONFIG_USB_IOWARRIOR is not set
1176# CONFIG_USB_TEST is not set
1086# CONFIG_USB_ISIGHTFW is not set 1177# CONFIG_USB_ISIGHTFW is not set
1087# CONFIG_USB_VST is not set 1178# CONFIG_USB_VST is not set
1088# CONFIG_USB_GADGET is not set 1179# CONFIG_USB_GADGET is not set
@@ -1091,6 +1182,7 @@ CONFIG_USB_STORAGE=m
1091# OTG and related infrastructure 1182# OTG and related infrastructure
1092# 1183#
1093# CONFIG_USB_GPIO_VBUS is not set 1184# CONFIG_USB_GPIO_VBUS is not set
1185# CONFIG_NOP_USB_XCEIV is not set
1094# CONFIG_UWB is not set 1186# CONFIG_UWB is not set
1095# CONFIG_MMC is not set 1187# CONFIG_MMC is not set
1096# CONFIG_MEMSTICK is not set 1188# CONFIG_MEMSTICK is not set
@@ -1100,7 +1192,12 @@ CONFIG_USB_STORAGE=m
1100# CONFIG_EDAC is not set 1192# CONFIG_EDAC is not set
1101# CONFIG_RTC_CLASS is not set 1193# CONFIG_RTC_CLASS is not set
1102# CONFIG_DMADEVICES is not set 1194# CONFIG_DMADEVICES is not set
1195# CONFIG_AUXDISPLAY is not set
1103# CONFIG_UIO is not set 1196# CONFIG_UIO is not set
1197
1198#
1199# TI VLYNQ
1200#
1104# CONFIG_STAGING is not set 1201# CONFIG_STAGING is not set
1105 1202
1106# 1203#
@@ -1110,6 +1207,7 @@ CONFIG_EXT2_FS=y
1110# CONFIG_EXT2_FS_XATTR is not set 1207# CONFIG_EXT2_FS_XATTR is not set
1111# CONFIG_EXT2_FS_XIP is not set 1208# CONFIG_EXT2_FS_XIP is not set
1112CONFIG_EXT3_FS=m 1209CONFIG_EXT3_FS=m
1210# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
1113CONFIG_EXT3_FS_XATTR=y 1211CONFIG_EXT3_FS_XATTR=y
1114# CONFIG_EXT3_FS_POSIX_ACL is not set 1212# CONFIG_EXT3_FS_POSIX_ACL is not set
1115# CONFIG_EXT3_FS_SECURITY is not set 1213# CONFIG_EXT3_FS_SECURITY is not set
@@ -1119,11 +1217,13 @@ CONFIG_FS_MBCACHE=m
1119# CONFIG_REISERFS_FS is not set 1217# CONFIG_REISERFS_FS is not set
1120# CONFIG_JFS_FS is not set 1218# CONFIG_JFS_FS is not set
1121# CONFIG_FS_POSIX_ACL is not set 1219# CONFIG_FS_POSIX_ACL is not set
1122CONFIG_FILE_LOCKING=y
1123# CONFIG_XFS_FS is not set 1220# CONFIG_XFS_FS is not set
1124# CONFIG_GFS2_FS is not set 1221# CONFIG_GFS2_FS is not set
1125# CONFIG_OCFS2_FS is not set 1222# CONFIG_OCFS2_FS is not set
1126# CONFIG_BTRFS_FS is not set 1223# CONFIG_BTRFS_FS is not set
1224# CONFIG_NILFS2_FS is not set
1225CONFIG_FILE_LOCKING=y
1226CONFIG_FSNOTIFY=y
1127CONFIG_DNOTIFY=y 1227CONFIG_DNOTIFY=y
1128CONFIG_INOTIFY=y 1228CONFIG_INOTIFY=y
1129CONFIG_INOTIFY_USER=y 1229CONFIG_INOTIFY_USER=y
@@ -1133,6 +1233,11 @@ CONFIG_INOTIFY_USER=y
1133# CONFIG_FUSE_FS is not set 1233# CONFIG_FUSE_FS is not set
1134 1234
1135# 1235#
1236# Caches
1237#
1238# CONFIG_FSCACHE is not set
1239
1240#
1136# CD-ROM/DVD Filesystems 1241# CD-ROM/DVD Filesystems
1137# 1242#
1138# CONFIG_ISO9660_FS is not set 1243# CONFIG_ISO9660_FS is not set
@@ -1206,7 +1311,6 @@ CONFIG_LOCKD=y
1206CONFIG_LOCKD_V4=y 1311CONFIG_LOCKD_V4=y
1207CONFIG_NFS_COMMON=y 1312CONFIG_NFS_COMMON=y
1208CONFIG_SUNRPC=y 1313CONFIG_SUNRPC=y
1209# CONFIG_SUNRPC_REGISTER_V4 is not set
1210# CONFIG_RPCSEC_GSS_KRB5 is not set 1314# CONFIG_RPCSEC_GSS_KRB5 is not set
1211# CONFIG_RPCSEC_GSS_SPKM3 is not set 1315# CONFIG_RPCSEC_GSS_SPKM3 is not set
1212# CONFIG_SMB_FS is not set 1316# CONFIG_SMB_FS is not set
@@ -1261,6 +1365,7 @@ CONFIG_NLS_ISO8859_1=m
1261# CONFIG_NLS_KOI8_U is not set 1365# CONFIG_NLS_KOI8_U is not set
1262# CONFIG_NLS_UTF8 is not set 1366# CONFIG_NLS_UTF8 is not set
1263# CONFIG_DLM is not set 1367# CONFIG_DLM is not set
1368# CONFIG_BINARY_PRINTF is not set
1264 1369
1265# 1370#
1266# Library routines 1371# Library routines
@@ -1278,11 +1383,13 @@ CONFIG_ZLIB_INFLATE=y
1278CONFIG_ZLIB_DEFLATE=y 1383CONFIG_ZLIB_DEFLATE=y
1279CONFIG_LZO_COMPRESS=m 1384CONFIG_LZO_COMPRESS=m
1280CONFIG_LZO_DECOMPRESS=m 1385CONFIG_LZO_DECOMPRESS=m
1281CONFIG_PLIST=y 1386CONFIG_DECOMPRESS_GZIP=y
1282CONFIG_HAS_IOMEM=y 1387CONFIG_HAS_IOMEM=y
1283CONFIG_HAS_IOPORT=y 1388CONFIG_HAS_IOPORT=y
1284CONFIG_HAS_DMA=y 1389CONFIG_HAS_DMA=y
1285CONFIG_HAVE_LMB=y 1390CONFIG_HAVE_LMB=y
1391CONFIG_NLATTR=y
1392CONFIG_GENERIC_ATOMIC64=y
1286 1393
1287# 1394#
1288# Kernel hacking 1395# Kernel hacking
@@ -1292,6 +1399,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1292CONFIG_ENABLE_MUST_CHECK=y 1399CONFIG_ENABLE_MUST_CHECK=y
1293CONFIG_FRAME_WARN=1024 1400CONFIG_FRAME_WARN=1024
1294CONFIG_MAGIC_SYSRQ=y 1401CONFIG_MAGIC_SYSRQ=y
1402# CONFIG_STRIP_ASM_SYMS is not set
1295# CONFIG_UNUSED_SYMBOLS is not set 1403# CONFIG_UNUSED_SYMBOLS is not set
1296# CONFIG_DEBUG_FS is not set 1404# CONFIG_DEBUG_FS is not set
1297# CONFIG_HEADERS_CHECK is not set 1405# CONFIG_HEADERS_CHECK is not set
@@ -1300,16 +1408,23 @@ CONFIG_DEBUG_KERNEL=y
1300CONFIG_DETECT_SOFTLOCKUP=y 1408CONFIG_DETECT_SOFTLOCKUP=y
1301# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1409# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1302CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1410CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1411CONFIG_DETECT_HUNG_TASK=y
1412# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1413CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1303CONFIG_SCHED_DEBUG=y 1414CONFIG_SCHED_DEBUG=y
1304# CONFIG_SCHEDSTATS is not set 1415# CONFIG_SCHEDSTATS is not set
1305# CONFIG_TIMER_STATS is not set 1416# CONFIG_TIMER_STATS is not set
1306# CONFIG_DEBUG_OBJECTS is not set 1417# CONFIG_DEBUG_OBJECTS is not set
1307# CONFIG_SLUB_DEBUG_ON is not set 1418# CONFIG_SLUB_DEBUG_ON is not set
1308# CONFIG_SLUB_STATS is not set 1419# CONFIG_SLUB_STATS is not set
1420# CONFIG_DEBUG_KMEMLEAK is not set
1309# CONFIG_DEBUG_RT_MUTEXES is not set 1421# CONFIG_DEBUG_RT_MUTEXES is not set
1310# CONFIG_RT_MUTEX_TESTER is not set 1422# CONFIG_RT_MUTEX_TESTER is not set
1311# CONFIG_DEBUG_SPINLOCK is not set 1423# CONFIG_DEBUG_SPINLOCK is not set
1312# CONFIG_DEBUG_MUTEXES is not set 1424# CONFIG_DEBUG_MUTEXES is not set
1425# CONFIG_DEBUG_LOCK_ALLOC is not set
1426# CONFIG_PROVE_LOCKING is not set
1427# CONFIG_LOCK_STAT is not set
1313# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1428# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1314# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1429# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1315# CONFIG_DEBUG_KOBJECT is not set 1430# CONFIG_DEBUG_KOBJECT is not set
@@ -1321,35 +1436,43 @@ CONFIG_DEBUG_BUGVERBOSE=y
1321# CONFIG_DEBUG_LIST is not set 1436# CONFIG_DEBUG_LIST is not set
1322# CONFIG_DEBUG_SG is not set 1437# CONFIG_DEBUG_SG is not set
1323# CONFIG_DEBUG_NOTIFIERS is not set 1438# CONFIG_DEBUG_NOTIFIERS is not set
1324# CONFIG_BOOT_PRINTK_DELAY is not set 1439# CONFIG_DEBUG_CREDENTIALS is not set
1325# CONFIG_RCU_TORTURE_TEST is not set 1440# CONFIG_RCU_TORTURE_TEST is not set
1326# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1441# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1327# CONFIG_BACKTRACE_SELF_TEST is not set 1442# CONFIG_BACKTRACE_SELF_TEST is not set
1328# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1443# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1444# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1329# CONFIG_FAULT_INJECTION is not set 1445# CONFIG_FAULT_INJECTION is not set
1330# CONFIG_LATENCYTOP is not set 1446# CONFIG_LATENCYTOP is not set
1331CONFIG_SYSCTL_SYSCALL_CHECK=y 1447CONFIG_SYSCTL_SYSCALL_CHECK=y
1448# CONFIG_DEBUG_PAGEALLOC is not set
1332CONFIG_HAVE_FUNCTION_TRACER=y 1449CONFIG_HAVE_FUNCTION_TRACER=y
1450CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1333CONFIG_HAVE_DYNAMIC_FTRACE=y 1451CONFIG_HAVE_DYNAMIC_FTRACE=y
1334CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1452CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1335 1453CONFIG_TRACING_SUPPORT=y
1336# 1454CONFIG_FTRACE=y
1337# Tracers
1338#
1339# CONFIG_FUNCTION_TRACER is not set 1455# CONFIG_FUNCTION_TRACER is not set
1456# CONFIG_IRQSOFF_TRACER is not set
1340# CONFIG_SCHED_TRACER is not set 1457# CONFIG_SCHED_TRACER is not set
1341# CONFIG_CONTEXT_SWITCH_TRACER is not set 1458# CONFIG_ENABLE_DEFAULT_TRACERS is not set
1342# CONFIG_BOOT_TRACER is not set 1459# CONFIG_BOOT_TRACER is not set
1343# CONFIG_TRACE_BRANCH_PROFILING is not set 1460CONFIG_BRANCH_PROFILE_NONE=y
1461# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1462# CONFIG_PROFILE_ALL_BRANCHES is not set
1344# CONFIG_STACK_TRACER is not set 1463# CONFIG_STACK_TRACER is not set
1345# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1464# CONFIG_KMEMTRACE is not set
1465# CONFIG_WORKQUEUE_TRACER is not set
1466# CONFIG_BLK_DEV_IO_TRACE is not set
1467# CONFIG_DMA_API_DEBUG is not set
1346# CONFIG_SAMPLES is not set 1468# CONFIG_SAMPLES is not set
1347CONFIG_HAVE_ARCH_KGDB=y 1469CONFIG_HAVE_ARCH_KGDB=y
1348# CONFIG_KGDB is not set 1470# CONFIG_KGDB is not set
1471# CONFIG_PPC_DISABLE_WERROR is not set
1472CONFIG_PPC_WERROR=y
1349CONFIG_PRINT_STACK_DEPTH=64 1473CONFIG_PRINT_STACK_DEPTH=64
1350# CONFIG_DEBUG_STACKOVERFLOW is not set 1474# CONFIG_DEBUG_STACKOVERFLOW is not set
1351# CONFIG_DEBUG_STACK_USAGE is not set 1475# CONFIG_DEBUG_STACK_USAGE is not set
1352# CONFIG_DEBUG_PAGEALLOC is not set
1353# CONFIG_CODE_PATCHING_SELFTEST is not set 1476# CONFIG_CODE_PATCHING_SELFTEST is not set
1354# CONFIG_FTR_FIXUP_SELFTEST is not set 1477# CONFIG_FTR_FIXUP_SELFTEST is not set
1355# CONFIG_MSI_BITMAP_SELFTEST is not set 1478# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -1363,13 +1486,16 @@ CONFIG_PRINT_STACK_DEPTH=64
1363# CONFIG_KEYS is not set 1486# CONFIG_KEYS is not set
1364# CONFIG_SECURITY is not set 1487# CONFIG_SECURITY is not set
1365# CONFIG_SECURITYFS is not set 1488# CONFIG_SECURITYFS is not set
1366# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1489# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1490# CONFIG_DEFAULT_SECURITY_SMACK is not set
1491# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1492CONFIG_DEFAULT_SECURITY_DAC=y
1493CONFIG_DEFAULT_SECURITY=""
1367CONFIG_CRYPTO=y 1494CONFIG_CRYPTO=y
1368 1495
1369# 1496#
1370# Crypto core or helper 1497# Crypto core or helper
1371# 1498#
1372# CONFIG_CRYPTO_FIPS is not set
1373CONFIG_CRYPTO_ALGAPI=y 1499CONFIG_CRYPTO_ALGAPI=y
1374CONFIG_CRYPTO_ALGAPI2=y 1500CONFIG_CRYPTO_ALGAPI2=y
1375CONFIG_CRYPTO_AEAD2=y 1501CONFIG_CRYPTO_AEAD2=y
@@ -1378,10 +1504,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
1378CONFIG_CRYPTO_HASH=y 1504CONFIG_CRYPTO_HASH=y
1379CONFIG_CRYPTO_HASH2=y 1505CONFIG_CRYPTO_HASH2=y
1380CONFIG_CRYPTO_RNG2=y 1506CONFIG_CRYPTO_RNG2=y
1507CONFIG_CRYPTO_PCOMP=y
1381CONFIG_CRYPTO_MANAGER=y 1508CONFIG_CRYPTO_MANAGER=y
1382CONFIG_CRYPTO_MANAGER2=y 1509CONFIG_CRYPTO_MANAGER2=y
1383# CONFIG_CRYPTO_GF128MUL is not set 1510# CONFIG_CRYPTO_GF128MUL is not set
1384# CONFIG_CRYPTO_NULL is not set 1511# CONFIG_CRYPTO_NULL is not set
1512CONFIG_CRYPTO_WORKQUEUE=y
1385# CONFIG_CRYPTO_CRYPTD is not set 1513# CONFIG_CRYPTO_CRYPTD is not set
1386# CONFIG_CRYPTO_AUTHENC is not set 1514# CONFIG_CRYPTO_AUTHENC is not set
1387# CONFIG_CRYPTO_TEST is not set 1515# CONFIG_CRYPTO_TEST is not set
@@ -1409,11 +1537,13 @@ CONFIG_CRYPTO_PCBC=y
1409# 1537#
1410# CONFIG_CRYPTO_HMAC is not set 1538# CONFIG_CRYPTO_HMAC is not set
1411# CONFIG_CRYPTO_XCBC is not set 1539# CONFIG_CRYPTO_XCBC is not set
1540# CONFIG_CRYPTO_VMAC is not set
1412 1541
1413# 1542#
1414# Digest 1543# Digest
1415# 1544#
1416# CONFIG_CRYPTO_CRC32C is not set 1545# CONFIG_CRYPTO_CRC32C is not set
1546# CONFIG_CRYPTO_GHASH is not set
1417# CONFIG_CRYPTO_MD4 is not set 1547# CONFIG_CRYPTO_MD4 is not set
1418CONFIG_CRYPTO_MD5=y 1548CONFIG_CRYPTO_MD5=y
1419# CONFIG_CRYPTO_MICHAEL_MIC is not set 1549# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1450,6 +1580,7 @@ CONFIG_CRYPTO_DES=y
1450# Compression 1580# Compression
1451# 1581#
1452CONFIG_CRYPTO_DEFLATE=m 1582CONFIG_CRYPTO_DEFLATE=m
1583# CONFIG_CRYPTO_ZLIB is not set
1453CONFIG_CRYPTO_LZO=m 1584CONFIG_CRYPTO_LZO=m
1454 1585
1455# 1586#
diff --git a/arch/powerpc/configs/pq2fads_defconfig b/arch/powerpc/configs/pq2fads_defconfig
index b7911216af78..5d06f2cb8e5e 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:17 2009 4# Wed Jan 6 09:24:11 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -36,6 +36,7 @@ CONFIG_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 37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
41CONFIG_TRACE_IRQFLAGS_SUPPORT=y 42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -59,6 +60,7 @@ CONFIG_AUDIT_ARCH=y
59CONFIG_GENERIC_BUG=y 60CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y 61CONFIG_DTC=y
61CONFIG_DEFAULT_UIMAGE=y 62CONFIG_DEFAULT_UIMAGE=y
63CONFIG_ARCH_HIBERNATION_POSSIBLE=y
62# CONFIG_PPC_DCR_NATIVE is not set 64# CONFIG_PPC_DCR_NATIVE is not set
63# CONFIG_PPC_DCR_MMIO is not set 65# CONFIG_PPC_DCR_MMIO is not set
64CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 66CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -85,6 +87,7 @@ CONFIG_SYSVIPC_SYSCTL=y
85# 87#
86CONFIG_TREE_RCU=y 88CONFIG_TREE_RCU=y
87# CONFIG_TREE_PREEMPT_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
90# CONFIG_TINY_RCU is not set
88# CONFIG_RCU_TRACE is not set 91# CONFIG_RCU_TRACE is not set
89CONFIG_RCU_FANOUT=32 92CONFIG_RCU_FANOUT=32
90# CONFIG_RCU_FANOUT_EXACT is not set 93# CONFIG_RCU_FANOUT_EXACT is not set
@@ -165,14 +168,41 @@ CONFIG_BLK_DEV_BSG=y
165# IO Schedulers 168# IO Schedulers
166# 169#
167CONFIG_IOSCHED_NOOP=y 170CONFIG_IOSCHED_NOOP=y
168CONFIG_IOSCHED_AS=y
169CONFIG_IOSCHED_DEADLINE=y 171CONFIG_IOSCHED_DEADLINE=y
170CONFIG_IOSCHED_CFQ=y 172CONFIG_IOSCHED_CFQ=y
171CONFIG_DEFAULT_AS=y
172# CONFIG_DEFAULT_DEADLINE is not set 173# CONFIG_DEFAULT_DEADLINE is not set
173# CONFIG_DEFAULT_CFQ is not set 174CONFIG_DEFAULT_CFQ=y
174# CONFIG_DEFAULT_NOOP is not set 175# CONFIG_DEFAULT_NOOP is not set
175CONFIG_DEFAULT_IOSCHED="anticipatory" 176CONFIG_DEFAULT_IOSCHED="cfq"
177# CONFIG_INLINE_SPIN_TRYLOCK is not set
178# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
179# CONFIG_INLINE_SPIN_LOCK is not set
180# CONFIG_INLINE_SPIN_LOCK_BH is not set
181# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
182# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
183CONFIG_INLINE_SPIN_UNLOCK=y
184# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
185CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
186# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
187# CONFIG_INLINE_READ_TRYLOCK is not set
188# CONFIG_INLINE_READ_LOCK is not set
189# CONFIG_INLINE_READ_LOCK_BH is not set
190# CONFIG_INLINE_READ_LOCK_IRQ is not set
191# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
192CONFIG_INLINE_READ_UNLOCK=y
193# CONFIG_INLINE_READ_UNLOCK_BH is not set
194CONFIG_INLINE_READ_UNLOCK_IRQ=y
195# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
196# CONFIG_INLINE_WRITE_TRYLOCK is not set
197# CONFIG_INLINE_WRITE_LOCK is not set
198# CONFIG_INLINE_WRITE_LOCK_BH is not set
199# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
200# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
201CONFIG_INLINE_WRITE_UNLOCK=y
202# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
203CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
204# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
205# CONFIG_MUTEX_SPIN_ON_OWNER is not set
176# CONFIG_FREEZER is not set 206# CONFIG_FREEZER is not set
177 207
178# 208#
@@ -243,6 +273,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
243CONFIG_ARCH_HAS_WALK_MEMORY=y 273CONFIG_ARCH_HAS_WALK_MEMORY=y
244CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 274CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
245# CONFIG_CRASH_DUMP is not set 275# CONFIG_CRASH_DUMP is not set
276CONFIG_SPARSE_IRQ=y
246CONFIG_MAX_ACTIVE_REGIONS=32 277CONFIG_MAX_ACTIVE_REGIONS=32
247CONFIG_ARCH_FLATMEM_ENABLE=y 278CONFIG_ARCH_FLATMEM_ENABLE=y
248CONFIG_ARCH_POPULATES_NODE_MAP=y 279CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -255,8 +286,6 @@ CONFIG_MIGRATION=y
255CONFIG_ZONE_DMA_FLAG=1 286CONFIG_ZONE_DMA_FLAG=1
256CONFIG_BOUNCE=y 287CONFIG_BOUNCE=y
257CONFIG_VIRT_TO_BUS=y 288CONFIG_VIRT_TO_BUS=y
258CONFIG_HAVE_MLOCK=y
259CONFIG_HAVE_MLOCKED_PAGE_BIT=y
260# CONFIG_KSM is not set 289# CONFIG_KSM is not set
261CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 290CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
262CONFIG_PPC_4K_PAGES=y 291CONFIG_PPC_4K_PAGES=y
@@ -407,9 +436,6 @@ CONFIG_NETFILTER_ADVANCED=y
407# CONFIG_BT is not set 436# CONFIG_BT is not set
408CONFIG_WIRELESS=y 437CONFIG_WIRELESS=y
409# CONFIG_CFG80211 is not set 438# CONFIG_CFG80211 is not set
410CONFIG_CFG80211_DEFAULT_PS_VALUE=0
411CONFIG_WIRELESS_OLD_REGULATORY=y
412# CONFIG_WIRELESS_EXT is not set
413# CONFIG_LIB80211 is not set 439# CONFIG_LIB80211 is not set
414 440
415# 441#
@@ -530,6 +556,10 @@ CONFIG_BLK_DEV=y
530# CONFIG_BLK_DEV_COW_COMMON is not set 556# CONFIG_BLK_DEV_COW_COMMON is not set
531CONFIG_BLK_DEV_LOOP=y 557CONFIG_BLK_DEV_LOOP=y
532# CONFIG_BLK_DEV_CRYPTOLOOP is not set 558# CONFIG_BLK_DEV_CRYPTOLOOP is not set
559
560#
561# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
562#
533# CONFIG_BLK_DEV_NBD is not set 563# CONFIG_BLK_DEV_NBD is not set
534# CONFIG_BLK_DEV_SX8 is not set 564# CONFIG_BLK_DEV_SX8 is not set
535# CONFIG_BLK_DEV_RAM is not set 565# CONFIG_BLK_DEV_RAM is not set
@@ -616,7 +646,7 @@ CONFIG_IDE_PROC_FS=y
616# 646#
617 647
618# 648#
619# See the help texts for more information. 649# The newer stack is recommended.
620# 650#
621# CONFIG_FIREWIRE is not set 651# CONFIG_FIREWIRE is not set
622# CONFIG_IEEE1394 is not set 652# CONFIG_IEEE1394 is not set
@@ -721,8 +751,9 @@ CONFIG_CHELSIO_T3_DEPENDS=y
721# CONFIG_BE2NET is not set 751# CONFIG_BE2NET is not set
722# CONFIG_TR is not set 752# CONFIG_TR is not set
723CONFIG_WLAN=y 753CONFIG_WLAN=y
724# CONFIG_WLAN_PRE80211 is not set 754# CONFIG_AIRO is not set
725# CONFIG_WLAN_80211 is not set 755# CONFIG_ATMEL is not set
756# CONFIG_HOSTAP is not set
726 757
727# 758#
728# Enable WiMAX (Networking options) to see the WiMAX drivers 759# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -739,6 +770,7 @@ CONFIG_PPP_DEFLATE=y
739CONFIG_SLHC=y 770CONFIG_SLHC=y
740# CONFIG_NETPOLL is not set 771# CONFIG_NETPOLL is not set
741# CONFIG_NET_POLL_CONTROLLER is not set 772# CONFIG_NET_POLL_CONTROLLER is not set
773# CONFIG_VMXNET3 is not set
742# CONFIG_ISDN is not set 774# CONFIG_ISDN is not set
743# CONFIG_PHONE is not set 775# CONFIG_PHONE is not set
744 776
@@ -748,6 +780,7 @@ CONFIG_SLHC=y
748CONFIG_INPUT=y 780CONFIG_INPUT=y
749# CONFIG_INPUT_FF_MEMLESS is not set 781# CONFIG_INPUT_FF_MEMLESS is not set
750# CONFIG_INPUT_POLLDEV is not set 782# CONFIG_INPUT_POLLDEV is not set
783# CONFIG_INPUT_SPARSEKMAP is not set
751 784
752# 785#
753# Userland interfaces 786# Userland interfaces
@@ -802,6 +835,7 @@ CONFIG_SERIO_SERPORT=y
802CONFIG_SERIO_LIBPS2=y 835CONFIG_SERIO_LIBPS2=y
803# CONFIG_SERIO_RAW is not set 836# CONFIG_SERIO_RAW is not set
804# CONFIG_SERIO_XILINX_XPS_PS2 is not set 837# CONFIG_SERIO_XILINX_XPS_PS2 is not set
838# CONFIG_SERIO_ALTERA_PS2 is not set
805# CONFIG_GAMEPORT is not set 839# CONFIG_GAMEPORT is not set
806 840
807# 841#
@@ -825,6 +859,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
825CONFIG_SERIAL_CPM=y 859CONFIG_SERIAL_CPM=y
826CONFIG_SERIAL_CPM_CONSOLE=y 860CONFIG_SERIAL_CPM_CONSOLE=y
827# CONFIG_SERIAL_JSM is not set 861# CONFIG_SERIAL_JSM is not set
862# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
828CONFIG_UNIX98_PTYS=y 863CONFIG_UNIX98_PTYS=y
829# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 864# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
830CONFIG_LEGACY_PTYS=y 865CONFIG_LEGACY_PTYS=y
@@ -861,6 +896,7 @@ CONFIG_GPIOLIB=y
861# 896#
862# PCI GPIO expanders: 897# PCI GPIO expanders:
863# 898#
899# CONFIG_GPIO_CS5535 is not set
864# CONFIG_GPIO_BT8XX is not set 900# CONFIG_GPIO_BT8XX is not set
865# CONFIG_GPIO_LANGWELL is not set 901# CONFIG_GPIO_LANGWELL is not set
866 902
@@ -955,10 +991,12 @@ CONFIG_USB_ETH_RNDIS=y
955# CONFIG_USB_ETH_EEM is not set 991# CONFIG_USB_ETH_EEM is not set
956# CONFIG_USB_GADGETFS is not set 992# CONFIG_USB_GADGETFS is not set
957# CONFIG_USB_FILE_STORAGE is not set 993# CONFIG_USB_FILE_STORAGE is not set
994# CONFIG_USB_MASS_STORAGE is not set
958# CONFIG_USB_G_SERIAL is not set 995# CONFIG_USB_G_SERIAL is not set
959# CONFIG_USB_MIDI_GADGET is not set 996# CONFIG_USB_MIDI_GADGET is not set
960# CONFIG_USB_G_PRINTER is not set 997# CONFIG_USB_G_PRINTER is not set
961# CONFIG_USB_CDC_COMPOSITE is not set 998# CONFIG_USB_CDC_COMPOSITE is not set
999# CONFIG_USB_G_MULTI is not set
962 1000
963# 1001#
964# OTG and related infrastructure 1002# OTG and related infrastructure
@@ -1248,7 +1286,11 @@ CONFIG_BDI_SWITCH=y
1248# CONFIG_KEYS is not set 1286# CONFIG_KEYS is not set
1249# CONFIG_SECURITY is not set 1287# CONFIG_SECURITY is not set
1250# CONFIG_SECURITYFS is not set 1288# CONFIG_SECURITYFS is not set
1251# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1289# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1290# CONFIG_DEFAULT_SECURITY_SMACK is not set
1291# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1292CONFIG_DEFAULT_SECURITY_DAC=y
1293CONFIG_DEFAULT_SECURITY=""
1252CONFIG_CRYPTO=y 1294CONFIG_CRYPTO=y
1253 1295
1254# 1296#
diff --git a/arch/powerpc/configs/prpmc2800_defconfig b/arch/powerpc/configs/prpmc2800_defconfig
index ef50ce45d50b..57ab5748a34d 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:18 2009 4# Wed Jan 6 09:24:12 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -38,6 +38,7 @@ CONFIG_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 39# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
40CONFIG_IRQ_PER_CPU=y 40CONFIG_IRQ_PER_CPU=y
41CONFIG_NR_IRQS=512
41CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
42CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
43CONFIG_TRACE_IRQFLAGS_SUPPORT=y 44CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -60,6 +61,7 @@ CONFIG_AUDIT_ARCH=y
60CONFIG_GENERIC_BUG=y 61CONFIG_GENERIC_BUG=y
61CONFIG_DTC=y 62CONFIG_DTC=y
62# CONFIG_DEFAULT_UIMAGE is not set 63# CONFIG_DEFAULT_UIMAGE is not set
64CONFIG_ARCH_HIBERNATION_POSSIBLE=y
63# CONFIG_PPC_DCR_NATIVE is not set 65# CONFIG_PPC_DCR_NATIVE is not set
64# CONFIG_PPC_DCR_MMIO is not set 66# CONFIG_PPC_DCR_MMIO is not set
65CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 67CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -88,6 +90,7 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
88# 90#
89CONFIG_TREE_RCU=y 91CONFIG_TREE_RCU=y
90# CONFIG_TREE_PREEMPT_RCU is not set 92# CONFIG_TREE_PREEMPT_RCU is not set
93# CONFIG_TINY_RCU is not set
91# CONFIG_RCU_TRACE is not set 94# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32 95CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set 96# CONFIG_RCU_FANOUT_EXACT is not set
@@ -175,14 +178,41 @@ CONFIG_LBDAF=y
175# IO Schedulers 178# IO Schedulers
176# 179#
177CONFIG_IOSCHED_NOOP=y 180CONFIG_IOSCHED_NOOP=y
178CONFIG_IOSCHED_AS=y
179# CONFIG_IOSCHED_DEADLINE is not set 181# CONFIG_IOSCHED_DEADLINE is not set
180# CONFIG_IOSCHED_CFQ is not set 182# CONFIG_IOSCHED_CFQ is not set
181CONFIG_DEFAULT_AS=y
182# CONFIG_DEFAULT_DEADLINE is not set 183# CONFIG_DEFAULT_DEADLINE is not set
183# CONFIG_DEFAULT_CFQ is not set 184# CONFIG_DEFAULT_CFQ is not set
184# CONFIG_DEFAULT_NOOP is not set 185CONFIG_DEFAULT_NOOP=y
185CONFIG_DEFAULT_IOSCHED="anticipatory" 186CONFIG_DEFAULT_IOSCHED="noop"
187# CONFIG_INLINE_SPIN_TRYLOCK is not set
188# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
189# CONFIG_INLINE_SPIN_LOCK is not set
190# CONFIG_INLINE_SPIN_LOCK_BH is not set
191# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
192# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
193CONFIG_INLINE_SPIN_UNLOCK=y
194# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
195CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
196# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
197# CONFIG_INLINE_READ_TRYLOCK is not set
198# CONFIG_INLINE_READ_LOCK is not set
199# CONFIG_INLINE_READ_LOCK_BH is not set
200# CONFIG_INLINE_READ_LOCK_IRQ is not set
201# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
202CONFIG_INLINE_READ_UNLOCK=y
203# CONFIG_INLINE_READ_UNLOCK_BH is not set
204CONFIG_INLINE_READ_UNLOCK_IRQ=y
205# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
206# CONFIG_INLINE_WRITE_TRYLOCK is not set
207# CONFIG_INLINE_WRITE_LOCK is not set
208# CONFIG_INLINE_WRITE_LOCK_BH is not set
209# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
210# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
211CONFIG_INLINE_WRITE_UNLOCK=y
212# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
213CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
214# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
215# CONFIG_MUTEX_SPIN_ON_OWNER is not set
186# CONFIG_FREEZER is not set 216# CONFIG_FREEZER is not set
187 217
188# 218#
@@ -207,6 +237,8 @@ CONFIG_EMBEDDED6xx=y
207CONFIG_PPC_PRPMC2800=y 237CONFIG_PPC_PRPMC2800=y
208# CONFIG_PPC_C2K is not set 238# CONFIG_PPC_C2K is not set
209CONFIG_MV64X60=y 239CONFIG_MV64X60=y
240# CONFIG_GAMECUBE is not set
241# CONFIG_WII is not set
210# CONFIG_AMIGAONE is not set 242# CONFIG_AMIGAONE is not set
211CONFIG_PPC_OF_BOOT_TRAMPOLINE=y 243CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
212# CONFIG_IPIC is not set 244# CONFIG_IPIC is not set
@@ -252,6 +284,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
252CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 284CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
253# CONFIG_KEXEC is not set 285# CONFIG_KEXEC is not set
254# CONFIG_CRASH_DUMP is not set 286# CONFIG_CRASH_DUMP is not set
287CONFIG_SPARSE_IRQ=y
255CONFIG_MAX_ACTIVE_REGIONS=32 288CONFIG_MAX_ACTIVE_REGIONS=32
256CONFIG_ARCH_FLATMEM_ENABLE=y 289CONFIG_ARCH_FLATMEM_ENABLE=y
257CONFIG_ARCH_POPULATES_NODE_MAP=y 290CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -268,8 +301,6 @@ CONFIG_MIGRATION=y
268CONFIG_ZONE_DMA_FLAG=1 301CONFIG_ZONE_DMA_FLAG=1
269CONFIG_BOUNCE=y 302CONFIG_BOUNCE=y
270CONFIG_VIRT_TO_BUS=y 303CONFIG_VIRT_TO_BUS=y
271CONFIG_HAVE_MLOCK=y
272CONFIG_HAVE_MLOCKED_PAGE_BIT=y
273# CONFIG_KSM is not set 304# CONFIG_KSM is not set
274CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 305CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
275CONFIG_PPC_4K_PAGES=y 306CONFIG_PPC_4K_PAGES=y
@@ -394,9 +425,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
394# CONFIG_AF_RXRPC is not set 425# CONFIG_AF_RXRPC is not set
395CONFIG_WIRELESS=y 426CONFIG_WIRELESS=y
396# CONFIG_CFG80211 is not set 427# CONFIG_CFG80211 is not set
397CONFIG_CFG80211_DEFAULT_PS_VALUE=0
398CONFIG_WIRELESS_OLD_REGULATORY=y
399# CONFIG_WIRELESS_EXT is not set
400# CONFIG_LIB80211 is not set 428# CONFIG_LIB80211 is not set
401 429
402# 430#
@@ -518,6 +546,10 @@ CONFIG_BLK_DEV=y
518# CONFIG_BLK_DEV_COW_COMMON is not set 546# CONFIG_BLK_DEV_COW_COMMON is not set
519CONFIG_BLK_DEV_LOOP=y 547CONFIG_BLK_DEV_LOOP=y
520# CONFIG_BLK_DEV_CRYPTOLOOP is not set 548# CONFIG_BLK_DEV_CRYPTOLOOP is not set
549
550#
551# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
552#
521# CONFIG_BLK_DEV_NBD is not set 553# CONFIG_BLK_DEV_NBD is not set
522# CONFIG_BLK_DEV_SX8 is not set 554# CONFIG_BLK_DEV_SX8 is not set
523# CONFIG_BLK_DEV_UB is not set 555# CONFIG_BLK_DEV_UB is not set
@@ -529,6 +561,7 @@ CONFIG_BLK_DEV_RAM_SIZE=131072
529# CONFIG_ATA_OVER_ETH is not set 561# CONFIG_ATA_OVER_ETH is not set
530# CONFIG_BLK_DEV_HD is not set 562# CONFIG_BLK_DEV_HD is not set
531CONFIG_MISC_DEVICES=y 563CONFIG_MISC_DEVICES=y
564# CONFIG_AD525X_DPOT is not set
532# CONFIG_PHANTOM is not set 565# CONFIG_PHANTOM is not set
533# CONFIG_SGI_IOC4 is not set 566# CONFIG_SGI_IOC4 is not set
534# CONFIG_TIFM_CORE is not set 567# CONFIG_TIFM_CORE is not set
@@ -536,6 +569,7 @@ CONFIG_MISC_DEVICES=y
536# CONFIG_ENCLOSURE_SERVICES is not set 569# CONFIG_ENCLOSURE_SERVICES is not set
537# CONFIG_HP_ILO is not set 570# CONFIG_HP_ILO is not set
538# CONFIG_ISL29003 is not set 571# CONFIG_ISL29003 is not set
572# CONFIG_DS1682 is not set
539# CONFIG_C2PORT is not set 573# CONFIG_C2PORT is not set
540 574
541# 575#
@@ -641,7 +675,9 @@ CONFIG_SCSI_LOWLEVEL=y
641# CONFIG_SCSI_BNX2_ISCSI is not set 675# CONFIG_SCSI_BNX2_ISCSI is not set
642# CONFIG_BE2ISCSI is not set 676# CONFIG_BE2ISCSI is not set
643# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 677# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
678# CONFIG_SCSI_HPSA is not set
644# CONFIG_SCSI_3W_9XXX is not set 679# CONFIG_SCSI_3W_9XXX is not set
680# CONFIG_SCSI_3W_SAS is not set
645# CONFIG_SCSI_ACARD is not set 681# CONFIG_SCSI_ACARD is not set
646# CONFIG_SCSI_AACRAID is not set 682# CONFIG_SCSI_AACRAID is not set
647# CONFIG_SCSI_AIC7XXX is not set 683# CONFIG_SCSI_AIC7XXX is not set
@@ -680,6 +716,7 @@ CONFIG_SCSI_LOWLEVEL=y
680# CONFIG_SCSI_NSP32 is not set 716# CONFIG_SCSI_NSP32 is not set
681# CONFIG_SCSI_DEBUG is not set 717# CONFIG_SCSI_DEBUG is not set
682# CONFIG_SCSI_PMCRAID is not set 718# CONFIG_SCSI_PMCRAID is not set
719# CONFIG_SCSI_PM8001 is not set
683# CONFIG_SCSI_SRP is not set 720# CONFIG_SCSI_SRP is not set
684# CONFIG_SCSI_BFA_FC is not set 721# CONFIG_SCSI_BFA_FC is not set
685# CONFIG_SCSI_DH is not set 722# CONFIG_SCSI_DH is not set
@@ -734,15 +771,16 @@ CONFIG_SATA_MV=y
734# CONFIG_PATA_NS87415 is not set 771# CONFIG_PATA_NS87415 is not set
735# CONFIG_PATA_OPTI is not set 772# CONFIG_PATA_OPTI is not set
736# CONFIG_PATA_OPTIDMA is not set 773# CONFIG_PATA_OPTIDMA is not set
774# CONFIG_PATA_PDC2027X is not set
737# CONFIG_PATA_PDC_OLD is not set 775# CONFIG_PATA_PDC_OLD is not set
738# CONFIG_PATA_RADISYS is not set 776# CONFIG_PATA_RADISYS is not set
739# CONFIG_PATA_RDC is not set 777# CONFIG_PATA_RDC is not set
740# CONFIG_PATA_RZ1000 is not set 778# CONFIG_PATA_RZ1000 is not set
741# CONFIG_PATA_SC1200 is not set 779# CONFIG_PATA_SC1200 is not set
742# CONFIG_PATA_SERVERWORKS is not set 780# CONFIG_PATA_SERVERWORKS is not set
743# CONFIG_PATA_PDC2027X is not set
744# CONFIG_PATA_SIL680 is not set 781# CONFIG_PATA_SIL680 is not set
745# CONFIG_PATA_SIS is not set 782# CONFIG_PATA_SIS is not set
783# CONFIG_PATA_TOSHIBA is not set
746# CONFIG_PATA_VIA is not set 784# CONFIG_PATA_VIA is not set
747# CONFIG_PATA_WINBOND is not set 785# CONFIG_PATA_WINBOND is not set
748# CONFIG_PATA_PLATFORM is not set 786# CONFIG_PATA_PLATFORM is not set
@@ -759,7 +797,7 @@ CONFIG_SATA_MV=y
759# 797#
760 798
761# 799#
762# See the help texts for more information. 800# The newer stack is recommended.
763# 801#
764# CONFIG_FIREWIRE is not set 802# CONFIG_FIREWIRE is not set
765# CONFIG_IEEE1394 is not set 803# CONFIG_IEEE1394 is not set
@@ -886,8 +924,11 @@ CONFIG_CHELSIO_T3_DEPENDS=y
886# CONFIG_BE2NET is not set 924# CONFIG_BE2NET is not set
887# CONFIG_TR is not set 925# CONFIG_TR is not set
888CONFIG_WLAN=y 926CONFIG_WLAN=y
889# CONFIG_WLAN_PRE80211 is not set 927# CONFIG_AIRO is not set
890# CONFIG_WLAN_80211 is not set 928# CONFIG_ATMEL is not set
929# CONFIG_PRISM54 is not set
930# CONFIG_USB_ZD1201 is not set
931# CONFIG_HOSTAP is not set
891 932
892# 933#
893# Enable WiMAX (Networking options) to see the WiMAX drivers 934# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -910,6 +951,7 @@ CONFIG_WLAN=y
910# CONFIG_NETCONSOLE is not set 951# CONFIG_NETCONSOLE is not set
911# CONFIG_NETPOLL is not set 952# CONFIG_NETPOLL is not set
912# CONFIG_NET_POLL_CONTROLLER is not set 953# CONFIG_NET_POLL_CONTROLLER is not set
954# CONFIG_VMXNET3 is not set
913# CONFIG_ISDN is not set 955# CONFIG_ISDN is not set
914# CONFIG_PHONE is not set 956# CONFIG_PHONE is not set
915 957
@@ -919,6 +961,7 @@ CONFIG_WLAN=y
919CONFIG_INPUT=y 961CONFIG_INPUT=y
920CONFIG_INPUT_FF_MEMLESS=y 962CONFIG_INPUT_FF_MEMLESS=y
921# CONFIG_INPUT_POLLDEV is not set 963# CONFIG_INPUT_POLLDEV is not set
964# CONFIG_INPUT_SPARSEKMAP is not set
922 965
923# 966#
924# Userland interfaces 967# Userland interfaces
@@ -973,6 +1016,7 @@ CONFIG_SERIAL_MPSC_CONSOLE=y
973CONFIG_SERIAL_CORE=y 1016CONFIG_SERIAL_CORE=y
974CONFIG_SERIAL_CORE_CONSOLE=y 1017CONFIG_SERIAL_CORE_CONSOLE=y
975# CONFIG_SERIAL_JSM is not set 1018# CONFIG_SERIAL_JSM is not set
1019# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
976CONFIG_UNIX98_PTYS=y 1020CONFIG_UNIX98_PTYS=y
977# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 1021# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
978CONFIG_LEGACY_PTYS=y 1022CONFIG_LEGACY_PTYS=y
@@ -1030,11 +1074,6 @@ CONFIG_I2C_MV64XXX=y
1030# CONFIG_I2C_TINY_USB is not set 1074# CONFIG_I2C_TINY_USB is not set
1031 1075
1032# 1076#
1033# Graphics adapter I2C/DDC channel drivers
1034#
1035# CONFIG_I2C_VOODOO3 is not set
1036
1037#
1038# Other I2C/SMBus bus drivers 1077# Other I2C/SMBus bus drivers
1039# 1078#
1040# CONFIG_I2C_PCA_PLATFORM is not set 1079# CONFIG_I2C_PCA_PLATFORM is not set
@@ -1042,7 +1081,6 @@ CONFIG_I2C_MV64XXX=y
1042# 1081#
1043# Miscellaneous I2C Chip support 1082# Miscellaneous I2C Chip support
1044# 1083#
1045# CONFIG_DS1682 is not set
1046# CONFIG_SENSORS_TSL2550 is not set 1084# CONFIG_SENSORS_TSL2550 is not set
1047# CONFIG_I2C_DEBUG_CORE is not set 1085# CONFIG_I2C_DEBUG_CORE is not set
1048# CONFIG_I2C_DEBUG_ALGO is not set 1086# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1088,6 +1126,7 @@ CONFIG_HWMON=y
1088# CONFIG_SENSORS_GL520SM is not set 1126# CONFIG_SENSORS_GL520SM is not set
1089# CONFIG_SENSORS_IT87 is not set 1127# CONFIG_SENSORS_IT87 is not set
1090# CONFIG_SENSORS_LM63 is not set 1128# CONFIG_SENSORS_LM63 is not set
1129# CONFIG_SENSORS_LM73 is not set
1091# CONFIG_SENSORS_LM75 is not set 1130# CONFIG_SENSORS_LM75 is not set
1092# CONFIG_SENSORS_LM77 is not set 1131# CONFIG_SENSORS_LM77 is not set
1093# CONFIG_SENSORS_LM78 is not set 1132# CONFIG_SENSORS_LM78 is not set
@@ -1126,6 +1165,7 @@ CONFIG_HWMON=y
1126# CONFIG_SENSORS_W83L786NG is not set 1165# CONFIG_SENSORS_W83L786NG is not set
1127# CONFIG_SENSORS_W83627HF is not set 1166# CONFIG_SENSORS_W83627HF is not set
1128# CONFIG_SENSORS_W83627EHF is not set 1167# CONFIG_SENSORS_W83627EHF is not set
1168# CONFIG_SENSORS_LIS3_I2C is not set
1129# CONFIG_THERMAL is not set 1169# CONFIG_THERMAL is not set
1130# CONFIG_WATCHDOG is not set 1170# CONFIG_WATCHDOG is not set
1131CONFIG_SSB_POSSIBLE=y 1171CONFIG_SSB_POSSIBLE=y
@@ -1144,11 +1184,13 @@ CONFIG_SSB_POSSIBLE=y
1144# CONFIG_TWL4030_CORE is not set 1184# CONFIG_TWL4030_CORE is not set
1145# CONFIG_MFD_TMIO is not set 1185# CONFIG_MFD_TMIO is not set
1146# CONFIG_PMIC_DA903X is not set 1186# CONFIG_PMIC_DA903X is not set
1187# CONFIG_PMIC_ADP5520 is not set
1147# CONFIG_MFD_WM8400 is not set 1188# CONFIG_MFD_WM8400 is not set
1148# CONFIG_MFD_WM831X is not set 1189# CONFIG_MFD_WM831X is not set
1149# CONFIG_MFD_WM8350_I2C is not set 1190# CONFIG_MFD_WM8350_I2C is not set
1150# CONFIG_MFD_PCF50633 is not set 1191# CONFIG_MFD_PCF50633 is not set
1151# CONFIG_AB3100_CORE is not set 1192# CONFIG_AB3100_CORE is not set
1193# CONFIG_MFD_88PM8607 is not set
1152# CONFIG_REGULATOR is not set 1194# CONFIG_REGULATOR is not set
1153# CONFIG_MEDIA_SUPPORT is not set 1195# CONFIG_MEDIA_SUPPORT is not set
1154 1196
@@ -1250,6 +1292,7 @@ CONFIG_USB_MON=y
1250CONFIG_USB_EHCI_HCD=y 1292CONFIG_USB_EHCI_HCD=y
1251# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1293# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1252# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1294# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1295# CONFIG_XPS_USB_HCD_XILINX is not set
1253CONFIG_USB_EHCI_HCD_PPC_OF=y 1296CONFIG_USB_EHCI_HCD_PPC_OF=y
1254# CONFIG_USB_OXU210HP_HCD is not set 1297# CONFIG_USB_OXU210HP_HCD is not set
1255# CONFIG_USB_ISP116X_HCD is not set 1298# CONFIG_USB_ISP116X_HCD is not set
@@ -1362,6 +1405,7 @@ CONFIG_RTC_DRV_MAX6900=y
1362# CONFIG_RTC_DRV_PCF8563 is not set 1405# CONFIG_RTC_DRV_PCF8563 is not set
1363# CONFIG_RTC_DRV_PCF8583 is not set 1406# CONFIG_RTC_DRV_PCF8583 is not set
1364# CONFIG_RTC_DRV_M41T80 is not set 1407# CONFIG_RTC_DRV_M41T80 is not set
1408# CONFIG_RTC_DRV_BQ32K is not set
1365# CONFIG_RTC_DRV_S35390A is not set 1409# CONFIG_RTC_DRV_S35390A is not set
1366# CONFIG_RTC_DRV_FM3130 is not set 1410# CONFIG_RTC_DRV_FM3130 is not set
1367# CONFIG_RTC_DRV_RX8581 is not set 1411# CONFIG_RTC_DRV_RX8581 is not set
@@ -1383,7 +1427,9 @@ CONFIG_RTC_DRV_MAX6900=y
1383# CONFIG_RTC_DRV_M48T86 is not set 1427# CONFIG_RTC_DRV_M48T86 is not set
1384# CONFIG_RTC_DRV_M48T35 is not set 1428# CONFIG_RTC_DRV_M48T35 is not set
1385# CONFIG_RTC_DRV_M48T59 is not set 1429# CONFIG_RTC_DRV_M48T59 is not set
1430# CONFIG_RTC_DRV_MSM6242 is not set
1386# CONFIG_RTC_DRV_BQ4802 is not set 1431# CONFIG_RTC_DRV_BQ4802 is not set
1432# CONFIG_RTC_DRV_RP5C01 is not set
1387# CONFIG_RTC_DRV_V3020 is not set 1433# CONFIG_RTC_DRV_V3020 is not set
1388 1434
1389# 1435#
@@ -1626,7 +1672,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1626# CONFIG_KEYS is not set 1672# CONFIG_KEYS is not set
1627# CONFIG_SECURITY is not set 1673# CONFIG_SECURITY is not set
1628# CONFIG_SECURITYFS is not set 1674# CONFIG_SECURITYFS is not set
1629# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1675# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1676# CONFIG_DEFAULT_SECURITY_SMACK is not set
1677# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1678CONFIG_DEFAULT_SECURITY_DAC=y
1679CONFIG_DEFAULT_SECURITY=""
1630CONFIG_CRYPTO=y 1680CONFIG_CRYPTO=y
1631 1681
1632# 1682#
diff --git a/arch/powerpc/configs/storcenter_defconfig b/arch/powerpc/configs/storcenter_defconfig
index 524263158fc0..f2f832161463 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.32-rc5 3# Linux kernel version: 2.6.33-rc3
4# Thu Nov 5 08:20:19 2009 4# Wed Jan 6 09:24:13 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -36,6 +36,7 @@ CONFIG_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 37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
39CONFIG_NR_IRQS=512
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
41CONFIG_TRACE_IRQFLAGS_SUPPORT=y 42CONFIG_TRACE_IRQFLAGS_SUPPORT=y
@@ -58,6 +59,7 @@ CONFIG_AUDIT_ARCH=y
58CONFIG_GENERIC_BUG=y 59CONFIG_GENERIC_BUG=y
59CONFIG_DTC=y 60CONFIG_DTC=y
60# CONFIG_DEFAULT_UIMAGE is not set 61# CONFIG_DEFAULT_UIMAGE is not set
62CONFIG_ARCH_HIBERNATION_POSSIBLE=y
61# CONFIG_PPC_DCR_NATIVE is not set 63# CONFIG_PPC_DCR_NATIVE is not set
62# CONFIG_PPC_DCR_MMIO is not set 64# CONFIG_PPC_DCR_MMIO is not set
63CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 65CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -85,6 +87,7 @@ CONFIG_SYSVIPC_SYSCTL=y
85# 87#
86CONFIG_TREE_RCU=y 88CONFIG_TREE_RCU=y
87# CONFIG_TREE_PREEMPT_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
90# CONFIG_TINY_RCU is not set
88# CONFIG_RCU_TRACE is not set 91# CONFIG_RCU_TRACE is not set
89CONFIG_RCU_FANOUT=32 92CONFIG_RCU_FANOUT=32
90# CONFIG_RCU_FANOUT_EXACT is not set 93# CONFIG_RCU_FANOUT_EXACT is not set
@@ -167,14 +170,41 @@ CONFIG_LBDAF=y
167# IO Schedulers 170# IO Schedulers
168# 171#
169CONFIG_IOSCHED_NOOP=y 172CONFIG_IOSCHED_NOOP=y
170CONFIG_IOSCHED_AS=y
171CONFIG_IOSCHED_DEADLINE=y 173CONFIG_IOSCHED_DEADLINE=y
172CONFIG_IOSCHED_CFQ=y 174CONFIG_IOSCHED_CFQ=y
173# CONFIG_DEFAULT_AS is not set
174# CONFIG_DEFAULT_DEADLINE is not set 175# CONFIG_DEFAULT_DEADLINE is not set
175CONFIG_DEFAULT_CFQ=y 176CONFIG_DEFAULT_CFQ=y
176# CONFIG_DEFAULT_NOOP is not set 177# CONFIG_DEFAULT_NOOP is not set
177CONFIG_DEFAULT_IOSCHED="cfq" 178CONFIG_DEFAULT_IOSCHED="cfq"
179# CONFIG_INLINE_SPIN_TRYLOCK is not set
180# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
181# CONFIG_INLINE_SPIN_LOCK is not set
182# CONFIG_INLINE_SPIN_LOCK_BH is not set
183# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
184# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
185CONFIG_INLINE_SPIN_UNLOCK=y
186# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
187CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
188# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
189# CONFIG_INLINE_READ_TRYLOCK is not set
190# CONFIG_INLINE_READ_LOCK is not set
191# CONFIG_INLINE_READ_LOCK_BH is not set
192# CONFIG_INLINE_READ_LOCK_IRQ is not set
193# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
194CONFIG_INLINE_READ_UNLOCK=y
195# CONFIG_INLINE_READ_UNLOCK_BH is not set
196CONFIG_INLINE_READ_UNLOCK_IRQ=y
197# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
198# CONFIG_INLINE_WRITE_TRYLOCK is not set
199# CONFIG_INLINE_WRITE_LOCK is not set
200# CONFIG_INLINE_WRITE_LOCK_BH is not set
201# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
202# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
203CONFIG_INLINE_WRITE_UNLOCK=y
204# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
205CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
206# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
207# CONFIG_MUTEX_SPIN_ON_OWNER is not set
178# CONFIG_FREEZER is not set 208# CONFIG_FREEZER is not set
179 209
180# 210#
@@ -201,6 +231,8 @@ CONFIG_STORCENTER=y
201CONFIG_MPC10X_BRIDGE=y 231CONFIG_MPC10X_BRIDGE=y
202CONFIG_MPC10X_OPENPIC=y 232CONFIG_MPC10X_OPENPIC=y
203# CONFIG_MPC10X_STORE_GATHERING is not set 233# CONFIG_MPC10X_STORE_GATHERING is not set
234# CONFIG_GAMECUBE is not set
235# CONFIG_WII is not set
204# CONFIG_AMIGAONE is not set 236# CONFIG_AMIGAONE is not set
205CONFIG_PPC_OF_BOOT_TRAMPOLINE=y 237CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
206# CONFIG_IPIC is not set 238# CONFIG_IPIC is not set
@@ -246,6 +278,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
246CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 278CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
247# CONFIG_KEXEC is not set 279# CONFIG_KEXEC is not set
248# CONFIG_CRASH_DUMP is not set 280# CONFIG_CRASH_DUMP is not set
281CONFIG_SPARSE_IRQ=y
249CONFIG_MAX_ACTIVE_REGIONS=32 282CONFIG_MAX_ACTIVE_REGIONS=32
250CONFIG_ARCH_FLATMEM_ENABLE=y 283CONFIG_ARCH_FLATMEM_ENABLE=y
251CONFIG_ARCH_POPULATES_NODE_MAP=y 284CONFIG_ARCH_POPULATES_NODE_MAP=y
@@ -262,8 +295,6 @@ CONFIG_MIGRATION=y
262CONFIG_ZONE_DMA_FLAG=1 295CONFIG_ZONE_DMA_FLAG=1
263CONFIG_BOUNCE=y 296CONFIG_BOUNCE=y
264CONFIG_VIRT_TO_BUS=y 297CONFIG_VIRT_TO_BUS=y
265CONFIG_HAVE_MLOCK=y
266CONFIG_HAVE_MLOCKED_PAGE_BIT=y
267# CONFIG_KSM is not set 298# CONFIG_KSM is not set
268CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 299CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
269CONFIG_PPC_4K_PAGES=y 300CONFIG_PPC_4K_PAGES=y
@@ -384,9 +415,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
384# CONFIG_AF_RXRPC is not set 415# CONFIG_AF_RXRPC is not set
385CONFIG_WIRELESS=y 416CONFIG_WIRELESS=y
386# CONFIG_CFG80211 is not set 417# CONFIG_CFG80211 is not set
387CONFIG_CFG80211_DEFAULT_PS_VALUE=0
388CONFIG_WIRELESS_OLD_REGULATORY=y
389# CONFIG_WIRELESS_EXT is not set
390# CONFIG_LIB80211 is not set 418# CONFIG_LIB80211 is not set
391 419
392# 420#
@@ -507,6 +535,10 @@ CONFIG_BLK_DEV=y
507# CONFIG_BLK_DEV_UMEM is not set 535# CONFIG_BLK_DEV_UMEM is not set
508# CONFIG_BLK_DEV_COW_COMMON is not set 536# CONFIG_BLK_DEV_COW_COMMON is not set
509# CONFIG_BLK_DEV_LOOP is not set 537# CONFIG_BLK_DEV_LOOP is not set
538
539#
540# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
541#
510# CONFIG_BLK_DEV_NBD is not set 542# CONFIG_BLK_DEV_NBD is not set
511# CONFIG_BLK_DEV_SX8 is not set 543# CONFIG_BLK_DEV_SX8 is not set
512# CONFIG_BLK_DEV_UB is not set 544# CONFIG_BLK_DEV_UB is not set
@@ -515,6 +547,7 @@ CONFIG_BLK_DEV=y
515# CONFIG_ATA_OVER_ETH is not set 547# CONFIG_ATA_OVER_ETH is not set
516# CONFIG_BLK_DEV_HD is not set 548# CONFIG_BLK_DEV_HD is not set
517CONFIG_MISC_DEVICES=y 549CONFIG_MISC_DEVICES=y
550# CONFIG_AD525X_DPOT is not set
518# CONFIG_PHANTOM is not set 551# CONFIG_PHANTOM is not set
519# CONFIG_SGI_IOC4 is not set 552# CONFIG_SGI_IOC4 is not set
520# CONFIG_TIFM_CORE is not set 553# CONFIG_TIFM_CORE is not set
@@ -522,6 +555,7 @@ CONFIG_MISC_DEVICES=y
522# CONFIG_ENCLOSURE_SERVICES is not set 555# CONFIG_ENCLOSURE_SERVICES is not set
523# CONFIG_HP_ILO is not set 556# CONFIG_HP_ILO is not set
524# CONFIG_ISL29003 is not set 557# CONFIG_ISL29003 is not set
558# CONFIG_DS1682 is not set
525# CONFIG_C2PORT is not set 559# CONFIG_C2PORT is not set
526 560
527# 561#
@@ -628,7 +662,9 @@ CONFIG_SCSI_LOWLEVEL=y
628# CONFIG_SCSI_BNX2_ISCSI is not set 662# CONFIG_SCSI_BNX2_ISCSI is not set
629# CONFIG_BE2ISCSI is not set 663# CONFIG_BE2ISCSI is not set
630# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 664# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
665# CONFIG_SCSI_HPSA is not set
631# CONFIG_SCSI_3W_9XXX is not set 666# CONFIG_SCSI_3W_9XXX is not set
667# CONFIG_SCSI_3W_SAS is not set
632# CONFIG_SCSI_ACARD is not set 668# CONFIG_SCSI_ACARD is not set
633# CONFIG_SCSI_AACRAID is not set 669# CONFIG_SCSI_AACRAID is not set
634# CONFIG_SCSI_AIC7XXX is not set 670# CONFIG_SCSI_AIC7XXX is not set
@@ -666,6 +702,7 @@ CONFIG_SCSI_LOWLEVEL=y
666# CONFIG_SCSI_NSP32 is not set 702# CONFIG_SCSI_NSP32 is not set
667# CONFIG_SCSI_DEBUG is not set 703# CONFIG_SCSI_DEBUG is not set
668# CONFIG_SCSI_PMCRAID is not set 704# CONFIG_SCSI_PMCRAID is not set
705# CONFIG_SCSI_PM8001 is not set
669# CONFIG_SCSI_SRP is not set 706# CONFIG_SCSI_SRP is not set
670# CONFIG_SCSI_BFA_FC is not set 707# CONFIG_SCSI_BFA_FC is not set
671# CONFIG_SCSI_DH is not set 708# CONFIG_SCSI_DH is not set
@@ -695,7 +732,7 @@ CONFIG_MD_RAID6_PQ=y
695# 732#
696 733
697# 734#
698# See the help texts for more information. 735# The newer stack is recommended.
699# 736#
700# CONFIG_FIREWIRE is not set 737# CONFIG_FIREWIRE is not set
701# CONFIG_IEEE1394 is not set 738# CONFIG_IEEE1394 is not set
@@ -741,8 +778,11 @@ CONFIG_R8169=y
741# CONFIG_NETDEV_10000 is not set 778# CONFIG_NETDEV_10000 is not set
742# CONFIG_TR is not set 779# CONFIG_TR is not set
743CONFIG_WLAN=y 780CONFIG_WLAN=y
744# CONFIG_WLAN_PRE80211 is not set 781# CONFIG_AIRO is not set
745# CONFIG_WLAN_80211 is not set 782# CONFIG_ATMEL is not set
783# CONFIG_PRISM54 is not set
784# CONFIG_USB_ZD1201 is not set
785# CONFIG_HOSTAP is not set
746 786
747# 787#
748# Enable WiMAX (Networking options) to see the WiMAX drivers 788# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -765,6 +805,7 @@ CONFIG_WLAN=y
765# CONFIG_NETCONSOLE is not set 805# CONFIG_NETCONSOLE is not set
766# CONFIG_NETPOLL is not set 806# CONFIG_NETPOLL is not set
767# CONFIG_NET_POLL_CONTROLLER is not set 807# CONFIG_NET_POLL_CONTROLLER is not set
808# CONFIG_VMXNET3 is not set
768# CONFIG_ISDN is not set 809# CONFIG_ISDN is not set
769# CONFIG_PHONE is not set 810# CONFIG_PHONE is not set
770 811
@@ -805,6 +846,7 @@ CONFIG_SERIAL_CORE=y
805CONFIG_SERIAL_CORE_CONSOLE=y 846CONFIG_SERIAL_CORE_CONSOLE=y
806# CONFIG_SERIAL_JSM is not set 847# CONFIG_SERIAL_JSM is not set
807# CONFIG_SERIAL_OF_PLATFORM is not set 848# CONFIG_SERIAL_OF_PLATFORM is not set
849# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
808CONFIG_UNIX98_PTYS=y 850CONFIG_UNIX98_PTYS=y
809# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 851# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
810CONFIG_LEGACY_PTYS=y 852CONFIG_LEGACY_PTYS=y
@@ -862,11 +904,6 @@ CONFIG_I2C_MPC=y
862# CONFIG_I2C_TINY_USB is not set 904# CONFIG_I2C_TINY_USB is not set
863 905
864# 906#
865# Graphics adapter I2C/DDC channel drivers
866#
867# CONFIG_I2C_VOODOO3 is not set
868
869#
870# Other I2C/SMBus bus drivers 907# Other I2C/SMBus bus drivers
871# 908#
872# CONFIG_I2C_PCA_PLATFORM is not set 909# CONFIG_I2C_PCA_PLATFORM is not set
@@ -875,7 +912,6 @@ CONFIG_I2C_MPC=y
875# 912#
876# Miscellaneous I2C Chip support 913# Miscellaneous I2C Chip support
877# 914#
878# CONFIG_DS1682 is not set
879# CONFIG_SENSORS_TSL2550 is not set 915# CONFIG_SENSORS_TSL2550 is not set
880# CONFIG_I2C_DEBUG_CORE is not set 916# CONFIG_I2C_DEBUG_CORE is not set
881# CONFIG_I2C_DEBUG_ALGO is not set 917# CONFIG_I2C_DEBUG_ALGO is not set
@@ -910,11 +946,13 @@ CONFIG_SSB_POSSIBLE=y
910# CONFIG_TWL4030_CORE is not set 946# CONFIG_TWL4030_CORE is not set
911# CONFIG_MFD_TMIO is not set 947# CONFIG_MFD_TMIO is not set
912# CONFIG_PMIC_DA903X is not set 948# CONFIG_PMIC_DA903X is not set
949# CONFIG_PMIC_ADP5520 is not set
913# CONFIG_MFD_WM8400 is not set 950# CONFIG_MFD_WM8400 is not set
914# CONFIG_MFD_WM831X is not set 951# CONFIG_MFD_WM831X is not set
915# CONFIG_MFD_WM8350_I2C is not set 952# CONFIG_MFD_WM8350_I2C is not set
916# CONFIG_MFD_PCF50633 is not set 953# CONFIG_MFD_PCF50633 is not set
917# CONFIG_AB3100_CORE is not set 954# CONFIG_AB3100_CORE is not set
955# CONFIG_MFD_88PM8607 is not set
918# CONFIG_REGULATOR is not set 956# CONFIG_REGULATOR is not set
919# CONFIG_MEDIA_SUPPORT is not set 957# CONFIG_MEDIA_SUPPORT is not set
920 958
@@ -963,6 +1001,7 @@ CONFIG_USB_DEVICE_CLASS=y
963CONFIG_USB_EHCI_HCD=y 1001CONFIG_USB_EHCI_HCD=y
964# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1002# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
965# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1003# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1004# CONFIG_XPS_USB_HCD_XILINX is not set
966# CONFIG_USB_EHCI_FSL is not set 1005# CONFIG_USB_EHCI_FSL is not set
967CONFIG_USB_EHCI_HCD_PPC_OF=y 1006CONFIG_USB_EHCI_HCD_PPC_OF=y
968# CONFIG_USB_OXU210HP_HCD is not set 1007# CONFIG_USB_OXU210HP_HCD is not set
@@ -1087,6 +1126,7 @@ CONFIG_RTC_DRV_DS1307=y
1087# CONFIG_RTC_DRV_PCF8563 is not set 1126# CONFIG_RTC_DRV_PCF8563 is not set
1088# CONFIG_RTC_DRV_PCF8583 is not set 1127# CONFIG_RTC_DRV_PCF8583 is not set
1089# CONFIG_RTC_DRV_M41T80 is not set 1128# CONFIG_RTC_DRV_M41T80 is not set
1129# CONFIG_RTC_DRV_BQ32K is not set
1090# CONFIG_RTC_DRV_S35390A is not set 1130# CONFIG_RTC_DRV_S35390A is not set
1091# CONFIG_RTC_DRV_FM3130 is not set 1131# CONFIG_RTC_DRV_FM3130 is not set
1092# CONFIG_RTC_DRV_RX8581 is not set 1132# CONFIG_RTC_DRV_RX8581 is not set
@@ -1108,7 +1148,9 @@ CONFIG_RTC_DRV_DS1307=y
1108# CONFIG_RTC_DRV_M48T86 is not set 1148# CONFIG_RTC_DRV_M48T86 is not set
1109# CONFIG_RTC_DRV_M48T35 is not set 1149# CONFIG_RTC_DRV_M48T35 is not set
1110# CONFIG_RTC_DRV_M48T59 is not set 1150# CONFIG_RTC_DRV_M48T59 is not set
1151# CONFIG_RTC_DRV_MSM6242 is not set
1111# CONFIG_RTC_DRV_BQ4802 is not set 1152# CONFIG_RTC_DRV_BQ4802 is not set
1153# CONFIG_RTC_DRV_RP5C01 is not set
1112# CONFIG_RTC_DRV_V3020 is not set 1154# CONFIG_RTC_DRV_V3020 is not set
1113 1155
1114# 1156#
@@ -1322,7 +1364,7 @@ CONFIG_FRAME_WARN=1024
1322# CONFIG_DEBUG_KERNEL is not set 1364# CONFIG_DEBUG_KERNEL is not set
1323# CONFIG_SLUB_DEBUG_ON is not set 1365# CONFIG_SLUB_DEBUG_ON is not set
1324# CONFIG_SLUB_STATS is not set 1366# CONFIG_SLUB_STATS is not set
1325# CONFIG_DEBUG_BUGVERBOSE is not set 1367CONFIG_DEBUG_BUGVERBOSE=y
1326# CONFIG_DEBUG_MEMORY_INIT is not set 1368# CONFIG_DEBUG_MEMORY_INIT is not set
1327# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1369# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1328# CONFIG_LATENCYTOP is not set 1370# CONFIG_LATENCYTOP is not set
@@ -1349,7 +1391,11 @@ CONFIG_PRINT_STACK_DEPTH=64
1349# CONFIG_KEYS is not set 1391# CONFIG_KEYS is not set
1350# CONFIG_SECURITY is not set 1392# CONFIG_SECURITY is not set
1351# CONFIG_SECURITYFS is not set 1393# CONFIG_SECURITYFS is not set
1352# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1394# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1395# CONFIG_DEFAULT_SECURITY_SMACK is not set
1396# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1397CONFIG_DEFAULT_SECURITY_DAC=y
1398CONFIG_DEFAULT_SECURITY=""
1353CONFIG_XOR_BLOCKS=y 1399CONFIG_XOR_BLOCKS=y
1354CONFIG_ASYNC_CORE=y 1400CONFIG_ASYNC_CORE=y
1355CONFIG_ASYNC_MEMCPY=y 1401CONFIG_ASYNC_MEMCPY=y
diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h
index 17828ad411eb..c376eda15313 100644
--- a/arch/powerpc/include/asm/elf.h
+++ b/arch/powerpc/include/asm/elf.h
@@ -235,14 +235,10 @@ typedef elf_vrregset_t elf_fpxregset_t;
235#ifdef __powerpc64__ 235#ifdef __powerpc64__
236# define SET_PERSONALITY(ex) \ 236# define SET_PERSONALITY(ex) \
237do { \ 237do { \
238 unsigned long new_flags = 0; \
239 if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \ 238 if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \
240 new_flags = _TIF_32BIT; \ 239 set_thread_flag(TIF_32BIT); \
241 if ((current_thread_info()->flags & _TIF_32BIT) \
242 != new_flags) \
243 set_thread_flag(TIF_ABI_PENDING); \
244 else \ 240 else \
245 clear_thread_flag(TIF_ABI_PENDING); \ 241 clear_thread_flag(TIF_32BIT); \
246 if (personality(current->personality) != PER_LINUX32) \ 242 if (personality(current->personality) != PER_LINUX32) \
247 set_personality(PER_LINUX | \ 243 set_personality(PER_LINUX | \
248 (current->personality & (~PER_MASK))); \ 244 (current->personality & (~PER_MASK))); \
diff --git a/arch/powerpc/include/asm/thread_info.h b/arch/powerpc/include/asm/thread_info.h
index c8b329255678..aa9d383a1c09 100644
--- a/arch/powerpc/include/asm/thread_info.h
+++ b/arch/powerpc/include/asm/thread_info.h
@@ -111,7 +111,6 @@ static inline struct thread_info *current_thread_info(void)
111#define TIF_NOTIFY_RESUME 13 /* callback before returning to user */ 111#define TIF_NOTIFY_RESUME 13 /* callback before returning to user */
112#define TIF_FREEZE 14 /* Freezing for suspend */ 112#define TIF_FREEZE 14 /* Freezing for suspend */
113#define TIF_RUNLATCH 15 /* Is the runlatch enabled? */ 113#define TIF_RUNLATCH 15 /* Is the runlatch enabled? */
114#define TIF_ABI_PENDING 16 /* 32/64 bit switch needed */
115 114
116/* as above, but as bit values */ 115/* as above, but as bit values */
117#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) 116#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
@@ -129,7 +128,6 @@ static inline struct thread_info *current_thread_info(void)
129#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME) 128#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME)
130#define _TIF_FREEZE (1<<TIF_FREEZE) 129#define _TIF_FREEZE (1<<TIF_FREEZE)
131#define _TIF_RUNLATCH (1<<TIF_RUNLATCH) 130#define _TIF_RUNLATCH (1<<TIF_RUNLATCH)
132#define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING)
133#define _TIF_SYSCALL_T_OR_A (_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP) 131#define _TIF_SYSCALL_T_OR_A (_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP)
134 132
135#define _TIF_USER_WORK_MASK (_TIF_SIGPENDING | _TIF_NEED_RESCHED | \ 133#define _TIF_USER_WORK_MASK (_TIF_SIGPENDING | _TIF_NEED_RESCHED | \
diff --git a/arch/powerpc/include/asm/topology.h b/arch/powerpc/include/asm/topology.h
index 22f738d12ad9..bbf89701d7a4 100644
--- a/arch/powerpc/include/asm/topology.h
+++ b/arch/powerpc/include/asm/topology.h
@@ -17,7 +17,9 @@ static inline int cpu_to_node(int cpu)
17 17
18#define parent_node(node) (node) 18#define parent_node(node) (node)
19 19
20#define cpumask_of_node(node) (&numa_cpumask_lookup_table[node]) 20#define cpumask_of_node(node) ((node) == -1 ? \
21 cpu_all_mask : \
22 &numa_cpumask_lookup_table[node])
21 23
22int of_node_to_nid(struct device_node *device); 24int of_node_to_nid(struct device_node *device);
23 25
diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S
index 678f98cd5e64..3ef743fa5d7c 100644
--- a/arch/powerpc/kernel/head_8xx.S
+++ b/arch/powerpc/kernel/head_8xx.S
@@ -542,11 +542,11 @@ DARFixed:/* Return from dcbx instruction bug workaround, r10 holds value of DAR
542FixupDAR:/* Entry point for dcbx workaround. */ 542FixupDAR:/* Entry point for dcbx workaround. */
543 /* fetch instruction from memory. */ 543 /* fetch instruction from memory. */
544 mfspr r10, SPRN_SRR0 544 mfspr r10, SPRN_SRR0
545 andis. r11, r10, 0x8000 /* Address >= 0x80000000 */
545 DO_8xx_CPU6(0x3780, r3) 546 DO_8xx_CPU6(0x3780, r3)
546 mtspr SPRN_MD_EPN, r10 547 mtspr SPRN_MD_EPN, r10
547 mfspr r11, SPRN_M_TWB /* Get level 1 table entry address */ 548 mfspr r11, SPRN_M_TWB /* Get level 1 table entry address */
548 cmplwi cr0, r11, 0x0800 549 beq- 3f /* Branch if user space */
549 blt- 3f /* Branch if user space */
550 lis r11, (swapper_pg_dir-PAGE_OFFSET)@h 550 lis r11, (swapper_pg_dir-PAGE_OFFSET)@h
551 ori r11, r11, (swapper_pg_dir-PAGE_OFFSET)@l 551 ori r11, r11, (swapper_pg_dir-PAGE_OFFSET)@l
552 rlwimi r11, r10, 32-20, 0xffc /* r11 = r11&~0xffc|(r10>>20)&0xffc */ 552 rlwimi r11, r10, 32-20, 0xffc /* r11 = r11&~0xffc|(r10>>20)&0xffc */
@@ -768,12 +768,12 @@ start_here:
768 */ 768 */
769initial_mmu: 769initial_mmu:
770 tlbia /* Invalidate all TLB entries */ 770 tlbia /* Invalidate all TLB entries */
771#ifdef CONFIG_PIN_TLB 771/* Always pin the first 8 MB ITLB to prevent ITLB
772 misses while mucking around with SRR0/SRR1 in asm
773*/
772 lis r8, MI_RSV4I@h 774 lis r8, MI_RSV4I@h
773 ori r8, r8, 0x1c00 775 ori r8, r8, 0x1c00
774#else 776
775 li r8, 0
776#endif
777 mtspr SPRN_MI_CTR, r8 /* Set instruction MMU control */ 777 mtspr SPRN_MI_CTR, r8 /* Set instruction MMU control */
778 778
779#ifdef CONFIG_PIN_TLB 779#ifdef CONFIG_PIN_TLB
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index e8dfdbd9327a..cadbed679fbb 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -1107,6 +1107,12 @@ void __devinit pcibios_setup_bus_devices(struct pci_bus *bus)
1107 list_for_each_entry(dev, &bus->devices, bus_list) { 1107 list_for_each_entry(dev, &bus->devices, bus_list) {
1108 struct dev_archdata *sd = &dev->dev.archdata; 1108 struct dev_archdata *sd = &dev->dev.archdata;
1109 1109
1110 /* Cardbus can call us to add new devices to a bus, so ignore
1111 * those who are already fully discovered
1112 */
1113 if (dev->is_added)
1114 continue;
1115
1110 /* Setup OF node pointer in archdata */ 1116 /* Setup OF node pointer in archdata */
1111 sd->of_node = pci_device_to_OF_node(dev); 1117 sd->of_node = pci_device_to_OF_node(dev);
1112 1118
@@ -1147,6 +1153,13 @@ void __devinit pcibios_fixup_bus(struct pci_bus *bus)
1147} 1153}
1148EXPORT_SYMBOL(pcibios_fixup_bus); 1154EXPORT_SYMBOL(pcibios_fixup_bus);
1149 1155
1156void __devinit pci_fixup_cardbus(struct pci_bus *bus)
1157{
1158 /* Now fixup devices on that bus */
1159 pcibios_setup_bus_devices(bus);
1160}
1161
1162
1150static int skip_isa_ioresource_align(struct pci_dev *dev) 1163static int skip_isa_ioresource_align(struct pci_dev *dev)
1151{ 1164{
1152 if ((ppc_pci_flags & PPC_PCI_CAN_SKIP_ISA_ALIGN) && 1165 if ((ppc_pci_flags & PPC_PCI_CAN_SKIP_ISA_ALIGN) &&
diff --git a/arch/powerpc/kernel/pci_of_scan.c b/arch/powerpc/kernel/pci_of_scan.c
index 7311fdfb9bf8..4aa17401657b 100644
--- a/arch/powerpc/kernel/pci_of_scan.c
+++ b/arch/powerpc/kernel/pci_of_scan.c
@@ -123,6 +123,7 @@ struct pci_dev *of_create_pci_dev(struct device_node *node,
123{ 123{
124 struct pci_dev *dev; 124 struct pci_dev *dev;
125 const char *type; 125 const char *type;
126 struct pci_slot *slot;
126 127
127 dev = alloc_pci_dev(); 128 dev = alloc_pci_dev();
128 if (!dev) 129 if (!dev)
@@ -140,6 +141,11 @@ struct pci_dev *of_create_pci_dev(struct device_node *node,
140 dev->devfn = devfn; 141 dev->devfn = devfn;
141 dev->multifunction = 0; /* maybe a lie? */ 142 dev->multifunction = 0; /* maybe a lie? */
142 dev->needs_freset = 0; /* pcie fundamental reset required */ 143 dev->needs_freset = 0; /* pcie fundamental reset required */
144 set_pcie_port_type(dev);
145
146 list_for_each_entry(slot, &dev->bus->slots, list)
147 if (PCI_SLOT(dev->devfn) == slot->number)
148 dev->slot = slot;
143 149
144 dev->vendor = get_int_prop(node, "vendor-id", 0xffff); 150 dev->vendor = get_int_prop(node, "vendor-id", 0xffff);
145 dev->device = get_int_prop(node, "device-id", 0xffff); 151 dev->device = get_int_prop(node, "device-id", 0xffff);
@@ -160,10 +166,14 @@ struct pci_dev *of_create_pci_dev(struct device_node *node,
160 dev->error_state = pci_channel_io_normal; 166 dev->error_state = pci_channel_io_normal;
161 dev->dma_mask = 0xffffffff; 167 dev->dma_mask = 0xffffffff;
162 168
169 /* Early fixups, before probing the BARs */
170 pci_fixup_device(pci_fixup_early, dev);
171
163 if (!strcmp(type, "pci") || !strcmp(type, "pciex")) { 172 if (!strcmp(type, "pci") || !strcmp(type, "pciex")) {
164 /* a PCI-PCI bridge */ 173 /* a PCI-PCI bridge */
165 dev->hdr_type = PCI_HEADER_TYPE_BRIDGE; 174 dev->hdr_type = PCI_HEADER_TYPE_BRIDGE;
166 dev->rom_base_reg = PCI_ROM_ADDRESS1; 175 dev->rom_base_reg = PCI_ROM_ADDRESS1;
176 set_pcie_hotplug_bridge(dev);
167 } else if (!strcmp(type, "cardbus")) { 177 } else if (!strcmp(type, "cardbus")) {
168 dev->hdr_type = PCI_HEADER_TYPE_CARDBUS; 178 dev->hdr_type = PCI_HEADER_TYPE_CARDBUS;
169 } else { 179 } else {
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
index c930ac38e59f..7b816daf3eba 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
@@ -554,18 +554,6 @@ void exit_thread(void)
554 554
555void flush_thread(void) 555void flush_thread(void)
556{ 556{
557#ifdef CONFIG_PPC64
558 struct thread_info *t = current_thread_info();
559
560 if (test_ti_thread_flag(t, TIF_ABI_PENDING)) {
561 clear_ti_thread_flag(t, TIF_ABI_PENDING);
562 if (test_ti_thread_flag(t, TIF_32BIT))
563 clear_ti_thread_flag(t, TIF_32BIT);
564 else
565 set_ti_thread_flag(t, TIF_32BIT);
566 }
567#endif
568
569 discard_lazy_cpu_state(); 557 discard_lazy_cpu_state();
570 558
571 if (current->thread.dabr) { 559 if (current->thread.dabr) {
diff --git a/arch/powerpc/kernel/rtas-proc.c b/arch/powerpc/kernel/rtas-proc.c
index 1be9fe38bcb5..8777fb02349f 100644
--- a/arch/powerpc/kernel/rtas-proc.c
+++ b/arch/powerpc/kernel/rtas-proc.c
@@ -262,19 +262,19 @@ static int __init proc_rtas_init(void)
262 if (rtas_node == NULL) 262 if (rtas_node == NULL)
263 return -ENODEV; 263 return -ENODEV;
264 264
265 proc_create("ppc64/rtas/progress", S_IRUGO|S_IWUSR, NULL, 265 proc_create("powerpc/rtas/progress", S_IRUGO|S_IWUSR, NULL,
266 &ppc_rtas_progress_operations); 266 &ppc_rtas_progress_operations);
267 proc_create("ppc64/rtas/clock", S_IRUGO|S_IWUSR, NULL, 267 proc_create("powerpc/rtas/clock", S_IRUGO|S_IWUSR, NULL,
268 &ppc_rtas_clock_operations); 268 &ppc_rtas_clock_operations);
269 proc_create("ppc64/rtas/poweron", S_IWUSR|S_IRUGO, NULL, 269 proc_create("powerpc/rtas/poweron", S_IWUSR|S_IRUGO, NULL,
270 &ppc_rtas_poweron_operations); 270 &ppc_rtas_poweron_operations);
271 proc_create("ppc64/rtas/sensors", S_IRUGO, NULL, 271 proc_create("powerpc/rtas/sensors", S_IRUGO, NULL,
272 &ppc_rtas_sensors_operations); 272 &ppc_rtas_sensors_operations);
273 proc_create("ppc64/rtas/frequency", S_IWUSR|S_IRUGO, NULL, 273 proc_create("powerpc/rtas/frequency", S_IWUSR|S_IRUGO, NULL,
274 &ppc_rtas_tone_freq_operations); 274 &ppc_rtas_tone_freq_operations);
275 proc_create("ppc64/rtas/volume", S_IWUSR|S_IRUGO, NULL, 275 proc_create("powerpc/rtas/volume", S_IWUSR|S_IRUGO, NULL,
276 &ppc_rtas_tone_volume_operations); 276 &ppc_rtas_tone_volume_operations);
277 proc_create("ppc64/rtas/rmo_buffer", S_IRUSR, NULL, 277 proc_create("powerpc/rtas/rmo_buffer", S_IRUSR, NULL,
278 &ppc_rtas_rmo_buf_ops); 278 &ppc_rtas_rmo_buf_ops);
279 return 0; 279 return 0;
280} 280}
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
index a521fb8a40ee..c2ee14498077 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c
@@ -619,4 +619,16 @@ void __cpu_die(unsigned int cpu)
619 if (smp_ops->cpu_die) 619 if (smp_ops->cpu_die)
620 smp_ops->cpu_die(cpu); 620 smp_ops->cpu_die(cpu);
621} 621}
622
623static DEFINE_MUTEX(powerpc_cpu_hotplug_driver_mutex);
624
625void cpu_hotplug_driver_lock()
626{
627 mutex_lock(&powerpc_cpu_hotplug_driver_mutex);
628}
629
630void cpu_hotplug_driver_unlock()
631{
632 mutex_unlock(&powerpc_cpu_hotplug_driver_mutex);
633}
622#endif 634#endif
diff --git a/arch/powerpc/kernel/swsusp_32.S b/arch/powerpc/kernel/swsusp_32.S
index b47d8ceffb52..b0754e237438 100644
--- a/arch/powerpc/kernel/swsusp_32.S
+++ b/arch/powerpc/kernel/swsusp_32.S
@@ -303,7 +303,7 @@ END_MMU_FTR_SECTION_IFSET(MMU_FTR_USE_HIGH_BATS)
303 lis r4,0x1000 303 lis r4,0x1000
3041: addic. r4,r4,-0x1000 3041: addic. r4,r4,-0x1000
305 tlbie r4 305 tlbie r4
306 blt 1b 306 bgt 1b
307 sync 307 sync
308 308
309 /* restore the MSR and turn on the MMU */ 309 /* restore the MSR and turn on the MMU */
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index 9ba2cc88591d..6c6093d67f30 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -903,12 +903,21 @@ static void decrementer_set_mode(enum clock_event_mode mode,
903 decrementer_set_next_event(DECREMENTER_MAX, dev); 903 decrementer_set_next_event(DECREMENTER_MAX, dev);
904} 904}
905 905
906static inline uint64_t div_sc64(unsigned long ticks, unsigned long nsec,
907 int shift)
908{
909 uint64_t tmp = ((uint64_t)ticks) << shift;
910
911 do_div(tmp, nsec);
912 return tmp;
913}
914
906static void __init setup_clockevent_multiplier(unsigned long hz) 915static void __init setup_clockevent_multiplier(unsigned long hz)
907{ 916{
908 u64 mult, shift = 32; 917 u64 mult, shift = 32;
909 918
910 while (1) { 919 while (1) {
911 mult = div_sc(hz, NSEC_PER_SEC, shift); 920 mult = div_sc64(hz, NSEC_PER_SEC, shift);
912 if (mult && (mult >> 32UL) == 0UL) 921 if (mult && (mult >> 32UL) == 0UL)
913 break; 922 break;
914 923
diff --git a/arch/powerpc/kvm/Kconfig b/arch/powerpc/kvm/Kconfig
index 07703f72330e..6fb6e8aa3890 100644
--- a/arch/powerpc/kvm/Kconfig
+++ b/arch/powerpc/kvm/Kconfig
@@ -53,7 +53,7 @@ config KVM_440
53 53
54config KVM_EXIT_TIMING 54config KVM_EXIT_TIMING
55 bool "Detailed exit timing" 55 bool "Detailed exit timing"
56 depends on KVM 56 depends on KVM_440 || KVM_E500
57 ---help--- 57 ---help---
58 Calculate elapsed time for every exit/enter cycle. A per-vcpu 58 Calculate elapsed time for every exit/enter cycle. A per-vcpu
59 report is available in debugfs kvm/vm#_vcpu#_timing. 59 report is available in debugfs kvm/vm#_vcpu#_timing.
diff --git a/arch/powerpc/kvm/book3s_64_mmu.c b/arch/powerpc/kvm/book3s_64_mmu.c
index 5598f88f142e..e4beeb371a73 100644
--- a/arch/powerpc/kvm/book3s_64_mmu.c
+++ b/arch/powerpc/kvm/book3s_64_mmu.c
@@ -390,6 +390,26 @@ static void kvmppc_mmu_book3s_64_mtsrin(struct kvm_vcpu *vcpu, u32 srnum,
390{ 390{
391 u64 rb = 0, rs = 0; 391 u64 rb = 0, rs = 0;
392 392
393 /*
394 * According to Book3 2.01 mtsrin is implemented as:
395 *
396 * The SLB entry specified by (RB)32:35 is loaded from register
397 * RS, as follows.
398 *
399 * SLBE Bit Source SLB Field
400 *
401 * 0:31 0x0000_0000 ESID-0:31
402 * 32:35 (RB)32:35 ESID-32:35
403 * 36 0b1 V
404 * 37:61 0x00_0000|| 0b0 VSID-0:24
405 * 62:88 (RS)37:63 VSID-25:51
406 * 89:91 (RS)33:35 Ks Kp N
407 * 92 (RS)36 L ((RS)36 must be 0b0)
408 * 93 0b0 C
409 */
410
411 dprintk("KVM MMU: mtsrin(0x%x, 0x%lx)\n", srnum, value);
412
393 /* ESID = srnum */ 413 /* ESID = srnum */
394 rb |= (srnum & 0xf) << 28; 414 rb |= (srnum & 0xf) << 28;
395 /* Set the valid bit */ 415 /* Set the valid bit */
@@ -400,7 +420,7 @@ static void kvmppc_mmu_book3s_64_mtsrin(struct kvm_vcpu *vcpu, u32 srnum,
400 /* VSID = VSID */ 420 /* VSID = VSID */
401 rs |= (value & 0xfffffff) << 12; 421 rs |= (value & 0xfffffff) << 12;
402 /* flags = flags */ 422 /* flags = flags */
403 rs |= ((value >> 27) & 0xf) << 9; 423 rs |= ((value >> 28) & 0x7) << 9;
404 424
405 kvmppc_mmu_book3s_64_slbmte(vcpu, rs, rb); 425 kvmppc_mmu_book3s_64_slbmte(vcpu, rs, rb);
406} 426}
diff --git a/arch/powerpc/mm/mmap_64.c b/arch/powerpc/mm/mmap_64.c
index 0d957a4c70fe..5a783d8e8e8e 100644
--- a/arch/powerpc/mm/mmap_64.c
+++ b/arch/powerpc/mm/mmap_64.c
@@ -47,7 +47,7 @@ static inline int mmap_is_legacy(void)
47 if (current->personality & ADDR_COMPAT_LAYOUT) 47 if (current->personality & ADDR_COMPAT_LAYOUT)
48 return 1; 48 return 1;
49 49
50 if (current->signal->rlim[RLIMIT_STACK].rlim_cur == RLIM_INFINITY) 50 if (rlimit(RLIMIT_STACK) == RLIM_INFINITY)
51 return 1; 51 return 1;
52 52
53 return sysctl_legacy_va_layout; 53 return sysctl_legacy_va_layout;
@@ -77,7 +77,7 @@ static unsigned long mmap_rnd(void)
77 77
78static inline unsigned long mmap_base(void) 78static inline unsigned long mmap_base(void)
79{ 79{
80 unsigned long gap = current->signal->rlim[RLIMIT_STACK].rlim_cur; 80 unsigned long gap = rlimit(RLIMIT_STACK);
81 81
82 if (gap < MIN_GAP) 82 if (gap < MIN_GAP)
83 gap = MIN_GAP; 83 gap = MIN_GAP;
diff --git a/arch/powerpc/mm/tlb_hash64.c b/arch/powerpc/mm/tlb_hash64.c
index 282d9306361f..1ec06576f619 100644
--- a/arch/powerpc/mm/tlb_hash64.c
+++ b/arch/powerpc/mm/tlb_hash64.c
@@ -63,15 +63,21 @@ void hpte_need_flush(struct mm_struct *mm, unsigned long addr,
63 if (huge) { 63 if (huge) {
64#ifdef CONFIG_HUGETLB_PAGE 64#ifdef CONFIG_HUGETLB_PAGE
65 psize = get_slice_psize(mm, addr); 65 psize = get_slice_psize(mm, addr);
66 /* Mask the address for the correct page size */
67 addr &= ~((1UL << mmu_psize_defs[psize].shift) - 1);
66#else 68#else
67 BUG(); 69 BUG();
68 psize = pte_pagesize_index(mm, addr, pte); /* shutup gcc */ 70 psize = pte_pagesize_index(mm, addr, pte); /* shutup gcc */
69#endif 71#endif
70 } else 72 } else {
71 psize = pte_pagesize_index(mm, addr, pte); 73 psize = pte_pagesize_index(mm, addr, pte);
74 /* Mask the address for the standard page size. If we
75 * have a 64k page kernel, but the hardware does not
76 * support 64k pages, this might be different from the
77 * hardware page size encoded in the slice table. */
78 addr &= PAGE_MASK;
79 }
72 80
73 /* Mask the address for the correct page size */
74 addr &= ~((1UL << mmu_psize_defs[psize].shift) - 1);
75 81
76 /* Build full vaddr */ 82 /* Build full vaddr */
77 if (!is_kernel_addr(addr)) { 83 if (!is_kernel_addr(addr)) {
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_mds.c b/arch/powerpc/platforms/85xx/mpc85xx_mds.c
index 21f61b8c445b..cc29c0f5300d 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_mds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_mds.c
@@ -338,7 +338,8 @@ static void __init mpc85xx_mds_pic_init(void)
338 } 338 }
339 339
340 mpic = mpic_alloc(np, r.start, 340 mpic = mpic_alloc(np, r.start,
341 MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN, 341 MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN |
342 MPIC_BROKEN_FRR_NIRQS,
342 0, 256, " OpenPIC "); 343 0, 256, " OpenPIC ");
343 BUG_ON(mpic == NULL); 344 BUG_ON(mpic == NULL);
344 of_node_put(np); 345 of_node_put(np);
diff --git a/arch/powerpc/platforms/85xx/smp.c b/arch/powerpc/platforms/85xx/smp.c
index 04160a4cc699..a15f582300d8 100644
--- a/arch/powerpc/platforms/85xx/smp.c
+++ b/arch/powerpc/platforms/85xx/smp.c
@@ -46,6 +46,7 @@ smp_85xx_kick_cpu(int nr)
46 __iomem u32 *bptr_vaddr; 46 __iomem u32 *bptr_vaddr;
47 struct device_node *np; 47 struct device_node *np;
48 int n = 0; 48 int n = 0;
49 int ioremappable;
49 50
50 WARN_ON (nr < 0 || nr >= NR_CPUS); 51 WARN_ON (nr < 0 || nr >= NR_CPUS);
51 52
@@ -59,21 +60,37 @@ smp_85xx_kick_cpu(int nr)
59 return; 60 return;
60 } 61 }
61 62
63 /*
64 * A secondary core could be in a spinloop in the bootpage
65 * (0xfffff000), somewhere in highmem, or somewhere in lowmem.
66 * The bootpage and highmem can be accessed via ioremap(), but
67 * we need to directly access the spinloop if its in lowmem.
68 */
69 ioremappable = *cpu_rel_addr > virt_to_phys(high_memory);
70
62 /* Map the spin table */ 71 /* Map the spin table */
63 bptr_vaddr = ioremap(*cpu_rel_addr, SIZE_BOOT_ENTRY); 72 if (ioremappable)
73 bptr_vaddr = ioremap(*cpu_rel_addr, SIZE_BOOT_ENTRY);
74 else
75 bptr_vaddr = phys_to_virt(*cpu_rel_addr);
64 76
65 local_irq_save(flags); 77 local_irq_save(flags);
66 78
67 out_be32(bptr_vaddr + BOOT_ENTRY_PIR, nr); 79 out_be32(bptr_vaddr + BOOT_ENTRY_PIR, nr);
68 out_be32(bptr_vaddr + BOOT_ENTRY_ADDR_LOWER, __pa(__early_start)); 80 out_be32(bptr_vaddr + BOOT_ENTRY_ADDR_LOWER, __pa(__early_start));
69 81
82 if (!ioremappable)
83 flush_dcache_range((ulong)bptr_vaddr,
84 (ulong)(bptr_vaddr + SIZE_BOOT_ENTRY));
85
70 /* Wait a bit for the CPU to ack. */ 86 /* Wait a bit for the CPU to ack. */
71 while ((__secondary_hold_acknowledge != nr) && (++n < 1000)) 87 while ((__secondary_hold_acknowledge != nr) && (++n < 1000))
72 mdelay(1); 88 mdelay(1);
73 89
74 local_irq_restore(flags); 90 local_irq_restore(flags);
75 91
76 iounmap(bptr_vaddr); 92 if (ioremappable)
93 iounmap(bptr_vaddr);
77 94
78 pr_debug("waited %d msecs for CPU #%d.\n", n, nr); 95 pr_debug("waited %d msecs for CPU #%d.\n", n, nr);
79} 96}
diff --git a/arch/powerpc/platforms/cell/spufs/coredump.c b/arch/powerpc/platforms/cell/spufs/coredump.c
index c4d4a19235e0..eea120229cdb 100644
--- a/arch/powerpc/platforms/cell/spufs/coredump.c
+++ b/arch/powerpc/platforms/cell/spufs/coredump.c
@@ -54,7 +54,7 @@ static ssize_t do_coredump_read(int num, struct spu_context *ctx, void *buffer,
54 */ 54 */
55static int spufs_dump_write(struct file *file, const void *addr, int nr, loff_t *foffset) 55static int spufs_dump_write(struct file *file, const void *addr, int nr, loff_t *foffset)
56{ 56{
57 unsigned long limit = current->signal->rlim[RLIMIT_CORE].rlim_cur; 57 unsigned long limit = rlimit(RLIMIT_CORE);
58 ssize_t written; 58 ssize_t written;
59 59
60 if (*foffset + nr > limit) 60 if (*foffset + nr > limit)
diff --git a/arch/powerpc/platforms/iseries/vio.c b/arch/powerpc/platforms/iseries/vio.c
index 657b72f68493..2aa8b5631beb 100644
--- a/arch/powerpc/platforms/iseries/vio.c
+++ b/arch/powerpc/platforms/iseries/vio.c
@@ -474,6 +474,8 @@ static void __init get_viotape_info(struct device_node *vio_root)
474 struct vio_waitevent we; 474 struct vio_waitevent we;
475 int ret; 475 int ret;
476 476
477 init_completion(&we.com);
478
477 ret = viopath_open(viopath_hostLp, viomajorsubtype_tape, 2); 479 ret = viopath_open(viopath_hostLp, viomajorsubtype_tape, 2);
478 if (ret) { 480 if (ret) {
479 printk(KERN_WARNING "get_viotape_info: " 481 printk(KERN_WARNING "get_viotape_info: "
diff --git a/arch/powerpc/platforms/pseries/dlpar.c b/arch/powerpc/platforms/pseries/dlpar.c
index 67b7a10f9fce..37bce52526da 100644
--- a/arch/powerpc/platforms/pseries/dlpar.c
+++ b/arch/powerpc/platforms/pseries/dlpar.c
@@ -236,7 +236,9 @@ static struct device_node *derive_parent(const char *path)
236 236
237int dlpar_attach_node(struct device_node *dn) 237int dlpar_attach_node(struct device_node *dn)
238{ 238{
239#ifdef CONFIG_PROC_DEVICETREE
239 struct proc_dir_entry *ent; 240 struct proc_dir_entry *ent;
241#endif
240 int rc; 242 int rc;
241 243
242 of_node_set_flag(dn, OF_DYNAMIC); 244 of_node_set_flag(dn, OF_DYNAMIC);
@@ -267,10 +269,10 @@ int dlpar_attach_node(struct device_node *dn)
267 269
268int dlpar_detach_node(struct device_node *dn) 270int dlpar_detach_node(struct device_node *dn)
269{ 271{
272#ifdef CONFIG_PROC_DEVICETREE
270 struct device_node *parent = dn->parent; 273 struct device_node *parent = dn->parent;
271 struct property *prop = dn->properties; 274 struct property *prop = dn->properties;
272 275
273#ifdef CONFIG_PROC_DEVICETREE
274 while (prop) { 276 while (prop) {
275 remove_proc_entry(prop->name, dn->pde); 277 remove_proc_entry(prop->name, dn->pde);
276 prop = prop->next; 278 prop = prop->next;
@@ -344,20 +346,6 @@ int dlpar_release_drc(u32 drc_index)
344 346
345#ifdef CONFIG_ARCH_CPU_PROBE_RELEASE 347#ifdef CONFIG_ARCH_CPU_PROBE_RELEASE
346 348
347static DEFINE_MUTEX(pseries_cpu_hotplug_mutex);
348
349void cpu_hotplug_driver_lock(void)
350__acquires(pseries_cpu_hotplug_mutex)
351{
352 mutex_lock(&pseries_cpu_hotplug_mutex);
353}
354
355void cpu_hotplug_driver_unlock(void)
356__releases(pseries_cpu_hotplug_mutex)
357{
358 mutex_unlock(&pseries_cpu_hotplug_mutex);
359}
360
361static int dlpar_online_cpu(struct device_node *dn) 349static int dlpar_online_cpu(struct device_node *dn)
362{ 350{
363 int rc = 0; 351 int rc = 0;
diff --git a/arch/powerpc/platforms/pseries/xics.c b/arch/powerpc/platforms/pseries/xics.c
index b9b9e11609ec..f5f79196721c 100644
--- a/arch/powerpc/platforms/pseries/xics.c
+++ b/arch/powerpc/platforms/pseries/xics.c
@@ -163,14 +163,13 @@ static inline void lpar_qirr_info(int n_cpu , u8 value)
163/* Interface to generic irq subsystem */ 163/* Interface to generic irq subsystem */
164 164
165#ifdef CONFIG_SMP 165#ifdef CONFIG_SMP
166static int get_irq_server(unsigned int virq, unsigned int strict_check) 166static int get_irq_server(unsigned int virq, cpumask_t cpumask,
167 unsigned int strict_check)
167{ 168{
168 int server; 169 int server;
169 /* For the moment only implement delivery to all cpus or one cpu */ 170 /* For the moment only implement delivery to all cpus or one cpu */
170 cpumask_t cpumask;
171 cpumask_t tmp = CPU_MASK_NONE; 171 cpumask_t tmp = CPU_MASK_NONE;
172 172
173 cpumask_copy(&cpumask, irq_to_desc(virq)->affinity);
174 if (!distribute_irqs) 173 if (!distribute_irqs)
175 return default_server; 174 return default_server;
176 175
@@ -192,10 +191,7 @@ static int get_irq_server(unsigned int virq, unsigned int strict_check)
192 return default_server; 191 return default_server;
193} 192}
194#else 193#else
195static int get_irq_server(unsigned int virq, unsigned int strict_check) 194#define get_irq_server(virq, cpumask, strict_check) (default_server)
196{
197 return default_server;
198}
199#endif 195#endif
200 196
201static void xics_unmask_irq(unsigned int virq) 197static void xics_unmask_irq(unsigned int virq)
@@ -211,7 +207,7 @@ static void xics_unmask_irq(unsigned int virq)
211 if (irq == XICS_IPI || irq == XICS_IRQ_SPURIOUS) 207 if (irq == XICS_IPI || irq == XICS_IRQ_SPURIOUS)
212 return; 208 return;
213 209
214 server = get_irq_server(virq, 0); 210 server = get_irq_server(virq, *(irq_to_desc(virq)->affinity), 0);
215 211
216 call_status = rtas_call(ibm_set_xive, 3, 1, NULL, irq, server, 212 call_status = rtas_call(ibm_set_xive, 3, 1, NULL, irq, server,
217 DEFAULT_PRIORITY); 213 DEFAULT_PRIORITY);
@@ -405,7 +401,7 @@ static int xics_set_affinity(unsigned int virq, const struct cpumask *cpumask)
405 * For the moment only implement delivery to all cpus or one cpu. 401 * For the moment only implement delivery to all cpus or one cpu.
406 * Get current irq_server for the given irq 402 * Get current irq_server for the given irq
407 */ 403 */
408 irq_server = get_irq_server(virq, 1); 404 irq_server = get_irq_server(virq, *cpumask, 1);
409 if (irq_server == -1) { 405 if (irq_server == -1) {
410 char cpulist[128]; 406 char cpulist[128];
411 cpumask_scnprintf(cpulist, sizeof(cpulist), cpumask); 407 cpumask_scnprintf(cpulist, sizeof(cpulist), cpumask);
@@ -788,9 +784,13 @@ static void xics_set_cpu_priority(unsigned char cppr)
788{ 784{
789 struct xics_cppr *os_cppr = &__get_cpu_var(xics_cppr); 785 struct xics_cppr *os_cppr = &__get_cpu_var(xics_cppr);
790 786
791 BUG_ON(os_cppr->index != 0); 787 /*
788 * we only really want to set the priority when there's
789 * just one cppr value on the stack
790 */
791 WARN_ON(os_cppr->index != 0);
792 792
793 os_cppr->stack[os_cppr->index] = cppr; 793 os_cppr->stack[0] = cppr;
794 794
795 if (firmware_has_feature(FW_FEATURE_LPAR)) 795 if (firmware_has_feature(FW_FEATURE_LPAR))
796 lpar_cppr_info(cppr); 796 lpar_cppr_info(cppr);
@@ -825,8 +825,14 @@ void xics_setup_cpu(void)
825 825
826void xics_teardown_cpu(void) 826void xics_teardown_cpu(void)
827{ 827{
828 struct xics_cppr *os_cppr = &__get_cpu_var(xics_cppr);
828 int cpu = smp_processor_id(); 829 int cpu = smp_processor_id();
829 830
831 /*
832 * we have to reset the cppr index to 0 because we're
833 * not going to return from the IPI
834 */
835 os_cppr->index = 0;
830 xics_set_cpu_priority(0); 836 xics_set_cpu_priority(0);
831 837
832 /* Clear any pending IPI request */ 838 /* Clear any pending IPI request */
diff --git a/arch/powerpc/sysdev/ppc4xx_pci.c b/arch/powerpc/sysdev/ppc4xx_pci.c
index 6ff9d71b4c0d..8aa33021e50b 100644
--- a/arch/powerpc/sysdev/ppc4xx_pci.c
+++ b/arch/powerpc/sysdev/ppc4xx_pci.c
@@ -569,7 +569,8 @@ static void __init ppc4xx_probe_pcix_bridge(struct device_node *np)
569 hose->last_busno = bus_range ? bus_range[1] : 0xff; 569 hose->last_busno = bus_range ? bus_range[1] : 0xff;
570 570
571 /* Setup config space */ 571 /* Setup config space */
572 setup_indirect_pci(hose, rsrc_cfg.start, rsrc_cfg.start + 0x4, 0); 572 setup_indirect_pci(hose, rsrc_cfg.start, rsrc_cfg.start + 0x4,
573 PPC_INDIRECT_TYPE_SET_CFG_TYPE);
573 574
574 /* Disable all windows */ 575 /* Disable all windows */
575 writel(0, reg + PCIX0_POM0SA); 576 writel(0, reg + PCIX0_POM0SA);
diff --git a/arch/s390/defconfig b/arch/s390/defconfig
index f4e53c6708dc..b416aa11b91e 100644
--- a/arch/s390/defconfig
+++ b/arch/s390/defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.31 3# Linux kernel version: 2.6.33-rc2
4# Tue Sep 22 17:43:13 2009 4# Mon Jan 4 09:03:07 2010
5# 5#
6CONFIG_SCHED_MC=y 6CONFIG_SCHED_MC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -51,6 +51,7 @@ CONFIG_AUDIT=y
51# 51#
52CONFIG_TREE_RCU=y 52CONFIG_TREE_RCU=y
53# CONFIG_TREE_PREEMPT_RCU is not set 53# CONFIG_TREE_PREEMPT_RCU is not set
54# CONFIG_TINY_RCU is not set
54# CONFIG_RCU_TRACE is not set 55# CONFIG_RCU_TRACE is not set
55CONFIG_RCU_FANOUT=64 56CONFIG_RCU_FANOUT=64
56# CONFIG_RCU_FANOUT_EXACT is not set 57# CONFIG_RCU_FANOUT_EXACT is not set
@@ -113,7 +114,6 @@ CONFIG_HAVE_PERF_EVENTS=y
113# CONFIG_PERF_EVENTS is not set 114# CONFIG_PERF_EVENTS is not set
114# CONFIG_PERF_COUNTERS is not set 115# CONFIG_PERF_COUNTERS is not set
115CONFIG_VM_EVENT_COUNTERS=y 116CONFIG_VM_EVENT_COUNTERS=y
116# CONFIG_STRIP_ASM_SYMS is not set
117# CONFIG_COMPAT_BRK is not set 117# CONFIG_COMPAT_BRK is not set
118CONFIG_SLAB=y 118CONFIG_SLAB=y
119# CONFIG_SLUB is not set 119# CONFIG_SLUB is not set
@@ -149,21 +149,78 @@ CONFIG_STOP_MACHINE=y
149CONFIG_BLOCK=y 149CONFIG_BLOCK=y
150CONFIG_BLK_DEV_BSG=y 150CONFIG_BLK_DEV_BSG=y
151# CONFIG_BLK_DEV_INTEGRITY is not set 151# CONFIG_BLK_DEV_INTEGRITY is not set
152# CONFIG_BLK_CGROUP is not set
152CONFIG_BLOCK_COMPAT=y 153CONFIG_BLOCK_COMPAT=y
153 154
154# 155#
155# IO Schedulers 156# IO Schedulers
156# 157#
157CONFIG_IOSCHED_NOOP=y 158CONFIG_IOSCHED_NOOP=y
158CONFIG_IOSCHED_AS=y
159CONFIG_IOSCHED_DEADLINE=y 159CONFIG_IOSCHED_DEADLINE=y
160CONFIG_IOSCHED_CFQ=y 160CONFIG_IOSCHED_CFQ=y
161# CONFIG_DEFAULT_AS is not set 161# CONFIG_CFQ_GROUP_IOSCHED is not set
162CONFIG_DEFAULT_DEADLINE=y 162CONFIG_DEFAULT_DEADLINE=y
163# CONFIG_DEFAULT_CFQ is not set 163# CONFIG_DEFAULT_CFQ is not set
164# CONFIG_DEFAULT_NOOP is not set 164# CONFIG_DEFAULT_NOOP is not set
165CONFIG_DEFAULT_IOSCHED="deadline" 165CONFIG_DEFAULT_IOSCHED="deadline"
166CONFIG_PREEMPT_NOTIFIERS=y 166CONFIG_PREEMPT_NOTIFIERS=y
167CONFIG_ARCH_INLINE_SPIN_TRYLOCK=y
168CONFIG_ARCH_INLINE_SPIN_TRYLOCK_BH=y
169CONFIG_ARCH_INLINE_SPIN_LOCK=y
170CONFIG_ARCH_INLINE_SPIN_LOCK_BH=y
171CONFIG_ARCH_INLINE_SPIN_LOCK_IRQ=y
172CONFIG_ARCH_INLINE_SPIN_LOCK_IRQSAVE=y
173CONFIG_ARCH_INLINE_SPIN_UNLOCK=y
174CONFIG_ARCH_INLINE_SPIN_UNLOCK_BH=y
175CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQ=y
176CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE=y
177CONFIG_ARCH_INLINE_READ_TRYLOCK=y
178CONFIG_ARCH_INLINE_READ_LOCK=y
179CONFIG_ARCH_INLINE_READ_LOCK_BH=y
180CONFIG_ARCH_INLINE_READ_LOCK_IRQ=y
181CONFIG_ARCH_INLINE_READ_LOCK_IRQSAVE=y
182CONFIG_ARCH_INLINE_READ_UNLOCK=y
183CONFIG_ARCH_INLINE_READ_UNLOCK_BH=y
184CONFIG_ARCH_INLINE_READ_UNLOCK_IRQ=y
185CONFIG_ARCH_INLINE_READ_UNLOCK_IRQRESTORE=y
186CONFIG_ARCH_INLINE_WRITE_TRYLOCK=y
187CONFIG_ARCH_INLINE_WRITE_LOCK=y
188CONFIG_ARCH_INLINE_WRITE_LOCK_BH=y
189CONFIG_ARCH_INLINE_WRITE_LOCK_IRQ=y
190CONFIG_ARCH_INLINE_WRITE_LOCK_IRQSAVE=y
191CONFIG_ARCH_INLINE_WRITE_UNLOCK=y
192CONFIG_ARCH_INLINE_WRITE_UNLOCK_BH=y
193CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQ=y
194CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE=y
195# CONFIG_INLINE_SPIN_TRYLOCK is not set
196# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
197# CONFIG_INLINE_SPIN_LOCK is not set
198# CONFIG_INLINE_SPIN_LOCK_BH is not set
199# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
200# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
201# CONFIG_INLINE_SPIN_UNLOCK is not set
202# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
203# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
204# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
205# CONFIG_INLINE_READ_TRYLOCK is not set
206# CONFIG_INLINE_READ_LOCK is not set
207# CONFIG_INLINE_READ_LOCK_BH is not set
208# CONFIG_INLINE_READ_LOCK_IRQ is not set
209# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
210# CONFIG_INLINE_READ_UNLOCK is not set
211# CONFIG_INLINE_READ_UNLOCK_BH is not set
212# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
213# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
214# CONFIG_INLINE_WRITE_TRYLOCK is not set
215# CONFIG_INLINE_WRITE_LOCK is not set
216# CONFIG_INLINE_WRITE_LOCK_BH is not set
217# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
218# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
219# CONFIG_INLINE_WRITE_UNLOCK is not set
220# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
221# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
222# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
223# CONFIG_MUTEX_SPIN_ON_OWNER is not set
167CONFIG_FREEZER=y 224CONFIG_FREEZER=y
168 225
169# 226#
@@ -227,14 +284,13 @@ CONFIG_MEMORY_HOTPLUG=y
227CONFIG_MEMORY_HOTPLUG_SPARSE=y 284CONFIG_MEMORY_HOTPLUG_SPARSE=y
228CONFIG_MEMORY_HOTREMOVE=y 285CONFIG_MEMORY_HOTREMOVE=y
229CONFIG_PAGEFLAGS_EXTENDED=y 286CONFIG_PAGEFLAGS_EXTENDED=y
230CONFIG_SPLIT_PTLOCK_CPUS=4 287CONFIG_SPLIT_PTLOCK_CPUS=999999
231CONFIG_MIGRATION=y 288CONFIG_MIGRATION=y
232CONFIG_PHYS_ADDR_T_64BIT=y 289CONFIG_PHYS_ADDR_T_64BIT=y
233CONFIG_ZONE_DMA_FLAG=1 290CONFIG_ZONE_DMA_FLAG=1
234CONFIG_BOUNCE=y 291CONFIG_BOUNCE=y
235CONFIG_VIRT_TO_BUS=y 292CONFIG_VIRT_TO_BUS=y
236CONFIG_HAVE_MLOCK=y 293# CONFIG_KSM is not set
237CONFIG_HAVE_MLOCKED_PAGE_BIT=y
238CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 294CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
239 295
240# 296#
@@ -339,6 +395,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y
339CONFIG_INET6_XFRM_MODE_BEET=y 395CONFIG_INET6_XFRM_MODE_BEET=y
340# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 396# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
341CONFIG_IPV6_SIT=y 397CONFIG_IPV6_SIT=y
398# CONFIG_IPV6_SIT_6RD is not set
342CONFIG_IPV6_NDISC_NODETYPE=y 399CONFIG_IPV6_NDISC_NODETYPE=y
343# CONFIG_IPV6_TUNNEL is not set 400# CONFIG_IPV6_TUNNEL is not set
344# CONFIG_IPV6_MULTIPLE_TABLES is not set 401# CONFIG_IPV6_MULTIPLE_TABLES is not set
@@ -504,6 +561,10 @@ CONFIG_BLK_DEV=y
504# CONFIG_BLK_DEV_COW_COMMON is not set 561# CONFIG_BLK_DEV_COW_COMMON is not set
505CONFIG_BLK_DEV_LOOP=m 562CONFIG_BLK_DEV_LOOP=m
506# CONFIG_BLK_DEV_CRYPTOLOOP is not set 563# CONFIG_BLK_DEV_CRYPTOLOOP is not set
564
565#
566# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
567#
507CONFIG_BLK_DEV_NBD=m 568CONFIG_BLK_DEV_NBD=m
508# CONFIG_BLK_DEV_OSD is not set 569# CONFIG_BLK_DEV_OSD is not set
509CONFIG_BLK_DEV_RAM=y 570CONFIG_BLK_DEV_RAM=y
@@ -710,7 +771,6 @@ CONFIG_S390_VMUR=m
710# CONFIG_PPS is not set 771# CONFIG_PPS is not set
711# CONFIG_POWER_SUPPLY is not set 772# CONFIG_POWER_SUPPLY is not set
712# CONFIG_THERMAL is not set 773# CONFIG_THERMAL is not set
713# CONFIG_THERMAL_HWMON is not set
714# CONFIG_WATCHDOG is not set 774# CONFIG_WATCHDOG is not set
715# CONFIG_REGULATOR is not set 775# CONFIG_REGULATOR is not set
716# CONFIG_MEMSTICK is not set 776# CONFIG_MEMSTICK is not set
@@ -864,6 +924,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
864CONFIG_ENABLE_MUST_CHECK=y 924CONFIG_ENABLE_MUST_CHECK=y
865CONFIG_FRAME_WARN=2048 925CONFIG_FRAME_WARN=2048
866CONFIG_MAGIC_SYSRQ=y 926CONFIG_MAGIC_SYSRQ=y
927# CONFIG_STRIP_ASM_SYMS is not set
867# CONFIG_UNUSED_SYMBOLS is not set 928# CONFIG_UNUSED_SYMBOLS is not set
868CONFIG_DEBUG_FS=y 929CONFIG_DEBUG_FS=y
869# CONFIG_HEADERS_CHECK is not set 930# CONFIG_HEADERS_CHECK is not set
@@ -931,7 +992,6 @@ CONFIG_BRANCH_PROFILE_NONE=y
931CONFIG_SAMPLES=y 992CONFIG_SAMPLES=y
932# CONFIG_SAMPLE_KOBJECT is not set 993# CONFIG_SAMPLE_KOBJECT is not set
933# CONFIG_SAMPLE_KPROBES is not set 994# CONFIG_SAMPLE_KPROBES is not set
934# CONFIG_KMEMCHECK is not set
935 995
936# 996#
937# Security options 997# Security options
@@ -939,7 +999,11 @@ CONFIG_SAMPLES=y
939# CONFIG_KEYS is not set 999# CONFIG_KEYS is not set
940# CONFIG_SECURITY is not set 1000# CONFIG_SECURITY is not set
941# CONFIG_SECURITYFS is not set 1001# CONFIG_SECURITYFS is not set
942# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1002# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1003# CONFIG_DEFAULT_SECURITY_SMACK is not set
1004# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1005CONFIG_DEFAULT_SECURITY_DAC=y
1006CONFIG_DEFAULT_SECURITY=""
943CONFIG_CRYPTO=y 1007CONFIG_CRYPTO=y
944 1008
945# 1009#
diff --git a/arch/s390/include/asm/bug.h b/arch/s390/include/asm/bug.h
index efb74fd5156e..b1066b9fb5f8 100644
--- a/arch/s390/include/asm/bug.h
+++ b/arch/s390/include/asm/bug.h
@@ -52,6 +52,10 @@
52 unreachable(); \ 52 unreachable(); \
53} while (0) 53} while (0)
54 54
55#define __WARN() do { \
56 __EMIT_BUG(BUGFLAG_WARNING); \
57} while (0)
58
55#define WARN_ON(x) ({ \ 59#define WARN_ON(x) ({ \
56 int __ret_warn_on = !!(x); \ 60 int __ret_warn_on = !!(x); \
57 if (__builtin_constant_p(__ret_warn_on)) { \ 61 if (__builtin_constant_p(__ret_warn_on)) { \
diff --git a/arch/s390/include/asm/irqflags.h b/arch/s390/include/asm/irqflags.h
index 3f26131120b7..c2fb432f576a 100644
--- a/arch/s390/include/asm/irqflags.h
+++ b/arch/s390/include/asm/irqflags.h
@@ -1,14 +1,12 @@
1/* 1/*
2 * include/asm-s390/irqflags.h 2 * Copyright IBM Corp. 2006,2010
3 * 3 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
4 * Copyright (C) IBM Corp. 2006
5 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
6 */ 4 */
7 5
8#ifndef __ASM_IRQFLAGS_H 6#ifndef __ASM_IRQFLAGS_H
9#define __ASM_IRQFLAGS_H 7#define __ASM_IRQFLAGS_H
10 8
11#ifdef __KERNEL__ 9#include <linux/types.h>
12 10
13#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 2) 11#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 2)
14 12
@@ -102,5 +100,4 @@ static inline int raw_irqs_disabled_flags(unsigned long flags)
102/* For spinlocks etc */ 100/* For spinlocks etc */
103#define raw_local_irq_save(x) ((x) = raw_local_irq_disable()) 101#define raw_local_irq_save(x) ((x) = raw_local_irq_disable())
104 102
105#endif /* __KERNEL__ */
106#endif /* __ASM_IRQFLAGS_H */ 103#endif /* __ASM_IRQFLAGS_H */
diff --git a/arch/s390/include/asm/lowcore.h b/arch/s390/include/asm/lowcore.h
index f2ef4b619ce1..c25dfac7dd76 100644
--- a/arch/s390/include/asm/lowcore.h
+++ b/arch/s390/include/asm/lowcore.h
@@ -293,12 +293,12 @@ struct _lowcore
293 __u64 clock_comparator; /* 0x02d0 */ 293 __u64 clock_comparator; /* 0x02d0 */
294 __u32 machine_flags; /* 0x02d8 */ 294 __u32 machine_flags; /* 0x02d8 */
295 __u32 ftrace_func; /* 0x02dc */ 295 __u32 ftrace_func; /* 0x02dc */
296 __u8 pad_0x02f0[0x0300-0x02f0]; /* 0x02f0 */ 296 __u8 pad_0x02e0[0x0300-0x02e0]; /* 0x02e0 */
297 297
298 /* Interrupt response block */ 298 /* Interrupt response block */
299 __u8 irb[64]; /* 0x0300 */ 299 __u8 irb[64]; /* 0x0300 */
300 300
301 __u8 pad_0x0400[0x0e00-0x0400]; /* 0x0400 */ 301 __u8 pad_0x0340[0x0e00-0x0340]; /* 0x0340 */
302 302
303 /* 303 /*
304 * 0xe00 contains the address of the IPL Parameter Information 304 * 0xe00 contains the address of the IPL Parameter Information
diff --git a/arch/s390/include/asm/param.h b/arch/s390/include/asm/param.h
index 34aaa4603347..c616821bf2ac 100644
--- a/arch/s390/include/asm/param.h
+++ b/arch/s390/include/asm/param.h
@@ -1,30 +1,6 @@
1/*
2 * include/asm-s390/param.h
3 *
4 * S390 version
5 *
6 * Derived from "include/asm-i386/param.h"
7 */
8
9#ifndef _ASMS390_PARAM_H 1#ifndef _ASMS390_PARAM_H
10#define _ASMS390_PARAM_H 2#define _ASMS390_PARAM_H
11 3
12#ifdef __KERNEL__ 4#include <asm-generic/param.h>
13# define HZ CONFIG_HZ /* Internal kernel timer frequency */
14# define USER_HZ 100 /* .. some user interfaces are in "ticks" */
15# define CLOCKS_PER_SEC (USER_HZ) /* like times() */
16#endif
17
18#ifndef HZ
19#define HZ 100
20#endif
21
22#define EXEC_PAGESIZE 4096
23
24#ifndef NOGROUP
25#define NOGROUP (-1)
26#endif
27
28#define MAXHOSTNAMELEN 64 /* max length of hostname */
29 5
30#endif 6#endif /* _ASMS390_PARAM_H */
diff --git a/arch/s390/include/asm/sigp.h b/arch/s390/include/asm/sigp.h
index ec403d4304f8..f72d611f7e13 100644
--- a/arch/s390/include/asm/sigp.h
+++ b/arch/s390/include/asm/sigp.h
@@ -15,11 +15,19 @@
15#ifndef __SIGP__ 15#ifndef __SIGP__
16#define __SIGP__ 16#define __SIGP__
17 17
18#include <asm/ptrace.h> 18#include <asm/system.h>
19#include <asm/atomic.h>
20 19
21/* get real cpu address from logical cpu number */ 20/* get real cpu address from logical cpu number */
22extern volatile int __cpu_logical_map[]; 21extern int __cpu_logical_map[];
22
23static inline int cpu_logical_map(int cpu)
24{
25#ifdef CONFIG_SMP
26 return __cpu_logical_map[cpu];
27#else
28 return stap();
29#endif
30}
23 31
24typedef enum 32typedef enum
25{ 33{
@@ -79,7 +87,7 @@ signal_processor(__u16 cpu_addr, sigp_order_code order_code)
79 " ipm %0\n" 87 " ipm %0\n"
80 " srl %0,28\n" 88 " srl %0,28\n"
81 : "=d" (ccode) 89 : "=d" (ccode)
82 : "d" (reg1), "d" (__cpu_logical_map[cpu_addr]), 90 : "d" (reg1), "d" (cpu_logical_map(cpu_addr)),
83 "a" (order_code) : "cc" , "memory"); 91 "a" (order_code) : "cc" , "memory");
84 return ccode; 92 return ccode;
85} 93}
@@ -98,7 +106,7 @@ signal_processor_p(__u32 parameter, __u16 cpu_addr, sigp_order_code order_code)
98 " ipm %0\n" 106 " ipm %0\n"
99 " srl %0,28\n" 107 " srl %0,28\n"
100 : "=d" (ccode) 108 : "=d" (ccode)
101 : "d" (reg1), "d" (__cpu_logical_map[cpu_addr]), 109 : "d" (reg1), "d" (cpu_logical_map(cpu_addr)),
102 "a" (order_code) : "cc" , "memory"); 110 "a" (order_code) : "cc" , "memory");
103 return ccode; 111 return ccode;
104} 112}
@@ -118,7 +126,7 @@ signal_processor_ps(__u32 *statusptr, __u32 parameter, __u16 cpu_addr,
118 " ipm %0\n" 126 " ipm %0\n"
119 " srl %0,28\n" 127 " srl %0,28\n"
120 : "=d" (ccode), "+d" (reg1) 128 : "=d" (ccode), "+d" (reg1)
121 : "d" (__cpu_logical_map[cpu_addr]), "a" (order_code) 129 : "d" (cpu_logical_map(cpu_addr)), "a" (order_code)
122 : "cc" , "memory"); 130 : "cc" , "memory");
123 *statusptr = reg1; 131 *statusptr = reg1;
124 return ccode; 132 return ccode;
diff --git a/arch/s390/include/asm/thread_info.h b/arch/s390/include/asm/thread_info.h
index 07eb61b2fb3a..66069e736842 100644
--- a/arch/s390/include/asm/thread_info.h
+++ b/arch/s390/include/asm/thread_info.h
@@ -93,13 +93,12 @@ static inline struct thread_info *current_thread_info(void)
93#define TIF_SYSCALL_AUDIT 9 /* syscall auditing active */ 93#define TIF_SYSCALL_AUDIT 9 /* syscall auditing active */
94#define TIF_SECCOMP 10 /* secure computing */ 94#define TIF_SECCOMP 10 /* secure computing */
95#define TIF_SYSCALL_TRACEPOINT 11 /* syscall tracepoint instrumentation */ 95#define TIF_SYSCALL_TRACEPOINT 11 /* syscall tracepoint instrumentation */
96#define TIF_USEDFPU 16 /* FPU was used by this task this quantum (SMP) */ 96#define TIF_POLLING_NRFLAG 16 /* true if poll_idle() is polling
97#define TIF_POLLING_NRFLAG 17 /* true if poll_idle() is polling
98 TIF_NEED_RESCHED */ 97 TIF_NEED_RESCHED */
99#define TIF_31BIT 18 /* 32bit process */ 98#define TIF_31BIT 17 /* 32bit process */
100#define TIF_MEMDIE 19 99#define TIF_MEMDIE 18
101#define TIF_RESTORE_SIGMASK 20 /* restore signal mask in do_signal() */ 100#define TIF_RESTORE_SIGMASK 19 /* restore signal mask in do_signal() */
102#define TIF_FREEZE 21 /* thread is freezing for suspend */ 101#define TIF_FREEZE 20 /* thread is freezing for suspend */
103 102
104#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME) 103#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME)
105#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) 104#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK)
@@ -112,7 +111,6 @@ static inline struct thread_info *current_thread_info(void)
112#define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT) 111#define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT)
113#define _TIF_SECCOMP (1<<TIF_SECCOMP) 112#define _TIF_SECCOMP (1<<TIF_SECCOMP)
114#define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT) 113#define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT)
115#define _TIF_USEDFPU (1<<TIF_USEDFPU)
116#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) 114#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
117#define _TIF_31BIT (1<<TIF_31BIT) 115#define _TIF_31BIT (1<<TIF_31BIT)
118#define _TIF_FREEZE (1<<TIF_FREEZE) 116#define _TIF_FREEZE (1<<TIF_FREEZE)
diff --git a/arch/s390/include/asm/unistd.h b/arch/s390/include/asm/unistd.h
index 192a7203a14f..6e9f049fa823 100644
--- a/arch/s390/include/asm/unistd.h
+++ b/arch/s390/include/asm/unistd.h
@@ -269,8 +269,7 @@
269#define __NR_pwritev 329 269#define __NR_pwritev 329
270#define __NR_rt_tgsigqueueinfo 330 270#define __NR_rt_tgsigqueueinfo 330
271#define __NR_perf_event_open 331 271#define __NR_perf_event_open 331
272#define __NR_recvmmsg 332 272#define NR_syscalls 332
273#define NR_syscalls 333
274 273
275/* 274/*
276 * There are some system calls that are not present on 64 bit, some 275 * There are some system calls that are not present on 64 bit, some
@@ -377,6 +376,9 @@
377#define __IGNORE_migrate_pages 376#define __IGNORE_migrate_pages
378#define __IGNORE_move_pages 377#define __IGNORE_move_pages
379 378
379/* Ignore system calls that are also reachable via sys_socket */
380#define __IGNORE_recvmmsg
381
380#define __ARCH_WANT_IPC_PARSE_VERSION 382#define __ARCH_WANT_IPC_PARSE_VERSION
381#define __ARCH_WANT_OLD_READDIR 383#define __ARCH_WANT_OLD_READDIR
382#define __ARCH_WANT_SYS_ALARM 384#define __ARCH_WANT_SYS_ALARM
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c
index 22c9e557bb22..11c3aba664ea 100644
--- a/arch/s390/kernel/compat_linux.c
+++ b/arch/s390/kernel/compat_linux.c
@@ -616,44 +616,35 @@ asmlinkage long sys32_fstatat64(unsigned int dfd, char __user *filename,
616 */ 616 */
617 617
618struct mmap_arg_struct_emu31 { 618struct mmap_arg_struct_emu31 {
619 u32 addr; 619 compat_ulong_t addr;
620 u32 len; 620 compat_ulong_t len;
621 u32 prot; 621 compat_ulong_t prot;
622 u32 flags; 622 compat_ulong_t flags;
623 u32 fd; 623 compat_ulong_t fd;
624 u32 offset; 624 compat_ulong_t offset;
625}; 625};
626 626
627asmlinkage unsigned long 627asmlinkage unsigned long old32_mmap(struct mmap_arg_struct_emu31 __user *arg)
628old32_mmap(struct mmap_arg_struct_emu31 __user *arg)
629{ 628{
630 struct mmap_arg_struct_emu31 a; 629 struct mmap_arg_struct_emu31 a;
631 int error = -EFAULT;
632 630
633 if (copy_from_user(&a, arg, sizeof(a))) 631 if (copy_from_user(&a, arg, sizeof(a)))
634 goto out; 632 return -EFAULT;
635
636 error = -EINVAL;
637 if (a.offset & ~PAGE_MASK) 633 if (a.offset & ~PAGE_MASK)
638 goto out; 634 return -EINVAL;
639 635 a.addr = (unsigned long) compat_ptr(a.addr);
640 error = sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, 636 return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd,
641 a.offset >> PAGE_SHIFT); 637 a.offset >> PAGE_SHIFT);
642out:
643 return error;
644} 638}
645 639
646asmlinkage long 640asmlinkage long sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg)
647sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg)
648{ 641{
649 struct mmap_arg_struct_emu31 a; 642 struct mmap_arg_struct_emu31 a;
650 int error = -EFAULT;
651 643
652 if (copy_from_user(&a, arg, sizeof(a))) 644 if (copy_from_user(&a, arg, sizeof(a)))
653 goto out; 645 return -EFAULT;
654 error = sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset); 646 a.addr = (unsigned long) compat_ptr(a.addr);
655out: 647 return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset);
656 return error;
657} 648}
658 649
659asmlinkage long sys32_read(unsigned int fd, char __user * buf, size_t count) 650asmlinkage long sys32_read(unsigned int fd, char __user * buf, size_t count)
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S
index faeaccc7d7d9..30de2d0e52bb 100644
--- a/arch/s390/kernel/compat_wrapper.S
+++ b/arch/s390/kernel/compat_wrapper.S
@@ -1853,12 +1853,3 @@ sys32_execve_wrapper:
1853 llgtr %r3,%r3 # compat_uptr_t * 1853 llgtr %r3,%r3 # compat_uptr_t *
1854 llgtr %r4,%r4 # compat_uptr_t * 1854 llgtr %r4,%r4 # compat_uptr_t *
1855 jg sys32_execve # branch to system call 1855 jg sys32_execve # branch to system call
1856
1857 .globl compat_sys_recvmmsg_wrapper
1858compat_sys_recvmmsg_wrapper:
1859 lgfr %r2,%r2 # int
1860 llgtr %r3,%r3 # struct compat_mmsghdr *
1861 llgfr %r4,%r4 # unsigned int
1862 llgfr %r5,%r5 # unsigned int
1863 llgtr %r6,%r6 # struct compat_timespec *
1864 jg compat_sys_recvmmsg
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S
index 48215d15762b..e8ef21c51bbe 100644
--- a/arch/s390/kernel/entry.S
+++ b/arch/s390/kernel/entry.S
@@ -571,6 +571,7 @@ pgm_svcper:
571 mvc __THREAD_per+__PER_access_id(1,%r8),__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 lm %r2,%r6,SP_R2(%r15) # load svc arguments
574 stosm __SF_EMPTY(%r15),0x03 # reenable interrupts 575 stosm __SF_EMPTY(%r15),0x03 # reenable interrupts
575 b BASED(sysc_do_svc) 576 b BASED(sysc_do_svc)
576 577
diff --git a/arch/s390/kernel/entry64.S b/arch/s390/kernel/entry64.S
index 9aff1d449b6e..f33658f09dd7 100644
--- a/arch/s390/kernel/entry64.S
+++ b/arch/s390/kernel/entry64.S
@@ -549,6 +549,7 @@ pgm_svcper:
549 mvc __THREAD_per+__PER_access_id(1,%r8),__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 lmg %r2,%r6,SP_R2(%r15) # load svc arguments
552 stosm __SF_EMPTY(%r15),0x03 # reenable interrupts 553 stosm __SF_EMPTY(%r15),0x03 # reenable interrupts
553 j sysc_do_svc 554 j sysc_do_svc
554 555
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
index 5417eb57271a..00b6d1d292f2 100644
--- a/arch/s390/kernel/process.c
+++ b/arch/s390/kernel/process.c
@@ -153,8 +153,6 @@ void exit_thread(void)
153 153
154void flush_thread(void) 154void flush_thread(void)
155{ 155{
156 clear_used_math();
157 clear_tsk_thread_flag(current, TIF_USEDFPU);
158} 156}
159 157
160void release_thread(struct task_struct *dead_task) 158void release_thread(struct task_struct *dead_task)
@@ -217,6 +215,7 @@ int copy_thread(unsigned long clone_flags, unsigned long new_stackp,
217 p->thread.mm_segment = get_fs(); 215 p->thread.mm_segment = get_fs();
218 /* Don't copy debug registers */ 216 /* Don't copy debug registers */
219 memset(&p->thread.per_info, 0, sizeof(p->thread.per_info)); 217 memset(&p->thread.per_info, 0, sizeof(p->thread.per_info));
218 clear_tsk_thread_flag(p, TIF_SINGLE_STEP);
220 /* Initialize per thread user and system timer values */ 219 /* Initialize per thread user and system timer values */
221 ti = task_thread_info(p); 220 ti = task_thread_info(p);
222 ti->user_timer = 0; 221 ti->user_timer = 0;
diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c
index 13815d39f7dd..7cf464234419 100644
--- a/arch/s390/kernel/ptrace.c
+++ b/arch/s390/kernel/ptrace.c
@@ -65,6 +65,7 @@ FixPerRegisters(struct task_struct *task)
65{ 65{
66 struct pt_regs *regs; 66 struct pt_regs *regs;
67 per_struct *per_info; 67 per_struct *per_info;
68 per_cr_words cr_words;
68 69
69 regs = task_pt_regs(task); 70 regs = task_pt_regs(task);
70 per_info = (per_struct *) &task->thread.per_info; 71 per_info = (per_struct *) &task->thread.per_info;
@@ -98,6 +99,13 @@ FixPerRegisters(struct task_struct *task)
98 per_info->control_regs.bits.storage_alt_space_ctl = 1; 99 per_info->control_regs.bits.storage_alt_space_ctl = 1;
99 else 100 else
100 per_info->control_regs.bits.storage_alt_space_ctl = 0; 101 per_info->control_regs.bits.storage_alt_space_ctl = 0;
102
103 if (task == current) {
104 __ctl_store(cr_words, 9, 11);
105 if (memcmp(&cr_words, &per_info->control_regs.words,
106 sizeof(cr_words)) != 0)
107 __ctl_load(per_info->control_regs.words, 9, 11);
108 }
101} 109}
102 110
103void user_enable_single_step(struct task_struct *task) 111void user_enable_single_step(struct task_struct *task)
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
index 0663287fa1b3..8d8957b38ab3 100644
--- a/arch/s390/kernel/setup.c
+++ b/arch/s390/kernel/setup.c
@@ -87,7 +87,6 @@ unsigned long elf_hwcap = 0;
87char elf_platform[ELF_PLATFORM_SIZE]; 87char elf_platform[ELF_PLATFORM_SIZE];
88 88
89struct mem_chunk __initdata memory_chunk[MEMORY_CHUNKS]; 89struct mem_chunk __initdata memory_chunk[MEMORY_CHUNKS];
90volatile int __cpu_logical_map[NR_CPUS]; /* logical cpu to cpu address */
91 90
92int __initdata memory_end_set; 91int __initdata memory_end_set;
93unsigned long __initdata memory_end; 92unsigned long __initdata memory_end;
@@ -124,12 +123,6 @@ void __cpuinit cpu_init(void)
124 */ 123 */
125 get_cpu_id(&S390_lowcore.cpu_id); 124 get_cpu_id(&S390_lowcore.cpu_id);
126 125
127 /*
128 * Force FPU initialization:
129 */
130 clear_thread_flag(TIF_USEDFPU);
131 clear_used_math();
132
133 atomic_inc(&init_mm.mm_count); 126 atomic_inc(&init_mm.mm_count);
134 current->active_mm = &init_mm; 127 current->active_mm = &init_mm;
135 BUG_ON(current->mm); 128 BUG_ON(current->mm);
@@ -855,7 +848,6 @@ setup_arch(char **cmdline_p)
855 setup_lowcore(); 848 setup_lowcore();
856 849
857 cpu_init(); 850 cpu_init();
858 __cpu_logical_map[0] = stap();
859 s390_init_cpu_topology(); 851 s390_init_cpu_topology();
860 852
861 /* 853 /*
diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c
index 6b4fef877f9d..6289945562b0 100644
--- a/arch/s390/kernel/signal.c
+++ b/arch/s390/kernel/signal.c
@@ -64,7 +64,7 @@ SYSCALL_DEFINE3(sigsuspend, int, history0, int, history1, old_sigset_t, mask)
64 recalc_sigpending(); 64 recalc_sigpending();
65 spin_unlock_irq(&current->sighand->siglock); 65 spin_unlock_irq(&current->sighand->siglock);
66 66
67 current->state = TASK_INTERRUPTIBLE; 67 set_current_state(TASK_INTERRUPTIBLE);
68 schedule(); 68 schedule();
69 set_thread_flag(TIF_RESTORE_SIGMASK); 69 set_thread_flag(TIF_RESTORE_SIGMASK);
70 70
@@ -500,18 +500,10 @@ void do_signal(struct pt_regs *regs)
500 clear_thread_flag(TIF_RESTORE_SIGMASK); 500 clear_thread_flag(TIF_RESTORE_SIGMASK);
501 501
502 /* 502 /*
503 * If we would have taken a single-step trap
504 * for a normal instruction, act like we took
505 * one for the handler setup.
506 */
507 if (current->thread.per_info.single_step)
508 set_thread_flag(TIF_SINGLE_STEP);
509
510 /*
511 * Let tracing know that we've done the handler setup. 503 * Let tracing know that we've done the handler setup.
512 */ 504 */
513 tracehook_signal_handler(signr, &info, &ka, regs, 505 tracehook_signal_handler(signr, &info, &ka, regs,
514 test_thread_flag(TIF_SINGLE_STEP)); 506 current->thread.per_info.single_step);
515 } 507 }
516 return; 508 return;
517 } 509 }
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
index 93e52039321b..76a6fdd46c45 100644
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -52,6 +52,9 @@
52#include <asm/cpu.h> 52#include <asm/cpu.h>
53#include "entry.h" 53#include "entry.h"
54 54
55/* logical cpu to cpu address */
56int __cpu_logical_map[NR_CPUS];
57
55static struct task_struct *current_set[NR_CPUS]; 58static struct task_struct *current_set[NR_CPUS];
56 59
57static u8 smp_cpu_type; 60static u8 smp_cpu_type;
@@ -717,6 +720,12 @@ void __init smp_cpus_done(unsigned int max_cpus)
717{ 720{
718} 721}
719 722
723void __init smp_setup_processor_id(void)
724{
725 S390_lowcore.cpu_nr = 0;
726 __cpu_logical_map[0] = stap();
727}
728
720/* 729/*
721 * the frequency of the profiling timer can be changed 730 * the frequency of the profiling timer can be changed
722 * by writing a multiplier value into /proc/profile. 731 * by writing a multiplier value into /proc/profile.
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S
index 4f292c936872..30eca070d426 100644
--- a/arch/s390/kernel/syscalls.S
+++ b/arch/s390/kernel/syscalls.S
@@ -340,4 +340,3 @@ SYSCALL(sys_preadv,sys_preadv,compat_sys_preadv_wrapper)
340SYSCALL(sys_pwritev,sys_pwritev,compat_sys_pwritev_wrapper) 340SYSCALL(sys_pwritev,sys_pwritev,compat_sys_pwritev_wrapper)
341SYSCALL(sys_rt_tgsigqueueinfo,sys_rt_tgsigqueueinfo,compat_sys_rt_tgsigqueueinfo_wrapper) /* 330 */ 341SYSCALL(sys_rt_tgsigqueueinfo,sys_rt_tgsigqueueinfo,compat_sys_rt_tgsigqueueinfo_wrapper) /* 330 */
342SYSCALL(sys_perf_event_open,sys_perf_event_open,sys_perf_event_open_wrapper) 342SYSCALL(sys_perf_event_open,sys_perf_event_open,sys_perf_event_open_wrapper)
343SYSCALL(sys_recvmmsg,sys_recvmmsg,compat_sys_recvmmsg_wrapper)
diff --git a/arch/s390/kernel/topology.c b/arch/s390/kernel/topology.c
index 3c72c9cf22b6..14ef6f05e432 100644
--- a/arch/s390/kernel/topology.c
+++ b/arch/s390/kernel/topology.c
@@ -114,7 +114,7 @@ static void add_cpus_to_core(struct tl_cpu *tl_cpu, struct core_info *core)
114 114
115 rcpu = CPU_BITS - 1 - cpu + tl_cpu->origin; 115 rcpu = CPU_BITS - 1 - cpu + tl_cpu->origin;
116 for_each_present_cpu(lcpu) { 116 for_each_present_cpu(lcpu) {
117 if (__cpu_logical_map[lcpu] == rcpu) { 117 if (cpu_logical_map(lcpu) == rcpu) {
118 cpu_set(lcpu, core->mask); 118 cpu_set(lcpu, core->mask);
119 smp_cpu_polarization[lcpu] = tl_cpu->pp; 119 smp_cpu_polarization[lcpu] = tl_cpu->pp;
120 } 120 }
diff --git a/arch/s390/kvm/intercept.c b/arch/s390/kvm/intercept.c
index ba9d8a7bc1ac..b40096494e46 100644
--- a/arch/s390/kvm/intercept.c
+++ b/arch/s390/kvm/intercept.c
@@ -213,7 +213,7 @@ static int handle_instruction_and_prog(struct kvm_vcpu *vcpu)
213 return rc2; 213 return rc2;
214} 214}
215 215
216static const intercept_handler_t intercept_funcs[0x48 >> 2] = { 216static const intercept_handler_t intercept_funcs[] = {
217 [0x00 >> 2] = handle_noop, 217 [0x00 >> 2] = handle_noop,
218 [0x04 >> 2] = handle_instruction, 218 [0x04 >> 2] = handle_instruction,
219 [0x08 >> 2] = handle_prog, 219 [0x08 >> 2] = handle_prog,
@@ -230,7 +230,7 @@ int kvm_handle_sie_intercept(struct kvm_vcpu *vcpu)
230 intercept_handler_t func; 230 intercept_handler_t func;
231 u8 code = vcpu->arch.sie_block->icptcode; 231 u8 code = vcpu->arch.sie_block->icptcode;
232 232
233 if (code & 3 || code > 0x48) 233 if (code & 3 || (code >> 2) >= ARRAY_SIZE(intercept_funcs))
234 return -ENOTSUPP; 234 return -ENOTSUPP;
235 func = intercept_funcs[code >> 2]; 235 func = intercept_funcs[code >> 2];
236 if (func) 236 if (func)
diff --git a/arch/s390/lib/spinlock.c b/arch/s390/lib/spinlock.c
index 10754a375668..cff327f109a8 100644
--- a/arch/s390/lib/spinlock.c
+++ b/arch/s390/lib/spinlock.c
@@ -34,7 +34,7 @@ static inline void _raw_yield_cpu(int cpu)
34{ 34{
35 if (MACHINE_HAS_DIAG9C) 35 if (MACHINE_HAS_DIAG9C)
36 asm volatile("diag %0,0,0x9c" 36 asm volatile("diag %0,0,0x9c"
37 : : "d" (__cpu_logical_map[cpu])); 37 : : "d" (cpu_logical_map(cpu)));
38 else 38 else
39 _raw_yield(); 39 _raw_yield();
40} 40}
diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c
index f4558ccf02b9..869efbaed3ea 100644
--- a/arch/s390/mm/mmap.c
+++ b/arch/s390/mm/mmap.c
@@ -40,7 +40,7 @@
40 40
41static inline unsigned long mmap_base(void) 41static inline unsigned long mmap_base(void)
42{ 42{
43 unsigned long gap = current->signal->rlim[RLIMIT_STACK].rlim_cur; 43 unsigned long gap = rlimit(RLIMIT_STACK);
44 44
45 if (gap < MIN_GAP) 45 if (gap < MIN_GAP)
46 gap = MIN_GAP; 46 gap = MIN_GAP;
@@ -61,7 +61,7 @@ static inline int mmap_is_legacy(void)
61#endif 61#endif
62 return sysctl_legacy_va_layout || 62 return sysctl_legacy_va_layout ||
63 (current->personality & ADDR_COMPAT_LAYOUT) || 63 (current->personality & ADDR_COMPAT_LAYOUT) ||
64 current->signal->rlim[RLIMIT_STACK].rlim_cur == RLIM_INFINITY; 64 rlimit(RLIMIT_STACK) == RLIM_INFINITY;
65} 65}
66 66
67#ifndef CONFIG_64BIT 67#ifndef CONFIG_64BIT
diff --git a/arch/score/mm/init.c b/arch/score/mm/init.c
index 8c15b2c85d5a..dfaf458d6702 100644
--- a/arch/score/mm/init.c
+++ b/arch/score/mm/init.c
@@ -106,7 +106,7 @@ void __init mem_init(void)
106 ram << (PAGE_SHIFT-10), codesize >> 10, 106 ram << (PAGE_SHIFT-10), codesize >> 10,
107 reservedpages << (PAGE_SHIFT-10), datasize >> 10, 107 reservedpages << (PAGE_SHIFT-10), datasize >> 10,
108 initsize >> 10, 108 initsize >> 10,
109 (unsigned long) (totalhigh_pages << (PAGE_SHIFT-10))); 109 totalhigh_pages << (PAGE_SHIFT-10));
110} 110}
111#endif /* !CONFIG_NEED_MULTIPLE_NODES */ 111#endif /* !CONFIG_NEED_MULTIPLE_NODES */
112 112
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index 0031a6979f3a..2121fbb2ff4c 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -540,14 +540,16 @@ config SH_TIMER_MTU2
540 540
541config SH_PCLK_FREQ 541config SH_PCLK_FREQ
542 int "Peripheral clock frequency (in Hz)" 542 int "Peripheral clock frequency (in Hz)"
543 default "27000000" if CPU_SUBTYPE_SH7343 543 depends on SH_CLK_CPG_LEGACY
544 default "31250000" if CPU_SUBTYPE_SH7619 544 default "31250000" if CPU_SUBTYPE_SH7619
545 default "32000000" if CPU_SUBTYPE_SH7722 545 default "33333333" if CPU_SUBTYPE_SH7770 || \
546 default "33333333" if CPU_SUBTYPE_SH7770 || CPU_SUBTYPE_SH7723 || \ 546 CPU_SUBTYPE_SH7760 || \
547 CPU_SUBTYPE_SH7760 || CPU_SUBTYPE_SH7705 || \ 547 CPU_SUBTYPE_SH7705 || \
548 CPU_SUBTYPE_SH7203 || CPU_SUBTYPE_SH7206 || \ 548 CPU_SUBTYPE_SH7203 || \
549 CPU_SUBTYPE_SH7263 || CPU_SUBTYPE_MXG || \ 549 CPU_SUBTYPE_SH7206 || \
550 CPU_SUBTYPE_SH7786 || CPU_SUBTYPE_SH7724 550 CPU_SUBTYPE_SH7263 || \
551 CPU_SUBTYPE_MXG || \
552 CPU_SUBTYPE_SH7786
551 default "60000000" if CPU_SUBTYPE_SH7751 || CPU_SUBTYPE_SH7751R 553 default "60000000" if CPU_SUBTYPE_SH7751 || CPU_SUBTYPE_SH7751R
552 default "66000000" if CPU_SUBTYPE_SH4_202 554 default "66000000" if CPU_SUBTYPE_SH4_202
553 default "50000000" 555 default "50000000"
diff --git a/arch/sh/boards/mach-ecovec24/setup.c b/arch/sh/boards/mach-ecovec24/setup.c
index 6a8861b39f05..5c246289b4f0 100644
--- a/arch/sh/boards/mach-ecovec24/setup.c
+++ b/arch/sh/boards/mach-ecovec24/setup.c
@@ -353,6 +353,10 @@ static struct i2c_board_info i2c1_devices[] = {
353 { 353 {
354 I2C_BOARD_INFO("r2025sd", 0x32), 354 I2C_BOARD_INFO("r2025sd", 0x32),
355 }, 355 },
356 {
357 I2C_BOARD_INFO("lis3lv02d", 0x1c),
358 .irq = 33,
359 }
356}; 360};
357 361
358/* KEYSC */ 362/* KEYSC */
@@ -1115,6 +1119,10 @@ static int __init arch_setup(void)
1115 gpio_direction_output(GPIO_PTU0, 0); 1119 gpio_direction_output(GPIO_PTU0, 0);
1116 mdelay(20); 1120 mdelay(20);
1117 1121
1122 /* enable motion sensor */
1123 gpio_request(GPIO_FN_INTC_IRQ1, NULL);
1124 gpio_direction_input(GPIO_FN_INTC_IRQ1);
1125
1118 /* enable I2C device */ 1126 /* enable I2C device */
1119 i2c_register_board_info(0, i2c0_devices, 1127 i2c_register_board_info(0, i2c0_devices,
1120 ARRAY_SIZE(i2c0_devices)); 1128 ARRAY_SIZE(i2c0_devices));
diff --git a/arch/sh/boards/mach-se/7724/setup.c b/arch/sh/boards/mach-se/7724/setup.c
index 5d0f70b46c97..858ecb25d469 100644
--- a/arch/sh/boards/mach-se/7724/setup.c
+++ b/arch/sh/boards/mach-se/7724/setup.c
@@ -533,7 +533,7 @@ static int __init sh_eth_is_eeprom_ready(void)
533 while (t--) { 533 while (t--) {
534 if (!ctrl_inw(EEPROM_STAT)) 534 if (!ctrl_inw(EEPROM_STAT))
535 return 1; 535 return 1;
536 cpu_relax(); 536 udelay(1);
537 } 537 }
538 538
539 printk(KERN_ERR "ms7724se can not access to eeprom\n"); 539 printk(KERN_ERR "ms7724se can not access to eeprom\n");
diff --git a/arch/sh/configs/ap325rxa_defconfig b/arch/sh/configs/ap325rxa_defconfig
index 2f78d01cc6c0..8931a60e37a4 100644
--- a/arch/sh/configs/ap325rxa_defconfig
+++ b/arch/sh/configs/ap325rxa_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 3# Linux kernel version: 2.6.33-rc2
4# Fri Sep 25 11:22:50 2009 4# Mon Jan 4 11:10:59 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21CONFIG_ARCH_SUSPEND_POSSIBLE=y 21CONFIG_ARCH_SUSPEND_POSSIBLE=y
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_CMT=y 24CONFIG_SYS_SUPPORTS_CMT=y
24CONFIG_SYS_SUPPORTS_TMU=y 25CONFIG_SYS_SUPPORTS_TMU=y
25CONFIG_STACKTRACE_SUPPORT=y 26CONFIG_STACKTRACE_SUPPORT=y
@@ -30,6 +31,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
30CONFIG_ARCH_NO_VIRT_TO_BUS=y 31CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 32CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
34CONFIG_DMA_NONCOHERENT=y
33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 35CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
34CONFIG_CONSTRUCTORS=y 36CONFIG_CONSTRUCTORS=y
35 37
@@ -62,6 +64,7 @@ CONFIG_BSD_PROCESS_ACCT=y
62# 64#
63CONFIG_TREE_RCU=y 65CONFIG_TREE_RCU=y
64# CONFIG_TREE_PREEMPT_RCU is not set 66# CONFIG_TREE_PREEMPT_RCU is not set
67# CONFIG_TINY_RCU is not set
65# CONFIG_RCU_TRACE is not set 68# CONFIG_RCU_TRACE is not set
66CONFIG_RCU_FANOUT=32 69CONFIG_RCU_FANOUT=32
67# CONFIG_RCU_FANOUT_EXACT is not set 70# CONFIG_RCU_FANOUT_EXACT is not set
@@ -99,6 +102,7 @@ CONFIG_EVENTFD=y
99CONFIG_SHMEM=y 102CONFIG_SHMEM=y
100CONFIG_AIO=y 103CONFIG_AIO=y
101CONFIG_HAVE_PERF_EVENTS=y 104CONFIG_HAVE_PERF_EVENTS=y
105CONFIG_PERF_USE_VMALLOC=y
102 106
103# 107#
104# Kernel Performance Events And Counters 108# Kernel Performance Events And Counters
@@ -116,6 +120,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
116CONFIG_HAVE_KPROBES=y 120CONFIG_HAVE_KPROBES=y
117CONFIG_HAVE_KRETPROBES=y 121CONFIG_HAVE_KRETPROBES=y
118CONFIG_HAVE_ARCH_TRACEHOOK=y 122CONFIG_HAVE_ARCH_TRACEHOOK=y
123CONFIG_HAVE_DMA_ATTRS=y
119CONFIG_HAVE_CLK=y 124CONFIG_HAVE_CLK=y
120CONFIG_HAVE_DMA_API_DEBUG=y 125CONFIG_HAVE_DMA_API_DEBUG=y
121 126
@@ -142,14 +147,41 @@ CONFIG_LBDAF=y
142# IO Schedulers 147# IO Schedulers
143# 148#
144CONFIG_IOSCHED_NOOP=y 149CONFIG_IOSCHED_NOOP=y
145CONFIG_IOSCHED_AS=y
146CONFIG_IOSCHED_DEADLINE=y 150CONFIG_IOSCHED_DEADLINE=y
147CONFIG_IOSCHED_CFQ=y 151CONFIG_IOSCHED_CFQ=y
148# CONFIG_DEFAULT_AS is not set
149# CONFIG_DEFAULT_DEADLINE is not set 152# CONFIG_DEFAULT_DEADLINE is not set
150CONFIG_DEFAULT_CFQ=y 153CONFIG_DEFAULT_CFQ=y
151# CONFIG_DEFAULT_NOOP is not set 154# CONFIG_DEFAULT_NOOP is not set
152CONFIG_DEFAULT_IOSCHED="cfq" 155CONFIG_DEFAULT_IOSCHED="cfq"
156# CONFIG_INLINE_SPIN_TRYLOCK is not set
157# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
158# CONFIG_INLINE_SPIN_LOCK is not set
159# CONFIG_INLINE_SPIN_LOCK_BH is not set
160# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
161# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
162# CONFIG_INLINE_SPIN_UNLOCK is not set
163# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
164# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
165# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
166# CONFIG_INLINE_READ_TRYLOCK is not set
167# CONFIG_INLINE_READ_LOCK is not set
168# CONFIG_INLINE_READ_LOCK_BH is not set
169# CONFIG_INLINE_READ_LOCK_IRQ is not set
170# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
171# CONFIG_INLINE_READ_UNLOCK is not set
172# CONFIG_INLINE_READ_UNLOCK_BH is not set
173# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
174# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
175# CONFIG_INLINE_WRITE_TRYLOCK is not set
176# CONFIG_INLINE_WRITE_LOCK is not set
177# CONFIG_INLINE_WRITE_LOCK_BH is not set
178# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
179# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
180# CONFIG_INLINE_WRITE_UNLOCK is not set
181# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
182# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
183# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
184# CONFIG_MUTEX_SPIN_ON_OWNER is not set
153CONFIG_FREEZER=y 185CONFIG_FREEZER=y
154 186
155# 187#
@@ -205,6 +237,7 @@ CONFIG_FORCE_MAX_ZONEORDER=11
205CONFIG_MEMORY_START=0x08000000 237CONFIG_MEMORY_START=0x08000000
206CONFIG_MEMORY_SIZE=0x08000000 238CONFIG_MEMORY_SIZE=0x08000000
207CONFIG_29BIT=y 239CONFIG_29BIT=y
240# CONFIG_PMB_ENABLE is not set
208# CONFIG_X2TLB is not set 241# CONFIG_X2TLB is not set
209CONFIG_VSYSCALL=y 242CONFIG_VSYSCALL=y
210CONFIG_ARCH_FLATMEM_ENABLE=y 243CONFIG_ARCH_FLATMEM_ENABLE=y
@@ -229,8 +262,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
229# CONFIG_PHYS_ADDR_T_64BIT is not set 262# CONFIG_PHYS_ADDR_T_64BIT is not set
230CONFIG_ZONE_DMA_FLAG=0 263CONFIG_ZONE_DMA_FLAG=0
231CONFIG_NR_QUICK=2 264CONFIG_NR_QUICK=2
232CONFIG_HAVE_MLOCK=y
233CONFIG_HAVE_MLOCKED_PAGE_BIT=y
234# CONFIG_KSM is not set 265# CONFIG_KSM is not set
235CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 266CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
236 267
@@ -262,7 +293,6 @@ CONFIG_SH_AP325RXA=y
262# 293#
263CONFIG_SH_TIMER_TMU=y 294CONFIG_SH_TIMER_TMU=y
264# CONFIG_SH_TIMER_CMT is not set 295# CONFIG_SH_TIMER_CMT is not set
265CONFIG_SH_PCLK_FREQ=33333333
266CONFIG_SH_CLK_CPG=y 296CONFIG_SH_CLK_CPG=y
267CONFIG_TICK_ONESHOT=y 297CONFIG_TICK_ONESHOT=y
268# CONFIG_NO_HZ is not set 298# CONFIG_NO_HZ is not set
@@ -418,9 +448,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
418# CONFIG_AF_RXRPC is not set 448# CONFIG_AF_RXRPC is not set
419CONFIG_WIRELESS=y 449CONFIG_WIRELESS=y
420# CONFIG_CFG80211 is not set 450# CONFIG_CFG80211 is not set
421CONFIG_CFG80211_DEFAULT_PS_VALUE=0
422# CONFIG_WIRELESS_OLD_REGULATORY is not set
423# CONFIG_WIRELESS_EXT is not set
424# CONFIG_LIB80211 is not set 451# CONFIG_LIB80211 is not set
425 452
426# 453#
@@ -550,6 +577,10 @@ CONFIG_MTD_UBI_BEB_RESERVE=1
550CONFIG_BLK_DEV=y 577CONFIG_BLK_DEV=y
551# CONFIG_BLK_DEV_COW_COMMON is not set 578# CONFIG_BLK_DEV_COW_COMMON is not set
552# CONFIG_BLK_DEV_LOOP is not set 579# CONFIG_BLK_DEV_LOOP is not set
580
581#
582# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
583#
553# CONFIG_BLK_DEV_NBD is not set 584# CONFIG_BLK_DEV_NBD is not set
554CONFIG_BLK_DEV_RAM=y 585CONFIG_BLK_DEV_RAM=y
555CONFIG_BLK_DEV_RAM_COUNT=4 586CONFIG_BLK_DEV_RAM_COUNT=4
@@ -559,9 +590,12 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
559# CONFIG_ATA_OVER_ETH is not set 590# CONFIG_ATA_OVER_ETH is not set
560# CONFIG_BLK_DEV_HD is not set 591# CONFIG_BLK_DEV_HD is not set
561CONFIG_MISC_DEVICES=y 592CONFIG_MISC_DEVICES=y
593# CONFIG_AD525X_DPOT is not set
562# CONFIG_ICS932S401 is not set 594# CONFIG_ICS932S401 is not set
563# CONFIG_ENCLOSURE_SERVICES is not set 595# CONFIG_ENCLOSURE_SERVICES is not set
564# CONFIG_ISL29003 is not set 596# CONFIG_ISL29003 is not set
597# CONFIG_DS1682 is not set
598# CONFIG_TI_DAC7512 is not set
565# CONFIG_C2PORT is not set 599# CONFIG_C2PORT is not set
566 600
567# 601#
@@ -572,6 +606,7 @@ CONFIG_MISC_DEVICES=y
572# CONFIG_EEPROM_LEGACY is not set 606# CONFIG_EEPROM_LEGACY is not set
573# CONFIG_EEPROM_MAX6875 is not set 607# CONFIG_EEPROM_MAX6875 is not set
574# CONFIG_EEPROM_93CX6 is not set 608# CONFIG_EEPROM_93CX6 is not set
609# CONFIG_IWMC3200TOP is not set
575CONFIG_HAVE_IDE=y 610CONFIG_HAVE_IDE=y
576# CONFIG_IDE is not set 611# CONFIG_IDE is not set
577 612
@@ -664,11 +699,11 @@ CONFIG_SMSC911X=y
664# CONFIG_B44 is not set 699# CONFIG_B44 is not set
665# CONFIG_KS8842 is not set 700# CONFIG_KS8842 is not set
666# CONFIG_KS8851 is not set 701# CONFIG_KS8851 is not set
702# CONFIG_KS8851_MLL is not set
667# CONFIG_NETDEV_1000 is not set 703# CONFIG_NETDEV_1000 is not set
668# CONFIG_NETDEV_10000 is not set 704# CONFIG_NETDEV_10000 is not set
669CONFIG_WLAN=y 705CONFIG_WLAN=y
670# CONFIG_WLAN_PRE80211 is not set 706# CONFIG_HOSTAP is not set
671# CONFIG_WLAN_80211 is not set
672 707
673# 708#
674# Enable WiMAX (Networking options) to see the WiMAX drivers 709# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -688,6 +723,7 @@ CONFIG_WLAN=y
688CONFIG_INPUT=y 723CONFIG_INPUT=y
689# CONFIG_INPUT_FF_MEMLESS is not set 724# CONFIG_INPUT_FF_MEMLESS is not set
690# CONFIG_INPUT_POLLDEV is not set 725# CONFIG_INPUT_POLLDEV is not set
726# CONFIG_INPUT_SPARSEKMAP is not set
691 727
692# 728#
693# Userland interfaces 729# Userland interfaces
@@ -782,7 +818,6 @@ CONFIG_I2C_SH_MOBILE=y
782# 818#
783# Miscellaneous I2C Chip support 819# Miscellaneous I2C Chip support
784# 820#
785# CONFIG_DS1682 is not set
786# CONFIG_SENSORS_TSL2550 is not set 821# CONFIG_SENSORS_TSL2550 is not set
787# CONFIG_I2C_DEBUG_CORE is not set 822# CONFIG_I2C_DEBUG_CORE is not set
788# CONFIG_I2C_DEBUG_ALGO is not set 823# CONFIG_I2C_DEBUG_ALGO is not set
@@ -796,7 +831,10 @@ CONFIG_SPI_MASTER=y
796# 831#
797CONFIG_SPI_BITBANG=y 832CONFIG_SPI_BITBANG=y
798CONFIG_SPI_GPIO=y 833CONFIG_SPI_GPIO=y
834# CONFIG_SPI_SH_MSIOF is not set
799# CONFIG_SPI_SH_SCI is not set 835# CONFIG_SPI_SH_SCI is not set
836# CONFIG_SPI_XILINX is not set
837# CONFIG_SPI_DESIGNWARE is not set
800 838
801# 839#
802# SPI Protocol Masters 840# SPI Protocol Masters
@@ -854,11 +892,13 @@ CONFIG_SSB_POSSIBLE=y
854# 892#
855# CONFIG_MFD_CORE is not set 893# CONFIG_MFD_CORE is not set
856# CONFIG_MFD_SM501 is not set 894# CONFIG_MFD_SM501 is not set
895# CONFIG_MFD_SH_MOBILE_SDHI is not set
857# CONFIG_HTC_PASIC3 is not set 896# CONFIG_HTC_PASIC3 is not set
858# CONFIG_TPS65010 is not set 897# CONFIG_TPS65010 is not set
859# CONFIG_TWL4030_CORE is not set 898# CONFIG_TWL4030_CORE is not set
860# CONFIG_MFD_TMIO is not set 899# CONFIG_MFD_TMIO is not set
861# CONFIG_PMIC_DA903X is not set 900# CONFIG_PMIC_DA903X is not set
901# CONFIG_PMIC_ADP5520 is not set
862# CONFIG_MFD_WM8400 is not set 902# CONFIG_MFD_WM8400 is not set
863# CONFIG_MFD_WM831X is not set 903# CONFIG_MFD_WM831X is not set
864# CONFIG_MFD_WM8350_I2C is not set 904# CONFIG_MFD_WM8350_I2C is not set
@@ -866,6 +906,8 @@ CONFIG_SSB_POSSIBLE=y
866# CONFIG_MFD_MC13783 is not set 906# CONFIG_MFD_MC13783 is not set
867# CONFIG_AB3100_CORE is not set 907# CONFIG_AB3100_CORE is not set
868# CONFIG_EZX_PCAP is not set 908# CONFIG_EZX_PCAP is not set
909# CONFIG_MFD_88PM8607 is not set
910# CONFIG_AB4500_CORE is not set
869# CONFIG_REGULATOR is not set 911# CONFIG_REGULATOR is not set
870CONFIG_MEDIA_SUPPORT=y 912CONFIG_MEDIA_SUPPORT=y
871 913
@@ -882,6 +924,8 @@ CONFIG_VIDEO_MEDIA=y
882# 924#
883# Multimedia drivers 925# Multimedia drivers
884# 926#
927CONFIG_IR_CORE=y
928CONFIG_VIDEO_IR=y
885# CONFIG_MEDIA_ATTACH is not set 929# CONFIG_MEDIA_ATTACH is not set
886CONFIG_MEDIA_TUNER=y 930CONFIG_MEDIA_TUNER=y
887# CONFIG_MEDIA_TUNER_CUSTOMISE is not set 931# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
@@ -901,6 +945,7 @@ CONFIG_VIDEO_CAPTURE_DRIVERS=y
901# CONFIG_VIDEO_ADV_DEBUG is not set 945# CONFIG_VIDEO_ADV_DEBUG is not set
902# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set 946# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
903CONFIG_VIDEO_HELPER_CHIPS_AUTO=y 947CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
948CONFIG_VIDEO_IR_I2C=y
904# CONFIG_VIDEO_VIVI is not set 949# CONFIG_VIDEO_VIVI is not set
905# CONFIG_VIDEO_SAA5246A is not set 950# CONFIG_VIDEO_SAA5246A is not set
906# CONFIG_VIDEO_SAA5249 is not set 951# CONFIG_VIDEO_SAA5249 is not set
@@ -908,10 +953,13 @@ CONFIG_SOC_CAMERA=y
908# CONFIG_SOC_CAMERA_MT9M001 is not set 953# CONFIG_SOC_CAMERA_MT9M001 is not set
909# CONFIG_SOC_CAMERA_MT9M111 is not set 954# CONFIG_SOC_CAMERA_MT9M111 is not set
910# CONFIG_SOC_CAMERA_MT9T031 is not set 955# CONFIG_SOC_CAMERA_MT9T031 is not set
956# CONFIG_SOC_CAMERA_MT9T112 is not set
911# CONFIG_SOC_CAMERA_MT9V022 is not set 957# CONFIG_SOC_CAMERA_MT9V022 is not set
958# CONFIG_SOC_CAMERA_RJ54N1 is not set
912# CONFIG_SOC_CAMERA_TW9910 is not set 959# CONFIG_SOC_CAMERA_TW9910 is not set
913CONFIG_SOC_CAMERA_PLATFORM=y 960CONFIG_SOC_CAMERA_PLATFORM=y
914CONFIG_SOC_CAMERA_OV772X=y 961CONFIG_SOC_CAMERA_OV772X=y
962# CONFIG_SOC_CAMERA_OV9640 is not set
915CONFIG_VIDEO_SH_MOBILE_CEU=y 963CONFIG_VIDEO_SH_MOBILE_CEU=y
916# CONFIG_RADIO_ADAPTERS is not set 964# CONFIG_RADIO_ADAPTERS is not set
917# CONFIG_DAB is not set 965# CONFIG_DAB is not set
@@ -996,6 +1044,7 @@ CONFIG_MMC_BLOCK_BOUNCE=y
996# CONFIG_MMC_AT91 is not set 1044# CONFIG_MMC_AT91 is not set
997# CONFIG_MMC_ATMELMCI is not set 1045# CONFIG_MMC_ATMELMCI is not set
998CONFIG_MMC_SPI=y 1046CONFIG_MMC_SPI=y
1047# CONFIG_MMC_TMIO is not set
999# CONFIG_MEMSTICK is not set 1048# CONFIG_MEMSTICK is not set
1000# CONFIG_NEW_LEDS is not set 1049# CONFIG_NEW_LEDS is not set
1001# CONFIG_ACCESSIBILITY is not set 1050# CONFIG_ACCESSIBILITY is not set
@@ -1027,6 +1076,7 @@ CONFIG_RTC_INTF_DEV=y
1027CONFIG_RTC_DRV_PCF8563=y 1076CONFIG_RTC_DRV_PCF8563=y
1028# CONFIG_RTC_DRV_PCF8583 is not set 1077# CONFIG_RTC_DRV_PCF8583 is not set
1029# CONFIG_RTC_DRV_M41T80 is not set 1078# CONFIG_RTC_DRV_M41T80 is not set
1079# CONFIG_RTC_DRV_BQ32K is not set
1030# CONFIG_RTC_DRV_S35390A is not set 1080# CONFIG_RTC_DRV_S35390A is not set
1031# CONFIG_RTC_DRV_FM3130 is not set 1081# CONFIG_RTC_DRV_FM3130 is not set
1032# CONFIG_RTC_DRV_RX8581 is not set 1082# CONFIG_RTC_DRV_RX8581 is not set
@@ -1055,7 +1105,9 @@ CONFIG_RTC_DRV_PCF8563=y
1055# CONFIG_RTC_DRV_M48T86 is not set 1105# CONFIG_RTC_DRV_M48T86 is not set
1056# CONFIG_RTC_DRV_M48T35 is not set 1106# CONFIG_RTC_DRV_M48T35 is not set
1057# CONFIG_RTC_DRV_M48T59 is not set 1107# CONFIG_RTC_DRV_M48T59 is not set
1108# CONFIG_RTC_DRV_MSM6242 is not set
1058# CONFIG_RTC_DRV_BQ4802 is not set 1109# CONFIG_RTC_DRV_BQ4802 is not set
1110# CONFIG_RTC_DRV_RP5C01 is not set
1059# CONFIG_RTC_DRV_V3020 is not set 1111# CONFIG_RTC_DRV_V3020 is not set
1060 1112
1061# 1113#
@@ -1248,7 +1300,7 @@ CONFIG_FRAME_WARN=1024
1248# CONFIG_DEBUG_FS is not set 1300# CONFIG_DEBUG_FS is not set
1249# CONFIG_HEADERS_CHECK is not set 1301# CONFIG_HEADERS_CHECK is not set
1250# CONFIG_DEBUG_KERNEL is not set 1302# CONFIG_DEBUG_KERNEL is not set
1251# CONFIG_DEBUG_BUGVERBOSE is not set 1303CONFIG_DEBUG_BUGVERBOSE=y
1252# CONFIG_DEBUG_MEMORY_INIT is not set 1304# CONFIG_DEBUG_MEMORY_INIT is not set
1253# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1305# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1254# CONFIG_LATENCYTOP is not set 1306# CONFIG_LATENCYTOP is not set
@@ -1265,7 +1317,6 @@ CONFIG_TRACING_SUPPORT=y
1265# CONFIG_SAMPLES is not set 1317# CONFIG_SAMPLES is not set
1266CONFIG_HAVE_ARCH_KGDB=y 1318CONFIG_HAVE_ARCH_KGDB=y
1267# CONFIG_SH_STANDARD_BIOS is not set 1319# CONFIG_SH_STANDARD_BIOS is not set
1268# CONFIG_EARLY_SCIF_CONSOLE is not set
1269# CONFIG_DWARF_UNWINDER is not set 1320# CONFIG_DWARF_UNWINDER is not set
1270 1321
1271# 1322#
@@ -1274,7 +1325,11 @@ CONFIG_HAVE_ARCH_KGDB=y
1274# CONFIG_KEYS is not set 1325# CONFIG_KEYS is not set
1275# CONFIG_SECURITY is not set 1326# CONFIG_SECURITY is not set
1276# CONFIG_SECURITYFS is not set 1327# CONFIG_SECURITYFS is not set
1277# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1328# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1329# CONFIG_DEFAULT_SECURITY_SMACK is not set
1330# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1331CONFIG_DEFAULT_SECURITY_DAC=y
1332CONFIG_DEFAULT_SECURITY=""
1278CONFIG_CRYPTO=y 1333CONFIG_CRYPTO=y
1279 1334
1280# 1335#
diff --git a/arch/sh/configs/cayman_defconfig b/arch/sh/configs/cayman_defconfig
index 6b863cb1e248..92589a950d07 100644
--- a/arch/sh/configs/cayman_defconfig
+++ b/arch/sh/configs/cayman_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.30 3# Linux kernel version: 2.6.33-rc2
4# Thu Jun 18 12:21:54 2009 4# Mon Jan 4 11:14:50 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7# CONFIG_SUPERH32 is not set 7# CONFIG_SUPERH32 is not set
@@ -14,11 +14,13 @@ CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y 14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 15CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
16CONFIG_GENERIC_IRQ_PROBE=y 16CONFIG_GENERIC_IRQ_PROBE=y
17CONFIG_IRQ_PER_CPU=y
17# CONFIG_GENERIC_GPIO is not set 18# CONFIG_GENERIC_GPIO is not set
18CONFIG_GENERIC_TIME=y 19CONFIG_GENERIC_TIME=y
19CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
20# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
21# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set 22# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
22CONFIG_SYS_SUPPORTS_PCI=y 24CONFIG_SYS_SUPPORTS_PCI=y
23CONFIG_SYS_SUPPORTS_TMU=y 25CONFIG_SYS_SUPPORTS_TMU=y
24CONFIG_STACKTRACE_SUPPORT=y 26CONFIG_STACKTRACE_SUPPORT=y
@@ -28,7 +30,10 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
28# CONFIG_ARCH_HAS_ILOG2_U64 is not set 30# CONFIG_ARCH_HAS_ILOG2_U64 is not set
29CONFIG_ARCH_NO_VIRT_TO_BUS=y 31CONFIG_ARCH_NO_VIRT_TO_BUS=y
30CONFIG_ARCH_HAS_DEFAULT_IDLE=y 32CONFIG_ARCH_HAS_DEFAULT_IDLE=y
33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
34CONFIG_DMA_NONCOHERENT=y
31CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 35CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
36CONFIG_CONSTRUCTORS=y
32 37
33# 38#
34# General setup 39# General setup
@@ -39,6 +44,12 @@ CONFIG_LOCK_KERNEL=y
39CONFIG_INIT_ENV_ARG_LIMIT=32 44CONFIG_INIT_ENV_ARG_LIMIT=32
40CONFIG_LOCALVERSION="" 45CONFIG_LOCALVERSION=""
41CONFIG_LOCALVERSION_AUTO=y 46CONFIG_LOCALVERSION_AUTO=y
47CONFIG_HAVE_KERNEL_GZIP=y
48CONFIG_HAVE_KERNEL_BZIP2=y
49CONFIG_HAVE_KERNEL_LZMA=y
50CONFIG_KERNEL_GZIP=y
51# CONFIG_KERNEL_BZIP2 is not set
52# CONFIG_KERNEL_LZMA is not set
42CONFIG_SWAP=y 53CONFIG_SWAP=y
43# CONFIG_SYSVIPC is not set 54# CONFIG_SYSVIPC is not set
44CONFIG_POSIX_MQUEUE=y 55CONFIG_POSIX_MQUEUE=y
@@ -50,11 +61,13 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
50# 61#
51# RCU Subsystem 62# RCU Subsystem
52# 63#
53CONFIG_CLASSIC_RCU=y 64CONFIG_TREE_RCU=y
54# CONFIG_TREE_RCU is not set 65# CONFIG_TREE_PREEMPT_RCU is not set
55# CONFIG_PREEMPT_RCU is not set 66# CONFIG_TINY_RCU is not set
67# CONFIG_RCU_TRACE is not set
68CONFIG_RCU_FANOUT=32
69# CONFIG_RCU_FANOUT_EXACT is not set
56# CONFIG_TREE_RCU_TRACE is not set 70# CONFIG_TREE_RCU_TRACE is not set
57# CONFIG_PREEMPT_RCU_TRACE is not set
58# CONFIG_IKCONFIG is not set 71# CONFIG_IKCONFIG is not set
59CONFIG_LOG_BUF_SHIFT=14 72CONFIG_LOG_BUF_SHIFT=14
60# CONFIG_GROUP_SCHED is not set 73# CONFIG_GROUP_SCHED is not set
@@ -85,24 +98,32 @@ CONFIG_TIMERFD=y
85CONFIG_EVENTFD=y 98CONFIG_EVENTFD=y
86CONFIG_SHMEM=y 99CONFIG_SHMEM=y
87CONFIG_AIO=y 100CONFIG_AIO=y
101CONFIG_HAVE_PERF_EVENTS=y
102CONFIG_PERF_USE_VMALLOC=y
88 103
89# 104#
90# Performance Counters 105# Kernel Performance Events And Counters
91# 106#
107# CONFIG_PERF_EVENTS is not set
108# CONFIG_PERF_COUNTERS is not set
92CONFIG_VM_EVENT_COUNTERS=y 109CONFIG_VM_EVENT_COUNTERS=y
93CONFIG_PCI_QUIRKS=y 110CONFIG_PCI_QUIRKS=y
94# CONFIG_STRIP_ASM_SYMS is not set
95CONFIG_COMPAT_BRK=y 111CONFIG_COMPAT_BRK=y
96CONFIG_SLAB=y 112CONFIG_SLAB=y
97# CONFIG_SLUB is not set 113# CONFIG_SLUB is not set
98# CONFIG_SLOB is not set 114# CONFIG_SLOB is not set
99# CONFIG_PROFILING is not set 115# CONFIG_PROFILING is not set
100# CONFIG_MARKERS is not set
101CONFIG_HAVE_OPROFILE=y 116CONFIG_HAVE_OPROFILE=y
102CONFIG_HAVE_IOREMAP_PROT=y 117CONFIG_HAVE_IOREMAP_PROT=y
103CONFIG_HAVE_ARCH_TRACEHOOK=y 118CONFIG_HAVE_ARCH_TRACEHOOK=y
119CONFIG_HAVE_DMA_ATTRS=y
104CONFIG_HAVE_CLK=y 120CONFIG_HAVE_CLK=y
105CONFIG_HAVE_DMA_API_DEBUG=y 121CONFIG_HAVE_DMA_API_DEBUG=y
122
123#
124# GCOV-based kernel profiling
125#
126# CONFIG_GCOV_KERNEL is not set
106# CONFIG_SLOW_WORK is not set 127# CONFIG_SLOW_WORK is not set
107CONFIG_HAVE_GENERIC_DMA_COHERENT=y 128CONFIG_HAVE_GENERIC_DMA_COHERENT=y
108CONFIG_SLABINFO=y 129CONFIG_SLABINFO=y
@@ -115,7 +136,7 @@ CONFIG_MODULE_UNLOAD=y
115# CONFIG_MODVERSIONS is not set 136# CONFIG_MODVERSIONS is not set
116# CONFIG_MODULE_SRCVERSION_ALL is not set 137# CONFIG_MODULE_SRCVERSION_ALL is not set
117CONFIG_BLOCK=y 138CONFIG_BLOCK=y
118# CONFIG_LBD is not set 139CONFIG_LBDAF=y
119# CONFIG_BLK_DEV_BSG is not set 140# CONFIG_BLK_DEV_BSG is not set
120# CONFIG_BLK_DEV_INTEGRITY is not set 141# CONFIG_BLK_DEV_INTEGRITY is not set
121 142
@@ -123,14 +144,41 @@ CONFIG_BLOCK=y
123# IO Schedulers 144# IO Schedulers
124# 145#
125CONFIG_IOSCHED_NOOP=y 146CONFIG_IOSCHED_NOOP=y
126CONFIG_IOSCHED_AS=y
127CONFIG_IOSCHED_DEADLINE=y 147CONFIG_IOSCHED_DEADLINE=y
128CONFIG_IOSCHED_CFQ=y 148CONFIG_IOSCHED_CFQ=y
129# CONFIG_DEFAULT_AS is not set
130# CONFIG_DEFAULT_DEADLINE is not set 149# CONFIG_DEFAULT_DEADLINE is not set
131CONFIG_DEFAULT_CFQ=y 150CONFIG_DEFAULT_CFQ=y
132# CONFIG_DEFAULT_NOOP is not set 151# CONFIG_DEFAULT_NOOP is not set
133CONFIG_DEFAULT_IOSCHED="cfq" 152CONFIG_DEFAULT_IOSCHED="cfq"
153# CONFIG_INLINE_SPIN_TRYLOCK is not set
154# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
155# CONFIG_INLINE_SPIN_LOCK is not set
156# CONFIG_INLINE_SPIN_LOCK_BH is not set
157# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
158# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
159# CONFIG_INLINE_SPIN_UNLOCK is not set
160# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
161# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
162# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
163# CONFIG_INLINE_READ_TRYLOCK is not set
164# CONFIG_INLINE_READ_LOCK is not set
165# CONFIG_INLINE_READ_LOCK_BH is not set
166# CONFIG_INLINE_READ_LOCK_IRQ is not set
167# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
168# CONFIG_INLINE_READ_UNLOCK is not set
169# CONFIG_INLINE_READ_UNLOCK_BH is not set
170# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
171# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
172# CONFIG_INLINE_WRITE_TRYLOCK is not set
173# CONFIG_INLINE_WRITE_LOCK is not set
174# CONFIG_INLINE_WRITE_LOCK_BH is not set
175# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
176# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
177# CONFIG_INLINE_WRITE_UNLOCK is not set
178# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
179# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
180# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
181# CONFIG_MUTEX_SPIN_ON_OWNER is not set
134# CONFIG_FREEZER is not set 182# CONFIG_FREEZER is not set
135 183
136# 184#
@@ -178,8 +226,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
178# CONFIG_PHYS_ADDR_T_64BIT is not set 226# CONFIG_PHYS_ADDR_T_64BIT is not set
179CONFIG_ZONE_DMA_FLAG=0 227CONFIG_ZONE_DMA_FLAG=0
180CONFIG_NR_QUICK=2 228CONFIG_NR_QUICK=2
181CONFIG_HAVE_MLOCK=y 229# CONFIG_KSM is not set
182CONFIG_HAVE_MLOCKED_PAGE_BIT=y
183CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 230CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
184 231
185# 232#
@@ -255,13 +302,13 @@ CONFIG_PREEMPT=y
255CONFIG_ZERO_PAGE_OFFSET=0x00001000 302CONFIG_ZERO_PAGE_OFFSET=0x00001000
256CONFIG_BOOT_LINK_OFFSET=0x00400000 303CONFIG_BOOT_LINK_OFFSET=0x00400000
257CONFIG_ENTRY_OFFSET=0x00001000 304CONFIG_ENTRY_OFFSET=0x00001000
258# CONFIG_CMDLINE_BOOL is not set 305# CONFIG_CMDLINE_OVERWRITE is not set
306# CONFIG_CMDLINE_EXTEND is not set
259 307
260# 308#
261# Bus options 309# Bus options
262# 310#
263CONFIG_PCI=y 311CONFIG_PCI=y
264CONFIG_SH_PCIDMA_NONCOHERENT=y
265# CONFIG_PCIEPORTBUS is not set 312# CONFIG_PCIEPORTBUS is not set
266# CONFIG_ARCH_SUPPORTS_MSI is not set 313# CONFIG_ARCH_SUPPORTS_MSI is not set
267CONFIG_PCI_LEGACY=y 314CONFIG_PCI_LEGACY=y
@@ -330,6 +377,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
330# CONFIG_NETFILTER is not set 377# CONFIG_NETFILTER is not set
331# CONFIG_IP_DCCP is not set 378# CONFIG_IP_DCCP is not set
332# CONFIG_IP_SCTP is not set 379# CONFIG_IP_SCTP is not set
380# CONFIG_RDS is not set
333# CONFIG_TIPC is not set 381# CONFIG_TIPC is not set
334# CONFIG_ATM is not set 382# CONFIG_ATM is not set
335# CONFIG_BRIDGE is not set 383# CONFIG_BRIDGE is not set
@@ -359,14 +407,11 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
359# CONFIG_AF_RXRPC is not set 407# CONFIG_AF_RXRPC is not set
360CONFIG_WIRELESS=y 408CONFIG_WIRELESS=y
361# CONFIG_CFG80211 is not set 409# CONFIG_CFG80211 is not set
362# CONFIG_WIRELESS_OLD_REGULATORY is not set
363# CONFIG_WIRELESS_EXT is not set
364# CONFIG_LIB80211 is not set 410# CONFIG_LIB80211 is not set
365 411
366# 412#
367# CFG80211 needs to be enabled for MAC80211 413# CFG80211 needs to be enabled for MAC80211
368# 414#
369CONFIG_MAC80211_DEFAULT_PS_VALUE=0
370# CONFIG_WIMAX is not set 415# CONFIG_WIMAX is not set
371# CONFIG_RFKILL is not set 416# CONFIG_RFKILL is not set
372# CONFIG_NET_9P is not set 417# CONFIG_NET_9P is not set
@@ -379,6 +424,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
379# Generic Driver Options 424# Generic Driver Options
380# 425#
381CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 426CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
427# CONFIG_DEVTMPFS is not set
382CONFIG_STANDALONE=y 428CONFIG_STANDALONE=y
383CONFIG_PREVENT_FIRMWARE_BUILD=y 429CONFIG_PREVENT_FIRMWARE_BUILD=y
384# CONFIG_FW_LOADER is not set 430# CONFIG_FW_LOADER is not set
@@ -395,6 +441,10 @@ CONFIG_BLK_DEV=y
395# CONFIG_BLK_DEV_COW_COMMON is not set 441# CONFIG_BLK_DEV_COW_COMMON is not set
396CONFIG_BLK_DEV_LOOP=y 442CONFIG_BLK_DEV_LOOP=y
397# CONFIG_BLK_DEV_CRYPTOLOOP is not set 443# CONFIG_BLK_DEV_CRYPTOLOOP is not set
444
445#
446# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
447#
398# CONFIG_BLK_DEV_NBD is not set 448# CONFIG_BLK_DEV_NBD is not set
399# CONFIG_BLK_DEV_SX8 is not set 449# CONFIG_BLK_DEV_SX8 is not set
400CONFIG_BLK_DEV_RAM=y 450CONFIG_BLK_DEV_RAM=y
@@ -405,6 +455,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
405# CONFIG_ATA_OVER_ETH is not set 455# CONFIG_ATA_OVER_ETH is not set
406# CONFIG_BLK_DEV_HD is not set 456# CONFIG_BLK_DEV_HD is not set
407CONFIG_MISC_DEVICES=y 457CONFIG_MISC_DEVICES=y
458# CONFIG_AD525X_DPOT is not set
408# CONFIG_PHANTOM is not set 459# CONFIG_PHANTOM is not set
409# CONFIG_SGI_IOC4 is not set 460# CONFIG_SGI_IOC4 is not set
410# CONFIG_TIFM_CORE is not set 461# CONFIG_TIFM_CORE is not set
@@ -412,6 +463,7 @@ CONFIG_MISC_DEVICES=y
412# CONFIG_ENCLOSURE_SERVICES is not set 463# CONFIG_ENCLOSURE_SERVICES is not set
413# CONFIG_HP_ILO is not set 464# CONFIG_HP_ILO is not set
414# CONFIG_ISL29003 is not set 465# CONFIG_ISL29003 is not set
466# CONFIG_DS1682 is not set
415# CONFIG_C2PORT is not set 467# CONFIG_C2PORT is not set
416 468
417# 469#
@@ -462,8 +514,11 @@ CONFIG_SCSI_LOWLEVEL=y
462# CONFIG_ISCSI_TCP is not set 514# CONFIG_ISCSI_TCP is not set
463# CONFIG_SCSI_CXGB3_ISCSI is not set 515# CONFIG_SCSI_CXGB3_ISCSI is not set
464# CONFIG_SCSI_BNX2_ISCSI is not set 516# CONFIG_SCSI_BNX2_ISCSI is not set
517# CONFIG_BE2ISCSI is not set
465# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 518# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
519# CONFIG_SCSI_HPSA is not set
466# CONFIG_SCSI_3W_9XXX is not set 520# CONFIG_SCSI_3W_9XXX is not set
521# CONFIG_SCSI_3W_SAS is not set
467# CONFIG_SCSI_ACARD is not set 522# CONFIG_SCSI_ACARD is not set
468# CONFIG_SCSI_AACRAID is not set 523# CONFIG_SCSI_AACRAID is not set
469# CONFIG_SCSI_AIC7XXX is not set 524# CONFIG_SCSI_AIC7XXX is not set
@@ -495,7 +550,10 @@ CONFIG_SCSI_LOWLEVEL=y
495# CONFIG_SCSI_DC390T is not set 550# CONFIG_SCSI_DC390T is not set
496# CONFIG_SCSI_NSP32 is not set 551# CONFIG_SCSI_NSP32 is not set
497# CONFIG_SCSI_DEBUG is not set 552# CONFIG_SCSI_DEBUG is not set
553# CONFIG_SCSI_PMCRAID is not set
554# CONFIG_SCSI_PM8001 is not set
498# CONFIG_SCSI_SRP is not set 555# CONFIG_SCSI_SRP is not set
556# CONFIG_SCSI_BFA_FC is not set
499# CONFIG_SCSI_DH is not set 557# CONFIG_SCSI_DH is not set
500# CONFIG_SCSI_OSD_INITIATOR is not set 558# CONFIG_SCSI_OSD_INITIATOR is not set
501# CONFIG_ATA is not set 559# CONFIG_ATA is not set
@@ -507,7 +565,11 @@ CONFIG_SCSI_LOWLEVEL=y
507# 565#
508 566
509# 567#
510# Enable only one of the two stacks, unless you know what you are doing 568# You can enable one or both FireWire driver stacks.
569#
570
571#
572# See the help texts for more information.
511# 573#
512# CONFIG_FIREWIRE is not set 574# CONFIG_FIREWIRE is not set
513# CONFIG_IEEE1394 is not set 575# CONFIG_IEEE1394 is not set
@@ -546,6 +608,7 @@ CONFIG_NET_ETHERNET=y
546# CONFIG_NET_PCI is not set 608# CONFIG_NET_PCI is not set
547# CONFIG_B44 is not set 609# CONFIG_B44 is not set
548# CONFIG_KS8842 is not set 610# CONFIG_KS8842 is not set
611# CONFIG_KS8851_MLL is not set
549# CONFIG_ATL2 is not set 612# CONFIG_ATL2 is not set
550CONFIG_NETDEV_1000=y 613CONFIG_NETDEV_1000=y
551# CONFIG_ACENIC is not set 614# CONFIG_ACENIC is not set
@@ -565,6 +628,7 @@ CONFIG_NETDEV_1000=y
565# CONFIG_VIA_VELOCITY is not set 628# CONFIG_VIA_VELOCITY is not set
566# CONFIG_TIGON3 is not set 629# CONFIG_TIGON3 is not set
567# CONFIG_BNX2 is not set 630# CONFIG_BNX2 is not set
631# CONFIG_CNIC is not set
568# CONFIG_QLA3XXX is not set 632# CONFIG_QLA3XXX is not set
569# CONFIG_ATL1 is not set 633# CONFIG_ATL1 is not set
570# CONFIG_ATL1E is not set 634# CONFIG_ATL1E is not set
@@ -590,12 +654,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y
590# CONFIG_SFC is not set 654# CONFIG_SFC is not set
591# CONFIG_BE2NET is not set 655# CONFIG_BE2NET is not set
592# CONFIG_TR is not set 656# CONFIG_TR is not set
593 657CONFIG_WLAN=y
594# 658# CONFIG_ATMEL is not set
595# Wireless LAN 659# CONFIG_PRISM54 is not set
596# 660# CONFIG_HOSTAP is not set
597# CONFIG_WLAN_PRE80211 is not set
598# CONFIG_WLAN_80211 is not set
599 661
600# 662#
601# Enable WiMAX (Networking options) to see the WiMAX drivers 663# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -609,6 +671,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
609# CONFIG_NETCONSOLE is not set 671# CONFIG_NETCONSOLE is not set
610# CONFIG_NETPOLL is not set 672# CONFIG_NETPOLL is not set
611# CONFIG_NET_POLL_CONTROLLER is not set 673# CONFIG_NET_POLL_CONTROLLER is not set
674# CONFIG_VMXNET3 is not set
612# CONFIG_ISDN is not set 675# CONFIG_ISDN is not set
613# CONFIG_PHONE is not set 676# CONFIG_PHONE is not set
614 677
@@ -618,6 +681,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
618CONFIG_INPUT=y 681CONFIG_INPUT=y
619# CONFIG_INPUT_FF_MEMLESS is not set 682# CONFIG_INPUT_FF_MEMLESS is not set
620# CONFIG_INPUT_POLLDEV is not set 683# CONFIG_INPUT_POLLDEV is not set
684# CONFIG_INPUT_SPARSEKMAP is not set
621 685
622# 686#
623# Userland interfaces 687# Userland interfaces
@@ -682,6 +746,7 @@ CONFIG_HW_RANDOM=y
682CONFIG_DEVPORT=y 746CONFIG_DEVPORT=y
683CONFIG_I2C=m 747CONFIG_I2C=m
684CONFIG_I2C_BOARDINFO=y 748CONFIG_I2C_BOARDINFO=y
749CONFIG_I2C_COMPAT=y
685# CONFIG_I2C_CHARDEV is not set 750# CONFIG_I2C_CHARDEV is not set
686CONFIG_I2C_HELPER_AUTO=y 751CONFIG_I2C_HELPER_AUTO=y
687 752
@@ -710,6 +775,7 @@ CONFIG_I2C_HELPER_AUTO=y
710# 775#
711# I2C system bus drivers (mostly embedded / system-on-chip) 776# I2C system bus drivers (mostly embedded / system-on-chip)
712# 777#
778# CONFIG_I2C_DESIGNWARE is not set
713# CONFIG_I2C_OCORES is not set 779# CONFIG_I2C_OCORES is not set
714# CONFIG_I2C_SH_MOBILE is not set 780# CONFIG_I2C_SH_MOBILE is not set
715# CONFIG_I2C_SIMTEC is not set 781# CONFIG_I2C_SIMTEC is not set
@@ -721,11 +787,6 @@ CONFIG_I2C_HELPER_AUTO=y
721# CONFIG_I2C_TAOS_EVM is not set 787# CONFIG_I2C_TAOS_EVM is not set
722 788
723# 789#
724# Graphics adapter I2C/DDC channel drivers
725#
726# CONFIG_I2C_VOODOO3 is not set
727
728#
729# Other I2C/SMBus bus drivers 790# Other I2C/SMBus bus drivers
730# 791#
731# CONFIG_I2C_PCA_PLATFORM is not set 792# CONFIG_I2C_PCA_PLATFORM is not set
@@ -734,20 +795,26 @@ CONFIG_I2C_HELPER_AUTO=y
734# 795#
735# Miscellaneous I2C Chip support 796# Miscellaneous I2C Chip support
736# 797#
737# CONFIG_DS1682 is not set
738# CONFIG_SENSORS_PCF8574 is not set
739# CONFIG_PCF8575 is not set
740# CONFIG_SENSORS_PCA9539 is not set
741# CONFIG_SENSORS_TSL2550 is not set 798# CONFIG_SENSORS_TSL2550 is not set
742# CONFIG_I2C_DEBUG_CORE is not set 799# CONFIG_I2C_DEBUG_CORE is not set
743# CONFIG_I2C_DEBUG_ALGO is not set 800# CONFIG_I2C_DEBUG_ALGO is not set
744# CONFIG_I2C_DEBUG_BUS is not set 801# CONFIG_I2C_DEBUG_BUS is not set
745# CONFIG_I2C_DEBUG_CHIP is not set 802# CONFIG_I2C_DEBUG_CHIP is not set
746# CONFIG_SPI is not set 803# CONFIG_SPI is not set
804
805#
806# PPS support
807#
808# CONFIG_PPS is not set
747# CONFIG_W1 is not set 809# CONFIG_W1 is not set
748# CONFIG_POWER_SUPPLY is not set 810# CONFIG_POWER_SUPPLY is not set
749CONFIG_HWMON=y 811CONFIG_HWMON=y
750# CONFIG_HWMON_VID is not set 812# CONFIG_HWMON_VID is not set
813# CONFIG_HWMON_DEBUG_CHIP is not set
814
815#
816# Native drivers
817#
751# CONFIG_SENSORS_AD7414 is not set 818# CONFIG_SENSORS_AD7414 is not set
752# CONFIG_SENSORS_AD7418 is not set 819# CONFIG_SENSORS_AD7418 is not set
753# CONFIG_SENSORS_ADM1021 is not set 820# CONFIG_SENSORS_ADM1021 is not set
@@ -771,6 +838,7 @@ CONFIG_HWMON=y
771# CONFIG_SENSORS_GL520SM is not set 838# CONFIG_SENSORS_GL520SM is not set
772# CONFIG_SENSORS_IT87 is not set 839# CONFIG_SENSORS_IT87 is not set
773# CONFIG_SENSORS_LM63 is not set 840# CONFIG_SENSORS_LM63 is not set
841# CONFIG_SENSORS_LM73 is not set
774# CONFIG_SENSORS_LM75 is not set 842# CONFIG_SENSORS_LM75 is not set
775# CONFIG_SENSORS_LM77 is not set 843# CONFIG_SENSORS_LM77 is not set
776# CONFIG_SENSORS_LM78 is not set 844# CONFIG_SENSORS_LM78 is not set
@@ -797,6 +865,7 @@ CONFIG_HWMON=y
797# CONFIG_SENSORS_ADS7828 is not set 865# CONFIG_SENSORS_ADS7828 is not set
798# CONFIG_SENSORS_THMC50 is not set 866# CONFIG_SENSORS_THMC50 is not set
799# CONFIG_SENSORS_TMP401 is not set 867# CONFIG_SENSORS_TMP401 is not set
868# CONFIG_SENSORS_TMP421 is not set
800# CONFIG_SENSORS_VIA686A is not set 869# CONFIG_SENSORS_VIA686A is not set
801# CONFIG_SENSORS_VT1211 is not set 870# CONFIG_SENSORS_VT1211 is not set
802# CONFIG_SENSORS_VT8231 is not set 871# CONFIG_SENSORS_VT8231 is not set
@@ -808,9 +877,8 @@ CONFIG_HWMON=y
808# CONFIG_SENSORS_W83L786NG is not set 877# CONFIG_SENSORS_W83L786NG is not set
809# CONFIG_SENSORS_W83627HF is not set 878# CONFIG_SENSORS_W83627HF is not set
810# CONFIG_SENSORS_W83627EHF is not set 879# CONFIG_SENSORS_W83627EHF is not set
811# CONFIG_HWMON_DEBUG_CHIP is not set 880# CONFIG_SENSORS_LIS3_I2C is not set
812# CONFIG_THERMAL is not set 881# CONFIG_THERMAL is not set
813# CONFIG_THERMAL_HWMON is not set
814CONFIG_WATCHDOG=y 882CONFIG_WATCHDOG=y
815# CONFIG_WATCHDOG_NOWAYOUT is not set 883# CONFIG_WATCHDOG_NOWAYOUT is not set
816 884
@@ -837,17 +905,20 @@ CONFIG_SSB_POSSIBLE=y
837# 905#
838# CONFIG_MFD_CORE is not set 906# CONFIG_MFD_CORE is not set
839# CONFIG_MFD_SM501 is not set 907# CONFIG_MFD_SM501 is not set
908# CONFIG_MFD_SH_MOBILE_SDHI is not set
840# CONFIG_HTC_PASIC3 is not set 909# CONFIG_HTC_PASIC3 is not set
841# CONFIG_MFD_TMIO is not set 910# CONFIG_MFD_TMIO is not set
842# CONFIG_MFD_WM8400 is not set 911# CONFIG_MFD_WM8400 is not set
843# CONFIG_MFD_WM8350_I2C is not set 912# CONFIG_MFD_WM8350_I2C is not set
844# CONFIG_MFD_PCF50633 is not set 913# CONFIG_MFD_PCF50633 is not set
914# CONFIG_AB3100_CORE is not set
845# CONFIG_REGULATOR is not set 915# CONFIG_REGULATOR is not set
846# CONFIG_MEDIA_SUPPORT is not set 916# CONFIG_MEDIA_SUPPORT is not set
847 917
848# 918#
849# Graphics support 919# Graphics support
850# 920#
921CONFIG_VGA_ARB=y
851# CONFIG_DRM is not set 922# CONFIG_DRM is not set
852# CONFIG_VGASTATE is not set 923# CONFIG_VGASTATE is not set
853CONFIG_VIDEO_OUTPUT_CONTROL=y 924CONFIG_VIDEO_OUTPUT_CONTROL=y
@@ -939,7 +1010,6 @@ CONFIG_LOGO_SUPERH_CLUT224=y
939# CONFIG_SOUND is not set 1010# CONFIG_SOUND is not set
940CONFIG_HID_SUPPORT=y 1011CONFIG_HID_SUPPORT=y
941CONFIG_HID=y 1012CONFIG_HID=y
942# CONFIG_HID_DEBUG is not set
943# CONFIG_HIDRAW is not set 1013# CONFIG_HIDRAW is not set
944# CONFIG_HID_PID is not set 1014# CONFIG_HID_PID is not set
945 1015
@@ -1002,8 +1072,10 @@ CONFIG_FS_MBCACHE=y
1002# CONFIG_JFS_FS is not set 1072# CONFIG_JFS_FS is not set
1003# CONFIG_FS_POSIX_ACL is not set 1073# CONFIG_FS_POSIX_ACL is not set
1004# CONFIG_XFS_FS is not set 1074# CONFIG_XFS_FS is not set
1075# CONFIG_GFS2_FS is not set
1005# CONFIG_OCFS2_FS is not set 1076# CONFIG_OCFS2_FS is not set
1006# CONFIG_BTRFS_FS is not set 1077# CONFIG_BTRFS_FS is not set
1078# CONFIG_NILFS2_FS is not set
1007CONFIG_FILE_LOCKING=y 1079CONFIG_FILE_LOCKING=y
1008CONFIG_FSNOTIFY=y 1080CONFIG_FSNOTIFY=y
1009CONFIG_DNOTIFY=y 1081CONFIG_DNOTIFY=y
@@ -1067,7 +1139,6 @@ CONFIG_ROMFS_BACKED_BY_BLOCK=y
1067CONFIG_ROMFS_ON_BLOCK=y 1139CONFIG_ROMFS_ON_BLOCK=y
1068# CONFIG_SYSV_FS is not set 1140# CONFIG_SYSV_FS is not set
1069# CONFIG_UFS_FS is not set 1141# CONFIG_UFS_FS is not set
1070# CONFIG_NILFS2_FS is not set
1071CONFIG_NETWORK_FILESYSTEMS=y 1142CONFIG_NETWORK_FILESYSTEMS=y
1072CONFIG_NFS_FS=y 1143CONFIG_NFS_FS=y
1073CONFIG_NFS_V3=y 1144CONFIG_NFS_V3=y
@@ -1120,6 +1191,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1120CONFIG_ENABLE_MUST_CHECK=y 1191CONFIG_ENABLE_MUST_CHECK=y
1121CONFIG_FRAME_WARN=1024 1192CONFIG_FRAME_WARN=1024
1122CONFIG_MAGIC_SYSRQ=y 1193CONFIG_MAGIC_SYSRQ=y
1194# CONFIG_STRIP_ASM_SYMS is not set
1123# CONFIG_UNUSED_SYMBOLS is not set 1195# CONFIG_UNUSED_SYMBOLS is not set
1124CONFIG_DEBUG_FS=y 1196CONFIG_DEBUG_FS=y
1125# CONFIG_HEADERS_CHECK is not set 1197# CONFIG_HEADERS_CHECK is not set
@@ -1155,21 +1227,25 @@ CONFIG_DEBUG_BUGVERBOSE=y
1155# CONFIG_DEBUG_LIST is not set 1227# CONFIG_DEBUG_LIST is not set
1156# CONFIG_DEBUG_SG is not set 1228# CONFIG_DEBUG_SG is not set
1157# CONFIG_DEBUG_NOTIFIERS is not set 1229# CONFIG_DEBUG_NOTIFIERS is not set
1230# CONFIG_DEBUG_CREDENTIALS is not set
1158CONFIG_FRAME_POINTER=y 1231CONFIG_FRAME_POINTER=y
1159# CONFIG_RCU_TORTURE_TEST is not set 1232# CONFIG_RCU_TORTURE_TEST is not set
1160# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1233# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1161# CONFIG_BACKTRACE_SELF_TEST is not set 1234# CONFIG_BACKTRACE_SELF_TEST is not set
1162# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1235# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1236# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1163# CONFIG_FAULT_INJECTION is not set 1237# CONFIG_FAULT_INJECTION is not set
1164# CONFIG_LATENCYTOP is not set 1238# CONFIG_LATENCYTOP is not set
1165# CONFIG_SYSCTL_SYSCALL_CHECK is not set 1239# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1166# CONFIG_PAGE_POISONING is not set 1240# CONFIG_PAGE_POISONING is not set
1241CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
1167CONFIG_TRACING_SUPPORT=y 1242CONFIG_TRACING_SUPPORT=y
1168CONFIG_FTRACE=y 1243CONFIG_FTRACE=y
1169# CONFIG_IRQSOFF_TRACER is not set 1244# CONFIG_IRQSOFF_TRACER is not set
1170# CONFIG_PREEMPT_TRACER is not set 1245# CONFIG_PREEMPT_TRACER is not set
1171# CONFIG_SCHED_TRACER is not set 1246# CONFIG_SCHED_TRACER is not set
1172# CONFIG_ENABLE_DEFAULT_TRACERS is not set 1247# CONFIG_ENABLE_DEFAULT_TRACERS is not set
1248# CONFIG_FTRACE_SYSCALLS is not set
1173# CONFIG_BOOT_TRACER is not set 1249# CONFIG_BOOT_TRACER is not set
1174CONFIG_BRANCH_PROFILE_NONE=y 1250CONFIG_BRANCH_PROFILE_NONE=y
1175# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set 1251# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
@@ -1180,11 +1256,9 @@ CONFIG_BRANCH_PROFILE_NONE=y
1180# CONFIG_DYNAMIC_DEBUG is not set 1256# CONFIG_DYNAMIC_DEBUG is not set
1181# CONFIG_DMA_API_DEBUG is not set 1257# CONFIG_DMA_API_DEBUG is not set
1182# CONFIG_SAMPLES is not set 1258# CONFIG_SAMPLES is not set
1183# CONFIG_KMEMCHECK is not set
1184# CONFIG_EARLY_SCIF_CONSOLE is not set
1185# CONFIG_DEBUG_BOOTMEM is not set
1186# CONFIG_DEBUG_STACK_USAGE is not set 1259# CONFIG_DEBUG_STACK_USAGE is not set
1187# CONFIG_4KSTACKS is not set 1260# CONFIG_4KSTACKS is not set
1261# CONFIG_DWARF_UNWINDER is not set
1188# CONFIG_SH_NO_BSS_INIT is not set 1262# CONFIG_SH_NO_BSS_INIT is not set
1189CONFIG_SH64_SR_WATCH=y 1263CONFIG_SH64_SR_WATCH=y
1190 1264
@@ -1194,13 +1268,16 @@ CONFIG_SH64_SR_WATCH=y
1194# CONFIG_KEYS is not set 1268# CONFIG_KEYS is not set
1195# CONFIG_SECURITY is not set 1269# CONFIG_SECURITY is not set
1196# CONFIG_SECURITYFS is not set 1270# CONFIG_SECURITYFS is not set
1197# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1271# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1272# CONFIG_DEFAULT_SECURITY_SMACK is not set
1273# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1274CONFIG_DEFAULT_SECURITY_DAC=y
1275CONFIG_DEFAULT_SECURITY=""
1198CONFIG_CRYPTO=y 1276CONFIG_CRYPTO=y
1199 1277
1200# 1278#
1201# Crypto core or helper 1279# Crypto core or helper
1202# 1280#
1203# CONFIG_CRYPTO_FIPS is not set
1204# CONFIG_CRYPTO_MANAGER is not set 1281# CONFIG_CRYPTO_MANAGER is not set
1205# CONFIG_CRYPTO_MANAGER2 is not set 1282# CONFIG_CRYPTO_MANAGER2 is not set
1206# CONFIG_CRYPTO_GF128MUL is not set 1283# CONFIG_CRYPTO_GF128MUL is not set
@@ -1232,11 +1309,13 @@ CONFIG_CRYPTO=y
1232# 1309#
1233# CONFIG_CRYPTO_HMAC is not set 1310# CONFIG_CRYPTO_HMAC is not set
1234# CONFIG_CRYPTO_XCBC is not set 1311# CONFIG_CRYPTO_XCBC is not set
1312# CONFIG_CRYPTO_VMAC is not set
1235 1313
1236# 1314#
1237# Digest 1315# Digest
1238# 1316#
1239# CONFIG_CRYPTO_CRC32C is not set 1317# CONFIG_CRYPTO_CRC32C is not set
1318# CONFIG_CRYPTO_GHASH is not set
1240# CONFIG_CRYPTO_MD4 is not set 1319# CONFIG_CRYPTO_MD4 is not set
1241# CONFIG_CRYPTO_MD5 is not set 1320# CONFIG_CRYPTO_MD5 is not set
1242# CONFIG_CRYPTO_MICHAEL_MIC is not set 1321# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1299,5 +1378,6 @@ CONFIG_CRC32=y
1299CONFIG_HAS_IOMEM=y 1378CONFIG_HAS_IOMEM=y
1300CONFIG_HAS_IOPORT=y 1379CONFIG_HAS_IOPORT=y
1301CONFIG_HAS_DMA=y 1380CONFIG_HAS_DMA=y
1381CONFIG_HAVE_LMB=y
1302CONFIG_NLATTR=y 1382CONFIG_NLATTR=y
1303CONFIG_GENERIC_ATOMIC64=y 1383CONFIG_GENERIC_ATOMIC64=y
diff --git a/arch/sh/configs/dreamcast_defconfig b/arch/sh/configs/dreamcast_defconfig
index aedbd4f13046..55f652be954b 100644
--- a/arch/sh/configs/dreamcast_defconfig
+++ b/arch/sh/configs/dreamcast_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 17:56:07 2009 4# Mon Jan 4 11:17:35 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -21,6 +21,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
21CONFIG_GENERIC_CMOS_UPDATE=y 21CONFIG_GENERIC_CMOS_UPDATE=y
22# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 22# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
23CONFIG_ARCH_HIBERNATION_POSSIBLE=y 23CONFIG_ARCH_HIBERNATION_POSSIBLE=y
24CONFIG_SYS_SUPPORTS_HUGETLBFS=y
24CONFIG_SYS_SUPPORTS_PCI=y 25CONFIG_SYS_SUPPORTS_PCI=y
25CONFIG_SYS_SUPPORTS_TMU=y 26CONFIG_SYS_SUPPORTS_TMU=y
26CONFIG_STACKTRACE_SUPPORT=y 27CONFIG_STACKTRACE_SUPPORT=y
@@ -31,6 +32,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
31CONFIG_ARCH_NO_VIRT_TO_BUS=y 32CONFIG_ARCH_NO_VIRT_TO_BUS=y
32CONFIG_ARCH_HAS_DEFAULT_IDLE=y 33CONFIG_ARCH_HAS_DEFAULT_IDLE=y
33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 34CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
35CONFIG_DMA_NONCOHERENT=y
34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 36CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
35CONFIG_CONSTRUCTORS=y 37CONFIG_CONSTRUCTORS=y
36 38
@@ -63,6 +65,7 @@ CONFIG_BSD_PROCESS_ACCT=y
63# 65#
64CONFIG_TREE_RCU=y 66CONFIG_TREE_RCU=y
65# CONFIG_TREE_PREEMPT_RCU is not set 67# CONFIG_TREE_PREEMPT_RCU is not set
68# CONFIG_TINY_RCU is not set
66# CONFIG_RCU_TRACE is not set 69# CONFIG_RCU_TRACE is not set
67CONFIG_RCU_FANOUT=32 70CONFIG_RCU_FANOUT=32
68# CONFIG_RCU_FANOUT_EXACT is not set 71# CONFIG_RCU_FANOUT_EXACT is not set
@@ -97,6 +100,7 @@ CONFIG_EVENTFD=y
97CONFIG_SHMEM=y 100CONFIG_SHMEM=y
98CONFIG_AIO=y 101CONFIG_AIO=y
99CONFIG_HAVE_PERF_EVENTS=y 102CONFIG_HAVE_PERF_EVENTS=y
103CONFIG_PERF_USE_VMALLOC=y
100 104
101# 105#
102# Kernel Performance Events And Counters 106# Kernel Performance Events And Counters
@@ -117,6 +121,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
117CONFIG_HAVE_KPROBES=y 121CONFIG_HAVE_KPROBES=y
118CONFIG_HAVE_KRETPROBES=y 122CONFIG_HAVE_KRETPROBES=y
119CONFIG_HAVE_ARCH_TRACEHOOK=y 123CONFIG_HAVE_ARCH_TRACEHOOK=y
124CONFIG_HAVE_DMA_ATTRS=y
120CONFIG_HAVE_CLK=y 125CONFIG_HAVE_CLK=y
121CONFIG_HAVE_DMA_API_DEBUG=y 126CONFIG_HAVE_DMA_API_DEBUG=y
122 127
@@ -143,14 +148,41 @@ CONFIG_LBDAF=y
143# IO Schedulers 148# IO Schedulers
144# 149#
145CONFIG_IOSCHED_NOOP=y 150CONFIG_IOSCHED_NOOP=y
146CONFIG_IOSCHED_AS=y
147CONFIG_IOSCHED_DEADLINE=y 151CONFIG_IOSCHED_DEADLINE=y
148CONFIG_IOSCHED_CFQ=y 152CONFIG_IOSCHED_CFQ=y
149CONFIG_DEFAULT_AS=y
150# CONFIG_DEFAULT_DEADLINE is not set 153# CONFIG_DEFAULT_DEADLINE is not set
151# CONFIG_DEFAULT_CFQ is not set 154CONFIG_DEFAULT_CFQ=y
152# CONFIG_DEFAULT_NOOP is not set 155# CONFIG_DEFAULT_NOOP is not set
153CONFIG_DEFAULT_IOSCHED="anticipatory" 156CONFIG_DEFAULT_IOSCHED="cfq"
157# CONFIG_INLINE_SPIN_TRYLOCK is not set
158# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
159# CONFIG_INLINE_SPIN_LOCK is not set
160# CONFIG_INLINE_SPIN_LOCK_BH is not set
161# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
162# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
163# CONFIG_INLINE_SPIN_UNLOCK is not set
164# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
165# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
166# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
167# CONFIG_INLINE_READ_TRYLOCK is not set
168# CONFIG_INLINE_READ_LOCK is not set
169# CONFIG_INLINE_READ_LOCK_BH is not set
170# CONFIG_INLINE_READ_LOCK_IRQ is not set
171# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
172# CONFIG_INLINE_READ_UNLOCK is not set
173# CONFIG_INLINE_READ_UNLOCK_BH is not set
174# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
175# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
176# CONFIG_INLINE_WRITE_TRYLOCK is not set
177# CONFIG_INLINE_WRITE_LOCK is not set
178# CONFIG_INLINE_WRITE_LOCK_BH is not set
179# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
180# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
181# CONFIG_INLINE_WRITE_UNLOCK is not set
182# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
183# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
184# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
185# CONFIG_MUTEX_SPIN_ON_OWNER is not set
154# CONFIG_FREEZER is not set 186# CONFIG_FREEZER is not set
155 187
156# 188#
@@ -232,8 +264,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
232# CONFIG_PHYS_ADDR_T_64BIT is not set 264# CONFIG_PHYS_ADDR_T_64BIT is not set
233CONFIG_ZONE_DMA_FLAG=0 265CONFIG_ZONE_DMA_FLAG=0
234CONFIG_NR_QUICK=2 266CONFIG_NR_QUICK=2
235CONFIG_HAVE_MLOCK=y
236CONFIG_HAVE_MLOCKED_PAGE_BIT=y
237# CONFIG_KSM is not set 267# CONFIG_KSM is not set
238CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 268CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
239 269
@@ -294,9 +324,9 @@ CONFIG_CPU_FREQ_GOV_USERSPACE=y
294# 324#
295# DMA support 325# DMA support
296# 326#
297CONFIG_SH_DMA_API=y
298CONFIG_SH_DMA=y 327CONFIG_SH_DMA=y
299CONFIG_SH_DMA_IRQ_MULTI=y 328CONFIG_SH_DMA_IRQ_MULTI=y
329CONFIG_SH_DMA_API=y
300CONFIG_NR_ONCHIP_DMA_CHANNELS=4 330CONFIG_NR_ONCHIP_DMA_CHANNELS=4
301CONFIG_NR_DMA_CHANNELS_BOOL=y 331CONFIG_NR_DMA_CHANNELS_BOOL=y
302CONFIG_NR_DMA_CHANNELS=9 332CONFIG_NR_DMA_CHANNELS=9
@@ -338,7 +368,6 @@ CONFIG_GUSA=y
338CONFIG_ZERO_PAGE_OFFSET=0x00001000 368CONFIG_ZERO_PAGE_OFFSET=0x00001000
339CONFIG_BOOT_LINK_OFFSET=0x00800000 369CONFIG_BOOT_LINK_OFFSET=0x00800000
340CONFIG_ENTRY_OFFSET=0x00001000 370CONFIG_ENTRY_OFFSET=0x00001000
341# CONFIG_UBC_WAKEUP is not set
342CONFIG_CMDLINE_OVERWRITE=y 371CONFIG_CMDLINE_OVERWRITE=y
343# CONFIG_CMDLINE_EXTEND is not set 372# CONFIG_CMDLINE_EXTEND is not set
344CONFIG_CMDLINE="console=ttySC1,115200 panic=3" 373CONFIG_CMDLINE="console=ttySC1,115200 panic=3"
@@ -348,7 +377,6 @@ CONFIG_CMDLINE="console=ttySC1,115200 panic=3"
348# 377#
349CONFIG_MAPLE=y 378CONFIG_MAPLE=y
350CONFIG_PCI=y 379CONFIG_PCI=y
351CONFIG_SH_PCIDMA_NONCOHERENT=y
352# CONFIG_PCIEPORTBUS is not set 380# CONFIG_PCIEPORTBUS is not set
353# CONFIG_ARCH_SUPPORTS_MSI is not set 381# CONFIG_ARCH_SUPPORTS_MSI is not set
354CONFIG_PCI_LEGACY=y 382CONFIG_PCI_LEGACY=y
@@ -443,9 +471,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
443# CONFIG_AF_RXRPC is not set 471# CONFIG_AF_RXRPC is not set
444CONFIG_WIRELESS=y 472CONFIG_WIRELESS=y
445# CONFIG_CFG80211 is not set 473# CONFIG_CFG80211 is not set
446CONFIG_CFG80211_DEFAULT_PS_VALUE=0
447# CONFIG_WIRELESS_OLD_REGULATORY is not set
448# CONFIG_WIRELESS_EXT is not set
449# CONFIG_LIB80211 is not set 474# CONFIG_LIB80211 is not set
450 475
451# 476#
@@ -478,6 +503,10 @@ CONFIG_GDROM=y
478# CONFIG_BLK_DEV_UMEM is not set 503# CONFIG_BLK_DEV_UMEM is not set
479# CONFIG_BLK_DEV_COW_COMMON is not set 504# CONFIG_BLK_DEV_COW_COMMON is not set
480# CONFIG_BLK_DEV_LOOP is not set 505# CONFIG_BLK_DEV_LOOP is not set
506
507#
508# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
509#
481# CONFIG_BLK_DEV_NBD is not set 510# CONFIG_BLK_DEV_NBD is not set
482# CONFIG_BLK_DEV_SX8 is not set 511# CONFIG_BLK_DEV_SX8 is not set
483# CONFIG_BLK_DEV_RAM is not set 512# CONFIG_BLK_DEV_RAM is not set
@@ -579,6 +608,7 @@ CONFIG_8139TOO=y
579# CONFIG_SUNDANCE is not set 608# CONFIG_SUNDANCE is not set
580# CONFIG_TLAN is not set 609# CONFIG_TLAN is not set
581# CONFIG_KS8842 is not set 610# CONFIG_KS8842 is not set
611# CONFIG_KS8851_MLL is not set
582# CONFIG_VIA_RHINE is not set 612# CONFIG_VIA_RHINE is not set
583# CONFIG_SC92031 is not set 613# CONFIG_SC92031 is not set
584# CONFIG_ATL2 is not set 614# CONFIG_ATL2 is not set
@@ -586,8 +616,9 @@ CONFIG_8139TOO=y
586# CONFIG_NETDEV_10000 is not set 616# CONFIG_NETDEV_10000 is not set
587# CONFIG_TR is not set 617# CONFIG_TR is not set
588CONFIG_WLAN=y 618CONFIG_WLAN=y
589# CONFIG_WLAN_PRE80211 is not set 619# CONFIG_ATMEL is not set
590# CONFIG_WLAN_80211 is not set 620# CONFIG_PRISM54 is not set
621# CONFIG_HOSTAP is not set
591 622
592# 623#
593# Enable WiMAX (Networking options) to see the WiMAX drivers 624# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -600,6 +631,7 @@ CONFIG_WLAN=y
600# CONFIG_NETCONSOLE is not set 631# CONFIG_NETCONSOLE is not set
601# CONFIG_NETPOLL is not set 632# CONFIG_NETPOLL is not set
602# CONFIG_NET_POLL_CONTROLLER is not set 633# CONFIG_NET_POLL_CONTROLLER is not set
634# CONFIG_VMXNET3 is not set
603# CONFIG_ISDN is not set 635# CONFIG_ISDN is not set
604# CONFIG_PHONE is not set 636# CONFIG_PHONE is not set
605 637
@@ -609,6 +641,7 @@ CONFIG_WLAN=y
609CONFIG_INPUT=y 641CONFIG_INPUT=y
610# CONFIG_INPUT_FF_MEMLESS is not set 642# CONFIG_INPUT_FF_MEMLESS is not set
611# CONFIG_INPUT_POLLDEV is not set 643# CONFIG_INPUT_POLLDEV is not set
644# CONFIG_INPUT_SPARSEKMAP is not set
612 645
613# 646#
614# Userland interfaces 647# Userland interfaces
@@ -655,6 +688,7 @@ CONFIG_SERIO=y
655# CONFIG_SERIO_PCIPS2 is not set 688# CONFIG_SERIO_PCIPS2 is not set
656CONFIG_SERIO_LIBPS2=y 689CONFIG_SERIO_LIBPS2=y
657# CONFIG_SERIO_RAW is not set 690# CONFIG_SERIO_RAW is not set
691# CONFIG_SERIO_ALTERA_PS2 is not set
658# CONFIG_GAMEPORT is not set 692# CONFIG_GAMEPORT is not set
659 693
660# 694#
@@ -734,6 +768,7 @@ CONFIG_SSB_POSSIBLE=y
734# 768#
735# CONFIG_MFD_CORE is not set 769# CONFIG_MFD_CORE is not set
736# CONFIG_MFD_SM501 is not set 770# CONFIG_MFD_SM501 is not set
771# CONFIG_MFD_SH_MOBILE_SDHI is not set
737# CONFIG_HTC_PASIC3 is not set 772# CONFIG_HTC_PASIC3 is not set
738# CONFIG_MFD_TMIO is not set 773# CONFIG_MFD_TMIO is not set
739# CONFIG_REGULATOR is not set 774# CONFIG_REGULATOR is not set
@@ -883,6 +918,7 @@ CONFIG_RTC_LIB=y
883# CONFIG_EXT2_FS is not set 918# CONFIG_EXT2_FS is not set
884# CONFIG_EXT3_FS is not set 919# CONFIG_EXT3_FS is not set
885# CONFIG_EXT4_FS is not set 920# CONFIG_EXT4_FS is not set
921CONFIG_EXT4_USE_FOR_EXT23=y
886# CONFIG_REISERFS_FS is not set 922# CONFIG_REISERFS_FS is not set
887# CONFIG_JFS_FS is not set 923# CONFIG_JFS_FS is not set
888# CONFIG_FS_POSIX_ACL is not set 924# CONFIG_FS_POSIX_ACL is not set
@@ -981,10 +1017,11 @@ CONFIG_FRAME_WARN=1024
981# CONFIG_DEBUG_FS is not set 1017# CONFIG_DEBUG_FS is not set
982# CONFIG_HEADERS_CHECK is not set 1018# CONFIG_HEADERS_CHECK is not set
983# CONFIG_DEBUG_KERNEL is not set 1019# CONFIG_DEBUG_KERNEL is not set
984# CONFIG_DEBUG_BUGVERBOSE is not set 1020CONFIG_DEBUG_BUGVERBOSE=y
985# CONFIG_DEBUG_MEMORY_INIT is not set 1021# CONFIG_DEBUG_MEMORY_INIT is not set
986# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1022# CONFIG_RCU_CPU_STALL_DETECTOR is not set
987# CONFIG_LATENCYTOP is not set 1023# CONFIG_LATENCYTOP is not set
1024# CONFIG_SYSCTL_SYSCALL_CHECK is not set
988CONFIG_HAVE_FUNCTION_TRACER=y 1025CONFIG_HAVE_FUNCTION_TRACER=y
989CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 1026CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
990CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 1027CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
@@ -997,7 +1034,6 @@ CONFIG_TRACING_SUPPORT=y
997# CONFIG_SAMPLES is not set 1034# CONFIG_SAMPLES is not set
998CONFIG_HAVE_ARCH_KGDB=y 1035CONFIG_HAVE_ARCH_KGDB=y
999# CONFIG_SH_STANDARD_BIOS is not set 1036# CONFIG_SH_STANDARD_BIOS is not set
1000# CONFIG_EARLY_SCIF_CONSOLE is not set
1001# CONFIG_DWARF_UNWINDER is not set 1037# CONFIG_DWARF_UNWINDER is not set
1002 1038
1003# 1039#
@@ -1006,7 +1042,11 @@ CONFIG_HAVE_ARCH_KGDB=y
1006# CONFIG_KEYS is not set 1042# CONFIG_KEYS is not set
1007# CONFIG_SECURITY is not set 1043# CONFIG_SECURITY is not set
1008# CONFIG_SECURITYFS is not set 1044# CONFIG_SECURITYFS is not set
1009# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1045# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1046# CONFIG_DEFAULT_SECURITY_SMACK is not set
1047# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1048CONFIG_DEFAULT_SECURITY_DAC=y
1049CONFIG_DEFAULT_SECURITY=""
1010CONFIG_CRYPTO=y 1050CONFIG_CRYPTO=y
1011 1051
1012# 1052#
diff --git a/arch/sh/configs/ecovec24-romimage_defconfig b/arch/sh/configs/ecovec24-romimage_defconfig
index 46874704e4e7..662c1ad20494 100644
--- a/arch/sh/configs/ecovec24-romimage_defconfig
+++ b/arch/sh/configs/ecovec24-romimage_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 17:56:41 2009 4# Mon Jan 4 11:18:17 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21CONFIG_ARCH_SUSPEND_POSSIBLE=y 21CONFIG_ARCH_SUSPEND_POSSIBLE=y
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_CMT=y 24CONFIG_SYS_SUPPORTS_CMT=y
24CONFIG_SYS_SUPPORTS_TMU=y 25CONFIG_SYS_SUPPORTS_TMU=y
25CONFIG_STACKTRACE_SUPPORT=y 26CONFIG_STACKTRACE_SUPPORT=y
@@ -30,6 +31,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
30CONFIG_ARCH_NO_VIRT_TO_BUS=y 31CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 32CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
34CONFIG_DMA_NONCOHERENT=y
33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 35CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
34CONFIG_CONSTRUCTORS=y 36CONFIG_CONSTRUCTORS=y
35 37
@@ -61,6 +63,7 @@ CONFIG_BSD_PROCESS_ACCT=y
61# 63#
62CONFIG_TREE_RCU=y 64CONFIG_TREE_RCU=y
63# CONFIG_TREE_PREEMPT_RCU is not set 65# CONFIG_TREE_PREEMPT_RCU is not set
66# CONFIG_TINY_RCU is not set
64# CONFIG_RCU_TRACE is not set 67# CONFIG_RCU_TRACE is not set
65CONFIG_RCU_FANOUT=32 68CONFIG_RCU_FANOUT=32
66# CONFIG_RCU_FANOUT_EXACT is not set 69# CONFIG_RCU_FANOUT_EXACT is not set
@@ -103,6 +106,7 @@ CONFIG_EVENTFD=y
103CONFIG_SHMEM=y 106CONFIG_SHMEM=y
104CONFIG_AIO=y 107CONFIG_AIO=y
105CONFIG_HAVE_PERF_EVENTS=y 108CONFIG_HAVE_PERF_EVENTS=y
109CONFIG_PERF_USE_VMALLOC=y
106 110
107# 111#
108# Kernel Performance Events And Counters 112# Kernel Performance Events And Counters
@@ -120,6 +124,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
120CONFIG_HAVE_KPROBES=y 124CONFIG_HAVE_KPROBES=y
121CONFIG_HAVE_KRETPROBES=y 125CONFIG_HAVE_KRETPROBES=y
122CONFIG_HAVE_ARCH_TRACEHOOK=y 126CONFIG_HAVE_ARCH_TRACEHOOK=y
127CONFIG_HAVE_DMA_ATTRS=y
123CONFIG_HAVE_CLK=y 128CONFIG_HAVE_CLK=y
124CONFIG_HAVE_DMA_API_DEBUG=y 129CONFIG_HAVE_DMA_API_DEBUG=y
125 130
@@ -142,14 +147,41 @@ CONFIG_BLOCK=y
142# IO Schedulers 147# IO Schedulers
143# 148#
144CONFIG_IOSCHED_NOOP=y 149CONFIG_IOSCHED_NOOP=y
145CONFIG_IOSCHED_AS=y
146CONFIG_IOSCHED_DEADLINE=y 150CONFIG_IOSCHED_DEADLINE=y
147CONFIG_IOSCHED_CFQ=y 151CONFIG_IOSCHED_CFQ=y
148# CONFIG_DEFAULT_AS is not set
149# CONFIG_DEFAULT_DEADLINE is not set 152# CONFIG_DEFAULT_DEADLINE is not set
150CONFIG_DEFAULT_CFQ=y 153CONFIG_DEFAULT_CFQ=y
151# CONFIG_DEFAULT_NOOP is not set 154# CONFIG_DEFAULT_NOOP is not set
152CONFIG_DEFAULT_IOSCHED="cfq" 155CONFIG_DEFAULT_IOSCHED="cfq"
156# CONFIG_INLINE_SPIN_TRYLOCK is not set
157# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
158# CONFIG_INLINE_SPIN_LOCK is not set
159# CONFIG_INLINE_SPIN_LOCK_BH is not set
160# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
161# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
162CONFIG_INLINE_SPIN_UNLOCK=y
163# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
164CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
165# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
166# CONFIG_INLINE_READ_TRYLOCK is not set
167# CONFIG_INLINE_READ_LOCK is not set
168# CONFIG_INLINE_READ_LOCK_BH is not set
169# CONFIG_INLINE_READ_LOCK_IRQ is not set
170# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
171CONFIG_INLINE_READ_UNLOCK=y
172# CONFIG_INLINE_READ_UNLOCK_BH is not set
173CONFIG_INLINE_READ_UNLOCK_IRQ=y
174# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
175# CONFIG_INLINE_WRITE_TRYLOCK is not set
176# CONFIG_INLINE_WRITE_LOCK is not set
177# CONFIG_INLINE_WRITE_LOCK_BH is not set
178# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
179# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
180CONFIG_INLINE_WRITE_UNLOCK=y
181# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
182CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
183# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
184# CONFIG_MUTEX_SPIN_ON_OWNER is not set
153# CONFIG_FREEZER is not set 185# CONFIG_FREEZER is not set
154 186
155# 187#
@@ -205,6 +237,7 @@ CONFIG_FORCE_MAX_ZONEORDER=11
205CONFIG_MEMORY_START=0x08000000 237CONFIG_MEMORY_START=0x08000000
206CONFIG_MEMORY_SIZE=0x10000000 238CONFIG_MEMORY_SIZE=0x10000000
207CONFIG_29BIT=y 239CONFIG_29BIT=y
240# CONFIG_PMB_ENABLE is not set
208# CONFIG_X2TLB is not set 241# CONFIG_X2TLB is not set
209CONFIG_VSYSCALL=y 242CONFIG_VSYSCALL=y
210CONFIG_ARCH_FLATMEM_ENABLE=y 243CONFIG_ARCH_FLATMEM_ENABLE=y
@@ -229,8 +262,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
229# CONFIG_PHYS_ADDR_T_64BIT is not set 262# CONFIG_PHYS_ADDR_T_64BIT is not set
230CONFIG_ZONE_DMA_FLAG=0 263CONFIG_ZONE_DMA_FLAG=0
231CONFIG_NR_QUICK=2 264CONFIG_NR_QUICK=2
232CONFIG_HAVE_MLOCK=y
233CONFIG_HAVE_MLOCKED_PAGE_BIT=y
234# CONFIG_KSM is not set 265# CONFIG_KSM is not set
235CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 266CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
236 267
@@ -264,7 +295,6 @@ CONFIG_SH_ECOVEC=y
264# 295#
265# CONFIG_SH_TIMER_TMU is not set 296# CONFIG_SH_TIMER_TMU is not set
266CONFIG_SH_TIMER_CMT=y 297CONFIG_SH_TIMER_CMT=y
267CONFIG_SH_PCLK_FREQ=33333333
268CONFIG_SH_CLK_CPG=y 298CONFIG_SH_CLK_CPG=y
269# CONFIG_NO_HZ is not set 299# CONFIG_NO_HZ is not set
270# CONFIG_HIGH_RES_TIMERS is not set 300# CONFIG_HIGH_RES_TIMERS is not set
@@ -406,7 +436,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
406# CONFIG_IRDA is not set 436# CONFIG_IRDA is not set
407# CONFIG_BT is not set 437# CONFIG_BT is not set
408# CONFIG_AF_RXRPC is not set 438# CONFIG_AF_RXRPC is not set
409# CONFIG_WIRELESS is not set 439CONFIG_WIRELESS=y
440# CONFIG_CFG80211 is not set
441# CONFIG_LIB80211 is not set
442
443#
444# CFG80211 needs to be enabled for MAC80211
445#
410# CONFIG_WIMAX is not set 446# CONFIG_WIMAX is not set
411# CONFIG_RFKILL is not set 447# CONFIG_RFKILL is not set
412# CONFIG_NET_9P is not set 448# CONFIG_NET_9P is not set
@@ -432,6 +468,10 @@ CONFIG_EXTRA_FIRMWARE=""
432CONFIG_BLK_DEV=y 468CONFIG_BLK_DEV=y
433# CONFIG_BLK_DEV_COW_COMMON is not set 469# CONFIG_BLK_DEV_COW_COMMON is not set
434# CONFIG_BLK_DEV_LOOP is not set 470# CONFIG_BLK_DEV_LOOP is not set
471
472#
473# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
474#
435# CONFIG_BLK_DEV_NBD is not set 475# CONFIG_BLK_DEV_NBD is not set
436# CONFIG_BLK_DEV_UB is not set 476# CONFIG_BLK_DEV_UB is not set
437# CONFIG_BLK_DEV_RAM is not set 477# CONFIG_BLK_DEV_RAM is not set
@@ -526,11 +566,12 @@ CONFIG_SH_ETH=y
526# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 566# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
527# CONFIG_B44 is not set 567# CONFIG_B44 is not set
528# CONFIG_KS8842 is not set 568# CONFIG_KS8842 is not set
569# CONFIG_KS8851_MLL is not set
529# CONFIG_NETDEV_1000 is not set 570# CONFIG_NETDEV_1000 is not set
530# CONFIG_NETDEV_10000 is not set 571# CONFIG_NETDEV_10000 is not set
531CONFIG_WLAN=y 572CONFIG_WLAN=y
532# CONFIG_WLAN_PRE80211 is not set 573# CONFIG_USB_ZD1201 is not set
533# CONFIG_WLAN_80211 is not set 574# CONFIG_HOSTAP is not set
534 575
535# 576#
536# Enable WiMAX (Networking options) to see the WiMAX drivers 577# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -559,6 +600,7 @@ CONFIG_WLAN=y
559CONFIG_INPUT=y 600CONFIG_INPUT=y
560# CONFIG_INPUT_FF_MEMLESS is not set 601# CONFIG_INPUT_FF_MEMLESS is not set
561# CONFIG_INPUT_POLLDEV is not set 602# CONFIG_INPUT_POLLDEV is not set
603# CONFIG_INPUT_SPARSEKMAP is not set
562 604
563# 605#
564# Userland interfaces 606# Userland interfaces
@@ -652,7 +694,6 @@ CONFIG_I2C_SH_MOBILE=y
652# 694#
653# Miscellaneous I2C Chip support 695# Miscellaneous I2C Chip support
654# 696#
655# CONFIG_DS1682 is not set
656# CONFIG_SENSORS_TSL2550 is not set 697# CONFIG_SENSORS_TSL2550 is not set
657# CONFIG_I2C_DEBUG_CORE is not set 698# CONFIG_I2C_DEBUG_CORE is not set
658# CONFIG_I2C_DEBUG_ALGO is not set 699# CONFIG_I2C_DEBUG_ALGO is not set
@@ -707,16 +748,19 @@ CONFIG_SSB_POSSIBLE=y
707# 748#
708# CONFIG_MFD_CORE is not set 749# CONFIG_MFD_CORE is not set
709# CONFIG_MFD_SM501 is not set 750# CONFIG_MFD_SM501 is not set
751# CONFIG_MFD_SH_MOBILE_SDHI is not set
710# CONFIG_HTC_PASIC3 is not set 752# CONFIG_HTC_PASIC3 is not set
711# CONFIG_TPS65010 is not set 753# CONFIG_TPS65010 is not set
712# CONFIG_TWL4030_CORE is not set 754# CONFIG_TWL4030_CORE is not set
713# CONFIG_MFD_TMIO is not set 755# CONFIG_MFD_TMIO is not set
714# CONFIG_PMIC_DA903X is not set 756# CONFIG_PMIC_DA903X is not set
757# CONFIG_PMIC_ADP5520 is not set
715# CONFIG_MFD_WM8400 is not set 758# CONFIG_MFD_WM8400 is not set
716# CONFIG_MFD_WM831X is not set 759# CONFIG_MFD_WM831X is not set
717# CONFIG_MFD_WM8350_I2C is not set 760# CONFIG_MFD_WM8350_I2C is not set
718# CONFIG_MFD_PCF50633 is not set 761# CONFIG_MFD_PCF50633 is not set
719# CONFIG_AB3100_CORE is not set 762# CONFIG_AB3100_CORE is not set
763# CONFIG_MFD_88PM8607 is not set
720# CONFIG_REGULATOR is not set 764# CONFIG_REGULATOR is not set
721# CONFIG_MEDIA_SUPPORT is not set 765# CONFIG_MEDIA_SUPPORT is not set
722 766
@@ -867,6 +911,7 @@ CONFIG_EXT2_FS=y
867# CONFIG_EXT2_FS_XIP is not set 911# CONFIG_EXT2_FS_XIP is not set
868# CONFIG_EXT3_FS is not set 912# CONFIG_EXT3_FS is not set
869# CONFIG_EXT4_FS is not set 913# CONFIG_EXT4_FS is not set
914CONFIG_EXT4_USE_FOR_EXT23=y
870# CONFIG_REISERFS_FS is not set 915# CONFIG_REISERFS_FS is not set
871# CONFIG_JFS_FS is not set 916# CONFIG_JFS_FS is not set
872# CONFIG_FS_POSIX_ACL is not set 917# CONFIG_FS_POSIX_ACL is not set
@@ -979,7 +1024,7 @@ CONFIG_FRAME_WARN=1024
979CONFIG_DEBUG_FS=y 1024CONFIG_DEBUG_FS=y
980# CONFIG_HEADERS_CHECK is not set 1025# CONFIG_HEADERS_CHECK is not set
981# CONFIG_DEBUG_KERNEL is not set 1026# CONFIG_DEBUG_KERNEL is not set
982# CONFIG_DEBUG_BUGVERBOSE is not set 1027CONFIG_DEBUG_BUGVERBOSE=y
983# CONFIG_DEBUG_MEMORY_INIT is not set 1028# CONFIG_DEBUG_MEMORY_INIT is not set
984# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1029# CONFIG_RCU_CPU_STALL_DETECTOR is not set
985# CONFIG_LATENCYTOP is not set 1030# CONFIG_LATENCYTOP is not set
@@ -997,7 +1042,6 @@ CONFIG_TRACING_SUPPORT=y
997# CONFIG_SAMPLES is not set 1042# CONFIG_SAMPLES is not set
998CONFIG_HAVE_ARCH_KGDB=y 1043CONFIG_HAVE_ARCH_KGDB=y
999# CONFIG_SH_STANDARD_BIOS is not set 1044# CONFIG_SH_STANDARD_BIOS is not set
1000# CONFIG_EARLY_SCIF_CONSOLE is not set
1001# CONFIG_DWARF_UNWINDER is not set 1045# CONFIG_DWARF_UNWINDER is not set
1002 1046
1003# 1047#
@@ -1006,7 +1050,11 @@ CONFIG_HAVE_ARCH_KGDB=y
1006# CONFIG_KEYS is not set 1050# CONFIG_KEYS is not set
1007# CONFIG_SECURITY is not set 1051# CONFIG_SECURITY is not set
1008# CONFIG_SECURITYFS is not set 1052# CONFIG_SECURITYFS is not set
1009# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1053# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1054# CONFIG_DEFAULT_SECURITY_SMACK is not set
1055# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1056CONFIG_DEFAULT_SECURITY_DAC=y
1057CONFIG_DEFAULT_SECURITY=""
1010# CONFIG_CRYPTO is not set 1058# CONFIG_CRYPTO is not set
1011# CONFIG_BINARY_PRINTF is not set 1059# CONFIG_BINARY_PRINTF is not set
1012 1060
diff --git a/arch/sh/configs/ecovec24_defconfig b/arch/sh/configs/ecovec24_defconfig
index cad918437ca7..18e3356406f3 100644
--- a/arch/sh/configs/ecovec24_defconfig
+++ b/arch/sh/configs/ecovec24_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 17:45:39 2009 4# Mon Jan 4 11:20:36 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21CONFIG_ARCH_SUSPEND_POSSIBLE=y 21CONFIG_ARCH_SUSPEND_POSSIBLE=y
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_CMT=y 24CONFIG_SYS_SUPPORTS_CMT=y
24CONFIG_SYS_SUPPORTS_TMU=y 25CONFIG_SYS_SUPPORTS_TMU=y
25CONFIG_STACKTRACE_SUPPORT=y 26CONFIG_STACKTRACE_SUPPORT=y
@@ -30,6 +31,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
30CONFIG_ARCH_NO_VIRT_TO_BUS=y 31CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 32CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
34CONFIG_DMA_NONCOHERENT=y
33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 35CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
34CONFIG_CONSTRUCTORS=y 36CONFIG_CONSTRUCTORS=y
35 37
@@ -62,6 +64,7 @@ CONFIG_BSD_PROCESS_ACCT=y
62# 64#
63CONFIG_TREE_RCU=y 65CONFIG_TREE_RCU=y
64# CONFIG_TREE_PREEMPT_RCU is not set 66# CONFIG_TREE_PREEMPT_RCU is not set
67# CONFIG_TINY_RCU is not set
65# CONFIG_RCU_TRACE is not set 68# CONFIG_RCU_TRACE is not set
66CONFIG_RCU_FANOUT=32 69CONFIG_RCU_FANOUT=32
67# CONFIG_RCU_FANOUT_EXACT is not set 70# CONFIG_RCU_FANOUT_EXACT is not set
@@ -99,6 +102,7 @@ CONFIG_EVENTFD=y
99CONFIG_SHMEM=y 102CONFIG_SHMEM=y
100CONFIG_AIO=y 103CONFIG_AIO=y
101CONFIG_HAVE_PERF_EVENTS=y 104CONFIG_HAVE_PERF_EVENTS=y
105CONFIG_PERF_USE_VMALLOC=y
102 106
103# 107#
104# Kernel Performance Events And Counters 108# Kernel Performance Events And Counters
@@ -116,6 +120,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
116CONFIG_HAVE_KPROBES=y 120CONFIG_HAVE_KPROBES=y
117CONFIG_HAVE_KRETPROBES=y 121CONFIG_HAVE_KRETPROBES=y
118CONFIG_HAVE_ARCH_TRACEHOOK=y 122CONFIG_HAVE_ARCH_TRACEHOOK=y
123CONFIG_HAVE_DMA_ATTRS=y
119CONFIG_HAVE_CLK=y 124CONFIG_HAVE_CLK=y
120CONFIG_HAVE_DMA_API_DEBUG=y 125CONFIG_HAVE_DMA_API_DEBUG=y
121 126
@@ -143,14 +148,41 @@ CONFIG_LBDAF=y
143# IO Schedulers 148# IO Schedulers
144# 149#
145CONFIG_IOSCHED_NOOP=y 150CONFIG_IOSCHED_NOOP=y
146CONFIG_IOSCHED_AS=y
147CONFIG_IOSCHED_DEADLINE=y 151CONFIG_IOSCHED_DEADLINE=y
148CONFIG_IOSCHED_CFQ=y 152CONFIG_IOSCHED_CFQ=y
149# CONFIG_DEFAULT_AS is not set
150# CONFIG_DEFAULT_DEADLINE is not set 153# CONFIG_DEFAULT_DEADLINE is not set
151CONFIG_DEFAULT_CFQ=y 154CONFIG_DEFAULT_CFQ=y
152# CONFIG_DEFAULT_NOOP is not set 155# CONFIG_DEFAULT_NOOP is not set
153CONFIG_DEFAULT_IOSCHED="cfq" 156CONFIG_DEFAULT_IOSCHED="cfq"
157# CONFIG_INLINE_SPIN_TRYLOCK is not set
158# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
159# CONFIG_INLINE_SPIN_LOCK is not set
160# CONFIG_INLINE_SPIN_LOCK_BH is not set
161# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
162# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
163# CONFIG_INLINE_SPIN_UNLOCK is not set
164# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
165# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
166# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
167# CONFIG_INLINE_READ_TRYLOCK is not set
168# CONFIG_INLINE_READ_LOCK is not set
169# CONFIG_INLINE_READ_LOCK_BH is not set
170# CONFIG_INLINE_READ_LOCK_IRQ is not set
171# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
172# CONFIG_INLINE_READ_UNLOCK is not set
173# CONFIG_INLINE_READ_UNLOCK_BH is not set
174# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
175# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
176# CONFIG_INLINE_WRITE_TRYLOCK is not set
177# CONFIG_INLINE_WRITE_LOCK is not set
178# CONFIG_INLINE_WRITE_LOCK_BH is not set
179# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
180# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
181# CONFIG_INLINE_WRITE_UNLOCK is not set
182# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
183# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
184# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
185# CONFIG_MUTEX_SPIN_ON_OWNER is not set
154CONFIG_FREEZER=y 186CONFIG_FREEZER=y
155 187
156# 188#
@@ -206,6 +238,7 @@ CONFIG_FORCE_MAX_ZONEORDER=11
206CONFIG_MEMORY_START=0x08000000 238CONFIG_MEMORY_START=0x08000000
207CONFIG_MEMORY_SIZE=0x10000000 239CONFIG_MEMORY_SIZE=0x10000000
208CONFIG_29BIT=y 240CONFIG_29BIT=y
241# CONFIG_PMB_ENABLE is not set
209# CONFIG_X2TLB is not set 242# CONFIG_X2TLB is not set
210CONFIG_VSYSCALL=y 243CONFIG_VSYSCALL=y
211CONFIG_ARCH_FLATMEM_ENABLE=y 244CONFIG_ARCH_FLATMEM_ENABLE=y
@@ -230,8 +263,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
230# CONFIG_PHYS_ADDR_T_64BIT is not set 263# CONFIG_PHYS_ADDR_T_64BIT is not set
231CONFIG_ZONE_DMA_FLAG=0 264CONFIG_ZONE_DMA_FLAG=0
232CONFIG_NR_QUICK=2 265CONFIG_NR_QUICK=2
233CONFIG_HAVE_MLOCK=y
234CONFIG_HAVE_MLOCKED_PAGE_BIT=y
235# CONFIG_KSM is not set 266# CONFIG_KSM is not set
236CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 267CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
237 268
@@ -265,7 +296,6 @@ CONFIG_SH_ECOVEC=y
265# 296#
266CONFIG_SH_TIMER_TMU=y 297CONFIG_SH_TIMER_TMU=y
267# CONFIG_SH_TIMER_CMT is not set 298# CONFIG_SH_TIMER_CMT is not set
268CONFIG_SH_PCLK_FREQ=33333333
269CONFIG_SH_CLK_CPG=y 299CONFIG_SH_CLK_CPG=y
270# CONFIG_NO_HZ is not set 300# CONFIG_NO_HZ is not set
271# CONFIG_HIGH_RES_TIMERS is not set 301# CONFIG_HIGH_RES_TIMERS is not set
@@ -420,9 +450,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
420# CONFIG_AF_RXRPC is not set 450# CONFIG_AF_RXRPC is not set
421CONFIG_WIRELESS=y 451CONFIG_WIRELESS=y
422# CONFIG_CFG80211 is not set 452# CONFIG_CFG80211 is not set
423CONFIG_CFG80211_DEFAULT_PS_VALUE=0
424# CONFIG_WIRELESS_OLD_REGULATORY is not set
425# CONFIG_WIRELESS_EXT is not set
426# CONFIG_LIB80211 is not set 453# CONFIG_LIB80211 is not set
427 454
428# 455#
@@ -552,6 +579,10 @@ CONFIG_MTD_UBI_BEB_RESERVE=1
552CONFIG_BLK_DEV=y 579CONFIG_BLK_DEV=y
553# CONFIG_BLK_DEV_COW_COMMON is not set 580# CONFIG_BLK_DEV_COW_COMMON is not set
554# CONFIG_BLK_DEV_LOOP is not set 581# CONFIG_BLK_DEV_LOOP is not set
582
583#
584# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
585#
555# CONFIG_BLK_DEV_NBD is not set 586# CONFIG_BLK_DEV_NBD is not set
556# CONFIG_BLK_DEV_UB is not set 587# CONFIG_BLK_DEV_UB is not set
557CONFIG_BLK_DEV_RAM=y 588CONFIG_BLK_DEV_RAM=y
@@ -562,9 +593,12 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
562# CONFIG_ATA_OVER_ETH is not set 593# CONFIG_ATA_OVER_ETH is not set
563# CONFIG_BLK_DEV_HD is not set 594# CONFIG_BLK_DEV_HD is not set
564CONFIG_MISC_DEVICES=y 595CONFIG_MISC_DEVICES=y
596# CONFIG_AD525X_DPOT is not set
565# CONFIG_ICS932S401 is not set 597# CONFIG_ICS932S401 is not set
566# CONFIG_ENCLOSURE_SERVICES is not set 598# CONFIG_ENCLOSURE_SERVICES is not set
567# CONFIG_ISL29003 is not set 599# CONFIG_ISL29003 is not set
600# CONFIG_DS1682 is not set
601# CONFIG_TI_DAC7512 is not set
568# CONFIG_C2PORT is not set 602# CONFIG_C2PORT is not set
569 603
570# 604#
@@ -575,6 +609,7 @@ CONFIG_MISC_DEVICES=y
575# CONFIG_EEPROM_LEGACY is not set 609# CONFIG_EEPROM_LEGACY is not set
576# CONFIG_EEPROM_MAX6875 is not set 610# CONFIG_EEPROM_MAX6875 is not set
577# CONFIG_EEPROM_93CX6 is not set 611# CONFIG_EEPROM_93CX6 is not set
612# CONFIG_IWMC3200TOP is not set
578CONFIG_HAVE_IDE=y 613CONFIG_HAVE_IDE=y
579# CONFIG_IDE is not set 614# CONFIG_IDE is not set
580 615
@@ -669,11 +704,12 @@ CONFIG_SH_ETH=y
669# CONFIG_B44 is not set 704# CONFIG_B44 is not set
670# CONFIG_KS8842 is not set 705# CONFIG_KS8842 is not set
671# CONFIG_KS8851 is not set 706# CONFIG_KS8851 is not set
707# CONFIG_KS8851_MLL is not set
672# CONFIG_NETDEV_1000 is not set 708# CONFIG_NETDEV_1000 is not set
673# CONFIG_NETDEV_10000 is not set 709# CONFIG_NETDEV_10000 is not set
674CONFIG_WLAN=y 710CONFIG_WLAN=y
675# CONFIG_WLAN_PRE80211 is not set 711# CONFIG_USB_ZD1201 is not set
676# CONFIG_WLAN_80211 is not set 712# CONFIG_HOSTAP is not set
677 713
678# 714#
679# Enable WiMAX (Networking options) to see the WiMAX drivers 715# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -702,6 +738,7 @@ CONFIG_WLAN=y
702CONFIG_INPUT=y 738CONFIG_INPUT=y
703# CONFIG_INPUT_FF_MEMLESS is not set 739# CONFIG_INPUT_FF_MEMLESS is not set
704# CONFIG_INPUT_POLLDEV is not set 740# CONFIG_INPUT_POLLDEV is not set
741# CONFIG_INPUT_SPARSEKMAP is not set
705 742
706# 743#
707# Userland interfaces 744# Userland interfaces
@@ -810,7 +847,6 @@ CONFIG_I2C_SH_MOBILE=y
810# 847#
811# Miscellaneous I2C Chip support 848# Miscellaneous I2C Chip support
812# 849#
813# CONFIG_DS1682 is not set
814# CONFIG_SENSORS_TSL2550 is not set 850# CONFIG_SENSORS_TSL2550 is not set
815# CONFIG_I2C_DEBUG_CORE is not set 851# CONFIG_I2C_DEBUG_CORE is not set
816# CONFIG_I2C_DEBUG_ALGO is not set 852# CONFIG_I2C_DEBUG_ALGO is not set
@@ -824,7 +860,10 @@ CONFIG_SPI_MASTER=y
824# 860#
825CONFIG_SPI_BITBANG=y 861CONFIG_SPI_BITBANG=y
826# CONFIG_SPI_GPIO is not set 862# CONFIG_SPI_GPIO is not set
863# CONFIG_SPI_SH_MSIOF is not set
827# CONFIG_SPI_SH_SCI is not set 864# CONFIG_SPI_SH_SCI is not set
865# CONFIG_SPI_XILINX is not set
866# CONFIG_SPI_DESIGNWARE is not set
828 867
829# 868#
830# SPI Protocol Masters 869# SPI Protocol Masters
@@ -882,11 +921,13 @@ CONFIG_SSB_POSSIBLE=y
882# 921#
883# CONFIG_MFD_CORE is not set 922# CONFIG_MFD_CORE is not set
884# CONFIG_MFD_SM501 is not set 923# CONFIG_MFD_SM501 is not set
924# CONFIG_MFD_SH_MOBILE_SDHI is not set
885# CONFIG_HTC_PASIC3 is not set 925# CONFIG_HTC_PASIC3 is not set
886# CONFIG_TPS65010 is not set 926# CONFIG_TPS65010 is not set
887# CONFIG_TWL4030_CORE is not set 927# CONFIG_TWL4030_CORE is not set
888# CONFIG_MFD_TMIO is not set 928# CONFIG_MFD_TMIO is not set
889# CONFIG_PMIC_DA903X is not set 929# CONFIG_PMIC_DA903X is not set
930# CONFIG_PMIC_ADP5520 is not set
890# CONFIG_MFD_WM8400 is not set 931# CONFIG_MFD_WM8400 is not set
891# CONFIG_MFD_WM831X is not set 932# CONFIG_MFD_WM831X is not set
892# CONFIG_MFD_WM8350_I2C is not set 933# CONFIG_MFD_WM8350_I2C is not set
@@ -894,6 +935,8 @@ CONFIG_SSB_POSSIBLE=y
894# CONFIG_MFD_MC13783 is not set 935# CONFIG_MFD_MC13783 is not set
895# CONFIG_AB3100_CORE is not set 936# CONFIG_AB3100_CORE is not set
896# CONFIG_EZX_PCAP is not set 937# CONFIG_EZX_PCAP is not set
938# CONFIG_MFD_88PM8607 is not set
939# CONFIG_AB4500_CORE is not set
897# CONFIG_REGULATOR is not set 940# CONFIG_REGULATOR is not set
898CONFIG_MEDIA_SUPPORT=y 941CONFIG_MEDIA_SUPPORT=y
899 942
@@ -910,6 +953,8 @@ CONFIG_VIDEO_MEDIA=y
910# 953#
911# Multimedia drivers 954# Multimedia drivers
912# 955#
956CONFIG_IR_CORE=y
957CONFIG_VIDEO_IR=y
913# CONFIG_MEDIA_ATTACH is not set 958# CONFIG_MEDIA_ATTACH is not set
914CONFIG_MEDIA_TUNER=y 959CONFIG_MEDIA_TUNER=y
915# CONFIG_MEDIA_TUNER_CUSTOMISE is not set 960# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
@@ -930,6 +975,7 @@ CONFIG_VIDEO_CAPTURE_DRIVERS=y
930# CONFIG_VIDEO_ADV_DEBUG is not set 975# CONFIG_VIDEO_ADV_DEBUG is not set
931# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set 976# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
932CONFIG_VIDEO_HELPER_CHIPS_AUTO=y 977CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
978CONFIG_VIDEO_IR_I2C=y
933# CONFIG_VIDEO_VIVI is not set 979# CONFIG_VIDEO_VIVI is not set
934# CONFIG_VIDEO_CPIA is not set 980# CONFIG_VIDEO_CPIA is not set
935# CONFIG_VIDEO_CPIA2 is not set 981# CONFIG_VIDEO_CPIA2 is not set
@@ -939,10 +985,13 @@ CONFIG_SOC_CAMERA=y
939# CONFIG_SOC_CAMERA_MT9M001 is not set 985# CONFIG_SOC_CAMERA_MT9M001 is not set
940# CONFIG_SOC_CAMERA_MT9M111 is not set 986# CONFIG_SOC_CAMERA_MT9M111 is not set
941# CONFIG_SOC_CAMERA_MT9T031 is not set 987# CONFIG_SOC_CAMERA_MT9T031 is not set
988# CONFIG_SOC_CAMERA_MT9T112 is not set
942# CONFIG_SOC_CAMERA_MT9V022 is not set 989# CONFIG_SOC_CAMERA_MT9V022 is not set
990# CONFIG_SOC_CAMERA_RJ54N1 is not set
943# CONFIG_SOC_CAMERA_TW9910 is not set 991# CONFIG_SOC_CAMERA_TW9910 is not set
944# CONFIG_SOC_CAMERA_PLATFORM is not set 992# CONFIG_SOC_CAMERA_PLATFORM is not set
945# CONFIG_SOC_CAMERA_OV772X is not set 993# CONFIG_SOC_CAMERA_OV772X is not set
994# CONFIG_SOC_CAMERA_OV9640 is not set
946CONFIG_VIDEO_SH_MOBILE_CEU=y 995CONFIG_VIDEO_SH_MOBILE_CEU=y
947# CONFIG_V4L_USB_DRIVERS is not set 996# CONFIG_V4L_USB_DRIVERS is not set
948CONFIG_RADIO_ADAPTERS=y 997CONFIG_RADIO_ADAPTERS=y
@@ -952,6 +1001,7 @@ CONFIG_RADIO_ADAPTERS=y
952# CONFIG_RADIO_SI470X is not set 1001# CONFIG_RADIO_SI470X is not set
953# CONFIG_USB_MR800 is not set 1002# CONFIG_USB_MR800 is not set
954# CONFIG_RADIO_TEA5764 is not set 1003# CONFIG_RADIO_TEA5764 is not set
1004# CONFIG_RADIO_TEF6862 is not set
955# CONFIG_DAB is not set 1005# CONFIG_DAB is not set
956 1006
957# 1007#
@@ -1177,6 +1227,7 @@ CONFIG_MMC_BLOCK_BOUNCE=y
1177# CONFIG_MMC_AT91 is not set 1227# CONFIG_MMC_AT91 is not set
1178# CONFIG_MMC_ATMELMCI is not set 1228# CONFIG_MMC_ATMELMCI is not set
1179CONFIG_MMC_SPI=y 1229CONFIG_MMC_SPI=y
1230# CONFIG_MMC_TMIO is not set
1180# CONFIG_MEMSTICK is not set 1231# CONFIG_MEMSTICK is not set
1181# CONFIG_NEW_LEDS is not set 1232# CONFIG_NEW_LEDS is not set
1182# CONFIG_ACCESSIBILITY is not set 1233# CONFIG_ACCESSIBILITY is not set
@@ -1208,6 +1259,7 @@ CONFIG_RTC_INTF_DEV=y
1208CONFIG_RTC_DRV_PCF8563=y 1259CONFIG_RTC_DRV_PCF8563=y
1209# CONFIG_RTC_DRV_PCF8583 is not set 1260# CONFIG_RTC_DRV_PCF8583 is not set
1210# CONFIG_RTC_DRV_M41T80 is not set 1261# CONFIG_RTC_DRV_M41T80 is not set
1262# CONFIG_RTC_DRV_BQ32K is not set
1211# CONFIG_RTC_DRV_S35390A is not set 1263# CONFIG_RTC_DRV_S35390A is not set
1212# CONFIG_RTC_DRV_FM3130 is not set 1264# CONFIG_RTC_DRV_FM3130 is not set
1213# CONFIG_RTC_DRV_RX8581 is not set 1265# CONFIG_RTC_DRV_RX8581 is not set
@@ -1236,7 +1288,9 @@ CONFIG_RTC_DRV_PCF8563=y
1236# CONFIG_RTC_DRV_M48T86 is not set 1288# CONFIG_RTC_DRV_M48T86 is not set
1237# CONFIG_RTC_DRV_M48T35 is not set 1289# CONFIG_RTC_DRV_M48T35 is not set
1238# CONFIG_RTC_DRV_M48T59 is not set 1290# CONFIG_RTC_DRV_M48T59 is not set
1291# CONFIG_RTC_DRV_MSM6242 is not set
1239# CONFIG_RTC_DRV_BQ4802 is not set 1292# CONFIG_RTC_DRV_BQ4802 is not set
1293# CONFIG_RTC_DRV_RP5C01 is not set
1240# CONFIG_RTC_DRV_V3020 is not set 1294# CONFIG_RTC_DRV_V3020 is not set
1241 1295
1242# 1296#
@@ -1430,7 +1484,7 @@ CONFIG_FRAME_WARN=1024
1430CONFIG_DEBUG_FS=y 1484CONFIG_DEBUG_FS=y
1431# CONFIG_HEADERS_CHECK is not set 1485# CONFIG_HEADERS_CHECK is not set
1432# CONFIG_DEBUG_KERNEL is not set 1486# CONFIG_DEBUG_KERNEL is not set
1433# CONFIG_DEBUG_BUGVERBOSE is not set 1487CONFIG_DEBUG_BUGVERBOSE=y
1434# CONFIG_DEBUG_MEMORY_INIT is not set 1488# CONFIG_DEBUG_MEMORY_INIT is not set
1435# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1489# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1436# CONFIG_LATENCYTOP is not set 1490# CONFIG_LATENCYTOP is not set
@@ -1448,7 +1502,6 @@ CONFIG_TRACING_SUPPORT=y
1448# CONFIG_SAMPLES is not set 1502# CONFIG_SAMPLES is not set
1449CONFIG_HAVE_ARCH_KGDB=y 1503CONFIG_HAVE_ARCH_KGDB=y
1450# CONFIG_SH_STANDARD_BIOS is not set 1504# CONFIG_SH_STANDARD_BIOS is not set
1451# CONFIG_EARLY_SCIF_CONSOLE is not set
1452# CONFIG_DWARF_UNWINDER is not set 1505# CONFIG_DWARF_UNWINDER is not set
1453 1506
1454# 1507#
@@ -1457,7 +1510,11 @@ CONFIG_HAVE_ARCH_KGDB=y
1457# CONFIG_KEYS is not set 1510# CONFIG_KEYS is not set
1458# CONFIG_SECURITY is not set 1511# CONFIG_SECURITY is not set
1459# CONFIG_SECURITYFS is not set 1512# CONFIG_SECURITYFS is not set
1460# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1513# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1514# CONFIG_DEFAULT_SECURITY_SMACK is not set
1515# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1516CONFIG_DEFAULT_SECURITY_DAC=y
1517CONFIG_DEFAULT_SECURITY=""
1461CONFIG_CRYPTO=y 1518CONFIG_CRYPTO=y
1462 1519
1463# 1520#
diff --git a/arch/sh/configs/edosk7705_defconfig b/arch/sh/configs/edosk7705_defconfig
index 86c9bc050629..72f8718dd738 100644
--- a/arch/sh/configs/edosk7705_defconfig
+++ b/arch/sh/configs/edosk7705_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 17:57:13 2009 4# Mon Jan 4 11:24:26 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -28,6 +28,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
28CONFIG_ARCH_NO_VIRT_TO_BUS=y 28CONFIG_ARCH_NO_VIRT_TO_BUS=y
29CONFIG_ARCH_HAS_DEFAULT_IDLE=y 29CONFIG_ARCH_HAS_DEFAULT_IDLE=y
30CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 30CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
31CONFIG_DMA_NONCOHERENT=y
31CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 32CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
32CONFIG_CONSTRUCTORS=y 33CONFIG_CONSTRUCTORS=y
33 34
@@ -53,6 +54,7 @@ CONFIG_KERNEL_GZIP=y
53# 54#
54CONFIG_TREE_RCU=y 55CONFIG_TREE_RCU=y
55# CONFIG_TREE_PREEMPT_RCU is not set 56# CONFIG_TREE_PREEMPT_RCU is not set
57# CONFIG_TINY_RCU is not set
56# CONFIG_RCU_TRACE is not set 58# CONFIG_RCU_TRACE is not set
57CONFIG_RCU_FANOUT=32 59CONFIG_RCU_FANOUT=32
58# CONFIG_RCU_FANOUT_EXACT is not set 60# CONFIG_RCU_FANOUT_EXACT is not set
@@ -66,7 +68,6 @@ CONFIG_LOG_BUF_SHIFT=17
66# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 68# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
67CONFIG_EMBEDDED=y 69CONFIG_EMBEDDED=y
68# CONFIG_UID16 is not set 70# CONFIG_UID16 is not set
69# CONFIG_SYSCTL_SYSCALL is not set
70# CONFIG_KALLSYMS is not set 71# CONFIG_KALLSYMS is not set
71# CONFIG_HOTPLUG is not set 72# CONFIG_HOTPLUG is not set
72# CONFIG_PRINTK is not set 73# CONFIG_PRINTK is not set
@@ -81,6 +82,7 @@ CONFIG_EMBEDDED=y
81CONFIG_SHMEM=y 82CONFIG_SHMEM=y
82# CONFIG_AIO is not set 83# CONFIG_AIO is not set
83CONFIG_HAVE_PERF_EVENTS=y 84CONFIG_HAVE_PERF_EVENTS=y
85CONFIG_PERF_USE_VMALLOC=y
84 86
85# 87#
86# Kernel Performance Events And Counters 88# Kernel Performance Events And Counters
@@ -98,6 +100,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
98CONFIG_HAVE_KPROBES=y 100CONFIG_HAVE_KPROBES=y
99CONFIG_HAVE_KRETPROBES=y 101CONFIG_HAVE_KRETPROBES=y
100CONFIG_HAVE_ARCH_TRACEHOOK=y 102CONFIG_HAVE_ARCH_TRACEHOOK=y
103CONFIG_HAVE_DMA_ATTRS=y
101CONFIG_HAVE_CLK=y 104CONFIG_HAVE_CLK=y
102CONFIG_HAVE_DMA_API_DEBUG=y 105CONFIG_HAVE_DMA_API_DEBUG=y
103 106
@@ -109,6 +112,35 @@ CONFIG_HAVE_GENERIC_DMA_COHERENT=y
109CONFIG_BASE_SMALL=1 112CONFIG_BASE_SMALL=1
110# CONFIG_MODULES is not set 113# CONFIG_MODULES is not set
111# CONFIG_BLOCK is not set 114# CONFIG_BLOCK is not set
115# CONFIG_INLINE_SPIN_TRYLOCK is not set
116# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
117# CONFIG_INLINE_SPIN_LOCK is not set
118# CONFIG_INLINE_SPIN_LOCK_BH is not set
119# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
120# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
121CONFIG_INLINE_SPIN_UNLOCK=y
122# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
123CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
124# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
125# CONFIG_INLINE_READ_TRYLOCK is not set
126# CONFIG_INLINE_READ_LOCK is not set
127# CONFIG_INLINE_READ_LOCK_BH is not set
128# CONFIG_INLINE_READ_LOCK_IRQ is not set
129# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
130CONFIG_INLINE_READ_UNLOCK=y
131# CONFIG_INLINE_READ_UNLOCK_BH is not set
132CONFIG_INLINE_READ_UNLOCK_IRQ=y
133# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
134# CONFIG_INLINE_WRITE_TRYLOCK is not set
135# CONFIG_INLINE_WRITE_LOCK is not set
136# CONFIG_INLINE_WRITE_LOCK_BH is not set
137# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
138# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
139CONFIG_INLINE_WRITE_UNLOCK=y
140# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
141CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
142# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
143# CONFIG_MUTEX_SPIN_ON_OWNER is not set
112# CONFIG_FREEZER is not set 144# CONFIG_FREEZER is not set
113 145
114# 146#
@@ -186,8 +218,6 @@ CONFIG_MIGRATION=y
186# CONFIG_PHYS_ADDR_T_64BIT is not set 218# CONFIG_PHYS_ADDR_T_64BIT is not set
187CONFIG_ZONE_DMA_FLAG=0 219CONFIG_ZONE_DMA_FLAG=0
188CONFIG_NR_QUICK=2 220CONFIG_NR_QUICK=2
189CONFIG_HAVE_MLOCK=y
190CONFIG_HAVE_MLOCKED_PAGE_BIT=y
191# CONFIG_KSM is not set 221# CONFIG_KSM is not set
192CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 222CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
193 223
@@ -359,6 +389,7 @@ CONFIG_SSB_POSSIBLE=y
359# 389#
360# CONFIG_MFD_CORE is not set 390# CONFIG_MFD_CORE is not set
361# CONFIG_MFD_SM501 is not set 391# CONFIG_MFD_SM501 is not set
392# CONFIG_MFD_SH_MOBILE_SDHI is not set
362# CONFIG_HTC_PASIC3 is not set 393# CONFIG_HTC_PASIC3 is not set
363# CONFIG_MFD_TMIO is not set 394# CONFIG_MFD_TMIO is not set
364# CONFIG_REGULATOR is not set 395# CONFIG_REGULATOR is not set
@@ -416,7 +447,6 @@ CONFIG_INOTIFY_USER=y
416# CONFIG_PROC_FS is not set 447# CONFIG_PROC_FS is not set
417# CONFIG_SYSFS is not set 448# CONFIG_SYSFS is not set
418# CONFIG_TMPFS is not set 449# CONFIG_TMPFS is not set
419# CONFIG_HUGETLBFS is not set
420# CONFIG_HUGETLB_PAGE is not set 450# CONFIG_HUGETLB_PAGE is not set
421CONFIG_MISC_FILESYSTEMS=y 451CONFIG_MISC_FILESYSTEMS=y
422# CONFIG_NLS is not set 452# CONFIG_NLS is not set
@@ -448,7 +478,6 @@ CONFIG_TRACING_SUPPORT=y
448# CONFIG_SAMPLES is not set 478# CONFIG_SAMPLES is not set
449CONFIG_HAVE_ARCH_KGDB=y 479CONFIG_HAVE_ARCH_KGDB=y
450# CONFIG_SH_STANDARD_BIOS is not set 480# CONFIG_SH_STANDARD_BIOS is not set
451# CONFIG_EARLY_SCIF_CONSOLE is not set
452# CONFIG_DWARF_UNWINDER is not set 481# CONFIG_DWARF_UNWINDER is not set
453 482
454# 483#
@@ -456,7 +485,11 @@ CONFIG_HAVE_ARCH_KGDB=y
456# 485#
457# CONFIG_KEYS is not set 486# CONFIG_KEYS is not set
458# CONFIG_SECURITYFS is not set 487# CONFIG_SECURITYFS is not set
459# CONFIG_SECURITY_FILE_CAPABILITIES is not set 488# CONFIG_DEFAULT_SECURITY_SELINUX is not set
489# CONFIG_DEFAULT_SECURITY_SMACK is not set
490# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
491CONFIG_DEFAULT_SECURITY_DAC=y
492CONFIG_DEFAULT_SECURITY=""
460# CONFIG_CRYPTO is not set 493# CONFIG_CRYPTO is not set
461# CONFIG_BINARY_PRINTF is not set 494# CONFIG_BINARY_PRINTF is not set
462 495
diff --git a/arch/sh/configs/edosk7760_defconfig b/arch/sh/configs/edosk7760_defconfig
index 4c0f82b7def2..0932e6d656eb 100644
--- a/arch/sh/configs/edosk7760_defconfig
+++ b/arch/sh/configs/edosk7760_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 17:57:30 2009 4# Mon Jan 4 11:24:44 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_TMU=y 24CONFIG_SYS_SUPPORTS_TMU=y
24CONFIG_STACKTRACE_SUPPORT=y 25CONFIG_STACKTRACE_SUPPORT=y
25CONFIG_LOCKDEP_SUPPORT=y 26CONFIG_LOCKDEP_SUPPORT=y
@@ -29,6 +30,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
29CONFIG_ARCH_NO_VIRT_TO_BUS=y 30CONFIG_ARCH_NO_VIRT_TO_BUS=y
30CONFIG_ARCH_HAS_DEFAULT_IDLE=y 31CONFIG_ARCH_HAS_DEFAULT_IDLE=y
31CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
33CONFIG_DMA_NONCOHERENT=y
32CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
33CONFIG_CONSTRUCTORS=y 35CONFIG_CONSTRUCTORS=y
34 36
@@ -62,6 +64,7 @@ CONFIG_BSD_PROCESS_ACCT=y
62# 64#
63CONFIG_TREE_RCU=y 65CONFIG_TREE_RCU=y
64# CONFIG_TREE_PREEMPT_RCU is not set 66# CONFIG_TREE_PREEMPT_RCU is not set
67# CONFIG_TINY_RCU is not set
65# CONFIG_RCU_TRACE is not set 68# CONFIG_RCU_TRACE is not set
66CONFIG_RCU_FANOUT=32 69CONFIG_RCU_FANOUT=32
67# CONFIG_RCU_FANOUT_EXACT is not set 70# CONFIG_RCU_FANOUT_EXACT is not set
@@ -102,6 +105,7 @@ CONFIG_EVENTFD=y
102CONFIG_SHMEM=y 105CONFIG_SHMEM=y
103CONFIG_AIO=y 106CONFIG_AIO=y
104CONFIG_HAVE_PERF_EVENTS=y 107CONFIG_HAVE_PERF_EVENTS=y
108CONFIG_PERF_USE_VMALLOC=y
105 109
106# 110#
107# Kernel Performance Events And Counters 111# Kernel Performance Events And Counters
@@ -121,6 +125,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
121CONFIG_HAVE_KPROBES=y 125CONFIG_HAVE_KPROBES=y
122CONFIG_HAVE_KRETPROBES=y 126CONFIG_HAVE_KRETPROBES=y
123CONFIG_HAVE_ARCH_TRACEHOOK=y 127CONFIG_HAVE_ARCH_TRACEHOOK=y
128CONFIG_HAVE_DMA_ATTRS=y
124CONFIG_HAVE_CLK=y 129CONFIG_HAVE_CLK=y
125CONFIG_HAVE_DMA_API_DEBUG=y 130CONFIG_HAVE_DMA_API_DEBUG=y
126 131
@@ -147,14 +152,41 @@ CONFIG_LBDAF=y
147# IO Schedulers 152# IO Schedulers
148# 153#
149CONFIG_IOSCHED_NOOP=y 154CONFIG_IOSCHED_NOOP=y
150CONFIG_IOSCHED_AS=y
151CONFIG_IOSCHED_DEADLINE=y 155CONFIG_IOSCHED_DEADLINE=y
152CONFIG_IOSCHED_CFQ=y 156CONFIG_IOSCHED_CFQ=y
153# CONFIG_DEFAULT_AS is not set
154# CONFIG_DEFAULT_DEADLINE is not set 157# CONFIG_DEFAULT_DEADLINE is not set
155CONFIG_DEFAULT_CFQ=y 158CONFIG_DEFAULT_CFQ=y
156# CONFIG_DEFAULT_NOOP is not set 159# CONFIG_DEFAULT_NOOP is not set
157CONFIG_DEFAULT_IOSCHED="cfq" 160CONFIG_DEFAULT_IOSCHED="cfq"
161# CONFIG_INLINE_SPIN_TRYLOCK is not set
162# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
163# CONFIG_INLINE_SPIN_LOCK is not set
164# CONFIG_INLINE_SPIN_LOCK_BH is not set
165# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
166# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
167# CONFIG_INLINE_SPIN_UNLOCK is not set
168# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
169# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
170# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
171# CONFIG_INLINE_READ_TRYLOCK is not set
172# CONFIG_INLINE_READ_LOCK is not set
173# CONFIG_INLINE_READ_LOCK_BH is not set
174# CONFIG_INLINE_READ_LOCK_IRQ is not set
175# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
176# CONFIG_INLINE_READ_UNLOCK is not set
177# CONFIG_INLINE_READ_UNLOCK_BH is not set
178# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
179# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
180# CONFIG_INLINE_WRITE_TRYLOCK is not set
181# CONFIG_INLINE_WRITE_LOCK is not set
182# CONFIG_INLINE_WRITE_LOCK_BH is not set
183# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
184# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
185# CONFIG_INLINE_WRITE_UNLOCK is not set
186# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
187# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
188# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
189# CONFIG_MUTEX_SPIN_ON_OWNER is not set
158# CONFIG_FREEZER is not set 190# CONFIG_FREEZER is not set
159 191
160# 192#
@@ -230,8 +262,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
230# CONFIG_PHYS_ADDR_T_64BIT is not set 262# CONFIG_PHYS_ADDR_T_64BIT is not set
231CONFIG_ZONE_DMA_FLAG=0 263CONFIG_ZONE_DMA_FLAG=0
232CONFIG_NR_QUICK=2 264CONFIG_NR_QUICK=2
233CONFIG_HAVE_MLOCK=y
234CONFIG_HAVE_MLOCKED_PAGE_BIT=y
235# CONFIG_KSM is not set 265# CONFIG_KSM is not set
236CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 266CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
237 267
@@ -278,9 +308,9 @@ CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
278# 308#
279# DMA support 309# DMA support
280# 310#
281CONFIG_SH_DMA_API=y
282CONFIG_SH_DMA=y 311CONFIG_SH_DMA=y
283CONFIG_SH_DMA_IRQ_MULTI=y 312CONFIG_SH_DMA_IRQ_MULTI=y
313CONFIG_SH_DMA_API=y
284CONFIG_NR_ONCHIP_DMA_CHANNELS=8 314CONFIG_NR_ONCHIP_DMA_CHANNELS=8
285# CONFIG_NR_DMA_CHANNELS_BOOL is not set 315# CONFIG_NR_DMA_CHANNELS_BOOL is not set
286# CONFIG_SH_DMABRG is not set 316# CONFIG_SH_DMABRG is not set
@@ -320,7 +350,6 @@ CONFIG_GUSA=y
320CONFIG_ZERO_PAGE_OFFSET=0x00001000 350CONFIG_ZERO_PAGE_OFFSET=0x00001000
321CONFIG_BOOT_LINK_OFFSET=0x02000000 351CONFIG_BOOT_LINK_OFFSET=0x02000000
322CONFIG_ENTRY_OFFSET=0x00001000 352CONFIG_ENTRY_OFFSET=0x00001000
323# CONFIG_UBC_WAKEUP is not set
324CONFIG_CMDLINE_OVERWRITE=y 353CONFIG_CMDLINE_OVERWRITE=y
325# CONFIG_CMDLINE_EXTEND is not set 354# CONFIG_CMDLINE_EXTEND is not set
326CONFIG_CMDLINE="mem=64M console=ttySC2,115200 root=/dev/nfs rw nfsroot=192.168.0.3:/scripts/filesys ip=192.168.0.4" 355CONFIG_CMDLINE="mem=64M console=ttySC2,115200 root=/dev/nfs rw nfsroot=192.168.0.3:/scripts/filesys ip=192.168.0.4"
@@ -415,9 +444,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
415# CONFIG_AF_RXRPC is not set 444# CONFIG_AF_RXRPC is not set
416CONFIG_WIRELESS=y 445CONFIG_WIRELESS=y
417# CONFIG_CFG80211 is not set 446# CONFIG_CFG80211 is not set
418CONFIG_CFG80211_DEFAULT_PS_VALUE=0
419# CONFIG_WIRELESS_OLD_REGULATORY is not set
420# CONFIG_WIRELESS_EXT is not set
421# CONFIG_LIB80211 is not set 447# CONFIG_LIB80211 is not set
422 448
423# 449#
@@ -534,6 +560,10 @@ CONFIG_MTD_PHYSMAP=y
534CONFIG_BLK_DEV=y 560CONFIG_BLK_DEV=y
535# CONFIG_BLK_DEV_COW_COMMON is not set 561# CONFIG_BLK_DEV_COW_COMMON is not set
536# CONFIG_BLK_DEV_LOOP is not set 562# CONFIG_BLK_DEV_LOOP is not set
563
564#
565# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
566#
537# CONFIG_BLK_DEV_NBD is not set 567# CONFIG_BLK_DEV_NBD is not set
538CONFIG_BLK_DEV_RAM=y 568CONFIG_BLK_DEV_RAM=y
539CONFIG_BLK_DEV_RAM_COUNT=16 569CONFIG_BLK_DEV_RAM_COUNT=16
@@ -581,11 +611,11 @@ CONFIG_SMC91X=y
581# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 611# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
582# CONFIG_B44 is not set 612# CONFIG_B44 is not set
583# CONFIG_KS8842 is not set 613# CONFIG_KS8842 is not set
614# CONFIG_KS8851_MLL is not set
584# CONFIG_NETDEV_1000 is not set 615# CONFIG_NETDEV_1000 is not set
585# CONFIG_NETDEV_10000 is not set 616# CONFIG_NETDEV_10000 is not set
586CONFIG_WLAN=y 617CONFIG_WLAN=y
587# CONFIG_WLAN_PRE80211 is not set 618# CONFIG_HOSTAP is not set
588# CONFIG_WLAN_80211 is not set
589 619
590# 620#
591# Enable WiMAX (Networking options) to see the WiMAX drivers 621# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -605,6 +635,7 @@ CONFIG_WLAN=y
605CONFIG_INPUT=y 635CONFIG_INPUT=y
606# CONFIG_INPUT_FF_MEMLESS is not set 636# CONFIG_INPUT_FF_MEMLESS is not set
607# CONFIG_INPUT_POLLDEV is not set 637# CONFIG_INPUT_POLLDEV is not set
638# CONFIG_INPUT_SPARSEKMAP is not set
608 639
609# 640#
610# Userland interfaces 641# Userland interfaces
@@ -698,7 +729,6 @@ CONFIG_I2C_SH7760=y
698# 729#
699# Miscellaneous I2C Chip support 730# Miscellaneous I2C Chip support
700# 731#
701# CONFIG_DS1682 is not set
702# CONFIG_SENSORS_TSL2550 is not set 732# CONFIG_SENSORS_TSL2550 is not set
703CONFIG_I2C_DEBUG_CORE=y 733CONFIG_I2C_DEBUG_CORE=y
704CONFIG_I2C_DEBUG_ALGO=y 734CONFIG_I2C_DEBUG_ALGO=y
@@ -727,15 +757,18 @@ CONFIG_SSB_POSSIBLE=y
727# 757#
728# CONFIG_MFD_CORE is not set 758# CONFIG_MFD_CORE is not set
729# CONFIG_MFD_SM501 is not set 759# CONFIG_MFD_SM501 is not set
760# CONFIG_MFD_SH_MOBILE_SDHI is not set
730# CONFIG_HTC_PASIC3 is not set 761# CONFIG_HTC_PASIC3 is not set
731# CONFIG_TWL4030_CORE is not set 762# CONFIG_TWL4030_CORE is not set
732# CONFIG_MFD_TMIO is not set 763# CONFIG_MFD_TMIO is not set
733# CONFIG_PMIC_DA903X is not set 764# CONFIG_PMIC_DA903X is not set
765# CONFIG_PMIC_ADP5520 is not set
734# CONFIG_MFD_WM8400 is not set 766# CONFIG_MFD_WM8400 is not set
735# CONFIG_MFD_WM831X is not set 767# CONFIG_MFD_WM831X is not set
736# CONFIG_MFD_WM8350_I2C is not set 768# CONFIG_MFD_WM8350_I2C is not set
737# CONFIG_MFD_PCF50633 is not set 769# CONFIG_MFD_PCF50633 is not set
738# CONFIG_AB3100_CORE is not set 770# CONFIG_AB3100_CORE is not set
771# CONFIG_MFD_88PM8607 is not set
739# CONFIG_REGULATOR is not set 772# CONFIG_REGULATOR is not set
740# CONFIG_MEDIA_SUPPORT is not set 773# CONFIG_MEDIA_SUPPORT is not set
741 774
@@ -1072,9 +1105,6 @@ CONFIG_BRANCH_PROFILE_NONE=y
1072CONFIG_HAVE_ARCH_KGDB=y 1105CONFIG_HAVE_ARCH_KGDB=y
1073# CONFIG_KGDB is not set 1106# CONFIG_KGDB is not set
1074# CONFIG_SH_STANDARD_BIOS is not set 1107# CONFIG_SH_STANDARD_BIOS is not set
1075CONFIG_EARLY_SCIF_CONSOLE=y
1076CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000
1077CONFIG_EARLY_PRINTK=y
1078# CONFIG_STACK_DEBUG is not set 1108# CONFIG_STACK_DEBUG is not set
1079# CONFIG_DEBUG_STACK_USAGE is not set 1109# CONFIG_DEBUG_STACK_USAGE is not set
1080# CONFIG_4KSTACKS is not set 1110# CONFIG_4KSTACKS is not set
@@ -1088,7 +1118,11 @@ CONFIG_DUMP_CODE=y
1088# CONFIG_KEYS is not set 1118# CONFIG_KEYS is not set
1089# CONFIG_SECURITY is not set 1119# CONFIG_SECURITY is not set
1090# CONFIG_SECURITYFS is not set 1120# CONFIG_SECURITYFS is not set
1091# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1121# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1122# CONFIG_DEFAULT_SECURITY_SMACK is not set
1123# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1124CONFIG_DEFAULT_SECURITY_DAC=y
1125CONFIG_DEFAULT_SECURITY=""
1092CONFIG_CRYPTO=y 1126CONFIG_CRYPTO=y
1093 1127
1094# 1128#
diff --git a/arch/sh/configs/espt_defconfig b/arch/sh/configs/espt_defconfig
index 9b785517abcf..f899e5613f86 100644
--- a/arch/sh/configs/espt_defconfig
+++ b/arch/sh/configs/espt_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 17:58:18 2009 4# Mon Jan 4 11:26:55 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_TMU=y 24CONFIG_SYS_SUPPORTS_TMU=y
24CONFIG_STACKTRACE_SUPPORT=y 25CONFIG_STACKTRACE_SUPPORT=y
25CONFIG_LOCKDEP_SUPPORT=y 26CONFIG_LOCKDEP_SUPPORT=y
@@ -29,6 +30,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
29CONFIG_ARCH_NO_VIRT_TO_BUS=y 30CONFIG_ARCH_NO_VIRT_TO_BUS=y
30CONFIG_ARCH_HAS_DEFAULT_IDLE=y 31CONFIG_ARCH_HAS_DEFAULT_IDLE=y
31CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
33CONFIG_DMA_NONCOHERENT=y
32CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
33CONFIG_CONSTRUCTORS=y 35CONFIG_CONSTRUCTORS=y
34 36
@@ -59,6 +61,7 @@ CONFIG_SYSVIPC_SYSCTL=y
59# 61#
60CONFIG_TREE_RCU=y 62CONFIG_TREE_RCU=y
61# CONFIG_TREE_PREEMPT_RCU is not set 63# CONFIG_TREE_PREEMPT_RCU is not set
64# CONFIG_TINY_RCU is not set
62# CONFIG_RCU_TRACE is not set 65# CONFIG_RCU_TRACE is not set
63CONFIG_RCU_FANOUT=32 66CONFIG_RCU_FANOUT=32
64# CONFIG_RCU_FANOUT_EXACT is not set 67# CONFIG_RCU_FANOUT_EXACT is not set
@@ -103,6 +106,7 @@ CONFIG_EVENTFD=y
103CONFIG_SHMEM=y 106CONFIG_SHMEM=y
104CONFIG_AIO=y 107CONFIG_AIO=y
105CONFIG_HAVE_PERF_EVENTS=y 108CONFIG_HAVE_PERF_EVENTS=y
109CONFIG_PERF_USE_VMALLOC=y
106 110
107# 111#
108# Kernel Performance Events And Counters 112# Kernel Performance Events And Counters
@@ -124,6 +128,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
124CONFIG_HAVE_KPROBES=y 128CONFIG_HAVE_KPROBES=y
125CONFIG_HAVE_KRETPROBES=y 129CONFIG_HAVE_KRETPROBES=y
126CONFIG_HAVE_ARCH_TRACEHOOK=y 130CONFIG_HAVE_ARCH_TRACEHOOK=y
131CONFIG_HAVE_DMA_ATTRS=y
127CONFIG_HAVE_CLK=y 132CONFIG_HAVE_CLK=y
128CONFIG_HAVE_DMA_API_DEBUG=y 133CONFIG_HAVE_DMA_API_DEBUG=y
129 134
@@ -150,14 +155,41 @@ CONFIG_LBDAF=y
150# IO Schedulers 155# IO Schedulers
151# 156#
152CONFIG_IOSCHED_NOOP=y 157CONFIG_IOSCHED_NOOP=y
153CONFIG_IOSCHED_AS=y
154CONFIG_IOSCHED_DEADLINE=y 158CONFIG_IOSCHED_DEADLINE=y
155CONFIG_IOSCHED_CFQ=y 159CONFIG_IOSCHED_CFQ=y
156CONFIG_DEFAULT_AS=y
157# CONFIG_DEFAULT_DEADLINE is not set 160# CONFIG_DEFAULT_DEADLINE is not set
158# CONFIG_DEFAULT_CFQ is not set 161CONFIG_DEFAULT_CFQ=y
159# CONFIG_DEFAULT_NOOP is not set 162# CONFIG_DEFAULT_NOOP is not set
160CONFIG_DEFAULT_IOSCHED="anticipatory" 163CONFIG_DEFAULT_IOSCHED="cfq"
164# CONFIG_INLINE_SPIN_TRYLOCK is not set
165# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
166# CONFIG_INLINE_SPIN_LOCK is not set
167# CONFIG_INLINE_SPIN_LOCK_BH is not set
168# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
169# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
170CONFIG_INLINE_SPIN_UNLOCK=y
171# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
172CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
173# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
174# CONFIG_INLINE_READ_TRYLOCK is not set
175# CONFIG_INLINE_READ_LOCK is not set
176# CONFIG_INLINE_READ_LOCK_BH is not set
177# CONFIG_INLINE_READ_LOCK_IRQ is not set
178# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
179CONFIG_INLINE_READ_UNLOCK=y
180# CONFIG_INLINE_READ_UNLOCK_BH is not set
181CONFIG_INLINE_READ_UNLOCK_IRQ=y
182# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
183# CONFIG_INLINE_WRITE_TRYLOCK is not set
184# CONFIG_INLINE_WRITE_LOCK is not set
185# CONFIG_INLINE_WRITE_LOCK_BH is not set
186# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
187# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
188CONFIG_INLINE_WRITE_UNLOCK=y
189# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
190CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
191# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
192# CONFIG_MUTEX_SPIN_ON_OWNER is not set
161# CONFIG_FREEZER is not set 193# CONFIG_FREEZER is not set
162 194
163# 195#
@@ -211,6 +243,7 @@ CONFIG_FORCE_MAX_ZONEORDER=11
211CONFIG_MEMORY_START=0x0c000000 243CONFIG_MEMORY_START=0x0c000000
212CONFIG_MEMORY_SIZE=0x04000000 244CONFIG_MEMORY_SIZE=0x04000000
213CONFIG_29BIT=y 245CONFIG_29BIT=y
246# CONFIG_PMB_ENABLE is not set
214CONFIG_VSYSCALL=y 247CONFIG_VSYSCALL=y
215CONFIG_ARCH_FLATMEM_ENABLE=y 248CONFIG_ARCH_FLATMEM_ENABLE=y
216CONFIG_ARCH_SPARSEMEM_ENABLE=y 249CONFIG_ARCH_SPARSEMEM_ENABLE=y
@@ -237,8 +270,6 @@ CONFIG_MIGRATION=y
237# CONFIG_PHYS_ADDR_T_64BIT is not set 270# CONFIG_PHYS_ADDR_T_64BIT is not set
238CONFIG_ZONE_DMA_FLAG=0 271CONFIG_ZONE_DMA_FLAG=0
239CONFIG_NR_QUICK=2 272CONFIG_NR_QUICK=2
240CONFIG_HAVE_MLOCK=y
241CONFIG_HAVE_MLOCKED_PAGE_BIT=y
242# CONFIG_KSM is not set 273# CONFIG_KSM is not set
243CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 274CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
244 275
@@ -419,7 +450,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
419# CONFIG_IRDA is not set 450# CONFIG_IRDA is not set
420# CONFIG_BT is not set 451# CONFIG_BT is not set
421# CONFIG_AF_RXRPC is not set 452# CONFIG_AF_RXRPC is not set
422# CONFIG_WIRELESS is not set 453CONFIG_WIRELESS=y
454# CONFIG_CFG80211 is not set
455# CONFIG_LIB80211 is not set
456
457#
458# CFG80211 needs to be enabled for MAC80211
459#
423# CONFIG_WIMAX is not set 460# CONFIG_WIMAX is not set
424# CONFIG_RFKILL is not set 461# CONFIG_RFKILL is not set
425# CONFIG_NET_9P is not set 462# CONFIG_NET_9P is not set
@@ -498,7 +535,6 @@ CONFIG_MTD_CFI_UTIL=y
498CONFIG_MTD_COMPLEX_MAPPINGS=y 535CONFIG_MTD_COMPLEX_MAPPINGS=y
499CONFIG_MTD_PHYSMAP=y 536CONFIG_MTD_PHYSMAP=y
500# CONFIG_MTD_PHYSMAP_COMPAT is not set 537# CONFIG_MTD_PHYSMAP_COMPAT is not set
501# CONFIG_MTD_GPIO_ADDR is not set
502# CONFIG_MTD_PLATRAM is not set 538# CONFIG_MTD_PLATRAM is not set
503 539
504# 540#
@@ -531,6 +567,10 @@ CONFIG_MTD_PHYSMAP=y
531CONFIG_BLK_DEV=y 567CONFIG_BLK_DEV=y
532# CONFIG_BLK_DEV_COW_COMMON is not set 568# CONFIG_BLK_DEV_COW_COMMON is not set
533# CONFIG_BLK_DEV_LOOP is not set 569# CONFIG_BLK_DEV_LOOP is not set
570
571#
572# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
573#
534# CONFIG_BLK_DEV_NBD is not set 574# CONFIG_BLK_DEV_NBD is not set
535# CONFIG_BLK_DEV_UB is not set 575# CONFIG_BLK_DEV_UB is not set
536# CONFIG_BLK_DEV_RAM is not set 576# CONFIG_BLK_DEV_RAM is not set
@@ -629,11 +669,12 @@ CONFIG_SH_ETH=y
629# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 669# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
630# CONFIG_B44 is not set 670# CONFIG_B44 is not set
631# CONFIG_KS8842 is not set 671# CONFIG_KS8842 is not set
672# CONFIG_KS8851_MLL is not set
632# CONFIG_NETDEV_1000 is not set 673# CONFIG_NETDEV_1000 is not set
633# CONFIG_NETDEV_10000 is not set 674# CONFIG_NETDEV_10000 is not set
634CONFIG_WLAN=y 675CONFIG_WLAN=y
635# CONFIG_WLAN_PRE80211 is not set 676# CONFIG_USB_ZD1201 is not set
636# CONFIG_WLAN_80211 is not set 677# CONFIG_HOSTAP is not set
637 678
638# 679#
639# Enable WiMAX (Networking options) to see the WiMAX drivers 680# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -662,6 +703,7 @@ CONFIG_WLAN=y
662CONFIG_INPUT=y 703CONFIG_INPUT=y
663# CONFIG_INPUT_FF_MEMLESS is not set 704# CONFIG_INPUT_FF_MEMLESS is not set
664# CONFIG_INPUT_POLLDEV is not set 705# CONFIG_INPUT_POLLDEV is not set
706# CONFIG_INPUT_SPARSEKMAP is not set
665 707
666# 708#
667# Userland interfaces 709# Userland interfaces
@@ -745,6 +787,7 @@ CONFIG_SSB_POSSIBLE=y
745# 787#
746# CONFIG_MFD_CORE is not set 788# CONFIG_MFD_CORE is not set
747# CONFIG_MFD_SM501 is not set 789# CONFIG_MFD_SM501 is not set
790# CONFIG_MFD_SH_MOBILE_SDHI is not set
748# CONFIG_HTC_PASIC3 is not set 791# CONFIG_HTC_PASIC3 is not set
749# CONFIG_MFD_TMIO is not set 792# CONFIG_MFD_TMIO is not set
750# CONFIG_REGULATOR is not set 793# CONFIG_REGULATOR is not set
@@ -1102,10 +1145,11 @@ CONFIG_DEBUG_FS=y
1102# CONFIG_HEADERS_CHECK is not set 1145# CONFIG_HEADERS_CHECK is not set
1103# CONFIG_DEBUG_KERNEL is not set 1146# CONFIG_DEBUG_KERNEL is not set
1104CONFIG_STACKTRACE=y 1147CONFIG_STACKTRACE=y
1105# CONFIG_DEBUG_BUGVERBOSE is not set 1148CONFIG_DEBUG_BUGVERBOSE=y
1106# CONFIG_DEBUG_MEMORY_INIT is not set 1149# CONFIG_DEBUG_MEMORY_INIT is not set
1107# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1150# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1108# CONFIG_LATENCYTOP is not set 1151# CONFIG_LATENCYTOP is not set
1152# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1109CONFIG_NOP_TRACER=y 1153CONFIG_NOP_TRACER=y
1110CONFIG_HAVE_FUNCTION_TRACER=y 1154CONFIG_HAVE_FUNCTION_TRACER=y
1111CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 1155CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
@@ -1125,7 +1169,6 @@ CONFIG_TRACING_SUPPORT=y
1125# CONFIG_SAMPLES is not set 1169# CONFIG_SAMPLES is not set
1126CONFIG_HAVE_ARCH_KGDB=y 1170CONFIG_HAVE_ARCH_KGDB=y
1127# CONFIG_SH_STANDARD_BIOS is not set 1171# CONFIG_SH_STANDARD_BIOS is not set
1128# CONFIG_EARLY_SCIF_CONSOLE is not set
1129# CONFIG_DWARF_UNWINDER is not set 1172# CONFIG_DWARF_UNWINDER is not set
1130 1173
1131# 1174#
@@ -1134,7 +1177,11 @@ CONFIG_HAVE_ARCH_KGDB=y
1134# CONFIG_KEYS is not set 1177# CONFIG_KEYS is not set
1135# CONFIG_SECURITY is not set 1178# CONFIG_SECURITY is not set
1136# CONFIG_SECURITYFS is not set 1179# CONFIG_SECURITYFS is not set
1137# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1180# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1181# CONFIG_DEFAULT_SECURITY_SMACK is not set
1182# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1183CONFIG_DEFAULT_SECURITY_DAC=y
1184CONFIG_DEFAULT_SECURITY=""
1138CONFIG_CRYPTO=y 1185CONFIG_CRYPTO=y
1139 1186
1140# 1187#
diff --git a/arch/sh/configs/hp6xx_defconfig b/arch/sh/configs/hp6xx_defconfig
index f59be446f829..06644908631e 100644
--- a/arch/sh/configs/hp6xx_defconfig
+++ b/arch/sh/configs/hp6xx_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 17:59:45 2009 4# Mon Jan 4 11:30:31 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -30,6 +30,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
30CONFIG_ARCH_NO_VIRT_TO_BUS=y 30CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 31CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
33CONFIG_DMA_NONCOHERENT=y
33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
34CONFIG_CONSTRUCTORS=y 35CONFIG_CONSTRUCTORS=y
35 36
@@ -57,6 +58,7 @@ CONFIG_BSD_PROCESS_ACCT=y
57# 58#
58CONFIG_TREE_RCU=y 59CONFIG_TREE_RCU=y
59# CONFIG_TREE_PREEMPT_RCU is not set 60# CONFIG_TREE_PREEMPT_RCU is not set
61# CONFIG_TINY_RCU is not set
60# CONFIG_RCU_TRACE is not set 62# CONFIG_RCU_TRACE is not set
61CONFIG_RCU_FANOUT=32 63CONFIG_RCU_FANOUT=32
62# CONFIG_RCU_FANOUT_EXACT is not set 64# CONFIG_RCU_FANOUT_EXACT is not set
@@ -92,6 +94,7 @@ CONFIG_EVENTFD=y
92CONFIG_SHMEM=y 94CONFIG_SHMEM=y
93CONFIG_AIO=y 95CONFIG_AIO=y
94CONFIG_HAVE_PERF_EVENTS=y 96CONFIG_HAVE_PERF_EVENTS=y
97CONFIG_PERF_USE_VMALLOC=y
95 98
96# 99#
97# Kernel Performance Events And Counters 100# Kernel Performance Events And Counters
@@ -109,6 +112,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
109CONFIG_HAVE_KPROBES=y 112CONFIG_HAVE_KPROBES=y
110CONFIG_HAVE_KRETPROBES=y 113CONFIG_HAVE_KRETPROBES=y
111CONFIG_HAVE_ARCH_TRACEHOOK=y 114CONFIG_HAVE_ARCH_TRACEHOOK=y
115CONFIG_HAVE_DMA_ATTRS=y
112CONFIG_HAVE_CLK=y 116CONFIG_HAVE_CLK=y
113CONFIG_HAVE_DMA_API_DEBUG=y 117CONFIG_HAVE_DMA_API_DEBUG=y
114 118
@@ -130,14 +134,41 @@ CONFIG_LBDAF=y
130# IO Schedulers 134# IO Schedulers
131# 135#
132CONFIG_IOSCHED_NOOP=y 136CONFIG_IOSCHED_NOOP=y
133CONFIG_IOSCHED_AS=y
134CONFIG_IOSCHED_DEADLINE=y 137CONFIG_IOSCHED_DEADLINE=y
135CONFIG_IOSCHED_CFQ=y 138CONFIG_IOSCHED_CFQ=y
136CONFIG_DEFAULT_AS=y
137# CONFIG_DEFAULT_DEADLINE is not set 139# CONFIG_DEFAULT_DEADLINE is not set
138# CONFIG_DEFAULT_CFQ is not set 140CONFIG_DEFAULT_CFQ=y
139# CONFIG_DEFAULT_NOOP is not set 141# CONFIG_DEFAULT_NOOP is not set
140CONFIG_DEFAULT_IOSCHED="anticipatory" 142CONFIG_DEFAULT_IOSCHED="cfq"
143# CONFIG_INLINE_SPIN_TRYLOCK is not set
144# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
145# CONFIG_INLINE_SPIN_LOCK is not set
146# CONFIG_INLINE_SPIN_LOCK_BH is not set
147# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
148# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
149CONFIG_INLINE_SPIN_UNLOCK=y
150# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
151CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
152# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
153# CONFIG_INLINE_READ_TRYLOCK is not set
154# CONFIG_INLINE_READ_LOCK is not set
155# CONFIG_INLINE_READ_LOCK_BH is not set
156# CONFIG_INLINE_READ_LOCK_IRQ is not set
157# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
158CONFIG_INLINE_READ_UNLOCK=y
159# CONFIG_INLINE_READ_UNLOCK_BH is not set
160CONFIG_INLINE_READ_UNLOCK_IRQ=y
161# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
162# CONFIG_INLINE_WRITE_TRYLOCK is not set
163# CONFIG_INLINE_WRITE_LOCK is not set
164# CONFIG_INLINE_WRITE_LOCK_BH is not set
165# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
166# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
167CONFIG_INLINE_WRITE_UNLOCK=y
168# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
169CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
170# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
171# CONFIG_MUTEX_SPIN_ON_OWNER is not set
141CONFIG_FREEZER=y 172CONFIG_FREEZER=y
142 173
143# 174#
@@ -213,8 +244,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
213# CONFIG_PHYS_ADDR_T_64BIT is not set 244# CONFIG_PHYS_ADDR_T_64BIT is not set
214CONFIG_ZONE_DMA_FLAG=0 245CONFIG_ZONE_DMA_FLAG=0
215CONFIG_NR_QUICK=2 246CONFIG_NR_QUICK=2
216CONFIG_HAVE_MLOCK=y
217CONFIG_HAVE_MLOCKED_PAGE_BIT=y
218# CONFIG_KSM is not set 247# CONFIG_KSM is not set
219CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 248CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
220 249
@@ -261,8 +290,8 @@ CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
261# 290#
262# DMA support 291# DMA support
263# 292#
264CONFIG_SH_DMA_API=y
265CONFIG_SH_DMA=y 293CONFIG_SH_DMA=y
294CONFIG_SH_DMA_API=y
266CONFIG_NR_ONCHIP_DMA_CHANNELS=6 295CONFIG_NR_ONCHIP_DMA_CHANNELS=6
267# CONFIG_NR_DMA_CHANNELS_BOOL is not set 296# CONFIG_NR_DMA_CHANNELS_BOOL is not set
268 297
@@ -313,7 +342,6 @@ CONFIG_ENTRY_OFFSET=0x00001000
313# 342#
314# CONFIG_ARCH_SUPPORTS_MSI is not set 343# CONFIG_ARCH_SUPPORTS_MSI is not set
315CONFIG_PCCARD=y 344CONFIG_PCCARD=y
316# CONFIG_PCMCIA_DEBUG is not set
317CONFIG_PCMCIA=y 345CONFIG_PCMCIA=y
318CONFIG_PCMCIA_LOAD_CIS=y 346CONFIG_PCMCIA_LOAD_CIS=y
319CONFIG_PCMCIA_IOCTL=y 347CONFIG_PCMCIA_IOCTL=y
@@ -363,6 +391,10 @@ CONFIG_EXTRA_FIRMWARE=""
363CONFIG_BLK_DEV=y 391CONFIG_BLK_DEV=y
364# CONFIG_BLK_DEV_COW_COMMON is not set 392# CONFIG_BLK_DEV_COW_COMMON is not set
365# CONFIG_BLK_DEV_LOOP is not set 393# CONFIG_BLK_DEV_LOOP is not set
394
395#
396# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
397#
366# CONFIG_BLK_DEV_RAM is not set 398# CONFIG_BLK_DEV_RAM is not set
367# CONFIG_CDROM_PKTCDVD is not set 399# CONFIG_CDROM_PKTCDVD is not set
368# CONFIG_BLK_DEV_HD is not set 400# CONFIG_BLK_DEV_HD is not set
@@ -432,6 +464,7 @@ CONFIG_PATA_PLATFORM=y
432CONFIG_INPUT=y 464CONFIG_INPUT=y
433# CONFIG_INPUT_FF_MEMLESS is not set 465# CONFIG_INPUT_FF_MEMLESS is not set
434CONFIG_INPUT_POLLDEV=y 466CONFIG_INPUT_POLLDEV=y
467# CONFIG_INPUT_SPARSEKMAP is not set
435 468
436# 469#
437# Userland interfaces 470# Userland interfaces
@@ -460,6 +493,7 @@ CONFIG_KEYBOARD_HP6XX=y
460# CONFIG_INPUT_TABLET is not set 493# CONFIG_INPUT_TABLET is not set
461CONFIG_INPUT_TOUCHSCREEN=y 494CONFIG_INPUT_TOUCHSCREEN=y
462# CONFIG_TOUCHSCREEN_AD7879 is not set 495# CONFIG_TOUCHSCREEN_AD7879 is not set
496# CONFIG_TOUCHSCREEN_DYNAPRO is not set
463# CONFIG_TOUCHSCREEN_FUJITSU is not set 497# CONFIG_TOUCHSCREEN_FUJITSU is not set
464# CONFIG_TOUCHSCREEN_GUNZE is not set 498# CONFIG_TOUCHSCREEN_GUNZE is not set
465# CONFIG_TOUCHSCREEN_ELO is not set 499# CONFIG_TOUCHSCREEN_ELO is not set
@@ -483,6 +517,7 @@ CONFIG_SERIO=y
483# CONFIG_SERIO_SERPORT is not set 517# CONFIG_SERIO_SERPORT is not set
484# CONFIG_SERIO_LIBPS2 is not set 518# CONFIG_SERIO_LIBPS2 is not set
485# CONFIG_SERIO_RAW is not set 519# CONFIG_SERIO_RAW is not set
520# CONFIG_SERIO_ALTERA_PS2 is not set
486# CONFIG_GAMEPORT is not set 521# CONFIG_GAMEPORT is not set
487 522
488# 523#
@@ -550,6 +585,7 @@ CONFIG_SSB_POSSIBLE=y
550# 585#
551# CONFIG_MFD_CORE is not set 586# CONFIG_MFD_CORE is not set
552# CONFIG_MFD_SM501 is not set 587# CONFIG_MFD_SM501 is not set
588# CONFIG_MFD_SH_MOBILE_SDHI is not set
553# CONFIG_HTC_PASIC3 is not set 589# CONFIG_HTC_PASIC3 is not set
554# CONFIG_MFD_TMIO is not set 590# CONFIG_MFD_TMIO is not set
555# CONFIG_REGULATOR is not set 591# CONFIG_REGULATOR is not set
@@ -659,7 +695,9 @@ CONFIG_RTC_INTF_DEV=y
659# CONFIG_RTC_DRV_M48T86 is not set 695# CONFIG_RTC_DRV_M48T86 is not set
660# CONFIG_RTC_DRV_M48T35 is not set 696# CONFIG_RTC_DRV_M48T35 is not set
661# CONFIG_RTC_DRV_M48T59 is not set 697# CONFIG_RTC_DRV_M48T59 is not set
698# CONFIG_RTC_DRV_MSM6242 is not set
662# CONFIG_RTC_DRV_BQ4802 is not set 699# CONFIG_RTC_DRV_BQ4802 is not set
700# CONFIG_RTC_DRV_RP5C01 is not set
663# CONFIG_RTC_DRV_V3020 is not set 701# CONFIG_RTC_DRV_V3020 is not set
664 702
665# 703#
@@ -684,6 +722,7 @@ CONFIG_EXT2_FS=y
684# CONFIG_EXT2_FS_XIP is not set 722# CONFIG_EXT2_FS_XIP is not set
685# CONFIG_EXT3_FS is not set 723# CONFIG_EXT3_FS is not set
686# CONFIG_EXT4_FS is not set 724# CONFIG_EXT4_FS is not set
725CONFIG_EXT4_USE_FOR_EXT23=y
687# CONFIG_REISERFS_FS is not set 726# CONFIG_REISERFS_FS is not set
688# CONFIG_JFS_FS is not set 727# CONFIG_JFS_FS is not set
689# CONFIG_FS_POSIX_ACL is not set 728# CONFIG_FS_POSIX_ACL is not set
@@ -731,7 +770,6 @@ CONFIG_PROC_SYSCTL=y
731CONFIG_PROC_PAGE_MONITOR=y 770CONFIG_PROC_PAGE_MONITOR=y
732CONFIG_SYSFS=y 771CONFIG_SYSFS=y
733# CONFIG_TMPFS is not set 772# CONFIG_TMPFS is not set
734# CONFIG_HUGETLBFS is not set
735# CONFIG_HUGETLB_PAGE is not set 773# CONFIG_HUGETLB_PAGE is not set
736# CONFIG_CONFIGFS_FS is not set 774# CONFIG_CONFIGFS_FS is not set
737CONFIG_MISC_FILESYSTEMS=y 775CONFIG_MISC_FILESYSTEMS=y
@@ -813,10 +851,11 @@ CONFIG_FRAME_WARN=1024
813# CONFIG_DEBUG_FS is not set 851# CONFIG_DEBUG_FS is not set
814# CONFIG_HEADERS_CHECK is not set 852# CONFIG_HEADERS_CHECK is not set
815# CONFIG_DEBUG_KERNEL is not set 853# CONFIG_DEBUG_KERNEL is not set
816# CONFIG_DEBUG_BUGVERBOSE is not set 854CONFIG_DEBUG_BUGVERBOSE=y
817# CONFIG_DEBUG_MEMORY_INIT is not set 855# CONFIG_DEBUG_MEMORY_INIT is not set
818# CONFIG_RCU_CPU_STALL_DETECTOR is not set 856# CONFIG_RCU_CPU_STALL_DETECTOR is not set
819# CONFIG_LATENCYTOP is not set 857# CONFIG_LATENCYTOP is not set
858# CONFIG_SYSCTL_SYSCALL_CHECK is not set
820CONFIG_HAVE_FUNCTION_TRACER=y 859CONFIG_HAVE_FUNCTION_TRACER=y
821CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 860CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
822CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 861CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
@@ -829,7 +868,6 @@ CONFIG_TRACING_SUPPORT=y
829# CONFIG_SAMPLES is not set 868# CONFIG_SAMPLES is not set
830CONFIG_HAVE_ARCH_KGDB=y 869CONFIG_HAVE_ARCH_KGDB=y
831# CONFIG_SH_STANDARD_BIOS is not set 870# CONFIG_SH_STANDARD_BIOS is not set
832# CONFIG_EARLY_SCIF_CONSOLE is not set
833# CONFIG_DWARF_UNWINDER is not set 871# CONFIG_DWARF_UNWINDER is not set
834 872
835# 873#
@@ -838,7 +876,11 @@ CONFIG_HAVE_ARCH_KGDB=y
838# CONFIG_KEYS is not set 876# CONFIG_KEYS is not set
839# CONFIG_SECURITY is not set 877# CONFIG_SECURITY is not set
840# CONFIG_SECURITYFS is not set 878# CONFIG_SECURITYFS is not set
841# CONFIG_SECURITY_FILE_CAPABILITIES is not set 879# CONFIG_DEFAULT_SECURITY_SELINUX is not set
880# CONFIG_DEFAULT_SECURITY_SMACK is not set
881# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
882CONFIG_DEFAULT_SECURITY_DAC=y
883CONFIG_DEFAULT_SECURITY=""
842CONFIG_CRYPTO=y 884CONFIG_CRYPTO=y
843 885
844# 886#
diff --git a/arch/sh/configs/kfr2r09-romimage_defconfig b/arch/sh/configs/kfr2r09-romimage_defconfig
index 02590e127f74..3d834e59e8f9 100644
--- a/arch/sh/configs/kfr2r09-romimage_defconfig
+++ b/arch/sh/configs/kfr2r09-romimage_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:01:48 2009 4# Mon Jan 4 11:31:09 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21CONFIG_ARCH_SUSPEND_POSSIBLE=y 21CONFIG_ARCH_SUSPEND_POSSIBLE=y
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_CMT=y 24CONFIG_SYS_SUPPORTS_CMT=y
24CONFIG_SYS_SUPPORTS_TMU=y 25CONFIG_SYS_SUPPORTS_TMU=y
25CONFIG_STACKTRACE_SUPPORT=y 26CONFIG_STACKTRACE_SUPPORT=y
@@ -30,6 +31,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
30CONFIG_ARCH_NO_VIRT_TO_BUS=y 31CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 32CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
34CONFIG_DMA_NONCOHERENT=y
33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 35CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
34CONFIG_CONSTRUCTORS=y 36CONFIG_CONSTRUCTORS=y
35 37
@@ -60,6 +62,7 @@ CONFIG_BSD_PROCESS_ACCT=y
60# 62#
61CONFIG_TREE_RCU=y 63CONFIG_TREE_RCU=y
62# CONFIG_TREE_PREEMPT_RCU is not set 64# CONFIG_TREE_PREEMPT_RCU is not set
65# CONFIG_TINY_RCU is not set
63# CONFIG_RCU_TRACE is not set 66# CONFIG_RCU_TRACE is not set
64CONFIG_RCU_FANOUT=32 67CONFIG_RCU_FANOUT=32
65# CONFIG_RCU_FANOUT_EXACT is not set 68# CONFIG_RCU_FANOUT_EXACT is not set
@@ -102,6 +105,7 @@ CONFIG_EVENTFD=y
102CONFIG_SHMEM=y 105CONFIG_SHMEM=y
103CONFIG_AIO=y 106CONFIG_AIO=y
104CONFIG_HAVE_PERF_EVENTS=y 107CONFIG_HAVE_PERF_EVENTS=y
108CONFIG_PERF_USE_VMALLOC=y
105 109
106# 110#
107# Kernel Performance Events And Counters 111# Kernel Performance Events And Counters
@@ -119,6 +123,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
119CONFIG_HAVE_KPROBES=y 123CONFIG_HAVE_KPROBES=y
120CONFIG_HAVE_KRETPROBES=y 124CONFIG_HAVE_KRETPROBES=y
121CONFIG_HAVE_ARCH_TRACEHOOK=y 125CONFIG_HAVE_ARCH_TRACEHOOK=y
126CONFIG_HAVE_DMA_ATTRS=y
122CONFIG_HAVE_CLK=y 127CONFIG_HAVE_CLK=y
123CONFIG_HAVE_DMA_API_DEBUG=y 128CONFIG_HAVE_DMA_API_DEBUG=y
124 129
@@ -133,6 +138,35 @@ CONFIG_RT_MUTEXES=y
133CONFIG_BASE_SMALL=0 138CONFIG_BASE_SMALL=0
134# CONFIG_MODULES is not set 139# CONFIG_MODULES is not set
135# CONFIG_BLOCK is not set 140# CONFIG_BLOCK is not set
141# CONFIG_INLINE_SPIN_TRYLOCK is not set
142# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
143# CONFIG_INLINE_SPIN_LOCK is not set
144# CONFIG_INLINE_SPIN_LOCK_BH is not set
145# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
146# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
147CONFIG_INLINE_SPIN_UNLOCK=y
148# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
149CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
150# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
151# CONFIG_INLINE_READ_TRYLOCK is not set
152# CONFIG_INLINE_READ_LOCK is not set
153# CONFIG_INLINE_READ_LOCK_BH is not set
154# CONFIG_INLINE_READ_LOCK_IRQ is not set
155# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
156CONFIG_INLINE_READ_UNLOCK=y
157# CONFIG_INLINE_READ_UNLOCK_BH is not set
158CONFIG_INLINE_READ_UNLOCK_IRQ=y
159# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
160# CONFIG_INLINE_WRITE_TRYLOCK is not set
161# CONFIG_INLINE_WRITE_LOCK is not set
162# CONFIG_INLINE_WRITE_LOCK_BH is not set
163# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
164# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
165CONFIG_INLINE_WRITE_UNLOCK=y
166# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
167CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
168# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
169# CONFIG_MUTEX_SPIN_ON_OWNER is not set
136# CONFIG_FREEZER is not set 170# CONFIG_FREEZER is not set
137 171
138# 172#
@@ -188,6 +222,7 @@ CONFIG_FORCE_MAX_ZONEORDER=11
188CONFIG_MEMORY_START=0x08000000 222CONFIG_MEMORY_START=0x08000000
189CONFIG_MEMORY_SIZE=0x08000000 223CONFIG_MEMORY_SIZE=0x08000000
190CONFIG_29BIT=y 224CONFIG_29BIT=y
225# CONFIG_PMB_ENABLE is not set
191# CONFIG_X2TLB is not set 226# CONFIG_X2TLB is not set
192CONFIG_VSYSCALL=y 227CONFIG_VSYSCALL=y
193CONFIG_ARCH_FLATMEM_ENABLE=y 228CONFIG_ARCH_FLATMEM_ENABLE=y
@@ -212,8 +247,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
212# CONFIG_PHYS_ADDR_T_64BIT is not set 247# CONFIG_PHYS_ADDR_T_64BIT is not set
213CONFIG_ZONE_DMA_FLAG=0 248CONFIG_ZONE_DMA_FLAG=0
214CONFIG_NR_QUICK=2 249CONFIG_NR_QUICK=2
215CONFIG_HAVE_MLOCK=y
216CONFIG_HAVE_MLOCKED_PAGE_BIT=y
217# CONFIG_KSM is not set 250# CONFIG_KSM is not set
218CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 251CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
219 252
@@ -247,7 +280,6 @@ CONFIG_SH_KFR2R09=y
247# 280#
248# CONFIG_SH_TIMER_TMU is not set 281# CONFIG_SH_TIMER_TMU is not set
249CONFIG_SH_TIMER_CMT=y 282CONFIG_SH_TIMER_CMT=y
250CONFIG_SH_PCLK_FREQ=33333333
251CONFIG_SH_CLK_CPG=y 283CONFIG_SH_CLK_CPG=y
252# CONFIG_NO_HZ is not set 284# CONFIG_NO_HZ is not set
253# CONFIG_HIGH_RES_TIMERS is not set 285# CONFIG_HIGH_RES_TIMERS is not set
@@ -429,6 +461,7 @@ CONFIG_HAVE_IDE=y
429CONFIG_INPUT=y 461CONFIG_INPUT=y
430# CONFIG_INPUT_FF_MEMLESS is not set 462# CONFIG_INPUT_FF_MEMLESS is not set
431# CONFIG_INPUT_POLLDEV is not set 463# CONFIG_INPUT_POLLDEV is not set
464# CONFIG_INPUT_SPARSEKMAP is not set
432 465
433# 466#
434# Userland interfaces 467# Userland interfaces
@@ -520,7 +553,6 @@ CONFIG_I2C_SH_MOBILE=y
520# 553#
521# Miscellaneous I2C Chip support 554# Miscellaneous I2C Chip support
522# 555#
523# CONFIG_DS1682 is not set
524# CONFIG_SENSORS_TSL2550 is not set 556# CONFIG_SENSORS_TSL2550 is not set
525# CONFIG_I2C_DEBUG_CORE is not set 557# CONFIG_I2C_DEBUG_CORE is not set
526# CONFIG_I2C_DEBUG_ALGO is not set 558# CONFIG_I2C_DEBUG_ALGO is not set
@@ -575,16 +607,19 @@ CONFIG_SSB_POSSIBLE=y
575# 607#
576# CONFIG_MFD_CORE is not set 608# CONFIG_MFD_CORE is not set
577# CONFIG_MFD_SM501 is not set 609# CONFIG_MFD_SM501 is not set
610# CONFIG_MFD_SH_MOBILE_SDHI is not set
578# CONFIG_HTC_PASIC3 is not set 611# CONFIG_HTC_PASIC3 is not set
579# CONFIG_TPS65010 is not set 612# CONFIG_TPS65010 is not set
580# CONFIG_TWL4030_CORE is not set 613# CONFIG_TWL4030_CORE is not set
581# CONFIG_MFD_TMIO is not set 614# CONFIG_MFD_TMIO is not set
582# CONFIG_PMIC_DA903X is not set 615# CONFIG_PMIC_DA903X is not set
616# CONFIG_PMIC_ADP5520 is not set
583# CONFIG_MFD_WM8400 is not set 617# CONFIG_MFD_WM8400 is not set
584# CONFIG_MFD_WM831X is not set 618# CONFIG_MFD_WM831X is not set
585# CONFIG_MFD_WM8350_I2C is not set 619# CONFIG_MFD_WM8350_I2C is not set
586# CONFIG_MFD_PCF50633 is not set 620# CONFIG_MFD_PCF50633 is not set
587# CONFIG_AB3100_CORE is not set 621# CONFIG_AB3100_CORE is not set
622# CONFIG_MFD_88PM8607 is not set
588# CONFIG_REGULATOR is not set 623# CONFIG_REGULATOR is not set
589# CONFIG_MEDIA_SUPPORT is not set 624# CONFIG_MEDIA_SUPPORT is not set
590 625
@@ -650,10 +685,12 @@ CONFIG_USB_GADGET_DUALSPEED=y
650# CONFIG_USB_ETH is not set 685# CONFIG_USB_ETH is not set
651# CONFIG_USB_GADGETFS is not set 686# CONFIG_USB_GADGETFS is not set
652# CONFIG_USB_FILE_STORAGE is not set 687# CONFIG_USB_FILE_STORAGE is not set
688# CONFIG_USB_MASS_STORAGE is not set
653# CONFIG_USB_G_SERIAL is not set 689# CONFIG_USB_G_SERIAL is not set
654# CONFIG_USB_MIDI_GADGET is not set 690# CONFIG_USB_MIDI_GADGET is not set
655# CONFIG_USB_G_PRINTER is not set 691# CONFIG_USB_G_PRINTER is not set
656CONFIG_USB_CDC_COMPOSITE=y 692CONFIG_USB_CDC_COMPOSITE=y
693# CONFIG_USB_G_MULTI is not set
657 694
658# 695#
659# OTG and related infrastructure 696# OTG and related infrastructure
@@ -725,7 +762,7 @@ CONFIG_FRAME_WARN=1024
725CONFIG_DEBUG_FS=y 762CONFIG_DEBUG_FS=y
726# CONFIG_HEADERS_CHECK is not set 763# CONFIG_HEADERS_CHECK is not set
727# CONFIG_DEBUG_KERNEL is not set 764# CONFIG_DEBUG_KERNEL is not set
728# CONFIG_DEBUG_BUGVERBOSE is not set 765CONFIG_DEBUG_BUGVERBOSE=y
729# CONFIG_DEBUG_MEMORY_INIT is not set 766# CONFIG_DEBUG_MEMORY_INIT is not set
730# CONFIG_RCU_CPU_STALL_DETECTOR is not set 767# CONFIG_RCU_CPU_STALL_DETECTOR is not set
731# CONFIG_LATENCYTOP is not set 768# CONFIG_LATENCYTOP is not set
@@ -743,7 +780,6 @@ CONFIG_TRACING_SUPPORT=y
743# CONFIG_SAMPLES is not set 780# CONFIG_SAMPLES is not set
744CONFIG_HAVE_ARCH_KGDB=y 781CONFIG_HAVE_ARCH_KGDB=y
745# CONFIG_SH_STANDARD_BIOS is not set 782# CONFIG_SH_STANDARD_BIOS is not set
746# CONFIG_EARLY_SCIF_CONSOLE is not set
747# CONFIG_DWARF_UNWINDER is not set 783# CONFIG_DWARF_UNWINDER is not set
748 784
749# 785#
@@ -752,7 +788,11 @@ CONFIG_HAVE_ARCH_KGDB=y
752# CONFIG_KEYS is not set 788# CONFIG_KEYS is not set
753# CONFIG_SECURITY is not set 789# CONFIG_SECURITY is not set
754# CONFIG_SECURITYFS is not set 790# CONFIG_SECURITYFS is not set
755# CONFIG_SECURITY_FILE_CAPABILITIES is not set 791# CONFIG_DEFAULT_SECURITY_SELINUX is not set
792# CONFIG_DEFAULT_SECURITY_SMACK is not set
793# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
794CONFIG_DEFAULT_SECURITY_DAC=y
795CONFIG_DEFAULT_SECURITY=""
756# CONFIG_CRYPTO is not set 796# CONFIG_CRYPTO is not set
757# CONFIG_BINARY_PRINTF is not set 797# CONFIG_BINARY_PRINTF is not set
758 798
diff --git a/arch/sh/configs/kfr2r09_defconfig b/arch/sh/configs/kfr2r09_defconfig
index 8ae65d294b11..f22be494ed99 100644
--- a/arch/sh/configs/kfr2r09_defconfig
+++ b/arch/sh/configs/kfr2r09_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 3# Linux kernel version: 2.6.33-rc2
4# Fri Sep 25 11:54:22 2009 4# Mon Jan 4 11:32:55 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21CONFIG_ARCH_SUSPEND_POSSIBLE=y 21CONFIG_ARCH_SUSPEND_POSSIBLE=y
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_CMT=y 24CONFIG_SYS_SUPPORTS_CMT=y
24CONFIG_SYS_SUPPORTS_TMU=y 25CONFIG_SYS_SUPPORTS_TMU=y
25CONFIG_STACKTRACE_SUPPORT=y 26CONFIG_STACKTRACE_SUPPORT=y
@@ -30,6 +31,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
30CONFIG_ARCH_NO_VIRT_TO_BUS=y 31CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 32CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
34CONFIG_DMA_NONCOHERENT=y
33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 35CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
34CONFIG_CONSTRUCTORS=y 36CONFIG_CONSTRUCTORS=y
35 37
@@ -62,6 +64,7 @@ CONFIG_BSD_PROCESS_ACCT=y
62# 64#
63CONFIG_TREE_RCU=y 65CONFIG_TREE_RCU=y
64# CONFIG_TREE_PREEMPT_RCU is not set 66# CONFIG_TREE_PREEMPT_RCU is not set
67# CONFIG_TINY_RCU is not set
65# CONFIG_RCU_TRACE is not set 68# CONFIG_RCU_TRACE is not set
66CONFIG_RCU_FANOUT=32 69CONFIG_RCU_FANOUT=32
67# CONFIG_RCU_FANOUT_EXACT is not set 70# CONFIG_RCU_FANOUT_EXACT is not set
@@ -104,6 +107,7 @@ CONFIG_EVENTFD=y
104CONFIG_SHMEM=y 107CONFIG_SHMEM=y
105CONFIG_AIO=y 108CONFIG_AIO=y
106CONFIG_HAVE_PERF_EVENTS=y 109CONFIG_HAVE_PERF_EVENTS=y
110CONFIG_PERF_USE_VMALLOC=y
107 111
108# 112#
109# Kernel Performance Events And Counters 113# Kernel Performance Events And Counters
@@ -121,6 +125,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
121CONFIG_HAVE_KPROBES=y 125CONFIG_HAVE_KPROBES=y
122CONFIG_HAVE_KRETPROBES=y 126CONFIG_HAVE_KRETPROBES=y
123CONFIG_HAVE_ARCH_TRACEHOOK=y 127CONFIG_HAVE_ARCH_TRACEHOOK=y
128CONFIG_HAVE_DMA_ATTRS=y
124CONFIG_HAVE_CLK=y 129CONFIG_HAVE_CLK=y
125CONFIG_HAVE_DMA_API_DEBUG=y 130CONFIG_HAVE_DMA_API_DEBUG=y
126 131
@@ -148,14 +153,41 @@ CONFIG_LBDAF=y
148# IO Schedulers 153# IO Schedulers
149# 154#
150CONFIG_IOSCHED_NOOP=y 155CONFIG_IOSCHED_NOOP=y
151# CONFIG_IOSCHED_AS is not set
152# CONFIG_IOSCHED_DEADLINE is not set 156# CONFIG_IOSCHED_DEADLINE is not set
153# CONFIG_IOSCHED_CFQ is not set 157# CONFIG_IOSCHED_CFQ is not set
154# CONFIG_DEFAULT_AS is not set
155# CONFIG_DEFAULT_DEADLINE is not set 158# CONFIG_DEFAULT_DEADLINE is not set
156# CONFIG_DEFAULT_CFQ is not set 159# CONFIG_DEFAULT_CFQ is not set
157CONFIG_DEFAULT_NOOP=y 160CONFIG_DEFAULT_NOOP=y
158CONFIG_DEFAULT_IOSCHED="noop" 161CONFIG_DEFAULT_IOSCHED="noop"
162# CONFIG_INLINE_SPIN_TRYLOCK is not set
163# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
164# CONFIG_INLINE_SPIN_LOCK is not set
165# CONFIG_INLINE_SPIN_LOCK_BH is not set
166# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
167# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
168# CONFIG_INLINE_SPIN_UNLOCK is not set
169# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
170# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
171# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
172# CONFIG_INLINE_READ_TRYLOCK is not set
173# CONFIG_INLINE_READ_LOCK is not set
174# CONFIG_INLINE_READ_LOCK_BH is not set
175# CONFIG_INLINE_READ_LOCK_IRQ is not set
176# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
177# CONFIG_INLINE_READ_UNLOCK is not set
178# CONFIG_INLINE_READ_UNLOCK_BH is not set
179# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
180# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
181# CONFIG_INLINE_WRITE_TRYLOCK is not set
182# CONFIG_INLINE_WRITE_LOCK is not set
183# CONFIG_INLINE_WRITE_LOCK_BH is not set
184# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
185# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
186# CONFIG_INLINE_WRITE_UNLOCK is not set
187# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
188# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
189# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
190# CONFIG_MUTEX_SPIN_ON_OWNER is not set
159# CONFIG_FREEZER is not set 191# CONFIG_FREEZER is not set
160 192
161# 193#
@@ -211,6 +243,7 @@ CONFIG_FORCE_MAX_ZONEORDER=11
211CONFIG_MEMORY_START=0x08000000 243CONFIG_MEMORY_START=0x08000000
212CONFIG_MEMORY_SIZE=0x08000000 244CONFIG_MEMORY_SIZE=0x08000000
213CONFIG_29BIT=y 245CONFIG_29BIT=y
246# CONFIG_PMB_ENABLE is not set
214# CONFIG_X2TLB is not set 247# CONFIG_X2TLB is not set
215CONFIG_VSYSCALL=y 248CONFIG_VSYSCALL=y
216CONFIG_ARCH_FLATMEM_ENABLE=y 249CONFIG_ARCH_FLATMEM_ENABLE=y
@@ -235,8 +268,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
235# CONFIG_PHYS_ADDR_T_64BIT is not set 268# CONFIG_PHYS_ADDR_T_64BIT is not set
236CONFIG_ZONE_DMA_FLAG=0 269CONFIG_ZONE_DMA_FLAG=0
237CONFIG_NR_QUICK=2 270CONFIG_NR_QUICK=2
238CONFIG_HAVE_MLOCK=y
239CONFIG_HAVE_MLOCKED_PAGE_BIT=y
240# CONFIG_KSM is not set 271# CONFIG_KSM is not set
241CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 272CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
242 273
@@ -270,7 +301,6 @@ CONFIG_SH_KFR2R09=y
270# 301#
271# CONFIG_SH_TIMER_TMU is not set 302# CONFIG_SH_TIMER_TMU is not set
272CONFIG_SH_TIMER_CMT=y 303CONFIG_SH_TIMER_CMT=y
273CONFIG_SH_PCLK_FREQ=33333333
274CONFIG_SH_CLK_CPG=y 304CONFIG_SH_CLK_CPG=y
275CONFIG_TICK_ONESHOT=y 305CONFIG_TICK_ONESHOT=y
276CONFIG_NO_HZ=y 306CONFIG_NO_HZ=y
@@ -534,6 +564,10 @@ CONFIG_MTD_UBI_BEB_RESERVE=1
534CONFIG_BLK_DEV=y 564CONFIG_BLK_DEV=y
535# CONFIG_BLK_DEV_COW_COMMON is not set 565# CONFIG_BLK_DEV_COW_COMMON is not set
536# CONFIG_BLK_DEV_LOOP is not set 566# CONFIG_BLK_DEV_LOOP is not set
567
568#
569# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
570#
537# CONFIG_BLK_DEV_NBD is not set 571# CONFIG_BLK_DEV_NBD is not set
538# CONFIG_BLK_DEV_RAM is not set 572# CONFIG_BLK_DEV_RAM is not set
539# CONFIG_CDROM_PKTCDVD is not set 573# CONFIG_CDROM_PKTCDVD is not set
@@ -562,6 +596,7 @@ CONFIG_HAVE_IDE=y
562CONFIG_INPUT=y 596CONFIG_INPUT=y
563# CONFIG_INPUT_FF_MEMLESS is not set 597# CONFIG_INPUT_FF_MEMLESS is not set
564# CONFIG_INPUT_POLLDEV is not set 598# CONFIG_INPUT_POLLDEV is not set
599# CONFIG_INPUT_SPARSEKMAP is not set
565 600
566# 601#
567# Userland interfaces 602# Userland interfaces
@@ -668,7 +703,6 @@ CONFIG_I2C_SH_MOBILE=y
668# 703#
669# Miscellaneous I2C Chip support 704# Miscellaneous I2C Chip support
670# 705#
671# CONFIG_DS1682 is not set
672# CONFIG_SENSORS_TSL2550 is not set 706# CONFIG_SENSORS_TSL2550 is not set
673# CONFIG_I2C_DEBUG_CORE is not set 707# CONFIG_I2C_DEBUG_CORE is not set
674# CONFIG_I2C_DEBUG_ALGO is not set 708# CONFIG_I2C_DEBUG_ALGO is not set
@@ -723,16 +757,19 @@ CONFIG_SSB_POSSIBLE=y
723# 757#
724# CONFIG_MFD_CORE is not set 758# CONFIG_MFD_CORE is not set
725# CONFIG_MFD_SM501 is not set 759# CONFIG_MFD_SM501 is not set
760# CONFIG_MFD_SH_MOBILE_SDHI is not set
726# CONFIG_HTC_PASIC3 is not set 761# CONFIG_HTC_PASIC3 is not set
727# CONFIG_TPS65010 is not set 762# CONFIG_TPS65010 is not set
728# CONFIG_TWL4030_CORE is not set 763# CONFIG_TWL4030_CORE is not set
729# CONFIG_MFD_TMIO is not set 764# CONFIG_MFD_TMIO is not set
730# CONFIG_PMIC_DA903X is not set 765# CONFIG_PMIC_DA903X is not set
766# CONFIG_PMIC_ADP5520 is not set
731# CONFIG_MFD_WM8400 is not set 767# CONFIG_MFD_WM8400 is not set
732# CONFIG_MFD_WM831X is not set 768# CONFIG_MFD_WM831X is not set
733# CONFIG_MFD_WM8350_I2C is not set 769# CONFIG_MFD_WM8350_I2C is not set
734# CONFIG_MFD_PCF50633 is not set 770# CONFIG_MFD_PCF50633 is not set
735# CONFIG_AB3100_CORE is not set 771# CONFIG_AB3100_CORE is not set
772# CONFIG_MFD_88PM8607 is not set
736# CONFIG_REGULATOR is not set 773# CONFIG_REGULATOR is not set
737# CONFIG_MEDIA_SUPPORT is not set 774# CONFIG_MEDIA_SUPPORT is not set
738 775
@@ -847,10 +884,12 @@ CONFIG_USB_GADGET_DUALSPEED=y
847# CONFIG_USB_ETH is not set 884# CONFIG_USB_ETH is not set
848# CONFIG_USB_GADGETFS is not set 885# CONFIG_USB_GADGETFS is not set
849# CONFIG_USB_FILE_STORAGE is not set 886# CONFIG_USB_FILE_STORAGE is not set
887# CONFIG_USB_MASS_STORAGE is not set
850# CONFIG_USB_G_SERIAL is not set 888# CONFIG_USB_G_SERIAL is not set
851# CONFIG_USB_MIDI_GADGET is not set 889# CONFIG_USB_MIDI_GADGET is not set
852# CONFIG_USB_G_PRINTER is not set 890# CONFIG_USB_G_PRINTER is not set
853CONFIG_USB_CDC_COMPOSITE=y 891CONFIG_USB_CDC_COMPOSITE=m
892# CONFIG_USB_G_MULTI is not set
854 893
855# 894#
856# OTG and related infrastructure 895# OTG and related infrastructure
@@ -875,6 +914,7 @@ CONFIG_MMC_BLOCK_BOUNCE=y
875# CONFIG_MMC_SDHCI is not set 914# CONFIG_MMC_SDHCI is not set
876# CONFIG_MMC_AT91 is not set 915# CONFIG_MMC_AT91 is not set
877# CONFIG_MMC_ATMELMCI is not set 916# CONFIG_MMC_ATMELMCI is not set
917# CONFIG_MMC_TMIO is not set
878# CONFIG_MEMSTICK is not set 918# CONFIG_MEMSTICK is not set
879# CONFIG_NEW_LEDS is not set 919# CONFIG_NEW_LEDS is not set
880# CONFIG_ACCESSIBILITY is not set 920# CONFIG_ACCESSIBILITY is not set
@@ -906,6 +946,7 @@ CONFIG_RTC_INTF_DEV=y
906# CONFIG_RTC_DRV_PCF8563 is not set 946# CONFIG_RTC_DRV_PCF8563 is not set
907# CONFIG_RTC_DRV_PCF8583 is not set 947# CONFIG_RTC_DRV_PCF8583 is not set
908# CONFIG_RTC_DRV_M41T80 is not set 948# CONFIG_RTC_DRV_M41T80 is not set
949# CONFIG_RTC_DRV_BQ32K is not set
909# CONFIG_RTC_DRV_S35390A is not set 950# CONFIG_RTC_DRV_S35390A is not set
910# CONFIG_RTC_DRV_FM3130 is not set 951# CONFIG_RTC_DRV_FM3130 is not set
911# CONFIG_RTC_DRV_RX8581 is not set 952# CONFIG_RTC_DRV_RX8581 is not set
@@ -926,7 +967,9 @@ CONFIG_RTC_INTF_DEV=y
926# CONFIG_RTC_DRV_M48T86 is not set 967# CONFIG_RTC_DRV_M48T86 is not set
927# CONFIG_RTC_DRV_M48T35 is not set 968# CONFIG_RTC_DRV_M48T35 is not set
928# CONFIG_RTC_DRV_M48T59 is not set 969# CONFIG_RTC_DRV_M48T59 is not set
970# CONFIG_RTC_DRV_MSM6242 is not set
929# CONFIG_RTC_DRV_BQ4802 is not set 971# CONFIG_RTC_DRV_BQ4802 is not set
972# CONFIG_RTC_DRV_RP5C01 is not set
930# CONFIG_RTC_DRV_V3020 is not set 973# CONFIG_RTC_DRV_V3020 is not set
931 974
932# 975#
@@ -953,6 +996,7 @@ CONFIG_UIO_PDRV_GENIRQ=y
953# CONFIG_EXT2_FS is not set 996# CONFIG_EXT2_FS is not set
954# CONFIG_EXT3_FS is not set 997# CONFIG_EXT3_FS is not set
955# CONFIG_EXT4_FS is not set 998# CONFIG_EXT4_FS is not set
999CONFIG_EXT4_USE_FOR_EXT23=y
956# CONFIG_REISERFS_FS is not set 1000# CONFIG_REISERFS_FS is not set
957# CONFIG_JFS_FS is not set 1001# CONFIG_JFS_FS is not set
958# CONFIG_FS_POSIX_ACL is not set 1002# CONFIG_FS_POSIX_ACL is not set
@@ -1027,7 +1071,7 @@ CONFIG_FRAME_WARN=1024
1027CONFIG_DEBUG_FS=y 1071CONFIG_DEBUG_FS=y
1028# CONFIG_HEADERS_CHECK is not set 1072# CONFIG_HEADERS_CHECK is not set
1029# CONFIG_DEBUG_KERNEL is not set 1073# CONFIG_DEBUG_KERNEL is not set
1030# CONFIG_DEBUG_BUGVERBOSE is not set 1074CONFIG_DEBUG_BUGVERBOSE=y
1031# CONFIG_DEBUG_MEMORY_INIT is not set 1075# CONFIG_DEBUG_MEMORY_INIT is not set
1032# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1076# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1033# CONFIG_LATENCYTOP is not set 1077# CONFIG_LATENCYTOP is not set
@@ -1045,7 +1089,6 @@ CONFIG_TRACING_SUPPORT=y
1045# CONFIG_SAMPLES is not set 1089# CONFIG_SAMPLES is not set
1046CONFIG_HAVE_ARCH_KGDB=y 1090CONFIG_HAVE_ARCH_KGDB=y
1047# CONFIG_SH_STANDARD_BIOS is not set 1091# CONFIG_SH_STANDARD_BIOS is not set
1048# CONFIG_EARLY_SCIF_CONSOLE is not set
1049# CONFIG_DWARF_UNWINDER is not set 1092# CONFIG_DWARF_UNWINDER is not set
1050 1093
1051# 1094#
@@ -1054,7 +1097,11 @@ CONFIG_HAVE_ARCH_KGDB=y
1054# CONFIG_KEYS is not set 1097# CONFIG_KEYS is not set
1055# CONFIG_SECURITY is not set 1098# CONFIG_SECURITY is not set
1056# CONFIG_SECURITYFS is not set 1099# CONFIG_SECURITYFS is not set
1057# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1100# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1101# CONFIG_DEFAULT_SECURITY_SMACK is not set
1102# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1103CONFIG_DEFAULT_SECURITY_DAC=y
1104CONFIG_DEFAULT_SECURITY=""
1058# CONFIG_CRYPTO is not set 1105# CONFIG_CRYPTO is not set
1059# CONFIG_BINARY_PRINTF is not set 1106# CONFIG_BINARY_PRINTF is not set
1060 1107
diff --git a/arch/sh/configs/landisk_defconfig b/arch/sh/configs/landisk_defconfig
index c2a9a3996388..2a42d4977fe4 100644
--- a/arch/sh/configs/landisk_defconfig
+++ b/arch/sh/configs/landisk_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:05:49 2009 4# Mon Jan 4 11:35:31 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_PCI=y 24CONFIG_SYS_SUPPORTS_PCI=y
24CONFIG_SYS_SUPPORTS_TMU=y 25CONFIG_SYS_SUPPORTS_TMU=y
25CONFIG_STACKTRACE_SUPPORT=y 26CONFIG_STACKTRACE_SUPPORT=y
@@ -30,6 +31,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
30CONFIG_ARCH_NO_VIRT_TO_BUS=y 31CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 32CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
34CONFIG_DMA_NONCOHERENT=y
33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 35CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
34CONFIG_CONSTRUCTORS=y 36CONFIG_CONSTRUCTORS=y
35 37
@@ -60,6 +62,7 @@ CONFIG_SYSVIPC_SYSCTL=y
60# 62#
61CONFIG_TREE_RCU=y 63CONFIG_TREE_RCU=y
62# CONFIG_TREE_PREEMPT_RCU is not set 64# CONFIG_TREE_PREEMPT_RCU is not set
65# CONFIG_TINY_RCU is not set
63# CONFIG_RCU_TRACE is not set 66# CONFIG_RCU_TRACE is not set
64CONFIG_RCU_FANOUT=32 67CONFIG_RCU_FANOUT=32
65# CONFIG_RCU_FANOUT_EXACT is not set 68# CONFIG_RCU_FANOUT_EXACT is not set
@@ -94,6 +97,7 @@ CONFIG_EVENTFD=y
94CONFIG_SHMEM=y 97CONFIG_SHMEM=y
95CONFIG_AIO=y 98CONFIG_AIO=y
96CONFIG_HAVE_PERF_EVENTS=y 99CONFIG_HAVE_PERF_EVENTS=y
100CONFIG_PERF_USE_VMALLOC=y
97 101
98# 102#
99# Kernel Performance Events And Counters 103# Kernel Performance Events And Counters
@@ -113,6 +117,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
113CONFIG_HAVE_KPROBES=y 117CONFIG_HAVE_KPROBES=y
114CONFIG_HAVE_KRETPROBES=y 118CONFIG_HAVE_KRETPROBES=y
115CONFIG_HAVE_ARCH_TRACEHOOK=y 119CONFIG_HAVE_ARCH_TRACEHOOK=y
120CONFIG_HAVE_DMA_ATTRS=y
116CONFIG_HAVE_CLK=y 121CONFIG_HAVE_CLK=y
117CONFIG_HAVE_DMA_API_DEBUG=y 122CONFIG_HAVE_DMA_API_DEBUG=y
118 123
@@ -139,14 +144,41 @@ CONFIG_LBDAF=y
139# IO Schedulers 144# IO Schedulers
140# 145#
141CONFIG_IOSCHED_NOOP=y 146CONFIG_IOSCHED_NOOP=y
142CONFIG_IOSCHED_AS=y
143CONFIG_IOSCHED_DEADLINE=y 147CONFIG_IOSCHED_DEADLINE=y
144CONFIG_IOSCHED_CFQ=y 148CONFIG_IOSCHED_CFQ=y
145CONFIG_DEFAULT_AS=y
146# CONFIG_DEFAULT_DEADLINE is not set 149# CONFIG_DEFAULT_DEADLINE is not set
147# CONFIG_DEFAULT_CFQ is not set 150CONFIG_DEFAULT_CFQ=y
148# CONFIG_DEFAULT_NOOP is not set 151# CONFIG_DEFAULT_NOOP is not set
149CONFIG_DEFAULT_IOSCHED="anticipatory" 152CONFIG_DEFAULT_IOSCHED="cfq"
153# CONFIG_INLINE_SPIN_TRYLOCK is not set
154# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
155# CONFIG_INLINE_SPIN_LOCK is not set
156# CONFIG_INLINE_SPIN_LOCK_BH is not set
157# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
158# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
159CONFIG_INLINE_SPIN_UNLOCK=y
160# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
161CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
162# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
163# CONFIG_INLINE_READ_TRYLOCK is not set
164# CONFIG_INLINE_READ_LOCK is not set
165# CONFIG_INLINE_READ_LOCK_BH is not set
166# CONFIG_INLINE_READ_LOCK_IRQ is not set
167# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
168CONFIG_INLINE_READ_UNLOCK=y
169# CONFIG_INLINE_READ_UNLOCK_BH is not set
170CONFIG_INLINE_READ_UNLOCK_IRQ=y
171# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
172# CONFIG_INLINE_WRITE_TRYLOCK is not set
173# CONFIG_INLINE_WRITE_LOCK is not set
174# CONFIG_INLINE_WRITE_LOCK_BH is not set
175# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
176# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
177CONFIG_INLINE_WRITE_UNLOCK=y
178# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
179CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
180# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
181# CONFIG_MUTEX_SPIN_ON_OWNER is not set
150# CONFIG_FREEZER is not set 182# CONFIG_FREEZER is not set
151 183
152# 184#
@@ -222,8 +254,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
222# CONFIG_PHYS_ADDR_T_64BIT is not set 254# CONFIG_PHYS_ADDR_T_64BIT is not set
223CONFIG_ZONE_DMA_FLAG=0 255CONFIG_ZONE_DMA_FLAG=0
224CONFIG_NR_QUICK=2 256CONFIG_NR_QUICK=2
225CONFIG_HAVE_MLOCK=y
226CONFIG_HAVE_MLOCKED_PAGE_BIT=y
227# CONFIG_KSM is not set 257# CONFIG_KSM is not set
228CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 258CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
229 259
@@ -311,7 +341,6 @@ CONFIG_GUSA=y
311CONFIG_ZERO_PAGE_OFFSET=0x00001000 341CONFIG_ZERO_PAGE_OFFSET=0x00001000
312CONFIG_BOOT_LINK_OFFSET=0x00800000 342CONFIG_BOOT_LINK_OFFSET=0x00800000
313CONFIG_ENTRY_OFFSET=0x00001000 343CONFIG_ENTRY_OFFSET=0x00001000
314# CONFIG_UBC_WAKEUP is not set
315# CONFIG_CMDLINE_OVERWRITE is not set 344# CONFIG_CMDLINE_OVERWRITE is not set
316# CONFIG_CMDLINE_EXTEND is not set 345# CONFIG_CMDLINE_EXTEND is not set
317 346
@@ -319,14 +348,12 @@ CONFIG_ENTRY_OFFSET=0x00001000
319# Bus options 348# Bus options
320# 349#
321CONFIG_PCI=y 350CONFIG_PCI=y
322CONFIG_SH_PCIDMA_NONCOHERENT=y
323# CONFIG_PCIEPORTBUS is not set 351# CONFIG_PCIEPORTBUS is not set
324# CONFIG_ARCH_SUPPORTS_MSI is not set 352# CONFIG_ARCH_SUPPORTS_MSI is not set
325CONFIG_PCI_LEGACY=y 353CONFIG_PCI_LEGACY=y
326# CONFIG_PCI_STUB is not set 354# CONFIG_PCI_STUB is not set
327# CONFIG_PCI_IOV is not set 355# CONFIG_PCI_IOV is not set
328CONFIG_PCCARD=y 356CONFIG_PCCARD=y
329# CONFIG_PCMCIA_DEBUG is not set
330CONFIG_PCMCIA=y 357CONFIG_PCMCIA=y
331CONFIG_PCMCIA_LOAD_CIS=y 358CONFIG_PCMCIA_LOAD_CIS=y
332CONFIG_PCMCIA_IOCTL=y 359CONFIG_PCMCIA_IOCTL=y
@@ -461,9 +488,6 @@ CONFIG_ATALK=m
461# CONFIG_AF_RXRPC is not set 488# CONFIG_AF_RXRPC is not set
462CONFIG_WIRELESS=y 489CONFIG_WIRELESS=y
463# CONFIG_CFG80211 is not set 490# CONFIG_CFG80211 is not set
464CONFIG_CFG80211_DEFAULT_PS_VALUE=0
465# CONFIG_WIRELESS_OLD_REGULATORY is not set
466# CONFIG_WIRELESS_EXT is not set
467# CONFIG_LIB80211 is not set 491# CONFIG_LIB80211 is not set
468 492
469# 493#
@@ -498,6 +522,10 @@ CONFIG_BLK_DEV=y
498# CONFIG_BLK_DEV_COW_COMMON is not set 522# CONFIG_BLK_DEV_COW_COMMON is not set
499CONFIG_BLK_DEV_LOOP=y 523CONFIG_BLK_DEV_LOOP=y
500# CONFIG_BLK_DEV_CRYPTOLOOP is not set 524# CONFIG_BLK_DEV_CRYPTOLOOP is not set
525
526#
527# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
528#
501# CONFIG_BLK_DEV_NBD is not set 529# CONFIG_BLK_DEV_NBD is not set
502# CONFIG_BLK_DEV_SX8 is not set 530# CONFIG_BLK_DEV_SX8 is not set
503# CONFIG_BLK_DEV_UB is not set 531# CONFIG_BLK_DEV_UB is not set
@@ -618,8 +646,11 @@ CONFIG_SCSI_LOWLEVEL=y
618# CONFIG_ISCSI_TCP is not set 646# CONFIG_ISCSI_TCP is not set
619# CONFIG_SCSI_CXGB3_ISCSI is not set 647# CONFIG_SCSI_CXGB3_ISCSI is not set
620# CONFIG_SCSI_BNX2_ISCSI is not set 648# CONFIG_SCSI_BNX2_ISCSI is not set
649# CONFIG_BE2ISCSI is not set
621# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 650# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
651# CONFIG_SCSI_HPSA is not set
622# CONFIG_SCSI_3W_9XXX is not set 652# CONFIG_SCSI_3W_9XXX is not set
653# CONFIG_SCSI_3W_SAS is not set
623# CONFIG_SCSI_ACARD is not set 654# CONFIG_SCSI_ACARD is not set
624# CONFIG_SCSI_AACRAID is not set 655# CONFIG_SCSI_AACRAID is not set
625# CONFIG_SCSI_AIC7XXX is not set 656# CONFIG_SCSI_AIC7XXX is not set
@@ -652,7 +683,9 @@ CONFIG_SCSI_LOWLEVEL=y
652# CONFIG_SCSI_NSP32 is not set 683# CONFIG_SCSI_NSP32 is not set
653# CONFIG_SCSI_DEBUG is not set 684# CONFIG_SCSI_DEBUG is not set
654# CONFIG_SCSI_PMCRAID is not set 685# CONFIG_SCSI_PMCRAID is not set
686# CONFIG_SCSI_PM8001 is not set
655# CONFIG_SCSI_SRP is not set 687# CONFIG_SCSI_SRP is not set
688# CONFIG_SCSI_BFA_FC is not set
656# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set 689# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
657# CONFIG_SCSI_DH is not set 690# CONFIG_SCSI_DH is not set
658# CONFIG_SCSI_OSD_INITIATOR is not set 691# CONFIG_SCSI_OSD_INITIATOR is not set
@@ -733,6 +766,7 @@ CONFIG_8139CP=y
733# CONFIG_SUNDANCE is not set 766# CONFIG_SUNDANCE is not set
734# CONFIG_TLAN is not set 767# CONFIG_TLAN is not set
735# CONFIG_KS8842 is not set 768# CONFIG_KS8842 is not set
769# CONFIG_KS8851_MLL is not set
736# CONFIG_VIA_RHINE is not set 770# CONFIG_VIA_RHINE is not set
737# CONFIG_SC92031 is not set 771# CONFIG_SC92031 is not set
738# CONFIG_ATL2 is not set 772# CONFIG_ATL2 is not set
@@ -781,8 +815,13 @@ CONFIG_CHELSIO_T3_DEPENDS=y
781# CONFIG_BE2NET is not set 815# CONFIG_BE2NET is not set
782# CONFIG_TR is not set 816# CONFIG_TR is not set
783CONFIG_WLAN=y 817CONFIG_WLAN=y
784# CONFIG_WLAN_PRE80211 is not set 818# CONFIG_PCMCIA_RAYCS is not set
785# CONFIG_WLAN_80211 is not set 819# CONFIG_ATMEL is not set
820# CONFIG_AIRO_CS is not set
821# CONFIG_PCMCIA_WL3501 is not set
822# CONFIG_PRISM54 is not set
823# CONFIG_USB_ZD1201 is not set
824# CONFIG_HOSTAP is not set
786 825
787# 826#
788# Enable WiMAX (Networking options) to see the WiMAX drivers 827# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -806,6 +845,7 @@ CONFIG_USB_RTL8150=m
806# CONFIG_NETCONSOLE is not set 845# CONFIG_NETCONSOLE is not set
807# CONFIG_NETPOLL is not set 846# CONFIG_NETPOLL is not set
808# CONFIG_NET_POLL_CONTROLLER is not set 847# CONFIG_NET_POLL_CONTROLLER is not set
848# CONFIG_VMXNET3 is not set
809# CONFIG_ISDN is not set 849# CONFIG_ISDN is not set
810# CONFIG_PHONE is not set 850# CONFIG_PHONE is not set
811 851
@@ -815,6 +855,7 @@ CONFIG_USB_RTL8150=m
815CONFIG_INPUT=y 855CONFIG_INPUT=y
816CONFIG_INPUT_FF_MEMLESS=m 856CONFIG_INPUT_FF_MEMLESS=m
817# CONFIG_INPUT_POLLDEV is not set 857# CONFIG_INPUT_POLLDEV is not set
858# CONFIG_INPUT_SPARSEKMAP is not set
818 859
819# 860#
820# Userland interfaces 861# Userland interfaces
@@ -933,6 +974,7 @@ CONFIG_SSB_POSSIBLE=y
933# 974#
934# CONFIG_MFD_CORE is not set 975# CONFIG_MFD_CORE is not set
935# CONFIG_MFD_SM501 is not set 976# CONFIG_MFD_SM501 is not set
977# CONFIG_MFD_SH_MOBILE_SDHI is not set
936# CONFIG_HTC_PASIC3 is not set 978# CONFIG_HTC_PASIC3 is not set
937# CONFIG_MFD_TMIO is not set 979# CONFIG_MFD_TMIO is not set
938# CONFIG_REGULATOR is not set 980# CONFIG_REGULATOR is not set
@@ -1371,10 +1413,11 @@ CONFIG_FRAME_WARN=1024
1371# CONFIG_DEBUG_FS is not set 1413# CONFIG_DEBUG_FS is not set
1372# CONFIG_HEADERS_CHECK is not set 1414# CONFIG_HEADERS_CHECK is not set
1373# CONFIG_DEBUG_KERNEL is not set 1415# CONFIG_DEBUG_KERNEL is not set
1374# CONFIG_DEBUG_BUGVERBOSE is not set 1416CONFIG_DEBUG_BUGVERBOSE=y
1375# CONFIG_DEBUG_MEMORY_INIT is not set 1417# CONFIG_DEBUG_MEMORY_INIT is not set
1376# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1418# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1377# CONFIG_LATENCYTOP is not set 1419# CONFIG_LATENCYTOP is not set
1420# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1378CONFIG_HAVE_FUNCTION_TRACER=y 1421CONFIG_HAVE_FUNCTION_TRACER=y
1379CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 1422CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1380CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 1423CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
@@ -1387,8 +1430,6 @@ CONFIG_TRACING_SUPPORT=y
1387# CONFIG_SAMPLES is not set 1430# CONFIG_SAMPLES is not set
1388CONFIG_HAVE_ARCH_KGDB=y 1431CONFIG_HAVE_ARCH_KGDB=y
1389CONFIG_SH_STANDARD_BIOS=y 1432CONFIG_SH_STANDARD_BIOS=y
1390# CONFIG_EARLY_SCIF_CONSOLE is not set
1391# CONFIG_EARLY_PRINTK is not set
1392# CONFIG_DWARF_UNWINDER is not set 1433# CONFIG_DWARF_UNWINDER is not set
1393 1434
1394# 1435#
@@ -1397,7 +1438,11 @@ CONFIG_SH_STANDARD_BIOS=y
1397# CONFIG_KEYS is not set 1438# CONFIG_KEYS is not set
1398# CONFIG_SECURITY is not set 1439# CONFIG_SECURITY is not set
1399# CONFIG_SECURITYFS is not set 1440# CONFIG_SECURITYFS is not set
1400# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1441# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1442# CONFIG_DEFAULT_SECURITY_SMACK is not set
1443# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1444CONFIG_DEFAULT_SECURITY_DAC=y
1445CONFIG_DEFAULT_SECURITY=""
1401CONFIG_CRYPTO=y 1446CONFIG_CRYPTO=y
1402 1447
1403# 1448#
diff --git a/arch/sh/configs/lboxre2_defconfig b/arch/sh/configs/lboxre2_defconfig
index ec0c0b432c74..f2f1f8c73b2f 100644
--- a/arch/sh/configs/lboxre2_defconfig
+++ b/arch/sh/configs/lboxre2_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:09:59 2009 4# Mon Jan 4 11:37:01 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_PCI=y 24CONFIG_SYS_SUPPORTS_PCI=y
24CONFIG_SYS_SUPPORTS_TMU=y 25CONFIG_SYS_SUPPORTS_TMU=y
25CONFIG_STACKTRACE_SUPPORT=y 26CONFIG_STACKTRACE_SUPPORT=y
@@ -30,6 +31,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
30CONFIG_ARCH_NO_VIRT_TO_BUS=y 31CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 32CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
34CONFIG_DMA_NONCOHERENT=y
33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 35CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
34CONFIG_CONSTRUCTORS=y 36CONFIG_CONSTRUCTORS=y
35 37
@@ -60,6 +62,7 @@ CONFIG_SYSVIPC_SYSCTL=y
60# 62#
61CONFIG_TREE_RCU=y 63CONFIG_TREE_RCU=y
62# CONFIG_TREE_PREEMPT_RCU is not set 64# CONFIG_TREE_PREEMPT_RCU is not set
65# CONFIG_TINY_RCU is not set
63# CONFIG_RCU_TRACE is not set 66# CONFIG_RCU_TRACE is not set
64CONFIG_RCU_FANOUT=32 67CONFIG_RCU_FANOUT=32
65# CONFIG_RCU_FANOUT_EXACT is not set 68# CONFIG_RCU_FANOUT_EXACT is not set
@@ -94,6 +97,7 @@ CONFIG_EVENTFD=y
94CONFIG_SHMEM=y 97CONFIG_SHMEM=y
95CONFIG_AIO=y 98CONFIG_AIO=y
96CONFIG_HAVE_PERF_EVENTS=y 99CONFIG_HAVE_PERF_EVENTS=y
100CONFIG_PERF_USE_VMALLOC=y
97 101
98# 102#
99# Kernel Performance Events And Counters 103# Kernel Performance Events And Counters
@@ -113,6 +117,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
113CONFIG_HAVE_KPROBES=y 117CONFIG_HAVE_KPROBES=y
114CONFIG_HAVE_KRETPROBES=y 118CONFIG_HAVE_KRETPROBES=y
115CONFIG_HAVE_ARCH_TRACEHOOK=y 119CONFIG_HAVE_ARCH_TRACEHOOK=y
120CONFIG_HAVE_DMA_ATTRS=y
116CONFIG_HAVE_CLK=y 121CONFIG_HAVE_CLK=y
117CONFIG_HAVE_DMA_API_DEBUG=y 122CONFIG_HAVE_DMA_API_DEBUG=y
118 123
@@ -139,14 +144,41 @@ CONFIG_LBDAF=y
139# IO Schedulers 144# IO Schedulers
140# 145#
141CONFIG_IOSCHED_NOOP=y 146CONFIG_IOSCHED_NOOP=y
142CONFIG_IOSCHED_AS=y
143CONFIG_IOSCHED_DEADLINE=y 147CONFIG_IOSCHED_DEADLINE=y
144CONFIG_IOSCHED_CFQ=y 148CONFIG_IOSCHED_CFQ=y
145CONFIG_DEFAULT_AS=y
146# CONFIG_DEFAULT_DEADLINE is not set 149# CONFIG_DEFAULT_DEADLINE is not set
147# CONFIG_DEFAULT_CFQ is not set 150CONFIG_DEFAULT_CFQ=y
148# CONFIG_DEFAULT_NOOP is not set 151# CONFIG_DEFAULT_NOOP is not set
149CONFIG_DEFAULT_IOSCHED="anticipatory" 152CONFIG_DEFAULT_IOSCHED="cfq"
153# CONFIG_INLINE_SPIN_TRYLOCK is not set
154# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
155# CONFIG_INLINE_SPIN_LOCK is not set
156# CONFIG_INLINE_SPIN_LOCK_BH is not set
157# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
158# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
159CONFIG_INLINE_SPIN_UNLOCK=y
160# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
161CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
162# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
163# CONFIG_INLINE_READ_TRYLOCK is not set
164# CONFIG_INLINE_READ_LOCK is not set
165# CONFIG_INLINE_READ_LOCK_BH is not set
166# CONFIG_INLINE_READ_LOCK_IRQ is not set
167# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
168CONFIG_INLINE_READ_UNLOCK=y
169# CONFIG_INLINE_READ_UNLOCK_BH is not set
170CONFIG_INLINE_READ_UNLOCK_IRQ=y
171# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
172# CONFIG_INLINE_WRITE_TRYLOCK is not set
173# CONFIG_INLINE_WRITE_LOCK is not set
174# CONFIG_INLINE_WRITE_LOCK_BH is not set
175# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
176# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
177CONFIG_INLINE_WRITE_UNLOCK=y
178# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
179CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
180# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
181# CONFIG_MUTEX_SPIN_ON_OWNER is not set
150# CONFIG_FREEZER is not set 182# CONFIG_FREEZER is not set
151 183
152# 184#
@@ -222,8 +254,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
222# CONFIG_PHYS_ADDR_T_64BIT is not set 254# CONFIG_PHYS_ADDR_T_64BIT is not set
223CONFIG_ZONE_DMA_FLAG=0 255CONFIG_ZONE_DMA_FLAG=0
224CONFIG_NR_QUICK=2 256CONFIG_NR_QUICK=2
225CONFIG_HAVE_MLOCK=y
226CONFIG_HAVE_MLOCKED_PAGE_BIT=y
227# CONFIG_KSM is not set 257# CONFIG_KSM is not set
228CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 258CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
229 259
@@ -311,7 +341,6 @@ CONFIG_GUSA=y
311CONFIG_ZERO_PAGE_OFFSET=0x00001000 341CONFIG_ZERO_PAGE_OFFSET=0x00001000
312CONFIG_BOOT_LINK_OFFSET=0x00800000 342CONFIG_BOOT_LINK_OFFSET=0x00800000
313CONFIG_ENTRY_OFFSET=0x00001000 343CONFIG_ENTRY_OFFSET=0x00001000
314# CONFIG_UBC_WAKEUP is not set
315CONFIG_CMDLINE_OVERWRITE=y 344CONFIG_CMDLINE_OVERWRITE=y
316# CONFIG_CMDLINE_EXTEND is not set 345# CONFIG_CMDLINE_EXTEND is not set
317CONFIG_CMDLINE="console=ttySC1,115200 root=/dev/sda1" 346CONFIG_CMDLINE="console=ttySC1,115200 root=/dev/sda1"
@@ -320,14 +349,12 @@ CONFIG_CMDLINE="console=ttySC1,115200 root=/dev/sda1"
320# Bus options 349# Bus options
321# 350#
322CONFIG_PCI=y 351CONFIG_PCI=y
323CONFIG_SH_PCIDMA_NONCOHERENT=y
324# CONFIG_PCIEPORTBUS is not set 352# CONFIG_PCIEPORTBUS is not set
325# CONFIG_ARCH_SUPPORTS_MSI is not set 353# CONFIG_ARCH_SUPPORTS_MSI is not set
326CONFIG_PCI_LEGACY=y 354CONFIG_PCI_LEGACY=y
327# CONFIG_PCI_STUB is not set 355# CONFIG_PCI_STUB is not set
328# CONFIG_PCI_IOV is not set 356# CONFIG_PCI_IOV is not set
329CONFIG_PCCARD=y 357CONFIG_PCCARD=y
330CONFIG_PCMCIA_DEBUG=y
331CONFIG_PCMCIA=y 358CONFIG_PCMCIA=y
332CONFIG_PCMCIA_LOAD_CIS=y 359CONFIG_PCMCIA_LOAD_CIS=y
333CONFIG_PCMCIA_IOCTL=y 360CONFIG_PCMCIA_IOCTL=y
@@ -459,9 +486,6 @@ CONFIG_NETFILTER_ADVANCED=y
459# CONFIG_AF_RXRPC is not set 486# CONFIG_AF_RXRPC is not set
460CONFIG_WIRELESS=y 487CONFIG_WIRELESS=y
461# CONFIG_CFG80211 is not set 488# CONFIG_CFG80211 is not set
462CONFIG_CFG80211_DEFAULT_PS_VALUE=0
463# CONFIG_WIRELESS_OLD_REGULATORY is not set
464# CONFIG_WIRELESS_EXT is not set
465# CONFIG_LIB80211 is not set 489# CONFIG_LIB80211 is not set
466 490
467# 491#
@@ -496,6 +520,10 @@ CONFIG_BLK_DEV=y
496# CONFIG_BLK_DEV_COW_COMMON is not set 520# CONFIG_BLK_DEV_COW_COMMON is not set
497CONFIG_BLK_DEV_LOOP=y 521CONFIG_BLK_DEV_LOOP=y
498# CONFIG_BLK_DEV_CRYPTOLOOP is not set 522# CONFIG_BLK_DEV_CRYPTOLOOP is not set
523
524#
525# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
526#
499# CONFIG_BLK_DEV_NBD is not set 527# CONFIG_BLK_DEV_NBD is not set
500# CONFIG_BLK_DEV_SX8 is not set 528# CONFIG_BLK_DEV_SX8 is not set
501CONFIG_BLK_DEV_RAM=y 529CONFIG_BLK_DEV_RAM=y
@@ -558,8 +586,11 @@ CONFIG_SCSI_LOWLEVEL=y
558# CONFIG_ISCSI_TCP is not set 586# CONFIG_ISCSI_TCP is not set
559# CONFIG_SCSI_CXGB3_ISCSI is not set 587# CONFIG_SCSI_CXGB3_ISCSI is not set
560# CONFIG_SCSI_BNX2_ISCSI is not set 588# CONFIG_SCSI_BNX2_ISCSI is not set
589# CONFIG_BE2ISCSI is not set
561# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 590# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
591# CONFIG_SCSI_HPSA is not set
562# CONFIG_SCSI_3W_9XXX is not set 592# CONFIG_SCSI_3W_9XXX is not set
593# CONFIG_SCSI_3W_SAS is not set
563# CONFIG_SCSI_ACARD is not set 594# CONFIG_SCSI_ACARD is not set
564# CONFIG_SCSI_AACRAID is not set 595# CONFIG_SCSI_AACRAID is not set
565# CONFIG_SCSI_AIC7XXX is not set 596# CONFIG_SCSI_AIC7XXX is not set
@@ -593,7 +624,9 @@ CONFIG_SCSI_LOWLEVEL=y
593# CONFIG_SCSI_NSP32 is not set 624# CONFIG_SCSI_NSP32 is not set
594# CONFIG_SCSI_DEBUG is not set 625# CONFIG_SCSI_DEBUG is not set
595# CONFIG_SCSI_PMCRAID is not set 626# CONFIG_SCSI_PMCRAID is not set
627# CONFIG_SCSI_PM8001 is not set
596# CONFIG_SCSI_SRP is not set 628# CONFIG_SCSI_SRP is not set
629# CONFIG_SCSI_BFA_FC is not set
597# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set 630# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
598# CONFIG_SCSI_DH is not set 631# CONFIG_SCSI_DH is not set
599# CONFIG_SCSI_OSD_INITIATOR is not set 632# CONFIG_SCSI_OSD_INITIATOR is not set
@@ -648,15 +681,16 @@ CONFIG_ATA_SFF=y
648# CONFIG_PATA_OPTI is not set 681# CONFIG_PATA_OPTI is not set
649# CONFIG_PATA_OPTIDMA is not set 682# CONFIG_PATA_OPTIDMA is not set
650# CONFIG_PATA_PCMCIA is not set 683# CONFIG_PATA_PCMCIA is not set
684# CONFIG_PATA_PDC2027X is not set
651# CONFIG_PATA_PDC_OLD is not set 685# CONFIG_PATA_PDC_OLD is not set
652# CONFIG_PATA_RADISYS is not set 686# CONFIG_PATA_RADISYS is not set
653# CONFIG_PATA_RDC is not set 687# CONFIG_PATA_RDC is not set
654# CONFIG_PATA_RZ1000 is not set 688# CONFIG_PATA_RZ1000 is not set
655# CONFIG_PATA_SC1200 is not set 689# CONFIG_PATA_SC1200 is not set
656# CONFIG_PATA_SERVERWORKS is not set 690# CONFIG_PATA_SERVERWORKS is not set
657# CONFIG_PATA_PDC2027X is not set
658# CONFIG_PATA_SIL680 is not set 691# CONFIG_PATA_SIL680 is not set
659# CONFIG_PATA_SIS is not set 692# CONFIG_PATA_SIS is not set
693# CONFIG_PATA_TOSHIBA is not set
660# CONFIG_PATA_VIA is not set 694# CONFIG_PATA_VIA is not set
661# CONFIG_PATA_WINBOND is not set 695# CONFIG_PATA_WINBOND is not set
662CONFIG_PATA_PLATFORM=y 696CONFIG_PATA_PLATFORM=y
@@ -732,6 +766,7 @@ CONFIG_8139TOO_TUNE_TWISTER=y
732# CONFIG_SUNDANCE is not set 766# CONFIG_SUNDANCE is not set
733# CONFIG_TLAN is not set 767# CONFIG_TLAN is not set
734# CONFIG_KS8842 is not set 768# CONFIG_KS8842 is not set
769# CONFIG_KS8851_MLL is not set
735# CONFIG_VIA_RHINE is not set 770# CONFIG_VIA_RHINE is not set
736# CONFIG_SC92031 is not set 771# CONFIG_SC92031 is not set
737# CONFIG_ATL2 is not set 772# CONFIG_ATL2 is not set
@@ -780,8 +815,12 @@ CONFIG_CHELSIO_T3_DEPENDS=y
780# CONFIG_BE2NET is not set 815# CONFIG_BE2NET is not set
781# CONFIG_TR is not set 816# CONFIG_TR is not set
782CONFIG_WLAN=y 817CONFIG_WLAN=y
783# CONFIG_WLAN_PRE80211 is not set 818# CONFIG_PCMCIA_RAYCS is not set
784# CONFIG_WLAN_80211 is not set 819# CONFIG_ATMEL is not set
820# CONFIG_AIRO_CS is not set
821# CONFIG_PCMCIA_WL3501 is not set
822# CONFIG_PRISM54 is not set
823# CONFIG_HOSTAP is not set
785 824
786# 825#
787# Enable WiMAX (Networking options) to see the WiMAX drivers 826# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -804,6 +843,7 @@ CONFIG_PCMCIA_PCNET=y
804# CONFIG_NETCONSOLE is not set 843# CONFIG_NETCONSOLE is not set
805# CONFIG_NETPOLL is not set 844# CONFIG_NETPOLL is not set
806# CONFIG_NET_POLL_CONTROLLER is not set 845# CONFIG_NET_POLL_CONTROLLER is not set
846# CONFIG_VMXNET3 is not set
807# CONFIG_ISDN is not set 847# CONFIG_ISDN is not set
808# CONFIG_PHONE is not set 848# CONFIG_PHONE is not set
809 849
@@ -813,6 +853,7 @@ CONFIG_PCMCIA_PCNET=y
813CONFIG_INPUT=y 853CONFIG_INPUT=y
814# CONFIG_INPUT_FF_MEMLESS is not set 854# CONFIG_INPUT_FF_MEMLESS is not set
815# CONFIG_INPUT_POLLDEV is not set 855# CONFIG_INPUT_POLLDEV is not set
856# CONFIG_INPUT_SPARSEKMAP is not set
816 857
817# 858#
818# Userland interfaces 859# Userland interfaces
@@ -931,6 +972,7 @@ CONFIG_SSB_POSSIBLE=y
931# 972#
932# CONFIG_MFD_CORE is not set 973# CONFIG_MFD_CORE is not set
933# CONFIG_MFD_SM501 is not set 974# CONFIG_MFD_SM501 is not set
975# CONFIG_MFD_SH_MOBILE_SDHI is not set
934# CONFIG_HTC_PASIC3 is not set 976# CONFIG_HTC_PASIC3 is not set
935# CONFIG_MFD_TMIO is not set 977# CONFIG_MFD_TMIO is not set
936# CONFIG_REGULATOR is not set 978# CONFIG_REGULATOR is not set
@@ -1020,7 +1062,9 @@ CONFIG_RTC_INTF_DEV=y
1020# CONFIG_RTC_DRV_M48T86 is not set 1062# CONFIG_RTC_DRV_M48T86 is not set
1021# CONFIG_RTC_DRV_M48T35 is not set 1063# CONFIG_RTC_DRV_M48T35 is not set
1022# CONFIG_RTC_DRV_M48T59 is not set 1064# CONFIG_RTC_DRV_M48T59 is not set
1065# CONFIG_RTC_DRV_MSM6242 is not set
1023# CONFIG_RTC_DRV_BQ4802 is not set 1066# CONFIG_RTC_DRV_BQ4802 is not set
1067# CONFIG_RTC_DRV_RP5C01 is not set
1024# CONFIG_RTC_DRV_V3020 is not set 1068# CONFIG_RTC_DRV_V3020 is not set
1025 1069
1026# 1070#
@@ -1195,10 +1239,11 @@ CONFIG_FRAME_WARN=1024
1195# CONFIG_DEBUG_FS is not set 1239# CONFIG_DEBUG_FS is not set
1196# CONFIG_HEADERS_CHECK is not set 1240# CONFIG_HEADERS_CHECK is not set
1197# CONFIG_DEBUG_KERNEL is not set 1241# CONFIG_DEBUG_KERNEL is not set
1198# CONFIG_DEBUG_BUGVERBOSE is not set 1242CONFIG_DEBUG_BUGVERBOSE=y
1199# CONFIG_DEBUG_MEMORY_INIT is not set 1243# CONFIG_DEBUG_MEMORY_INIT is not set
1200# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1244# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1201# CONFIG_LATENCYTOP is not set 1245# CONFIG_LATENCYTOP is not set
1246# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1202CONFIG_HAVE_FUNCTION_TRACER=y 1247CONFIG_HAVE_FUNCTION_TRACER=y
1203CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 1248CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1204CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 1249CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
@@ -1211,8 +1256,6 @@ CONFIG_TRACING_SUPPORT=y
1211# CONFIG_SAMPLES is not set 1256# CONFIG_SAMPLES is not set
1212CONFIG_HAVE_ARCH_KGDB=y 1257CONFIG_HAVE_ARCH_KGDB=y
1213CONFIG_SH_STANDARD_BIOS=y 1258CONFIG_SH_STANDARD_BIOS=y
1214# CONFIG_EARLY_SCIF_CONSOLE is not set
1215# CONFIG_EARLY_PRINTK is not set
1216# CONFIG_DWARF_UNWINDER is not set 1259# CONFIG_DWARF_UNWINDER is not set
1217 1260
1218# 1261#
@@ -1221,7 +1264,11 @@ CONFIG_SH_STANDARD_BIOS=y
1221# CONFIG_KEYS is not set 1264# CONFIG_KEYS is not set
1222# CONFIG_SECURITY is not set 1265# CONFIG_SECURITY is not set
1223# CONFIG_SECURITYFS is not set 1266# CONFIG_SECURITYFS is not set
1224# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1267# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1268# CONFIG_DEFAULT_SECURITY_SMACK is not set
1269# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1270CONFIG_DEFAULT_SECURITY_DAC=y
1271CONFIG_DEFAULT_SECURITY=""
1225CONFIG_CRYPTO=y 1272CONFIG_CRYPTO=y
1226 1273
1227# 1274#
diff --git a/arch/sh/configs/magicpanelr2_defconfig b/arch/sh/configs/magicpanelr2_defconfig
index 79091e3e32c4..a7a16ce357ad 100644
--- a/arch/sh/configs/magicpanelr2_defconfig
+++ b/arch/sh/configs/magicpanelr2_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:10:49 2009 4# Mon Jan 4 11:37:42 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -30,6 +30,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
30CONFIG_ARCH_NO_VIRT_TO_BUS=y 30CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 31CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
33CONFIG_DMA_NONCOHERENT=y
33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
34CONFIG_CONSTRUCTORS=y 35CONFIG_CONSTRUCTORS=y
35 36
@@ -63,6 +64,7 @@ CONFIG_AUDIT=y
63# 64#
64CONFIG_TREE_RCU=y 65CONFIG_TREE_RCU=y
65# CONFIG_TREE_PREEMPT_RCU is not set 66# CONFIG_TREE_PREEMPT_RCU is not set
67# CONFIG_TINY_RCU is not set
66# CONFIG_RCU_TRACE is not set 68# CONFIG_RCU_TRACE is not set
67CONFIG_RCU_FANOUT=32 69CONFIG_RCU_FANOUT=32
68# CONFIG_RCU_FANOUT_EXACT is not set 70# CONFIG_RCU_FANOUT_EXACT is not set
@@ -102,6 +104,7 @@ CONFIG_EVENTFD=y
102CONFIG_SHMEM=y 104CONFIG_SHMEM=y
103CONFIG_AIO=y 105CONFIG_AIO=y
104CONFIG_HAVE_PERF_EVENTS=y 106CONFIG_HAVE_PERF_EVENTS=y
107CONFIG_PERF_USE_VMALLOC=y
105 108
106# 109#
107# Kernel Performance Events And Counters 110# Kernel Performance Events And Counters
@@ -120,6 +123,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
120CONFIG_HAVE_KPROBES=y 123CONFIG_HAVE_KPROBES=y
121CONFIG_HAVE_KRETPROBES=y 124CONFIG_HAVE_KRETPROBES=y
122CONFIG_HAVE_ARCH_TRACEHOOK=y 125CONFIG_HAVE_ARCH_TRACEHOOK=y
126CONFIG_HAVE_DMA_ATTRS=y
123CONFIG_HAVE_CLK=y 127CONFIG_HAVE_CLK=y
124CONFIG_HAVE_DMA_API_DEBUG=y 128CONFIG_HAVE_DMA_API_DEBUG=y
125 129
@@ -146,14 +150,41 @@ CONFIG_LBDAF=y
146# IO Schedulers 150# IO Schedulers
147# 151#
148CONFIG_IOSCHED_NOOP=y 152CONFIG_IOSCHED_NOOP=y
149# CONFIG_IOSCHED_AS is not set
150# CONFIG_IOSCHED_DEADLINE is not set 153# CONFIG_IOSCHED_DEADLINE is not set
151# CONFIG_IOSCHED_CFQ is not set 154# CONFIG_IOSCHED_CFQ is not set
152# CONFIG_DEFAULT_AS is not set
153# CONFIG_DEFAULT_DEADLINE is not set 155# CONFIG_DEFAULT_DEADLINE is not set
154# CONFIG_DEFAULT_CFQ is not set 156# CONFIG_DEFAULT_CFQ is not set
155CONFIG_DEFAULT_NOOP=y 157CONFIG_DEFAULT_NOOP=y
156CONFIG_DEFAULT_IOSCHED="noop" 158CONFIG_DEFAULT_IOSCHED="noop"
159# CONFIG_INLINE_SPIN_TRYLOCK is not set
160# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
161# CONFIG_INLINE_SPIN_LOCK is not set
162# CONFIG_INLINE_SPIN_LOCK_BH is not set
163# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
164# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
165CONFIG_INLINE_SPIN_UNLOCK=y
166# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
167CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
168# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
169# CONFIG_INLINE_READ_TRYLOCK is not set
170# CONFIG_INLINE_READ_LOCK is not set
171# CONFIG_INLINE_READ_LOCK_BH is not set
172# CONFIG_INLINE_READ_LOCK_IRQ is not set
173# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
174CONFIG_INLINE_READ_UNLOCK=y
175# CONFIG_INLINE_READ_UNLOCK_BH is not set
176CONFIG_INLINE_READ_UNLOCK_IRQ=y
177# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
178# CONFIG_INLINE_WRITE_TRYLOCK is not set
179# CONFIG_INLINE_WRITE_LOCK is not set
180# CONFIG_INLINE_WRITE_LOCK_BH is not set
181# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
182# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
183CONFIG_INLINE_WRITE_UNLOCK=y
184# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
185CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
186# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
187# CONFIG_MUTEX_SPIN_ON_OWNER is not set
157# CONFIG_FREEZER is not set 188# CONFIG_FREEZER is not set
158 189
159# 190#
@@ -229,8 +260,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
229# CONFIG_PHYS_ADDR_T_64BIT is not set 260# CONFIG_PHYS_ADDR_T_64BIT is not set
230CONFIG_ZONE_DMA_FLAG=0 261CONFIG_ZONE_DMA_FLAG=0
231CONFIG_NR_QUICK=2 262CONFIG_NR_QUICK=2
232CONFIG_HAVE_MLOCK=y
233CONFIG_HAVE_MLOCKED_PAGE_BIT=y
234# CONFIG_KSM is not set 263# CONFIG_KSM is not set
235CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 264CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
236 265
@@ -283,8 +312,8 @@ CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
283# 312#
284# DMA support 313# DMA support
285# 314#
286CONFIG_SH_DMA_API=y
287CONFIG_SH_DMA=y 315CONFIG_SH_DMA=y
316CONFIG_SH_DMA_API=y
288CONFIG_NR_ONCHIP_DMA_CHANNELS=6 317CONFIG_NR_ONCHIP_DMA_CHANNELS=6
289# CONFIG_NR_DMA_CHANNELS_BOOL is not set 318# CONFIG_NR_DMA_CHANNELS_BOOL is not set
290 319
@@ -416,9 +445,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
416# CONFIG_AF_RXRPC is not set 445# CONFIG_AF_RXRPC is not set
417CONFIG_WIRELESS=y 446CONFIG_WIRELESS=y
418# CONFIG_CFG80211 is not set 447# CONFIG_CFG80211 is not set
419CONFIG_CFG80211_DEFAULT_PS_VALUE=0
420# CONFIG_WIRELESS_OLD_REGULATORY is not set
421# CONFIG_WIRELESS_EXT is not set
422# CONFIG_LIB80211 is not set 448# CONFIG_LIB80211 is not set
423 449
424# 450#
@@ -534,6 +560,10 @@ CONFIG_MTD_PHYSMAP=y
534CONFIG_BLK_DEV=y 560CONFIG_BLK_DEV=y
535# CONFIG_BLK_DEV_COW_COMMON is not set 561# CONFIG_BLK_DEV_COW_COMMON is not set
536# CONFIG_BLK_DEV_LOOP is not set 562# CONFIG_BLK_DEV_LOOP is not set
563
564#
565# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
566#
537# CONFIG_BLK_DEV_NBD is not set 567# CONFIG_BLK_DEV_NBD is not set
538CONFIG_BLK_DEV_RAM=y 568CONFIG_BLK_DEV_RAM=y
539CONFIG_BLK_DEV_RAM_COUNT=16 569CONFIG_BLK_DEV_RAM_COUNT=16
@@ -607,11 +637,11 @@ CONFIG_SMSC911X=y
607# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 637# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
608# CONFIG_B44 is not set 638# CONFIG_B44 is not set
609# CONFIG_KS8842 is not set 639# CONFIG_KS8842 is not set
640# CONFIG_KS8851_MLL is not set
610# CONFIG_NETDEV_1000 is not set 641# CONFIG_NETDEV_1000 is not set
611# CONFIG_NETDEV_10000 is not set 642# CONFIG_NETDEV_10000 is not set
612CONFIG_WLAN=y 643CONFIG_WLAN=y
613# CONFIG_WLAN_PRE80211 is not set 644# CONFIG_HOSTAP is not set
614# CONFIG_WLAN_80211 is not set
615 645
616# 646#
617# Enable WiMAX (Networking options) to see the WiMAX drivers 647# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -631,6 +661,7 @@ CONFIG_WLAN=y
631CONFIG_INPUT=y 661CONFIG_INPUT=y
632# CONFIG_INPUT_FF_MEMLESS is not set 662# CONFIG_INPUT_FF_MEMLESS is not set
633# CONFIG_INPUT_POLLDEV is not set 663# CONFIG_INPUT_POLLDEV is not set
664# CONFIG_INPUT_SPARSEKMAP is not set
634 665
635# 666#
636# Userland interfaces 667# Userland interfaces
@@ -675,6 +706,7 @@ CONFIG_SERIO=y
675CONFIG_SERIO_SERPORT=y 706CONFIG_SERIO_SERPORT=y
676CONFIG_SERIO_LIBPS2=y 707CONFIG_SERIO_LIBPS2=y
677# CONFIG_SERIO_RAW is not set 708# CONFIG_SERIO_RAW is not set
709# CONFIG_SERIO_ALTERA_PS2 is not set
678# CONFIG_GAMEPORT is not set 710# CONFIG_GAMEPORT is not set
679 711
680# 712#
@@ -766,6 +798,7 @@ CONFIG_SSB_POSSIBLE=y
766# 798#
767# CONFIG_MFD_CORE is not set 799# CONFIG_MFD_CORE is not set
768# CONFIG_MFD_SM501 is not set 800# CONFIG_MFD_SM501 is not set
801# CONFIG_MFD_SH_MOBILE_SDHI is not set
769# CONFIG_HTC_PASIC3 is not set 802# CONFIG_HTC_PASIC3 is not set
770# CONFIG_MFD_TMIO is not set 803# CONFIG_MFD_TMIO is not set
771# CONFIG_REGULATOR is not set 804# CONFIG_REGULATOR is not set
@@ -824,7 +857,9 @@ CONFIG_RTC_INTF_DEV=y
824# CONFIG_RTC_DRV_M48T86 is not set 857# CONFIG_RTC_DRV_M48T86 is not set
825# CONFIG_RTC_DRV_M48T35 is not set 858# CONFIG_RTC_DRV_M48T35 is not set
826# CONFIG_RTC_DRV_M48T59 is not set 859# CONFIG_RTC_DRV_M48T59 is not set
860# CONFIG_RTC_DRV_MSM6242 is not set
827# CONFIG_RTC_DRV_BQ4802 is not set 861# CONFIG_RTC_DRV_BQ4802 is not set
862# CONFIG_RTC_DRV_RP5C01 is not set
828# CONFIG_RTC_DRV_V3020 is not set 863# CONFIG_RTC_DRV_V3020 is not set
829 864
830# 865#
@@ -898,7 +933,6 @@ CONFIG_PROC_PAGE_MONITOR=y
898CONFIG_SYSFS=y 933CONFIG_SYSFS=y
899CONFIG_TMPFS=y 934CONFIG_TMPFS=y
900# CONFIG_TMPFS_POSIX_ACL is not set 935# CONFIG_TMPFS_POSIX_ACL is not set
901# CONFIG_HUGETLBFS is not set
902# CONFIG_HUGETLB_PAGE is not set 936# CONFIG_HUGETLB_PAGE is not set
903# CONFIG_CONFIGFS_FS is not set 937# CONFIG_CONFIGFS_FS is not set
904CONFIG_MISC_FILESYSTEMS=y 938CONFIG_MISC_FILESYSTEMS=y
@@ -1072,9 +1106,6 @@ CONFIG_BRANCH_PROFILE_NONE=y
1072CONFIG_HAVE_ARCH_KGDB=y 1106CONFIG_HAVE_ARCH_KGDB=y
1073# CONFIG_KGDB is not set 1107# CONFIG_KGDB is not set
1074# CONFIG_SH_STANDARD_BIOS is not set 1108# CONFIG_SH_STANDARD_BIOS is not set
1075CONFIG_EARLY_SCIF_CONSOLE=y
1076CONFIG_EARLY_SCIF_CONSOLE_PORT=0xa4430000
1077CONFIG_EARLY_PRINTK=y
1078# CONFIG_STACK_DEBUG is not set 1109# CONFIG_STACK_DEBUG is not set
1079# CONFIG_DEBUG_STACK_USAGE is not set 1110# CONFIG_DEBUG_STACK_USAGE is not set
1080# CONFIG_4KSTACKS is not set 1111# CONFIG_4KSTACKS is not set
@@ -1088,7 +1119,11 @@ CONFIG_DUMP_CODE=y
1088# CONFIG_KEYS is not set 1119# CONFIG_KEYS is not set
1089# CONFIG_SECURITY is not set 1120# CONFIG_SECURITY is not set
1090# CONFIG_SECURITYFS is not set 1121# CONFIG_SECURITYFS is not set
1091# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1122# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1123# CONFIG_DEFAULT_SECURITY_SMACK is not set
1124# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1125CONFIG_DEFAULT_SECURITY_DAC=y
1126CONFIG_DEFAULT_SECURITY=""
1092# CONFIG_CRYPTO is not set 1127# CONFIG_CRYPTO is not set
1093# CONFIG_BINARY_PRINTF is not set 1128# CONFIG_BINARY_PRINTF is not set
1094 1129
diff --git a/arch/sh/configs/microdev_defconfig b/arch/sh/configs/microdev_defconfig
index 6bb5976aff2a..7d43fabdc073 100644
--- a/arch/sh/configs/microdev_defconfig
+++ b/arch/sh/configs/microdev_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:14:35 2009 4# Mon Jan 4 11:40:41 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_TMU=y 24CONFIG_SYS_SUPPORTS_TMU=y
24CONFIG_STACKTRACE_SUPPORT=y 25CONFIG_STACKTRACE_SUPPORT=y
25CONFIG_LOCKDEP_SUPPORT=y 26CONFIG_LOCKDEP_SUPPORT=y
@@ -29,6 +30,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
29CONFIG_ARCH_NO_VIRT_TO_BUS=y 30CONFIG_ARCH_NO_VIRT_TO_BUS=y
30CONFIG_ARCH_HAS_DEFAULT_IDLE=y 31CONFIG_ARCH_HAS_DEFAULT_IDLE=y
31CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
33CONFIG_DMA_NONCOHERENT=y
32CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
33CONFIG_CONSTRUCTORS=y 35CONFIG_CONSTRUCTORS=y
34 36
@@ -60,6 +62,7 @@ CONFIG_BSD_PROCESS_ACCT=y
60# 62#
61CONFIG_TREE_RCU=y 63CONFIG_TREE_RCU=y
62# CONFIG_TREE_PREEMPT_RCU is not set 64# CONFIG_TREE_PREEMPT_RCU is not set
65# CONFIG_TINY_RCU is not set
63# CONFIG_RCU_TRACE is not set 66# CONFIG_RCU_TRACE is not set
64CONFIG_RCU_FANOUT=32 67CONFIG_RCU_FANOUT=32
65# CONFIG_RCU_FANOUT_EXACT is not set 68# CONFIG_RCU_FANOUT_EXACT is not set
@@ -98,6 +101,7 @@ CONFIG_EVENTFD=y
98CONFIG_SHMEM=y 101CONFIG_SHMEM=y
99CONFIG_AIO=y 102CONFIG_AIO=y
100CONFIG_HAVE_PERF_EVENTS=y 103CONFIG_HAVE_PERF_EVENTS=y
104CONFIG_PERF_USE_VMALLOC=y
101 105
102# 106#
103# Kernel Performance Events And Counters 107# Kernel Performance Events And Counters
@@ -115,6 +119,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
115CONFIG_HAVE_KPROBES=y 119CONFIG_HAVE_KPROBES=y
116CONFIG_HAVE_KRETPROBES=y 120CONFIG_HAVE_KRETPROBES=y
117CONFIG_HAVE_ARCH_TRACEHOOK=y 121CONFIG_HAVE_ARCH_TRACEHOOK=y
122CONFIG_HAVE_DMA_ATTRS=y
118CONFIG_HAVE_CLK=y 123CONFIG_HAVE_CLK=y
119CONFIG_HAVE_DMA_API_DEBUG=y 124CONFIG_HAVE_DMA_API_DEBUG=y
120 125
@@ -136,14 +141,41 @@ CONFIG_LBDAF=y
136# IO Schedulers 141# IO Schedulers
137# 142#
138CONFIG_IOSCHED_NOOP=y 143CONFIG_IOSCHED_NOOP=y
139CONFIG_IOSCHED_AS=y
140CONFIG_IOSCHED_DEADLINE=y 144CONFIG_IOSCHED_DEADLINE=y
141CONFIG_IOSCHED_CFQ=y 145CONFIG_IOSCHED_CFQ=y
142CONFIG_DEFAULT_AS=y
143# CONFIG_DEFAULT_DEADLINE is not set 146# CONFIG_DEFAULT_DEADLINE is not set
144# CONFIG_DEFAULT_CFQ is not set 147CONFIG_DEFAULT_CFQ=y
145# CONFIG_DEFAULT_NOOP is not set 148# CONFIG_DEFAULT_NOOP is not set
146CONFIG_DEFAULT_IOSCHED="anticipatory" 149CONFIG_DEFAULT_IOSCHED="cfq"
150# CONFIG_INLINE_SPIN_TRYLOCK is not set
151# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
152# CONFIG_INLINE_SPIN_LOCK is not set
153# CONFIG_INLINE_SPIN_LOCK_BH is not set
154# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
155# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
156# CONFIG_INLINE_SPIN_UNLOCK is not set
157# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
158# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
159# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
160# CONFIG_INLINE_READ_TRYLOCK is not set
161# CONFIG_INLINE_READ_LOCK is not set
162# CONFIG_INLINE_READ_LOCK_BH is not set
163# CONFIG_INLINE_READ_LOCK_IRQ is not set
164# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
165# CONFIG_INLINE_READ_UNLOCK is not set
166# CONFIG_INLINE_READ_UNLOCK_BH is not set
167# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
168# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
169# CONFIG_INLINE_WRITE_TRYLOCK is not set
170# CONFIG_INLINE_WRITE_LOCK is not set
171# CONFIG_INLINE_WRITE_LOCK_BH is not set
172# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
173# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
174# CONFIG_INLINE_WRITE_UNLOCK is not set
175# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
176# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
177# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
178# CONFIG_MUTEX_SPIN_ON_OWNER is not set
147# CONFIG_FREEZER is not set 179# CONFIG_FREEZER is not set
148 180
149# 181#
@@ -225,8 +257,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
225# CONFIG_PHYS_ADDR_T_64BIT is not set 257# CONFIG_PHYS_ADDR_T_64BIT is not set
226CONFIG_ZONE_DMA_FLAG=0 258CONFIG_ZONE_DMA_FLAG=0
227CONFIG_NR_QUICK=2 259CONFIG_NR_QUICK=2
228CONFIG_HAVE_MLOCK=y
229CONFIG_HAVE_MLOCKED_PAGE_BIT=y
230# CONFIG_KSM is not set 260# CONFIG_KSM is not set
231CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 261CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
232 262
@@ -272,8 +302,8 @@ CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
272# 302#
273# DMA support 303# DMA support
274# 304#
275CONFIG_SH_DMA_API=y
276CONFIG_SH_DMA=y 305CONFIG_SH_DMA=y
306CONFIG_SH_DMA_API=y
277CONFIG_NR_ONCHIP_DMA_CHANNELS=6 307CONFIG_NR_ONCHIP_DMA_CHANNELS=6
278# CONFIG_NR_DMA_CHANNELS_BOOL is not set 308# CONFIG_NR_DMA_CHANNELS_BOOL is not set
279 309
@@ -312,7 +342,6 @@ CONFIG_GUSA=y
312CONFIG_ZERO_PAGE_OFFSET=0x00001000 342CONFIG_ZERO_PAGE_OFFSET=0x00001000
313CONFIG_BOOT_LINK_OFFSET=0x00800000 343CONFIG_BOOT_LINK_OFFSET=0x00800000
314CONFIG_ENTRY_OFFSET=0x00001000 344CONFIG_ENTRY_OFFSET=0x00001000
315# CONFIG_UBC_WAKEUP is not set
316CONFIG_CMDLINE_OVERWRITE=y 345CONFIG_CMDLINE_OVERWRITE=y
317# CONFIG_CMDLINE_EXTEND is not set 346# CONFIG_CMDLINE_EXTEND is not set
318CONFIG_CMDLINE="console=ttySC0,115200 root=/dev/hda1" 347CONFIG_CMDLINE="console=ttySC0,115200 root=/dev/hda1"
@@ -412,9 +441,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
412# CONFIG_AF_RXRPC is not set 441# CONFIG_AF_RXRPC is not set
413CONFIG_WIRELESS=y 442CONFIG_WIRELESS=y
414# CONFIG_CFG80211 is not set 443# CONFIG_CFG80211 is not set
415CONFIG_CFG80211_DEFAULT_PS_VALUE=0
416# CONFIG_WIRELESS_OLD_REGULATORY is not set
417# CONFIG_WIRELESS_EXT is not set
418# CONFIG_LIB80211 is not set 444# CONFIG_LIB80211 is not set
419 445
420# 446#
@@ -443,6 +469,10 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
443CONFIG_BLK_DEV=y 469CONFIG_BLK_DEV=y
444# CONFIG_BLK_DEV_COW_COMMON is not set 470# CONFIG_BLK_DEV_COW_COMMON is not set
445# CONFIG_BLK_DEV_LOOP is not set 471# CONFIG_BLK_DEV_LOOP is not set
472
473#
474# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
475#
446# CONFIG_BLK_DEV_NBD is not set 476# CONFIG_BLK_DEV_NBD is not set
447CONFIG_BLK_DEV_RAM=y 477CONFIG_BLK_DEV_RAM=y
448CONFIG_BLK_DEV_RAM_COUNT=16 478CONFIG_BLK_DEV_RAM_COUNT=16
@@ -517,11 +547,11 @@ CONFIG_SMC91X=y
517# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 547# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
518# CONFIG_B44 is not set 548# CONFIG_B44 is not set
519# CONFIG_KS8842 is not set 549# CONFIG_KS8842 is not set
550# CONFIG_KS8851_MLL is not set
520CONFIG_NETDEV_1000=y 551CONFIG_NETDEV_1000=y
521CONFIG_NETDEV_10000=y 552CONFIG_NETDEV_10000=y
522CONFIG_WLAN=y 553CONFIG_WLAN=y
523# CONFIG_WLAN_PRE80211 is not set 554# CONFIG_HOSTAP is not set
524# CONFIG_WLAN_80211 is not set
525 555
526# 556#
527# Enable WiMAX (Networking options) to see the WiMAX drivers 557# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -616,6 +646,7 @@ CONFIG_SSB_POSSIBLE=y
616# 646#
617# CONFIG_MFD_CORE is not set 647# CONFIG_MFD_CORE is not set
618# CONFIG_MFD_SM501 is not set 648# CONFIG_MFD_SM501 is not set
649# CONFIG_MFD_SH_MOBILE_SDHI is not set
619# CONFIG_HTC_PASIC3 is not set 650# CONFIG_HTC_PASIC3 is not set
620# CONFIG_MFD_TMIO is not set 651# CONFIG_MFD_TMIO is not set
621# CONFIG_REGULATOR is not set 652# CONFIG_REGULATOR is not set
@@ -835,10 +866,11 @@ CONFIG_FRAME_WARN=1024
835# CONFIG_DEBUG_FS is not set 866# CONFIG_DEBUG_FS is not set
836# CONFIG_HEADERS_CHECK is not set 867# CONFIG_HEADERS_CHECK is not set
837# CONFIG_DEBUG_KERNEL is not set 868# CONFIG_DEBUG_KERNEL is not set
838# CONFIG_DEBUG_BUGVERBOSE is not set 869CONFIG_DEBUG_BUGVERBOSE=y
839# CONFIG_DEBUG_MEMORY_INIT is not set 870# CONFIG_DEBUG_MEMORY_INIT is not set
840# CONFIG_RCU_CPU_STALL_DETECTOR is not set 871# CONFIG_RCU_CPU_STALL_DETECTOR is not set
841# CONFIG_LATENCYTOP is not set 872# CONFIG_LATENCYTOP is not set
873# CONFIG_SYSCTL_SYSCALL_CHECK is not set
842CONFIG_HAVE_FUNCTION_TRACER=y 874CONFIG_HAVE_FUNCTION_TRACER=y
843CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 875CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
844CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 876CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
@@ -851,7 +883,6 @@ CONFIG_TRACING_SUPPORT=y
851# CONFIG_SAMPLES is not set 883# CONFIG_SAMPLES is not set
852CONFIG_HAVE_ARCH_KGDB=y 884CONFIG_HAVE_ARCH_KGDB=y
853# CONFIG_SH_STANDARD_BIOS is not set 885# CONFIG_SH_STANDARD_BIOS is not set
854# CONFIG_EARLY_SCIF_CONSOLE is not set
855# CONFIG_DWARF_UNWINDER is not set 886# CONFIG_DWARF_UNWINDER is not set
856 887
857# 888#
@@ -860,7 +891,11 @@ CONFIG_HAVE_ARCH_KGDB=y
860# CONFIG_KEYS is not set 891# CONFIG_KEYS is not set
861# CONFIG_SECURITY is not set 892# CONFIG_SECURITY is not set
862# CONFIG_SECURITYFS is not set 893# CONFIG_SECURITYFS is not set
863# CONFIG_SECURITY_FILE_CAPABILITIES is not set 894# CONFIG_DEFAULT_SECURITY_SELINUX is not set
895# CONFIG_DEFAULT_SECURITY_SMACK is not set
896# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
897CONFIG_DEFAULT_SECURITY_DAC=y
898CONFIG_DEFAULT_SECURITY=""
864CONFIG_CRYPTO=y 899CONFIG_CRYPTO=y
865 900
866# 901#
diff --git a/arch/sh/configs/migor_defconfig b/arch/sh/configs/migor_defconfig
index 65018283c3a8..d2b183117771 100644
--- a/arch/sh/configs/migor_defconfig
+++ b/arch/sh/configs/migor_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:17:41 2009 4# Mon Jan 4 11:41:41 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21CONFIG_ARCH_SUSPEND_POSSIBLE=y 21CONFIG_ARCH_SUSPEND_POSSIBLE=y
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_NUMA=y 24CONFIG_SYS_SUPPORTS_NUMA=y
24CONFIG_SYS_SUPPORTS_CMT=y 25CONFIG_SYS_SUPPORTS_CMT=y
25CONFIG_SYS_SUPPORTS_TMU=y 26CONFIG_SYS_SUPPORTS_TMU=y
@@ -31,6 +32,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
31CONFIG_ARCH_NO_VIRT_TO_BUS=y 32CONFIG_ARCH_NO_VIRT_TO_BUS=y
32CONFIG_ARCH_HAS_DEFAULT_IDLE=y 33CONFIG_ARCH_HAS_DEFAULT_IDLE=y
33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 34CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
35CONFIG_DMA_NONCOHERENT=y
34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 36CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
35CONFIG_CONSTRUCTORS=y 37CONFIG_CONSTRUCTORS=y
36 38
@@ -61,6 +63,7 @@ CONFIG_SYSVIPC_SYSCTL=y
61# 63#
62CONFIG_TREE_RCU=y 64CONFIG_TREE_RCU=y
63# CONFIG_TREE_PREEMPT_RCU is not set 65# CONFIG_TREE_PREEMPT_RCU is not set
66# CONFIG_TINY_RCU is not set
64# CONFIG_RCU_TRACE is not set 67# CONFIG_RCU_TRACE is not set
65CONFIG_RCU_FANOUT=32 68CONFIG_RCU_FANOUT=32
66# CONFIG_RCU_FANOUT_EXACT is not set 69# CONFIG_RCU_FANOUT_EXACT is not set
@@ -100,6 +103,7 @@ CONFIG_EVENTFD=y
100CONFIG_SHMEM=y 103CONFIG_SHMEM=y
101CONFIG_AIO=y 104CONFIG_AIO=y
102CONFIG_HAVE_PERF_EVENTS=y 105CONFIG_HAVE_PERF_EVENTS=y
106CONFIG_PERF_USE_VMALLOC=y
103 107
104# 108#
105# Kernel Performance Events And Counters 109# Kernel Performance Events And Counters
@@ -121,6 +125,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
121CONFIG_HAVE_KPROBES=y 125CONFIG_HAVE_KPROBES=y
122CONFIG_HAVE_KRETPROBES=y 126CONFIG_HAVE_KRETPROBES=y
123CONFIG_HAVE_ARCH_TRACEHOOK=y 127CONFIG_HAVE_ARCH_TRACEHOOK=y
128CONFIG_HAVE_DMA_ATTRS=y
124CONFIG_HAVE_CLK=y 129CONFIG_HAVE_CLK=y
125CONFIG_HAVE_DMA_API_DEBUG=y 130CONFIG_HAVE_DMA_API_DEBUG=y
126 131
@@ -147,14 +152,41 @@ CONFIG_LBDAF=y
147# IO Schedulers 152# IO Schedulers
148# 153#
149CONFIG_IOSCHED_NOOP=y 154CONFIG_IOSCHED_NOOP=y
150CONFIG_IOSCHED_AS=y
151CONFIG_IOSCHED_DEADLINE=y 155CONFIG_IOSCHED_DEADLINE=y
152CONFIG_IOSCHED_CFQ=y 156CONFIG_IOSCHED_CFQ=y
153CONFIG_DEFAULT_AS=y
154# CONFIG_DEFAULT_DEADLINE is not set 157# CONFIG_DEFAULT_DEADLINE is not set
155# CONFIG_DEFAULT_CFQ is not set 158CONFIG_DEFAULT_CFQ=y
156# CONFIG_DEFAULT_NOOP is not set 159# CONFIG_DEFAULT_NOOP is not set
157CONFIG_DEFAULT_IOSCHED="anticipatory" 160CONFIG_DEFAULT_IOSCHED="cfq"
161# CONFIG_INLINE_SPIN_TRYLOCK is not set
162# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
163# CONFIG_INLINE_SPIN_LOCK is not set
164# CONFIG_INLINE_SPIN_LOCK_BH is not set
165# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
166# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
167CONFIG_INLINE_SPIN_UNLOCK=y
168# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
169CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
170# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
171# CONFIG_INLINE_READ_TRYLOCK is not set
172# CONFIG_INLINE_READ_LOCK is not set
173# CONFIG_INLINE_READ_LOCK_BH is not set
174# CONFIG_INLINE_READ_LOCK_IRQ is not set
175# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
176CONFIG_INLINE_READ_UNLOCK=y
177# CONFIG_INLINE_READ_UNLOCK_BH is not set
178CONFIG_INLINE_READ_UNLOCK_IRQ=y
179# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
180# CONFIG_INLINE_WRITE_TRYLOCK is not set
181# CONFIG_INLINE_WRITE_LOCK is not set
182# CONFIG_INLINE_WRITE_LOCK_BH is not set
183# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
184# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
185CONFIG_INLINE_WRITE_UNLOCK=y
186# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
187CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
188# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
189# CONFIG_MUTEX_SPIN_ON_OWNER is not set
158CONFIG_FREEZER=y 190CONFIG_FREEZER=y
159 191
160# 192#
@@ -240,8 +272,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
240# CONFIG_PHYS_ADDR_T_64BIT is not set 272# CONFIG_PHYS_ADDR_T_64BIT is not set
241CONFIG_ZONE_DMA_FLAG=0 273CONFIG_ZONE_DMA_FLAG=0
242CONFIG_NR_QUICK=2 274CONFIG_NR_QUICK=2
243CONFIG_HAVE_MLOCK=y
244CONFIG_HAVE_MLOCKED_PAGE_BIT=y
245# CONFIG_KSM is not set 275# CONFIG_KSM is not set
246CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 276CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
247 277
@@ -277,7 +307,6 @@ CONFIG_SH_MIGOR_QVGA=y
277# 307#
278CONFIG_SH_TIMER_TMU=y 308CONFIG_SH_TIMER_TMU=y
279# CONFIG_SH_TIMER_CMT is not set 309# CONFIG_SH_TIMER_CMT is not set
280CONFIG_SH_PCLK_FREQ=33333333
281CONFIG_SH_CLK_CPG=y 310CONFIG_SH_CLK_CPG=y
282# CONFIG_NO_HZ is not set 311# CONFIG_NO_HZ is not set
283# CONFIG_HIGH_RES_TIMERS is not set 312# CONFIG_HIGH_RES_TIMERS is not set
@@ -433,10 +462,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
433# CONFIG_AF_RXRPC is not set 462# CONFIG_AF_RXRPC is not set
434CONFIG_WIRELESS=y 463CONFIG_WIRELESS=y
435# CONFIG_CFG80211 is not set 464# CONFIG_CFG80211 is not set
436CONFIG_CFG80211_DEFAULT_PS_VALUE=0
437# CONFIG_WIRELESS_OLD_REGULATORY is not set
438CONFIG_WIRELESS_EXT=y
439CONFIG_WIRELESS_EXT_SYSFS=y
440# CONFIG_LIB80211 is not set 465# CONFIG_LIB80211 is not set
441 466
442# 467#
@@ -554,6 +579,10 @@ CONFIG_MTD_NAND_PLATFORM=y
554CONFIG_BLK_DEV=y 579CONFIG_BLK_DEV=y
555# CONFIG_BLK_DEV_COW_COMMON is not set 580# CONFIG_BLK_DEV_COW_COMMON is not set
556# CONFIG_BLK_DEV_LOOP is not set 581# CONFIG_BLK_DEV_LOOP is not set
582
583#
584# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
585#
557# CONFIG_BLK_DEV_NBD is not set 586# CONFIG_BLK_DEV_NBD is not set
558CONFIG_BLK_DEV_RAM=y 587CONFIG_BLK_DEV_RAM=y
559CONFIG_BLK_DEV_RAM_COUNT=16 588CONFIG_BLK_DEV_RAM_COUNT=16
@@ -563,9 +592,11 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
563# CONFIG_ATA_OVER_ETH is not set 592# CONFIG_ATA_OVER_ETH is not set
564# CONFIG_BLK_DEV_HD is not set 593# CONFIG_BLK_DEV_HD is not set
565CONFIG_MISC_DEVICES=y 594CONFIG_MISC_DEVICES=y
595# CONFIG_AD525X_DPOT is not set
566# CONFIG_ICS932S401 is not set 596# CONFIG_ICS932S401 is not set
567# CONFIG_ENCLOSURE_SERVICES is not set 597# CONFIG_ENCLOSURE_SERVICES is not set
568# CONFIG_ISL29003 is not set 598# CONFIG_ISL29003 is not set
599# CONFIG_DS1682 is not set
569# CONFIG_C2PORT is not set 600# CONFIG_C2PORT is not set
570 601
571# 602#
@@ -646,11 +677,11 @@ CONFIG_SMC91X=y
646# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 677# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
647# CONFIG_B44 is not set 678# CONFIG_B44 is not set
648# CONFIG_KS8842 is not set 679# CONFIG_KS8842 is not set
680# CONFIG_KS8851_MLL is not set
649# CONFIG_NETDEV_1000 is not set 681# CONFIG_NETDEV_1000 is not set
650# CONFIG_NETDEV_10000 is not set 682# CONFIG_NETDEV_10000 is not set
651CONFIG_WLAN=y 683CONFIG_WLAN=y
652# CONFIG_WLAN_PRE80211 is not set 684# CONFIG_HOSTAP is not set
653# CONFIG_WLAN_80211 is not set
654 685
655# 686#
656# Enable WiMAX (Networking options) to see the WiMAX drivers 687# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -670,6 +701,7 @@ CONFIG_WLAN=y
670CONFIG_INPUT=y 701CONFIG_INPUT=y
671# CONFIG_INPUT_FF_MEMLESS is not set 702# CONFIG_INPUT_FF_MEMLESS is not set
672# CONFIG_INPUT_POLLDEV is not set 703# CONFIG_INPUT_POLLDEV is not set
704# CONFIG_INPUT_SPARSEKMAP is not set
673 705
674# 706#
675# Userland interfaces 707# Userland interfaces
@@ -776,7 +808,6 @@ CONFIG_I2C_SH_MOBILE=y
776# 808#
777# Miscellaneous I2C Chip support 809# Miscellaneous I2C Chip support
778# 810#
779# CONFIG_DS1682 is not set
780# CONFIG_SENSORS_TSL2550 is not set 811# CONFIG_SENSORS_TSL2550 is not set
781# CONFIG_I2C_DEBUG_CORE is not set 812# CONFIG_I2C_DEBUG_CORE is not set
782# CONFIG_I2C_DEBUG_ALGO is not set 813# CONFIG_I2C_DEBUG_ALGO is not set
@@ -831,16 +862,19 @@ CONFIG_SSB_POSSIBLE=y
831# 862#
832# CONFIG_MFD_CORE is not set 863# CONFIG_MFD_CORE is not set
833# CONFIG_MFD_SM501 is not set 864# CONFIG_MFD_SM501 is not set
865# CONFIG_MFD_SH_MOBILE_SDHI is not set
834# CONFIG_HTC_PASIC3 is not set 866# CONFIG_HTC_PASIC3 is not set
835# CONFIG_TPS65010 is not set 867# CONFIG_TPS65010 is not set
836# CONFIG_TWL4030_CORE is not set 868# CONFIG_TWL4030_CORE is not set
837# CONFIG_MFD_TMIO is not set 869# CONFIG_MFD_TMIO is not set
838# CONFIG_PMIC_DA903X is not set 870# CONFIG_PMIC_DA903X is not set
871# CONFIG_PMIC_ADP5520 is not set
839# CONFIG_MFD_WM8400 is not set 872# CONFIG_MFD_WM8400 is not set
840# CONFIG_MFD_WM831X is not set 873# CONFIG_MFD_WM831X is not set
841# CONFIG_MFD_WM8350_I2C is not set 874# CONFIG_MFD_WM8350_I2C is not set
842# CONFIG_MFD_PCF50633 is not set 875# CONFIG_MFD_PCF50633 is not set
843# CONFIG_AB3100_CORE is not set 876# CONFIG_AB3100_CORE is not set
877# CONFIG_MFD_88PM8607 is not set
844# CONFIG_REGULATOR is not set 878# CONFIG_REGULATOR is not set
845CONFIG_MEDIA_SUPPORT=y 879CONFIG_MEDIA_SUPPORT=y
846 880
@@ -857,6 +891,8 @@ CONFIG_VIDEO_MEDIA=y
857# 891#
858# Multimedia drivers 892# Multimedia drivers
859# 893#
894CONFIG_IR_CORE=y
895CONFIG_VIDEO_IR=y
860# CONFIG_MEDIA_ATTACH is not set 896# CONFIG_MEDIA_ATTACH is not set
861CONFIG_MEDIA_TUNER=y 897CONFIG_MEDIA_TUNER=y
862# CONFIG_MEDIA_TUNER_CUSTOMISE is not set 898# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
@@ -876,6 +912,7 @@ CONFIG_VIDEO_CAPTURE_DRIVERS=y
876# CONFIG_VIDEO_ADV_DEBUG is not set 912# CONFIG_VIDEO_ADV_DEBUG is not set
877# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set 913# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
878CONFIG_VIDEO_HELPER_CHIPS_AUTO=y 914CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
915CONFIG_VIDEO_IR_I2C=y
879# CONFIG_VIDEO_VIVI is not set 916# CONFIG_VIDEO_VIVI is not set
880# CONFIG_VIDEO_SAA5246A is not set 917# CONFIG_VIDEO_SAA5246A is not set
881# CONFIG_VIDEO_SAA5249 is not set 918# CONFIG_VIDEO_SAA5249 is not set
@@ -883,10 +920,13 @@ CONFIG_SOC_CAMERA=y
883# CONFIG_SOC_CAMERA_MT9M001 is not set 920# CONFIG_SOC_CAMERA_MT9M001 is not set
884# CONFIG_SOC_CAMERA_MT9M111 is not set 921# CONFIG_SOC_CAMERA_MT9M111 is not set
885# CONFIG_SOC_CAMERA_MT9T031 is not set 922# CONFIG_SOC_CAMERA_MT9T031 is not set
923# CONFIG_SOC_CAMERA_MT9T112 is not set
886# CONFIG_SOC_CAMERA_MT9V022 is not set 924# CONFIG_SOC_CAMERA_MT9V022 is not set
925# CONFIG_SOC_CAMERA_RJ54N1 is not set
887CONFIG_SOC_CAMERA_TW9910=y 926CONFIG_SOC_CAMERA_TW9910=y
888# CONFIG_SOC_CAMERA_PLATFORM is not set 927# CONFIG_SOC_CAMERA_PLATFORM is not set
889CONFIG_SOC_CAMERA_OV772X=y 928CONFIG_SOC_CAMERA_OV772X=y
929# CONFIG_SOC_CAMERA_OV9640 is not set
890CONFIG_VIDEO_SH_MOBILE_CEU=y 930CONFIG_VIDEO_SH_MOBILE_CEU=y
891# CONFIG_RADIO_ADAPTERS is not set 931# CONFIG_RADIO_ADAPTERS is not set
892# CONFIG_DAB is not set 932# CONFIG_DAB is not set
@@ -1009,10 +1049,12 @@ CONFIG_USB_GADGET_DUALSPEED=y
1009# CONFIG_USB_ETH is not set 1049# CONFIG_USB_ETH is not set
1010# CONFIG_USB_GADGETFS is not set 1050# CONFIG_USB_GADGETFS is not set
1011# CONFIG_USB_FILE_STORAGE is not set 1051# CONFIG_USB_FILE_STORAGE is not set
1012CONFIG_USB_G_SERIAL=y 1052# CONFIG_USB_MASS_STORAGE is not set
1053CONFIG_USB_G_SERIAL=m
1013# CONFIG_USB_MIDI_GADGET is not set 1054# CONFIG_USB_MIDI_GADGET is not set
1014# CONFIG_USB_G_PRINTER is not set 1055# CONFIG_USB_G_PRINTER is not set
1015# CONFIG_USB_CDC_COMPOSITE is not set 1056# CONFIG_USB_CDC_COMPOSITE is not set
1057# CONFIG_USB_G_MULTI is not set
1016 1058
1017# 1059#
1018# OTG and related infrastructure 1060# OTG and related infrastructure
@@ -1051,6 +1093,7 @@ CONFIG_RTC_DRV_RS5C372=y
1051# CONFIG_RTC_DRV_PCF8563 is not set 1093# CONFIG_RTC_DRV_PCF8563 is not set
1052# CONFIG_RTC_DRV_PCF8583 is not set 1094# CONFIG_RTC_DRV_PCF8583 is not set
1053# CONFIG_RTC_DRV_M41T80 is not set 1095# CONFIG_RTC_DRV_M41T80 is not set
1096# CONFIG_RTC_DRV_BQ32K is not set
1054# CONFIG_RTC_DRV_S35390A is not set 1097# CONFIG_RTC_DRV_S35390A is not set
1055# CONFIG_RTC_DRV_FM3130 is not set 1098# CONFIG_RTC_DRV_FM3130 is not set
1056# CONFIG_RTC_DRV_RX8581 is not set 1099# CONFIG_RTC_DRV_RX8581 is not set
@@ -1071,7 +1114,9 @@ CONFIG_RTC_DRV_RS5C372=y
1071# CONFIG_RTC_DRV_M48T86 is not set 1114# CONFIG_RTC_DRV_M48T86 is not set
1072# CONFIG_RTC_DRV_M48T35 is not set 1115# CONFIG_RTC_DRV_M48T35 is not set
1073# CONFIG_RTC_DRV_M48T59 is not set 1116# CONFIG_RTC_DRV_M48T59 is not set
1117# CONFIG_RTC_DRV_MSM6242 is not set
1074# CONFIG_RTC_DRV_BQ4802 is not set 1118# CONFIG_RTC_DRV_BQ4802 is not set
1119# CONFIG_RTC_DRV_RP5C01 is not set
1075# CONFIG_RTC_DRV_V3020 is not set 1120# CONFIG_RTC_DRV_V3020 is not set
1076 1121
1077# 1122#
@@ -1098,6 +1143,7 @@ CONFIG_UIO_PDRV_GENIRQ=y
1098# CONFIG_EXT2_FS is not set 1143# CONFIG_EXT2_FS is not set
1099# CONFIG_EXT3_FS is not set 1144# CONFIG_EXT3_FS is not set
1100# CONFIG_EXT4_FS is not set 1145# CONFIG_EXT4_FS is not set
1146CONFIG_EXT4_USE_FOR_EXT23=y
1101# CONFIG_REISERFS_FS is not set 1147# CONFIG_REISERFS_FS is not set
1102# CONFIG_JFS_FS is not set 1148# CONFIG_JFS_FS is not set
1103# CONFIG_FS_POSIX_ACL is not set 1149# CONFIG_FS_POSIX_ACL is not set
@@ -1206,10 +1252,11 @@ CONFIG_DEBUG_FS=y
1206# CONFIG_HEADERS_CHECK is not set 1252# CONFIG_HEADERS_CHECK is not set
1207# CONFIG_DEBUG_KERNEL is not set 1253# CONFIG_DEBUG_KERNEL is not set
1208CONFIG_STACKTRACE=y 1254CONFIG_STACKTRACE=y
1209# CONFIG_DEBUG_BUGVERBOSE is not set 1255CONFIG_DEBUG_BUGVERBOSE=y
1210# CONFIG_DEBUG_MEMORY_INIT is not set 1256# CONFIG_DEBUG_MEMORY_INIT is not set
1211# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1257# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1212# CONFIG_LATENCYTOP is not set 1258# CONFIG_LATENCYTOP is not set
1259# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1213CONFIG_NOP_TRACER=y 1260CONFIG_NOP_TRACER=y
1214CONFIG_HAVE_FUNCTION_TRACER=y 1261CONFIG_HAVE_FUNCTION_TRACER=y
1215CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 1262CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
@@ -1229,9 +1276,6 @@ CONFIG_TRACING_SUPPORT=y
1229# CONFIG_SAMPLES is not set 1276# CONFIG_SAMPLES is not set
1230CONFIG_HAVE_ARCH_KGDB=y 1277CONFIG_HAVE_ARCH_KGDB=y
1231# CONFIG_SH_STANDARD_BIOS is not set 1278# CONFIG_SH_STANDARD_BIOS is not set
1232CONFIG_EARLY_SCIF_CONSOLE=y
1233CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe00000
1234CONFIG_EARLY_PRINTK=y
1235# CONFIG_DWARF_UNWINDER is not set 1279# CONFIG_DWARF_UNWINDER is not set
1236 1280
1237# 1281#
@@ -1240,7 +1284,11 @@ CONFIG_EARLY_PRINTK=y
1240# CONFIG_KEYS is not set 1284# CONFIG_KEYS is not set
1241# CONFIG_SECURITY is not set 1285# CONFIG_SECURITY is not set
1242# CONFIG_SECURITYFS is not set 1286# CONFIG_SECURITYFS is not set
1243# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1287# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1288# CONFIG_DEFAULT_SECURITY_SMACK is not set
1289# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1290CONFIG_DEFAULT_SECURITY_DAC=y
1291CONFIG_DEFAULT_SECURITY=""
1244CONFIG_CRYPTO=y 1292CONFIG_CRYPTO=y
1245 1293
1246# 1294#
diff --git a/arch/sh/configs/polaris_defconfig b/arch/sh/configs/polaris_defconfig
index 7fc1952419aa..d50c0314281e 100644
--- a/arch/sh/configs/polaris_defconfig
+++ b/arch/sh/configs/polaris_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:20:53 2009 4# Mon Jan 4 11:45:25 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -29,6 +29,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
29CONFIG_ARCH_NO_VIRT_TO_BUS=y 29CONFIG_ARCH_NO_VIRT_TO_BUS=y
30CONFIG_ARCH_HAS_DEFAULT_IDLE=y 30CONFIG_ARCH_HAS_DEFAULT_IDLE=y
31CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 31CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
32CONFIG_DMA_NONCOHERENT=y
32CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
33CONFIG_CONSTRUCTORS=y 34CONFIG_CONSTRUCTORS=y
34 35
@@ -63,6 +64,7 @@ CONFIG_AUDIT=y
63# 64#
64CONFIG_TREE_RCU=y 65CONFIG_TREE_RCU=y
65# CONFIG_TREE_PREEMPT_RCU is not set 66# CONFIG_TREE_PREEMPT_RCU is not set
67# CONFIG_TINY_RCU is not set
66# CONFIG_RCU_TRACE is not set 68# CONFIG_RCU_TRACE is not set
67CONFIG_RCU_FANOUT=32 69CONFIG_RCU_FANOUT=32
68# CONFIG_RCU_FANOUT_EXACT is not set 70# CONFIG_RCU_FANOUT_EXACT is not set
@@ -102,6 +104,7 @@ CONFIG_EVENTFD=y
102CONFIG_SHMEM=y 104CONFIG_SHMEM=y
103CONFIG_AIO=y 105CONFIG_AIO=y
104CONFIG_HAVE_PERF_EVENTS=y 106CONFIG_HAVE_PERF_EVENTS=y
107CONFIG_PERF_USE_VMALLOC=y
105 108
106# 109#
107# Kernel Performance Events And Counters 110# Kernel Performance Events And Counters
@@ -120,6 +123,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
120CONFIG_HAVE_KPROBES=y 123CONFIG_HAVE_KPROBES=y
121CONFIG_HAVE_KRETPROBES=y 124CONFIG_HAVE_KRETPROBES=y
122CONFIG_HAVE_ARCH_TRACEHOOK=y 125CONFIG_HAVE_ARCH_TRACEHOOK=y
126CONFIG_HAVE_DMA_ATTRS=y
123CONFIG_HAVE_CLK=y 127CONFIG_HAVE_CLK=y
124CONFIG_HAVE_DMA_API_DEBUG=y 128CONFIG_HAVE_DMA_API_DEBUG=y
125 129
@@ -146,14 +150,41 @@ CONFIG_LBDAF=y
146# IO Schedulers 150# IO Schedulers
147# 151#
148CONFIG_IOSCHED_NOOP=y 152CONFIG_IOSCHED_NOOP=y
149# CONFIG_IOSCHED_AS is not set
150# CONFIG_IOSCHED_DEADLINE is not set 153# CONFIG_IOSCHED_DEADLINE is not set
151CONFIG_IOSCHED_CFQ=y 154CONFIG_IOSCHED_CFQ=y
152# CONFIG_DEFAULT_AS is not set
153# CONFIG_DEFAULT_DEADLINE is not set 155# CONFIG_DEFAULT_DEADLINE is not set
154CONFIG_DEFAULT_CFQ=y 156CONFIG_DEFAULT_CFQ=y
155# CONFIG_DEFAULT_NOOP is not set 157# CONFIG_DEFAULT_NOOP is not set
156CONFIG_DEFAULT_IOSCHED="cfq" 158CONFIG_DEFAULT_IOSCHED="cfq"
159# CONFIG_INLINE_SPIN_TRYLOCK is not set
160# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
161# CONFIG_INLINE_SPIN_LOCK is not set
162# CONFIG_INLINE_SPIN_LOCK_BH is not set
163# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
164# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
165# CONFIG_INLINE_SPIN_UNLOCK is not set
166# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
167# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
168# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
169# CONFIG_INLINE_READ_TRYLOCK is not set
170# CONFIG_INLINE_READ_LOCK is not set
171# CONFIG_INLINE_READ_LOCK_BH is not set
172# CONFIG_INLINE_READ_LOCK_IRQ is not set
173# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
174# CONFIG_INLINE_READ_UNLOCK is not set
175# CONFIG_INLINE_READ_UNLOCK_BH is not set
176# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
177# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
178# CONFIG_INLINE_WRITE_TRYLOCK is not set
179# CONFIG_INLINE_WRITE_LOCK is not set
180# CONFIG_INLINE_WRITE_LOCK_BH is not set
181# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
182# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
183# CONFIG_INLINE_WRITE_UNLOCK is not set
184# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
185# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
186# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
187# CONFIG_MUTEX_SPIN_ON_OWNER is not set
157# CONFIG_FREEZER is not set 188# CONFIG_FREEZER is not set
158 189
159# 190#
@@ -225,12 +256,10 @@ CONFIG_FLATMEM=y
225CONFIG_FLAT_NODE_MEM_MAP=y 256CONFIG_FLAT_NODE_MEM_MAP=y
226CONFIG_SPARSEMEM_STATIC=y 257CONFIG_SPARSEMEM_STATIC=y
227CONFIG_PAGEFLAGS_EXTENDED=y 258CONFIG_PAGEFLAGS_EXTENDED=y
228CONFIG_SPLIT_PTLOCK_CPUS=4 259CONFIG_SPLIT_PTLOCK_CPUS=999999
229# CONFIG_PHYS_ADDR_T_64BIT is not set 260# CONFIG_PHYS_ADDR_T_64BIT is not set
230CONFIG_ZONE_DMA_FLAG=0 261CONFIG_ZONE_DMA_FLAG=0
231CONFIG_NR_QUICK=2 262CONFIG_NR_QUICK=2
232CONFIG_HAVE_MLOCK=y
233CONFIG_HAVE_MLOCKED_PAGE_BIT=y
234# CONFIG_KSM is not set 263# CONFIG_KSM is not set
235CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 264CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
236 265
@@ -279,8 +308,8 @@ CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
279# 308#
280# DMA support 309# DMA support
281# 310#
282CONFIG_SH_DMA_API=y
283CONFIG_SH_DMA=y 311CONFIG_SH_DMA=y
312CONFIG_SH_DMA_API=y
284CONFIG_NR_ONCHIP_DMA_CHANNELS=6 313CONFIG_NR_ONCHIP_DMA_CHANNELS=6
285# CONFIG_NR_DMA_CHANNELS_BOOL is not set 314# CONFIG_NR_DMA_CHANNELS_BOOL is not set
286 315
@@ -409,7 +438,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
409# CONFIG_IRDA is not set 438# CONFIG_IRDA is not set
410# CONFIG_BT is not set 439# CONFIG_BT is not set
411# CONFIG_AF_RXRPC is not set 440# CONFIG_AF_RXRPC is not set
412# CONFIG_WIRELESS is not set 441CONFIG_WIRELESS=y
442# CONFIG_CFG80211 is not set
443# CONFIG_LIB80211 is not set
444
445#
446# CFG80211 needs to be enabled for MAC80211
447#
413# CONFIG_WIMAX is not set 448# CONFIG_WIMAX is not set
414# CONFIG_RFKILL is not set 449# CONFIG_RFKILL is not set
415# CONFIG_NET_9P is not set 450# CONFIG_NET_9P is not set
@@ -525,6 +560,10 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
525CONFIG_BLK_DEV=y 560CONFIG_BLK_DEV=y
526# CONFIG_BLK_DEV_COW_COMMON is not set 561# CONFIG_BLK_DEV_COW_COMMON is not set
527# CONFIG_BLK_DEV_LOOP is not set 562# CONFIG_BLK_DEV_LOOP is not set
563
564#
565# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
566#
528# CONFIG_BLK_DEV_NBD is not set 567# CONFIG_BLK_DEV_NBD is not set
529# CONFIG_BLK_DEV_RAM is not set 568# CONFIG_BLK_DEV_RAM is not set
530# CONFIG_CDROM_PKTCDVD is not set 569# CONFIG_CDROM_PKTCDVD is not set
@@ -595,11 +634,11 @@ CONFIG_SMSC911X=y
595# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 634# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
596# CONFIG_B44 is not set 635# CONFIG_B44 is not set
597# CONFIG_KS8842 is not set 636# CONFIG_KS8842 is not set
637# CONFIG_KS8851_MLL is not set
598# CONFIG_NETDEV_1000 is not set 638# CONFIG_NETDEV_1000 is not set
599# CONFIG_NETDEV_10000 is not set 639# CONFIG_NETDEV_10000 is not set
600CONFIG_WLAN=y 640CONFIG_WLAN=y
601# CONFIG_WLAN_PRE80211 is not set 641# CONFIG_HOSTAP is not set
602# CONFIG_WLAN_80211 is not set
603 642
604# 643#
605# Enable WiMAX (Networking options) to see the WiMAX drivers 644# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -619,6 +658,7 @@ CONFIG_WLAN=y
619CONFIG_INPUT=y 658CONFIG_INPUT=y
620# CONFIG_INPUT_FF_MEMLESS is not set 659# CONFIG_INPUT_FF_MEMLESS is not set
621# CONFIG_INPUT_POLLDEV is not set 660# CONFIG_INPUT_POLLDEV is not set
661# CONFIG_INPUT_SPARSEKMAP is not set
622 662
623# 663#
624# Userland interfaces 664# Userland interfaces
@@ -657,7 +697,6 @@ CONFIG_SERIAL_NONSTANDARD=y
657# CONFIG_N_HDLC is not set 697# CONFIG_N_HDLC is not set
658# CONFIG_RISCOM8 is not set 698# CONFIG_RISCOM8 is not set
659# CONFIG_SPECIALIX is not set 699# CONFIG_SPECIALIX is not set
660# CONFIG_RIO is not set
661# CONFIG_STALDRV is not set 700# CONFIG_STALDRV is not set
662 701
663# 702#
@@ -705,6 +744,7 @@ CONFIG_SSB_POSSIBLE=y
705# 744#
706# CONFIG_MFD_CORE is not set 745# CONFIG_MFD_CORE is not set
707# CONFIG_MFD_SM501 is not set 746# CONFIG_MFD_SM501 is not set
747# CONFIG_MFD_SH_MOBILE_SDHI is not set
708# CONFIG_HTC_PASIC3 is not set 748# CONFIG_HTC_PASIC3 is not set
709# CONFIG_MFD_TMIO is not set 749# CONFIG_MFD_TMIO is not set
710# CONFIG_REGULATOR is not set 750# CONFIG_REGULATOR is not set
@@ -764,7 +804,9 @@ CONFIG_RTC_INTF_DEV=y
764# CONFIG_RTC_DRV_M48T86 is not set 804# CONFIG_RTC_DRV_M48T86 is not set
765# CONFIG_RTC_DRV_M48T35 is not set 805# CONFIG_RTC_DRV_M48T35 is not set
766# CONFIG_RTC_DRV_M48T59 is not set 806# CONFIG_RTC_DRV_M48T59 is not set
807# CONFIG_RTC_DRV_MSM6242 is not set
767# CONFIG_RTC_DRV_BQ4802 is not set 808# CONFIG_RTC_DRV_BQ4802 is not set
809# CONFIG_RTC_DRV_RP5C01 is not set
768# CONFIG_RTC_DRV_V3020 is not set 810# CONFIG_RTC_DRV_V3020 is not set
769 811
770# 812#
@@ -787,6 +829,7 @@ CONFIG_RTC_DRV_SH=y
787# CONFIG_EXT2_FS is not set 829# CONFIG_EXT2_FS is not set
788# CONFIG_EXT3_FS is not set 830# CONFIG_EXT3_FS is not set
789# CONFIG_EXT4_FS is not set 831# CONFIG_EXT4_FS is not set
832CONFIG_EXT4_USE_FOR_EXT23=y
790# CONFIG_REISERFS_FS is not set 833# CONFIG_REISERFS_FS is not set
791# CONFIG_JFS_FS is not set 834# CONFIG_JFS_FS is not set
792# CONFIG_FS_POSIX_ACL is not set 835# CONFIG_FS_POSIX_ACL is not set
@@ -833,7 +876,6 @@ CONFIG_PROC_PAGE_MONITOR=y
833CONFIG_SYSFS=y 876CONFIG_SYSFS=y
834CONFIG_TMPFS=y 877CONFIG_TMPFS=y
835# CONFIG_TMPFS_POSIX_ACL is not set 878# CONFIG_TMPFS_POSIX_ACL is not set
836# CONFIG_HUGETLBFS is not set
837# CONFIG_HUGETLB_PAGE is not set 879# CONFIG_HUGETLB_PAGE is not set
838# CONFIG_CONFIGFS_FS is not set 880# CONFIG_CONFIGFS_FS is not set
839CONFIG_MISC_FILESYSTEMS=y 881CONFIG_MISC_FILESYSTEMS=y
@@ -977,9 +1019,6 @@ CONFIG_BRANCH_PROFILE_NONE=y
977CONFIG_HAVE_ARCH_KGDB=y 1019CONFIG_HAVE_ARCH_KGDB=y
978# CONFIG_KGDB is not set 1020# CONFIG_KGDB is not set
979# CONFIG_SH_STANDARD_BIOS is not set 1021# CONFIG_SH_STANDARD_BIOS is not set
980CONFIG_EARLY_SCIF_CONSOLE=y
981CONFIG_EARLY_SCIF_CONSOLE_PORT=0xa4000150
982CONFIG_EARLY_PRINTK=y
983# CONFIG_STACK_DEBUG is not set 1022# CONFIG_STACK_DEBUG is not set
984# CONFIG_DEBUG_STACK_USAGE is not set 1023# CONFIG_DEBUG_STACK_USAGE is not set
985# CONFIG_4KSTACKS is not set 1024# CONFIG_4KSTACKS is not set
@@ -993,7 +1032,11 @@ CONFIG_DUMP_CODE=y
993# CONFIG_KEYS is not set 1032# CONFIG_KEYS is not set
994# CONFIG_SECURITY is not set 1033# CONFIG_SECURITY is not set
995# CONFIG_SECURITYFS is not set 1034# CONFIG_SECURITYFS is not set
996# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1035# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1036# CONFIG_DEFAULT_SECURITY_SMACK is not set
1037# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1038CONFIG_DEFAULT_SECURITY_DAC=y
1039CONFIG_DEFAULT_SECURITY=""
997# CONFIG_CRYPTO is not set 1040# CONFIG_CRYPTO is not set
998# CONFIG_BINARY_PRINTF is not set 1041# CONFIG_BINARY_PRINTF is not set
999 1042
diff --git a/arch/sh/configs/r7780mp_defconfig b/arch/sh/configs/r7780mp_defconfig
index 903b021e8d93..efda63d4070a 100644
--- a/arch/sh/configs/r7780mp_defconfig
+++ b/arch/sh/configs/r7780mp_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:24:31 2009 4# Mon Jan 4 13:16:13 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_PCI=y 24CONFIG_SYS_SUPPORTS_PCI=y
24CONFIG_SYS_SUPPORTS_TMU=y 25CONFIG_SYS_SUPPORTS_TMU=y
25CONFIG_STACKTRACE_SUPPORT=y 26CONFIG_STACKTRACE_SUPPORT=y
@@ -31,6 +32,7 @@ CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 32CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
33CONFIG_IO_TRAPPED=y 34CONFIG_IO_TRAPPED=y
35CONFIG_DMA_NONCOHERENT=y
34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 36CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
35CONFIG_CONSTRUCTORS=y 37CONFIG_CONSTRUCTORS=y
36 38
@@ -63,6 +65,7 @@ CONFIG_BSD_PROCESS_ACCT=y
63# 65#
64CONFIG_TREE_RCU=y 66CONFIG_TREE_RCU=y
65# CONFIG_TREE_PREEMPT_RCU is not set 67# CONFIG_TREE_PREEMPT_RCU is not set
68# CONFIG_TINY_RCU is not set
66# CONFIG_RCU_TRACE is not set 69# CONFIG_RCU_TRACE is not set
67CONFIG_RCU_FANOUT=32 70CONFIG_RCU_FANOUT=32
68# CONFIG_RCU_FANOUT_EXACT is not set 71# CONFIG_RCU_FANOUT_EXACT is not set
@@ -103,6 +106,7 @@ CONFIG_EVENTFD=y
103CONFIG_SHMEM=y 106CONFIG_SHMEM=y
104CONFIG_AIO=y 107CONFIG_AIO=y
105CONFIG_HAVE_PERF_EVENTS=y 108CONFIG_HAVE_PERF_EVENTS=y
109CONFIG_PERF_USE_VMALLOC=y
106 110
107# 111#
108# Kernel Performance Events And Counters 112# Kernel Performance Events And Counters
@@ -110,6 +114,7 @@ CONFIG_HAVE_PERF_EVENTS=y
110CONFIG_PERF_EVENTS=y 114CONFIG_PERF_EVENTS=y
111CONFIG_EVENT_PROFILE=y 115CONFIG_EVENT_PROFILE=y
112# CONFIG_PERF_COUNTERS is not set 116# CONFIG_PERF_COUNTERS is not set
117# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
113CONFIG_VM_EVENT_COUNTERS=y 118CONFIG_VM_EVENT_COUNTERS=y
114CONFIG_PCI_QUIRKS=y 119CONFIG_PCI_QUIRKS=y
115CONFIG_COMPAT_BRK=y 120CONFIG_COMPAT_BRK=y
@@ -125,6 +130,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
125CONFIG_HAVE_KPROBES=y 130CONFIG_HAVE_KPROBES=y
126CONFIG_HAVE_KRETPROBES=y 131CONFIG_HAVE_KRETPROBES=y
127CONFIG_HAVE_ARCH_TRACEHOOK=y 132CONFIG_HAVE_ARCH_TRACEHOOK=y
133CONFIG_HAVE_DMA_ATTRS=y
128CONFIG_HAVE_CLK=y 134CONFIG_HAVE_CLK=y
129CONFIG_HAVE_DMA_API_DEBUG=y 135CONFIG_HAVE_DMA_API_DEBUG=y
130 136
@@ -135,6 +141,7 @@ CONFIG_HAVE_DMA_API_DEBUG=y
135# CONFIG_SLOW_WORK is not set 141# CONFIG_SLOW_WORK is not set
136CONFIG_HAVE_GENERIC_DMA_COHERENT=y 142CONFIG_HAVE_GENERIC_DMA_COHERENT=y
137CONFIG_SLABINFO=y 143CONFIG_SLABINFO=y
144CONFIG_RT_MUTEXES=y
138CONFIG_BASE_SMALL=0 145CONFIG_BASE_SMALL=0
139CONFIG_MODULES=y 146CONFIG_MODULES=y
140# CONFIG_MODULE_FORCE_LOAD is not set 147# CONFIG_MODULE_FORCE_LOAD is not set
@@ -151,14 +158,41 @@ CONFIG_LBDAF=y
151# IO Schedulers 158# IO Schedulers
152# 159#
153CONFIG_IOSCHED_NOOP=y 160CONFIG_IOSCHED_NOOP=y
154# CONFIG_IOSCHED_AS is not set
155# CONFIG_IOSCHED_DEADLINE is not set 161# CONFIG_IOSCHED_DEADLINE is not set
156# CONFIG_IOSCHED_CFQ is not set 162# CONFIG_IOSCHED_CFQ is not set
157# CONFIG_DEFAULT_AS is not set
158# CONFIG_DEFAULT_DEADLINE is not set 163# CONFIG_DEFAULT_DEADLINE is not set
159# CONFIG_DEFAULT_CFQ is not set 164# CONFIG_DEFAULT_CFQ is not set
160CONFIG_DEFAULT_NOOP=y 165CONFIG_DEFAULT_NOOP=y
161CONFIG_DEFAULT_IOSCHED="noop" 166CONFIG_DEFAULT_IOSCHED="noop"
167# CONFIG_INLINE_SPIN_TRYLOCK is not set
168# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
169# CONFIG_INLINE_SPIN_LOCK is not set
170# CONFIG_INLINE_SPIN_LOCK_BH is not set
171# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
172# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
173# CONFIG_INLINE_SPIN_UNLOCK is not set
174# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
175# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
176# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
177# CONFIG_INLINE_READ_TRYLOCK is not set
178# CONFIG_INLINE_READ_LOCK is not set
179# CONFIG_INLINE_READ_LOCK_BH is not set
180# CONFIG_INLINE_READ_LOCK_IRQ is not set
181# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
182# CONFIG_INLINE_READ_UNLOCK is not set
183# CONFIG_INLINE_READ_UNLOCK_BH is not set
184# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
185# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
186# CONFIG_INLINE_WRITE_TRYLOCK is not set
187# CONFIG_INLINE_WRITE_LOCK is not set
188# CONFIG_INLINE_WRITE_LOCK_BH is not set
189# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
190# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
191# CONFIG_INLINE_WRITE_UNLOCK is not set
192# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
193# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
194# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
195# CONFIG_MUTEX_SPIN_ON_OWNER is not set
162# CONFIG_FREEZER is not set 196# CONFIG_FREEZER is not set
163 197
164# 198#
@@ -245,8 +279,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
245# CONFIG_PHYS_ADDR_T_64BIT is not set 279# CONFIG_PHYS_ADDR_T_64BIT is not set
246CONFIG_ZONE_DMA_FLAG=0 280CONFIG_ZONE_DMA_FLAG=0
247CONFIG_NR_QUICK=2 281CONFIG_NR_QUICK=2
248CONFIG_HAVE_MLOCK=y
249CONFIG_HAVE_MLOCKED_PAGE_BIT=y
250# CONFIG_KSM is not set 282# CONFIG_KSM is not set
251CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 283CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
252 284
@@ -342,7 +374,6 @@ CONFIG_CMDLINE="console=ttySC0,115200 root=/dev/sda1"
342# Bus options 374# Bus options
343# 375#
344CONFIG_PCI=y 376CONFIG_PCI=y
345CONFIG_SH_PCIDMA_NONCOHERENT=y
346# CONFIG_PCIEPORTBUS is not set 377# CONFIG_PCIEPORTBUS is not set
347# CONFIG_ARCH_SUPPORTS_MSI is not set 378# CONFIG_ARCH_SUPPORTS_MSI is not set
348CONFIG_PCI_LEGACY=y 379CONFIG_PCI_LEGACY=y
@@ -449,10 +480,6 @@ CONFIG_LLC=m
449# CONFIG_AF_RXRPC is not set 480# CONFIG_AF_RXRPC is not set
450CONFIG_WIRELESS=y 481CONFIG_WIRELESS=y
451# CONFIG_CFG80211 is not set 482# CONFIG_CFG80211 is not set
452CONFIG_CFG80211_DEFAULT_PS_VALUE=0
453# CONFIG_WIRELESS_OLD_REGULATORY is not set
454CONFIG_WIRELESS_EXT=y
455CONFIG_WIRELESS_EXT_SYSFS=y
456# CONFIG_LIB80211 is not set 483# CONFIG_LIB80211 is not set
457 484
458# 485#
@@ -535,7 +562,6 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
535CONFIG_MTD_PHYSMAP=y 562CONFIG_MTD_PHYSMAP=y
536# CONFIG_MTD_PHYSMAP_COMPAT is not set 563# CONFIG_MTD_PHYSMAP_COMPAT is not set
537# CONFIG_MTD_PCI is not set 564# CONFIG_MTD_PCI is not set
538# CONFIG_MTD_GPIO_ADDR is not set
539# CONFIG_MTD_INTEL_VR_NOR is not set 565# CONFIG_MTD_INTEL_VR_NOR is not set
540# CONFIG_MTD_PLATRAM is not set 566# CONFIG_MTD_PLATRAM is not set
541 567
@@ -573,6 +599,10 @@ CONFIG_BLK_DEV=y
573# CONFIG_BLK_DEV_UMEM is not set 599# CONFIG_BLK_DEV_UMEM is not set
574# CONFIG_BLK_DEV_COW_COMMON is not set 600# CONFIG_BLK_DEV_COW_COMMON is not set
575# CONFIG_BLK_DEV_LOOP is not set 601# CONFIG_BLK_DEV_LOOP is not set
602
603#
604# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
605#
576# CONFIG_BLK_DEV_NBD is not set 606# CONFIG_BLK_DEV_NBD is not set
577# CONFIG_BLK_DEV_SX8 is not set 607# CONFIG_BLK_DEV_SX8 is not set
578CONFIG_BLK_DEV_RAM=y 608CONFIG_BLK_DEV_RAM=y
@@ -583,6 +613,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
583# CONFIG_ATA_OVER_ETH is not set 613# CONFIG_ATA_OVER_ETH is not set
584# CONFIG_BLK_DEV_HD is not set 614# CONFIG_BLK_DEV_HD is not set
585CONFIG_MISC_DEVICES=y 615CONFIG_MISC_DEVICES=y
616# CONFIG_AD525X_DPOT is not set
586# CONFIG_PHANTOM is not set 617# CONFIG_PHANTOM is not set
587# CONFIG_SGI_IOC4 is not set 618# CONFIG_SGI_IOC4 is not set
588# CONFIG_TIFM_CORE is not set 619# CONFIG_TIFM_CORE is not set
@@ -590,6 +621,7 @@ CONFIG_MISC_DEVICES=y
590# CONFIG_ENCLOSURE_SERVICES is not set 621# CONFIG_ENCLOSURE_SERVICES is not set
591# CONFIG_HP_ILO is not set 622# CONFIG_HP_ILO is not set
592# CONFIG_ISL29003 is not set 623# CONFIG_ISL29003 is not set
624# CONFIG_DS1682 is not set
593# CONFIG_C2PORT is not set 625# CONFIG_C2PORT is not set
594 626
595# 627#
@@ -640,8 +672,11 @@ CONFIG_SCSI_LOWLEVEL=y
640# CONFIG_ISCSI_TCP is not set 672# CONFIG_ISCSI_TCP is not set
641# CONFIG_SCSI_CXGB3_ISCSI is not set 673# CONFIG_SCSI_CXGB3_ISCSI is not set
642# CONFIG_SCSI_BNX2_ISCSI is not set 674# CONFIG_SCSI_BNX2_ISCSI is not set
675# CONFIG_BE2ISCSI is not set
643# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 676# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
677# CONFIG_SCSI_HPSA is not set
644# CONFIG_SCSI_3W_9XXX is not set 678# CONFIG_SCSI_3W_9XXX is not set
679# CONFIG_SCSI_3W_SAS is not set
645# CONFIG_SCSI_ACARD is not set 680# CONFIG_SCSI_ACARD is not set
646# CONFIG_SCSI_AACRAID is not set 681# CONFIG_SCSI_AACRAID is not set
647# CONFIG_SCSI_AIC7XXX is not set 682# CONFIG_SCSI_AIC7XXX is not set
@@ -675,7 +710,9 @@ CONFIG_SCSI_LOWLEVEL=y
675# CONFIG_SCSI_NSP32 is not set 710# CONFIG_SCSI_NSP32 is not set
676# CONFIG_SCSI_DEBUG is not set 711# CONFIG_SCSI_DEBUG is not set
677# CONFIG_SCSI_PMCRAID is not set 712# CONFIG_SCSI_PMCRAID is not set
713# CONFIG_SCSI_PM8001 is not set
678# CONFIG_SCSI_SRP is not set 714# CONFIG_SCSI_SRP is not set
715# CONFIG_SCSI_BFA_FC is not set
679# CONFIG_SCSI_DH is not set 716# CONFIG_SCSI_DH is not set
680# CONFIG_SCSI_OSD_INITIATOR is not set 717# CONFIG_SCSI_OSD_INITIATOR is not set
681CONFIG_ATA=y 718CONFIG_ATA=y
@@ -728,15 +765,16 @@ CONFIG_SATA_SIL=y
728# CONFIG_PATA_NS87415 is not set 765# CONFIG_PATA_NS87415 is not set
729# CONFIG_PATA_OPTI is not set 766# CONFIG_PATA_OPTI is not set
730# CONFIG_PATA_OPTIDMA is not set 767# CONFIG_PATA_OPTIDMA is not set
768# CONFIG_PATA_PDC2027X is not set
731# CONFIG_PATA_PDC_OLD is not set 769# CONFIG_PATA_PDC_OLD is not set
732# CONFIG_PATA_RADISYS is not set 770# CONFIG_PATA_RADISYS is not set
733# CONFIG_PATA_RDC is not set 771# CONFIG_PATA_RDC is not set
734# CONFIG_PATA_RZ1000 is not set 772# CONFIG_PATA_RZ1000 is not set
735# CONFIG_PATA_SC1200 is not set 773# CONFIG_PATA_SC1200 is not set
736# CONFIG_PATA_SERVERWORKS is not set 774# CONFIG_PATA_SERVERWORKS is not set
737# CONFIG_PATA_PDC2027X is not set
738# CONFIG_PATA_SIL680 is not set 775# CONFIG_PATA_SIL680 is not set
739# CONFIG_PATA_SIS is not set 776# CONFIG_PATA_SIS is not set
777# CONFIG_PATA_TOSHIBA is not set
740# CONFIG_PATA_VIA is not set 778# CONFIG_PATA_VIA is not set
741# CONFIG_PATA_WINBOND is not set 779# CONFIG_PATA_WINBOND is not set
742CONFIG_PATA_PLATFORM=y 780CONFIG_PATA_PLATFORM=y
@@ -813,6 +851,7 @@ CONFIG_8139TOO_8129=y
813# CONFIG_SUNDANCE is not set 851# CONFIG_SUNDANCE is not set
814# CONFIG_TLAN is not set 852# CONFIG_TLAN is not set
815# CONFIG_KS8842 is not set 853# CONFIG_KS8842 is not set
854# CONFIG_KS8851_MLL is not set
816CONFIG_VIA_RHINE=m 855CONFIG_VIA_RHINE=m
817CONFIG_VIA_RHINE_MMIO=y 856CONFIG_VIA_RHINE_MMIO=y
818# CONFIG_SC92031 is not set 857# CONFIG_SC92031 is not set
@@ -862,8 +901,9 @@ CONFIG_CHELSIO_T3_DEPENDS=y
862# CONFIG_BE2NET is not set 901# CONFIG_BE2NET is not set
863# CONFIG_TR is not set 902# CONFIG_TR is not set
864CONFIG_WLAN=y 903CONFIG_WLAN=y
865# CONFIG_WLAN_PRE80211 is not set 904# CONFIG_ATMEL is not set
866# CONFIG_WLAN_80211 is not set 905# CONFIG_PRISM54 is not set
906# CONFIG_HOSTAP is not set
867 907
868# 908#
869# Enable WiMAX (Networking options) to see the WiMAX drivers 909# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -877,6 +917,7 @@ CONFIG_WLAN=y
877# CONFIG_NETCONSOLE is not set 917# CONFIG_NETCONSOLE is not set
878# CONFIG_NETPOLL is not set 918# CONFIG_NETPOLL is not set
879# CONFIG_NET_POLL_CONTROLLER is not set 919# CONFIG_NET_POLL_CONTROLLER is not set
920# CONFIG_VMXNET3 is not set
880# CONFIG_ISDN is not set 921# CONFIG_ISDN is not set
881# CONFIG_PHONE is not set 922# CONFIG_PHONE is not set
882 923
@@ -886,6 +927,7 @@ CONFIG_WLAN=y
886CONFIG_INPUT=y 927CONFIG_INPUT=y
887# CONFIG_INPUT_FF_MEMLESS is not set 928# CONFIG_INPUT_FF_MEMLESS is not set
888# CONFIG_INPUT_POLLDEV is not set 929# CONFIG_INPUT_POLLDEV is not set
930# CONFIG_INPUT_SPARSEKMAP is not set
889 931
890# 932#
891# Userland interfaces 933# Userland interfaces
@@ -928,6 +970,7 @@ CONFIG_SERIO=y
928# CONFIG_SERIO_PCIPS2 is not set 970# CONFIG_SERIO_PCIPS2 is not set
929CONFIG_SERIO_LIBPS2=y 971CONFIG_SERIO_LIBPS2=y
930# CONFIG_SERIO_RAW is not set 972# CONFIG_SERIO_RAW is not set
973# CONFIG_SERIO_ALTERA_PS2 is not set
931# CONFIG_GAMEPORT is not set 974# CONFIG_GAMEPORT is not set
932 975
933# 976#
@@ -1008,11 +1051,6 @@ CONFIG_I2C_HIGHLANDER=y
1008# CONFIG_I2C_TAOS_EVM is not set 1051# CONFIG_I2C_TAOS_EVM is not set
1009 1052
1010# 1053#
1011# Graphics adapter I2C/DDC channel drivers
1012#
1013# CONFIG_I2C_VOODOO3 is not set
1014
1015#
1016# Other I2C/SMBus bus drivers 1054# Other I2C/SMBus bus drivers
1017# 1055#
1018# CONFIG_I2C_PCA_PLATFORM is not set 1056# CONFIG_I2C_PCA_PLATFORM is not set
@@ -1021,7 +1059,6 @@ CONFIG_I2C_HIGHLANDER=y
1021# 1059#
1022# Miscellaneous I2C Chip support 1060# Miscellaneous I2C Chip support
1023# 1061#
1024# CONFIG_DS1682 is not set
1025# CONFIG_SENSORS_TSL2550 is not set 1062# CONFIG_SENSORS_TSL2550 is not set
1026# CONFIG_I2C_DEBUG_CORE is not set 1063# CONFIG_I2C_DEBUG_CORE is not set
1027# CONFIG_I2C_DEBUG_ALGO is not set 1064# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1065,6 +1102,7 @@ CONFIG_HWMON=y
1065# CONFIG_SENSORS_GL520SM is not set 1102# CONFIG_SENSORS_GL520SM is not set
1066# CONFIG_SENSORS_IT87 is not set 1103# CONFIG_SENSORS_IT87 is not set
1067# CONFIG_SENSORS_LM63 is not set 1104# CONFIG_SENSORS_LM63 is not set
1105# CONFIG_SENSORS_LM73 is not set
1068# CONFIG_SENSORS_LM75 is not set 1106# CONFIG_SENSORS_LM75 is not set
1069# CONFIG_SENSORS_LM77 is not set 1107# CONFIG_SENSORS_LM77 is not set
1070# CONFIG_SENSORS_LM78 is not set 1108# CONFIG_SENSORS_LM78 is not set
@@ -1103,6 +1141,7 @@ CONFIG_HWMON=y
1103# CONFIG_SENSORS_W83L786NG is not set 1141# CONFIG_SENSORS_W83L786NG is not set
1104# CONFIG_SENSORS_W83627HF is not set 1142# CONFIG_SENSORS_W83627HF is not set
1105# CONFIG_SENSORS_W83627EHF is not set 1143# CONFIG_SENSORS_W83627EHF is not set
1144# CONFIG_SENSORS_LIS3_I2C is not set
1106CONFIG_THERMAL=y 1145CONFIG_THERMAL=y
1107# CONFIG_THERMAL_HWMON is not set 1146# CONFIG_THERMAL_HWMON is not set
1108# CONFIG_WATCHDOG is not set 1147# CONFIG_WATCHDOG is not set
@@ -1118,15 +1157,18 @@ CONFIG_SSB_POSSIBLE=y
1118# 1157#
1119# CONFIG_MFD_CORE is not set 1158# CONFIG_MFD_CORE is not set
1120# CONFIG_MFD_SM501 is not set 1159# CONFIG_MFD_SM501 is not set
1160# CONFIG_MFD_SH_MOBILE_SDHI is not set
1121# CONFIG_HTC_PASIC3 is not set 1161# CONFIG_HTC_PASIC3 is not set
1122# CONFIG_TWL4030_CORE is not set 1162# CONFIG_TWL4030_CORE is not set
1123# CONFIG_MFD_TMIO is not set 1163# CONFIG_MFD_TMIO is not set
1124# CONFIG_PMIC_DA903X is not set 1164# CONFIG_PMIC_DA903X is not set
1165# CONFIG_PMIC_ADP5520 is not set
1125# CONFIG_MFD_WM8400 is not set 1166# CONFIG_MFD_WM8400 is not set
1126# CONFIG_MFD_WM831X is not set 1167# CONFIG_MFD_WM831X is not set
1127# CONFIG_MFD_WM8350_I2C is not set 1168# CONFIG_MFD_WM8350_I2C is not set
1128# CONFIG_MFD_PCF50633 is not set 1169# CONFIG_MFD_PCF50633 is not set
1129# CONFIG_AB3100_CORE is not set 1170# CONFIG_AB3100_CORE is not set
1171# CONFIG_MFD_88PM8607 is not set
1130# CONFIG_REGULATOR is not set 1172# CONFIG_REGULATOR is not set
1131# CONFIG_MEDIA_SUPPORT is not set 1173# CONFIG_MEDIA_SUPPORT is not set
1132 1174
@@ -1211,6 +1253,7 @@ CONFIG_RTC_DRV_RS5C372=y
1211# CONFIG_RTC_DRV_PCF8563 is not set 1253# CONFIG_RTC_DRV_PCF8563 is not set
1212# CONFIG_RTC_DRV_PCF8583 is not set 1254# CONFIG_RTC_DRV_PCF8583 is not set
1213# CONFIG_RTC_DRV_M41T80 is not set 1255# CONFIG_RTC_DRV_M41T80 is not set
1256# CONFIG_RTC_DRV_BQ32K is not set
1214# CONFIG_RTC_DRV_S35390A is not set 1257# CONFIG_RTC_DRV_S35390A is not set
1215# CONFIG_RTC_DRV_FM3130 is not set 1258# CONFIG_RTC_DRV_FM3130 is not set
1216# CONFIG_RTC_DRV_RX8581 is not set 1259# CONFIG_RTC_DRV_RX8581 is not set
@@ -1231,7 +1274,9 @@ CONFIG_RTC_DRV_RS5C372=y
1231# CONFIG_RTC_DRV_M48T86 is not set 1274# CONFIG_RTC_DRV_M48T86 is not set
1232# CONFIG_RTC_DRV_M48T35 is not set 1275# CONFIG_RTC_DRV_M48T35 is not set
1233# CONFIG_RTC_DRV_M48T59 is not set 1276# CONFIG_RTC_DRV_M48T59 is not set
1277# CONFIG_RTC_DRV_MSM6242 is not set
1234# CONFIG_RTC_DRV_BQ4802 is not set 1278# CONFIG_RTC_DRV_BQ4802 is not set
1279# CONFIG_RTC_DRV_RP5C01 is not set
1235# CONFIG_RTC_DRV_V3020 is not set 1280# CONFIG_RTC_DRV_V3020 is not set
1236 1281
1237# 1282#
@@ -1436,6 +1481,8 @@ CONFIG_SCHED_DEBUG=y
1436# CONFIG_DEBUG_OBJECTS is not set 1481# CONFIG_DEBUG_OBJECTS is not set
1437# CONFIG_DEBUG_SLAB is not set 1482# CONFIG_DEBUG_SLAB is not set
1438# CONFIG_DEBUG_PREEMPT is not set 1483# CONFIG_DEBUG_PREEMPT is not set
1484# CONFIG_DEBUG_RT_MUTEXES is not set
1485# CONFIG_RT_MUTEX_TESTER is not set
1439# CONFIG_DEBUG_SPINLOCK is not set 1486# CONFIG_DEBUG_SPINLOCK is not set
1440# CONFIG_DEBUG_MUTEXES is not set 1487# CONFIG_DEBUG_MUTEXES is not set
1441# CONFIG_DEBUG_LOCK_ALLOC is not set 1488# CONFIG_DEBUG_LOCK_ALLOC is not set
@@ -1462,6 +1509,7 @@ CONFIG_DEBUG_INFO=y
1462# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set 1509# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1463# CONFIG_FAULT_INJECTION is not set 1510# CONFIG_FAULT_INJECTION is not set
1464# CONFIG_LATENCYTOP is not set 1511# CONFIG_LATENCYTOP is not set
1512# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1465# CONFIG_PAGE_POISONING is not set 1513# CONFIG_PAGE_POISONING is not set
1466CONFIG_NOP_TRACER=y 1514CONFIG_NOP_TRACER=y
1467CONFIG_HAVE_FUNCTION_TRACER=y 1515CONFIG_HAVE_FUNCTION_TRACER=y
@@ -1498,9 +1546,6 @@ CONFIG_BRANCH_PROFILE_NONE=y
1498CONFIG_HAVE_ARCH_KGDB=y 1546CONFIG_HAVE_ARCH_KGDB=y
1499# CONFIG_KGDB is not set 1547# CONFIG_KGDB is not set
1500# CONFIG_SH_STANDARD_BIOS is not set 1548# CONFIG_SH_STANDARD_BIOS is not set
1501CONFIG_EARLY_SCIF_CONSOLE=y
1502CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe00000
1503# CONFIG_EARLY_PRINTK is not set
1504# CONFIG_STACK_DEBUG is not set 1549# CONFIG_STACK_DEBUG is not set
1505# CONFIG_DEBUG_STACK_USAGE is not set 1550# CONFIG_DEBUG_STACK_USAGE is not set
1506# CONFIG_4KSTACKS is not set 1551# CONFIG_4KSTACKS is not set
@@ -1514,7 +1559,11 @@ CONFIG_DUMP_CODE=y
1514# CONFIG_KEYS is not set 1559# CONFIG_KEYS is not set
1515# CONFIG_SECURITY is not set 1560# CONFIG_SECURITY is not set
1516# CONFIG_SECURITYFS is not set 1561# CONFIG_SECURITYFS is not set
1517# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1562# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1563# CONFIG_DEFAULT_SECURITY_SMACK is not set
1564# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1565CONFIG_DEFAULT_SECURITY_DAC=y
1566CONFIG_DEFAULT_SECURITY=""
1518CONFIG_CRYPTO=y 1567CONFIG_CRYPTO=y
1519 1568
1520# 1569#
diff --git a/arch/sh/configs/r7785rp_defconfig b/arch/sh/configs/r7785rp_defconfig
index 27ff46c13a87..f4b00451dcee 100644
--- a/arch/sh/configs/r7785rp_defconfig
+++ b/arch/sh/configs/r7785rp_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:29:23 2009 4# Mon Jan 4 13:19:35 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_NUMA=y 24CONFIG_SYS_SUPPORTS_NUMA=y
24CONFIG_SYS_SUPPORTS_PCI=y 25CONFIG_SYS_SUPPORTS_PCI=y
25CONFIG_SYS_SUPPORTS_TMU=y 26CONFIG_SYS_SUPPORTS_TMU=y
@@ -32,6 +33,7 @@ CONFIG_ARCH_NO_VIRT_TO_BUS=y
32CONFIG_ARCH_HAS_DEFAULT_IDLE=y 33CONFIG_ARCH_HAS_DEFAULT_IDLE=y
33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 34CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
34CONFIG_IO_TRAPPED=y 35CONFIG_IO_TRAPPED=y
36CONFIG_DMA_NONCOHERENT=y
35CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 37CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
36CONFIG_CONSTRUCTORS=y 38CONFIG_CONSTRUCTORS=y
37 39
@@ -67,6 +69,7 @@ CONFIG_AUDIT_TREE=y
67# 69#
68CONFIG_TREE_RCU=y 70CONFIG_TREE_RCU=y
69# CONFIG_TREE_PREEMPT_RCU is not set 71# CONFIG_TREE_PREEMPT_RCU is not set
72# CONFIG_TINY_RCU is not set
70CONFIG_RCU_TRACE=y 73CONFIG_RCU_TRACE=y
71CONFIG_RCU_FANOUT=32 74CONFIG_RCU_FANOUT=32
72# CONFIG_RCU_FANOUT_EXACT is not set 75# CONFIG_RCU_FANOUT_EXACT is not set
@@ -103,6 +106,7 @@ CONFIG_EVENTFD=y
103CONFIG_SHMEM=y 106CONFIG_SHMEM=y
104CONFIG_AIO=y 107CONFIG_AIO=y
105CONFIG_HAVE_PERF_EVENTS=y 108CONFIG_HAVE_PERF_EVENTS=y
109CONFIG_PERF_USE_VMALLOC=y
106 110
107# 111#
108# Kernel Performance Events And Counters 112# Kernel Performance Events And Counters
@@ -110,6 +114,7 @@ CONFIG_HAVE_PERF_EVENTS=y
110CONFIG_PERF_EVENTS=y 114CONFIG_PERF_EVENTS=y
111CONFIG_EVENT_PROFILE=y 115CONFIG_EVENT_PROFILE=y
112# CONFIG_PERF_COUNTERS is not set 116# CONFIG_PERF_COUNTERS is not set
117# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
113CONFIG_VM_EVENT_COUNTERS=y 118CONFIG_VM_EVENT_COUNTERS=y
114CONFIG_PCI_QUIRKS=y 119CONFIG_PCI_QUIRKS=y
115CONFIG_COMPAT_BRK=y 120CONFIG_COMPAT_BRK=y
@@ -126,6 +131,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
126CONFIG_HAVE_KPROBES=y 131CONFIG_HAVE_KPROBES=y
127CONFIG_HAVE_KRETPROBES=y 132CONFIG_HAVE_KRETPROBES=y
128CONFIG_HAVE_ARCH_TRACEHOOK=y 133CONFIG_HAVE_ARCH_TRACEHOOK=y
134CONFIG_HAVE_DMA_ATTRS=y
129CONFIG_HAVE_CLK=y 135CONFIG_HAVE_CLK=y
130CONFIG_HAVE_DMA_API_DEBUG=y 136CONFIG_HAVE_DMA_API_DEBUG=y
131 137
@@ -153,14 +159,41 @@ CONFIG_LBDAF=y
153# IO Schedulers 159# IO Schedulers
154# 160#
155CONFIG_IOSCHED_NOOP=y 161CONFIG_IOSCHED_NOOP=y
156# CONFIG_IOSCHED_AS is not set
157# CONFIG_IOSCHED_DEADLINE is not set 162# CONFIG_IOSCHED_DEADLINE is not set
158# CONFIG_IOSCHED_CFQ is not set 163# CONFIG_IOSCHED_CFQ is not set
159# CONFIG_DEFAULT_AS is not set
160# CONFIG_DEFAULT_DEADLINE is not set 164# CONFIG_DEFAULT_DEADLINE is not set
161# CONFIG_DEFAULT_CFQ is not set 165# CONFIG_DEFAULT_CFQ is not set
162CONFIG_DEFAULT_NOOP=y 166CONFIG_DEFAULT_NOOP=y
163CONFIG_DEFAULT_IOSCHED="noop" 167CONFIG_DEFAULT_IOSCHED="noop"
168# CONFIG_INLINE_SPIN_TRYLOCK is not set
169# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
170# CONFIG_INLINE_SPIN_LOCK is not set
171# CONFIG_INLINE_SPIN_LOCK_BH is not set
172# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
173# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
174# CONFIG_INLINE_SPIN_UNLOCK is not set
175# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
176# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
177# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
178# CONFIG_INLINE_READ_TRYLOCK is not set
179# CONFIG_INLINE_READ_LOCK is not set
180# CONFIG_INLINE_READ_LOCK_BH is not set
181# CONFIG_INLINE_READ_LOCK_IRQ is not set
182# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
183# CONFIG_INLINE_READ_UNLOCK is not set
184# CONFIG_INLINE_READ_UNLOCK_BH is not set
185# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
186# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
187# CONFIG_INLINE_WRITE_TRYLOCK is not set
188# CONFIG_INLINE_WRITE_LOCK is not set
189# CONFIG_INLINE_WRITE_LOCK_BH is not set
190# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
191# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
192# CONFIG_INLINE_WRITE_UNLOCK is not set
193# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
194# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
195# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
196# CONFIG_MUTEX_SPIN_ON_OWNER is not set
164# CONFIG_FREEZER is not set 197# CONFIG_FREEZER is not set
165 198
166# 199#
@@ -248,13 +281,11 @@ CONFIG_SPARSEMEM=y
248CONFIG_HAVE_MEMORY_PRESENT=y 281CONFIG_HAVE_MEMORY_PRESENT=y
249CONFIG_SPARSEMEM_STATIC=y 282CONFIG_SPARSEMEM_STATIC=y
250# CONFIG_MEMORY_HOTPLUG is not set 283# CONFIG_MEMORY_HOTPLUG is not set
251CONFIG_SPLIT_PTLOCK_CPUS=4 284CONFIG_SPLIT_PTLOCK_CPUS=999999
252CONFIG_MIGRATION=y 285CONFIG_MIGRATION=y
253# CONFIG_PHYS_ADDR_T_64BIT is not set 286# CONFIG_PHYS_ADDR_T_64BIT is not set
254CONFIG_ZONE_DMA_FLAG=0 287CONFIG_ZONE_DMA_FLAG=0
255CONFIG_NR_QUICK=2 288CONFIG_NR_QUICK=2
256CONFIG_HAVE_MLOCK=y
257CONFIG_HAVE_MLOCKED_PAGE_BIT=y
258# CONFIG_KSM is not set 289# CONFIG_KSM is not set
259CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 290CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
260 291
@@ -289,7 +320,6 @@ CONFIG_SH_R7785RP=y
289# Timer and clock configuration 320# Timer and clock configuration
290# 321#
291CONFIG_SH_TIMER_TMU=y 322CONFIG_SH_TIMER_TMU=y
292CONFIG_SH_PCLK_FREQ=33333333
293CONFIG_SH_CLK_CPG=y 323CONFIG_SH_CLK_CPG=y
294CONFIG_TICK_ONESHOT=y 324CONFIG_TICK_ONESHOT=y
295CONFIG_NO_HZ=y 325CONFIG_NO_HZ=y
@@ -363,7 +393,6 @@ CONFIG_CMDLINE="console=ttySC0,115200 root=/dev/sda1"
363# Bus options 393# Bus options
364# 394#
365CONFIG_PCI=y 395CONFIG_PCI=y
366CONFIG_SH_PCIDMA_NONCOHERENT=y
367# CONFIG_PCIEPORTBUS is not set 396# CONFIG_PCIEPORTBUS is not set
368# CONFIG_ARCH_SUPPORTS_MSI is not set 397# CONFIG_ARCH_SUPPORTS_MSI is not set
369# CONFIG_PCI_LEGACY is not set 398# CONFIG_PCI_LEGACY is not set
@@ -471,10 +500,6 @@ CONFIG_LLC=m
471# CONFIG_AF_RXRPC is not set 500# CONFIG_AF_RXRPC is not set
472CONFIG_WIRELESS=y 501CONFIG_WIRELESS=y
473# CONFIG_CFG80211 is not set 502# CONFIG_CFG80211 is not set
474CONFIG_CFG80211_DEFAULT_PS_VALUE=0
475# CONFIG_WIRELESS_OLD_REGULATORY is not set
476CONFIG_WIRELESS_EXT=y
477CONFIG_WIRELESS_EXT_SYSFS=y
478# CONFIG_LIB80211 is not set 503# CONFIG_LIB80211 is not set
479 504
480# 505#
@@ -510,6 +535,10 @@ CONFIG_BLK_DEV=y
510# CONFIG_BLK_DEV_UMEM is not set 535# CONFIG_BLK_DEV_UMEM is not set
511# CONFIG_BLK_DEV_COW_COMMON is not set 536# CONFIG_BLK_DEV_COW_COMMON is not set
512# CONFIG_BLK_DEV_LOOP is not set 537# CONFIG_BLK_DEV_LOOP is not set
538
539#
540# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
541#
513# CONFIG_BLK_DEV_NBD is not set 542# CONFIG_BLK_DEV_NBD is not set
514# CONFIG_BLK_DEV_SX8 is not set 543# CONFIG_BLK_DEV_SX8 is not set
515CONFIG_BLK_DEV_RAM=y 544CONFIG_BLK_DEV_RAM=y
@@ -520,6 +549,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
520# CONFIG_ATA_OVER_ETH is not set 549# CONFIG_ATA_OVER_ETH is not set
521# CONFIG_BLK_DEV_HD is not set 550# CONFIG_BLK_DEV_HD is not set
522CONFIG_MISC_DEVICES=y 551CONFIG_MISC_DEVICES=y
552# CONFIG_AD525X_DPOT is not set
523# CONFIG_PHANTOM is not set 553# CONFIG_PHANTOM is not set
524# CONFIG_SGI_IOC4 is not set 554# CONFIG_SGI_IOC4 is not set
525# CONFIG_TIFM_CORE is not set 555# CONFIG_TIFM_CORE is not set
@@ -527,6 +557,7 @@ CONFIG_MISC_DEVICES=y
527# CONFIG_ENCLOSURE_SERVICES is not set 557# CONFIG_ENCLOSURE_SERVICES is not set
528# CONFIG_HP_ILO is not set 558# CONFIG_HP_ILO is not set
529# CONFIG_ISL29003 is not set 559# CONFIG_ISL29003 is not set
560# CONFIG_DS1682 is not set
530# CONFIG_C2PORT is not set 561# CONFIG_C2PORT is not set
531 562
532# 563#
@@ -577,8 +608,11 @@ CONFIG_SCSI_LOWLEVEL=y
577# CONFIG_ISCSI_TCP is not set 608# CONFIG_ISCSI_TCP is not set
578# CONFIG_SCSI_CXGB3_ISCSI is not set 609# CONFIG_SCSI_CXGB3_ISCSI is not set
579# CONFIG_SCSI_BNX2_ISCSI is not set 610# CONFIG_SCSI_BNX2_ISCSI is not set
611# CONFIG_BE2ISCSI is not set
580# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 612# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
613# CONFIG_SCSI_HPSA is not set
581# CONFIG_SCSI_3W_9XXX is not set 614# CONFIG_SCSI_3W_9XXX is not set
615# CONFIG_SCSI_3W_SAS is not set
582# CONFIG_SCSI_ACARD is not set 616# CONFIG_SCSI_ACARD is not set
583# CONFIG_SCSI_AACRAID is not set 617# CONFIG_SCSI_AACRAID is not set
584# CONFIG_SCSI_AIC7XXX is not set 618# CONFIG_SCSI_AIC7XXX is not set
@@ -612,7 +646,9 @@ CONFIG_SCSI_LOWLEVEL=y
612# CONFIG_SCSI_NSP32 is not set 646# CONFIG_SCSI_NSP32 is not set
613# CONFIG_SCSI_DEBUG is not set 647# CONFIG_SCSI_DEBUG is not set
614# CONFIG_SCSI_PMCRAID is not set 648# CONFIG_SCSI_PMCRAID is not set
649# CONFIG_SCSI_PM8001 is not set
615# CONFIG_SCSI_SRP is not set 650# CONFIG_SCSI_SRP is not set
651# CONFIG_SCSI_BFA_FC is not set
616# CONFIG_SCSI_DH is not set 652# CONFIG_SCSI_DH is not set
617# CONFIG_SCSI_OSD_INITIATOR is not set 653# CONFIG_SCSI_OSD_INITIATOR is not set
618CONFIG_ATA=y 654CONFIG_ATA=y
@@ -665,15 +701,16 @@ CONFIG_SATA_SIL=y
665# CONFIG_PATA_NS87415 is not set 701# CONFIG_PATA_NS87415 is not set
666# CONFIG_PATA_OPTI is not set 702# CONFIG_PATA_OPTI is not set
667# CONFIG_PATA_OPTIDMA is not set 703# CONFIG_PATA_OPTIDMA is not set
704# CONFIG_PATA_PDC2027X is not set
668# CONFIG_PATA_PDC_OLD is not set 705# CONFIG_PATA_PDC_OLD is not set
669# CONFIG_PATA_RADISYS is not set 706# CONFIG_PATA_RADISYS is not set
670# CONFIG_PATA_RDC is not set 707# CONFIG_PATA_RDC is not set
671# CONFIG_PATA_RZ1000 is not set 708# CONFIG_PATA_RZ1000 is not set
672# CONFIG_PATA_SC1200 is not set 709# CONFIG_PATA_SC1200 is not set
673# CONFIG_PATA_SERVERWORKS is not set 710# CONFIG_PATA_SERVERWORKS is not set
674# CONFIG_PATA_PDC2027X is not set
675# CONFIG_PATA_SIL680 is not set 711# CONFIG_PATA_SIL680 is not set
676# CONFIG_PATA_SIS is not set 712# CONFIG_PATA_SIS is not set
713# CONFIG_PATA_TOSHIBA is not set
677# CONFIG_PATA_VIA is not set 714# CONFIG_PATA_VIA is not set
678# CONFIG_PATA_WINBOND is not set 715# CONFIG_PATA_WINBOND is not set
679CONFIG_PATA_PLATFORM=y 716CONFIG_PATA_PLATFORM=y
@@ -730,6 +767,7 @@ CONFIG_AX88796_93CX6=y
730# CONFIG_NET_PCI is not set 767# CONFIG_NET_PCI is not set
731# CONFIG_B44 is not set 768# CONFIG_B44 is not set
732# CONFIG_KS8842 is not set 769# CONFIG_KS8842 is not set
770# CONFIG_KS8851_MLL is not set
733# CONFIG_ATL2 is not set 771# CONFIG_ATL2 is not set
734CONFIG_NETDEV_1000=y 772CONFIG_NETDEV_1000=y
735# CONFIG_ACENIC is not set 773# CONFIG_ACENIC is not set
@@ -776,8 +814,9 @@ CONFIG_CHELSIO_T3_DEPENDS=y
776# CONFIG_BE2NET is not set 814# CONFIG_BE2NET is not set
777# CONFIG_TR is not set 815# CONFIG_TR is not set
778CONFIG_WLAN=y 816CONFIG_WLAN=y
779# CONFIG_WLAN_PRE80211 is not set 817# CONFIG_ATMEL is not set
780# CONFIG_WLAN_80211 is not set 818# CONFIG_PRISM54 is not set
819# CONFIG_HOSTAP is not set
781 820
782# 821#
783# Enable WiMAX (Networking options) to see the WiMAX drivers 822# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -791,6 +830,7 @@ CONFIG_WLAN=y
791# CONFIG_NETCONSOLE is not set 830# CONFIG_NETCONSOLE is not set
792# CONFIG_NETPOLL is not set 831# CONFIG_NETPOLL is not set
793# CONFIG_NET_POLL_CONTROLLER is not set 832# CONFIG_NET_POLL_CONTROLLER is not set
833# CONFIG_VMXNET3 is not set
794# CONFIG_ISDN is not set 834# CONFIG_ISDN is not set
795# CONFIG_PHONE is not set 835# CONFIG_PHONE is not set
796 836
@@ -800,6 +840,7 @@ CONFIG_WLAN=y
800CONFIG_INPUT=y 840CONFIG_INPUT=y
801# CONFIG_INPUT_FF_MEMLESS is not set 841# CONFIG_INPUT_FF_MEMLESS is not set
802# CONFIG_INPUT_POLLDEV is not set 842# CONFIG_INPUT_POLLDEV is not set
843# CONFIG_INPUT_SPARSEKMAP is not set
803 844
804# 845#
805# Userland interfaces 846# Userland interfaces
@@ -844,6 +885,7 @@ CONFIG_SERIO=y
844# CONFIG_SERIO_PCIPS2 is not set 885# CONFIG_SERIO_PCIPS2 is not set
845CONFIG_SERIO_LIBPS2=y 886CONFIG_SERIO_LIBPS2=y
846# CONFIG_SERIO_RAW is not set 887# CONFIG_SERIO_RAW is not set
888# CONFIG_SERIO_ALTERA_PS2 is not set
847# CONFIG_GAMEPORT is not set 889# CONFIG_GAMEPORT is not set
848 890
849# 891#
@@ -925,11 +967,6 @@ CONFIG_I2C_HIGHLANDER=y
925# CONFIG_I2C_TAOS_EVM is not set 967# CONFIG_I2C_TAOS_EVM is not set
926 968
927# 969#
928# Graphics adapter I2C/DDC channel drivers
929#
930# CONFIG_I2C_VOODOO3 is not set
931
932#
933# Other I2C/SMBus bus drivers 970# Other I2C/SMBus bus drivers
934# 971#
935# CONFIG_I2C_PCA_PLATFORM is not set 972# CONFIG_I2C_PCA_PLATFORM is not set
@@ -938,7 +975,6 @@ CONFIG_I2C_HIGHLANDER=y
938# 975#
939# Miscellaneous I2C Chip support 976# Miscellaneous I2C Chip support
940# 977#
941# CONFIG_DS1682 is not set
942# CONFIG_SENSORS_TSL2550 is not set 978# CONFIG_SENSORS_TSL2550 is not set
943# CONFIG_I2C_DEBUG_CORE is not set 979# CONFIG_I2C_DEBUG_CORE is not set
944# CONFIG_I2C_DEBUG_ALGO is not set 980# CONFIG_I2C_DEBUG_ALGO is not set
@@ -969,6 +1005,7 @@ CONFIG_GPIOLIB=y
969# 1005#
970# PCI GPIO expanders: 1006# PCI GPIO expanders:
971# 1007#
1008# CONFIG_GPIO_CS5535 is not set
972# CONFIG_GPIO_BT8XX is not set 1009# CONFIG_GPIO_BT8XX is not set
973# CONFIG_GPIO_LANGWELL is not set 1010# CONFIG_GPIO_LANGWELL is not set
974 1011
@@ -1011,6 +1048,7 @@ CONFIG_HWMON=y
1011# CONFIG_SENSORS_GL520SM is not set 1048# CONFIG_SENSORS_GL520SM is not set
1012# CONFIG_SENSORS_IT87 is not set 1049# CONFIG_SENSORS_IT87 is not set
1013# CONFIG_SENSORS_LM63 is not set 1050# CONFIG_SENSORS_LM63 is not set
1051# CONFIG_SENSORS_LM73 is not set
1014# CONFIG_SENSORS_LM75 is not set 1052# CONFIG_SENSORS_LM75 is not set
1015# CONFIG_SENSORS_LM77 is not set 1053# CONFIG_SENSORS_LM77 is not set
1016# CONFIG_SENSORS_LM78 is not set 1054# CONFIG_SENSORS_LM78 is not set
@@ -1050,6 +1088,7 @@ CONFIG_HWMON=y
1050# CONFIG_SENSORS_W83L786NG is not set 1088# CONFIG_SENSORS_W83L786NG is not set
1051# CONFIG_SENSORS_W83627HF is not set 1089# CONFIG_SENSORS_W83627HF is not set
1052# CONFIG_SENSORS_W83627EHF is not set 1090# CONFIG_SENSORS_W83627EHF is not set
1091# CONFIG_SENSORS_LIS3_I2C is not set
1053# CONFIG_THERMAL is not set 1092# CONFIG_THERMAL is not set
1054# CONFIG_WATCHDOG is not set 1093# CONFIG_WATCHDOG is not set
1055CONFIG_SSB_POSSIBLE=y 1094CONFIG_SSB_POSSIBLE=y
@@ -1064,16 +1103,19 @@ CONFIG_SSB_POSSIBLE=y
1064# 1103#
1065# CONFIG_MFD_CORE is not set 1104# CONFIG_MFD_CORE is not set
1066# CONFIG_MFD_SM501 is not set 1105# CONFIG_MFD_SM501 is not set
1106# CONFIG_MFD_SH_MOBILE_SDHI is not set
1067# CONFIG_HTC_PASIC3 is not set 1107# CONFIG_HTC_PASIC3 is not set
1068# CONFIG_TPS65010 is not set 1108# CONFIG_TPS65010 is not set
1069# CONFIG_TWL4030_CORE is not set 1109# CONFIG_TWL4030_CORE is not set
1070# CONFIG_MFD_TMIO is not set 1110# CONFIG_MFD_TMIO is not set
1071# CONFIG_PMIC_DA903X is not set 1111# CONFIG_PMIC_DA903X is not set
1112# CONFIG_PMIC_ADP5520 is not set
1072# CONFIG_MFD_WM8400 is not set 1113# CONFIG_MFD_WM8400 is not set
1073# CONFIG_MFD_WM831X is not set 1114# CONFIG_MFD_WM831X is not set
1074# CONFIG_MFD_WM8350_I2C is not set 1115# CONFIG_MFD_WM8350_I2C is not set
1075# CONFIG_MFD_PCF50633 is not set 1116# CONFIG_MFD_PCF50633 is not set
1076# CONFIG_AB3100_CORE is not set 1117# CONFIG_AB3100_CORE is not set
1118# CONFIG_MFD_88PM8607 is not set
1077# CONFIG_REGULATOR is not set 1119# CONFIG_REGULATOR is not set
1078# CONFIG_MEDIA_SUPPORT is not set 1120# CONFIG_MEDIA_SUPPORT is not set
1079 1121
@@ -1211,6 +1253,7 @@ CONFIG_RTC_DRV_RS5C372=y
1211# CONFIG_RTC_DRV_PCF8563 is not set 1253# CONFIG_RTC_DRV_PCF8563 is not set
1212# CONFIG_RTC_DRV_PCF8583 is not set 1254# CONFIG_RTC_DRV_PCF8583 is not set
1213# CONFIG_RTC_DRV_M41T80 is not set 1255# CONFIG_RTC_DRV_M41T80 is not set
1256# CONFIG_RTC_DRV_BQ32K is not set
1214# CONFIG_RTC_DRV_S35390A is not set 1257# CONFIG_RTC_DRV_S35390A is not set
1215# CONFIG_RTC_DRV_FM3130 is not set 1258# CONFIG_RTC_DRV_FM3130 is not set
1216# CONFIG_RTC_DRV_RX8581 is not set 1259# CONFIG_RTC_DRV_RX8581 is not set
@@ -1231,7 +1274,9 @@ CONFIG_RTC_DRV_RS5C372=y
1231# CONFIG_RTC_DRV_M48T86 is not set 1274# CONFIG_RTC_DRV_M48T86 is not set
1232# CONFIG_RTC_DRV_M48T35 is not set 1275# CONFIG_RTC_DRV_M48T35 is not set
1233# CONFIG_RTC_DRV_M48T59 is not set 1276# CONFIG_RTC_DRV_M48T59 is not set
1277# CONFIG_RTC_DRV_MSM6242 is not set
1234# CONFIG_RTC_DRV_BQ4802 is not set 1278# CONFIG_RTC_DRV_BQ4802 is not set
1279# CONFIG_RTC_DRV_RP5C01 is not set
1235# CONFIG_RTC_DRV_V3020 is not set 1280# CONFIG_RTC_DRV_V3020 is not set
1236 1281
1237# 1282#
@@ -1463,6 +1508,7 @@ CONFIG_FRAME_POINTER=y
1463# CONFIG_LKDTM is not set 1508# CONFIG_LKDTM is not set
1464# CONFIG_FAULT_INJECTION is not set 1509# CONFIG_FAULT_INJECTION is not set
1465# CONFIG_LATENCYTOP is not set 1510# CONFIG_LATENCYTOP is not set
1511# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1466# CONFIG_PAGE_POISONING is not set 1512# CONFIG_PAGE_POISONING is not set
1467CONFIG_NOP_TRACER=y 1513CONFIG_NOP_TRACER=y
1468CONFIG_HAVE_FUNCTION_TRACER=y 1514CONFIG_HAVE_FUNCTION_TRACER=y
@@ -1499,8 +1545,6 @@ CONFIG_BRANCH_PROFILE_NONE=y
1499CONFIG_HAVE_ARCH_KGDB=y 1545CONFIG_HAVE_ARCH_KGDB=y
1500# CONFIG_KGDB is not set 1546# CONFIG_KGDB is not set
1501CONFIG_SH_STANDARD_BIOS=y 1547CONFIG_SH_STANDARD_BIOS=y
1502# CONFIG_EARLY_SCIF_CONSOLE is not set
1503CONFIG_EARLY_PRINTK=y
1504# CONFIG_STACK_DEBUG is not set 1548# CONFIG_STACK_DEBUG is not set
1505CONFIG_DEBUG_STACK_USAGE=y 1549CONFIG_DEBUG_STACK_USAGE=y
1506CONFIG_4KSTACKS=y 1550CONFIG_4KSTACKS=y
@@ -1514,7 +1558,11 @@ CONFIG_DUMP_CODE=y
1514# CONFIG_KEYS is not set 1558# CONFIG_KEYS is not set
1515# CONFIG_SECURITY is not set 1559# CONFIG_SECURITY is not set
1516# CONFIG_SECURITYFS is not set 1560# CONFIG_SECURITYFS is not set
1517# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1561# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1562# CONFIG_DEFAULT_SECURITY_SMACK is not set
1563# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1564CONFIG_DEFAULT_SECURITY_DAC=y
1565CONFIG_DEFAULT_SECURITY=""
1518CONFIG_CRYPTO=y 1566CONFIG_CRYPTO=y
1519 1567
1520# 1568#
diff --git a/arch/sh/configs/rsk7201_defconfig b/arch/sh/configs/rsk7201_defconfig
index c40db12e9ad7..2fc635a5a8c5 100644
--- a/arch/sh/configs/rsk7201_defconfig
+++ b/arch/sh/configs/rsk7201_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:34:29 2009 4# Mon Jan 4 13:23:12 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -29,6 +29,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
29CONFIG_ARCH_NO_VIRT_TO_BUS=y 29CONFIG_ARCH_NO_VIRT_TO_BUS=y
30CONFIG_ARCH_HAS_DEFAULT_IDLE=y 30CONFIG_ARCH_HAS_DEFAULT_IDLE=y
31CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 31CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
32CONFIG_DMA_NONCOHERENT=y
32CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
33CONFIG_CONSTRUCTORS=y 34CONFIG_CONSTRUCTORS=y
34 35
@@ -56,6 +57,7 @@ CONFIG_BSD_PROCESS_ACCT=y
56# 57#
57CONFIG_TREE_RCU=y 58CONFIG_TREE_RCU=y
58# CONFIG_TREE_PREEMPT_RCU is not set 59# CONFIG_TREE_PREEMPT_RCU is not set
60# CONFIG_TINY_RCU is not set
59# CONFIG_RCU_TRACE is not set 61# CONFIG_RCU_TRACE is not set
60CONFIG_RCU_FANOUT=32 62CONFIG_RCU_FANOUT=32
61# CONFIG_RCU_FANOUT_EXACT is not set 63# CONFIG_RCU_FANOUT_EXACT is not set
@@ -97,6 +99,7 @@ CONFIG_TIMERFD=y
97CONFIG_EVENTFD=y 99CONFIG_EVENTFD=y
98# CONFIG_AIO is not set 100# CONFIG_AIO is not set
99CONFIG_HAVE_PERF_EVENTS=y 101CONFIG_HAVE_PERF_EVENTS=y
102CONFIG_PERF_USE_VMALLOC=y
100 103
101# 104#
102# Kernel Performance Events And Counters 105# Kernel Performance Events And Counters
@@ -109,6 +112,7 @@ CONFIG_COMPAT_BRK=y
109# CONFIG_SLAB is not set 112# CONFIG_SLAB is not set
110# CONFIG_SLUB is not set 113# CONFIG_SLUB is not set
111CONFIG_SLOB=y 114CONFIG_SLOB=y
115# CONFIG_MMAP_ALLOW_UNINITIALIZED is not set
112CONFIG_PROFILING=y 116CONFIG_PROFILING=y
113CONFIG_TRACEPOINTS=y 117CONFIG_TRACEPOINTS=y
114CONFIG_OPROFILE=y 118CONFIG_OPROFILE=y
@@ -117,6 +121,7 @@ CONFIG_HAVE_OPROFILE=y
117CONFIG_HAVE_KPROBES=y 121CONFIG_HAVE_KPROBES=y
118CONFIG_HAVE_KRETPROBES=y 122CONFIG_HAVE_KRETPROBES=y
119CONFIG_HAVE_ARCH_TRACEHOOK=y 123CONFIG_HAVE_ARCH_TRACEHOOK=y
124CONFIG_HAVE_DMA_ATTRS=y
120CONFIG_HAVE_CLK=y 125CONFIG_HAVE_CLK=y
121CONFIG_HAVE_DMA_API_DEBUG=y 126CONFIG_HAVE_DMA_API_DEBUG=y
122 127
@@ -142,14 +147,41 @@ CONFIG_LBDAF=y
142# IO Schedulers 147# IO Schedulers
143# 148#
144CONFIG_IOSCHED_NOOP=y 149CONFIG_IOSCHED_NOOP=y
145# CONFIG_IOSCHED_AS is not set
146# CONFIG_IOSCHED_DEADLINE is not set 150# CONFIG_IOSCHED_DEADLINE is not set
147# CONFIG_IOSCHED_CFQ is not set 151# CONFIG_IOSCHED_CFQ is not set
148# CONFIG_DEFAULT_AS is not set
149# CONFIG_DEFAULT_DEADLINE is not set 152# CONFIG_DEFAULT_DEADLINE is not set
150# CONFIG_DEFAULT_CFQ is not set 153# CONFIG_DEFAULT_CFQ is not set
151CONFIG_DEFAULT_NOOP=y 154CONFIG_DEFAULT_NOOP=y
152CONFIG_DEFAULT_IOSCHED="noop" 155CONFIG_DEFAULT_IOSCHED="noop"
156# CONFIG_INLINE_SPIN_TRYLOCK is not set
157# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
158# CONFIG_INLINE_SPIN_LOCK is not set
159# CONFIG_INLINE_SPIN_LOCK_BH is not set
160# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
161# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
162CONFIG_INLINE_SPIN_UNLOCK=y
163# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
164CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
165# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
166# CONFIG_INLINE_READ_TRYLOCK is not set
167# CONFIG_INLINE_READ_LOCK is not set
168# CONFIG_INLINE_READ_LOCK_BH is not set
169# CONFIG_INLINE_READ_LOCK_IRQ is not set
170# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
171CONFIG_INLINE_READ_UNLOCK=y
172# CONFIG_INLINE_READ_UNLOCK_BH is not set
173CONFIG_INLINE_READ_UNLOCK_IRQ=y
174# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
175# CONFIG_INLINE_WRITE_TRYLOCK is not set
176# CONFIG_INLINE_WRITE_LOCK is not set
177# CONFIG_INLINE_WRITE_LOCK_BH is not set
178# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
179# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
180CONFIG_INLINE_WRITE_UNLOCK=y
181# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
182CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
183# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
184# CONFIG_MUTEX_SPIN_ON_OWNER is not set
153# CONFIG_FREEZER is not set 185# CONFIG_FREEZER is not set
154 186
155# 187#
@@ -224,7 +256,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
224# CONFIG_PHYS_ADDR_T_64BIT is not set 256# CONFIG_PHYS_ADDR_T_64BIT is not set
225CONFIG_ZONE_DMA_FLAG=0 257CONFIG_ZONE_DMA_FLAG=0
226CONFIG_NR_QUICK=2 258CONFIG_NR_QUICK=2
227CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
228CONFIG_NOMMU_INITIAL_TRIM_EXCESS=1 259CONFIG_NOMMU_INITIAL_TRIM_EXCESS=1
229 260
230# 261#
@@ -433,6 +464,10 @@ CONFIG_MTD_PHYSMAP=y
433CONFIG_BLK_DEV=y 464CONFIG_BLK_DEV=y
434# CONFIG_BLK_DEV_COW_COMMON is not set 465# CONFIG_BLK_DEV_COW_COMMON is not set
435# CONFIG_BLK_DEV_LOOP is not set 466# CONFIG_BLK_DEV_LOOP is not set
467
468#
469# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
470#
436# CONFIG_BLK_DEV_RAM is not set 471# CONFIG_BLK_DEV_RAM is not set
437# CONFIG_CDROM_PKTCDVD is not set 472# CONFIG_CDROM_PKTCDVD is not set
438# CONFIG_BLK_DEV_HD is not set 473# CONFIG_BLK_DEV_HD is not set
@@ -464,6 +499,7 @@ CONFIG_HAVE_IDE=y
464CONFIG_INPUT=y 499CONFIG_INPUT=y
465# CONFIG_INPUT_FF_MEMLESS is not set 500# CONFIG_INPUT_FF_MEMLESS is not set
466# CONFIG_INPUT_POLLDEV is not set 501# CONFIG_INPUT_POLLDEV is not set
502# CONFIG_INPUT_SPARSEKMAP is not set
467 503
468# 504#
469# Userland interfaces 505# Userland interfaces
@@ -540,6 +576,7 @@ CONFIG_SSB_POSSIBLE=y
540# 576#
541# CONFIG_MFD_CORE is not set 577# CONFIG_MFD_CORE is not set
542# CONFIG_MFD_SM501 is not set 578# CONFIG_MFD_SM501 is not set
579# CONFIG_MFD_SH_MOBILE_SDHI is not set
543# CONFIG_HTC_PASIC3 is not set 580# CONFIG_HTC_PASIC3 is not set
544# CONFIG_MFD_TMIO is not set 581# CONFIG_MFD_TMIO is not set
545# CONFIG_REGULATOR is not set 582# CONFIG_REGULATOR is not set
@@ -594,7 +631,9 @@ CONFIG_RTC_INTF_DEV=y
594# CONFIG_RTC_DRV_M48T86 is not set 631# CONFIG_RTC_DRV_M48T86 is not set
595# CONFIG_RTC_DRV_M48T35 is not set 632# CONFIG_RTC_DRV_M48T35 is not set
596# CONFIG_RTC_DRV_M48T59 is not set 633# CONFIG_RTC_DRV_M48T59 is not set
634# CONFIG_RTC_DRV_MSM6242 is not set
597# CONFIG_RTC_DRV_BQ4802 is not set 635# CONFIG_RTC_DRV_BQ4802 is not set
636# CONFIG_RTC_DRV_RP5C01 is not set
598# CONFIG_RTC_DRV_V3020 is not set 637# CONFIG_RTC_DRV_V3020 is not set
599 638
600# 639#
@@ -618,6 +657,7 @@ CONFIG_EXT2_FS=y
618# CONFIG_EXT2_FS_XATTR is not set 657# CONFIG_EXT2_FS_XATTR is not set
619# CONFIG_EXT3_FS is not set 658# CONFIG_EXT3_FS is not set
620# CONFIG_EXT4_FS is not set 659# CONFIG_EXT4_FS is not set
660CONFIG_EXT4_USE_FOR_EXT23=y
621# CONFIG_REISERFS_FS is not set 661# CONFIG_REISERFS_FS is not set
622# CONFIG_JFS_FS is not set 662# CONFIG_JFS_FS is not set
623# CONFIG_FS_POSIX_ACL is not set 663# CONFIG_FS_POSIX_ACL is not set
@@ -717,7 +757,7 @@ CONFIG_DEBUG_FS=y
717# CONFIG_HEADERS_CHECK is not set 757# CONFIG_HEADERS_CHECK is not set
718# CONFIG_DEBUG_KERNEL is not set 758# CONFIG_DEBUG_KERNEL is not set
719CONFIG_STACKTRACE=y 759CONFIG_STACKTRACE=y
720# CONFIG_DEBUG_BUGVERBOSE is not set 760CONFIG_DEBUG_BUGVERBOSE=y
721# CONFIG_DEBUG_MEMORY_INIT is not set 761# CONFIG_DEBUG_MEMORY_INIT is not set
722# CONFIG_RCU_CPU_STALL_DETECTOR is not set 762# CONFIG_RCU_CPU_STALL_DETECTOR is not set
723# CONFIG_LATENCYTOP is not set 763# CONFIG_LATENCYTOP is not set
@@ -741,7 +781,6 @@ CONFIG_TRACING_SUPPORT=y
741# CONFIG_SAMPLES is not set 781# CONFIG_SAMPLES is not set
742CONFIG_HAVE_ARCH_KGDB=y 782CONFIG_HAVE_ARCH_KGDB=y
743# CONFIG_SH_STANDARD_BIOS is not set 783# CONFIG_SH_STANDARD_BIOS is not set
744# CONFIG_EARLY_SCIF_CONSOLE is not set
745# CONFIG_DWARF_UNWINDER is not set 784# CONFIG_DWARF_UNWINDER is not set
746 785
747# 786#
@@ -750,7 +789,11 @@ CONFIG_HAVE_ARCH_KGDB=y
750# CONFIG_KEYS is not set 789# CONFIG_KEYS is not set
751# CONFIG_SECURITY is not set 790# CONFIG_SECURITY is not set
752# CONFIG_SECURITYFS is not set 791# CONFIG_SECURITYFS is not set
753# CONFIG_SECURITY_FILE_CAPABILITIES is not set 792# CONFIG_DEFAULT_SECURITY_SELINUX is not set
793# CONFIG_DEFAULT_SECURITY_SMACK is not set
794# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
795CONFIG_DEFAULT_SECURITY_DAC=y
796CONFIG_DEFAULT_SECURITY=""
754# CONFIG_CRYPTO is not set 797# CONFIG_CRYPTO is not set
755CONFIG_BINARY_PRINTF=y 798CONFIG_BINARY_PRINTF=y
756 799
diff --git a/arch/sh/configs/rsk7203_defconfig b/arch/sh/configs/rsk7203_defconfig
index 5cabdb3a84fb..0169e60e0947 100644
--- a/arch/sh/configs/rsk7203_defconfig
+++ b/arch/sh/configs/rsk7203_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:35:04 2009 4# Mon Jan 4 13:23:54 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -30,6 +30,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
30CONFIG_ARCH_NO_VIRT_TO_BUS=y 30CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 31CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
33CONFIG_DMA_NONCOHERENT=y
33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
34CONFIG_CONSTRUCTORS=y 35CONFIG_CONSTRUCTORS=y
35 36
@@ -61,6 +62,7 @@ CONFIG_BSD_PROCESS_ACCT=y
61# 62#
62CONFIG_TREE_RCU=y 63CONFIG_TREE_RCU=y
63# CONFIG_TREE_PREEMPT_RCU is not set 64# CONFIG_TREE_PREEMPT_RCU is not set
65# CONFIG_TINY_RCU is not set
64# CONFIG_RCU_TRACE is not set 66# CONFIG_RCU_TRACE is not set
65CONFIG_RCU_FANOUT=32 67CONFIG_RCU_FANOUT=32
66# CONFIG_RCU_FANOUT_EXACT is not set 68# CONFIG_RCU_FANOUT_EXACT is not set
@@ -104,6 +106,7 @@ CONFIG_TIMERFD=y
104CONFIG_EVENTFD=y 106CONFIG_EVENTFD=y
105CONFIG_AIO=y 107CONFIG_AIO=y
106CONFIG_HAVE_PERF_EVENTS=y 108CONFIG_HAVE_PERF_EVENTS=y
109CONFIG_PERF_USE_VMALLOC=y
107 110
108# 111#
109# Kernel Performance Events And Counters 112# Kernel Performance Events And Counters
@@ -111,11 +114,13 @@ CONFIG_HAVE_PERF_EVENTS=y
111CONFIG_PERF_EVENTS=y 114CONFIG_PERF_EVENTS=y
112CONFIG_EVENT_PROFILE=y 115CONFIG_EVENT_PROFILE=y
113# CONFIG_PERF_COUNTERS is not set 116# CONFIG_PERF_COUNTERS is not set
117# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
114CONFIG_VM_EVENT_COUNTERS=y 118CONFIG_VM_EVENT_COUNTERS=y
115CONFIG_COMPAT_BRK=y 119CONFIG_COMPAT_BRK=y
116# CONFIG_SLAB is not set 120# CONFIG_SLAB is not set
117# CONFIG_SLUB is not set 121# CONFIG_SLUB is not set
118CONFIG_SLOB=y 122CONFIG_SLOB=y
123# CONFIG_MMAP_ALLOW_UNINITIALIZED is not set
119CONFIG_PROFILING=y 124CONFIG_PROFILING=y
120CONFIG_TRACEPOINTS=y 125CONFIG_TRACEPOINTS=y
121CONFIG_OPROFILE=y 126CONFIG_OPROFILE=y
@@ -124,6 +129,7 @@ CONFIG_HAVE_OPROFILE=y
124CONFIG_HAVE_KPROBES=y 129CONFIG_HAVE_KPROBES=y
125CONFIG_HAVE_KRETPROBES=y 130CONFIG_HAVE_KRETPROBES=y
126CONFIG_HAVE_ARCH_TRACEHOOK=y 131CONFIG_HAVE_ARCH_TRACEHOOK=y
132CONFIG_HAVE_DMA_ATTRS=y
127CONFIG_HAVE_CLK=y 133CONFIG_HAVE_CLK=y
128CONFIG_HAVE_DMA_API_DEBUG=y 134CONFIG_HAVE_DMA_API_DEBUG=y
129 135
@@ -149,14 +155,41 @@ CONFIG_LBDAF=y
149# IO Schedulers 155# IO Schedulers
150# 156#
151CONFIG_IOSCHED_NOOP=y 157CONFIG_IOSCHED_NOOP=y
152# CONFIG_IOSCHED_AS is not set
153# CONFIG_IOSCHED_DEADLINE is not set 158# CONFIG_IOSCHED_DEADLINE is not set
154# CONFIG_IOSCHED_CFQ is not set 159# CONFIG_IOSCHED_CFQ is not set
155# CONFIG_DEFAULT_AS is not set
156# CONFIG_DEFAULT_DEADLINE is not set 160# CONFIG_DEFAULT_DEADLINE is not set
157# CONFIG_DEFAULT_CFQ is not set 161# CONFIG_DEFAULT_CFQ is not set
158CONFIG_DEFAULT_NOOP=y 162CONFIG_DEFAULT_NOOP=y
159CONFIG_DEFAULT_IOSCHED="noop" 163CONFIG_DEFAULT_IOSCHED="noop"
164# CONFIG_INLINE_SPIN_TRYLOCK is not set
165# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
166# CONFIG_INLINE_SPIN_LOCK is not set
167# CONFIG_INLINE_SPIN_LOCK_BH is not set
168# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
169# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
170CONFIG_INLINE_SPIN_UNLOCK=y
171# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
172CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
173# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
174# CONFIG_INLINE_READ_TRYLOCK is not set
175# CONFIG_INLINE_READ_LOCK is not set
176# CONFIG_INLINE_READ_LOCK_BH is not set
177# CONFIG_INLINE_READ_LOCK_IRQ is not set
178# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
179CONFIG_INLINE_READ_UNLOCK=y
180# CONFIG_INLINE_READ_UNLOCK_BH is not set
181CONFIG_INLINE_READ_UNLOCK_IRQ=y
182# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
183# CONFIG_INLINE_WRITE_TRYLOCK is not set
184# CONFIG_INLINE_WRITE_LOCK is not set
185# CONFIG_INLINE_WRITE_LOCK_BH is not set
186# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
187# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
188CONFIG_INLINE_WRITE_UNLOCK=y
189# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
190CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
191# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
192# CONFIG_MUTEX_SPIN_ON_OWNER is not set
160# CONFIG_FREEZER is not set 193# CONFIG_FREEZER is not set
161 194
162# 195#
@@ -231,7 +264,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
231# CONFIG_PHYS_ADDR_T_64BIT is not set 264# CONFIG_PHYS_ADDR_T_64BIT is not set
232CONFIG_ZONE_DMA_FLAG=0 265CONFIG_ZONE_DMA_FLAG=0
233CONFIG_NR_QUICK=2 266CONFIG_NR_QUICK=2
234CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
235CONFIG_NOMMU_INITIAL_TRIM_EXCESS=1 267CONFIG_NOMMU_INITIAL_TRIM_EXCESS=1
236 268
237# 269#
@@ -424,9 +456,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
424# CONFIG_AF_RXRPC is not set 456# CONFIG_AF_RXRPC is not set
425CONFIG_WIRELESS=y 457CONFIG_WIRELESS=y
426# CONFIG_CFG80211 is not set 458# CONFIG_CFG80211 is not set
427CONFIG_CFG80211_DEFAULT_PS_VALUE=0
428# CONFIG_WIRELESS_OLD_REGULATORY is not set
429# CONFIG_WIRELESS_EXT is not set
430# CONFIG_LIB80211 is not set 459# CONFIG_LIB80211 is not set
431 460
432# 461#
@@ -539,6 +568,10 @@ CONFIG_MTD_PHYSMAP=y
539CONFIG_BLK_DEV=y 568CONFIG_BLK_DEV=y
540# CONFIG_BLK_DEV_COW_COMMON is not set 569# CONFIG_BLK_DEV_COW_COMMON is not set
541# CONFIG_BLK_DEV_LOOP is not set 570# CONFIG_BLK_DEV_LOOP is not set
571
572#
573# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
574#
542# CONFIG_BLK_DEV_NBD is not set 575# CONFIG_BLK_DEV_NBD is not set
543# CONFIG_BLK_DEV_UB is not set 576# CONFIG_BLK_DEV_UB is not set
544# CONFIG_BLK_DEV_RAM is not set 577# CONFIG_BLK_DEV_RAM is not set
@@ -610,11 +643,12 @@ CONFIG_SMSC911X=y
610# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 643# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
611# CONFIG_B44 is not set 644# CONFIG_B44 is not set
612# CONFIG_KS8842 is not set 645# CONFIG_KS8842 is not set
646# CONFIG_KS8851_MLL is not set
613# CONFIG_NETDEV_1000 is not set 647# CONFIG_NETDEV_1000 is not set
614# CONFIG_NETDEV_10000 is not set 648# CONFIG_NETDEV_10000 is not set
615CONFIG_WLAN=y 649CONFIG_WLAN=y
616# CONFIG_WLAN_PRE80211 is not set 650# CONFIG_USB_ZD1201 is not set
617# CONFIG_WLAN_80211 is not set 651# CONFIG_HOSTAP is not set
618 652
619# 653#
620# Enable WiMAX (Networking options) to see the WiMAX drivers 654# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -643,6 +677,7 @@ CONFIG_WLAN=y
643CONFIG_INPUT=y 677CONFIG_INPUT=y
644CONFIG_INPUT_FF_MEMLESS=m 678CONFIG_INPUT_FF_MEMLESS=m
645# CONFIG_INPUT_POLLDEV is not set 679# CONFIG_INPUT_POLLDEV is not set
680# CONFIG_INPUT_SPARSEKMAP is not set
646 681
647# 682#
648# Userland interfaces 683# Userland interfaces
@@ -743,6 +778,7 @@ CONFIG_SSB_POSSIBLE=y
743# 778#
744# CONFIG_MFD_CORE is not set 779# CONFIG_MFD_CORE is not set
745# CONFIG_MFD_SM501 is not set 780# CONFIG_MFD_SM501 is not set
781# CONFIG_MFD_SH_MOBILE_SDHI is not set
746# CONFIG_HTC_PASIC3 is not set 782# CONFIG_HTC_PASIC3 is not set
747# CONFIG_MFD_TMIO is not set 783# CONFIG_MFD_TMIO is not set
748CONFIG_REGULATOR=y 784CONFIG_REGULATOR=y
@@ -910,6 +946,8 @@ CONFIG_LEDS_CLASS=y
910# 946#
911CONFIG_LEDS_GPIO=y 947CONFIG_LEDS_GPIO=y
912CONFIG_LEDS_GPIO_PLATFORM=y 948CONFIG_LEDS_GPIO_PLATFORM=y
949# CONFIG_LEDS_REGULATOR is not set
950# CONFIG_LEDS_LT3593 is not set
913 951
914# 952#
915# LED Triggers 953# LED Triggers
@@ -955,7 +993,9 @@ CONFIG_RTC_INTF_DEV=y
955# CONFIG_RTC_DRV_M48T86 is not set 993# CONFIG_RTC_DRV_M48T86 is not set
956# CONFIG_RTC_DRV_M48T35 is not set 994# CONFIG_RTC_DRV_M48T35 is not set
957# CONFIG_RTC_DRV_M48T59 is not set 995# CONFIG_RTC_DRV_M48T59 is not set
996# CONFIG_RTC_DRV_MSM6242 is not set
958# CONFIG_RTC_DRV_BQ4802 is not set 997# CONFIG_RTC_DRV_BQ4802 is not set
998# CONFIG_RTC_DRV_RP5C01 is not set
959# CONFIG_RTC_DRV_V3020 is not set 999# CONFIG_RTC_DRV_V3020 is not set
960 1000
961# 1001#
@@ -978,6 +1018,7 @@ CONFIG_RTC_DRV_SH=y
978# CONFIG_EXT2_FS is not set 1018# CONFIG_EXT2_FS is not set
979# CONFIG_EXT3_FS is not set 1019# CONFIG_EXT3_FS is not set
980# CONFIG_EXT4_FS is not set 1020# CONFIG_EXT4_FS is not set
1021CONFIG_EXT4_USE_FOR_EXT23=y
981# CONFIG_REISERFS_FS is not set 1022# CONFIG_REISERFS_FS is not set
982# CONFIG_JFS_FS is not set 1023# CONFIG_JFS_FS is not set
983# CONFIG_FS_POSIX_ACL is not set 1024# CONFIG_FS_POSIX_ACL is not set
@@ -1137,6 +1178,7 @@ CONFIG_DEBUG_OBJECTS=y
1137# CONFIG_DEBUG_OBJECTS_SELFTEST is not set 1178# CONFIG_DEBUG_OBJECTS_SELFTEST is not set
1138# CONFIG_DEBUG_OBJECTS_FREE is not set 1179# CONFIG_DEBUG_OBJECTS_FREE is not set
1139# CONFIG_DEBUG_OBJECTS_TIMERS is not set 1180# CONFIG_DEBUG_OBJECTS_TIMERS is not set
1181# CONFIG_DEBUG_OBJECTS_WORK is not set
1140CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1 1182CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
1141# CONFIG_DEBUG_RT_MUTEXES is not set 1183# CONFIG_DEBUG_RT_MUTEXES is not set
1142# CONFIG_RT_MUTEX_TESTER is not set 1184# CONFIG_RT_MUTEX_TESTER is not set
@@ -1203,9 +1245,6 @@ CONFIG_BRANCH_PROFILE_NONE=y
1203CONFIG_HAVE_ARCH_KGDB=y 1245CONFIG_HAVE_ARCH_KGDB=y
1204# CONFIG_KGDB is not set 1246# CONFIG_KGDB is not set
1205# CONFIG_SH_STANDARD_BIOS is not set 1247# CONFIG_SH_STANDARD_BIOS is not set
1206CONFIG_EARLY_SCIF_CONSOLE=y
1207CONFIG_EARLY_SCIF_CONSOLE_PORT=0xfffe8000
1208CONFIG_EARLY_PRINTK=y
1209# CONFIG_STACK_DEBUG is not set 1248# CONFIG_STACK_DEBUG is not set
1210CONFIG_DEBUG_STACK_USAGE=y 1249CONFIG_DEBUG_STACK_USAGE=y
1211CONFIG_DUMP_CODE=y 1250CONFIG_DUMP_CODE=y
@@ -1218,7 +1257,11 @@ CONFIG_DUMP_CODE=y
1218# CONFIG_KEYS is not set 1257# CONFIG_KEYS is not set
1219# CONFIG_SECURITY is not set 1258# CONFIG_SECURITY is not set
1220# CONFIG_SECURITYFS is not set 1259# CONFIG_SECURITYFS is not set
1221# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1260# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1261# CONFIG_DEFAULT_SECURITY_SMACK is not set
1262# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1263CONFIG_DEFAULT_SECURITY_DAC=y
1264CONFIG_DEFAULT_SECURITY=""
1222# CONFIG_CRYPTO is not set 1265# CONFIG_CRYPTO is not set
1223CONFIG_BINARY_PRINTF=y 1266CONFIG_BINARY_PRINTF=y
1224 1267
diff --git a/arch/sh/configs/rts7751r2d1_defconfig b/arch/sh/configs/rts7751r2d1_defconfig
index 6f1126b3e487..fba1f62d56e7 100644
--- a/arch/sh/configs/rts7751r2d1_defconfig
+++ b/arch/sh/configs/rts7751r2d1_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:36:25 2009 4# Mon Jan 4 13:25:36 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_PCI=y 24CONFIG_SYS_SUPPORTS_PCI=y
24CONFIG_SYS_SUPPORTS_TMU=y 25CONFIG_SYS_SUPPORTS_TMU=y
25CONFIG_STACKTRACE_SUPPORT=y 26CONFIG_STACKTRACE_SUPPORT=y
@@ -31,6 +32,7 @@ CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 32CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
33CONFIG_IO_TRAPPED=y 34CONFIG_IO_TRAPPED=y
35CONFIG_DMA_NONCOHERENT=y
34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 36CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
35CONFIG_CONSTRUCTORS=y 37CONFIG_CONSTRUCTORS=y
36 38
@@ -61,6 +63,7 @@ CONFIG_SYSVIPC_SYSCTL=y
61# 63#
62CONFIG_TREE_RCU=y 64CONFIG_TREE_RCU=y
63# CONFIG_TREE_PREEMPT_RCU is not set 65# CONFIG_TREE_PREEMPT_RCU is not set
66# CONFIG_TINY_RCU is not set
64# CONFIG_RCU_TRACE is not set 67# CONFIG_RCU_TRACE is not set
65CONFIG_RCU_FANOUT=32 68CONFIG_RCU_FANOUT=32
66# CONFIG_RCU_FANOUT_EXACT is not set 69# CONFIG_RCU_FANOUT_EXACT is not set
@@ -95,6 +98,7 @@ CONFIG_EVENTFD=y
95CONFIG_SHMEM=y 98CONFIG_SHMEM=y
96CONFIG_AIO=y 99CONFIG_AIO=y
97CONFIG_HAVE_PERF_EVENTS=y 100CONFIG_HAVE_PERF_EVENTS=y
101CONFIG_PERF_USE_VMALLOC=y
98 102
99# 103#
100# Kernel Performance Events And Counters 104# Kernel Performance Events And Counters
@@ -117,6 +121,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
117CONFIG_HAVE_KPROBES=y 121CONFIG_HAVE_KPROBES=y
118CONFIG_HAVE_KRETPROBES=y 122CONFIG_HAVE_KRETPROBES=y
119CONFIG_HAVE_ARCH_TRACEHOOK=y 123CONFIG_HAVE_ARCH_TRACEHOOK=y
124CONFIG_HAVE_DMA_ATTRS=y
120CONFIG_HAVE_CLK=y 125CONFIG_HAVE_CLK=y
121CONFIG_HAVE_DMA_API_DEBUG=y 126CONFIG_HAVE_DMA_API_DEBUG=y
122 127
@@ -143,14 +148,41 @@ CONFIG_LBDAF=y
143# IO Schedulers 148# IO Schedulers
144# 149#
145CONFIG_IOSCHED_NOOP=y 150CONFIG_IOSCHED_NOOP=y
146CONFIG_IOSCHED_AS=y
147CONFIG_IOSCHED_DEADLINE=y 151CONFIG_IOSCHED_DEADLINE=y
148CONFIG_IOSCHED_CFQ=y 152CONFIG_IOSCHED_CFQ=y
149CONFIG_DEFAULT_AS=y
150# CONFIG_DEFAULT_DEADLINE is not set 153# CONFIG_DEFAULT_DEADLINE is not set
151# CONFIG_DEFAULT_CFQ is not set 154CONFIG_DEFAULT_CFQ=y
152# CONFIG_DEFAULT_NOOP is not set 155# CONFIG_DEFAULT_NOOP is not set
153CONFIG_DEFAULT_IOSCHED="anticipatory" 156CONFIG_DEFAULT_IOSCHED="cfq"
157# CONFIG_INLINE_SPIN_TRYLOCK is not set
158# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
159# CONFIG_INLINE_SPIN_LOCK is not set
160# CONFIG_INLINE_SPIN_LOCK_BH is not set
161# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
162# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
163CONFIG_INLINE_SPIN_UNLOCK=y
164# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
165CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
166# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
167# CONFIG_INLINE_READ_TRYLOCK is not set
168# CONFIG_INLINE_READ_LOCK is not set
169# CONFIG_INLINE_READ_LOCK_BH is not set
170# CONFIG_INLINE_READ_LOCK_IRQ is not set
171# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
172CONFIG_INLINE_READ_UNLOCK=y
173# CONFIG_INLINE_READ_UNLOCK_BH is not set
174CONFIG_INLINE_READ_UNLOCK_IRQ=y
175# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
176# CONFIG_INLINE_WRITE_TRYLOCK is not set
177# CONFIG_INLINE_WRITE_LOCK is not set
178# CONFIG_INLINE_WRITE_LOCK_BH is not set
179# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
180# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
181CONFIG_INLINE_WRITE_UNLOCK=y
182# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
183CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
184# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
185# CONFIG_MUTEX_SPIN_ON_OWNER is not set
154# CONFIG_FREEZER is not set 186# CONFIG_FREEZER is not set
155 187
156# 188#
@@ -226,8 +258,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
226# CONFIG_PHYS_ADDR_T_64BIT is not set 258# CONFIG_PHYS_ADDR_T_64BIT is not set
227CONFIG_ZONE_DMA_FLAG=0 259CONFIG_ZONE_DMA_FLAG=0
228CONFIG_NR_QUICK=2 260CONFIG_NR_QUICK=2
229CONFIG_HAVE_MLOCK=y
230CONFIG_HAVE_MLOCKED_PAGE_BIT=y
231# CONFIG_KSM is not set 261# CONFIG_KSM is not set
232CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 262CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
233 263
@@ -321,7 +351,6 @@ CONFIG_GUSA=y
321CONFIG_ZERO_PAGE_OFFSET=0x00010000 351CONFIG_ZERO_PAGE_OFFSET=0x00010000
322CONFIG_BOOT_LINK_OFFSET=0x00800000 352CONFIG_BOOT_LINK_OFFSET=0x00800000
323CONFIG_ENTRY_OFFSET=0x00001000 353CONFIG_ENTRY_OFFSET=0x00001000
324# CONFIG_UBC_WAKEUP is not set
325CONFIG_CMDLINE_OVERWRITE=y 354CONFIG_CMDLINE_OVERWRITE=y
326# CONFIG_CMDLINE_EXTEND is not set 355# CONFIG_CMDLINE_EXTEND is not set
327CONFIG_CMDLINE="console=tty0 console=ttySC1,115200 root=/dev/sda1" 356CONFIG_CMDLINE="console=tty0 console=ttySC1,115200 root=/dev/sda1"
@@ -330,7 +359,6 @@ CONFIG_CMDLINE="console=tty0 console=ttySC1,115200 root=/dev/sda1"
330# Bus options 359# Bus options
331# 360#
332CONFIG_PCI=y 361CONFIG_PCI=y
333CONFIG_SH_PCIDMA_NONCOHERENT=y
334# CONFIG_PCIEPORTBUS is not set 362# CONFIG_PCIEPORTBUS is not set
335# CONFIG_ARCH_SUPPORTS_MSI is not set 363# CONFIG_ARCH_SUPPORTS_MSI is not set
336CONFIG_PCI_LEGACY=y 364CONFIG_PCI_LEGACY=y
@@ -429,10 +457,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
429# CONFIG_AF_RXRPC is not set 457# CONFIG_AF_RXRPC is not set
430CONFIG_WIRELESS=y 458CONFIG_WIRELESS=y
431# CONFIG_CFG80211 is not set 459# CONFIG_CFG80211 is not set
432CONFIG_CFG80211_DEFAULT_PS_VALUE=0
433# CONFIG_WIRELESS_OLD_REGULATORY is not set
434CONFIG_WIRELESS_EXT=y
435CONFIG_WIRELESS_EXT_SYSFS=y
436# CONFIG_LIB80211 is not set 460# CONFIG_LIB80211 is not set
437 461
438# 462#
@@ -466,6 +490,10 @@ CONFIG_BLK_DEV=y
466# CONFIG_BLK_DEV_UMEM is not set 490# CONFIG_BLK_DEV_UMEM is not set
467# CONFIG_BLK_DEV_COW_COMMON is not set 491# CONFIG_BLK_DEV_COW_COMMON is not set
468# CONFIG_BLK_DEV_LOOP is not set 492# CONFIG_BLK_DEV_LOOP is not set
493
494#
495# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
496#
469# CONFIG_BLK_DEV_NBD is not set 497# CONFIG_BLK_DEV_NBD is not set
470# CONFIG_BLK_DEV_SX8 is not set 498# CONFIG_BLK_DEV_SX8 is not set
471# CONFIG_BLK_DEV_UB is not set 499# CONFIG_BLK_DEV_UB is not set
@@ -482,6 +510,7 @@ CONFIG_MISC_DEVICES=y
482# CONFIG_TIFM_CORE is not set 510# CONFIG_TIFM_CORE is not set
483# CONFIG_ENCLOSURE_SERVICES is not set 511# CONFIG_ENCLOSURE_SERVICES is not set
484# CONFIG_HP_ILO is not set 512# CONFIG_HP_ILO is not set
513# CONFIG_TI_DAC7512 is not set
485# CONFIG_C2PORT is not set 514# CONFIG_C2PORT is not set
486 515
487# 516#
@@ -530,8 +559,11 @@ CONFIG_SCSI_LOWLEVEL=y
530# CONFIG_ISCSI_TCP is not set 559# CONFIG_ISCSI_TCP is not set
531# CONFIG_SCSI_CXGB3_ISCSI is not set 560# CONFIG_SCSI_CXGB3_ISCSI is not set
532# CONFIG_SCSI_BNX2_ISCSI is not set 561# CONFIG_SCSI_BNX2_ISCSI is not set
562# CONFIG_BE2ISCSI is not set
533# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 563# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
564# CONFIG_SCSI_HPSA is not set
534# CONFIG_SCSI_3W_9XXX is not set 565# CONFIG_SCSI_3W_9XXX is not set
566# CONFIG_SCSI_3W_SAS is not set
535# CONFIG_SCSI_ACARD is not set 567# CONFIG_SCSI_ACARD is not set
536# CONFIG_SCSI_AACRAID is not set 568# CONFIG_SCSI_AACRAID is not set
537# CONFIG_SCSI_AIC7XXX is not set 569# CONFIG_SCSI_AIC7XXX is not set
@@ -565,7 +597,9 @@ CONFIG_SCSI_LOWLEVEL=y
565# CONFIG_SCSI_NSP32 is not set 597# CONFIG_SCSI_NSP32 is not set
566# CONFIG_SCSI_DEBUG is not set 598# CONFIG_SCSI_DEBUG is not set
567# CONFIG_SCSI_PMCRAID is not set 599# CONFIG_SCSI_PMCRAID is not set
600# CONFIG_SCSI_PM8001 is not set
568# CONFIG_SCSI_SRP is not set 601# CONFIG_SCSI_SRP is not set
602# CONFIG_SCSI_BFA_FC is not set
569# CONFIG_SCSI_DH is not set 603# CONFIG_SCSI_DH is not set
570# CONFIG_SCSI_OSD_INITIATOR is not set 604# CONFIG_SCSI_OSD_INITIATOR is not set
571CONFIG_ATA=y 605CONFIG_ATA=y
@@ -618,15 +652,16 @@ CONFIG_ATA_SFF=y
618# CONFIG_PATA_NS87415 is not set 652# CONFIG_PATA_NS87415 is not set
619# CONFIG_PATA_OPTI is not set 653# CONFIG_PATA_OPTI is not set
620# CONFIG_PATA_OPTIDMA is not set 654# CONFIG_PATA_OPTIDMA is not set
655# CONFIG_PATA_PDC2027X is not set
621# CONFIG_PATA_PDC_OLD is not set 656# CONFIG_PATA_PDC_OLD is not set
622# CONFIG_PATA_RADISYS is not set 657# CONFIG_PATA_RADISYS is not set
623# CONFIG_PATA_RDC is not set 658# CONFIG_PATA_RDC is not set
624# CONFIG_PATA_RZ1000 is not set 659# CONFIG_PATA_RZ1000 is not set
625# CONFIG_PATA_SC1200 is not set 660# CONFIG_PATA_SC1200 is not set
626# CONFIG_PATA_SERVERWORKS is not set 661# CONFIG_PATA_SERVERWORKS is not set
627# CONFIG_PATA_PDC2027X is not set
628# CONFIG_PATA_SIL680 is not set 662# CONFIG_PATA_SIL680 is not set
629# CONFIG_PATA_SIS is not set 663# CONFIG_PATA_SIS is not set
664# CONFIG_PATA_TOSHIBA is not set
630# CONFIG_PATA_VIA is not set 665# CONFIG_PATA_VIA is not set
631# CONFIG_PATA_WINBOND is not set 666# CONFIG_PATA_WINBOND is not set
632CONFIG_PATA_PLATFORM=y 667CONFIG_PATA_PLATFORM=y
@@ -704,6 +739,7 @@ CONFIG_8139TOO=y
704# CONFIG_TLAN is not set 739# CONFIG_TLAN is not set
705# CONFIG_KS8842 is not set 740# CONFIG_KS8842 is not set
706# CONFIG_KS8851 is not set 741# CONFIG_KS8851 is not set
742# CONFIG_KS8851_MLL is not set
707# CONFIG_VIA_RHINE is not set 743# CONFIG_VIA_RHINE is not set
708# CONFIG_SC92031 is not set 744# CONFIG_SC92031 is not set
709# CONFIG_ATL2 is not set 745# CONFIG_ATL2 is not set
@@ -752,8 +788,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y
752# CONFIG_BE2NET is not set 788# CONFIG_BE2NET is not set
753# CONFIG_TR is not set 789# CONFIG_TR is not set
754CONFIG_WLAN=y 790CONFIG_WLAN=y
755# CONFIG_WLAN_PRE80211 is not set 791# CONFIG_ATMEL is not set
756# CONFIG_WLAN_80211 is not set 792# CONFIG_PRISM54 is not set
793# CONFIG_USB_ZD1201 is not set
794# CONFIG_HOSTAP is not set
757 795
758# 796#
759# Enable WiMAX (Networking options) to see the WiMAX drivers 797# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -776,6 +814,7 @@ CONFIG_WLAN=y
776# CONFIG_NETCONSOLE is not set 814# CONFIG_NETCONSOLE is not set
777# CONFIG_NETPOLL is not set 815# CONFIG_NETPOLL is not set
778# CONFIG_NET_POLL_CONTROLLER is not set 816# CONFIG_NET_POLL_CONTROLLER is not set
817# CONFIG_VMXNET3 is not set
779# CONFIG_ISDN is not set 818# CONFIG_ISDN is not set
780# CONFIG_PHONE is not set 819# CONFIG_PHONE is not set
781 820
@@ -785,6 +824,7 @@ CONFIG_WLAN=y
785CONFIG_INPUT=y 824CONFIG_INPUT=y
786CONFIG_INPUT_FF_MEMLESS=m 825CONFIG_INPUT_FF_MEMLESS=m
787# CONFIG_INPUT_POLLDEV is not set 826# CONFIG_INPUT_POLLDEV is not set
827# CONFIG_INPUT_SPARSEKMAP is not set
788 828
789# 829#
790# Userland interfaces 830# Userland interfaces
@@ -862,7 +902,10 @@ CONFIG_SPI_MASTER=y
862# SPI Master Controller Drivers 902# SPI Master Controller Drivers
863# 903#
864CONFIG_SPI_BITBANG=y 904CONFIG_SPI_BITBANG=y
905# CONFIG_SPI_SH_MSIOF is not set
865CONFIG_SPI_SH_SCI=y 906CONFIG_SPI_SH_SCI=y
907# CONFIG_SPI_XILINX is not set
908# CONFIG_SPI_DESIGNWARE is not set
866 909
867# 910#
868# SPI Protocol Masters 911# SPI Protocol Masters
@@ -915,10 +958,12 @@ CONFIG_SSB_POSSIBLE=y
915# 958#
916# CONFIG_MFD_CORE is not set 959# CONFIG_MFD_CORE is not set
917CONFIG_MFD_SM501=y 960CONFIG_MFD_SM501=y
961# CONFIG_MFD_SH_MOBILE_SDHI is not set
918# CONFIG_HTC_PASIC3 is not set 962# CONFIG_HTC_PASIC3 is not set
919# CONFIG_MFD_TMIO is not set 963# CONFIG_MFD_TMIO is not set
920# CONFIG_MFD_MC13783 is not set 964# CONFIG_MFD_MC13783 is not set
921# CONFIG_EZX_PCAP is not set 965# CONFIG_EZX_PCAP is not set
966# CONFIG_AB4500_CORE is not set
922# CONFIG_REGULATOR is not set 967# CONFIG_REGULATOR is not set
923# CONFIG_MEDIA_SUPPORT is not set 968# CONFIG_MEDIA_SUPPORT is not set
924 969
@@ -1055,6 +1100,7 @@ CONFIG_SND_PCI=y
1055# CONFIG_SND_OXYGEN is not set 1100# CONFIG_SND_OXYGEN is not set
1056# CONFIG_SND_CS4281 is not set 1101# CONFIG_SND_CS4281 is not set
1057# CONFIG_SND_CS46XX is not set 1102# CONFIG_SND_CS46XX is not set
1103# CONFIG_SND_CS5535AUDIO is not set
1058# CONFIG_SND_CTXFI is not set 1104# CONFIG_SND_CTXFI is not set
1059# CONFIG_SND_DARLA20 is not set 1105# CONFIG_SND_DARLA20 is not set
1060# CONFIG_SND_GINA20 is not set 1106# CONFIG_SND_GINA20 is not set
@@ -1308,7 +1354,9 @@ CONFIG_RTC_DRV_R9701=y
1308# CONFIG_RTC_DRV_M48T86 is not set 1354# CONFIG_RTC_DRV_M48T86 is not set
1309# CONFIG_RTC_DRV_M48T35 is not set 1355# CONFIG_RTC_DRV_M48T35 is not set
1310# CONFIG_RTC_DRV_M48T59 is not set 1356# CONFIG_RTC_DRV_M48T59 is not set
1357# CONFIG_RTC_DRV_MSM6242 is not set
1311# CONFIG_RTC_DRV_BQ4802 is not set 1358# CONFIG_RTC_DRV_BQ4802 is not set
1359# CONFIG_RTC_DRV_RP5C01 is not set
1312# CONFIG_RTC_DRV_V3020 is not set 1360# CONFIG_RTC_DRV_V3020 is not set
1313 1361
1314# 1362#
@@ -1333,6 +1381,7 @@ CONFIG_EXT2_FS=y
1333# CONFIG_EXT2_FS_XIP is not set 1381# CONFIG_EXT2_FS_XIP is not set
1334# CONFIG_EXT3_FS is not set 1382# CONFIG_EXT3_FS is not set
1335# CONFIG_EXT4_FS is not set 1383# CONFIG_EXT4_FS is not set
1384CONFIG_EXT4_USE_FOR_EXT23=y
1336# CONFIG_REISERFS_FS is not set 1385# CONFIG_REISERFS_FS is not set
1337# CONFIG_JFS_FS is not set 1386# CONFIG_JFS_FS is not set
1338# CONFIG_FS_POSIX_ACL is not set 1387# CONFIG_FS_POSIX_ACL is not set
@@ -1474,10 +1523,11 @@ CONFIG_DEBUG_FS=y
1474# CONFIG_HEADERS_CHECK is not set 1523# CONFIG_HEADERS_CHECK is not set
1475# CONFIG_DEBUG_KERNEL is not set 1524# CONFIG_DEBUG_KERNEL is not set
1476CONFIG_STACKTRACE=y 1525CONFIG_STACKTRACE=y
1477# CONFIG_DEBUG_BUGVERBOSE is not set 1526CONFIG_DEBUG_BUGVERBOSE=y
1478# CONFIG_DEBUG_MEMORY_INIT is not set 1527# CONFIG_DEBUG_MEMORY_INIT is not set
1479# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1528# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1480# CONFIG_LATENCYTOP is not set 1529# CONFIG_LATENCYTOP is not set
1530# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1481CONFIG_NOP_TRACER=y 1531CONFIG_NOP_TRACER=y
1482CONFIG_HAVE_FUNCTION_TRACER=y 1532CONFIG_HAVE_FUNCTION_TRACER=y
1483CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 1533CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
@@ -1497,9 +1547,6 @@ CONFIG_TRACING_SUPPORT=y
1497# CONFIG_SAMPLES is not set 1547# CONFIG_SAMPLES is not set
1498CONFIG_HAVE_ARCH_KGDB=y 1548CONFIG_HAVE_ARCH_KGDB=y
1499# CONFIG_SH_STANDARD_BIOS is not set 1549# CONFIG_SH_STANDARD_BIOS is not set
1500CONFIG_EARLY_SCIF_CONSOLE=y
1501CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000
1502CONFIG_EARLY_PRINTK=y
1503# CONFIG_DWARF_UNWINDER is not set 1550# CONFIG_DWARF_UNWINDER is not set
1504 1551
1505# 1552#
@@ -1508,7 +1555,11 @@ CONFIG_EARLY_PRINTK=y
1508# CONFIG_KEYS is not set 1555# CONFIG_KEYS is not set
1509# CONFIG_SECURITY is not set 1556# CONFIG_SECURITY is not set
1510# CONFIG_SECURITYFS is not set 1557# CONFIG_SECURITYFS is not set
1511# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1558# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1559# CONFIG_DEFAULT_SECURITY_SMACK is not set
1560# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1561CONFIG_DEFAULT_SECURITY_DAC=y
1562CONFIG_DEFAULT_SECURITY=""
1512CONFIG_CRYPTO=y 1563CONFIG_CRYPTO=y
1513 1564
1514# 1565#
diff --git a/arch/sh/configs/rts7751r2dplus_defconfig b/arch/sh/configs/rts7751r2dplus_defconfig
index 9215bbb13d6f..a8d538f06e67 100644
--- a/arch/sh/configs/rts7751r2dplus_defconfig
+++ b/arch/sh/configs/rts7751r2dplus_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:39:48 2009 4# Mon Jan 4 13:26:39 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_PCI=y 24CONFIG_SYS_SUPPORTS_PCI=y
24CONFIG_SYS_SUPPORTS_TMU=y 25CONFIG_SYS_SUPPORTS_TMU=y
25CONFIG_STACKTRACE_SUPPORT=y 26CONFIG_STACKTRACE_SUPPORT=y
@@ -31,6 +32,7 @@ CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 32CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
33CONFIG_IO_TRAPPED=y 34CONFIG_IO_TRAPPED=y
35CONFIG_DMA_NONCOHERENT=y
34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 36CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
35CONFIG_CONSTRUCTORS=y 37CONFIG_CONSTRUCTORS=y
36 38
@@ -61,6 +63,7 @@ CONFIG_SYSVIPC_SYSCTL=y
61# 63#
62CONFIG_TREE_RCU=y 64CONFIG_TREE_RCU=y
63# CONFIG_TREE_PREEMPT_RCU is not set 65# CONFIG_TREE_PREEMPT_RCU is not set
66# CONFIG_TINY_RCU is not set
64# CONFIG_RCU_TRACE is not set 67# CONFIG_RCU_TRACE is not set
65CONFIG_RCU_FANOUT=32 68CONFIG_RCU_FANOUT=32
66# CONFIG_RCU_FANOUT_EXACT is not set 69# CONFIG_RCU_FANOUT_EXACT is not set
@@ -95,6 +98,7 @@ CONFIG_EVENTFD=y
95CONFIG_SHMEM=y 98CONFIG_SHMEM=y
96CONFIG_AIO=y 99CONFIG_AIO=y
97CONFIG_HAVE_PERF_EVENTS=y 100CONFIG_HAVE_PERF_EVENTS=y
101CONFIG_PERF_USE_VMALLOC=y
98 102
99# 103#
100# Kernel Performance Events And Counters 104# Kernel Performance Events And Counters
@@ -117,6 +121,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
117CONFIG_HAVE_KPROBES=y 121CONFIG_HAVE_KPROBES=y
118CONFIG_HAVE_KRETPROBES=y 122CONFIG_HAVE_KRETPROBES=y
119CONFIG_HAVE_ARCH_TRACEHOOK=y 123CONFIG_HAVE_ARCH_TRACEHOOK=y
124CONFIG_HAVE_DMA_ATTRS=y
120CONFIG_HAVE_CLK=y 125CONFIG_HAVE_CLK=y
121CONFIG_HAVE_DMA_API_DEBUG=y 126CONFIG_HAVE_DMA_API_DEBUG=y
122 127
@@ -143,14 +148,41 @@ CONFIG_LBDAF=y
143# IO Schedulers 148# IO Schedulers
144# 149#
145CONFIG_IOSCHED_NOOP=y 150CONFIG_IOSCHED_NOOP=y
146CONFIG_IOSCHED_AS=y
147CONFIG_IOSCHED_DEADLINE=y 151CONFIG_IOSCHED_DEADLINE=y
148CONFIG_IOSCHED_CFQ=y 152CONFIG_IOSCHED_CFQ=y
149CONFIG_DEFAULT_AS=y
150# CONFIG_DEFAULT_DEADLINE is not set 153# CONFIG_DEFAULT_DEADLINE is not set
151# CONFIG_DEFAULT_CFQ is not set 154CONFIG_DEFAULT_CFQ=y
152# CONFIG_DEFAULT_NOOP is not set 155# CONFIG_DEFAULT_NOOP is not set
153CONFIG_DEFAULT_IOSCHED="anticipatory" 156CONFIG_DEFAULT_IOSCHED="cfq"
157# CONFIG_INLINE_SPIN_TRYLOCK is not set
158# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
159# CONFIG_INLINE_SPIN_LOCK is not set
160# CONFIG_INLINE_SPIN_LOCK_BH is not set
161# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
162# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
163CONFIG_INLINE_SPIN_UNLOCK=y
164# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
165CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
166# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
167# CONFIG_INLINE_READ_TRYLOCK is not set
168# CONFIG_INLINE_READ_LOCK is not set
169# CONFIG_INLINE_READ_LOCK_BH is not set
170# CONFIG_INLINE_READ_LOCK_IRQ is not set
171# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
172CONFIG_INLINE_READ_UNLOCK=y
173# CONFIG_INLINE_READ_UNLOCK_BH is not set
174CONFIG_INLINE_READ_UNLOCK_IRQ=y
175# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
176# CONFIG_INLINE_WRITE_TRYLOCK is not set
177# CONFIG_INLINE_WRITE_LOCK is not set
178# CONFIG_INLINE_WRITE_LOCK_BH is not set
179# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
180# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
181CONFIG_INLINE_WRITE_UNLOCK=y
182# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
183CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
184# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
185# CONFIG_MUTEX_SPIN_ON_OWNER is not set
154# CONFIG_FREEZER is not set 186# CONFIG_FREEZER is not set
155 187
156# 188#
@@ -226,8 +258,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
226# CONFIG_PHYS_ADDR_T_64BIT is not set 258# CONFIG_PHYS_ADDR_T_64BIT is not set
227CONFIG_ZONE_DMA_FLAG=0 259CONFIG_ZONE_DMA_FLAG=0
228CONFIG_NR_QUICK=2 260CONFIG_NR_QUICK=2
229CONFIG_HAVE_MLOCK=y
230CONFIG_HAVE_MLOCKED_PAGE_BIT=y
231# CONFIG_KSM is not set 261# CONFIG_KSM is not set
232CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 262CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
233 263
@@ -321,7 +351,6 @@ CONFIG_GUSA=y
321CONFIG_ZERO_PAGE_OFFSET=0x00010000 351CONFIG_ZERO_PAGE_OFFSET=0x00010000
322CONFIG_BOOT_LINK_OFFSET=0x00800000 352CONFIG_BOOT_LINK_OFFSET=0x00800000
323CONFIG_ENTRY_OFFSET=0x00001000 353CONFIG_ENTRY_OFFSET=0x00001000
324# CONFIG_UBC_WAKEUP is not set
325CONFIG_CMDLINE_OVERWRITE=y 354CONFIG_CMDLINE_OVERWRITE=y
326# CONFIG_CMDLINE_EXTEND is not set 355# CONFIG_CMDLINE_EXTEND is not set
327CONFIG_CMDLINE="console=tty0 console=ttySC1,115200 root=/dev/sda1" 356CONFIG_CMDLINE="console=tty0 console=ttySC1,115200 root=/dev/sda1"
@@ -330,7 +359,6 @@ CONFIG_CMDLINE="console=tty0 console=ttySC1,115200 root=/dev/sda1"
330# Bus options 359# Bus options
331# 360#
332CONFIG_PCI=y 361CONFIG_PCI=y
333CONFIG_SH_PCIDMA_NONCOHERENT=y
334# CONFIG_PCIEPORTBUS is not set 362# CONFIG_PCIEPORTBUS is not set
335# CONFIG_ARCH_SUPPORTS_MSI is not set 363# CONFIG_ARCH_SUPPORTS_MSI is not set
336CONFIG_PCI_LEGACY=y 364CONFIG_PCI_LEGACY=y
@@ -429,10 +457,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
429# CONFIG_AF_RXRPC is not set 457# CONFIG_AF_RXRPC is not set
430CONFIG_WIRELESS=y 458CONFIG_WIRELESS=y
431# CONFIG_CFG80211 is not set 459# CONFIG_CFG80211 is not set
432CONFIG_CFG80211_DEFAULT_PS_VALUE=0
433# CONFIG_WIRELESS_OLD_REGULATORY is not set
434CONFIG_WIRELESS_EXT=y
435CONFIG_WIRELESS_EXT_SYSFS=y
436# CONFIG_LIB80211 is not set 460# CONFIG_LIB80211 is not set
437 461
438# 462#
@@ -552,6 +576,10 @@ CONFIG_BLK_DEV=y
552# CONFIG_BLK_DEV_UMEM is not set 576# CONFIG_BLK_DEV_UMEM is not set
553# CONFIG_BLK_DEV_COW_COMMON is not set 577# CONFIG_BLK_DEV_COW_COMMON is not set
554# CONFIG_BLK_DEV_LOOP is not set 578# CONFIG_BLK_DEV_LOOP is not set
579
580#
581# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
582#
555# CONFIG_BLK_DEV_NBD is not set 583# CONFIG_BLK_DEV_NBD is not set
556# CONFIG_BLK_DEV_SX8 is not set 584# CONFIG_BLK_DEV_SX8 is not set
557# CONFIG_BLK_DEV_UB is not set 585# CONFIG_BLK_DEV_UB is not set
@@ -568,6 +596,7 @@ CONFIG_MISC_DEVICES=y
568# CONFIG_TIFM_CORE is not set 596# CONFIG_TIFM_CORE is not set
569# CONFIG_ENCLOSURE_SERVICES is not set 597# CONFIG_ENCLOSURE_SERVICES is not set
570# CONFIG_HP_ILO is not set 598# CONFIG_HP_ILO is not set
599# CONFIG_TI_DAC7512 is not set
571# CONFIG_C2PORT is not set 600# CONFIG_C2PORT is not set
572 601
573# 602#
@@ -616,8 +645,11 @@ CONFIG_SCSI_LOWLEVEL=y
616# CONFIG_ISCSI_TCP is not set 645# CONFIG_ISCSI_TCP is not set
617# CONFIG_SCSI_CXGB3_ISCSI is not set 646# CONFIG_SCSI_CXGB3_ISCSI is not set
618# CONFIG_SCSI_BNX2_ISCSI is not set 647# CONFIG_SCSI_BNX2_ISCSI is not set
648# CONFIG_BE2ISCSI is not set
619# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 649# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
650# CONFIG_SCSI_HPSA is not set
620# CONFIG_SCSI_3W_9XXX is not set 651# CONFIG_SCSI_3W_9XXX is not set
652# CONFIG_SCSI_3W_SAS is not set
621# CONFIG_SCSI_ACARD is not set 653# CONFIG_SCSI_ACARD is not set
622# CONFIG_SCSI_AACRAID is not set 654# CONFIG_SCSI_AACRAID is not set
623# CONFIG_SCSI_AIC7XXX is not set 655# CONFIG_SCSI_AIC7XXX is not set
@@ -651,7 +683,9 @@ CONFIG_SCSI_LOWLEVEL=y
651# CONFIG_SCSI_NSP32 is not set 683# CONFIG_SCSI_NSP32 is not set
652# CONFIG_SCSI_DEBUG is not set 684# CONFIG_SCSI_DEBUG is not set
653# CONFIG_SCSI_PMCRAID is not set 685# CONFIG_SCSI_PMCRAID is not set
686# CONFIG_SCSI_PM8001 is not set
654# CONFIG_SCSI_SRP is not set 687# CONFIG_SCSI_SRP is not set
688# CONFIG_SCSI_BFA_FC is not set
655# CONFIG_SCSI_DH is not set 689# CONFIG_SCSI_DH is not set
656# CONFIG_SCSI_OSD_INITIATOR is not set 690# CONFIG_SCSI_OSD_INITIATOR is not set
657CONFIG_ATA=y 691CONFIG_ATA=y
@@ -704,15 +738,16 @@ CONFIG_ATA_SFF=y
704# CONFIG_PATA_NS87415 is not set 738# CONFIG_PATA_NS87415 is not set
705# CONFIG_PATA_OPTI is not set 739# CONFIG_PATA_OPTI is not set
706# CONFIG_PATA_OPTIDMA is not set 740# CONFIG_PATA_OPTIDMA is not set
741# CONFIG_PATA_PDC2027X is not set
707# CONFIG_PATA_PDC_OLD is not set 742# CONFIG_PATA_PDC_OLD is not set
708# CONFIG_PATA_RADISYS is not set 743# CONFIG_PATA_RADISYS is not set
709# CONFIG_PATA_RDC is not set 744# CONFIG_PATA_RDC is not set
710# CONFIG_PATA_RZ1000 is not set 745# CONFIG_PATA_RZ1000 is not set
711# CONFIG_PATA_SC1200 is not set 746# CONFIG_PATA_SC1200 is not set
712# CONFIG_PATA_SERVERWORKS is not set 747# CONFIG_PATA_SERVERWORKS is not set
713# CONFIG_PATA_PDC2027X is not set
714# CONFIG_PATA_SIL680 is not set 748# CONFIG_PATA_SIL680 is not set
715# CONFIG_PATA_SIS is not set 749# CONFIG_PATA_SIS is not set
750# CONFIG_PATA_TOSHIBA is not set
716# CONFIG_PATA_VIA is not set 751# CONFIG_PATA_VIA is not set
717# CONFIG_PATA_WINBOND is not set 752# CONFIG_PATA_WINBOND is not set
718CONFIG_PATA_PLATFORM=y 753CONFIG_PATA_PLATFORM=y
@@ -790,6 +825,7 @@ CONFIG_8139TOO=y
790# CONFIG_TLAN is not set 825# CONFIG_TLAN is not set
791# CONFIG_KS8842 is not set 826# CONFIG_KS8842 is not set
792# CONFIG_KS8851 is not set 827# CONFIG_KS8851 is not set
828# CONFIG_KS8851_MLL is not set
793# CONFIG_VIA_RHINE is not set 829# CONFIG_VIA_RHINE is not set
794# CONFIG_SC92031 is not set 830# CONFIG_SC92031 is not set
795# CONFIG_ATL2 is not set 831# CONFIG_ATL2 is not set
@@ -838,8 +874,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y
838# CONFIG_BE2NET is not set 874# CONFIG_BE2NET is not set
839# CONFIG_TR is not set 875# CONFIG_TR is not set
840CONFIG_WLAN=y 876CONFIG_WLAN=y
841# CONFIG_WLAN_PRE80211 is not set 877# CONFIG_ATMEL is not set
842# CONFIG_WLAN_80211 is not set 878# CONFIG_PRISM54 is not set
879# CONFIG_USB_ZD1201 is not set
880# CONFIG_HOSTAP is not set
843 881
844# 882#
845# Enable WiMAX (Networking options) to see the WiMAX drivers 883# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -862,6 +900,7 @@ CONFIG_WLAN=y
862# CONFIG_NETCONSOLE is not set 900# CONFIG_NETCONSOLE is not set
863# CONFIG_NETPOLL is not set 901# CONFIG_NETPOLL is not set
864# CONFIG_NET_POLL_CONTROLLER is not set 902# CONFIG_NET_POLL_CONTROLLER is not set
903# CONFIG_VMXNET3 is not set
865# CONFIG_ISDN is not set 904# CONFIG_ISDN is not set
866# CONFIG_PHONE is not set 905# CONFIG_PHONE is not set
867 906
@@ -871,6 +910,7 @@ CONFIG_WLAN=y
871CONFIG_INPUT=y 910CONFIG_INPUT=y
872CONFIG_INPUT_FF_MEMLESS=m 911CONFIG_INPUT_FF_MEMLESS=m
873# CONFIG_INPUT_POLLDEV is not set 912# CONFIG_INPUT_POLLDEV is not set
913# CONFIG_INPUT_SPARSEKMAP is not set
874 914
875# 915#
876# Userland interfaces 916# Userland interfaces
@@ -948,7 +988,10 @@ CONFIG_SPI_MASTER=y
948# SPI Master Controller Drivers 988# SPI Master Controller Drivers
949# 989#
950CONFIG_SPI_BITBANG=y 990CONFIG_SPI_BITBANG=y
991# CONFIG_SPI_SH_MSIOF is not set
951CONFIG_SPI_SH_SCI=y 992CONFIG_SPI_SH_SCI=y
993# CONFIG_SPI_XILINX is not set
994# CONFIG_SPI_DESIGNWARE is not set
952 995
953# 996#
954# SPI Protocol Masters 997# SPI Protocol Masters
@@ -1001,10 +1044,12 @@ CONFIG_SSB_POSSIBLE=y
1001# 1044#
1002# CONFIG_MFD_CORE is not set 1045# CONFIG_MFD_CORE is not set
1003CONFIG_MFD_SM501=y 1046CONFIG_MFD_SM501=y
1047# CONFIG_MFD_SH_MOBILE_SDHI is not set
1004# CONFIG_HTC_PASIC3 is not set 1048# CONFIG_HTC_PASIC3 is not set
1005# CONFIG_MFD_TMIO is not set 1049# CONFIG_MFD_TMIO is not set
1006# CONFIG_MFD_MC13783 is not set 1050# CONFIG_MFD_MC13783 is not set
1007# CONFIG_EZX_PCAP is not set 1051# CONFIG_EZX_PCAP is not set
1052# CONFIG_AB4500_CORE is not set
1008# CONFIG_REGULATOR is not set 1053# CONFIG_REGULATOR is not set
1009# CONFIG_MEDIA_SUPPORT is not set 1054# CONFIG_MEDIA_SUPPORT is not set
1010 1055
@@ -1141,6 +1186,7 @@ CONFIG_SND_PCI=y
1141# CONFIG_SND_OXYGEN is not set 1186# CONFIG_SND_OXYGEN is not set
1142# CONFIG_SND_CS4281 is not set 1187# CONFIG_SND_CS4281 is not set
1143# CONFIG_SND_CS46XX is not set 1188# CONFIG_SND_CS46XX is not set
1189# CONFIG_SND_CS5535AUDIO is not set
1144# CONFIG_SND_CTXFI is not set 1190# CONFIG_SND_CTXFI is not set
1145# CONFIG_SND_DARLA20 is not set 1191# CONFIG_SND_DARLA20 is not set
1146# CONFIG_SND_GINA20 is not set 1192# CONFIG_SND_GINA20 is not set
@@ -1394,7 +1440,9 @@ CONFIG_RTC_DRV_R9701=y
1394# CONFIG_RTC_DRV_M48T86 is not set 1440# CONFIG_RTC_DRV_M48T86 is not set
1395# CONFIG_RTC_DRV_M48T35 is not set 1441# CONFIG_RTC_DRV_M48T35 is not set
1396# CONFIG_RTC_DRV_M48T59 is not set 1442# CONFIG_RTC_DRV_M48T59 is not set
1443# CONFIG_RTC_DRV_MSM6242 is not set
1397# CONFIG_RTC_DRV_BQ4802 is not set 1444# CONFIG_RTC_DRV_BQ4802 is not set
1445# CONFIG_RTC_DRV_RP5C01 is not set
1398# CONFIG_RTC_DRV_V3020 is not set 1446# CONFIG_RTC_DRV_V3020 is not set
1399 1447
1400# 1448#
@@ -1419,6 +1467,7 @@ CONFIG_EXT2_FS=y
1419# CONFIG_EXT2_FS_XIP is not set 1467# CONFIG_EXT2_FS_XIP is not set
1420# CONFIG_EXT3_FS is not set 1468# CONFIG_EXT3_FS is not set
1421# CONFIG_EXT4_FS is not set 1469# CONFIG_EXT4_FS is not set
1470CONFIG_EXT4_USE_FOR_EXT23=y
1422# CONFIG_REISERFS_FS is not set 1471# CONFIG_REISERFS_FS is not set
1423# CONFIG_JFS_FS is not set 1472# CONFIG_JFS_FS is not set
1424# CONFIG_FS_POSIX_ACL is not set 1473# CONFIG_FS_POSIX_ACL is not set
@@ -1561,10 +1610,11 @@ CONFIG_DEBUG_FS=y
1561# CONFIG_HEADERS_CHECK is not set 1610# CONFIG_HEADERS_CHECK is not set
1562# CONFIG_DEBUG_KERNEL is not set 1611# CONFIG_DEBUG_KERNEL is not set
1563CONFIG_STACKTRACE=y 1612CONFIG_STACKTRACE=y
1564# CONFIG_DEBUG_BUGVERBOSE is not set 1613CONFIG_DEBUG_BUGVERBOSE=y
1565# CONFIG_DEBUG_MEMORY_INIT is not set 1614# CONFIG_DEBUG_MEMORY_INIT is not set
1566# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1615# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1567# CONFIG_LATENCYTOP is not set 1616# CONFIG_LATENCYTOP is not set
1617# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1568CONFIG_NOP_TRACER=y 1618CONFIG_NOP_TRACER=y
1569CONFIG_HAVE_FUNCTION_TRACER=y 1619CONFIG_HAVE_FUNCTION_TRACER=y
1570CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 1620CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
@@ -1584,9 +1634,6 @@ CONFIG_TRACING_SUPPORT=y
1584# CONFIG_SAMPLES is not set 1634# CONFIG_SAMPLES is not set
1585CONFIG_HAVE_ARCH_KGDB=y 1635CONFIG_HAVE_ARCH_KGDB=y
1586# CONFIG_SH_STANDARD_BIOS is not set 1636# CONFIG_SH_STANDARD_BIOS is not set
1587CONFIG_EARLY_SCIF_CONSOLE=y
1588CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000
1589CONFIG_EARLY_PRINTK=y
1590# CONFIG_DWARF_UNWINDER is not set 1637# CONFIG_DWARF_UNWINDER is not set
1591 1638
1592# 1639#
@@ -1595,7 +1642,11 @@ CONFIG_EARLY_PRINTK=y
1595# CONFIG_KEYS is not set 1642# CONFIG_KEYS is not set
1596# CONFIG_SECURITY is not set 1643# CONFIG_SECURITY is not set
1597# CONFIG_SECURITYFS is not set 1644# CONFIG_SECURITYFS is not set
1598# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1645# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1646# CONFIG_DEFAULT_SECURITY_SMACK is not set
1647# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1648CONFIG_DEFAULT_SECURITY_DAC=y
1649CONFIG_DEFAULT_SECURITY=""
1599CONFIG_CRYPTO=y 1650CONFIG_CRYPTO=y
1600 1651
1601# 1652#
diff --git a/arch/sh/configs/sdk7780_defconfig b/arch/sh/configs/sdk7780_defconfig
index 055536b5c5cd..1859ba099945 100644
--- a/arch/sh/configs/sdk7780_defconfig
+++ b/arch/sh/configs/sdk7780_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:40:25 2009 4# Mon Jan 4 13:27:20 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_PCI=y 24CONFIG_SYS_SUPPORTS_PCI=y
24CONFIG_SYS_SUPPORTS_TMU=y 25CONFIG_SYS_SUPPORTS_TMU=y
25CONFIG_STACKTRACE_SUPPORT=y 26CONFIG_STACKTRACE_SUPPORT=y
@@ -30,6 +31,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
30CONFIG_ARCH_NO_VIRT_TO_BUS=y 31CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 32CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
34CONFIG_DMA_NONCOHERENT=y
33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 35CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
34CONFIG_CONSTRUCTORS=y 36CONFIG_CONSTRUCTORS=y
35 37
@@ -63,6 +65,7 @@ CONFIG_BSD_PROCESS_ACCT=y
63# 65#
64CONFIG_TREE_RCU=y 66CONFIG_TREE_RCU=y
65# CONFIG_TREE_PREEMPT_RCU is not set 67# CONFIG_TREE_PREEMPT_RCU is not set
68# CONFIG_TINY_RCU is not set
66# CONFIG_RCU_TRACE is not set 69# CONFIG_RCU_TRACE is not set
67CONFIG_RCU_FANOUT=32 70CONFIG_RCU_FANOUT=32
68# CONFIG_RCU_FANOUT_EXACT is not set 71# CONFIG_RCU_FANOUT_EXACT is not set
@@ -99,6 +102,7 @@ CONFIG_EVENTFD=y
99CONFIG_SHMEM=y 102CONFIG_SHMEM=y
100CONFIG_AIO=y 103CONFIG_AIO=y
101CONFIG_HAVE_PERF_EVENTS=y 104CONFIG_HAVE_PERF_EVENTS=y
105CONFIG_PERF_USE_VMALLOC=y
102 106
103# 107#
104# Kernel Performance Events And Counters 108# Kernel Performance Events And Counters
@@ -119,6 +123,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
119CONFIG_HAVE_KPROBES=y 123CONFIG_HAVE_KPROBES=y
120CONFIG_HAVE_KRETPROBES=y 124CONFIG_HAVE_KRETPROBES=y
121CONFIG_HAVE_ARCH_TRACEHOOK=y 125CONFIG_HAVE_ARCH_TRACEHOOK=y
126CONFIG_HAVE_DMA_ATTRS=y
122CONFIG_HAVE_CLK=y 127CONFIG_HAVE_CLK=y
123CONFIG_HAVE_DMA_API_DEBUG=y 128CONFIG_HAVE_DMA_API_DEBUG=y
124 129
@@ -145,14 +150,41 @@ CONFIG_LBDAF=y
145# IO Schedulers 150# IO Schedulers
146# 151#
147CONFIG_IOSCHED_NOOP=y 152CONFIG_IOSCHED_NOOP=y
148CONFIG_IOSCHED_AS=y
149CONFIG_IOSCHED_DEADLINE=y 153CONFIG_IOSCHED_DEADLINE=y
150CONFIG_IOSCHED_CFQ=y 154CONFIG_IOSCHED_CFQ=y
151CONFIG_DEFAULT_AS=y
152# CONFIG_DEFAULT_DEADLINE is not set 155# CONFIG_DEFAULT_DEADLINE is not set
153# CONFIG_DEFAULT_CFQ is not set 156CONFIG_DEFAULT_CFQ=y
154# CONFIG_DEFAULT_NOOP is not set 157# CONFIG_DEFAULT_NOOP is not set
155CONFIG_DEFAULT_IOSCHED="anticipatory" 158CONFIG_DEFAULT_IOSCHED="cfq"
159# CONFIG_INLINE_SPIN_TRYLOCK is not set
160# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
161# CONFIG_INLINE_SPIN_LOCK is not set
162# CONFIG_INLINE_SPIN_LOCK_BH is not set
163# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
164# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
165# CONFIG_INLINE_SPIN_UNLOCK is not set
166# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
167# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
168# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
169# CONFIG_INLINE_READ_TRYLOCK is not set
170# CONFIG_INLINE_READ_LOCK is not set
171# CONFIG_INLINE_READ_LOCK_BH is not set
172# CONFIG_INLINE_READ_LOCK_IRQ is not set
173# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
174# CONFIG_INLINE_READ_UNLOCK is not set
175# CONFIG_INLINE_READ_UNLOCK_BH is not set
176# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
177# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
178# CONFIG_INLINE_WRITE_TRYLOCK is not set
179# CONFIG_INLINE_WRITE_LOCK is not set
180# CONFIG_INLINE_WRITE_LOCK_BH is not set
181# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
182# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
183# CONFIG_INLINE_WRITE_UNLOCK is not set
184# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
185# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
186# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
187# CONFIG_MUTEX_SPIN_ON_OWNER is not set
156# CONFIG_FREEZER is not set 188# CONFIG_FREEZER is not set
157 189
158# 190#
@@ -239,8 +271,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
239# CONFIG_PHYS_ADDR_T_64BIT is not set 271# CONFIG_PHYS_ADDR_T_64BIT is not set
240CONFIG_ZONE_DMA_FLAG=0 272CONFIG_ZONE_DMA_FLAG=0
241CONFIG_NR_QUICK=2 273CONFIG_NR_QUICK=2
242CONFIG_HAVE_MLOCK=y
243CONFIG_HAVE_MLOCKED_PAGE_BIT=y
244# CONFIG_KSM is not set 274# CONFIG_KSM is not set
245CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 275CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
246 276
@@ -291,9 +321,9 @@ CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
291# 321#
292# DMA support 322# DMA support
293# 323#
294CONFIG_SH_DMA_API=y
295CONFIG_SH_DMA=y 324CONFIG_SH_DMA=y
296CONFIG_SH_DMA_IRQ_MULTI=y 325CONFIG_SH_DMA_IRQ_MULTI=y
326CONFIG_SH_DMA_API=y
297CONFIG_NR_ONCHIP_DMA_CHANNELS=12 327CONFIG_NR_ONCHIP_DMA_CHANNELS=12
298# CONFIG_NR_DMA_CHANNELS_BOOL is not set 328# CONFIG_NR_DMA_CHANNELS_BOOL is not set
299 329
@@ -339,7 +369,6 @@ CONFIG_CMDLINE="mem=128M console=tty0 console=ttySC0,115200 ip=bootp root=/dev/n
339# Bus options 369# Bus options
340# 370#
341CONFIG_PCI=y 371CONFIG_PCI=y
342CONFIG_SH_PCIDMA_NONCOHERENT=y
343# CONFIG_PCIEPORTBUS is not set 372# CONFIG_PCIEPORTBUS is not set
344# CONFIG_ARCH_SUPPORTS_MSI is not set 373# CONFIG_ARCH_SUPPORTS_MSI is not set
345# CONFIG_PCI_LEGACY is not set 374# CONFIG_PCI_LEGACY is not set
@@ -347,7 +376,6 @@ CONFIG_PCI_DEBUG=y
347# CONFIG_PCI_STUB is not set 376# CONFIG_PCI_STUB is not set
348# CONFIG_PCI_IOV is not set 377# CONFIG_PCI_IOV is not set
349CONFIG_PCCARD=y 378CONFIG_PCCARD=y
350# CONFIG_PCMCIA_DEBUG is not set
351CONFIG_PCMCIA=y 379CONFIG_PCMCIA=y
352CONFIG_PCMCIA_LOAD_CIS=y 380CONFIG_PCMCIA_LOAD_CIS=y
353CONFIG_PCMCIA_IOCTL=y 381CONFIG_PCMCIA_IOCTL=y
@@ -445,6 +473,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y
445# CONFIG_INET6_XFRM_MODE_BEET is not set 473# CONFIG_INET6_XFRM_MODE_BEET is not set
446# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 474# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
447CONFIG_IPV6_SIT=y 475CONFIG_IPV6_SIT=y
476# CONFIG_IPV6_SIT_6RD is not set
448CONFIG_IPV6_NDISC_NODETYPE=y 477CONFIG_IPV6_NDISC_NODETYPE=y
449# CONFIG_IPV6_TUNNEL is not set 478# CONFIG_IPV6_TUNNEL is not set
450# CONFIG_IPV6_MULTIPLE_TABLES is not set 479# CONFIG_IPV6_MULTIPLE_TABLES is not set
@@ -515,9 +544,6 @@ CONFIG_NET_SCH_FIFO=y
515# CONFIG_AF_RXRPC is not set 544# CONFIG_AF_RXRPC is not set
516CONFIG_WIRELESS=y 545CONFIG_WIRELESS=y
517# CONFIG_CFG80211 is not set 546# CONFIG_CFG80211 is not set
518CONFIG_CFG80211_DEFAULT_PS_VALUE=0
519# CONFIG_WIRELESS_OLD_REGULATORY is not set
520# CONFIG_WIRELESS_EXT is not set
521# CONFIG_LIB80211 is not set 547# CONFIG_LIB80211 is not set
522 548
523# 549#
@@ -558,6 +584,10 @@ CONFIG_BLK_DEV=y
558# CONFIG_BLK_DEV_COW_COMMON is not set 584# CONFIG_BLK_DEV_COW_COMMON is not set
559CONFIG_BLK_DEV_LOOP=y 585CONFIG_BLK_DEV_LOOP=y
560# CONFIG_BLK_DEV_CRYPTOLOOP is not set 586# CONFIG_BLK_DEV_CRYPTOLOOP is not set
587
588#
589# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
590#
561# CONFIG_BLK_DEV_NBD is not set 591# CONFIG_BLK_DEV_NBD is not set
562# CONFIG_BLK_DEV_SX8 is not set 592# CONFIG_BLK_DEV_SX8 is not set
563# CONFIG_BLK_DEV_UB is not set 593# CONFIG_BLK_DEV_UB is not set
@@ -663,8 +693,11 @@ CONFIG_SCSI_FC_ATTRS=y
663CONFIG_SCSI_LOWLEVEL=y 693CONFIG_SCSI_LOWLEVEL=y
664# CONFIG_ISCSI_TCP is not set 694# CONFIG_ISCSI_TCP is not set
665# CONFIG_SCSI_BNX2_ISCSI is not set 695# CONFIG_SCSI_BNX2_ISCSI is not set
696# CONFIG_BE2ISCSI is not set
666# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 697# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
698# CONFIG_SCSI_HPSA is not set
667# CONFIG_SCSI_3W_9XXX is not set 699# CONFIG_SCSI_3W_9XXX is not set
700# CONFIG_SCSI_3W_SAS is not set
668# CONFIG_SCSI_ACARD is not set 701# CONFIG_SCSI_ACARD is not set
669# CONFIG_SCSI_AACRAID is not set 702# CONFIG_SCSI_AACRAID is not set
670# CONFIG_SCSI_AIC7XXX is not set 703# CONFIG_SCSI_AIC7XXX is not set
@@ -698,7 +731,9 @@ CONFIG_SCSI_LOWLEVEL=y
698# CONFIG_SCSI_NSP32 is not set 731# CONFIG_SCSI_NSP32 is not set
699# CONFIG_SCSI_DEBUG is not set 732# CONFIG_SCSI_DEBUG is not set
700# CONFIG_SCSI_PMCRAID is not set 733# CONFIG_SCSI_PMCRAID is not set
734# CONFIG_SCSI_PM8001 is not set
701# CONFIG_SCSI_SRP is not set 735# CONFIG_SCSI_SRP is not set
736# CONFIG_SCSI_BFA_FC is not set
702# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set 737# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
703# CONFIG_SCSI_DH is not set 738# CONFIG_SCSI_DH is not set
704# CONFIG_SCSI_OSD_INITIATOR is not set 739# CONFIG_SCSI_OSD_INITIATOR is not set
@@ -753,15 +788,16 @@ CONFIG_ATA_SFF=y
753# CONFIG_PATA_OPTI is not set 788# CONFIG_PATA_OPTI is not set
754# CONFIG_PATA_OPTIDMA is not set 789# CONFIG_PATA_OPTIDMA is not set
755# CONFIG_PATA_PCMCIA is not set 790# CONFIG_PATA_PCMCIA is not set
791# CONFIG_PATA_PDC2027X is not set
756# CONFIG_PATA_PDC_OLD is not set 792# CONFIG_PATA_PDC_OLD is not set
757# CONFIG_PATA_RADISYS is not set 793# CONFIG_PATA_RADISYS is not set
758# CONFIG_PATA_RDC is not set 794# CONFIG_PATA_RDC is not set
759# CONFIG_PATA_RZ1000 is not set 795# CONFIG_PATA_RZ1000 is not set
760# CONFIG_PATA_SC1200 is not set 796# CONFIG_PATA_SC1200 is not set
761# CONFIG_PATA_SERVERWORKS is not set 797# CONFIG_PATA_SERVERWORKS is not set
762# CONFIG_PATA_PDC2027X is not set
763# CONFIG_PATA_SIL680 is not set 798# CONFIG_PATA_SIL680 is not set
764# CONFIG_PATA_SIS is not set 799# CONFIG_PATA_SIS is not set
800# CONFIG_PATA_TOSHIBA is not set
765# CONFIG_PATA_VIA is not set 801# CONFIG_PATA_VIA is not set
766# CONFIG_PATA_WINBOND is not set 802# CONFIG_PATA_WINBOND is not set
767# CONFIG_PATA_PLATFORM is not set 803# CONFIG_PATA_PLATFORM is not set
@@ -827,14 +863,20 @@ CONFIG_SMC91X=y
827# CONFIG_NET_PCI is not set 863# CONFIG_NET_PCI is not set
828# CONFIG_B44 is not set 864# CONFIG_B44 is not set
829# CONFIG_KS8842 is not set 865# CONFIG_KS8842 is not set
866# CONFIG_KS8851_MLL is not set
830# CONFIG_NET_POCKET is not set 867# CONFIG_NET_POCKET is not set
831# CONFIG_ATL2 is not set 868# CONFIG_ATL2 is not set
832# CONFIG_NETDEV_1000 is not set 869# CONFIG_NETDEV_1000 is not set
833# CONFIG_NETDEV_10000 is not set 870# CONFIG_NETDEV_10000 is not set
834# CONFIG_TR is not set 871# CONFIG_TR is not set
835CONFIG_WLAN=y 872CONFIG_WLAN=y
836# CONFIG_WLAN_PRE80211 is not set 873# CONFIG_PCMCIA_RAYCS is not set
837# CONFIG_WLAN_80211 is not set 874# CONFIG_ATMEL is not set
875# CONFIG_AIRO_CS is not set
876# CONFIG_PCMCIA_WL3501 is not set
877# CONFIG_PRISM54 is not set
878# CONFIG_USB_ZD1201 is not set
879# CONFIG_HOSTAP is not set
838 880
839# 881#
840# Enable WiMAX (Networking options) to see the WiMAX drivers 882# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -861,6 +903,7 @@ CONFIG_NETCONSOLE=y
861CONFIG_NETPOLL=y 903CONFIG_NETPOLL=y
862# CONFIG_NETPOLL_TRAP is not set 904# CONFIG_NETPOLL_TRAP is not set
863CONFIG_NET_POLL_CONTROLLER=y 905CONFIG_NET_POLL_CONTROLLER=y
906# CONFIG_VMXNET3 is not set
864# CONFIG_ISDN is not set 907# CONFIG_ISDN is not set
865# CONFIG_PHONE is not set 908# CONFIG_PHONE is not set
866 909
@@ -870,6 +913,7 @@ CONFIG_NET_POLL_CONTROLLER=y
870CONFIG_INPUT=y 913CONFIG_INPUT=y
871CONFIG_INPUT_FF_MEMLESS=m 914CONFIG_INPUT_FF_MEMLESS=m
872# CONFIG_INPUT_POLLDEV is not set 915# CONFIG_INPUT_POLLDEV is not set
916# CONFIG_INPUT_SPARSEKMAP is not set
873 917
874# 918#
875# Userland interfaces 919# Userland interfaces
@@ -922,6 +966,7 @@ CONFIG_SERIO=y
922# CONFIG_SERIO_PCIPS2 is not set 966# CONFIG_SERIO_PCIPS2 is not set
923CONFIG_SERIO_LIBPS2=y 967CONFIG_SERIO_LIBPS2=y
924# CONFIG_SERIO_RAW is not set 968# CONFIG_SERIO_RAW is not set
969# CONFIG_SERIO_ALTERA_PS2 is not set
925# CONFIG_GAMEPORT is not set 970# CONFIG_GAMEPORT is not set
926 971
927# 972#
@@ -1009,6 +1054,7 @@ CONFIG_SSB_DRIVER_PCICORE=y
1009# 1054#
1010# CONFIG_MFD_CORE is not set 1055# CONFIG_MFD_CORE is not set
1011# CONFIG_MFD_SM501 is not set 1056# CONFIG_MFD_SM501 is not set
1057# CONFIG_MFD_SH_MOBILE_SDHI is not set
1012# CONFIG_HTC_PASIC3 is not set 1058# CONFIG_HTC_PASIC3 is not set
1013# CONFIG_MFD_TMIO is not set 1059# CONFIG_MFD_TMIO is not set
1014# CONFIG_REGULATOR is not set 1060# CONFIG_REGULATOR is not set
@@ -1534,8 +1580,6 @@ CONFIG_BRANCH_PROFILE_NONE=y
1534CONFIG_HAVE_ARCH_KGDB=y 1580CONFIG_HAVE_ARCH_KGDB=y
1535# CONFIG_KGDB is not set 1581# CONFIG_KGDB is not set
1536CONFIG_SH_STANDARD_BIOS=y 1582CONFIG_SH_STANDARD_BIOS=y
1537# CONFIG_EARLY_SCIF_CONSOLE is not set
1538# CONFIG_EARLY_PRINTK is not set
1539# CONFIG_STACK_DEBUG is not set 1583# CONFIG_STACK_DEBUG is not set
1540# CONFIG_DEBUG_STACK_USAGE is not set 1584# CONFIG_DEBUG_STACK_USAGE is not set
1541# CONFIG_4KSTACKS is not set 1585# CONFIG_4KSTACKS is not set
@@ -1549,7 +1593,11 @@ CONFIG_DUMP_CODE=y
1549# CONFIG_KEYS is not set 1593# CONFIG_KEYS is not set
1550# CONFIG_SECURITY is not set 1594# CONFIG_SECURITY is not set
1551# CONFIG_SECURITYFS is not set 1595# CONFIG_SECURITYFS is not set
1552# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1596# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1597# CONFIG_DEFAULT_SECURITY_SMACK is not set
1598# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1599CONFIG_DEFAULT_SECURITY_DAC=y
1600CONFIG_DEFAULT_SECURITY=""
1553CONFIG_CRYPTO=y 1601CONFIG_CRYPTO=y
1554 1602
1555# 1603#
diff --git a/arch/sh/configs/se7206_defconfig b/arch/sh/configs/se7206_defconfig
index 1cd1777aa436..43e6780a89d1 100644
--- a/arch/sh/configs/se7206_defconfig
+++ b/arch/sh/configs/se7206_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:45:28 2009 4# Mon Jan 4 13:30:00 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -30,6 +30,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
30CONFIG_ARCH_NO_VIRT_TO_BUS=y 30CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 31CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
33CONFIG_DMA_NONCOHERENT=y
33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
34CONFIG_CONSTRUCTORS=y 35CONFIG_CONSTRUCTORS=y
35 36
@@ -64,6 +65,7 @@ CONFIG_AUDIT_TREE=y
64# 65#
65CONFIG_TREE_RCU=y 66CONFIG_TREE_RCU=y
66# CONFIG_TREE_PREEMPT_RCU is not set 67# CONFIG_TREE_PREEMPT_RCU is not set
68# CONFIG_TINY_RCU is not set
67CONFIG_RCU_TRACE=y 69CONFIG_RCU_TRACE=y
68CONFIG_RCU_FANOUT=32 70CONFIG_RCU_FANOUT=32
69# CONFIG_RCU_FANOUT_EXACT is not set 71# CONFIG_RCU_FANOUT_EXACT is not set
@@ -115,6 +117,7 @@ CONFIG_TIMERFD=y
115CONFIG_EVENTFD=y 117CONFIG_EVENTFD=y
116CONFIG_AIO=y 118CONFIG_AIO=y
117CONFIG_HAVE_PERF_EVENTS=y 119CONFIG_HAVE_PERF_EVENTS=y
120CONFIG_PERF_USE_VMALLOC=y
118 121
119# 122#
120# Kernel Performance Events And Counters 123# Kernel Performance Events And Counters
@@ -122,11 +125,13 @@ CONFIG_HAVE_PERF_EVENTS=y
122CONFIG_PERF_EVENTS=y 125CONFIG_PERF_EVENTS=y
123CONFIG_EVENT_PROFILE=y 126CONFIG_EVENT_PROFILE=y
124# CONFIG_PERF_COUNTERS is not set 127# CONFIG_PERF_COUNTERS is not set
128# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
125CONFIG_VM_EVENT_COUNTERS=y 129CONFIG_VM_EVENT_COUNTERS=y
126# CONFIG_COMPAT_BRK is not set 130# CONFIG_COMPAT_BRK is not set
127# CONFIG_SLAB is not set 131# CONFIG_SLAB is not set
128# CONFIG_SLUB is not set 132# CONFIG_SLUB is not set
129CONFIG_SLOB=y 133CONFIG_SLOB=y
134# CONFIG_MMAP_ALLOW_UNINITIALIZED is not set
130CONFIG_PROFILING=y 135CONFIG_PROFILING=y
131CONFIG_TRACEPOINTS=y 136CONFIG_TRACEPOINTS=y
132CONFIG_OPROFILE=y 137CONFIG_OPROFILE=y
@@ -135,6 +140,7 @@ CONFIG_HAVE_OPROFILE=y
135CONFIG_HAVE_KPROBES=y 140CONFIG_HAVE_KPROBES=y
136CONFIG_HAVE_KRETPROBES=y 141CONFIG_HAVE_KRETPROBES=y
137CONFIG_HAVE_ARCH_TRACEHOOK=y 142CONFIG_HAVE_ARCH_TRACEHOOK=y
143CONFIG_HAVE_DMA_ATTRS=y
138CONFIG_HAVE_CLK=y 144CONFIG_HAVE_CLK=y
139CONFIG_HAVE_DMA_API_DEBUG=y 145CONFIG_HAVE_DMA_API_DEBUG=y
140 146
@@ -156,19 +162,47 @@ CONFIG_BLOCK=y
156CONFIG_LBDAF=y 162CONFIG_LBDAF=y
157# CONFIG_BLK_DEV_BSG is not set 163# CONFIG_BLK_DEV_BSG is not set
158# CONFIG_BLK_DEV_INTEGRITY is not set 164# CONFIG_BLK_DEV_INTEGRITY is not set
165# CONFIG_BLK_CGROUP is not set
159 166
160# 167#
161# IO Schedulers 168# IO Schedulers
162# 169#
163CONFIG_IOSCHED_NOOP=y 170CONFIG_IOSCHED_NOOP=y
164# CONFIG_IOSCHED_AS is not set
165# CONFIG_IOSCHED_DEADLINE is not set 171# CONFIG_IOSCHED_DEADLINE is not set
166# CONFIG_IOSCHED_CFQ is not set 172# CONFIG_IOSCHED_CFQ is not set
167# CONFIG_DEFAULT_AS is not set
168# CONFIG_DEFAULT_DEADLINE is not set 173# CONFIG_DEFAULT_DEADLINE is not set
169# CONFIG_DEFAULT_CFQ is not set 174# CONFIG_DEFAULT_CFQ is not set
170CONFIG_DEFAULT_NOOP=y 175CONFIG_DEFAULT_NOOP=y
171CONFIG_DEFAULT_IOSCHED="noop" 176CONFIG_DEFAULT_IOSCHED="noop"
177# CONFIG_INLINE_SPIN_TRYLOCK is not set
178# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
179# CONFIG_INLINE_SPIN_LOCK is not set
180# CONFIG_INLINE_SPIN_LOCK_BH is not set
181# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
182# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
183# CONFIG_INLINE_SPIN_UNLOCK is not set
184# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
185# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
186# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
187# CONFIG_INLINE_READ_TRYLOCK is not set
188# CONFIG_INLINE_READ_LOCK is not set
189# CONFIG_INLINE_READ_LOCK_BH is not set
190# CONFIG_INLINE_READ_LOCK_IRQ is not set
191# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
192# CONFIG_INLINE_READ_UNLOCK is not set
193# CONFIG_INLINE_READ_UNLOCK_BH is not set
194# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
195# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
196# CONFIG_INLINE_WRITE_TRYLOCK is not set
197# CONFIG_INLINE_WRITE_LOCK is not set
198# CONFIG_INLINE_WRITE_LOCK_BH is not set
199# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
200# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
201# CONFIG_INLINE_WRITE_UNLOCK is not set
202# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
203# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
204# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
205# CONFIG_MUTEX_SPIN_ON_OWNER is not set
172# CONFIG_FREEZER is not set 206# CONFIG_FREEZER is not set
173 207
174# 208#
@@ -243,7 +277,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
243# CONFIG_PHYS_ADDR_T_64BIT is not set 277# CONFIG_PHYS_ADDR_T_64BIT is not set
244CONFIG_ZONE_DMA_FLAG=0 278CONFIG_ZONE_DMA_FLAG=0
245CONFIG_NR_QUICK=2 279CONFIG_NR_QUICK=2
246CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
247CONFIG_NOMMU_INITIAL_TRIM_EXCESS=1 280CONFIG_NOMMU_INITIAL_TRIM_EXCESS=1
248 281
249# 282#
@@ -438,9 +471,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
438# CONFIG_AF_RXRPC is not set 471# CONFIG_AF_RXRPC is not set
439CONFIG_WIRELESS=y 472CONFIG_WIRELESS=y
440# CONFIG_CFG80211 is not set 473# CONFIG_CFG80211 is not set
441CONFIG_CFG80211_DEFAULT_PS_VALUE=0
442# CONFIG_WIRELESS_OLD_REGULATORY is not set
443# CONFIG_WIRELESS_EXT is not set
444# CONFIG_LIB80211 is not set 474# CONFIG_LIB80211 is not set
445 475
446# 476#
@@ -551,6 +581,10 @@ CONFIG_BLK_DEV=y
551# CONFIG_BLK_DEV_COW_COMMON is not set 581# CONFIG_BLK_DEV_COW_COMMON is not set
552CONFIG_BLK_DEV_LOOP=y 582CONFIG_BLK_DEV_LOOP=y
553# CONFIG_BLK_DEV_CRYPTOLOOP is not set 583# CONFIG_BLK_DEV_CRYPTOLOOP is not set
584
585#
586# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
587#
554# CONFIG_BLK_DEV_NBD is not set 588# CONFIG_BLK_DEV_NBD is not set
555CONFIG_BLK_DEV_RAM=y 589CONFIG_BLK_DEV_RAM=y
556CONFIG_BLK_DEV_RAM_COUNT=16 590CONFIG_BLK_DEV_RAM_COUNT=16
@@ -605,11 +639,11 @@ CONFIG_SMC91X=y
605# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 639# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
606# CONFIG_B44 is not set 640# CONFIG_B44 is not set
607# CONFIG_KS8842 is not set 641# CONFIG_KS8842 is not set
642# CONFIG_KS8851_MLL is not set
608# CONFIG_NETDEV_1000 is not set 643# CONFIG_NETDEV_1000 is not set
609# CONFIG_NETDEV_10000 is not set 644# CONFIG_NETDEV_10000 is not set
610CONFIG_WLAN=y 645CONFIG_WLAN=y
611# CONFIG_WLAN_PRE80211 is not set 646# CONFIG_HOSTAP is not set
612# CONFIG_WLAN_80211 is not set
613 647
614# 648#
615# Enable WiMAX (Networking options) to see the WiMAX drivers 649# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -685,6 +719,7 @@ CONFIG_SSB_POSSIBLE=y
685# 719#
686# CONFIG_MFD_CORE is not set 720# CONFIG_MFD_CORE is not set
687# CONFIG_MFD_SM501 is not set 721# CONFIG_MFD_SM501 is not set
722# CONFIG_MFD_SH_MOBILE_SDHI is not set
688# CONFIG_HTC_PASIC3 is not set 723# CONFIG_HTC_PASIC3 is not set
689# CONFIG_MFD_TMIO is not set 724# CONFIG_MFD_TMIO is not set
690# CONFIG_REGULATOR is not set 725# CONFIG_REGULATOR is not set
@@ -738,7 +773,9 @@ CONFIG_RTC_INTF_DEV=y
738# CONFIG_RTC_DRV_M48T86 is not set 773# CONFIG_RTC_DRV_M48T86 is not set
739# CONFIG_RTC_DRV_M48T35 is not set 774# CONFIG_RTC_DRV_M48T35 is not set
740# CONFIG_RTC_DRV_M48T59 is not set 775# CONFIG_RTC_DRV_M48T59 is not set
776# CONFIG_RTC_DRV_MSM6242 is not set
741# CONFIG_RTC_DRV_BQ4802 is not set 777# CONFIG_RTC_DRV_BQ4802 is not set
778# CONFIG_RTC_DRV_RP5C01 is not set
742# CONFIG_RTC_DRV_V3020 is not set 779# CONFIG_RTC_DRV_V3020 is not set
743 780
744# 781#
@@ -762,6 +799,7 @@ CONFIG_EXT2_FS=y
762# CONFIG_EXT2_FS_XATTR is not set 799# CONFIG_EXT2_FS_XATTR is not set
763# CONFIG_EXT3_FS is not set 800# CONFIG_EXT3_FS is not set
764# CONFIG_EXT4_FS is not set 801# CONFIG_EXT4_FS is not set
802CONFIG_EXT4_USE_FOR_EXT23=y
765# CONFIG_REISERFS_FS is not set 803# CONFIG_REISERFS_FS is not set
766# CONFIG_JFS_FS is not set 804# CONFIG_JFS_FS is not set
767# CONFIG_FS_POSIX_ACL is not set 805# CONFIG_FS_POSIX_ACL is not set
@@ -911,6 +949,7 @@ CONFIG_FRAME_POINTER=y
911# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set 949# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
912# CONFIG_FAULT_INJECTION is not set 950# CONFIG_FAULT_INJECTION is not set
913# CONFIG_LATENCYTOP is not set 951# CONFIG_LATENCYTOP is not set
952# CONFIG_SYSCTL_SYSCALL_CHECK is not set
914# CONFIG_PAGE_POISONING is not set 953# CONFIG_PAGE_POISONING is not set
915CONFIG_NOP_TRACER=y 954CONFIG_NOP_TRACER=y
916CONFIG_HAVE_FUNCTION_TRACER=y 955CONFIG_HAVE_FUNCTION_TRACER=y
@@ -947,7 +986,6 @@ CONFIG_BRANCH_PROFILE_NONE=y
947CONFIG_HAVE_ARCH_KGDB=y 986CONFIG_HAVE_ARCH_KGDB=y
948# CONFIG_KGDB is not set 987# CONFIG_KGDB is not set
949# CONFIG_SH_STANDARD_BIOS is not set 988# CONFIG_SH_STANDARD_BIOS is not set
950# CONFIG_EARLY_SCIF_CONSOLE is not set
951# CONFIG_STACK_DEBUG is not set 989# CONFIG_STACK_DEBUG is not set
952CONFIG_DEBUG_STACK_USAGE=y 990CONFIG_DEBUG_STACK_USAGE=y
953CONFIG_DUMP_CODE=y 991CONFIG_DUMP_CODE=y
@@ -960,7 +998,11 @@ CONFIG_DUMP_CODE=y
960# CONFIG_KEYS is not set 998# CONFIG_KEYS is not set
961# CONFIG_SECURITY is not set 999# CONFIG_SECURITY is not set
962# CONFIG_SECURITYFS is not set 1000# CONFIG_SECURITYFS is not set
963# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1001# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1002# CONFIG_DEFAULT_SECURITY_SMACK is not set
1003# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1004CONFIG_DEFAULT_SECURITY_DAC=y
1005CONFIG_DEFAULT_SECURITY=""
964CONFIG_CRYPTO=y 1006CONFIG_CRYPTO=y
965 1007
966# 1008#
diff --git a/arch/sh/configs/se7343_defconfig b/arch/sh/configs/se7343_defconfig
index 5531444b808c..ec494e32fa2e 100644
--- a/arch/sh/configs/se7343_defconfig
+++ b/arch/sh/configs/se7343_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:46:55 2009 4# Mon Jan 4 13:30:41 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21CONFIG_ARCH_SUSPEND_POSSIBLE=y 21CONFIG_ARCH_SUSPEND_POSSIBLE=y
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_CMT=y 24CONFIG_SYS_SUPPORTS_CMT=y
24CONFIG_SYS_SUPPORTS_TMU=y 25CONFIG_SYS_SUPPORTS_TMU=y
25CONFIG_STACKTRACE_SUPPORT=y 26CONFIG_STACKTRACE_SUPPORT=y
@@ -30,6 +31,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
30CONFIG_ARCH_NO_VIRT_TO_BUS=y 31CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 32CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
34CONFIG_DMA_NONCOHERENT=y
33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 35CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
34CONFIG_CONSTRUCTORS=y 36CONFIG_CONSTRUCTORS=y
35 37
@@ -61,6 +63,7 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
61# 63#
62CONFIG_TREE_RCU=y 64CONFIG_TREE_RCU=y
63# CONFIG_TREE_PREEMPT_RCU is not set 65# CONFIG_TREE_PREEMPT_RCU is not set
66# CONFIG_TINY_RCU is not set
64# CONFIG_RCU_TRACE is not set 67# CONFIG_RCU_TRACE is not set
65CONFIG_RCU_FANOUT=32 68CONFIG_RCU_FANOUT=32
66# CONFIG_RCU_FANOUT_EXACT is not set 69# CONFIG_RCU_FANOUT_EXACT is not set
@@ -99,6 +102,7 @@ CONFIG_EVENTFD=y
99# CONFIG_SHMEM is not set 102# CONFIG_SHMEM is not set
100CONFIG_AIO=y 103CONFIG_AIO=y
101CONFIG_HAVE_PERF_EVENTS=y 104CONFIG_HAVE_PERF_EVENTS=y
105CONFIG_PERF_USE_VMALLOC=y
102 106
103# 107#
104# Kernel Performance Events And Counters 108# Kernel Performance Events And Counters
@@ -117,6 +121,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
117CONFIG_HAVE_KPROBES=y 121CONFIG_HAVE_KPROBES=y
118CONFIG_HAVE_KRETPROBES=y 122CONFIG_HAVE_KRETPROBES=y
119CONFIG_HAVE_ARCH_TRACEHOOK=y 123CONFIG_HAVE_ARCH_TRACEHOOK=y
124CONFIG_HAVE_DMA_ATTRS=y
120CONFIG_HAVE_CLK=y 125CONFIG_HAVE_CLK=y
121CONFIG_HAVE_DMA_API_DEBUG=y 126CONFIG_HAVE_DMA_API_DEBUG=y
122 127
@@ -126,6 +131,7 @@ CONFIG_HAVE_DMA_API_DEBUG=y
126# CONFIG_SLOW_WORK is not set 131# CONFIG_SLOW_WORK is not set
127CONFIG_HAVE_GENERIC_DMA_COHERENT=y 132CONFIG_HAVE_GENERIC_DMA_COHERENT=y
128CONFIG_SLABINFO=y 133CONFIG_SLABINFO=y
134CONFIG_RT_MUTEXES=y
129CONFIG_BASE_SMALL=0 135CONFIG_BASE_SMALL=0
130CONFIG_MODULES=y 136CONFIG_MODULES=y
131# CONFIG_MODULE_FORCE_LOAD is not set 137# CONFIG_MODULE_FORCE_LOAD is not set
@@ -142,14 +148,41 @@ CONFIG_LBDAF=y
142# IO Schedulers 148# IO Schedulers
143# 149#
144CONFIG_IOSCHED_NOOP=y 150CONFIG_IOSCHED_NOOP=y
145# CONFIG_IOSCHED_AS is not set
146CONFIG_IOSCHED_DEADLINE=y 151CONFIG_IOSCHED_DEADLINE=y
147# CONFIG_IOSCHED_CFQ is not set 152# CONFIG_IOSCHED_CFQ is not set
148# CONFIG_DEFAULT_AS is not set
149CONFIG_DEFAULT_DEADLINE=y 153CONFIG_DEFAULT_DEADLINE=y
150# CONFIG_DEFAULT_CFQ is not set 154# CONFIG_DEFAULT_CFQ is not set
151# CONFIG_DEFAULT_NOOP is not set 155# CONFIG_DEFAULT_NOOP is not set
152CONFIG_DEFAULT_IOSCHED="deadline" 156CONFIG_DEFAULT_IOSCHED="deadline"
157# CONFIG_INLINE_SPIN_TRYLOCK is not set
158# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
159# CONFIG_INLINE_SPIN_LOCK is not set
160# CONFIG_INLINE_SPIN_LOCK_BH is not set
161# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
162# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
163CONFIG_INLINE_SPIN_UNLOCK=y
164# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
165CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
166# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
167# CONFIG_INLINE_READ_TRYLOCK is not set
168# CONFIG_INLINE_READ_LOCK is not set
169# CONFIG_INLINE_READ_LOCK_BH is not set
170# CONFIG_INLINE_READ_LOCK_IRQ is not set
171# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
172CONFIG_INLINE_READ_UNLOCK=y
173# CONFIG_INLINE_READ_UNLOCK_BH is not set
174CONFIG_INLINE_READ_UNLOCK_IRQ=y
175# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
176# CONFIG_INLINE_WRITE_TRYLOCK is not set
177# CONFIG_INLINE_WRITE_LOCK is not set
178# CONFIG_INLINE_WRITE_LOCK_BH is not set
179# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
180# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
181CONFIG_INLINE_WRITE_UNLOCK=y
182# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
183CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
184# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
185# CONFIG_MUTEX_SPIN_ON_OWNER is not set
153CONFIG_FREEZER=y 186CONFIG_FREEZER=y
154 187
155# 188#
@@ -228,8 +261,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
228# CONFIG_PHYS_ADDR_T_64BIT is not set 261# CONFIG_PHYS_ADDR_T_64BIT is not set
229CONFIG_ZONE_DMA_FLAG=0 262CONFIG_ZONE_DMA_FLAG=0
230CONFIG_NR_QUICK=2 263CONFIG_NR_QUICK=2
231CONFIG_HAVE_MLOCK=y
232CONFIG_HAVE_MLOCKED_PAGE_BIT=y
233# CONFIG_KSM is not set 264# CONFIG_KSM is not set
234CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 265CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
235 266
@@ -263,7 +294,6 @@ CONFIG_SH_7343_SOLUTION_ENGINE=y
263# 294#
264CONFIG_SH_TIMER_TMU=y 295CONFIG_SH_TIMER_TMU=y
265# CONFIG_SH_TIMER_CMT is not set 296# CONFIG_SH_TIMER_CMT is not set
266CONFIG_SH_PCLK_FREQ=33333333
267CONFIG_SH_CLK_CPG=y 297CONFIG_SH_CLK_CPG=y
268# CONFIG_NO_HZ is not set 298# CONFIG_NO_HZ is not set
269# CONFIG_HIGH_RES_TIMERS is not set 299# CONFIG_HIGH_RES_TIMERS is not set
@@ -413,9 +443,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
413# CONFIG_AF_RXRPC is not set 443# CONFIG_AF_RXRPC is not set
414CONFIG_WIRELESS=y 444CONFIG_WIRELESS=y
415# CONFIG_CFG80211 is not set 445# CONFIG_CFG80211 is not set
416CONFIG_CFG80211_DEFAULT_PS_VALUE=0
417# CONFIG_WIRELESS_OLD_REGULATORY is not set
418# CONFIG_WIRELESS_EXT is not set
419# CONFIG_LIB80211 is not set 446# CONFIG_LIB80211 is not set
420 447
421# 448#
@@ -525,6 +552,10 @@ CONFIG_MTD_PHYSMAP=y
525CONFIG_BLK_DEV=y 552CONFIG_BLK_DEV=y
526# CONFIG_BLK_DEV_COW_COMMON is not set 553# CONFIG_BLK_DEV_COW_COMMON is not set
527# CONFIG_BLK_DEV_LOOP is not set 554# CONFIG_BLK_DEV_LOOP is not set
555
556#
557# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
558#
528# CONFIG_BLK_DEV_NBD is not set 559# CONFIG_BLK_DEV_NBD is not set
529# CONFIG_BLK_DEV_UB is not set 560# CONFIG_BLK_DEV_UB is not set
530# CONFIG_BLK_DEV_RAM is not set 561# CONFIG_BLK_DEV_RAM is not set
@@ -585,8 +616,8 @@ CONFIG_MII=y
585# CONFIG_NETDEV_1000 is not set 616# CONFIG_NETDEV_1000 is not set
586# CONFIG_NETDEV_10000 is not set 617# CONFIG_NETDEV_10000 is not set
587CONFIG_WLAN=y 618CONFIG_WLAN=y
588# CONFIG_WLAN_PRE80211 is not set 619# CONFIG_USB_ZD1201 is not set
589# CONFIG_WLAN_80211 is not set 620# CONFIG_HOSTAP is not set
590 621
591# 622#
592# Enable WiMAX (Networking options) to see the WiMAX drivers 623# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -628,6 +659,7 @@ CONFIG_USB_NET_DM9601=y
628CONFIG_INPUT=y 659CONFIG_INPUT=y
629# CONFIG_INPUT_FF_MEMLESS is not set 660# CONFIG_INPUT_FF_MEMLESS is not set
630# CONFIG_INPUT_POLLDEV is not set 661# CONFIG_INPUT_POLLDEV is not set
662# CONFIG_INPUT_SPARSEKMAP is not set
631 663
632# 664#
633# Userland interfaces 665# Userland interfaces
@@ -724,7 +756,6 @@ CONFIG_I2C_SH_MOBILE=y
724# 756#
725# Miscellaneous I2C Chip support 757# Miscellaneous I2C Chip support
726# 758#
727# CONFIG_DS1682 is not set
728# CONFIG_SENSORS_TSL2550 is not set 759# CONFIG_SENSORS_TSL2550 is not set
729# CONFIG_I2C_DEBUG_CORE is not set 760# CONFIG_I2C_DEBUG_CORE is not set
730# CONFIG_I2C_DEBUG_ALGO is not set 761# CONFIG_I2C_DEBUG_ALGO is not set
@@ -753,15 +784,18 @@ CONFIG_SSB_POSSIBLE=y
753# 784#
754# CONFIG_MFD_CORE is not set 785# CONFIG_MFD_CORE is not set
755# CONFIG_MFD_SM501 is not set 786# CONFIG_MFD_SM501 is not set
787# CONFIG_MFD_SH_MOBILE_SDHI is not set
756# CONFIG_HTC_PASIC3 is not set 788# CONFIG_HTC_PASIC3 is not set
757# CONFIG_TWL4030_CORE is not set 789# CONFIG_TWL4030_CORE is not set
758# CONFIG_MFD_TMIO is not set 790# CONFIG_MFD_TMIO is not set
759# CONFIG_PMIC_DA903X is not set 791# CONFIG_PMIC_DA903X is not set
792# CONFIG_PMIC_ADP5520 is not set
760# CONFIG_MFD_WM8400 is not set 793# CONFIG_MFD_WM8400 is not set
761# CONFIG_MFD_WM831X is not set 794# CONFIG_MFD_WM831X is not set
762# CONFIG_MFD_WM8350_I2C is not set 795# CONFIG_MFD_WM8350_I2C is not set
763# CONFIG_MFD_PCF50633 is not set 796# CONFIG_MFD_PCF50633 is not set
764# CONFIG_AB3100_CORE is not set 797# CONFIG_AB3100_CORE is not set
798# CONFIG_MFD_88PM8607 is not set
765# CONFIG_REGULATOR is not set 799# CONFIG_REGULATOR is not set
766# CONFIG_MEDIA_SUPPORT is not set 800# CONFIG_MEDIA_SUPPORT is not set
767 801
@@ -1173,10 +1207,11 @@ CONFIG_FRAME_WARN=1024
1173# CONFIG_DEBUG_FS is not set 1207# CONFIG_DEBUG_FS is not set
1174# CONFIG_HEADERS_CHECK is not set 1208# CONFIG_HEADERS_CHECK is not set
1175# CONFIG_DEBUG_KERNEL is not set 1209# CONFIG_DEBUG_KERNEL is not set
1176# CONFIG_DEBUG_BUGVERBOSE is not set 1210CONFIG_DEBUG_BUGVERBOSE=y
1177# CONFIG_DEBUG_MEMORY_INIT is not set 1211# CONFIG_DEBUG_MEMORY_INIT is not set
1178# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1212# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1179# CONFIG_LATENCYTOP is not set 1213# CONFIG_LATENCYTOP is not set
1214# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1180CONFIG_HAVE_FUNCTION_TRACER=y 1215CONFIG_HAVE_FUNCTION_TRACER=y
1181CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 1216CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1182CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 1217CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
@@ -1189,9 +1224,6 @@ CONFIG_TRACING_SUPPORT=y
1189# CONFIG_SAMPLES is not set 1224# CONFIG_SAMPLES is not set
1190CONFIG_HAVE_ARCH_KGDB=y 1225CONFIG_HAVE_ARCH_KGDB=y
1191# CONFIG_SH_STANDARD_BIOS is not set 1226# CONFIG_SH_STANDARD_BIOS is not set
1192CONFIG_EARLY_SCIF_CONSOLE=y
1193CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe00000
1194CONFIG_EARLY_PRINTK=y
1195# CONFIG_DWARF_UNWINDER is not set 1227# CONFIG_DWARF_UNWINDER is not set
1196 1228
1197# 1229#
@@ -1200,7 +1232,11 @@ CONFIG_EARLY_PRINTK=y
1200# CONFIG_KEYS is not set 1232# CONFIG_KEYS is not set
1201# CONFIG_SECURITY is not set 1233# CONFIG_SECURITY is not set
1202# CONFIG_SECURITYFS is not set 1234# CONFIG_SECURITYFS is not set
1203# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1235# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1236# CONFIG_DEFAULT_SECURITY_SMACK is not set
1237# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1238CONFIG_DEFAULT_SECURITY_DAC=y
1239CONFIG_DEFAULT_SECURITY=""
1204CONFIG_CRYPTO=y 1240CONFIG_CRYPTO=y
1205 1241
1206# 1242#
diff --git a/arch/sh/configs/se7619_defconfig b/arch/sh/configs/se7619_defconfig
index 6921b199b1d6..ee87e2b2168f 100644
--- a/arch/sh/configs/se7619_defconfig
+++ b/arch/sh/configs/se7619_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:50:05 2009 4# Mon Jan 4 13:34:15 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -29,6 +29,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
29CONFIG_ARCH_NO_VIRT_TO_BUS=y 29CONFIG_ARCH_NO_VIRT_TO_BUS=y
30CONFIG_ARCH_HAS_DEFAULT_IDLE=y 30CONFIG_ARCH_HAS_DEFAULT_IDLE=y
31CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 31CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
32CONFIG_DMA_NONCOHERENT=y
32CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
33CONFIG_CONSTRUCTORS=y 34CONFIG_CONSTRUCTORS=y
34 35
@@ -54,6 +55,7 @@ CONFIG_KERNEL_GZIP=y
54# 55#
55CONFIG_TREE_RCU=y 56CONFIG_TREE_RCU=y
56# CONFIG_TREE_PREEMPT_RCU is not set 57# CONFIG_TREE_PREEMPT_RCU is not set
58# CONFIG_TINY_RCU is not set
57# CONFIG_RCU_TRACE is not set 59# CONFIG_RCU_TRACE is not set
58CONFIG_RCU_FANOUT=32 60CONFIG_RCU_FANOUT=32
59# CONFIG_RCU_FANOUT_EXACT is not set 61# CONFIG_RCU_FANOUT_EXACT is not set
@@ -84,6 +86,7 @@ CONFIG_TIMERFD=y
84CONFIG_EVENTFD=y 86CONFIG_EVENTFD=y
85CONFIG_AIO=y 87CONFIG_AIO=y
86CONFIG_HAVE_PERF_EVENTS=y 88CONFIG_HAVE_PERF_EVENTS=y
89CONFIG_PERF_USE_VMALLOC=y
87 90
88# 91#
89# Kernel Performance Events And Counters 92# Kernel Performance Events And Counters
@@ -95,11 +98,13 @@ CONFIG_COMPAT_BRK=y
95CONFIG_SLAB=y 98CONFIG_SLAB=y
96# CONFIG_SLUB is not set 99# CONFIG_SLUB is not set
97# CONFIG_SLOB is not set 100# CONFIG_SLOB is not set
101# CONFIG_MMAP_ALLOW_UNINITIALIZED is not set
98# CONFIG_PROFILING is not set 102# CONFIG_PROFILING is not set
99CONFIG_HAVE_OPROFILE=y 103CONFIG_HAVE_OPROFILE=y
100CONFIG_HAVE_KPROBES=y 104CONFIG_HAVE_KPROBES=y
101CONFIG_HAVE_KRETPROBES=y 105CONFIG_HAVE_KRETPROBES=y
102CONFIG_HAVE_ARCH_TRACEHOOK=y 106CONFIG_HAVE_ARCH_TRACEHOOK=y
107CONFIG_HAVE_DMA_ATTRS=y
103CONFIG_HAVE_CLK=y 108CONFIG_HAVE_CLK=y
104CONFIG_HAVE_DMA_API_DEBUG=y 109CONFIG_HAVE_DMA_API_DEBUG=y
105 110
@@ -120,14 +125,41 @@ CONFIG_LBDAF=y
120# IO Schedulers 125# IO Schedulers
121# 126#
122CONFIG_IOSCHED_NOOP=y 127CONFIG_IOSCHED_NOOP=y
123# CONFIG_IOSCHED_AS is not set
124# CONFIG_IOSCHED_DEADLINE is not set 128# CONFIG_IOSCHED_DEADLINE is not set
125# CONFIG_IOSCHED_CFQ is not set 129# CONFIG_IOSCHED_CFQ is not set
126# CONFIG_DEFAULT_AS is not set
127# CONFIG_DEFAULT_DEADLINE is not set 130# CONFIG_DEFAULT_DEADLINE is not set
128# CONFIG_DEFAULT_CFQ is not set 131# CONFIG_DEFAULT_CFQ is not set
129CONFIG_DEFAULT_NOOP=y 132CONFIG_DEFAULT_NOOP=y
130CONFIG_DEFAULT_IOSCHED="noop" 133CONFIG_DEFAULT_IOSCHED="noop"
134# CONFIG_INLINE_SPIN_TRYLOCK is not set
135# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
136# CONFIG_INLINE_SPIN_LOCK is not set
137# CONFIG_INLINE_SPIN_LOCK_BH is not set
138# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
139# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
140CONFIG_INLINE_SPIN_UNLOCK=y
141# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
142CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
143# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
144# CONFIG_INLINE_READ_TRYLOCK is not set
145# CONFIG_INLINE_READ_LOCK is not set
146# CONFIG_INLINE_READ_LOCK_BH is not set
147# CONFIG_INLINE_READ_LOCK_IRQ is not set
148# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
149CONFIG_INLINE_READ_UNLOCK=y
150# CONFIG_INLINE_READ_UNLOCK_BH is not set
151CONFIG_INLINE_READ_UNLOCK_IRQ=y
152# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
153# CONFIG_INLINE_WRITE_TRYLOCK is not set
154# CONFIG_INLINE_WRITE_LOCK is not set
155# CONFIG_INLINE_WRITE_LOCK_BH is not set
156# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
157# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
158CONFIG_INLINE_WRITE_UNLOCK=y
159# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
160CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
161# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
162# CONFIG_MUTEX_SPIN_ON_OWNER is not set
131# CONFIG_FREEZER is not set 163# CONFIG_FREEZER is not set
132 164
133# 165#
@@ -201,7 +233,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
201# CONFIG_PHYS_ADDR_T_64BIT is not set 233# CONFIG_PHYS_ADDR_T_64BIT is not set
202CONFIG_ZONE_DMA_FLAG=0 234CONFIG_ZONE_DMA_FLAG=0
203CONFIG_NR_QUICK=2 235CONFIG_NR_QUICK=2
204CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
205CONFIG_NOMMU_INITIAL_TRIM_EXCESS=1 236CONFIG_NOMMU_INITIAL_TRIM_EXCESS=1
206 237
207# 238#
@@ -401,6 +432,10 @@ CONFIG_MTD_PHYSMAP=y
401CONFIG_BLK_DEV=y 432CONFIG_BLK_DEV=y
402# CONFIG_BLK_DEV_COW_COMMON is not set 433# CONFIG_BLK_DEV_COW_COMMON is not set
403# CONFIG_BLK_DEV_LOOP is not set 434# CONFIG_BLK_DEV_LOOP is not set
435
436#
437# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
438#
404# CONFIG_BLK_DEV_RAM is not set 439# CONFIG_BLK_DEV_RAM is not set
405# CONFIG_CDROM_PKTCDVD is not set 440# CONFIG_CDROM_PKTCDVD is not set
406# CONFIG_BLK_DEV_HD is not set 441# CONFIG_BLK_DEV_HD is not set
@@ -432,6 +467,7 @@ CONFIG_HAVE_IDE=y
432CONFIG_INPUT=y 467CONFIG_INPUT=y
433# CONFIG_INPUT_FF_MEMLESS is not set 468# CONFIG_INPUT_FF_MEMLESS is not set
434# CONFIG_INPUT_POLLDEV is not set 469# CONFIG_INPUT_POLLDEV is not set
470# CONFIG_INPUT_SPARSEKMAP is not set
435 471
436# 472#
437# Userland interfaces 473# Userland interfaces
@@ -508,6 +544,7 @@ CONFIG_SSB_POSSIBLE=y
508# 544#
509# CONFIG_MFD_CORE is not set 545# CONFIG_MFD_CORE is not set
510# CONFIG_MFD_SM501 is not set 546# CONFIG_MFD_SM501 is not set
547# CONFIG_MFD_SH_MOBILE_SDHI is not set
511# CONFIG_HTC_PASIC3 is not set 548# CONFIG_HTC_PASIC3 is not set
512# CONFIG_MFD_TMIO is not set 549# CONFIG_MFD_TMIO is not set
513# CONFIG_REGULATOR is not set 550# CONFIG_REGULATOR is not set
@@ -575,6 +612,7 @@ CONFIG_RTC_LIB=y
575# CONFIG_EXT2_FS is not set 612# CONFIG_EXT2_FS is not set
576# CONFIG_EXT3_FS is not set 613# CONFIG_EXT3_FS is not set
577# CONFIG_EXT4_FS is not set 614# CONFIG_EXT4_FS is not set
615CONFIG_EXT4_USE_FOR_EXT23=y
578# CONFIG_REISERFS_FS is not set 616# CONFIG_REISERFS_FS is not set
579# CONFIG_JFS_FS is not set 617# CONFIG_JFS_FS is not set
580# CONFIG_FS_POSIX_ACL is not set 618# CONFIG_FS_POSIX_ACL is not set
@@ -661,10 +699,11 @@ CONFIG_FRAME_WARN=1024
661# CONFIG_UNUSED_SYMBOLS is not set 699# CONFIG_UNUSED_SYMBOLS is not set
662# CONFIG_HEADERS_CHECK is not set 700# CONFIG_HEADERS_CHECK is not set
663# CONFIG_DEBUG_KERNEL is not set 701# CONFIG_DEBUG_KERNEL is not set
664# CONFIG_DEBUG_BUGVERBOSE is not set 702CONFIG_DEBUG_BUGVERBOSE=y
665# CONFIG_DEBUG_MEMORY_INIT is not set 703# CONFIG_DEBUG_MEMORY_INIT is not set
666# CONFIG_RCU_CPU_STALL_DETECTOR is not set 704# CONFIG_RCU_CPU_STALL_DETECTOR is not set
667# CONFIG_LATENCYTOP is not set 705# CONFIG_LATENCYTOP is not set
706# CONFIG_SYSCTL_SYSCALL_CHECK is not set
668CONFIG_HAVE_FUNCTION_TRACER=y 707CONFIG_HAVE_FUNCTION_TRACER=y
669CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 708CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
670CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 709CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
@@ -677,7 +716,6 @@ CONFIG_TRACING_SUPPORT=y
677# CONFIG_SAMPLES is not set 716# CONFIG_SAMPLES is not set
678CONFIG_HAVE_ARCH_KGDB=y 717CONFIG_HAVE_ARCH_KGDB=y
679# CONFIG_SH_STANDARD_BIOS is not set 718# CONFIG_SH_STANDARD_BIOS is not set
680# CONFIG_EARLY_SCIF_CONSOLE is not set
681# CONFIG_DWARF_UNWINDER is not set 719# CONFIG_DWARF_UNWINDER is not set
682 720
683# 721#
@@ -685,7 +723,11 @@ CONFIG_HAVE_ARCH_KGDB=y
685# 723#
686# CONFIG_KEYS is not set 724# CONFIG_KEYS is not set
687# CONFIG_SECURITYFS is not set 725# CONFIG_SECURITYFS is not set
688# CONFIG_SECURITY_FILE_CAPABILITIES is not set 726# CONFIG_DEFAULT_SECURITY_SELINUX is not set
727# CONFIG_DEFAULT_SECURITY_SMACK is not set
728# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
729CONFIG_DEFAULT_SECURITY_DAC=y
730CONFIG_DEFAULT_SECURITY=""
689# CONFIG_CRYPTO is not set 731# CONFIG_CRYPTO is not set
690# CONFIG_BINARY_PRINTF is not set 732# CONFIG_BINARY_PRINTF is not set
691 733
diff --git a/arch/sh/configs/se7705_defconfig b/arch/sh/configs/se7705_defconfig
index 3abb06879f02..03f4219f2086 100644
--- a/arch/sh/configs/se7705_defconfig
+++ b/arch/sh/configs/se7705_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:50:52 2009 4# Mon Jan 4 13:34:37 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -29,6 +29,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
29CONFIG_ARCH_NO_VIRT_TO_BUS=y 29CONFIG_ARCH_NO_VIRT_TO_BUS=y
30CONFIG_ARCH_HAS_DEFAULT_IDLE=y 30CONFIG_ARCH_HAS_DEFAULT_IDLE=y
31CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 31CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
32CONFIG_DMA_NONCOHERENT=y
32CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
33CONFIG_CONSTRUCTORS=y 34CONFIG_CONSTRUCTORS=y
34 35
@@ -59,6 +60,7 @@ CONFIG_KERNEL_GZIP=y
59# 60#
60CONFIG_TREE_RCU=y 61CONFIG_TREE_RCU=y
61# CONFIG_TREE_PREEMPT_RCU is not set 62# CONFIG_TREE_PREEMPT_RCU is not set
63# CONFIG_TINY_RCU is not set
62# CONFIG_RCU_TRACE is not set 64# CONFIG_RCU_TRACE is not set
63CONFIG_RCU_FANOUT=32 65CONFIG_RCU_FANOUT=32
64# CONFIG_RCU_FANOUT_EXACT is not set 66# CONFIG_RCU_FANOUT_EXACT is not set
@@ -94,6 +96,7 @@ CONFIG_EVENTFD=y
94CONFIG_SHMEM=y 96CONFIG_SHMEM=y
95CONFIG_AIO=y 97CONFIG_AIO=y
96CONFIG_HAVE_PERF_EVENTS=y 98CONFIG_HAVE_PERF_EVENTS=y
99CONFIG_PERF_USE_VMALLOC=y
97 100
98# 101#
99# Kernel Performance Events And Counters 102# Kernel Performance Events And Counters
@@ -111,6 +114,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
111CONFIG_HAVE_KPROBES=y 114CONFIG_HAVE_KPROBES=y
112CONFIG_HAVE_KRETPROBES=y 115CONFIG_HAVE_KRETPROBES=y
113CONFIG_HAVE_ARCH_TRACEHOOK=y 116CONFIG_HAVE_ARCH_TRACEHOOK=y
117CONFIG_HAVE_DMA_ATTRS=y
114CONFIG_HAVE_CLK=y 118CONFIG_HAVE_CLK=y
115CONFIG_HAVE_DMA_API_DEBUG=y 119CONFIG_HAVE_DMA_API_DEBUG=y
116 120
@@ -136,14 +140,41 @@ CONFIG_LBDAF=y
136# IO Schedulers 140# IO Schedulers
137# 141#
138CONFIG_IOSCHED_NOOP=y 142CONFIG_IOSCHED_NOOP=y
139CONFIG_IOSCHED_AS=y
140# CONFIG_IOSCHED_DEADLINE is not set 143# CONFIG_IOSCHED_DEADLINE is not set
141# CONFIG_IOSCHED_CFQ is not set 144# CONFIG_IOSCHED_CFQ is not set
142CONFIG_DEFAULT_AS=y
143# CONFIG_DEFAULT_DEADLINE is not set 145# CONFIG_DEFAULT_DEADLINE is not set
144# CONFIG_DEFAULT_CFQ is not set 146# CONFIG_DEFAULT_CFQ is not set
145# CONFIG_DEFAULT_NOOP is not set 147CONFIG_DEFAULT_NOOP=y
146CONFIG_DEFAULT_IOSCHED="anticipatory" 148CONFIG_DEFAULT_IOSCHED="noop"
149# CONFIG_INLINE_SPIN_TRYLOCK is not set
150# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
151# CONFIG_INLINE_SPIN_LOCK is not set
152# CONFIG_INLINE_SPIN_LOCK_BH is not set
153# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
154# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
155# CONFIG_INLINE_SPIN_UNLOCK is not set
156# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
157# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
158# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
159# CONFIG_INLINE_READ_TRYLOCK is not set
160# CONFIG_INLINE_READ_LOCK is not set
161# CONFIG_INLINE_READ_LOCK_BH is not set
162# CONFIG_INLINE_READ_LOCK_IRQ is not set
163# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
164# CONFIG_INLINE_READ_UNLOCK is not set
165# CONFIG_INLINE_READ_UNLOCK_BH is not set
166# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
167# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
168# CONFIG_INLINE_WRITE_TRYLOCK is not set
169# CONFIG_INLINE_WRITE_LOCK is not set
170# CONFIG_INLINE_WRITE_LOCK_BH is not set
171# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
172# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
173# CONFIG_INLINE_WRITE_UNLOCK is not set
174# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
175# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
176# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
177# CONFIG_MUTEX_SPIN_ON_OWNER is not set
147# CONFIG_FREEZER is not set 178# CONFIG_FREEZER is not set
148 179
149# 180#
@@ -219,8 +250,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
219# CONFIG_PHYS_ADDR_T_64BIT is not set 250# CONFIG_PHYS_ADDR_T_64BIT is not set
220CONFIG_ZONE_DMA_FLAG=0 251CONFIG_ZONE_DMA_FLAG=0
221CONFIG_NR_QUICK=2 252CONFIG_NR_QUICK=2
222CONFIG_HAVE_MLOCK=y
223CONFIG_HAVE_MLOCKED_PAGE_BIT=y
224# CONFIG_KSM is not set 253# CONFIG_KSM is not set
225CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 254CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
226 255
@@ -403,9 +432,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
403# CONFIG_AF_RXRPC is not set 432# CONFIG_AF_RXRPC is not set
404CONFIG_WIRELESS=y 433CONFIG_WIRELESS=y
405# CONFIG_CFG80211 is not set 434# CONFIG_CFG80211 is not set
406CONFIG_CFG80211_DEFAULT_PS_VALUE=0
407# CONFIG_WIRELESS_OLD_REGULATORY is not set
408# CONFIG_WIRELESS_EXT is not set
409# CONFIG_LIB80211 is not set 435# CONFIG_LIB80211 is not set
410 436
411# 437#
@@ -510,6 +536,10 @@ CONFIG_MTD_CFI_UTIL=y
510CONFIG_BLK_DEV=y 536CONFIG_BLK_DEV=y
511# CONFIG_BLK_DEV_COW_COMMON is not set 537# CONFIG_BLK_DEV_COW_COMMON is not set
512# CONFIG_BLK_DEV_LOOP is not set 538# CONFIG_BLK_DEV_LOOP is not set
539
540#
541# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
542#
513# CONFIG_BLK_DEV_NBD is not set 543# CONFIG_BLK_DEV_NBD is not set
514CONFIG_BLK_DEV_RAM=y 544CONFIG_BLK_DEV_RAM=y
515CONFIG_BLK_DEV_RAM_COUNT=16 545CONFIG_BLK_DEV_RAM_COUNT=16
@@ -564,11 +594,11 @@ CONFIG_STNIC=y
564# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 594# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
565# CONFIG_B44 is not set 595# CONFIG_B44 is not set
566# CONFIG_KS8842 is not set 596# CONFIG_KS8842 is not set
597# CONFIG_KS8851_MLL is not set
567CONFIG_NETDEV_1000=y 598CONFIG_NETDEV_1000=y
568CONFIG_NETDEV_10000=y 599CONFIG_NETDEV_10000=y
569CONFIG_WLAN=y 600CONFIG_WLAN=y
570# CONFIG_WLAN_PRE80211 is not set 601# CONFIG_HOSTAP is not set
571# CONFIG_WLAN_80211 is not set
572 602
573# 603#
574# Enable WiMAX (Networking options) to see the WiMAX drivers 604# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -598,6 +628,7 @@ CONFIG_SLHC=y
598CONFIG_INPUT=y 628CONFIG_INPUT=y
599# CONFIG_INPUT_FF_MEMLESS is not set 629# CONFIG_INPUT_FF_MEMLESS is not set
600# CONFIG_INPUT_POLLDEV is not set 630# CONFIG_INPUT_POLLDEV is not set
631# CONFIG_INPUT_SPARSEKMAP is not set
601 632
602# 633#
603# Userland interfaces 634# Userland interfaces
@@ -625,6 +656,7 @@ CONFIG_SERIO=y
625# CONFIG_SERIO_SERPORT is not set 656# CONFIG_SERIO_SERPORT is not set
626# CONFIG_SERIO_LIBPS2 is not set 657# CONFIG_SERIO_LIBPS2 is not set
627# CONFIG_SERIO_RAW is not set 658# CONFIG_SERIO_RAW is not set
659# CONFIG_SERIO_ALTERA_PS2 is not set
628# CONFIG_GAMEPORT is not set 660# CONFIG_GAMEPORT is not set
629 661
630# 662#
@@ -696,6 +728,7 @@ CONFIG_SSB_POSSIBLE=y
696# 728#
697# CONFIG_MFD_CORE is not set 729# CONFIG_MFD_CORE is not set
698# CONFIG_MFD_SM501 is not set 730# CONFIG_MFD_SM501 is not set
731# CONFIG_MFD_SH_MOBILE_SDHI is not set
699# CONFIG_HTC_PASIC3 is not set 732# CONFIG_HTC_PASIC3 is not set
700# CONFIG_MFD_TMIO is not set 733# CONFIG_MFD_TMIO is not set
701# CONFIG_REGULATOR is not set 734# CONFIG_REGULATOR is not set
@@ -765,6 +798,7 @@ CONFIG_EXT2_FS=y
765# CONFIG_EXT2_FS_XIP is not set 798# CONFIG_EXT2_FS_XIP is not set
766# CONFIG_EXT3_FS is not set 799# CONFIG_EXT3_FS is not set
767# CONFIG_EXT4_FS is not set 800# CONFIG_EXT4_FS is not set
801CONFIG_EXT4_USE_FOR_EXT23=y
768# CONFIG_REISERFS_FS is not set 802# CONFIG_REISERFS_FS is not set
769# CONFIG_JFS_FS is not set 803# CONFIG_JFS_FS is not set
770# CONFIG_FS_POSIX_ACL is not set 804# CONFIG_FS_POSIX_ACL is not set
@@ -809,7 +843,6 @@ CONFIG_PROC_SYSCTL=y
809CONFIG_PROC_PAGE_MONITOR=y 843CONFIG_PROC_PAGE_MONITOR=y
810# CONFIG_SYSFS is not set 844# CONFIG_SYSFS is not set
811# CONFIG_TMPFS is not set 845# CONFIG_TMPFS is not set
812# CONFIG_HUGETLBFS is not set
813# CONFIG_HUGETLB_PAGE is not set 846# CONFIG_HUGETLB_PAGE is not set
814CONFIG_MISC_FILESYSTEMS=y 847CONFIG_MISC_FILESYSTEMS=y
815# CONFIG_ADFS_FS is not set 848# CONFIG_ADFS_FS is not set
@@ -877,10 +910,11 @@ CONFIG_FRAME_WARN=1024
877# CONFIG_UNUSED_SYMBOLS is not set 910# CONFIG_UNUSED_SYMBOLS is not set
878# CONFIG_HEADERS_CHECK is not set 911# CONFIG_HEADERS_CHECK is not set
879# CONFIG_DEBUG_KERNEL is not set 912# CONFIG_DEBUG_KERNEL is not set
880# CONFIG_DEBUG_BUGVERBOSE is not set 913CONFIG_DEBUG_BUGVERBOSE=y
881# CONFIG_DEBUG_MEMORY_INIT is not set 914# CONFIG_DEBUG_MEMORY_INIT is not set
882# CONFIG_RCU_CPU_STALL_DETECTOR is not set 915# CONFIG_RCU_CPU_STALL_DETECTOR is not set
883# CONFIG_LATENCYTOP is not set 916# CONFIG_LATENCYTOP is not set
917# CONFIG_SYSCTL_SYSCALL_CHECK is not set
884CONFIG_HAVE_FUNCTION_TRACER=y 918CONFIG_HAVE_FUNCTION_TRACER=y
885CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 919CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
886CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 920CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
@@ -893,7 +927,6 @@ CONFIG_TRACING_SUPPORT=y
893# CONFIG_SAMPLES is not set 927# CONFIG_SAMPLES is not set
894CONFIG_HAVE_ARCH_KGDB=y 928CONFIG_HAVE_ARCH_KGDB=y
895# CONFIG_SH_STANDARD_BIOS is not set 929# CONFIG_SH_STANDARD_BIOS is not set
896# CONFIG_EARLY_SCIF_CONSOLE is not set
897# CONFIG_DWARF_UNWINDER is not set 930# CONFIG_DWARF_UNWINDER is not set
898 931
899# 932#
@@ -901,7 +934,11 @@ CONFIG_HAVE_ARCH_KGDB=y
901# 934#
902# CONFIG_KEYS is not set 935# CONFIG_KEYS is not set
903# CONFIG_SECURITYFS is not set 936# CONFIG_SECURITYFS is not set
904# CONFIG_SECURITY_FILE_CAPABILITIES is not set 937# CONFIG_DEFAULT_SECURITY_SELINUX is not set
938# CONFIG_DEFAULT_SECURITY_SMACK is not set
939# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
940CONFIG_DEFAULT_SECURITY_DAC=y
941CONFIG_DEFAULT_SECURITY=""
905CONFIG_CRYPTO=y 942CONFIG_CRYPTO=y
906 943
907# 944#
diff --git a/arch/sh/configs/se7712_defconfig b/arch/sh/configs/se7712_defconfig
index 1a43cfecb392..cfa58199a368 100644
--- a/arch/sh/configs/se7712_defconfig
+++ b/arch/sh/configs/se7712_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:53:32 2009 4# Mon Jan 4 13:44:56 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -28,6 +28,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
28CONFIG_ARCH_NO_VIRT_TO_BUS=y 28CONFIG_ARCH_NO_VIRT_TO_BUS=y
29CONFIG_ARCH_HAS_DEFAULT_IDLE=y 29CONFIG_ARCH_HAS_DEFAULT_IDLE=y
30CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 30CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
31CONFIG_DMA_NONCOHERENT=y
31CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 32CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
32CONFIG_CONSTRUCTORS=y 33CONFIG_CONSTRUCTORS=y
33 34
@@ -60,6 +61,7 @@ CONFIG_BSD_PROCESS_ACCT=y
60# 61#
61CONFIG_TREE_RCU=y 62CONFIG_TREE_RCU=y
62# CONFIG_TREE_PREEMPT_RCU is not set 63# CONFIG_TREE_PREEMPT_RCU is not set
64# CONFIG_TINY_RCU is not set
63# CONFIG_RCU_TRACE is not set 65# CONFIG_RCU_TRACE is not set
64CONFIG_RCU_FANOUT=32 66CONFIG_RCU_FANOUT=32
65# CONFIG_RCU_FANOUT_EXACT is not set 67# CONFIG_RCU_FANOUT_EXACT is not set
@@ -95,6 +97,7 @@ CONFIG_EVENTFD=y
95# CONFIG_SHMEM is not set 97# CONFIG_SHMEM is not set
96CONFIG_AIO=y 98CONFIG_AIO=y
97CONFIG_HAVE_PERF_EVENTS=y 99CONFIG_HAVE_PERF_EVENTS=y
100CONFIG_PERF_USE_VMALLOC=y
98 101
99# 102#
100# Kernel Performance Events And Counters 103# Kernel Performance Events And Counters
@@ -113,6 +116,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
113CONFIG_HAVE_KPROBES=y 116CONFIG_HAVE_KPROBES=y
114CONFIG_HAVE_KRETPROBES=y 117CONFIG_HAVE_KRETPROBES=y
115CONFIG_HAVE_ARCH_TRACEHOOK=y 118CONFIG_HAVE_ARCH_TRACEHOOK=y
119CONFIG_HAVE_DMA_ATTRS=y
116CONFIG_HAVE_CLK=y 120CONFIG_HAVE_CLK=y
117CONFIG_HAVE_DMA_API_DEBUG=y 121CONFIG_HAVE_DMA_API_DEBUG=y
118 122
@@ -138,14 +142,41 @@ CONFIG_LBDAF=y
138# IO Schedulers 142# IO Schedulers
139# 143#
140CONFIG_IOSCHED_NOOP=y 144CONFIG_IOSCHED_NOOP=y
141# CONFIG_IOSCHED_AS is not set
142# CONFIG_IOSCHED_DEADLINE is not set 145# CONFIG_IOSCHED_DEADLINE is not set
143# CONFIG_IOSCHED_CFQ is not set 146# CONFIG_IOSCHED_CFQ is not set
144# CONFIG_DEFAULT_AS is not set
145# CONFIG_DEFAULT_DEADLINE is not set 147# CONFIG_DEFAULT_DEADLINE is not set
146# CONFIG_DEFAULT_CFQ is not set 148# CONFIG_DEFAULT_CFQ is not set
147CONFIG_DEFAULT_NOOP=y 149CONFIG_DEFAULT_NOOP=y
148CONFIG_DEFAULT_IOSCHED="noop" 150CONFIG_DEFAULT_IOSCHED="noop"
151# CONFIG_INLINE_SPIN_TRYLOCK is not set
152# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
153# CONFIG_INLINE_SPIN_LOCK is not set
154# CONFIG_INLINE_SPIN_LOCK_BH is not set
155# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
156# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
157CONFIG_INLINE_SPIN_UNLOCK=y
158# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
159CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
160# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
161# CONFIG_INLINE_READ_TRYLOCK is not set
162# CONFIG_INLINE_READ_LOCK is not set
163# CONFIG_INLINE_READ_LOCK_BH is not set
164# CONFIG_INLINE_READ_LOCK_IRQ is not set
165# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
166CONFIG_INLINE_READ_UNLOCK=y
167# CONFIG_INLINE_READ_UNLOCK_BH is not set
168CONFIG_INLINE_READ_UNLOCK_IRQ=y
169# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
170# CONFIG_INLINE_WRITE_TRYLOCK is not set
171# CONFIG_INLINE_WRITE_LOCK is not set
172# CONFIG_INLINE_WRITE_LOCK_BH is not set
173# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
174# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
175CONFIG_INLINE_WRITE_UNLOCK=y
176# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
177CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
178# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
179# CONFIG_MUTEX_SPIN_ON_OWNER is not set
149# CONFIG_FREEZER is not set 180# CONFIG_FREEZER is not set
150 181
151# 182#
@@ -221,8 +252,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
221# CONFIG_PHYS_ADDR_T_64BIT is not set 252# CONFIG_PHYS_ADDR_T_64BIT is not set
222CONFIG_ZONE_DMA_FLAG=0 253CONFIG_ZONE_DMA_FLAG=0
223CONFIG_NR_QUICK=2 254CONFIG_NR_QUICK=2
224CONFIG_HAVE_MLOCK=y
225CONFIG_HAVE_MLOCKED_PAGE_BIT=y
226# CONFIG_KSM is not set 255# CONFIG_KSM is not set
227CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 256CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
228 257
@@ -452,9 +481,6 @@ CONFIG_NET_SCH_FIFO=y
452CONFIG_FIB_RULES=y 481CONFIG_FIB_RULES=y
453CONFIG_WIRELESS=y 482CONFIG_WIRELESS=y
454# CONFIG_CFG80211 is not set 483# CONFIG_CFG80211 is not set
455CONFIG_CFG80211_DEFAULT_PS_VALUE=0
456# CONFIG_WIRELESS_OLD_REGULATORY is not set
457# CONFIG_WIRELESS_EXT is not set
458# CONFIG_LIB80211 is not set 484# CONFIG_LIB80211 is not set
459 485
460# 486#
@@ -565,6 +591,10 @@ CONFIG_MTD_CFI_UTIL=y
565CONFIG_BLK_DEV=y 591CONFIG_BLK_DEV=y
566# CONFIG_BLK_DEV_COW_COMMON is not set 592# CONFIG_BLK_DEV_COW_COMMON is not set
567# CONFIG_BLK_DEV_LOOP is not set 593# CONFIG_BLK_DEV_LOOP is not set
594
595#
596# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
597#
568# CONFIG_BLK_DEV_NBD is not set 598# CONFIG_BLK_DEV_NBD is not set
569# CONFIG_BLK_DEV_RAM is not set 599# CONFIG_BLK_DEV_RAM is not set
570# CONFIG_CDROM_PKTCDVD is not set 600# CONFIG_CDROM_PKTCDVD is not set
@@ -675,11 +705,11 @@ CONFIG_SH_ETH=y
675# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 705# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
676# CONFIG_B44 is not set 706# CONFIG_B44 is not set
677# CONFIG_KS8842 is not set 707# CONFIG_KS8842 is not set
708# CONFIG_KS8851_MLL is not set
678CONFIG_NETDEV_1000=y 709CONFIG_NETDEV_1000=y
679CONFIG_NETDEV_10000=y 710CONFIG_NETDEV_10000=y
680CONFIG_WLAN=y 711CONFIG_WLAN=y
681# CONFIG_WLAN_PRE80211 is not set 712# CONFIG_HOSTAP is not set
682# CONFIG_WLAN_80211 is not set
683 713
684# 714#
685# Enable WiMAX (Networking options) to see the WiMAX drivers 715# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -757,6 +787,7 @@ CONFIG_SSB_POSSIBLE=y
757# 787#
758# CONFIG_MFD_CORE is not set 788# CONFIG_MFD_CORE is not set
759# CONFIG_MFD_SM501 is not set 789# CONFIG_MFD_SM501 is not set
790# CONFIG_MFD_SH_MOBILE_SDHI is not set
760# CONFIG_HTC_PASIC3 is not set 791# CONFIG_HTC_PASIC3 is not set
761# CONFIG_MFD_TMIO is not set 792# CONFIG_MFD_TMIO is not set
762# CONFIG_REGULATOR is not set 793# CONFIG_REGULATOR is not set
@@ -888,7 +919,6 @@ CONFIG_PROC_FS=y
888CONFIG_PROC_SYSCTL=y 919CONFIG_PROC_SYSCTL=y
889CONFIG_PROC_PAGE_MONITOR=y 920CONFIG_PROC_PAGE_MONITOR=y
890CONFIG_SYSFS=y 921CONFIG_SYSFS=y
891# CONFIG_HUGETLBFS is not set
892# CONFIG_HUGETLB_PAGE is not set 922# CONFIG_HUGETLB_PAGE is not set
893# CONFIG_CONFIGFS_FS is not set 923# CONFIG_CONFIGFS_FS is not set
894CONFIG_MISC_FILESYSTEMS=y 924CONFIG_MISC_FILESYSTEMS=y
@@ -1021,7 +1051,6 @@ CONFIG_BRANCH_PROFILE_NONE=y
1021CONFIG_HAVE_ARCH_KGDB=y 1051CONFIG_HAVE_ARCH_KGDB=y
1022# CONFIG_KGDB is not set 1052# CONFIG_KGDB is not set
1023# CONFIG_SH_STANDARD_BIOS is not set 1053# CONFIG_SH_STANDARD_BIOS is not set
1024# CONFIG_EARLY_SCIF_CONSOLE is not set
1025# CONFIG_STACK_DEBUG is not set 1054# CONFIG_STACK_DEBUG is not set
1026# CONFIG_DEBUG_STACK_USAGE is not set 1055# CONFIG_DEBUG_STACK_USAGE is not set
1027# CONFIG_4KSTACKS is not set 1056# CONFIG_4KSTACKS is not set
@@ -1035,7 +1064,11 @@ CONFIG_HAVE_ARCH_KGDB=y
1035# CONFIG_KEYS is not set 1064# CONFIG_KEYS is not set
1036# CONFIG_SECURITY is not set 1065# CONFIG_SECURITY is not set
1037# CONFIG_SECURITYFS is not set 1066# CONFIG_SECURITYFS is not set
1038# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1067# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1068# CONFIG_DEFAULT_SECURITY_SMACK is not set
1069# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1070CONFIG_DEFAULT_SECURITY_DAC=y
1071CONFIG_DEFAULT_SECURITY=""
1039CONFIG_CRYPTO=y 1072CONFIG_CRYPTO=y
1040 1073
1041# 1074#
diff --git a/arch/sh/configs/se7721_defconfig b/arch/sh/configs/se7721_defconfig
index b8a3c8c4bac3..201283c829a1 100644
--- a/arch/sh/configs/se7721_defconfig
+++ b/arch/sh/configs/se7721_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:57:11 2009 4# Mon Jan 4 13:46:58 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -29,6 +29,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
29CONFIG_ARCH_NO_VIRT_TO_BUS=y 29CONFIG_ARCH_NO_VIRT_TO_BUS=y
30CONFIG_ARCH_HAS_DEFAULT_IDLE=y 30CONFIG_ARCH_HAS_DEFAULT_IDLE=y
31CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 31CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
32CONFIG_DMA_NONCOHERENT=y
32CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
33CONFIG_CONSTRUCTORS=y 34CONFIG_CONSTRUCTORS=y
34 35
@@ -61,6 +62,7 @@ CONFIG_BSD_PROCESS_ACCT=y
61# 62#
62CONFIG_TREE_RCU=y 63CONFIG_TREE_RCU=y
63# CONFIG_TREE_PREEMPT_RCU is not set 64# CONFIG_TREE_PREEMPT_RCU is not set
65# CONFIG_TINY_RCU is not set
64# CONFIG_RCU_TRACE is not set 66# CONFIG_RCU_TRACE is not set
65CONFIG_RCU_FANOUT=32 67CONFIG_RCU_FANOUT=32
66# CONFIG_RCU_FANOUT_EXACT is not set 68# CONFIG_RCU_FANOUT_EXACT is not set
@@ -100,6 +102,7 @@ CONFIG_EVENTFD=y
100# CONFIG_SHMEM is not set 102# CONFIG_SHMEM is not set
101CONFIG_AIO=y 103CONFIG_AIO=y
102CONFIG_HAVE_PERF_EVENTS=y 104CONFIG_HAVE_PERF_EVENTS=y
105CONFIG_PERF_USE_VMALLOC=y
103 106
104# 107#
105# Kernel Performance Events And Counters 108# Kernel Performance Events And Counters
@@ -118,6 +121,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
118CONFIG_HAVE_KPROBES=y 121CONFIG_HAVE_KPROBES=y
119CONFIG_HAVE_KRETPROBES=y 122CONFIG_HAVE_KRETPROBES=y
120CONFIG_HAVE_ARCH_TRACEHOOK=y 123CONFIG_HAVE_ARCH_TRACEHOOK=y
124CONFIG_HAVE_DMA_ATTRS=y
121CONFIG_HAVE_CLK=y 125CONFIG_HAVE_CLK=y
122CONFIG_HAVE_DMA_API_DEBUG=y 126CONFIG_HAVE_DMA_API_DEBUG=y
123 127
@@ -143,14 +147,41 @@ CONFIG_LBDAF=y
143# IO Schedulers 147# IO Schedulers
144# 148#
145CONFIG_IOSCHED_NOOP=y 149CONFIG_IOSCHED_NOOP=y
146# CONFIG_IOSCHED_AS is not set
147# CONFIG_IOSCHED_DEADLINE is not set 150# CONFIG_IOSCHED_DEADLINE is not set
148# CONFIG_IOSCHED_CFQ is not set 151# CONFIG_IOSCHED_CFQ is not set
149# CONFIG_DEFAULT_AS is not set
150# CONFIG_DEFAULT_DEADLINE is not set 152# CONFIG_DEFAULT_DEADLINE is not set
151# CONFIG_DEFAULT_CFQ is not set 153# CONFIG_DEFAULT_CFQ is not set
152CONFIG_DEFAULT_NOOP=y 154CONFIG_DEFAULT_NOOP=y
153CONFIG_DEFAULT_IOSCHED="noop" 155CONFIG_DEFAULT_IOSCHED="noop"
156# CONFIG_INLINE_SPIN_TRYLOCK is not set
157# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
158# CONFIG_INLINE_SPIN_LOCK is not set
159# CONFIG_INLINE_SPIN_LOCK_BH is not set
160# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
161# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
162CONFIG_INLINE_SPIN_UNLOCK=y
163# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
164CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
165# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
166# CONFIG_INLINE_READ_TRYLOCK is not set
167# CONFIG_INLINE_READ_LOCK is not set
168# CONFIG_INLINE_READ_LOCK_BH is not set
169# CONFIG_INLINE_READ_LOCK_IRQ is not set
170# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
171CONFIG_INLINE_READ_UNLOCK=y
172# CONFIG_INLINE_READ_UNLOCK_BH is not set
173CONFIG_INLINE_READ_UNLOCK_IRQ=y
174# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
175# CONFIG_INLINE_WRITE_TRYLOCK is not set
176# CONFIG_INLINE_WRITE_LOCK is not set
177# CONFIG_INLINE_WRITE_LOCK_BH is not set
178# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
179# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
180CONFIG_INLINE_WRITE_UNLOCK=y
181# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
182CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
183# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
184# CONFIG_MUTEX_SPIN_ON_OWNER is not set
154# CONFIG_FREEZER is not set 185# CONFIG_FREEZER is not set
155 186
156# 187#
@@ -226,8 +257,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
226# CONFIG_PHYS_ADDR_T_64BIT is not set 257# CONFIG_PHYS_ADDR_T_64BIT is not set
227CONFIG_ZONE_DMA_FLAG=0 258CONFIG_ZONE_DMA_FLAG=0
228CONFIG_NR_QUICK=2 259CONFIG_NR_QUICK=2
229CONFIG_HAVE_MLOCK=y
230CONFIG_HAVE_MLOCKED_PAGE_BIT=y
231# CONFIG_KSM is not set 260# CONFIG_KSM is not set
232CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 261CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
233 262
@@ -457,9 +486,6 @@ CONFIG_NET_SCH_FIFO=y
457CONFIG_FIB_RULES=y 486CONFIG_FIB_RULES=y
458CONFIG_WIRELESS=y 487CONFIG_WIRELESS=y
459# CONFIG_CFG80211 is not set 488# CONFIG_CFG80211 is not set
460CONFIG_CFG80211_DEFAULT_PS_VALUE=0
461# CONFIG_WIRELESS_OLD_REGULATORY is not set
462# CONFIG_WIRELESS_EXT is not set
463# CONFIG_LIB80211 is not set 489# CONFIG_LIB80211 is not set
464 490
465# 491#
@@ -570,6 +596,10 @@ CONFIG_MTD_CFI_UTIL=y
570CONFIG_BLK_DEV=y 596CONFIG_BLK_DEV=y
571# CONFIG_BLK_DEV_COW_COMMON is not set 597# CONFIG_BLK_DEV_COW_COMMON is not set
572# CONFIG_BLK_DEV_LOOP is not set 598# CONFIG_BLK_DEV_LOOP is not set
599
600#
601# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
602#
573# CONFIG_BLK_DEV_NBD is not set 603# CONFIG_BLK_DEV_NBD is not set
574# CONFIG_BLK_DEV_UB is not set 604# CONFIG_BLK_DEV_UB is not set
575# CONFIG_BLK_DEV_RAM is not set 605# CONFIG_BLK_DEV_RAM is not set
@@ -642,8 +672,8 @@ CONFIG_NETDEVICES=y
642CONFIG_NETDEV_1000=y 672CONFIG_NETDEV_1000=y
643CONFIG_NETDEV_10000=y 673CONFIG_NETDEV_10000=y
644CONFIG_WLAN=y 674CONFIG_WLAN=y
645# CONFIG_WLAN_PRE80211 is not set 675# CONFIG_USB_ZD1201 is not set
646# CONFIG_WLAN_80211 is not set 676# CONFIG_HOSTAP is not set
647 677
648# 678#
649# Enable WiMAX (Networking options) to see the WiMAX drivers 679# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -672,6 +702,7 @@ CONFIG_WLAN=y
672CONFIG_INPUT=y 702CONFIG_INPUT=y
673CONFIG_INPUT_FF_MEMLESS=m 703CONFIG_INPUT_FF_MEMLESS=m
674# CONFIG_INPUT_POLLDEV is not set 704# CONFIG_INPUT_POLLDEV is not set
705# CONFIG_INPUT_SPARSEKMAP is not set
675 706
676# 707#
677# Userland interfaces 708# Userland interfaces
@@ -765,6 +796,7 @@ CONFIG_SSB_POSSIBLE=y
765# 796#
766# CONFIG_MFD_CORE is not set 797# CONFIG_MFD_CORE is not set
767# CONFIG_MFD_SM501 is not set 798# CONFIG_MFD_SM501 is not set
799# CONFIG_MFD_SH_MOBILE_SDHI is not set
768# CONFIG_HTC_PASIC3 is not set 800# CONFIG_HTC_PASIC3 is not set
769# CONFIG_MFD_TMIO is not set 801# CONFIG_MFD_TMIO is not set
770# CONFIG_REGULATOR is not set 802# CONFIG_REGULATOR is not set
@@ -1029,7 +1061,6 @@ CONFIG_PROC_FS=y
1029CONFIG_PROC_SYSCTL=y 1061CONFIG_PROC_SYSCTL=y
1030CONFIG_PROC_PAGE_MONITOR=y 1062CONFIG_PROC_PAGE_MONITOR=y
1031CONFIG_SYSFS=y 1063CONFIG_SYSFS=y
1032# CONFIG_HUGETLBFS is not set
1033# CONFIG_HUGETLB_PAGE is not set 1064# CONFIG_HUGETLB_PAGE is not set
1034# CONFIG_CONFIGFS_FS is not set 1065# CONFIG_CONFIGFS_FS is not set
1035CONFIG_MISC_FILESYSTEMS=y 1066CONFIG_MISC_FILESYSTEMS=y
@@ -1186,7 +1217,6 @@ CONFIG_BRANCH_PROFILE_NONE=y
1186CONFIG_HAVE_ARCH_KGDB=y 1217CONFIG_HAVE_ARCH_KGDB=y
1187# CONFIG_KGDB is not set 1218# CONFIG_KGDB is not set
1188# CONFIG_SH_STANDARD_BIOS is not set 1219# CONFIG_SH_STANDARD_BIOS is not set
1189# CONFIG_EARLY_SCIF_CONSOLE is not set
1190# CONFIG_STACK_DEBUG is not set 1220# CONFIG_STACK_DEBUG is not set
1191# CONFIG_DEBUG_STACK_USAGE is not set 1221# CONFIG_DEBUG_STACK_USAGE is not set
1192# CONFIG_4KSTACKS is not set 1222# CONFIG_4KSTACKS is not set
@@ -1200,7 +1230,11 @@ CONFIG_HAVE_ARCH_KGDB=y
1200# CONFIG_KEYS is not set 1230# CONFIG_KEYS is not set
1201# CONFIG_SECURITY is not set 1231# CONFIG_SECURITY is not set
1202# CONFIG_SECURITYFS is not set 1232# CONFIG_SECURITYFS is not set
1203# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1233# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1234# CONFIG_DEFAULT_SECURITY_SMACK is not set
1235# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1236CONFIG_DEFAULT_SECURITY_DAC=y
1237CONFIG_DEFAULT_SECURITY=""
1204CONFIG_CRYPTO=y 1238CONFIG_CRYPTO=y
1205 1239
1206# 1240#
diff --git a/arch/sh/configs/se7722_defconfig b/arch/sh/configs/se7722_defconfig
index d709b7f35ace..4a4efd261d03 100644
--- a/arch/sh/configs/se7722_defconfig
+++ b/arch/sh/configs/se7722_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:57:41 2009 4# Mon Jan 4 13:49:15 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21CONFIG_ARCH_SUSPEND_POSSIBLE=y 21CONFIG_ARCH_SUSPEND_POSSIBLE=y
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_NUMA=y 24CONFIG_SYS_SUPPORTS_NUMA=y
24CONFIG_SYS_SUPPORTS_CMT=y 25CONFIG_SYS_SUPPORTS_CMT=y
25CONFIG_SYS_SUPPORTS_TMU=y 26CONFIG_SYS_SUPPORTS_TMU=y
@@ -31,6 +32,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
31CONFIG_ARCH_NO_VIRT_TO_BUS=y 32CONFIG_ARCH_NO_VIRT_TO_BUS=y
32CONFIG_ARCH_HAS_DEFAULT_IDLE=y 33CONFIG_ARCH_HAS_DEFAULT_IDLE=y
33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 34CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
35CONFIG_DMA_NONCOHERENT=y
34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 36CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
35CONFIG_CONSTRUCTORS=y 37CONFIG_CONSTRUCTORS=y
36 38
@@ -63,6 +65,7 @@ CONFIG_BSD_PROCESS_ACCT=y
63# 65#
64CONFIG_TREE_RCU=y 66CONFIG_TREE_RCU=y
65# CONFIG_TREE_PREEMPT_RCU is not set 67# CONFIG_TREE_PREEMPT_RCU is not set
68# CONFIG_TINY_RCU is not set
66# CONFIG_RCU_TRACE is not set 69# CONFIG_RCU_TRACE is not set
67CONFIG_RCU_FANOUT=32 70CONFIG_RCU_FANOUT=32
68# CONFIG_RCU_FANOUT_EXACT is not set 71# CONFIG_RCU_FANOUT_EXACT is not set
@@ -102,6 +105,7 @@ CONFIG_EVENTFD=y
102CONFIG_SHMEM=y 105CONFIG_SHMEM=y
103CONFIG_AIO=y 106CONFIG_AIO=y
104CONFIG_HAVE_PERF_EVENTS=y 107CONFIG_HAVE_PERF_EVENTS=y
108CONFIG_PERF_USE_VMALLOC=y
105 109
106# 110#
107# Kernel Performance Events And Counters 111# Kernel Performance Events And Counters
@@ -122,6 +126,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
122CONFIG_HAVE_KPROBES=y 126CONFIG_HAVE_KPROBES=y
123CONFIG_HAVE_KRETPROBES=y 127CONFIG_HAVE_KRETPROBES=y
124CONFIG_HAVE_ARCH_TRACEHOOK=y 128CONFIG_HAVE_ARCH_TRACEHOOK=y
129CONFIG_HAVE_DMA_ATTRS=y
125CONFIG_HAVE_CLK=y 130CONFIG_HAVE_CLK=y
126CONFIG_HAVE_DMA_API_DEBUG=y 131CONFIG_HAVE_DMA_API_DEBUG=y
127 132
@@ -149,14 +154,41 @@ CONFIG_LBDAF=y
149# IO Schedulers 154# IO Schedulers
150# 155#
151CONFIG_IOSCHED_NOOP=y 156CONFIG_IOSCHED_NOOP=y
152# CONFIG_IOSCHED_AS is not set
153# CONFIG_IOSCHED_DEADLINE is not set 157# CONFIG_IOSCHED_DEADLINE is not set
154# CONFIG_IOSCHED_CFQ is not set 158# CONFIG_IOSCHED_CFQ is not set
155# CONFIG_DEFAULT_AS is not set
156# CONFIG_DEFAULT_DEADLINE is not set 159# CONFIG_DEFAULT_DEADLINE is not set
157# CONFIG_DEFAULT_CFQ is not set 160# CONFIG_DEFAULT_CFQ is not set
158CONFIG_DEFAULT_NOOP=y 161CONFIG_DEFAULT_NOOP=y
159CONFIG_DEFAULT_IOSCHED="noop" 162CONFIG_DEFAULT_IOSCHED="noop"
163# CONFIG_INLINE_SPIN_TRYLOCK is not set
164# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
165# CONFIG_INLINE_SPIN_LOCK is not set
166# CONFIG_INLINE_SPIN_LOCK_BH is not set
167# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
168# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
169# CONFIG_INLINE_SPIN_UNLOCK is not set
170# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
171# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
172# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
173# CONFIG_INLINE_READ_TRYLOCK is not set
174# CONFIG_INLINE_READ_LOCK is not set
175# CONFIG_INLINE_READ_LOCK_BH is not set
176# CONFIG_INLINE_READ_LOCK_IRQ is not set
177# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
178# CONFIG_INLINE_READ_UNLOCK is not set
179# CONFIG_INLINE_READ_UNLOCK_BH is not set
180# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
181# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
182# CONFIG_INLINE_WRITE_TRYLOCK is not set
183# CONFIG_INLINE_WRITE_LOCK is not set
184# CONFIG_INLINE_WRITE_LOCK_BH is not set
185# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
186# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
187# CONFIG_INLINE_WRITE_UNLOCK is not set
188# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
189# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
190# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
191# CONFIG_MUTEX_SPIN_ON_OWNER is not set
160CONFIG_FREEZER=y 192CONFIG_FREEZER=y
161 193
162# 194#
@@ -248,8 +280,6 @@ CONFIG_MIGRATION=y
248# CONFIG_PHYS_ADDR_T_64BIT is not set 280# CONFIG_PHYS_ADDR_T_64BIT is not set
249CONFIG_ZONE_DMA_FLAG=0 281CONFIG_ZONE_DMA_FLAG=0
250CONFIG_NR_QUICK=2 282CONFIG_NR_QUICK=2
251CONFIG_HAVE_MLOCK=y
252CONFIG_HAVE_MLOCKED_PAGE_BIT=y
253# CONFIG_KSM is not set 283# CONFIG_KSM is not set
254CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 284CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
255 285
@@ -284,7 +314,6 @@ CONFIG_SH_7722_SOLUTION_ENGINE=y
284# 314#
285CONFIG_SH_TIMER_TMU=y 315CONFIG_SH_TIMER_TMU=y
286# CONFIG_SH_TIMER_CMT is not set 316# CONFIG_SH_TIMER_CMT is not set
287CONFIG_SH_PCLK_FREQ=33333333
288CONFIG_SH_CLK_CPG=y 317CONFIG_SH_CLK_CPG=y
289CONFIG_TICK_ONESHOT=y 318CONFIG_TICK_ONESHOT=y
290CONFIG_NO_HZ=y 319CONFIG_NO_HZ=y
@@ -436,9 +465,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
436# CONFIG_AF_RXRPC is not set 465# CONFIG_AF_RXRPC is not set
437CONFIG_WIRELESS=y 466CONFIG_WIRELESS=y
438# CONFIG_CFG80211 is not set 467# CONFIG_CFG80211 is not set
439CONFIG_CFG80211_DEFAULT_PS_VALUE=0
440# CONFIG_WIRELESS_OLD_REGULATORY is not set
441# CONFIG_WIRELESS_EXT is not set
442# CONFIG_LIB80211 is not set 468# CONFIG_LIB80211 is not set
443 469
444# 470#
@@ -467,6 +493,10 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
467CONFIG_BLK_DEV=y 493CONFIG_BLK_DEV=y
468# CONFIG_BLK_DEV_COW_COMMON is not set 494# CONFIG_BLK_DEV_COW_COMMON is not set
469# CONFIG_BLK_DEV_LOOP is not set 495# CONFIG_BLK_DEV_LOOP is not set
496
497#
498# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
499#
470# CONFIG_BLK_DEV_NBD is not set 500# CONFIG_BLK_DEV_NBD is not set
471CONFIG_BLK_DEV_RAM=y 501CONFIG_BLK_DEV_RAM=y
472CONFIG_BLK_DEV_RAM_COUNT=16 502CONFIG_BLK_DEV_RAM_COUNT=16
@@ -560,11 +590,11 @@ CONFIG_SMC91X=y
560# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 590# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
561# CONFIG_B44 is not set 591# CONFIG_B44 is not set
562# CONFIG_KS8842 is not set 592# CONFIG_KS8842 is not set
593# CONFIG_KS8851_MLL is not set
563CONFIG_NETDEV_1000=y 594CONFIG_NETDEV_1000=y
564CONFIG_NETDEV_10000=y 595CONFIG_NETDEV_10000=y
565CONFIG_WLAN=y 596CONFIG_WLAN=y
566# CONFIG_WLAN_PRE80211 is not set 597# CONFIG_HOSTAP is not set
567# CONFIG_WLAN_80211 is not set
568 598
569# 599#
570# Enable WiMAX (Networking options) to see the WiMAX drivers 600# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -584,6 +614,7 @@ CONFIG_WLAN=y
584CONFIG_INPUT=y 614CONFIG_INPUT=y
585# CONFIG_INPUT_FF_MEMLESS is not set 615# CONFIG_INPUT_FF_MEMLESS is not set
586# CONFIG_INPUT_POLLDEV is not set 616# CONFIG_INPUT_POLLDEV is not set
617# CONFIG_INPUT_SPARSEKMAP is not set
587 618
588# 619#
589# Userland interfaces 620# Userland interfaces
@@ -622,6 +653,7 @@ CONFIG_SERIO=y
622# CONFIG_SERIO_SERPORT is not set 653# CONFIG_SERIO_SERPORT is not set
623CONFIG_SERIO_LIBPS2=y 654CONFIG_SERIO_LIBPS2=y
624# CONFIG_SERIO_RAW is not set 655# CONFIG_SERIO_RAW is not set
656# CONFIG_SERIO_ALTERA_PS2 is not set
625# CONFIG_GAMEPORT is not set 657# CONFIG_GAMEPORT is not set
626 658
627# 659#
@@ -694,6 +726,7 @@ CONFIG_SSB_POSSIBLE=y
694# 726#
695# CONFIG_MFD_CORE is not set 727# CONFIG_MFD_CORE is not set
696# CONFIG_MFD_SM501 is not set 728# CONFIG_MFD_SM501 is not set
729# CONFIG_MFD_SH_MOBILE_SDHI is not set
697# CONFIG_HTC_PASIC3 is not set 730# CONFIG_HTC_PASIC3 is not set
698# CONFIG_MFD_TMIO is not set 731# CONFIG_MFD_TMIO is not set
699# CONFIG_REGULATOR is not set 732# CONFIG_REGULATOR is not set
@@ -774,7 +807,9 @@ CONFIG_RTC_INTF_DEV=y
774# CONFIG_RTC_DRV_M48T86 is not set 807# CONFIG_RTC_DRV_M48T86 is not set
775# CONFIG_RTC_DRV_M48T35 is not set 808# CONFIG_RTC_DRV_M48T35 is not set
776# CONFIG_RTC_DRV_M48T59 is not set 809# CONFIG_RTC_DRV_M48T59 is not set
810# CONFIG_RTC_DRV_MSM6242 is not set
777# CONFIG_RTC_DRV_BQ4802 is not set 811# CONFIG_RTC_DRV_BQ4802 is not set
812# CONFIG_RTC_DRV_RP5C01 is not set
778# CONFIG_RTC_DRV_V3020 is not set 813# CONFIG_RTC_DRV_V3020 is not set
779 814
780# 815#
@@ -906,7 +941,7 @@ CONFIG_DEBUG_FS=y
906# CONFIG_DEBUG_KERNEL is not set 941# CONFIG_DEBUG_KERNEL is not set
907# CONFIG_SLUB_DEBUG_ON is not set 942# CONFIG_SLUB_DEBUG_ON is not set
908# CONFIG_SLUB_STATS is not set 943# CONFIG_SLUB_STATS is not set
909# CONFIG_DEBUG_BUGVERBOSE is not set 944CONFIG_DEBUG_BUGVERBOSE=y
910# CONFIG_DEBUG_MEMORY_INIT is not set 945# CONFIG_DEBUG_MEMORY_INIT is not set
911# CONFIG_RCU_CPU_STALL_DETECTOR is not set 946# CONFIG_RCU_CPU_STALL_DETECTOR is not set
912# CONFIG_LATENCYTOP is not set 947# CONFIG_LATENCYTOP is not set
@@ -924,8 +959,6 @@ CONFIG_TRACING_SUPPORT=y
924# CONFIG_SAMPLES is not set 959# CONFIG_SAMPLES is not set
925CONFIG_HAVE_ARCH_KGDB=y 960CONFIG_HAVE_ARCH_KGDB=y
926CONFIG_SH_STANDARD_BIOS=y 961CONFIG_SH_STANDARD_BIOS=y
927# CONFIG_EARLY_SCIF_CONSOLE is not set
928# CONFIG_EARLY_PRINTK is not set
929# CONFIG_DWARF_UNWINDER is not set 962# CONFIG_DWARF_UNWINDER is not set
930 963
931# 964#
@@ -934,7 +967,11 @@ CONFIG_SH_STANDARD_BIOS=y
934# CONFIG_KEYS is not set 967# CONFIG_KEYS is not set
935# CONFIG_SECURITY is not set 968# CONFIG_SECURITY is not set
936# CONFIG_SECURITYFS is not set 969# CONFIG_SECURITYFS is not set
937# CONFIG_SECURITY_FILE_CAPABILITIES is not set 970# CONFIG_DEFAULT_SECURITY_SELINUX is not set
971# CONFIG_DEFAULT_SECURITY_SMACK is not set
972# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
973CONFIG_DEFAULT_SECURITY_DAC=y
974CONFIG_DEFAULT_SECURITY=""
938CONFIG_CRYPTO=y 975CONFIG_CRYPTO=y
939 976
940# 977#
diff --git a/arch/sh/configs/se7724_defconfig b/arch/sh/configs/se7724_defconfig
index 56b0b9ff9e05..ab371afe3595 100644
--- a/arch/sh/configs/se7724_defconfig
+++ b/arch/sh/configs/se7724_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 3# Linux kernel version: 2.6.33-rc2
4# Fri Sep 25 11:50:59 2009 4# Mon Jan 4 14:36:56 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21CONFIG_ARCH_SUSPEND_POSSIBLE=y 21CONFIG_ARCH_SUSPEND_POSSIBLE=y
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_CMT=y 24CONFIG_SYS_SUPPORTS_CMT=y
24CONFIG_SYS_SUPPORTS_TMU=y 25CONFIG_SYS_SUPPORTS_TMU=y
25CONFIG_STACKTRACE_SUPPORT=y 26CONFIG_STACKTRACE_SUPPORT=y
@@ -30,6 +31,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
30CONFIG_ARCH_NO_VIRT_TO_BUS=y 31CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 32CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
34CONFIG_DMA_NONCOHERENT=y
33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 35CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
34CONFIG_CONSTRUCTORS=y 36CONFIG_CONSTRUCTORS=y
35 37
@@ -62,6 +64,7 @@ CONFIG_BSD_PROCESS_ACCT=y
62# 64#
63CONFIG_TREE_RCU=y 65CONFIG_TREE_RCU=y
64# CONFIG_TREE_PREEMPT_RCU is not set 66# CONFIG_TREE_PREEMPT_RCU is not set
67# CONFIG_TINY_RCU is not set
65# CONFIG_RCU_TRACE is not set 68# CONFIG_RCU_TRACE is not set
66CONFIG_RCU_FANOUT=32 69CONFIG_RCU_FANOUT=32
67# CONFIG_RCU_FANOUT_EXACT is not set 70# CONFIG_RCU_FANOUT_EXACT is not set
@@ -99,6 +102,7 @@ CONFIG_EVENTFD=y
99CONFIG_SHMEM=y 102CONFIG_SHMEM=y
100CONFIG_AIO=y 103CONFIG_AIO=y
101CONFIG_HAVE_PERF_EVENTS=y 104CONFIG_HAVE_PERF_EVENTS=y
105CONFIG_PERF_USE_VMALLOC=y
102 106
103# 107#
104# Kernel Performance Events And Counters 108# Kernel Performance Events And Counters
@@ -116,6 +120,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
116CONFIG_HAVE_KPROBES=y 120CONFIG_HAVE_KPROBES=y
117CONFIG_HAVE_KRETPROBES=y 121CONFIG_HAVE_KRETPROBES=y
118CONFIG_HAVE_ARCH_TRACEHOOK=y 122CONFIG_HAVE_ARCH_TRACEHOOK=y
123CONFIG_HAVE_DMA_ATTRS=y
119CONFIG_HAVE_CLK=y 124CONFIG_HAVE_CLK=y
120CONFIG_HAVE_DMA_API_DEBUG=y 125CONFIG_HAVE_DMA_API_DEBUG=y
121 126
@@ -142,14 +147,41 @@ CONFIG_LBDAF=y
142# IO Schedulers 147# IO Schedulers
143# 148#
144CONFIG_IOSCHED_NOOP=y 149CONFIG_IOSCHED_NOOP=y
145CONFIG_IOSCHED_AS=y
146CONFIG_IOSCHED_DEADLINE=y 150CONFIG_IOSCHED_DEADLINE=y
147CONFIG_IOSCHED_CFQ=y 151CONFIG_IOSCHED_CFQ=y
148# CONFIG_DEFAULT_AS is not set
149# CONFIG_DEFAULT_DEADLINE is not set 152# CONFIG_DEFAULT_DEADLINE is not set
150CONFIG_DEFAULT_CFQ=y 153CONFIG_DEFAULT_CFQ=y
151# CONFIG_DEFAULT_NOOP is not set 154# CONFIG_DEFAULT_NOOP is not set
152CONFIG_DEFAULT_IOSCHED="cfq" 155CONFIG_DEFAULT_IOSCHED="cfq"
156# CONFIG_INLINE_SPIN_TRYLOCK is not set
157# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
158# CONFIG_INLINE_SPIN_LOCK is not set
159# CONFIG_INLINE_SPIN_LOCK_BH is not set
160# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
161# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
162# CONFIG_INLINE_SPIN_UNLOCK is not set
163# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
164# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
165# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
166# CONFIG_INLINE_READ_TRYLOCK is not set
167# CONFIG_INLINE_READ_LOCK is not set
168# CONFIG_INLINE_READ_LOCK_BH is not set
169# CONFIG_INLINE_READ_LOCK_IRQ is not set
170# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
171# CONFIG_INLINE_READ_UNLOCK is not set
172# CONFIG_INLINE_READ_UNLOCK_BH is not set
173# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
174# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
175# CONFIG_INLINE_WRITE_TRYLOCK is not set
176# CONFIG_INLINE_WRITE_LOCK is not set
177# CONFIG_INLINE_WRITE_LOCK_BH is not set
178# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
179# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
180# CONFIG_INLINE_WRITE_UNLOCK is not set
181# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
182# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
183# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
184# CONFIG_MUTEX_SPIN_ON_OWNER is not set
153CONFIG_FREEZER=y 185CONFIG_FREEZER=y
154 186
155# 187#
@@ -205,6 +237,7 @@ CONFIG_FORCE_MAX_ZONEORDER=11
205CONFIG_MEMORY_START=0x08000000 237CONFIG_MEMORY_START=0x08000000
206CONFIG_MEMORY_SIZE=0x08000000 238CONFIG_MEMORY_SIZE=0x08000000
207CONFIG_29BIT=y 239CONFIG_29BIT=y
240# CONFIG_PMB_ENABLE is not set
208# CONFIG_X2TLB is not set 241# CONFIG_X2TLB is not set
209CONFIG_VSYSCALL=y 242CONFIG_VSYSCALL=y
210CONFIG_ARCH_FLATMEM_ENABLE=y 243CONFIG_ARCH_FLATMEM_ENABLE=y
@@ -229,8 +262,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
229# CONFIG_PHYS_ADDR_T_64BIT is not set 262# CONFIG_PHYS_ADDR_T_64BIT is not set
230CONFIG_ZONE_DMA_FLAG=0 263CONFIG_ZONE_DMA_FLAG=0
231CONFIG_NR_QUICK=2 264CONFIG_NR_QUICK=2
232CONFIG_HAVE_MLOCK=y
233CONFIG_HAVE_MLOCKED_PAGE_BIT=y
234# CONFIG_KSM is not set 265# CONFIG_KSM is not set
235CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 266CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
236 267
@@ -265,7 +296,6 @@ CONFIG_SH_7724_SOLUTION_ENGINE=y
265# 296#
266CONFIG_SH_TIMER_TMU=y 297CONFIG_SH_TIMER_TMU=y
267# CONFIG_SH_TIMER_CMT is not set 298# CONFIG_SH_TIMER_CMT is not set
268CONFIG_SH_PCLK_FREQ=33333333
269CONFIG_SH_CLK_CPG=y 299CONFIG_SH_CLK_CPG=y
270# CONFIG_NO_HZ is not set 300# CONFIG_NO_HZ is not set
271# CONFIG_HIGH_RES_TIMERS is not set 301# CONFIG_HIGH_RES_TIMERS is not set
@@ -279,8 +309,8 @@ CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
279# 309#
280# DMA support 310# DMA support
281# 311#
282CONFIG_SH_DMA_API=y
283CONFIG_SH_DMA=y 312CONFIG_SH_DMA=y
313CONFIG_SH_DMA_API=y
284CONFIG_NR_ONCHIP_DMA_CHANNELS=12 314CONFIG_NR_ONCHIP_DMA_CHANNELS=12
285# CONFIG_NR_DMA_CHANNELS_BOOL is not set 315# CONFIG_NR_DMA_CHANNELS_BOOL is not set
286 316
@@ -423,9 +453,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
423# CONFIG_AF_RXRPC is not set 453# CONFIG_AF_RXRPC is not set
424CONFIG_WIRELESS=y 454CONFIG_WIRELESS=y
425# CONFIG_CFG80211 is not set 455# CONFIG_CFG80211 is not set
426CONFIG_CFG80211_DEFAULT_PS_VALUE=0
427# CONFIG_WIRELESS_OLD_REGULATORY is not set
428# CONFIG_WIRELESS_EXT is not set
429# CONFIG_LIB80211 is not set 456# CONFIG_LIB80211 is not set
430 457
431# 458#
@@ -555,6 +582,10 @@ CONFIG_MTD_UBI_BEB_RESERVE=1
555CONFIG_BLK_DEV=y 582CONFIG_BLK_DEV=y
556# CONFIG_BLK_DEV_COW_COMMON is not set 583# CONFIG_BLK_DEV_COW_COMMON is not set
557# CONFIG_BLK_DEV_LOOP is not set 584# CONFIG_BLK_DEV_LOOP is not set
585
586#
587# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
588#
558# CONFIG_BLK_DEV_NBD is not set 589# CONFIG_BLK_DEV_NBD is not set
559# CONFIG_BLK_DEV_UB is not set 590# CONFIG_BLK_DEV_UB is not set
560CONFIG_BLK_DEV_RAM=y 591CONFIG_BLK_DEV_RAM=y
@@ -565,9 +596,12 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
565# CONFIG_ATA_OVER_ETH is not set 596# CONFIG_ATA_OVER_ETH is not set
566# CONFIG_BLK_DEV_HD is not set 597# CONFIG_BLK_DEV_HD is not set
567CONFIG_MISC_DEVICES=y 598CONFIG_MISC_DEVICES=y
599# CONFIG_AD525X_DPOT is not set
568# CONFIG_ICS932S401 is not set 600# CONFIG_ICS932S401 is not set
569# CONFIG_ENCLOSURE_SERVICES is not set 601# CONFIG_ENCLOSURE_SERVICES is not set
570# CONFIG_ISL29003 is not set 602# CONFIG_ISL29003 is not set
603# CONFIG_DS1682 is not set
604# CONFIG_TI_DAC7512 is not set
571# CONFIG_C2PORT is not set 605# CONFIG_C2PORT is not set
572 606
573# 607#
@@ -578,6 +612,7 @@ CONFIG_MISC_DEVICES=y
578# CONFIG_EEPROM_LEGACY is not set 612# CONFIG_EEPROM_LEGACY is not set
579# CONFIG_EEPROM_MAX6875 is not set 613# CONFIG_EEPROM_MAX6875 is not set
580# CONFIG_EEPROM_93CX6 is not set 614# CONFIG_EEPROM_93CX6 is not set
615# CONFIG_IWMC3200TOP is not set
581CONFIG_HAVE_IDE=y 616CONFIG_HAVE_IDE=y
582# CONFIG_IDE is not set 617# CONFIG_IDE is not set
583 618
@@ -672,11 +707,12 @@ CONFIG_SMC91X=y
672# CONFIG_B44 is not set 707# CONFIG_B44 is not set
673# CONFIG_KS8842 is not set 708# CONFIG_KS8842 is not set
674# CONFIG_KS8851 is not set 709# CONFIG_KS8851 is not set
710# CONFIG_KS8851_MLL is not set
675# CONFIG_NETDEV_1000 is not set 711# CONFIG_NETDEV_1000 is not set
676# CONFIG_NETDEV_10000 is not set 712# CONFIG_NETDEV_10000 is not set
677CONFIG_WLAN=y 713CONFIG_WLAN=y
678# CONFIG_WLAN_PRE80211 is not set 714# CONFIG_USB_ZD1201 is not set
679# CONFIG_WLAN_80211 is not set 715# CONFIG_HOSTAP is not set
680 716
681# 717#
682# Enable WiMAX (Networking options) to see the WiMAX drivers 718# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -705,6 +741,7 @@ CONFIG_WLAN=y
705CONFIG_INPUT=y 741CONFIG_INPUT=y
706# CONFIG_INPUT_FF_MEMLESS is not set 742# CONFIG_INPUT_FF_MEMLESS is not set
707# CONFIG_INPUT_POLLDEV is not set 743# CONFIG_INPUT_POLLDEV is not set
744# CONFIG_INPUT_SPARSEKMAP is not set
708 745
709# 746#
710# Userland interfaces 747# Userland interfaces
@@ -813,7 +850,6 @@ CONFIG_I2C_SH_MOBILE=y
813# 850#
814# Miscellaneous I2C Chip support 851# Miscellaneous I2C Chip support
815# 852#
816# CONFIG_DS1682 is not set
817# CONFIG_SENSORS_TSL2550 is not set 853# CONFIG_SENSORS_TSL2550 is not set
818# CONFIG_I2C_DEBUG_CORE is not set 854# CONFIG_I2C_DEBUG_CORE is not set
819# CONFIG_I2C_DEBUG_ALGO is not set 855# CONFIG_I2C_DEBUG_ALGO is not set
@@ -827,7 +863,10 @@ CONFIG_SPI_MASTER=y
827# 863#
828CONFIG_SPI_BITBANG=y 864CONFIG_SPI_BITBANG=y
829# CONFIG_SPI_GPIO is not set 865# CONFIG_SPI_GPIO is not set
866# CONFIG_SPI_SH_MSIOF is not set
830# CONFIG_SPI_SH_SCI is not set 867# CONFIG_SPI_SH_SCI is not set
868# CONFIG_SPI_XILINX is not set
869# CONFIG_SPI_DESIGNWARE is not set
831 870
832# 871#
833# SPI Protocol Masters 872# SPI Protocol Masters
@@ -885,11 +924,13 @@ CONFIG_SSB_POSSIBLE=y
885# 924#
886# CONFIG_MFD_CORE is not set 925# CONFIG_MFD_CORE is not set
887# CONFIG_MFD_SM501 is not set 926# CONFIG_MFD_SM501 is not set
927# CONFIG_MFD_SH_MOBILE_SDHI is not set
888# CONFIG_HTC_PASIC3 is not set 928# CONFIG_HTC_PASIC3 is not set
889# CONFIG_TPS65010 is not set 929# CONFIG_TPS65010 is not set
890# CONFIG_TWL4030_CORE is not set 930# CONFIG_TWL4030_CORE is not set
891# CONFIG_MFD_TMIO is not set 931# CONFIG_MFD_TMIO is not set
892# CONFIG_PMIC_DA903X is not set 932# CONFIG_PMIC_DA903X is not set
933# CONFIG_PMIC_ADP5520 is not set
893# CONFIG_MFD_WM8400 is not set 934# CONFIG_MFD_WM8400 is not set
894# CONFIG_MFD_WM831X is not set 935# CONFIG_MFD_WM831X is not set
895# CONFIG_MFD_WM8350_I2C is not set 936# CONFIG_MFD_WM8350_I2C is not set
@@ -897,6 +938,8 @@ CONFIG_SSB_POSSIBLE=y
897# CONFIG_MFD_MC13783 is not set 938# CONFIG_MFD_MC13783 is not set
898# CONFIG_AB3100_CORE is not set 939# CONFIG_AB3100_CORE is not set
899# CONFIG_EZX_PCAP is not set 940# CONFIG_EZX_PCAP is not set
941# CONFIG_MFD_88PM8607 is not set
942# CONFIG_AB4500_CORE is not set
900# CONFIG_REGULATOR is not set 943# CONFIG_REGULATOR is not set
901CONFIG_MEDIA_SUPPORT=y 944CONFIG_MEDIA_SUPPORT=y
902 945
@@ -913,6 +956,8 @@ CONFIG_VIDEO_MEDIA=m
913# 956#
914# Multimedia drivers 957# Multimedia drivers
915# 958#
959CONFIG_IR_CORE=y
960CONFIG_VIDEO_IR=y
916# CONFIG_MEDIA_ATTACH is not set 961# CONFIG_MEDIA_ATTACH is not set
917CONFIG_MEDIA_TUNER=m 962CONFIG_MEDIA_TUNER=m
918# CONFIG_MEDIA_TUNER_CUSTOMISE is not set 963# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
@@ -932,6 +977,7 @@ CONFIG_VIDEO_CAPTURE_DRIVERS=y
932# CONFIG_VIDEO_ADV_DEBUG is not set 977# CONFIG_VIDEO_ADV_DEBUG is not set
933# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set 978# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
934CONFIG_VIDEO_HELPER_CHIPS_AUTO=y 979CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
980CONFIG_VIDEO_IR_I2C=y
935# CONFIG_VIDEO_VIVI is not set 981# CONFIG_VIDEO_VIVI is not set
936# CONFIG_VIDEO_SAA5246A is not set 982# CONFIG_VIDEO_SAA5246A is not set
937# CONFIG_VIDEO_SAA5249 is not set 983# CONFIG_VIDEO_SAA5249 is not set
@@ -940,10 +986,13 @@ CONFIG_SOC_CAMERA=y
940# CONFIG_SOC_CAMERA_MT9M001 is not set 986# CONFIG_SOC_CAMERA_MT9M001 is not set
941# CONFIG_SOC_CAMERA_MT9M111 is not set 987# CONFIG_SOC_CAMERA_MT9M111 is not set
942# CONFIG_SOC_CAMERA_MT9T031 is not set 988# CONFIG_SOC_CAMERA_MT9T031 is not set
989# CONFIG_SOC_CAMERA_MT9T112 is not set
943# CONFIG_SOC_CAMERA_MT9V022 is not set 990# CONFIG_SOC_CAMERA_MT9V022 is not set
991# CONFIG_SOC_CAMERA_RJ54N1 is not set
944# CONFIG_SOC_CAMERA_TW9910 is not set 992# CONFIG_SOC_CAMERA_TW9910 is not set
945# CONFIG_SOC_CAMERA_PLATFORM is not set 993# CONFIG_SOC_CAMERA_PLATFORM is not set
946CONFIG_SOC_CAMERA_OV772X=y 994CONFIG_SOC_CAMERA_OV772X=y
995# CONFIG_SOC_CAMERA_OV9640 is not set
947CONFIG_VIDEO_SH_MOBILE_CEU=y 996CONFIG_VIDEO_SH_MOBILE_CEU=y
948CONFIG_V4L_USB_DRIVERS=y 997CONFIG_V4L_USB_DRIVERS=y
949# CONFIG_USB_VIDEO_CLASS is not set 998# CONFIG_USB_VIDEO_CLASS is not set
@@ -961,6 +1010,7 @@ CONFIG_USB_GSPCA=m
961# CONFIG_USB_GSPCA_OV519 is not set 1010# CONFIG_USB_GSPCA_OV519 is not set
962# CONFIG_USB_GSPCA_OV534 is not set 1011# CONFIG_USB_GSPCA_OV534 is not set
963# CONFIG_USB_GSPCA_PAC207 is not set 1012# CONFIG_USB_GSPCA_PAC207 is not set
1013# CONFIG_USB_GSPCA_PAC7302 is not set
964# CONFIG_USB_GSPCA_PAC7311 is not set 1014# CONFIG_USB_GSPCA_PAC7311 is not set
965# CONFIG_USB_GSPCA_SN9C20X is not set 1015# CONFIG_USB_GSPCA_SN9C20X is not set
966# CONFIG_USB_GSPCA_SONIXB is not set 1016# CONFIG_USB_GSPCA_SONIXB is not set
@@ -974,6 +1024,7 @@ CONFIG_USB_GSPCA=m
974# CONFIG_USB_GSPCA_SQ905 is not set 1024# CONFIG_USB_GSPCA_SQ905 is not set
975# CONFIG_USB_GSPCA_SQ905C is not set 1025# CONFIG_USB_GSPCA_SQ905C is not set
976# CONFIG_USB_GSPCA_STK014 is not set 1026# CONFIG_USB_GSPCA_STK014 is not set
1027# CONFIG_USB_GSPCA_STV0680 is not set
977# CONFIG_USB_GSPCA_SUNPLUS is not set 1028# CONFIG_USB_GSPCA_SUNPLUS is not set
978# CONFIG_USB_GSPCA_T613 is not set 1029# CONFIG_USB_GSPCA_T613 is not set
979# CONFIG_USB_GSPCA_TV8532 is not set 1030# CONFIG_USB_GSPCA_TV8532 is not set
@@ -1110,9 +1161,11 @@ CONFIG_SND_SOC_WM_HUBS=m
1110CONFIG_SND_SOC_AD1836=m 1161CONFIG_SND_SOC_AD1836=m
1111CONFIG_SND_SOC_AD1938=m 1162CONFIG_SND_SOC_AD1938=m
1112CONFIG_SND_SOC_AD73311=m 1163CONFIG_SND_SOC_AD73311=m
1164CONFIG_SND_SOC_ADS117X=m
1113CONFIG_SND_SOC_AK4104=m 1165CONFIG_SND_SOC_AK4104=m
1114CONFIG_SND_SOC_AK4535=m 1166CONFIG_SND_SOC_AK4535=m
1115CONFIG_SND_SOC_AK4642=m 1167CONFIG_SND_SOC_AK4642=m
1168CONFIG_SND_SOC_AK4671=m
1116CONFIG_SND_SOC_CS4270=m 1169CONFIG_SND_SOC_CS4270=m
1117CONFIG_SND_SOC_L3=m 1170CONFIG_SND_SOC_L3=m
1118CONFIG_SND_SOC_PCM3008=m 1171CONFIG_SND_SOC_PCM3008=m
@@ -1121,11 +1174,14 @@ CONFIG_SND_SOC_SSM2602=m
1121CONFIG_SND_SOC_TLV320AIC23=m 1174CONFIG_SND_SOC_TLV320AIC23=m
1122CONFIG_SND_SOC_TLV320AIC26=m 1175CONFIG_SND_SOC_TLV320AIC26=m
1123CONFIG_SND_SOC_TLV320AIC3X=m 1176CONFIG_SND_SOC_TLV320AIC3X=m
1177CONFIG_SND_SOC_TLV320DAC33=m
1124CONFIG_SND_SOC_UDA134X=m 1178CONFIG_SND_SOC_UDA134X=m
1125CONFIG_SND_SOC_UDA1380=m 1179CONFIG_SND_SOC_UDA1380=m
1126CONFIG_SND_SOC_WM8510=m 1180CONFIG_SND_SOC_WM8510=m
1127CONFIG_SND_SOC_WM8523=m 1181CONFIG_SND_SOC_WM8523=m
1128CONFIG_SND_SOC_WM8580=m 1182CONFIG_SND_SOC_WM8580=m
1183CONFIG_SND_SOC_WM8711=m
1184CONFIG_SND_SOC_WM8727=m
1129CONFIG_SND_SOC_WM8728=m 1185CONFIG_SND_SOC_WM8728=m
1130CONFIG_SND_SOC_WM8731=m 1186CONFIG_SND_SOC_WM8731=m
1131CONFIG_SND_SOC_WM8750=m 1187CONFIG_SND_SOC_WM8750=m
@@ -1143,6 +1199,7 @@ CONFIG_SND_SOC_WM8990=m
1143CONFIG_SND_SOC_WM8993=m 1199CONFIG_SND_SOC_WM8993=m
1144CONFIG_SND_SOC_WM9081=m 1200CONFIG_SND_SOC_WM9081=m
1145CONFIG_SND_SOC_MAX9877=m 1201CONFIG_SND_SOC_MAX9877=m
1202CONFIG_SND_SOC_TPA6130A2=m
1146# CONFIG_SOUND_PRIME is not set 1203# CONFIG_SOUND_PRIME is not set
1147CONFIG_HID_SUPPORT=y 1204CONFIG_HID_SUPPORT=y
1148CONFIG_HID=y 1205CONFIG_HID=y
@@ -1316,10 +1373,12 @@ CONFIG_USB_ETH_RNDIS=y
1316CONFIG_USB_GADGETFS=m 1373CONFIG_USB_GADGETFS=m
1317CONFIG_USB_FILE_STORAGE=m 1374CONFIG_USB_FILE_STORAGE=m
1318# CONFIG_USB_FILE_STORAGE_TEST is not set 1375# CONFIG_USB_FILE_STORAGE_TEST is not set
1376# CONFIG_USB_MASS_STORAGE is not set
1319CONFIG_USB_G_SERIAL=m 1377CONFIG_USB_G_SERIAL=m
1320# CONFIG_USB_MIDI_GADGET is not set 1378# CONFIG_USB_MIDI_GADGET is not set
1321# CONFIG_USB_G_PRINTER is not set 1379# CONFIG_USB_G_PRINTER is not set
1322# CONFIG_USB_CDC_COMPOSITE is not set 1380# CONFIG_USB_CDC_COMPOSITE is not set
1381# CONFIG_USB_G_MULTI is not set
1323 1382
1324# 1383#
1325# OTG and related infrastructure 1384# OTG and related infrastructure
@@ -1345,6 +1404,7 @@ CONFIG_MMC_BLOCK_BOUNCE=y
1345# CONFIG_MMC_AT91 is not set 1404# CONFIG_MMC_AT91 is not set
1346# CONFIG_MMC_ATMELMCI is not set 1405# CONFIG_MMC_ATMELMCI is not set
1347CONFIG_MMC_SPI=y 1406CONFIG_MMC_SPI=y
1407# CONFIG_MMC_TMIO is not set
1348# CONFIG_MEMSTICK is not set 1408# CONFIG_MEMSTICK is not set
1349# CONFIG_NEW_LEDS is not set 1409# CONFIG_NEW_LEDS is not set
1350# CONFIG_ACCESSIBILITY is not set 1410# CONFIG_ACCESSIBILITY is not set
@@ -1376,6 +1436,7 @@ CONFIG_RTC_INTF_DEV=y
1376CONFIG_RTC_DRV_PCF8563=y 1436CONFIG_RTC_DRV_PCF8563=y
1377# CONFIG_RTC_DRV_PCF8583 is not set 1437# CONFIG_RTC_DRV_PCF8583 is not set
1378# CONFIG_RTC_DRV_M41T80 is not set 1438# CONFIG_RTC_DRV_M41T80 is not set
1439# CONFIG_RTC_DRV_BQ32K is not set
1379# CONFIG_RTC_DRV_S35390A is not set 1440# CONFIG_RTC_DRV_S35390A is not set
1380# CONFIG_RTC_DRV_FM3130 is not set 1441# CONFIG_RTC_DRV_FM3130 is not set
1381# CONFIG_RTC_DRV_RX8581 is not set 1442# CONFIG_RTC_DRV_RX8581 is not set
@@ -1404,7 +1465,9 @@ CONFIG_RTC_DRV_PCF8563=y
1404# CONFIG_RTC_DRV_M48T86 is not set 1465# CONFIG_RTC_DRV_M48T86 is not set
1405# CONFIG_RTC_DRV_M48T35 is not set 1466# CONFIG_RTC_DRV_M48T35 is not set
1406# CONFIG_RTC_DRV_M48T59 is not set 1467# CONFIG_RTC_DRV_M48T59 is not set
1468# CONFIG_RTC_DRV_MSM6242 is not set
1407# CONFIG_RTC_DRV_BQ4802 is not set 1469# CONFIG_RTC_DRV_BQ4802 is not set
1470# CONFIG_RTC_DRV_RP5C01 is not set
1408# CONFIG_RTC_DRV_V3020 is not set 1471# CONFIG_RTC_DRV_V3020 is not set
1409 1472
1410# 1473#
@@ -1597,7 +1660,7 @@ CONFIG_FRAME_WARN=1024
1597# CONFIG_DEBUG_FS is not set 1660# CONFIG_DEBUG_FS is not set
1598# CONFIG_HEADERS_CHECK is not set 1661# CONFIG_HEADERS_CHECK is not set
1599# CONFIG_DEBUG_KERNEL is not set 1662# CONFIG_DEBUG_KERNEL is not set
1600# CONFIG_DEBUG_BUGVERBOSE is not set 1663CONFIG_DEBUG_BUGVERBOSE=y
1601# CONFIG_DEBUG_MEMORY_INIT is not set 1664# CONFIG_DEBUG_MEMORY_INIT is not set
1602# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1665# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1603# CONFIG_LATENCYTOP is not set 1666# CONFIG_LATENCYTOP is not set
@@ -1614,7 +1677,6 @@ CONFIG_TRACING_SUPPORT=y
1614# CONFIG_SAMPLES is not set 1677# CONFIG_SAMPLES is not set
1615CONFIG_HAVE_ARCH_KGDB=y 1678CONFIG_HAVE_ARCH_KGDB=y
1616# CONFIG_SH_STANDARD_BIOS is not set 1679# CONFIG_SH_STANDARD_BIOS is not set
1617# CONFIG_EARLY_SCIF_CONSOLE is not set
1618# CONFIG_DWARF_UNWINDER is not set 1680# CONFIG_DWARF_UNWINDER is not set
1619 1681
1620# 1682#
@@ -1623,7 +1685,11 @@ CONFIG_HAVE_ARCH_KGDB=y
1623# CONFIG_KEYS is not set 1685# CONFIG_KEYS is not set
1624# CONFIG_SECURITY is not set 1686# CONFIG_SECURITY is not set
1625# CONFIG_SECURITYFS is not set 1687# CONFIG_SECURITYFS is not set
1626# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1688# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1689# CONFIG_DEFAULT_SECURITY_SMACK is not set
1690# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1691CONFIG_DEFAULT_SECURITY_DAC=y
1692CONFIG_DEFAULT_SECURITY=""
1627CONFIG_CRYPTO=y 1693CONFIG_CRYPTO=y
1628 1694
1629# 1695#
diff --git a/arch/sh/configs/se7750_defconfig b/arch/sh/configs/se7750_defconfig
index 7bc926c17b79..b15a44e2ec43 100644
--- a/arch/sh/configs/se7750_defconfig
+++ b/arch/sh/configs/se7750_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 18:58:58 2009 4# Mon Jan 4 14:39:10 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_TMU=y 24CONFIG_SYS_SUPPORTS_TMU=y
24CONFIG_STACKTRACE_SUPPORT=y 25CONFIG_STACKTRACE_SUPPORT=y
25CONFIG_LOCKDEP_SUPPORT=y 26CONFIG_LOCKDEP_SUPPORT=y
@@ -29,6 +30,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
29CONFIG_ARCH_NO_VIRT_TO_BUS=y 30CONFIG_ARCH_NO_VIRT_TO_BUS=y
30CONFIG_ARCH_HAS_DEFAULT_IDLE=y 31CONFIG_ARCH_HAS_DEFAULT_IDLE=y
31CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
33CONFIG_DMA_NONCOHERENT=y
32CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
33CONFIG_CONSTRUCTORS=y 35CONFIG_CONSTRUCTORS=y
34 36
@@ -60,6 +62,7 @@ CONFIG_BSD_PROCESS_ACCT=y
60# 62#
61CONFIG_TREE_RCU=y 63CONFIG_TREE_RCU=y
62# CONFIG_TREE_PREEMPT_RCU is not set 64# CONFIG_TREE_PREEMPT_RCU is not set
65# CONFIG_TINY_RCU is not set
63# CONFIG_RCU_TRACE is not set 66# CONFIG_RCU_TRACE is not set
64CONFIG_RCU_FANOUT=32 67CONFIG_RCU_FANOUT=32
65# CONFIG_RCU_FANOUT_EXACT is not set 68# CONFIG_RCU_FANOUT_EXACT is not set
@@ -95,6 +98,7 @@ CONFIG_EVENTFD=y
95CONFIG_SHMEM=y 98CONFIG_SHMEM=y
96CONFIG_AIO=y 99CONFIG_AIO=y
97CONFIG_HAVE_PERF_EVENTS=y 100CONFIG_HAVE_PERF_EVENTS=y
101CONFIG_PERF_USE_VMALLOC=y
98 102
99# 103#
100# Kernel Performance Events And Counters 104# Kernel Performance Events And Counters
@@ -113,6 +117,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
113CONFIG_HAVE_KPROBES=y 117CONFIG_HAVE_KPROBES=y
114CONFIG_HAVE_KRETPROBES=y 118CONFIG_HAVE_KRETPROBES=y
115CONFIG_HAVE_ARCH_TRACEHOOK=y 119CONFIG_HAVE_ARCH_TRACEHOOK=y
120CONFIG_HAVE_DMA_ATTRS=y
116CONFIG_HAVE_CLK=y 121CONFIG_HAVE_CLK=y
117CONFIG_HAVE_DMA_API_DEBUG=y 122CONFIG_HAVE_DMA_API_DEBUG=y
118 123
@@ -138,14 +143,41 @@ CONFIG_LBDAF=y
138# IO Schedulers 143# IO Schedulers
139# 144#
140CONFIG_IOSCHED_NOOP=y 145CONFIG_IOSCHED_NOOP=y
141CONFIG_IOSCHED_AS=y
142CONFIG_IOSCHED_DEADLINE=y 146CONFIG_IOSCHED_DEADLINE=y
143CONFIG_IOSCHED_CFQ=y 147CONFIG_IOSCHED_CFQ=y
144CONFIG_DEFAULT_AS=y
145# CONFIG_DEFAULT_DEADLINE is not set 148# CONFIG_DEFAULT_DEADLINE is not set
146# CONFIG_DEFAULT_CFQ is not set 149CONFIG_DEFAULT_CFQ=y
147# CONFIG_DEFAULT_NOOP is not set 150# CONFIG_DEFAULT_NOOP is not set
148CONFIG_DEFAULT_IOSCHED="anticipatory" 151CONFIG_DEFAULT_IOSCHED="cfq"
152# CONFIG_INLINE_SPIN_TRYLOCK is not set
153# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
154# CONFIG_INLINE_SPIN_LOCK is not set
155# CONFIG_INLINE_SPIN_LOCK_BH is not set
156# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
157# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
158CONFIG_INLINE_SPIN_UNLOCK=y
159# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
160CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
161# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
162# CONFIG_INLINE_READ_TRYLOCK is not set
163# CONFIG_INLINE_READ_LOCK is not set
164# CONFIG_INLINE_READ_LOCK_BH is not set
165# CONFIG_INLINE_READ_LOCK_IRQ is not set
166# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
167CONFIG_INLINE_READ_UNLOCK=y
168# CONFIG_INLINE_READ_UNLOCK_BH is not set
169CONFIG_INLINE_READ_UNLOCK_IRQ=y
170# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
171# CONFIG_INLINE_WRITE_TRYLOCK is not set
172# CONFIG_INLINE_WRITE_LOCK is not set
173# CONFIG_INLINE_WRITE_LOCK_BH is not set
174# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
175# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
176CONFIG_INLINE_WRITE_UNLOCK=y
177# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
178CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
179# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
180# CONFIG_MUTEX_SPIN_ON_OWNER is not set
149# CONFIG_FREEZER is not set 181# CONFIG_FREEZER is not set
150 182
151# 183#
@@ -221,8 +253,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
221# CONFIG_PHYS_ADDR_T_64BIT is not set 253# CONFIG_PHYS_ADDR_T_64BIT is not set
222CONFIG_ZONE_DMA_FLAG=0 254CONFIG_ZONE_DMA_FLAG=0
223CONFIG_NR_QUICK=2 255CONFIG_NR_QUICK=2
224CONFIG_HAVE_MLOCK=y
225CONFIG_HAVE_MLOCKED_PAGE_BIT=y
226# CONFIG_KSM is not set 256# CONFIG_KSM is not set
227CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 257CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
228 258
@@ -307,7 +337,6 @@ CONFIG_GUSA=y
307CONFIG_ZERO_PAGE_OFFSET=0x00001000 337CONFIG_ZERO_PAGE_OFFSET=0x00001000
308CONFIG_BOOT_LINK_OFFSET=0x00800000 338CONFIG_BOOT_LINK_OFFSET=0x00800000
309CONFIG_ENTRY_OFFSET=0x00001000 339CONFIG_ENTRY_OFFSET=0x00001000
310# CONFIG_UBC_WAKEUP is not set
311# CONFIG_CMDLINE_OVERWRITE is not set 340# CONFIG_CMDLINE_OVERWRITE is not set
312# CONFIG_CMDLINE_EXTEND is not set 341# CONFIG_CMDLINE_EXTEND is not set
313 342
@@ -406,9 +435,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
406# CONFIG_AF_RXRPC is not set 435# CONFIG_AF_RXRPC is not set
407CONFIG_WIRELESS=y 436CONFIG_WIRELESS=y
408# CONFIG_CFG80211 is not set 437# CONFIG_CFG80211 is not set
409CONFIG_CFG80211_DEFAULT_PS_VALUE=0
410# CONFIG_WIRELESS_OLD_REGULATORY is not set
411# CONFIG_WIRELESS_EXT is not set
412# CONFIG_LIB80211 is not set 438# CONFIG_LIB80211 is not set
413 439
414# 440#
@@ -513,6 +539,10 @@ CONFIG_MTD_ROM=y
513CONFIG_BLK_DEV=y 539CONFIG_BLK_DEV=y
514# CONFIG_BLK_DEV_COW_COMMON is not set 540# CONFIG_BLK_DEV_COW_COMMON is not set
515# CONFIG_BLK_DEV_LOOP is not set 541# CONFIG_BLK_DEV_LOOP is not set
542
543#
544# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
545#
516# CONFIG_BLK_DEV_NBD is not set 546# CONFIG_BLK_DEV_NBD is not set
517# CONFIG_BLK_DEV_RAM is not set 547# CONFIG_BLK_DEV_RAM is not set
518# CONFIG_CDROM_PKTCDVD is not set 548# CONFIG_CDROM_PKTCDVD is not set
@@ -615,11 +645,11 @@ CONFIG_STNIC=y
615# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 645# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
616# CONFIG_B44 is not set 646# CONFIG_B44 is not set
617# CONFIG_KS8842 is not set 647# CONFIG_KS8842 is not set
648# CONFIG_KS8851_MLL is not set
618CONFIG_NETDEV_1000=y 649CONFIG_NETDEV_1000=y
619CONFIG_NETDEV_10000=y 650CONFIG_NETDEV_10000=y
620CONFIG_WLAN=y 651CONFIG_WLAN=y
621# CONFIG_WLAN_PRE80211 is not set 652# CONFIG_HOSTAP is not set
622# CONFIG_WLAN_80211 is not set
623 653
624# 654#
625# Enable WiMAX (Networking options) to see the WiMAX drivers 655# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -726,6 +756,7 @@ CONFIG_SSB_POSSIBLE=y
726# 756#
727# CONFIG_MFD_CORE is not set 757# CONFIG_MFD_CORE is not set
728# CONFIG_MFD_SM501 is not set 758# CONFIG_MFD_SM501 is not set
759# CONFIG_MFD_SH_MOBILE_SDHI is not set
729# CONFIG_HTC_PASIC3 is not set 760# CONFIG_HTC_PASIC3 is not set
730# CONFIG_MFD_TMIO is not set 761# CONFIG_MFD_TMIO is not set
731# CONFIG_REGULATOR is not set 762# CONFIG_REGULATOR is not set
@@ -785,6 +816,7 @@ CONFIG_RTC_LIB=y
785# CONFIG_EXT2_FS is not set 816# CONFIG_EXT2_FS is not set
786# CONFIG_EXT3_FS is not set 817# CONFIG_EXT3_FS is not set
787# CONFIG_EXT4_FS is not set 818# CONFIG_EXT4_FS is not set
819CONFIG_EXT4_USE_FOR_EXT23=y
788# CONFIG_REISERFS_FS is not set 820# CONFIG_REISERFS_FS is not set
789# CONFIG_JFS_FS is not set 821# CONFIG_JFS_FS is not set
790# CONFIG_FS_POSIX_ACL is not set 822# CONFIG_FS_POSIX_ACL is not set
@@ -914,10 +946,11 @@ CONFIG_FRAME_WARN=1024
914# CONFIG_DEBUG_FS is not set 946# CONFIG_DEBUG_FS is not set
915# CONFIG_HEADERS_CHECK is not set 947# CONFIG_HEADERS_CHECK is not set
916# CONFIG_DEBUG_KERNEL is not set 948# CONFIG_DEBUG_KERNEL is not set
917# CONFIG_DEBUG_BUGVERBOSE is not set 949CONFIG_DEBUG_BUGVERBOSE=y
918# CONFIG_DEBUG_MEMORY_INIT is not set 950# CONFIG_DEBUG_MEMORY_INIT is not set
919# CONFIG_RCU_CPU_STALL_DETECTOR is not set 951# CONFIG_RCU_CPU_STALL_DETECTOR is not set
920# CONFIG_LATENCYTOP is not set 952# CONFIG_LATENCYTOP is not set
953# CONFIG_SYSCTL_SYSCALL_CHECK is not set
921CONFIG_HAVE_FUNCTION_TRACER=y 954CONFIG_HAVE_FUNCTION_TRACER=y
922CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 955CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
923CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 956CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
@@ -930,7 +963,6 @@ CONFIG_TRACING_SUPPORT=y
930# CONFIG_SAMPLES is not set 963# CONFIG_SAMPLES is not set
931CONFIG_HAVE_ARCH_KGDB=y 964CONFIG_HAVE_ARCH_KGDB=y
932# CONFIG_SH_STANDARD_BIOS is not set 965# CONFIG_SH_STANDARD_BIOS is not set
933# CONFIG_EARLY_SCIF_CONSOLE is not set
934# CONFIG_DWARF_UNWINDER is not set 966# CONFIG_DWARF_UNWINDER is not set
935 967
936# 968#
@@ -939,7 +971,11 @@ CONFIG_HAVE_ARCH_KGDB=y
939# CONFIG_KEYS is not set 971# CONFIG_KEYS is not set
940# CONFIG_SECURITY is not set 972# CONFIG_SECURITY is not set
941# CONFIG_SECURITYFS is not set 973# CONFIG_SECURITYFS is not set
942# CONFIG_SECURITY_FILE_CAPABILITIES is not set 974# CONFIG_DEFAULT_SECURITY_SELINUX is not set
975# CONFIG_DEFAULT_SECURITY_SMACK is not set
976# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
977CONFIG_DEFAULT_SECURITY_DAC=y
978CONFIG_DEFAULT_SECURITY=""
943CONFIG_CRYPTO=y 979CONFIG_CRYPTO=y
944 980
945# 981#
diff --git a/arch/sh/configs/se7751_defconfig b/arch/sh/configs/se7751_defconfig
index c20ae5e35c81..d1effdeaa416 100644
--- a/arch/sh/configs/se7751_defconfig
+++ b/arch/sh/configs/se7751_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 19:01:41 2009 4# Mon Jan 4 14:39:56 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_TMU=y 24CONFIG_SYS_SUPPORTS_TMU=y
24CONFIG_STACKTRACE_SUPPORT=y 25CONFIG_STACKTRACE_SUPPORT=y
25CONFIG_LOCKDEP_SUPPORT=y 26CONFIG_LOCKDEP_SUPPORT=y
@@ -29,6 +30,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
29CONFIG_ARCH_NO_VIRT_TO_BUS=y 30CONFIG_ARCH_NO_VIRT_TO_BUS=y
30CONFIG_ARCH_HAS_DEFAULT_IDLE=y 31CONFIG_ARCH_HAS_DEFAULT_IDLE=y
31CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
33CONFIG_DMA_NONCOHERENT=y
32CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
33CONFIG_CONSTRUCTORS=y 35CONFIG_CONSTRUCTORS=y
34 36
@@ -60,6 +62,7 @@ CONFIG_BSD_PROCESS_ACCT=y
60# 62#
61CONFIG_TREE_RCU=y 63CONFIG_TREE_RCU=y
62# CONFIG_TREE_PREEMPT_RCU is not set 64# CONFIG_TREE_PREEMPT_RCU is not set
65# CONFIG_TINY_RCU is not set
63# CONFIG_RCU_TRACE is not set 66# CONFIG_RCU_TRACE is not set
64CONFIG_RCU_FANOUT=32 67CONFIG_RCU_FANOUT=32
65# CONFIG_RCU_FANOUT_EXACT is not set 68# CONFIG_RCU_FANOUT_EXACT is not set
@@ -98,6 +101,7 @@ CONFIG_EVENTFD=y
98CONFIG_SHMEM=y 101CONFIG_SHMEM=y
99CONFIG_AIO=y 102CONFIG_AIO=y
100CONFIG_HAVE_PERF_EVENTS=y 103CONFIG_HAVE_PERF_EVENTS=y
104CONFIG_PERF_USE_VMALLOC=y
101 105
102# 106#
103# Kernel Performance Events And Counters 107# Kernel Performance Events And Counters
@@ -116,6 +120,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
116CONFIG_HAVE_KPROBES=y 120CONFIG_HAVE_KPROBES=y
117CONFIG_HAVE_KRETPROBES=y 121CONFIG_HAVE_KRETPROBES=y
118CONFIG_HAVE_ARCH_TRACEHOOK=y 122CONFIG_HAVE_ARCH_TRACEHOOK=y
123CONFIG_HAVE_DMA_ATTRS=y
119CONFIG_HAVE_CLK=y 124CONFIG_HAVE_CLK=y
120CONFIG_HAVE_DMA_API_DEBUG=y 125CONFIG_HAVE_DMA_API_DEBUG=y
121 126
@@ -141,14 +146,41 @@ CONFIG_LBDAF=y
141# IO Schedulers 146# IO Schedulers
142# 147#
143CONFIG_IOSCHED_NOOP=y 148CONFIG_IOSCHED_NOOP=y
144CONFIG_IOSCHED_AS=y
145CONFIG_IOSCHED_DEADLINE=y 149CONFIG_IOSCHED_DEADLINE=y
146CONFIG_IOSCHED_CFQ=y 150CONFIG_IOSCHED_CFQ=y
147CONFIG_DEFAULT_AS=y
148# CONFIG_DEFAULT_DEADLINE is not set 151# CONFIG_DEFAULT_DEADLINE is not set
149# CONFIG_DEFAULT_CFQ is not set 152CONFIG_DEFAULT_CFQ=y
150# CONFIG_DEFAULT_NOOP is not set 153# CONFIG_DEFAULT_NOOP is not set
151CONFIG_DEFAULT_IOSCHED="anticipatory" 154CONFIG_DEFAULT_IOSCHED="cfq"
155# CONFIG_INLINE_SPIN_TRYLOCK is not set
156# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
157# CONFIG_INLINE_SPIN_LOCK is not set
158# CONFIG_INLINE_SPIN_LOCK_BH is not set
159# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
160# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
161CONFIG_INLINE_SPIN_UNLOCK=y
162# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
163CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
164# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
165# CONFIG_INLINE_READ_TRYLOCK is not set
166# CONFIG_INLINE_READ_LOCK is not set
167# CONFIG_INLINE_READ_LOCK_BH is not set
168# CONFIG_INLINE_READ_LOCK_IRQ is not set
169# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
170CONFIG_INLINE_READ_UNLOCK=y
171# CONFIG_INLINE_READ_UNLOCK_BH is not set
172CONFIG_INLINE_READ_UNLOCK_IRQ=y
173# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
174# CONFIG_INLINE_WRITE_TRYLOCK is not set
175# CONFIG_INLINE_WRITE_LOCK is not set
176# CONFIG_INLINE_WRITE_LOCK_BH is not set
177# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
178# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
179CONFIG_INLINE_WRITE_UNLOCK=y
180# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
181CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
182# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
183# CONFIG_MUTEX_SPIN_ON_OWNER is not set
152# CONFIG_FREEZER is not set 184# CONFIG_FREEZER is not set
153 185
154# 186#
@@ -224,8 +256,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
224# CONFIG_PHYS_ADDR_T_64BIT is not set 256# CONFIG_PHYS_ADDR_T_64BIT is not set
225CONFIG_ZONE_DMA_FLAG=0 257CONFIG_ZONE_DMA_FLAG=0
226CONFIG_NR_QUICK=2 258CONFIG_NR_QUICK=2
227CONFIG_HAVE_MLOCK=y
228CONFIG_HAVE_MLOCKED_PAGE_BIT=y
229# CONFIG_KSM is not set 259# CONFIG_KSM is not set
230CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 260CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
231 261
@@ -311,7 +341,6 @@ CONFIG_GUSA=y
311CONFIG_ZERO_PAGE_OFFSET=0x00010000 341CONFIG_ZERO_PAGE_OFFSET=0x00010000
312CONFIG_BOOT_LINK_OFFSET=0x00800000 342CONFIG_BOOT_LINK_OFFSET=0x00800000
313CONFIG_ENTRY_OFFSET=0x00001000 343CONFIG_ENTRY_OFFSET=0x00001000
314# CONFIG_UBC_WAKEUP is not set
315CONFIG_CMDLINE_OVERWRITE=y 344CONFIG_CMDLINE_OVERWRITE=y
316# CONFIG_CMDLINE_EXTEND is not set 345# CONFIG_CMDLINE_EXTEND is not set
317CONFIG_CMDLINE="console=ttySC1,38400" 346CONFIG_CMDLINE="console=ttySC1,38400"
@@ -430,9 +459,6 @@ CONFIG_IP_NF_QUEUE=y
430# CONFIG_AF_RXRPC is not set 459# CONFIG_AF_RXRPC is not set
431CONFIG_WIRELESS=y 460CONFIG_WIRELESS=y
432# CONFIG_CFG80211 is not set 461# CONFIG_CFG80211 is not set
433CONFIG_CFG80211_DEFAULT_PS_VALUE=0
434# CONFIG_WIRELESS_OLD_REGULATORY is not set
435# CONFIG_WIRELESS_EXT is not set
436# CONFIG_LIB80211 is not set 462# CONFIG_LIB80211 is not set
437 463
438# 464#
@@ -537,6 +563,10 @@ CONFIG_MTD_RAM=y
537CONFIG_BLK_DEV=y 563CONFIG_BLK_DEV=y
538# CONFIG_BLK_DEV_COW_COMMON is not set 564# CONFIG_BLK_DEV_COW_COMMON is not set
539# CONFIG_BLK_DEV_LOOP is not set 565# CONFIG_BLK_DEV_LOOP is not set
566
567#
568# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
569#
540# CONFIG_BLK_DEV_NBD is not set 570# CONFIG_BLK_DEV_NBD is not set
541CONFIG_BLK_DEV_RAM=y 571CONFIG_BLK_DEV_RAM=y
542CONFIG_BLK_DEV_RAM_COUNT=16 572CONFIG_BLK_DEV_RAM_COUNT=16
@@ -591,11 +621,11 @@ CONFIG_MII=y
591# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 621# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
592# CONFIG_B44 is not set 622# CONFIG_B44 is not set
593# CONFIG_KS8842 is not set 623# CONFIG_KS8842 is not set
624# CONFIG_KS8851_MLL is not set
594CONFIG_NETDEV_1000=y 625CONFIG_NETDEV_1000=y
595CONFIG_NETDEV_10000=y 626CONFIG_NETDEV_10000=y
596CONFIG_WLAN=y 627CONFIG_WLAN=y
597# CONFIG_WLAN_PRE80211 is not set 628# CONFIG_HOSTAP is not set
598# CONFIG_WLAN_80211 is not set
599 629
600# 630#
601# Enable WiMAX (Networking options) to see the WiMAX drivers 631# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -693,6 +723,7 @@ CONFIG_SSB_POSSIBLE=y
693# 723#
694# CONFIG_MFD_CORE is not set 724# CONFIG_MFD_CORE is not set
695# CONFIG_MFD_SM501 is not set 725# CONFIG_MFD_SM501 is not set
726# CONFIG_MFD_SH_MOBILE_SDHI is not set
696# CONFIG_HTC_PASIC3 is not set 727# CONFIG_HTC_PASIC3 is not set
697# CONFIG_MFD_TMIO is not set 728# CONFIG_MFD_TMIO is not set
698# CONFIG_REGULATOR is not set 729# CONFIG_REGULATOR is not set
@@ -754,6 +785,7 @@ CONFIG_EXT2_FS=y
754# CONFIG_EXT2_FS_XIP is not set 785# CONFIG_EXT2_FS_XIP is not set
755# CONFIG_EXT3_FS is not set 786# CONFIG_EXT3_FS is not set
756# CONFIG_EXT4_FS is not set 787# CONFIG_EXT4_FS is not set
788CONFIG_EXT4_USE_FOR_EXT23=y
757# CONFIG_REISERFS_FS is not set 789# CONFIG_REISERFS_FS is not set
758# CONFIG_JFS_FS is not set 790# CONFIG_JFS_FS is not set
759# CONFIG_FS_POSIX_ACL is not set 791# CONFIG_FS_POSIX_ACL is not set
@@ -863,10 +895,11 @@ CONFIG_FRAME_WARN=1024
863# CONFIG_DEBUG_FS is not set 895# CONFIG_DEBUG_FS is not set
864# CONFIG_HEADERS_CHECK is not set 896# CONFIG_HEADERS_CHECK is not set
865# CONFIG_DEBUG_KERNEL is not set 897# CONFIG_DEBUG_KERNEL is not set
866# CONFIG_DEBUG_BUGVERBOSE is not set 898CONFIG_DEBUG_BUGVERBOSE=y
867# CONFIG_DEBUG_MEMORY_INIT is not set 899# CONFIG_DEBUG_MEMORY_INIT is not set
868# CONFIG_RCU_CPU_STALL_DETECTOR is not set 900# CONFIG_RCU_CPU_STALL_DETECTOR is not set
869# CONFIG_LATENCYTOP is not set 901# CONFIG_LATENCYTOP is not set
902# CONFIG_SYSCTL_SYSCALL_CHECK is not set
870CONFIG_HAVE_FUNCTION_TRACER=y 903CONFIG_HAVE_FUNCTION_TRACER=y
871CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 904CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
872CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 905CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
@@ -879,7 +912,6 @@ CONFIG_TRACING_SUPPORT=y
879# CONFIG_SAMPLES is not set 912# CONFIG_SAMPLES is not set
880CONFIG_HAVE_ARCH_KGDB=y 913CONFIG_HAVE_ARCH_KGDB=y
881# CONFIG_SH_STANDARD_BIOS is not set 914# CONFIG_SH_STANDARD_BIOS is not set
882# CONFIG_EARLY_SCIF_CONSOLE is not set
883# CONFIG_DWARF_UNWINDER is not set 915# CONFIG_DWARF_UNWINDER is not set
884 916
885# 917#
@@ -888,7 +920,11 @@ CONFIG_HAVE_ARCH_KGDB=y
888# CONFIG_KEYS is not set 920# CONFIG_KEYS is not set
889# CONFIG_SECURITY is not set 921# CONFIG_SECURITY is not set
890# CONFIG_SECURITYFS is not set 922# CONFIG_SECURITYFS is not set
891# CONFIG_SECURITY_FILE_CAPABILITIES is not set 923# CONFIG_DEFAULT_SECURITY_SELINUX is not set
924# CONFIG_DEFAULT_SECURITY_SMACK is not set
925# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
926CONFIG_DEFAULT_SECURITY_DAC=y
927CONFIG_DEFAULT_SECURITY=""
892CONFIG_CRYPTO=y 928CONFIG_CRYPTO=y
893 929
894# 930#
diff --git a/arch/sh/configs/se7780_defconfig b/arch/sh/configs/se7780_defconfig
index 82baeef40a96..58533d50f06e 100644
--- a/arch/sh/configs/se7780_defconfig
+++ b/arch/sh/configs/se7780_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 19:03:59 2009 4# Mon Jan 4 14:40:32 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_PCI=y 24CONFIG_SYS_SUPPORTS_PCI=y
24CONFIG_SYS_SUPPORTS_TMU=y 25CONFIG_SYS_SUPPORTS_TMU=y
25CONFIG_STACKTRACE_SUPPORT=y 26CONFIG_STACKTRACE_SUPPORT=y
@@ -30,6 +31,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
30CONFIG_ARCH_NO_VIRT_TO_BUS=y 31CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 32CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
34CONFIG_DMA_NONCOHERENT=y
33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 35CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
34CONFIG_CONSTRUCTORS=y 36CONFIG_CONSTRUCTORS=y
35 37
@@ -59,6 +61,7 @@ CONFIG_SYSVIPC_SYSCTL=y
59# 61#
60CONFIG_TREE_RCU=y 62CONFIG_TREE_RCU=y
61# CONFIG_TREE_PREEMPT_RCU is not set 63# CONFIG_TREE_PREEMPT_RCU is not set
64# CONFIG_TINY_RCU is not set
62# CONFIG_RCU_TRACE is not set 65# CONFIG_RCU_TRACE is not set
63CONFIG_RCU_FANOUT=32 66CONFIG_RCU_FANOUT=32
64# CONFIG_RCU_FANOUT_EXACT is not set 67# CONFIG_RCU_FANOUT_EXACT is not set
@@ -92,6 +95,7 @@ CONFIG_EVENTFD=y
92CONFIG_SHMEM=y 95CONFIG_SHMEM=y
93CONFIG_AIO=y 96CONFIG_AIO=y
94CONFIG_HAVE_PERF_EVENTS=y 97CONFIG_HAVE_PERF_EVENTS=y
98CONFIG_PERF_USE_VMALLOC=y
95 99
96# 100#
97# Kernel Performance Events And Counters 101# Kernel Performance Events And Counters
@@ -110,6 +114,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
110CONFIG_HAVE_KPROBES=y 114CONFIG_HAVE_KPROBES=y
111CONFIG_HAVE_KRETPROBES=y 115CONFIG_HAVE_KRETPROBES=y
112CONFIG_HAVE_ARCH_TRACEHOOK=y 116CONFIG_HAVE_ARCH_TRACEHOOK=y
117CONFIG_HAVE_DMA_ATTRS=y
113CONFIG_HAVE_CLK=y 118CONFIG_HAVE_CLK=y
114CONFIG_HAVE_DMA_API_DEBUG=y 119CONFIG_HAVE_DMA_API_DEBUG=y
115 120
@@ -136,14 +141,41 @@ CONFIG_BLK_DEV_BSG=y
136# IO Schedulers 141# IO Schedulers
137# 142#
138CONFIG_IOSCHED_NOOP=y 143CONFIG_IOSCHED_NOOP=y
139# CONFIG_IOSCHED_AS is not set
140CONFIG_IOSCHED_DEADLINE=y 144CONFIG_IOSCHED_DEADLINE=y
141# CONFIG_IOSCHED_CFQ is not set 145# CONFIG_IOSCHED_CFQ is not set
142# CONFIG_DEFAULT_AS is not set
143CONFIG_DEFAULT_DEADLINE=y 146CONFIG_DEFAULT_DEADLINE=y
144# CONFIG_DEFAULT_CFQ is not set 147# CONFIG_DEFAULT_CFQ is not set
145# CONFIG_DEFAULT_NOOP is not set 148# CONFIG_DEFAULT_NOOP is not set
146CONFIG_DEFAULT_IOSCHED="deadline" 149CONFIG_DEFAULT_IOSCHED="deadline"
150# CONFIG_INLINE_SPIN_TRYLOCK is not set
151# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
152# CONFIG_INLINE_SPIN_LOCK is not set
153# CONFIG_INLINE_SPIN_LOCK_BH is not set
154# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
155# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
156CONFIG_INLINE_SPIN_UNLOCK=y
157# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
158CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
159# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
160# CONFIG_INLINE_READ_TRYLOCK is not set
161# CONFIG_INLINE_READ_LOCK is not set
162# CONFIG_INLINE_READ_LOCK_BH is not set
163# CONFIG_INLINE_READ_LOCK_IRQ is not set
164# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
165CONFIG_INLINE_READ_UNLOCK=y
166# CONFIG_INLINE_READ_UNLOCK_BH is not set
167CONFIG_INLINE_READ_UNLOCK_IRQ=y
168# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
169# CONFIG_INLINE_WRITE_TRYLOCK is not set
170# CONFIG_INLINE_WRITE_LOCK is not set
171# CONFIG_INLINE_WRITE_LOCK_BH is not set
172# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
173# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
174CONFIG_INLINE_WRITE_UNLOCK=y
175# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
176CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
177# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
178# CONFIG_MUTEX_SPIN_ON_OWNER is not set
147# CONFIG_FREEZER is not set 179# CONFIG_FREEZER is not set
148 180
149# 181#
@@ -222,8 +254,6 @@ CONFIG_MIGRATION=y
222# CONFIG_PHYS_ADDR_T_64BIT is not set 254# CONFIG_PHYS_ADDR_T_64BIT is not set
223CONFIG_ZONE_DMA_FLAG=0 255CONFIG_ZONE_DMA_FLAG=0
224CONFIG_NR_QUICK=2 256CONFIG_NR_QUICK=2
225CONFIG_HAVE_MLOCK=y
226CONFIG_HAVE_MLOCKED_PAGE_BIT=y
227# CONFIG_KSM is not set 257# CONFIG_KSM is not set
228CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 258CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
229 259
@@ -313,7 +343,6 @@ CONFIG_CMDLINE="console=ttySC0,115200 root=/dev/sda1"
313# Bus options 343# Bus options
314# 344#
315CONFIG_PCI=y 345CONFIG_PCI=y
316CONFIG_SH_PCIDMA_NONCOHERENT=y
317# CONFIG_PCIEPORTBUS is not set 346# CONFIG_PCIEPORTBUS is not set
318# CONFIG_ARCH_SUPPORTS_MSI is not set 347# CONFIG_ARCH_SUPPORTS_MSI is not set
319CONFIG_PCI_LEGACY=y 348CONFIG_PCI_LEGACY=y
@@ -401,9 +430,6 @@ CONFIG_IPV6=y
401# CONFIG_BT is not set 430# CONFIG_BT is not set
402CONFIG_WIRELESS=y 431CONFIG_WIRELESS=y
403# CONFIG_CFG80211 is not set 432# CONFIG_CFG80211 is not set
404CONFIG_CFG80211_DEFAULT_PS_VALUE=0
405# CONFIG_WIRELESS_OLD_REGULATORY is not set
406# CONFIG_WIRELESS_EXT is not set
407# CONFIG_LIB80211 is not set 433# CONFIG_LIB80211 is not set
408 434
409# 435#
@@ -517,6 +543,10 @@ CONFIG_BLK_DEV=y
517# CONFIG_BLK_DEV_COW_COMMON is not set 543# CONFIG_BLK_DEV_COW_COMMON is not set
518CONFIG_BLK_DEV_LOOP=y 544CONFIG_BLK_DEV_LOOP=y
519# CONFIG_BLK_DEV_CRYPTOLOOP is not set 545# CONFIG_BLK_DEV_CRYPTOLOOP is not set
546
547#
548# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
549#
520# CONFIG_BLK_DEV_NBD is not set 550# CONFIG_BLK_DEV_NBD is not set
521# CONFIG_BLK_DEV_SX8 is not set 551# CONFIG_BLK_DEV_SX8 is not set
522# CONFIG_BLK_DEV_UB is not set 552# CONFIG_BLK_DEV_UB is not set
@@ -574,8 +604,11 @@ CONFIG_SCSI_WAIT_SCAN=m
574CONFIG_SCSI_LOWLEVEL=y 604CONFIG_SCSI_LOWLEVEL=y
575# CONFIG_ISCSI_TCP is not set 605# CONFIG_ISCSI_TCP is not set
576# CONFIG_SCSI_BNX2_ISCSI is not set 606# CONFIG_SCSI_BNX2_ISCSI is not set
607# CONFIG_BE2ISCSI is not set
577# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 608# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
609# CONFIG_SCSI_HPSA is not set
578# CONFIG_SCSI_3W_9XXX is not set 610# CONFIG_SCSI_3W_9XXX is not set
611# CONFIG_SCSI_3W_SAS is not set
579# CONFIG_SCSI_ACARD is not set 612# CONFIG_SCSI_ACARD is not set
580# CONFIG_SCSI_AACRAID is not set 613# CONFIG_SCSI_AACRAID is not set
581# CONFIG_SCSI_AIC7XXX is not set 614# CONFIG_SCSI_AIC7XXX is not set
@@ -608,7 +641,9 @@ CONFIG_SCSI_LOWLEVEL=y
608# CONFIG_SCSI_NSP32 is not set 641# CONFIG_SCSI_NSP32 is not set
609# CONFIG_SCSI_DEBUG is not set 642# CONFIG_SCSI_DEBUG is not set
610# CONFIG_SCSI_PMCRAID is not set 643# CONFIG_SCSI_PMCRAID is not set
644# CONFIG_SCSI_PM8001 is not set
611# CONFIG_SCSI_SRP is not set 645# CONFIG_SCSI_SRP is not set
646# CONFIG_SCSI_BFA_FC is not set
612# CONFIG_SCSI_DH is not set 647# CONFIG_SCSI_DH is not set
613# CONFIG_SCSI_OSD_INITIATOR is not set 648# CONFIG_SCSI_OSD_INITIATOR is not set
614CONFIG_ATA=y 649CONFIG_ATA=y
@@ -642,6 +677,8 @@ CONFIG_SATA_SIL=y
642# CONFIG_PATA_EFAR is not set 677# CONFIG_PATA_EFAR is not set
643# CONFIG_ATA_GENERIC is not set 678# CONFIG_ATA_GENERIC is not set
644# CONFIG_PATA_HPT366 is not set 679# CONFIG_PATA_HPT366 is not set
680# CONFIG_PATA_HPT37X is not set
681# CONFIG_PATA_HPT3X2N is not set
645# CONFIG_PATA_HPT3X3 is not set 682# CONFIG_PATA_HPT3X3 is not set
646# CONFIG_PATA_IT821X is not set 683# CONFIG_PATA_IT821X is not set
647# CONFIG_PATA_JMICRON is not set 684# CONFIG_PATA_JMICRON is not set
@@ -650,14 +687,15 @@ CONFIG_SATA_SIL=y
650# CONFIG_PATA_MPIIX is not set 687# CONFIG_PATA_MPIIX is not set
651# CONFIG_PATA_OLDPIIX is not set 688# CONFIG_PATA_OLDPIIX is not set
652# CONFIG_PATA_NETCELL is not set 689# CONFIG_PATA_NETCELL is not set
690# CONFIG_PATA_NINJA32 is not set
653# CONFIG_PATA_NS87410 is not set 691# CONFIG_PATA_NS87410 is not set
654# CONFIG_PATA_NS87415 is not set 692# CONFIG_PATA_NS87415 is not set
693# CONFIG_PATA_PDC2027X is not set
655# CONFIG_PATA_PDC_OLD is not set 694# CONFIG_PATA_PDC_OLD is not set
656# CONFIG_PATA_RDC is not set 695# CONFIG_PATA_RDC is not set
657# CONFIG_PATA_RZ1000 is not set 696# CONFIG_PATA_RZ1000 is not set
658# CONFIG_PATA_SC1200 is not set 697# CONFIG_PATA_SC1200 is not set
659# CONFIG_PATA_SERVERWORKS is not set 698# CONFIG_PATA_SERVERWORKS is not set
660# CONFIG_PATA_PDC2027X is not set
661# CONFIG_PATA_SIL680 is not set 699# CONFIG_PATA_SIL680 is not set
662# CONFIG_PATA_SIS is not set 700# CONFIG_PATA_SIS is not set
663# CONFIG_PATA_VIA is not set 701# CONFIG_PATA_VIA is not set
@@ -748,14 +786,16 @@ CONFIG_NET_PCI=y
748# CONFIG_SUNDANCE is not set 786# CONFIG_SUNDANCE is not set
749# CONFIG_TLAN is not set 787# CONFIG_TLAN is not set
750# CONFIG_KS8842 is not set 788# CONFIG_KS8842 is not set
789# CONFIG_KS8851_MLL is not set
751# CONFIG_VIA_RHINE is not set 790# CONFIG_VIA_RHINE is not set
752# CONFIG_ATL2 is not set 791# CONFIG_ATL2 is not set
753# CONFIG_NETDEV_1000 is not set 792# CONFIG_NETDEV_1000 is not set
754# CONFIG_NETDEV_10000 is not set 793# CONFIG_NETDEV_10000 is not set
755# CONFIG_TR is not set 794# CONFIG_TR is not set
756CONFIG_WLAN=y 795CONFIG_WLAN=y
757# CONFIG_WLAN_PRE80211 is not set 796# CONFIG_ATMEL is not set
758# CONFIG_WLAN_80211 is not set 797# CONFIG_USB_ZD1201 is not set
798# CONFIG_HOSTAP is not set
759 799
760# 800#
761# Enable WiMAX (Networking options) to see the WiMAX drivers 801# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -774,6 +814,7 @@ CONFIG_WLAN=y
774# CONFIG_NET_FC is not set 814# CONFIG_NET_FC is not set
775# CONFIG_NETPOLL is not set 815# CONFIG_NETPOLL is not set
776# CONFIG_NET_POLL_CONTROLLER is not set 816# CONFIG_NET_POLL_CONTROLLER is not set
817# CONFIG_VMXNET3 is not set
777# CONFIG_ISDN is not set 818# CONFIG_ISDN is not set
778# CONFIG_PHONE is not set 819# CONFIG_PHONE is not set
779 820
@@ -783,6 +824,7 @@ CONFIG_WLAN=y
783CONFIG_INPUT=y 824CONFIG_INPUT=y
784CONFIG_INPUT_FF_MEMLESS=m 825CONFIG_INPUT_FF_MEMLESS=m
785# CONFIG_INPUT_POLLDEV is not set 826# CONFIG_INPUT_POLLDEV is not set
827# CONFIG_INPUT_SPARSEKMAP is not set
786 828
787# 829#
788# Userland interfaces 830# Userland interfaces
@@ -883,6 +925,7 @@ CONFIG_SSB_POSSIBLE=y
883# 925#
884# CONFIG_MFD_CORE is not set 926# CONFIG_MFD_CORE is not set
885# CONFIG_MFD_SM501 is not set 927# CONFIG_MFD_SM501 is not set
928# CONFIG_MFD_SH_MOBILE_SDHI is not set
886# CONFIG_HTC_PASIC3 is not set 929# CONFIG_HTC_PASIC3 is not set
887# CONFIG_MFD_TMIO is not set 930# CONFIG_MFD_TMIO is not set
888# CONFIG_REGULATOR is not set 931# CONFIG_REGULATOR is not set
@@ -1149,6 +1192,7 @@ CONFIG_EXT2_FS=y
1149# CONFIG_EXT2_FS_XIP is not set 1192# CONFIG_EXT2_FS_XIP is not set
1150# CONFIG_EXT3_FS is not set 1193# CONFIG_EXT3_FS is not set
1151# CONFIG_EXT4_FS is not set 1194# CONFIG_EXT4_FS is not set
1195CONFIG_EXT4_USE_FOR_EXT23=y
1152# CONFIG_REISERFS_FS is not set 1196# CONFIG_REISERFS_FS is not set
1153# CONFIG_JFS_FS is not set 1197# CONFIG_JFS_FS is not set
1154# CONFIG_FS_POSIX_ACL is not set 1198# CONFIG_FS_POSIX_ACL is not set
@@ -1285,7 +1329,7 @@ CONFIG_FRAME_WARN=1024
1285CONFIG_DEBUG_FS=y 1329CONFIG_DEBUG_FS=y
1286# CONFIG_HEADERS_CHECK is not set 1330# CONFIG_HEADERS_CHECK is not set
1287# CONFIG_DEBUG_KERNEL is not set 1331# CONFIG_DEBUG_KERNEL is not set
1288# CONFIG_DEBUG_BUGVERBOSE is not set 1332CONFIG_DEBUG_BUGVERBOSE=y
1289# CONFIG_DEBUG_MEMORY_INIT is not set 1333# CONFIG_DEBUG_MEMORY_INIT is not set
1290# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1334# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1291# CONFIG_LATENCYTOP is not set 1335# CONFIG_LATENCYTOP is not set
@@ -1303,7 +1347,6 @@ CONFIG_TRACING_SUPPORT=y
1303# CONFIG_SAMPLES is not set 1347# CONFIG_SAMPLES is not set
1304CONFIG_HAVE_ARCH_KGDB=y 1348CONFIG_HAVE_ARCH_KGDB=y
1305# CONFIG_SH_STANDARD_BIOS is not set 1349# CONFIG_SH_STANDARD_BIOS is not set
1306# CONFIG_EARLY_SCIF_CONSOLE is not set
1307# CONFIG_DWARF_UNWINDER is not set 1350# CONFIG_DWARF_UNWINDER is not set
1308 1351
1309# 1352#
@@ -1312,7 +1355,11 @@ CONFIG_HAVE_ARCH_KGDB=y
1312# CONFIG_KEYS is not set 1355# CONFIG_KEYS is not set
1313# CONFIG_SECURITY is not set 1356# CONFIG_SECURITY is not set
1314# CONFIG_SECURITYFS is not set 1357# CONFIG_SECURITYFS is not set
1315# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1358# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1359# CONFIG_DEFAULT_SECURITY_SMACK is not set
1360# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1361CONFIG_DEFAULT_SECURITY_DAC=y
1362CONFIG_DEFAULT_SECURITY=""
1316CONFIG_CRYPTO=y 1363CONFIG_CRYPTO=y
1317 1364
1318# 1365#
diff --git a/arch/sh/configs/sh03_defconfig b/arch/sh/configs/sh03_defconfig
index dd0e8900afb7..666fde110b27 100644
--- a/arch/sh/configs/sh03_defconfig
+++ b/arch/sh/configs/sh03_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 19:07:14 2009 4# Mon Jan 4 14:41:25 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -21,6 +21,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
21CONFIG_GENERIC_CMOS_UPDATE=y 21CONFIG_GENERIC_CMOS_UPDATE=y
22# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 22# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
23CONFIG_ARCH_HIBERNATION_POSSIBLE=y 23CONFIG_ARCH_HIBERNATION_POSSIBLE=y
24CONFIG_SYS_SUPPORTS_HUGETLBFS=y
24CONFIG_SYS_SUPPORTS_PCI=y 25CONFIG_SYS_SUPPORTS_PCI=y
25CONFIG_SYS_SUPPORTS_TMU=y 26CONFIG_SYS_SUPPORTS_TMU=y
26CONFIG_STACKTRACE_SUPPORT=y 27CONFIG_STACKTRACE_SUPPORT=y
@@ -31,6 +32,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
31CONFIG_ARCH_NO_VIRT_TO_BUS=y 32CONFIG_ARCH_NO_VIRT_TO_BUS=y
32CONFIG_ARCH_HAS_DEFAULT_IDLE=y 33CONFIG_ARCH_HAS_DEFAULT_IDLE=y
33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 34CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
35CONFIG_DMA_NONCOHERENT=y
34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 36CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
35CONFIG_CONSTRUCTORS=y 37CONFIG_CONSTRUCTORS=y
36 38
@@ -64,6 +66,7 @@ CONFIG_BSD_PROCESS_ACCT=y
64# 66#
65CONFIG_TREE_RCU=y 67CONFIG_TREE_RCU=y
66# CONFIG_TREE_PREEMPT_RCU is not set 68# CONFIG_TREE_PREEMPT_RCU is not set
69# CONFIG_TINY_RCU is not set
67# CONFIG_RCU_TRACE is not set 70# CONFIG_RCU_TRACE is not set
68CONFIG_RCU_FANOUT=32 71CONFIG_RCU_FANOUT=32
69# CONFIG_RCU_FANOUT_EXACT is not set 72# CONFIG_RCU_FANOUT_EXACT is not set
@@ -102,6 +105,7 @@ CONFIG_EVENTFD=y
102CONFIG_SHMEM=y 105CONFIG_SHMEM=y
103CONFIG_AIO=y 106CONFIG_AIO=y
104CONFIG_HAVE_PERF_EVENTS=y 107CONFIG_HAVE_PERF_EVENTS=y
108CONFIG_PERF_USE_VMALLOC=y
105 109
106# 110#
107# Kernel Performance Events And Counters 111# Kernel Performance Events And Counters
@@ -124,6 +128,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
124CONFIG_HAVE_KPROBES=y 128CONFIG_HAVE_KPROBES=y
125CONFIG_HAVE_KRETPROBES=y 129CONFIG_HAVE_KRETPROBES=y
126CONFIG_HAVE_ARCH_TRACEHOOK=y 130CONFIG_HAVE_ARCH_TRACEHOOK=y
131CONFIG_HAVE_DMA_ATTRS=y
127CONFIG_HAVE_CLK=y 132CONFIG_HAVE_CLK=y
128CONFIG_HAVE_DMA_API_DEBUG=y 133CONFIG_HAVE_DMA_API_DEBUG=y
129 134
@@ -151,14 +156,41 @@ CONFIG_LBDAF=y
151# IO Schedulers 156# IO Schedulers
152# 157#
153CONFIG_IOSCHED_NOOP=y 158CONFIG_IOSCHED_NOOP=y
154CONFIG_IOSCHED_AS=y
155CONFIG_IOSCHED_DEADLINE=y 159CONFIG_IOSCHED_DEADLINE=y
156CONFIG_IOSCHED_CFQ=y 160CONFIG_IOSCHED_CFQ=y
157CONFIG_DEFAULT_AS=y
158# CONFIG_DEFAULT_DEADLINE is not set 161# CONFIG_DEFAULT_DEADLINE is not set
159# CONFIG_DEFAULT_CFQ is not set 162CONFIG_DEFAULT_CFQ=y
160# CONFIG_DEFAULT_NOOP is not set 163# CONFIG_DEFAULT_NOOP is not set
161CONFIG_DEFAULT_IOSCHED="anticipatory" 164CONFIG_DEFAULT_IOSCHED="cfq"
165# CONFIG_INLINE_SPIN_TRYLOCK is not set
166# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
167# CONFIG_INLINE_SPIN_LOCK is not set
168# CONFIG_INLINE_SPIN_LOCK_BH is not set
169# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
170# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
171# CONFIG_INLINE_SPIN_UNLOCK is not set
172# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
173# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
174# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
175# CONFIG_INLINE_READ_TRYLOCK is not set
176# CONFIG_INLINE_READ_LOCK is not set
177# CONFIG_INLINE_READ_LOCK_BH is not set
178# CONFIG_INLINE_READ_LOCK_IRQ is not set
179# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
180# CONFIG_INLINE_READ_UNLOCK is not set
181# CONFIG_INLINE_READ_UNLOCK_BH is not set
182# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
183# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
184# CONFIG_INLINE_WRITE_TRYLOCK is not set
185# CONFIG_INLINE_WRITE_LOCK is not set
186# CONFIG_INLINE_WRITE_LOCK_BH is not set
187# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
188# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
189# CONFIG_INLINE_WRITE_UNLOCK is not set
190# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
191# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
192# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
193# CONFIG_MUTEX_SPIN_ON_OWNER is not set
162# CONFIG_FREEZER is not set 194# CONFIG_FREEZER is not set
163 195
164# 196#
@@ -234,8 +266,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
234# CONFIG_PHYS_ADDR_T_64BIT is not set 266# CONFIG_PHYS_ADDR_T_64BIT is not set
235CONFIG_ZONE_DMA_FLAG=0 267CONFIG_ZONE_DMA_FLAG=0
236CONFIG_NR_QUICK=2 268CONFIG_NR_QUICK=2
237CONFIG_HAVE_MLOCK=y
238CONFIG_HAVE_MLOCKED_PAGE_BIT=y
239# CONFIG_KSM is not set 269# CONFIG_KSM is not set
240CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 270CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
241 271
@@ -320,7 +350,6 @@ CONFIG_GUSA=y
320CONFIG_ZERO_PAGE_OFFSET=0x00004000 350CONFIG_ZERO_PAGE_OFFSET=0x00004000
321CONFIG_BOOT_LINK_OFFSET=0x00800000 351CONFIG_BOOT_LINK_OFFSET=0x00800000
322CONFIG_ENTRY_OFFSET=0x00001000 352CONFIG_ENTRY_OFFSET=0x00001000
323# CONFIG_UBC_WAKEUP is not set
324CONFIG_CMDLINE_OVERWRITE=y 353CONFIG_CMDLINE_OVERWRITE=y
325# CONFIG_CMDLINE_EXTEND is not set 354# CONFIG_CMDLINE_EXTEND is not set
326CONFIG_CMDLINE="console=ttySC1,115200 mem=64M root=/dev/nfs" 355CONFIG_CMDLINE="console=ttySC1,115200 mem=64M root=/dev/nfs"
@@ -329,7 +358,6 @@ CONFIG_CMDLINE="console=ttySC1,115200 mem=64M root=/dev/nfs"
329# Bus options 358# Bus options
330# 359#
331CONFIG_PCI=y 360CONFIG_PCI=y
332CONFIG_SH_PCIDMA_NONCOHERENT=y
333# CONFIG_PCIEPORTBUS is not set 361# CONFIG_PCIEPORTBUS is not set
334# CONFIG_ARCH_SUPPORTS_MSI is not set 362# CONFIG_ARCH_SUPPORTS_MSI is not set
335CONFIG_PCI_LEGACY=y 363CONFIG_PCI_LEGACY=y
@@ -433,9 +461,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
433# CONFIG_AF_RXRPC is not set 461# CONFIG_AF_RXRPC is not set
434CONFIG_WIRELESS=y 462CONFIG_WIRELESS=y
435# CONFIG_CFG80211 is not set 463# CONFIG_CFG80211 is not set
436CONFIG_CFG80211_DEFAULT_PS_VALUE=0
437# CONFIG_WIRELESS_OLD_REGULATORY is not set
438# CONFIG_WIRELESS_EXT is not set
439# CONFIG_LIB80211 is not set 464# CONFIG_LIB80211 is not set
440 465
441# 466#
@@ -468,6 +493,10 @@ CONFIG_BLK_DEV=y
468# CONFIG_BLK_DEV_COW_COMMON is not set 493# CONFIG_BLK_DEV_COW_COMMON is not set
469CONFIG_BLK_DEV_LOOP=y 494CONFIG_BLK_DEV_LOOP=y
470# CONFIG_BLK_DEV_CRYPTOLOOP is not set 495# CONFIG_BLK_DEV_CRYPTOLOOP is not set
496
497#
498# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
499#
471CONFIG_BLK_DEV_NBD=y 500CONFIG_BLK_DEV_NBD=y
472# CONFIG_BLK_DEV_SX8 is not set 501# CONFIG_BLK_DEV_SX8 is not set
473CONFIG_BLK_DEV_RAM=y 502CONFIG_BLK_DEV_RAM=y
@@ -580,8 +609,11 @@ CONFIG_SCSI_LOWLEVEL=y
580# CONFIG_ISCSI_TCP is not set 609# CONFIG_ISCSI_TCP is not set
581# CONFIG_SCSI_CXGB3_ISCSI is not set 610# CONFIG_SCSI_CXGB3_ISCSI is not set
582# CONFIG_SCSI_BNX2_ISCSI is not set 611# CONFIG_SCSI_BNX2_ISCSI is not set
612# CONFIG_BE2ISCSI is not set
583# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 613# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
614# CONFIG_SCSI_HPSA is not set
584# CONFIG_SCSI_3W_9XXX is not set 615# CONFIG_SCSI_3W_9XXX is not set
616# CONFIG_SCSI_3W_SAS is not set
585# CONFIG_SCSI_ACARD is not set 617# CONFIG_SCSI_ACARD is not set
586# CONFIG_SCSI_AACRAID is not set 618# CONFIG_SCSI_AACRAID is not set
587# CONFIG_SCSI_AIC7XXX is not set 619# CONFIG_SCSI_AIC7XXX is not set
@@ -614,7 +646,9 @@ CONFIG_SCSI_LOWLEVEL=y
614# CONFIG_SCSI_NSP32 is not set 646# CONFIG_SCSI_NSP32 is not set
615# CONFIG_SCSI_DEBUG is not set 647# CONFIG_SCSI_DEBUG is not set
616# CONFIG_SCSI_PMCRAID is not set 648# CONFIG_SCSI_PMCRAID is not set
649# CONFIG_SCSI_PM8001 is not set
617# CONFIG_SCSI_SRP is not set 650# CONFIG_SCSI_SRP is not set
651# CONFIG_SCSI_BFA_FC is not set
618# CONFIG_SCSI_DH is not set 652# CONFIG_SCSI_DH is not set
619# CONFIG_SCSI_OSD_INITIATOR is not set 653# CONFIG_SCSI_OSD_INITIATOR is not set
620# CONFIG_ATA is not set 654# CONFIG_ATA is not set
@@ -685,6 +719,7 @@ CONFIG_8139CP=y
685# CONFIG_SUNDANCE is not set 719# CONFIG_SUNDANCE is not set
686# CONFIG_TLAN is not set 720# CONFIG_TLAN is not set
687# CONFIG_KS8842 is not set 721# CONFIG_KS8842 is not set
722# CONFIG_KS8851_MLL is not set
688# CONFIG_VIA_RHINE is not set 723# CONFIG_VIA_RHINE is not set
689# CONFIG_SC92031 is not set 724# CONFIG_SC92031 is not set
690# CONFIG_ATL2 is not set 725# CONFIG_ATL2 is not set
@@ -733,8 +768,9 @@ CONFIG_CHELSIO_T3_DEPENDS=y
733# CONFIG_BE2NET is not set 768# CONFIG_BE2NET is not set
734# CONFIG_TR is not set 769# CONFIG_TR is not set
735CONFIG_WLAN=y 770CONFIG_WLAN=y
736# CONFIG_WLAN_PRE80211 is not set 771# CONFIG_ATMEL is not set
737# CONFIG_WLAN_80211 is not set 772# CONFIG_PRISM54 is not set
773# CONFIG_HOSTAP is not set
738 774
739# 775#
740# Enable WiMAX (Networking options) to see the WiMAX drivers 776# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -748,6 +784,7 @@ CONFIG_WLAN=y
748# CONFIG_NETCONSOLE is not set 784# CONFIG_NETCONSOLE is not set
749# CONFIG_NETPOLL is not set 785# CONFIG_NETPOLL is not set
750# CONFIG_NET_POLL_CONTROLLER is not set 786# CONFIG_NET_POLL_CONTROLLER is not set
787# CONFIG_VMXNET3 is not set
751# CONFIG_ISDN is not set 788# CONFIG_ISDN is not set
752# CONFIG_PHONE is not set 789# CONFIG_PHONE is not set
753 790
@@ -757,6 +794,7 @@ CONFIG_WLAN=y
757CONFIG_INPUT=y 794CONFIG_INPUT=y
758# CONFIG_INPUT_FF_MEMLESS is not set 795# CONFIG_INPUT_FF_MEMLESS is not set
759# CONFIG_INPUT_POLLDEV is not set 796# CONFIG_INPUT_POLLDEV is not set
797# CONFIG_INPUT_SPARSEKMAP is not set
760 798
761# 799#
762# Userland interfaces 800# Userland interfaces
@@ -886,6 +924,7 @@ CONFIG_SSB_POSSIBLE=y
886# 924#
887# CONFIG_MFD_CORE is not set 925# CONFIG_MFD_CORE is not set
888# CONFIG_MFD_SM501 is not set 926# CONFIG_MFD_SM501 is not set
927# CONFIG_MFD_SH_MOBILE_SDHI is not set
889# CONFIG_HTC_PASIC3 is not set 928# CONFIG_HTC_PASIC3 is not set
890# CONFIG_MFD_TMIO is not set 929# CONFIG_MFD_TMIO is not set
891# CONFIG_REGULATOR is not set 930# CONFIG_REGULATOR is not set
@@ -1149,10 +1188,11 @@ CONFIG_DEBUG_FS=y
1149# CONFIG_HEADERS_CHECK is not set 1188# CONFIG_HEADERS_CHECK is not set
1150# CONFIG_DEBUG_KERNEL is not set 1189# CONFIG_DEBUG_KERNEL is not set
1151CONFIG_STACKTRACE=y 1190CONFIG_STACKTRACE=y
1152# CONFIG_DEBUG_BUGVERBOSE is not set 1191CONFIG_DEBUG_BUGVERBOSE=y
1153# CONFIG_DEBUG_MEMORY_INIT is not set 1192# CONFIG_DEBUG_MEMORY_INIT is not set
1154# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1193# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1155# CONFIG_LATENCYTOP is not set 1194# CONFIG_LATENCYTOP is not set
1195# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1156CONFIG_NOP_TRACER=y 1196CONFIG_NOP_TRACER=y
1157CONFIG_HAVE_FUNCTION_TRACER=y 1197CONFIG_HAVE_FUNCTION_TRACER=y
1158CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 1198CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
@@ -1172,8 +1212,6 @@ CONFIG_TRACING_SUPPORT=y
1172# CONFIG_SAMPLES is not set 1212# CONFIG_SAMPLES is not set
1173CONFIG_HAVE_ARCH_KGDB=y 1213CONFIG_HAVE_ARCH_KGDB=y
1174CONFIG_SH_STANDARD_BIOS=y 1214CONFIG_SH_STANDARD_BIOS=y
1175# CONFIG_EARLY_SCIF_CONSOLE is not set
1176# CONFIG_EARLY_PRINTK is not set
1177# CONFIG_DWARF_UNWINDER is not set 1215# CONFIG_DWARF_UNWINDER is not set
1178 1216
1179# 1217#
@@ -1182,7 +1220,11 @@ CONFIG_SH_STANDARD_BIOS=y
1182# CONFIG_KEYS is not set 1220# CONFIG_KEYS is not set
1183# CONFIG_SECURITY is not set 1221# CONFIG_SECURITY is not set
1184# CONFIG_SECURITYFS is not set 1222# CONFIG_SECURITYFS is not set
1185# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1223# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1224# CONFIG_DEFAULT_SECURITY_SMACK is not set
1225# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1226CONFIG_DEFAULT_SECURITY_DAC=y
1227CONFIG_DEFAULT_SECURITY=""
1186CONFIG_CRYPTO=y 1228CONFIG_CRYPTO=y
1187 1229
1188# 1230#
diff --git a/arch/sh/configs/sh7710voipgw_defconfig b/arch/sh/configs/sh7710voipgw_defconfig
index 662156ec9211..35a3beeba182 100644
--- a/arch/sh/configs/sh7710voipgw_defconfig
+++ b/arch/sh/configs/sh7710voipgw_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 19:11:49 2009 4# Mon Jan 4 14:43:04 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -29,6 +29,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
29CONFIG_ARCH_NO_VIRT_TO_BUS=y 29CONFIG_ARCH_NO_VIRT_TO_BUS=y
30CONFIG_ARCH_HAS_DEFAULT_IDLE=y 30CONFIG_ARCH_HAS_DEFAULT_IDLE=y
31CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 31CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
32CONFIG_DMA_NONCOHERENT=y
32CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
33CONFIG_CONSTRUCTORS=y 34CONFIG_CONSTRUCTORS=y
34 35
@@ -60,6 +61,7 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
60# 61#
61CONFIG_TREE_RCU=y 62CONFIG_TREE_RCU=y
62# CONFIG_TREE_PREEMPT_RCU is not set 63# CONFIG_TREE_PREEMPT_RCU is not set
64# CONFIG_TINY_RCU is not set
63# CONFIG_RCU_TRACE is not set 65# CONFIG_RCU_TRACE is not set
64CONFIG_RCU_FANOUT=32 66CONFIG_RCU_FANOUT=32
65# CONFIG_RCU_FANOUT_EXACT is not set 67# CONFIG_RCU_FANOUT_EXACT is not set
@@ -98,6 +100,7 @@ CONFIG_EVENTFD=y
98# CONFIG_SHMEM is not set 100# CONFIG_SHMEM is not set
99CONFIG_AIO=y 101CONFIG_AIO=y
100CONFIG_HAVE_PERF_EVENTS=y 102CONFIG_HAVE_PERF_EVENTS=y
103CONFIG_PERF_USE_VMALLOC=y
101 104
102# 105#
103# Kernel Performance Events And Counters 106# Kernel Performance Events And Counters
@@ -116,6 +119,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
116CONFIG_HAVE_KPROBES=y 119CONFIG_HAVE_KPROBES=y
117CONFIG_HAVE_KRETPROBES=y 120CONFIG_HAVE_KRETPROBES=y
118CONFIG_HAVE_ARCH_TRACEHOOK=y 121CONFIG_HAVE_ARCH_TRACEHOOK=y
122CONFIG_HAVE_DMA_ATTRS=y
119CONFIG_HAVE_CLK=y 123CONFIG_HAVE_CLK=y
120CONFIG_HAVE_DMA_API_DEBUG=y 124CONFIG_HAVE_DMA_API_DEBUG=y
121 125
@@ -142,14 +146,41 @@ CONFIG_LBDAF=y
142# IO Schedulers 146# IO Schedulers
143# 147#
144CONFIG_IOSCHED_NOOP=y 148CONFIG_IOSCHED_NOOP=y
145# CONFIG_IOSCHED_AS is not set
146CONFIG_IOSCHED_DEADLINE=y 149CONFIG_IOSCHED_DEADLINE=y
147# CONFIG_IOSCHED_CFQ is not set 150# CONFIG_IOSCHED_CFQ is not set
148# CONFIG_DEFAULT_AS is not set
149CONFIG_DEFAULT_DEADLINE=y 151CONFIG_DEFAULT_DEADLINE=y
150# CONFIG_DEFAULT_CFQ is not set 152# CONFIG_DEFAULT_CFQ is not set
151# CONFIG_DEFAULT_NOOP is not set 153# CONFIG_DEFAULT_NOOP is not set
152CONFIG_DEFAULT_IOSCHED="deadline" 154CONFIG_DEFAULT_IOSCHED="deadline"
155# CONFIG_INLINE_SPIN_TRYLOCK is not set
156# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
157# CONFIG_INLINE_SPIN_LOCK is not set
158# CONFIG_INLINE_SPIN_LOCK_BH is not set
159# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
160# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
161CONFIG_INLINE_SPIN_UNLOCK=y
162# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
163CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
164# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
165# CONFIG_INLINE_READ_TRYLOCK is not set
166# CONFIG_INLINE_READ_LOCK is not set
167# CONFIG_INLINE_READ_LOCK_BH is not set
168# CONFIG_INLINE_READ_LOCK_IRQ is not set
169# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
170CONFIG_INLINE_READ_UNLOCK=y
171# CONFIG_INLINE_READ_UNLOCK_BH is not set
172CONFIG_INLINE_READ_UNLOCK_IRQ=y
173# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
174# CONFIG_INLINE_WRITE_TRYLOCK is not set
175# CONFIG_INLINE_WRITE_LOCK is not set
176# CONFIG_INLINE_WRITE_LOCK_BH is not set
177# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
178# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
179CONFIG_INLINE_WRITE_UNLOCK=y
180# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
181CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
182# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
183# CONFIG_MUTEX_SPIN_ON_OWNER is not set
153# CONFIG_FREEZER is not set 184# CONFIG_FREEZER is not set
154 185
155# 186#
@@ -225,8 +256,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
225# CONFIG_PHYS_ADDR_T_64BIT is not set 256# CONFIG_PHYS_ADDR_T_64BIT is not set
226CONFIG_ZONE_DMA_FLAG=0 257CONFIG_ZONE_DMA_FLAG=0
227CONFIG_NR_QUICK=2 258CONFIG_NR_QUICK=2
228CONFIG_HAVE_MLOCK=y
229CONFIG_HAVE_MLOCKED_PAGE_BIT=y
230# CONFIG_KSM is not set 259# CONFIG_KSM is not set
231CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 260CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
232 261
@@ -460,9 +489,6 @@ CONFIG_NET_SCH_FIFO=y
460# CONFIG_AF_RXRPC is not set 489# CONFIG_AF_RXRPC is not set
461CONFIG_WIRELESS=y 490CONFIG_WIRELESS=y
462# CONFIG_CFG80211 is not set 491# CONFIG_CFG80211 is not set
463CONFIG_CFG80211_DEFAULT_PS_VALUE=0
464# CONFIG_WIRELESS_OLD_REGULATORY is not set
465# CONFIG_WIRELESS_EXT is not set
466# CONFIG_LIB80211 is not set 492# CONFIG_LIB80211 is not set
467 493
468# 494#
@@ -571,6 +597,10 @@ CONFIG_MTD_RAM=y
571CONFIG_BLK_DEV=y 597CONFIG_BLK_DEV=y
572# CONFIG_BLK_DEV_COW_COMMON is not set 598# CONFIG_BLK_DEV_COW_COMMON is not set
573# CONFIG_BLK_DEV_LOOP is not set 599# CONFIG_BLK_DEV_LOOP is not set
600
601#
602# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
603#
574# CONFIG_BLK_DEV_NBD is not set 604# CONFIG_BLK_DEV_NBD is not set
575# CONFIG_BLK_DEV_RAM is not set 605# CONFIG_BLK_DEV_RAM is not set
576# CONFIG_CDROM_PKTCDVD is not set 606# CONFIG_CDROM_PKTCDVD is not set
@@ -623,11 +653,11 @@ CONFIG_NET_ETHERNET=y
623# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 653# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
624# CONFIG_B44 is not set 654# CONFIG_B44 is not set
625# CONFIG_KS8842 is not set 655# CONFIG_KS8842 is not set
656# CONFIG_KS8851_MLL is not set
626CONFIG_NETDEV_1000=y 657CONFIG_NETDEV_1000=y
627CONFIG_NETDEV_10000=y 658CONFIG_NETDEV_10000=y
628CONFIG_WLAN=y 659CONFIG_WLAN=y
629# CONFIG_WLAN_PRE80211 is not set 660# CONFIG_HOSTAP is not set
630# CONFIG_WLAN_80211 is not set
631 661
632# 662#
633# Enable WiMAX (Networking options) to see the WiMAX drivers 663# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -647,6 +677,7 @@ CONFIG_PHONE=y
647CONFIG_INPUT=y 677CONFIG_INPUT=y
648# CONFIG_INPUT_FF_MEMLESS is not set 678# CONFIG_INPUT_FF_MEMLESS is not set
649# CONFIG_INPUT_POLLDEV is not set 679# CONFIG_INPUT_POLLDEV is not set
680# CONFIG_INPUT_SPARSEKMAP is not set
650 681
651# 682#
652# Userland interfaces 683# Userland interfaces
@@ -725,6 +756,7 @@ CONFIG_SSB_POSSIBLE=y
725# 756#
726# CONFIG_MFD_CORE is not set 757# CONFIG_MFD_CORE is not set
727# CONFIG_MFD_SM501 is not set 758# CONFIG_MFD_SM501 is not set
759# CONFIG_MFD_SH_MOBILE_SDHI is not set
728# CONFIG_HTC_PASIC3 is not set 760# CONFIG_HTC_PASIC3 is not set
729# CONFIG_MFD_TMIO is not set 761# CONFIG_MFD_TMIO is not set
730# CONFIG_REGULATOR is not set 762# CONFIG_REGULATOR is not set
@@ -792,6 +824,7 @@ CONFIG_RTC_LIB=y
792# CONFIG_EXT2_FS is not set 824# CONFIG_EXT2_FS is not set
793# CONFIG_EXT3_FS is not set 825# CONFIG_EXT3_FS is not set
794# CONFIG_EXT4_FS is not set 826# CONFIG_EXT4_FS is not set
827CONFIG_EXT4_USE_FOR_EXT23=y
795# CONFIG_REISERFS_FS is not set 828# CONFIG_REISERFS_FS is not set
796# CONFIG_JFS_FS is not set 829# CONFIG_JFS_FS is not set
797# CONFIG_FS_POSIX_ACL is not set 830# CONFIG_FS_POSIX_ACL is not set
@@ -836,7 +869,6 @@ CONFIG_PROC_FS=y
836CONFIG_PROC_SYSCTL=y 869CONFIG_PROC_SYSCTL=y
837CONFIG_PROC_PAGE_MONITOR=y 870CONFIG_PROC_PAGE_MONITOR=y
838CONFIG_SYSFS=y 871CONFIG_SYSFS=y
839# CONFIG_HUGETLBFS is not set
840# CONFIG_HUGETLB_PAGE is not set 872# CONFIG_HUGETLB_PAGE is not set
841# CONFIG_CONFIGFS_FS is not set 873# CONFIG_CONFIGFS_FS is not set
842CONFIG_MISC_FILESYSTEMS=y 874CONFIG_MISC_FILESYSTEMS=y
@@ -899,10 +931,11 @@ CONFIG_FRAME_WARN=1024
899CONFIG_DEBUG_FS=y 931CONFIG_DEBUG_FS=y
900# CONFIG_HEADERS_CHECK is not set 932# CONFIG_HEADERS_CHECK is not set
901# CONFIG_DEBUG_KERNEL is not set 933# CONFIG_DEBUG_KERNEL is not set
902# CONFIG_DEBUG_BUGVERBOSE is not set 934CONFIG_DEBUG_BUGVERBOSE=y
903# CONFIG_DEBUG_MEMORY_INIT is not set 935# CONFIG_DEBUG_MEMORY_INIT is not set
904# CONFIG_RCU_CPU_STALL_DETECTOR is not set 936# CONFIG_RCU_CPU_STALL_DETECTOR is not set
905# CONFIG_LATENCYTOP is not set 937# CONFIG_LATENCYTOP is not set
938# CONFIG_SYSCTL_SYSCALL_CHECK is not set
906CONFIG_HAVE_FUNCTION_TRACER=y 939CONFIG_HAVE_FUNCTION_TRACER=y
907CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 940CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
908CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 941CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
@@ -916,7 +949,6 @@ CONFIG_TRACING_SUPPORT=y
916# CONFIG_SAMPLES is not set 949# CONFIG_SAMPLES is not set
917CONFIG_HAVE_ARCH_KGDB=y 950CONFIG_HAVE_ARCH_KGDB=y
918# CONFIG_SH_STANDARD_BIOS is not set 951# CONFIG_SH_STANDARD_BIOS is not set
919# CONFIG_EARLY_SCIF_CONSOLE is not set
920# CONFIG_DWARF_UNWINDER is not set 952# CONFIG_DWARF_UNWINDER is not set
921 953
922# 954#
@@ -925,7 +957,11 @@ CONFIG_HAVE_ARCH_KGDB=y
925# CONFIG_KEYS is not set 957# CONFIG_KEYS is not set
926# CONFIG_SECURITY is not set 958# CONFIG_SECURITY is not set
927# CONFIG_SECURITYFS is not set 959# CONFIG_SECURITYFS is not set
928# CONFIG_SECURITY_FILE_CAPABILITIES is not set 960# CONFIG_DEFAULT_SECURITY_SELINUX is not set
961# CONFIG_DEFAULT_SECURITY_SMACK is not set
962# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
963CONFIG_DEFAULT_SECURITY_DAC=y
964CONFIG_DEFAULT_SECURITY=""
929CONFIG_CRYPTO=y 965CONFIG_CRYPTO=y
930 966
931# 967#
diff --git a/arch/sh/configs/sh7724_generic_defconfig b/arch/sh/configs/sh7724_generic_defconfig
index e06719a30ba1..a3056b69d2ba 100644
--- a/arch/sh/configs/sh7724_generic_defconfig
+++ b/arch/sh/configs/sh7724_generic_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 19:14:00 2009 4# Mon Jan 4 15:03:45 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21CONFIG_ARCH_SUSPEND_POSSIBLE=y 21CONFIG_ARCH_SUSPEND_POSSIBLE=y
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_CMT=y 24CONFIG_SYS_SUPPORTS_CMT=y
24CONFIG_SYS_SUPPORTS_TMU=y 25CONFIG_SYS_SUPPORTS_TMU=y
25CONFIG_STACKTRACE_SUPPORT=y 26CONFIG_STACKTRACE_SUPPORT=y
@@ -30,6 +31,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
30CONFIG_ARCH_NO_VIRT_TO_BUS=y 31CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 32CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
34CONFIG_DMA_NONCOHERENT=y
33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 35CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
34CONFIG_CONSTRUCTORS=y 36CONFIG_CONSTRUCTORS=y
35 37
@@ -49,7 +51,6 @@ CONFIG_KERNEL_GZIP=y
49# CONFIG_KERNEL_LZMA is not set 51# CONFIG_KERNEL_LZMA is not set
50CONFIG_SWAP=y 52CONFIG_SWAP=y
51CONFIG_SYSVIPC=y 53CONFIG_SYSVIPC=y
52CONFIG_SYSVIPC_SYSCTL=y
53# CONFIG_BSD_PROCESS_ACCT is not set 54# CONFIG_BSD_PROCESS_ACCT is not set
54 55
55# 56#
@@ -57,6 +58,7 @@ CONFIG_SYSVIPC_SYSCTL=y
57# 58#
58CONFIG_TREE_RCU=y 59CONFIG_TREE_RCU=y
59# CONFIG_TREE_PREEMPT_RCU is not set 60# CONFIG_TREE_PREEMPT_RCU is not set
61# CONFIG_TINY_RCU is not set
60# CONFIG_RCU_TRACE is not set 62# CONFIG_RCU_TRACE is not set
61CONFIG_RCU_FANOUT=32 63CONFIG_RCU_FANOUT=32
62# CONFIG_RCU_FANOUT_EXACT is not set 64# CONFIG_RCU_FANOUT_EXACT is not set
@@ -80,11 +82,9 @@ CONFIG_CGROUPS=y
80# CONFIG_NAMESPACES is not set 82# CONFIG_NAMESPACES is not set
81# CONFIG_BLK_DEV_INITRD is not set 83# CONFIG_BLK_DEV_INITRD is not set
82CONFIG_CC_OPTIMIZE_FOR_SIZE=y 84CONFIG_CC_OPTIMIZE_FOR_SIZE=y
83CONFIG_SYSCTL=y
84CONFIG_ANON_INODES=y 85CONFIG_ANON_INODES=y
85CONFIG_EMBEDDED=y 86CONFIG_EMBEDDED=y
86# CONFIG_UID16 is not set 87# CONFIG_UID16 is not set
87CONFIG_SYSCTL_SYSCALL=y
88CONFIG_KALLSYMS=y 88CONFIG_KALLSYMS=y
89# CONFIG_KALLSYMS_EXTRA_PASS is not set 89# CONFIG_KALLSYMS_EXTRA_PASS is not set
90CONFIG_HOTPLUG=y 90CONFIG_HOTPLUG=y
@@ -100,6 +100,7 @@ CONFIG_EVENTFD=y
100CONFIG_SHMEM=y 100CONFIG_SHMEM=y
101CONFIG_AIO=y 101CONFIG_AIO=y
102CONFIG_HAVE_PERF_EVENTS=y 102CONFIG_HAVE_PERF_EVENTS=y
103CONFIG_PERF_USE_VMALLOC=y
103 104
104# 105#
105# Kernel Performance Events And Counters 106# Kernel Performance Events And Counters
@@ -120,6 +121,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
120CONFIG_HAVE_KPROBES=y 121CONFIG_HAVE_KPROBES=y
121CONFIG_HAVE_KRETPROBES=y 122CONFIG_HAVE_KRETPROBES=y
122CONFIG_HAVE_ARCH_TRACEHOOK=y 123CONFIG_HAVE_ARCH_TRACEHOOK=y
124CONFIG_HAVE_DMA_ATTRS=y
123CONFIG_HAVE_CLK=y 125CONFIG_HAVE_CLK=y
124CONFIG_HAVE_DMA_API_DEBUG=y 126CONFIG_HAVE_DMA_API_DEBUG=y
125 127
@@ -136,19 +138,48 @@ CONFIG_BLOCK=y
136CONFIG_LBDAF=y 138CONFIG_LBDAF=y
137# CONFIG_BLK_DEV_BSG is not set 139# CONFIG_BLK_DEV_BSG is not set
138# CONFIG_BLK_DEV_INTEGRITY is not set 140# CONFIG_BLK_DEV_INTEGRITY is not set
141# CONFIG_BLK_CGROUP is not set
139 142
140# 143#
141# IO Schedulers 144# IO Schedulers
142# 145#
143CONFIG_IOSCHED_NOOP=y 146CONFIG_IOSCHED_NOOP=y
144CONFIG_IOSCHED_AS=y
145CONFIG_IOSCHED_DEADLINE=y 147CONFIG_IOSCHED_DEADLINE=y
146CONFIG_IOSCHED_CFQ=y 148CONFIG_IOSCHED_CFQ=y
147CONFIG_DEFAULT_AS=y 149# CONFIG_CFQ_GROUP_IOSCHED is not set
148# CONFIG_DEFAULT_DEADLINE is not set 150# CONFIG_DEFAULT_DEADLINE is not set
149# CONFIG_DEFAULT_CFQ is not set 151CONFIG_DEFAULT_CFQ=y
150# CONFIG_DEFAULT_NOOP is not set 152# CONFIG_DEFAULT_NOOP is not set
151CONFIG_DEFAULT_IOSCHED="anticipatory" 153CONFIG_DEFAULT_IOSCHED="cfq"
154# CONFIG_INLINE_SPIN_TRYLOCK is not set
155# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
156# CONFIG_INLINE_SPIN_LOCK is not set
157# CONFIG_INLINE_SPIN_LOCK_BH is not set
158# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
159# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
160CONFIG_INLINE_SPIN_UNLOCK=y
161# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
162CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
163# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
164# CONFIG_INLINE_READ_TRYLOCK is not set
165# CONFIG_INLINE_READ_LOCK is not set
166# CONFIG_INLINE_READ_LOCK_BH is not set
167# CONFIG_INLINE_READ_LOCK_IRQ is not set
168# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
169CONFIG_INLINE_READ_UNLOCK=y
170# CONFIG_INLINE_READ_UNLOCK_BH is not set
171CONFIG_INLINE_READ_UNLOCK_IRQ=y
172# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
173# CONFIG_INLINE_WRITE_TRYLOCK is not set
174# CONFIG_INLINE_WRITE_LOCK is not set
175# CONFIG_INLINE_WRITE_LOCK_BH is not set
176# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
177# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
178CONFIG_INLINE_WRITE_UNLOCK=y
179# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
180CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
181# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
182# CONFIG_MUTEX_SPIN_ON_OWNER is not set
152CONFIG_FREEZER=y 183CONFIG_FREEZER=y
153 184
154# 185#
@@ -204,6 +235,7 @@ CONFIG_FORCE_MAX_ZONEORDER=11
204CONFIG_MEMORY_START=0x08000000 235CONFIG_MEMORY_START=0x08000000
205CONFIG_MEMORY_SIZE=0x04000000 236CONFIG_MEMORY_SIZE=0x04000000
206CONFIG_29BIT=y 237CONFIG_29BIT=y
238# CONFIG_PMB_ENABLE is not set
207# CONFIG_X2TLB is not set 239# CONFIG_X2TLB is not set
208CONFIG_VSYSCALL=y 240CONFIG_VSYSCALL=y
209CONFIG_ARCH_FLATMEM_ENABLE=y 241CONFIG_ARCH_FLATMEM_ENABLE=y
@@ -225,17 +257,12 @@ CONFIG_SPARSEMEM_MANUAL=y
225CONFIG_SPARSEMEM=y 257CONFIG_SPARSEMEM=y
226CONFIG_HAVE_MEMORY_PRESENT=y 258CONFIG_HAVE_MEMORY_PRESENT=y
227CONFIG_SPARSEMEM_STATIC=y 259CONFIG_SPARSEMEM_STATIC=y
228 260# CONFIG_MEMORY_HOTPLUG is not set
229#
230# Memory hotplug is currently incompatible with Software Suspend
231#
232CONFIG_SPLIT_PTLOCK_CPUS=4 261CONFIG_SPLIT_PTLOCK_CPUS=4
233CONFIG_MIGRATION=y 262CONFIG_MIGRATION=y
234# CONFIG_PHYS_ADDR_T_64BIT is not set 263# CONFIG_PHYS_ADDR_T_64BIT is not set
235CONFIG_ZONE_DMA_FLAG=0 264CONFIG_ZONE_DMA_FLAG=0
236CONFIG_NR_QUICK=2 265CONFIG_NR_QUICK=2
237CONFIG_HAVE_MLOCK=y
238CONFIG_HAVE_MLOCKED_PAGE_BIT=y
239# CONFIG_KSM is not set 266# CONFIG_KSM is not set
240CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 267CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
241 268
@@ -269,7 +296,6 @@ CONFIG_CPU_HAS_FPU=y
269# 296#
270CONFIG_SH_TIMER_TMU=y 297CONFIG_SH_TIMER_TMU=y
271CONFIG_SH_TIMER_CMT=y 298CONFIG_SH_TIMER_CMT=y
272CONFIG_SH_PCLK_FREQ=41666666
273CONFIG_SH_CLK_CPG=y 299CONFIG_SH_CLK_CPG=y
274CONFIG_TICK_ONESHOT=y 300CONFIG_TICK_ONESHOT=y
275CONFIG_NO_HZ=y 301CONFIG_NO_HZ=y
@@ -388,6 +414,10 @@ CONFIG_EXTRA_FIRMWARE=""
388CONFIG_BLK_DEV=y 414CONFIG_BLK_DEV=y
389# CONFIG_BLK_DEV_COW_COMMON is not set 415# CONFIG_BLK_DEV_COW_COMMON is not set
390# CONFIG_BLK_DEV_LOOP is not set 416# CONFIG_BLK_DEV_LOOP is not set
417
418#
419# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
420#
391# CONFIG_BLK_DEV_RAM is not set 421# CONFIG_BLK_DEV_RAM is not set
392# CONFIG_CDROM_PKTCDVD is not set 422# CONFIG_CDROM_PKTCDVD is not set
393# CONFIG_BLK_DEV_HD is not set 423# CONFIG_BLK_DEV_HD is not set
@@ -476,7 +506,6 @@ CONFIG_I2C_SH_MOBILE=y
476# 506#
477# Miscellaneous I2C Chip support 507# Miscellaneous I2C Chip support
478# 508#
479# CONFIG_DS1682 is not set
480# CONFIG_SENSORS_TSL2550 is not set 509# CONFIG_SENSORS_TSL2550 is not set
481# CONFIG_I2C_DEBUG_CORE is not set 510# CONFIG_I2C_DEBUG_CORE is not set
482# CONFIG_I2C_DEBUG_ALGO is not set 511# CONFIG_I2C_DEBUG_ALGO is not set
@@ -505,15 +534,18 @@ CONFIG_SSB_POSSIBLE=y
505# 534#
506# CONFIG_MFD_CORE is not set 535# CONFIG_MFD_CORE is not set
507# CONFIG_MFD_SM501 is not set 536# CONFIG_MFD_SM501 is not set
537# CONFIG_MFD_SH_MOBILE_SDHI is not set
508# CONFIG_HTC_PASIC3 is not set 538# CONFIG_HTC_PASIC3 is not set
509# CONFIG_TWL4030_CORE is not set 539# CONFIG_TWL4030_CORE is not set
510# CONFIG_MFD_TMIO is not set 540# CONFIG_MFD_TMIO is not set
511# CONFIG_PMIC_DA903X is not set 541# CONFIG_PMIC_DA903X is not set
542# CONFIG_PMIC_ADP5520 is not set
512# CONFIG_MFD_WM8400 is not set 543# CONFIG_MFD_WM8400 is not set
513# CONFIG_MFD_WM831X is not set 544# CONFIG_MFD_WM831X is not set
514# CONFIG_MFD_WM8350_I2C is not set 545# CONFIG_MFD_WM8350_I2C is not set
515# CONFIG_MFD_PCF50633 is not set 546# CONFIG_MFD_PCF50633 is not set
516# CONFIG_AB3100_CORE is not set 547# CONFIG_AB3100_CORE is not set
548# CONFIG_MFD_88PM8607 is not set
517# CONFIG_REGULATOR is not set 549# CONFIG_REGULATOR is not set
518# CONFIG_MEDIA_SUPPORT is not set 550# CONFIG_MEDIA_SUPPORT is not set
519 551
@@ -561,6 +593,7 @@ CONFIG_RTC_INTF_DEV=y
561# CONFIG_RTC_DRV_PCF8563 is not set 593# CONFIG_RTC_DRV_PCF8563 is not set
562# CONFIG_RTC_DRV_PCF8583 is not set 594# CONFIG_RTC_DRV_PCF8583 is not set
563# CONFIG_RTC_DRV_M41T80 is not set 595# CONFIG_RTC_DRV_M41T80 is not set
596# CONFIG_RTC_DRV_BQ32K is not set
564# CONFIG_RTC_DRV_S35390A is not set 597# CONFIG_RTC_DRV_S35390A is not set
565# CONFIG_RTC_DRV_FM3130 is not set 598# CONFIG_RTC_DRV_FM3130 is not set
566# CONFIG_RTC_DRV_RX8581 is not set 599# CONFIG_RTC_DRV_RX8581 is not set
@@ -581,7 +614,9 @@ CONFIG_RTC_INTF_DEV=y
581# CONFIG_RTC_DRV_M48T86 is not set 614# CONFIG_RTC_DRV_M48T86 is not set
582# CONFIG_RTC_DRV_M48T35 is not set 615# CONFIG_RTC_DRV_M48T35 is not set
583# CONFIG_RTC_DRV_M48T59 is not set 616# CONFIG_RTC_DRV_M48T59 is not set
617# CONFIG_RTC_DRV_MSM6242 is not set
584# CONFIG_RTC_DRV_BQ4802 is not set 618# CONFIG_RTC_DRV_BQ4802 is not set
619# CONFIG_RTC_DRV_RP5C01 is not set
585# CONFIG_RTC_DRV_V3020 is not set 620# CONFIG_RTC_DRV_V3020 is not set
586 621
587# 622#
@@ -608,6 +643,7 @@ CONFIG_UIO_PDRV_GENIRQ=y
608# CONFIG_EXT2_FS is not set 643# CONFIG_EXT2_FS is not set
609# CONFIG_EXT3_FS is not set 644# CONFIG_EXT3_FS is not set
610# CONFIG_EXT4_FS is not set 645# CONFIG_EXT4_FS is not set
646CONFIG_EXT4_USE_FOR_EXT23=y
611# CONFIG_REISERFS_FS is not set 647# CONFIG_REISERFS_FS is not set
612# CONFIG_JFS_FS is not set 648# CONFIG_JFS_FS is not set
613# CONFIG_FS_POSIX_ACL is not set 649# CONFIG_FS_POSIX_ACL is not set
@@ -675,11 +711,10 @@ CONFIG_DEBUG_FS=y
675# CONFIG_HEADERS_CHECK is not set 711# CONFIG_HEADERS_CHECK is not set
676# CONFIG_DEBUG_KERNEL is not set 712# CONFIG_DEBUG_KERNEL is not set
677CONFIG_STACKTRACE=y 713CONFIG_STACKTRACE=y
678# CONFIG_DEBUG_BUGVERBOSE is not set 714CONFIG_DEBUG_BUGVERBOSE=y
679# CONFIG_DEBUG_MEMORY_INIT is not set 715# CONFIG_DEBUG_MEMORY_INIT is not set
680# CONFIG_RCU_CPU_STALL_DETECTOR is not set 716# CONFIG_RCU_CPU_STALL_DETECTOR is not set
681# CONFIG_LATENCYTOP is not set 717# CONFIG_LATENCYTOP is not set
682# CONFIG_SYSCTL_SYSCALL_CHECK is not set
683CONFIG_NOP_TRACER=y 718CONFIG_NOP_TRACER=y
684CONFIG_HAVE_FUNCTION_TRACER=y 719CONFIG_HAVE_FUNCTION_TRACER=y
685CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 720CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
@@ -699,7 +734,6 @@ CONFIG_TRACING_SUPPORT=y
699# CONFIG_SAMPLES is not set 734# CONFIG_SAMPLES is not set
700CONFIG_HAVE_ARCH_KGDB=y 735CONFIG_HAVE_ARCH_KGDB=y
701# CONFIG_SH_STANDARD_BIOS is not set 736# CONFIG_SH_STANDARD_BIOS is not set
702# CONFIG_EARLY_SCIF_CONSOLE is not set
703# CONFIG_DWARF_UNWINDER is not set 737# CONFIG_DWARF_UNWINDER is not set
704 738
705# 739#
@@ -707,7 +741,11 @@ CONFIG_HAVE_ARCH_KGDB=y
707# 741#
708# CONFIG_KEYS is not set 742# CONFIG_KEYS is not set
709# CONFIG_SECURITYFS is not set 743# CONFIG_SECURITYFS is not set
710# CONFIG_SECURITY_FILE_CAPABILITIES is not set 744# CONFIG_DEFAULT_SECURITY_SELINUX is not set
745# CONFIG_DEFAULT_SECURITY_SMACK is not set
746# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
747CONFIG_DEFAULT_SECURITY_DAC=y
748CONFIG_DEFAULT_SECURITY=""
711# CONFIG_CRYPTO is not set 749# CONFIG_CRYPTO is not set
712CONFIG_BINARY_PRINTF=y 750CONFIG_BINARY_PRINTF=y
713 751
diff --git a/arch/sh/configs/sh7763rdp_defconfig b/arch/sh/configs/sh7763rdp_defconfig
index 194ff703e23d..04b841b29427 100644
--- a/arch/sh/configs/sh7763rdp_defconfig
+++ b/arch/sh/configs/sh7763rdp_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 19:15:37 2009 4# Mon Jan 4 15:05:29 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_TMU=y 24CONFIG_SYS_SUPPORTS_TMU=y
24CONFIG_STACKTRACE_SUPPORT=y 25CONFIG_STACKTRACE_SUPPORT=y
25CONFIG_LOCKDEP_SUPPORT=y 26CONFIG_LOCKDEP_SUPPORT=y
@@ -29,6 +30,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
29CONFIG_ARCH_NO_VIRT_TO_BUS=y 30CONFIG_ARCH_NO_VIRT_TO_BUS=y
30CONFIG_ARCH_HAS_DEFAULT_IDLE=y 31CONFIG_ARCH_HAS_DEFAULT_IDLE=y
31CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
33CONFIG_DMA_NONCOHERENT=y
32CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
33CONFIG_CONSTRUCTORS=y 35CONFIG_CONSTRUCTORS=y
34 36
@@ -59,6 +61,7 @@ CONFIG_SYSVIPC_SYSCTL=y
59# 61#
60CONFIG_TREE_RCU=y 62CONFIG_TREE_RCU=y
61# CONFIG_TREE_PREEMPT_RCU is not set 63# CONFIG_TREE_PREEMPT_RCU is not set
64# CONFIG_TINY_RCU is not set
62# CONFIG_RCU_TRACE is not set 65# CONFIG_RCU_TRACE is not set
63CONFIG_RCU_FANOUT=32 66CONFIG_RCU_FANOUT=32
64# CONFIG_RCU_FANOUT_EXACT is not set 67# CONFIG_RCU_FANOUT_EXACT is not set
@@ -103,6 +106,7 @@ CONFIG_EVENTFD=y
103CONFIG_SHMEM=y 106CONFIG_SHMEM=y
104CONFIG_AIO=y 107CONFIG_AIO=y
105CONFIG_HAVE_PERF_EVENTS=y 108CONFIG_HAVE_PERF_EVENTS=y
109CONFIG_PERF_USE_VMALLOC=y
106 110
107# 111#
108# Kernel Performance Events And Counters 112# Kernel Performance Events And Counters
@@ -124,6 +128,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
124CONFIG_HAVE_KPROBES=y 128CONFIG_HAVE_KPROBES=y
125CONFIG_HAVE_KRETPROBES=y 129CONFIG_HAVE_KRETPROBES=y
126CONFIG_HAVE_ARCH_TRACEHOOK=y 130CONFIG_HAVE_ARCH_TRACEHOOK=y
131CONFIG_HAVE_DMA_ATTRS=y
127CONFIG_HAVE_CLK=y 132CONFIG_HAVE_CLK=y
128CONFIG_HAVE_DMA_API_DEBUG=y 133CONFIG_HAVE_DMA_API_DEBUG=y
129 134
@@ -150,14 +155,41 @@ CONFIG_LBDAF=y
150# IO Schedulers 155# IO Schedulers
151# 156#
152CONFIG_IOSCHED_NOOP=y 157CONFIG_IOSCHED_NOOP=y
153CONFIG_IOSCHED_AS=y
154CONFIG_IOSCHED_DEADLINE=y 158CONFIG_IOSCHED_DEADLINE=y
155CONFIG_IOSCHED_CFQ=y 159CONFIG_IOSCHED_CFQ=y
156CONFIG_DEFAULT_AS=y
157# CONFIG_DEFAULT_DEADLINE is not set 160# CONFIG_DEFAULT_DEADLINE is not set
158# CONFIG_DEFAULT_CFQ is not set 161CONFIG_DEFAULT_CFQ=y
159# CONFIG_DEFAULT_NOOP is not set 162# CONFIG_DEFAULT_NOOP is not set
160CONFIG_DEFAULT_IOSCHED="anticipatory" 163CONFIG_DEFAULT_IOSCHED="cfq"
164# CONFIG_INLINE_SPIN_TRYLOCK is not set
165# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
166# CONFIG_INLINE_SPIN_LOCK is not set
167# CONFIG_INLINE_SPIN_LOCK_BH is not set
168# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
169# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
170CONFIG_INLINE_SPIN_UNLOCK=y
171# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
172CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
173# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
174# CONFIG_INLINE_READ_TRYLOCK is not set
175# CONFIG_INLINE_READ_LOCK is not set
176# CONFIG_INLINE_READ_LOCK_BH is not set
177# CONFIG_INLINE_READ_LOCK_IRQ is not set
178# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
179CONFIG_INLINE_READ_UNLOCK=y
180# CONFIG_INLINE_READ_UNLOCK_BH is not set
181CONFIG_INLINE_READ_UNLOCK_IRQ=y
182# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
183# CONFIG_INLINE_WRITE_TRYLOCK is not set
184# CONFIG_INLINE_WRITE_LOCK is not set
185# CONFIG_INLINE_WRITE_LOCK_BH is not set
186# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
187# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
188CONFIG_INLINE_WRITE_UNLOCK=y
189# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
190CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
191# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
192# CONFIG_MUTEX_SPIN_ON_OWNER is not set
161# CONFIG_FREEZER is not set 193# CONFIG_FREEZER is not set
162 194
163# 195#
@@ -211,6 +243,7 @@ CONFIG_FORCE_MAX_ZONEORDER=11
211CONFIG_MEMORY_START=0x0c000000 243CONFIG_MEMORY_START=0x0c000000
212CONFIG_MEMORY_SIZE=0x04000000 244CONFIG_MEMORY_SIZE=0x04000000
213CONFIG_29BIT=y 245CONFIG_29BIT=y
246# CONFIG_PMB_ENABLE is not set
214CONFIG_VSYSCALL=y 247CONFIG_VSYSCALL=y
215CONFIG_ARCH_FLATMEM_ENABLE=y 248CONFIG_ARCH_FLATMEM_ENABLE=y
216CONFIG_ARCH_SPARSEMEM_ENABLE=y 249CONFIG_ARCH_SPARSEMEM_ENABLE=y
@@ -237,8 +270,6 @@ CONFIG_MIGRATION=y
237# CONFIG_PHYS_ADDR_T_64BIT is not set 270# CONFIG_PHYS_ADDR_T_64BIT is not set
238CONFIG_ZONE_DMA_FLAG=0 271CONFIG_ZONE_DMA_FLAG=0
239CONFIG_NR_QUICK=2 272CONFIG_NR_QUICK=2
240CONFIG_HAVE_MLOCK=y
241CONFIG_HAVE_MLOCKED_PAGE_BIT=y
242# CONFIG_KSM is not set 273# CONFIG_KSM is not set
243CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 274CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
244 275
@@ -421,10 +452,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
421# CONFIG_AF_RXRPC is not set 452# CONFIG_AF_RXRPC is not set
422CONFIG_WIRELESS=y 453CONFIG_WIRELESS=y
423# CONFIG_CFG80211 is not set 454# CONFIG_CFG80211 is not set
424CONFIG_CFG80211_DEFAULT_PS_VALUE=0
425# CONFIG_WIRELESS_OLD_REGULATORY is not set
426CONFIG_WIRELESS_EXT=y
427CONFIG_WIRELESS_EXT_SYSFS=y
428# CONFIG_LIB80211 is not set 455# CONFIG_LIB80211 is not set
429 456
430# 457#
@@ -509,7 +536,6 @@ CONFIG_MTD_CFI_UTIL=y
509CONFIG_MTD_COMPLEX_MAPPINGS=y 536CONFIG_MTD_COMPLEX_MAPPINGS=y
510CONFIG_MTD_PHYSMAP=y 537CONFIG_MTD_PHYSMAP=y
511# CONFIG_MTD_PHYSMAP_COMPAT is not set 538# CONFIG_MTD_PHYSMAP_COMPAT is not set
512# CONFIG_MTD_GPIO_ADDR is not set
513# CONFIG_MTD_PLATRAM is not set 539# CONFIG_MTD_PLATRAM is not set
514 540
515# 541#
@@ -542,6 +568,10 @@ CONFIG_MTD_PHYSMAP=y
542CONFIG_BLK_DEV=y 568CONFIG_BLK_DEV=y
543# CONFIG_BLK_DEV_COW_COMMON is not set 569# CONFIG_BLK_DEV_COW_COMMON is not set
544# CONFIG_BLK_DEV_LOOP is not set 570# CONFIG_BLK_DEV_LOOP is not set
571
572#
573# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
574#
545# CONFIG_BLK_DEV_NBD is not set 575# CONFIG_BLK_DEV_NBD is not set
546# CONFIG_BLK_DEV_UB is not set 576# CONFIG_BLK_DEV_UB is not set
547# CONFIG_BLK_DEV_RAM is not set 577# CONFIG_BLK_DEV_RAM is not set
@@ -640,11 +670,12 @@ CONFIG_SH_ETH=y
640# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 670# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
641# CONFIG_B44 is not set 671# CONFIG_B44 is not set
642# CONFIG_KS8842 is not set 672# CONFIG_KS8842 is not set
673# CONFIG_KS8851_MLL is not set
643# CONFIG_NETDEV_1000 is not set 674# CONFIG_NETDEV_1000 is not set
644# CONFIG_NETDEV_10000 is not set 675# CONFIG_NETDEV_10000 is not set
645CONFIG_WLAN=y 676CONFIG_WLAN=y
646# CONFIG_WLAN_PRE80211 is not set 677# CONFIG_USB_ZD1201 is not set
647# CONFIG_WLAN_80211 is not set 678# CONFIG_HOSTAP is not set
648 679
649# 680#
650# Enable WiMAX (Networking options) to see the WiMAX drivers 681# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -673,6 +704,7 @@ CONFIG_WLAN=y
673CONFIG_INPUT=y 704CONFIG_INPUT=y
674# CONFIG_INPUT_FF_MEMLESS is not set 705# CONFIG_INPUT_FF_MEMLESS is not set
675# CONFIG_INPUT_POLLDEV is not set 706# CONFIG_INPUT_POLLDEV is not set
707# CONFIG_INPUT_SPARSEKMAP is not set
676 708
677# 709#
678# Userland interfaces 710# Userland interfaces
@@ -756,6 +788,7 @@ CONFIG_SSB_POSSIBLE=y
756# 788#
757# CONFIG_MFD_CORE is not set 789# CONFIG_MFD_CORE is not set
758# CONFIG_MFD_SM501 is not set 790# CONFIG_MFD_SM501 is not set
791# CONFIG_MFD_SH_MOBILE_SDHI is not set
759# CONFIG_HTC_PASIC3 is not set 792# CONFIG_HTC_PASIC3 is not set
760# CONFIG_MFD_TMIO is not set 793# CONFIG_MFD_TMIO is not set
761# CONFIG_REGULATOR is not set 794# CONFIG_REGULATOR is not set
@@ -949,6 +982,7 @@ CONFIG_MMC_BLOCK_BOUNCE=y
949# CONFIG_MMC_SDHCI is not set 982# CONFIG_MMC_SDHCI is not set
950# CONFIG_MMC_AT91 is not set 983# CONFIG_MMC_AT91 is not set
951# CONFIG_MMC_ATMELMCI is not set 984# CONFIG_MMC_ATMELMCI is not set
985# CONFIG_MMC_TMIO is not set
952# CONFIG_MEMSTICK is not set 986# CONFIG_MEMSTICK is not set
953# CONFIG_NEW_LEDS is not set 987# CONFIG_NEW_LEDS is not set
954# CONFIG_ACCESSIBILITY is not set 988# CONFIG_ACCESSIBILITY is not set
@@ -1129,10 +1163,11 @@ CONFIG_DEBUG_FS=y
1129# CONFIG_HEADERS_CHECK is not set 1163# CONFIG_HEADERS_CHECK is not set
1130# CONFIG_DEBUG_KERNEL is not set 1164# CONFIG_DEBUG_KERNEL is not set
1131CONFIG_STACKTRACE=y 1165CONFIG_STACKTRACE=y
1132# CONFIG_DEBUG_BUGVERBOSE is not set 1166CONFIG_DEBUG_BUGVERBOSE=y
1133# CONFIG_DEBUG_MEMORY_INIT is not set 1167# CONFIG_DEBUG_MEMORY_INIT is not set
1134# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1168# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1135# CONFIG_LATENCYTOP is not set 1169# CONFIG_LATENCYTOP is not set
1170# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1136CONFIG_NOP_TRACER=y 1171CONFIG_NOP_TRACER=y
1137CONFIG_HAVE_FUNCTION_TRACER=y 1172CONFIG_HAVE_FUNCTION_TRACER=y
1138CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 1173CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
@@ -1152,7 +1187,6 @@ CONFIG_TRACING_SUPPORT=y
1152# CONFIG_SAMPLES is not set 1187# CONFIG_SAMPLES is not set
1153CONFIG_HAVE_ARCH_KGDB=y 1188CONFIG_HAVE_ARCH_KGDB=y
1154# CONFIG_SH_STANDARD_BIOS is not set 1189# CONFIG_SH_STANDARD_BIOS is not set
1155# CONFIG_EARLY_SCIF_CONSOLE is not set
1156# CONFIG_DWARF_UNWINDER is not set 1190# CONFIG_DWARF_UNWINDER is not set
1157 1191
1158# 1192#
@@ -1161,7 +1195,11 @@ CONFIG_HAVE_ARCH_KGDB=y
1161# CONFIG_KEYS is not set 1195# CONFIG_KEYS is not set
1162# CONFIG_SECURITY is not set 1196# CONFIG_SECURITY is not set
1163# CONFIG_SECURITYFS is not set 1197# CONFIG_SECURITYFS is not set
1164# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1198# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1199# CONFIG_DEFAULT_SECURITY_SMACK is not set
1200# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1201CONFIG_DEFAULT_SECURITY_DAC=y
1202CONFIG_DEFAULT_SECURITY=""
1165CONFIG_CRYPTO=y 1203CONFIG_CRYPTO=y
1166 1204
1167# 1205#
diff --git a/arch/sh/configs/sh7770_generic_defconfig b/arch/sh/configs/sh7770_generic_defconfig
index 34bed5541f31..7b247053ece6 100644
--- a/arch/sh/configs/sh7770_generic_defconfig
+++ b/arch/sh/configs/sh7770_generic_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 19:17:16 2009 4# Mon Jan 4 15:06:28 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_TMU=y 24CONFIG_SYS_SUPPORTS_TMU=y
24CONFIG_STACKTRACE_SUPPORT=y 25CONFIG_STACKTRACE_SUPPORT=y
25CONFIG_LOCKDEP_SUPPORT=y 26CONFIG_LOCKDEP_SUPPORT=y
@@ -29,6 +30,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
29CONFIG_ARCH_NO_VIRT_TO_BUS=y 30CONFIG_ARCH_NO_VIRT_TO_BUS=y
30CONFIG_ARCH_HAS_DEFAULT_IDLE=y 31CONFIG_ARCH_HAS_DEFAULT_IDLE=y
31CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
33CONFIG_DMA_NONCOHERENT=y
32CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
33CONFIG_CONSTRUCTORS=y 35CONFIG_CONSTRUCTORS=y
34 36
@@ -48,7 +50,6 @@ CONFIG_KERNEL_GZIP=y
48# CONFIG_KERNEL_LZMA is not set 50# CONFIG_KERNEL_LZMA is not set
49CONFIG_SWAP=y 51CONFIG_SWAP=y
50CONFIG_SYSVIPC=y 52CONFIG_SYSVIPC=y
51CONFIG_SYSVIPC_SYSCTL=y
52# CONFIG_BSD_PROCESS_ACCT is not set 53# CONFIG_BSD_PROCESS_ACCT is not set
53 54
54# 55#
@@ -56,6 +57,7 @@ CONFIG_SYSVIPC_SYSCTL=y
56# 57#
57CONFIG_TREE_RCU=y 58CONFIG_TREE_RCU=y
58# CONFIG_TREE_PREEMPT_RCU is not set 59# CONFIG_TREE_PREEMPT_RCU is not set
60# CONFIG_TINY_RCU is not set
59# CONFIG_RCU_TRACE is not set 61# CONFIG_RCU_TRACE is not set
60CONFIG_RCU_FANOUT=32 62CONFIG_RCU_FANOUT=32
61# CONFIG_RCU_FANOUT_EXACT is not set 63# CONFIG_RCU_FANOUT_EXACT is not set
@@ -79,11 +81,9 @@ CONFIG_CGROUPS=y
79# CONFIG_NAMESPACES is not set 81# CONFIG_NAMESPACES is not set
80# CONFIG_BLK_DEV_INITRD is not set 82# CONFIG_BLK_DEV_INITRD is not set
81CONFIG_CC_OPTIMIZE_FOR_SIZE=y 83CONFIG_CC_OPTIMIZE_FOR_SIZE=y
82CONFIG_SYSCTL=y
83CONFIG_ANON_INODES=y 84CONFIG_ANON_INODES=y
84CONFIG_EMBEDDED=y 85CONFIG_EMBEDDED=y
85# CONFIG_UID16 is not set 86# CONFIG_UID16 is not set
86CONFIG_SYSCTL_SYSCALL=y
87CONFIG_KALLSYMS=y 87CONFIG_KALLSYMS=y
88# CONFIG_KALLSYMS_EXTRA_PASS is not set 88# CONFIG_KALLSYMS_EXTRA_PASS is not set
89CONFIG_HOTPLUG=y 89CONFIG_HOTPLUG=y
@@ -99,6 +99,7 @@ CONFIG_EVENTFD=y
99CONFIG_SHMEM=y 99CONFIG_SHMEM=y
100CONFIG_AIO=y 100CONFIG_AIO=y
101CONFIG_HAVE_PERF_EVENTS=y 101CONFIG_HAVE_PERF_EVENTS=y
102CONFIG_PERF_USE_VMALLOC=y
102 103
103# 104#
104# Kernel Performance Events And Counters 105# Kernel Performance Events And Counters
@@ -119,6 +120,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
119CONFIG_HAVE_KPROBES=y 120CONFIG_HAVE_KPROBES=y
120CONFIG_HAVE_KRETPROBES=y 121CONFIG_HAVE_KRETPROBES=y
121CONFIG_HAVE_ARCH_TRACEHOOK=y 122CONFIG_HAVE_ARCH_TRACEHOOK=y
123CONFIG_HAVE_DMA_ATTRS=y
122CONFIG_HAVE_CLK=y 124CONFIG_HAVE_CLK=y
123CONFIG_HAVE_DMA_API_DEBUG=y 125CONFIG_HAVE_DMA_API_DEBUG=y
124 126
@@ -135,19 +137,48 @@ CONFIG_BLOCK=y
135CONFIG_LBDAF=y 137CONFIG_LBDAF=y
136# CONFIG_BLK_DEV_BSG is not set 138# CONFIG_BLK_DEV_BSG is not set
137# CONFIG_BLK_DEV_INTEGRITY is not set 139# CONFIG_BLK_DEV_INTEGRITY is not set
140# CONFIG_BLK_CGROUP is not set
138 141
139# 142#
140# IO Schedulers 143# IO Schedulers
141# 144#
142CONFIG_IOSCHED_NOOP=y 145CONFIG_IOSCHED_NOOP=y
143CONFIG_IOSCHED_AS=y
144CONFIG_IOSCHED_DEADLINE=y 146CONFIG_IOSCHED_DEADLINE=y
145CONFIG_IOSCHED_CFQ=y 147CONFIG_IOSCHED_CFQ=y
146CONFIG_DEFAULT_AS=y 148# CONFIG_CFQ_GROUP_IOSCHED is not set
147# CONFIG_DEFAULT_DEADLINE is not set 149# CONFIG_DEFAULT_DEADLINE is not set
148# CONFIG_DEFAULT_CFQ is not set 150CONFIG_DEFAULT_CFQ=y
149# CONFIG_DEFAULT_NOOP is not set 151# CONFIG_DEFAULT_NOOP is not set
150CONFIG_DEFAULT_IOSCHED="anticipatory" 152CONFIG_DEFAULT_IOSCHED="cfq"
153# CONFIG_INLINE_SPIN_TRYLOCK is not set
154# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
155# CONFIG_INLINE_SPIN_LOCK is not set
156# CONFIG_INLINE_SPIN_LOCK_BH is not set
157# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
158# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
159CONFIG_INLINE_SPIN_UNLOCK=y
160# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
161CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
162# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
163# CONFIG_INLINE_READ_TRYLOCK is not set
164# CONFIG_INLINE_READ_LOCK is not set
165# CONFIG_INLINE_READ_LOCK_BH is not set
166# CONFIG_INLINE_READ_LOCK_IRQ is not set
167# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
168CONFIG_INLINE_READ_UNLOCK=y
169# CONFIG_INLINE_READ_UNLOCK_BH is not set
170CONFIG_INLINE_READ_UNLOCK_IRQ=y
171# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
172# CONFIG_INLINE_WRITE_TRYLOCK is not set
173# CONFIG_INLINE_WRITE_LOCK is not set
174# CONFIG_INLINE_WRITE_LOCK_BH is not set
175# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
176# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
177CONFIG_INLINE_WRITE_UNLOCK=y
178# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
179CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
180# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
181# CONFIG_MUTEX_SPIN_ON_OWNER is not set
151CONFIG_FREEZER=y 182CONFIG_FREEZER=y
152 183
153# 184#
@@ -201,6 +232,7 @@ CONFIG_FORCE_MAX_ZONEORDER=11
201CONFIG_MEMORY_START=0x08000000 232CONFIG_MEMORY_START=0x08000000
202CONFIG_MEMORY_SIZE=0x04000000 233CONFIG_MEMORY_SIZE=0x04000000
203CONFIG_29BIT=y 234CONFIG_29BIT=y
235# CONFIG_PMB_ENABLE is not set
204CONFIG_VSYSCALL=y 236CONFIG_VSYSCALL=y
205CONFIG_ARCH_FLATMEM_ENABLE=y 237CONFIG_ARCH_FLATMEM_ENABLE=y
206CONFIG_ARCH_SPARSEMEM_ENABLE=y 238CONFIG_ARCH_SPARSEMEM_ENABLE=y
@@ -221,17 +253,12 @@ CONFIG_SPARSEMEM_MANUAL=y
221CONFIG_SPARSEMEM=y 253CONFIG_SPARSEMEM=y
222CONFIG_HAVE_MEMORY_PRESENT=y 254CONFIG_HAVE_MEMORY_PRESENT=y
223CONFIG_SPARSEMEM_STATIC=y 255CONFIG_SPARSEMEM_STATIC=y
224 256# CONFIG_MEMORY_HOTPLUG is not set
225#
226# Memory hotplug is currently incompatible with Software Suspend
227#
228CONFIG_SPLIT_PTLOCK_CPUS=4 257CONFIG_SPLIT_PTLOCK_CPUS=4
229CONFIG_MIGRATION=y 258CONFIG_MIGRATION=y
230# CONFIG_PHYS_ADDR_T_64BIT is not set 259# CONFIG_PHYS_ADDR_T_64BIT is not set
231CONFIG_ZONE_DMA_FLAG=0 260CONFIG_ZONE_DMA_FLAG=0
232CONFIG_NR_QUICK=2 261CONFIG_NR_QUICK=2
233CONFIG_HAVE_MLOCK=y
234CONFIG_HAVE_MLOCKED_PAGE_BIT=y
235# CONFIG_KSM is not set 262# CONFIG_KSM is not set
236CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 263CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
237 264
@@ -379,6 +406,10 @@ CONFIG_EXTRA_FIRMWARE=""
379CONFIG_BLK_DEV=y 406CONFIG_BLK_DEV=y
380# CONFIG_BLK_DEV_COW_COMMON is not set 407# CONFIG_BLK_DEV_COW_COMMON is not set
381# CONFIG_BLK_DEV_LOOP is not set 408# CONFIG_BLK_DEV_LOOP is not set
409
410#
411# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
412#
382# CONFIG_BLK_DEV_RAM is not set 413# CONFIG_BLK_DEV_RAM is not set
383# CONFIG_CDROM_PKTCDVD is not set 414# CONFIG_CDROM_PKTCDVD is not set
384# CONFIG_BLK_DEV_HD is not set 415# CONFIG_BLK_DEV_HD is not set
@@ -467,7 +498,6 @@ CONFIG_I2C_SH_MOBILE=y
467# 498#
468# Miscellaneous I2C Chip support 499# Miscellaneous I2C Chip support
469# 500#
470# CONFIG_DS1682 is not set
471# CONFIG_SENSORS_TSL2550 is not set 501# CONFIG_SENSORS_TSL2550 is not set
472# CONFIG_I2C_DEBUG_CORE is not set 502# CONFIG_I2C_DEBUG_CORE is not set
473# CONFIG_I2C_DEBUG_ALGO is not set 503# CONFIG_I2C_DEBUG_ALGO is not set
@@ -496,15 +526,18 @@ CONFIG_SSB_POSSIBLE=y
496# 526#
497# CONFIG_MFD_CORE is not set 527# CONFIG_MFD_CORE is not set
498# CONFIG_MFD_SM501 is not set 528# CONFIG_MFD_SM501 is not set
529# CONFIG_MFD_SH_MOBILE_SDHI is not set
499# CONFIG_HTC_PASIC3 is not set 530# CONFIG_HTC_PASIC3 is not set
500# CONFIG_TWL4030_CORE is not set 531# CONFIG_TWL4030_CORE is not set
501# CONFIG_MFD_TMIO is not set 532# CONFIG_MFD_TMIO is not set
502# CONFIG_PMIC_DA903X is not set 533# CONFIG_PMIC_DA903X is not set
534# CONFIG_PMIC_ADP5520 is not set
503# CONFIG_MFD_WM8400 is not set 535# CONFIG_MFD_WM8400 is not set
504# CONFIG_MFD_WM831X is not set 536# CONFIG_MFD_WM831X is not set
505# CONFIG_MFD_WM8350_I2C is not set 537# CONFIG_MFD_WM8350_I2C is not set
506# CONFIG_MFD_PCF50633 is not set 538# CONFIG_MFD_PCF50633 is not set
507# CONFIG_AB3100_CORE is not set 539# CONFIG_AB3100_CORE is not set
540# CONFIG_MFD_88PM8607 is not set
508# CONFIG_REGULATOR is not set 541# CONFIG_REGULATOR is not set
509# CONFIG_MEDIA_SUPPORT is not set 542# CONFIG_MEDIA_SUPPORT is not set
510 543
@@ -552,6 +585,7 @@ CONFIG_RTC_INTF_DEV=y
552# CONFIG_RTC_DRV_PCF8563 is not set 585# CONFIG_RTC_DRV_PCF8563 is not set
553# CONFIG_RTC_DRV_PCF8583 is not set 586# CONFIG_RTC_DRV_PCF8583 is not set
554# CONFIG_RTC_DRV_M41T80 is not set 587# CONFIG_RTC_DRV_M41T80 is not set
588# CONFIG_RTC_DRV_BQ32K is not set
555# CONFIG_RTC_DRV_S35390A is not set 589# CONFIG_RTC_DRV_S35390A is not set
556# CONFIG_RTC_DRV_FM3130 is not set 590# CONFIG_RTC_DRV_FM3130 is not set
557# CONFIG_RTC_DRV_RX8581 is not set 591# CONFIG_RTC_DRV_RX8581 is not set
@@ -572,7 +606,9 @@ CONFIG_RTC_INTF_DEV=y
572# CONFIG_RTC_DRV_M48T86 is not set 606# CONFIG_RTC_DRV_M48T86 is not set
573# CONFIG_RTC_DRV_M48T35 is not set 607# CONFIG_RTC_DRV_M48T35 is not set
574# CONFIG_RTC_DRV_M48T59 is not set 608# CONFIG_RTC_DRV_M48T59 is not set
609# CONFIG_RTC_DRV_MSM6242 is not set
575# CONFIG_RTC_DRV_BQ4802 is not set 610# CONFIG_RTC_DRV_BQ4802 is not set
611# CONFIG_RTC_DRV_RP5C01 is not set
576# CONFIG_RTC_DRV_V3020 is not set 612# CONFIG_RTC_DRV_V3020 is not set
577 613
578# 614#
@@ -599,6 +635,7 @@ CONFIG_UIO_PDRV_GENIRQ=y
599# CONFIG_EXT2_FS is not set 635# CONFIG_EXT2_FS is not set
600# CONFIG_EXT3_FS is not set 636# CONFIG_EXT3_FS is not set
601# CONFIG_EXT4_FS is not set 637# CONFIG_EXT4_FS is not set
638CONFIG_EXT4_USE_FOR_EXT23=y
602# CONFIG_REISERFS_FS is not set 639# CONFIG_REISERFS_FS is not set
603# CONFIG_JFS_FS is not set 640# CONFIG_JFS_FS is not set
604# CONFIG_FS_POSIX_ACL is not set 641# CONFIG_FS_POSIX_ACL is not set
@@ -666,11 +703,10 @@ CONFIG_DEBUG_FS=y
666# CONFIG_HEADERS_CHECK is not set 703# CONFIG_HEADERS_CHECK is not set
667# CONFIG_DEBUG_KERNEL is not set 704# CONFIG_DEBUG_KERNEL is not set
668CONFIG_STACKTRACE=y 705CONFIG_STACKTRACE=y
669# CONFIG_DEBUG_BUGVERBOSE is not set 706CONFIG_DEBUG_BUGVERBOSE=y
670# CONFIG_DEBUG_MEMORY_INIT is not set 707# CONFIG_DEBUG_MEMORY_INIT is not set
671# CONFIG_RCU_CPU_STALL_DETECTOR is not set 708# CONFIG_RCU_CPU_STALL_DETECTOR is not set
672# CONFIG_LATENCYTOP is not set 709# CONFIG_LATENCYTOP is not set
673# CONFIG_SYSCTL_SYSCALL_CHECK is not set
674CONFIG_NOP_TRACER=y 710CONFIG_NOP_TRACER=y
675CONFIG_HAVE_FUNCTION_TRACER=y 711CONFIG_HAVE_FUNCTION_TRACER=y
676CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 712CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
@@ -690,7 +726,6 @@ CONFIG_TRACING_SUPPORT=y
690# CONFIG_SAMPLES is not set 726# CONFIG_SAMPLES is not set
691CONFIG_HAVE_ARCH_KGDB=y 727CONFIG_HAVE_ARCH_KGDB=y
692# CONFIG_SH_STANDARD_BIOS is not set 728# CONFIG_SH_STANDARD_BIOS is not set
693# CONFIG_EARLY_SCIF_CONSOLE is not set
694# CONFIG_DWARF_UNWINDER is not set 729# CONFIG_DWARF_UNWINDER is not set
695 730
696# 731#
@@ -698,7 +733,11 @@ CONFIG_HAVE_ARCH_KGDB=y
698# 733#
699# CONFIG_KEYS is not set 734# CONFIG_KEYS is not set
700# CONFIG_SECURITYFS is not set 735# CONFIG_SECURITYFS is not set
701# CONFIG_SECURITY_FILE_CAPABILITIES is not set 736# CONFIG_DEFAULT_SECURITY_SELINUX is not set
737# CONFIG_DEFAULT_SECURITY_SMACK is not set
738# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
739CONFIG_DEFAULT_SECURITY_DAC=y
740CONFIG_DEFAULT_SECURITY=""
702# CONFIG_CRYPTO is not set 741# CONFIG_CRYPTO is not set
703CONFIG_BINARY_PRINTF=y 742CONFIG_BINARY_PRINTF=y
704 743
diff --git a/arch/sh/configs/sh7785lcr_32bit_defconfig b/arch/sh/configs/sh7785lcr_32bit_defconfig
index 51cbaedf7a56..8330813b0c1d 100644
--- a/arch/sh/configs/sh7785lcr_32bit_defconfig
+++ b/arch/sh/configs/sh7785lcr_32bit_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 3# Linux kernel version: 2.6.33-rc2
4# Fri Sep 25 11:39:20 2009 4# Mon Jan 4 15:07:40 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_NUMA=y 24CONFIG_SYS_SUPPORTS_NUMA=y
24CONFIG_SYS_SUPPORTS_PCI=y 25CONFIG_SYS_SUPPORTS_PCI=y
25CONFIG_SYS_SUPPORTS_TMU=y 26CONFIG_SYS_SUPPORTS_TMU=y
@@ -31,6 +32,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
31CONFIG_ARCH_NO_VIRT_TO_BUS=y 32CONFIG_ARCH_NO_VIRT_TO_BUS=y
32CONFIG_ARCH_HAS_DEFAULT_IDLE=y 33CONFIG_ARCH_HAS_DEFAULT_IDLE=y
33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 34CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
35CONFIG_DMA_NONCOHERENT=y
34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 36CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
35CONFIG_CONSTRUCTORS=y 37CONFIG_CONSTRUCTORS=y
36 38
@@ -64,6 +66,7 @@ CONFIG_BSD_PROCESS_ACCT=y
64# 66#
65CONFIG_TREE_RCU=y 67CONFIG_TREE_RCU=y
66# CONFIG_TREE_PREEMPT_RCU is not set 68# CONFIG_TREE_PREEMPT_RCU is not set
69# CONFIG_TINY_RCU is not set
67# CONFIG_RCU_TRACE is not set 70# CONFIG_RCU_TRACE is not set
68CONFIG_RCU_FANOUT=32 71CONFIG_RCU_FANOUT=32
69# CONFIG_RCU_FANOUT_EXACT is not set 72# CONFIG_RCU_FANOUT_EXACT is not set
@@ -103,6 +106,7 @@ CONFIG_EVENTFD=y
103CONFIG_SHMEM=y 106CONFIG_SHMEM=y
104CONFIG_AIO=y 107CONFIG_AIO=y
105CONFIG_HAVE_PERF_EVENTS=y 108CONFIG_HAVE_PERF_EVENTS=y
109CONFIG_PERF_USE_VMALLOC=y
106 110
107# 111#
108# Kernel Performance Events And Counters 112# Kernel Performance Events And Counters
@@ -126,6 +130,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
126CONFIG_HAVE_KPROBES=y 130CONFIG_HAVE_KPROBES=y
127CONFIG_HAVE_KRETPROBES=y 131CONFIG_HAVE_KRETPROBES=y
128CONFIG_HAVE_ARCH_TRACEHOOK=y 132CONFIG_HAVE_ARCH_TRACEHOOK=y
133CONFIG_HAVE_DMA_ATTRS=y
129CONFIG_HAVE_CLK=y 134CONFIG_HAVE_CLK=y
130CONFIG_HAVE_DMA_API_DEBUG=y 135CONFIG_HAVE_DMA_API_DEBUG=y
131 136
@@ -153,14 +158,41 @@ CONFIG_BLOCK=y
153# IO Schedulers 158# IO Schedulers
154# 159#
155CONFIG_IOSCHED_NOOP=y 160CONFIG_IOSCHED_NOOP=y
156CONFIG_IOSCHED_AS=y
157CONFIG_IOSCHED_DEADLINE=y 161CONFIG_IOSCHED_DEADLINE=y
158CONFIG_IOSCHED_CFQ=y 162CONFIG_IOSCHED_CFQ=y
159# CONFIG_DEFAULT_AS is not set
160# CONFIG_DEFAULT_DEADLINE is not set 163# CONFIG_DEFAULT_DEADLINE is not set
161CONFIG_DEFAULT_CFQ=y 164CONFIG_DEFAULT_CFQ=y
162# CONFIG_DEFAULT_NOOP is not set 165# CONFIG_DEFAULT_NOOP is not set
163CONFIG_DEFAULT_IOSCHED="cfq" 166CONFIG_DEFAULT_IOSCHED="cfq"
167# CONFIG_INLINE_SPIN_TRYLOCK is not set
168# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
169# CONFIG_INLINE_SPIN_LOCK is not set
170# CONFIG_INLINE_SPIN_LOCK_BH is not set
171# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
172# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
173# CONFIG_INLINE_SPIN_UNLOCK is not set
174# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
175# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
176# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
177# CONFIG_INLINE_READ_TRYLOCK is not set
178# CONFIG_INLINE_READ_LOCK is not set
179# CONFIG_INLINE_READ_LOCK_BH is not set
180# CONFIG_INLINE_READ_LOCK_IRQ is not set
181# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
182# CONFIG_INLINE_READ_UNLOCK is not set
183# CONFIG_INLINE_READ_UNLOCK_BH is not set
184# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
185# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
186# CONFIG_INLINE_WRITE_TRYLOCK is not set
187# CONFIG_INLINE_WRITE_LOCK is not set
188# CONFIG_INLINE_WRITE_LOCK_BH is not set
189# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
190# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
191# CONFIG_INLINE_WRITE_UNLOCK is not set
192# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
193# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
194# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
195# CONFIG_MUTEX_SPIN_ON_OWNER is not set
164# CONFIG_FREEZER is not set 196# CONFIG_FREEZER is not set
165 197
166# 198#
@@ -253,8 +285,6 @@ CONFIG_MIGRATION=y
253# CONFIG_PHYS_ADDR_T_64BIT is not set 285# CONFIG_PHYS_ADDR_T_64BIT is not set
254CONFIG_ZONE_DMA_FLAG=0 286CONFIG_ZONE_DMA_FLAG=0
255CONFIG_NR_QUICK=2 287CONFIG_NR_QUICK=2
256CONFIG_HAVE_MLOCK=y
257CONFIG_HAVE_MLOCKED_PAGE_BIT=y
258# CONFIG_KSM is not set 288# CONFIG_KSM is not set
259CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 289CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
260 290
@@ -287,7 +317,6 @@ CONFIG_SH_SH7785LCR=y
287# Timer and clock configuration 317# Timer and clock configuration
288# 318#
289CONFIG_SH_TIMER_TMU=y 319CONFIG_SH_TIMER_TMU=y
290CONFIG_SH_PCLK_FREQ=50000000
291CONFIG_SH_CLK_CPG=y 320CONFIG_SH_CLK_CPG=y
292CONFIG_TICK_ONESHOT=y 321CONFIG_TICK_ONESHOT=y
293CONFIG_NO_HZ=y 322CONFIG_NO_HZ=y
@@ -360,7 +389,6 @@ CONFIG_ENTRY_OFFSET=0x00001000
360# Bus options 389# Bus options
361# 390#
362CONFIG_PCI=y 391CONFIG_PCI=y
363CONFIG_SH_PCIDMA_NONCOHERENT=y
364# CONFIG_PCIEPORTBUS is not set 392# CONFIG_PCIEPORTBUS is not set
365# CONFIG_ARCH_SUPPORTS_MSI is not set 393# CONFIG_ARCH_SUPPORTS_MSI is not set
366# CONFIG_PCI_LEGACY is not set 394# CONFIG_PCI_LEGACY is not set
@@ -470,10 +498,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
470# CONFIG_AF_RXRPC is not set 498# CONFIG_AF_RXRPC is not set
471CONFIG_WIRELESS=y 499CONFIG_WIRELESS=y
472# CONFIG_CFG80211 is not set 500# CONFIG_CFG80211 is not set
473CONFIG_CFG80211_DEFAULT_PS_VALUE=0
474# CONFIG_WIRELESS_OLD_REGULATORY is not set
475CONFIG_WIRELESS_EXT=y
476CONFIG_WIRELESS_EXT_SYSFS=y
477# CONFIG_LIB80211 is not set 501# CONFIG_LIB80211 is not set
478 502
479# 503#
@@ -588,6 +612,10 @@ CONFIG_BLK_DEV=y
588# CONFIG_BLK_DEV_COW_COMMON is not set 612# CONFIG_BLK_DEV_COW_COMMON is not set
589CONFIG_BLK_DEV_LOOP=y 613CONFIG_BLK_DEV_LOOP=y
590CONFIG_BLK_DEV_CRYPTOLOOP=m 614CONFIG_BLK_DEV_CRYPTOLOOP=m
615
616#
617# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
618#
591# CONFIG_BLK_DEV_NBD is not set 619# CONFIG_BLK_DEV_NBD is not set
592# CONFIG_BLK_DEV_SX8 is not set 620# CONFIG_BLK_DEV_SX8 is not set
593# CONFIG_BLK_DEV_UB is not set 621# CONFIG_BLK_DEV_UB is not set
@@ -688,15 +716,16 @@ CONFIG_SATA_SIL=y
688# CONFIG_PATA_NS87415 is not set 716# CONFIG_PATA_NS87415 is not set
689# CONFIG_PATA_OPTI is not set 717# CONFIG_PATA_OPTI is not set
690# CONFIG_PATA_OPTIDMA is not set 718# CONFIG_PATA_OPTIDMA is not set
719# CONFIG_PATA_PDC2027X is not set
691# CONFIG_PATA_PDC_OLD is not set 720# CONFIG_PATA_PDC_OLD is not set
692# CONFIG_PATA_RADISYS is not set 721# CONFIG_PATA_RADISYS is not set
693# CONFIG_PATA_RDC is not set 722# CONFIG_PATA_RDC is not set
694# CONFIG_PATA_RZ1000 is not set 723# CONFIG_PATA_RZ1000 is not set
695# CONFIG_PATA_SC1200 is not set 724# CONFIG_PATA_SC1200 is not set
696# CONFIG_PATA_SERVERWORKS is not set 725# CONFIG_PATA_SERVERWORKS is not set
697# CONFIG_PATA_PDC2027X is not set
698# CONFIG_PATA_SIL680 is not set 726# CONFIG_PATA_SIL680 is not set
699# CONFIG_PATA_SIS is not set 727# CONFIG_PATA_SIS is not set
728# CONFIG_PATA_TOSHIBA is not set
700# CONFIG_PATA_VIA is not set 729# CONFIG_PATA_VIA is not set
701# CONFIG_PATA_WINBOND is not set 730# CONFIG_PATA_WINBOND is not set
702# CONFIG_PATA_PLATFORM is not set 731# CONFIG_PATA_PLATFORM is not set
@@ -777,6 +806,7 @@ CONFIG_R8169=y
777# CONFIG_NETCONSOLE is not set 806# CONFIG_NETCONSOLE is not set
778# CONFIG_NETPOLL is not set 807# CONFIG_NETPOLL is not set
779# CONFIG_NET_POLL_CONTROLLER is not set 808# CONFIG_NET_POLL_CONTROLLER is not set
809# CONFIG_VMXNET3 is not set
780# CONFIG_ISDN is not set 810# CONFIG_ISDN is not set
781# CONFIG_PHONE is not set 811# CONFIG_PHONE is not set
782 812
@@ -786,6 +816,7 @@ CONFIG_R8169=y
786CONFIG_INPUT=y 816CONFIG_INPUT=y
787CONFIG_INPUT_FF_MEMLESS=m 817CONFIG_INPUT_FF_MEMLESS=m
788# CONFIG_INPUT_POLLDEV is not set 818# CONFIG_INPUT_POLLDEV is not set
819# CONFIG_INPUT_SPARSEKMAP is not set
789 820
790# 821#
791# Userland interfaces 822# Userland interfaces
@@ -841,6 +872,7 @@ CONFIG_SERIO_SERPORT=y
841# CONFIG_SERIO_PCIPS2 is not set 872# CONFIG_SERIO_PCIPS2 is not set
842CONFIG_SERIO_LIBPS2=y 873CONFIG_SERIO_LIBPS2=y
843# CONFIG_SERIO_RAW is not set 874# CONFIG_SERIO_RAW is not set
875# CONFIG_SERIO_ALTERA_PS2 is not set
844# CONFIG_GAMEPORT is not set 876# CONFIG_GAMEPORT is not set
845 877
846# 878#
@@ -924,11 +956,6 @@ CONFIG_I2C_ALGOPCA=y
924# CONFIG_I2C_TINY_USB is not set 956# CONFIG_I2C_TINY_USB is not set
925 957
926# 958#
927# Graphics adapter I2C/DDC channel drivers
928#
929# CONFIG_I2C_VOODOO3 is not set
930
931#
932# Other I2C/SMBus bus drivers 959# Other I2C/SMBus bus drivers
933# 960#
934CONFIG_I2C_PCA_PLATFORM=y 961CONFIG_I2C_PCA_PLATFORM=y
@@ -937,7 +964,6 @@ CONFIG_I2C_PCA_PLATFORM=y
937# 964#
938# Miscellaneous I2C Chip support 965# Miscellaneous I2C Chip support
939# 966#
940# CONFIG_DS1682 is not set
941# CONFIG_SENSORS_TSL2550 is not set 967# CONFIG_SENSORS_TSL2550 is not set
942# CONFIG_I2C_DEBUG_CORE is not set 968# CONFIG_I2C_DEBUG_CORE is not set
943# CONFIG_I2C_DEBUG_ALGO is not set 969# CONFIG_I2C_DEBUG_ALGO is not set
@@ -986,15 +1012,18 @@ CONFIG_SSB_POSSIBLE=y
986# 1012#
987# CONFIG_MFD_CORE is not set 1013# CONFIG_MFD_CORE is not set
988CONFIG_MFD_SM501=y 1014CONFIG_MFD_SM501=y
1015# CONFIG_MFD_SH_MOBILE_SDHI is not set
989# CONFIG_HTC_PASIC3 is not set 1016# CONFIG_HTC_PASIC3 is not set
990# CONFIG_TWL4030_CORE is not set 1017# CONFIG_TWL4030_CORE is not set
991# CONFIG_MFD_TMIO is not set 1018# CONFIG_MFD_TMIO is not set
992# CONFIG_PMIC_DA903X is not set 1019# CONFIG_PMIC_DA903X is not set
1020# CONFIG_PMIC_ADP5520 is not set
993# CONFIG_MFD_WM8400 is not set 1021# CONFIG_MFD_WM8400 is not set
994# CONFIG_MFD_WM831X is not set 1022# CONFIG_MFD_WM831X is not set
995# CONFIG_MFD_WM8350_I2C is not set 1023# CONFIG_MFD_WM8350_I2C is not set
996# CONFIG_MFD_PCF50633 is not set 1024# CONFIG_MFD_PCF50633 is not set
997# CONFIG_AB3100_CORE is not set 1025# CONFIG_AB3100_CORE is not set
1026# CONFIG_MFD_88PM8607 is not set
998# CONFIG_REGULATOR is not set 1027# CONFIG_REGULATOR is not set
999# CONFIG_MEDIA_SUPPORT is not set 1028# CONFIG_MEDIA_SUPPORT is not set
1000 1029
@@ -1129,6 +1158,7 @@ CONFIG_SND_CMIPCI=y
1129# CONFIG_SND_OXYGEN is not set 1158# CONFIG_SND_OXYGEN is not set
1130# CONFIG_SND_CS4281 is not set 1159# CONFIG_SND_CS4281 is not set
1131# CONFIG_SND_CS46XX is not set 1160# CONFIG_SND_CS46XX is not set
1161# CONFIG_SND_CS5535AUDIO is not set
1132# CONFIG_SND_CTXFI is not set 1162# CONFIG_SND_CTXFI is not set
1133# CONFIG_SND_DARLA20 is not set 1163# CONFIG_SND_DARLA20 is not set
1134# CONFIG_SND_GINA20 is not set 1164# CONFIG_SND_GINA20 is not set
@@ -1363,6 +1393,7 @@ CONFIG_MMC_SDHCI_PLTFM=m
1363# CONFIG_MMC_AT91 is not set 1393# CONFIG_MMC_AT91 is not set
1364# CONFIG_MMC_ATMELMCI is not set 1394# CONFIG_MMC_ATMELMCI is not set
1365# CONFIG_MMC_TIFM_SD is not set 1395# CONFIG_MMC_TIFM_SD is not set
1396# CONFIG_MMC_TMIO is not set
1366# CONFIG_MMC_CB710 is not set 1397# CONFIG_MMC_CB710 is not set
1367# CONFIG_MMC_VIA_SDMMC is not set 1398# CONFIG_MMC_VIA_SDMMC is not set
1368# CONFIG_MEMSTICK is not set 1399# CONFIG_MEMSTICK is not set
@@ -1397,6 +1428,7 @@ CONFIG_RTC_DRV_RS5C372=y
1397# CONFIG_RTC_DRV_PCF8563 is not set 1428# CONFIG_RTC_DRV_PCF8563 is not set
1398# CONFIG_RTC_DRV_PCF8583 is not set 1429# CONFIG_RTC_DRV_PCF8583 is not set
1399# CONFIG_RTC_DRV_M41T80 is not set 1430# CONFIG_RTC_DRV_M41T80 is not set
1431# CONFIG_RTC_DRV_BQ32K is not set
1400# CONFIG_RTC_DRV_S35390A is not set 1432# CONFIG_RTC_DRV_S35390A is not set
1401# CONFIG_RTC_DRV_FM3130 is not set 1433# CONFIG_RTC_DRV_FM3130 is not set
1402# CONFIG_RTC_DRV_RX8581 is not set 1434# CONFIG_RTC_DRV_RX8581 is not set
@@ -1417,7 +1449,9 @@ CONFIG_RTC_DRV_RS5C372=y
1417# CONFIG_RTC_DRV_M48T86 is not set 1449# CONFIG_RTC_DRV_M48T86 is not set
1418# CONFIG_RTC_DRV_M48T35 is not set 1450# CONFIG_RTC_DRV_M48T35 is not set
1419# CONFIG_RTC_DRV_M48T59 is not set 1451# CONFIG_RTC_DRV_M48T59 is not set
1452# CONFIG_RTC_DRV_MSM6242 is not set
1420# CONFIG_RTC_DRV_BQ4802 is not set 1453# CONFIG_RTC_DRV_BQ4802 is not set
1454# CONFIG_RTC_DRV_RP5C01 is not set
1421# CONFIG_RTC_DRV_V3020 is not set 1455# CONFIG_RTC_DRV_V3020 is not set
1422 1456
1423# 1457#
@@ -1622,13 +1656,14 @@ CONFIG_SCHED_DEBUG=y
1622CONFIG_SCHEDSTATS=y 1656CONFIG_SCHEDSTATS=y
1623CONFIG_TRACE_IRQFLAGS=y 1657CONFIG_TRACE_IRQFLAGS=y
1624CONFIG_STACKTRACE=y 1658CONFIG_STACKTRACE=y
1625# CONFIG_DEBUG_BUGVERBOSE is not set 1659CONFIG_DEBUG_BUGVERBOSE=y
1626# CONFIG_DEBUG_MEMORY_INIT is not set 1660# CONFIG_DEBUG_MEMORY_INIT is not set
1627CONFIG_FRAME_POINTER=y 1661CONFIG_FRAME_POINTER=y
1628# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1662# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1629CONFIG_LATENCYTOP=y 1663CONFIG_LATENCYTOP=y
1630CONFIG_SYSCTL_SYSCALL_CHECK=y 1664CONFIG_SYSCTL_SYSCALL_CHECK=y
1631CONFIG_NOP_TRACER=y 1665CONFIG_NOP_TRACER=y
1666CONFIG_HAVE_FTRACE_NMI_ENTER=y
1632CONFIG_HAVE_FUNCTION_TRACER=y 1667CONFIG_HAVE_FUNCTION_TRACER=y
1633CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 1668CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1634CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 1669CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
@@ -1637,6 +1672,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1637CONFIG_HAVE_SYSCALL_TRACEPOINTS=y 1672CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
1638CONFIG_TRACER_MAX_TRACE=y 1673CONFIG_TRACER_MAX_TRACE=y
1639CONFIG_RING_BUFFER=y 1674CONFIG_RING_BUFFER=y
1675CONFIG_FTRACE_NMI_ENTER=y
1640CONFIG_EVENT_TRACING=y 1676CONFIG_EVENT_TRACING=y
1641CONFIG_CONTEXT_SWITCH_TRACER=y 1677CONFIG_CONTEXT_SWITCH_TRACER=y
1642CONFIG_RING_BUFFER_ALLOW_SWAP=y 1678CONFIG_RING_BUFFER_ALLOW_SWAP=y
@@ -1668,7 +1704,6 @@ CONFIG_FTRACE_MCOUNT_RECORD=y
1668# CONFIG_SAMPLES is not set 1704# CONFIG_SAMPLES is not set
1669CONFIG_HAVE_ARCH_KGDB=y 1705CONFIG_HAVE_ARCH_KGDB=y
1670# CONFIG_SH_STANDARD_BIOS is not set 1706# CONFIG_SH_STANDARD_BIOS is not set
1671# CONFIG_EARLY_SCIF_CONSOLE is not set
1672CONFIG_DWARF_UNWINDER=y 1707CONFIG_DWARF_UNWINDER=y
1673CONFIG_MCOUNT=y 1708CONFIG_MCOUNT=y
1674 1709
@@ -1678,7 +1713,11 @@ CONFIG_MCOUNT=y
1678# CONFIG_KEYS is not set 1713# CONFIG_KEYS is not set
1679# CONFIG_SECURITY is not set 1714# CONFIG_SECURITY is not set
1680# CONFIG_SECURITYFS is not set 1715# CONFIG_SECURITYFS is not set
1681# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1716# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1717# CONFIG_DEFAULT_SECURITY_SMACK is not set
1718# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1719CONFIG_DEFAULT_SECURITY_DAC=y
1720CONFIG_DEFAULT_SECURITY=""
1682CONFIG_CRYPTO=y 1721CONFIG_CRYPTO=y
1683 1722
1684# 1723#
diff --git a/arch/sh/configs/sh7785lcr_defconfig b/arch/sh/configs/sh7785lcr_defconfig
index 8c2c47ed3991..f196e87c7665 100644
--- a/arch/sh/configs/sh7785lcr_defconfig
+++ b/arch/sh/configs/sh7785lcr_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 19:23:18 2009 4# Mon Jan 4 15:09:09 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_NUMA=y 24CONFIG_SYS_SUPPORTS_NUMA=y
24CONFIG_SYS_SUPPORTS_PCI=y 25CONFIG_SYS_SUPPORTS_PCI=y
25CONFIG_SYS_SUPPORTS_TMU=y 26CONFIG_SYS_SUPPORTS_TMU=y
@@ -31,6 +32,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
31CONFIG_ARCH_NO_VIRT_TO_BUS=y 32CONFIG_ARCH_NO_VIRT_TO_BUS=y
32CONFIG_ARCH_HAS_DEFAULT_IDLE=y 33CONFIG_ARCH_HAS_DEFAULT_IDLE=y
33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 34CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
35CONFIG_DMA_NONCOHERENT=y
34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 36CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
35CONFIG_CONSTRUCTORS=y 37CONFIG_CONSTRUCTORS=y
36 38
@@ -63,6 +65,7 @@ CONFIG_BSD_PROCESS_ACCT=y
63# 65#
64CONFIG_TREE_RCU=y 66CONFIG_TREE_RCU=y
65# CONFIG_TREE_PREEMPT_RCU is not set 67# CONFIG_TREE_PREEMPT_RCU is not set
68# CONFIG_TINY_RCU is not set
66# CONFIG_RCU_TRACE is not set 69# CONFIG_RCU_TRACE is not set
67CONFIG_RCU_FANOUT=32 70CONFIG_RCU_FANOUT=32
68# CONFIG_RCU_FANOUT_EXACT is not set 71# CONFIG_RCU_FANOUT_EXACT is not set
@@ -103,12 +106,14 @@ CONFIG_EVENTFD=y
103CONFIG_SHMEM=y 106CONFIG_SHMEM=y
104CONFIG_AIO=y 107CONFIG_AIO=y
105CONFIG_HAVE_PERF_EVENTS=y 108CONFIG_HAVE_PERF_EVENTS=y
109CONFIG_PERF_USE_VMALLOC=y
106 110
107# 111#
108# Kernel Performance Events And Counters 112# Kernel Performance Events And Counters
109# 113#
110CONFIG_PERF_EVENTS=y 114CONFIG_PERF_EVENTS=y
111# CONFIG_PERF_COUNTERS is not set 115# CONFIG_PERF_COUNTERS is not set
116# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
112CONFIG_VM_EVENT_COUNTERS=y 117CONFIG_VM_EVENT_COUNTERS=y
113CONFIG_PCI_QUIRKS=y 118CONFIG_PCI_QUIRKS=y
114CONFIG_COMPAT_BRK=y 119CONFIG_COMPAT_BRK=y
@@ -123,6 +128,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
123CONFIG_HAVE_KPROBES=y 128CONFIG_HAVE_KPROBES=y
124CONFIG_HAVE_KRETPROBES=y 129CONFIG_HAVE_KRETPROBES=y
125CONFIG_HAVE_ARCH_TRACEHOOK=y 130CONFIG_HAVE_ARCH_TRACEHOOK=y
131CONFIG_HAVE_DMA_ATTRS=y
126CONFIG_HAVE_CLK=y 132CONFIG_HAVE_CLK=y
127CONFIG_HAVE_DMA_API_DEBUG=y 133CONFIG_HAVE_DMA_API_DEBUG=y
128 134
@@ -149,14 +155,41 @@ CONFIG_LBDAF=y
149# IO Schedulers 155# IO Schedulers
150# 156#
151CONFIG_IOSCHED_NOOP=y 157CONFIG_IOSCHED_NOOP=y
152CONFIG_IOSCHED_AS=y
153CONFIG_IOSCHED_DEADLINE=y 158CONFIG_IOSCHED_DEADLINE=y
154CONFIG_IOSCHED_CFQ=y 159CONFIG_IOSCHED_CFQ=y
155# CONFIG_DEFAULT_AS is not set
156# CONFIG_DEFAULT_DEADLINE is not set 160# CONFIG_DEFAULT_DEADLINE is not set
157CONFIG_DEFAULT_CFQ=y 161CONFIG_DEFAULT_CFQ=y
158# CONFIG_DEFAULT_NOOP is not set 162# CONFIG_DEFAULT_NOOP is not set
159CONFIG_DEFAULT_IOSCHED="cfq" 163CONFIG_DEFAULT_IOSCHED="cfq"
164# CONFIG_INLINE_SPIN_TRYLOCK is not set
165# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
166# CONFIG_INLINE_SPIN_LOCK is not set
167# CONFIG_INLINE_SPIN_LOCK_BH is not set
168# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
169# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
170# CONFIG_INLINE_SPIN_UNLOCK is not set
171# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
172# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
173# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
174# CONFIG_INLINE_READ_TRYLOCK is not set
175# CONFIG_INLINE_READ_LOCK is not set
176# CONFIG_INLINE_READ_LOCK_BH is not set
177# CONFIG_INLINE_READ_LOCK_IRQ is not set
178# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
179# CONFIG_INLINE_READ_UNLOCK is not set
180# CONFIG_INLINE_READ_UNLOCK_BH is not set
181# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
182# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
183# CONFIG_INLINE_WRITE_TRYLOCK is not set
184# CONFIG_INLINE_WRITE_LOCK is not set
185# CONFIG_INLINE_WRITE_LOCK_BH is not set
186# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
187# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
188# CONFIG_INLINE_WRITE_UNLOCK is not set
189# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
190# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
191# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
192# CONFIG_MUTEX_SPIN_ON_OWNER is not set
160# CONFIG_FREEZER is not set 193# CONFIG_FREEZER is not set
161 194
162# 195#
@@ -237,8 +270,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
237# CONFIG_PHYS_ADDR_T_64BIT is not set 270# CONFIG_PHYS_ADDR_T_64BIT is not set
238CONFIG_ZONE_DMA_FLAG=0 271CONFIG_ZONE_DMA_FLAG=0
239CONFIG_NR_QUICK=2 272CONFIG_NR_QUICK=2
240CONFIG_HAVE_MLOCK=y
241CONFIG_HAVE_MLOCKED_PAGE_BIT=y
242# CONFIG_KSM is not set 273# CONFIG_KSM is not set
243CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 274CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
244 275
@@ -271,7 +302,6 @@ CONFIG_SH_SH7785LCR_29BIT_PHYSMAPS=y
271# Timer and clock configuration 302# Timer and clock configuration
272# 303#
273CONFIG_SH_TIMER_TMU=y 304CONFIG_SH_TIMER_TMU=y
274CONFIG_SH_PCLK_FREQ=50000000
275CONFIG_SH_CLK_CPG=y 305CONFIG_SH_CLK_CPG=y
276CONFIG_TICK_ONESHOT=y 306CONFIG_TICK_ONESHOT=y
277# CONFIG_NO_HZ is not set 307# CONFIG_NO_HZ is not set
@@ -329,7 +359,6 @@ CONFIG_ENTRY_OFFSET=0x00001000
329# Bus options 359# Bus options
330# 360#
331CONFIG_PCI=y 361CONFIG_PCI=y
332CONFIG_SH_PCIDMA_NONCOHERENT=y
333# CONFIG_PCIEPORTBUS is not set 362# CONFIG_PCIEPORTBUS is not set
334# CONFIG_ARCH_SUPPORTS_MSI is not set 363# CONFIG_ARCH_SUPPORTS_MSI is not set
335CONFIG_PCI_LEGACY=y 364CONFIG_PCI_LEGACY=y
@@ -433,10 +462,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
433# CONFIG_AF_RXRPC is not set 462# CONFIG_AF_RXRPC is not set
434CONFIG_WIRELESS=y 463CONFIG_WIRELESS=y
435# CONFIG_CFG80211 is not set 464# CONFIG_CFG80211 is not set
436CONFIG_CFG80211_DEFAULT_PS_VALUE=0
437# CONFIG_WIRELESS_OLD_REGULATORY is not set
438CONFIG_WIRELESS_EXT=y
439CONFIG_WIRELESS_EXT_SYSFS=y
440# CONFIG_LIB80211 is not set 465# CONFIG_LIB80211 is not set
441 466
442# 467#
@@ -552,6 +577,10 @@ CONFIG_BLK_DEV=y
552# CONFIG_BLK_DEV_UMEM is not set 577# CONFIG_BLK_DEV_UMEM is not set
553# CONFIG_BLK_DEV_COW_COMMON is not set 578# CONFIG_BLK_DEV_COW_COMMON is not set
554# CONFIG_BLK_DEV_LOOP is not set 579# CONFIG_BLK_DEV_LOOP is not set
580
581#
582# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
583#
555# CONFIG_BLK_DEV_NBD is not set 584# CONFIG_BLK_DEV_NBD is not set
556# CONFIG_BLK_DEV_SX8 is not set 585# CONFIG_BLK_DEV_SX8 is not set
557# CONFIG_BLK_DEV_UB is not set 586# CONFIG_BLK_DEV_UB is not set
@@ -652,15 +681,16 @@ CONFIG_SATA_SIL=y
652# CONFIG_PATA_NS87415 is not set 681# CONFIG_PATA_NS87415 is not set
653# CONFIG_PATA_OPTI is not set 682# CONFIG_PATA_OPTI is not set
654# CONFIG_PATA_OPTIDMA is not set 683# CONFIG_PATA_OPTIDMA is not set
684# CONFIG_PATA_PDC2027X is not set
655# CONFIG_PATA_PDC_OLD is not set 685# CONFIG_PATA_PDC_OLD is not set
656# CONFIG_PATA_RADISYS is not set 686# CONFIG_PATA_RADISYS is not set
657# CONFIG_PATA_RDC is not set 687# CONFIG_PATA_RDC is not set
658# CONFIG_PATA_RZ1000 is not set 688# CONFIG_PATA_RZ1000 is not set
659# CONFIG_PATA_SC1200 is not set 689# CONFIG_PATA_SC1200 is not set
660# CONFIG_PATA_SERVERWORKS is not set 690# CONFIG_PATA_SERVERWORKS is not set
661# CONFIG_PATA_PDC2027X is not set
662# CONFIG_PATA_SIL680 is not set 691# CONFIG_PATA_SIL680 is not set
663# CONFIG_PATA_SIS is not set 692# CONFIG_PATA_SIS is not set
693# CONFIG_PATA_TOSHIBA is not set
664# CONFIG_PATA_VIA is not set 694# CONFIG_PATA_VIA is not set
665# CONFIG_PATA_WINBOND is not set 695# CONFIG_PATA_WINBOND is not set
666# CONFIG_PATA_PLATFORM is not set 696# CONFIG_PATA_PLATFORM is not set
@@ -719,8 +749,10 @@ CONFIG_R8169=y
719# CONFIG_NETDEV_10000 is not set 749# CONFIG_NETDEV_10000 is not set
720# CONFIG_TR is not set 750# CONFIG_TR is not set
721CONFIG_WLAN=y 751CONFIG_WLAN=y
722# CONFIG_WLAN_PRE80211 is not set 752# CONFIG_ATMEL is not set
723# CONFIG_WLAN_80211 is not set 753# CONFIG_PRISM54 is not set
754# CONFIG_USB_ZD1201 is not set
755# CONFIG_HOSTAP is not set
724 756
725# 757#
726# Enable WiMAX (Networking options) to see the WiMAX drivers 758# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -743,6 +775,7 @@ CONFIG_WLAN=y
743# CONFIG_NETCONSOLE is not set 775# CONFIG_NETCONSOLE is not set
744# CONFIG_NETPOLL is not set 776# CONFIG_NETPOLL is not set
745# CONFIG_NET_POLL_CONTROLLER is not set 777# CONFIG_NET_POLL_CONTROLLER is not set
778# CONFIG_VMXNET3 is not set
746# CONFIG_ISDN is not set 779# CONFIG_ISDN is not set
747# CONFIG_PHONE is not set 780# CONFIG_PHONE is not set
748 781
@@ -752,6 +785,7 @@ CONFIG_WLAN=y
752CONFIG_INPUT=y 785CONFIG_INPUT=y
753CONFIG_INPUT_FF_MEMLESS=m 786CONFIG_INPUT_FF_MEMLESS=m
754# CONFIG_INPUT_POLLDEV is not set 787# CONFIG_INPUT_POLLDEV is not set
788# CONFIG_INPUT_SPARSEKMAP is not set
755 789
756# 790#
757# Userland interfaces 791# Userland interfaces
@@ -874,11 +908,6 @@ CONFIG_I2C_ALGOPCA=y
874# CONFIG_I2C_TINY_USB is not set 908# CONFIG_I2C_TINY_USB is not set
875 909
876# 910#
877# Graphics adapter I2C/DDC channel drivers
878#
879# CONFIG_I2C_VOODOO3 is not set
880
881#
882# Other I2C/SMBus bus drivers 911# Other I2C/SMBus bus drivers
883# 912#
884CONFIG_I2C_PCA_PLATFORM=y 913CONFIG_I2C_PCA_PLATFORM=y
@@ -887,7 +916,6 @@ CONFIG_I2C_PCA_PLATFORM=y
887# 916#
888# Miscellaneous I2C Chip support 917# Miscellaneous I2C Chip support
889# 918#
890# CONFIG_DS1682 is not set
891# CONFIG_SENSORS_TSL2550 is not set 919# CONFIG_SENSORS_TSL2550 is not set
892# CONFIG_I2C_DEBUG_CORE is not set 920# CONFIG_I2C_DEBUG_CORE is not set
893# CONFIG_I2C_DEBUG_ALGO is not set 921# CONFIG_I2C_DEBUG_ALGO is not set
@@ -916,15 +944,18 @@ CONFIG_SSB_POSSIBLE=y
916# 944#
917# CONFIG_MFD_CORE is not set 945# CONFIG_MFD_CORE is not set
918CONFIG_MFD_SM501=y 946CONFIG_MFD_SM501=y
947# CONFIG_MFD_SH_MOBILE_SDHI is not set
919# CONFIG_HTC_PASIC3 is not set 948# CONFIG_HTC_PASIC3 is not set
920# CONFIG_TWL4030_CORE is not set 949# CONFIG_TWL4030_CORE is not set
921# CONFIG_MFD_TMIO is not set 950# CONFIG_MFD_TMIO is not set
922# CONFIG_PMIC_DA903X is not set 951# CONFIG_PMIC_DA903X is not set
952# CONFIG_PMIC_ADP5520 is not set
923# CONFIG_MFD_WM8400 is not set 953# CONFIG_MFD_WM8400 is not set
924# CONFIG_MFD_WM831X is not set 954# CONFIG_MFD_WM831X is not set
925# CONFIG_MFD_WM8350_I2C is not set 955# CONFIG_MFD_WM8350_I2C is not set
926# CONFIG_MFD_PCF50633 is not set 956# CONFIG_MFD_PCF50633 is not set
927# CONFIG_AB3100_CORE is not set 957# CONFIG_AB3100_CORE is not set
958# CONFIG_MFD_88PM8607 is not set
928# CONFIG_REGULATOR is not set 959# CONFIG_REGULATOR is not set
929# CONFIG_MEDIA_SUPPORT is not set 960# CONFIG_MEDIA_SUPPORT is not set
930 961
@@ -1205,6 +1236,7 @@ CONFIG_RTC_DRV_RS5C372=y
1205# CONFIG_RTC_DRV_PCF8563 is not set 1236# CONFIG_RTC_DRV_PCF8563 is not set
1206# CONFIG_RTC_DRV_PCF8583 is not set 1237# CONFIG_RTC_DRV_PCF8583 is not set
1207# CONFIG_RTC_DRV_M41T80 is not set 1238# CONFIG_RTC_DRV_M41T80 is not set
1239# CONFIG_RTC_DRV_BQ32K is not set
1208# CONFIG_RTC_DRV_S35390A is not set 1240# CONFIG_RTC_DRV_S35390A is not set
1209# CONFIG_RTC_DRV_FM3130 is not set 1241# CONFIG_RTC_DRV_FM3130 is not set
1210# CONFIG_RTC_DRV_RX8581 is not set 1242# CONFIG_RTC_DRV_RX8581 is not set
@@ -1225,7 +1257,9 @@ CONFIG_RTC_DRV_RS5C372=y
1225# CONFIG_RTC_DRV_M48T86 is not set 1257# CONFIG_RTC_DRV_M48T86 is not set
1226# CONFIG_RTC_DRV_M48T35 is not set 1258# CONFIG_RTC_DRV_M48T35 is not set
1227# CONFIG_RTC_DRV_M48T59 is not set 1259# CONFIG_RTC_DRV_M48T59 is not set
1260# CONFIG_RTC_DRV_MSM6242 is not set
1228# CONFIG_RTC_DRV_BQ4802 is not set 1261# CONFIG_RTC_DRV_BQ4802 is not set
1262# CONFIG_RTC_DRV_RP5C01 is not set
1229# CONFIG_RTC_DRV_V3020 is not set 1263# CONFIG_RTC_DRV_V3020 is not set
1230 1264
1231# 1265#
@@ -1484,7 +1518,6 @@ CONFIG_BRANCH_PROFILE_NONE=y
1484CONFIG_HAVE_ARCH_KGDB=y 1518CONFIG_HAVE_ARCH_KGDB=y
1485# CONFIG_KGDB is not set 1519# CONFIG_KGDB is not set
1486# CONFIG_SH_STANDARD_BIOS is not set 1520# CONFIG_SH_STANDARD_BIOS is not set
1487# CONFIG_EARLY_SCIF_CONSOLE is not set
1488# CONFIG_STACK_DEBUG is not set 1521# CONFIG_STACK_DEBUG is not set
1489# CONFIG_DEBUG_STACK_USAGE is not set 1522# CONFIG_DEBUG_STACK_USAGE is not set
1490# CONFIG_4KSTACKS is not set 1523# CONFIG_4KSTACKS is not set
@@ -1498,7 +1531,11 @@ CONFIG_HAVE_ARCH_KGDB=y
1498# CONFIG_KEYS is not set 1531# CONFIG_KEYS is not set
1499# CONFIG_SECURITY is not set 1532# CONFIG_SECURITY is not set
1500# CONFIG_SECURITYFS is not set 1533# CONFIG_SECURITYFS is not set
1501# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1534# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1535# CONFIG_DEFAULT_SECURITY_SMACK is not set
1536# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1537CONFIG_DEFAULT_SECURITY_DAC=y
1538CONFIG_DEFAULT_SECURITY=""
1502CONFIG_CRYPTO=y 1539CONFIG_CRYPTO=y
1503 1540
1504# 1541#
diff --git a/arch/sh/configs/shmin_defconfig b/arch/sh/configs/shmin_defconfig
index 92115e612750..45441c0ab30c 100644
--- a/arch/sh/configs/shmin_defconfig
+++ b/arch/sh/configs/shmin_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 19:27:17 2009 4# Mon Jan 4 15:10:09 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -28,6 +28,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
28CONFIG_ARCH_NO_VIRT_TO_BUS=y 28CONFIG_ARCH_NO_VIRT_TO_BUS=y
29CONFIG_ARCH_HAS_DEFAULT_IDLE=y 29CONFIG_ARCH_HAS_DEFAULT_IDLE=y
30CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 30CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
31CONFIG_DMA_NONCOHERENT=y
31CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 32CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
32CONFIG_CONSTRUCTORS=y 33CONFIG_CONSTRUCTORS=y
33 34
@@ -57,6 +58,7 @@ CONFIG_KERNEL_GZIP=y
57# 58#
58CONFIG_TREE_RCU=y 59CONFIG_TREE_RCU=y
59# CONFIG_TREE_PREEMPT_RCU is not set 60# CONFIG_TREE_PREEMPT_RCU is not set
61# CONFIG_TINY_RCU is not set
60# CONFIG_RCU_TRACE is not set 62# CONFIG_RCU_TRACE is not set
61CONFIG_RCU_FANOUT=32 63CONFIG_RCU_FANOUT=32
62# CONFIG_RCU_FANOUT_EXACT is not set 64# CONFIG_RCU_FANOUT_EXACT is not set
@@ -88,6 +90,7 @@ CONFIG_EVENTFD=y
88# CONFIG_SHMEM is not set 90# CONFIG_SHMEM is not set
89CONFIG_AIO=y 91CONFIG_AIO=y
90CONFIG_HAVE_PERF_EVENTS=y 92CONFIG_HAVE_PERF_EVENTS=y
93CONFIG_PERF_USE_VMALLOC=y
91 94
92# 95#
93# Kernel Performance Events And Counters 96# Kernel Performance Events And Counters
@@ -105,6 +108,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
105CONFIG_HAVE_KPROBES=y 108CONFIG_HAVE_KPROBES=y
106CONFIG_HAVE_KRETPROBES=y 109CONFIG_HAVE_KRETPROBES=y
107CONFIG_HAVE_ARCH_TRACEHOOK=y 110CONFIG_HAVE_ARCH_TRACEHOOK=y
111CONFIG_HAVE_DMA_ATTRS=y
108CONFIG_HAVE_CLK=y 112CONFIG_HAVE_CLK=y
109CONFIG_HAVE_DMA_API_DEBUG=y 113CONFIG_HAVE_DMA_API_DEBUG=y
110 114
@@ -124,14 +128,41 @@ CONFIG_LBDAF=y
124# IO Schedulers 128# IO Schedulers
125# 129#
126CONFIG_IOSCHED_NOOP=y 130CONFIG_IOSCHED_NOOP=y
127# CONFIG_IOSCHED_AS is not set
128# CONFIG_IOSCHED_DEADLINE is not set 131# CONFIG_IOSCHED_DEADLINE is not set
129# CONFIG_IOSCHED_CFQ is not set 132# CONFIG_IOSCHED_CFQ is not set
130# CONFIG_DEFAULT_AS is not set
131# CONFIG_DEFAULT_DEADLINE is not set 133# CONFIG_DEFAULT_DEADLINE is not set
132# CONFIG_DEFAULT_CFQ is not set 134# CONFIG_DEFAULT_CFQ is not set
133CONFIG_DEFAULT_NOOP=y 135CONFIG_DEFAULT_NOOP=y
134CONFIG_DEFAULT_IOSCHED="noop" 136CONFIG_DEFAULT_IOSCHED="noop"
137# CONFIG_INLINE_SPIN_TRYLOCK is not set
138# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
139# CONFIG_INLINE_SPIN_LOCK is not set
140# CONFIG_INLINE_SPIN_LOCK_BH is not set
141# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
142# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
143CONFIG_INLINE_SPIN_UNLOCK=y
144# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
145CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
146# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
147# CONFIG_INLINE_READ_TRYLOCK is not set
148# CONFIG_INLINE_READ_LOCK is not set
149# CONFIG_INLINE_READ_LOCK_BH is not set
150# CONFIG_INLINE_READ_LOCK_IRQ is not set
151# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
152CONFIG_INLINE_READ_UNLOCK=y
153# CONFIG_INLINE_READ_UNLOCK_BH is not set
154CONFIG_INLINE_READ_UNLOCK_IRQ=y
155# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
156# CONFIG_INLINE_WRITE_TRYLOCK is not set
157# CONFIG_INLINE_WRITE_LOCK is not set
158# CONFIG_INLINE_WRITE_LOCK_BH is not set
159# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
160# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
161CONFIG_INLINE_WRITE_UNLOCK=y
162# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
163CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
164# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
165# CONFIG_MUTEX_SPIN_ON_OWNER is not set
135# CONFIG_FREEZER is not set 166# CONFIG_FREEZER is not set
136 167
137# 168#
@@ -207,8 +238,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
207# CONFIG_PHYS_ADDR_T_64BIT is not set 238# CONFIG_PHYS_ADDR_T_64BIT is not set
208CONFIG_ZONE_DMA_FLAG=0 239CONFIG_ZONE_DMA_FLAG=0
209CONFIG_NR_QUICK=2 240CONFIG_NR_QUICK=2
210CONFIG_HAVE_MLOCK=y
211CONFIG_HAVE_MLOCKED_PAGE_BIT=y
212# CONFIG_KSM is not set 241# CONFIG_KSM is not set
213CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 242CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
214 243
@@ -387,9 +416,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
387# CONFIG_AF_RXRPC is not set 416# CONFIG_AF_RXRPC is not set
388CONFIG_WIRELESS=y 417CONFIG_WIRELESS=y
389# CONFIG_CFG80211 is not set 418# CONFIG_CFG80211 is not set
390CONFIG_CFG80211_DEFAULT_PS_VALUE=0
391# CONFIG_WIRELESS_OLD_REGULATORY is not set
392# CONFIG_WIRELESS_EXT is not set
393# CONFIG_LIB80211 is not set 419# CONFIG_LIB80211 is not set
394 420
395# 421#
@@ -495,6 +521,10 @@ CONFIG_BLK_DEV=y
495# CONFIG_BLK_DEV_COW_COMMON is not set 521# CONFIG_BLK_DEV_COW_COMMON is not set
496CONFIG_BLK_DEV_LOOP=y 522CONFIG_BLK_DEV_LOOP=y
497# CONFIG_BLK_DEV_CRYPTOLOOP is not set 523# CONFIG_BLK_DEV_CRYPTOLOOP is not set
524
525#
526# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
527#
498# CONFIG_BLK_DEV_NBD is not set 528# CONFIG_BLK_DEV_NBD is not set
499# CONFIG_BLK_DEV_RAM is not set 529# CONFIG_BLK_DEV_RAM is not set
500# CONFIG_CDROM_PKTCDVD is not set 530# CONFIG_CDROM_PKTCDVD is not set
@@ -546,11 +576,11 @@ CONFIG_NET_ETHERNET=y
546# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 576# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
547# CONFIG_B44 is not set 577# CONFIG_B44 is not set
548# CONFIG_KS8842 is not set 578# CONFIG_KS8842 is not set
579# CONFIG_KS8851_MLL is not set
549CONFIG_NETDEV_1000=y 580CONFIG_NETDEV_1000=y
550CONFIG_NETDEV_10000=y 581CONFIG_NETDEV_10000=y
551CONFIG_WLAN=y 582CONFIG_WLAN=y
552# CONFIG_WLAN_PRE80211 is not set 583# CONFIG_HOSTAP is not set
553# CONFIG_WLAN_80211 is not set
554 584
555# 585#
556# Enable WiMAX (Networking options) to see the WiMAX drivers 586# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -629,6 +659,7 @@ CONFIG_SSB_POSSIBLE=y
629# 659#
630# CONFIG_MFD_CORE is not set 660# CONFIG_MFD_CORE is not set
631# CONFIG_MFD_SM501 is not set 661# CONFIG_MFD_SM501 is not set
662# CONFIG_MFD_SH_MOBILE_SDHI is not set
632# CONFIG_HTC_PASIC3 is not set 663# CONFIG_HTC_PASIC3 is not set
633# CONFIG_MFD_TMIO is not set 664# CONFIG_MFD_TMIO is not set
634# CONFIG_REGULATOR is not set 665# CONFIG_REGULATOR is not set
@@ -688,6 +719,7 @@ CONFIG_RTC_LIB=y
688# CONFIG_EXT2_FS is not set 719# CONFIG_EXT2_FS is not set
689# CONFIG_EXT3_FS is not set 720# CONFIG_EXT3_FS is not set
690# CONFIG_EXT4_FS is not set 721# CONFIG_EXT4_FS is not set
722CONFIG_EXT4_USE_FOR_EXT23=y
691# CONFIG_REISERFS_FS is not set 723# CONFIG_REISERFS_FS is not set
692# CONFIG_JFS_FS is not set 724# CONFIG_JFS_FS is not set
693# CONFIG_FS_POSIX_ACL is not set 725# CONFIG_FS_POSIX_ACL is not set
@@ -731,7 +763,6 @@ CONFIG_PROC_FS=y
731CONFIG_PROC_SYSCTL=y 763CONFIG_PROC_SYSCTL=y
732CONFIG_PROC_PAGE_MONITOR=y 764CONFIG_PROC_PAGE_MONITOR=y
733# CONFIG_SYSFS is not set 765# CONFIG_SYSFS is not set
734# CONFIG_HUGETLBFS is not set
735# CONFIG_HUGETLB_PAGE is not set 766# CONFIG_HUGETLB_PAGE is not set
736CONFIG_MISC_FILESYSTEMS=y 767CONFIG_MISC_FILESYSTEMS=y
737# CONFIG_ADFS_FS is not set 768# CONFIG_ADFS_FS is not set
@@ -794,6 +825,7 @@ CONFIG_FRAME_WARN=1024
794# CONFIG_DEBUG_MEMORY_INIT is not set 825# CONFIG_DEBUG_MEMORY_INIT is not set
795# CONFIG_RCU_CPU_STALL_DETECTOR is not set 826# CONFIG_RCU_CPU_STALL_DETECTOR is not set
796# CONFIG_LATENCYTOP is not set 827# CONFIG_LATENCYTOP is not set
828# CONFIG_SYSCTL_SYSCALL_CHECK is not set
797CONFIG_HAVE_FUNCTION_TRACER=y 829CONFIG_HAVE_FUNCTION_TRACER=y
798CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 830CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
799CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 831CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
@@ -806,8 +838,6 @@ CONFIG_TRACING_SUPPORT=y
806# CONFIG_SAMPLES is not set 838# CONFIG_SAMPLES is not set
807CONFIG_HAVE_ARCH_KGDB=y 839CONFIG_HAVE_ARCH_KGDB=y
808CONFIG_SH_STANDARD_BIOS=y 840CONFIG_SH_STANDARD_BIOS=y
809# CONFIG_EARLY_SCIF_CONSOLE is not set
810CONFIG_EARLY_PRINTK=y
811# CONFIG_DWARF_UNWINDER is not set 841# CONFIG_DWARF_UNWINDER is not set
812 842
813# 843#
@@ -815,7 +845,11 @@ CONFIG_EARLY_PRINTK=y
815# 845#
816# CONFIG_KEYS is not set 846# CONFIG_KEYS is not set
817# CONFIG_SECURITYFS is not set 847# CONFIG_SECURITYFS is not set
818# CONFIG_SECURITY_FILE_CAPABILITIES is not set 848# CONFIG_DEFAULT_SECURITY_SELINUX is not set
849# CONFIG_DEFAULT_SECURITY_SMACK is not set
850# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
851CONFIG_DEFAULT_SECURITY_DAC=y
852CONFIG_DEFAULT_SECURITY=""
819CONFIG_CRYPTO=y 853CONFIG_CRYPTO=y
820 854
821# 855#
diff --git a/arch/sh/configs/shx3_defconfig b/arch/sh/configs/shx3_defconfig
index e3858d757d5e..ecf50cda4cbc 100644
--- a/arch/sh/configs/shx3_defconfig
+++ b/arch/sh/configs/shx3_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 19:29:26 2009 4# Mon Jan 4 15:10:45 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -22,6 +22,7 @@ CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
22CONFIG_GENERIC_LOCKBREAK=y 22CONFIG_GENERIC_LOCKBREAK=y
23# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 23# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
24CONFIG_ARCH_HIBERNATION_POSSIBLE=y 24CONFIG_ARCH_HIBERNATION_POSSIBLE=y
25CONFIG_SYS_SUPPORTS_HUGETLBFS=y
25CONFIG_SYS_SUPPORTS_SMP=y 26CONFIG_SYS_SUPPORTS_SMP=y
26CONFIG_SYS_SUPPORTS_NUMA=y 27CONFIG_SYS_SUPPORTS_NUMA=y
27CONFIG_SYS_SUPPORTS_TMU=y 28CONFIG_SYS_SUPPORTS_TMU=y
@@ -32,6 +33,8 @@ CONFIG_LOCKDEP_SUPPORT=y
32CONFIG_ARCH_NO_VIRT_TO_BUS=y 33CONFIG_ARCH_NO_VIRT_TO_BUS=y
33CONFIG_ARCH_HAS_DEFAULT_IDLE=y 34CONFIG_ARCH_HAS_DEFAULT_IDLE=y
34CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 35CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
36CONFIG_DMA_COHERENT=y
37# CONFIG_DMA_NONCOHERENT is not set
35CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 38CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
36CONFIG_CONSTRUCTORS=y 39CONFIG_CONSTRUCTORS=y
37 40
@@ -66,6 +69,7 @@ CONFIG_AUDIT_TREE=y
66# 69#
67CONFIG_TREE_RCU=y 70CONFIG_TREE_RCU=y
68# CONFIG_TREE_PREEMPT_RCU is not set 71# CONFIG_TREE_PREEMPT_RCU is not set
72# CONFIG_TINY_RCU is not set
69CONFIG_RCU_TRACE=y 73CONFIG_RCU_TRACE=y
70CONFIG_RCU_FANOUT=32 74CONFIG_RCU_FANOUT=32
71# CONFIG_RCU_FANOUT_EXACT is not set 75# CONFIG_RCU_FANOUT_EXACT is not set
@@ -121,6 +125,7 @@ CONFIG_EVENTFD=y
121CONFIG_SHMEM=y 125CONFIG_SHMEM=y
122CONFIG_AIO=y 126CONFIG_AIO=y
123CONFIG_HAVE_PERF_EVENTS=y 127CONFIG_HAVE_PERF_EVENTS=y
128CONFIG_PERF_USE_VMALLOC=y
124 129
125# 130#
126# Kernel Performance Events And Counters 131# Kernel Performance Events And Counters
@@ -128,6 +133,7 @@ CONFIG_HAVE_PERF_EVENTS=y
128CONFIG_PERF_EVENTS=y 133CONFIG_PERF_EVENTS=y
129CONFIG_EVENT_PROFILE=y 134CONFIG_EVENT_PROFILE=y
130# CONFIG_PERF_COUNTERS is not set 135# CONFIG_PERF_COUNTERS is not set
136# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
131CONFIG_VM_EVENT_COUNTERS=y 137CONFIG_VM_EVENT_COUNTERS=y
132CONFIG_COMPAT_BRK=y 138CONFIG_COMPAT_BRK=y
133# CONFIG_SLAB is not set 139# CONFIG_SLAB is not set
@@ -143,6 +149,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
143CONFIG_HAVE_KPROBES=y 149CONFIG_HAVE_KPROBES=y
144CONFIG_HAVE_KRETPROBES=y 150CONFIG_HAVE_KRETPROBES=y
145CONFIG_HAVE_ARCH_TRACEHOOK=y 151CONFIG_HAVE_ARCH_TRACEHOOK=y
152CONFIG_HAVE_DMA_ATTRS=y
146CONFIG_USE_GENERIC_SMP_HELPERS=y 153CONFIG_USE_GENERIC_SMP_HELPERS=y
147CONFIG_HAVE_CLK=y 154CONFIG_HAVE_CLK=y
148CONFIG_HAVE_DMA_API_DEBUG=y 155CONFIG_HAVE_DMA_API_DEBUG=y
@@ -166,19 +173,48 @@ CONFIG_BLOCK=y
166CONFIG_LBDAF=y 173CONFIG_LBDAF=y
167# CONFIG_BLK_DEV_BSG is not set 174# CONFIG_BLK_DEV_BSG is not set
168# CONFIG_BLK_DEV_INTEGRITY is not set 175# CONFIG_BLK_DEV_INTEGRITY is not set
176# CONFIG_BLK_CGROUP is not set
169 177
170# 178#
171# IO Schedulers 179# IO Schedulers
172# 180#
173CONFIG_IOSCHED_NOOP=y 181CONFIG_IOSCHED_NOOP=y
174CONFIG_IOSCHED_AS=y
175CONFIG_IOSCHED_DEADLINE=y 182CONFIG_IOSCHED_DEADLINE=y
176CONFIG_IOSCHED_CFQ=y 183CONFIG_IOSCHED_CFQ=y
177CONFIG_DEFAULT_AS=y 184# CONFIG_CFQ_GROUP_IOSCHED is not set
178# CONFIG_DEFAULT_DEADLINE is not set 185# CONFIG_DEFAULT_DEADLINE is not set
179# CONFIG_DEFAULT_CFQ is not set 186CONFIG_DEFAULT_CFQ=y
180# CONFIG_DEFAULT_NOOP is not set 187# CONFIG_DEFAULT_NOOP is not set
181CONFIG_DEFAULT_IOSCHED="anticipatory" 188CONFIG_DEFAULT_IOSCHED="cfq"
189# CONFIG_INLINE_SPIN_TRYLOCK is not set
190# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
191# CONFIG_INLINE_SPIN_LOCK is not set
192# CONFIG_INLINE_SPIN_LOCK_BH is not set
193# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
194# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
195# CONFIG_INLINE_SPIN_UNLOCK is not set
196# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
197# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
198# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
199# CONFIG_INLINE_READ_TRYLOCK is not set
200# CONFIG_INLINE_READ_LOCK is not set
201# CONFIG_INLINE_READ_LOCK_BH is not set
202# CONFIG_INLINE_READ_LOCK_IRQ is not set
203# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
204# CONFIG_INLINE_READ_UNLOCK is not set
205# CONFIG_INLINE_READ_UNLOCK_BH is not set
206# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
207# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
208# CONFIG_INLINE_WRITE_TRYLOCK is not set
209# CONFIG_INLINE_WRITE_LOCK is not set
210# CONFIG_INLINE_WRITE_LOCK_BH is not set
211# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
212# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
213# CONFIG_INLINE_WRITE_UNLOCK is not set
214# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
215# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
216# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
217CONFIG_MUTEX_SPIN_ON_OWNER=y
182CONFIG_FREEZER=y 218CONFIG_FREEZER=y
183 219
184# 220#
@@ -233,6 +269,7 @@ CONFIG_FORCE_MAX_ZONEORDER=7
233CONFIG_MEMORY_START=0x0c000000 269CONFIG_MEMORY_START=0x0c000000
234CONFIG_MEMORY_SIZE=0x04000000 270CONFIG_MEMORY_SIZE=0x04000000
235CONFIG_29BIT=y 271CONFIG_29BIT=y
272# CONFIG_PMB_ENABLE is not set
236# CONFIG_X2TLB is not set 273# CONFIG_X2TLB is not set
237CONFIG_VSYSCALL=y 274CONFIG_VSYSCALL=y
238CONFIG_NUMA=y 275CONFIG_NUMA=y
@@ -271,10 +308,9 @@ CONFIG_MIGRATION=y
271# CONFIG_PHYS_ADDR_T_64BIT is not set 308# CONFIG_PHYS_ADDR_T_64BIT is not set
272CONFIG_ZONE_DMA_FLAG=0 309CONFIG_ZONE_DMA_FLAG=0
273CONFIG_NR_QUICK=2 310CONFIG_NR_QUICK=2
274CONFIG_HAVE_MLOCK=y
275CONFIG_HAVE_MLOCKED_PAGE_BIT=y
276# CONFIG_KSM is not set 311# CONFIG_KSM is not set
277CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 312CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
313CONFIG_SCHED_MC=y
278 314
279# 315#
280# Cache configuration 316# Cache configuration
@@ -449,6 +485,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m
449CONFIG_INET6_XFRM_MODE_BEET=m 485CONFIG_INET6_XFRM_MODE_BEET=m
450# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 486# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
451CONFIG_IPV6_SIT=m 487CONFIG_IPV6_SIT=m
488# CONFIG_IPV6_SIT_6RD is not set
452CONFIG_IPV6_NDISC_NODETYPE=y 489CONFIG_IPV6_NDISC_NODETYPE=y
453# CONFIG_IPV6_TUNNEL is not set 490# CONFIG_IPV6_TUNNEL is not set
454# CONFIG_IPV6_MULTIPLE_TABLES is not set 491# CONFIG_IPV6_MULTIPLE_TABLES is not set
@@ -496,7 +533,13 @@ CONFIG_CAN_VCAN=m
496# CONFIG_IRDA is not set 533# CONFIG_IRDA is not set
497# CONFIG_BT is not set 534# CONFIG_BT is not set
498# CONFIG_AF_RXRPC is not set 535# CONFIG_AF_RXRPC is not set
499# CONFIG_WIRELESS is not set 536CONFIG_WIRELESS=y
537# CONFIG_CFG80211 is not set
538# CONFIG_LIB80211 is not set
539
540#
541# CFG80211 needs to be enabled for MAC80211
542#
500# CONFIG_WIMAX is not set 543# CONFIG_WIMAX is not set
501# CONFIG_RFKILL is not set 544# CONFIG_RFKILL is not set
502# CONFIG_NET_9P is not set 545# CONFIG_NET_9P is not set
@@ -522,6 +565,10 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
522CONFIG_BLK_DEV=y 565CONFIG_BLK_DEV=y
523# CONFIG_BLK_DEV_COW_COMMON is not set 566# CONFIG_BLK_DEV_COW_COMMON is not set
524# CONFIG_BLK_DEV_LOOP is not set 567# CONFIG_BLK_DEV_LOOP is not set
568
569#
570# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
571#
525# CONFIG_BLK_DEV_NBD is not set 572# CONFIG_BLK_DEV_NBD is not set
526# CONFIG_BLK_DEV_UB is not set 573# CONFIG_BLK_DEV_UB is not set
527CONFIG_BLK_DEV_RAM=y 574CONFIG_BLK_DEV_RAM=y
@@ -532,9 +579,12 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
532# CONFIG_ATA_OVER_ETH is not set 579# CONFIG_ATA_OVER_ETH is not set
533# CONFIG_BLK_DEV_HD is not set 580# CONFIG_BLK_DEV_HD is not set
534CONFIG_MISC_DEVICES=y 581CONFIG_MISC_DEVICES=y
582# CONFIG_AD525X_DPOT is not set
535# CONFIG_ICS932S401 is not set 583# CONFIG_ICS932S401 is not set
536# CONFIG_ENCLOSURE_SERVICES is not set 584# CONFIG_ENCLOSURE_SERVICES is not set
537# CONFIG_ISL29003 is not set 585# CONFIG_ISL29003 is not set
586# CONFIG_DS1682 is not set
587# CONFIG_TI_DAC7512 is not set
538# CONFIG_C2PORT is not set 588# CONFIG_C2PORT is not set
539 589
540# 590#
@@ -624,11 +674,12 @@ CONFIG_SMC91X=y
624# CONFIG_B44 is not set 674# CONFIG_B44 is not set
625# CONFIG_KS8842 is not set 675# CONFIG_KS8842 is not set
626# CONFIG_KS8851 is not set 676# CONFIG_KS8851 is not set
677# CONFIG_KS8851_MLL is not set
627# CONFIG_NETDEV_1000 is not set 678# CONFIG_NETDEV_1000 is not set
628# CONFIG_NETDEV_10000 is not set 679# CONFIG_NETDEV_10000 is not set
629CONFIG_WLAN=y 680CONFIG_WLAN=y
630# CONFIG_WLAN_PRE80211 is not set 681# CONFIG_USB_ZD1201 is not set
631# CONFIG_WLAN_80211 is not set 682# CONFIG_HOSTAP is not set
632 683
633# 684#
634# Enable WiMAX (Networking options) to see the WiMAX drivers 685# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -726,7 +777,6 @@ CONFIG_I2C_HELPER_AUTO=y
726# 777#
727# Miscellaneous I2C Chip support 778# Miscellaneous I2C Chip support
728# 779#
729# CONFIG_DS1682 is not set
730# CONFIG_SENSORS_TSL2550 is not set 780# CONFIG_SENSORS_TSL2550 is not set
731# CONFIG_I2C_DEBUG_CORE is not set 781# CONFIG_I2C_DEBUG_CORE is not set
732# CONFIG_I2C_DEBUG_ALGO is not set 782# CONFIG_I2C_DEBUG_ALGO is not set
@@ -740,7 +790,10 @@ CONFIG_SPI_MASTER=y
740# SPI Master Controller Drivers 790# SPI Master Controller Drivers
741# 791#
742# CONFIG_SPI_BITBANG is not set 792# CONFIG_SPI_BITBANG is not set
793# CONFIG_SPI_SH_MSIOF is not set
743# CONFIG_SPI_SH_SCI is not set 794# CONFIG_SPI_SH_SCI is not set
795# CONFIG_SPI_XILINX is not set
796# CONFIG_SPI_DESIGNWARE is not set
744 797
745# 798#
746# SPI Protocol Masters 799# SPI Protocol Masters
@@ -781,15 +834,16 @@ CONFIG_SSB_POSSIBLE=y
781# 834#
782# CONFIG_MFD_CORE is not set 835# CONFIG_MFD_CORE is not set
783# CONFIG_MFD_SM501 is not set 836# CONFIG_MFD_SM501 is not set
837# CONFIG_MFD_SH_MOBILE_SDHI is not set
784# CONFIG_HTC_PASIC3 is not set 838# CONFIG_HTC_PASIC3 is not set
785# CONFIG_MFD_TMIO is not set 839# CONFIG_MFD_TMIO is not set
786# CONFIG_MFD_WM8400 is not set 840# CONFIG_MFD_WM8400 is not set
787# CONFIG_MFD_WM831X is not set
788# CONFIG_MFD_WM8350_I2C is not set 841# CONFIG_MFD_WM8350_I2C is not set
789# CONFIG_MFD_PCF50633 is not set 842# CONFIG_MFD_PCF50633 is not set
790# CONFIG_MFD_MC13783 is not set 843# CONFIG_MFD_MC13783 is not set
791# CONFIG_AB3100_CORE is not set 844# CONFIG_AB3100_CORE is not set
792# CONFIG_EZX_PCAP is not set 845# CONFIG_EZX_PCAP is not set
846# CONFIG_AB4500_CORE is not set
793# CONFIG_REGULATOR is not set 847# CONFIG_REGULATOR is not set
794# CONFIG_MEDIA_SUPPORT is not set 848# CONFIG_MEDIA_SUPPORT is not set
795 849
@@ -924,10 +978,12 @@ CONFIG_USB_GADGET_DUALSPEED=y
924# CONFIG_USB_ETH is not set 978# CONFIG_USB_ETH is not set
925# CONFIG_USB_GADGETFS is not set 979# CONFIG_USB_GADGETFS is not set
926# CONFIG_USB_FILE_STORAGE is not set 980# CONFIG_USB_FILE_STORAGE is not set
981# CONFIG_USB_MASS_STORAGE is not set
927# CONFIG_USB_G_SERIAL is not set 982# CONFIG_USB_G_SERIAL is not set
928# CONFIG_USB_MIDI_GADGET is not set 983# CONFIG_USB_MIDI_GADGET is not set
929# CONFIG_USB_G_PRINTER is not set 984# CONFIG_USB_G_PRINTER is not set
930# CONFIG_USB_CDC_COMPOSITE is not set 985# CONFIG_USB_CDC_COMPOSITE is not set
986# CONFIG_USB_G_MULTI is not set
931 987
932# 988#
933# OTG and related infrastructure 989# OTG and related infrastructure
@@ -965,6 +1021,7 @@ CONFIG_RTC_INTF_DEV=y
965# CONFIG_RTC_DRV_PCF8563 is not set 1021# CONFIG_RTC_DRV_PCF8563 is not set
966# CONFIG_RTC_DRV_PCF8583 is not set 1022# CONFIG_RTC_DRV_PCF8583 is not set
967# CONFIG_RTC_DRV_M41T80 is not set 1023# CONFIG_RTC_DRV_M41T80 is not set
1024# CONFIG_RTC_DRV_BQ32K is not set
968# CONFIG_RTC_DRV_S35390A is not set 1025# CONFIG_RTC_DRV_S35390A is not set
969# CONFIG_RTC_DRV_FM3130 is not set 1026# CONFIG_RTC_DRV_FM3130 is not set
970# CONFIG_RTC_DRV_RX8581 is not set 1027# CONFIG_RTC_DRV_RX8581 is not set
@@ -993,7 +1050,9 @@ CONFIG_RTC_INTF_DEV=y
993# CONFIG_RTC_DRV_M48T86 is not set 1050# CONFIG_RTC_DRV_M48T86 is not set
994# CONFIG_RTC_DRV_M48T35 is not set 1051# CONFIG_RTC_DRV_M48T35 is not set
995# CONFIG_RTC_DRV_M48T59 is not set 1052# CONFIG_RTC_DRV_M48T59 is not set
1053# CONFIG_RTC_DRV_MSM6242 is not set
996# CONFIG_RTC_DRV_BQ4802 is not set 1054# CONFIG_RTC_DRV_BQ4802 is not set
1055# CONFIG_RTC_DRV_RP5C01 is not set
997# CONFIG_RTC_DRV_V3020 is not set 1056# CONFIG_RTC_DRV_V3020 is not set
998 1057
999# 1058#
@@ -1244,8 +1303,6 @@ CONFIG_BRANCH_PROFILE_NONE=y
1244CONFIG_HAVE_ARCH_KGDB=y 1303CONFIG_HAVE_ARCH_KGDB=y
1245# CONFIG_KGDB is not set 1304# CONFIG_KGDB is not set
1246CONFIG_SH_STANDARD_BIOS=y 1305CONFIG_SH_STANDARD_BIOS=y
1247# CONFIG_EARLY_SCIF_CONSOLE is not set
1248CONFIG_EARLY_PRINTK=y
1249# CONFIG_STACK_DEBUG is not set 1306# CONFIG_STACK_DEBUG is not set
1250CONFIG_DEBUG_STACK_USAGE=y 1307CONFIG_DEBUG_STACK_USAGE=y
1251CONFIG_DUMP_CODE=y 1308CONFIG_DUMP_CODE=y
@@ -1258,7 +1315,11 @@ CONFIG_DUMP_CODE=y
1258# CONFIG_KEYS is not set 1315# CONFIG_KEYS is not set
1259# CONFIG_SECURITY is not set 1316# CONFIG_SECURITY is not set
1260# CONFIG_SECURITYFS is not set 1317# CONFIG_SECURITYFS is not set
1261# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1318# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1319# CONFIG_DEFAULT_SECURITY_SMACK is not set
1320# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1321CONFIG_DEFAULT_SECURITY_DAC=y
1322CONFIG_DEFAULT_SECURITY=""
1262CONFIG_CRYPTO=y 1323CONFIG_CRYPTO=y
1263 1324
1264# 1325#
diff --git a/arch/sh/configs/snapgear_defconfig b/arch/sh/configs/snapgear_defconfig
index cb919a0de4b2..98352d757851 100644
--- a/arch/sh/configs/snapgear_defconfig
+++ b/arch/sh/configs/snapgear_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 19:33:00 2009 4# Mon Jan 4 15:14:18 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_PCI=y 24CONFIG_SYS_SUPPORTS_PCI=y
24CONFIG_SYS_SUPPORTS_TMU=y 25CONFIG_SYS_SUPPORTS_TMU=y
25CONFIG_STACKTRACE_SUPPORT=y 26CONFIG_STACKTRACE_SUPPORT=y
@@ -30,6 +31,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
30CONFIG_ARCH_NO_VIRT_TO_BUS=y 31CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 32CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
34CONFIG_DMA_NONCOHERENT=y
33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 35CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
34CONFIG_CONSTRUCTORS=y 36CONFIG_CONSTRUCTORS=y
35 37
@@ -59,6 +61,7 @@ CONFIG_KERNEL_GZIP=y
59# 61#
60CONFIG_TREE_RCU=y 62CONFIG_TREE_RCU=y
61# CONFIG_TREE_PREEMPT_RCU is not set 63# CONFIG_TREE_PREEMPT_RCU is not set
64# CONFIG_TINY_RCU is not set
62# CONFIG_RCU_TRACE is not set 65# CONFIG_RCU_TRACE is not set
63CONFIG_RCU_FANOUT=32 66CONFIG_RCU_FANOUT=32
64# CONFIG_RCU_FANOUT_EXACT is not set 67# CONFIG_RCU_FANOUT_EXACT is not set
@@ -97,6 +100,7 @@ CONFIG_EVENTFD=y
97CONFIG_SHMEM=y 100CONFIG_SHMEM=y
98CONFIG_AIO=y 101CONFIG_AIO=y
99CONFIG_HAVE_PERF_EVENTS=y 102CONFIG_HAVE_PERF_EVENTS=y
103CONFIG_PERF_USE_VMALLOC=y
100 104
101# 105#
102# Kernel Performance Events And Counters 106# Kernel Performance Events And Counters
@@ -115,6 +119,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
115CONFIG_HAVE_KPROBES=y 119CONFIG_HAVE_KPROBES=y
116CONFIG_HAVE_KRETPROBES=y 120CONFIG_HAVE_KRETPROBES=y
117CONFIG_HAVE_ARCH_TRACEHOOK=y 121CONFIG_HAVE_ARCH_TRACEHOOK=y
122CONFIG_HAVE_DMA_ATTRS=y
118CONFIG_HAVE_CLK=y 123CONFIG_HAVE_CLK=y
119CONFIG_HAVE_DMA_API_DEBUG=y 124CONFIG_HAVE_DMA_API_DEBUG=y
120 125
@@ -136,14 +141,41 @@ CONFIG_LBDAF=y
136# IO Schedulers 141# IO Schedulers
137# 142#
138CONFIG_IOSCHED_NOOP=y 143CONFIG_IOSCHED_NOOP=y
139CONFIG_IOSCHED_AS=y
140CONFIG_IOSCHED_DEADLINE=y 144CONFIG_IOSCHED_DEADLINE=y
141CONFIG_IOSCHED_CFQ=y 145CONFIG_IOSCHED_CFQ=y
142CONFIG_DEFAULT_AS=y
143# CONFIG_DEFAULT_DEADLINE is not set 146# CONFIG_DEFAULT_DEADLINE is not set
144# CONFIG_DEFAULT_CFQ is not set 147CONFIG_DEFAULT_CFQ=y
145# CONFIG_DEFAULT_NOOP is not set 148# CONFIG_DEFAULT_NOOP is not set
146CONFIG_DEFAULT_IOSCHED="anticipatory" 149CONFIG_DEFAULT_IOSCHED="cfq"
150# CONFIG_INLINE_SPIN_TRYLOCK is not set
151# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
152# CONFIG_INLINE_SPIN_LOCK is not set
153# CONFIG_INLINE_SPIN_LOCK_BH is not set
154# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
155# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
156CONFIG_INLINE_SPIN_UNLOCK=y
157# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
158CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
159# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
160# CONFIG_INLINE_READ_TRYLOCK is not set
161# CONFIG_INLINE_READ_LOCK is not set
162# CONFIG_INLINE_READ_LOCK_BH is not set
163# CONFIG_INLINE_READ_LOCK_IRQ is not set
164# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
165CONFIG_INLINE_READ_UNLOCK=y
166# CONFIG_INLINE_READ_UNLOCK_BH is not set
167CONFIG_INLINE_READ_UNLOCK_IRQ=y
168# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
169# CONFIG_INLINE_WRITE_TRYLOCK is not set
170# CONFIG_INLINE_WRITE_LOCK is not set
171# CONFIG_INLINE_WRITE_LOCK_BH is not set
172# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
173# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
174CONFIG_INLINE_WRITE_UNLOCK=y
175# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
176CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
177# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
178# CONFIG_MUTEX_SPIN_ON_OWNER is not set
147# CONFIG_FREEZER is not set 179# CONFIG_FREEZER is not set
148 180
149# 181#
@@ -219,8 +251,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
219# CONFIG_PHYS_ADDR_T_64BIT is not set 251# CONFIG_PHYS_ADDR_T_64BIT is not set
220CONFIG_ZONE_DMA_FLAG=0 252CONFIG_ZONE_DMA_FLAG=0
221CONFIG_NR_QUICK=2 253CONFIG_NR_QUICK=2
222CONFIG_HAVE_MLOCK=y
223CONFIG_HAVE_MLOCKED_PAGE_BIT=y
224# CONFIG_KSM is not set 254# CONFIG_KSM is not set
225CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 255CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
226 256
@@ -272,9 +302,9 @@ CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
272# 302#
273# DMA support 303# DMA support
274# 304#
275CONFIG_SH_DMA_API=y
276CONFIG_SH_DMA=y 305CONFIG_SH_DMA=y
277CONFIG_SH_DMA_IRQ_MULTI=y 306CONFIG_SH_DMA_IRQ_MULTI=y
307CONFIG_SH_DMA_API=y
278CONFIG_NR_ONCHIP_DMA_CHANNELS=8 308CONFIG_NR_ONCHIP_DMA_CHANNELS=8
279# CONFIG_NR_DMA_CHANNELS_BOOL is not set 309# CONFIG_NR_DMA_CHANNELS_BOOL is not set
280 310
@@ -313,7 +343,6 @@ CONFIG_GUSA=y
313CONFIG_ZERO_PAGE_OFFSET=0x00001000 343CONFIG_ZERO_PAGE_OFFSET=0x00001000
314CONFIG_BOOT_LINK_OFFSET=0x00800000 344CONFIG_BOOT_LINK_OFFSET=0x00800000
315CONFIG_ENTRY_OFFSET=0x00001000 345CONFIG_ENTRY_OFFSET=0x00001000
316# CONFIG_UBC_WAKEUP is not set
317# CONFIG_CMDLINE_OVERWRITE is not set 346# CONFIG_CMDLINE_OVERWRITE is not set
318# CONFIG_CMDLINE_EXTEND is not set 347# CONFIG_CMDLINE_EXTEND is not set
319 348
@@ -321,7 +350,6 @@ CONFIG_ENTRY_OFFSET=0x00001000
321# Bus options 350# Bus options
322# 351#
323CONFIG_PCI=y 352CONFIG_PCI=y
324CONFIG_SH_PCIDMA_NONCOHERENT=y
325# CONFIG_PCIEPORTBUS is not set 353# CONFIG_PCIEPORTBUS is not set
326# CONFIG_ARCH_SUPPORTS_MSI is not set 354# CONFIG_ARCH_SUPPORTS_MSI is not set
327CONFIG_PCI_LEGACY=y 355CONFIG_PCI_LEGACY=y
@@ -407,9 +435,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
407# CONFIG_AF_RXRPC is not set 435# CONFIG_AF_RXRPC is not set
408CONFIG_WIRELESS=y 436CONFIG_WIRELESS=y
409# CONFIG_CFG80211 is not set 437# CONFIG_CFG80211 is not set
410CONFIG_CFG80211_DEFAULT_PS_VALUE=0
411# CONFIG_WIRELESS_OLD_REGULATORY is not set
412# CONFIG_WIRELESS_EXT is not set
413# CONFIG_LIB80211 is not set 438# CONFIG_LIB80211 is not set
414 439
415# 440#
@@ -524,6 +549,10 @@ CONFIG_BLK_DEV=y
524# CONFIG_BLK_DEV_UMEM is not set 549# CONFIG_BLK_DEV_UMEM is not set
525# CONFIG_BLK_DEV_COW_COMMON is not set 550# CONFIG_BLK_DEV_COW_COMMON is not set
526# CONFIG_BLK_DEV_LOOP is not set 551# CONFIG_BLK_DEV_LOOP is not set
552
553#
554# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
555#
527# CONFIG_BLK_DEV_NBD is not set 556# CONFIG_BLK_DEV_NBD is not set
528# CONFIG_BLK_DEV_SX8 is not set 557# CONFIG_BLK_DEV_SX8 is not set
529CONFIG_BLK_DEV_RAM=y 558CONFIG_BLK_DEV_RAM=y
@@ -616,6 +645,7 @@ CONFIG_8139TOO_PIO=y
616# CONFIG_SUNDANCE is not set 645# CONFIG_SUNDANCE is not set
617# CONFIG_TLAN is not set 646# CONFIG_TLAN is not set
618# CONFIG_KS8842 is not set 647# CONFIG_KS8842 is not set
648# CONFIG_KS8851_MLL is not set
619# CONFIG_VIA_RHINE is not set 649# CONFIG_VIA_RHINE is not set
620# CONFIG_SC92031 is not set 650# CONFIG_SC92031 is not set
621# CONFIG_ATL2 is not set 651# CONFIG_ATL2 is not set
@@ -623,8 +653,9 @@ CONFIG_8139TOO_PIO=y
623# CONFIG_NETDEV_10000 is not set 653# CONFIG_NETDEV_10000 is not set
624# CONFIG_TR is not set 654# CONFIG_TR is not set
625CONFIG_WLAN=y 655CONFIG_WLAN=y
626# CONFIG_WLAN_PRE80211 is not set 656# CONFIG_ATMEL is not set
627# CONFIG_WLAN_80211 is not set 657# CONFIG_PRISM54 is not set
658# CONFIG_HOSTAP is not set
628 659
629# 660#
630# Enable WiMAX (Networking options) to see the WiMAX drivers 661# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -637,6 +668,7 @@ CONFIG_WLAN=y
637# CONFIG_NETCONSOLE is not set 668# CONFIG_NETCONSOLE is not set
638# CONFIG_NETPOLL is not set 669# CONFIG_NETPOLL is not set
639# CONFIG_NET_POLL_CONTROLLER is not set 670# CONFIG_NET_POLL_CONTROLLER is not set
671# CONFIG_VMXNET3 is not set
640# CONFIG_ISDN is not set 672# CONFIG_ISDN is not set
641# CONFIG_PHONE is not set 673# CONFIG_PHONE is not set
642 674
@@ -646,6 +678,7 @@ CONFIG_WLAN=y
646CONFIG_INPUT=y 678CONFIG_INPUT=y
647# CONFIG_INPUT_FF_MEMLESS is not set 679# CONFIG_INPUT_FF_MEMLESS is not set
648# CONFIG_INPUT_POLLDEV is not set 680# CONFIG_INPUT_POLLDEV is not set
681# CONFIG_INPUT_SPARSEKMAP is not set
649 682
650# 683#
651# Userland interfaces 684# Userland interfaces
@@ -728,6 +761,7 @@ CONFIG_SSB_POSSIBLE=y
728# 761#
729# CONFIG_MFD_CORE is not set 762# CONFIG_MFD_CORE is not set
730# CONFIG_MFD_SM501 is not set 763# CONFIG_MFD_SM501 is not set
764# CONFIG_MFD_SH_MOBILE_SDHI is not set
731# CONFIG_HTC_PASIC3 is not set 765# CONFIG_HTC_PASIC3 is not set
732# CONFIG_MFD_TMIO is not set 766# CONFIG_MFD_TMIO is not set
733# CONFIG_REGULATOR is not set 767# CONFIG_REGULATOR is not set
@@ -787,7 +821,9 @@ CONFIG_RTC_DRV_DS1302=y
787# CONFIG_RTC_DRV_M48T86 is not set 821# CONFIG_RTC_DRV_M48T86 is not set
788# CONFIG_RTC_DRV_M48T35 is not set 822# CONFIG_RTC_DRV_M48T35 is not set
789# CONFIG_RTC_DRV_M48T59 is not set 823# CONFIG_RTC_DRV_M48T59 is not set
824# CONFIG_RTC_DRV_MSM6242 is not set
790# CONFIG_RTC_DRV_BQ4802 is not set 825# CONFIG_RTC_DRV_BQ4802 is not set
826# CONFIG_RTC_DRV_RP5C01 is not set
791# CONFIG_RTC_DRV_V3020 is not set 827# CONFIG_RTC_DRV_V3020 is not set
792 828
793# 829#
@@ -812,6 +848,7 @@ CONFIG_EXT2_FS=y
812# CONFIG_EXT2_FS_XIP is not set 848# CONFIG_EXT2_FS_XIP is not set
813# CONFIG_EXT3_FS is not set 849# CONFIG_EXT3_FS is not set
814# CONFIG_EXT4_FS is not set 850# CONFIG_EXT4_FS is not set
851CONFIG_EXT4_USE_FOR_EXT23=y
815# CONFIG_REISERFS_FS is not set 852# CONFIG_REISERFS_FS is not set
816# CONFIG_JFS_FS is not set 853# CONFIG_JFS_FS is not set
817# CONFIG_FS_POSIX_ACL is not set 854# CONFIG_FS_POSIX_ACL is not set
@@ -915,10 +952,11 @@ CONFIG_FRAME_WARN=1024
915# CONFIG_DEBUG_FS is not set 952# CONFIG_DEBUG_FS is not set
916# CONFIG_HEADERS_CHECK is not set 953# CONFIG_HEADERS_CHECK is not set
917# CONFIG_DEBUG_KERNEL is not set 954# CONFIG_DEBUG_KERNEL is not set
918# CONFIG_DEBUG_BUGVERBOSE is not set 955CONFIG_DEBUG_BUGVERBOSE=y
919# CONFIG_DEBUG_MEMORY_INIT is not set 956# CONFIG_DEBUG_MEMORY_INIT is not set
920# CONFIG_RCU_CPU_STALL_DETECTOR is not set 957# CONFIG_RCU_CPU_STALL_DETECTOR is not set
921# CONFIG_LATENCYTOP is not set 958# CONFIG_LATENCYTOP is not set
959# CONFIG_SYSCTL_SYSCALL_CHECK is not set
922CONFIG_HAVE_FUNCTION_TRACER=y 960CONFIG_HAVE_FUNCTION_TRACER=y
923CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 961CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
924CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 962CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
@@ -931,7 +969,6 @@ CONFIG_TRACING_SUPPORT=y
931# CONFIG_SAMPLES is not set 969# CONFIG_SAMPLES is not set
932CONFIG_HAVE_ARCH_KGDB=y 970CONFIG_HAVE_ARCH_KGDB=y
933# CONFIG_SH_STANDARD_BIOS is not set 971# CONFIG_SH_STANDARD_BIOS is not set
934# CONFIG_EARLY_SCIF_CONSOLE is not set
935# CONFIG_DWARF_UNWINDER is not set 972# CONFIG_DWARF_UNWINDER is not set
936 973
937# 974#
@@ -940,7 +977,11 @@ CONFIG_HAVE_ARCH_KGDB=y
940# CONFIG_KEYS is not set 977# CONFIG_KEYS is not set
941# CONFIG_SECURITY is not set 978# CONFIG_SECURITY is not set
942# CONFIG_SECURITYFS is not set 979# CONFIG_SECURITYFS is not set
943# CONFIG_SECURITY_FILE_CAPABILITIES is not set 980# CONFIG_DEFAULT_SECURITY_SELINUX is not set
981# CONFIG_DEFAULT_SECURITY_SMACK is not set
982# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
983CONFIG_DEFAULT_SECURITY_DAC=y
984CONFIG_DEFAULT_SECURITY=""
944# CONFIG_CRYPTO is not set 985# CONFIG_CRYPTO is not set
945# CONFIG_BINARY_PRINTF is not set 986# CONFIG_BINARY_PRINTF is not set
946 987
diff --git a/arch/sh/configs/systemh_defconfig b/arch/sh/configs/systemh_defconfig
index b9fe960309f5..72982e360e3f 100644
--- a/arch/sh/configs/systemh_defconfig
+++ b/arch/sh/configs/systemh_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 19:35:03 2009 4# Mon Jan 4 15:14:50 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_TMU=y 24CONFIG_SYS_SUPPORTS_TMU=y
24CONFIG_STACKTRACE_SUPPORT=y 25CONFIG_STACKTRACE_SUPPORT=y
25CONFIG_LOCKDEP_SUPPORT=y 26CONFIG_LOCKDEP_SUPPORT=y
@@ -29,6 +30,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
29CONFIG_ARCH_NO_VIRT_TO_BUS=y 30CONFIG_ARCH_NO_VIRT_TO_BUS=y
30CONFIG_ARCH_HAS_DEFAULT_IDLE=y 31CONFIG_ARCH_HAS_DEFAULT_IDLE=y
31CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
33CONFIG_DMA_NONCOHERENT=y
32CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
33CONFIG_CONSTRUCTORS=y 35CONFIG_CONSTRUCTORS=y
34 36
@@ -56,6 +58,7 @@ CONFIG_SWAP=y
56# 58#
57CONFIG_TREE_RCU=y 59CONFIG_TREE_RCU=y
58# CONFIG_TREE_PREEMPT_RCU is not set 60# CONFIG_TREE_PREEMPT_RCU is not set
61# CONFIG_TINY_RCU is not set
59# CONFIG_RCU_TRACE is not set 62# CONFIG_RCU_TRACE is not set
60CONFIG_RCU_FANOUT=32 63CONFIG_RCU_FANOUT=32
61# CONFIG_RCU_FANOUT_EXACT is not set 64# CONFIG_RCU_FANOUT_EXACT is not set
@@ -94,6 +97,7 @@ CONFIG_EVENTFD=y
94CONFIG_SHMEM=y 97CONFIG_SHMEM=y
95CONFIG_AIO=y 98CONFIG_AIO=y
96CONFIG_HAVE_PERF_EVENTS=y 99CONFIG_HAVE_PERF_EVENTS=y
100CONFIG_PERF_USE_VMALLOC=y
97 101
98# 102#
99# Kernel Performance Events And Counters 103# Kernel Performance Events And Counters
@@ -112,6 +116,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
112CONFIG_HAVE_KPROBES=y 116CONFIG_HAVE_KPROBES=y
113CONFIG_HAVE_KRETPROBES=y 117CONFIG_HAVE_KRETPROBES=y
114CONFIG_HAVE_ARCH_TRACEHOOK=y 118CONFIG_HAVE_ARCH_TRACEHOOK=y
119CONFIG_HAVE_DMA_ATTRS=y
115CONFIG_HAVE_CLK=y 120CONFIG_HAVE_CLK=y
116CONFIG_HAVE_DMA_API_DEBUG=y 121CONFIG_HAVE_DMA_API_DEBUG=y
117 122
@@ -138,14 +143,41 @@ CONFIG_LBDAF=y
138# IO Schedulers 143# IO Schedulers
139# 144#
140CONFIG_IOSCHED_NOOP=y 145CONFIG_IOSCHED_NOOP=y
141CONFIG_IOSCHED_AS=y
142CONFIG_IOSCHED_DEADLINE=y 146CONFIG_IOSCHED_DEADLINE=y
143CONFIG_IOSCHED_CFQ=y 147CONFIG_IOSCHED_CFQ=y
144CONFIG_DEFAULT_AS=y
145# CONFIG_DEFAULT_DEADLINE is not set 148# CONFIG_DEFAULT_DEADLINE is not set
146# CONFIG_DEFAULT_CFQ is not set 149CONFIG_DEFAULT_CFQ=y
147# CONFIG_DEFAULT_NOOP is not set 150# CONFIG_DEFAULT_NOOP is not set
148CONFIG_DEFAULT_IOSCHED="anticipatory" 151CONFIG_DEFAULT_IOSCHED="cfq"
152# CONFIG_INLINE_SPIN_TRYLOCK is not set
153# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
154# CONFIG_INLINE_SPIN_LOCK is not set
155# CONFIG_INLINE_SPIN_LOCK_BH is not set
156# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
157# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
158# CONFIG_INLINE_SPIN_UNLOCK is not set
159# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
160# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
161# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
162# CONFIG_INLINE_READ_TRYLOCK is not set
163# CONFIG_INLINE_READ_LOCK is not set
164# CONFIG_INLINE_READ_LOCK_BH is not set
165# CONFIG_INLINE_READ_LOCK_IRQ is not set
166# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
167# CONFIG_INLINE_READ_UNLOCK is not set
168# CONFIG_INLINE_READ_UNLOCK_BH is not set
169# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
170# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
171# CONFIG_INLINE_WRITE_TRYLOCK is not set
172# CONFIG_INLINE_WRITE_LOCK is not set
173# CONFIG_INLINE_WRITE_LOCK_BH is not set
174# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
175# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
176# CONFIG_INLINE_WRITE_UNLOCK is not set
177# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
178# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
179# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
180# CONFIG_MUTEX_SPIN_ON_OWNER is not set
149# CONFIG_FREEZER is not set 181# CONFIG_FREEZER is not set
150 182
151# 183#
@@ -221,8 +253,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
221# CONFIG_PHYS_ADDR_T_64BIT is not set 253# CONFIG_PHYS_ADDR_T_64BIT is not set
222CONFIG_ZONE_DMA_FLAG=0 254CONFIG_ZONE_DMA_FLAG=0
223CONFIG_NR_QUICK=2 255CONFIG_NR_QUICK=2
224CONFIG_HAVE_MLOCK=y
225CONFIG_HAVE_MLOCKED_PAGE_BIT=y
226# CONFIG_KSM is not set 256# CONFIG_KSM is not set
227CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 257CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
228 258
@@ -310,7 +340,6 @@ CONFIG_GUSA=y
310CONFIG_ZERO_PAGE_OFFSET=0x00001000 340CONFIG_ZERO_PAGE_OFFSET=0x00001000
311CONFIG_BOOT_LINK_OFFSET=0x00800000 341CONFIG_BOOT_LINK_OFFSET=0x00800000
312CONFIG_ENTRY_OFFSET=0x00001000 342CONFIG_ENTRY_OFFSET=0x00001000
313# CONFIG_UBC_WAKEUP is not set
314# CONFIG_CMDLINE_OVERWRITE is not set 343# CONFIG_CMDLINE_OVERWRITE is not set
315# CONFIG_CMDLINE_EXTEND is not set 344# CONFIG_CMDLINE_EXTEND is not set
316 345
@@ -349,6 +378,10 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
349CONFIG_BLK_DEV=y 378CONFIG_BLK_DEV=y
350# CONFIG_BLK_DEV_COW_COMMON is not set 379# CONFIG_BLK_DEV_COW_COMMON is not set
351# CONFIG_BLK_DEV_LOOP is not set 380# CONFIG_BLK_DEV_LOOP is not set
381
382#
383# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
384#
352CONFIG_BLK_DEV_RAM=y 385CONFIG_BLK_DEV_RAM=y
353CONFIG_BLK_DEV_RAM_COUNT=16 386CONFIG_BLK_DEV_RAM_COUNT=16
354CONFIG_BLK_DEV_RAM_SIZE=1024 387CONFIG_BLK_DEV_RAM_SIZE=1024
@@ -390,6 +423,7 @@ CONFIG_SERIO=y
390# CONFIG_SERIO_SERPORT is not set 423# CONFIG_SERIO_SERPORT is not set
391# CONFIG_SERIO_LIBPS2 is not set 424# CONFIG_SERIO_LIBPS2 is not set
392# CONFIG_SERIO_RAW is not set 425# CONFIG_SERIO_RAW is not set
426# CONFIG_SERIO_ALTERA_PS2 is not set
393# CONFIG_GAMEPORT is not set 427# CONFIG_GAMEPORT is not set
394 428
395# 429#
@@ -458,6 +492,7 @@ CONFIG_SSB_POSSIBLE=y
458# 492#
459# CONFIG_MFD_CORE is not set 493# CONFIG_MFD_CORE is not set
460# CONFIG_MFD_SM501 is not set 494# CONFIG_MFD_SM501 is not set
495# CONFIG_MFD_SH_MOBILE_SDHI is not set
461# CONFIG_HTC_PASIC3 is not set 496# CONFIG_HTC_PASIC3 is not set
462# CONFIG_MFD_TMIO is not set 497# CONFIG_MFD_TMIO is not set
463# CONFIG_REGULATOR is not set 498# CONFIG_REGULATOR is not set
@@ -517,6 +552,7 @@ CONFIG_RTC_LIB=y
517# CONFIG_EXT2_FS is not set 552# CONFIG_EXT2_FS is not set
518# CONFIG_EXT3_FS is not set 553# CONFIG_EXT3_FS is not set
519# CONFIG_EXT4_FS is not set 554# CONFIG_EXT4_FS is not set
555CONFIG_EXT4_USE_FOR_EXT23=y
520# CONFIG_REISERFS_FS is not set 556# CONFIG_REISERFS_FS is not set
521# CONFIG_JFS_FS is not set 557# CONFIG_JFS_FS is not set
522# CONFIG_FS_POSIX_ACL is not set 558# CONFIG_FS_POSIX_ACL is not set
@@ -609,10 +645,11 @@ CONFIG_FRAME_WARN=1024
609# CONFIG_DEBUG_FS is not set 645# CONFIG_DEBUG_FS is not set
610# CONFIG_HEADERS_CHECK is not set 646# CONFIG_HEADERS_CHECK is not set
611# CONFIG_DEBUG_KERNEL is not set 647# CONFIG_DEBUG_KERNEL is not set
612# CONFIG_DEBUG_BUGVERBOSE is not set 648CONFIG_DEBUG_BUGVERBOSE=y
613# CONFIG_DEBUG_MEMORY_INIT is not set 649# CONFIG_DEBUG_MEMORY_INIT is not set
614# CONFIG_RCU_CPU_STALL_DETECTOR is not set 650# CONFIG_RCU_CPU_STALL_DETECTOR is not set
615# CONFIG_LATENCYTOP is not set 651# CONFIG_LATENCYTOP is not set
652# CONFIG_SYSCTL_SYSCALL_CHECK is not set
616CONFIG_HAVE_FUNCTION_TRACER=y 653CONFIG_HAVE_FUNCTION_TRACER=y
617CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 654CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
618CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 655CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
@@ -625,7 +662,6 @@ CONFIG_TRACING_SUPPORT=y
625# CONFIG_SAMPLES is not set 662# CONFIG_SAMPLES is not set
626CONFIG_HAVE_ARCH_KGDB=y 663CONFIG_HAVE_ARCH_KGDB=y
627# CONFIG_SH_STANDARD_BIOS is not set 664# CONFIG_SH_STANDARD_BIOS is not set
628# CONFIG_EARLY_SCIF_CONSOLE is not set
629# CONFIG_DWARF_UNWINDER is not set 665# CONFIG_DWARF_UNWINDER is not set
630 666
631# 667#
@@ -634,7 +670,11 @@ CONFIG_HAVE_ARCH_KGDB=y
634# CONFIG_KEYS is not set 670# CONFIG_KEYS is not set
635# CONFIG_SECURITY is not set 671# CONFIG_SECURITY is not set
636# CONFIG_SECURITYFS is not set 672# CONFIG_SECURITYFS is not set
637# CONFIG_SECURITY_FILE_CAPABILITIES is not set 673# CONFIG_DEFAULT_SECURITY_SELINUX is not set
674# CONFIG_DEFAULT_SECURITY_SMACK is not set
675# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
676CONFIG_DEFAULT_SECURITY_DAC=y
677CONFIG_DEFAULT_SECURITY=""
638# CONFIG_CRYPTO is not set 678# CONFIG_CRYPTO is not set
639# CONFIG_BINARY_PRINTF is not set 679# CONFIG_BINARY_PRINTF is not set
640 680
diff --git a/arch/sh/configs/titan_defconfig b/arch/sh/configs/titan_defconfig
index 2ca79ed9fb62..78c257053c79 100644
--- a/arch/sh/configs/titan_defconfig
+++ b/arch/sh/configs/titan_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 19:36:36 2009 4# Mon Jan 4 15:17:20 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_PCI=y 24CONFIG_SYS_SUPPORTS_PCI=y
24CONFIG_SYS_SUPPORTS_TMU=y 25CONFIG_SYS_SUPPORTS_TMU=y
25CONFIG_STACKTRACE_SUPPORT=y 26CONFIG_STACKTRACE_SUPPORT=y
@@ -30,6 +31,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
30CONFIG_ARCH_NO_VIRT_TO_BUS=y 31CONFIG_ARCH_NO_VIRT_TO_BUS=y
31CONFIG_ARCH_HAS_DEFAULT_IDLE=y 32CONFIG_ARCH_HAS_DEFAULT_IDLE=y
32CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
34CONFIG_DMA_NONCOHERENT=y
33CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 35CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
34CONFIG_CONSTRUCTORS=y 36CONFIG_CONSTRUCTORS=y
35 37
@@ -61,6 +63,7 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
61# 63#
62CONFIG_TREE_RCU=y 64CONFIG_TREE_RCU=y
63# CONFIG_TREE_PREEMPT_RCU is not set 65# CONFIG_TREE_PREEMPT_RCU is not set
66# CONFIG_TINY_RCU is not set
64# CONFIG_RCU_TRACE is not set 67# CONFIG_RCU_TRACE is not set
65CONFIG_RCU_FANOUT=32 68CONFIG_RCU_FANOUT=32
66# CONFIG_RCU_FANOUT_EXACT is not set 69# CONFIG_RCU_FANOUT_EXACT is not set
@@ -101,6 +104,7 @@ CONFIG_EVENTFD=y
101CONFIG_SHMEM=y 104CONFIG_SHMEM=y
102CONFIG_AIO=y 105CONFIG_AIO=y
103CONFIG_HAVE_PERF_EVENTS=y 106CONFIG_HAVE_PERF_EVENTS=y
107CONFIG_PERF_USE_VMALLOC=y
104 108
105# 109#
106# Kernel Performance Events And Counters 110# Kernel Performance Events And Counters
@@ -120,13 +124,14 @@ CONFIG_HAVE_IOREMAP_PROT=y
120CONFIG_HAVE_KPROBES=y 124CONFIG_HAVE_KPROBES=y
121CONFIG_HAVE_KRETPROBES=y 125CONFIG_HAVE_KRETPROBES=y
122CONFIG_HAVE_ARCH_TRACEHOOK=y 126CONFIG_HAVE_ARCH_TRACEHOOK=y
127CONFIG_HAVE_DMA_ATTRS=y
123CONFIG_HAVE_CLK=y 128CONFIG_HAVE_CLK=y
124CONFIG_HAVE_DMA_API_DEBUG=y 129CONFIG_HAVE_DMA_API_DEBUG=y
125 130
126# 131#
127# GCOV-based kernel profiling 132# GCOV-based kernel profiling
128# 133#
129# CONFIG_SLOW_WORK is not set 134CONFIG_SLOW_WORK=y
130CONFIG_HAVE_GENERIC_DMA_COHERENT=y 135CONFIG_HAVE_GENERIC_DMA_COHERENT=y
131CONFIG_SLABINFO=y 136CONFIG_SLABINFO=y
132CONFIG_RT_MUTEXES=y 137CONFIG_RT_MUTEXES=y
@@ -146,14 +151,41 @@ CONFIG_LBDAF=y
146# IO Schedulers 151# IO Schedulers
147# 152#
148CONFIG_IOSCHED_NOOP=y 153CONFIG_IOSCHED_NOOP=y
149CONFIG_IOSCHED_AS=y
150CONFIG_IOSCHED_DEADLINE=y 154CONFIG_IOSCHED_DEADLINE=y
151CONFIG_IOSCHED_CFQ=y 155CONFIG_IOSCHED_CFQ=y
152CONFIG_DEFAULT_AS=y
153# CONFIG_DEFAULT_DEADLINE is not set 156# CONFIG_DEFAULT_DEADLINE is not set
154# CONFIG_DEFAULT_CFQ is not set 157CONFIG_DEFAULT_CFQ=y
155# CONFIG_DEFAULT_NOOP is not set 158# CONFIG_DEFAULT_NOOP is not set
156CONFIG_DEFAULT_IOSCHED="anticipatory" 159CONFIG_DEFAULT_IOSCHED="cfq"
160# CONFIG_INLINE_SPIN_TRYLOCK is not set
161# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
162# CONFIG_INLINE_SPIN_LOCK is not set
163# CONFIG_INLINE_SPIN_LOCK_BH is not set
164# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
165# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
166CONFIG_INLINE_SPIN_UNLOCK=y
167# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
168CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
169# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
170# CONFIG_INLINE_READ_TRYLOCK is not set
171# CONFIG_INLINE_READ_LOCK is not set
172# CONFIG_INLINE_READ_LOCK_BH is not set
173# CONFIG_INLINE_READ_LOCK_IRQ is not set
174# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
175CONFIG_INLINE_READ_UNLOCK=y
176# CONFIG_INLINE_READ_UNLOCK_BH is not set
177CONFIG_INLINE_READ_UNLOCK_IRQ=y
178# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
179# CONFIG_INLINE_WRITE_TRYLOCK is not set
180# CONFIG_INLINE_WRITE_LOCK is not set
181# CONFIG_INLINE_WRITE_LOCK_BH is not set
182# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
183# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
184CONFIG_INLINE_WRITE_UNLOCK=y
185# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
186CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
187# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
188# CONFIG_MUTEX_SPIN_ON_OWNER is not set
157# CONFIG_FREEZER is not set 189# CONFIG_FREEZER is not set
158 190
159# 191#
@@ -229,8 +261,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
229# CONFIG_PHYS_ADDR_T_64BIT is not set 261# CONFIG_PHYS_ADDR_T_64BIT is not set
230CONFIG_ZONE_DMA_FLAG=0 262CONFIG_ZONE_DMA_FLAG=0
231CONFIG_NR_QUICK=2 263CONFIG_NR_QUICK=2
232CONFIG_HAVE_MLOCK=y
233CONFIG_HAVE_MLOCKED_PAGE_BIT=y
234# CONFIG_KSM is not set 264# CONFIG_KSM is not set
235CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 265CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
236 266
@@ -282,9 +312,9 @@ CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
282# 312#
283# DMA support 313# DMA support
284# 314#
285CONFIG_SH_DMA_API=y
286CONFIG_SH_DMA=y 315CONFIG_SH_DMA=y
287CONFIG_SH_DMA_IRQ_MULTI=y 316CONFIG_SH_DMA_IRQ_MULTI=y
317CONFIG_SH_DMA_API=y
288CONFIG_NR_ONCHIP_DMA_CHANNELS=8 318CONFIG_NR_ONCHIP_DMA_CHANNELS=8
289# CONFIG_NR_DMA_CHANNELS_BOOL is not set 319# CONFIG_NR_DMA_CHANNELS_BOOL is not set
290 320
@@ -323,7 +353,6 @@ CONFIG_GUSA=y
323CONFIG_ZERO_PAGE_OFFSET=0x00001000 353CONFIG_ZERO_PAGE_OFFSET=0x00001000
324CONFIG_BOOT_LINK_OFFSET=0x009e0000 354CONFIG_BOOT_LINK_OFFSET=0x009e0000
325CONFIG_ENTRY_OFFSET=0x00001000 355CONFIG_ENTRY_OFFSET=0x00001000
326# CONFIG_UBC_WAKEUP is not set
327CONFIG_CMDLINE_OVERWRITE=y 356CONFIG_CMDLINE_OVERWRITE=y
328# CONFIG_CMDLINE_EXTEND is not set 357# CONFIG_CMDLINE_EXTEND is not set
329CONFIG_CMDLINE="console=ttySC1,38400N81 root=/dev/nfs ip=:::::eth1:autoconf rw" 358CONFIG_CMDLINE="console=ttySC1,38400N81 root=/dev/nfs ip=:::::eth1:autoconf rw"
@@ -332,7 +361,6 @@ CONFIG_CMDLINE="console=ttySC1,38400N81 root=/dev/nfs ip=:::::eth1:autoconf rw"
332# Bus options 361# Bus options
333# 362#
334CONFIG_PCI=y 363CONFIG_PCI=y
335CONFIG_SH_PCIDMA_NONCOHERENT=y
336# CONFIG_PCIEPORTBUS is not set 364# CONFIG_PCIEPORTBUS is not set
337# CONFIG_ARCH_SUPPORTS_MSI is not set 365# CONFIG_ARCH_SUPPORTS_MSI is not set
338CONFIG_PCI_LEGACY=y 366CONFIG_PCI_LEGACY=y
@@ -425,6 +453,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y
425CONFIG_INET6_XFRM_MODE_BEET=y 453CONFIG_INET6_XFRM_MODE_BEET=y
426# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 454# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
427CONFIG_IPV6_SIT=m 455CONFIG_IPV6_SIT=m
456# CONFIG_IPV6_SIT_6RD is not set
428CONFIG_IPV6_NDISC_NODETYPE=y 457CONFIG_IPV6_NDISC_NODETYPE=y
429CONFIG_IPV6_TUNNEL=y 458CONFIG_IPV6_TUNNEL=y
430# CONFIG_IPV6_MULTIPLE_TABLES is not set 459# CONFIG_IPV6_MULTIPLE_TABLES is not set
@@ -614,10 +643,6 @@ CONFIG_NET_SCH_FIFO=y
614CONFIG_FIB_RULES=y 643CONFIG_FIB_RULES=y
615CONFIG_WIRELESS=y 644CONFIG_WIRELESS=y
616# CONFIG_CFG80211 is not set 645# CONFIG_CFG80211 is not set
617CONFIG_CFG80211_DEFAULT_PS_VALUE=0
618# CONFIG_WIRELESS_OLD_REGULATORY is not set
619CONFIG_WIRELESS_EXT=y
620CONFIG_WIRELESS_EXT_SYSFS=y
621# CONFIG_LIB80211 is not set 646# CONFIG_LIB80211 is not set
622 647
623# 648#
@@ -743,6 +768,11 @@ CONFIG_BLK_DEV=y
743# CONFIG_BLK_DEV_COW_COMMON is not set 768# CONFIG_BLK_DEV_COW_COMMON is not set
744CONFIG_BLK_DEV_LOOP=m 769CONFIG_BLK_DEV_LOOP=m
745CONFIG_BLK_DEV_CRYPTOLOOP=m 770CONFIG_BLK_DEV_CRYPTOLOOP=m
771
772#
773# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
774#
775# CONFIG_BLK_DEV_DRBD is not set
746# CONFIG_BLK_DEV_NBD is not set 776# CONFIG_BLK_DEV_NBD is not set
747# CONFIG_BLK_DEV_SX8 is not set 777# CONFIG_BLK_DEV_SX8 is not set
748# CONFIG_BLK_DEV_UB is not set 778# CONFIG_BLK_DEV_UB is not set
@@ -807,8 +837,11 @@ CONFIG_SCSI_LOWLEVEL=y
807# CONFIG_ISCSI_TCP is not set 837# CONFIG_ISCSI_TCP is not set
808# CONFIG_SCSI_CXGB3_ISCSI is not set 838# CONFIG_SCSI_CXGB3_ISCSI is not set
809# CONFIG_SCSI_BNX2_ISCSI is not set 839# CONFIG_SCSI_BNX2_ISCSI is not set
840# CONFIG_BE2ISCSI is not set
810# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 841# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
842# CONFIG_SCSI_HPSA is not set
811# CONFIG_SCSI_3W_9XXX is not set 843# CONFIG_SCSI_3W_9XXX is not set
844# CONFIG_SCSI_3W_SAS is not set
812# CONFIG_SCSI_ACARD is not set 845# CONFIG_SCSI_ACARD is not set
813# CONFIG_SCSI_AACRAID is not set 846# CONFIG_SCSI_AACRAID is not set
814# CONFIG_SCSI_AIC7XXX is not set 847# CONFIG_SCSI_AIC7XXX is not set
@@ -841,7 +874,9 @@ CONFIG_SCSI_LOWLEVEL=y
841# CONFIG_SCSI_NSP32 is not set 874# CONFIG_SCSI_NSP32 is not set
842# CONFIG_SCSI_DEBUG is not set 875# CONFIG_SCSI_DEBUG is not set
843# CONFIG_SCSI_PMCRAID is not set 876# CONFIG_SCSI_PMCRAID is not set
877# CONFIG_SCSI_PM8001 is not set
844# CONFIG_SCSI_SRP is not set 878# CONFIG_SCSI_SRP is not set
879# CONFIG_SCSI_BFA_FC is not set
845# CONFIG_SCSI_DH is not set 880# CONFIG_SCSI_DH is not set
846# CONFIG_SCSI_OSD_INITIATOR is not set 881# CONFIG_SCSI_OSD_INITIATOR is not set
847# CONFIG_ATA is not set 882# CONFIG_ATA is not set
@@ -935,6 +970,7 @@ CONFIG_8139_OLD_RX_RESET=y
935# CONFIG_SUNDANCE is not set 970# CONFIG_SUNDANCE is not set
936# CONFIG_TLAN is not set 971# CONFIG_TLAN is not set
937# CONFIG_KS8842 is not set 972# CONFIG_KS8842 is not set
973# CONFIG_KS8851_MLL is not set
938# CONFIG_VIA_RHINE is not set 974# CONFIG_VIA_RHINE is not set
939# CONFIG_SC92031 is not set 975# CONFIG_SC92031 is not set
940# CONFIG_ATL2 is not set 976# CONFIG_ATL2 is not set
@@ -983,8 +1019,10 @@ CONFIG_CHELSIO_T3_DEPENDS=y
983# CONFIG_BE2NET is not set 1019# CONFIG_BE2NET is not set
984# CONFIG_TR is not set 1020# CONFIG_TR is not set
985CONFIG_WLAN=y 1021CONFIG_WLAN=y
986# CONFIG_WLAN_PRE80211 is not set 1022# CONFIG_ATMEL is not set
987# CONFIG_WLAN_80211 is not set 1023# CONFIG_PRISM54 is not set
1024# CONFIG_USB_ZD1201 is not set
1025# CONFIG_HOSTAP is not set
988 1026
989# 1027#
990# Enable WiMAX (Networking options) to see the WiMAX drivers 1028# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -1033,6 +1071,7 @@ CONFIG_SLIP_SMART=y
1033# CONFIG_NETCONSOLE is not set 1071# CONFIG_NETCONSOLE is not set
1034# CONFIG_NETPOLL is not set 1072# CONFIG_NETPOLL is not set
1035# CONFIG_NET_POLL_CONTROLLER is not set 1073# CONFIG_NET_POLL_CONTROLLER is not set
1074# CONFIG_VMXNET3 is not set
1036# CONFIG_ISDN is not set 1075# CONFIG_ISDN is not set
1037# CONFIG_PHONE is not set 1076# CONFIG_PHONE is not set
1038 1077
@@ -1042,6 +1081,7 @@ CONFIG_SLIP_SMART=y
1042CONFIG_INPUT=y 1081CONFIG_INPUT=y
1043# CONFIG_INPUT_FF_MEMLESS is not set 1082# CONFIG_INPUT_FF_MEMLESS is not set
1044# CONFIG_INPUT_POLLDEV is not set 1083# CONFIG_INPUT_POLLDEV is not set
1084# CONFIG_INPUT_SPARSEKMAP is not set
1045 1085
1046# 1086#
1047# Userland interfaces 1087# Userland interfaces
@@ -1172,6 +1212,7 @@ CONFIG_SSB_POSSIBLE=y
1172# 1212#
1173# CONFIG_MFD_CORE is not set 1213# CONFIG_MFD_CORE is not set
1174# CONFIG_MFD_SM501 is not set 1214# CONFIG_MFD_SM501 is not set
1215# CONFIG_MFD_SH_MOBILE_SDHI is not set
1175# CONFIG_HTC_PASIC3 is not set 1216# CONFIG_HTC_PASIC3 is not set
1176# CONFIG_MFD_TMIO is not set 1217# CONFIG_MFD_TMIO is not set
1177# CONFIG_REGULATOR is not set 1218# CONFIG_REGULATOR is not set
@@ -1409,7 +1450,9 @@ CONFIG_RTC_INTF_DEV=y
1409# CONFIG_RTC_DRV_M48T86 is not set 1450# CONFIG_RTC_DRV_M48T86 is not set
1410# CONFIG_RTC_DRV_M48T35 is not set 1451# CONFIG_RTC_DRV_M48T35 is not set
1411# CONFIG_RTC_DRV_M48T59 is not set 1452# CONFIG_RTC_DRV_M48T59 is not set
1453# CONFIG_RTC_DRV_MSM6242 is not set
1412# CONFIG_RTC_DRV_BQ4802 is not set 1454# CONFIG_RTC_DRV_BQ4802 is not set
1455# CONFIG_RTC_DRV_RP5C01 is not set
1413# CONFIG_RTC_DRV_V3020 is not set 1456# CONFIG_RTC_DRV_V3020 is not set
1414 1457
1415# 1458#
@@ -1664,6 +1707,7 @@ CONFIG_SCHED_DEBUG=y
1664# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set 1707# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1665# CONFIG_FAULT_INJECTION is not set 1708# CONFIG_FAULT_INJECTION is not set
1666# CONFIG_LATENCYTOP is not set 1709# CONFIG_LATENCYTOP is not set
1710# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1667# CONFIG_PAGE_POISONING is not set 1711# CONFIG_PAGE_POISONING is not set
1668CONFIG_HAVE_FUNCTION_TRACER=y 1712CONFIG_HAVE_FUNCTION_TRACER=y
1669CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 1713CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
@@ -1691,7 +1735,6 @@ CONFIG_BRANCH_PROFILE_NONE=y
1691CONFIG_HAVE_ARCH_KGDB=y 1735CONFIG_HAVE_ARCH_KGDB=y
1692# CONFIG_KGDB is not set 1736# CONFIG_KGDB is not set
1693# CONFIG_SH_STANDARD_BIOS is not set 1737# CONFIG_SH_STANDARD_BIOS is not set
1694# CONFIG_EARLY_SCIF_CONSOLE is not set
1695# CONFIG_STACK_DEBUG is not set 1738# CONFIG_STACK_DEBUG is not set
1696# CONFIG_DEBUG_STACK_USAGE is not set 1739# CONFIG_DEBUG_STACK_USAGE is not set
1697# CONFIG_4KSTACKS is not set 1740# CONFIG_4KSTACKS is not set
@@ -1705,7 +1748,11 @@ CONFIG_HAVE_ARCH_KGDB=y
1705# CONFIG_KEYS is not set 1748# CONFIG_KEYS is not set
1706# CONFIG_SECURITY is not set 1749# CONFIG_SECURITY is not set
1707# CONFIG_SECURITYFS is not set 1750# CONFIG_SECURITYFS is not set
1708# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1751# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1752# CONFIG_DEFAULT_SECURITY_SMACK is not set
1753# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1754CONFIG_DEFAULT_SECURITY_DAC=y
1755CONFIG_DEFAULT_SECURITY=""
1709CONFIG_CRYPTO=y 1756CONFIG_CRYPTO=y
1710 1757
1711# 1758#
diff --git a/arch/sh/configs/ul2_defconfig b/arch/sh/configs/ul2_defconfig
index b012ca77f029..4fa03bf086dd 100644
--- a/arch/sh/configs/ul2_defconfig
+++ b/arch/sh/configs/ul2_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 19:42:33 2009 4# Mon Jan 4 15:18:53 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21CONFIG_ARCH_SUSPEND_POSSIBLE=y 21CONFIG_ARCH_SUSPEND_POSSIBLE=y
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_NUMA=y 24CONFIG_SYS_SUPPORTS_NUMA=y
24CONFIG_SYS_SUPPORTS_CMT=y 25CONFIG_SYS_SUPPORTS_CMT=y
25CONFIG_SYS_SUPPORTS_TMU=y 26CONFIG_SYS_SUPPORTS_TMU=y
@@ -31,6 +32,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
31CONFIG_ARCH_NO_VIRT_TO_BUS=y 32CONFIG_ARCH_NO_VIRT_TO_BUS=y
32CONFIG_ARCH_HAS_DEFAULT_IDLE=y 33CONFIG_ARCH_HAS_DEFAULT_IDLE=y
33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 34CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
35CONFIG_DMA_NONCOHERENT=y
34CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 36CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
35CONFIG_CONSTRUCTORS=y 37CONFIG_CONSTRUCTORS=y
36 38
@@ -63,6 +65,7 @@ CONFIG_BSD_PROCESS_ACCT=y
63# 65#
64CONFIG_TREE_RCU=y 66CONFIG_TREE_RCU=y
65# CONFIG_TREE_PREEMPT_RCU is not set 67# CONFIG_TREE_PREEMPT_RCU is not set
68# CONFIG_TINY_RCU is not set
66# CONFIG_RCU_TRACE is not set 69# CONFIG_RCU_TRACE is not set
67CONFIG_RCU_FANOUT=32 70CONFIG_RCU_FANOUT=32
68# CONFIG_RCU_FANOUT_EXACT is not set 71# CONFIG_RCU_FANOUT_EXACT is not set
@@ -102,6 +105,7 @@ CONFIG_EVENTFD=y
102CONFIG_SHMEM=y 105CONFIG_SHMEM=y
103CONFIG_AIO=y 106CONFIG_AIO=y
104CONFIG_HAVE_PERF_EVENTS=y 107CONFIG_HAVE_PERF_EVENTS=y
108CONFIG_PERF_USE_VMALLOC=y
105 109
106# 110#
107# Kernel Performance Events And Counters 111# Kernel Performance Events And Counters
@@ -122,6 +126,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
122CONFIG_HAVE_KPROBES=y 126CONFIG_HAVE_KPROBES=y
123CONFIG_HAVE_KRETPROBES=y 127CONFIG_HAVE_KRETPROBES=y
124CONFIG_HAVE_ARCH_TRACEHOOK=y 128CONFIG_HAVE_ARCH_TRACEHOOK=y
129CONFIG_HAVE_DMA_ATTRS=y
125CONFIG_HAVE_CLK=y 130CONFIG_HAVE_CLK=y
126CONFIG_HAVE_DMA_API_DEBUG=y 131CONFIG_HAVE_DMA_API_DEBUG=y
127 132
@@ -148,14 +153,41 @@ CONFIG_LBDAF=y
148# IO Schedulers 153# IO Schedulers
149# 154#
150CONFIG_IOSCHED_NOOP=y 155CONFIG_IOSCHED_NOOP=y
151# CONFIG_IOSCHED_AS is not set
152# CONFIG_IOSCHED_DEADLINE is not set 156# CONFIG_IOSCHED_DEADLINE is not set
153# CONFIG_IOSCHED_CFQ is not set 157# CONFIG_IOSCHED_CFQ is not set
154# CONFIG_DEFAULT_AS is not set
155# CONFIG_DEFAULT_DEADLINE is not set 158# CONFIG_DEFAULT_DEADLINE is not set
156# CONFIG_DEFAULT_CFQ is not set 159# CONFIG_DEFAULT_CFQ is not set
157CONFIG_DEFAULT_NOOP=y 160CONFIG_DEFAULT_NOOP=y
158CONFIG_DEFAULT_IOSCHED="noop" 161CONFIG_DEFAULT_IOSCHED="noop"
162# CONFIG_INLINE_SPIN_TRYLOCK is not set
163# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
164# CONFIG_INLINE_SPIN_LOCK is not set
165# CONFIG_INLINE_SPIN_LOCK_BH is not set
166# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
167# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
168# CONFIG_INLINE_SPIN_UNLOCK is not set
169# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
170# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
171# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
172# CONFIG_INLINE_READ_TRYLOCK is not set
173# CONFIG_INLINE_READ_LOCK is not set
174# CONFIG_INLINE_READ_LOCK_BH is not set
175# CONFIG_INLINE_READ_LOCK_IRQ is not set
176# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
177# CONFIG_INLINE_READ_UNLOCK is not set
178# CONFIG_INLINE_READ_UNLOCK_BH is not set
179# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
180# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
181# CONFIG_INLINE_WRITE_TRYLOCK is not set
182# CONFIG_INLINE_WRITE_LOCK is not set
183# CONFIG_INLINE_WRITE_LOCK_BH is not set
184# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
185# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
186# CONFIG_INLINE_WRITE_UNLOCK is not set
187# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
188# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
189# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
190# CONFIG_MUTEX_SPIN_ON_OWNER is not set
159CONFIG_FREEZER=y 191CONFIG_FREEZER=y
160 192
161# 193#
@@ -247,8 +279,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
247# CONFIG_PHYS_ADDR_T_64BIT is not set 279# CONFIG_PHYS_ADDR_T_64BIT is not set
248CONFIG_ZONE_DMA_FLAG=0 280CONFIG_ZONE_DMA_FLAG=0
249CONFIG_NR_QUICK=2 281CONFIG_NR_QUICK=2
250CONFIG_HAVE_MLOCK=y
251CONFIG_HAVE_MLOCKED_PAGE_BIT=y
252# CONFIG_KSM is not set 282# CONFIG_KSM is not set
253CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 283CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
254 284
@@ -280,7 +310,6 @@ CONFIG_CPU_HAS_DSP=y
280# 310#
281CONFIG_SH_TIMER_TMU=y 311CONFIG_SH_TIMER_TMU=y
282# CONFIG_SH_TIMER_CMT is not set 312# CONFIG_SH_TIMER_CMT is not set
283CONFIG_SH_PCLK_FREQ=33333333
284CONFIG_SH_CLK_CPG=y 313CONFIG_SH_CLK_CPG=y
285CONFIG_TICK_ONESHOT=y 314CONFIG_TICK_ONESHOT=y
286# CONFIG_NO_HZ is not set 315# CONFIG_NO_HZ is not set
@@ -435,14 +464,17 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
435# CONFIG_BT is not set 464# CONFIG_BT is not set
436# CONFIG_AF_RXRPC is not set 465# CONFIG_AF_RXRPC is not set
437CONFIG_WIRELESS=y 466CONFIG_WIRELESS=y
467CONFIG_WIRELESS_EXT=y
468CONFIG_WEXT_CORE=y
469CONFIG_WEXT_PROC=y
470CONFIG_WEXT_SPY=y
438CONFIG_CFG80211=y 471CONFIG_CFG80211=y
439# CONFIG_NL80211_TESTMODE is not set 472# CONFIG_NL80211_TESTMODE is not set
440# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set 473# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
441# CONFIG_CFG80211_REG_DEBUG is not set 474# CONFIG_CFG80211_REG_DEBUG is not set
442CONFIG_CFG80211_DEFAULT_PS=y 475CONFIG_CFG80211_DEFAULT_PS=y
443CONFIG_CFG80211_DEFAULT_PS_VALUE=1
444# CONFIG_WIRELESS_OLD_REGULATORY is not set 476# CONFIG_WIRELESS_OLD_REGULATORY is not set
445CONFIG_WIRELESS_EXT=y 477CONFIG_CFG80211_WEXT=y
446CONFIG_WIRELESS_EXT_SYSFS=y 478CONFIG_WIRELESS_EXT_SYSFS=y
447CONFIG_LIB80211=m 479CONFIG_LIB80211=m
448# CONFIG_LIB80211_DEBUG is not set 480# CONFIG_LIB80211_DEBUG is not set
@@ -559,6 +591,10 @@ CONFIG_MTD_RAM=y
559CONFIG_BLK_DEV=y 591CONFIG_BLK_DEV=y
560# CONFIG_BLK_DEV_COW_COMMON is not set 592# CONFIG_BLK_DEV_COW_COMMON is not set
561# CONFIG_BLK_DEV_LOOP is not set 593# CONFIG_BLK_DEV_LOOP is not set
594
595#
596# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
597#
562# CONFIG_BLK_DEV_NBD is not set 598# CONFIG_BLK_DEV_NBD is not set
563# CONFIG_BLK_DEV_UB is not set 599# CONFIG_BLK_DEV_UB is not set
564CONFIG_BLK_DEV_RAM=y 600CONFIG_BLK_DEV_RAM=y
@@ -576,6 +612,7 @@ CONFIG_MISC_DEVICES=y
576# EEPROM support 612# EEPROM support
577# 613#
578# CONFIG_EEPROM_93CX6 is not set 614# CONFIG_EEPROM_93CX6 is not set
615# CONFIG_IWMC3200TOP is not set
579CONFIG_HAVE_IDE=y 616CONFIG_HAVE_IDE=y
580# CONFIG_IDE is not set 617# CONFIG_IDE is not set
581 618
@@ -653,30 +690,29 @@ CONFIG_MII=y
653# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 690# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
654# CONFIG_B44 is not set 691# CONFIG_B44 is not set
655# CONFIG_KS8842 is not set 692# CONFIG_KS8842 is not set
693# CONFIG_KS8851_MLL is not set
656# CONFIG_NETDEV_1000 is not set 694# CONFIG_NETDEV_1000 is not set
657# CONFIG_NETDEV_10000 is not set 695# CONFIG_NETDEV_10000 is not set
658CONFIG_WLAN=y 696CONFIG_WLAN=y
659# CONFIG_WLAN_PRE80211 is not set
660CONFIG_WLAN_80211=y
661CONFIG_LIBERTAS=m
662# CONFIG_LIBERTAS_USB is not set
663CONFIG_LIBERTAS_SDIO=m
664CONFIG_LIBERTAS_DEBUG=y
665# CONFIG_LIBERTAS_THINFIRM is not set 697# CONFIG_LIBERTAS_THINFIRM is not set
666# CONFIG_AT76C50X_USB is not set 698# CONFIG_AT76C50X_USB is not set
667# CONFIG_USB_ZD1201 is not set 699# CONFIG_USB_ZD1201 is not set
668# CONFIG_USB_NET_RNDIS_WLAN is not set 700# CONFIG_USB_NET_RNDIS_WLAN is not set
669# CONFIG_RTL8187 is not set 701# CONFIG_RTL8187 is not set
670# CONFIG_MAC80211_HWSIM is not set 702# CONFIG_MAC80211_HWSIM is not set
671# CONFIG_P54_COMMON is not set
672# CONFIG_ATH_COMMON is not set 703# CONFIG_ATH_COMMON is not set
673# CONFIG_HOSTAP is not set
674# CONFIG_B43 is not set 704# CONFIG_B43 is not set
675# CONFIG_B43LEGACY is not set 705# CONFIG_B43LEGACY is not set
676# CONFIG_ZD1211RW is not set 706# CONFIG_HOSTAP is not set
707# CONFIG_IWM is not set
708CONFIG_LIBERTAS=m
709# CONFIG_LIBERTAS_USB is not set
710CONFIG_LIBERTAS_SDIO=m
711CONFIG_LIBERTAS_DEBUG=y
712# CONFIG_P54_COMMON is not set
677# CONFIG_RT2X00 is not set 713# CONFIG_RT2X00 is not set
678# CONFIG_WL12XX is not set 714# CONFIG_WL12XX is not set
679# CONFIG_IWM is not set 715# CONFIG_ZD1211RW is not set
680 716
681# 717#
682# Enable WiMAX (Networking options) to see the WiMAX drivers 718# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -718,6 +754,7 @@ CONFIG_USB_NET_CDCETHER=y
718CONFIG_INPUT=y 754CONFIG_INPUT=y
719# CONFIG_INPUT_FF_MEMLESS is not set 755# CONFIG_INPUT_FF_MEMLESS is not set
720# CONFIG_INPUT_POLLDEV is not set 756# CONFIG_INPUT_POLLDEV is not set
757# CONFIG_INPUT_SPARSEKMAP is not set
721 758
722# 759#
723# Userland interfaces 760# Userland interfaces
@@ -810,6 +847,7 @@ CONFIG_SSB_POSSIBLE=y
810# 847#
811# CONFIG_MFD_CORE is not set 848# CONFIG_MFD_CORE is not set
812# CONFIG_MFD_SM501 is not set 849# CONFIG_MFD_SM501 is not set
850# CONFIG_MFD_SH_MOBILE_SDHI is not set
813# CONFIG_HTC_PASIC3 is not set 851# CONFIG_HTC_PASIC3 is not set
814# CONFIG_MFD_TMIO is not set 852# CONFIG_MFD_TMIO is not set
815# CONFIG_REGULATOR is not set 853# CONFIG_REGULATOR is not set
@@ -951,6 +989,7 @@ CONFIG_MMC_BLOCK_BOUNCE=y
951# CONFIG_MMC_SDHCI is not set 989# CONFIG_MMC_SDHCI is not set
952# CONFIG_MMC_AT91 is not set 990# CONFIG_MMC_AT91 is not set
953# CONFIG_MMC_ATMELMCI is not set 991# CONFIG_MMC_ATMELMCI is not set
992# CONFIG_MMC_TMIO is not set
954# CONFIG_MEMSTICK is not set 993# CONFIG_MEMSTICK is not set
955# CONFIG_NEW_LEDS is not set 994# CONFIG_NEW_LEDS is not set
956# CONFIG_ACCESSIBILITY is not set 995# CONFIG_ACCESSIBILITY is not set
@@ -1133,7 +1172,7 @@ CONFIG_FRAME_WARN=1024
1133# CONFIG_DEBUG_KERNEL is not set 1172# CONFIG_DEBUG_KERNEL is not set
1134# CONFIG_SLUB_DEBUG_ON is not set 1173# CONFIG_SLUB_DEBUG_ON is not set
1135# CONFIG_SLUB_STATS is not set 1174# CONFIG_SLUB_STATS is not set
1136# CONFIG_DEBUG_BUGVERBOSE is not set 1175CONFIG_DEBUG_BUGVERBOSE=y
1137# CONFIG_DEBUG_MEMORY_INIT is not set 1176# CONFIG_DEBUG_MEMORY_INIT is not set
1138# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1177# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1139# CONFIG_LATENCYTOP is not set 1178# CONFIG_LATENCYTOP is not set
@@ -1150,7 +1189,6 @@ CONFIG_TRACING_SUPPORT=y
1150# CONFIG_SAMPLES is not set 1189# CONFIG_SAMPLES is not set
1151CONFIG_HAVE_ARCH_KGDB=y 1190CONFIG_HAVE_ARCH_KGDB=y
1152# CONFIG_SH_STANDARD_BIOS is not set 1191# CONFIG_SH_STANDARD_BIOS is not set
1153# CONFIG_EARLY_SCIF_CONSOLE is not set
1154# CONFIG_DWARF_UNWINDER is not set 1192# CONFIG_DWARF_UNWINDER is not set
1155 1193
1156# 1194#
@@ -1159,7 +1197,11 @@ CONFIG_HAVE_ARCH_KGDB=y
1159# CONFIG_KEYS is not set 1197# CONFIG_KEYS is not set
1160# CONFIG_SECURITY is not set 1198# CONFIG_SECURITY is not set
1161# CONFIG_SECURITYFS is not set 1199# CONFIG_SECURITYFS is not set
1162# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1200# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1201# CONFIG_DEFAULT_SECURITY_SMACK is not set
1202# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1203CONFIG_DEFAULT_SECURITY_DAC=y
1204CONFIG_DEFAULT_SECURITY=""
1163CONFIG_CRYPTO=y 1205CONFIG_CRYPTO=y
1164 1206
1165# 1207#
diff --git a/arch/sh/configs/urquell_defconfig b/arch/sh/configs/urquell_defconfig
index 9f8aee5bc559..23bda1916f4d 100644
--- a/arch/sh/configs/urquell_defconfig
+++ b/arch/sh/configs/urquell_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 3# Linux kernel version: 2.6.33-rc2
4# Thu Sep 24 19:46:13 2009 4# Mon Jan 4 15:27:53 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -20,6 +20,7 @@ CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set 21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22CONFIG_ARCH_HIBERNATION_POSSIBLE=y 22CONFIG_ARCH_HIBERNATION_POSSIBLE=y
23CONFIG_SYS_SUPPORTS_HUGETLBFS=y
23CONFIG_SYS_SUPPORTS_SMP=y 24CONFIG_SYS_SUPPORTS_SMP=y
24CONFIG_SYS_SUPPORTS_NUMA=y 25CONFIG_SYS_SUPPORTS_NUMA=y
25CONFIG_SYS_SUPPORTS_PCI=y 26CONFIG_SYS_SUPPORTS_PCI=y
@@ -32,6 +33,8 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
32CONFIG_ARCH_NO_VIRT_TO_BUS=y 33CONFIG_ARCH_NO_VIRT_TO_BUS=y
33CONFIG_ARCH_HAS_DEFAULT_IDLE=y 34CONFIG_ARCH_HAS_DEFAULT_IDLE=y
34CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 35CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
36CONFIG_DMA_COHERENT=y
37# CONFIG_DMA_NONCOHERENT is not set
35CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 38CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
36CONFIG_CONSTRUCTORS=y 39CONFIG_CONSTRUCTORS=y
37 40
@@ -66,6 +69,7 @@ CONFIG_AUDIT_TREE=y
66# 69#
67CONFIG_TREE_RCU=y 70CONFIG_TREE_RCU=y
68# CONFIG_TREE_PREEMPT_RCU is not set 71# CONFIG_TREE_PREEMPT_RCU is not set
72# CONFIG_TINY_RCU is not set
69# CONFIG_RCU_TRACE is not set 73# CONFIG_RCU_TRACE is not set
70CONFIG_RCU_FANOUT=32 74CONFIG_RCU_FANOUT=32
71# CONFIG_RCU_FANOUT_EXACT is not set 75# CONFIG_RCU_FANOUT_EXACT is not set
@@ -120,12 +124,14 @@ CONFIG_EVENTFD=y
120CONFIG_SHMEM=y 124CONFIG_SHMEM=y
121CONFIG_AIO=y 125CONFIG_AIO=y
122CONFIG_HAVE_PERF_EVENTS=y 126CONFIG_HAVE_PERF_EVENTS=y
127CONFIG_PERF_USE_VMALLOC=y
123 128
124# 129#
125# Kernel Performance Events And Counters 130# Kernel Performance Events And Counters
126# 131#
127CONFIG_PERF_EVENTS=y 132CONFIG_PERF_EVENTS=y
128# CONFIG_PERF_COUNTERS is not set 133# CONFIG_PERF_COUNTERS is not set
134# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
129CONFIG_VM_EVENT_COUNTERS=y 135CONFIG_VM_EVENT_COUNTERS=y
130CONFIG_PCI_QUIRKS=y 136CONFIG_PCI_QUIRKS=y
131CONFIG_COMPAT_BRK=y 137CONFIG_COMPAT_BRK=y
@@ -140,6 +146,7 @@ CONFIG_HAVE_IOREMAP_PROT=y
140CONFIG_HAVE_KPROBES=y 146CONFIG_HAVE_KPROBES=y
141CONFIG_HAVE_KRETPROBES=y 147CONFIG_HAVE_KRETPROBES=y
142CONFIG_HAVE_ARCH_TRACEHOOK=y 148CONFIG_HAVE_ARCH_TRACEHOOK=y
149CONFIG_HAVE_DMA_ATTRS=y
143CONFIG_HAVE_CLK=y 150CONFIG_HAVE_CLK=y
144CONFIG_HAVE_DMA_API_DEBUG=y 151CONFIG_HAVE_DMA_API_DEBUG=y
145 152
@@ -162,19 +169,48 @@ CONFIG_BLOCK=y
162CONFIG_LBDAF=y 169CONFIG_LBDAF=y
163# CONFIG_BLK_DEV_BSG is not set 170# CONFIG_BLK_DEV_BSG is not set
164# CONFIG_BLK_DEV_INTEGRITY is not set 171# CONFIG_BLK_DEV_INTEGRITY is not set
172# CONFIG_BLK_CGROUP is not set
165 173
166# 174#
167# IO Schedulers 175# IO Schedulers
168# 176#
169CONFIG_IOSCHED_NOOP=y 177CONFIG_IOSCHED_NOOP=y
170CONFIG_IOSCHED_AS=y
171CONFIG_IOSCHED_DEADLINE=y 178CONFIG_IOSCHED_DEADLINE=y
172CONFIG_IOSCHED_CFQ=y 179CONFIG_IOSCHED_CFQ=y
173CONFIG_DEFAULT_AS=y 180# CONFIG_CFQ_GROUP_IOSCHED is not set
174# CONFIG_DEFAULT_DEADLINE is not set 181# CONFIG_DEFAULT_DEADLINE is not set
175# CONFIG_DEFAULT_CFQ is not set 182CONFIG_DEFAULT_CFQ=y
176# CONFIG_DEFAULT_NOOP is not set 183# CONFIG_DEFAULT_NOOP is not set
177CONFIG_DEFAULT_IOSCHED="anticipatory" 184CONFIG_DEFAULT_IOSCHED="cfq"
185# CONFIG_INLINE_SPIN_TRYLOCK is not set
186# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
187# CONFIG_INLINE_SPIN_LOCK is not set
188# CONFIG_INLINE_SPIN_LOCK_BH is not set
189# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
190# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
191CONFIG_INLINE_SPIN_UNLOCK=y
192# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
193CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
194# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
195# CONFIG_INLINE_READ_TRYLOCK is not set
196# CONFIG_INLINE_READ_LOCK is not set
197# CONFIG_INLINE_READ_LOCK_BH is not set
198# CONFIG_INLINE_READ_LOCK_IRQ is not set
199# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
200CONFIG_INLINE_READ_UNLOCK=y
201# CONFIG_INLINE_READ_UNLOCK_BH is not set
202CONFIG_INLINE_READ_UNLOCK_IRQ=y
203# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
204# CONFIG_INLINE_WRITE_TRYLOCK is not set
205# CONFIG_INLINE_WRITE_LOCK is not set
206# CONFIG_INLINE_WRITE_LOCK_BH is not set
207# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
208# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
209CONFIG_INLINE_WRITE_UNLOCK=y
210# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
211CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
212# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
213# CONFIG_MUTEX_SPIN_ON_OWNER is not set
178CONFIG_FREEZER=y 214CONFIG_FREEZER=y
179 215
180# 216#
@@ -229,6 +265,7 @@ CONFIG_FORCE_MAX_ZONEORDER=11
229CONFIG_MEMORY_START=0x08000000 265CONFIG_MEMORY_START=0x08000000
230CONFIG_MEMORY_SIZE=0x08000000 266CONFIG_MEMORY_SIZE=0x08000000
231CONFIG_29BIT=y 267CONFIG_29BIT=y
268# CONFIG_PMB_ENABLE is not set
232# CONFIG_X2TLB is not set 269# CONFIG_X2TLB is not set
233CONFIG_VSYSCALL=y 270CONFIG_VSYSCALL=y
234# CONFIG_NUMA is not set 271# CONFIG_NUMA is not set
@@ -263,8 +300,6 @@ CONFIG_MIGRATION=y
263# CONFIG_PHYS_ADDR_T_64BIT is not set 300# CONFIG_PHYS_ADDR_T_64BIT is not set
264CONFIG_ZONE_DMA_FLAG=0 301CONFIG_ZONE_DMA_FLAG=0
265CONFIG_NR_QUICK=2 302CONFIG_NR_QUICK=2
266CONFIG_HAVE_MLOCK=y
267CONFIG_HAVE_MLOCKED_PAGE_BIT=y
268# CONFIG_KSM is not set 303# CONFIG_KSM is not set
269CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 304CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
270 305
@@ -356,7 +391,6 @@ CONFIG_ENTRY_OFFSET=0x00001000
356# Bus options 391# Bus options
357# 392#
358CONFIG_PCI=y 393CONFIG_PCI=y
359# CONFIG_SH_PCIDMA_NONCOHERENT is not set
360CONFIG_PCIEPORTBUS=y 394CONFIG_PCIEPORTBUS=y
361CONFIG_PCIEAER=y 395CONFIG_PCIEAER=y
362# CONFIG_PCIE_ECRC is not set 396# CONFIG_PCIE_ECRC is not set
@@ -469,10 +503,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
469# CONFIG_AF_RXRPC is not set 503# CONFIG_AF_RXRPC is not set
470CONFIG_WIRELESS=y 504CONFIG_WIRELESS=y
471# CONFIG_CFG80211 is not set 505# CONFIG_CFG80211 is not set
472CONFIG_CFG80211_DEFAULT_PS_VALUE=0
473# CONFIG_WIRELESS_OLD_REGULATORY is not set
474CONFIG_WIRELESS_EXT=y
475CONFIG_WIRELESS_EXT_SYSFS=y
476# CONFIG_LIB80211 is not set 506# CONFIG_LIB80211 is not set
477 507
478# 508#
@@ -588,6 +618,10 @@ CONFIG_BLK_DEV=y
588# CONFIG_BLK_DEV_UMEM is not set 618# CONFIG_BLK_DEV_UMEM is not set
589# CONFIG_BLK_DEV_COW_COMMON is not set 619# CONFIG_BLK_DEV_COW_COMMON is not set
590# CONFIG_BLK_DEV_LOOP is not set 620# CONFIG_BLK_DEV_LOOP is not set
621
622#
623# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
624#
591# CONFIG_BLK_DEV_NBD is not set 625# CONFIG_BLK_DEV_NBD is not set
592# CONFIG_BLK_DEV_SX8 is not set 626# CONFIG_BLK_DEV_SX8 is not set
593# CONFIG_BLK_DEV_UB is not set 627# CONFIG_BLK_DEV_UB is not set
@@ -688,15 +722,16 @@ CONFIG_ATA_SFF=y
688# CONFIG_PATA_NS87415 is not set 722# CONFIG_PATA_NS87415 is not set
689# CONFIG_PATA_OPTI is not set 723# CONFIG_PATA_OPTI is not set
690# CONFIG_PATA_OPTIDMA is not set 724# CONFIG_PATA_OPTIDMA is not set
725# CONFIG_PATA_PDC2027X is not set
691# CONFIG_PATA_PDC_OLD is not set 726# CONFIG_PATA_PDC_OLD is not set
692# CONFIG_PATA_RADISYS is not set 727# CONFIG_PATA_RADISYS is not set
693# CONFIG_PATA_RDC is not set 728# CONFIG_PATA_RDC is not set
694# CONFIG_PATA_RZ1000 is not set 729# CONFIG_PATA_RZ1000 is not set
695# CONFIG_PATA_SC1200 is not set 730# CONFIG_PATA_SC1200 is not set
696# CONFIG_PATA_SERVERWORKS is not set 731# CONFIG_PATA_SERVERWORKS is not set
697# CONFIG_PATA_PDC2027X is not set
698# CONFIG_PATA_SIL680 is not set 732# CONFIG_PATA_SIL680 is not set
699# CONFIG_PATA_SIS is not set 733# CONFIG_PATA_SIS is not set
734# CONFIG_PATA_TOSHIBA is not set
700# CONFIG_PATA_VIA is not set 735# CONFIG_PATA_VIA is not set
701# CONFIG_PATA_WINBOND is not set 736# CONFIG_PATA_WINBOND is not set
702# CONFIG_PATA_PLATFORM is not set 737# CONFIG_PATA_PLATFORM is not set
@@ -787,6 +822,7 @@ CONFIG_8139CP=y
787# CONFIG_SUNDANCE is not set 822# CONFIG_SUNDANCE is not set
788# CONFIG_TLAN is not set 823# CONFIG_TLAN is not set
789# CONFIG_KS8842 is not set 824# CONFIG_KS8842 is not set
825# CONFIG_KS8851_MLL is not set
790# CONFIG_VIA_RHINE is not set 826# CONFIG_VIA_RHINE is not set
791# CONFIG_SC92031 is not set 827# CONFIG_SC92031 is not set
792# CONFIG_ATL2 is not set 828# CONFIG_ATL2 is not set
@@ -818,8 +854,10 @@ CONFIG_SKY2_DEBUG=y
818# CONFIG_NETDEV_10000 is not set 854# CONFIG_NETDEV_10000 is not set
819# CONFIG_TR is not set 855# CONFIG_TR is not set
820CONFIG_WLAN=y 856CONFIG_WLAN=y
821# CONFIG_WLAN_PRE80211 is not set 857# CONFIG_ATMEL is not set
822# CONFIG_WLAN_80211 is not set 858# CONFIG_PRISM54 is not set
859# CONFIG_USB_ZD1201 is not set
860# CONFIG_HOSTAP is not set
823 861
824# 862#
825# Enable WiMAX (Networking options) to see the WiMAX drivers 863# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -842,6 +880,7 @@ CONFIG_WLAN=y
842# CONFIG_NETCONSOLE is not set 880# CONFIG_NETCONSOLE is not set
843# CONFIG_NETPOLL is not set 881# CONFIG_NETPOLL is not set
844# CONFIG_NET_POLL_CONTROLLER is not set 882# CONFIG_NET_POLL_CONTROLLER is not set
883# CONFIG_VMXNET3 is not set
845# CONFIG_ISDN is not set 884# CONFIG_ISDN is not set
846# CONFIG_PHONE is not set 885# CONFIG_PHONE is not set
847 886
@@ -851,6 +890,7 @@ CONFIG_WLAN=y
851CONFIG_INPUT=y 890CONFIG_INPUT=y
852CONFIG_INPUT_FF_MEMLESS=m 891CONFIG_INPUT_FF_MEMLESS=m
853# CONFIG_INPUT_POLLDEV is not set 892# CONFIG_INPUT_POLLDEV is not set
893# CONFIG_INPUT_SPARSEKMAP is not set
854 894
855# 895#
856# Userland interfaces 896# Userland interfaces
@@ -976,11 +1016,6 @@ CONFIG_I2C_ALGOPCA=y
976# CONFIG_I2C_TINY_USB is not set 1016# CONFIG_I2C_TINY_USB is not set
977 1017
978# 1018#
979# Graphics adapter I2C/DDC channel drivers
980#
981# CONFIG_I2C_VOODOO3 is not set
982
983#
984# Other I2C/SMBus bus drivers 1019# Other I2C/SMBus bus drivers
985# 1020#
986CONFIG_I2C_PCA_PLATFORM=y 1021CONFIG_I2C_PCA_PLATFORM=y
@@ -989,7 +1024,6 @@ CONFIG_I2C_PCA_PLATFORM=y
989# 1024#
990# Miscellaneous I2C Chip support 1025# Miscellaneous I2C Chip support
991# 1026#
992# CONFIG_DS1682 is not set
993# CONFIG_SENSORS_TSL2550 is not set 1027# CONFIG_SENSORS_TSL2550 is not set
994# CONFIG_I2C_DEBUG_CORE is not set 1028# CONFIG_I2C_DEBUG_CORE is not set
995# CONFIG_I2C_DEBUG_ALGO is not set 1029# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1020,6 +1054,7 @@ CONFIG_GPIOLIB=y
1020# 1054#
1021# PCI GPIO expanders: 1055# PCI GPIO expanders:
1022# 1056#
1057# CONFIG_GPIO_CS5535 is not set
1023# CONFIG_GPIO_BT8XX is not set 1058# CONFIG_GPIO_BT8XX is not set
1024# CONFIG_GPIO_LANGWELL is not set 1059# CONFIG_GPIO_LANGWELL is not set
1025 1060
@@ -1062,6 +1097,7 @@ CONFIG_HWMON=y
1062# CONFIG_SENSORS_GL520SM is not set 1097# CONFIG_SENSORS_GL520SM is not set
1063# CONFIG_SENSORS_IT87 is not set 1098# CONFIG_SENSORS_IT87 is not set
1064# CONFIG_SENSORS_LM63 is not set 1099# CONFIG_SENSORS_LM63 is not set
1100# CONFIG_SENSORS_LM73 is not set
1065# CONFIG_SENSORS_LM75 is not set 1101# CONFIG_SENSORS_LM75 is not set
1066# CONFIG_SENSORS_LM77 is not set 1102# CONFIG_SENSORS_LM77 is not set
1067# CONFIG_SENSORS_LM78 is not set 1103# CONFIG_SENSORS_LM78 is not set
@@ -1101,6 +1137,7 @@ CONFIG_HWMON=y
1101# CONFIG_SENSORS_W83L786NG is not set 1137# CONFIG_SENSORS_W83L786NG is not set
1102# CONFIG_SENSORS_W83627HF is not set 1138# CONFIG_SENSORS_W83627HF is not set
1103# CONFIG_SENSORS_W83627EHF is not set 1139# CONFIG_SENSORS_W83627EHF is not set
1140# CONFIG_SENSORS_LIS3_I2C is not set
1104# CONFIG_THERMAL is not set 1141# CONFIG_THERMAL is not set
1105# CONFIG_WATCHDOG is not set 1142# CONFIG_WATCHDOG is not set
1106CONFIG_SSB_POSSIBLE=y 1143CONFIG_SSB_POSSIBLE=y
@@ -1116,16 +1153,19 @@ CONFIG_SSB_POSSIBLE=y
1116# CONFIG_MFD_CORE is not set 1153# CONFIG_MFD_CORE is not set
1117CONFIG_MFD_SM501=y 1154CONFIG_MFD_SM501=y
1118# CONFIG_MFD_SM501_GPIO is not set 1155# CONFIG_MFD_SM501_GPIO is not set
1156# CONFIG_MFD_SH_MOBILE_SDHI is not set
1119# CONFIG_HTC_PASIC3 is not set 1157# CONFIG_HTC_PASIC3 is not set
1120# CONFIG_TPS65010 is not set 1158# CONFIG_TPS65010 is not set
1121# CONFIG_TWL4030_CORE is not set 1159# CONFIG_TWL4030_CORE is not set
1122# CONFIG_MFD_TMIO is not set 1160# CONFIG_MFD_TMIO is not set
1123# CONFIG_PMIC_DA903X is not set 1161# CONFIG_PMIC_DA903X is not set
1162# CONFIG_PMIC_ADP5520 is not set
1124# CONFIG_MFD_WM8400 is not set 1163# CONFIG_MFD_WM8400 is not set
1125# CONFIG_MFD_WM831X is not set 1164# CONFIG_MFD_WM831X is not set
1126# CONFIG_MFD_WM8350_I2C is not set 1165# CONFIG_MFD_WM8350_I2C is not set
1127# CONFIG_MFD_PCF50633 is not set 1166# CONFIG_MFD_PCF50633 is not set
1128# CONFIG_AB3100_CORE is not set 1167# CONFIG_AB3100_CORE is not set
1168# CONFIG_MFD_88PM8607 is not set
1129# CONFIG_REGULATOR is not set 1169# CONFIG_REGULATOR is not set
1130CONFIG_MEDIA_SUPPORT=y 1170CONFIG_MEDIA_SUPPORT=y
1131 1171
@@ -1139,6 +1179,8 @@ CONFIG_MEDIA_SUPPORT=y
1139# 1179#
1140# Multimedia drivers 1180# Multimedia drivers
1141# 1181#
1182CONFIG_IR_CORE=y
1183CONFIG_VIDEO_IR=y
1142# CONFIG_DAB is not set 1184# CONFIG_DAB is not set
1143 1185
1144# 1186#
@@ -1417,6 +1459,7 @@ CONFIG_RTC_INTF_DEV=y
1417# CONFIG_RTC_DRV_PCF8563 is not set 1459# CONFIG_RTC_DRV_PCF8563 is not set
1418# CONFIG_RTC_DRV_PCF8583 is not set 1460# CONFIG_RTC_DRV_PCF8583 is not set
1419# CONFIG_RTC_DRV_M41T80 is not set 1461# CONFIG_RTC_DRV_M41T80 is not set
1462# CONFIG_RTC_DRV_BQ32K is not set
1420# CONFIG_RTC_DRV_S35390A is not set 1463# CONFIG_RTC_DRV_S35390A is not set
1421# CONFIG_RTC_DRV_FM3130 is not set 1464# CONFIG_RTC_DRV_FM3130 is not set
1422# CONFIG_RTC_DRV_RX8581 is not set 1465# CONFIG_RTC_DRV_RX8581 is not set
@@ -1437,7 +1480,9 @@ CONFIG_RTC_INTF_DEV=y
1437# CONFIG_RTC_DRV_M48T86 is not set 1480# CONFIG_RTC_DRV_M48T86 is not set
1438# CONFIG_RTC_DRV_M48T35 is not set 1481# CONFIG_RTC_DRV_M48T35 is not set
1439# CONFIG_RTC_DRV_M48T59 is not set 1482# CONFIG_RTC_DRV_M48T59 is not set
1483# CONFIG_RTC_DRV_MSM6242 is not set
1440# CONFIG_RTC_DRV_BQ4802 is not set 1484# CONFIG_RTC_DRV_BQ4802 is not set
1485# CONFIG_RTC_DRV_RP5C01 is not set
1441# CONFIG_RTC_DRV_V3020 is not set 1486# CONFIG_RTC_DRV_V3020 is not set
1442 1487
1443# 1488#
@@ -1466,7 +1511,6 @@ CONFIG_EXT3_FS_XATTR=y
1466# CONFIG_EXT3_FS_POSIX_ACL is not set 1511# CONFIG_EXT3_FS_POSIX_ACL is not set
1467# CONFIG_EXT3_FS_SECURITY is not set 1512# CONFIG_EXT3_FS_SECURITY is not set
1468CONFIG_EXT4_FS=y 1513CONFIG_EXT4_FS=y
1469# CONFIG_EXT4DEV_COMPAT is not set
1470CONFIG_EXT4_FS_XATTR=y 1514CONFIG_EXT4_FS_XATTR=y
1471# CONFIG_EXT4_FS_POSIX_ACL is not set 1515# CONFIG_EXT4_FS_POSIX_ACL is not set
1472# CONFIG_EXT4_FS_SECURITY is not set 1516# CONFIG_EXT4_FS_SECURITY is not set
@@ -1687,9 +1731,6 @@ CONFIG_TRACING_SUPPORT=y
1687CONFIG_HAVE_ARCH_KGDB=y 1731CONFIG_HAVE_ARCH_KGDB=y
1688# CONFIG_KGDB is not set 1732# CONFIG_KGDB is not set
1689# CONFIG_SH_STANDARD_BIOS is not set 1733# CONFIG_SH_STANDARD_BIOS is not set
1690CONFIG_EARLY_SCIF_CONSOLE=y
1691CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffeb0000
1692CONFIG_EARLY_PRINTK=y
1693# CONFIG_STACK_DEBUG is not set 1734# CONFIG_STACK_DEBUG is not set
1694# CONFIG_DEBUG_STACK_USAGE is not set 1735# CONFIG_DEBUG_STACK_USAGE is not set
1695# CONFIG_4KSTACKS is not set 1736# CONFIG_4KSTACKS is not set
@@ -1703,7 +1744,11 @@ CONFIG_EARLY_PRINTK=y
1703# CONFIG_KEYS is not set 1744# CONFIG_KEYS is not set
1704# CONFIG_SECURITY is not set 1745# CONFIG_SECURITY is not set
1705# CONFIG_SECURITYFS is not set 1746# CONFIG_SECURITYFS is not set
1706# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1747# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1748# CONFIG_DEFAULT_SECURITY_SMACK is not set
1749# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1750CONFIG_DEFAULT_SECURITY_DAC=y
1751CONFIG_DEFAULT_SECURITY=""
1707CONFIG_CRYPTO=y 1752CONFIG_CRYPTO=y
1708 1753
1709# 1754#
diff --git a/arch/sh/include/asm/timex.h b/arch/sh/include/asm/timex.h
index b556d49e5f2b..18bf06d9c764 100644
--- a/arch/sh/include/asm/timex.h
+++ b/arch/sh/include/asm/timex.h
@@ -6,7 +6,17 @@
6#ifndef __ASM_SH_TIMEX_H 6#ifndef __ASM_SH_TIMEX_H
7#define __ASM_SH_TIMEX_H 7#define __ASM_SH_TIMEX_H
8 8
9/*
10 * Only parts using the legacy CPG code for their clock framework
11 * implementation need to define their own Pclk value. If provided, this
12 * can be used for accurately setting CLOCK_TICK_RATE, otherwise we
13 * simply fall back on the i8253 PIT value.
14 */
15#ifdef CONFIG_SH_PCLK_FREQ
9#define CLOCK_TICK_RATE (CONFIG_SH_PCLK_FREQ / 4) /* Underlying HZ */ 16#define CLOCK_TICK_RATE (CONFIG_SH_PCLK_FREQ / 4) /* Underlying HZ */
17#else
18#define CLOCK_TICK_RATE 1193180
19#endif
10 20
11#include <asm-generic/timex.h> 21#include <asm-generic/timex.h>
12 22
diff --git a/arch/sh/include/asm/unistd_32.h b/arch/sh/include/asm/unistd_32.h
index f18c4f9baf27..365744b05269 100644
--- a/arch/sh/include/asm/unistd_32.h
+++ b/arch/sh/include/asm/unistd_32.h
@@ -345,12 +345,13 @@
345#define __NR_pwritev 334 345#define __NR_pwritev 334
346#define __NR_rt_tgsigqueueinfo 335 346#define __NR_rt_tgsigqueueinfo 335
347#define __NR_perf_event_open 336 347#define __NR_perf_event_open 336
348#define __NR_recvmmsg 337
349 348
350#define NR_syscalls 338 349#define NR_syscalls 337
351 350
352#ifdef __KERNEL__ 351#ifdef __KERNEL__
353 352
353#define __IGNORE_recvmmsg
354
354#define __ARCH_WANT_IPC_PARSE_VERSION 355#define __ARCH_WANT_IPC_PARSE_VERSION
355#define __ARCH_WANT_OLD_READDIR 356#define __ARCH_WANT_OLD_READDIR
356#define __ARCH_WANT_OLD_STAT 357#define __ARCH_WANT_OLD_STAT
diff --git a/arch/sh/include/asm/unistd_64.h b/arch/sh/include/asm/unistd_64.h
index 3e7645d11130..25de158aac3a 100644
--- a/arch/sh/include/asm/unistd_64.h
+++ b/arch/sh/include/asm/unistd_64.h
@@ -386,10 +386,11 @@
386#define __NR_rt_tgsigqueueinfo 363 386#define __NR_rt_tgsigqueueinfo 363
387#define __NR_perf_event_open 364 387#define __NR_perf_event_open 364
388#define __NR_recvmmsg 365 388#define __NR_recvmmsg 365
389#define __NR_accept4 366
389 390
390#ifdef __KERNEL__ 391#ifdef __KERNEL__
391 392
392#define NR_syscalls 366 393#define NR_syscalls 367
393 394
394#define __ARCH_WANT_IPC_PARSE_VERSION 395#define __ARCH_WANT_IPC_PARSE_VERSION
395#define __ARCH_WANT_OLD_READDIR 396#define __ARCH_WANT_OLD_READDIR
diff --git a/arch/sh/kernel/cpu/clock.c b/arch/sh/kernel/cpu/clock.c
index f3a46be2ae81..83da5debeedf 100644
--- a/arch/sh/kernel/cpu/clock.c
+++ b/arch/sh/kernel/cpu/clock.c
@@ -598,7 +598,7 @@ static struct dentry *clk_debugfs_root;
598static int clk_debugfs_register_one(struct clk *c) 598static int clk_debugfs_register_one(struct clk *c)
599{ 599{
600 int err; 600 int err;
601 struct dentry *d, *child; 601 struct dentry *d, *child, *child_tmp;
602 struct clk *pa = c->parent; 602 struct clk *pa = c->parent;
603 char s[255]; 603 char s[255];
604 char *p = s; 604 char *p = s;
@@ -630,7 +630,7 @@ static int clk_debugfs_register_one(struct clk *c)
630 630
631err_out: 631err_out:
632 d = c->dentry; 632 d = c->dentry;
633 list_for_each_entry(child, &d->d_subdirs, d_u.d_child) 633 list_for_each_entry_safe(child, child_tmp, &d->d_subdirs, d_u.d_child)
634 debugfs_remove(child); 634 debugfs_remove(child);
635 debugfs_remove(c->dentry); 635 debugfs_remove(c->dentry);
636 return err; 636 return err;
diff --git a/arch/sh/kernel/cpu/sh3/entry.S b/arch/sh/kernel/cpu/sh3/entry.S
index 3f7e2a22c7c2..f6a389c996cb 100644
--- a/arch/sh/kernel/cpu/sh3/entry.S
+++ b/arch/sh/kernel/cpu/sh3/entry.S
@@ -132,7 +132,6 @@ ENTRY(tlb_protection_violation_store)
132 mov #1, r5 132 mov #1, r5
133 133
134call_handle_tlbmiss: 134call_handle_tlbmiss:
135 setup_frame_reg
136 mov.l 1f, r0 135 mov.l 1f, r0
137 mov r5, r8 136 mov r5, r8
138 mov.l @r0, r6 137 mov.l @r0, r6
@@ -365,6 +364,8 @@ handle_exception:
365 mov.l @k2, k2 ! read out vector and keep in k2 364 mov.l @k2, k2 ! read out vector and keep in k2
366 365
367handle_exception_special: 366handle_exception_special:
367 setup_frame_reg
368
368 ! Setup return address and jump to exception handler 369 ! Setup return address and jump to exception handler
369 mov.l 7f, r9 ! fetch return address 370 mov.l 7f, r9 ! fetch return address
370 stc r2_bank, r0 ! k2 (vector) 371 stc r2_bank, r0 ! k2 (vector)
diff --git a/arch/sh/kernel/dwarf.c b/arch/sh/kernel/dwarf.c
index 3576b709f052..e51168064e56 100644
--- a/arch/sh/kernel/dwarf.c
+++ b/arch/sh/kernel/dwarf.c
@@ -540,6 +540,8 @@ void dwarf_free_frame(struct dwarf_frame *frame)
540 mempool_free(frame, dwarf_frame_pool); 540 mempool_free(frame, dwarf_frame_pool);
541} 541}
542 542
543extern void ret_from_irq(void);
544
543/** 545/**
544 * dwarf_unwind_stack - unwind the stack 546 * dwarf_unwind_stack - unwind the stack
545 * 547 *
@@ -678,6 +680,24 @@ struct dwarf_frame * dwarf_unwind_stack(unsigned long pc,
678 addr = frame->cfa + reg->addr; 680 addr = frame->cfa + reg->addr;
679 frame->return_addr = __raw_readl(addr); 681 frame->return_addr = __raw_readl(addr);
680 682
683 /*
684 * Ah, the joys of unwinding through interrupts.
685 *
686 * Interrupts are tricky - the DWARF info needs to be _really_
687 * accurate and unfortunately I'm seeing a lot of bogus DWARF
688 * info. For example, I've seen interrupts occur in epilogues
689 * just after the frame pointer (r14) had been restored. The
690 * problem was that the DWARF info claimed that the CFA could be
691 * reached by using the value of the frame pointer before it was
692 * restored.
693 *
694 * So until the compiler can be trusted to produce reliable
695 * DWARF info when it really matters, let's stop unwinding once
696 * we've calculated the function that was interrupted.
697 */
698 if (prev && prev->pc == (unsigned long)ret_from_irq)
699 frame->return_addr = 0;
700
681 return frame; 701 return frame;
682 702
683bail: 703bail:
@@ -892,18 +912,18 @@ static struct unwinder dwarf_unwinder = {
892 912
893static void dwarf_unwinder_cleanup(void) 913static void dwarf_unwinder_cleanup(void)
894{ 914{
895 struct dwarf_cie *cie; 915 struct dwarf_cie *cie, *cie_tmp;
896 struct dwarf_fde *fde; 916 struct dwarf_fde *fde, *fde_tmp;
897 917
898 /* 918 /*
899 * Deallocate all the memory allocated for the DWARF unwinder. 919 * Deallocate all the memory allocated for the DWARF unwinder.
900 * Traverse all the FDE/CIE lists and remove and free all the 920 * Traverse all the FDE/CIE lists and remove and free all the
901 * memory associated with those data structures. 921 * memory associated with those data structures.
902 */ 922 */
903 list_for_each_entry(cie, &dwarf_cie_list, link) 923 list_for_each_entry_safe(cie, cie_tmp, &dwarf_cie_list, link)
904 kfree(cie); 924 kfree(cie);
905 925
906 list_for_each_entry(fde, &dwarf_fde_list, link) 926 list_for_each_entry_safe(fde, fde_tmp, &dwarf_fde_list, link)
907 kfree(fde); 927 kfree(fde);
908 928
909 kmem_cache_destroy(dwarf_reg_cachep); 929 kmem_cache_destroy(dwarf_reg_cachep);
diff --git a/arch/sh/kernel/entry-common.S b/arch/sh/kernel/entry-common.S
index f0abd58c3a69..2b15ae60c3a0 100644
--- a/arch/sh/kernel/entry-common.S
+++ b/arch/sh/kernel/entry-common.S
@@ -70,8 +70,14 @@ ret_from_exception:
70 CFI_STARTPROC simple 70 CFI_STARTPROC simple
71 CFI_DEF_CFA r14, 0 71 CFI_DEF_CFA r14, 0
72 CFI_REL_OFFSET 17, 64 72 CFI_REL_OFFSET 17, 64
73 CFI_REL_OFFSET 15, 0 73 CFI_REL_OFFSET 15, 60
74 CFI_REL_OFFSET 14, 56 74 CFI_REL_OFFSET 14, 56
75 CFI_REL_OFFSET 13, 52
76 CFI_REL_OFFSET 12, 48
77 CFI_REL_OFFSET 11, 44
78 CFI_REL_OFFSET 10, 40
79 CFI_REL_OFFSET 9, 36
80 CFI_REL_OFFSET 8, 32
75 preempt_stop() 81 preempt_stop()
76ENTRY(ret_from_irq) 82ENTRY(ret_from_irq)
77 ! 83 !
diff --git a/arch/sh/kernel/process_64.c b/arch/sh/kernel/process_64.c
index 31f80c61b031..ec79faf6f021 100644
--- a/arch/sh/kernel/process_64.c
+++ b/arch/sh/kernel/process_64.c
@@ -368,7 +368,7 @@ void exit_thread(void)
368void flush_thread(void) 368void flush_thread(void)
369{ 369{
370 370
371 /* Called by fs/exec.c (flush_old_exec) to remove traces of a 371 /* Called by fs/exec.c (setup_new_exec) to remove traces of a
372 * previously running executable. */ 372 * previously running executable. */
373#ifdef CONFIG_SH_FPU 373#ifdef CONFIG_SH_FPU
374 if (last_task_used_math == current) { 374 if (last_task_used_math == current) {
diff --git a/arch/sh/kernel/ptrace_64.c b/arch/sh/kernel/ptrace_64.c
index 873ebdc4f98e..b063eb8b18e3 100644
--- a/arch/sh/kernel/ptrace_64.c
+++ b/arch/sh/kernel/ptrace_64.c
@@ -133,6 +133,8 @@ void user_enable_single_step(struct task_struct *child)
133 struct pt_regs *regs = child->thread.uregs; 133 struct pt_regs *regs = child->thread.uregs;
134 134
135 regs->sr |= SR_SSTEP; /* auto-resetting upon exception */ 135 regs->sr |= SR_SSTEP; /* auto-resetting upon exception */
136
137 set_tsk_thread_flag(child, TIF_SINGLESTEP);
136} 138}
137 139
138void user_disable_single_step(struct task_struct *child) 140void user_disable_single_step(struct task_struct *child)
@@ -140,6 +142,8 @@ void user_disable_single_step(struct task_struct *child)
140 struct pt_regs *regs = child->thread.uregs; 142 struct pt_regs *regs = child->thread.uregs;
141 143
142 regs->sr &= ~SR_SSTEP; 144 regs->sr &= ~SR_SSTEP;
145
146 clear_tsk_thread_flag(child, TIF_SINGLESTEP);
143} 147}
144 148
145static int genregs_get(struct task_struct *target, 149static int genregs_get(struct task_struct *target,
@@ -454,6 +458,8 @@ asmlinkage long long do_syscall_trace_enter(struct pt_regs *regs)
454 458
455asmlinkage void do_syscall_trace_leave(struct pt_regs *regs) 459asmlinkage void do_syscall_trace_leave(struct pt_regs *regs)
456{ 460{
461 int step;
462
457 if (unlikely(current->audit_context)) 463 if (unlikely(current->audit_context))
458 audit_syscall_exit(AUDITSC_RESULT(regs->regs[9]), 464 audit_syscall_exit(AUDITSC_RESULT(regs->regs[9]),
459 regs->regs[9]); 465 regs->regs[9]);
@@ -461,8 +467,9 @@ asmlinkage void do_syscall_trace_leave(struct pt_regs *regs)
461 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT))) 467 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
462 trace_sys_exit(regs, regs->regs[9]); 468 trace_sys_exit(regs, regs->regs[9]);
463 469
464 if (test_thread_flag(TIF_SYSCALL_TRACE)) 470 step = test_thread_flag(TIF_SINGLESTEP);
465 tracehook_report_syscall_exit(regs, 0); 471 if (step || test_thread_flag(TIF_SYSCALL_TRACE))
472 tracehook_report_syscall_exit(regs, step);
466} 473}
467 474
468/* Called with interrupts disabled */ 475/* Called with interrupts disabled */
diff --git a/arch/sh/kernel/signal_64.c b/arch/sh/kernel/signal_64.c
index ce76dbdef294..580e97d46ca5 100644
--- a/arch/sh/kernel/signal_64.c
+++ b/arch/sh/kernel/signal_64.c
@@ -118,7 +118,9 @@ static int do_signal(struct pt_regs *regs, sigset_t *oldset)
118 * clear the TS_RESTORE_SIGMASK flag. 118 * clear the TS_RESTORE_SIGMASK flag.
119 */ 119 */
120 current_thread_info()->status &= ~TS_RESTORE_SIGMASK; 120 current_thread_info()->status &= ~TS_RESTORE_SIGMASK;
121 tracehook_signal_handler(signr, &info, &ka, regs, 0); 121
122 tracehook_signal_handler(signr, &info, &ka, regs,
123 test_thread_flag(TIF_SINGLESTEP));
122 return 1; 124 return 1;
123 } 125 }
124 } 126 }
diff --git a/arch/sh/kernel/syscalls_32.S b/arch/sh/kernel/syscalls_32.S
index 4bd5a1146956..19fd11dd9871 100644
--- a/arch/sh/kernel/syscalls_32.S
+++ b/arch/sh/kernel/syscalls_32.S
@@ -353,4 +353,3 @@ ENTRY(sys_call_table)
353 .long sys_pwritev 353 .long sys_pwritev
354 .long sys_rt_tgsigqueueinfo /* 335 */ 354 .long sys_rt_tgsigqueueinfo /* 335 */
355 .long sys_perf_event_open 355 .long sys_perf_event_open
356 .long sys_recvmmsg
diff --git a/arch/sh/kernel/syscalls_64.S b/arch/sh/kernel/syscalls_64.S
index 07d2aaea9ae8..2048a20d7c80 100644
--- a/arch/sh/kernel/syscalls_64.S
+++ b/arch/sh/kernel/syscalls_64.S
@@ -392,3 +392,4 @@ sys_call_table:
392 .long sys_rt_tgsigqueueinfo 392 .long sys_rt_tgsigqueueinfo
393 .long sys_perf_event_open 393 .long sys_perf_event_open
394 .long sys_recvmmsg /* 365 */ 394 .long sys_recvmmsg /* 365 */
395 .long sys_accept4
diff --git a/arch/sh/mm/Kconfig b/arch/sh/mm/Kconfig
index 0e7ba8e891cf..986a71b88ca3 100644
--- a/arch/sh/mm/Kconfig
+++ b/arch/sh/mm/Kconfig
@@ -82,8 +82,7 @@ config 32BIT
82 82
83config PMB_ENABLE 83config PMB_ENABLE
84 bool "Support 32-bit physical addressing through PMB" 84 bool "Support 32-bit physical addressing through PMB"
85 depends on MMU && EXPERIMENTAL && CPU_SH4A 85 depends on MMU && EXPERIMENTAL && CPU_SH4A && !CPU_SH4AL_DSP
86 default y
87 help 86 help
88 If you say Y here, physical addressing will be extended to 87 If you say Y here, physical addressing will be extended to
89 32-bits through the SH-4A PMB. If this is not set, legacy 88 32-bits through the SH-4A PMB. If this is not set, legacy
@@ -96,7 +95,7 @@ choice
96 95
97config PMB 96config PMB
98 bool "PMB" 97 bool "PMB"
99 depends on MMU && EXPERIMENTAL && CPU_SH4A 98 depends on MMU && EXPERIMENTAL && CPU_SH4A && !CPU_SH4AL_DSP
100 help 99 help
101 If you say Y here, physical addressing will be extended to 100 If you say Y here, physical addressing will be extended to
102 32-bits through the SH-4A PMB. If this is not set, legacy 101 32-bits through the SH-4A PMB. If this is not set, legacy
@@ -104,7 +103,7 @@ config PMB
104 103
105config PMB_FIXED 104config PMB_FIXED
106 bool "fixed PMB" 105 bool "fixed PMB"
107 depends on MMU && EXPERIMENTAL && CPU_SH4A 106 depends on MMU && EXPERIMENTAL && CPU_SH4A && !CPU_SH4AL_DSP
108 select 32BIT 107 select 32BIT
109 help 108 help
110 If this option is enabled, fixed PMB mappings are inherited 109 If this option is enabled, fixed PMB mappings are inherited
diff --git a/arch/sh/tools/Makefile b/arch/sh/tools/Makefile
index 558a56bcc7cf..2082af1f3fef 100644
--- a/arch/sh/tools/Makefile
+++ b/arch/sh/tools/Makefile
@@ -13,4 +13,4 @@
13include/generated/machtypes.h: $(src)/gen-mach-types $(src)/mach-types 13include/generated/machtypes.h: $(src)/gen-mach-types $(src)/mach-types
14 @echo ' Generating $@' 14 @echo ' Generating $@'
15 $(Q)mkdir -p $(dir $@) 15 $(Q)mkdir -p $(dir $@)
16 $(Q)$(AWK) -f $^ > $@ || { rm -f $@; /bin/false; } 16 $(Q)LC_ALL=C $(AWK) -f $^ > $@ || { rm -f $@; /bin/false; }
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index 108197ac0d56..4097f6a10860 100644
--- a/arch/sparc/Kconfig
+++ b/arch/sparc/Kconfig
@@ -64,8 +64,11 @@ config BITS
64 default 64 if SPARC64 64 default 64 if SPARC64
65 65
66config GENERIC_TIME 66config GENERIC_TIME
67 def_bool y
68
69config ARCH_USES_GETTIMEOFFSET
67 bool 70 bool
68 default y if SPARC64 71 default y if SPARC32
69 72
70config GENERIC_CMOS_UPDATE 73config GENERIC_CMOS_UPDATE
71 bool 74 bool
diff --git a/arch/sparc/configs/sparc32_defconfig b/arch/sparc/configs/sparc32_defconfig
index 983d59824a28..99a1f191497b 100644
--- a/arch/sparc/configs/sparc32_defconfig
+++ b/arch/sparc/configs/sparc32_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 3# Linux kernel version: 2.6.33-rc2
4# Wed Sep 16 00:03:43 2009 4# Mon Jan 11 23:20:31 2010
5# 5#
6# CONFIG_64BIT is not set 6# CONFIG_64BIT is not set
7CONFIG_SPARC=y 7CONFIG_SPARC=y
@@ -41,6 +41,7 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
41# 41#
42CONFIG_TREE_RCU=y 42CONFIG_TREE_RCU=y
43# CONFIG_TREE_PREEMPT_RCU is not set 43# CONFIG_TREE_PREEMPT_RCU is not set
44# CONFIG_TINY_RCU is not set
44# CONFIG_RCU_TRACE is not set 45# CONFIG_RCU_TRACE is not set
45CONFIG_RCU_FANOUT=32 46CONFIG_RCU_FANOUT=32
46# CONFIG_RCU_FANOUT_EXACT is not set 47# CONFIG_RCU_FANOUT_EXACT is not set
@@ -88,21 +89,21 @@ CONFIG_TIMERFD=y
88CONFIG_EVENTFD=y 89CONFIG_EVENTFD=y
89CONFIG_SHMEM=y 90CONFIG_SHMEM=y
90CONFIG_AIO=y 91CONFIG_AIO=y
91CONFIG_HAVE_PERF_COUNTERS=y 92CONFIG_HAVE_PERF_EVENTS=y
93CONFIG_PERF_USE_VMALLOC=y
92 94
93# 95#
94# Performance Counters 96# Kernel Performance Events And Counters
95# 97#
98# CONFIG_PERF_EVENTS is not set
96# CONFIG_PERF_COUNTERS is not set 99# CONFIG_PERF_COUNTERS is not set
97CONFIG_VM_EVENT_COUNTERS=y 100CONFIG_VM_EVENT_COUNTERS=y
98CONFIG_PCI_QUIRKS=y 101CONFIG_PCI_QUIRKS=y
99# CONFIG_STRIP_ASM_SYMS is not set
100CONFIG_COMPAT_BRK=y 102CONFIG_COMPAT_BRK=y
101CONFIG_SLAB=y 103CONFIG_SLAB=y
102# CONFIG_SLUB is not set 104# CONFIG_SLUB is not set
103# CONFIG_SLOB is not set 105# CONFIG_SLOB is not set
104# CONFIG_PROFILING is not set 106# CONFIG_PROFILING is not set
105# CONFIG_MARKERS is not set
106CONFIG_HAVE_OPROFILE=y 107CONFIG_HAVE_OPROFILE=y
107CONFIG_HAVE_ARCH_TRACEHOOK=y 108CONFIG_HAVE_ARCH_TRACEHOOK=y
108CONFIG_HAVE_DMA_ATTRS=y 109CONFIG_HAVE_DMA_ATTRS=y
@@ -131,14 +132,41 @@ CONFIG_LBDAF=y
131# IO Schedulers 132# IO Schedulers
132# 133#
133CONFIG_IOSCHED_NOOP=y 134CONFIG_IOSCHED_NOOP=y
134CONFIG_IOSCHED_AS=y
135CONFIG_IOSCHED_DEADLINE=y 135CONFIG_IOSCHED_DEADLINE=y
136CONFIG_IOSCHED_CFQ=y 136CONFIG_IOSCHED_CFQ=y
137# CONFIG_DEFAULT_AS is not set
138# CONFIG_DEFAULT_DEADLINE is not set 137# CONFIG_DEFAULT_DEADLINE is not set
139CONFIG_DEFAULT_CFQ=y 138CONFIG_DEFAULT_CFQ=y
140# CONFIG_DEFAULT_NOOP is not set 139# CONFIG_DEFAULT_NOOP is not set
141CONFIG_DEFAULT_IOSCHED="cfq" 140CONFIG_DEFAULT_IOSCHED="cfq"
141# CONFIG_INLINE_SPIN_TRYLOCK is not set
142# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
143# CONFIG_INLINE_SPIN_LOCK is not set
144# CONFIG_INLINE_SPIN_LOCK_BH is not set
145# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
146# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
147CONFIG_INLINE_SPIN_UNLOCK=y
148# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
149CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
150# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
151# CONFIG_INLINE_READ_TRYLOCK is not set
152# CONFIG_INLINE_READ_LOCK is not set
153# CONFIG_INLINE_READ_LOCK_BH is not set
154# CONFIG_INLINE_READ_LOCK_IRQ is not set
155# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
156CONFIG_INLINE_READ_UNLOCK=y
157# CONFIG_INLINE_READ_UNLOCK_BH is not set
158CONFIG_INLINE_READ_UNLOCK_IRQ=y
159# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
160# CONFIG_INLINE_WRITE_TRYLOCK is not set
161# CONFIG_INLINE_WRITE_LOCK is not set
162# CONFIG_INLINE_WRITE_LOCK_BH is not set
163# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
164# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
165CONFIG_INLINE_WRITE_UNLOCK=y
166# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
167CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
168# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
169# CONFIG_MUTEX_SPIN_ON_OWNER is not set
142# CONFIG_FREEZER is not set 170# CONFIG_FREEZER is not set
143 171
144# 172#
@@ -168,8 +196,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
168# CONFIG_PHYS_ADDR_T_64BIT is not set 196# CONFIG_PHYS_ADDR_T_64BIT is not set
169CONFIG_ZONE_DMA_FLAG=1 197CONFIG_ZONE_DMA_FLAG=1
170CONFIG_BOUNCE=y 198CONFIG_BOUNCE=y
171CONFIG_HAVE_MLOCK=y 199# CONFIG_KSM is not set
172CONFIG_HAVE_MLOCKED_PAGE_BIT=y
173CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 200CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
174CONFIG_SUN_PM=y 201CONFIG_SUN_PM=y
175# CONFIG_SPARC_LED is not set 202# CONFIG_SPARC_LED is not set
@@ -257,6 +284,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m
257CONFIG_INET6_XFRM_MODE_BEET=m 284CONFIG_INET6_XFRM_MODE_BEET=m
258# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 285# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
259CONFIG_IPV6_SIT=m 286CONFIG_IPV6_SIT=m
287# CONFIG_IPV6_SIT_6RD is not set
260CONFIG_IPV6_NDISC_NODETYPE=y 288CONFIG_IPV6_NDISC_NODETYPE=y
261CONFIG_IPV6_TUNNEL=m 289CONFIG_IPV6_TUNNEL=m
262# CONFIG_IPV6_MULTIPLE_TABLES is not set 290# CONFIG_IPV6_MULTIPLE_TABLES is not set
@@ -295,9 +323,6 @@ CONFIG_NET_PKTGEN=m
295# CONFIG_AF_RXRPC is not set 323# CONFIG_AF_RXRPC is not set
296CONFIG_WIRELESS=y 324CONFIG_WIRELESS=y
297# CONFIG_CFG80211 is not set 325# CONFIG_CFG80211 is not set
298CONFIG_CFG80211_DEFAULT_PS_VALUE=0
299CONFIG_WIRELESS_OLD_REGULATORY=y
300# CONFIG_WIRELESS_EXT is not set
301# CONFIG_LIB80211 is not set 326# CONFIG_LIB80211 is not set
302 327
303# 328#
@@ -335,6 +360,10 @@ CONFIG_BLK_DEV=y
335# CONFIG_BLK_DEV_COW_COMMON is not set 360# CONFIG_BLK_DEV_COW_COMMON is not set
336CONFIG_BLK_DEV_LOOP=m 361CONFIG_BLK_DEV_LOOP=m
337CONFIG_BLK_DEV_CRYPTOLOOP=m 362CONFIG_BLK_DEV_CRYPTOLOOP=m
363
364#
365# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
366#
338# CONFIG_BLK_DEV_NBD is not set 367# CONFIG_BLK_DEV_NBD is not set
339# CONFIG_BLK_DEV_SX8 is not set 368# CONFIG_BLK_DEV_SX8 is not set
340CONFIG_BLK_DEV_RAM=y 369CONFIG_BLK_DEV_RAM=y
@@ -398,8 +427,11 @@ CONFIG_SCSI_LOWLEVEL=y
398# CONFIG_ISCSI_TCP is not set 427# CONFIG_ISCSI_TCP is not set
399# CONFIG_SCSI_CXGB3_ISCSI is not set 428# CONFIG_SCSI_CXGB3_ISCSI is not set
400# CONFIG_SCSI_BNX2_ISCSI is not set 429# CONFIG_SCSI_BNX2_ISCSI is not set
430# CONFIG_BE2ISCSI is not set
401# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 431# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
432# CONFIG_SCSI_HPSA is not set
402# CONFIG_SCSI_3W_9XXX is not set 433# CONFIG_SCSI_3W_9XXX is not set
434# CONFIG_SCSI_3W_SAS is not set
403# CONFIG_SCSI_ACARD is not set 435# CONFIG_SCSI_ACARD is not set
404# CONFIG_SCSI_AACRAID is not set 436# CONFIG_SCSI_AACRAID is not set
405# CONFIG_SCSI_AIC7XXX is not set 437# CONFIG_SCSI_AIC7XXX is not set
@@ -434,7 +466,9 @@ CONFIG_SCSI_QLOGICPTI=m
434# CONFIG_SCSI_DEBUG is not set 466# CONFIG_SCSI_DEBUG is not set
435CONFIG_SCSI_SUNESP=y 467CONFIG_SCSI_SUNESP=y
436# CONFIG_SCSI_PMCRAID is not set 468# CONFIG_SCSI_PMCRAID is not set
469# CONFIG_SCSI_PM8001 is not set
437# CONFIG_SCSI_SRP is not set 470# CONFIG_SCSI_SRP is not set
471# CONFIG_SCSI_BFA_FC is not set
438# CONFIG_SCSI_DH is not set 472# CONFIG_SCSI_DH is not set
439# CONFIG_SCSI_OSD_INITIATOR is not set 473# CONFIG_SCSI_OSD_INITIATOR is not set
440# CONFIG_ATA is not set 474# CONFIG_ATA is not set
@@ -450,7 +484,7 @@ CONFIG_SCSI_SUNESP=y
450# 484#
451 485
452# 486#
453# See the help texts for more information. 487# The newer stack is recommended.
454# 488#
455# CONFIG_FIREWIRE is not set 489# CONFIG_FIREWIRE is not set
456# CONFIG_IEEE1394 is not set 490# CONFIG_IEEE1394 is not set
@@ -487,6 +521,7 @@ CONFIG_SUNQE=m
487# CONFIG_NET_PCI is not set 521# CONFIG_NET_PCI is not set
488# CONFIG_B44 is not set 522# CONFIG_B44 is not set
489# CONFIG_KS8842 is not set 523# CONFIG_KS8842 is not set
524# CONFIG_KS8851_MLL is not set
490# CONFIG_ATL2 is not set 525# CONFIG_ATL2 is not set
491CONFIG_NETDEV_1000=y 526CONFIG_NETDEV_1000=y
492# CONFIG_ACENIC is not set 527# CONFIG_ACENIC is not set
@@ -546,6 +581,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
546# CONFIG_NETCONSOLE is not set 581# CONFIG_NETCONSOLE is not set
547# CONFIG_NETPOLL is not set 582# CONFIG_NETPOLL is not set
548# CONFIG_NET_POLL_CONTROLLER is not set 583# CONFIG_NET_POLL_CONTROLLER is not set
584# CONFIG_VMXNET3 is not set
549# CONFIG_ISDN is not set 585# CONFIG_ISDN is not set
550# CONFIG_PHONE is not set 586# CONFIG_PHONE is not set
551 587
@@ -555,6 +591,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
555CONFIG_INPUT=y 591CONFIG_INPUT=y
556# CONFIG_INPUT_FF_MEMLESS is not set 592# CONFIG_INPUT_FF_MEMLESS is not set
557# CONFIG_INPUT_POLLDEV is not set 593# CONFIG_INPUT_POLLDEV is not set
594# CONFIG_INPUT_SPARSEKMAP is not set
558 595
559# 596#
560# Userland interfaces 597# Userland interfaces
@@ -574,6 +611,7 @@ CONFIG_INPUT_KEYBOARD=y
574CONFIG_KEYBOARD_ATKBD=m 611CONFIG_KEYBOARD_ATKBD=m
575# CONFIG_KEYBOARD_LKKBD is not set 612# CONFIG_KEYBOARD_LKKBD is not set
576# CONFIG_KEYBOARD_NEWTON is not set 613# CONFIG_KEYBOARD_NEWTON is not set
614# CONFIG_KEYBOARD_OPENCORES is not set
577# CONFIG_KEYBOARD_STOWAWAY is not set 615# CONFIG_KEYBOARD_STOWAWAY is not set
578CONFIG_KEYBOARD_SUNKBD=m 616CONFIG_KEYBOARD_SUNKBD=m
579# CONFIG_KEYBOARD_XTKBD is not set 617# CONFIG_KEYBOARD_XTKBD is not set
@@ -604,6 +642,7 @@ CONFIG_SERIO_SERPORT=m
604# CONFIG_SERIO_PCIPS2 is not set 642# CONFIG_SERIO_PCIPS2 is not set
605CONFIG_SERIO_LIBPS2=m 643CONFIG_SERIO_LIBPS2=m
606# CONFIG_SERIO_RAW is not set 644# CONFIG_SERIO_RAW is not set
645# CONFIG_SERIO_ALTERA_PS2 is not set
607# CONFIG_GAMEPORT is not set 646# CONFIG_GAMEPORT is not set
608 647
609# 648#
@@ -636,6 +675,7 @@ CONFIG_SERIAL_CORE=y
636CONFIG_SERIAL_CORE_CONSOLE=y 675CONFIG_SERIAL_CORE_CONSOLE=y
637CONFIG_CONSOLE_POLL=y 676CONFIG_CONSOLE_POLL=y
638# CONFIG_SERIAL_JSM is not set 677# CONFIG_SERIAL_JSM is not set
678# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
639CONFIG_UNIX98_PTYS=y 679CONFIG_UNIX98_PTYS=y
640# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 680# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
641CONFIG_LEGACY_PTYS=y 681CONFIG_LEGACY_PTYS=y
@@ -661,6 +701,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
661# CONFIG_POWER_SUPPLY is not set 701# CONFIG_POWER_SUPPLY is not set
662CONFIG_HWMON=y 702CONFIG_HWMON=y
663# CONFIG_HWMON_VID is not set 703# CONFIG_HWMON_VID is not set
704# CONFIG_HWMON_DEBUG_CHIP is not set
705
706#
707# Native drivers
708#
664# CONFIG_SENSORS_I5K_AMB is not set 709# CONFIG_SENSORS_I5K_AMB is not set
665# CONFIG_SENSORS_F71805F is not set 710# CONFIG_SENSORS_F71805F is not set
666# CONFIG_SENSORS_F71882FG is not set 711# CONFIG_SENSORS_F71882FG is not set
@@ -675,9 +720,7 @@ CONFIG_HWMON=y
675# CONFIG_SENSORS_VT8231 is not set 720# CONFIG_SENSORS_VT8231 is not set
676# CONFIG_SENSORS_W83627HF is not set 721# CONFIG_SENSORS_W83627HF is not set
677# CONFIG_SENSORS_W83627EHF is not set 722# CONFIG_SENSORS_W83627EHF is not set
678# CONFIG_HWMON_DEBUG_CHIP is not set
679# CONFIG_THERMAL is not set 723# CONFIG_THERMAL is not set
680# CONFIG_THERMAL_HWMON is not set
681# CONFIG_WATCHDOG is not set 724# CONFIG_WATCHDOG is not set
682CONFIG_SSB_POSSIBLE=y 725CONFIG_SSB_POSSIBLE=y
683 726
@@ -699,6 +742,7 @@ CONFIG_SSB_POSSIBLE=y
699# 742#
700# Graphics support 743# Graphics support
701# 744#
745CONFIG_VGA_ARB=y
702# CONFIG_VGASTATE is not set 746# CONFIG_VGASTATE is not set
703# CONFIG_VIDEO_OUTPUT_CONTROL is not set 747# CONFIG_VIDEO_OUTPUT_CONTROL is not set
704# CONFIG_FB is not set 748# CONFIG_FB is not set
@@ -776,7 +820,9 @@ CONFIG_RTC_INTF_DEV=y
776# CONFIG_RTC_DRV_M48T86 is not set 820# CONFIG_RTC_DRV_M48T86 is not set
777# CONFIG_RTC_DRV_M48T35 is not set 821# CONFIG_RTC_DRV_M48T35 is not set
778CONFIG_RTC_DRV_M48T59=y 822CONFIG_RTC_DRV_M48T59=y
823# CONFIG_RTC_DRV_MSM6242 is not set
779# CONFIG_RTC_DRV_BQ4802 is not set 824# CONFIG_RTC_DRV_BQ4802 is not set
825# CONFIG_RTC_DRV_RP5C01 is not set
780# CONFIG_RTC_DRV_V3020 is not set 826# CONFIG_RTC_DRV_V3020 is not set
781 827
782# 828#
@@ -955,6 +1001,7 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
955CONFIG_ENABLE_MUST_CHECK=y 1001CONFIG_ENABLE_MUST_CHECK=y
956CONFIG_FRAME_WARN=1024 1002CONFIG_FRAME_WARN=1024
957CONFIG_MAGIC_SYSRQ=y 1003CONFIG_MAGIC_SYSRQ=y
1004# CONFIG_STRIP_ASM_SYMS is not set
958# CONFIG_UNUSED_SYMBOLS is not set 1005# CONFIG_UNUSED_SYMBOLS is not set
959# CONFIG_DEBUG_FS is not set 1006# CONFIG_DEBUG_FS is not set
960# CONFIG_HEADERS_CHECK is not set 1007# CONFIG_HEADERS_CHECK is not set
@@ -1003,9 +1050,9 @@ CONFIG_KGDB=y
1003CONFIG_KGDB_SERIAL_CONSOLE=y 1050CONFIG_KGDB_SERIAL_CONSOLE=y
1004CONFIG_KGDB_TESTS=y 1051CONFIG_KGDB_TESTS=y
1005# CONFIG_KGDB_TESTS_ON_BOOT is not set 1052# CONFIG_KGDB_TESTS_ON_BOOT is not set
1006# CONFIG_KMEMCHECK is not set
1007# CONFIG_DEBUG_STACK_USAGE is not set 1053# CONFIG_DEBUG_STACK_USAGE is not set
1008# CONFIG_STACK_DEBUG is not set 1054# CONFIG_STACK_DEBUG is not set
1055# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
1009 1056
1010# 1057#
1011# Security options 1058# Security options
@@ -1013,7 +1060,11 @@ CONFIG_KGDB_TESTS=y
1013# CONFIG_KEYS is not set 1060# CONFIG_KEYS is not set
1014# CONFIG_SECURITY is not set 1061# CONFIG_SECURITY is not set
1015# CONFIG_SECURITYFS is not set 1062# CONFIG_SECURITYFS is not set
1016# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1063# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1064# CONFIG_DEFAULT_SECURITY_SMACK is not set
1065# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1066CONFIG_DEFAULT_SECURITY_DAC=y
1067CONFIG_DEFAULT_SECURITY=""
1017CONFIG_CRYPTO=y 1068CONFIG_CRYPTO=y
1018 1069
1019# 1070#
diff --git a/arch/sparc/configs/sparc64_defconfig b/arch/sparc/configs/sparc64_defconfig
index f80b881dfea7..41c5a56aa6f2 100644
--- a/arch/sparc/configs/sparc64_defconfig
+++ b/arch/sparc/configs/sparc64_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.31 3# Linux kernel version: 2.6.33-rc2
4# Tue Sep 15 17:06:03 2009 4# Wed Jan 20 16:31:47 2010
5# 5#
6CONFIG_64BIT=y 6CONFIG_64BIT=y
7CONFIG_SPARC=y 7CONFIG_SPARC=y
@@ -20,6 +20,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
20CONFIG_AUDIT_ARCH=y 20CONFIG_AUDIT_ARCH=y
21CONFIG_HAVE_SETUP_PER_CPU_AREA=y 21CONFIG_HAVE_SETUP_PER_CPU_AREA=y
22CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y 22CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
23CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
23CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 24CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
24CONFIG_MMU=y 25CONFIG_MMU=y
25CONFIG_ARCH_NO_VIRT_TO_BUS=y 26CONFIG_ARCH_NO_VIRT_TO_BUS=y
@@ -50,6 +51,7 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
50# 51#
51CONFIG_TREE_RCU=y 52CONFIG_TREE_RCU=y
52# CONFIG_TREE_PREEMPT_RCU is not set 53# CONFIG_TREE_PREEMPT_RCU is not set
54# CONFIG_TINY_RCU is not set
53# CONFIG_RCU_TRACE is not set 55# CONFIG_RCU_TRACE is not set
54CONFIG_RCU_FANOUT=64 56CONFIG_RCU_FANOUT=64
55# CONFIG_RCU_FANOUT_EXACT is not set 57# CONFIG_RCU_FANOUT_EXACT is not set
@@ -62,8 +64,7 @@ CONFIG_RT_GROUP_SCHED=y
62CONFIG_USER_SCHED=y 64CONFIG_USER_SCHED=y
63# CONFIG_CGROUP_SCHED is not set 65# CONFIG_CGROUP_SCHED is not set
64# CONFIG_CGROUPS is not set 66# CONFIG_CGROUPS is not set
65CONFIG_SYSFS_DEPRECATED=y 67# CONFIG_SYSFS_DEPRECATED_V2 is not set
66CONFIG_SYSFS_DEPRECATED_V2=y
67CONFIG_RELAY=y 68CONFIG_RELAY=y
68CONFIG_NAMESPACES=y 69CONFIG_NAMESPACES=y
69# CONFIG_UTS_NS is not set 70# CONFIG_UTS_NS is not set
@@ -97,24 +98,25 @@ CONFIG_TIMERFD=y
97CONFIG_EVENTFD=y 98CONFIG_EVENTFD=y
98CONFIG_SHMEM=y 99CONFIG_SHMEM=y
99CONFIG_AIO=y 100CONFIG_AIO=y
100CONFIG_HAVE_PERF_COUNTERS=y 101CONFIG_HAVE_PERF_EVENTS=y
102CONFIG_PERF_USE_VMALLOC=y
101 103
102# 104#
103# Performance Counters 105# Kernel Performance Events And Counters
104# 106#
105CONFIG_PERF_COUNTERS=y 107CONFIG_PERF_EVENTS=y
106CONFIG_EVENT_PROFILE=y 108CONFIG_EVENT_PROFILE=y
109CONFIG_PERF_COUNTERS=y
110# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
107CONFIG_VM_EVENT_COUNTERS=y 111CONFIG_VM_EVENT_COUNTERS=y
108CONFIG_PCI_QUIRKS=y 112CONFIG_PCI_QUIRKS=y
109CONFIG_SLUB_DEBUG=y 113CONFIG_SLUB_DEBUG=y
110# CONFIG_STRIP_ASM_SYMS is not set
111# CONFIG_COMPAT_BRK is not set 114# CONFIG_COMPAT_BRK is not set
112# CONFIG_SLAB is not set 115# CONFIG_SLAB is not set
113CONFIG_SLUB=y 116CONFIG_SLUB=y
114# CONFIG_SLOB is not set 117# CONFIG_SLOB is not set
115CONFIG_PROFILING=y 118CONFIG_PROFILING=y
116CONFIG_TRACEPOINTS=y 119CONFIG_TRACEPOINTS=y
117CONFIG_MARKERS=y
118CONFIG_OPROFILE=m 120CONFIG_OPROFILE=m
119CONFIG_HAVE_OPROFILE=y 121CONFIG_HAVE_OPROFILE=y
120CONFIG_KPROBES=y 122CONFIG_KPROBES=y
@@ -152,14 +154,41 @@ CONFIG_BLOCK_COMPAT=y
152# IO Schedulers 154# IO Schedulers
153# 155#
154CONFIG_IOSCHED_NOOP=y 156CONFIG_IOSCHED_NOOP=y
155CONFIG_IOSCHED_AS=y
156CONFIG_IOSCHED_DEADLINE=y 157CONFIG_IOSCHED_DEADLINE=y
157CONFIG_IOSCHED_CFQ=y 158CONFIG_IOSCHED_CFQ=y
158CONFIG_DEFAULT_AS=y
159# CONFIG_DEFAULT_DEADLINE is not set 159# CONFIG_DEFAULT_DEADLINE is not set
160# CONFIG_DEFAULT_CFQ is not set 160CONFIG_DEFAULT_CFQ=y
161# CONFIG_DEFAULT_NOOP is not set 161# CONFIG_DEFAULT_NOOP is not set
162CONFIG_DEFAULT_IOSCHED="anticipatory" 162CONFIG_DEFAULT_IOSCHED="cfq"
163# CONFIG_INLINE_SPIN_TRYLOCK is not set
164# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
165# CONFIG_INLINE_SPIN_LOCK is not set
166# CONFIG_INLINE_SPIN_LOCK_BH is not set
167# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
168# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
169CONFIG_INLINE_SPIN_UNLOCK=y
170# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
171CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
172# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
173# CONFIG_INLINE_READ_TRYLOCK is not set
174# CONFIG_INLINE_READ_LOCK is not set
175# CONFIG_INLINE_READ_LOCK_BH is not set
176# CONFIG_INLINE_READ_LOCK_IRQ is not set
177# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
178CONFIG_INLINE_READ_UNLOCK=y
179# CONFIG_INLINE_READ_UNLOCK_BH is not set
180CONFIG_INLINE_READ_UNLOCK_IRQ=y
181# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
182# CONFIG_INLINE_WRITE_TRYLOCK is not set
183# CONFIG_INLINE_WRITE_LOCK is not set
184# CONFIG_INLINE_WRITE_LOCK_BH is not set
185# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
186# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
187CONFIG_INLINE_WRITE_UNLOCK=y
188# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
189CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
190# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
191CONFIG_MUTEX_SPIN_ON_OWNER=y
163# CONFIG_FREEZER is not set 192# CONFIG_FREEZER is not set
164 193
165# 194#
@@ -179,6 +208,7 @@ CONFIG_GENERIC_HWEIGHT=y
179CONFIG_GENERIC_CALIBRATE_DELAY=y 208CONFIG_GENERIC_CALIBRATE_DELAY=y
180CONFIG_ARCH_MAY_HAVE_PC_FDC=y 209CONFIG_ARCH_MAY_HAVE_PC_FDC=y
181CONFIG_SPARC64_SMP=y 210CONFIG_SPARC64_SMP=y
211CONFIG_EARLYFB=y
182CONFIG_SPARC64_PAGE_SIZE_8KB=y 212CONFIG_SPARC64_PAGE_SIZE_8KB=y
183# CONFIG_SPARC64_PAGE_SIZE_64KB is not set 213# CONFIG_SPARC64_PAGE_SIZE_64KB is not set
184CONFIG_SECCOMP=y 214CONFIG_SECCOMP=y
@@ -216,8 +246,7 @@ CONFIG_MIGRATION=y
216CONFIG_PHYS_ADDR_T_64BIT=y 246CONFIG_PHYS_ADDR_T_64BIT=y
217CONFIG_ZONE_DMA_FLAG=0 247CONFIG_ZONE_DMA_FLAG=0
218CONFIG_NR_QUICK=1 248CONFIG_NR_QUICK=1
219CONFIG_HAVE_MLOCK=y 249# CONFIG_KSM is not set
220CONFIG_HAVE_MLOCKED_PAGE_BIT=y
221CONFIG_DEFAULT_MMAP_MIN_ADDR=8192 250CONFIG_DEFAULT_MMAP_MIN_ADDR=8192
222CONFIG_SCHED_SMT=y 251CONFIG_SCHED_SMT=y
223CONFIG_SCHED_MC=y 252CONFIG_SCHED_MC=y
@@ -315,6 +344,7 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m
315CONFIG_INET6_XFRM_MODE_BEET=m 344CONFIG_INET6_XFRM_MODE_BEET=m
316# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 345# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
317CONFIG_IPV6_SIT=m 346CONFIG_IPV6_SIT=m
347# CONFIG_IPV6_SIT_6RD is not set
318CONFIG_IPV6_NDISC_NODETYPE=y 348CONFIG_IPV6_NDISC_NODETYPE=y
319CONFIG_IPV6_TUNNEL=m 349CONFIG_IPV6_TUNNEL=m
320# CONFIG_IPV6_MULTIPLE_TABLES is not set 350# CONFIG_IPV6_MULTIPLE_TABLES is not set
@@ -356,9 +386,6 @@ CONFIG_NET_TCPPROBE=m
356# CONFIG_AF_RXRPC is not set 386# CONFIG_AF_RXRPC is not set
357CONFIG_WIRELESS=y 387CONFIG_WIRELESS=y
358# CONFIG_CFG80211 is not set 388# CONFIG_CFG80211 is not set
359CONFIG_CFG80211_DEFAULT_PS_VALUE=0
360CONFIG_WIRELESS_OLD_REGULATORY=y
361# CONFIG_WIRELESS_EXT is not set
362# CONFIG_LIB80211 is not set 389# CONFIG_LIB80211 is not set
363 390
364# 391#
@@ -376,6 +403,7 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
376# Generic Driver Options 403# Generic Driver Options
377# 404#
378CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 405CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
406# CONFIG_DEVTMPFS is not set
379CONFIG_STANDALONE=y 407CONFIG_STANDALONE=y
380# CONFIG_PREVENT_FIRMWARE_BUILD is not set 408# CONFIG_PREVENT_FIRMWARE_BUILD is not set
381CONFIG_FW_LOADER=y 409CONFIG_FW_LOADER=y
@@ -397,6 +425,11 @@ CONFIG_BLK_DEV=y
397# CONFIG_BLK_DEV_COW_COMMON is not set 425# CONFIG_BLK_DEV_COW_COMMON is not set
398CONFIG_BLK_DEV_LOOP=m 426CONFIG_BLK_DEV_LOOP=m
399CONFIG_BLK_DEV_CRYPTOLOOP=m 427CONFIG_BLK_DEV_CRYPTOLOOP=m
428
429#
430# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
431#
432# CONFIG_BLK_DEV_DRBD is not set
400CONFIG_BLK_DEV_NBD=m 433CONFIG_BLK_DEV_NBD=m
401# CONFIG_BLK_DEV_SX8 is not set 434# CONFIG_BLK_DEV_SX8 is not set
402# CONFIG_BLK_DEV_UB is not set 435# CONFIG_BLK_DEV_UB is not set
@@ -408,6 +441,7 @@ CONFIG_ATA_OVER_ETH=m
408CONFIG_SUNVDC=m 441CONFIG_SUNVDC=m
409# CONFIG_BLK_DEV_HD is not set 442# CONFIG_BLK_DEV_HD is not set
410CONFIG_MISC_DEVICES=y 443CONFIG_MISC_DEVICES=y
444# CONFIG_AD525X_DPOT is not set
411# CONFIG_PHANTOM is not set 445# CONFIG_PHANTOM is not set
412# CONFIG_SGI_IOC4 is not set 446# CONFIG_SGI_IOC4 is not set
413# CONFIG_TIFM_CORE is not set 447# CONFIG_TIFM_CORE is not set
@@ -415,6 +449,7 @@ CONFIG_MISC_DEVICES=y
415# CONFIG_ENCLOSURE_SERVICES is not set 449# CONFIG_ENCLOSURE_SERVICES is not set
416# CONFIG_HP_ILO is not set 450# CONFIG_HP_ILO is not set
417# CONFIG_ISL29003 is not set 451# CONFIG_ISL29003 is not set
452# CONFIG_DS1682 is not set
418# CONFIG_C2PORT is not set 453# CONFIG_C2PORT is not set
419 454
420# 455#
@@ -522,8 +557,11 @@ CONFIG_SCSI_LOWLEVEL=y
522# CONFIG_ISCSI_TCP is not set 557# CONFIG_ISCSI_TCP is not set
523# CONFIG_SCSI_CXGB3_ISCSI is not set 558# CONFIG_SCSI_CXGB3_ISCSI is not set
524# CONFIG_SCSI_BNX2_ISCSI is not set 559# CONFIG_SCSI_BNX2_ISCSI is not set
560# CONFIG_BE2ISCSI is not set
525# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 561# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
562# CONFIG_SCSI_HPSA is not set
526# CONFIG_SCSI_3W_9XXX is not set 563# CONFIG_SCSI_3W_9XXX is not set
564# CONFIG_SCSI_3W_SAS is not set
527# CONFIG_SCSI_ACARD is not set 565# CONFIG_SCSI_ACARD is not set
528# CONFIG_SCSI_AACRAID is not set 566# CONFIG_SCSI_AACRAID is not set
529# CONFIG_SCSI_AIC7XXX is not set 567# CONFIG_SCSI_AIC7XXX is not set
@@ -557,7 +595,9 @@ CONFIG_SCSI_LOWLEVEL=y
557# CONFIG_SCSI_DEBUG is not set 595# CONFIG_SCSI_DEBUG is not set
558# CONFIG_SCSI_SUNESP is not set 596# CONFIG_SCSI_SUNESP is not set
559# CONFIG_SCSI_PMCRAID is not set 597# CONFIG_SCSI_PMCRAID is not set
598# CONFIG_SCSI_PM8001 is not set
560# CONFIG_SCSI_SRP is not set 599# CONFIG_SCSI_SRP is not set
600# CONFIG_SCSI_BFA_FC is not set
561# CONFIG_SCSI_DH is not set 601# CONFIG_SCSI_DH is not set
562# CONFIG_SCSI_OSD_INITIATOR is not set 602# CONFIG_SCSI_OSD_INITIATOR is not set
563# CONFIG_ATA is not set 603# CONFIG_ATA is not set
@@ -568,7 +608,9 @@ CONFIG_MD_RAID0=m
568CONFIG_MD_RAID1=m 608CONFIG_MD_RAID1=m
569CONFIG_MD_RAID10=m 609CONFIG_MD_RAID10=m
570CONFIG_MD_RAID456=m 610CONFIG_MD_RAID456=m
611# CONFIG_MULTICORE_RAID456 is not set
571CONFIG_MD_RAID6_PQ=m 612CONFIG_MD_RAID6_PQ=m
613# CONFIG_ASYNC_RAID6_TEST is not set
572CONFIG_MD_MULTIPATH=m 614CONFIG_MD_MULTIPATH=m
573# CONFIG_MD_FAULTY is not set 615# CONFIG_MD_FAULTY is not set
574CONFIG_BLK_DEV_DM=m 616CONFIG_BLK_DEV_DM=m
@@ -592,7 +634,7 @@ CONFIG_DM_ZERO=m
592# 634#
593 635
594# 636#
595# See the help texts for more information. 637# The newer stack is recommended.
596# 638#
597# CONFIG_FIREWIRE is not set 639# CONFIG_FIREWIRE is not set
598# CONFIG_IEEE1394 is not set 640# CONFIG_IEEE1394 is not set
@@ -664,6 +706,7 @@ CONFIG_NET_PCI=y
664# CONFIG_SUNDANCE is not set 706# CONFIG_SUNDANCE is not set
665# CONFIG_TLAN is not set 707# CONFIG_TLAN is not set
666# CONFIG_KS8842 is not set 708# CONFIG_KS8842 is not set
709# CONFIG_KS8851_MLL is not set
667# CONFIG_VIA_RHINE is not set 710# CONFIG_VIA_RHINE is not set
668# CONFIG_SC92031 is not set 711# CONFIG_SC92031 is not set
669# CONFIG_ATL2 is not set 712# CONFIG_ATL2 is not set
@@ -745,6 +788,7 @@ CONFIG_SLHC=m
745# CONFIG_NETCONSOLE is not set 788# CONFIG_NETCONSOLE is not set
746# CONFIG_NETPOLL is not set 789# CONFIG_NETPOLL is not set
747# CONFIG_NET_POLL_CONTROLLER is not set 790# CONFIG_NET_POLL_CONTROLLER is not set
791# CONFIG_VMXNET3 is not set
748# CONFIG_ISDN is not set 792# CONFIG_ISDN is not set
749# CONFIG_PHONE is not set 793# CONFIG_PHONE is not set
750 794
@@ -754,6 +798,7 @@ CONFIG_SLHC=m
754CONFIG_INPUT=y 798CONFIG_INPUT=y
755# CONFIG_INPUT_FF_MEMLESS is not set 799# CONFIG_INPUT_FF_MEMLESS is not set
756# CONFIG_INPUT_POLLDEV is not set 800# CONFIG_INPUT_POLLDEV is not set
801# CONFIG_INPUT_SPARSEKMAP is not set
757 802
758# 803#
759# Userland interfaces 804# Userland interfaces
@@ -770,9 +815,13 @@ CONFIG_INPUT_EVDEV=y
770# Input Device Drivers 815# Input Device Drivers
771# 816#
772CONFIG_INPUT_KEYBOARD=y 817CONFIG_INPUT_KEYBOARD=y
818# CONFIG_KEYBOARD_ADP5588 is not set
773CONFIG_KEYBOARD_ATKBD=y 819CONFIG_KEYBOARD_ATKBD=y
820# CONFIG_QT2160 is not set
774CONFIG_KEYBOARD_LKKBD=m 821CONFIG_KEYBOARD_LKKBD=m
822# CONFIG_KEYBOARD_MAX7359 is not set
775# CONFIG_KEYBOARD_NEWTON is not set 823# CONFIG_KEYBOARD_NEWTON is not set
824# CONFIG_KEYBOARD_OPENCORES is not set
776# CONFIG_KEYBOARD_STOWAWAY is not set 825# CONFIG_KEYBOARD_STOWAWAY is not set
777CONFIG_KEYBOARD_SUNKBD=y 826CONFIG_KEYBOARD_SUNKBD=y
778# CONFIG_KEYBOARD_XTKBD is not set 827# CONFIG_KEYBOARD_XTKBD is not set
@@ -812,6 +861,7 @@ CONFIG_SERIO_I8042=y
812CONFIG_SERIO_PCIPS2=m 861CONFIG_SERIO_PCIPS2=m
813CONFIG_SERIO_LIBPS2=y 862CONFIG_SERIO_LIBPS2=y
814CONFIG_SERIO_RAW=m 863CONFIG_SERIO_RAW=m
864# CONFIG_SERIO_ALTERA_PS2 is not set
815# CONFIG_GAMEPORT is not set 865# CONFIG_GAMEPORT is not set
816 866
817# 867#
@@ -844,6 +894,7 @@ CONFIG_SERIAL_SUNHV=y
844CONFIG_SERIAL_CORE=y 894CONFIG_SERIAL_CORE=y
845CONFIG_SERIAL_CORE_CONSOLE=y 895CONFIG_SERIAL_CORE_CONSOLE=y
846# CONFIG_SERIAL_JSM is not set 896# CONFIG_SERIAL_JSM is not set
897# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
847CONFIG_UNIX98_PTYS=y 898CONFIG_UNIX98_PTYS=y
848# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 899# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
849# CONFIG_LEGACY_PTYS is not set 900# CONFIG_LEGACY_PTYS is not set
@@ -858,6 +909,7 @@ CONFIG_HW_RANDOM_N2RNG=m
858CONFIG_DEVPORT=y 909CONFIG_DEVPORT=y
859CONFIG_I2C=y 910CONFIG_I2C=y
860CONFIG_I2C_BOARDINFO=y 911CONFIG_I2C_BOARDINFO=y
912CONFIG_I2C_COMPAT=y
861# CONFIG_I2C_CHARDEV is not set 913# CONFIG_I2C_CHARDEV is not set
862CONFIG_I2C_HELPER_AUTO=y 914CONFIG_I2C_HELPER_AUTO=y
863CONFIG_I2C_ALGOBIT=y 915CONFIG_I2C_ALGOBIT=y
@@ -898,11 +950,6 @@ CONFIG_I2C_ALGOBIT=y
898# CONFIG_I2C_TINY_USB is not set 950# CONFIG_I2C_TINY_USB is not set
899 951
900# 952#
901# Graphics adapter I2C/DDC channel drivers
902#
903# CONFIG_I2C_VOODOO3 is not set
904
905#
906# Other I2C/SMBus bus drivers 953# Other I2C/SMBus bus drivers
907# 954#
908# CONFIG_I2C_PCA_PLATFORM is not set 955# CONFIG_I2C_PCA_PLATFORM is not set
@@ -911,10 +958,6 @@ CONFIG_I2C_ALGOBIT=y
911# 958#
912# Miscellaneous I2C Chip support 959# Miscellaneous I2C Chip support
913# 960#
914# CONFIG_DS1682 is not set
915# CONFIG_SENSORS_PCF8574 is not set
916# CONFIG_PCF8575 is not set
917# CONFIG_SENSORS_PCA9539 is not set
918# CONFIG_SENSORS_TSL2550 is not set 961# CONFIG_SENSORS_TSL2550 is not set
919# CONFIG_I2C_DEBUG_CORE is not set 962# CONFIG_I2C_DEBUG_CORE is not set
920# CONFIG_I2C_DEBUG_ALGO is not set 963# CONFIG_I2C_DEBUG_ALGO is not set
@@ -932,6 +975,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
932# CONFIG_POWER_SUPPLY is not set 975# CONFIG_POWER_SUPPLY is not set
933CONFIG_HWMON=y 976CONFIG_HWMON=y
934# CONFIG_HWMON_VID is not set 977# CONFIG_HWMON_VID is not set
978# CONFIG_HWMON_DEBUG_CHIP is not set
979
980#
981# Native drivers
982#
935# CONFIG_SENSORS_AD7414 is not set 983# CONFIG_SENSORS_AD7414 is not set
936# CONFIG_SENSORS_AD7418 is not set 984# CONFIG_SENSORS_AD7418 is not set
937# CONFIG_SENSORS_ADM1021 is not set 985# CONFIG_SENSORS_ADM1021 is not set
@@ -955,6 +1003,7 @@ CONFIG_HWMON=y
955# CONFIG_SENSORS_GL520SM is not set 1003# CONFIG_SENSORS_GL520SM is not set
956# CONFIG_SENSORS_IT87 is not set 1004# CONFIG_SENSORS_IT87 is not set
957# CONFIG_SENSORS_LM63 is not set 1005# CONFIG_SENSORS_LM63 is not set
1006# CONFIG_SENSORS_LM73 is not set
958# CONFIG_SENSORS_LM75 is not set 1007# CONFIG_SENSORS_LM75 is not set
959# CONFIG_SENSORS_LM77 is not set 1008# CONFIG_SENSORS_LM77 is not set
960# CONFIG_SENSORS_LM78 is not set 1009# CONFIG_SENSORS_LM78 is not set
@@ -981,6 +1030,7 @@ CONFIG_HWMON=y
981# CONFIG_SENSORS_ADS7828 is not set 1030# CONFIG_SENSORS_ADS7828 is not set
982# CONFIG_SENSORS_THMC50 is not set 1031# CONFIG_SENSORS_THMC50 is not set
983# CONFIG_SENSORS_TMP401 is not set 1032# CONFIG_SENSORS_TMP401 is not set
1033# CONFIG_SENSORS_TMP421 is not set
984# CONFIG_SENSORS_VIA686A is not set 1034# CONFIG_SENSORS_VIA686A is not set
985# CONFIG_SENSORS_VT1211 is not set 1035# CONFIG_SENSORS_VT1211 is not set
986# CONFIG_SENSORS_VT8231 is not set 1036# CONFIG_SENSORS_VT8231 is not set
@@ -993,9 +1043,8 @@ CONFIG_HWMON=y
993# CONFIG_SENSORS_W83627HF is not set 1043# CONFIG_SENSORS_W83627HF is not set
994# CONFIG_SENSORS_W83627EHF is not set 1044# CONFIG_SENSORS_W83627EHF is not set
995# CONFIG_SENSORS_ULTRA45 is not set 1045# CONFIG_SENSORS_ULTRA45 is not set
996# CONFIG_HWMON_DEBUG_CHIP is not set 1046# CONFIG_SENSORS_LIS3_I2C is not set
997# CONFIG_THERMAL is not set 1047# CONFIG_THERMAL is not set
998# CONFIG_THERMAL_HWMON is not set
999# CONFIG_WATCHDOG is not set 1048# CONFIG_WATCHDOG is not set
1000CONFIG_SSB_POSSIBLE=y 1049CONFIG_SSB_POSSIBLE=y
1001 1050
@@ -1013,16 +1062,20 @@ CONFIG_SSB_POSSIBLE=y
1013# CONFIG_TWL4030_CORE is not set 1062# CONFIG_TWL4030_CORE is not set
1014# CONFIG_MFD_TMIO is not set 1063# CONFIG_MFD_TMIO is not set
1015# CONFIG_PMIC_DA903X is not set 1064# CONFIG_PMIC_DA903X is not set
1065# CONFIG_PMIC_ADP5520 is not set
1016# CONFIG_MFD_WM8400 is not set 1066# CONFIG_MFD_WM8400 is not set
1067# CONFIG_MFD_WM831X is not set
1017# CONFIG_MFD_WM8350_I2C is not set 1068# CONFIG_MFD_WM8350_I2C is not set
1018# CONFIG_MFD_PCF50633 is not set 1069# CONFIG_MFD_PCF50633 is not set
1019# CONFIG_AB3100_CORE is not set 1070# CONFIG_AB3100_CORE is not set
1071# CONFIG_MFD_88PM8607 is not set
1020# CONFIG_REGULATOR is not set 1072# CONFIG_REGULATOR is not set
1021# CONFIG_MEDIA_SUPPORT is not set 1073# CONFIG_MEDIA_SUPPORT is not set
1022 1074
1023# 1075#
1024# Graphics support 1076# Graphics support
1025# 1077#
1078CONFIG_VGA_ARB=y
1026# CONFIG_DRM is not set 1079# CONFIG_DRM is not set
1027# CONFIG_VGASTATE is not set 1080# CONFIG_VGASTATE is not set
1028# CONFIG_VIDEO_OUTPUT_CONTROL is not set 1081# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -1176,6 +1229,7 @@ CONFIG_SND_ALI5451=m
1176# CONFIG_SND_OXYGEN is not set 1229# CONFIG_SND_OXYGEN is not set
1177# CONFIG_SND_CS4281 is not set 1230# CONFIG_SND_CS4281 is not set
1178# CONFIG_SND_CS46XX is not set 1231# CONFIG_SND_CS46XX is not set
1232# CONFIG_SND_CS5535AUDIO is not set
1179# CONFIG_SND_CTXFI is not set 1233# CONFIG_SND_CTXFI is not set
1180# CONFIG_SND_DARLA20 is not set 1234# CONFIG_SND_DARLA20 is not set
1181# CONFIG_SND_GINA20 is not set 1235# CONFIG_SND_GINA20 is not set
@@ -1311,6 +1365,7 @@ CONFIG_USB_EHCI_HCD=m
1311# CONFIG_USB_OXU210HP_HCD is not set 1365# CONFIG_USB_OXU210HP_HCD is not set
1312# CONFIG_USB_ISP116X_HCD is not set 1366# CONFIG_USB_ISP116X_HCD is not set
1313# CONFIG_USB_ISP1760_HCD is not set 1367# CONFIG_USB_ISP1760_HCD is not set
1368# CONFIG_USB_ISP1362_HCD is not set
1314CONFIG_USB_OHCI_HCD=y 1369CONFIG_USB_OHCI_HCD=y
1315# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 1370# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
1316# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set 1371# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
@@ -1426,6 +1481,7 @@ CONFIG_RTC_INTF_DEV=y
1426# CONFIG_RTC_DRV_PCF8563 is not set 1481# CONFIG_RTC_DRV_PCF8563 is not set
1427# CONFIG_RTC_DRV_PCF8583 is not set 1482# CONFIG_RTC_DRV_PCF8583 is not set
1428# CONFIG_RTC_DRV_M41T80 is not set 1483# CONFIG_RTC_DRV_M41T80 is not set
1484# CONFIG_RTC_DRV_BQ32K is not set
1429# CONFIG_RTC_DRV_S35390A is not set 1485# CONFIG_RTC_DRV_S35390A is not set
1430# CONFIG_RTC_DRV_FM3130 is not set 1486# CONFIG_RTC_DRV_FM3130 is not set
1431# CONFIG_RTC_DRV_RX8581 is not set 1487# CONFIG_RTC_DRV_RX8581 is not set
@@ -1447,7 +1503,9 @@ CONFIG_RTC_DRV_CMOS=y
1447# CONFIG_RTC_DRV_M48T86 is not set 1503# CONFIG_RTC_DRV_M48T86 is not set
1448# CONFIG_RTC_DRV_M48T35 is not set 1504# CONFIG_RTC_DRV_M48T35 is not set
1449CONFIG_RTC_DRV_M48T59=y 1505CONFIG_RTC_DRV_M48T59=y
1506# CONFIG_RTC_DRV_MSM6242 is not set
1450CONFIG_RTC_DRV_BQ4802=y 1507CONFIG_RTC_DRV_BQ4802=y
1508# CONFIG_RTC_DRV_RP5C01 is not set
1451# CONFIG_RTC_DRV_V3020 is not set 1509# CONFIG_RTC_DRV_V3020 is not set
1452 1510
1453# 1511#
@@ -1625,6 +1683,7 @@ CONFIG_PRINTK_TIME=y
1625CONFIG_ENABLE_MUST_CHECK=y 1683CONFIG_ENABLE_MUST_CHECK=y
1626CONFIG_FRAME_WARN=2048 1684CONFIG_FRAME_WARN=2048
1627CONFIG_MAGIC_SYSRQ=y 1685CONFIG_MAGIC_SYSRQ=y
1686# CONFIG_STRIP_ASM_SYMS is not set
1628# CONFIG_UNUSED_SYMBOLS is not set 1687# CONFIG_UNUSED_SYMBOLS is not set
1629CONFIG_DEBUG_FS=y 1688CONFIG_DEBUG_FS=y
1630# CONFIG_HEADERS_CHECK is not set 1689# CONFIG_HEADERS_CHECK is not set
@@ -1678,9 +1737,11 @@ CONFIG_NOP_TRACER=y
1678CONFIG_HAVE_FUNCTION_TRACER=y 1737CONFIG_HAVE_FUNCTION_TRACER=y
1679CONFIG_HAVE_DYNAMIC_FTRACE=y 1738CONFIG_HAVE_DYNAMIC_FTRACE=y
1680CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1739CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1740CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
1681CONFIG_RING_BUFFER=y 1741CONFIG_RING_BUFFER=y
1682CONFIG_EVENT_TRACING=y 1742CONFIG_EVENT_TRACING=y
1683CONFIG_CONTEXT_SWITCH_TRACER=y 1743CONFIG_CONTEXT_SWITCH_TRACER=y
1744CONFIG_RING_BUFFER_ALLOW_SWAP=y
1684CONFIG_TRACING=y 1745CONFIG_TRACING=y
1685CONFIG_GENERIC_TRACER=y 1746CONFIG_GENERIC_TRACER=y
1686CONFIG_TRACING_SUPPORT=y 1747CONFIG_TRACING_SUPPORT=y
@@ -1688,6 +1749,7 @@ CONFIG_FTRACE=y
1688# CONFIG_FUNCTION_TRACER is not set 1749# CONFIG_FUNCTION_TRACER is not set
1689# CONFIG_IRQSOFF_TRACER is not set 1750# CONFIG_IRQSOFF_TRACER is not set
1690# CONFIG_SCHED_TRACER is not set 1751# CONFIG_SCHED_TRACER is not set
1752# CONFIG_FTRACE_SYSCALLS is not set
1691# CONFIG_BOOT_TRACER is not set 1753# CONFIG_BOOT_TRACER is not set
1692CONFIG_BRANCH_PROFILE_NONE=y 1754CONFIG_BRANCH_PROFILE_NONE=y
1693# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set 1755# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
@@ -1706,6 +1768,7 @@ CONFIG_HAVE_ARCH_KGDB=y
1706# CONFIG_DEBUG_STACK_USAGE is not set 1768# CONFIG_DEBUG_STACK_USAGE is not set
1707# CONFIG_DEBUG_DCFLUSH is not set 1769# CONFIG_DEBUG_DCFLUSH is not set
1708# CONFIG_STACK_DEBUG is not set 1770# CONFIG_STACK_DEBUG is not set
1771# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
1709 1772
1710# 1773#
1711# Security options 1774# Security options
@@ -1714,11 +1777,17 @@ CONFIG_KEYS=y
1714# CONFIG_KEYS_DEBUG_PROC_KEYS is not set 1777# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
1715# CONFIG_SECURITY is not set 1778# CONFIG_SECURITY is not set
1716# CONFIG_SECURITYFS is not set 1779# CONFIG_SECURITYFS is not set
1717# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1780# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1781# CONFIG_DEFAULT_SECURITY_SMACK is not set
1782# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1783CONFIG_DEFAULT_SECURITY_DAC=y
1784CONFIG_DEFAULT_SECURITY=""
1718CONFIG_XOR_BLOCKS=m 1785CONFIG_XOR_BLOCKS=m
1719CONFIG_ASYNC_CORE=m 1786CONFIG_ASYNC_CORE=m
1720CONFIG_ASYNC_MEMCPY=m 1787CONFIG_ASYNC_MEMCPY=m
1721CONFIG_ASYNC_XOR=m 1788CONFIG_ASYNC_XOR=m
1789CONFIG_ASYNC_PQ=m
1790CONFIG_ASYNC_RAID6_RECOV=m
1722CONFIG_CRYPTO=y 1791CONFIG_CRYPTO=y
1723 1792
1724# 1793#
diff --git a/arch/sparc/include/asm/elf_64.h b/arch/sparc/include/asm/elf_64.h
index ff66bb88537b..e67880381b84 100644
--- a/arch/sparc/include/asm/elf_64.h
+++ b/arch/sparc/include/asm/elf_64.h
@@ -195,17 +195,10 @@ static inline unsigned int sparc64_elf_hwcap(void)
195#define ELF_PLATFORM (NULL) 195#define ELF_PLATFORM (NULL)
196 196
197#define SET_PERSONALITY(ex) \ 197#define SET_PERSONALITY(ex) \
198do { unsigned long new_flags = current_thread_info()->flags; \ 198do { if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \
199 new_flags &= _TIF_32BIT; \ 199 set_thread_flag(TIF_32BIT); \
200 if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \
201 new_flags |= _TIF_32BIT; \
202 else \ 200 else \
203 new_flags &= ~_TIF_32BIT; \ 201 clear_thread_flag(TIF_32BIT); \
204 if ((current_thread_info()->flags & _TIF_32BIT) \
205 != new_flags) \
206 set_thread_flag(TIF_ABI_PENDING); \
207 else \
208 clear_thread_flag(TIF_ABI_PENDING); \
209 /* flush_thread will update pgd cache */ \ 202 /* flush_thread will update pgd cache */ \
210 if (personality(current->personality) != PER_LINUX32) \ 203 if (personality(current->personality) != PER_LINUX32) \
211 set_personality(PER_LINUX | \ 204 set_personality(PER_LINUX | \
diff --git a/arch/sparc/include/asm/io_32.h b/arch/sparc/include/asm/io_32.h
index 93fe21e02c86..679c7504625a 100644
--- a/arch/sparc/include/asm/io_32.h
+++ b/arch/sparc/include/asm/io_32.h
@@ -8,7 +8,7 @@
8#include <asm/page.h> /* IO address mapping routines need this */ 8#include <asm/page.h> /* IO address mapping routines need this */
9#include <asm/system.h> 9#include <asm/system.h>
10 10
11#define page_to_phys(page) (((page) - mem_map) << PAGE_SHIFT) 11#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
12 12
13static inline u32 flip_dword (u32 l) 13static inline u32 flip_dword (u32 l)
14{ 14{
diff --git a/arch/sparc/include/asm/page_32.h b/arch/sparc/include/asm/page_32.h
index f72080bdda94..156707b0f18d 100644
--- a/arch/sparc/include/asm/page_32.h
+++ b/arch/sparc/include/asm/page_32.h
@@ -143,7 +143,7 @@ extern unsigned long pfn_base;
143#define phys_to_virt __va 143#define phys_to_virt __va
144 144
145#define ARCH_PFN_OFFSET (pfn_base) 145#define ARCH_PFN_OFFSET (pfn_base)
146#define virt_to_page(kaddr) (mem_map + ((((unsigned long)(kaddr)-PAGE_OFFSET)>>PAGE_SHIFT))) 146#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
147 147
148#define pfn_valid(pfn) (((pfn) >= (pfn_base)) && (((pfn)-(pfn_base)) < max_mapnr)) 148#define pfn_valid(pfn) (((pfn) >= (pfn_base)) && (((pfn)-(pfn_base)) < max_mapnr))
149#define virt_addr_valid(kaddr) ((((unsigned long)(kaddr)-PAGE_OFFSET)>>PAGE_SHIFT) < max_mapnr) 149#define virt_addr_valid(kaddr) ((((unsigned long)(kaddr)-PAGE_OFFSET)>>PAGE_SHIFT) < max_mapnr)
diff --git a/arch/sparc/include/asm/param.h b/arch/sparc/include/asm/param.h
index 9836d9a3cb9a..0bc356bf8c50 100644
--- a/arch/sparc/include/asm/param.h
+++ b/arch/sparc/include/asm/param.h
@@ -1,22 +1,7 @@
1#ifndef _ASMSPARC_PARAM_H 1#ifndef _ASMSPARC_PARAM_H
2#define _ASMSPARC_PARAM_H 2#define _ASMSPARC_PARAM_H
3 3
4#ifdef __KERNEL__
5# define HZ CONFIG_HZ /* Internal kernel timer frequency */
6# define USER_HZ 100 /* .. some user interfaces are in "ticks" */
7# define CLOCKS_PER_SEC (USER_HZ)
8#endif
9
10#ifndef HZ
11#define HZ 100
12#endif
13
14#define EXEC_PAGESIZE 8192 /* Thanks for sun4's we carry baggage... */ 4#define EXEC_PAGESIZE 8192 /* Thanks for sun4's we carry baggage... */
5#include <asm-generic/param.h>
15 6
16#ifndef NOGROUP 7#endif /* _ASMSPARC_PARAM_H */
17#define NOGROUP (-1)
18#endif
19
20#define MAXHOSTNAMELEN 64 /* max length of hostname */
21
22#endif
diff --git a/arch/sparc/include/asm/stat.h b/arch/sparc/include/asm/stat.h
index 55db5eca08e2..39327d6a57eb 100644
--- a/arch/sparc/include/asm/stat.h
+++ b/arch/sparc/include/asm/stat.h
@@ -53,8 +53,8 @@ struct stat {
53 ino_t st_ino; 53 ino_t st_ino;
54 mode_t st_mode; 54 mode_t st_mode;
55 short st_nlink; 55 short st_nlink;
56 uid_t st_uid; 56 uid16_t st_uid;
57 gid_t st_gid; 57 gid16_t st_gid;
58 unsigned short st_rdev; 58 unsigned short st_rdev;
59 off_t st_size; 59 off_t st_size;
60 time_t st_atime; 60 time_t st_atime;
diff --git a/arch/sparc/include/asm/thread_info_64.h b/arch/sparc/include/asm/thread_info_64.h
index 7257ebb8f394..39be9f256e5a 100644
--- a/arch/sparc/include/asm/thread_info_64.h
+++ b/arch/sparc/include/asm/thread_info_64.h
@@ -228,12 +228,11 @@ register struct thread_info *current_thread_info_reg asm("g6");
228#define TIF_SECCOMP 9 /* secure computing */ 228#define TIF_SECCOMP 9 /* secure computing */
229#define TIF_SYSCALL_AUDIT 10 /* syscall auditing active */ 229#define TIF_SYSCALL_AUDIT 10 /* syscall auditing active */
230#define TIF_SYSCALL_TRACEPOINT 11 /* syscall tracepoint instrumentation */ 230#define TIF_SYSCALL_TRACEPOINT 11 /* syscall tracepoint instrumentation */
231/* flag bit 11 is available */
232/* NOTE: Thread flags >= 12 should be ones we have no interest 231/* NOTE: Thread flags >= 12 should be ones we have no interest
233 * in using in assembly, else we can't use the mask as 232 * in using in assembly, else we can't use the mask as
234 * an immediate value in instructions such as andcc. 233 * an immediate value in instructions such as andcc.
235 */ 234 */
236#define TIF_ABI_PENDING 12 235/* flag bit 12 is available */
237#define TIF_MEMDIE 13 236#define TIF_MEMDIE 13
238#define TIF_POLLING_NRFLAG 14 237#define TIF_POLLING_NRFLAG 14
239#define TIF_FREEZE 15 /* is freezing for suspend */ 238#define TIF_FREEZE 15 /* is freezing for suspend */
@@ -248,7 +247,6 @@ register struct thread_info *current_thread_info_reg asm("g6");
248#define _TIF_SECCOMP (1<<TIF_SECCOMP) 247#define _TIF_SECCOMP (1<<TIF_SECCOMP)
249#define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT) 248#define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT)
250#define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT) 249#define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT)
251#define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING)
252#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) 250#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
253#define _TIF_FREEZE (1<<TIF_FREEZE) 251#define _TIF_FREEZE (1<<TIF_FREEZE)
254 252
diff --git a/arch/sparc/include/asm/timex_32.h b/arch/sparc/include/asm/timex_32.h
index b6ccdb0d6f7d..a254750e4c03 100644
--- a/arch/sparc/include/asm/timex_32.h
+++ b/arch/sparc/include/asm/timex_32.h
@@ -12,4 +12,5 @@
12typedef unsigned long cycles_t; 12typedef unsigned long cycles_t;
13#define get_cycles() (0) 13#define get_cycles() (0)
14 14
15extern u32 (*do_arch_gettimeoffset)(void);
15#endif 16#endif
diff --git a/arch/sparc/include/asm/topology_64.h b/arch/sparc/include/asm/topology_64.h
index 600a79035fa1..1c79f32734a0 100644
--- a/arch/sparc/include/asm/topology_64.h
+++ b/arch/sparc/include/asm/topology_64.h
@@ -12,7 +12,9 @@ static inline int cpu_to_node(int cpu)
12 12
13#define parent_node(node) (node) 13#define parent_node(node) (node)
14 14
15#define cpumask_of_node(node) (&numa_cpumask_lookup_table[node]) 15#define cpumask_of_node(node) ((node) == -1 ? \
16 cpu_all_mask : \
17 &numa_cpumask_lookup_table[node])
16 18
17struct pci_bus; 19struct pci_bus;
18#ifdef CONFIG_PCI 20#ifdef CONFIG_PCI
diff --git a/arch/sparc/include/asm/uaccess_32.h b/arch/sparc/include/asm/uaccess_32.h
index 489d2ba92bcb..25f1d10155e8 100644
--- a/arch/sparc/include/asm/uaccess_32.h
+++ b/arch/sparc/include/asm/uaccess_32.h
@@ -274,7 +274,7 @@ static inline unsigned long copy_from_user(void *to, const void __user *from, un
274 274
275 if (unlikely(sz != -1 && sz < n)) { 275 if (unlikely(sz != -1 && sz < n)) {
276 copy_from_user_overflow(); 276 copy_from_user_overflow();
277 return -EFAULT; 277 return n;
278 } 278 }
279 279
280 if (n && __access_ok((unsigned long) from, n)) 280 if (n && __access_ok((unsigned long) from, n))
diff --git a/arch/sparc/include/asm/uaccess_64.h b/arch/sparc/include/asm/uaccess_64.h
index dbc141660994..2406788bfe5f 100644
--- a/arch/sparc/include/asm/uaccess_64.h
+++ b/arch/sparc/include/asm/uaccess_64.h
@@ -221,8 +221,8 @@ extern unsigned long copy_from_user_fixup(void *to, const void __user *from,
221static inline unsigned long __must_check 221static inline unsigned long __must_check
222copy_from_user(void *to, const void __user *from, unsigned long size) 222copy_from_user(void *to, const void __user *from, unsigned long size)
223{ 223{
224 unsigned long ret = (unsigned long) -EFAULT;
225 int sz = __compiletime_object_size(to); 224 int sz = __compiletime_object_size(to);
225 unsigned long ret = size;
226 226
227 if (likely(sz == -1 || sz >= size)) { 227 if (likely(sz == -1 || sz >= size)) {
228 ret = ___copy_from_user(to, from, size); 228 ret = ___copy_from_user(to, from, size);
diff --git a/arch/sparc/kernel/central.c b/arch/sparc/kernel/central.c
index f3b5466c389c..4589ca33220f 100644
--- a/arch/sparc/kernel/central.c
+++ b/arch/sparc/kernel/central.c
@@ -99,7 +99,7 @@ static int __devinit clock_board_probe(struct of_device *op,
99 99
100 p->leds_resource.start = (unsigned long) 100 p->leds_resource.start = (unsigned long)
101 (p->clock_regs + CLOCK_CTRL); 101 (p->clock_regs + CLOCK_CTRL);
102 p->leds_resource.end = p->leds_resource.end; 102 p->leds_resource.end = p->leds_resource.start;
103 p->leds_resource.name = "leds"; 103 p->leds_resource.name = "leds";
104 104
105 p->leds_pdev.name = "sunfire-clockboard-leds"; 105 p->leds_pdev.name = "sunfire-clockboard-leds";
@@ -194,7 +194,7 @@ static int __devinit fhc_probe(struct of_device *op,
194 if (!p->central) { 194 if (!p->central) {
195 p->leds_resource.start = (unsigned long) 195 p->leds_resource.start = (unsigned long)
196 (p->pregs + FHC_PREGS_CTRL); 196 (p->pregs + FHC_PREGS_CTRL);
197 p->leds_resource.end = p->leds_resource.end; 197 p->leds_resource.end = p->leds_resource.start;
198 p->leds_resource.name = "leds"; 198 p->leds_resource.name = "leds";
199 199
200 p->leds_pdev.name = "sunfire-fhc-leds"; 200 p->leds_pdev.name = "sunfire-fhc-leds";
diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c
index 8d6882bb480a..e1cbdb94d97b 100644
--- a/arch/sparc/kernel/irq_64.c
+++ b/arch/sparc/kernel/irq_64.c
@@ -250,12 +250,12 @@ struct irq_handler_data {
250}; 250};
251 251
252#ifdef CONFIG_SMP 252#ifdef CONFIG_SMP
253static int irq_choose_cpu(unsigned int virt_irq) 253static int irq_choose_cpu(unsigned int virt_irq, const struct cpumask *affinity)
254{ 254{
255 cpumask_t mask; 255 cpumask_t mask;
256 int cpuid; 256 int cpuid;
257 257
258 cpumask_copy(&mask, irq_desc[virt_irq].affinity); 258 cpumask_copy(&mask, affinity);
259 if (cpus_equal(mask, cpu_online_map)) { 259 if (cpus_equal(mask, cpu_online_map)) {
260 cpuid = map_to_cpu(virt_irq); 260 cpuid = map_to_cpu(virt_irq);
261 } else { 261 } else {
@@ -268,10 +268,8 @@ static int irq_choose_cpu(unsigned int virt_irq)
268 return cpuid; 268 return cpuid;
269} 269}
270#else 270#else
271static int irq_choose_cpu(unsigned int virt_irq) 271#define irq_choose_cpu(virt_irq, affinity) \
272{ 272 real_hard_smp_processor_id()
273 return real_hard_smp_processor_id();
274}
275#endif 273#endif
276 274
277static void sun4u_irq_enable(unsigned int virt_irq) 275static void sun4u_irq_enable(unsigned int virt_irq)
@@ -282,7 +280,8 @@ static void sun4u_irq_enable(unsigned int virt_irq)
282 unsigned long cpuid, imap, val; 280 unsigned long cpuid, imap, val;
283 unsigned int tid; 281 unsigned int tid;
284 282
285 cpuid = irq_choose_cpu(virt_irq); 283 cpuid = irq_choose_cpu(virt_irq,
284 irq_desc[virt_irq].affinity);
286 imap = data->imap; 285 imap = data->imap;
287 286
288 tid = sun4u_compute_tid(imap, cpuid); 287 tid = sun4u_compute_tid(imap, cpuid);
@@ -299,7 +298,24 @@ static void sun4u_irq_enable(unsigned int virt_irq)
299static int sun4u_set_affinity(unsigned int virt_irq, 298static int sun4u_set_affinity(unsigned int virt_irq,
300 const struct cpumask *mask) 299 const struct cpumask *mask)
301{ 300{
302 sun4u_irq_enable(virt_irq); 301 struct irq_handler_data *data = get_irq_chip_data(virt_irq);
302
303 if (likely(data)) {
304 unsigned long cpuid, imap, val;
305 unsigned int tid;
306
307 cpuid = irq_choose_cpu(virt_irq, mask);
308 imap = data->imap;
309
310 tid = sun4u_compute_tid(imap, cpuid);
311
312 val = upa_readq(imap);
313 val &= ~(IMAP_TID_UPA | IMAP_TID_JBUS |
314 IMAP_AID_SAFARI | IMAP_NID_SAFARI);
315 val |= tid | IMAP_VALID;
316 upa_writeq(val, imap);
317 upa_writeq(ICLR_IDLE, data->iclr);
318 }
303 319
304 return 0; 320 return 0;
305} 321}
@@ -340,7 +356,8 @@ static void sun4u_irq_eoi(unsigned int virt_irq)
340static void sun4v_irq_enable(unsigned int virt_irq) 356static void sun4v_irq_enable(unsigned int virt_irq)
341{ 357{
342 unsigned int ino = virt_irq_table[virt_irq].dev_ino; 358 unsigned int ino = virt_irq_table[virt_irq].dev_ino;
343 unsigned long cpuid = irq_choose_cpu(virt_irq); 359 unsigned long cpuid = irq_choose_cpu(virt_irq,
360 irq_desc[virt_irq].affinity);
344 int err; 361 int err;
345 362
346 err = sun4v_intr_settarget(ino, cpuid); 363 err = sun4v_intr_settarget(ino, cpuid);
@@ -361,7 +378,7 @@ static int sun4v_set_affinity(unsigned int virt_irq,
361 const struct cpumask *mask) 378 const struct cpumask *mask)
362{ 379{
363 unsigned int ino = virt_irq_table[virt_irq].dev_ino; 380 unsigned int ino = virt_irq_table[virt_irq].dev_ino;
364 unsigned long cpuid = irq_choose_cpu(virt_irq); 381 unsigned long cpuid = irq_choose_cpu(virt_irq, mask);
365 int err; 382 int err;
366 383
367 err = sun4v_intr_settarget(ino, cpuid); 384 err = sun4v_intr_settarget(ino, cpuid);
@@ -403,7 +420,7 @@ static void sun4v_virq_enable(unsigned int virt_irq)
403 unsigned long cpuid, dev_handle, dev_ino; 420 unsigned long cpuid, dev_handle, dev_ino;
404 int err; 421 int err;
405 422
406 cpuid = irq_choose_cpu(virt_irq); 423 cpuid = irq_choose_cpu(virt_irq, irq_desc[virt_irq].affinity);
407 424
408 dev_handle = virt_irq_table[virt_irq].dev_handle; 425 dev_handle = virt_irq_table[virt_irq].dev_handle;
409 dev_ino = virt_irq_table[virt_irq].dev_ino; 426 dev_ino = virt_irq_table[virt_irq].dev_ino;
@@ -433,7 +450,7 @@ static int sun4v_virt_set_affinity(unsigned int virt_irq,
433 unsigned long cpuid, dev_handle, dev_ino; 450 unsigned long cpuid, dev_handle, dev_ino;
434 int err; 451 int err;
435 452
436 cpuid = irq_choose_cpu(virt_irq); 453 cpuid = irq_choose_cpu(virt_irq, mask);
437 454
438 dev_handle = virt_irq_table[virt_irq].dev_handle; 455 dev_handle = virt_irq_table[virt_irq].dev_handle;
439 dev_ino = virt_irq_table[virt_irq].dev_ino; 456 dev_ino = virt_irq_table[virt_irq].dev_ino;
diff --git a/arch/sparc/kernel/kstack.h b/arch/sparc/kernel/kstack.h
index 4248d969272f..5247283d1c03 100644
--- a/arch/sparc/kernel/kstack.h
+++ b/arch/sparc/kernel/kstack.h
@@ -11,6 +11,10 @@ static inline bool kstack_valid(struct thread_info *tp, unsigned long sp)
11{ 11{
12 unsigned long base = (unsigned long) tp; 12 unsigned long base = (unsigned long) tp;
13 13
14 /* Stack pointer must be 16-byte aligned. */
15 if (sp & (16UL - 1))
16 return false;
17
14 if (sp >= (base + sizeof(struct thread_info)) && 18 if (sp >= (base + sizeof(struct thread_info)) &&
15 sp <= (base + THREAD_SIZE - sizeof(struct sparc_stackf))) 19 sp <= (base + THREAD_SIZE - sizeof(struct sparc_stackf)))
16 return true; 20 return true;
diff --git a/arch/sparc/kernel/nmi.c b/arch/sparc/kernel/nmi.c
index f30f4a1ead23..d242a7340541 100644
--- a/arch/sparc/kernel/nmi.c
+++ b/arch/sparc/kernel/nmi.c
@@ -96,7 +96,6 @@ notrace __kprobes void perfctr_irq(int irq, struct pt_regs *regs)
96 int cpu = smp_processor_id(); 96 int cpu = smp_processor_id();
97 97
98 clear_softint(1 << irq); 98 clear_softint(1 << irq);
99 pcr_ops->write(PCR_PIC_PRIV);
100 99
101 local_cpu_data().__nmi_count++; 100 local_cpu_data().__nmi_count++;
102 101
@@ -105,6 +104,8 @@ notrace __kprobes void perfctr_irq(int irq, struct pt_regs *regs)
105 if (notify_die(DIE_NMI, "nmi", regs, 0, 104 if (notify_die(DIE_NMI, "nmi", regs, 0,
106 pt_regs_trap_type(regs), SIGINT) == NOTIFY_STOP) 105 pt_regs_trap_type(regs), SIGINT) == NOTIFY_STOP)
107 touched = 1; 106 touched = 1;
107 else
108 pcr_ops->write(PCR_PIC_PRIV);
108 109
109 sum = kstat_irqs_cpu(0, cpu); 110 sum = kstat_irqs_cpu(0, cpu);
110 if (__get_cpu_var(nmi_touch)) { 111 if (__get_cpu_var(nmi_touch)) {
diff --git a/arch/sparc/kernel/of_device_32.c b/arch/sparc/kernel/of_device_32.c
index 4c26eb59e742..53a58b349849 100644
--- a/arch/sparc/kernel/of_device_32.c
+++ b/arch/sparc/kernel/of_device_32.c
@@ -105,7 +105,7 @@ static unsigned long of_bus_sbus_get_flags(const u32 *addr, unsigned long flags)
105 105
106static int of_bus_ambapp_match(struct device_node *np) 106static int of_bus_ambapp_match(struct device_node *np)
107{ 107{
108 return !strcmp(np->name, "ambapp"); 108 return !strcmp(np->type, "ambapp");
109} 109}
110 110
111static void of_bus_ambapp_count_cells(struct device_node *child, 111static void of_bus_ambapp_count_cells(struct device_node *child,
diff --git a/arch/sparc/kernel/pci.c b/arch/sparc/kernel/pci.c
index 539e83f8e087..592b03d85167 100644
--- a/arch/sparc/kernel/pci.c
+++ b/arch/sparc/kernel/pci.c
@@ -247,6 +247,7 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
247 struct pci_bus *bus, int devfn) 247 struct pci_bus *bus, int devfn)
248{ 248{
249 struct dev_archdata *sd; 249 struct dev_archdata *sd;
250 struct pci_slot *slot;
250 struct of_device *op; 251 struct of_device *op;
251 struct pci_dev *dev; 252 struct pci_dev *dev;
252 const char *type; 253 const char *type;
@@ -286,6 +287,11 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
286 dev->dev.bus = &pci_bus_type; 287 dev->dev.bus = &pci_bus_type;
287 dev->devfn = devfn; 288 dev->devfn = devfn;
288 dev->multifunction = 0; /* maybe a lie? */ 289 dev->multifunction = 0; /* maybe a lie? */
290 set_pcie_port_type(dev);
291
292 list_for_each_entry(slot, &dev->bus->slots, list)
293 if (PCI_SLOT(dev->devfn) == slot->number)
294 dev->slot = slot;
289 295
290 dev->vendor = of_getintprop_default(node, "vendor-id", 0xffff); 296 dev->vendor = of_getintprop_default(node, "vendor-id", 0xffff);
291 dev->device = of_getintprop_default(node, "device-id", 0xffff); 297 dev->device = of_getintprop_default(node, "device-id", 0xffff);
@@ -322,6 +328,7 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
322 328
323 dev->current_state = 4; /* unknown power state */ 329 dev->current_state = 4; /* unknown power state */
324 dev->error_state = pci_channel_io_normal; 330 dev->error_state = pci_channel_io_normal;
331 dev->dma_mask = 0xffffffff;
325 332
326 if (!strcmp(node->name, "pci")) { 333 if (!strcmp(node->name, "pci")) {
327 /* a PCI-PCI bridge */ 334 /* a PCI-PCI bridge */
diff --git a/arch/sparc/kernel/pcic.c b/arch/sparc/kernel/pcic.c
index 85e7037429b9..4e2724ec2bb6 100644
--- a/arch/sparc/kernel/pcic.c
+++ b/arch/sparc/kernel/pcic.c
@@ -30,6 +30,7 @@
30#include <asm/oplib.h> 30#include <asm/oplib.h>
31#include <asm/prom.h> 31#include <asm/prom.h>
32#include <asm/pcic.h> 32#include <asm/pcic.h>
33#include <asm/timex.h>
33#include <asm/timer.h> 34#include <asm/timer.h>
34#include <asm/uaccess.h> 35#include <asm/uaccess.h>
35#include <asm/irq_regs.h> 36#include <asm/irq_regs.h>
@@ -163,8 +164,6 @@ void __iomem *pcic_regs;
163volatile int pcic_speculative; 164volatile int pcic_speculative;
164volatile int pcic_trapped; 165volatile int pcic_trapped;
165 166
166static void pci_do_gettimeofday(struct timeval *tv);
167static int pci_do_settimeofday(struct timespec *tv);
168 167
169#define CONFIG_CMD(bus, device_fn, where) (0x80000000 | (((unsigned int)bus) << 16) | (((unsigned int)device_fn) << 8) | (where & ~3)) 168#define CONFIG_CMD(bus, device_fn, where) (0x80000000 | (((unsigned int)bus) << 16) | (((unsigned int)device_fn) << 8) | (where & ~3))
170 169
@@ -716,19 +715,27 @@ static irqreturn_t pcic_timer_handler (int irq, void *h)
716#define USECS_PER_JIFFY 10000 /* We have 100HZ "standard" timer for sparc */ 715#define USECS_PER_JIFFY 10000 /* We have 100HZ "standard" timer for sparc */
717#define TICK_TIMER_LIMIT ((100*1000000/4)/100) 716#define TICK_TIMER_LIMIT ((100*1000000/4)/100)
718 717
718u32 pci_gettimeoffset(void)
719{
720 /*
721 * We divide all by 100
722 * to have microsecond resolution and to avoid overflow
723 */
724 unsigned long count =
725 readl(pcic0.pcic_regs+PCI_SYS_COUNTER) & ~PCI_SYS_COUNTER_OVERFLOW;
726 count = ((count/100)*USECS_PER_JIFFY) / (TICK_TIMER_LIMIT/100);
727 return count * 1000;
728}
729
730
719void __init pci_time_init(void) 731void __init pci_time_init(void)
720{ 732{
721 struct linux_pcic *pcic = &pcic0; 733 struct linux_pcic *pcic = &pcic0;
722 unsigned long v; 734 unsigned long v;
723 int timer_irq, irq; 735 int timer_irq, irq;
724 736
725 /* A hack until do_gettimeofday prototype is moved to arch specific headers 737 do_arch_gettimeoffset = pci_gettimeoffset;
726 and btfixupped. Patch do_gettimeofday with ba pci_do_gettimeofday; nop */ 738
727 ((unsigned int *)do_gettimeofday)[0] =
728 0x10800000 | ((((unsigned long)pci_do_gettimeofday -
729 (unsigned long)do_gettimeofday) >> 2) & 0x003fffff);
730 ((unsigned int *)do_gettimeofday)[1] = 0x01000000;
731 BTFIXUPSET_CALL(bus_do_settimeofday, pci_do_settimeofday, BTFIXUPCALL_NORM);
732 btfixup(); 739 btfixup();
733 740
734 writel (TICK_TIMER_LIMIT, pcic->pcic_regs+PCI_SYS_LIMIT); 741 writel (TICK_TIMER_LIMIT, pcic->pcic_regs+PCI_SYS_LIMIT);
@@ -746,84 +753,6 @@ void __init pci_time_init(void)
746 local_irq_enable(); 753 local_irq_enable();
747} 754}
748 755
749static inline unsigned long do_gettimeoffset(void)
750{
751 /*
752 * We divide all by 100
753 * to have microsecond resolution and to avoid overflow
754 */
755 unsigned long count =
756 readl(pcic0.pcic_regs+PCI_SYS_COUNTER) & ~PCI_SYS_COUNTER_OVERFLOW;
757 count = ((count/100)*USECS_PER_JIFFY) / (TICK_TIMER_LIMIT/100);
758 return count;
759}
760
761static void pci_do_gettimeofday(struct timeval *tv)
762{
763 unsigned long flags;
764 unsigned long seq;
765 unsigned long usec, sec;
766 unsigned long max_ntp_tick = tick_usec - tickadj;
767
768 do {
769 seq = read_seqbegin_irqsave(&xtime_lock, flags);
770 usec = do_gettimeoffset();
771
772 /*
773 * If time_adjust is negative then NTP is slowing the clock
774 * so make sure not to go into next possible interval.
775 * Better to lose some accuracy than have time go backwards..
776 */
777 if (unlikely(time_adjust < 0))
778 usec = min(usec, max_ntp_tick);
779
780 sec = xtime.tv_sec;
781 usec += (xtime.tv_nsec / 1000);
782 } while (read_seqretry_irqrestore(&xtime_lock, seq, flags));
783
784 while (usec >= 1000000) {
785 usec -= 1000000;
786 sec++;
787 }
788
789 tv->tv_sec = sec;
790 tv->tv_usec = usec;
791}
792
793static int pci_do_settimeofday(struct timespec *tv)
794{
795 if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC)
796 return -EINVAL;
797
798 /*
799 * This is revolting. We need to set "xtime" correctly. However, the
800 * value in this location is the value at the most recent update of
801 * wall time. Discover what correction gettimeofday() would have
802 * made, and then undo it!
803 */
804 tv->tv_nsec -= 1000 * do_gettimeoffset();
805 while (tv->tv_nsec < 0) {
806 tv->tv_nsec += NSEC_PER_SEC;
807 tv->tv_sec--;
808 }
809
810 wall_to_monotonic.tv_sec += xtime.tv_sec - tv->tv_sec;
811 wall_to_monotonic.tv_nsec += xtime.tv_nsec - tv->tv_nsec;
812
813 if (wall_to_monotonic.tv_nsec > NSEC_PER_SEC) {
814 wall_to_monotonic.tv_nsec -= NSEC_PER_SEC;
815 wall_to_monotonic.tv_sec++;
816 }
817 if (wall_to_monotonic.tv_nsec < 0) {
818 wall_to_monotonic.tv_nsec += NSEC_PER_SEC;
819 wall_to_monotonic.tv_sec--;
820 }
821
822 xtime.tv_sec = tv->tv_sec;
823 xtime.tv_nsec = tv->tv_nsec;
824 ntp_clear();
825 return 0;
826}
827 756
828#if 0 757#if 0
829static void watchdog_reset() { 758static void watchdog_reset() {
diff --git a/arch/sparc/kernel/perf_event.c b/arch/sparc/kernel/perf_event.c
index fa5936e1c3b9..e856456ec02f 100644
--- a/arch/sparc/kernel/perf_event.c
+++ b/arch/sparc/kernel/perf_event.c
@@ -1,6 +1,6 @@
1/* Performance event support for sparc64. 1/* Performance event support for sparc64.
2 * 2 *
3 * Copyright (C) 2009 David S. Miller <davem@davemloft.net> 3 * Copyright (C) 2009, 2010 David S. Miller <davem@davemloft.net>
4 * 4 *
5 * This code is based almost entirely upon the x86 perf event 5 * This code is based almost entirely upon the x86 perf event
6 * code, which is: 6 * code, which is:
@@ -18,11 +18,15 @@
18#include <linux/kdebug.h> 18#include <linux/kdebug.h>
19#include <linux/mutex.h> 19#include <linux/mutex.h>
20 20
21#include <asm/stacktrace.h>
21#include <asm/cpudata.h> 22#include <asm/cpudata.h>
23#include <asm/uaccess.h>
22#include <asm/atomic.h> 24#include <asm/atomic.h>
23#include <asm/nmi.h> 25#include <asm/nmi.h>
24#include <asm/pcr.h> 26#include <asm/pcr.h>
25 27
28#include "kstack.h"
29
26/* Sparc64 chips have two performance counters, 32-bits each, with 30/* Sparc64 chips have two performance counters, 32-bits each, with
27 * overflow interrupts generated on transition from 0xffffffff to 0. 31 * overflow interrupts generated on transition from 0xffffffff to 0.
28 * The counters are accessed in one go using a 64-bit register. 32 * The counters are accessed in one go using a 64-bit register.
@@ -51,16 +55,49 @@
51 55
52#define PIC_UPPER_INDEX 0 56#define PIC_UPPER_INDEX 0
53#define PIC_LOWER_INDEX 1 57#define PIC_LOWER_INDEX 1
58#define PIC_NO_INDEX -1
54 59
55struct cpu_hw_events { 60struct cpu_hw_events {
56 struct perf_event *events[MAX_HWEVENTS]; 61 /* Number of events currently scheduled onto this cpu.
57 unsigned long used_mask[BITS_TO_LONGS(MAX_HWEVENTS)]; 62 * This tells how many entries in the arrays below
58 unsigned long active_mask[BITS_TO_LONGS(MAX_HWEVENTS)]; 63 * are valid.
64 */
65 int n_events;
66
67 /* Number of new events added since the last hw_perf_disable().
68 * This works because the perf event layer always adds new
69 * events inside of a perf_{disable,enable}() sequence.
70 */
71 int n_added;
72
73 /* Array of events current scheduled on this cpu. */
74 struct perf_event *event[MAX_HWEVENTS];
75
76 /* Array of encoded longs, specifying the %pcr register
77 * encoding and the mask of PIC counters this even can
78 * be scheduled on. See perf_event_encode() et al.
79 */
80 unsigned long events[MAX_HWEVENTS];
81
82 /* The current counter index assigned to an event. When the
83 * event hasn't been programmed into the cpu yet, this will
84 * hold PIC_NO_INDEX. The event->hw.idx value tells us where
85 * we ought to schedule the event.
86 */
87 int current_idx[MAX_HWEVENTS];
88
89 /* Software copy of %pcr register on this cpu. */
59 u64 pcr; 90 u64 pcr;
91
92 /* Enabled/disable state. */
60 int enabled; 93 int enabled;
61}; 94};
62DEFINE_PER_CPU(struct cpu_hw_events, cpu_hw_events) = { .enabled = 1, }; 95DEFINE_PER_CPU(struct cpu_hw_events, cpu_hw_events) = { .enabled = 1, };
63 96
97/* An event map describes the characteristics of a performance
98 * counter event. In particular it gives the encoding as well as
99 * a mask telling which counters the event can be measured on.
100 */
64struct perf_event_map { 101struct perf_event_map {
65 u16 encoding; 102 u16 encoding;
66 u8 pic_mask; 103 u8 pic_mask;
@@ -69,15 +106,20 @@ struct perf_event_map {
69#define PIC_LOWER 0x02 106#define PIC_LOWER 0x02
70}; 107};
71 108
109/* Encode a perf_event_map entry into a long. */
72static unsigned long perf_event_encode(const struct perf_event_map *pmap) 110static unsigned long perf_event_encode(const struct perf_event_map *pmap)
73{ 111{
74 return ((unsigned long) pmap->encoding << 16) | pmap->pic_mask; 112 return ((unsigned long) pmap->encoding << 16) | pmap->pic_mask;
75} 113}
76 114
77static void perf_event_decode(unsigned long val, u16 *enc, u8 *msk) 115static u8 perf_event_get_msk(unsigned long val)
78{ 116{
79 *msk = val & 0xff; 117 return val & 0xff;
80 *enc = val >> 16; 118}
119
120static u64 perf_event_get_enc(unsigned long val)
121{
122 return val >> 16;
81} 123}
82 124
83#define C(x) PERF_COUNT_HW_CACHE_##x 125#define C(x) PERF_COUNT_HW_CACHE_##x
@@ -491,53 +533,6 @@ static inline void sparc_pmu_disable_event(struct cpu_hw_events *cpuc, struct hw
491 pcr_ops->write(cpuc->pcr); 533 pcr_ops->write(cpuc->pcr);
492} 534}
493 535
494void hw_perf_enable(void)
495{
496 struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
497 u64 val;
498 int i;
499
500 if (cpuc->enabled)
501 return;
502
503 cpuc->enabled = 1;
504 barrier();
505
506 val = cpuc->pcr;
507
508 for (i = 0; i < MAX_HWEVENTS; i++) {
509 struct perf_event *cp = cpuc->events[i];
510 struct hw_perf_event *hwc;
511
512 if (!cp)
513 continue;
514 hwc = &cp->hw;
515 val |= hwc->config_base;
516 }
517
518 cpuc->pcr = val;
519
520 pcr_ops->write(cpuc->pcr);
521}
522
523void hw_perf_disable(void)
524{
525 struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
526 u64 val;
527
528 if (!cpuc->enabled)
529 return;
530
531 cpuc->enabled = 0;
532
533 val = cpuc->pcr;
534 val &= ~(PCR_UTRACE | PCR_STRACE |
535 sparc_pmu->hv_bit | sparc_pmu->irq_bit);
536 cpuc->pcr = val;
537
538 pcr_ops->write(cpuc->pcr);
539}
540
541static u32 read_pmc(int idx) 536static u32 read_pmc(int idx)
542{ 537{
543 u64 val; 538 u64 val;
@@ -566,6 +561,30 @@ static void write_pmc(int idx, u64 val)
566 write_pic(pic); 561 write_pic(pic);
567} 562}
568 563
564static u64 sparc_perf_event_update(struct perf_event *event,
565 struct hw_perf_event *hwc, int idx)
566{
567 int shift = 64 - 32;
568 u64 prev_raw_count, new_raw_count;
569 s64 delta;
570
571again:
572 prev_raw_count = atomic64_read(&hwc->prev_count);
573 new_raw_count = read_pmc(idx);
574
575 if (atomic64_cmpxchg(&hwc->prev_count, prev_raw_count,
576 new_raw_count) != prev_raw_count)
577 goto again;
578
579 delta = (new_raw_count << shift) - (prev_raw_count << shift);
580 delta >>= shift;
581
582 atomic64_add(delta, &event->count);
583 atomic64_sub(delta, &hwc->period_left);
584
585 return new_raw_count;
586}
587
569static int sparc_perf_event_set_period(struct perf_event *event, 588static int sparc_perf_event_set_period(struct perf_event *event,
570 struct hw_perf_event *hwc, int idx) 589 struct hw_perf_event *hwc, int idx)
571{ 590{
@@ -598,81 +617,166 @@ static int sparc_perf_event_set_period(struct perf_event *event,
598 return ret; 617 return ret;
599} 618}
600 619
601static int sparc_pmu_enable(struct perf_event *event) 620/* If performance event entries have been added, move existing
621 * events around (if necessary) and then assign new entries to
622 * counters.
623 */
624static u64 maybe_change_configuration(struct cpu_hw_events *cpuc, u64 pcr)
602{ 625{
603 struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); 626 int i;
604 struct hw_perf_event *hwc = &event->hw;
605 int idx = hwc->idx;
606 627
607 if (test_and_set_bit(idx, cpuc->used_mask)) 628 if (!cpuc->n_added)
608 return -EAGAIN; 629 goto out;
609 630
610 sparc_pmu_disable_event(cpuc, hwc, idx); 631 /* Read in the counters which are moving. */
632 for (i = 0; i < cpuc->n_events; i++) {
633 struct perf_event *cp = cpuc->event[i];
611 634
612 cpuc->events[idx] = event; 635 if (cpuc->current_idx[i] != PIC_NO_INDEX &&
613 set_bit(idx, cpuc->active_mask); 636 cpuc->current_idx[i] != cp->hw.idx) {
637 sparc_perf_event_update(cp, &cp->hw,
638 cpuc->current_idx[i]);
639 cpuc->current_idx[i] = PIC_NO_INDEX;
640 }
641 }
614 642
615 sparc_perf_event_set_period(event, hwc, idx); 643 /* Assign to counters all unassigned events. */
616 sparc_pmu_enable_event(cpuc, hwc, idx); 644 for (i = 0; i < cpuc->n_events; i++) {
617 perf_event_update_userpage(event); 645 struct perf_event *cp = cpuc->event[i];
618 return 0; 646 struct hw_perf_event *hwc = &cp->hw;
647 int idx = hwc->idx;
648 u64 enc;
649
650 if (cpuc->current_idx[i] != PIC_NO_INDEX)
651 continue;
652
653 sparc_perf_event_set_period(cp, hwc, idx);
654 cpuc->current_idx[i] = idx;
655
656 enc = perf_event_get_enc(cpuc->events[i]);
657 pcr |= event_encoding(enc, idx);
658 }
659out:
660 return pcr;
619} 661}
620 662
621static u64 sparc_perf_event_update(struct perf_event *event, 663void hw_perf_enable(void)
622 struct hw_perf_event *hwc, int idx)
623{ 664{
624 int shift = 64 - 32; 665 struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
625 u64 prev_raw_count, new_raw_count; 666 u64 pcr;
626 s64 delta;
627 667
628again: 668 if (cpuc->enabled)
629 prev_raw_count = atomic64_read(&hwc->prev_count); 669 return;
630 new_raw_count = read_pmc(idx);
631 670
632 if (atomic64_cmpxchg(&hwc->prev_count, prev_raw_count, 671 cpuc->enabled = 1;
633 new_raw_count) != prev_raw_count) 672 barrier();
634 goto again;
635 673
636 delta = (new_raw_count << shift) - (prev_raw_count << shift); 674 pcr = cpuc->pcr;
637 delta >>= shift; 675 if (!cpuc->n_events) {
676 pcr = 0;
677 } else {
678 pcr = maybe_change_configuration(cpuc, pcr);
638 679
639 atomic64_add(delta, &event->count); 680 /* We require that all of the events have the same
640 atomic64_sub(delta, &hwc->period_left); 681 * configuration, so just fetch the settings from the
682 * first entry.
683 */
684 cpuc->pcr = pcr | cpuc->event[0]->hw.config_base;
685 }
641 686
642 return new_raw_count; 687 pcr_ops->write(cpuc->pcr);
688}
689
690void hw_perf_disable(void)
691{
692 struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
693 u64 val;
694
695 if (!cpuc->enabled)
696 return;
697
698 cpuc->enabled = 0;
699 cpuc->n_added = 0;
700
701 val = cpuc->pcr;
702 val &= ~(PCR_UTRACE | PCR_STRACE |
703 sparc_pmu->hv_bit | sparc_pmu->irq_bit);
704 cpuc->pcr = val;
705
706 pcr_ops->write(cpuc->pcr);
643} 707}
644 708
645static void sparc_pmu_disable(struct perf_event *event) 709static void sparc_pmu_disable(struct perf_event *event)
646{ 710{
647 struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); 711 struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
648 struct hw_perf_event *hwc = &event->hw; 712 struct hw_perf_event *hwc = &event->hw;
649 int idx = hwc->idx; 713 unsigned long flags;
714 int i;
650 715
651 clear_bit(idx, cpuc->active_mask); 716 local_irq_save(flags);
652 sparc_pmu_disable_event(cpuc, hwc, idx); 717 perf_disable();
718
719 for (i = 0; i < cpuc->n_events; i++) {
720 if (event == cpuc->event[i]) {
721 int idx = cpuc->current_idx[i];
722
723 /* Shift remaining entries down into
724 * the existing slot.
725 */
726 while (++i < cpuc->n_events) {
727 cpuc->event[i - 1] = cpuc->event[i];
728 cpuc->events[i - 1] = cpuc->events[i];
729 cpuc->current_idx[i - 1] =
730 cpuc->current_idx[i];
731 }
732
733 /* Absorb the final count and turn off the
734 * event.
735 */
736 sparc_pmu_disable_event(cpuc, hwc, idx);
737 barrier();
738 sparc_perf_event_update(event, hwc, idx);
653 739
654 barrier(); 740 perf_event_update_userpage(event);
655 741
656 sparc_perf_event_update(event, hwc, idx); 742 cpuc->n_events--;
657 cpuc->events[idx] = NULL; 743 break;
658 clear_bit(idx, cpuc->used_mask); 744 }
745 }
659 746
660 perf_event_update_userpage(event); 747 perf_enable();
748 local_irq_restore(flags);
749}
750
751static int active_event_index(struct cpu_hw_events *cpuc,
752 struct perf_event *event)
753{
754 int i;
755
756 for (i = 0; i < cpuc->n_events; i++) {
757 if (cpuc->event[i] == event)
758 break;
759 }
760 BUG_ON(i == cpuc->n_events);
761 return cpuc->current_idx[i];
661} 762}
662 763
663static void sparc_pmu_read(struct perf_event *event) 764static void sparc_pmu_read(struct perf_event *event)
664{ 765{
766 struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
767 int idx = active_event_index(cpuc, event);
665 struct hw_perf_event *hwc = &event->hw; 768 struct hw_perf_event *hwc = &event->hw;
666 769
667 sparc_perf_event_update(event, hwc, hwc->idx); 770 sparc_perf_event_update(event, hwc, idx);
668} 771}
669 772
670static void sparc_pmu_unthrottle(struct perf_event *event) 773static void sparc_pmu_unthrottle(struct perf_event *event)
671{ 774{
672 struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); 775 struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
776 int idx = active_event_index(cpuc, event);
673 struct hw_perf_event *hwc = &event->hw; 777 struct hw_perf_event *hwc = &event->hw;
674 778
675 sparc_pmu_enable_event(cpuc, hwc, hwc->idx); 779 sparc_pmu_enable_event(cpuc, hwc, idx);
676} 780}
677 781
678static atomic_t active_events = ATOMIC_INIT(0); 782static atomic_t active_events = ATOMIC_INIT(0);
@@ -750,43 +854,75 @@ static void hw_perf_event_destroy(struct perf_event *event)
750/* Make sure all events can be scheduled into the hardware at 854/* Make sure all events can be scheduled into the hardware at
751 * the same time. This is simplified by the fact that we only 855 * the same time. This is simplified by the fact that we only
752 * need to support 2 simultaneous HW events. 856 * need to support 2 simultaneous HW events.
857 *
858 * As a side effect, the evts[]->hw.idx values will be assigned
859 * on success. These are pending indexes. When the events are
860 * actually programmed into the chip, these values will propagate
861 * to the per-cpu cpuc->current_idx[] slots, see the code in
862 * maybe_change_configuration() for details.
753 */ 863 */
754static int sparc_check_constraints(unsigned long *events, int n_ev) 864static int sparc_check_constraints(struct perf_event **evts,
865 unsigned long *events, int n_ev)
755{ 866{
756 if (n_ev <= perf_max_events) { 867 u8 msk0 = 0, msk1 = 0;
757 u8 msk1, msk2; 868 int idx0 = 0;
758 u16 dummy; 869
759 870 /* This case is possible when we are invoked from
760 if (n_ev == 1) 871 * hw_perf_group_sched_in().
761 return 0; 872 */
762 BUG_ON(n_ev != 2); 873 if (!n_ev)
763 perf_event_decode(events[0], &dummy, &msk1); 874 return 0;
764 perf_event_decode(events[1], &dummy, &msk2); 875
765 876 if (n_ev > perf_max_events)
766 /* If both events can go on any counter, OK. */ 877 return -1;
767 if (msk1 == (PIC_UPPER | PIC_LOWER) && 878
768 msk2 == (PIC_UPPER | PIC_LOWER)) 879 msk0 = perf_event_get_msk(events[0]);
769 return 0; 880 if (n_ev == 1) {
770 881 if (msk0 & PIC_LOWER)
771 /* If one event is limited to a specific counter, 882 idx0 = 1;
772 * and the other can go on both, OK. 883 goto success;
773 */ 884 }
774 if ((msk1 == PIC_UPPER || msk1 == PIC_LOWER) && 885 BUG_ON(n_ev != 2);
775 msk2 == (PIC_UPPER | PIC_LOWER)) 886 msk1 = perf_event_get_msk(events[1]);
776 return 0; 887
777 if ((msk2 == PIC_UPPER || msk2 == PIC_LOWER) && 888 /* If both events can go on any counter, OK. */
778 msk1 == (PIC_UPPER | PIC_LOWER)) 889 if (msk0 == (PIC_UPPER | PIC_LOWER) &&
779 return 0; 890 msk1 == (PIC_UPPER | PIC_LOWER))
780 891 goto success;
781 /* If the events are fixed to different counters, OK. */ 892
782 if ((msk1 == PIC_UPPER && msk2 == PIC_LOWER) || 893 /* If one event is limited to a specific counter,
783 (msk1 == PIC_LOWER && msk2 == PIC_UPPER)) 894 * and the other can go on both, OK.
784 return 0; 895 */
785 896 if ((msk0 == PIC_UPPER || msk0 == PIC_LOWER) &&
786 /* Otherwise, there is a conflict. */ 897 msk1 == (PIC_UPPER | PIC_LOWER)) {
898 if (msk0 & PIC_LOWER)
899 idx0 = 1;
900 goto success;
787 } 901 }
788 902
903 if ((msk1 == PIC_UPPER || msk1 == PIC_LOWER) &&
904 msk0 == (PIC_UPPER | PIC_LOWER)) {
905 if (msk1 & PIC_UPPER)
906 idx0 = 1;
907 goto success;
908 }
909
910 /* If the events are fixed to different counters, OK. */
911 if ((msk0 == PIC_UPPER && msk1 == PIC_LOWER) ||
912 (msk0 == PIC_LOWER && msk1 == PIC_UPPER)) {
913 if (msk0 & PIC_LOWER)
914 idx0 = 1;
915 goto success;
916 }
917
918 /* Otherwise, there is a conflict. */
789 return -1; 919 return -1;
920
921success:
922 evts[0]->hw.idx = idx0;
923 if (n_ev == 2)
924 evts[1]->hw.idx = idx0 ^ 1;
925 return 0;
790} 926}
791 927
792static int check_excludes(struct perf_event **evts, int n_prev, int n_new) 928static int check_excludes(struct perf_event **evts, int n_prev, int n_new)
@@ -818,7 +954,8 @@ static int check_excludes(struct perf_event **evts, int n_prev, int n_new)
818} 954}
819 955
820static int collect_events(struct perf_event *group, int max_count, 956static int collect_events(struct perf_event *group, int max_count,
821 struct perf_event *evts[], unsigned long *events) 957 struct perf_event *evts[], unsigned long *events,
958 int *current_idx)
822{ 959{
823 struct perf_event *event; 960 struct perf_event *event;
824 int n = 0; 961 int n = 0;
@@ -827,7 +964,8 @@ static int collect_events(struct perf_event *group, int max_count,
827 if (n >= max_count) 964 if (n >= max_count)
828 return -1; 965 return -1;
829 evts[n] = group; 966 evts[n] = group;
830 events[n++] = group->hw.event_base; 967 events[n] = group->hw.event_base;
968 current_idx[n++] = PIC_NO_INDEX;
831 } 969 }
832 list_for_each_entry(event, &group->sibling_list, group_entry) { 970 list_for_each_entry(event, &group->sibling_list, group_entry) {
833 if (!is_software_event(event) && 971 if (!is_software_event(event) &&
@@ -835,20 +973,100 @@ static int collect_events(struct perf_event *group, int max_count,
835 if (n >= max_count) 973 if (n >= max_count)
836 return -1; 974 return -1;
837 evts[n] = event; 975 evts[n] = event;
838 events[n++] = event->hw.event_base; 976 events[n] = event->hw.event_base;
977 current_idx[n++] = PIC_NO_INDEX;
839 } 978 }
840 } 979 }
841 return n; 980 return n;
842} 981}
843 982
983static void event_sched_in(struct perf_event *event, int cpu)
984{
985 event->state = PERF_EVENT_STATE_ACTIVE;
986 event->oncpu = cpu;
987 event->tstamp_running += event->ctx->time - event->tstamp_stopped;
988 if (is_software_event(event))
989 event->pmu->enable(event);
990}
991
992int hw_perf_group_sched_in(struct perf_event *group_leader,
993 struct perf_cpu_context *cpuctx,
994 struct perf_event_context *ctx, int cpu)
995{
996 struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
997 struct perf_event *sub;
998 int n0, n;
999
1000 if (!sparc_pmu)
1001 return 0;
1002
1003 n0 = cpuc->n_events;
1004 n = collect_events(group_leader, perf_max_events - n0,
1005 &cpuc->event[n0], &cpuc->events[n0],
1006 &cpuc->current_idx[n0]);
1007 if (n < 0)
1008 return -EAGAIN;
1009 if (check_excludes(cpuc->event, n0, n))
1010 return -EINVAL;
1011 if (sparc_check_constraints(cpuc->event, cpuc->events, n + n0))
1012 return -EAGAIN;
1013 cpuc->n_events = n0 + n;
1014 cpuc->n_added += n;
1015
1016 cpuctx->active_oncpu += n;
1017 n = 1;
1018 event_sched_in(group_leader, cpu);
1019 list_for_each_entry(sub, &group_leader->sibling_list, group_entry) {
1020 if (sub->state != PERF_EVENT_STATE_OFF) {
1021 event_sched_in(sub, cpu);
1022 n++;
1023 }
1024 }
1025 ctx->nr_active += n;
1026
1027 return 1;
1028}
1029
1030static int sparc_pmu_enable(struct perf_event *event)
1031{
1032 struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
1033 int n0, ret = -EAGAIN;
1034 unsigned long flags;
1035
1036 local_irq_save(flags);
1037 perf_disable();
1038
1039 n0 = cpuc->n_events;
1040 if (n0 >= perf_max_events)
1041 goto out;
1042
1043 cpuc->event[n0] = event;
1044 cpuc->events[n0] = event->hw.event_base;
1045 cpuc->current_idx[n0] = PIC_NO_INDEX;
1046
1047 if (check_excludes(cpuc->event, n0, 1))
1048 goto out;
1049 if (sparc_check_constraints(cpuc->event, cpuc->events, n0 + 1))
1050 goto out;
1051
1052 cpuc->n_events++;
1053 cpuc->n_added++;
1054
1055 ret = 0;
1056out:
1057 perf_enable();
1058 local_irq_restore(flags);
1059 return ret;
1060}
1061
844static int __hw_perf_event_init(struct perf_event *event) 1062static int __hw_perf_event_init(struct perf_event *event)
845{ 1063{
846 struct perf_event_attr *attr = &event->attr; 1064 struct perf_event_attr *attr = &event->attr;
847 struct perf_event *evts[MAX_HWEVENTS]; 1065 struct perf_event *evts[MAX_HWEVENTS];
848 struct hw_perf_event *hwc = &event->hw; 1066 struct hw_perf_event *hwc = &event->hw;
849 unsigned long events[MAX_HWEVENTS]; 1067 unsigned long events[MAX_HWEVENTS];
1068 int current_idx_dmy[MAX_HWEVENTS];
850 const struct perf_event_map *pmap; 1069 const struct perf_event_map *pmap;
851 u64 enc;
852 int n; 1070 int n;
853 1071
854 if (atomic_read(&nmi_active) < 0) 1072 if (atomic_read(&nmi_active) < 0)
@@ -865,10 +1083,7 @@ static int __hw_perf_event_init(struct perf_event *event)
865 } else 1083 } else
866 return -EOPNOTSUPP; 1084 return -EOPNOTSUPP;
867 1085
868 /* We save the enable bits in the config_base. So to 1086 /* We save the enable bits in the config_base. */
869 * turn off sampling just write 'config', and to enable
870 * things write 'config | config_base'.
871 */
872 hwc->config_base = sparc_pmu->irq_bit; 1087 hwc->config_base = sparc_pmu->irq_bit;
873 if (!attr->exclude_user) 1088 if (!attr->exclude_user)
874 hwc->config_base |= PCR_UTRACE; 1089 hwc->config_base |= PCR_UTRACE;
@@ -879,13 +1094,11 @@ static int __hw_perf_event_init(struct perf_event *event)
879 1094
880 hwc->event_base = perf_event_encode(pmap); 1095 hwc->event_base = perf_event_encode(pmap);
881 1096
882 enc = pmap->encoding;
883
884 n = 0; 1097 n = 0;
885 if (event->group_leader != event) { 1098 if (event->group_leader != event) {
886 n = collect_events(event->group_leader, 1099 n = collect_events(event->group_leader,
887 perf_max_events - 1, 1100 perf_max_events - 1,
888 evts, events); 1101 evts, events, current_idx_dmy);
889 if (n < 0) 1102 if (n < 0)
890 return -EINVAL; 1103 return -EINVAL;
891 } 1104 }
@@ -895,9 +1108,11 @@ static int __hw_perf_event_init(struct perf_event *event)
895 if (check_excludes(evts, n, 1)) 1108 if (check_excludes(evts, n, 1))
896 return -EINVAL; 1109 return -EINVAL;
897 1110
898 if (sparc_check_constraints(events, n + 1)) 1111 if (sparc_check_constraints(evts, events, n + 1))
899 return -EINVAL; 1112 return -EINVAL;
900 1113
1114 hwc->idx = PIC_NO_INDEX;
1115
901 /* Try to do all error checking before this point, as unwinding 1116 /* Try to do all error checking before this point, as unwinding
902 * state after grabbing the PMC is difficult. 1117 * state after grabbing the PMC is difficult.
903 */ 1118 */
@@ -910,15 +1125,6 @@ static int __hw_perf_event_init(struct perf_event *event)
910 atomic64_set(&hwc->period_left, hwc->sample_period); 1125 atomic64_set(&hwc->period_left, hwc->sample_period);
911 } 1126 }
912 1127
913 if (pmap->pic_mask & PIC_UPPER) {
914 hwc->idx = PIC_UPPER_INDEX;
915 enc <<= sparc_pmu->upper_shift;
916 } else {
917 hwc->idx = PIC_LOWER_INDEX;
918 enc <<= sparc_pmu->lower_shift;
919 }
920
921 hwc->config |= enc;
922 return 0; 1128 return 0;
923} 1129}
924 1130
@@ -968,7 +1174,7 @@ static int __kprobes perf_event_nmi_handler(struct notifier_block *self,
968 struct perf_sample_data data; 1174 struct perf_sample_data data;
969 struct cpu_hw_events *cpuc; 1175 struct cpu_hw_events *cpuc;
970 struct pt_regs *regs; 1176 struct pt_regs *regs;
971 int idx; 1177 int i;
972 1178
973 if (!atomic_read(&active_events)) 1179 if (!atomic_read(&active_events))
974 return NOTIFY_DONE; 1180 return NOTIFY_DONE;
@@ -986,13 +1192,23 @@ static int __kprobes perf_event_nmi_handler(struct notifier_block *self,
986 data.addr = 0; 1192 data.addr = 0;
987 1193
988 cpuc = &__get_cpu_var(cpu_hw_events); 1194 cpuc = &__get_cpu_var(cpu_hw_events);
989 for (idx = 0; idx < MAX_HWEVENTS; idx++) { 1195
990 struct perf_event *event = cpuc->events[idx]; 1196 /* If the PMU has the TOE IRQ enable bits, we need to do a
1197 * dummy write to the %pcr to clear the overflow bits and thus
1198 * the interrupt.
1199 *
1200 * Do this before we peek at the counters to determine
1201 * overflow so we don't lose any events.
1202 */
1203 if (sparc_pmu->irq_bit)
1204 pcr_ops->write(cpuc->pcr);
1205
1206 for (i = 0; i < cpuc->n_events; i++) {
1207 struct perf_event *event = cpuc->event[i];
1208 int idx = cpuc->current_idx[i];
991 struct hw_perf_event *hwc; 1209 struct hw_perf_event *hwc;
992 u64 val; 1210 u64 val;
993 1211
994 if (!test_bit(idx, cpuc->active_mask))
995 continue;
996 hwc = &event->hw; 1212 hwc = &event->hw;
997 val = sparc_perf_event_update(event, hwc, idx); 1213 val = sparc_perf_event_update(event, hwc, idx);
998 if (val & (1ULL << 31)) 1214 if (val & (1ULL << 31))
@@ -1044,10 +1260,122 @@ void __init init_hw_perf_events(void)
1044 1260
1045 pr_cont("Supported PMU type is '%s'\n", sparc_pmu_type); 1261 pr_cont("Supported PMU type is '%s'\n", sparc_pmu_type);
1046 1262
1047 /* All sparc64 PMUs currently have 2 events. But this simple 1263 /* All sparc64 PMUs currently have 2 events. */
1048 * driver only supports one active event at a time. 1264 perf_max_events = 2;
1049 */
1050 perf_max_events = 1;
1051 1265
1052 register_die_notifier(&perf_event_nmi_notifier); 1266 register_die_notifier(&perf_event_nmi_notifier);
1053} 1267}
1268
1269static inline void callchain_store(struct perf_callchain_entry *entry, u64 ip)
1270{
1271 if (entry->nr < PERF_MAX_STACK_DEPTH)
1272 entry->ip[entry->nr++] = ip;
1273}
1274
1275static void perf_callchain_kernel(struct pt_regs *regs,
1276 struct perf_callchain_entry *entry)
1277{
1278 unsigned long ksp, fp;
1279
1280 callchain_store(entry, PERF_CONTEXT_KERNEL);
1281 callchain_store(entry, regs->tpc);
1282
1283 ksp = regs->u_regs[UREG_I6];
1284 fp = ksp + STACK_BIAS;
1285 do {
1286 struct sparc_stackf *sf;
1287 struct pt_regs *regs;
1288 unsigned long pc;
1289
1290 if (!kstack_valid(current_thread_info(), fp))
1291 break;
1292
1293 sf = (struct sparc_stackf *) fp;
1294 regs = (struct pt_regs *) (sf + 1);
1295
1296 if (kstack_is_trap_frame(current_thread_info(), regs)) {
1297 if (user_mode(regs))
1298 break;
1299 pc = regs->tpc;
1300 fp = regs->u_regs[UREG_I6] + STACK_BIAS;
1301 } else {
1302 pc = sf->callers_pc;
1303 fp = (unsigned long)sf->fp + STACK_BIAS;
1304 }
1305 callchain_store(entry, pc);
1306 } while (entry->nr < PERF_MAX_STACK_DEPTH);
1307}
1308
1309static void perf_callchain_user_64(struct pt_regs *regs,
1310 struct perf_callchain_entry *entry)
1311{
1312 unsigned long ufp;
1313
1314 callchain_store(entry, PERF_CONTEXT_USER);
1315 callchain_store(entry, regs->tpc);
1316
1317 ufp = regs->u_regs[UREG_I6] + STACK_BIAS;
1318 do {
1319 struct sparc_stackf *usf, sf;
1320 unsigned long pc;
1321
1322 usf = (struct sparc_stackf *) ufp;
1323 if (__copy_from_user_inatomic(&sf, usf, sizeof(sf)))
1324 break;
1325
1326 pc = sf.callers_pc;
1327 ufp = (unsigned long)sf.fp + STACK_BIAS;
1328 callchain_store(entry, pc);
1329 } while (entry->nr < PERF_MAX_STACK_DEPTH);
1330}
1331
1332static void perf_callchain_user_32(struct pt_regs *regs,
1333 struct perf_callchain_entry *entry)
1334{
1335 unsigned long ufp;
1336
1337 callchain_store(entry, PERF_CONTEXT_USER);
1338 callchain_store(entry, regs->tpc);
1339
1340 ufp = regs->u_regs[UREG_I6];
1341 do {
1342 struct sparc_stackf32 *usf, sf;
1343 unsigned long pc;
1344
1345 usf = (struct sparc_stackf32 *) ufp;
1346 if (__copy_from_user_inatomic(&sf, usf, sizeof(sf)))
1347 break;
1348
1349 pc = sf.callers_pc;
1350 ufp = (unsigned long)sf.fp;
1351 callchain_store(entry, pc);
1352 } while (entry->nr < PERF_MAX_STACK_DEPTH);
1353}
1354
1355/* Like powerpc we can't get PMU interrupts within the PMU handler,
1356 * so no need for seperate NMI and IRQ chains as on x86.
1357 */
1358static DEFINE_PER_CPU(struct perf_callchain_entry, callchain);
1359
1360struct perf_callchain_entry *perf_callchain(struct pt_regs *regs)
1361{
1362 struct perf_callchain_entry *entry = &__get_cpu_var(callchain);
1363
1364 entry->nr = 0;
1365 if (!user_mode(regs)) {
1366 stack_trace_flush();
1367 perf_callchain_kernel(regs, entry);
1368 if (current->mm)
1369 regs = task_pt_regs(current);
1370 else
1371 regs = NULL;
1372 }
1373 if (regs) {
1374 flushw_user();
1375 if (test_thread_flag(TIF_32BIT))
1376 perf_callchain_user_32(regs, entry);
1377 else
1378 perf_callchain_user_64(regs, entry);
1379 }
1380 return entry;
1381}
diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c
index 2830b415e214..c49865b30719 100644
--- a/arch/sparc/kernel/process_32.c
+++ b/arch/sparc/kernel/process_32.c
@@ -526,7 +526,7 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
526 * Set some valid stack frames to give to the child. 526 * Set some valid stack frames to give to the child.
527 */ 527 */
528 childstack = (struct sparc_stackf __user *) 528 childstack = (struct sparc_stackf __user *)
529 (sp & ~0x7UL); 529 (sp & ~0xfUL);
530 parentstack = (struct sparc_stackf __user *) 530 parentstack = (struct sparc_stackf __user *)
531 regs->u_regs[UREG_FP]; 531 regs->u_regs[UREG_FP];
532 532
diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c
index 18d67854a1b8..cb70476bd8f5 100644
--- a/arch/sparc/kernel/process_64.c
+++ b/arch/sparc/kernel/process_64.c
@@ -365,14 +365,6 @@ void flush_thread(void)
365 struct thread_info *t = current_thread_info(); 365 struct thread_info *t = current_thread_info();
366 struct mm_struct *mm; 366 struct mm_struct *mm;
367 367
368 if (test_ti_thread_flag(t, TIF_ABI_PENDING)) {
369 clear_ti_thread_flag(t, TIF_ABI_PENDING);
370 if (test_ti_thread_flag(t, TIF_32BIT))
371 clear_ti_thread_flag(t, TIF_32BIT);
372 else
373 set_ti_thread_flag(t, TIF_32BIT);
374 }
375
376 mm = t->task->mm; 368 mm = t->task->mm;
377 if (mm) 369 if (mm)
378 tsb_context_switch(mm); 370 tsb_context_switch(mm);
@@ -406,11 +398,11 @@ static unsigned long clone_stackframe(unsigned long csp, unsigned long psp)
406 } else 398 } else
407 __get_user(fp, &(((struct reg_window32 __user *)psp)->ins[6])); 399 __get_user(fp, &(((struct reg_window32 __user *)psp)->ins[6]));
408 400
409 /* Now 8-byte align the stack as this is mandatory in the 401 /* Now align the stack as this is mandatory in the Sparc ABI
410 * Sparc ABI due to how register windows work. This hides 402 * due to how register windows work. This hides the
411 * the restriction from thread libraries etc. -DaveM 403 * restriction from thread libraries etc.
412 */ 404 */
413 csp &= ~7UL; 405 csp &= ~15UL;
414 406
415 distance = fp - psp; 407 distance = fp - psp;
416 rval = (csp - distance); 408 rval = (csp - distance);
diff --git a/arch/sparc/kernel/signal32.c b/arch/sparc/kernel/signal32.c
index ba5b09ad6666..ea22cd373c64 100644
--- a/arch/sparc/kernel/signal32.c
+++ b/arch/sparc/kernel/signal32.c
@@ -120,8 +120,8 @@ struct rt_signal_frame32 {
120}; 120};
121 121
122/* Align macros */ 122/* Align macros */
123#define SF_ALIGNEDSZ (((sizeof(struct signal_frame32) + 7) & (~7))) 123#define SF_ALIGNEDSZ (((sizeof(struct signal_frame32) + 15) & (~15)))
124#define RT_ALIGNEDSZ (((sizeof(struct rt_signal_frame32) + 7) & (~7))) 124#define RT_ALIGNEDSZ (((sizeof(struct rt_signal_frame32) + 15) & (~15)))
125 125
126int copy_siginfo_to_user32(compat_siginfo_t __user *to, siginfo_t *from) 126int copy_siginfo_to_user32(compat_siginfo_t __user *to, siginfo_t *from)
127{ 127{
@@ -420,15 +420,17 @@ static void __user *get_sigframe(struct sigaction *sa, struct pt_regs *regs, uns
420 sp = current->sas_ss_sp + current->sas_ss_size; 420 sp = current->sas_ss_sp + current->sas_ss_size;
421 } 421 }
422 422
423 sp -= framesize;
424
423 /* Always align the stack frame. This handles two cases. First, 425 /* Always align the stack frame. This handles two cases. First,
424 * sigaltstack need not be mindful of platform specific stack 426 * sigaltstack need not be mindful of platform specific stack
425 * alignment. Second, if we took this signal because the stack 427 * alignment. Second, if we took this signal because the stack
426 * is not aligned properly, we'd like to take the signal cleanly 428 * is not aligned properly, we'd like to take the signal cleanly
427 * and report that. 429 * and report that.
428 */ 430 */
429 sp &= ~7UL; 431 sp &= ~15UL;
430 432
431 return (void __user *)(sp - framesize); 433 return (void __user *) sp;
432} 434}
433 435
434static int save_fpu_state32(struct pt_regs *regs, __siginfo_fpu_t __user *fpu) 436static int save_fpu_state32(struct pt_regs *regs, __siginfo_fpu_t __user *fpu)
diff --git a/arch/sparc/kernel/signal_32.c b/arch/sparc/kernel/signal_32.c
index 7ce1a1005b1d..9882df92ba0a 100644
--- a/arch/sparc/kernel/signal_32.c
+++ b/arch/sparc/kernel/signal_32.c
@@ -267,15 +267,17 @@ static inline void __user *get_sigframe(struct sigaction *sa, struct pt_regs *re
267 sp = current->sas_ss_sp + current->sas_ss_size; 267 sp = current->sas_ss_sp + current->sas_ss_size;
268 } 268 }
269 269
270 sp -= framesize;
271
270 /* Always align the stack frame. This handles two cases. First, 272 /* Always align the stack frame. This handles two cases. First,
271 * sigaltstack need not be mindful of platform specific stack 273 * sigaltstack need not be mindful of platform specific stack
272 * alignment. Second, if we took this signal because the stack 274 * alignment. Second, if we took this signal because the stack
273 * is not aligned properly, we'd like to take the signal cleanly 275 * is not aligned properly, we'd like to take the signal cleanly
274 * and report that. 276 * and report that.
275 */ 277 */
276 sp &= ~7UL; 278 sp &= ~15UL;
277 279
278 return (void __user *)(sp - framesize); 280 return (void __user *) sp;
279} 281}
280 282
281static inline int 283static inline int
diff --git a/arch/sparc/kernel/signal_64.c b/arch/sparc/kernel/signal_64.c
index 647afbda7ae1..9fa48c30037e 100644
--- a/arch/sparc/kernel/signal_64.c
+++ b/arch/sparc/kernel/signal_64.c
@@ -353,7 +353,7 @@ segv:
353/* Checks if the fp is valid */ 353/* Checks if the fp is valid */
354static int invalid_frame_pointer(void __user *fp, int fplen) 354static int invalid_frame_pointer(void __user *fp, int fplen)
355{ 355{
356 if (((unsigned long) fp) & 7) 356 if (((unsigned long) fp) & 15)
357 return 1; 357 return 1;
358 return 0; 358 return 0;
359} 359}
@@ -396,15 +396,17 @@ static inline void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *
396 sp = current->sas_ss_sp + current->sas_ss_size; 396 sp = current->sas_ss_sp + current->sas_ss_size;
397 } 397 }
398 398
399 sp -= framesize;
400
399 /* Always align the stack frame. This handles two cases. First, 401 /* Always align the stack frame. This handles two cases. First,
400 * sigaltstack need not be mindful of platform specific stack 402 * sigaltstack need not be mindful of platform specific stack
401 * alignment. Second, if we took this signal because the stack 403 * alignment. Second, if we took this signal because the stack
402 * is not aligned properly, we'd like to take the signal cleanly 404 * is not aligned properly, we'd like to take the signal cleanly
403 * and report that. 405 * and report that.
404 */ 406 */
405 sp &= ~7UL; 407 sp &= ~15UL;
406 408
407 return (void __user *)(sp - framesize); 409 return (void __user *) sp;
408} 410}
409 411
410static inline void 412static inline void
diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c
index cfa0e19abe3b..d77f54316948 100644
--- a/arch/sparc/kernel/sys_sparc_64.c
+++ b/arch/sparc/kernel/sys_sparc_64.c
@@ -365,6 +365,7 @@ EXPORT_SYMBOL(get_fb_unmapped_area);
365void arch_pick_mmap_layout(struct mm_struct *mm) 365void arch_pick_mmap_layout(struct mm_struct *mm)
366{ 366{
367 unsigned long random_factor = 0UL; 367 unsigned long random_factor = 0UL;
368 unsigned long gap;
368 369
369 if (current->flags & PF_RANDOMIZE) { 370 if (current->flags & PF_RANDOMIZE) {
370 random_factor = get_random_int(); 371 random_factor = get_random_int();
@@ -379,9 +380,10 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
379 * Fall back to the standard layout if the personality 380 * Fall back to the standard layout if the personality
380 * bit is set, or if the expected stack growth is unlimited: 381 * bit is set, or if the expected stack growth is unlimited:
381 */ 382 */
383 gap = rlimit(RLIMIT_STACK);
382 if (!test_thread_flag(TIF_32BIT) || 384 if (!test_thread_flag(TIF_32BIT) ||
383 (current->personality & ADDR_COMPAT_LAYOUT) || 385 (current->personality & ADDR_COMPAT_LAYOUT) ||
384 current->signal->rlim[RLIMIT_STACK].rlim_cur == RLIM_INFINITY || 386 gap == RLIM_INFINITY ||
385 sysctl_legacy_va_layout) { 387 sysctl_legacy_va_layout) {
386 mm->mmap_base = TASK_UNMAPPED_BASE + random_factor; 388 mm->mmap_base = TASK_UNMAPPED_BASE + random_factor;
387 mm->get_unmapped_area = arch_get_unmapped_area; 389 mm->get_unmapped_area = arch_get_unmapped_area;
@@ -389,9 +391,7 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
389 } else { 391 } else {
390 /* We know it's 32-bit */ 392 /* We know it's 32-bit */
391 unsigned long task_size = STACK_TOP32; 393 unsigned long task_size = STACK_TOP32;
392 unsigned long gap;
393 394
394 gap = current->signal->rlim[RLIMIT_STACK].rlim_cur;
395 if (gap < 128 * 1024 * 1024) 395 if (gap < 128 * 1024 * 1024)
396 gap = 128 * 1024 * 1024; 396 gap = 128 * 1024 * 1024;
397 if (gap > (task_size / 6 * 5)) 397 if (gap > (task_size / 6 * 5))
diff --git a/arch/sparc/kernel/time_32.c b/arch/sparc/kernel/time_32.c
index 5b2f595fe65b..0d4c09b15efc 100644
--- a/arch/sparc/kernel/time_32.c
+++ b/arch/sparc/kernel/time_32.c
@@ -35,6 +35,7 @@
35#include <linux/platform_device.h> 35#include <linux/platform_device.h>
36 36
37#include <asm/oplib.h> 37#include <asm/oplib.h>
38#include <asm/timex.h>
38#include <asm/timer.h> 39#include <asm/timer.h>
39#include <asm/system.h> 40#include <asm/system.h>
40#include <asm/irq.h> 41#include <asm/irq.h>
@@ -51,7 +52,6 @@ DEFINE_SPINLOCK(rtc_lock);
51EXPORT_SYMBOL(rtc_lock); 52EXPORT_SYMBOL(rtc_lock);
52 53
53static int set_rtc_mmss(unsigned long); 54static int set_rtc_mmss(unsigned long);
54static int sbus_do_settimeofday(struct timespec *tv);
55 55
56unsigned long profile_pc(struct pt_regs *regs) 56unsigned long profile_pc(struct pt_regs *regs)
57{ 57{
@@ -76,6 +76,8 @@ EXPORT_SYMBOL(profile_pc);
76 76
77__volatile__ unsigned int *master_l10_counter; 77__volatile__ unsigned int *master_l10_counter;
78 78
79u32 (*do_arch_gettimeoffset)(void);
80
79/* 81/*
80 * timer_interrupt() needs to keep up the real-time clock, 82 * timer_interrupt() needs to keep up the real-time clock,
81 * as well as call the "do_timer()" routine every clocktick 83 * as well as call the "do_timer()" routine every clocktick
@@ -196,35 +198,14 @@ static int __init clock_init(void)
196{ 198{
197 return of_register_driver(&clock_driver, &of_platform_bus_type); 199 return of_register_driver(&clock_driver, &of_platform_bus_type);
198} 200}
199
200/* Must be after subsys_initcall() so that busses are probed. Must 201/* Must be after subsys_initcall() so that busses are probed. Must
201 * be before device_initcall() because things like the RTC driver 202 * be before device_initcall() because things like the RTC driver
202 * need to see the clock registers. 203 * need to see the clock registers.
203 */ 204 */
204fs_initcall(clock_init); 205fs_initcall(clock_init);
205 206
206static void __init sbus_time_init(void)
207{
208
209 BTFIXUPSET_CALL(bus_do_settimeofday, sbus_do_settimeofday, BTFIXUPCALL_NORM);
210 btfixup();
211
212 sparc_init_timers(timer_interrupt);
213}
214
215void __init time_init(void)
216{
217#ifdef CONFIG_PCI
218 extern void pci_time_init(void);
219 if (pcic_present()) {
220 pci_time_init();
221 return;
222 }
223#endif
224 sbus_time_init();
225}
226 207
227static inline unsigned long do_gettimeoffset(void) 208u32 sbus_do_gettimeoffset(void)
228{ 209{
229 unsigned long val = *master_l10_counter; 210 unsigned long val = *master_l10_counter;
230 unsigned long usec = (val >> 10) & 0x1fffff; 211 unsigned long usec = (val >> 10) & 0x1fffff;
@@ -233,86 +214,39 @@ static inline unsigned long do_gettimeoffset(void)
233 if (val & 0x80000000) 214 if (val & 0x80000000)
234 usec += 1000000 / HZ; 215 usec += 1000000 / HZ;
235 216
236 return usec; 217 return usec * 1000;
237} 218}
238 219
239/* Ok, my cute asm atomicity trick doesn't work anymore.
240 * There are just too many variables that need to be protected
241 * now (both members of xtime, et al.)
242 */
243void do_gettimeofday(struct timeval *tv)
244{
245 unsigned long flags;
246 unsigned long seq;
247 unsigned long usec, sec;
248 unsigned long max_ntp_tick = tick_usec - tickadj;
249
250 do {
251 seq = read_seqbegin_irqsave(&xtime_lock, flags);
252 usec = do_gettimeoffset();
253
254 /*
255 * If time_adjust is negative then NTP is slowing the clock
256 * so make sure not to go into next possible interval.
257 * Better to lose some accuracy than have time go backwards..
258 */
259 if (unlikely(time_adjust < 0))
260 usec = min(usec, max_ntp_tick);
261
262 sec = xtime.tv_sec;
263 usec += (xtime.tv_nsec / 1000);
264 } while (read_seqretry_irqrestore(&xtime_lock, seq, flags));
265
266 while (usec >= 1000000) {
267 usec -= 1000000;
268 sec++;
269 }
270 220
271 tv->tv_sec = sec; 221u32 arch_gettimeoffset(void)
272 tv->tv_usec = usec;
273}
274
275EXPORT_SYMBOL(do_gettimeofday);
276
277int do_settimeofday(struct timespec *tv)
278{ 222{
279 int ret; 223 if (unlikely(!do_arch_gettimeoffset))
280 224 return 0;
281 write_seqlock_irq(&xtime_lock); 225 return do_arch_gettimeoffset();
282 ret = bus_do_settimeofday(tv);
283 write_sequnlock_irq(&xtime_lock);
284 clock_was_set();
285 return ret;
286} 226}
287 227
288EXPORT_SYMBOL(do_settimeofday); 228static void __init sbus_time_init(void)
289
290static int sbus_do_settimeofday(struct timespec *tv)
291{ 229{
292 time_t wtm_sec, sec = tv->tv_sec; 230 do_arch_gettimeoffset = sbus_do_gettimeoffset;
293 long wtm_nsec, nsec = tv->tv_nsec;
294 231
295 if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC) 232 btfixup();
296 return -EINVAL;
297
298 /*
299 * This is revolting. We need to set "xtime" correctly. However, the
300 * value in this location is the value at the most recent update of
301 * wall time. Discover what correction gettimeofday() would have
302 * made, and then undo it!
303 */
304 nsec -= 1000 * do_gettimeoffset();
305
306 wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec);
307 wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec);
308 233
309 set_normalized_timespec(&xtime, sec, nsec); 234 sparc_init_timers(timer_interrupt);
310 set_normalized_timespec(&wall_to_monotonic, wtm_sec, wtm_nsec); 235}
311 236
312 ntp_clear(); 237void __init time_init(void)
313 return 0; 238{
239#ifdef CONFIG_PCI
240 extern void pci_time_init(void);
241 if (pcic_present()) {
242 pci_time_init();
243 return;
244 }
245#endif
246 sbus_time_init();
314} 247}
315 248
249
316static int set_rtc_mmss(unsigned long secs) 250static int set_rtc_mmss(unsigned long secs)
317{ 251{
318 struct rtc_device *rtc = rtc_class_open("rtc0"); 252 struct rtc_device *rtc = rtc_class_open("rtc0");
diff --git a/arch/sparc/kernel/tsb.S b/arch/sparc/kernel/tsb.S
index 8c91d9b29a2f..db15d123f054 100644
--- a/arch/sparc/kernel/tsb.S
+++ b/arch/sparc/kernel/tsb.S
@@ -191,10 +191,12 @@ tsb_dtlb_load:
191 191
192tsb_itlb_load: 192tsb_itlb_load:
193 /* Executable bit must be set. */ 193 /* Executable bit must be set. */
194661: andcc %g5, _PAGE_EXEC_4U, %g0 194661: sethi %hi(_PAGE_EXEC_4U), %g4
195 .section .sun4v_1insn_patch, "ax" 195 andcc %g5, %g4, %g0
196 .section .sun4v_2insn_patch, "ax"
196 .word 661b 197 .word 661b
197 andcc %g5, _PAGE_EXEC_4V, %g0 198 andcc %g5, _PAGE_EXEC_4V, %g0
199 nop
198 .previous 200 .previous
199 201
200 be,pn %xcc, tsb_do_fault 202 be,pn %xcc, tsb_do_fault
diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c
index b99f81c4906f..a3413acb8f12 100644
--- a/arch/sparc/mm/fault_32.c
+++ b/arch/sparc/mm/fault_32.c
@@ -18,6 +18,7 @@
18#include <linux/signal.h> 18#include <linux/signal.h>
19#include <linux/mm.h> 19#include <linux/mm.h>
20#include <linux/smp.h> 20#include <linux/smp.h>
21#include <linux/perf_event.h>
21#include <linux/interrupt.h> 22#include <linux/interrupt.h>
22#include <linux/module.h> 23#include <linux/module.h>
23#include <linux/kdebug.h> 24#include <linux/kdebug.h>
@@ -203,6 +204,8 @@ asmlinkage void do_sparc_fault(struct pt_regs *regs, int text_fault, int write,
203 if (in_atomic() || !mm) 204 if (in_atomic() || !mm)
204 goto no_context; 205 goto no_context;
205 206
207 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, 0, regs, address);
208
206 down_read(&mm->mmap_sem); 209 down_read(&mm->mmap_sem);
207 210
208 /* 211 /*
@@ -249,10 +252,15 @@ good_area:
249 goto do_sigbus; 252 goto do_sigbus;
250 BUG(); 253 BUG();
251 } 254 }
252 if (fault & VM_FAULT_MAJOR) 255 if (fault & VM_FAULT_MAJOR) {
253 current->maj_flt++; 256 current->maj_flt++;
254 else 257 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, 0,
258 regs, address);
259 } else {
255 current->min_flt++; 260 current->min_flt++;
261 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, 0,
262 regs, address);
263 }
256 up_read(&mm->mmap_sem); 264 up_read(&mm->mmap_sem);
257 return; 265 return;
258 266
diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c
index 6081936bf03b..b9d4ff02b8fc 100644
--- a/arch/sparc/mm/fault_64.c
+++ b/arch/sparc/mm/fault_64.c
@@ -16,6 +16,7 @@
16#include <linux/mm.h> 16#include <linux/mm.h>
17#include <linux/module.h> 17#include <linux/module.h>
18#include <linux/init.h> 18#include <linux/init.h>
19#include <linux/perf_event.h>
19#include <linux/interrupt.h> 20#include <linux/interrupt.h>
20#include <linux/kprobes.h> 21#include <linux/kprobes.h>
21#include <linux/kdebug.h> 22#include <linux/kdebug.h>
@@ -296,6 +297,8 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
296 if (in_atomic() || !mm) 297 if (in_atomic() || !mm)
297 goto intr_or_no_mm; 298 goto intr_or_no_mm;
298 299
300 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, 0, regs, address);
301
299 if (!down_read_trylock(&mm->mmap_sem)) { 302 if (!down_read_trylock(&mm->mmap_sem)) {
300 if ((regs->tstate & TSTATE_PRIV) && 303 if ((regs->tstate & TSTATE_PRIV) &&
301 !search_exception_tables(regs->tpc)) { 304 !search_exception_tables(regs->tpc)) {
@@ -400,11 +403,15 @@ good_area:
400 goto do_sigbus; 403 goto do_sigbus;
401 BUG(); 404 BUG();
402 } 405 }
403 if (fault & VM_FAULT_MAJOR) 406 if (fault & VM_FAULT_MAJOR) {
404 current->maj_flt++; 407 current->maj_flt++;
405 else 408 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, 0,
409 regs, address);
410 } else {
406 current->min_flt++; 411 current->min_flt++;
407 412 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, 0,
413 regs, address);
414 }
408 up_read(&mm->mmap_sem); 415 up_read(&mm->mmap_sem);
409 416
410 mm_rss = get_mm_rss(mm); 417 mm_rss = get_mm_rss(mm);
diff --git a/arch/um/drivers/mconsole_kern.c b/arch/um/drivers/mconsole_kern.c
index 51069245b79a..3b3c36601a7b 100644
--- a/arch/um/drivers/mconsole_kern.c
+++ b/arch/um/drivers/mconsole_kern.c
@@ -125,50 +125,36 @@ void mconsole_log(struct mc_request *req)
125void mconsole_proc(struct mc_request *req) 125void mconsole_proc(struct mc_request *req)
126{ 126{
127 struct nameidata nd; 127 struct nameidata nd;
128 struct file_system_type *proc; 128 struct vfsmount *mnt = current->nsproxy->pid_ns->proc_mnt;
129 struct super_block *super;
130 struct file *file; 129 struct file *file;
131 int n, err; 130 int n, err;
132 char *ptr = req->request.data, *buf; 131 char *ptr = req->request.data, *buf;
132 mm_segment_t old_fs = get_fs();
133 133
134 ptr += strlen("proc"); 134 ptr += strlen("proc");
135 ptr = skip_spaces(ptr); 135 ptr = skip_spaces(ptr);
136 136
137 proc = get_fs_type("proc"); 137 err = vfs_path_lookup(mnt->mnt_root, mnt, ptr, LOOKUP_FOLLOW, &nd);
138 if (proc == NULL) { 138 if (err) {
139 mconsole_reply(req, "procfs not registered", 1, 0); 139 mconsole_reply(req, "Failed to look up file", 1, 0);
140 goto out; 140 goto out;
141 } 141 }
142 142
143 super = (*proc->get_sb)(proc, 0, NULL, NULL); 143 err = may_open(&nd.path, MAY_READ, FMODE_READ);
144 put_filesystem(proc); 144 if (result) {
145 if (super == NULL) { 145 mconsole_reply(req, "Failed to open file", 1, 0);
146 mconsole_reply(req, "Failed to get procfs superblock", 1, 0); 146 path_put(&nd.path);
147 goto out; 147 goto out;
148 } 148 }
149 up_write(&super->s_umount);
150
151 nd.path.dentry = super->s_root;
152 nd.path.mnt = NULL;
153 nd.flags = O_RDONLY + 1;
154 nd.last_type = LAST_ROOT;
155
156 /* START: it was experienced that the stability problems are closed
157 * if commenting out these two calls + the below read cycle. To
158 * make UML crash again, it was enough to readd either one.*/
159 err = link_path_walk(ptr, &nd);
160 if (err) {
161 mconsole_reply(req, "Failed to look up file", 1, 0);
162 goto out_kill;
163 }
164 149
165 file = dentry_open(nd.path.dentry, nd.path.mnt, O_RDONLY, 150 file = dentry_open(nd.path.dentry, nd.path.mnt, O_RDONLY,
166 current_cred()); 151 current_cred());
152 err = PTR_ERR(file);
167 if (IS_ERR(file)) { 153 if (IS_ERR(file)) {
168 mconsole_reply(req, "Failed to open file", 1, 0); 154 mconsole_reply(req, "Failed to open file", 1, 0);
169 goto out_kill; 155 path_put(&nd.path);
156 goto out;
170 } 157 }
171 /*END*/
172 158
173 buf = kmalloc(PAGE_SIZE, GFP_KERNEL); 159 buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
174 if (buf == NULL) { 160 if (buf == NULL) {
@@ -176,10 +162,13 @@ void mconsole_proc(struct mc_request *req)
176 goto out_fput; 162 goto out_fput;
177 } 163 }
178 164
179 if ((file->f_op != NULL) && (file->f_op->read != NULL)) { 165 if (file->f_op->read) {
180 do { 166 do {
181 n = (*file->f_op->read)(file, buf, PAGE_SIZE - 1, 167 loff_t pos;
182 &file->f_pos); 168 set_fs(KERNEL_DS);
169 n = vfs_read(file, buf, PAGE_SIZE - 1, &pos);
170 file_pos_write(file, pos);
171 set_fs(old_fs);
183 if (n >= 0) { 172 if (n >= 0) {
184 buf[n] = '\0'; 173 buf[n] = '\0';
185 mconsole_reply(req, buf, 0, (n > 0)); 174 mconsole_reply(req, buf, 0, (n > 0));
@@ -197,8 +186,6 @@ void mconsole_proc(struct mc_request *req)
197 kfree(buf); 186 kfree(buf);
198 out_fput: 187 out_fput:
199 fput(file); 188 fput(file);
200 out_kill:
201 deactivate_super(super);
202 out: ; 189 out: ;
203} 190}
204#endif 191#endif
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 55298e891571..eb4092568f9e 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -49,6 +49,7 @@ config X86
49 select HAVE_KERNEL_GZIP 49 select HAVE_KERNEL_GZIP
50 select HAVE_KERNEL_BZIP2 50 select HAVE_KERNEL_BZIP2
51 select HAVE_KERNEL_LZMA 51 select HAVE_KERNEL_LZMA
52 select HAVE_KERNEL_LZO
52 select HAVE_HW_BREAKPOINT 53 select HAVE_HW_BREAKPOINT
53 select PERF_EVENTS 54 select PERF_EVENTS
54 select ANON_INODES 55 select ANON_INODES
@@ -988,12 +989,6 @@ config X86_CPUID
988 with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to 989 with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
989 /dev/cpu/31/cpuid. 990 /dev/cpu/31/cpuid.
990 991
991config X86_CPU_DEBUG
992 tristate "/sys/kernel/debug/x86/cpu/* - CPU Debug support"
993 ---help---
994 If you select this option, this will provide various x86 CPUs
995 information through debugfs.
996
997choice 992choice
998 prompt "High Memory Support" 993 prompt "High Memory Support"
999 default HIGHMEM4G if !X86_NUMAQ 994 default HIGHMEM4G if !X86_NUMAQ
@@ -1246,6 +1241,11 @@ config ARCH_MEMORY_PROBE
1246 def_bool X86_64 1241 def_bool X86_64
1247 depends on MEMORY_HOTPLUG 1242 depends on MEMORY_HOTPLUG
1248 1243
1244config ILLEGAL_POINTER_VALUE
1245 hex
1246 default 0 if X86_32
1247 default 0xdead000000000000 if X86_64
1248
1249source "mm/Kconfig" 1249source "mm/Kconfig"
1250 1250
1251config HIGHPTE 1251config HIGHPTE
diff --git a/arch/x86/Kconfig.cpu b/arch/x86/Kconfig.cpu
index 08e442bc3ab9..f20ddf84a893 100644
--- a/arch/x86/Kconfig.cpu
+++ b/arch/x86/Kconfig.cpu
@@ -396,7 +396,7 @@ config X86_TSC
396 396
397config X86_CMPXCHG64 397config X86_CMPXCHG64
398 def_bool y 398 def_bool y
399 depends on !M386 && !M486 399 depends on X86_PAE || X86_64 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MATOM
400 400
401# this should be set for all -march=.. options where the compiler 401# this should be set for all -march=.. options where the compiler
402# generates cmov. 402# generates cmov.
diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
index f8ed0658404c..fbb47daf2459 100644
--- a/arch/x86/boot/compressed/Makefile
+++ b/arch/x86/boot/compressed/Makefile
@@ -4,11 +4,12 @@
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.lds vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma head_$(BITS).o misc.o piggy.o 7targets := vmlinux.lds vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma vmlinux.bin.lzo head_$(BITS).o misc.o piggy.o
8 8
9KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2 9KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2
10KBUILD_CFLAGS += -fno-strict-aliasing -fPIC 10KBUILD_CFLAGS += -fno-strict-aliasing -fPIC
11KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING 11KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
12cflags-$(CONFIG_X86_32) := -march=i386
12cflags-$(CONFIG_X86_64) := -mcmodel=small 13cflags-$(CONFIG_X86_64) := -mcmodel=small
13KBUILD_CFLAGS += $(cflags-y) 14KBUILD_CFLAGS += $(cflags-y)
14KBUILD_CFLAGS += $(call cc-option,-ffreestanding) 15KBUILD_CFLAGS += $(call cc-option,-ffreestanding)
@@ -48,10 +49,13 @@ $(obj)/vmlinux.bin.bz2: $(vmlinux.bin.all-y) FORCE
48 $(call if_changed,bzip2) 49 $(call if_changed,bzip2)
49$(obj)/vmlinux.bin.lzma: $(vmlinux.bin.all-y) FORCE 50$(obj)/vmlinux.bin.lzma: $(vmlinux.bin.all-y) FORCE
50 $(call if_changed,lzma) 51 $(call if_changed,lzma)
52$(obj)/vmlinux.bin.lzo: $(vmlinux.bin.all-y) FORCE
53 $(call if_changed,lzo)
51 54
52suffix-$(CONFIG_KERNEL_GZIP) := gz 55suffix-$(CONFIG_KERNEL_GZIP) := gz
53suffix-$(CONFIG_KERNEL_BZIP2) := bz2 56suffix-$(CONFIG_KERNEL_BZIP2) := bz2
54suffix-$(CONFIG_KERNEL_LZMA) := lzma 57suffix-$(CONFIG_KERNEL_LZMA) := lzma
58suffix-$(CONFIG_KERNEL_LZO) := lzo
55 59
56quiet_cmd_mkpiggy = MKPIGGY $@ 60quiet_cmd_mkpiggy = MKPIGGY $@
57 cmd_mkpiggy = $(obj)/mkpiggy $< > $@ || ( rm -f $@ ; false ) 61 cmd_mkpiggy = $(obj)/mkpiggy $< > $@ || ( rm -f $@ ; false )
diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c
index 842b2a36174a..3b22fe8ab91b 100644
--- a/arch/x86/boot/compressed/misc.c
+++ b/arch/x86/boot/compressed/misc.c
@@ -162,6 +162,10 @@ static int lines, cols;
162#include "../../../../lib/decompress_unlzma.c" 162#include "../../../../lib/decompress_unlzma.c"
163#endif 163#endif
164 164
165#ifdef CONFIG_KERNEL_LZO
166#include "../../../../lib/decompress_unlzo.c"
167#endif
168
165static void scroll(void) 169static void scroll(void)
166{ 170{
167 int i; 171 int i;
diff --git a/arch/x86/ia32/ia32_aout.c b/arch/x86/ia32/ia32_aout.c
index 2a4d073d2cf1..f9f472462753 100644
--- a/arch/x86/ia32/ia32_aout.c
+++ b/arch/x86/ia32/ia32_aout.c
@@ -308,14 +308,15 @@ static int load_aout_binary(struct linux_binprm *bprm, struct pt_regs *regs)
308 if (retval) 308 if (retval)
309 return retval; 309 return retval;
310 310
311 regs->cs = __USER32_CS;
312 regs->r8 = regs->r9 = regs->r10 = regs->r11 = regs->r12 =
313 regs->r13 = regs->r14 = regs->r15 = 0;
314
315 /* OK, This is the point of no return */ 311 /* OK, This is the point of no return */
316 set_personality(PER_LINUX); 312 set_personality(PER_LINUX);
317 set_thread_flag(TIF_IA32); 313 set_thread_flag(TIF_IA32);
318 clear_thread_flag(TIF_ABI_PENDING); 314
315 setup_new_exec(bprm);
316
317 regs->cs = __USER32_CS;
318 regs->r8 = regs->r9 = regs->r10 = regs->r11 = regs->r12 =
319 regs->r13 = regs->r14 = regs->r15 = 0;
319 320
320 current->mm->end_code = ex.a_text + 321 current->mm->end_code = ex.a_text +
321 (current->mm->start_code = N_TXTADDR(ex)); 322 (current->mm->start_code = N_TXTADDR(ex));
diff --git a/arch/x86/include/asm/amd_iommu_proto.h b/arch/x86/include/asm/amd_iommu_proto.h
index 4d817f9e6e77..d2544f1d705d 100644
--- a/arch/x86/include/asm/amd_iommu_proto.h
+++ b/arch/x86/include/asm/amd_iommu_proto.h
@@ -31,6 +31,7 @@ extern void amd_iommu_reset_cmd_buffer(struct amd_iommu *iommu);
31extern int amd_iommu_init_devices(void); 31extern int amd_iommu_init_devices(void);
32extern void amd_iommu_uninit_devices(void); 32extern void amd_iommu_uninit_devices(void);
33extern void amd_iommu_init_notifier(void); 33extern void amd_iommu_init_notifier(void);
34extern void amd_iommu_init_api(void);
34#ifndef CONFIG_AMD_IOMMU_STATS 35#ifndef CONFIG_AMD_IOMMU_STATS
35 36
36static inline void amd_iommu_stats_init(void) { } 37static inline void amd_iommu_stats_init(void) { }
diff --git a/arch/x86/include/asm/cpu_debug.h b/arch/x86/include/asm/cpu_debug.h
deleted file mode 100644
index d96c1ee3a95c..000000000000
--- a/arch/x86/include/asm/cpu_debug.h
+++ /dev/null
@@ -1,127 +0,0 @@
1#ifndef _ASM_X86_CPU_DEBUG_H
2#define _ASM_X86_CPU_DEBUG_H
3
4/*
5 * CPU x86 architecture debug
6 *
7 * Copyright(C) 2009 Jaswinder Singh Rajput
8 */
9
10/* Register flags */
11enum cpu_debug_bit {
12/* Model Specific Registers (MSRs) */
13 CPU_MC_BIT, /* Machine Check */
14 CPU_MONITOR_BIT, /* Monitor */
15 CPU_TIME_BIT, /* Time */
16 CPU_PMC_BIT, /* Performance Monitor */
17 CPU_PLATFORM_BIT, /* Platform */
18 CPU_APIC_BIT, /* APIC */
19 CPU_POWERON_BIT, /* Power-on */
20 CPU_CONTROL_BIT, /* Control */
21 CPU_FEATURES_BIT, /* Features control */
22 CPU_LBRANCH_BIT, /* Last Branch */
23 CPU_BIOS_BIT, /* BIOS */
24 CPU_FREQ_BIT, /* Frequency */
25 CPU_MTTR_BIT, /* MTRR */
26 CPU_PERF_BIT, /* Performance */
27 CPU_CACHE_BIT, /* Cache */
28 CPU_SYSENTER_BIT, /* Sysenter */
29 CPU_THERM_BIT, /* Thermal */
30 CPU_MISC_BIT, /* Miscellaneous */
31 CPU_DEBUG_BIT, /* Debug */
32 CPU_PAT_BIT, /* PAT */
33 CPU_VMX_BIT, /* VMX */
34 CPU_CALL_BIT, /* System Call */
35 CPU_BASE_BIT, /* BASE Address */
36 CPU_VER_BIT, /* Version ID */
37 CPU_CONF_BIT, /* Configuration */
38 CPU_SMM_BIT, /* System mgmt mode */
39 CPU_SVM_BIT, /*Secure Virtual Machine*/
40 CPU_OSVM_BIT, /* OS-Visible Workaround*/
41/* Standard Registers */
42 CPU_TSS_BIT, /* Task Stack Segment */
43 CPU_CR_BIT, /* Control Registers */
44 CPU_DT_BIT, /* Descriptor Table */
45/* End of Registers flags */
46 CPU_REG_ALL_BIT, /* Select all Registers */
47};
48
49#define CPU_REG_ALL (~0) /* Select all Registers */
50
51#define CPU_MC (1 << CPU_MC_BIT)
52#define CPU_MONITOR (1 << CPU_MONITOR_BIT)
53#define CPU_TIME (1 << CPU_TIME_BIT)
54#define CPU_PMC (1 << CPU_PMC_BIT)
55#define CPU_PLATFORM (1 << CPU_PLATFORM_BIT)
56#define CPU_APIC (1 << CPU_APIC_BIT)
57#define CPU_POWERON (1 << CPU_POWERON_BIT)
58#define CPU_CONTROL (1 << CPU_CONTROL_BIT)
59#define CPU_FEATURES (1 << CPU_FEATURES_BIT)
60#define CPU_LBRANCH (1 << CPU_LBRANCH_BIT)
61#define CPU_BIOS (1 << CPU_BIOS_BIT)
62#define CPU_FREQ (1 << CPU_FREQ_BIT)
63#define CPU_MTRR (1 << CPU_MTTR_BIT)
64#define CPU_PERF (1 << CPU_PERF_BIT)
65#define CPU_CACHE (1 << CPU_CACHE_BIT)
66#define CPU_SYSENTER (1 << CPU_SYSENTER_BIT)
67#define CPU_THERM (1 << CPU_THERM_BIT)
68#define CPU_MISC (1 << CPU_MISC_BIT)
69#define CPU_DEBUG (1 << CPU_DEBUG_BIT)
70#define CPU_PAT (1 << CPU_PAT_BIT)
71#define CPU_VMX (1 << CPU_VMX_BIT)
72#define CPU_CALL (1 << CPU_CALL_BIT)
73#define CPU_BASE (1 << CPU_BASE_BIT)
74#define CPU_VER (1 << CPU_VER_BIT)
75#define CPU_CONF (1 << CPU_CONF_BIT)
76#define CPU_SMM (1 << CPU_SMM_BIT)
77#define CPU_SVM (1 << CPU_SVM_BIT)
78#define CPU_OSVM (1 << CPU_OSVM_BIT)
79#define CPU_TSS (1 << CPU_TSS_BIT)
80#define CPU_CR (1 << CPU_CR_BIT)
81#define CPU_DT (1 << CPU_DT_BIT)
82
83/* Register file flags */
84enum cpu_file_bit {
85 CPU_INDEX_BIT, /* index */
86 CPU_VALUE_BIT, /* value */
87};
88
89#define CPU_FILE_VALUE (1 << CPU_VALUE_BIT)
90
91#define MAX_CPU_FILES 512
92
93struct cpu_private {
94 unsigned cpu;
95 unsigned type;
96 unsigned reg;
97 unsigned file;
98};
99
100struct cpu_debug_base {
101 char *name; /* Register name */
102 unsigned flag; /* Register flag */
103 unsigned write; /* Register write flag */
104};
105
106/*
107 * Currently it looks similar to cpu_debug_base but once we add more files
108 * cpu_file_base will go in different direction
109 */
110struct cpu_file_base {
111 char *name; /* Register file name */
112 unsigned flag; /* Register file flag */
113 unsigned write; /* Register write flag */
114};
115
116struct cpu_cpuX_base {
117 struct dentry *dentry; /* Register dentry */
118 int init; /* Register index file */
119};
120
121struct cpu_debug_range {
122 unsigned min; /* Register range min */
123 unsigned max; /* Register range max */
124 unsigned flag; /* Supported flags */
125};
126
127#endif /* _ASM_X86_CPU_DEBUG_H */
diff --git a/arch/x86/include/asm/elf.h b/arch/x86/include/asm/elf.h
index b4501ee223ad..f2ad2163109d 100644
--- a/arch/x86/include/asm/elf.h
+++ b/arch/x86/include/asm/elf.h
@@ -170,10 +170,7 @@ static inline void elf_common_init(struct thread_struct *t,
170} 170}
171 171
172#define ELF_PLAT_INIT(_r, load_addr) \ 172#define ELF_PLAT_INIT(_r, load_addr) \
173do { \ 173 elf_common_init(&current->thread, _r, 0)
174 elf_common_init(&current->thread, _r, 0); \
175 clear_thread_flag(TIF_IA32); \
176} while (0)
177 174
178#define COMPAT_ELF_PLAT_INIT(regs, load_addr) \ 175#define COMPAT_ELF_PLAT_INIT(regs, load_addr) \
179 elf_common_init(&current->thread, regs, __USER_DS) 176 elf_common_init(&current->thread, regs, __USER_DS)
@@ -181,14 +178,8 @@ do { \
181void start_thread_ia32(struct pt_regs *regs, u32 new_ip, u32 new_sp); 178void start_thread_ia32(struct pt_regs *regs, u32 new_ip, u32 new_sp);
182#define compat_start_thread start_thread_ia32 179#define compat_start_thread start_thread_ia32
183 180
184#define COMPAT_SET_PERSONALITY(ex) \ 181void set_personality_ia32(void);
185do { \ 182#define COMPAT_SET_PERSONALITY(ex) set_personality_ia32()
186 if (test_thread_flag(TIF_IA32)) \
187 clear_thread_flag(TIF_ABI_PENDING); \
188 else \
189 set_thread_flag(TIF_ABI_PENDING); \
190 current->personality |= force_personality32; \
191} while (0)
192 183
193#define COMPAT_ELF_PLATFORM ("i686") 184#define COMPAT_ELF_PLATFORM ("i686")
194 185
diff --git a/arch/x86/include/asm/hpet.h b/arch/x86/include/asm/hpet.h
index 5d89fd2a3690..1d5c08a1bdfd 100644
--- a/arch/x86/include/asm/hpet.h
+++ b/arch/x86/include/asm/hpet.h
@@ -67,6 +67,7 @@ extern unsigned long hpet_address;
67extern unsigned long force_hpet_address; 67extern unsigned long force_hpet_address;
68extern u8 hpet_blockid; 68extern u8 hpet_blockid;
69extern int hpet_force_user; 69extern int hpet_force_user;
70extern u8 hpet_msi_disable;
70extern int is_hpet_enabled(void); 71extern int is_hpet_enabled(void);
71extern int hpet_enable(void); 72extern int hpet_enable(void);
72extern void hpet_disable(void); 73extern void hpet_disable(void);
diff --git a/arch/x86/include/asm/kvm.h b/arch/x86/include/asm/kvm.h
index 950df434763f..f46b79f6c16c 100644
--- a/arch/x86/include/asm/kvm.h
+++ b/arch/x86/include/asm/kvm.h
@@ -254,6 +254,10 @@ struct kvm_reinject_control {
254 __u8 reserved[31]; 254 __u8 reserved[31];
255}; 255};
256 256
257/* When set in flags, include corresponding fields on KVM_SET_VCPU_EVENTS */
258#define KVM_VCPUEVENT_VALID_NMI_PENDING 0x00000001
259#define KVM_VCPUEVENT_VALID_SIPI_VECTOR 0x00000002
260
257/* for KVM_GET/SET_VCPU_EVENTS */ 261/* for KVM_GET/SET_VCPU_EVENTS */
258struct kvm_vcpu_events { 262struct kvm_vcpu_events {
259 struct { 263 struct {
diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h
index 858baa061cfc..6c3fdd631ed3 100644
--- a/arch/x86/include/asm/mce.h
+++ b/arch/x86/include/asm/mce.h
@@ -108,10 +108,11 @@ struct mce_log {
108#define K8_MCE_THRESHOLD_BANK_5 (MCE_THRESHOLD_BASE + 5 * 9) 108#define K8_MCE_THRESHOLD_BANK_5 (MCE_THRESHOLD_BASE + 5 * 9)
109#define K8_MCE_THRESHOLD_DRAM_ECC (MCE_THRESHOLD_BANK_4 + 0) 109#define K8_MCE_THRESHOLD_DRAM_ECC (MCE_THRESHOLD_BANK_4 + 0)
110 110
111extern struct atomic_notifier_head x86_mce_decoder_chain;
112 111
113#ifdef __KERNEL__ 112#ifdef __KERNEL__
114 113
114extern struct atomic_notifier_head x86_mce_decoder_chain;
115
115#include <linux/percpu.h> 116#include <linux/percpu.h>
116#include <linux/init.h> 117#include <linux/init.h>
117#include <asm/atomic.h> 118#include <asm/atomic.h>
diff --git a/arch/x86/include/asm/microcode.h b/arch/x86/include/asm/microcode.h
index c24ca9a56458..ef51b501e22a 100644
--- a/arch/x86/include/asm/microcode.h
+++ b/arch/x86/include/asm/microcode.h
@@ -12,8 +12,6 @@ struct device;
12enum ucode_state { UCODE_ERROR, UCODE_OK, UCODE_NFOUND }; 12enum ucode_state { UCODE_ERROR, UCODE_OK, UCODE_NFOUND };
13 13
14struct microcode_ops { 14struct microcode_ops {
15 void (*init)(struct device *device);
16 void (*fini)(void);
17 enum ucode_state (*request_microcode_user) (int cpu, 15 enum ucode_state (*request_microcode_user) (int cpu,
18 const void __user *buf, size_t size); 16 const void __user *buf, size_t size);
19 17
diff --git a/arch/x86/include/asm/perf_event.h b/arch/x86/include/asm/perf_event.h
index 8d9f8548a870..1380367dabd9 100644
--- a/arch/x86/include/asm/perf_event.h
+++ b/arch/x86/include/asm/perf_event.h
@@ -19,6 +19,7 @@
19#define MSR_ARCH_PERFMON_EVENTSEL1 0x187 19#define MSR_ARCH_PERFMON_EVENTSEL1 0x187
20 20
21#define ARCH_PERFMON_EVENTSEL0_ENABLE (1 << 22) 21#define ARCH_PERFMON_EVENTSEL0_ENABLE (1 << 22)
22#define ARCH_PERFMON_EVENTSEL_ANY (1 << 21)
22#define ARCH_PERFMON_EVENTSEL_INT (1 << 20) 23#define ARCH_PERFMON_EVENTSEL_INT (1 << 20)
23#define ARCH_PERFMON_EVENTSEL_OS (1 << 17) 24#define ARCH_PERFMON_EVENTSEL_OS (1 << 17)
24#define ARCH_PERFMON_EVENTSEL_USR (1 << 16) 25#define ARCH_PERFMON_EVENTSEL_USR (1 << 16)
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
index fc801bab1b3b..b753ea59703a 100644
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -450,6 +450,8 @@ struct thread_struct {
450 struct perf_event *ptrace_bps[HBP_NUM]; 450 struct perf_event *ptrace_bps[HBP_NUM];
451 /* Debug status used for traps, single steps, etc... */ 451 /* Debug status used for traps, single steps, etc... */
452 unsigned long debugreg6; 452 unsigned long debugreg6;
453 /* Keep track of the exact dr7 value set by the user */
454 unsigned long ptrace_dr7;
453 /* Fault info: */ 455 /* Fault info: */
454 unsigned long cr2; 456 unsigned long cr2;
455 unsigned long trap_no; 457 unsigned long trap_no;
diff --git a/arch/x86/include/asm/system.h b/arch/x86/include/asm/system.h
index ecb544e65382..e04740f7a0bb 100644
--- a/arch/x86/include/asm/system.h
+++ b/arch/x86/include/asm/system.h
@@ -11,9 +11,9 @@
11#include <linux/irqflags.h> 11#include <linux/irqflags.h>
12 12
13/* entries in ARCH_DLINFO: */ 13/* entries in ARCH_DLINFO: */
14#ifdef CONFIG_IA32_EMULATION 14#if defined(CONFIG_IA32_EMULATION) || !defined(CONFIG_X86_64)
15# define AT_VECTOR_SIZE_ARCH 2 15# define AT_VECTOR_SIZE_ARCH 2
16#else 16#else /* else it's non-compat x86-64 */
17# define AT_VECTOR_SIZE_ARCH 1 17# define AT_VECTOR_SIZE_ARCH 1
18#endif 18#endif
19 19
diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h
index 375c917c37d2..e0d28901e969 100644
--- a/arch/x86/include/asm/thread_info.h
+++ b/arch/x86/include/asm/thread_info.h
@@ -87,7 +87,6 @@ struct thread_info {
87#define TIF_NOTSC 16 /* TSC is not accessible in userland */ 87#define TIF_NOTSC 16 /* TSC is not accessible in userland */
88#define TIF_IA32 17 /* 32bit process */ 88#define TIF_IA32 17 /* 32bit process */
89#define TIF_FORK 18 /* ret_from_fork */ 89#define TIF_FORK 18 /* ret_from_fork */
90#define TIF_ABI_PENDING 19
91#define TIF_MEMDIE 20 90#define TIF_MEMDIE 20
92#define TIF_DEBUG 21 /* uses debug registers */ 91#define TIF_DEBUG 21 /* uses debug registers */
93#define TIF_IO_BITMAP 22 /* uses I/O bitmap */ 92#define TIF_IO_BITMAP 22 /* uses I/O bitmap */
@@ -112,7 +111,6 @@ struct thread_info {
112#define _TIF_NOTSC (1 << TIF_NOTSC) 111#define _TIF_NOTSC (1 << TIF_NOTSC)
113#define _TIF_IA32 (1 << TIF_IA32) 112#define _TIF_IA32 (1 << TIF_IA32)
114#define _TIF_FORK (1 << TIF_FORK) 113#define _TIF_FORK (1 << TIF_FORK)
115#define _TIF_ABI_PENDING (1 << TIF_ABI_PENDING)
116#define _TIF_DEBUG (1 << TIF_DEBUG) 114#define _TIF_DEBUG (1 << TIF_DEBUG)
117#define _TIF_IO_BITMAP (1 << TIF_IO_BITMAP) 115#define _TIF_IO_BITMAP (1 << TIF_IO_BITMAP)
118#define _TIF_FREEZE (1 << TIF_FREEZE) 116#define _TIF_FREEZE (1 << TIF_FREEZE)
diff --git a/arch/x86/include/asm/uaccess_32.h b/arch/x86/include/asm/uaccess_32.h
index 0c9825e97f36..088d09fb1615 100644
--- a/arch/x86/include/asm/uaccess_32.h
+++ b/arch/x86/include/asm/uaccess_32.h
@@ -205,14 +205,13 @@ static inline unsigned long __must_check copy_from_user(void *to,
205 unsigned long n) 205 unsigned long n)
206{ 206{
207 int sz = __compiletime_object_size(to); 207 int sz = __compiletime_object_size(to);
208 int ret = -EFAULT;
209 208
210 if (likely(sz == -1 || sz >= n)) 209 if (likely(sz == -1 || sz >= n))
211 ret = _copy_from_user(to, from, n); 210 n = _copy_from_user(to, from, n);
212 else 211 else
213 copy_from_user_overflow(); 212 copy_from_user_overflow();
214 213
215 return ret; 214 return n;
216} 215}
217 216
218long __must_check strncpy_from_user(char *dst, const char __user *src, 217long __must_check strncpy_from_user(char *dst, const char __user *src,
diff --git a/arch/x86/include/asm/uaccess_64.h b/arch/x86/include/asm/uaccess_64.h
index 46324c6a4f6e..535e421498f6 100644
--- a/arch/x86/include/asm/uaccess_64.h
+++ b/arch/x86/include/asm/uaccess_64.h
@@ -30,16 +30,15 @@ static inline unsigned long __must_check copy_from_user(void *to,
30 unsigned long n) 30 unsigned long n)
31{ 31{
32 int sz = __compiletime_object_size(to); 32 int sz = __compiletime_object_size(to);
33 int ret = -EFAULT;
34 33
35 might_fault(); 34 might_fault();
36 if (likely(sz == -1 || sz >= n)) 35 if (likely(sz == -1 || sz >= n))
37 ret = _copy_from_user(to, from, n); 36 n = _copy_from_user(to, from, n);
38#ifdef CONFIG_DEBUG_VM 37#ifdef CONFIG_DEBUG_VM
39 else 38 else
40 WARN(1, "Buffer overflow detected!\n"); 39 WARN(1, "Buffer overflow detected!\n");
41#endif 40#endif
42 return ret; 41 return n;
43} 42}
44 43
45static __always_inline __must_check 44static __always_inline __must_check
diff --git a/arch/x86/include/asm/uv/uv_hub.h b/arch/x86/include/asm/uv/uv_hub.h
index 811bfabc80b7..40be813fefb1 100644
--- a/arch/x86/include/asm/uv/uv_hub.h
+++ b/arch/x86/include/asm/uv/uv_hub.h
@@ -31,20 +31,20 @@
31 * contiguous (although various IO spaces may punch holes in 31 * contiguous (although various IO spaces may punch holes in
32 * it).. 32 * it)..
33 * 33 *
34 * N - Number of bits in the node portion of a socket physical 34 * N - Number of bits in the node portion of a socket physical
35 * address. 35 * address.
36 * 36 *
37 * NASID - network ID of a router, Mbrick or Cbrick. Nasid values of 37 * NASID - network ID of a router, Mbrick or Cbrick. Nasid values of
38 * routers always have low bit of 1, C/MBricks have low bit 38 * routers always have low bit of 1, C/MBricks have low bit
39 * equal to 0. Most addressing macros that target UV hub chips 39 * equal to 0. Most addressing macros that target UV hub chips
40 * right shift the NASID by 1 to exclude the always-zero bit. 40 * right shift the NASID by 1 to exclude the always-zero bit.
41 * NASIDs contain up to 15 bits. 41 * NASIDs contain up to 15 bits.
42 * 42 *
43 * GNODE - NASID right shifted by 1 bit. Most mmrs contain gnodes instead 43 * GNODE - NASID right shifted by 1 bit. Most mmrs contain gnodes instead
44 * of nasids. 44 * of nasids.
45 * 45 *
46 * PNODE - the low N bits of the GNODE. The PNODE is the most useful variant 46 * PNODE - the low N bits of the GNODE. The PNODE is the most useful variant
47 * of the nasid for socket usage. 47 * of the nasid for socket usage.
48 * 48 *
49 * 49 *
50 * NumaLink Global Physical Address Format: 50 * NumaLink Global Physical Address Format:
@@ -71,12 +71,12 @@
71 * 71 *
72 * 72 *
73 * APICID format 73 * APICID format
74 * NOTE!!!!!! This is the current format of the APICID. However, code 74 * NOTE!!!!!! This is the current format of the APICID. However, code
75 * should assume that this will change in the future. Use functions 75 * should assume that this will change in the future. Use functions
76 * in this file for all APICID bit manipulations and conversion. 76 * in this file for all APICID bit manipulations and conversion.
77 * 77 *
78 * 1111110000000000 78 * 1111110000000000
79 * 5432109876543210 79 * 5432109876543210
80 * pppppppppplc0cch 80 * pppppppppplc0cch
81 * sssssssssss 81 * sssssssssss
82 * 82 *
@@ -89,9 +89,9 @@
89 * Note: Processor only supports 12 bits in the APICID register. The ACPI 89 * Note: Processor only supports 12 bits in the APICID register. The ACPI
90 * tables hold all 16 bits. Software needs to be aware of this. 90 * tables hold all 16 bits. Software needs to be aware of this.
91 * 91 *
92 * Unless otherwise specified, all references to APICID refer to 92 * Unless otherwise specified, all references to APICID refer to
93 * the FULL value contained in ACPI tables, not the subset in the 93 * the FULL value contained in ACPI tables, not the subset in the
94 * processor APICID register. 94 * processor APICID register.
95 */ 95 */
96 96
97 97
@@ -151,16 +151,16 @@ struct uv_hub_info_s {
151}; 151};
152 152
153DECLARE_PER_CPU(struct uv_hub_info_s, __uv_hub_info); 153DECLARE_PER_CPU(struct uv_hub_info_s, __uv_hub_info);
154#define uv_hub_info (&__get_cpu_var(__uv_hub_info)) 154#define uv_hub_info (&__get_cpu_var(__uv_hub_info))
155#define uv_cpu_hub_info(cpu) (&per_cpu(__uv_hub_info, cpu)) 155#define uv_cpu_hub_info(cpu) (&per_cpu(__uv_hub_info, cpu))
156 156
157/* 157/*
158 * Local & Global MMR space macros. 158 * Local & Global MMR space macros.
159 * Note: macros are intended to be used ONLY by inline functions 159 * Note: macros are intended to be used ONLY by inline functions
160 * in this file - not by other kernel code. 160 * in this file - not by other kernel code.
161 * n - NASID (full 15-bit global nasid) 161 * n - NASID (full 15-bit global nasid)
162 * g - GNODE (full 15-bit global nasid, right shifted 1) 162 * g - GNODE (full 15-bit global nasid, right shifted 1)
163 * p - PNODE (local part of nsids, right shifted 1) 163 * p - PNODE (local part of nsids, right shifted 1)
164 */ 164 */
165#define UV_NASID_TO_PNODE(n) (((n) >> 1) & uv_hub_info->pnode_mask) 165#define UV_NASID_TO_PNODE(n) (((n) >> 1) & uv_hub_info->pnode_mask)
166#define UV_PNODE_TO_GNODE(p) ((p) |uv_hub_info->gnode_extra) 166#define UV_PNODE_TO_GNODE(p) ((p) |uv_hub_info->gnode_extra)
@@ -215,8 +215,8 @@ DECLARE_PER_CPU(struct uv_hub_info_s, __uv_hub_info);
215/* 215/*
216 * Macros for converting between kernel virtual addresses, socket local physical 216 * Macros for converting between kernel virtual addresses, socket local physical
217 * addresses, and UV global physical addresses. 217 * addresses, and UV global physical addresses.
218 * Note: use the standard __pa() & __va() macros for converting 218 * Note: use the standard __pa() & __va() macros for converting
219 * between socket virtual and socket physical addresses. 219 * between socket virtual and socket physical addresses.
220 */ 220 */
221 221
222/* socket phys RAM --> UV global physical address */ 222/* socket phys RAM --> UV global physical address */
@@ -287,21 +287,18 @@ static inline int uv_apicid_to_pnode(int apicid)
287 * Access global MMRs using the low memory MMR32 space. This region supports 287 * Access global MMRs using the low memory MMR32 space. This region supports
288 * faster MMR access but not all MMRs are accessible in this space. 288 * faster MMR access but not all MMRs are accessible in this space.
289 */ 289 */
290static inline unsigned long *uv_global_mmr32_address(int pnode, 290static inline unsigned long *uv_global_mmr32_address(int pnode, unsigned long offset)
291 unsigned long offset)
292{ 291{
293 return __va(UV_GLOBAL_MMR32_BASE | 292 return __va(UV_GLOBAL_MMR32_BASE |
294 UV_GLOBAL_MMR32_PNODE_BITS(pnode) | offset); 293 UV_GLOBAL_MMR32_PNODE_BITS(pnode) | offset);
295} 294}
296 295
297static inline void uv_write_global_mmr32(int pnode, unsigned long offset, 296static inline void uv_write_global_mmr32(int pnode, unsigned long offset, unsigned long val)
298 unsigned long val)
299{ 297{
300 writeq(val, uv_global_mmr32_address(pnode, offset)); 298 writeq(val, uv_global_mmr32_address(pnode, offset));
301} 299}
302 300
303static inline unsigned long uv_read_global_mmr32(int pnode, 301static inline unsigned long uv_read_global_mmr32(int pnode, unsigned long offset)
304 unsigned long offset)
305{ 302{
306 return readq(uv_global_mmr32_address(pnode, offset)); 303 return readq(uv_global_mmr32_address(pnode, offset));
307} 304}
@@ -310,21 +307,18 @@ static inline unsigned long uv_read_global_mmr32(int pnode,
310 * Access Global MMR space using the MMR space located at the top of physical 307 * Access Global MMR space using the MMR space located at the top of physical
311 * memory. 308 * memory.
312 */ 309 */
313static inline unsigned long *uv_global_mmr64_address(int pnode, 310static inline unsigned long *uv_global_mmr64_address(int pnode, unsigned long offset)
314 unsigned long offset)
315{ 311{
316 return __va(UV_GLOBAL_MMR64_BASE | 312 return __va(UV_GLOBAL_MMR64_BASE |
317 UV_GLOBAL_MMR64_PNODE_BITS(pnode) | offset); 313 UV_GLOBAL_MMR64_PNODE_BITS(pnode) | offset);
318} 314}
319 315
320static inline void uv_write_global_mmr64(int pnode, unsigned long offset, 316static inline void uv_write_global_mmr64(int pnode, unsigned long offset, unsigned long val)
321 unsigned long val)
322{ 317{
323 writeq(val, uv_global_mmr64_address(pnode, offset)); 318 writeq(val, uv_global_mmr64_address(pnode, offset));
324} 319}
325 320
326static inline unsigned long uv_read_global_mmr64(int pnode, 321static inline unsigned long uv_read_global_mmr64(int pnode, unsigned long offset)
327 unsigned long offset)
328{ 322{
329 return readq(uv_global_mmr64_address(pnode, offset)); 323 return readq(uv_global_mmr64_address(pnode, offset));
330} 324}
@@ -338,6 +332,16 @@ static inline unsigned long uv_global_gru_mmr_address(int pnode, unsigned long o
338 return UV_GLOBAL_GRU_MMR_BASE | offset | (pnode << uv_hub_info->m_val); 332 return UV_GLOBAL_GRU_MMR_BASE | offset | (pnode << uv_hub_info->m_val);
339} 333}
340 334
335static inline void uv_write_global_mmr8(int pnode, unsigned long offset, unsigned char val)
336{
337 writeb(val, uv_global_mmr64_address(pnode, offset));
338}
339
340static inline unsigned char uv_read_global_mmr8(int pnode, unsigned long offset)
341{
342 return readb(uv_global_mmr64_address(pnode, offset));
343}
344
341/* 345/*
342 * Access hub local MMRs. Faster than using global space but only local MMRs 346 * Access hub local MMRs. Faster than using global space but only local MMRs
343 * are accessible. 347 * are accessible.
@@ -457,11 +461,17 @@ static inline void uv_set_scir_bits(unsigned char value)
457 } 461 }
458} 462}
459 463
464static inline unsigned long uv_scir_offset(int apicid)
465{
466 return SCIR_LOCAL_MMR_BASE | (apicid & 0x3f);
467}
468
460static inline void uv_set_cpu_scir_bits(int cpu, unsigned char value) 469static inline void uv_set_cpu_scir_bits(int cpu, unsigned char value)
461{ 470{
462 if (uv_cpu_hub_info(cpu)->scir.state != value) { 471 if (uv_cpu_hub_info(cpu)->scir.state != value) {
472 uv_write_global_mmr8(uv_cpu_to_pnode(cpu),
473 uv_cpu_hub_info(cpu)->scir.offset, value);
463 uv_cpu_hub_info(cpu)->scir.state = value; 474 uv_cpu_hub_info(cpu)->scir.state = value;
464 uv_write_local_mmr8(uv_cpu_hub_info(cpu)->scir.offset, value);
465 } 475 }
466} 476}
467 477
@@ -485,5 +495,17 @@ static inline void uv_hub_send_ipi(int pnode, int apicid, int vector)
485 uv_write_global_mmr64(pnode, UVH_IPI_INT, val); 495 uv_write_global_mmr64(pnode, UVH_IPI_INT, val);
486} 496}
487 497
498/*
499 * Get the minimum revision number of the hub chips within the partition.
500 * 1 - initial rev 1.0 silicon
501 * 2 - rev 2.0 production silicon
502 */
503static inline int uv_get_min_hub_revision_id(void)
504{
505 extern int uv_min_hub_revision_id;
506
507 return uv_min_hub_revision_id;
508}
509
488#endif /* CONFIG_X86_64 */ 510#endif /* CONFIG_X86_64 */
489#endif /* _ASM_X86_UV_UV_HUB_H */ 511#endif /* _ASM_X86_UV_UV_HUB_H */
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index fb1035cd9a6a..af1c5833ff23 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -1185,9 +1185,6 @@ static void __init acpi_process_madt(void)
1185 if (!error) { 1185 if (!error) {
1186 acpi_lapic = 1; 1186 acpi_lapic = 1;
1187 1187
1188#ifdef CONFIG_X86_BIGSMP
1189 generic_bigsmp_probe();
1190#endif
1191 /* 1188 /*
1192 * Parse MADT IO-APIC entries 1189 * Parse MADT IO-APIC entries
1193 */ 1190 */
@@ -1197,8 +1194,6 @@ static void __init acpi_process_madt(void)
1197 acpi_ioapic = 1; 1194 acpi_ioapic = 1;
1198 1195
1199 smp_found_config = 1; 1196 smp_found_config = 1;
1200 if (apic->setup_apic_routing)
1201 apic->setup_apic_routing();
1202 } 1197 }
1203 } 1198 }
1204 if (error == -EINVAL) { 1199 if (error == -EINVAL) {
@@ -1349,14 +1344,6 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = {
1349 }, 1344 },
1350 { 1345 {
1351 .callback = force_acpi_ht, 1346 .callback = force_acpi_ht,
1352 .ident = "ASUS P2B-DS",
1353 .matches = {
1354 DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
1355 DMI_MATCH(DMI_BOARD_NAME, "P2B-DS"),
1356 },
1357 },
1358 {
1359 .callback = force_acpi_ht,
1360 .ident = "ASUS CUR-DLS", 1347 .ident = "ASUS CUR-DLS",
1361 .matches = { 1348 .matches = {
1362 DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), 1349 DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
@@ -1529,16 +1516,10 @@ static struct dmi_system_id __initdata acpi_dmi_table_late[] = {
1529 * if acpi_blacklisted() acpi_disabled = 1; 1516 * if acpi_blacklisted() acpi_disabled = 1;
1530 * acpi_irq_model=... 1517 * acpi_irq_model=...
1531 * ... 1518 * ...
1532 *
1533 * return value: (currently ignored)
1534 * 0: success
1535 * !0: failure
1536 */ 1519 */
1537 1520
1538int __init acpi_boot_table_init(void) 1521void __init acpi_boot_table_init(void)
1539{ 1522{
1540 int error;
1541
1542 dmi_check_system(acpi_dmi_table); 1523 dmi_check_system(acpi_dmi_table);
1543 1524
1544 /* 1525 /*
@@ -1546,15 +1527,14 @@ int __init acpi_boot_table_init(void)
1546 * One exception: acpi=ht continues far enough to enumerate LAPICs 1527 * One exception: acpi=ht continues far enough to enumerate LAPICs
1547 */ 1528 */
1548 if (acpi_disabled && !acpi_ht) 1529 if (acpi_disabled && !acpi_ht)
1549 return 1; 1530 return;
1550 1531
1551 /* 1532 /*
1552 * Initialize the ACPI boot-time table parser. 1533 * Initialize the ACPI boot-time table parser.
1553 */ 1534 */
1554 error = acpi_table_init(); 1535 if (acpi_table_init()) {
1555 if (error) {
1556 disable_acpi(); 1536 disable_acpi();
1557 return error; 1537 return;
1558 } 1538 }
1559 1539
1560 acpi_table_parse(ACPI_SIG_BOOT, acpi_parse_sbf); 1540 acpi_table_parse(ACPI_SIG_BOOT, acpi_parse_sbf);
@@ -1562,18 +1542,15 @@ int __init acpi_boot_table_init(void)
1562 /* 1542 /*
1563 * blacklist may disable ACPI entirely 1543 * blacklist may disable ACPI entirely
1564 */ 1544 */
1565 error = acpi_blacklisted(); 1545 if (acpi_blacklisted()) {
1566 if (error) {
1567 if (acpi_force) { 1546 if (acpi_force) {
1568 printk(KERN_WARNING PREFIX "acpi=force override\n"); 1547 printk(KERN_WARNING PREFIX "acpi=force override\n");
1569 } else { 1548 } else {
1570 printk(KERN_WARNING PREFIX "Disabling ACPI support\n"); 1549 printk(KERN_WARNING PREFIX "Disabling ACPI support\n");
1571 disable_acpi(); 1550 disable_acpi();
1572 return error; 1551 return;
1573 } 1552 }
1574 } 1553 }
1575
1576 return 0;
1577} 1554}
1578 1555
1579int __init early_acpi_boot_init(void) 1556int __init early_acpi_boot_init(void)
diff --git a/arch/x86/kernel/acpi/sleep.c b/arch/x86/kernel/acpi/sleep.c
index 82e508677b91..f9961034e557 100644
--- a/arch/x86/kernel/acpi/sleep.c
+++ b/arch/x86/kernel/acpi/sleep.c
@@ -162,6 +162,8 @@ static int __init acpi_sleep_setup(char *str)
162#endif 162#endif
163 if (strncmp(str, "old_ordering", 12) == 0) 163 if (strncmp(str, "old_ordering", 12) == 0)
164 acpi_old_suspend_ordering(); 164 acpi_old_suspend_ordering();
165 if (strncmp(str, "sci_force_enable", 16) == 0)
166 acpi_set_sci_en_on_resume();
165 str = strchr(str, ','); 167 str = strchr(str, ',');
166 if (str != NULL) 168 if (str != NULL)
167 str += strspn(str, ", \t"); 169 str += strspn(str, ", \t");
diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c
index 23824fef789c..adb0ba025702 100644
--- a/arch/x86/kernel/amd_iommu.c
+++ b/arch/x86/kernel/amd_iommu.c
@@ -980,7 +980,7 @@ static int alloc_new_range(struct dma_ops_domain *dma_dom,
980{ 980{
981 int index = dma_dom->aperture_size >> APERTURE_RANGE_SHIFT; 981 int index = dma_dom->aperture_size >> APERTURE_RANGE_SHIFT;
982 struct amd_iommu *iommu; 982 struct amd_iommu *iommu;
983 int i; 983 unsigned long i;
984 984
985#ifdef CONFIG_IOMMU_STRESS 985#ifdef CONFIG_IOMMU_STRESS
986 populate = false; 986 populate = false;
@@ -1489,11 +1489,14 @@ static void __detach_device(struct device *dev)
1489{ 1489{
1490 struct iommu_dev_data *dev_data = get_dev_data(dev); 1490 struct iommu_dev_data *dev_data = get_dev_data(dev);
1491 struct iommu_dev_data *alias_data; 1491 struct iommu_dev_data *alias_data;
1492 struct protection_domain *domain;
1492 unsigned long flags; 1493 unsigned long flags;
1493 1494
1494 BUG_ON(!dev_data->domain); 1495 BUG_ON(!dev_data->domain);
1495 1496
1496 spin_lock_irqsave(&dev_data->domain->lock, flags); 1497 domain = dev_data->domain;
1498
1499 spin_lock_irqsave(&domain->lock, flags);
1497 1500
1498 if (dev_data->alias != dev) { 1501 if (dev_data->alias != dev) {
1499 alias_data = get_dev_data(dev_data->alias); 1502 alias_data = get_dev_data(dev_data->alias);
@@ -1504,13 +1507,15 @@ static void __detach_device(struct device *dev)
1504 if (atomic_dec_and_test(&dev_data->bind)) 1507 if (atomic_dec_and_test(&dev_data->bind))
1505 do_detach(dev); 1508 do_detach(dev);
1506 1509
1507 spin_unlock_irqrestore(&dev_data->domain->lock, flags); 1510 spin_unlock_irqrestore(&domain->lock, flags);
1508 1511
1509 /* 1512 /*
1510 * If we run in passthrough mode the device must be assigned to the 1513 * If we run in passthrough mode the device must be assigned to the
1511 * passthrough domain if it is detached from any other domain 1514 * passthrough domain if it is detached from any other domain.
1515 * Make sure we can deassign from the pt_domain itself.
1512 */ 1516 */
1513 if (iommu_pass_through && dev_data->domain == NULL) 1517 if (iommu_pass_through &&
1518 (dev_data->domain == NULL && domain != pt_domain))
1514 __attach_device(dev, pt_domain); 1519 __attach_device(dev, pt_domain);
1515} 1520}
1516 1521
@@ -2218,6 +2223,12 @@ static struct dma_map_ops amd_iommu_dma_ops = {
2218/* 2223/*
2219 * The function which clues the AMD IOMMU driver into dma_ops. 2224 * The function which clues the AMD IOMMU driver into dma_ops.
2220 */ 2225 */
2226
2227void __init amd_iommu_init_api(void)
2228{
2229 register_iommu(&amd_iommu_ops);
2230}
2231
2221int __init amd_iommu_init_dma_ops(void) 2232int __init amd_iommu_init_dma_ops(void)
2222{ 2233{
2223 struct amd_iommu *iommu; 2234 struct amd_iommu *iommu;
@@ -2253,8 +2264,6 @@ int __init amd_iommu_init_dma_ops(void)
2253 /* Make the driver finally visible to the drivers */ 2264 /* Make the driver finally visible to the drivers */
2254 dma_ops = &amd_iommu_dma_ops; 2265 dma_ops = &amd_iommu_dma_ops;
2255 2266
2256 register_iommu(&amd_iommu_ops);
2257
2258 amd_iommu_stats_init(); 2267 amd_iommu_stats_init();
2259 2268
2260 return 0; 2269 return 0;
diff --git a/arch/x86/kernel/amd_iommu_init.c b/arch/x86/kernel/amd_iommu_init.c
index 1dca9c34eaeb..9dc91b431470 100644
--- a/arch/x86/kernel/amd_iommu_init.c
+++ b/arch/x86/kernel/amd_iommu_init.c
@@ -138,6 +138,11 @@ int amd_iommus_present;
138bool amd_iommu_np_cache __read_mostly; 138bool amd_iommu_np_cache __read_mostly;
139 139
140/* 140/*
141 * Set to true if ACPI table parsing and hardware intialization went properly
142 */
143static bool amd_iommu_initialized;
144
145/*
141 * List of protection domains - used during resume 146 * List of protection domains - used during resume
142 */ 147 */
143LIST_HEAD(amd_iommu_pd_list); 148LIST_HEAD(amd_iommu_pd_list);
@@ -929,6 +934,8 @@ static int __init init_iommu_all(struct acpi_table_header *table)
929 } 934 }
930 WARN_ON(p != end); 935 WARN_ON(p != end);
931 936
937 amd_iommu_initialized = true;
938
932 return 0; 939 return 0;
933} 940}
934 941
@@ -1263,6 +1270,9 @@ static int __init amd_iommu_init(void)
1263 if (acpi_table_parse("IVRS", init_iommu_all) != 0) 1270 if (acpi_table_parse("IVRS", init_iommu_all) != 0)
1264 goto free; 1271 goto free;
1265 1272
1273 if (!amd_iommu_initialized)
1274 goto free;
1275
1266 if (acpi_table_parse("IVRS", init_memory_definitions) != 0) 1276 if (acpi_table_parse("IVRS", init_memory_definitions) != 0)
1267 goto free; 1277 goto free;
1268 1278
@@ -1282,9 +1292,12 @@ static int __init amd_iommu_init(void)
1282 ret = amd_iommu_init_passthrough(); 1292 ret = amd_iommu_init_passthrough();
1283 else 1293 else
1284 ret = amd_iommu_init_dma_ops(); 1294 ret = amd_iommu_init_dma_ops();
1295
1285 if (ret) 1296 if (ret)
1286 goto free; 1297 goto free;
1287 1298
1299 amd_iommu_init_api();
1300
1288 amd_iommu_init_notifier(); 1301 amd_iommu_init_notifier();
1289 1302
1290 enable_iommus(); 1303 enable_iommus();
diff --git a/arch/x86/kernel/aperture_64.c b/arch/x86/kernel/aperture_64.c
index 3704997e8b25..f147a95fd84a 100644
--- a/arch/x86/kernel/aperture_64.c
+++ b/arch/x86/kernel/aperture_64.c
@@ -31,6 +31,7 @@
31#include <asm/x86_init.h> 31#include <asm/x86_init.h>
32 32
33int gart_iommu_aperture; 33int gart_iommu_aperture;
34EXPORT_SYMBOL_GPL(gart_iommu_aperture);
34int gart_iommu_aperture_disabled __initdata; 35int gart_iommu_aperture_disabled __initdata;
35int gart_iommu_aperture_allowed __initdata; 36int gart_iommu_aperture_allowed __initdata;
36 37
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
index aa57c079c98f..dfca210f6a10 100644
--- a/arch/x86/kernel/apic/apic.c
+++ b/arch/x86/kernel/apic/apic.c
@@ -61,12 +61,6 @@ unsigned int boot_cpu_physical_apicid = -1U;
61 61
62/* 62/*
63 * The highest APIC ID seen during enumeration. 63 * The highest APIC ID seen during enumeration.
64 *
65 * On AMD, this determines the messaging protocol we can use: if all APIC IDs
66 * are in the 0 ... 7 range, then we can use logical addressing which
67 * has some performance advantages (better broadcasting).
68 *
69 * If there's an APIC ID above 8, we use physical addressing.
70 */ 64 */
71unsigned int max_physical_apicid; 65unsigned int max_physical_apicid;
72 66
@@ -1647,9 +1641,7 @@ int __init APIC_init_uniprocessor(void)
1647#endif 1641#endif
1648 1642
1649 enable_IR_x2apic(); 1643 enable_IR_x2apic();
1650#ifdef CONFIG_X86_64
1651 default_setup_apic_routing(); 1644 default_setup_apic_routing();
1652#endif
1653 1645
1654 verify_local_APIC(); 1646 verify_local_APIC();
1655 connect_bsp_APIC(); 1647 connect_bsp_APIC();
@@ -1897,18 +1889,6 @@ void __cpuinit generic_processor_info(int apicid, int version)
1897 if (apicid > max_physical_apicid) 1889 if (apicid > max_physical_apicid)
1898 max_physical_apicid = apicid; 1890 max_physical_apicid = apicid;
1899 1891
1900#ifdef CONFIG_X86_32
1901 switch (boot_cpu_data.x86_vendor) {
1902 case X86_VENDOR_INTEL:
1903 if (num_processors > 8)
1904 def_to_bigsmp = 1;
1905 break;
1906 case X86_VENDOR_AMD:
1907 if (max_physical_apicid >= 8)
1908 def_to_bigsmp = 1;
1909 }
1910#endif
1911
1912#if defined(CONFIG_SMP) || defined(CONFIG_X86_64) 1892#if defined(CONFIG_SMP) || defined(CONFIG_X86_64)
1913 early_per_cpu(x86_cpu_to_apicid, cpu) = apicid; 1893 early_per_cpu(x86_cpu_to_apicid, cpu) = apicid;
1914 early_per_cpu(x86_bios_cpu_apicid, cpu) = apicid; 1894 early_per_cpu(x86_bios_cpu_apicid, cpu) = apicid;
diff --git a/arch/x86/kernel/apic/apic_flat_64.c b/arch/x86/kernel/apic/apic_flat_64.c
index eacbd2b31d27..e3c3d820c325 100644
--- a/arch/x86/kernel/apic/apic_flat_64.c
+++ b/arch/x86/kernel/apic/apic_flat_64.c
@@ -240,6 +240,11 @@ static int physflat_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
240 printk(KERN_DEBUG "system APIC only can use physical flat"); 240 printk(KERN_DEBUG "system APIC only can use physical flat");
241 return 1; 241 return 1;
242 } 242 }
243
244 if (!strncmp(oem_id, "IBM", 3) && !strncmp(oem_table_id, "EXA", 3)) {
245 printk(KERN_DEBUG "IBM Summit detected, will use apic physical");
246 return 1;
247 }
243#endif 248#endif
244 249
245 return 0; 250 return 0;
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index de00c4619a55..53243ca7816d 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -2434,6 +2434,13 @@ asmlinkage void smp_irq_move_cleanup_interrupt(void)
2434 cfg = irq_cfg(irq); 2434 cfg = irq_cfg(irq);
2435 raw_spin_lock(&desc->lock); 2435 raw_spin_lock(&desc->lock);
2436 2436
2437 /*
2438 * Check if the irq migration is in progress. If so, we
2439 * haven't received the cleanup request yet for this irq.
2440 */
2441 if (cfg->move_in_progress)
2442 goto unlock;
2443
2437 if (vector == cfg->vector && cpumask_test_cpu(me, cfg->domain)) 2444 if (vector == cfg->vector && cpumask_test_cpu(me, cfg->domain))
2438 goto unlock; 2445 goto unlock;
2439 2446
diff --git a/arch/x86/kernel/apic/probe_32.c b/arch/x86/kernel/apic/probe_32.c
index 1a6559f6768c..99d2fe016084 100644
--- a/arch/x86/kernel/apic/probe_32.c
+++ b/arch/x86/kernel/apic/probe_32.c
@@ -52,7 +52,32 @@ static int __init print_ipi_mode(void)
52} 52}
53late_initcall(print_ipi_mode); 53late_initcall(print_ipi_mode);
54 54
55void default_setup_apic_routing(void) 55void __init default_setup_apic_routing(void)
56{
57 int version = apic_version[boot_cpu_physical_apicid];
58
59 if (num_possible_cpus() > 8) {
60 switch (boot_cpu_data.x86_vendor) {
61 case X86_VENDOR_INTEL:
62 if (!APIC_XAPIC(version)) {
63 def_to_bigsmp = 0;
64 break;
65 }
66 /* If P4 and above fall through */
67 case X86_VENDOR_AMD:
68 def_to_bigsmp = 1;
69 }
70 }
71
72#ifdef CONFIG_X86_BIGSMP
73 generic_bigsmp_probe();
74#endif
75
76 if (apic->setup_apic_routing)
77 apic->setup_apic_routing();
78}
79
80static void setup_apic_flat_routing(void)
56{ 81{
57#ifdef CONFIG_X86_IO_APIC 82#ifdef CONFIG_X86_IO_APIC
58 printk(KERN_INFO 83 printk(KERN_INFO
@@ -103,7 +128,7 @@ struct apic apic_default = {
103 .init_apic_ldr = default_init_apic_ldr, 128 .init_apic_ldr = default_init_apic_ldr,
104 129
105 .ioapic_phys_id_map = default_ioapic_phys_id_map, 130 .ioapic_phys_id_map = default_ioapic_phys_id_map,
106 .setup_apic_routing = default_setup_apic_routing, 131 .setup_apic_routing = setup_apic_flat_routing,
107 .multi_timer_check = NULL, 132 .multi_timer_check = NULL,
108 .apicid_to_node = default_apicid_to_node, 133 .apicid_to_node = default_apicid_to_node,
109 .cpu_to_logical_apicid = default_cpu_to_logical_apicid, 134 .cpu_to_logical_apicid = default_cpu_to_logical_apicid,
diff --git a/arch/x86/kernel/apic/probe_64.c b/arch/x86/kernel/apic/probe_64.c
index c4cbd3080c1c..83e9be4778e2 100644
--- a/arch/x86/kernel/apic/probe_64.c
+++ b/arch/x86/kernel/apic/probe_64.c
@@ -67,17 +67,8 @@ void __init default_setup_apic_routing(void)
67 } 67 }
68#endif 68#endif
69 69
70 if (apic == &apic_flat) { 70 if (apic == &apic_flat && num_possible_cpus() > 8)
71 switch (boot_cpu_data.x86_vendor) { 71 apic = &apic_physflat;
72 case X86_VENDOR_INTEL:
73 if (num_processors > 8)
74 apic = &apic_physflat;
75 break;
76 case X86_VENDOR_AMD:
77 if (max_physical_apicid >= 8)
78 apic = &apic_physflat;
79 }
80 }
81 72
82 printk(KERN_INFO "Setting APIC routing to %s\n", apic->name); 73 printk(KERN_INFO "Setting APIC routing to %s\n", apic->name);
83 74
diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
index d56b0efb2057..21db3cbea7dc 100644
--- a/arch/x86/kernel/apic/x2apic_uv_x.c
+++ b/arch/x86/kernel/apic/x2apic_uv_x.c
@@ -36,6 +36,8 @@ DEFINE_PER_CPU(int, x2apic_extra_bits);
36 36
37static enum uv_system_type uv_system_type; 37static enum uv_system_type uv_system_type;
38static u64 gru_start_paddr, gru_end_paddr; 38static u64 gru_start_paddr, gru_end_paddr;
39int uv_min_hub_revision_id;
40EXPORT_SYMBOL_GPL(uv_min_hub_revision_id);
39 41
40static inline bool is_GRU_range(u64 start, u64 end) 42static inline bool is_GRU_range(u64 start, u64 end)
41{ 43{
@@ -55,12 +57,19 @@ static int early_get_nodeid(void)
55 mmr = early_ioremap(UV_LOCAL_MMR_BASE | UVH_NODE_ID, sizeof(*mmr)); 57 mmr = early_ioremap(UV_LOCAL_MMR_BASE | UVH_NODE_ID, sizeof(*mmr));
56 node_id.v = *mmr; 58 node_id.v = *mmr;
57 early_iounmap(mmr, sizeof(*mmr)); 59 early_iounmap(mmr, sizeof(*mmr));
60
61 /* Currently, all blades have same revision number */
62 uv_min_hub_revision_id = node_id.s.revision;
63
58 return node_id.s.node_id; 64 return node_id.s.node_id;
59} 65}
60 66
61static int __init uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id) 67static int __init uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
62{ 68{
69 int nodeid;
70
63 if (!strcmp(oem_id, "SGI")) { 71 if (!strcmp(oem_id, "SGI")) {
72 nodeid = early_get_nodeid();
64 x86_platform.is_untracked_pat_range = uv_is_untracked_pat_range; 73 x86_platform.is_untracked_pat_range = uv_is_untracked_pat_range;
65 if (!strcmp(oem_table_id, "UVL")) 74 if (!strcmp(oem_table_id, "UVL"))
66 uv_system_type = UV_LEGACY_APIC; 75 uv_system_type = UV_LEGACY_APIC;
@@ -68,7 +77,7 @@ static int __init uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
68 uv_system_type = UV_X2APIC; 77 uv_system_type = UV_X2APIC;
69 else if (!strcmp(oem_table_id, "UVH")) { 78 else if (!strcmp(oem_table_id, "UVH")) {
70 __get_cpu_var(x2apic_extra_bits) = 79 __get_cpu_var(x2apic_extra_bits) =
71 early_get_nodeid() << (UV_APIC_PNODE_SHIFT - 1); 80 nodeid << (UV_APIC_PNODE_SHIFT - 1);
72 uv_system_type = UV_NON_UNIQUE_APIC; 81 uv_system_type = UV_NON_UNIQUE_APIC;
73 return 1; 82 return 1;
74 } 83 }
@@ -374,13 +383,13 @@ static __init void get_lowmem_redirect(unsigned long *base, unsigned long *size)
374 383
375enum map_type {map_wb, map_uc}; 384enum map_type {map_wb, map_uc};
376 385
377static __init void map_high(char *id, unsigned long base, int shift, 386static __init void map_high(char *id, unsigned long base, int pshift,
378 int max_pnode, enum map_type map_type) 387 int bshift, int max_pnode, enum map_type map_type)
379{ 388{
380 unsigned long bytes, paddr; 389 unsigned long bytes, paddr;
381 390
382 paddr = base << shift; 391 paddr = base << pshift;
383 bytes = (1UL << shift) * (max_pnode + 1); 392 bytes = (1UL << bshift) * (max_pnode + 1);
384 printk(KERN_INFO "UV: Map %s_HI 0x%lx - 0x%lx\n", id, paddr, 393 printk(KERN_INFO "UV: Map %s_HI 0x%lx - 0x%lx\n", id, paddr,
385 paddr + bytes); 394 paddr + bytes);
386 if (map_type == map_uc) 395 if (map_type == map_uc)
@@ -396,7 +405,7 @@ static __init void map_gru_high(int max_pnode)
396 405
397 gru.v = uv_read_local_mmr(UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR); 406 gru.v = uv_read_local_mmr(UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR);
398 if (gru.s.enable) { 407 if (gru.s.enable) {
399 map_high("GRU", gru.s.base, shift, max_pnode, map_wb); 408 map_high("GRU", gru.s.base, shift, shift, max_pnode, map_wb);
400 gru_start_paddr = ((u64)gru.s.base << shift); 409 gru_start_paddr = ((u64)gru.s.base << shift);
401 gru_end_paddr = gru_start_paddr + (1UL << shift) * (max_pnode + 1); 410 gru_end_paddr = gru_start_paddr + (1UL << shift) * (max_pnode + 1);
402 411
@@ -410,7 +419,7 @@ static __init void map_mmr_high(int max_pnode)
410 419
411 mmr.v = uv_read_local_mmr(UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR); 420 mmr.v = uv_read_local_mmr(UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR);
412 if (mmr.s.enable) 421 if (mmr.s.enable)
413 map_high("MMR", mmr.s.base, shift, max_pnode, map_uc); 422 map_high("MMR", mmr.s.base, shift, shift, max_pnode, map_uc);
414} 423}
415 424
416static __init void map_mmioh_high(int max_pnode) 425static __init void map_mmioh_high(int max_pnode)
@@ -420,7 +429,8 @@ static __init void map_mmioh_high(int max_pnode)
420 429
421 mmioh.v = uv_read_local_mmr(UVH_RH_GAM_MMIOH_OVERLAY_CONFIG_MMR); 430 mmioh.v = uv_read_local_mmr(UVH_RH_GAM_MMIOH_OVERLAY_CONFIG_MMR);
422 if (mmioh.s.enable) 431 if (mmioh.s.enable)
423 map_high("MMIOH", mmioh.s.base, shift, max_pnode, map_uc); 432 map_high("MMIOH", mmioh.s.base, shift, mmioh.s.m_io,
433 max_pnode, map_uc);
424} 434}
425 435
426static __init void map_low_mmrs(void) 436static __init void map_low_mmrs(void)
@@ -629,8 +639,10 @@ void __init uv_system_init(void)
629 uv_rtc_init(); 639 uv_rtc_init();
630 640
631 for_each_present_cpu(cpu) { 641 for_each_present_cpu(cpu) {
642 int apicid = per_cpu(x86_cpu_to_apicid, cpu);
643
632 nid = cpu_to_node(cpu); 644 nid = cpu_to_node(cpu);
633 pnode = uv_apicid_to_pnode(per_cpu(x86_cpu_to_apicid, cpu)); 645 pnode = uv_apicid_to_pnode(apicid);
634 blade = boot_pnode_to_blade(pnode); 646 blade = boot_pnode_to_blade(pnode);
635 lcpu = uv_blade_info[blade].nr_possible_cpus; 647 lcpu = uv_blade_info[blade].nr_possible_cpus;
636 uv_blade_info[blade].nr_possible_cpus++; 648 uv_blade_info[blade].nr_possible_cpus++;
@@ -651,15 +663,13 @@ void __init uv_system_init(void)
651 uv_cpu_hub_info(cpu)->gnode_extra = gnode_extra; 663 uv_cpu_hub_info(cpu)->gnode_extra = gnode_extra;
652 uv_cpu_hub_info(cpu)->global_mmr_base = mmr_base; 664 uv_cpu_hub_info(cpu)->global_mmr_base = mmr_base;
653 uv_cpu_hub_info(cpu)->coherency_domain_number = sn_coherency_id; 665 uv_cpu_hub_info(cpu)->coherency_domain_number = sn_coherency_id;
654 uv_cpu_hub_info(cpu)->scir.offset = SCIR_LOCAL_MMR_BASE + lcpu; 666 uv_cpu_hub_info(cpu)->scir.offset = uv_scir_offset(apicid);
655 uv_node_to_blade[nid] = blade; 667 uv_node_to_blade[nid] = blade;
656 uv_cpu_to_blade[cpu] = blade; 668 uv_cpu_to_blade[cpu] = blade;
657 max_pnode = max(pnode, max_pnode); 669 max_pnode = max(pnode, max_pnode);
658 670
659 printk(KERN_DEBUG "UV: cpu %d, apicid 0x%x, pnode %d, nid %d, " 671 printk(KERN_DEBUG "UV: cpu %d, apicid 0x%x, pnode %d, nid %d, lcpu %d, blade %d\n",
660 "lcpu %d, blade %d\n", 672 cpu, apicid, pnode, nid, lcpu, blade);
661 cpu, per_cpu(x86_cpu_to_apicid, cpu), pnode, nid,
662 lcpu, blade);
663 } 673 }
664 674
665 /* Add blade/pnode info for nodes without cpus */ 675 /* Add blade/pnode info for nodes without cpus */
diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile
index 1d2cb383410e..c202b62f3671 100644
--- a/arch/x86/kernel/cpu/Makefile
+++ b/arch/x86/kernel/cpu/Makefile
@@ -19,8 +19,6 @@ obj-y += vmware.o hypervisor.o sched.o
19obj-$(CONFIG_X86_32) += bugs.o cmpxchg.o 19obj-$(CONFIG_X86_32) += bugs.o cmpxchg.o
20obj-$(CONFIG_X86_64) += bugs_64.o 20obj-$(CONFIG_X86_64) += bugs_64.o
21 21
22obj-$(CONFIG_X86_CPU_DEBUG) += cpu_debug.o
23
24obj-$(CONFIG_CPU_SUP_INTEL) += intel.o 22obj-$(CONFIG_CPU_SUP_INTEL) += intel.o
25obj-$(CONFIG_CPU_SUP_AMD) += amd.o 23obj-$(CONFIG_CPU_SUP_AMD) += amd.o
26obj-$(CONFIG_CPU_SUP_CYRIX_32) += cyrix.o 24obj-$(CONFIG_CPU_SUP_CYRIX_32) += cyrix.o
diff --git a/arch/x86/kernel/cpu/cpu_debug.c b/arch/x86/kernel/cpu/cpu_debug.c
deleted file mode 100644
index b368cd862997..000000000000
--- a/arch/x86/kernel/cpu/cpu_debug.c
+++ /dev/null
@@ -1,688 +0,0 @@
1/*
2 * CPU x86 architecture debug code
3 *
4 * Copyright(C) 2009 Jaswinder Singh Rajput
5 *
6 * For licencing details see kernel-base/COPYING
7 */
8
9#include <linux/interrupt.h>
10#include <linux/compiler.h>
11#include <linux/seq_file.h>
12#include <linux/debugfs.h>
13#include <linux/kprobes.h>
14#include <linux/uaccess.h>
15#include <linux/kernel.h>
16#include <linux/module.h>
17#include <linux/percpu.h>
18#include <linux/signal.h>
19#include <linux/errno.h>
20#include <linux/sched.h>
21#include <linux/types.h>
22#include <linux/init.h>
23#include <linux/slab.h>
24#include <linux/smp.h>
25
26#include <asm/cpu_debug.h>
27#include <asm/paravirt.h>
28#include <asm/system.h>
29#include <asm/traps.h>
30#include <asm/apic.h>
31#include <asm/desc.h>
32
33static DEFINE_PER_CPU(struct cpu_cpuX_base [CPU_REG_ALL_BIT], cpud_arr);
34static DEFINE_PER_CPU(struct cpu_private * [MAX_CPU_FILES], cpud_priv_arr);
35static DEFINE_PER_CPU(int, cpud_priv_count);
36
37static DEFINE_MUTEX(cpu_debug_lock);
38
39static struct dentry *cpu_debugfs_dir;
40
41static struct cpu_debug_base cpu_base[] = {
42 { "mc", CPU_MC, 0 },
43 { "monitor", CPU_MONITOR, 0 },
44 { "time", CPU_TIME, 0 },
45 { "pmc", CPU_PMC, 1 },
46 { "platform", CPU_PLATFORM, 0 },
47 { "apic", CPU_APIC, 0 },
48 { "poweron", CPU_POWERON, 0 },
49 { "control", CPU_CONTROL, 0 },
50 { "features", CPU_FEATURES, 0 },
51 { "lastbranch", CPU_LBRANCH, 0 },
52 { "bios", CPU_BIOS, 0 },
53 { "freq", CPU_FREQ, 0 },
54 { "mtrr", CPU_MTRR, 0 },
55 { "perf", CPU_PERF, 0 },
56 { "cache", CPU_CACHE, 0 },
57 { "sysenter", CPU_SYSENTER, 0 },
58 { "therm", CPU_THERM, 0 },
59 { "misc", CPU_MISC, 0 },
60 { "debug", CPU_DEBUG, 0 },
61 { "pat", CPU_PAT, 0 },
62 { "vmx", CPU_VMX, 0 },
63 { "call", CPU_CALL, 0 },
64 { "base", CPU_BASE, 0 },
65 { "ver", CPU_VER, 0 },
66 { "conf", CPU_CONF, 0 },
67 { "smm", CPU_SMM, 0 },
68 { "svm", CPU_SVM, 0 },
69 { "osvm", CPU_OSVM, 0 },
70 { "tss", CPU_TSS, 0 },
71 { "cr", CPU_CR, 0 },
72 { "dt", CPU_DT, 0 },
73 { "registers", CPU_REG_ALL, 0 },
74};
75
76static struct cpu_file_base cpu_file[] = {
77 { "index", CPU_REG_ALL, 0 },
78 { "value", CPU_REG_ALL, 1 },
79};
80
81/* CPU Registers Range */
82static struct cpu_debug_range cpu_reg_range[] = {
83 { 0x00000000, 0x00000001, CPU_MC, },
84 { 0x00000006, 0x00000007, CPU_MONITOR, },
85 { 0x00000010, 0x00000010, CPU_TIME, },
86 { 0x00000011, 0x00000013, CPU_PMC, },
87 { 0x00000017, 0x00000017, CPU_PLATFORM, },
88 { 0x0000001B, 0x0000001B, CPU_APIC, },
89 { 0x0000002A, 0x0000002B, CPU_POWERON, },
90 { 0x0000002C, 0x0000002C, CPU_FREQ, },
91 { 0x0000003A, 0x0000003A, CPU_CONTROL, },
92 { 0x00000040, 0x00000047, CPU_LBRANCH, },
93 { 0x00000060, 0x00000067, CPU_LBRANCH, },
94 { 0x00000079, 0x00000079, CPU_BIOS, },
95 { 0x00000088, 0x0000008A, CPU_CACHE, },
96 { 0x0000008B, 0x0000008B, CPU_BIOS, },
97 { 0x0000009B, 0x0000009B, CPU_MONITOR, },
98 { 0x000000C1, 0x000000C4, CPU_PMC, },
99 { 0x000000CD, 0x000000CD, CPU_FREQ, },
100 { 0x000000E7, 0x000000E8, CPU_PERF, },
101 { 0x000000FE, 0x000000FE, CPU_MTRR, },
102
103 { 0x00000116, 0x0000011E, CPU_CACHE, },
104 { 0x00000174, 0x00000176, CPU_SYSENTER, },
105 { 0x00000179, 0x0000017B, CPU_MC, },
106 { 0x00000186, 0x00000189, CPU_PMC, },
107 { 0x00000198, 0x00000199, CPU_PERF, },
108 { 0x0000019A, 0x0000019A, CPU_TIME, },
109 { 0x0000019B, 0x0000019D, CPU_THERM, },
110 { 0x000001A0, 0x000001A0, CPU_MISC, },
111 { 0x000001C9, 0x000001C9, CPU_LBRANCH, },
112 { 0x000001D7, 0x000001D8, CPU_LBRANCH, },
113 { 0x000001D9, 0x000001D9, CPU_DEBUG, },
114 { 0x000001DA, 0x000001E0, CPU_LBRANCH, },
115
116 { 0x00000200, 0x0000020F, CPU_MTRR, },
117 { 0x00000250, 0x00000250, CPU_MTRR, },
118 { 0x00000258, 0x00000259, CPU_MTRR, },
119 { 0x00000268, 0x0000026F, CPU_MTRR, },
120 { 0x00000277, 0x00000277, CPU_PAT, },
121 { 0x000002FF, 0x000002FF, CPU_MTRR, },
122
123 { 0x00000300, 0x00000311, CPU_PMC, },
124 { 0x00000345, 0x00000345, CPU_PMC, },
125 { 0x00000360, 0x00000371, CPU_PMC, },
126 { 0x0000038D, 0x00000390, CPU_PMC, },
127 { 0x000003A0, 0x000003BE, CPU_PMC, },
128 { 0x000003C0, 0x000003CD, CPU_PMC, },
129 { 0x000003E0, 0x000003E1, CPU_PMC, },
130 { 0x000003F0, 0x000003F2, CPU_PMC, },
131
132 { 0x00000400, 0x00000417, CPU_MC, },
133 { 0x00000480, 0x0000048B, CPU_VMX, },
134
135 { 0x00000600, 0x00000600, CPU_DEBUG, },
136 { 0x00000680, 0x0000068F, CPU_LBRANCH, },
137 { 0x000006C0, 0x000006CF, CPU_LBRANCH, },
138
139 { 0x000107CC, 0x000107D3, CPU_PMC, },
140
141 { 0xC0000080, 0xC0000080, CPU_FEATURES, },
142 { 0xC0000081, 0xC0000084, CPU_CALL, },
143 { 0xC0000100, 0xC0000102, CPU_BASE, },
144 { 0xC0000103, 0xC0000103, CPU_TIME, },
145
146 { 0xC0010000, 0xC0010007, CPU_PMC, },
147 { 0xC0010010, 0xC0010010, CPU_CONF, },
148 { 0xC0010015, 0xC0010015, CPU_CONF, },
149 { 0xC0010016, 0xC001001A, CPU_MTRR, },
150 { 0xC001001D, 0xC001001D, CPU_MTRR, },
151 { 0xC001001F, 0xC001001F, CPU_CONF, },
152 { 0xC0010030, 0xC0010035, CPU_BIOS, },
153 { 0xC0010044, 0xC0010048, CPU_MC, },
154 { 0xC0010050, 0xC0010056, CPU_SMM, },
155 { 0xC0010058, 0xC0010058, CPU_CONF, },
156 { 0xC0010060, 0xC0010060, CPU_CACHE, },
157 { 0xC0010061, 0xC0010068, CPU_SMM, },
158 { 0xC0010069, 0xC001006B, CPU_SMM, },
159 { 0xC0010070, 0xC0010071, CPU_SMM, },
160 { 0xC0010111, 0xC0010113, CPU_SMM, },
161 { 0xC0010114, 0xC0010118, CPU_SVM, },
162 { 0xC0010140, 0xC0010141, CPU_OSVM, },
163 { 0xC0011022, 0xC0011023, CPU_CONF, },
164};
165
166static int is_typeflag_valid(unsigned cpu, unsigned flag)
167{
168 int i;
169
170 /* Standard Registers should be always valid */
171 if (flag >= CPU_TSS)
172 return 1;
173
174 for (i = 0; i < ARRAY_SIZE(cpu_reg_range); i++) {
175 if (cpu_reg_range[i].flag == flag)
176 return 1;
177 }
178
179 /* Invalid */
180 return 0;
181}
182
183static unsigned get_cpu_range(unsigned cpu, unsigned *min, unsigned *max,
184 int index, unsigned flag)
185{
186 if (cpu_reg_range[index].flag == flag) {
187 *min = cpu_reg_range[index].min;
188 *max = cpu_reg_range[index].max;
189 } else
190 *max = 0;
191
192 return *max;
193}
194
195/* This function can also be called with seq = NULL for printk */
196static void print_cpu_data(struct seq_file *seq, unsigned type,
197 u32 low, u32 high)
198{
199 struct cpu_private *priv;
200 u64 val = high;
201
202 if (seq) {
203 priv = seq->private;
204 if (priv->file) {
205 val = (val << 32) | low;
206 seq_printf(seq, "0x%llx\n", val);
207 } else
208 seq_printf(seq, " %08x: %08x_%08x\n",
209 type, high, low);
210 } else
211 printk(KERN_INFO " %08x: %08x_%08x\n", type, high, low);
212}
213
214/* This function can also be called with seq = NULL for printk */
215static void print_msr(struct seq_file *seq, unsigned cpu, unsigned flag)
216{
217 unsigned msr, msr_min, msr_max;
218 struct cpu_private *priv;
219 u32 low, high;
220 int i;
221
222 if (seq) {
223 priv = seq->private;
224 if (priv->file) {
225 if (!rdmsr_safe_on_cpu(priv->cpu, priv->reg,
226 &low, &high))
227 print_cpu_data(seq, priv->reg, low, high);
228 return;
229 }
230 }
231
232 for (i = 0; i < ARRAY_SIZE(cpu_reg_range); i++) {
233 if (!get_cpu_range(cpu, &msr_min, &msr_max, i, flag))
234 continue;
235
236 for (msr = msr_min; msr <= msr_max; msr++) {
237 if (rdmsr_safe_on_cpu(cpu, msr, &low, &high))
238 continue;
239 print_cpu_data(seq, msr, low, high);
240 }
241 }
242}
243
244static void print_tss(void *arg)
245{
246 struct pt_regs *regs = task_pt_regs(current);
247 struct seq_file *seq = arg;
248 unsigned int seg;
249
250 seq_printf(seq, " RAX\t: %016lx\n", regs->ax);
251 seq_printf(seq, " RBX\t: %016lx\n", regs->bx);
252 seq_printf(seq, " RCX\t: %016lx\n", regs->cx);
253 seq_printf(seq, " RDX\t: %016lx\n", regs->dx);
254
255 seq_printf(seq, " RSI\t: %016lx\n", regs->si);
256 seq_printf(seq, " RDI\t: %016lx\n", regs->di);
257 seq_printf(seq, " RBP\t: %016lx\n", regs->bp);
258 seq_printf(seq, " ESP\t: %016lx\n", regs->sp);
259
260#ifdef CONFIG_X86_64
261 seq_printf(seq, " R08\t: %016lx\n", regs->r8);
262 seq_printf(seq, " R09\t: %016lx\n", regs->r9);
263 seq_printf(seq, " R10\t: %016lx\n", regs->r10);
264 seq_printf(seq, " R11\t: %016lx\n", regs->r11);
265 seq_printf(seq, " R12\t: %016lx\n", regs->r12);
266 seq_printf(seq, " R13\t: %016lx\n", regs->r13);
267 seq_printf(seq, " R14\t: %016lx\n", regs->r14);
268 seq_printf(seq, " R15\t: %016lx\n", regs->r15);
269#endif
270
271 asm("movl %%cs,%0" : "=r" (seg));
272 seq_printf(seq, " CS\t: %04x\n", seg);
273 asm("movl %%ds,%0" : "=r" (seg));
274 seq_printf(seq, " DS\t: %04x\n", seg);
275 seq_printf(seq, " SS\t: %04lx\n", regs->ss & 0xffff);
276 asm("movl %%es,%0" : "=r" (seg));
277 seq_printf(seq, " ES\t: %04x\n", seg);
278 asm("movl %%fs,%0" : "=r" (seg));
279 seq_printf(seq, " FS\t: %04x\n", seg);
280 asm("movl %%gs,%0" : "=r" (seg));
281 seq_printf(seq, " GS\t: %04x\n", seg);
282
283 seq_printf(seq, " EFLAGS\t: %016lx\n", regs->flags);
284
285 seq_printf(seq, " EIP\t: %016lx\n", regs->ip);
286}
287
288static void print_cr(void *arg)
289{
290 struct seq_file *seq = arg;
291
292 seq_printf(seq, " cr0\t: %016lx\n", read_cr0());
293 seq_printf(seq, " cr2\t: %016lx\n", read_cr2());
294 seq_printf(seq, " cr3\t: %016lx\n", read_cr3());
295 seq_printf(seq, " cr4\t: %016lx\n", read_cr4_safe());
296#ifdef CONFIG_X86_64
297 seq_printf(seq, " cr8\t: %016lx\n", read_cr8());
298#endif
299}
300
301static void print_desc_ptr(char *str, struct seq_file *seq, struct desc_ptr dt)
302{
303 seq_printf(seq, " %s\t: %016llx\n", str, (u64)(dt.address | dt.size));
304}
305
306static void print_dt(void *seq)
307{
308 struct desc_ptr dt;
309 unsigned long ldt;
310
311 /* IDT */
312 store_idt((struct desc_ptr *)&dt);
313 print_desc_ptr("IDT", seq, dt);
314
315 /* GDT */
316 store_gdt((struct desc_ptr *)&dt);
317 print_desc_ptr("GDT", seq, dt);
318
319 /* LDT */
320 store_ldt(ldt);
321 seq_printf(seq, " LDT\t: %016lx\n", ldt);
322
323 /* TR */
324 store_tr(ldt);
325 seq_printf(seq, " TR\t: %016lx\n", ldt);
326}
327
328static void print_dr(void *arg)
329{
330 struct seq_file *seq = arg;
331 unsigned long dr;
332 int i;
333
334 for (i = 0; i < 8; i++) {
335 /* Ignore db4, db5 */
336 if ((i == 4) || (i == 5))
337 continue;
338 get_debugreg(dr, i);
339 seq_printf(seq, " dr%d\t: %016lx\n", i, dr);
340 }
341
342 seq_printf(seq, "\n MSR\t:\n");
343}
344
345static void print_apic(void *arg)
346{
347 struct seq_file *seq = arg;
348
349#ifdef CONFIG_X86_LOCAL_APIC
350 seq_printf(seq, " LAPIC\t:\n");
351 seq_printf(seq, " ID\t\t: %08x\n", apic_read(APIC_ID) >> 24);
352 seq_printf(seq, " LVR\t\t: %08x\n", apic_read(APIC_LVR));
353 seq_printf(seq, " TASKPRI\t: %08x\n", apic_read(APIC_TASKPRI));
354 seq_printf(seq, " ARBPRI\t\t: %08x\n", apic_read(APIC_ARBPRI));
355 seq_printf(seq, " PROCPRI\t: %08x\n", apic_read(APIC_PROCPRI));
356 seq_printf(seq, " LDR\t\t: %08x\n", apic_read(APIC_LDR));
357 seq_printf(seq, " DFR\t\t: %08x\n", apic_read(APIC_DFR));
358 seq_printf(seq, " SPIV\t\t: %08x\n", apic_read(APIC_SPIV));
359 seq_printf(seq, " ISR\t\t: %08x\n", apic_read(APIC_ISR));
360 seq_printf(seq, " ESR\t\t: %08x\n", apic_read(APIC_ESR));
361 seq_printf(seq, " ICR\t\t: %08x\n", apic_read(APIC_ICR));
362 seq_printf(seq, " ICR2\t\t: %08x\n", apic_read(APIC_ICR2));
363 seq_printf(seq, " LVTT\t\t: %08x\n", apic_read(APIC_LVTT));
364 seq_printf(seq, " LVTTHMR\t: %08x\n", apic_read(APIC_LVTTHMR));
365 seq_printf(seq, " LVTPC\t\t: %08x\n", apic_read(APIC_LVTPC));
366 seq_printf(seq, " LVT0\t\t: %08x\n", apic_read(APIC_LVT0));
367 seq_printf(seq, " LVT1\t\t: %08x\n", apic_read(APIC_LVT1));
368 seq_printf(seq, " LVTERR\t\t: %08x\n", apic_read(APIC_LVTERR));
369 seq_printf(seq, " TMICT\t\t: %08x\n", apic_read(APIC_TMICT));
370 seq_printf(seq, " TMCCT\t\t: %08x\n", apic_read(APIC_TMCCT));
371 seq_printf(seq, " TDCR\t\t: %08x\n", apic_read(APIC_TDCR));
372 if (boot_cpu_has(X86_FEATURE_EXTAPIC)) {
373 unsigned int i, v, maxeilvt;
374
375 v = apic_read(APIC_EFEAT);
376 maxeilvt = (v >> 16) & 0xff;
377 seq_printf(seq, " EFEAT\t\t: %08x\n", v);
378 seq_printf(seq, " ECTRL\t\t: %08x\n", apic_read(APIC_ECTRL));
379
380 for (i = 0; i < maxeilvt; i++) {
381 v = apic_read(APIC_EILVTn(i));
382 seq_printf(seq, " EILVT%d\t\t: %08x\n", i, v);
383 }
384 }
385#endif /* CONFIG_X86_LOCAL_APIC */
386 seq_printf(seq, "\n MSR\t:\n");
387}
388
389static int cpu_seq_show(struct seq_file *seq, void *v)
390{
391 struct cpu_private *priv = seq->private;
392
393 if (priv == NULL)
394 return -EINVAL;
395
396 switch (cpu_base[priv->type].flag) {
397 case CPU_TSS:
398 smp_call_function_single(priv->cpu, print_tss, seq, 1);
399 break;
400 case CPU_CR:
401 smp_call_function_single(priv->cpu, print_cr, seq, 1);
402 break;
403 case CPU_DT:
404 smp_call_function_single(priv->cpu, print_dt, seq, 1);
405 break;
406 case CPU_DEBUG:
407 if (priv->file == CPU_INDEX_BIT)
408 smp_call_function_single(priv->cpu, print_dr, seq, 1);
409 print_msr(seq, priv->cpu, cpu_base[priv->type].flag);
410 break;
411 case CPU_APIC:
412 if (priv->file == CPU_INDEX_BIT)
413 smp_call_function_single(priv->cpu, print_apic, seq, 1);
414 print_msr(seq, priv->cpu, cpu_base[priv->type].flag);
415 break;
416
417 default:
418 print_msr(seq, priv->cpu, cpu_base[priv->type].flag);
419 break;
420 }
421 seq_printf(seq, "\n");
422
423 return 0;
424}
425
426static void *cpu_seq_start(struct seq_file *seq, loff_t *pos)
427{
428 if (*pos == 0) /* One time is enough ;-) */
429 return seq;
430
431 return NULL;
432}
433
434static void *cpu_seq_next(struct seq_file *seq, void *v, loff_t *pos)
435{
436 (*pos)++;
437
438 return cpu_seq_start(seq, pos);
439}
440
441static void cpu_seq_stop(struct seq_file *seq, void *v)
442{
443}
444
445static const struct seq_operations cpu_seq_ops = {
446 .start = cpu_seq_start,
447 .next = cpu_seq_next,
448 .stop = cpu_seq_stop,
449 .show = cpu_seq_show,
450};
451
452static int cpu_seq_open(struct inode *inode, struct file *file)
453{
454 struct cpu_private *priv = inode->i_private;
455 struct seq_file *seq;
456 int err;
457
458 err = seq_open(file, &cpu_seq_ops);
459 if (!err) {
460 seq = file->private_data;
461 seq->private = priv;
462 }
463
464 return err;
465}
466
467static int write_msr(struct cpu_private *priv, u64 val)
468{
469 u32 low, high;
470
471 high = (val >> 32) & 0xffffffff;
472 low = val & 0xffffffff;
473
474 if (!wrmsr_safe_on_cpu(priv->cpu, priv->reg, low, high))
475 return 0;
476
477 return -EPERM;
478}
479
480static int write_cpu_register(struct cpu_private *priv, const char *buf)
481{
482 int ret = -EPERM;
483 u64 val;
484
485 ret = strict_strtoull(buf, 0, &val);
486 if (ret < 0)
487 return ret;
488
489 /* Supporting only MSRs */
490 if (priv->type < CPU_TSS_BIT)
491 return write_msr(priv, val);
492
493 return ret;
494}
495
496static ssize_t cpu_write(struct file *file, const char __user *ubuf,
497 size_t count, loff_t *off)
498{
499 struct seq_file *seq = file->private_data;
500 struct cpu_private *priv = seq->private;
501 char buf[19];
502
503 if ((priv == NULL) || (count >= sizeof(buf)))
504 return -EINVAL;
505
506 if (copy_from_user(&buf, ubuf, count))
507 return -EFAULT;
508
509 buf[count] = 0;
510
511 if ((cpu_base[priv->type].write) && (cpu_file[priv->file].write))
512 if (!write_cpu_register(priv, buf))
513 return count;
514
515 return -EACCES;
516}
517
518static const struct file_operations cpu_fops = {
519 .owner = THIS_MODULE,
520 .open = cpu_seq_open,
521 .read = seq_read,
522 .write = cpu_write,
523 .llseek = seq_lseek,
524 .release = seq_release,
525};
526
527static int cpu_create_file(unsigned cpu, unsigned type, unsigned reg,
528 unsigned file, struct dentry *dentry)
529{
530 struct cpu_private *priv = NULL;
531
532 /* Already intialized */
533 if (file == CPU_INDEX_BIT)
534 if (per_cpu(cpud_arr[type].init, cpu))
535 return 0;
536
537 priv = kzalloc(sizeof(*priv), GFP_KERNEL);
538 if (priv == NULL)
539 return -ENOMEM;
540
541 priv->cpu = cpu;
542 priv->type = type;
543 priv->reg = reg;
544 priv->file = file;
545 mutex_lock(&cpu_debug_lock);
546 per_cpu(cpud_priv_arr[type], cpu) = priv;
547 per_cpu(cpud_priv_count, cpu)++;
548 mutex_unlock(&cpu_debug_lock);
549
550 if (file)
551 debugfs_create_file(cpu_file[file].name, S_IRUGO,
552 dentry, (void *)priv, &cpu_fops);
553 else {
554 debugfs_create_file(cpu_base[type].name, S_IRUGO,
555 per_cpu(cpud_arr[type].dentry, cpu),
556 (void *)priv, &cpu_fops);
557 mutex_lock(&cpu_debug_lock);
558 per_cpu(cpud_arr[type].init, cpu) = 1;
559 mutex_unlock(&cpu_debug_lock);
560 }
561
562 return 0;
563}
564
565static int cpu_init_regfiles(unsigned cpu, unsigned int type, unsigned reg,
566 struct dentry *dentry)
567{
568 unsigned file;
569 int err = 0;
570
571 for (file = 0; file < ARRAY_SIZE(cpu_file); file++) {
572 err = cpu_create_file(cpu, type, reg, file, dentry);
573 if (err)
574 return err;
575 }
576
577 return err;
578}
579
580static int cpu_init_msr(unsigned cpu, unsigned type, struct dentry *dentry)
581{
582 struct dentry *cpu_dentry = NULL;
583 unsigned reg, reg_min, reg_max;
584 int i, err = 0;
585 char reg_dir[12];
586 u32 low, high;
587
588 for (i = 0; i < ARRAY_SIZE(cpu_reg_range); i++) {
589 if (!get_cpu_range(cpu, &reg_min, &reg_max, i,
590 cpu_base[type].flag))
591 continue;
592
593 for (reg = reg_min; reg <= reg_max; reg++) {
594 if (rdmsr_safe_on_cpu(cpu, reg, &low, &high))
595 continue;
596
597 sprintf(reg_dir, "0x%x", reg);
598 cpu_dentry = debugfs_create_dir(reg_dir, dentry);
599 err = cpu_init_regfiles(cpu, type, reg, cpu_dentry);
600 if (err)
601 return err;
602 }
603 }
604
605 return err;
606}
607
608static int cpu_init_allreg(unsigned cpu, struct dentry *dentry)
609{
610 struct dentry *cpu_dentry = NULL;
611 unsigned type;
612 int err = 0;
613
614 for (type = 0; type < ARRAY_SIZE(cpu_base) - 1; type++) {
615 if (!is_typeflag_valid(cpu, cpu_base[type].flag))
616 continue;
617 cpu_dentry = debugfs_create_dir(cpu_base[type].name, dentry);
618 per_cpu(cpud_arr[type].dentry, cpu) = cpu_dentry;
619
620 if (type < CPU_TSS_BIT)
621 err = cpu_init_msr(cpu, type, cpu_dentry);
622 else
623 err = cpu_create_file(cpu, type, 0, CPU_INDEX_BIT,
624 cpu_dentry);
625 if (err)
626 return err;
627 }
628
629 return err;
630}
631
632static int cpu_init_cpu(void)
633{
634 struct dentry *cpu_dentry = NULL;
635 struct cpuinfo_x86 *cpui;
636 char cpu_dir[12];
637 unsigned cpu;
638 int err = 0;
639
640 for (cpu = 0; cpu < nr_cpu_ids; cpu++) {
641 cpui = &cpu_data(cpu);
642 if (!cpu_has(cpui, X86_FEATURE_MSR))
643 continue;
644
645 sprintf(cpu_dir, "cpu%d", cpu);
646 cpu_dentry = debugfs_create_dir(cpu_dir, cpu_debugfs_dir);
647 err = cpu_init_allreg(cpu, cpu_dentry);
648
649 pr_info("cpu%d(%d) debug files %d\n",
650 cpu, nr_cpu_ids, per_cpu(cpud_priv_count, cpu));
651 if (per_cpu(cpud_priv_count, cpu) > MAX_CPU_FILES) {
652 pr_err("Register files count %d exceeds limit %d\n",
653 per_cpu(cpud_priv_count, cpu), MAX_CPU_FILES);
654 per_cpu(cpud_priv_count, cpu) = MAX_CPU_FILES;
655 err = -ENFILE;
656 }
657 if (err)
658 return err;
659 }
660
661 return err;
662}
663
664static int __init cpu_debug_init(void)
665{
666 cpu_debugfs_dir = debugfs_create_dir("cpu", arch_debugfs_dir);
667
668 return cpu_init_cpu();
669}
670
671static void __exit cpu_debug_exit(void)
672{
673 int i, cpu;
674
675 if (cpu_debugfs_dir)
676 debugfs_remove_recursive(cpu_debugfs_dir);
677
678 for (cpu = 0; cpu < nr_cpu_ids; cpu++)
679 for (i = 0; i < per_cpu(cpud_priv_count, cpu); i++)
680 kfree(per_cpu(cpud_priv_arr[i], cpu));
681}
682
683module_init(cpu_debug_init);
684module_exit(cpu_debug_exit);
685
686MODULE_AUTHOR("Jaswinder Singh Rajput");
687MODULE_DESCRIPTION("CPU Debug module");
688MODULE_LICENSE("GPL");
diff --git a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
index f125e5c551c0..6e44519960c8 100644
--- a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
+++ b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
@@ -1356,6 +1356,7 @@ static int __devexit powernowk8_cpu_exit(struct cpufreq_policy *pol)
1356 1356
1357 kfree(data->powernow_table); 1357 kfree(data->powernow_table);
1358 kfree(data); 1358 kfree(data);
1359 per_cpu(powernow_data, pol->cpu) = NULL;
1359 1360
1360 return 0; 1361 return 0;
1361} 1362}
@@ -1375,7 +1376,7 @@ static unsigned int powernowk8_get(unsigned int cpu)
1375 int err; 1376 int err;
1376 1377
1377 if (!data) 1378 if (!data)
1378 return -EINVAL; 1379 return 0;
1379 1380
1380 smp_call_function_single(cpu, query_values_on_cpu, &err, true); 1381 smp_call_function_single(cpu, query_values_on_cpu, &err, true);
1381 if (err) 1382 if (err)
diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
index c223b7e895d9..8c1c07073ccc 100644
--- a/arch/x86/kernel/cpu/perf_event.c
+++ b/arch/x86/kernel/cpu/perf_event.c
@@ -1343,6 +1343,13 @@ intel_pmu_enable_fixed(struct hw_perf_event *hwc, int __idx)
1343 bits |= 0x2; 1343 bits |= 0x2;
1344 if (hwc->config & ARCH_PERFMON_EVENTSEL_OS) 1344 if (hwc->config & ARCH_PERFMON_EVENTSEL_OS)
1345 bits |= 0x1; 1345 bits |= 0x1;
1346
1347 /*
1348 * ANY bit is supported in v3 and up
1349 */
1350 if (x86_pmu.version > 2 && hwc->config & ARCH_PERFMON_EVENTSEL_ANY)
1351 bits |= 0x4;
1352
1346 bits <<= (idx * 4); 1353 bits <<= (idx * 4);
1347 mask = 0xfULL << (idx * 4); 1354 mask = 0xfULL << (idx * 4);
1348 1355
@@ -2347,7 +2354,7 @@ perf_callchain_kernel(struct pt_regs *regs, struct perf_callchain_entry *entry)
2347 callchain_store(entry, PERF_CONTEXT_KERNEL); 2354 callchain_store(entry, PERF_CONTEXT_KERNEL);
2348 callchain_store(entry, regs->ip); 2355 callchain_store(entry, regs->ip);
2349 2356
2350 dump_trace(NULL, regs, NULL, 0, &backtrace_ops, entry); 2357 dump_trace(NULL, regs, NULL, regs->bp, &backtrace_ops, entry);
2351} 2358}
2352 2359
2353/* 2360/*
diff --git a/arch/x86/kernel/cpuid.c b/arch/x86/kernel/cpuid.c
index cb27fd6136c9..83e5e628de73 100644
--- a/arch/x86/kernel/cpuid.c
+++ b/arch/x86/kernel/cpuid.c
@@ -229,7 +229,7 @@ static void __exit cpuid_exit(void)
229 for_each_online_cpu(cpu) 229 for_each_online_cpu(cpu)
230 cpuid_device_destroy(cpu); 230 cpuid_device_destroy(cpu);
231 class_destroy(cpuid_class); 231 class_destroy(cpuid_class);
232 unregister_chrdev(CPUID_MAJOR, "cpu/cpuid"); 232 __unregister_chrdev(CPUID_MAJOR, 0, NR_CPUS, "cpu/cpuid");
233 unregister_hotcpu_notifier(&cpuid_class_cpu_notifier); 233 unregister_hotcpu_notifier(&cpuid_class_cpu_notifier);
234} 234}
235 235
diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c
index c56bc2873030..6d817554780a 100644
--- a/arch/x86/kernel/dumpstack.c
+++ b/arch/x86/kernel/dumpstack.c
@@ -123,13 +123,15 @@ print_context_stack_bp(struct thread_info *tinfo,
123 while (valid_stack_ptr(tinfo, ret_addr, sizeof(*ret_addr), end)) { 123 while (valid_stack_ptr(tinfo, ret_addr, sizeof(*ret_addr), end)) {
124 unsigned long addr = *ret_addr; 124 unsigned long addr = *ret_addr;
125 125
126 if (__kernel_text_address(addr)) { 126 if (!__kernel_text_address(addr))
127 ops->address(data, addr, 1); 127 break;
128 frame = frame->next_frame; 128
129 ret_addr = &frame->return_address; 129 ops->address(data, addr, 1);
130 print_ftrace_graph_addr(addr, data, ops, tinfo, graph); 130 frame = frame->next_frame;
131 } 131 ret_addr = &frame->return_address;
132 print_ftrace_graph_addr(addr, data, ops, tinfo, graph);
132 } 133 }
134
133 return (unsigned long)frame; 135 return (unsigned long)frame;
134} 136}
135EXPORT_SYMBOL_GPL(print_context_stack_bp); 137EXPORT_SYMBOL_GPL(print_context_stack_bp);
diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c
index 05ed7ab2ca48..a1a7876cadcb 100644
--- a/arch/x86/kernel/e820.c
+++ b/arch/x86/kernel/e820.c
@@ -733,13 +733,13 @@ struct early_res {
733}; 733};
734static struct early_res early_res[MAX_EARLY_RES] __initdata = { 734static struct early_res early_res[MAX_EARLY_RES] __initdata = {
735 { 0, PAGE_SIZE, "BIOS data page", 1 }, /* BIOS data page */ 735 { 0, PAGE_SIZE, "BIOS data page", 1 }, /* BIOS data page */
736#ifdef CONFIG_X86_32 736#if defined(CONFIG_X86_32) && defined(CONFIG_X86_TRAMPOLINE)
737 /* 737 /*
738 * But first pinch a few for the stack/trampoline stuff 738 * But first pinch a few for the stack/trampoline stuff
739 * FIXME: Don't need the extra page at 4K, but need to fix 739 * FIXME: Don't need the extra page at 4K, but need to fix
740 * trampoline before removing it. (see the GDT stuff) 740 * trampoline before removing it. (see the GDT stuff)
741 */ 741 */
742 { PAGE_SIZE, PAGE_SIZE, "EX TRAMPOLINE", 1 }, 742 { PAGE_SIZE, PAGE_SIZE + PAGE_SIZE, "EX TRAMPOLINE", 1 },
743#endif 743#endif
744 744
745 {} 745 {}
diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
index ba6e65884603..ad80a1c718c6 100644
--- a/arch/x86/kernel/hpet.c
+++ b/arch/x86/kernel/hpet.c
@@ -34,6 +34,8 @@
34 */ 34 */
35unsigned long hpet_address; 35unsigned long hpet_address;
36u8 hpet_blockid; /* OS timer block num */ 36u8 hpet_blockid; /* OS timer block num */
37u8 hpet_msi_disable;
38
37#ifdef CONFIG_PCI_MSI 39#ifdef CONFIG_PCI_MSI
38static unsigned long hpet_num_timers; 40static unsigned long hpet_num_timers;
39#endif 41#endif
@@ -596,6 +598,9 @@ static void hpet_msi_capability_lookup(unsigned int start_timer)
596 unsigned int num_timers_used = 0; 598 unsigned int num_timers_used = 0;
597 int i; 599 int i;
598 600
601 if (hpet_msi_disable)
602 return;
603
599 if (boot_cpu_has(X86_FEATURE_ARAT)) 604 if (boot_cpu_has(X86_FEATURE_ARAT))
600 return; 605 return;
601 id = hpet_readl(HPET_ID); 606 id = hpet_readl(HPET_ID);
@@ -928,6 +933,9 @@ static __init int hpet_late_init(void)
928 hpet_reserve_platform_timers(hpet_readl(HPET_ID)); 933 hpet_reserve_platform_timers(hpet_readl(HPET_ID));
929 hpet_print_config(); 934 hpet_print_config();
930 935
936 if (hpet_msi_disable)
937 return 0;
938
931 if (boot_cpu_has(X86_FEATURE_ARAT)) 939 if (boot_cpu_has(X86_FEATURE_ARAT))
932 return 0; 940 return 0;
933 941
diff --git a/arch/x86/kernel/hw_breakpoint.c b/arch/x86/kernel/hw_breakpoint.c
index 05d5fec64a94..bb6006e3e295 100644
--- a/arch/x86/kernel/hw_breakpoint.c
+++ b/arch/x86/kernel/hw_breakpoint.c
@@ -212,25 +212,6 @@ static int arch_check_va_in_kernelspace(unsigned long va, u8 hbp_len)
212 return (va >= TASK_SIZE) && ((va + len - 1) >= TASK_SIZE); 212 return (va >= TASK_SIZE) && ((va + len - 1) >= TASK_SIZE);
213} 213}
214 214
215/*
216 * Store a breakpoint's encoded address, length, and type.
217 */
218static int arch_store_info(struct perf_event *bp)
219{
220 struct arch_hw_breakpoint *info = counter_arch_bp(bp);
221 /*
222 * For kernel-addresses, either the address or symbol name can be
223 * specified.
224 */
225 if (info->name)
226 info->address = (unsigned long)
227 kallsyms_lookup_name(info->name);
228 if (info->address)
229 return 0;
230
231 return -EINVAL;
232}
233
234int arch_bp_generic_fields(int x86_len, int x86_type, 215int arch_bp_generic_fields(int x86_len, int x86_type,
235 int *gen_len, int *gen_type) 216 int *gen_len, int *gen_type)
236{ 217{
@@ -362,10 +343,13 @@ int arch_validate_hwbkpt_settings(struct perf_event *bp,
362 return ret; 343 return ret;
363 } 344 }
364 345
365 ret = arch_store_info(bp); 346 /*
366 347 * For kernel-addresses, either the address or symbol name can be
367 if (ret < 0) 348 * specified.
368 return ret; 349 */
350 if (info->name)
351 info->address = (unsigned long)
352 kallsyms_lookup_name(info->name);
369 /* 353 /*
370 * Check that the low-order bits of the address are appropriate 354 * Check that the low-order bits of the address are appropriate
371 * for the alignment implied by len. 355 * for the alignment implied by len.
diff --git a/arch/x86/kernel/kgdb.c b/arch/x86/kernel/kgdb.c
index dd74fe7273b1..bfba6019d762 100644
--- a/arch/x86/kernel/kgdb.c
+++ b/arch/x86/kernel/kgdb.c
@@ -42,6 +42,7 @@
42#include <linux/init.h> 42#include <linux/init.h>
43#include <linux/smp.h> 43#include <linux/smp.h>
44#include <linux/nmi.h> 44#include <linux/nmi.h>
45#include <linux/hw_breakpoint.h>
45 46
46#include <asm/debugreg.h> 47#include <asm/debugreg.h>
47#include <asm/apicdef.h> 48#include <asm/apicdef.h>
@@ -204,40 +205,81 @@ void gdb_regs_to_pt_regs(unsigned long *gdb_regs, struct pt_regs *regs)
204 205
205static struct hw_breakpoint { 206static struct hw_breakpoint {
206 unsigned enabled; 207 unsigned enabled;
207 unsigned type;
208 unsigned len;
209 unsigned long addr; 208 unsigned long addr;
209 int len;
210 int type;
211 struct perf_event **pev;
210} breakinfo[4]; 212} breakinfo[4];
211 213
212static void kgdb_correct_hw_break(void) 214static void kgdb_correct_hw_break(void)
213{ 215{
214 unsigned long dr7;
215 int correctit = 0;
216 int breakbit;
217 int breakno; 216 int breakno;
218 217
219 get_debugreg(dr7, 7);
220 for (breakno = 0; breakno < 4; breakno++) { 218 for (breakno = 0; breakno < 4; breakno++) {
221 breakbit = 2 << (breakno << 1); 219 struct perf_event *bp;
222 if (!(dr7 & breakbit) && breakinfo[breakno].enabled) { 220 struct arch_hw_breakpoint *info;
223 correctit = 1; 221 int val;
224 dr7 |= breakbit; 222 int cpu = raw_smp_processor_id();
225 dr7 &= ~(0xf0000 << (breakno << 2)); 223 if (!breakinfo[breakno].enabled)
226 dr7 |= ((breakinfo[breakno].len << 2) | 224 continue;
227 breakinfo[breakno].type) << 225 bp = *per_cpu_ptr(breakinfo[breakno].pev, cpu);
228 ((breakno << 2) + 16); 226 info = counter_arch_bp(bp);
229 set_debugreg(breakinfo[breakno].addr, breakno); 227 if (bp->attr.disabled != 1)
230 228 continue;
231 } else { 229 bp->attr.bp_addr = breakinfo[breakno].addr;
232 if ((dr7 & breakbit) && !breakinfo[breakno].enabled) { 230 bp->attr.bp_len = breakinfo[breakno].len;
233 correctit = 1; 231 bp->attr.bp_type = breakinfo[breakno].type;
234 dr7 &= ~breakbit; 232 info->address = breakinfo[breakno].addr;
235 dr7 &= ~(0xf0000 << (breakno << 2)); 233 info->len = breakinfo[breakno].len;
236 } 234 info->type = breakinfo[breakno].type;
237 } 235 val = arch_install_hw_breakpoint(bp);
236 if (!val)
237 bp->attr.disabled = 0;
238 }
239 hw_breakpoint_restore();
240}
241
242static int hw_break_reserve_slot(int breakno)
243{
244 int cpu;
245 int cnt = 0;
246 struct perf_event **pevent;
247
248 for_each_online_cpu(cpu) {
249 cnt++;
250 pevent = per_cpu_ptr(breakinfo[breakno].pev, cpu);
251 if (dbg_reserve_bp_slot(*pevent))
252 goto fail;
253 }
254
255 return 0;
256
257fail:
258 for_each_online_cpu(cpu) {
259 cnt--;
260 if (!cnt)
261 break;
262 pevent = per_cpu_ptr(breakinfo[breakno].pev, cpu);
263 dbg_release_bp_slot(*pevent);
238 } 264 }
239 if (correctit) 265 return -1;
240 set_debugreg(dr7, 7); 266}
267
268static int hw_break_release_slot(int breakno)
269{
270 struct perf_event **pevent;
271 int cpu;
272
273 for_each_online_cpu(cpu) {
274 pevent = per_cpu_ptr(breakinfo[breakno].pev, cpu);
275 if (dbg_release_bp_slot(*pevent))
276 /*
277 * The debugger is responisble for handing the retry on
278 * remove failure.
279 */
280 return -1;
281 }
282 return 0;
241} 283}
242 284
243static int 285static int
@@ -251,6 +293,10 @@ kgdb_remove_hw_break(unsigned long addr, int len, enum kgdb_bptype bptype)
251 if (i == 4) 293 if (i == 4)
252 return -1; 294 return -1;
253 295
296 if (hw_break_release_slot(i)) {
297 printk(KERN_ERR "Cannot remove hw breakpoint at %lx\n", addr);
298 return -1;
299 }
254 breakinfo[i].enabled = 0; 300 breakinfo[i].enabled = 0;
255 301
256 return 0; 302 return 0;
@@ -259,15 +305,23 @@ kgdb_remove_hw_break(unsigned long addr, int len, enum kgdb_bptype bptype)
259static void kgdb_remove_all_hw_break(void) 305static void kgdb_remove_all_hw_break(void)
260{ 306{
261 int i; 307 int i;
308 int cpu = raw_smp_processor_id();
309 struct perf_event *bp;
262 310
263 for (i = 0; i < 4; i++) 311 for (i = 0; i < 4; i++) {
264 memset(&breakinfo[i], 0, sizeof(struct hw_breakpoint)); 312 if (!breakinfo[i].enabled)
313 continue;
314 bp = *per_cpu_ptr(breakinfo[i].pev, cpu);
315 if (bp->attr.disabled == 1)
316 continue;
317 arch_uninstall_hw_breakpoint(bp);
318 bp->attr.disabled = 1;
319 }
265} 320}
266 321
267static int 322static int
268kgdb_set_hw_break(unsigned long addr, int len, enum kgdb_bptype bptype) 323kgdb_set_hw_break(unsigned long addr, int len, enum kgdb_bptype bptype)
269{ 324{
270 unsigned type;
271 int i; 325 int i;
272 326
273 for (i = 0; i < 4; i++) 327 for (i = 0; i < 4; i++)
@@ -278,27 +332,42 @@ kgdb_set_hw_break(unsigned long addr, int len, enum kgdb_bptype bptype)
278 332
279 switch (bptype) { 333 switch (bptype) {
280 case BP_HARDWARE_BREAKPOINT: 334 case BP_HARDWARE_BREAKPOINT:
281 type = 0; 335 len = 1;
282 len = 1; 336 breakinfo[i].type = X86_BREAKPOINT_EXECUTE;
283 break; 337 break;
284 case BP_WRITE_WATCHPOINT: 338 case BP_WRITE_WATCHPOINT:
285 type = 1; 339 breakinfo[i].type = X86_BREAKPOINT_WRITE;
286 break; 340 break;
287 case BP_ACCESS_WATCHPOINT: 341 case BP_ACCESS_WATCHPOINT:
288 type = 3; 342 breakinfo[i].type = X86_BREAKPOINT_RW;
289 break; 343 break;
290 default: 344 default:
291 return -1; 345 return -1;
292 } 346 }
293 347 switch (len) {
294 if (len == 1 || len == 2 || len == 4) 348 case 1:
295 breakinfo[i].len = len - 1; 349 breakinfo[i].len = X86_BREAKPOINT_LEN_1;
296 else 350 break;
351 case 2:
352 breakinfo[i].len = X86_BREAKPOINT_LEN_2;
353 break;
354 case 4:
355 breakinfo[i].len = X86_BREAKPOINT_LEN_4;
356 break;
357#ifdef CONFIG_X86_64
358 case 8:
359 breakinfo[i].len = X86_BREAKPOINT_LEN_8;
360 break;
361#endif
362 default:
297 return -1; 363 return -1;
298 364 }
299 breakinfo[i].enabled = 1;
300 breakinfo[i].addr = addr; 365 breakinfo[i].addr = addr;
301 breakinfo[i].type = type; 366 if (hw_break_reserve_slot(i)) {
367 breakinfo[i].addr = 0;
368 return -1;
369 }
370 breakinfo[i].enabled = 1;
302 371
303 return 0; 372 return 0;
304} 373}
@@ -313,8 +382,21 @@ kgdb_set_hw_break(unsigned long addr, int len, enum kgdb_bptype bptype)
313 */ 382 */
314void kgdb_disable_hw_debug(struct pt_regs *regs) 383void kgdb_disable_hw_debug(struct pt_regs *regs)
315{ 384{
385 int i;
386 int cpu = raw_smp_processor_id();
387 struct perf_event *bp;
388
316 /* Disable hardware debugging while we are in kgdb: */ 389 /* Disable hardware debugging while we are in kgdb: */
317 set_debugreg(0UL, 7); 390 set_debugreg(0UL, 7);
391 for (i = 0; i < 4; i++) {
392 if (!breakinfo[i].enabled)
393 continue;
394 bp = *per_cpu_ptr(breakinfo[i].pev, cpu);
395 if (bp->attr.disabled == 1)
396 continue;
397 arch_uninstall_hw_breakpoint(bp);
398 bp->attr.disabled = 1;
399 }
318} 400}
319 401
320/** 402/**
@@ -378,7 +460,6 @@ int kgdb_arch_handle_exception(int e_vector, int signo, int err_code,
378 struct pt_regs *linux_regs) 460 struct pt_regs *linux_regs)
379{ 461{
380 unsigned long addr; 462 unsigned long addr;
381 unsigned long dr6;
382 char *ptr; 463 char *ptr;
383 int newPC; 464 int newPC;
384 465
@@ -404,20 +485,6 @@ int kgdb_arch_handle_exception(int e_vector, int signo, int err_code,
404 raw_smp_processor_id()); 485 raw_smp_processor_id());
405 } 486 }
406 487
407 get_debugreg(dr6, 6);
408 if (!(dr6 & 0x4000)) {
409 int breakno;
410
411 for (breakno = 0; breakno < 4; breakno++) {
412 if (dr6 & (1 << breakno) &&
413 breakinfo[breakno].type == 0) {
414 /* Set restore flag: */
415 linux_regs->flags |= X86_EFLAGS_RF;
416 break;
417 }
418 }
419 }
420 set_debugreg(0UL, 6);
421 kgdb_correct_hw_break(); 488 kgdb_correct_hw_break();
422 489
423 return 0; 490 return 0;
@@ -485,8 +552,7 @@ static int __kgdb_notify(struct die_args *args, unsigned long cmd)
485 break; 552 break;
486 553
487 case DIE_DEBUG: 554 case DIE_DEBUG:
488 if (atomic_read(&kgdb_cpu_doing_single_step) == 555 if (atomic_read(&kgdb_cpu_doing_single_step) != -1) {
489 raw_smp_processor_id()) {
490 if (user_mode(regs)) 556 if (user_mode(regs))
491 return single_step_cont(regs, args); 557 return single_step_cont(regs, args);
492 break; 558 break;
@@ -539,7 +605,42 @@ static struct notifier_block kgdb_notifier = {
539 */ 605 */
540int kgdb_arch_init(void) 606int kgdb_arch_init(void)
541{ 607{
542 return register_die_notifier(&kgdb_notifier); 608 int i, cpu;
609 int ret;
610 struct perf_event_attr attr;
611 struct perf_event **pevent;
612
613 ret = register_die_notifier(&kgdb_notifier);
614 if (ret != 0)
615 return ret;
616 /*
617 * Pre-allocate the hw breakpoint structions in the non-atomic
618 * portion of kgdb because this operation requires mutexs to
619 * complete.
620 */
621 attr.bp_addr = (unsigned long)kgdb_arch_init;
622 attr.type = PERF_TYPE_BREAKPOINT;
623 attr.bp_len = HW_BREAKPOINT_LEN_1;
624 attr.bp_type = HW_BREAKPOINT_W;
625 attr.disabled = 1;
626 for (i = 0; i < 4; i++) {
627 breakinfo[i].pev = register_wide_hw_breakpoint(&attr, NULL);
628 if (IS_ERR(breakinfo[i].pev)) {
629 printk(KERN_ERR "kgdb: Could not allocate hw breakpoints\n");
630 breakinfo[i].pev = NULL;
631 kgdb_arch_exit();
632 return -1;
633 }
634 for_each_online_cpu(cpu) {
635 pevent = per_cpu_ptr(breakinfo[i].pev, cpu);
636 pevent[0]->hw.sample_period = 1;
637 if (pevent[0]->destroy != NULL) {
638 pevent[0]->destroy = NULL;
639 release_bp_slot(*pevent);
640 }
641 }
642 }
643 return ret;
543} 644}
544 645
545/** 646/**
@@ -550,6 +651,13 @@ int kgdb_arch_init(void)
550 */ 651 */
551void kgdb_arch_exit(void) 652void kgdb_arch_exit(void)
552{ 653{
654 int i;
655 for (i = 0; i < 4; i++) {
656 if (breakinfo[i].pev) {
657 unregister_wide_hw_breakpoint(breakinfo[i].pev);
658 breakinfo[i].pev = NULL;
659 }
660 }
553 unregister_die_notifier(&kgdb_notifier); 661 unregister_die_notifier(&kgdb_notifier);
554} 662}
555 663
diff --git a/arch/x86/kernel/microcode_amd.c b/arch/x86/kernel/microcode_amd.c
index 37542b67c57e..e1af7c055c7d 100644
--- a/arch/x86/kernel/microcode_amd.c
+++ b/arch/x86/kernel/microcode_amd.c
@@ -36,9 +36,6 @@ MODULE_LICENSE("GPL v2");
36#define UCODE_EQUIV_CPU_TABLE_TYPE 0x00000000 36#define UCODE_EQUIV_CPU_TABLE_TYPE 0x00000000
37#define UCODE_UCODE_TYPE 0x00000001 37#define UCODE_UCODE_TYPE 0x00000001
38 38
39const struct firmware *firmware;
40static int supported_cpu;
41
42struct equiv_cpu_entry { 39struct equiv_cpu_entry {
43 u32 installed_cpu; 40 u32 installed_cpu;
44 u32 fixed_errata_mask; 41 u32 fixed_errata_mask;
@@ -77,12 +74,15 @@ static struct equiv_cpu_entry *equiv_cpu_table;
77 74
78static int collect_cpu_info_amd(int cpu, struct cpu_signature *csig) 75static int collect_cpu_info_amd(int cpu, struct cpu_signature *csig)
79{ 76{
77 struct cpuinfo_x86 *c = &cpu_data(cpu);
80 u32 dummy; 78 u32 dummy;
81 79
82 if (!supported_cpu)
83 return -1;
84
85 memset(csig, 0, sizeof(*csig)); 80 memset(csig, 0, sizeof(*csig));
81 if (c->x86_vendor != X86_VENDOR_AMD || c->x86 < 0x10) {
82 pr_warning("microcode: CPU%d: AMD CPU family 0x%x not "
83 "supported\n", cpu, c->x86);
84 return -1;
85 }
86 rdmsr(MSR_AMD64_PATCH_LEVEL, csig->rev, dummy); 86 rdmsr(MSR_AMD64_PATCH_LEVEL, csig->rev, dummy);
87 pr_info("CPU%d: patch_level=0x%x\n", cpu, csig->rev); 87 pr_info("CPU%d: patch_level=0x%x\n", cpu, csig->rev);
88 return 0; 88 return 0;
@@ -294,10 +294,14 @@ generic_load_microcode(int cpu, const u8 *data, size_t size)
294 294
295static enum ucode_state request_microcode_fw(int cpu, struct device *device) 295static enum ucode_state request_microcode_fw(int cpu, struct device *device)
296{ 296{
297 const char *fw_name = "amd-ucode/microcode_amd.bin";
298 const struct firmware *firmware;
297 enum ucode_state ret; 299 enum ucode_state ret;
298 300
299 if (firmware == NULL) 301 if (request_firmware(&firmware, fw_name, device)) {
302 printk(KERN_ERR "microcode: failed to load file %s\n", fw_name);
300 return UCODE_NFOUND; 303 return UCODE_NFOUND;
304 }
301 305
302 if (*(u32 *)firmware->data != UCODE_MAGIC) { 306 if (*(u32 *)firmware->data != UCODE_MAGIC) {
303 pr_err("invalid UCODE_MAGIC (0x%08x)\n", 307 pr_err("invalid UCODE_MAGIC (0x%08x)\n",
@@ -307,6 +311,8 @@ static enum ucode_state request_microcode_fw(int cpu, struct device *device)
307 311
308 ret = generic_load_microcode(cpu, firmware->data, firmware->size); 312 ret = generic_load_microcode(cpu, firmware->data, firmware->size);
309 313
314 release_firmware(firmware);
315
310 return ret; 316 return ret;
311} 317}
312 318
@@ -325,31 +331,7 @@ static void microcode_fini_cpu_amd(int cpu)
325 uci->mc = NULL; 331 uci->mc = NULL;
326} 332}
327 333
328void init_microcode_amd(struct device *device)
329{
330 const char *fw_name = "amd-ucode/microcode_amd.bin";
331 struct cpuinfo_x86 *c = &boot_cpu_data;
332
333 WARN_ON(c->x86_vendor != X86_VENDOR_AMD);
334
335 if (c->x86 < 0x10) {
336 pr_warning("AMD CPU family 0x%x not supported\n", c->x86);
337 return;
338 }
339 supported_cpu = 1;
340
341 if (request_firmware(&firmware, fw_name, device))
342 pr_err("failed to load file %s\n", fw_name);
343}
344
345void fini_microcode_amd(void)
346{
347 release_firmware(firmware);
348}
349
350static struct microcode_ops microcode_amd_ops = { 334static struct microcode_ops microcode_amd_ops = {
351 .init = init_microcode_amd,
352 .fini = fini_microcode_amd,
353 .request_microcode_user = request_microcode_user, 335 .request_microcode_user = request_microcode_user,
354 .request_microcode_fw = request_microcode_fw, 336 .request_microcode_fw = request_microcode_fw,
355 .collect_cpu_info = collect_cpu_info_amd, 337 .collect_cpu_info = collect_cpu_info_amd,
diff --git a/arch/x86/kernel/microcode_core.c b/arch/x86/kernel/microcode_core.c
index 0c8632433090..cceb5bc3c3c2 100644
--- a/arch/x86/kernel/microcode_core.c
+++ b/arch/x86/kernel/microcode_core.c
@@ -521,9 +521,6 @@ static int __init microcode_init(void)
521 return PTR_ERR(microcode_pdev); 521 return PTR_ERR(microcode_pdev);
522 } 522 }
523 523
524 if (microcode_ops->init)
525 microcode_ops->init(&microcode_pdev->dev);
526
527 get_online_cpus(); 524 get_online_cpus();
528 mutex_lock(&microcode_mutex); 525 mutex_lock(&microcode_mutex);
529 526
@@ -566,9 +563,6 @@ static void __exit microcode_exit(void)
566 563
567 platform_device_unregister(microcode_pdev); 564 platform_device_unregister(microcode_pdev);
568 565
569 if (microcode_ops->fini)
570 microcode_ops->fini();
571
572 microcode_ops = NULL; 566 microcode_ops = NULL;
573 567
574 pr_info("Microcode Update Driver: v" MICROCODE_VERSION " removed.\n"); 568 pr_info("Microcode Update Driver: v" MICROCODE_VERSION " removed.\n");
diff --git a/arch/x86/kernel/mpparse.c b/arch/x86/kernel/mpparse.c
index 40b54ceb68b5..a2c1edd2d3ac 100644
--- a/arch/x86/kernel/mpparse.c
+++ b/arch/x86/kernel/mpparse.c
@@ -359,13 +359,6 @@ static int __init smp_read_mpc(struct mpc_table *mpc, unsigned early)
359 x86_init.mpparse.mpc_record(1); 359 x86_init.mpparse.mpc_record(1);
360 } 360 }
361 361
362#ifdef CONFIG_X86_BIGSMP
363 generic_bigsmp_probe();
364#endif
365
366 if (apic->setup_apic_routing)
367 apic->setup_apic_routing();
368
369 if (!num_processors) 362 if (!num_processors)
370 printk(KERN_ERR "MPTABLE: no processors registered!\n"); 363 printk(KERN_ERR "MPTABLE: no processors registered!\n");
371 return num_processors; 364 return num_processors;
diff --git a/arch/x86/kernel/msr.c b/arch/x86/kernel/msr.c
index 4bd93c9b2b27..206735ac8cbd 100644
--- a/arch/x86/kernel/msr.c
+++ b/arch/x86/kernel/msr.c
@@ -285,7 +285,7 @@ static void __exit msr_exit(void)
285 for_each_online_cpu(cpu) 285 for_each_online_cpu(cpu)
286 msr_device_destroy(cpu); 286 msr_device_destroy(cpu);
287 class_destroy(msr_class); 287 class_destroy(msr_class);
288 unregister_chrdev(MSR_MAJOR, "cpu/msr"); 288 __unregister_chrdev(MSR_MAJOR, 0, NR_CPUS, "cpu/msr");
289 unregister_hotcpu_notifier(&msr_class_cpu_notifier); 289 unregister_hotcpu_notifier(&msr_class_cpu_notifier);
290} 290}
291 291
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
index 98c2cdeb599e..c9b3522b6b46 100644
--- a/arch/x86/kernel/process.c
+++ b/arch/x86/kernel/process.c
@@ -103,8 +103,8 @@ void show_regs_common(void)
103 if (!product) 103 if (!product)
104 product = ""; 104 product = "";
105 105
106 printk("\n"); 106 printk(KERN_CONT "\n");
107 printk(KERN_INFO "Pid: %d, comm: %.20s %s %s %.*s %s/%s\n", 107 printk(KERN_DEFAULT "Pid: %d, comm: %.20s %s %s %.*s %s/%s\n",
108 current->pid, current->comm, print_tainted(), 108 current->pid, current->comm, print_tainted(),
109 init_utsname()->release, 109 init_utsname()->release,
110 (int)strcspn(init_utsname()->version, " "), 110 (int)strcspn(init_utsname()->version, " "),
@@ -115,18 +115,6 @@ void flush_thread(void)
115{ 115{
116 struct task_struct *tsk = current; 116 struct task_struct *tsk = current;
117 117
118#ifdef CONFIG_X86_64
119 if (test_tsk_thread_flag(tsk, TIF_ABI_PENDING)) {
120 clear_tsk_thread_flag(tsk, TIF_ABI_PENDING);
121 if (test_tsk_thread_flag(tsk, TIF_IA32)) {
122 clear_tsk_thread_flag(tsk, TIF_IA32);
123 } else {
124 set_tsk_thread_flag(tsk, TIF_IA32);
125 current_thread_info()->status |= TS_COMPAT;
126 }
127 }
128#endif
129
130 flush_ptrace_hw_breakpoint(tsk); 118 flush_ptrace_hw_breakpoint(tsk);
131 memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array)); 119 memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array));
132 /* 120 /*
@@ -288,6 +276,8 @@ int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
288 regs.es = __USER_DS; 276 regs.es = __USER_DS;
289 regs.fs = __KERNEL_PERCPU; 277 regs.fs = __KERNEL_PERCPU;
290 regs.gs = __KERNEL_STACK_CANARY; 278 regs.gs = __KERNEL_STACK_CANARY;
279#else
280 regs.ss = __KERNEL_DS;
291#endif 281#endif
292 282
293 regs.orig_ax = -1; 283 regs.orig_ax = -1;
diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
index 9c517b5858f0..37ad1e046aae 100644
--- a/arch/x86/kernel/process_32.c
+++ b/arch/x86/kernel/process_32.c
@@ -139,16 +139,16 @@ void __show_regs(struct pt_regs *regs, int all)
139 139
140 show_regs_common(); 140 show_regs_common();
141 141
142 printk("EIP: %04x:[<%08lx>] EFLAGS: %08lx CPU: %d\n", 142 printk(KERN_DEFAULT "EIP: %04x:[<%08lx>] EFLAGS: %08lx CPU: %d\n",
143 (u16)regs->cs, regs->ip, regs->flags, 143 (u16)regs->cs, regs->ip, regs->flags,
144 smp_processor_id()); 144 smp_processor_id());
145 print_symbol("EIP is at %s\n", regs->ip); 145 print_symbol("EIP is at %s\n", regs->ip);
146 146
147 printk("EAX: %08lx EBX: %08lx ECX: %08lx EDX: %08lx\n", 147 printk(KERN_DEFAULT "EAX: %08lx EBX: %08lx ECX: %08lx EDX: %08lx\n",
148 regs->ax, regs->bx, regs->cx, regs->dx); 148 regs->ax, regs->bx, regs->cx, regs->dx);
149 printk("ESI: %08lx EDI: %08lx EBP: %08lx ESP: %08lx\n", 149 printk(KERN_DEFAULT "ESI: %08lx EDI: %08lx EBP: %08lx ESP: %08lx\n",
150 regs->si, regs->di, regs->bp, sp); 150 regs->si, regs->di, regs->bp, sp);
151 printk(" DS: %04x ES: %04x FS: %04x GS: %04x SS: %04x\n", 151 printk(KERN_DEFAULT " DS: %04x ES: %04x FS: %04x GS: %04x SS: %04x\n",
152 (u16)regs->ds, (u16)regs->es, (u16)regs->fs, gs, ss); 152 (u16)regs->ds, (u16)regs->es, (u16)regs->fs, gs, ss);
153 153
154 if (!all) 154 if (!all)
@@ -158,19 +158,19 @@ void __show_regs(struct pt_regs *regs, int all)
158 cr2 = read_cr2(); 158 cr2 = read_cr2();
159 cr3 = read_cr3(); 159 cr3 = read_cr3();
160 cr4 = read_cr4_safe(); 160 cr4 = read_cr4_safe();
161 printk("CR0: %08lx CR2: %08lx CR3: %08lx CR4: %08lx\n", 161 printk(KERN_DEFAULT "CR0: %08lx CR2: %08lx CR3: %08lx CR4: %08lx\n",
162 cr0, cr2, cr3, cr4); 162 cr0, cr2, cr3, cr4);
163 163
164 get_debugreg(d0, 0); 164 get_debugreg(d0, 0);
165 get_debugreg(d1, 1); 165 get_debugreg(d1, 1);
166 get_debugreg(d2, 2); 166 get_debugreg(d2, 2);
167 get_debugreg(d3, 3); 167 get_debugreg(d3, 3);
168 printk("DR0: %08lx DR1: %08lx DR2: %08lx DR3: %08lx\n", 168 printk(KERN_DEFAULT "DR0: %08lx DR1: %08lx DR2: %08lx DR3: %08lx\n",
169 d0, d1, d2, d3); 169 d0, d1, d2, d3);
170 170
171 get_debugreg(d6, 6); 171 get_debugreg(d6, 6);
172 get_debugreg(d7, 7); 172 get_debugreg(d7, 7);
173 printk("DR6: %08lx DR7: %08lx\n", 173 printk(KERN_DEFAULT "DR6: %08lx DR7: %08lx\n",
174 d6, d7); 174 d6, d7);
175} 175}
176 176
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
index 52fbd0c60198..126f0b493d04 100644
--- a/arch/x86/kernel/process_64.c
+++ b/arch/x86/kernel/process_64.c
@@ -161,19 +161,19 @@ void __show_regs(struct pt_regs *regs, int all)
161 unsigned int ds, cs, es; 161 unsigned int ds, cs, es;
162 162
163 show_regs_common(); 163 show_regs_common();
164 printk(KERN_INFO "RIP: %04lx:[<%016lx>] ", regs->cs & 0xffff, regs->ip); 164 printk(KERN_DEFAULT "RIP: %04lx:[<%016lx>] ", regs->cs & 0xffff, regs->ip);
165 printk_address(regs->ip, 1); 165 printk_address(regs->ip, 1);
166 printk(KERN_INFO "RSP: %04lx:%016lx EFLAGS: %08lx\n", regs->ss, 166 printk(KERN_DEFAULT "RSP: %04lx:%016lx EFLAGS: %08lx\n", regs->ss,
167 regs->sp, regs->flags); 167 regs->sp, regs->flags);
168 printk(KERN_INFO "RAX: %016lx RBX: %016lx RCX: %016lx\n", 168 printk(KERN_DEFAULT "RAX: %016lx RBX: %016lx RCX: %016lx\n",
169 regs->ax, regs->bx, regs->cx); 169 regs->ax, regs->bx, regs->cx);
170 printk(KERN_INFO "RDX: %016lx RSI: %016lx RDI: %016lx\n", 170 printk(KERN_DEFAULT "RDX: %016lx RSI: %016lx RDI: %016lx\n",
171 regs->dx, regs->si, regs->di); 171 regs->dx, regs->si, regs->di);
172 printk(KERN_INFO "RBP: %016lx R08: %016lx R09: %016lx\n", 172 printk(KERN_DEFAULT "RBP: %016lx R08: %016lx R09: %016lx\n",
173 regs->bp, regs->r8, regs->r9); 173 regs->bp, regs->r8, regs->r9);
174 printk(KERN_INFO "R10: %016lx R11: %016lx R12: %016lx\n", 174 printk(KERN_DEFAULT "R10: %016lx R11: %016lx R12: %016lx\n",
175 regs->r10, regs->r11, regs->r12); 175 regs->r10, regs->r11, regs->r12);
176 printk(KERN_INFO "R13: %016lx R14: %016lx R15: %016lx\n", 176 printk(KERN_DEFAULT "R13: %016lx R14: %016lx R15: %016lx\n",
177 regs->r13, regs->r14, regs->r15); 177 regs->r13, regs->r14, regs->r15);
178 178
179 asm("movl %%ds,%0" : "=r" (ds)); 179 asm("movl %%ds,%0" : "=r" (ds));
@@ -194,21 +194,21 @@ void __show_regs(struct pt_regs *regs, int all)
194 cr3 = read_cr3(); 194 cr3 = read_cr3();
195 cr4 = read_cr4(); 195 cr4 = read_cr4();
196 196
197 printk(KERN_INFO "FS: %016lx(%04x) GS:%016lx(%04x) knlGS:%016lx\n", 197 printk(KERN_DEFAULT "FS: %016lx(%04x) GS:%016lx(%04x) knlGS:%016lx\n",
198 fs, fsindex, gs, gsindex, shadowgs); 198 fs, fsindex, gs, gsindex, shadowgs);
199 printk(KERN_INFO "CS: %04x DS: %04x ES: %04x CR0: %016lx\n", cs, ds, 199 printk(KERN_DEFAULT "CS: %04x DS: %04x ES: %04x CR0: %016lx\n", cs, ds,
200 es, cr0); 200 es, cr0);
201 printk(KERN_INFO "CR2: %016lx CR3: %016lx CR4: %016lx\n", cr2, cr3, 201 printk(KERN_DEFAULT "CR2: %016lx CR3: %016lx CR4: %016lx\n", cr2, cr3,
202 cr4); 202 cr4);
203 203
204 get_debugreg(d0, 0); 204 get_debugreg(d0, 0);
205 get_debugreg(d1, 1); 205 get_debugreg(d1, 1);
206 get_debugreg(d2, 2); 206 get_debugreg(d2, 2);
207 printk(KERN_INFO "DR0: %016lx DR1: %016lx DR2: %016lx\n", d0, d1, d2); 207 printk(KERN_DEFAULT "DR0: %016lx DR1: %016lx DR2: %016lx\n", d0, d1, d2);
208 get_debugreg(d3, 3); 208 get_debugreg(d3, 3);
209 get_debugreg(d6, 6); 209 get_debugreg(d6, 6);
210 get_debugreg(d7, 7); 210 get_debugreg(d7, 7);
211 printk(KERN_INFO "DR3: %016lx DR6: %016lx DR7: %016lx\n", d3, d6, d7); 211 printk(KERN_DEFAULT "DR3: %016lx DR6: %016lx DR7: %016lx\n", d3, d6, d7);
212} 212}
213 213
214void show_regs(struct pt_regs *regs) 214void show_regs(struct pt_regs *regs)
@@ -521,6 +521,18 @@ void set_personality_64bit(void)
521 current->personality &= ~READ_IMPLIES_EXEC; 521 current->personality &= ~READ_IMPLIES_EXEC;
522} 522}
523 523
524void set_personality_ia32(void)
525{
526 /* inherit personality from parent */
527
528 /* Make sure to be in 32bit mode */
529 set_thread_flag(TIF_IA32);
530 current->personality |= force_personality32;
531
532 /* Prepare the first "return" to user space */
533 current_thread_info()->status |= TS_COMPAT;
534}
535
524unsigned long get_wchan(struct task_struct *p) 536unsigned long get_wchan(struct task_struct *p)
525{ 537{
526 unsigned long stack; 538 unsigned long stack;
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c
index 017d937639fe..0c1033d61e59 100644
--- a/arch/x86/kernel/ptrace.c
+++ b/arch/x86/kernel/ptrace.c
@@ -702,7 +702,7 @@ static unsigned long ptrace_get_debugreg(struct task_struct *tsk, int n)
702 } else if (n == 6) { 702 } else if (n == 6) {
703 val = thread->debugreg6; 703 val = thread->debugreg6;
704 } else if (n == 7) { 704 } else if (n == 7) {
705 val = ptrace_get_dr7(thread->ptrace_bps); 705 val = thread->ptrace_dr7;
706 } 706 }
707 return val; 707 return val;
708} 708}
@@ -778,8 +778,11 @@ int ptrace_set_debugreg(struct task_struct *tsk, int n, unsigned long val)
778 return rc; 778 return rc;
779 } 779 }
780 /* All that's left is DR7 */ 780 /* All that's left is DR7 */
781 if (n == 7) 781 if (n == 7) {
782 rc = ptrace_write_dr7(tsk, val); 782 rc = ptrace_write_dr7(tsk, val);
783 if (!rc)
784 thread->ptrace_dr7 = val;
785 }
783 786
784ret_path: 787ret_path:
785 return rc; 788 return rc;
diff --git a/arch/x86/kernel/quirks.c b/arch/x86/kernel/quirks.c
index 18093d7498f0..12e9feaa2f7a 100644
--- a/arch/x86/kernel/quirks.c
+++ b/arch/x86/kernel/quirks.c
@@ -491,6 +491,19 @@ void force_hpet_resume(void)
491 break; 491 break;
492 } 492 }
493} 493}
494
495/*
496 * HPET MSI on some boards (ATI SB700/SB800) has side effect on
497 * floppy DMA. Disable HPET MSI on such platforms.
498 */
499static void force_disable_hpet_msi(struct pci_dev *unused)
500{
501 hpet_msi_disable = 1;
502}
503
504DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS,
505 force_disable_hpet_msi);
506
494#endif 507#endif
495 508
496#if defined(CONFIG_PCI) && defined(CONFIG_NUMA) 509#if defined(CONFIG_PCI) && defined(CONFIG_NUMA)
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index 1545bc0c9845..704bddcdf64d 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -203,6 +203,15 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = {
203 DMI_MATCH(DMI_BOARD_NAME, "0T656F"), 203 DMI_MATCH(DMI_BOARD_NAME, "0T656F"),
204 }, 204 },
205 }, 205 },
206 { /* Handle problems with rebooting on Dell OptiPlex 760 with 0G919G*/
207 .callback = set_bios_reboot,
208 .ident = "Dell OptiPlex 760",
209 .matches = {
210 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
211 DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 760"),
212 DMI_MATCH(DMI_BOARD_NAME, "0G919G"),
213 },
214 },
206 { /* Handle problems with rebooting on Dell 2400's */ 215 { /* Handle problems with rebooting on Dell 2400's */
207 .callback = set_bios_reboot, 216 .callback = set_bios_reboot,
208 .ident = "Dell PowerEdge 2400", 217 .ident = "Dell PowerEdge 2400",
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index f7b8b9894b22..5d9e40c58628 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -642,19 +642,27 @@ static struct dmi_system_id __initdata bad_bios_dmi_table[] = {
642 DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix/MSC"), 642 DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix/MSC"),
643 }, 643 },
644 }, 644 },
645 {
646 /* 645 /*
647 * AMI BIOS with low memory corruption was found on Intel DG45ID board. 646 * AMI BIOS with low memory corruption was found on Intel DG45ID and
648 * It hase different DMI_BIOS_VENDOR = "Intel Corp.", for now we will 647 * DG45FC boards.
648 * It has a different DMI_BIOS_VENDOR = "Intel Corp.", for now we will
649 * match only DMI_BOARD_NAME and see if there is more bad products 649 * match only DMI_BOARD_NAME and see if there is more bad products
650 * with this vendor. 650 * with this vendor.
651 */ 651 */
652 {
652 .callback = dmi_low_memory_corruption, 653 .callback = dmi_low_memory_corruption,
653 .ident = "AMI BIOS", 654 .ident = "AMI BIOS",
654 .matches = { 655 .matches = {
655 DMI_MATCH(DMI_BOARD_NAME, "DG45ID"), 656 DMI_MATCH(DMI_BOARD_NAME, "DG45ID"),
656 }, 657 },
657 }, 658 },
659 {
660 .callback = dmi_low_memory_corruption,
661 .ident = "AMI BIOS",
662 .matches = {
663 DMI_MATCH(DMI_BOARD_NAME, "DG45FC"),
664 },
665 },
658#endif 666#endif
659 {} 667 {}
660}; 668};
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index 678d0b8c26f3..b4e870cbdc60 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -1083,9 +1083,7 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus)
1083 set_cpu_sibling_map(0); 1083 set_cpu_sibling_map(0);
1084 1084
1085 enable_IR_x2apic(); 1085 enable_IR_x2apic();
1086#ifdef CONFIG_X86_64
1087 default_setup_apic_routing(); 1086 default_setup_apic_routing();
1088#endif
1089 1087
1090 if (smp_sanity_check(max_cpus) < 0) { 1088 if (smp_sanity_check(max_cpus) < 0) {
1091 printk(KERN_INFO "SMP disabled\n"); 1089 printk(KERN_INFO "SMP disabled\n");
diff --git a/arch/x86/kernel/uv_time.c b/arch/x86/kernel/uv_time.c
index 3c84aa001c11..2b75ef638dbc 100644
--- a/arch/x86/kernel/uv_time.c
+++ b/arch/x86/kernel/uv_time.c
@@ -282,10 +282,21 @@ static int uv_rtc_unset_timer(int cpu, int force)
282 282
283/* 283/*
284 * Read the RTC. 284 * Read the RTC.
285 *
286 * Starting with HUB rev 2.0, the UV RTC register is replicated across all
287 * cachelines of it's own page. This allows faster simultaneous reads
288 * from a given socket.
285 */ 289 */
286static cycle_t uv_read_rtc(struct clocksource *cs) 290static cycle_t uv_read_rtc(struct clocksource *cs)
287{ 291{
288 return (cycle_t)uv_read_local_mmr(UVH_RTC); 292 unsigned long offset;
293
294 if (uv_get_min_hub_revision_id() == 1)
295 offset = 0;
296 else
297 offset = (uv_blade_processor_id() * L1_CACHE_BYTES) % PAGE_SIZE;
298
299 return (cycle_t)uv_read_local_mmr(UVH_RTC | offset);
289} 300}
290 301
291/* 302/*
diff --git a/arch/x86/kvm/i8254.c b/arch/x86/kvm/i8254.c
index 296aba49472a..15578f180e59 100644
--- a/arch/x86/kvm/i8254.c
+++ b/arch/x86/kvm/i8254.c
@@ -467,6 +467,9 @@ static int pit_ioport_read(struct kvm_io_device *this,
467 return -EOPNOTSUPP; 467 return -EOPNOTSUPP;
468 468
469 addr &= KVM_PIT_CHANNEL_MASK; 469 addr &= KVM_PIT_CHANNEL_MASK;
470 if (addr == 3)
471 return 0;
472
470 s = &pit_state->channels[addr]; 473 s = &pit_state->channels[addr];
471 474
472 mutex_lock(&pit_state->lock); 475 mutex_lock(&pit_state->lock);
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
index cd60c0bd1b32..ba8c045da782 100644
--- a/arch/x86/kvm/lapic.c
+++ b/arch/x86/kvm/lapic.c
@@ -373,6 +373,12 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode,
373 if (unlikely(!apic_enabled(apic))) 373 if (unlikely(!apic_enabled(apic)))
374 break; 374 break;
375 375
376 if (trig_mode) {
377 apic_debug("level trig mode for vector %d", vector);
378 apic_set_vector(vector, apic->regs + APIC_TMR);
379 } else
380 apic_clear_vector(vector, apic->regs + APIC_TMR);
381
376 result = !apic_test_and_set_irr(vector, apic); 382 result = !apic_test_and_set_irr(vector, apic);
377 trace_kvm_apic_accept_irq(vcpu->vcpu_id, delivery_mode, 383 trace_kvm_apic_accept_irq(vcpu->vcpu_id, delivery_mode,
378 trig_mode, vector, !result); 384 trig_mode, vector, !result);
@@ -383,11 +389,6 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode,
383 break; 389 break;
384 } 390 }
385 391
386 if (trig_mode) {
387 apic_debug("level trig mode for vector %d", vector);
388 apic_set_vector(vector, apic->regs + APIC_TMR);
389 } else
390 apic_clear_vector(vector, apic->regs + APIC_TMR);
391 kvm_vcpu_kick(vcpu); 392 kvm_vcpu_kick(vcpu);
392 break; 393 break;
393 394
@@ -1150,6 +1151,7 @@ void kvm_apic_post_state_restore(struct kvm_vcpu *vcpu)
1150 hrtimer_cancel(&apic->lapic_timer.timer); 1151 hrtimer_cancel(&apic->lapic_timer.timer);
1151 update_divide_count(apic); 1152 update_divide_count(apic);
1152 start_apic_timer(apic); 1153 start_apic_timer(apic);
1154 apic->irr_pending = true;
1153} 1155}
1154 1156
1155void __kvm_migrate_apic_timer(struct kvm_vcpu *vcpu) 1157void __kvm_migrate_apic_timer(struct kvm_vcpu *vcpu)
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index 4c3e5b2314cb..89a49fb46a27 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -477,7 +477,7 @@ static int host_mapping_level(struct kvm *kvm, gfn_t gfn)
477 477
478 addr = gfn_to_hva(kvm, gfn); 478 addr = gfn_to_hva(kvm, gfn);
479 if (kvm_is_error_hva(addr)) 479 if (kvm_is_error_hva(addr))
480 return page_size; 480 return PT_PAGE_TABLE_LEVEL;
481 481
482 down_read(&current->mm->mmap_sem); 482 down_read(&current->mm->mmap_sem);
483 vma = find_vma(current->mm, addr); 483 vma = find_vma(current->mm, addr);
@@ -515,11 +515,9 @@ static int mapping_level(struct kvm_vcpu *vcpu, gfn_t large_gfn)
515 if (host_level == PT_PAGE_TABLE_LEVEL) 515 if (host_level == PT_PAGE_TABLE_LEVEL)
516 return host_level; 516 return host_level;
517 517
518 for (level = PT_DIRECTORY_LEVEL; level <= host_level; ++level) { 518 for (level = PT_DIRECTORY_LEVEL; level <= host_level; ++level)
519
520 if (has_wrprotected_page(vcpu->kvm, large_gfn, level)) 519 if (has_wrprotected_page(vcpu->kvm, large_gfn, level))
521 break; 520 break;
522 }
523 521
524 return level - 1; 522 return level - 1;
525} 523}
diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h
index a6017132fba8..ede2131a9225 100644
--- a/arch/x86/kvm/paging_tmpl.h
+++ b/arch/x86/kvm/paging_tmpl.h
@@ -150,7 +150,9 @@ walk:
150 walker->table_gfn[walker->level - 1] = table_gfn; 150 walker->table_gfn[walker->level - 1] = table_gfn;
151 walker->pte_gpa[walker->level - 1] = pte_gpa; 151 walker->pte_gpa[walker->level - 1] = pte_gpa;
152 152
153 kvm_read_guest(vcpu->kvm, pte_gpa, &pte, sizeof(pte)); 153 if (kvm_read_guest(vcpu->kvm, pte_gpa, &pte, sizeof(pte)))
154 goto not_present;
155
154 trace_kvm_mmu_paging_element(pte, walker->level); 156 trace_kvm_mmu_paging_element(pte, walker->level);
155 157
156 if (!is_present_gpte(pte)) 158 if (!is_present_gpte(pte))
@@ -455,8 +457,6 @@ out_unlock:
455static void FNAME(invlpg)(struct kvm_vcpu *vcpu, gva_t gva) 457static void FNAME(invlpg)(struct kvm_vcpu *vcpu, gva_t gva)
456{ 458{
457 struct kvm_shadow_walk_iterator iterator; 459 struct kvm_shadow_walk_iterator iterator;
458 pt_element_t gpte;
459 gpa_t pte_gpa = -1;
460 int level; 460 int level;
461 u64 *sptep; 461 u64 *sptep;
462 int need_flush = 0; 462 int need_flush = 0;
@@ -470,10 +470,6 @@ static void FNAME(invlpg)(struct kvm_vcpu *vcpu, gva_t gva)
470 if (level == PT_PAGE_TABLE_LEVEL || 470 if (level == PT_PAGE_TABLE_LEVEL ||
471 ((level == PT_DIRECTORY_LEVEL && is_large_pte(*sptep))) || 471 ((level == PT_DIRECTORY_LEVEL && is_large_pte(*sptep))) ||
472 ((level == PT_PDPE_LEVEL && is_large_pte(*sptep)))) { 472 ((level == PT_PDPE_LEVEL && is_large_pte(*sptep)))) {
473 struct kvm_mmu_page *sp = page_header(__pa(sptep));
474
475 pte_gpa = (sp->gfn << PAGE_SHIFT);
476 pte_gpa += (sptep - sp->spt) * sizeof(pt_element_t);
477 473
478 if (is_shadow_present_pte(*sptep)) { 474 if (is_shadow_present_pte(*sptep)) {
479 rmap_remove(vcpu->kvm, sptep); 475 rmap_remove(vcpu->kvm, sptep);
@@ -492,18 +488,6 @@ static void FNAME(invlpg)(struct kvm_vcpu *vcpu, gva_t gva)
492 if (need_flush) 488 if (need_flush)
493 kvm_flush_remote_tlbs(vcpu->kvm); 489 kvm_flush_remote_tlbs(vcpu->kvm);
494 spin_unlock(&vcpu->kvm->mmu_lock); 490 spin_unlock(&vcpu->kvm->mmu_lock);
495
496 if (pte_gpa == -1)
497 return;
498 if (kvm_read_guest_atomic(vcpu->kvm, pte_gpa, &gpte,
499 sizeof(pt_element_t)))
500 return;
501 if (is_present_gpte(gpte) && (gpte & PT_ACCESSED_MASK)) {
502 if (mmu_topup_memory_caches(vcpu))
503 return;
504 kvm_mmu_pte_write(vcpu, pte_gpa, (const u8 *)&gpte,
505 sizeof(pt_element_t), 0);
506 }
507} 491}
508 492
509static gpa_t FNAME(gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t vaddr) 493static gpa_t FNAME(gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t vaddr)
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 9d068966fb2a..a1e1bc9d412d 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -670,7 +670,7 @@ static void kvm_write_wall_clock(struct kvm *kvm, gpa_t wall_clock)
670{ 670{
671 static int version; 671 static int version;
672 struct pvclock_wall_clock wc; 672 struct pvclock_wall_clock wc;
673 struct timespec now, sys, boot; 673 struct timespec boot;
674 674
675 if (!wall_clock) 675 if (!wall_clock)
676 return; 676 return;
@@ -685,9 +685,7 @@ static void kvm_write_wall_clock(struct kvm *kvm, gpa_t wall_clock)
685 * wall clock specified here. guest system time equals host 685 * wall clock specified here. guest system time equals host
686 * system time for us, thus we must fill in host boot time here. 686 * system time for us, thus we must fill in host boot time here.
687 */ 687 */
688 now = current_kernel_time(); 688 getboottime(&boot);
689 ktime_get_ts(&sys);
690 boot = ns_to_timespec(timespec_to_ns(&now) - timespec_to_ns(&sys));
691 689
692 wc.sec = boot.tv_sec; 690 wc.sec = boot.tv_sec;
693 wc.nsec = boot.tv_nsec; 691 wc.nsec = boot.tv_nsec;
@@ -762,6 +760,7 @@ static void kvm_write_guest_time(struct kvm_vcpu *v)
762 local_irq_save(flags); 760 local_irq_save(flags);
763 kvm_get_msr(v, MSR_IA32_TSC, &vcpu->hv_clock.tsc_timestamp); 761 kvm_get_msr(v, MSR_IA32_TSC, &vcpu->hv_clock.tsc_timestamp);
764 ktime_get_ts(&ts); 762 ktime_get_ts(&ts);
763 monotonic_to_bootbased(&ts);
765 local_irq_restore(flags); 764 local_irq_restore(flags);
766 765
767 /* With all the info we got, fill in the values */ 766 /* With all the info we got, fill in the values */
@@ -1913,7 +1912,8 @@ static void kvm_vcpu_ioctl_x86_get_vcpu_events(struct kvm_vcpu *vcpu,
1913 1912
1914 events->sipi_vector = vcpu->arch.sipi_vector; 1913 events->sipi_vector = vcpu->arch.sipi_vector;
1915 1914
1916 events->flags = 0; 1915 events->flags = (KVM_VCPUEVENT_VALID_NMI_PENDING
1916 | KVM_VCPUEVENT_VALID_SIPI_VECTOR);
1917 1917
1918 vcpu_put(vcpu); 1918 vcpu_put(vcpu);
1919} 1919}
@@ -1921,7 +1921,8 @@ static void kvm_vcpu_ioctl_x86_get_vcpu_events(struct kvm_vcpu *vcpu,
1921static int kvm_vcpu_ioctl_x86_set_vcpu_events(struct kvm_vcpu *vcpu, 1921static int kvm_vcpu_ioctl_x86_set_vcpu_events(struct kvm_vcpu *vcpu,
1922 struct kvm_vcpu_events *events) 1922 struct kvm_vcpu_events *events)
1923{ 1923{
1924 if (events->flags) 1924 if (events->flags & ~(KVM_VCPUEVENT_VALID_NMI_PENDING
1925 | KVM_VCPUEVENT_VALID_SIPI_VECTOR))
1925 return -EINVAL; 1926 return -EINVAL;
1926 1927
1927 vcpu_load(vcpu); 1928 vcpu_load(vcpu);
@@ -1938,10 +1939,12 @@ static int kvm_vcpu_ioctl_x86_set_vcpu_events(struct kvm_vcpu *vcpu,
1938 kvm_pic_clear_isr_ack(vcpu->kvm); 1939 kvm_pic_clear_isr_ack(vcpu->kvm);
1939 1940
1940 vcpu->arch.nmi_injected = events->nmi.injected; 1941 vcpu->arch.nmi_injected = events->nmi.injected;
1941 vcpu->arch.nmi_pending = events->nmi.pending; 1942 if (events->flags & KVM_VCPUEVENT_VALID_NMI_PENDING)
1943 vcpu->arch.nmi_pending = events->nmi.pending;
1942 kvm_x86_ops->set_nmi_mask(vcpu, events->nmi.masked); 1944 kvm_x86_ops->set_nmi_mask(vcpu, events->nmi.masked);
1943 1945
1944 vcpu->arch.sipi_vector = events->sipi_vector; 1946 if (events->flags & KVM_VCPUEVENT_VALID_SIPI_VECTOR)
1947 vcpu->arch.sipi_vector = events->sipi_vector;
1945 1948
1946 vcpu_put(vcpu); 1949 vcpu_put(vcpu);
1947 1950
@@ -5068,12 +5071,13 @@ int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu)
5068 GFP_KERNEL); 5071 GFP_KERNEL);
5069 if (!vcpu->arch.mce_banks) { 5072 if (!vcpu->arch.mce_banks) {
5070 r = -ENOMEM; 5073 r = -ENOMEM;
5071 goto fail_mmu_destroy; 5074 goto fail_free_lapic;
5072 } 5075 }
5073 vcpu->arch.mcg_cap = KVM_MAX_MCE_BANKS; 5076 vcpu->arch.mcg_cap = KVM_MAX_MCE_BANKS;
5074 5077
5075 return 0; 5078 return 0;
5076 5079fail_free_lapic:
5080 kvm_free_lapic(vcpu);
5077fail_mmu_destroy: 5081fail_mmu_destroy:
5078 kvm_mmu_destroy(vcpu); 5082 kvm_mmu_destroy(vcpu);
5079fail_free_pio_data: 5083fail_free_pio_data:
@@ -5084,6 +5088,7 @@ fail:
5084 5088
5085void kvm_arch_vcpu_uninit(struct kvm_vcpu *vcpu) 5089void kvm_arch_vcpu_uninit(struct kvm_vcpu *vcpu)
5086{ 5090{
5091 kfree(vcpu->arch.mce_banks);
5087 kvm_free_lapic(vcpu); 5092 kvm_free_lapic(vcpu);
5088 down_read(&vcpu->kvm->slots_lock); 5093 down_read(&vcpu->kvm->slots_lock);
5089 kvm_mmu_destroy(vcpu); 5094 kvm_mmu_destroy(vcpu);
diff --git a/arch/x86/mm/gup.c b/arch/x86/mm/gup.c
index 71da1bca13cb..738e6593799d 100644
--- a/arch/x86/mm/gup.c
+++ b/arch/x86/mm/gup.c
@@ -18,7 +18,7 @@ static inline pte_t gup_get_pte(pte_t *ptep)
18#else 18#else
19 /* 19 /*
20 * With get_user_pages_fast, we walk down the pagetables without taking 20 * With get_user_pages_fast, we walk down the pagetables without taking
21 * any locks. For this we would like to load the pointers atoimcally, 21 * any locks. For this we would like to load the pointers atomically,
22 * but that is not possible (without expensive cmpxchg8b) on PAE. What 22 * but that is not possible (without expensive cmpxchg8b) on PAE. What
23 * we do have is the guarantee that a pte will only either go from not 23 * we do have is the guarantee that a pte will only either go from not
24 * present to present, or present to not present or both -- it will not 24 * present to present, or present to not present or both -- it will not
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
index c973f8e2a6cf..9a0c258a86be 100644
--- a/arch/x86/mm/init_32.c
+++ b/arch/x86/mm/init_32.c
@@ -892,8 +892,7 @@ void __init mem_init(void)
892 reservedpages << (PAGE_SHIFT-10), 892 reservedpages << (PAGE_SHIFT-10),
893 datasize >> 10, 893 datasize >> 10,
894 initsize >> 10, 894 initsize >> 10,
895 (unsigned long) (totalhigh_pages << (PAGE_SHIFT-10)) 895 totalhigh_pages << (PAGE_SHIFT-10));
896 );
897 896
898 printk(KERN_INFO "virtual kernel memory layout:\n" 897 printk(KERN_INFO "virtual kernel memory layout:\n"
899 " fixmap : 0x%08lx - 0x%08lx (%4ld kB)\n" 898 " fixmap : 0x%08lx - 0x%08lx (%4ld kB)\n"
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index 5198b9bb34ef..69ddfbd91135 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -49,6 +49,7 @@
49#include <asm/numa.h> 49#include <asm/numa.h>
50#include <asm/cacheflush.h> 50#include <asm/cacheflush.h>
51#include <asm/init.h> 51#include <asm/init.h>
52#include <linux/bootmem.h>
52 53
53static unsigned long dma_reserve __initdata; 54static unsigned long dma_reserve __initdata;
54 55
@@ -616,6 +617,21 @@ void __init paging_init(void)
616 */ 617 */
617#ifdef CONFIG_MEMORY_HOTPLUG 618#ifdef CONFIG_MEMORY_HOTPLUG
618/* 619/*
620 * After memory hotplug the variables max_pfn, max_low_pfn and high_memory need
621 * updating.
622 */
623static void update_end_of_memory_vars(u64 start, u64 size)
624{
625 unsigned long end_pfn = PFN_UP(start + size);
626
627 if (end_pfn > max_pfn) {
628 max_pfn = end_pfn;
629 max_low_pfn = end_pfn;
630 high_memory = (void *)__va(max_pfn * PAGE_SIZE - 1) + 1;
631 }
632}
633
634/*
619 * Memory is added always to NORMAL zone. This means you will never get 635 * Memory is added always to NORMAL zone. This means you will never get
620 * additional DMA/DMA32 memory. 636 * additional DMA/DMA32 memory.
621 */ 637 */
@@ -634,6 +650,9 @@ int arch_add_memory(int nid, u64 start, u64 size)
634 ret = __add_pages(nid, zone, start_pfn, nr_pages); 650 ret = __add_pages(nid, zone, start_pfn, nr_pages);
635 WARN_ON_ONCE(ret); 651 WARN_ON_ONCE(ret);
636 652
653 /* update max_pfn, max_low_pfn and high_memory */
654 update_end_of_memory_vars(start, size);
655
637 return ret; 656 return ret;
638} 657}
639EXPORT_SYMBOL_GPL(arch_add_memory); 658EXPORT_SYMBOL_GPL(arch_add_memory);
diff --git a/arch/x86/mm/kmemcheck/error.c b/arch/x86/mm/kmemcheck/error.c
index 4901d0dafda6..af3b6c8a436f 100644
--- a/arch/x86/mm/kmemcheck/error.c
+++ b/arch/x86/mm/kmemcheck/error.c
@@ -106,26 +106,25 @@ void kmemcheck_error_recall(void)
106 106
107 switch (e->type) { 107 switch (e->type) {
108 case KMEMCHECK_ERROR_INVALID_ACCESS: 108 case KMEMCHECK_ERROR_INVALID_ACCESS:
109 printk(KERN_ERR "WARNING: kmemcheck: Caught %d-bit read " 109 printk(KERN_WARNING "WARNING: kmemcheck: Caught %d-bit read from %s memory (%p)\n",
110 "from %s memory (%p)\n",
111 8 * e->size, e->state < ARRAY_SIZE(desc) ? 110 8 * e->size, e->state < ARRAY_SIZE(desc) ?
112 desc[e->state] : "(invalid shadow state)", 111 desc[e->state] : "(invalid shadow state)",
113 (void *) e->address); 112 (void *) e->address);
114 113
115 printk(KERN_INFO); 114 printk(KERN_WARNING);
116 for (i = 0; i < SHADOW_COPY_SIZE; ++i) 115 for (i = 0; i < SHADOW_COPY_SIZE; ++i)
117 printk("%02x", e->memory_copy[i]); 116 printk(KERN_CONT "%02x", e->memory_copy[i]);
118 printk("\n"); 117 printk(KERN_CONT "\n");
119 118
120 printk(KERN_INFO); 119 printk(KERN_WARNING);
121 for (i = 0; i < SHADOW_COPY_SIZE; ++i) { 120 for (i = 0; i < SHADOW_COPY_SIZE; ++i) {
122 if (e->shadow_copy[i] < ARRAY_SIZE(short_desc)) 121 if (e->shadow_copy[i] < ARRAY_SIZE(short_desc))
123 printk(" %c", short_desc[e->shadow_copy[i]]); 122 printk(KERN_CONT " %c", short_desc[e->shadow_copy[i]]);
124 else 123 else
125 printk(" ?"); 124 printk(KERN_CONT " ?");
126 } 125 }
127 printk("\n"); 126 printk(KERN_CONT "\n");
128 printk(KERN_INFO "%*c\n", 2 + 2 127 printk(KERN_WARNING "%*c\n", 2 + 2
129 * (int) (e->address & (SHADOW_COPY_SIZE - 1)), '^'); 128 * (int) (e->address & (SHADOW_COPY_SIZE - 1)), '^');
130 break; 129 break;
131 case KMEMCHECK_ERROR_BUG: 130 case KMEMCHECK_ERROR_BUG:
diff --git a/arch/x86/mm/kmmio.c b/arch/x86/mm/kmmio.c
index c0f6198565eb..536fb6823366 100644
--- a/arch/x86/mm/kmmio.c
+++ b/arch/x86/mm/kmmio.c
@@ -538,14 +538,15 @@ static int
538kmmio_die_notifier(struct notifier_block *nb, unsigned long val, void *args) 538kmmio_die_notifier(struct notifier_block *nb, unsigned long val, void *args)
539{ 539{
540 struct die_args *arg = args; 540 struct die_args *arg = args;
541 unsigned long* dr6_p = (unsigned long *)ERR_PTR(arg->err);
541 542
542 if (val == DIE_DEBUG && (arg->err & DR_STEP)) 543 if (val == DIE_DEBUG && (*dr6_p & DR_STEP))
543 if (post_kmmio_handler(arg->err, arg->regs) == 1) { 544 if (post_kmmio_handler(*dr6_p, arg->regs) == 1) {
544 /* 545 /*
545 * Reset the BS bit in dr6 (pointed by args->err) to 546 * Reset the BS bit in dr6 (pointed by args->err) to
546 * denote completion of processing 547 * denote completion of processing
547 */ 548 */
548 (*(unsigned long *)ERR_PTR(arg->err)) &= ~DR_STEP; 549 *dr6_p &= ~DR_STEP;
549 return NOTIFY_STOP; 550 return NOTIFY_STOP;
550 } 551 }
551 552
diff --git a/arch/x86/mm/srat_64.c b/arch/x86/mm/srat_64.c
index a27124185fc1..28c68762648f 100644
--- a/arch/x86/mm/srat_64.c
+++ b/arch/x86/mm/srat_64.c
@@ -229,9 +229,11 @@ update_nodes_add(int node, unsigned long start, unsigned long end)
229 printk(KERN_ERR "SRAT: Hotplug zone not continuous. Partly ignored\n"); 229 printk(KERN_ERR "SRAT: Hotplug zone not continuous. Partly ignored\n");
230 } 230 }
231 231
232 if (changed) 232 if (changed) {
233 node_set(node, cpu_nodes_parsed);
233 printk(KERN_INFO "SRAT: hot plug zone found %Lx - %Lx\n", 234 printk(KERN_INFO "SRAT: hot plug zone found %Lx - %Lx\n",
234 nd->start, nd->end); 235 nd->start, nd->end);
236 }
235} 237}
236 238
237/* Callback for parsing of the Proximity Domain <-> Memory Area mappings */ 239/* Callback for parsing of the Proximity Domain <-> Memory Area mappings */
diff --git a/arch/x86/oprofile/nmi_int.c b/arch/x86/oprofile/nmi_int.c
index cb88b1a0bd5f..3347f696edc7 100644
--- a/arch/x86/oprofile/nmi_int.c
+++ b/arch/x86/oprofile/nmi_int.c
@@ -222,7 +222,7 @@ static void nmi_cpu_switch(void *dummy)
222 222
223 /* move to next set */ 223 /* move to next set */
224 si += model->num_counters; 224 si += model->num_counters;
225 if ((si > model->num_virt_counters) || (counter_config[si].count == 0)) 225 if ((si >= model->num_virt_counters) || (counter_config[si].count == 0))
226 per_cpu(switch_index, cpu) = 0; 226 per_cpu(switch_index, cpu) = 0;
227 else 227 else
228 per_cpu(switch_index, cpu) = si; 228 per_cpu(switch_index, cpu) = si;
@@ -598,6 +598,7 @@ static int __init ppro_init(char **cpu_type)
598 case 15: case 23: 598 case 15: case 23:
599 *cpu_type = "i386/core_2"; 599 *cpu_type = "i386/core_2";
600 break; 600 break;
601 case 0x2e:
601 case 26: 602 case 26:
602 spec = &op_arch_perfmon_spec; 603 spec = &op_arch_perfmon_spec;
603 *cpu_type = "i386/core_i7"; 604 *cpu_type = "i386/core_i7";
diff --git a/arch/x86/pci/Makefile b/arch/x86/pci/Makefile
index 564b008a51c7..39fba37f702f 100644
--- a/arch/x86/pci/Makefile
+++ b/arch/x86/pci/Makefile
@@ -15,7 +15,7 @@ obj-$(CONFIG_X86_NUMAQ) += numaq_32.o
15 15
16obj-y += common.o early.o 16obj-y += common.o early.o
17obj-y += amd_bus.o 17obj-y += amd_bus.o
18obj-$(CONFIG_X86_64) += bus_numa.o intel_bus.o 18obj-$(CONFIG_X86_64) += bus_numa.o
19 19
20ifeq ($(CONFIG_PCI_DEBUG),y) 20ifeq ($(CONFIG_PCI_DEBUG),y)
21EXTRA_CFLAGS += -DDEBUG 21EXTRA_CFLAGS += -DDEBUG
diff --git a/arch/x86/pci/bus_numa.c b/arch/x86/pci/bus_numa.c
index 145df00e0387..f939d603adfa 100644
--- a/arch/x86/pci/bus_numa.c
+++ b/arch/x86/pci/bus_numa.c
@@ -51,7 +51,7 @@ void x86_pci_root_bus_res_quirks(struct pci_bus *b)
51 } 51 }
52} 52}
53 53
54void __init update_res(struct pci_root_info *info, size_t start, 54void __devinit update_res(struct pci_root_info *info, size_t start,
55 size_t end, unsigned long flags, int merge) 55 size_t end, unsigned long flags, int merge)
56{ 56{
57 int i; 57 int i;
diff --git a/arch/x86/pci/intel_bus.c b/arch/x86/pci/intel_bus.c
deleted file mode 100644
index b7a55dc55d13..000000000000
--- a/arch/x86/pci/intel_bus.c
+++ /dev/null
@@ -1,90 +0,0 @@
1/*
2 * to read io range from IOH pci conf, need to do it after mmconfig is there
3 */
4
5#include <linux/delay.h>
6#include <linux/dmi.h>
7#include <linux/pci.h>
8#include <linux/init.h>
9#include <asm/pci_x86.h>
10
11#include "bus_numa.h"
12
13static inline void print_ioh_resources(struct pci_root_info *info)
14{
15 int res_num;
16 int busnum;
17 int i;
18
19 printk(KERN_DEBUG "IOH bus: [%02x, %02x]\n",
20 info->bus_min, info->bus_max);
21 res_num = info->res_num;
22 busnum = info->bus_min;
23 for (i = 0; i < res_num; i++) {
24 struct resource *res;
25
26 res = &info->res[i];
27 printk(KERN_DEBUG "IOH bus: %02x index %x %s: [%llx, %llx]\n",
28 busnum, i,
29 (res->flags & IORESOURCE_IO) ? "io port" :
30 "mmio",
31 res->start, res->end);
32 }
33}
34
35#define IOH_LIO 0x108
36#define IOH_LMMIOL 0x10c
37#define IOH_LMMIOH 0x110
38#define IOH_LMMIOH_BASEU 0x114
39#define IOH_LMMIOH_LIMITU 0x118
40#define IOH_LCFGBUS 0x11c
41
42static void __devinit pci_root_bus_res(struct pci_dev *dev)
43{
44 u16 word;
45 u32 dword;
46 struct pci_root_info *info;
47 u16 io_base, io_end;
48 u32 mmiol_base, mmiol_end;
49 u64 mmioh_base, mmioh_end;
50 int bus_base, bus_end;
51
52 if (pci_root_num >= PCI_ROOT_NR) {
53 printk(KERN_DEBUG "intel_bus.c: PCI_ROOT_NR is too small\n");
54 return;
55 }
56
57 info = &pci_root_info[pci_root_num];
58 pci_root_num++;
59
60 pci_read_config_word(dev, IOH_LCFGBUS, &word);
61 bus_base = (word & 0xff);
62 bus_end = (word & 0xff00) >> 8;
63 sprintf(info->name, "PCI Bus #%02x", bus_base);
64 info->bus_min = bus_base;
65 info->bus_max = bus_end;
66
67 pci_read_config_word(dev, IOH_LIO, &word);
68 io_base = (word & 0xf0) << (12 - 4);
69 io_end = (word & 0xf000) | 0xfff;
70 update_res(info, io_base, io_end, IORESOURCE_IO, 0);
71
72 pci_read_config_dword(dev, IOH_LMMIOL, &dword);
73 mmiol_base = (dword & 0xff00) << (24 - 8);
74 mmiol_end = (dword & 0xff000000) | 0xffffff;
75 update_res(info, mmiol_base, mmiol_end, IORESOURCE_MEM, 0);
76
77 pci_read_config_dword(dev, IOH_LMMIOH, &dword);
78 mmioh_base = ((u64)(dword & 0xfc00)) << (26 - 10);
79 mmioh_end = ((u64)(dword & 0xfc000000) | 0x3ffffff);
80 pci_read_config_dword(dev, IOH_LMMIOH_BASEU, &dword);
81 mmioh_base |= ((u64)(dword & 0x7ffff)) << 32;
82 pci_read_config_dword(dev, IOH_LMMIOH_LIMITU, &dword);
83 mmioh_end |= ((u64)(dword & 0x7ffff)) << 32;
84 update_res(info, mmioh_base, mmioh_end, IORESOURCE_MEM, 0);
85
86 print_ioh_resources(info);
87}
88
89/* intel IOH */
90DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x342e, pci_root_bus_res);
diff --git a/arch/x86/tools/chkobjdump.awk b/arch/x86/tools/chkobjdump.awk
index 5bbb5a33f220..fd1ab80be0de 100644
--- a/arch/x86/tools/chkobjdump.awk
+++ b/arch/x86/tools/chkobjdump.awk
@@ -8,14 +8,24 @@ BEGIN {
8 od_sver = 19; 8 od_sver = 19;
9} 9}
10 10
11/^GNU/ { 11/^GNU objdump/ {
12 split($3, ver, "."); 12 verstr = ""
13 for (i = 3; i <= NF; i++)
14 if (match($(i), "^[0-9]")) {
15 verstr = $(i);
16 break;
17 }
18 if (verstr == "") {
19 printf("Warning: Failed to find objdump version number.\n");
20 exit 0;
21 }
22 split(verstr, ver, ".");
13 if (ver[1] > od_ver || 23 if (ver[1] > od_ver ||
14 (ver[1] == od_ver && ver[2] >= od_sver)) { 24 (ver[1] == od_ver && ver[2] >= od_sver)) {
15 exit 1; 25 exit 1;
16 } else { 26 } else {
17 printf("Warning: objdump version %s is older than %d.%d\n", 27 printf("Warning: objdump version %s is older than %d.%d\n",
18 $4, od_ver, od_sver); 28 verstr, od_ver, od_sver);
19 print("Warning: Skipping posttest."); 29 print("Warning: Skipping posttest.");
20 # Logic is inverted, because we just skip test without error. 30 # Logic is inverted, because we just skip test without error.
21 exit 0; 31 exit 0;
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index 2b26dd5930c6..36daccb68642 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -1151,9 +1151,13 @@ asmlinkage void __init xen_start_kernel(void)
1151 1151
1152 /* keep using Xen gdt for now; no urgent need to change it */ 1152 /* keep using Xen gdt for now; no urgent need to change it */
1153 1153
1154#ifdef CONFIG_X86_32
1154 pv_info.kernel_rpl = 1; 1155 pv_info.kernel_rpl = 1;
1155 if (xen_feature(XENFEAT_supervisor_mode_kernel)) 1156 if (xen_feature(XENFEAT_supervisor_mode_kernel))
1156 pv_info.kernel_rpl = 0; 1157 pv_info.kernel_rpl = 0;
1158#else
1159 pv_info.kernel_rpl = 0;
1160#endif
1157 1161
1158 /* set the limit of our address space */ 1162 /* set the limit of our address space */
1159 xen_reserve_top(); 1163 xen_reserve_top();
diff --git a/block/blk-barrier.c b/block/blk-barrier.c
index 8873b9b439ff..8618d8996fea 100644
--- a/block/blk-barrier.c
+++ b/block/blk-barrier.c
@@ -402,7 +402,7 @@ int blkdev_issue_discard(struct block_device *bdev, sector_t sector,
402 * our current implementations need. If we'll ever need 402 * our current implementations need. If we'll ever need
403 * more the interface will need revisiting. 403 * more the interface will need revisiting.
404 */ 404 */
405 page = alloc_page(GFP_KERNEL | __GFP_ZERO); 405 page = alloc_page(gfp_mask | __GFP_ZERO);
406 if (!page) 406 if (!page)
407 goto out_free_bio; 407 goto out_free_bio;
408 if (bio_add_pc_page(q, bio, page, sector_size, 0) < sector_size) 408 if (bio_add_pc_page(q, bio, page, sector_size, 0) < sector_size)
diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
index 1fa2654db0a6..e7dbbaf5fb3e 100644
--- a/block/blk-cgroup.c
+++ b/block/blk-cgroup.c
@@ -147,16 +147,16 @@ blkiocg_weight_write(struct cgroup *cgroup, struct cftype *cftype, u64 val)
147 return -EINVAL; 147 return -EINVAL;
148 148
149 blkcg = cgroup_to_blkio_cgroup(cgroup); 149 blkcg = cgroup_to_blkio_cgroup(cgroup);
150 spin_lock(&blkio_list_lock);
150 spin_lock_irq(&blkcg->lock); 151 spin_lock_irq(&blkcg->lock);
151 blkcg->weight = (unsigned int)val; 152 blkcg->weight = (unsigned int)val;
152 hlist_for_each_entry(blkg, n, &blkcg->blkg_list, blkcg_node) { 153 hlist_for_each_entry(blkg, n, &blkcg->blkg_list, blkcg_node) {
153 spin_lock(&blkio_list_lock);
154 list_for_each_entry(blkiop, &blkio_list, list) 154 list_for_each_entry(blkiop, &blkio_list, list)
155 blkiop->ops.blkio_update_group_weight_fn(blkg, 155 blkiop->ops.blkio_update_group_weight_fn(blkg,
156 blkcg->weight); 156 blkcg->weight);
157 spin_unlock(&blkio_list_lock);
158 } 157 }
159 spin_unlock_irq(&blkcg->lock); 158 spin_unlock_irq(&blkcg->lock);
159 spin_unlock(&blkio_list_lock);
160 return 0; 160 return 0;
161} 161}
162 162
diff --git a/block/blk-core.c b/block/blk-core.c
index 718897e6d37f..d1a9a0a64f95 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -1147,7 +1147,7 @@ void init_request_from_bio(struct request *req, struct bio *bio)
1147 */ 1147 */
1148static inline bool queue_should_plug(struct request_queue *q) 1148static inline bool queue_should_plug(struct request_queue *q)
1149{ 1149{
1150 return !(blk_queue_nonrot(q) && blk_queue_queuing(q)); 1150 return !(blk_queue_nonrot(q) && blk_queue_tagged(q));
1151} 1151}
1152 1152
1153static int __make_request(struct request_queue *q, struct bio *bio) 1153static int __make_request(struct request_queue *q, struct bio *bio)
@@ -1859,15 +1859,8 @@ void blk_dequeue_request(struct request *rq)
1859 * and to it is freed is accounted as io that is in progress at 1859 * and to it is freed is accounted as io that is in progress at
1860 * the driver side. 1860 * the driver side.
1861 */ 1861 */
1862 if (blk_account_rq(rq)) { 1862 if (blk_account_rq(rq))
1863 q->in_flight[rq_is_sync(rq)]++; 1863 q->in_flight[rq_is_sync(rq)]++;
1864 /*
1865 * Mark this device as supporting hardware queuing, if
1866 * we have more IOs in flight than 4.
1867 */
1868 if (!blk_queue_queuing(q) && queue_in_flight(q) > 4)
1869 set_bit(QUEUE_FLAG_CQ, &q->queue_flags);
1870 }
1871} 1864}
1872 1865
1873/** 1866/**
diff --git a/block/blk-ioc.c b/block/blk-ioc.c
index cbdabb0dd6d7..98e6bf61b0ac 100644
--- a/block/blk-ioc.c
+++ b/block/blk-ioc.c
@@ -39,8 +39,6 @@ int put_io_context(struct io_context *ioc)
39 39
40 if (atomic_long_dec_and_test(&ioc->refcount)) { 40 if (atomic_long_dec_and_test(&ioc->refcount)) {
41 rcu_read_lock(); 41 rcu_read_lock();
42 if (ioc->aic && ioc->aic->dtor)
43 ioc->aic->dtor(ioc->aic);
44 cfq_dtor(ioc); 42 cfq_dtor(ioc);
45 rcu_read_unlock(); 43 rcu_read_unlock();
46 44
@@ -76,8 +74,6 @@ void exit_io_context(struct task_struct *task)
76 task_unlock(task); 74 task_unlock(task);
77 75
78 if (atomic_dec_and_test(&ioc->nr_tasks)) { 76 if (atomic_dec_and_test(&ioc->nr_tasks)) {
79 if (ioc->aic && ioc->aic->exit)
80 ioc->aic->exit(ioc->aic);
81 cfq_exit(ioc); 77 cfq_exit(ioc);
82 78
83 } 79 }
@@ -97,7 +93,6 @@ struct io_context *alloc_io_context(gfp_t gfp_flags, int node)
97 ret->ioprio = 0; 93 ret->ioprio = 0;
98 ret->last_waited = jiffies; /* doesn't matter... */ 94 ret->last_waited = jiffies; /* doesn't matter... */
99 ret->nr_batch_requests = 0; /* because this is 0 */ 95 ret->nr_batch_requests = 0; /* because this is 0 */
100 ret->aic = NULL;
101 INIT_RADIX_TREE(&ret->radix_root, GFP_ATOMIC | __GFP_HIGH); 96 INIT_RADIX_TREE(&ret->radix_root, GFP_ATOMIC | __GFP_HIGH);
102 INIT_HLIST_HEAD(&ret->cic_list); 97 INIT_HLIST_HEAD(&ret->cic_list);
103 ret->ioc_data = NULL; 98 ret->ioc_data = NULL;
diff --git a/block/blk-settings.c b/block/blk-settings.c
index 6ae118d6e193..5eeb9e0d256e 100644
--- a/block/blk-settings.c
+++ b/block/blk-settings.c
@@ -505,21 +505,30 @@ static unsigned int lcm(unsigned int a, unsigned int b)
505 505
506/** 506/**
507 * blk_stack_limits - adjust queue_limits for stacked devices 507 * blk_stack_limits - adjust queue_limits for stacked devices
508 * @t: the stacking driver limits (top) 508 * @t: the stacking driver limits (top device)
509 * @b: the underlying queue limits (bottom) 509 * @b: the underlying queue limits (bottom, component device)
510 * @offset: offset to beginning of data within component device 510 * @offset: offset to beginning of data within component device
511 * 511 *
512 * Description: 512 * Description:
513 * Merges two queue_limit structs. Returns 0 if alignment didn't 513 * This function is used by stacking drivers like MD and DM to ensure
514 * change. Returns -1 if adding the bottom device caused 514 * that all component devices have compatible block sizes and
515 * misalignment. 515 * alignments. The stacking driver must provide a queue_limits
516 * struct (top) and then iteratively call the stacking function for
517 * all component (bottom) devices. The stacking function will
518 * attempt to combine the values and ensure proper alignment.
519 *
520 * Returns 0 if the top and bottom queue_limits are compatible. The
521 * top device's block sizes and alignment offsets may be adjusted to
522 * ensure alignment with the bottom device. If no compatible sizes
523 * and alignments exist, -1 is returned and the resulting top
524 * queue_limits will have the misaligned flag set to indicate that
525 * the alignment_offset is undefined.
516 */ 526 */
517int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, 527int blk_stack_limits(struct queue_limits *t, struct queue_limits *b,
518 sector_t offset) 528 sector_t offset)
519{ 529{
520 int ret; 530 sector_t alignment;
521 531 unsigned int top, bottom, ret = 0;
522 ret = 0;
523 532
524 t->max_sectors = min_not_zero(t->max_sectors, b->max_sectors); 533 t->max_sectors = min_not_zero(t->max_sectors, b->max_sectors);
525 t->max_hw_sectors = min_not_zero(t->max_hw_sectors, b->max_hw_sectors); 534 t->max_hw_sectors = min_not_zero(t->max_hw_sectors, b->max_hw_sectors);
@@ -537,6 +546,26 @@ int blk_stack_limits(struct queue_limits *t, struct queue_limits *b,
537 t->max_segment_size = min_not_zero(t->max_segment_size, 546 t->max_segment_size = min_not_zero(t->max_segment_size,
538 b->max_segment_size); 547 b->max_segment_size);
539 548
549 t->misaligned |= b->misaligned;
550
551 alignment = queue_limit_alignment_offset(b, offset);
552
553 /* Bottom device has different alignment. Check that it is
554 * compatible with the current top alignment.
555 */
556 if (t->alignment_offset != alignment) {
557
558 top = max(t->physical_block_size, t->io_min)
559 + t->alignment_offset;
560 bottom = max(b->physical_block_size, b->io_min) + alignment;
561
562 /* Verify that top and bottom intervals line up */
563 if (max(top, bottom) & (min(top, bottom) - 1)) {
564 t->misaligned = 1;
565 ret = -1;
566 }
567 }
568
540 t->logical_block_size = max(t->logical_block_size, 569 t->logical_block_size = max(t->logical_block_size,
541 b->logical_block_size); 570 b->logical_block_size);
542 571
@@ -544,58 +573,95 @@ int blk_stack_limits(struct queue_limits *t, struct queue_limits *b,
544 b->physical_block_size); 573 b->physical_block_size);
545 574
546 t->io_min = max(t->io_min, b->io_min); 575 t->io_min = max(t->io_min, b->io_min);
576 t->io_opt = lcm(t->io_opt, b->io_opt);
577
547 t->no_cluster |= b->no_cluster; 578 t->no_cluster |= b->no_cluster;
548 t->discard_zeroes_data &= b->discard_zeroes_data; 579 t->discard_zeroes_data &= b->discard_zeroes_data;
549 580
550 /* Bottom device offset aligned? */ 581 /* Physical block size a multiple of the logical block size? */
551 if (offset && 582 if (t->physical_block_size & (t->logical_block_size - 1)) {
552 (offset & (b->physical_block_size - 1)) != b->alignment_offset) { 583 t->physical_block_size = t->logical_block_size;
553 t->misaligned = 1; 584 t->misaligned = 1;
554 ret = -1; 585 ret = -1;
555 } 586 }
556 587
557 /* 588 /* Minimum I/O a multiple of the physical block size? */
558 * Temporarily disable discard granularity. It's currently buggy 589 if (t->io_min & (t->physical_block_size - 1)) {
559 * since we default to 0 for discard_granularity, hence this 590 t->io_min = t->physical_block_size;
560 * "failure" will always trigger for non-zero offsets. 591 t->misaligned = 1;
561 */
562#if 0
563 if (offset &&
564 (offset & (b->discard_granularity - 1)) != b->discard_alignment) {
565 t->discard_misaligned = 1;
566 ret = -1; 592 ret = -1;
567 } 593 }
568#endif
569 594
570 /* If top has no alignment offset, inherit from bottom */ 595 /* Optimal I/O a multiple of the physical block size? */
571 if (!t->alignment_offset) 596 if (t->io_opt & (t->physical_block_size - 1)) {
572 t->alignment_offset = 597 t->io_opt = 0;
573 b->alignment_offset & (b->physical_block_size - 1); 598 t->misaligned = 1;
599 ret = -1;
600 }
574 601
575 if (!t->discard_alignment) 602 /* Find lowest common alignment_offset */
576 t->discard_alignment = 603 t->alignment_offset = lcm(t->alignment_offset, alignment)
577 b->discard_alignment & (b->discard_granularity - 1); 604 & (max(t->physical_block_size, t->io_min) - 1);
578 605
579 /* Top device aligned on logical block boundary? */ 606 /* Verify that new alignment_offset is on a logical block boundary */
580 if (t->alignment_offset & (t->logical_block_size - 1)) { 607 if (t->alignment_offset & (t->logical_block_size - 1)) {
581 t->misaligned = 1; 608 t->misaligned = 1;
582 ret = -1; 609 ret = -1;
583 } 610 }
584 611
585 /* Find lcm() of optimal I/O size and granularity */ 612 /* Discard alignment and granularity */
586 t->io_opt = lcm(t->io_opt, b->io_opt); 613 if (b->discard_granularity) {
587 t->discard_granularity = lcm(t->discard_granularity, 614 unsigned int granularity = b->discard_granularity;
588 b->discard_granularity); 615 offset &= granularity - 1;
589 616
590 /* Verify that optimal I/O size is a multiple of io_min */ 617 alignment = (granularity + b->discard_alignment - offset)
591 if (t->io_min && t->io_opt % t->io_min) 618 & (granularity - 1);
592 ret = -1; 619
620 if (t->discard_granularity != 0 &&
621 t->discard_alignment != alignment) {
622 top = t->discard_granularity + t->discard_alignment;
623 bottom = b->discard_granularity + alignment;
624
625 /* Verify that top and bottom intervals line up */
626 if (max(top, bottom) & (min(top, bottom) - 1))
627 t->discard_misaligned = 1;
628 }
629
630 t->max_discard_sectors = min_not_zero(t->max_discard_sectors,
631 b->max_discard_sectors);
632 t->discard_granularity = max(t->discard_granularity,
633 b->discard_granularity);
634 t->discard_alignment = lcm(t->discard_alignment, alignment) &
635 (t->discard_granularity - 1);
636 }
593 637
594 return ret; 638 return ret;
595} 639}
596EXPORT_SYMBOL(blk_stack_limits); 640EXPORT_SYMBOL(blk_stack_limits);
597 641
598/** 642/**
643 * bdev_stack_limits - adjust queue limits for stacked drivers
644 * @t: the stacking driver limits (top device)
645 * @bdev: the component block_device (bottom)
646 * @start: first data sector within component device
647 *
648 * Description:
649 * Merges queue limits for a top device and a block_device. Returns
650 * 0 if alignment didn't change. Returns -1 if adding the bottom
651 * device caused misalignment.
652 */
653int bdev_stack_limits(struct queue_limits *t, struct block_device *bdev,
654 sector_t start)
655{
656 struct request_queue *bq = bdev_get_queue(bdev);
657
658 start += get_start_sect(bdev);
659
660 return blk_stack_limits(t, &bq->limits, start << 9);
661}
662EXPORT_SYMBOL(bdev_stack_limits);
663
664/**
599 * disk_stack_limits - adjust queue limits for stacked drivers 665 * disk_stack_limits - adjust queue limits for stacked drivers
600 * @disk: MD/DM gendisk (top) 666 * @disk: MD/DM gendisk (top)
601 * @bdev: the underlying block device (bottom) 667 * @bdev: the underlying block device (bottom)
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index e2f80463ed0d..023f4e69a337 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -42,16 +42,13 @@ static const int cfq_hist_divisor = 4;
42 */ 42 */
43#define CFQ_MIN_TT (2) 43#define CFQ_MIN_TT (2)
44 44
45/*
46 * Allow merged cfqqs to perform this amount of seeky I/O before
47 * deciding to break the queues up again.
48 */
49#define CFQQ_COOP_TOUT (HZ)
50
51#define CFQ_SLICE_SCALE (5) 45#define CFQ_SLICE_SCALE (5)
52#define CFQ_HW_QUEUE_MIN (5) 46#define CFQ_HW_QUEUE_MIN (5)
53#define CFQ_SERVICE_SHIFT 12 47#define CFQ_SERVICE_SHIFT 12
54 48
49#define CFQQ_SEEK_THR 8 * 1024
50#define CFQQ_SEEKY(cfqq) ((cfqq)->seek_mean > CFQQ_SEEK_THR)
51
55#define RQ_CIC(rq) \ 52#define RQ_CIC(rq) \
56 ((struct cfq_io_context *) (rq)->elevator_private) 53 ((struct cfq_io_context *) (rq)->elevator_private)
57#define RQ_CFQQ(rq) (struct cfq_queue *) ((rq)->elevator_private2) 54#define RQ_CFQQ(rq) (struct cfq_queue *) ((rq)->elevator_private2)
@@ -137,7 +134,6 @@ struct cfq_queue {
137 u64 seek_total; 134 u64 seek_total;
138 sector_t seek_mean; 135 sector_t seek_mean;
139 sector_t last_request_pos; 136 sector_t last_request_pos;
140 unsigned long seeky_start;
141 137
142 pid_t pid; 138 pid_t pid;
143 139
@@ -208,8 +204,6 @@ struct cfq_data {
208 /* Root service tree for cfq_groups */ 204 /* Root service tree for cfq_groups */
209 struct cfq_rb_root grp_service_tree; 205 struct cfq_rb_root grp_service_tree;
210 struct cfq_group root_group; 206 struct cfq_group root_group;
211 /* Number of active cfq groups on group service tree */
212 int nr_groups;
213 207
214 /* 208 /*
215 * The priority currently being served 209 * The priority currently being served
@@ -294,8 +288,7 @@ static struct cfq_group *cfq_get_next_cfqg(struct cfq_data *cfqd);
294 288
295static struct cfq_rb_root *service_tree_for(struct cfq_group *cfqg, 289static struct cfq_rb_root *service_tree_for(struct cfq_group *cfqg,
296 enum wl_prio_t prio, 290 enum wl_prio_t prio,
297 enum wl_type_t type, 291 enum wl_type_t type)
298 struct cfq_data *cfqd)
299{ 292{
300 if (!cfqg) 293 if (!cfqg)
301 return NULL; 294 return NULL;
@@ -317,6 +310,7 @@ enum cfqq_state_flags {
317 CFQ_CFQQ_FLAG_slice_new, /* no requests dispatched in slice */ 310 CFQ_CFQQ_FLAG_slice_new, /* no requests dispatched in slice */
318 CFQ_CFQQ_FLAG_sync, /* synchronous queue */ 311 CFQ_CFQQ_FLAG_sync, /* synchronous queue */
319 CFQ_CFQQ_FLAG_coop, /* cfqq is shared */ 312 CFQ_CFQQ_FLAG_coop, /* cfqq is shared */
313 CFQ_CFQQ_FLAG_split_coop, /* shared cfqq will be splitted */
320 CFQ_CFQQ_FLAG_deep, /* sync cfqq experienced large depth */ 314 CFQ_CFQQ_FLAG_deep, /* sync cfqq experienced large depth */
321 CFQ_CFQQ_FLAG_wait_busy, /* Waiting for next request */ 315 CFQ_CFQQ_FLAG_wait_busy, /* Waiting for next request */
322}; 316};
@@ -345,6 +339,7 @@ CFQ_CFQQ_FNS(prio_changed);
345CFQ_CFQQ_FNS(slice_new); 339CFQ_CFQQ_FNS(slice_new);
346CFQ_CFQQ_FNS(sync); 340CFQ_CFQQ_FNS(sync);
347CFQ_CFQQ_FNS(coop); 341CFQ_CFQQ_FNS(coop);
342CFQ_CFQQ_FNS(split_coop);
348CFQ_CFQQ_FNS(deep); 343CFQ_CFQQ_FNS(deep);
349CFQ_CFQQ_FNS(wait_busy); 344CFQ_CFQQ_FNS(wait_busy);
350#undef CFQ_CFQQ_FNS 345#undef CFQ_CFQQ_FNS
@@ -842,7 +837,6 @@ cfq_group_service_tree_add(struct cfq_data *cfqd, struct cfq_group *cfqg)
842 837
843 __cfq_group_service_tree_add(st, cfqg); 838 __cfq_group_service_tree_add(st, cfqg);
844 cfqg->on_st = true; 839 cfqg->on_st = true;
845 cfqd->nr_groups++;
846 st->total_weight += cfqg->weight; 840 st->total_weight += cfqg->weight;
847} 841}
848 842
@@ -863,7 +857,6 @@ cfq_group_service_tree_del(struct cfq_data *cfqd, struct cfq_group *cfqg)
863 857
864 cfq_log_cfqg(cfqd, cfqg, "del_from_rr group"); 858 cfq_log_cfqg(cfqd, cfqg, "del_from_rr group");
865 cfqg->on_st = false; 859 cfqg->on_st = false;
866 cfqd->nr_groups--;
867 st->total_weight -= cfqg->weight; 860 st->total_weight -= cfqg->weight;
868 if (!RB_EMPTY_NODE(&cfqg->rb_node)) 861 if (!RB_EMPTY_NODE(&cfqg->rb_node))
869 cfq_rb_erase(&cfqg->rb_node, st); 862 cfq_rb_erase(&cfqg->rb_node, st);
@@ -1150,7 +1143,7 @@ static void cfq_service_tree_add(struct cfq_data *cfqd, struct cfq_queue *cfqq,
1150#endif 1143#endif
1151 1144
1152 service_tree = service_tree_for(cfqq->cfqg, cfqq_prio(cfqq), 1145 service_tree = service_tree_for(cfqq->cfqg, cfqq_prio(cfqq),
1153 cfqq_type(cfqq), cfqd); 1146 cfqq_type(cfqq));
1154 if (cfq_class_idle(cfqq)) { 1147 if (cfq_class_idle(cfqq)) {
1155 rb_key = CFQ_IDLE_DELAY; 1148 rb_key = CFQ_IDLE_DELAY;
1156 parent = rb_last(&service_tree->rb); 1149 parent = rb_last(&service_tree->rb);
@@ -1513,9 +1506,6 @@ static int cfq_allow_merge(struct request_queue *q, struct request *rq,
1513 struct cfq_io_context *cic; 1506 struct cfq_io_context *cic;
1514 struct cfq_queue *cfqq; 1507 struct cfq_queue *cfqq;
1515 1508
1516 /* Deny merge if bio and rq don't belong to same cfq group */
1517 if ((RQ_CFQQ(rq))->cfqg != cfq_get_cfqg(cfqd, 0))
1518 return false;
1519 /* 1509 /*
1520 * Disallow merge of a sync bio into an async request. 1510 * Disallow merge of a sync bio into an async request.
1521 */ 1511 */
@@ -1574,6 +1564,15 @@ __cfq_slice_expired(struct cfq_data *cfqd, struct cfq_queue *cfqq,
1574 cfq_clear_cfqq_wait_busy(cfqq); 1564 cfq_clear_cfqq_wait_busy(cfqq);
1575 1565
1576 /* 1566 /*
1567 * If this cfqq is shared between multiple processes, check to
1568 * make sure that those processes are still issuing I/Os within
1569 * the mean seek distance. If not, it may be time to break the
1570 * queues apart again.
1571 */
1572 if (cfq_cfqq_coop(cfqq) && CFQQ_SEEKY(cfqq))
1573 cfq_mark_cfqq_split_coop(cfqq);
1574
1575 /*
1577 * store what was left of this slice, if the queue idled/timed out 1576 * store what was left of this slice, if the queue idled/timed out
1578 */ 1577 */
1579 if (timed_out && !cfq_cfqq_slice_new(cfqq)) { 1578 if (timed_out && !cfq_cfqq_slice_new(cfqq)) {
@@ -1616,7 +1615,7 @@ static struct cfq_queue *cfq_get_next_queue(struct cfq_data *cfqd)
1616{ 1615{
1617 struct cfq_rb_root *service_tree = 1616 struct cfq_rb_root *service_tree =
1618 service_tree_for(cfqd->serving_group, cfqd->serving_prio, 1617 service_tree_for(cfqd->serving_group, cfqd->serving_prio,
1619 cfqd->serving_type, cfqd); 1618 cfqd->serving_type);
1620 1619
1621 if (!cfqd->rq_queued) 1620 if (!cfqd->rq_queued)
1622 return NULL; 1621 return NULL;
@@ -1671,17 +1670,18 @@ static inline sector_t cfq_dist_from_last(struct cfq_data *cfqd,
1671 return cfqd->last_position - blk_rq_pos(rq); 1670 return cfqd->last_position - blk_rq_pos(rq);
1672} 1671}
1673 1672
1674#define CFQQ_SEEK_THR 8 * 1024
1675#define CFQQ_SEEKY(cfqq) ((cfqq)->seek_mean > CFQQ_SEEK_THR)
1676
1677static inline int cfq_rq_close(struct cfq_data *cfqd, struct cfq_queue *cfqq, 1673static inline int cfq_rq_close(struct cfq_data *cfqd, struct cfq_queue *cfqq,
1678 struct request *rq) 1674 struct request *rq, bool for_preempt)
1679{ 1675{
1680 sector_t sdist = cfqq->seek_mean; 1676 sector_t sdist = cfqq->seek_mean;
1681 1677
1682 if (!sample_valid(cfqq->seek_samples)) 1678 if (!sample_valid(cfqq->seek_samples))
1683 sdist = CFQQ_SEEK_THR; 1679 sdist = CFQQ_SEEK_THR;
1684 1680
1681 /* if seek_mean is big, using it as close criteria is meaningless */
1682 if (sdist > CFQQ_SEEK_THR && !for_preempt)
1683 sdist = CFQQ_SEEK_THR;
1684
1685 return cfq_dist_from_last(cfqd, rq) <= sdist; 1685 return cfq_dist_from_last(cfqd, rq) <= sdist;
1686} 1686}
1687 1687
@@ -1709,7 +1709,7 @@ static struct cfq_queue *cfqq_close(struct cfq_data *cfqd,
1709 * will contain the closest sector. 1709 * will contain the closest sector.
1710 */ 1710 */
1711 __cfqq = rb_entry(parent, struct cfq_queue, p_node); 1711 __cfqq = rb_entry(parent, struct cfq_queue, p_node);
1712 if (cfq_rq_close(cfqd, cur_cfqq, __cfqq->next_rq)) 1712 if (cfq_rq_close(cfqd, cur_cfqq, __cfqq->next_rq, false))
1713 return __cfqq; 1713 return __cfqq;
1714 1714
1715 if (blk_rq_pos(__cfqq->next_rq) < sector) 1715 if (blk_rq_pos(__cfqq->next_rq) < sector)
@@ -1720,7 +1720,7 @@ static struct cfq_queue *cfqq_close(struct cfq_data *cfqd,
1720 return NULL; 1720 return NULL;
1721 1721
1722 __cfqq = rb_entry(node, struct cfq_queue, p_node); 1722 __cfqq = rb_entry(node, struct cfq_queue, p_node);
1723 if (cfq_rq_close(cfqd, cur_cfqq, __cfqq->next_rq)) 1723 if (cfq_rq_close(cfqd, cur_cfqq, __cfqq->next_rq, false))
1724 return __cfqq; 1724 return __cfqq;
1725 1725
1726 return NULL; 1726 return NULL;
@@ -1807,7 +1807,7 @@ static bool cfq_should_idle(struct cfq_data *cfqd, struct cfq_queue *cfqq)
1807 * Otherwise, we do only if they are the last ones 1807 * Otherwise, we do only if they are the last ones
1808 * in their service tree. 1808 * in their service tree.
1809 */ 1809 */
1810 return service_tree->count == 1; 1810 return service_tree->count == 1 && cfq_cfqq_sync(cfqq);
1811} 1811}
1812 1812
1813static void cfq_arm_slice_timer(struct cfq_data *cfqd) 1813static void cfq_arm_slice_timer(struct cfq_data *cfqd)
@@ -1963,8 +1963,7 @@ static void cfq_setup_merge(struct cfq_queue *cfqq, struct cfq_queue *new_cfqq)
1963} 1963}
1964 1964
1965static enum wl_type_t cfq_choose_wl(struct cfq_data *cfqd, 1965static enum wl_type_t cfq_choose_wl(struct cfq_data *cfqd,
1966 struct cfq_group *cfqg, enum wl_prio_t prio, 1966 struct cfq_group *cfqg, enum wl_prio_t prio)
1967 bool prio_changed)
1968{ 1967{
1969 struct cfq_queue *queue; 1968 struct cfq_queue *queue;
1970 int i; 1969 int i;
@@ -1972,24 +1971,9 @@ static enum wl_type_t cfq_choose_wl(struct cfq_data *cfqd,
1972 unsigned long lowest_key = 0; 1971 unsigned long lowest_key = 0;
1973 enum wl_type_t cur_best = SYNC_NOIDLE_WORKLOAD; 1972 enum wl_type_t cur_best = SYNC_NOIDLE_WORKLOAD;
1974 1973
1975 if (prio_changed) { 1974 for (i = 0; i <= SYNC_WORKLOAD; ++i) {
1976 /* 1975 /* select the one with lowest rb_key */
1977 * When priorities switched, we prefer starting 1976 queue = cfq_rb_first(service_tree_for(cfqg, prio, i));
1978 * from SYNC_NOIDLE (first choice), or just SYNC
1979 * over ASYNC
1980 */
1981 if (service_tree_for(cfqg, prio, cur_best, cfqd)->count)
1982 return cur_best;
1983 cur_best = SYNC_WORKLOAD;
1984 if (service_tree_for(cfqg, prio, cur_best, cfqd)->count)
1985 return cur_best;
1986
1987 return ASYNC_WORKLOAD;
1988 }
1989
1990 for (i = 0; i < 3; ++i) {
1991 /* otherwise, select the one with lowest rb_key */
1992 queue = cfq_rb_first(service_tree_for(cfqg, prio, i, cfqd));
1993 if (queue && 1977 if (queue &&
1994 (!key_valid || time_before(queue->rb_key, lowest_key))) { 1978 (!key_valid || time_before(queue->rb_key, lowest_key))) {
1995 lowest_key = queue->rb_key; 1979 lowest_key = queue->rb_key;
@@ -2003,8 +1987,6 @@ static enum wl_type_t cfq_choose_wl(struct cfq_data *cfqd,
2003 1987
2004static void choose_service_tree(struct cfq_data *cfqd, struct cfq_group *cfqg) 1988static void choose_service_tree(struct cfq_data *cfqd, struct cfq_group *cfqg)
2005{ 1989{
2006 enum wl_prio_t previous_prio = cfqd->serving_prio;
2007 bool prio_changed;
2008 unsigned slice; 1990 unsigned slice;
2009 unsigned count; 1991 unsigned count;
2010 struct cfq_rb_root *st; 1992 struct cfq_rb_root *st;
@@ -2032,24 +2014,19 @@ static void choose_service_tree(struct cfq_data *cfqd, struct cfq_group *cfqg)
2032 * (SYNC, SYNC_NOIDLE, ASYNC), and to compute a workload 2014 * (SYNC, SYNC_NOIDLE, ASYNC), and to compute a workload
2033 * expiration time 2015 * expiration time
2034 */ 2016 */
2035 prio_changed = (cfqd->serving_prio != previous_prio); 2017 st = service_tree_for(cfqg, cfqd->serving_prio, cfqd->serving_type);
2036 st = service_tree_for(cfqg, cfqd->serving_prio, cfqd->serving_type,
2037 cfqd);
2038 count = st->count; 2018 count = st->count;
2039 2019
2040 /* 2020 /*
2041 * If priority didn't change, check workload expiration, 2021 * check workload expiration, and that we still have other queues ready
2042 * and that we still have other queues ready
2043 */ 2022 */
2044 if (!prio_changed && count && 2023 if (count && !time_after(jiffies, cfqd->workload_expires))
2045 !time_after(jiffies, cfqd->workload_expires))
2046 return; 2024 return;
2047 2025
2048 /* otherwise select new workload type */ 2026 /* otherwise select new workload type */
2049 cfqd->serving_type = 2027 cfqd->serving_type =
2050 cfq_choose_wl(cfqd, cfqg, cfqd->serving_prio, prio_changed); 2028 cfq_choose_wl(cfqd, cfqg, cfqd->serving_prio);
2051 st = service_tree_for(cfqg, cfqd->serving_prio, cfqd->serving_type, 2029 st = service_tree_for(cfqg, cfqd->serving_prio, cfqd->serving_type);
2052 cfqd);
2053 count = st->count; 2030 count = st->count;
2054 2031
2055 /* 2032 /*
@@ -3027,19 +3004,6 @@ cfq_update_io_seektime(struct cfq_data *cfqd, struct cfq_queue *cfqq,
3027 total = cfqq->seek_total + (cfqq->seek_samples/2); 3004 total = cfqq->seek_total + (cfqq->seek_samples/2);
3028 do_div(total, cfqq->seek_samples); 3005 do_div(total, cfqq->seek_samples);
3029 cfqq->seek_mean = (sector_t)total; 3006 cfqq->seek_mean = (sector_t)total;
3030
3031 /*
3032 * If this cfqq is shared between multiple processes, check to
3033 * make sure that those processes are still issuing I/Os within
3034 * the mean seek distance. If not, it may be time to break the
3035 * queues apart again.
3036 */
3037 if (cfq_cfqq_coop(cfqq)) {
3038 if (CFQQ_SEEKY(cfqq) && !cfqq->seeky_start)
3039 cfqq->seeky_start = jiffies;
3040 else if (!CFQQ_SEEKY(cfqq))
3041 cfqq->seeky_start = 0;
3042 }
3043} 3007}
3044 3008
3045/* 3009/*
@@ -3104,6 +3068,12 @@ cfq_should_preempt(struct cfq_data *cfqd, struct cfq_queue *new_cfqq,
3104 return true; 3068 return true;
3105 3069
3106 /* 3070 /*
3071 * Don't allow a non-RT request to preempt an ongoing RT cfqq timeslice.
3072 */
3073 if (cfq_class_rt(cfqq) && !cfq_class_rt(new_cfqq))
3074 return false;
3075
3076 /*
3107 * if the new request is sync, but the currently running queue is 3077 * if the new request is sync, but the currently running queue is
3108 * not, let the sync request have priority. 3078 * not, let the sync request have priority.
3109 */ 3079 */
@@ -3143,7 +3113,7 @@ cfq_should_preempt(struct cfq_data *cfqd, struct cfq_queue *new_cfqq,
3143 * if this request is as-good as one we would expect from the 3113 * if this request is as-good as one we would expect from the
3144 * current cfqq, let it preempt 3114 * current cfqq, let it preempt
3145 */ 3115 */
3146 if (cfq_rq_close(cfqd, cfqq, rq)) 3116 if (cfq_rq_close(cfqd, cfqq, rq, true))
3147 return true; 3117 return true;
3148 3118
3149 return false; 3119 return false;
@@ -3474,14 +3444,6 @@ cfq_merge_cfqqs(struct cfq_data *cfqd, struct cfq_io_context *cic,
3474 return cic_to_cfqq(cic, 1); 3444 return cic_to_cfqq(cic, 1);
3475} 3445}
3476 3446
3477static int should_split_cfqq(struct cfq_queue *cfqq)
3478{
3479 if (cfqq->seeky_start &&
3480 time_after(jiffies, cfqq->seeky_start + CFQQ_COOP_TOUT))
3481 return 1;
3482 return 0;
3483}
3484
3485/* 3447/*
3486 * Returns NULL if a new cfqq should be allocated, or the old cfqq if this 3448 * Returns NULL if a new cfqq should be allocated, or the old cfqq if this
3487 * was the last process referring to said cfqq. 3449 * was the last process referring to said cfqq.
@@ -3490,9 +3452,9 @@ static struct cfq_queue *
3490split_cfqq(struct cfq_io_context *cic, struct cfq_queue *cfqq) 3452split_cfqq(struct cfq_io_context *cic, struct cfq_queue *cfqq)
3491{ 3453{
3492 if (cfqq_process_refs(cfqq) == 1) { 3454 if (cfqq_process_refs(cfqq) == 1) {
3493 cfqq->seeky_start = 0;
3494 cfqq->pid = current->pid; 3455 cfqq->pid = current->pid;
3495 cfq_clear_cfqq_coop(cfqq); 3456 cfq_clear_cfqq_coop(cfqq);
3457 cfq_clear_cfqq_split_coop(cfqq);
3496 return cfqq; 3458 return cfqq;
3497 } 3459 }
3498 3460
@@ -3531,7 +3493,7 @@ new_queue:
3531 /* 3493 /*
3532 * If the queue was seeky for too long, break it apart. 3494 * If the queue was seeky for too long, break it apart.
3533 */ 3495 */
3534 if (cfq_cfqq_coop(cfqq) && should_split_cfqq(cfqq)) { 3496 if (cfq_cfqq_coop(cfqq) && cfq_cfqq_split_coop(cfqq)) {
3535 cfq_log_cfqq(cfqd, cfqq, "breaking apart cfqq"); 3497 cfq_log_cfqq(cfqd, cfqq, "breaking apart cfqq");
3536 cfqq = split_cfqq(cic, cfqq); 3498 cfqq = split_cfqq(cic, cfqq);
3537 if (!cfqq) 3499 if (!cfqq)
diff --git a/block/genhd.c b/block/genhd.c
index b11a4ad7d571..d13ba76a169c 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -867,7 +867,7 @@ static ssize_t disk_discard_alignment_show(struct device *dev,
867{ 867{
868 struct gendisk *disk = dev_to_disk(dev); 868 struct gendisk *disk = dev_to_disk(dev);
869 869
870 return sprintf(buf, "%u\n", queue_discard_alignment(disk->queue)); 870 return sprintf(buf, "%d\n", queue_discard_alignment(disk->queue));
871} 871}
872 872
873static DEVICE_ATTR(range, S_IRUGO, disk_range_show, NULL); 873static DEVICE_ATTR(range, S_IRUGO, disk_range_show, NULL);
diff --git a/crypto/async_tx/raid6test.c b/crypto/async_tx/raid6test.c
index 3ec27c7e62ea..f84f6b4301d9 100644
--- a/crypto/async_tx/raid6test.c
+++ b/crypto/async_tx/raid6test.c
@@ -214,6 +214,13 @@ static int raid6_test(void)
214 err += test(4, &tests); 214 err += test(4, &tests);
215 if (NDISKS > 5) 215 if (NDISKS > 5)
216 err += test(5, &tests); 216 err += test(5, &tests);
217 /* the 11 and 12 disk cases are special for ioatdma (p-disabled
218 * q-continuation without extended descriptor)
219 */
220 if (NDISKS > 12) {
221 err += test(11, &tests);
222 err += test(12, &tests);
223 }
217 err += test(NDISKS, &tests); 224 err += test(NDISKS, &tests);
218 225
219 pr("\n"); 226 pr("\n");
diff --git a/drivers/acpi/acpi_pad.c b/drivers/acpi/acpi_pad.c
index 97991ac6f5fc..7e52295f1ecc 100644
--- a/drivers/acpi/acpi_pad.c
+++ b/drivers/acpi/acpi_pad.c
@@ -208,7 +208,7 @@ static int power_saving_thread(void *data)
208 * the mechanism only works when all CPUs have RT task running, 208 * the mechanism only works when all CPUs have RT task running,
209 * as if one CPU hasn't RT task, RT task from other CPUs will 209 * as if one CPU hasn't RT task, RT task from other CPUs will
210 * borrow CPU time from this CPU and cause RT task use > 95% 210 * borrow CPU time from this CPU and cause RT task use > 95%
211 * CPU time. To make 'avoid staration' work, takes a nap here. 211 * CPU time. To make 'avoid starvation' work, takes a nap here.
212 */ 212 */
213 if (do_sleep) 213 if (do_sleep)
214 schedule_timeout_killable(HZ * idle_pct / 100); 214 schedule_timeout_killable(HZ * idle_pct / 100);
@@ -222,14 +222,18 @@ static struct task_struct *ps_tsks[NR_CPUS];
222static unsigned int ps_tsk_num; 222static unsigned int ps_tsk_num;
223static int create_power_saving_task(void) 223static int create_power_saving_task(void)
224{ 224{
225 int rc = -ENOMEM;
226
225 ps_tsks[ps_tsk_num] = kthread_run(power_saving_thread, 227 ps_tsks[ps_tsk_num] = kthread_run(power_saving_thread,
226 (void *)(unsigned long)ps_tsk_num, 228 (void *)(unsigned long)ps_tsk_num,
227 "power_saving/%d", ps_tsk_num); 229 "power_saving/%d", ps_tsk_num);
228 if (ps_tsks[ps_tsk_num]) { 230 rc = IS_ERR(ps_tsks[ps_tsk_num]) ? PTR_ERR(ps_tsks[ps_tsk_num]) : 0;
231 if (!rc)
229 ps_tsk_num++; 232 ps_tsk_num++;
230 return 0; 233 else
231 } 234 ps_tsks[ps_tsk_num] = NULL;
232 return -EINVAL; 235
236 return rc;
233} 237}
234 238
235static void destroy_power_saving_task(void) 239static void destroy_power_saving_task(void)
@@ -237,6 +241,7 @@ static void destroy_power_saving_task(void)
237 if (ps_tsk_num > 0) { 241 if (ps_tsk_num > 0) {
238 ps_tsk_num--; 242 ps_tsk_num--;
239 kthread_stop(ps_tsks[ps_tsk_num]); 243 kthread_stop(ps_tsks[ps_tsk_num]);
244 ps_tsks[ps_tsk_num] = NULL;
240 } 245 }
241} 246}
242 247
@@ -253,7 +258,7 @@ static void set_power_saving_task_num(unsigned int num)
253 } 258 }
254} 259}
255 260
256static int acpi_pad_idle_cpus(unsigned int num_cpus) 261static void acpi_pad_idle_cpus(unsigned int num_cpus)
257{ 262{
258 get_online_cpus(); 263 get_online_cpus();
259 264
@@ -261,7 +266,6 @@ static int acpi_pad_idle_cpus(unsigned int num_cpus)
261 set_power_saving_task_num(num_cpus); 266 set_power_saving_task_num(num_cpus);
262 267
263 put_online_cpus(); 268 put_online_cpus();
264 return 0;
265} 269}
266 270
267static uint32_t acpi_pad_idle_cpus_num(void) 271static uint32_t acpi_pad_idle_cpus_num(void)
@@ -369,19 +373,21 @@ static void acpi_pad_remove_sysfs(struct acpi_device *device)
369static int acpi_pad_pur(acpi_handle handle, int *num_cpus) 373static int acpi_pad_pur(acpi_handle handle, int *num_cpus)
370{ 374{
371 struct acpi_buffer buffer = {ACPI_ALLOCATE_BUFFER, NULL}; 375 struct acpi_buffer buffer = {ACPI_ALLOCATE_BUFFER, NULL};
372 acpi_status status;
373 union acpi_object *package; 376 union acpi_object *package;
374 int rev, num, ret = -EINVAL; 377 int rev, num, ret = -EINVAL;
375 378
376 status = acpi_evaluate_object(handle, "_PUR", NULL, &buffer); 379 if (ACPI_FAILURE(acpi_evaluate_object(handle, "_PUR", NULL, &buffer)))
377 if (ACPI_FAILURE(status)) 380 return -EINVAL;
381
382 if (!buffer.length || !buffer.pointer)
378 return -EINVAL; 383 return -EINVAL;
384
379 package = buffer.pointer; 385 package = buffer.pointer;
380 if (package->type != ACPI_TYPE_PACKAGE || package->package.count != 2) 386 if (package->type != ACPI_TYPE_PACKAGE || package->package.count != 2)
381 goto out; 387 goto out;
382 rev = package->package.elements[0].integer.value; 388 rev = package->package.elements[0].integer.value;
383 num = package->package.elements[1].integer.value; 389 num = package->package.elements[1].integer.value;
384 if (rev != 1) 390 if (rev != 1 || num < 0)
385 goto out; 391 goto out;
386 *num_cpus = num; 392 *num_cpus = num;
387 ret = 0; 393 ret = 0;
@@ -410,7 +416,7 @@ static void acpi_pad_ost(acpi_handle handle, int stat,
410 416
411static void acpi_pad_handle_notify(acpi_handle handle) 417static void acpi_pad_handle_notify(acpi_handle handle)
412{ 418{
413 int num_cpus, ret; 419 int num_cpus;
414 uint32_t idle_cpus; 420 uint32_t idle_cpus;
415 421
416 mutex_lock(&isolated_cpus_lock); 422 mutex_lock(&isolated_cpus_lock);
@@ -418,12 +424,9 @@ static void acpi_pad_handle_notify(acpi_handle handle)
418 mutex_unlock(&isolated_cpus_lock); 424 mutex_unlock(&isolated_cpus_lock);
419 return; 425 return;
420 } 426 }
421 ret = acpi_pad_idle_cpus(num_cpus); 427 acpi_pad_idle_cpus(num_cpus);
422 idle_cpus = acpi_pad_idle_cpus_num(); 428 idle_cpus = acpi_pad_idle_cpus_num();
423 if (!ret) 429 acpi_pad_ost(handle, 0, idle_cpus);
424 acpi_pad_ost(handle, 0, idle_cpus);
425 else
426 acpi_pad_ost(handle, 1, 0);
427 mutex_unlock(&isolated_cpus_lock); 430 mutex_unlock(&isolated_cpus_lock);
428} 431}
429 432
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index cf761b904e4a..a52126e46307 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -490,9 +490,14 @@ static void acpi_bus_osc_support(void)
490 490
491 capbuf[OSC_QUERY_TYPE] = OSC_QUERY_ENABLE; 491 capbuf[OSC_QUERY_TYPE] = OSC_QUERY_ENABLE;
492 capbuf[OSC_SUPPORT_TYPE] = OSC_SB_PR3_SUPPORT; /* _PR3 is in use */ 492 capbuf[OSC_SUPPORT_TYPE] = OSC_SB_PR3_SUPPORT; /* _PR3 is in use */
493#ifdef CONFIG_ACPI_PROCESSOR_AGGREGATOR 493#if defined(CONFIG_ACPI_PROCESSOR_AGGREGATOR) ||\
494 defined(CONFIG_ACPI_PROCESSOR_AGGREGATOR_MODULE)
494 capbuf[OSC_SUPPORT_TYPE] |= OSC_SB_PAD_SUPPORT; 495 capbuf[OSC_SUPPORT_TYPE] |= OSC_SB_PAD_SUPPORT;
495#endif 496#endif
497
498#if defined(CONFIG_ACPI_PROCESSOR) || defined(CONFIG_ACPI_PROCESSOR_MODULE)
499 capbuf[OSC_SUPPORT_TYPE] |= OSC_SB_PPC_OST_SUPPORT;
500#endif
496 if (ACPI_FAILURE(acpi_get_handle(NULL, "\\_SB", &handle))) 501 if (ACPI_FAILURE(acpi_get_handle(NULL, "\\_SB", &handle)))
497 return; 502 return;
498 if (ACPI_SUCCESS(acpi_run_osc(handle, &context))) 503 if (ACPI_SUCCESS(acpi_run_osc(handle, &context)))
diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c
index bbc2c1315c47..b2586f57e1f5 100644
--- a/drivers/acpi/dock.c
+++ b/drivers/acpi/dock.c
@@ -935,6 +935,7 @@ static int dock_add(acpi_handle handle)
935 struct platform_device *dd; 935 struct platform_device *dd;
936 936
937 id = dock_station_count; 937 id = dock_station_count;
938 memset(&ds, 0, sizeof(ds));
938 dd = platform_device_register_data(NULL, "dock", id, &ds, sizeof(ds)); 939 dd = platform_device_register_data(NULL, "dock", id, &ds, sizeof(ds));
939 if (IS_ERR(dd)) 940 if (IS_ERR(dd))
940 return PTR_ERR(dd); 941 return PTR_ERR(dd);
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index fd1801bdee66..d6471bb6852f 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -201,14 +201,13 @@ unlock:
201 spin_unlock_irqrestore(&ec->curr_lock, flags); 201 spin_unlock_irqrestore(&ec->curr_lock, flags);
202} 202}
203 203
204static void acpi_ec_gpe_query(void *ec_cxt); 204static int acpi_ec_sync_query(struct acpi_ec *ec);
205 205
206static int ec_check_sci(struct acpi_ec *ec, u8 state) 206static int ec_check_sci_sync(struct acpi_ec *ec, u8 state)
207{ 207{
208 if (state & ACPI_EC_FLAG_SCI) { 208 if (state & ACPI_EC_FLAG_SCI) {
209 if (!test_and_set_bit(EC_FLAGS_QUERY_PENDING, &ec->flags)) 209 if (!test_and_set_bit(EC_FLAGS_QUERY_PENDING, &ec->flags))
210 return acpi_os_execute(OSL_EC_BURST_HANDLER, 210 return acpi_ec_sync_query(ec);
211 acpi_ec_gpe_query, ec);
212 } 211 }
213 return 0; 212 return 0;
214} 213}
@@ -249,11 +248,6 @@ static int acpi_ec_transaction_unlocked(struct acpi_ec *ec,
249{ 248{
250 unsigned long tmp; 249 unsigned long tmp;
251 int ret = 0; 250 int ret = 0;
252 pr_debug(PREFIX "transaction start\n");
253 /* disable GPE during transaction if storm is detected */
254 if (test_bit(EC_FLAGS_GPE_STORM, &ec->flags)) {
255 acpi_disable_gpe(NULL, ec->gpe);
256 }
257 if (EC_FLAGS_MSI) 251 if (EC_FLAGS_MSI)
258 udelay(ACPI_EC_MSI_UDELAY); 252 udelay(ACPI_EC_MSI_UDELAY);
259 /* start transaction */ 253 /* start transaction */
@@ -265,20 +259,9 @@ static int acpi_ec_transaction_unlocked(struct acpi_ec *ec,
265 clear_bit(EC_FLAGS_QUERY_PENDING, &ec->flags); 259 clear_bit(EC_FLAGS_QUERY_PENDING, &ec->flags);
266 spin_unlock_irqrestore(&ec->curr_lock, tmp); 260 spin_unlock_irqrestore(&ec->curr_lock, tmp);
267 ret = ec_poll(ec); 261 ret = ec_poll(ec);
268 pr_debug(PREFIX "transaction end\n");
269 spin_lock_irqsave(&ec->curr_lock, tmp); 262 spin_lock_irqsave(&ec->curr_lock, tmp);
270 ec->curr = NULL; 263 ec->curr = NULL;
271 spin_unlock_irqrestore(&ec->curr_lock, tmp); 264 spin_unlock_irqrestore(&ec->curr_lock, tmp);
272 if (test_bit(EC_FLAGS_GPE_STORM, &ec->flags)) {
273 /* check if we received SCI during transaction */
274 ec_check_sci(ec, acpi_ec_read_status(ec));
275 /* it is safe to enable GPE outside of transaction */
276 acpi_enable_gpe(NULL, ec->gpe);
277 } else if (t->irq_count > ACPI_EC_STORM_THRESHOLD) {
278 pr_info(PREFIX "GPE storm detected, "
279 "transactions will use polling mode\n");
280 set_bit(EC_FLAGS_GPE_STORM, &ec->flags);
281 }
282 return ret; 265 return ret;
283} 266}
284 267
@@ -321,7 +304,26 @@ static int acpi_ec_transaction(struct acpi_ec *ec, struct transaction *t)
321 status = -ETIME; 304 status = -ETIME;
322 goto end; 305 goto end;
323 } 306 }
307 pr_debug(PREFIX "transaction start\n");
308 /* disable GPE during transaction if storm is detected */
309 if (test_bit(EC_FLAGS_GPE_STORM, &ec->flags)) {
310 acpi_disable_gpe(NULL, ec->gpe);
311 }
312
324 status = acpi_ec_transaction_unlocked(ec, t); 313 status = acpi_ec_transaction_unlocked(ec, t);
314
315 /* check if we received SCI during transaction */
316 ec_check_sci_sync(ec, acpi_ec_read_status(ec));
317 if (test_bit(EC_FLAGS_GPE_STORM, &ec->flags)) {
318 msleep(1);
319 /* it is safe to enable GPE outside of transaction */
320 acpi_enable_gpe(NULL, ec->gpe);
321 } else if (t->irq_count > ACPI_EC_STORM_THRESHOLD) {
322 pr_info(PREFIX "GPE storm detected, "
323 "transactions will use polling mode\n");
324 set_bit(EC_FLAGS_GPE_STORM, &ec->flags);
325 }
326 pr_debug(PREFIX "transaction end\n");
325end: 327end:
326 if (ec->global_lock) 328 if (ec->global_lock)
327 acpi_release_global_lock(glk); 329 acpi_release_global_lock(glk);
@@ -443,7 +445,7 @@ int ec_transaction(u8 command,
443 445
444EXPORT_SYMBOL(ec_transaction); 446EXPORT_SYMBOL(ec_transaction);
445 447
446static int acpi_ec_query(struct acpi_ec *ec, u8 * data) 448static int acpi_ec_query_unlocked(struct acpi_ec *ec, u8 * data)
447{ 449{
448 int result; 450 int result;
449 u8 d; 451 u8 d;
@@ -452,20 +454,16 @@ static int acpi_ec_query(struct acpi_ec *ec, u8 * data)
452 .wlen = 0, .rlen = 1}; 454 .wlen = 0, .rlen = 1};
453 if (!ec || !data) 455 if (!ec || !data)
454 return -EINVAL; 456 return -EINVAL;
455
456 /* 457 /*
457 * Query the EC to find out which _Qxx method we need to evaluate. 458 * Query the EC to find out which _Qxx method we need to evaluate.
458 * Note that successful completion of the query causes the ACPI_EC_SCI 459 * Note that successful completion of the query causes the ACPI_EC_SCI
459 * bit to be cleared (and thus clearing the interrupt source). 460 * bit to be cleared (and thus clearing the interrupt source).
460 */ 461 */
461 462 result = acpi_ec_transaction_unlocked(ec, &t);
462 result = acpi_ec_transaction(ec, &t);
463 if (result) 463 if (result)
464 return result; 464 return result;
465
466 if (!d) 465 if (!d)
467 return -ENODATA; 466 return -ENODATA;
468
469 *data = d; 467 *data = d;
470 return 0; 468 return 0;
471} 469}
@@ -509,43 +507,79 @@ void acpi_ec_remove_query_handler(struct acpi_ec *ec, u8 query_bit)
509 507
510EXPORT_SYMBOL_GPL(acpi_ec_remove_query_handler); 508EXPORT_SYMBOL_GPL(acpi_ec_remove_query_handler);
511 509
512static void acpi_ec_gpe_query(void *ec_cxt) 510static void acpi_ec_run(void *cxt)
513{ 511{
514 struct acpi_ec *ec = ec_cxt; 512 struct acpi_ec_query_handler *handler = cxt;
515 u8 value = 0; 513 if (!handler)
516 struct acpi_ec_query_handler *handler, copy;
517
518 if (!ec || acpi_ec_query(ec, &value))
519 return; 514 return;
520 mutex_lock(&ec->lock); 515 pr_debug(PREFIX "start query execution\n");
516 if (handler->func)
517 handler->func(handler->data);
518 else if (handler->handle)
519 acpi_evaluate_object(handler->handle, NULL, NULL, NULL);
520 pr_debug(PREFIX "stop query execution\n");
521 kfree(handler);
522}
523
524static int acpi_ec_sync_query(struct acpi_ec *ec)
525{
526 u8 value = 0;
527 int status;
528 struct acpi_ec_query_handler *handler, *copy;
529 if ((status = acpi_ec_query_unlocked(ec, &value)))
530 return status;
521 list_for_each_entry(handler, &ec->list, node) { 531 list_for_each_entry(handler, &ec->list, node) {
522 if (value == handler->query_bit) { 532 if (value == handler->query_bit) {
523 /* have custom handler for this bit */ 533 /* have custom handler for this bit */
524 memcpy(&copy, handler, sizeof(copy)); 534 copy = kmalloc(sizeof(*handler), GFP_KERNEL);
525 mutex_unlock(&ec->lock); 535 if (!copy)
526 if (copy.func) { 536 return -ENOMEM;
527 copy.func(copy.data); 537 memcpy(copy, handler, sizeof(*copy));
528 } else if (copy.handle) { 538 pr_debug(PREFIX "push query execution (0x%2x) on queue\n", value);
529 acpi_evaluate_object(copy.handle, NULL, NULL, NULL); 539 return acpi_os_execute((copy->func) ?
530 } 540 OSL_NOTIFY_HANDLER : OSL_GPE_HANDLER,
531 return; 541 acpi_ec_run, copy);
532 } 542 }
533 } 543 }
544 return 0;
545}
546
547static void acpi_ec_gpe_query(void *ec_cxt)
548{
549 struct acpi_ec *ec = ec_cxt;
550 if (!ec)
551 return;
552 mutex_lock(&ec->lock);
553 acpi_ec_sync_query(ec);
534 mutex_unlock(&ec->lock); 554 mutex_unlock(&ec->lock);
535} 555}
536 556
557static void acpi_ec_gpe_query(void *ec_cxt);
558
559static int ec_check_sci(struct acpi_ec *ec, u8 state)
560{
561 if (state & ACPI_EC_FLAG_SCI) {
562 if (!test_and_set_bit(EC_FLAGS_QUERY_PENDING, &ec->flags)) {
563 pr_debug(PREFIX "push gpe query to the queue\n");
564 return acpi_os_execute(OSL_NOTIFY_HANDLER,
565 acpi_ec_gpe_query, ec);
566 }
567 }
568 return 0;
569}
570
537static u32 acpi_ec_gpe_handler(void *data) 571static u32 acpi_ec_gpe_handler(void *data)
538{ 572{
539 struct acpi_ec *ec = data; 573 struct acpi_ec *ec = data;
540 u8 status;
541 574
542 pr_debug(PREFIX "~~~> interrupt\n"); 575 pr_debug(PREFIX "~~~> interrupt\n");
543 status = acpi_ec_read_status(ec);
544 576
545 advance_transaction(ec, status); 577 advance_transaction(ec, acpi_ec_read_status(ec));
546 if (ec_transaction_done(ec) && (status & ACPI_EC_FLAG_IBF) == 0) 578 if (ec_transaction_done(ec) &&
579 (acpi_ec_read_status(ec) & ACPI_EC_FLAG_IBF) == 0) {
547 wake_up(&ec->wait); 580 wake_up(&ec->wait);
548 ec_check_sci(ec, status); 581 ec_check_sci(ec, acpi_ec_read_status(ec));
582 }
549 return ACPI_INTERRUPT_HANDLED; 583 return ACPI_INTERRUPT_HANDLED;
550} 584}
551 585
diff --git a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
index 394ae89409c2..04b0f007c9b7 100644
--- a/drivers/acpi/pci_link.c
+++ b/drivers/acpi/pci_link.c
@@ -56,7 +56,7 @@ ACPI_MODULE_NAME("pci_link");
56static int acpi_pci_link_add(struct acpi_device *device); 56static int acpi_pci_link_add(struct acpi_device *device);
57static int acpi_pci_link_remove(struct acpi_device *device, int type); 57static int acpi_pci_link_remove(struct acpi_device *device, int type);
58 58
59static struct acpi_device_id link_device_ids[] = { 59static const struct acpi_device_id link_device_ids[] = {
60 {"PNP0C0F", 0}, 60 {"PNP0C0F", 0},
61 {"", 0}, 61 {"", 0},
62}; 62};
diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
index 101cce3681d1..64f55b6db73c 100644
--- a/drivers/acpi/pci_root.c
+++ b/drivers/acpi/pci_root.c
@@ -46,7 +46,7 @@ static int acpi_pci_root_add(struct acpi_device *device);
46static int acpi_pci_root_remove(struct acpi_device *device, int type); 46static int acpi_pci_root_remove(struct acpi_device *device, int type);
47static int acpi_pci_root_start(struct acpi_device *device); 47static int acpi_pci_root_start(struct acpi_device *device);
48 48
49static struct acpi_device_id root_device_ids[] = { 49static const struct acpi_device_id root_device_ids[] = {
50 {"PNP0A03", 0}, 50 {"PNP0A03", 0},
51 {"", 0}, 51 {"", 0},
52}; 52};
diff --git a/drivers/acpi/power.c b/drivers/acpi/power.c
index 22b297916519..0f30c3c1eea4 100644
--- a/drivers/acpi/power.c
+++ b/drivers/acpi/power.c
@@ -65,7 +65,7 @@ static int acpi_power_remove(struct acpi_device *device, int type);
65static int acpi_power_resume(struct acpi_device *device); 65static int acpi_power_resume(struct acpi_device *device);
66static int acpi_power_open_fs(struct inode *inode, struct file *file); 66static int acpi_power_open_fs(struct inode *inode, struct file *file);
67 67
68static struct acpi_device_id power_device_ids[] = { 68static const struct acpi_device_id power_device_ids[] = {
69 {ACPI_POWER_HID, 0}, 69 {ACPI_POWER_HID, 0},
70 {"", 0}, 70 {"", 0},
71}; 71};
diff --git a/drivers/acpi/power_meter.c b/drivers/acpi/power_meter.c
index 2ef7030a0c28..dc4ffadf8122 100644
--- a/drivers/acpi/power_meter.c
+++ b/drivers/acpi/power_meter.c
@@ -64,7 +64,7 @@ static int can_cap_in_hardware(void)
64 return force_cap_on || cap_in_hardware; 64 return force_cap_on || cap_in_hardware;
65} 65}
66 66
67static struct acpi_device_id power_meter_ids[] = { 67static const struct acpi_device_id power_meter_ids[] = {
68 {"ACPI000D", 0}, 68 {"ACPI000D", 0},
69 {"", 0}, 69 {"", 0},
70}; 70};
@@ -534,6 +534,7 @@ static void remove_domain_devices(struct acpi_power_meter_resource *resource)
534 534
535 kfree(resource->domain_devices); 535 kfree(resource->domain_devices);
536 kobject_put(resource->holders_dir); 536 kobject_put(resource->holders_dir);
537 resource->num_domain_devices = 0;
537} 538}
538 539
539static int read_domain_devices(struct acpi_power_meter_resource *resource) 540static int read_domain_devices(struct acpi_power_meter_resource *resource)
@@ -740,7 +741,6 @@ skip_unsafe_cap:
740 741
741 return res; 742 return res;
742error: 743error:
743 remove_domain_devices(resource);
744 remove_attrs(resource); 744 remove_attrs(resource);
745 return res; 745 return res;
746} 746}
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index d1676b1754d9..cc978a8c00b7 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -110,6 +110,14 @@ static struct dmi_system_id __cpuinitdata processor_power_dmi_table[] = {
110 DMI_MATCH(DMI_BIOS_VENDOR,"Phoenix Technologies LTD"), 110 DMI_MATCH(DMI_BIOS_VENDOR,"Phoenix Technologies LTD"),
111 DMI_MATCH(DMI_BIOS_VERSION,"SHE845M0.86C.0013.D.0302131307")}, 111 DMI_MATCH(DMI_BIOS_VERSION,"SHE845M0.86C.0013.D.0302131307")},
112 (void *)2}, 112 (void *)2},
113 { set_max_cstate, "Pavilion zv5000", {
114 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
115 DMI_MATCH(DMI_PRODUCT_NAME,"Pavilion zv5000 (DS502A#ABA)")},
116 (void *)1},
117 { set_max_cstate, "Asus L8400B", {
118 DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."),
119 DMI_MATCH(DMI_PRODUCT_NAME,"L8400B series Notebook PC")},
120 (void *)1},
113 {}, 121 {},
114}; 122};
115 123
@@ -305,6 +313,28 @@ static int acpi_processor_get_power_info_fadt(struct acpi_processor *pr)
305 pr->power.states[ACPI_STATE_C2].latency = acpi_gbl_FADT.C2latency; 313 pr->power.states[ACPI_STATE_C2].latency = acpi_gbl_FADT.C2latency;
306 pr->power.states[ACPI_STATE_C3].latency = acpi_gbl_FADT.C3latency; 314 pr->power.states[ACPI_STATE_C3].latency = acpi_gbl_FADT.C3latency;
307 315
316 /*
317 * FADT specified C2 latency must be less than or equal to
318 * 100 microseconds.
319 */
320 if (acpi_gbl_FADT.C2latency > ACPI_PROCESSOR_MAX_C2_LATENCY) {
321 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
322 "C2 latency too large [%d]\n", acpi_gbl_FADT.C2latency));
323 /* invalidate C2 */
324 pr->power.states[ACPI_STATE_C2].address = 0;
325 }
326
327 /*
328 * FADT supplied C3 latency must be less than or equal to
329 * 1000 microseconds.
330 */
331 if (acpi_gbl_FADT.C3latency > ACPI_PROCESSOR_MAX_C3_LATENCY) {
332 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
333 "C3 latency too large [%d]\n", acpi_gbl_FADT.C3latency));
334 /* invalidate C3 */
335 pr->power.states[ACPI_STATE_C3].address = 0;
336 }
337
308 ACPI_DEBUG_PRINT((ACPI_DB_INFO, 338 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
309 "lvl2[0x%08x] lvl3[0x%08x]\n", 339 "lvl2[0x%08x] lvl3[0x%08x]\n",
310 pr->power.states[ACPI_STATE_C2].address, 340 pr->power.states[ACPI_STATE_C2].address,
@@ -494,33 +524,6 @@ static int acpi_processor_get_power_info_cst(struct acpi_processor *pr)
494 return status; 524 return status;
495} 525}
496 526
497static void acpi_processor_power_verify_c2(struct acpi_processor_cx *cx)
498{
499
500 if (!cx->address)
501 return;
502
503 /*
504 * C2 latency must be less than or equal to 100
505 * microseconds.
506 */
507 else if (cx->latency > ACPI_PROCESSOR_MAX_C2_LATENCY) {
508 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
509 "latency too large [%d]\n", cx->latency));
510 return;
511 }
512
513 /*
514 * Otherwise we've met all of our C2 requirements.
515 * Normalize the C2 latency to expidite policy
516 */
517 cx->valid = 1;
518
519 cx->latency_ticks = cx->latency;
520
521 return;
522}
523
524static void acpi_processor_power_verify_c3(struct acpi_processor *pr, 527static void acpi_processor_power_verify_c3(struct acpi_processor *pr,
525 struct acpi_processor_cx *cx) 528 struct acpi_processor_cx *cx)
526{ 529{
@@ -532,16 +535,6 @@ static void acpi_processor_power_verify_c3(struct acpi_processor *pr,
532 return; 535 return;
533 536
534 /* 537 /*
535 * C3 latency must be less than or equal to 1000
536 * microseconds.
537 */
538 else if (cx->latency > ACPI_PROCESSOR_MAX_C3_LATENCY) {
539 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
540 "latency too large [%d]\n", cx->latency));
541 return;
542 }
543
544 /*
545 * PIIX4 Erratum #18: We don't support C3 when Type-F (fast) 538 * PIIX4 Erratum #18: We don't support C3 when Type-F (fast)
546 * DMA transfers are used by any ISA device to avoid livelock. 539 * DMA transfers are used by any ISA device to avoid livelock.
547 * Note that we could disable Type-F DMA (as recommended by 540 * Note that we could disable Type-F DMA (as recommended by
@@ -629,7 +622,10 @@ static int acpi_processor_power_verify(struct acpi_processor *pr)
629 break; 622 break;
630 623
631 case ACPI_STATE_C2: 624 case ACPI_STATE_C2:
632 acpi_processor_power_verify_c2(cx); 625 if (!cx->address)
626 break;
627 cx->valid = 1;
628 cx->latency_ticks = cx->latency; /* Normalize latency */
633 break; 629 break;
634 630
635 case ACPI_STATE_C3: 631 case ACPI_STATE_C3:
@@ -884,12 +880,14 @@ static int acpi_idle_enter_simple(struct cpuidle_device *dev,
884 return(acpi_idle_enter_c1(dev, state)); 880 return(acpi_idle_enter_c1(dev, state));
885 881
886 local_irq_disable(); 882 local_irq_disable();
887 current_thread_info()->status &= ~TS_POLLING; 883 if (cx->entry_method != ACPI_CSTATE_FFH) {
888 /* 884 current_thread_info()->status &= ~TS_POLLING;
889 * TS_POLLING-cleared state must be visible before we test 885 /*
890 * NEED_RESCHED: 886 * TS_POLLING-cleared state must be visible before we test
891 */ 887 * NEED_RESCHED:
892 smp_mb(); 888 */
889 smp_mb();
890 }
893 891
894 if (unlikely(need_resched())) { 892 if (unlikely(need_resched())) {
895 current_thread_info()->status |= TS_POLLING; 893 current_thread_info()->status |= TS_POLLING;
@@ -969,12 +967,14 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev,
969 } 967 }
970 968
971 local_irq_disable(); 969 local_irq_disable();
972 current_thread_info()->status &= ~TS_POLLING; 970 if (cx->entry_method != ACPI_CSTATE_FFH) {
973 /* 971 current_thread_info()->status &= ~TS_POLLING;
974 * TS_POLLING-cleared state must be visible before we test 972 /*
975 * NEED_RESCHED: 973 * TS_POLLING-cleared state must be visible before we test
976 */ 974 * NEED_RESCHED:
977 smp_mb(); 975 */
976 smp_mb();
977 }
978 978
979 if (unlikely(need_resched())) { 979 if (unlikely(need_resched())) {
980 current_thread_info()->status |= TS_POLLING; 980 current_thread_info()->status |= TS_POLLING;
diff --git a/drivers/acpi/processor_pdc.c b/drivers/acpi/processor_pdc.c
index 30e4dc0cdf30..e306ba9aa34e 100644
--- a/drivers/acpi/processor_pdc.c
+++ b/drivers/acpi/processor_pdc.c
@@ -125,6 +125,8 @@ acpi_processor_eval_pdc(acpi_handle handle, struct acpi_object_list *pdc_in)
125 return status; 125 return status;
126} 126}
127 127
128static int early_pdc_done;
129
128void acpi_processor_set_pdc(acpi_handle handle) 130void acpi_processor_set_pdc(acpi_handle handle)
129{ 131{
130 struct acpi_object_list *obj_list; 132 struct acpi_object_list *obj_list;
@@ -132,6 +134,9 @@ void acpi_processor_set_pdc(acpi_handle handle)
132 if (arch_has_acpi_pdc() == false) 134 if (arch_has_acpi_pdc() == false)
133 return; 135 return;
134 136
137 if (early_pdc_done)
138 return;
139
135 obj_list = acpi_processor_alloc_pdc(); 140 obj_list = acpi_processor_alloc_pdc();
136 if (!obj_list) 141 if (!obj_list)
137 return; 142 return;
@@ -144,6 +149,36 @@ void acpi_processor_set_pdc(acpi_handle handle)
144} 149}
145EXPORT_SYMBOL_GPL(acpi_processor_set_pdc); 150EXPORT_SYMBOL_GPL(acpi_processor_set_pdc);
146 151
152static int early_pdc_optin;
153static int set_early_pdc_optin(const struct dmi_system_id *id)
154{
155 early_pdc_optin = 1;
156 return 0;
157}
158
159static int param_early_pdc_optin(char *s)
160{
161 early_pdc_optin = 1;
162 return 1;
163}
164__setup("acpi_early_pdc_eval", param_early_pdc_optin);
165
166static struct dmi_system_id __cpuinitdata early_pdc_optin_table[] = {
167 {
168 set_early_pdc_optin, "HP Envy", {
169 DMI_MATCH(DMI_BIOS_VENDOR, "Hewlett-Packard"),
170 DMI_MATCH(DMI_PRODUCT_NAME, "HP Envy") }, NULL},
171 {
172 set_early_pdc_optin, "HP Pavilion dv6", {
173 DMI_MATCH(DMI_BIOS_VENDOR, "Hewlett-Packard"),
174 DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv6") }, NULL},
175 {
176 set_early_pdc_optin, "HP Pavilion dv7", {
177 DMI_MATCH(DMI_BIOS_VENDOR, "Hewlett-Packard"),
178 DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv7") }, NULL},
179 {},
180};
181
147static acpi_status 182static acpi_status
148early_init_pdc(acpi_handle handle, u32 lvl, void *context, void **rv) 183early_init_pdc(acpi_handle handle, u32 lvl, void *context, void **rv)
149{ 184{
@@ -151,7 +186,7 @@ early_init_pdc(acpi_handle handle, u32 lvl, void *context, void **rv)
151 return AE_OK; 186 return AE_OK;
152} 187}
153 188
154void acpi_early_processor_set_pdc(void) 189void __init acpi_early_processor_set_pdc(void)
155{ 190{
156 /* 191 /*
157 * Check whether the system is DMI table. If yes, OSPM 192 * Check whether the system is DMI table. If yes, OSPM
@@ -159,7 +194,16 @@ void acpi_early_processor_set_pdc(void)
159 */ 194 */
160 dmi_check_system(processor_idle_dmi_table); 195 dmi_check_system(processor_idle_dmi_table);
161 196
197 /*
198 * Allow systems to opt-in to early _PDC evaluation.
199 */
200 dmi_check_system(early_pdc_optin_table);
201 if (!early_pdc_optin)
202 return;
203
162 acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT, 204 acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT,
163 ACPI_UINT32_MAX, 205 ACPI_UINT32_MAX,
164 early_init_pdc, NULL, NULL, NULL); 206 early_init_pdc, NULL, NULL, NULL);
207
208 early_pdc_done = 1;
165} 209}
diff --git a/drivers/acpi/processor_perflib.c b/drivers/acpi/processor_perflib.c
index 2cabadcc4d8c..a959f6a07508 100644
--- a/drivers/acpi/processor_perflib.c
+++ b/drivers/acpi/processor_perflib.c
@@ -413,7 +413,11 @@ static int acpi_processor_get_performance_info(struct acpi_processor *pr)
413 if (result) 413 if (result)
414 goto update_bios; 414 goto update_bios;
415 415
416 return 0; 416 /* We need to call _PPC once when cpufreq starts */
417 if (ignore_ppc != 1)
418 result = acpi_processor_get_platform_limit(pr);
419
420 return result;
417 421
418 /* 422 /*
419 * Having _PPC but missing frequencies (_PSS, _PCT) is a very good hint that 423 * Having _PPC but missing frequencies (_PSS, _PCT) is a very good hint that
diff --git a/drivers/acpi/processor_thermal.c b/drivers/acpi/processor_thermal.c
index 140c5c5b423c..6deafb4aa0da 100644
--- a/drivers/acpi/processor_thermal.c
+++ b/drivers/acpi/processor_thermal.c
@@ -443,8 +443,7 @@ struct thermal_cooling_device_ops processor_cooling_ops = {
443#ifdef CONFIG_ACPI_PROCFS 443#ifdef CONFIG_ACPI_PROCFS
444static int acpi_processor_limit_seq_show(struct seq_file *seq, void *offset) 444static int acpi_processor_limit_seq_show(struct seq_file *seq, void *offset)
445{ 445{
446 struct acpi_processor *pr = (struct acpi_processor *)seq->private; 446 struct acpi_processor *pr = seq->private;
447
448 447
449 if (!pr) 448 if (!pr)
450 goto end; 449 goto end;
diff --git a/drivers/acpi/sbs.c b/drivers/acpi/sbs.c
index 52b9db8afc20..b16ddbf23a9c 100644
--- a/drivers/acpi/sbs.c
+++ b/drivers/acpi/sbs.c
@@ -822,7 +822,10 @@ static int acpi_battery_add(struct acpi_sbs *sbs, int id)
822 822
823static void acpi_battery_remove(struct acpi_sbs *sbs, int id) 823static void acpi_battery_remove(struct acpi_sbs *sbs, int id)
824{ 824{
825#if defined(CONFIG_ACPI_SYSFS_POWER) || defined(CONFIG_ACPI_PROCFS_POWER)
825 struct acpi_battery *battery = &sbs->battery[id]; 826 struct acpi_battery *battery = &sbs->battery[id];
827#endif
828
826#ifdef CONFIG_ACPI_SYSFS_POWER 829#ifdef CONFIG_ACPI_SYSFS_POWER
827 if (battery->bat.dev) { 830 if (battery->bat.dev) {
828 if (battery->have_sysfs_alarm) 831 if (battery->have_sysfs_alarm)
diff --git a/drivers/acpi/sbshc.c b/drivers/acpi/sbshc.c
index d9339806df45..fd09229282ea 100644
--- a/drivers/acpi/sbshc.c
+++ b/drivers/acpi/sbshc.c
@@ -242,7 +242,7 @@ static int smbus_alarm(void *context)
242 case ACPI_SBS_CHARGER: 242 case ACPI_SBS_CHARGER:
243 case ACPI_SBS_MANAGER: 243 case ACPI_SBS_MANAGER:
244 case ACPI_SBS_BATTERY: 244 case ACPI_SBS_BATTERY:
245 acpi_os_execute(OSL_GPE_HANDLER, 245 acpi_os_execute(OSL_NOTIFY_HANDLER,
246 acpi_smbus_callback, hc); 246 acpi_smbus_callback, hc);
247 default:; 247 default:;
248 } 248 }
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index ff9f6226085d..3e009674f333 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -1336,9 +1336,25 @@ static int acpi_bus_scan(acpi_handle handle, struct acpi_bus_ops *ops,
1336 1336
1337 if (child) 1337 if (child)
1338 *child = device; 1338 *child = device;
1339 return 0; 1339
1340 if (device)
1341 return 0;
1342 else
1343 return -ENODEV;
1340} 1344}
1341 1345
1346/*
1347 * acpi_bus_add and acpi_bus_start
1348 *
1349 * scan a given ACPI tree and (probably recently hot-plugged)
1350 * create and add or starts found devices.
1351 *
1352 * If no devices were found -ENODEV is returned which does not
1353 * mean that this is a real error, there just have been no suitable
1354 * ACPI objects in the table trunk from which the kernel could create
1355 * a device and add/start an appropriate driver.
1356 */
1357
1342int 1358int
1343acpi_bus_add(struct acpi_device **child, 1359acpi_bus_add(struct acpi_device **child,
1344 struct acpi_device *parent, acpi_handle handle, int type) 1360 struct acpi_device *parent, acpi_handle handle, int type)
@@ -1348,8 +1364,7 @@ acpi_bus_add(struct acpi_device **child,
1348 memset(&ops, 0, sizeof(ops)); 1364 memset(&ops, 0, sizeof(ops));
1349 ops.acpi_op_add = 1; 1365 ops.acpi_op_add = 1;
1350 1366
1351 acpi_bus_scan(handle, &ops, child); 1367 return acpi_bus_scan(handle, &ops, child);
1352 return 0;
1353} 1368}
1354EXPORT_SYMBOL(acpi_bus_add); 1369EXPORT_SYMBOL(acpi_bus_add);
1355 1370
@@ -1357,11 +1372,13 @@ int acpi_bus_start(struct acpi_device *device)
1357{ 1372{
1358 struct acpi_bus_ops ops; 1373 struct acpi_bus_ops ops;
1359 1374
1375 if (!device)
1376 return -EINVAL;
1377
1360 memset(&ops, 0, sizeof(ops)); 1378 memset(&ops, 0, sizeof(ops));
1361 ops.acpi_op_start = 1; 1379 ops.acpi_op_start = 1;
1362 1380
1363 acpi_bus_scan(device->handle, &ops, NULL); 1381 return acpi_bus_scan(device->handle, &ops, NULL);
1364 return 0;
1365} 1382}
1366EXPORT_SYMBOL(acpi_bus_start); 1383EXPORT_SYMBOL(acpi_bus_start);
1367 1384
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
index 5f2c379ab7bf..79d33d908b5a 100644
--- a/drivers/acpi/sleep.c
+++ b/drivers/acpi/sleep.c
@@ -81,6 +81,23 @@ static int acpi_sleep_prepare(u32 acpi_state)
81#ifdef CONFIG_ACPI_SLEEP 81#ifdef CONFIG_ACPI_SLEEP
82static u32 acpi_target_sleep_state = ACPI_STATE_S0; 82static u32 acpi_target_sleep_state = ACPI_STATE_S0;
83/* 83/*
84 * According to the ACPI specification the BIOS should make sure that ACPI is
85 * enabled and SCI_EN bit is set on wake-up from S1 - S3 sleep states. Still,
86 * some BIOSes don't do that and therefore we use acpi_enable() to enable ACPI
87 * on such systems during resume. Unfortunately that doesn't help in
88 * particularly pathological cases in which SCI_EN has to be set directly on
89 * resume, although the specification states very clearly that this flag is
90 * owned by the hardware. The set_sci_en_on_resume variable will be set in such
91 * cases.
92 */
93static bool set_sci_en_on_resume;
94
95void __init acpi_set_sci_en_on_resume(void)
96{
97 set_sci_en_on_resume = true;
98}
99
100/*
84 * ACPI 1.0 wants us to execute _PTS before suspending devices, so we allow the 101 * ACPI 1.0 wants us to execute _PTS before suspending devices, so we allow the
85 * user to request that behavior by using the 'acpi_old_suspend_ordering' 102 * user to request that behavior by using the 'acpi_old_suspend_ordering'
86 * kernel command line option that causes the following variable to be set. 103 * kernel command line option that causes the following variable to be set.
@@ -170,18 +187,6 @@ static void acpi_pm_end(void)
170#endif /* CONFIG_ACPI_SLEEP */ 187#endif /* CONFIG_ACPI_SLEEP */
171 188
172#ifdef CONFIG_SUSPEND 189#ifdef CONFIG_SUSPEND
173/*
174 * According to the ACPI specification the BIOS should make sure that ACPI is
175 * enabled and SCI_EN bit is set on wake-up from S1 - S3 sleep states. Still,
176 * some BIOSes don't do that and therefore we use acpi_enable() to enable ACPI
177 * on such systems during resume. Unfortunately that doesn't help in
178 * particularly pathological cases in which SCI_EN has to be set directly on
179 * resume, although the specification states very clearly that this flag is
180 * owned by the hardware. The set_sci_en_on_resume variable will be set in such
181 * cases.
182 */
183static bool set_sci_en_on_resume;
184
185extern void do_suspend_lowlevel(void); 190extern void do_suspend_lowlevel(void);
186 191
187static u32 acpi_suspend_states[] = { 192static u32 acpi_suspend_states[] = {
diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c
index f336bca7c450..8a0ed2800e63 100644
--- a/drivers/acpi/tables.c
+++ b/drivers/acpi/tables.c
@@ -213,7 +213,7 @@ acpi_table_parse_entries(char *id,
213 unsigned long table_end; 213 unsigned long table_end;
214 acpi_size tbl_size; 214 acpi_size tbl_size;
215 215
216 if (acpi_disabled) 216 if (acpi_disabled && !acpi_ht)
217 return -ENODEV; 217 return -ENODEV;
218 218
219 if (!handler) 219 if (!handler)
@@ -280,7 +280,7 @@ int __init acpi_table_parse(char *id, acpi_table_handler handler)
280 struct acpi_table_header *table = NULL; 280 struct acpi_table_header *table = NULL;
281 acpi_size tbl_size; 281 acpi_size tbl_size;
282 282
283 if (acpi_disabled) 283 if (acpi_disabled && !acpi_ht)
284 return -ENODEV; 284 return -ENODEV;
285 285
286 if (!handler) 286 if (!handler)
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index 05dff631591c..b765790b32be 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -78,6 +78,13 @@ MODULE_LICENSE("GPL");
78static int brightness_switch_enabled = 1; 78static int brightness_switch_enabled = 1;
79module_param(brightness_switch_enabled, bool, 0644); 79module_param(brightness_switch_enabled, bool, 0644);
80 80
81/*
82 * By default, we don't allow duplicate ACPI video bus devices
83 * under the same VGA controller
84 */
85static int allow_duplicates;
86module_param(allow_duplicates, bool, 0644);
87
81static int register_count = 0; 88static int register_count = 0;
82static int acpi_video_bus_add(struct acpi_device *device); 89static int acpi_video_bus_add(struct acpi_device *device);
83static int acpi_video_bus_remove(struct acpi_device *device, int type); 90static int acpi_video_bus_remove(struct acpi_device *device, int type);
@@ -999,8 +1006,10 @@ static void acpi_video_device_find_cap(struct acpi_video_device *device)
999 sprintf(name, "acpi_video%d", count++); 1006 sprintf(name, "acpi_video%d", count++);
1000 device->backlight = backlight_device_register(name, 1007 device->backlight = backlight_device_register(name,
1001 NULL, device, &acpi_backlight_ops); 1008 NULL, device, &acpi_backlight_ops);
1002 device->backlight->props.max_brightness = device->brightness->count-3;
1003 kfree(name); 1009 kfree(name);
1010 if (IS_ERR(device->backlight))
1011 return;
1012 device->backlight->props.max_brightness = device->brightness->count-3;
1004 1013
1005 result = sysfs_create_link(&device->backlight->dev.kobj, 1014 result = sysfs_create_link(&device->backlight->dev.kobj,
1006 &device->dev->dev.kobj, "device"); 1015 &device->dev->dev.kobj, "device");
@@ -1979,6 +1988,10 @@ acpi_video_switch_brightness(struct acpi_video_device *device, int event)
1979 unsigned long long level_current, level_next; 1988 unsigned long long level_current, level_next;
1980 int result = -EINVAL; 1989 int result = -EINVAL;
1981 1990
1991 /* no warning message if acpi_backlight=vendor is used */
1992 if (!acpi_video_backlight_support())
1993 return 0;
1994
1982 if (!device->brightness) 1995 if (!device->brightness)
1983 goto out; 1996 goto out;
1984 1997
@@ -2233,11 +2246,47 @@ static int acpi_video_resume(struct acpi_device *device)
2233 return AE_OK; 2246 return AE_OK;
2234} 2247}
2235 2248
2249static acpi_status
2250acpi_video_bus_match(acpi_handle handle, u32 level, void *context,
2251 void **return_value)
2252{
2253 struct acpi_device *device = context;
2254 struct acpi_device *sibling;
2255 int result;
2256
2257 if (handle == device->handle)
2258 return AE_CTRL_TERMINATE;
2259
2260 result = acpi_bus_get_device(handle, &sibling);
2261 if (result)
2262 return AE_OK;
2263
2264 if (!strcmp(acpi_device_name(sibling), ACPI_VIDEO_BUS_NAME))
2265 return AE_ALREADY_EXISTS;
2266
2267 return AE_OK;
2268}
2269
2236static int acpi_video_bus_add(struct acpi_device *device) 2270static int acpi_video_bus_add(struct acpi_device *device)
2237{ 2271{
2238 struct acpi_video_bus *video; 2272 struct acpi_video_bus *video;
2239 struct input_dev *input; 2273 struct input_dev *input;
2240 int error; 2274 int error;
2275 acpi_status status;
2276
2277 status = acpi_walk_namespace(ACPI_TYPE_DEVICE,
2278 device->parent->handle, 1,
2279 acpi_video_bus_match, NULL,
2280 device, NULL);
2281 if (status == AE_ALREADY_EXISTS) {
2282 printk(KERN_WARNING FW_BUG
2283 "Duplicate ACPI video bus devices for the"
2284 " same VGA controller, please try module "
2285 "parameter \"video.allow_duplicates=1\""
2286 "if the current driver doesn't work.\n");
2287 if (!allow_duplicates)
2288 return -ENODEV;
2289 }
2241 2290
2242 video = kzalloc(sizeof(struct acpi_video_bus), GFP_KERNEL); 2291 video = kzalloc(sizeof(struct acpi_video_bus), GFP_KERNEL);
2243 if (!video) 2292 if (!video)
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index b8bea100a160..b34390347c16 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -2868,6 +2868,21 @@ static bool ahci_broken_suspend(struct pci_dev *pdev)
2868 }, 2868 },
2869 .driver_data = "F.23", /* cutoff BIOS version */ 2869 .driver_data = "F.23", /* cutoff BIOS version */
2870 }, 2870 },
2871 /*
2872 * Acer eMachines G725 has the same problem. BIOS
2873 * V1.03 is known to be broken. V3.04 is known to
2874 * work. Inbetween, there are V1.06, V2.06 and V3.03
2875 * that we don't have much idea about. For now,
2876 * blacklist anything older than V3.04.
2877 */
2878 {
2879 .ident = "G725",
2880 .matches = {
2881 DMI_MATCH(DMI_SYS_VENDOR, "eMachines"),
2882 DMI_MATCH(DMI_PRODUCT_NAME, "eMachines G725"),
2883 },
2884 .driver_data = "V3.04", /* cutoff BIOS version */
2885 },
2871 { } /* terminate list */ 2886 { } /* terminate list */
2872 }; 2887 };
2873 const struct dmi_system_id *dmi = dmi_first_match(sysids); 2888 const struct dmi_system_id *dmi = dmi_first_match(sysids);
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
index 19136a7e1064..6f3f2257d0f0 100644
--- a/drivers/ata/ata_piix.c
+++ b/drivers/ata/ata_piix.c
@@ -329,7 +329,7 @@ static struct ata_port_operations ich_pata_ops = {
329}; 329};
330 330
331static struct ata_port_operations piix_sata_ops = { 331static struct ata_port_operations piix_sata_ops = {
332 .inherits = &ata_bmdma_port_ops, 332 .inherits = &ata_bmdma32_port_ops,
333}; 333};
334 334
335static struct ata_port_operations piix_sidpr_sata_ops = { 335static struct ata_port_operations piix_sidpr_sata_ops = {
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 22ff51bdbc8a..6728328f3bea 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -3790,21 +3790,45 @@ int sata_link_debounce(struct ata_link *link, const unsigned long *params,
3790int sata_link_resume(struct ata_link *link, const unsigned long *params, 3790int sata_link_resume(struct ata_link *link, const unsigned long *params,
3791 unsigned long deadline) 3791 unsigned long deadline)
3792{ 3792{
3793 int tries = ATA_LINK_RESUME_TRIES;
3793 u32 scontrol, serror; 3794 u32 scontrol, serror;
3794 int rc; 3795 int rc;
3795 3796
3796 if ((rc = sata_scr_read(link, SCR_CONTROL, &scontrol))) 3797 if ((rc = sata_scr_read(link, SCR_CONTROL, &scontrol)))
3797 return rc; 3798 return rc;
3798 3799
3799 scontrol = (scontrol & 0x0f0) | 0x300; 3800 /*
3801 * Writes to SControl sometimes get ignored under certain
3802 * controllers (ata_piix SIDPR). Make sure DET actually is
3803 * cleared.
3804 */
3805 do {
3806 scontrol = (scontrol & 0x0f0) | 0x300;
3807 if ((rc = sata_scr_write(link, SCR_CONTROL, scontrol)))
3808 return rc;
3809 /*
3810 * Some PHYs react badly if SStatus is pounded
3811 * immediately after resuming. Delay 200ms before
3812 * debouncing.
3813 */
3814 msleep(200);
3800 3815
3801 if ((rc = sata_scr_write(link, SCR_CONTROL, scontrol))) 3816 /* is SControl restored correctly? */
3802 return rc; 3817 if ((rc = sata_scr_read(link, SCR_CONTROL, &scontrol)))
3818 return rc;
3819 } while ((scontrol & 0xf0f) != 0x300 && --tries);
3803 3820
3804 /* Some PHYs react badly if SStatus is pounded immediately 3821 if ((scontrol & 0xf0f) != 0x300) {
3805 * after resuming. Delay 200ms before debouncing. 3822 ata_link_printk(link, KERN_ERR,
3806 */ 3823 "failed to resume link (SControl %X)\n",
3807 msleep(200); 3824 scontrol);
3825 return 0;
3826 }
3827
3828 if (tries < ATA_LINK_RESUME_TRIES)
3829 ata_link_printk(link, KERN_WARNING,
3830 "link resume succeeded after %d retries\n",
3831 ATA_LINK_RESUME_TRIES - tries);
3808 3832
3809 if ((rc = sata_link_debounce(link, params, deadline))) 3833 if ((rc = sata_link_debounce(link, params, deadline)))
3810 return rc; 3834 return rc;
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index 0ea97c942ced..9f6cfac0f2cc 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -2028,8 +2028,9 @@ static void ata_eh_link_autopsy(struct ata_link *link)
2028 qc->err_mask &= ~(AC_ERR_DEV | AC_ERR_OTHER); 2028 qc->err_mask &= ~(AC_ERR_DEV | AC_ERR_OTHER);
2029 2029
2030 /* determine whether the command is worth retrying */ 2030 /* determine whether the command is worth retrying */
2031 if (!(qc->err_mask & AC_ERR_INVALID) && 2031 if (qc->flags & ATA_QCFLAG_IO ||
2032 ((qc->flags & ATA_QCFLAG_IO) || qc->err_mask != AC_ERR_DEV)) 2032 (!(qc->err_mask & AC_ERR_INVALID) &&
2033 qc->err_mask != AC_ERR_DEV))
2033 qc->flags |= ATA_QCFLAG_RETRY; 2034 qc->flags |= ATA_QCFLAG_RETRY;
2034 2035
2035 /* accumulate error info */ 2036 /* accumulate error info */
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
index f4ea5a8c325b..d096fbcbc771 100644
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
@@ -2875,7 +2875,7 @@ static unsigned int ata_scsi_pass_thru(struct ata_queued_cmd *qc)
2875 * write indication (used for PIO/DMA setup), result TF is 2875 * write indication (used for PIO/DMA setup), result TF is
2876 * copied back and we don't whine too much about its failure. 2876 * copied back and we don't whine too much about its failure.
2877 */ 2877 */
2878 tf->flags = ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE; 2878 tf->flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE;
2879 if (scmd->sc_data_direction == DMA_TO_DEVICE) 2879 if (scmd->sc_data_direction == DMA_TO_DEVICE)
2880 tf->flags |= ATA_TFLAG_WRITE; 2880 tf->flags |= ATA_TFLAG_WRITE;
2881 2881
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
index 741065c9da67..730ef3c384ca 100644
--- a/drivers/ata/libata-sff.c
+++ b/drivers/ata/libata-sff.c
@@ -893,6 +893,9 @@ static void ata_pio_sector(struct ata_queued_cmd *qc)
893 do_write); 893 do_write);
894 } 894 }
895 895
896 if (!do_write)
897 flush_dcache_page(page);
898
896 qc->curbytes += qc->sect_size; 899 qc->curbytes += qc->sect_size;
897 qc->cursg_ofs += qc->sect_size; 900 qc->cursg_ofs += qc->sect_size;
898 901
diff --git a/drivers/ata/sata_promise.c b/drivers/ata/sata_promise.c
index 07d8d00b4d34..63306285c843 100644
--- a/drivers/ata/sata_promise.c
+++ b/drivers/ata/sata_promise.c
@@ -862,7 +862,7 @@ static void pdc_error_intr(struct ata_port *ap, struct ata_queued_cmd *qc,
862 if (port_status & PDC_DRIVE_ERR) 862 if (port_status & PDC_DRIVE_ERR)
863 ac_err_mask |= AC_ERR_DEV; 863 ac_err_mask |= AC_ERR_DEV;
864 if (port_status & (PDC_OVERRUN_ERR | PDC_UNDERRUN_ERR)) 864 if (port_status & (PDC_OVERRUN_ERR | PDC_UNDERRUN_ERR))
865 ac_err_mask |= AC_ERR_HSM; 865 ac_err_mask |= AC_ERR_OTHER;
866 if (port_status & (PDC2_ATA_HBA_ERR | PDC2_ATA_DMA_CNT_ERR)) 866 if (port_status & (PDC2_ATA_HBA_ERR | PDC2_ATA_DMA_CNT_ERR))
867 ac_err_mask |= AC_ERR_ATA_BUS; 867 ac_err_mask |= AC_ERR_ATA_BUS;
868 if (port_status & (PDC_PH_ERR | PDC_SH_ERR | PDC_DH_ERR | PDC2_HTO_ERR 868 if (port_status & (PDC_PH_ERR | PDC_SH_ERR | PDC_DH_ERR | PDC2_HTO_ERR
diff --git a/drivers/base/class.c b/drivers/base/class.c
index 161746deab4b..6e2c3b064f53 100644
--- a/drivers/base/class.c
+++ b/drivers/base/class.c
@@ -59,6 +59,8 @@ static void class_release(struct kobject *kobj)
59 else 59 else
60 pr_debug("class '%s' does not have a release() function, " 60 pr_debug("class '%s' does not have a release() function, "
61 "be careful\n", class->name); 61 "be careful\n", class->name);
62
63 kfree(cp);
62} 64}
63 65
64static struct sysfs_ops class_sysfs_ops = { 66static struct sysfs_ops class_sysfs_ops = {
diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c
index 090dd4851301..42ae452b36b0 100644
--- a/drivers/base/devtmpfs.c
+++ b/drivers/base/devtmpfs.c
@@ -354,6 +354,7 @@ int __init devtmpfs_init(void)
354{ 354{
355 int err; 355 int err;
356 struct vfsmount *mnt; 356 struct vfsmount *mnt;
357 char options[] = "mode=0755";
357 358
358 err = register_filesystem(&dev_fs_type); 359 err = register_filesystem(&dev_fs_type);
359 if (err) { 360 if (err) {
@@ -362,7 +363,7 @@ int __init devtmpfs_init(void)
362 return err; 363 return err;
363 } 364 }
364 365
365 mnt = kern_mount_data(&dev_fs_type, "mode=0755"); 366 mnt = kern_mount_data(&dev_fs_type, options);
366 if (IS_ERR(mnt)) { 367 if (IS_ERR(mnt)) {
367 err = PTR_ERR(mnt); 368 err = PTR_ERR(mnt);
368 printk(KERN_ERR "devtmpfs: unable to create devtmpfs %i\n", err); 369 printk(KERN_ERR "devtmpfs: unable to create devtmpfs %i\n", err);
diff --git a/drivers/base/memory.c b/drivers/base/memory.c
index d7d77d4a402c..bd025059711f 100644
--- a/drivers/base/memory.c
+++ b/drivers/base/memory.c
@@ -311,7 +311,7 @@ static SYSDEV_ATTR(removable, 0444, show_mem_removable, NULL);
311static ssize_t 311static ssize_t
312print_block_size(struct class *class, char *buf) 312print_block_size(struct class *class, char *buf)
313{ 313{
314 return sprintf(buf, "%lx\n", (unsigned long)PAGES_PER_SECTION * PAGE_SIZE); 314 return sprintf(buf, "%#lx\n", (unsigned long)PAGES_PER_SECTION * PAGE_SIZE);
315} 315}
316 316
317static CLASS_ATTR(block_size_bytes, 0444, print_block_size, NULL); 317static CLASS_ATTR(block_size_bytes, 0444, print_block_size, NULL);
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c
index 48adf80926a0..a5142bddef41 100644
--- a/drivers/base/power/main.c
+++ b/drivers/base/power/main.c
@@ -446,8 +446,8 @@ EXPORT_SYMBOL_GPL(dpm_resume_noirq);
446 446
447/** 447/**
448 * legacy_resume - Execute a legacy (bus or class) resume callback for device. 448 * legacy_resume - Execute a legacy (bus or class) resume callback for device.
449 * dev: Device to resume. 449 * @dev: Device to resume.
450 * cb: Resume callback to execute. 450 * @cb: Resume callback to execute.
451 */ 451 */
452static int legacy_resume(struct device *dev, int (*cb)(struct device *dev)) 452static int legacy_resume(struct device *dev, int (*cb)(struct device *dev))
453{ 453{
@@ -711,8 +711,9 @@ EXPORT_SYMBOL_GPL(dpm_suspend_noirq);
711 711
712/** 712/**
713 * legacy_suspend - Execute a legacy (bus or class) suspend callback for device. 713 * legacy_suspend - Execute a legacy (bus or class) suspend callback for device.
714 * dev: Device to suspend. 714 * @dev: Device to suspend.
715 * cb: Suspend callback to execute. 715 * @state: PM transition of the system being carried out.
716 * @cb: Suspend callback to execute.
716 */ 717 */
717static int legacy_suspend(struct device *dev, pm_message_t state, 718static int legacy_suspend(struct device *dev, pm_message_t state,
718 int (*cb)(struct device *dev, pm_message_t state)) 719 int (*cb)(struct device *dev, pm_message_t state))
diff --git a/drivers/block/DAC960.c b/drivers/block/DAC960.c
index eb4fa1943944..ce1fa923c414 100644
--- a/drivers/block/DAC960.c
+++ b/drivers/block/DAC960.c
@@ -7101,7 +7101,7 @@ static struct DAC960_privdata DAC960_BA_privdata = {
7101 7101
7102static struct DAC960_privdata DAC960_LP_privdata = { 7102static struct DAC960_privdata DAC960_LP_privdata = {
7103 .HardwareType = DAC960_LP_Controller, 7103 .HardwareType = DAC960_LP_Controller,
7104 .FirmwareType = DAC960_LP_Controller, 7104 .FirmwareType = DAC960_V2_Controller,
7105 .InterruptHandler = DAC960_LP_InterruptHandler, 7105 .InterruptHandler = DAC960_LP_InterruptHandler,
7106 .MemoryWindowSize = DAC960_LP_RegisterWindowSize, 7106 .MemoryWindowSize = DAC960_LP_RegisterWindowSize,
7107}; 7107};
diff --git a/drivers/block/aoe/aoecmd.c b/drivers/block/aoe/aoecmd.c
index 13bb69d2abb3..64a223b0cc22 100644
--- a/drivers/block/aoe/aoecmd.c
+++ b/drivers/block/aoe/aoecmd.c
@@ -735,21 +735,6 @@ 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
753void 738void
754aoecmd_ata_rsp(struct sk_buff *skb) 739aoecmd_ata_rsp(struct sk_buff *skb)
755{ 740{
@@ -871,7 +856,7 @@ aoecmd_ata_rsp(struct sk_buff *skb)
871 if (buf->flags & BUFFL_FAIL) 856 if (buf->flags & BUFFL_FAIL)
872 bio_endio(buf->bio, -EIO); 857 bio_endio(buf->bio, -EIO);
873 else { 858 else {
874 killalias(buf->bio); 859 bio_flush_dcache_pages(buf->bio);
875 bio_endio(buf->bio, 0); 860 bio_endio(buf->bio, 0);
876 } 861 }
877 mempool_free(buf, d->bufpool); 862 mempool_free(buf, d->bufpool);
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index 873e594860d3..9291614ac6b7 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -337,6 +337,9 @@ static int cciss_seq_show(struct seq_file *seq, void *v)
337 if (*pos > h->highest_lun) 337 if (*pos > h->highest_lun)
338 return 0; 338 return 0;
339 339
340 if (drv == NULL) /* it's possible for h->drv[] to have holes. */
341 return 0;
342
340 if (drv->heads == 0) 343 if (drv->heads == 0)
341 return 0; 344 return 0;
342 345
diff --git a/drivers/block/drbd/Kconfig b/drivers/block/drbd/Kconfig
index f4acd04ebeef..df0983787390 100644
--- a/drivers/block/drbd/Kconfig
+++ b/drivers/block/drbd/Kconfig
@@ -3,7 +3,7 @@
3# 3#
4 4
5comment "DRBD disabled because PROC_FS, INET or CONNECTOR not selected" 5comment "DRBD disabled because PROC_FS, INET or CONNECTOR not selected"
6 depends on !PROC_FS || !INET || !CONNECTOR 6 depends on PROC_FS='n' || INET='n' || CONNECTOR='n'
7 7
8config BLK_DEV_DRBD 8config BLK_DEV_DRBD
9 tristate "DRBD Distributed Replicated Block Device support" 9 tristate "DRBD Distributed Replicated Block Device support"
diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h
index 2312d782fe99..2bf3a6ef3684 100644
--- a/drivers/block/drbd/drbd_int.h
+++ b/drivers/block/drbd/drbd_int.h
@@ -1275,7 +1275,7 @@ struct bm_extent {
1275#if DRBD_MAX_SECTORS_BM < DRBD_MAX_SECTORS_32 1275#if DRBD_MAX_SECTORS_BM < DRBD_MAX_SECTORS_32
1276#define DRBD_MAX_SECTORS DRBD_MAX_SECTORS_BM 1276#define DRBD_MAX_SECTORS DRBD_MAX_SECTORS_BM
1277#define DRBD_MAX_SECTORS_FLEX DRBD_MAX_SECTORS_BM 1277#define DRBD_MAX_SECTORS_FLEX DRBD_MAX_SECTORS_BM
1278#elif !defined(CONFIG_LBD) && BITS_PER_LONG == 32 1278#elif !defined(CONFIG_LBDAF) && BITS_PER_LONG == 32
1279#define DRBD_MAX_SECTORS DRBD_MAX_SECTORS_32 1279#define DRBD_MAX_SECTORS DRBD_MAX_SECTORS_32
1280#define DRBD_MAX_SECTORS_FLEX DRBD_MAX_SECTORS_32 1280#define DRBD_MAX_SECTORS_FLEX DRBD_MAX_SECTORS_32
1281#else 1281#else
@@ -1371,10 +1371,9 @@ extern int is_valid_ar_handle(struct drbd_request *, sector_t);
1371extern void drbd_suspend_io(struct drbd_conf *mdev); 1371extern void drbd_suspend_io(struct drbd_conf *mdev);
1372extern void drbd_resume_io(struct drbd_conf *mdev); 1372extern void drbd_resume_io(struct drbd_conf *mdev);
1373extern char *ppsize(char *buf, unsigned long long size); 1373extern char *ppsize(char *buf, unsigned long long size);
1374extern sector_t drbd_new_dev_size(struct drbd_conf *, 1374extern sector_t drbd_new_dev_size(struct drbd_conf *, struct drbd_backing_dev *, int);
1375 struct drbd_backing_dev *);
1376enum determine_dev_size { dev_size_error = -1, unchanged = 0, shrunk = 1, grew = 2 }; 1375enum determine_dev_size { dev_size_error = -1, unchanged = 0, shrunk = 1, grew = 2 };
1377extern enum determine_dev_size drbd_determin_dev_size(struct drbd_conf *) __must_hold(local); 1376extern enum determine_dev_size drbd_determin_dev_size(struct drbd_conf *, int force) __must_hold(local);
1378extern void resync_after_online_grow(struct drbd_conf *); 1377extern void resync_after_online_grow(struct drbd_conf *);
1379extern void drbd_setup_queue_param(struct drbd_conf *mdev, unsigned int) __must_hold(local); 1378extern void drbd_setup_queue_param(struct drbd_conf *mdev, unsigned int) __must_hold(local);
1380extern int drbd_set_role(struct drbd_conf *mdev, enum drbd_role new_role, 1379extern int drbd_set_role(struct drbd_conf *mdev, enum drbd_role new_role,
@@ -1490,7 +1489,7 @@ void drbd_bump_write_ordering(struct drbd_conf *mdev, enum write_ordering_e wo);
1490 1489
1491/* drbd_proc.c */ 1490/* drbd_proc.c */
1492extern struct proc_dir_entry *drbd_proc; 1491extern struct proc_dir_entry *drbd_proc;
1493extern struct file_operations drbd_proc_fops; 1492extern const struct file_operations drbd_proc_fops;
1494extern const char *drbd_conn_str(enum drbd_conns s); 1493extern const char *drbd_conn_str(enum drbd_conns s);
1495extern const char *drbd_role_str(enum drbd_role s); 1494extern const char *drbd_role_str(enum drbd_role s);
1496 1495
diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c
index 157d1e4343c2..ab871e00ffc5 100644
--- a/drivers/block/drbd/drbd_main.c
+++ b/drivers/block/drbd/drbd_main.c
@@ -27,7 +27,6 @@
27 */ 27 */
28 28
29#include <linux/module.h> 29#include <linux/module.h>
30#include <linux/version.h>
31#include <linux/drbd.h> 30#include <linux/drbd.h>
32#include <asm/uaccess.h> 31#include <asm/uaccess.h>
33#include <asm/types.h> 32#include <asm/types.h>
@@ -151,7 +150,7 @@ wait_queue_head_t drbd_pp_wait;
151 150
152DEFINE_RATELIMIT_STATE(drbd_ratelimit_state, 5 * HZ, 5); 151DEFINE_RATELIMIT_STATE(drbd_ratelimit_state, 5 * HZ, 5);
153 152
154static struct block_device_operations drbd_ops = { 153static const struct block_device_operations drbd_ops = {
155 .owner = THIS_MODULE, 154 .owner = THIS_MODULE,
156 .open = drbd_open, 155 .open = drbd_open,
157 .release = drbd_release, 156 .release = drbd_release,
@@ -1299,6 +1298,7 @@ static void after_state_ch(struct drbd_conf *mdev, union drbd_state os,
1299 dev_err(DEV, "Sending state in drbd_io_error() failed\n"); 1298 dev_err(DEV, "Sending state in drbd_io_error() failed\n");
1300 } 1299 }
1301 1300
1301 wait_event(mdev->misc_wait, !atomic_read(&mdev->local_cnt));
1302 lc_destroy(mdev->resync); 1302 lc_destroy(mdev->resync);
1303 mdev->resync = NULL; 1303 mdev->resync = NULL;
1304 lc_destroy(mdev->act_log); 1304 lc_destroy(mdev->act_log);
@@ -2973,7 +2973,6 @@ struct drbd_conf *drbd_new_device(unsigned int minor)
2973 goto out_no_q; 2973 goto out_no_q;
2974 mdev->rq_queue = q; 2974 mdev->rq_queue = q;
2975 q->queuedata = mdev; 2975 q->queuedata = mdev;
2976 blk_queue_max_segment_size(q, DRBD_MAX_SEGMENT_SIZE);
2977 2976
2978 disk = alloc_disk(1); 2977 disk = alloc_disk(1);
2979 if (!disk) 2978 if (!disk)
@@ -2997,6 +2996,7 @@ struct drbd_conf *drbd_new_device(unsigned int minor)
2997 q->backing_dev_info.congested_data = mdev; 2996 q->backing_dev_info.congested_data = mdev;
2998 2997
2999 blk_queue_make_request(q, drbd_make_request_26); 2998 blk_queue_make_request(q, drbd_make_request_26);
2999 blk_queue_max_segment_size(q, DRBD_MAX_SEGMENT_SIZE);
3000 blk_queue_bounce_limit(q, BLK_BOUNCE_ANY); 3000 blk_queue_bounce_limit(q, BLK_BOUNCE_ANY);
3001 blk_queue_merge_bvec(q, drbd_merge_bvec); 3001 blk_queue_merge_bvec(q, drbd_merge_bvec);
3002 q->queue_lock = &mdev->req_lock; /* needed since we use */ 3002 q->queue_lock = &mdev->req_lock; /* needed since we use */
@@ -3623,7 +3623,7 @@ _drbd_fault_random(struct fault_random_state *rsp)
3623{ 3623{
3624 long refresh; 3624 long refresh;
3625 3625
3626 if (--rsp->count < 0) { 3626 if (!rsp->count--) {
3627 get_random_bytes(&refresh, sizeof(refresh)); 3627 get_random_bytes(&refresh, sizeof(refresh));
3628 rsp->state += refresh; 3628 rsp->state += refresh;
3629 rsp->count = FAULT_RANDOM_REFRESH; 3629 rsp->count = FAULT_RANDOM_REFRESH;
diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c
index 4e0726aa53b0..1292e0620663 100644
--- a/drivers/block/drbd/drbd_nl.c
+++ b/drivers/block/drbd/drbd_nl.c
@@ -510,7 +510,7 @@ void drbd_resume_io(struct drbd_conf *mdev)
510 * Returns 0 on success, negative return values indicate errors. 510 * Returns 0 on success, negative return values indicate errors.
511 * You should call drbd_md_sync() after calling this function. 511 * You should call drbd_md_sync() after calling this function.
512 */ 512 */
513enum determine_dev_size drbd_determin_dev_size(struct drbd_conf *mdev) __must_hold(local) 513enum determine_dev_size drbd_determin_dev_size(struct drbd_conf *mdev, int force) __must_hold(local)
514{ 514{
515 sector_t prev_first_sect, prev_size; /* previous meta location */ 515 sector_t prev_first_sect, prev_size; /* previous meta location */
516 sector_t la_size; 516 sector_t la_size;
@@ -541,7 +541,7 @@ enum determine_dev_size drbd_determin_dev_size(struct drbd_conf *mdev) __must_ho
541 /* TODO: should only be some assert here, not (re)init... */ 541 /* TODO: should only be some assert here, not (re)init... */
542 drbd_md_set_sector_offsets(mdev, mdev->ldev); 542 drbd_md_set_sector_offsets(mdev, mdev->ldev);
543 543
544 size = drbd_new_dev_size(mdev, mdev->ldev); 544 size = drbd_new_dev_size(mdev, mdev->ldev, force);
545 545
546 if (drbd_get_capacity(mdev->this_bdev) != size || 546 if (drbd_get_capacity(mdev->this_bdev) != size ||
547 drbd_bm_capacity(mdev) != size) { 547 drbd_bm_capacity(mdev) != size) {
@@ -596,7 +596,7 @@ out:
596} 596}
597 597
598sector_t 598sector_t
599drbd_new_dev_size(struct drbd_conf *mdev, struct drbd_backing_dev *bdev) 599drbd_new_dev_size(struct drbd_conf *mdev, struct drbd_backing_dev *bdev, int assume_peer_has_space)
600{ 600{
601 sector_t p_size = mdev->p_size; /* partner's disk size. */ 601 sector_t p_size = mdev->p_size; /* partner's disk size. */
602 sector_t la_size = bdev->md.la_size_sect; /* last agreed size. */ 602 sector_t la_size = bdev->md.la_size_sect; /* last agreed size. */
@@ -606,6 +606,11 @@ drbd_new_dev_size(struct drbd_conf *mdev, struct drbd_backing_dev *bdev)
606 606
607 m_size = drbd_get_max_capacity(bdev); 607 m_size = drbd_get_max_capacity(bdev);
608 608
609 if (mdev->state.conn < C_CONNECTED && assume_peer_has_space) {
610 dev_warn(DEV, "Resize while not connected was forced by the user!\n");
611 p_size = m_size;
612 }
613
609 if (p_size && m_size) { 614 if (p_size && m_size) {
610 size = min_t(sector_t, p_size, m_size); 615 size = min_t(sector_t, p_size, m_size);
611 } else { 616 } else {
@@ -965,7 +970,7 @@ static int drbd_nl_disk_conf(struct drbd_conf *mdev, struct drbd_nl_cfg_req *nlp
965 970
966 /* Prevent shrinking of consistent devices ! */ 971 /* Prevent shrinking of consistent devices ! */
967 if (drbd_md_test_flag(nbc, MDF_CONSISTENT) && 972 if (drbd_md_test_flag(nbc, MDF_CONSISTENT) &&
968 drbd_new_dev_size(mdev, nbc) < nbc->md.la_size_sect) { 973 drbd_new_dev_size(mdev, nbc, 0) < nbc->md.la_size_sect) {
969 dev_warn(DEV, "refusing to truncate a consistent device\n"); 974 dev_warn(DEV, "refusing to truncate a consistent device\n");
970 retcode = ERR_DISK_TO_SMALL; 975 retcode = ERR_DISK_TO_SMALL;
971 goto force_diskless_dec; 976 goto force_diskless_dec;
@@ -1052,7 +1057,7 @@ static int drbd_nl_disk_conf(struct drbd_conf *mdev, struct drbd_nl_cfg_req *nlp
1052 !drbd_md_test_flag(mdev->ldev, MDF_CONNECTED_IND)) 1057 !drbd_md_test_flag(mdev->ldev, MDF_CONNECTED_IND))
1053 set_bit(USE_DEGR_WFC_T, &mdev->flags); 1058 set_bit(USE_DEGR_WFC_T, &mdev->flags);
1054 1059
1055 dd = drbd_determin_dev_size(mdev); 1060 dd = drbd_determin_dev_size(mdev, 0);
1056 if (dd == dev_size_error) { 1061 if (dd == dev_size_error) {
1057 retcode = ERR_NOMEM_BITMAP; 1062 retcode = ERR_NOMEM_BITMAP;
1058 goto force_diskless_dec; 1063 goto force_diskless_dec;
@@ -1271,7 +1276,7 @@ static int drbd_nl_net_conf(struct drbd_conf *mdev, struct drbd_nl_cfg_req *nlp,
1271 goto fail; 1276 goto fail;
1272 } 1277 }
1273 1278
1274 if (crypto_tfm_alg_type(crypto_hash_tfm(tfm)) != CRYPTO_ALG_TYPE_SHASH) { 1279 if (!drbd_crypto_is_hash(crypto_hash_tfm(tfm))) {
1275 retcode = ERR_AUTH_ALG_ND; 1280 retcode = ERR_AUTH_ALG_ND;
1276 goto fail; 1281 goto fail;
1277 } 1282 }
@@ -1504,7 +1509,7 @@ static int drbd_nl_resize(struct drbd_conf *mdev, struct drbd_nl_cfg_req *nlp,
1504 } 1509 }
1505 1510
1506 mdev->ldev->dc.disk_size = (sector_t)rs.resize_size; 1511 mdev->ldev->dc.disk_size = (sector_t)rs.resize_size;
1507 dd = drbd_determin_dev_size(mdev); 1512 dd = drbd_determin_dev_size(mdev, rs.resize_force);
1508 drbd_md_sync(mdev); 1513 drbd_md_sync(mdev);
1509 put_ldev(mdev); 1514 put_ldev(mdev);
1510 if (dd == dev_size_error) { 1515 if (dd == dev_size_error) {
diff --git a/drivers/block/drbd/drbd_proc.c b/drivers/block/drbd/drbd_proc.c
index bdd0b4943b10..df8ad9660d8f 100644
--- a/drivers/block/drbd/drbd_proc.c
+++ b/drivers/block/drbd/drbd_proc.c
@@ -38,7 +38,7 @@ static int drbd_proc_open(struct inode *inode, struct file *file);
38 38
39 39
40struct proc_dir_entry *drbd_proc; 40struct proc_dir_entry *drbd_proc;
41struct file_operations drbd_proc_fops = { 41const struct file_operations drbd_proc_fops = {
42 .owner = THIS_MODULE, 42 .owner = THIS_MODULE,
43 .open = drbd_proc_open, 43 .open = drbd_proc_open,
44 .read = seq_read, 44 .read = seq_read,
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
index c548f24f54a1..d065c646b35a 100644
--- a/drivers/block/drbd/drbd_receiver.c
+++ b/drivers/block/drbd/drbd_receiver.c
@@ -28,7 +28,6 @@
28#include <asm/uaccess.h> 28#include <asm/uaccess.h>
29#include <net/sock.h> 29#include <net/sock.h>
30 30
31#include <linux/version.h>
32#include <linux/drbd.h> 31#include <linux/drbd.h>
33#include <linux/fs.h> 32#include <linux/fs.h>
34#include <linux/file.h> 33#include <linux/file.h>
@@ -879,9 +878,13 @@ retry:
879 878
880 if (mdev->cram_hmac_tfm) { 879 if (mdev->cram_hmac_tfm) {
881 /* drbd_request_state(mdev, NS(conn, WFAuth)); */ 880 /* drbd_request_state(mdev, NS(conn, WFAuth)); */
882 if (!drbd_do_auth(mdev)) { 881 switch (drbd_do_auth(mdev)) {
882 case -1:
883 dev_err(DEV, "Authentication of peer failed\n"); 883 dev_err(DEV, "Authentication of peer failed\n");
884 return -1; 884 return -1;
885 case 0:
886 dev_err(DEV, "Authentication of peer failed, trying again.\n");
887 return 0;
885 } 888 }
886 } 889 }
887 890
@@ -1202,10 +1205,11 @@ static int receive_Barrier(struct drbd_conf *mdev, struct p_header *h)
1202 1205
1203 case WO_bdev_flush: 1206 case WO_bdev_flush:
1204 case WO_drain_io: 1207 case WO_drain_io:
1205 D_ASSERT(rv == FE_STILL_LIVE); 1208 if (rv == FE_STILL_LIVE) {
1206 set_bit(DE_BARRIER_IN_NEXT_EPOCH_ISSUED, &mdev->current_epoch->flags); 1209 set_bit(DE_BARRIER_IN_NEXT_EPOCH_ISSUED, &mdev->current_epoch->flags);
1207 drbd_wait_ee_list_empty(mdev, &mdev->active_ee); 1210 drbd_wait_ee_list_empty(mdev, &mdev->active_ee);
1208 rv = drbd_flush_after_epoch(mdev, mdev->current_epoch); 1211 rv = drbd_flush_after_epoch(mdev, mdev->current_epoch);
1212 }
1209 if (rv == FE_RECYCLED) 1213 if (rv == FE_RECYCLED)
1210 return TRUE; 1214 return TRUE;
1211 1215
@@ -1220,7 +1224,7 @@ static int receive_Barrier(struct drbd_conf *mdev, struct p_header *h)
1220 epoch = kmalloc(sizeof(struct drbd_epoch), GFP_NOIO); 1224 epoch = kmalloc(sizeof(struct drbd_epoch), GFP_NOIO);
1221 if (!epoch) { 1225 if (!epoch) {
1222 dev_warn(DEV, "Allocation of an epoch failed, slowing down\n"); 1226 dev_warn(DEV, "Allocation of an epoch failed, slowing down\n");
1223 issue_flush = !test_and_set_bit(DE_BARRIER_IN_NEXT_EPOCH_ISSUED, &epoch->flags); 1227 issue_flush = !test_and_set_bit(DE_BARRIER_IN_NEXT_EPOCH_ISSUED, &mdev->current_epoch->flags);
1224 drbd_wait_ee_list_empty(mdev, &mdev->active_ee); 1228 drbd_wait_ee_list_empty(mdev, &mdev->active_ee);
1225 if (issue_flush) { 1229 if (issue_flush) {
1226 rv = drbd_flush_after_epoch(mdev, mdev->current_epoch); 1230 rv = drbd_flush_after_epoch(mdev, mdev->current_epoch);
@@ -2866,7 +2870,7 @@ static int receive_sizes(struct drbd_conf *mdev, struct p_header *h)
2866 2870
2867 /* Never shrink a device with usable data during connect. 2871 /* Never shrink a device with usable data during connect.
2868 But allow online shrinking if we are connected. */ 2872 But allow online shrinking if we are connected. */
2869 if (drbd_new_dev_size(mdev, mdev->ldev) < 2873 if (drbd_new_dev_size(mdev, mdev->ldev, 0) <
2870 drbd_get_capacity(mdev->this_bdev) && 2874 drbd_get_capacity(mdev->this_bdev) &&
2871 mdev->state.disk >= D_OUTDATED && 2875 mdev->state.disk >= D_OUTDATED &&
2872 mdev->state.conn < C_CONNECTED) { 2876 mdev->state.conn < C_CONNECTED) {
@@ -2881,7 +2885,7 @@ static int receive_sizes(struct drbd_conf *mdev, struct p_header *h)
2881#undef min_not_zero 2885#undef min_not_zero
2882 2886
2883 if (get_ldev(mdev)) { 2887 if (get_ldev(mdev)) {
2884 dd = drbd_determin_dev_size(mdev); 2888 dd = drbd_determin_dev_size(mdev, 0);
2885 put_ldev(mdev); 2889 put_ldev(mdev);
2886 if (dd == dev_size_error) 2890 if (dd == dev_size_error)
2887 return FALSE; 2891 return FALSE;
@@ -3831,10 +3835,17 @@ static int drbd_do_auth(struct drbd_conf *mdev)
3831{ 3835{
3832 dev_err(DEV, "This kernel was build without CONFIG_CRYPTO_HMAC.\n"); 3836 dev_err(DEV, "This kernel was build without CONFIG_CRYPTO_HMAC.\n");
3833 dev_err(DEV, "You need to disable 'cram-hmac-alg' in drbd.conf.\n"); 3837 dev_err(DEV, "You need to disable 'cram-hmac-alg' in drbd.conf.\n");
3834 return 0; 3838 return -1;
3835} 3839}
3836#else 3840#else
3837#define CHALLENGE_LEN 64 3841#define CHALLENGE_LEN 64
3842
3843/* Return value:
3844 1 - auth succeeded,
3845 0 - failed, try again (network error),
3846 -1 - auth failed, don't try again.
3847*/
3848
3838static int drbd_do_auth(struct drbd_conf *mdev) 3849static int drbd_do_auth(struct drbd_conf *mdev)
3839{ 3850{
3840 char my_challenge[CHALLENGE_LEN]; /* 64 Bytes... */ 3851 char my_challenge[CHALLENGE_LEN]; /* 64 Bytes... */
@@ -3855,7 +3866,7 @@ static int drbd_do_auth(struct drbd_conf *mdev)
3855 (u8 *)mdev->net_conf->shared_secret, key_len); 3866 (u8 *)mdev->net_conf->shared_secret, key_len);
3856 if (rv) { 3867 if (rv) {
3857 dev_err(DEV, "crypto_hash_setkey() failed with %d\n", rv); 3868 dev_err(DEV, "crypto_hash_setkey() failed with %d\n", rv);
3858 rv = 0; 3869 rv = -1;
3859 goto fail; 3870 goto fail;
3860 } 3871 }
3861 3872
@@ -3878,14 +3889,14 @@ static int drbd_do_auth(struct drbd_conf *mdev)
3878 3889
3879 if (p.length > CHALLENGE_LEN*2) { 3890 if (p.length > CHALLENGE_LEN*2) {
3880 dev_err(DEV, "expected AuthChallenge payload too big.\n"); 3891 dev_err(DEV, "expected AuthChallenge payload too big.\n");
3881 rv = 0; 3892 rv = -1;
3882 goto fail; 3893 goto fail;
3883 } 3894 }
3884 3895
3885 peers_ch = kmalloc(p.length, GFP_NOIO); 3896 peers_ch = kmalloc(p.length, GFP_NOIO);
3886 if (peers_ch == NULL) { 3897 if (peers_ch == NULL) {
3887 dev_err(DEV, "kmalloc of peers_ch failed\n"); 3898 dev_err(DEV, "kmalloc of peers_ch failed\n");
3888 rv = 0; 3899 rv = -1;
3889 goto fail; 3900 goto fail;
3890 } 3901 }
3891 3902
@@ -3901,7 +3912,7 @@ static int drbd_do_auth(struct drbd_conf *mdev)
3901 response = kmalloc(resp_size, GFP_NOIO); 3912 response = kmalloc(resp_size, GFP_NOIO);
3902 if (response == NULL) { 3913 if (response == NULL) {
3903 dev_err(DEV, "kmalloc of response failed\n"); 3914 dev_err(DEV, "kmalloc of response failed\n");
3904 rv = 0; 3915 rv = -1;
3905 goto fail; 3916 goto fail;
3906 } 3917 }
3907 3918
@@ -3911,7 +3922,7 @@ static int drbd_do_auth(struct drbd_conf *mdev)
3911 rv = crypto_hash_digest(&desc, &sg, sg.length, response); 3922 rv = crypto_hash_digest(&desc, &sg, sg.length, response);
3912 if (rv) { 3923 if (rv) {
3913 dev_err(DEV, "crypto_hash_digest() failed with %d\n", rv); 3924 dev_err(DEV, "crypto_hash_digest() failed with %d\n", rv);
3914 rv = 0; 3925 rv = -1;
3915 goto fail; 3926 goto fail;
3916 } 3927 }
3917 3928
@@ -3945,9 +3956,9 @@ static int drbd_do_auth(struct drbd_conf *mdev)
3945 } 3956 }
3946 3957
3947 right_response = kmalloc(resp_size, GFP_NOIO); 3958 right_response = kmalloc(resp_size, GFP_NOIO);
3948 if (response == NULL) { 3959 if (right_response == NULL) {
3949 dev_err(DEV, "kmalloc of right_response failed\n"); 3960 dev_err(DEV, "kmalloc of right_response failed\n");
3950 rv = 0; 3961 rv = -1;
3951 goto fail; 3962 goto fail;
3952 } 3963 }
3953 3964
@@ -3956,7 +3967,7 @@ static int drbd_do_auth(struct drbd_conf *mdev)
3956 rv = crypto_hash_digest(&desc, &sg, sg.length, right_response); 3967 rv = crypto_hash_digest(&desc, &sg, sg.length, right_response);
3957 if (rv) { 3968 if (rv) {
3958 dev_err(DEV, "crypto_hash_digest() failed with %d\n", rv); 3969 dev_err(DEV, "crypto_hash_digest() failed with %d\n", rv);
3959 rv = 0; 3970 rv = -1;
3960 goto fail; 3971 goto fail;
3961 } 3972 }
3962 3973
@@ -3965,6 +3976,8 @@ static int drbd_do_auth(struct drbd_conf *mdev)
3965 if (rv) 3976 if (rv)
3966 dev_info(DEV, "Peer authenticated using %d bytes of '%s' HMAC\n", 3977 dev_info(DEV, "Peer authenticated using %d bytes of '%s' HMAC\n",
3967 resp_size, mdev->net_conf->cram_hmac_alg); 3978 resp_size, mdev->net_conf->cram_hmac_alg);
3979 else
3980 rv = -1;
3968 3981
3969 fail: 3982 fail:
3970 kfree(peers_ch); 3983 kfree(peers_ch);
diff --git a/drivers/block/drbd/drbd_worker.c b/drivers/block/drbd/drbd_worker.c
index ed8796f1112d..b453c2bca3be 100644
--- a/drivers/block/drbd/drbd_worker.c
+++ b/drivers/block/drbd/drbd_worker.c
@@ -24,7 +24,6 @@
24 */ 24 */
25 25
26#include <linux/module.h> 26#include <linux/module.h>
27#include <linux/version.h>
28#include <linux/drbd.h> 27#include <linux/drbd.h>
29#include <linux/sched.h> 28#include <linux/sched.h>
30#include <linux/smp_lock.h> 29#include <linux/smp_lock.h>
@@ -34,7 +33,6 @@
34#include <linux/mm_inline.h> 33#include <linux/mm_inline.h>
35#include <linux/slab.h> 34#include <linux/slab.h>
36#include <linux/random.h> 35#include <linux/random.h>
37#include <linux/mm.h>
38#include <linux/string.h> 36#include <linux/string.h>
39#include <linux/scatterlist.h> 37#include <linux/scatterlist.h>
40 38
diff --git a/drivers/block/mg_disk.c b/drivers/block/mg_disk.c
index e0339aaa1815..02b2583df7fc 100644
--- a/drivers/block/mg_disk.c
+++ b/drivers/block/mg_disk.c
@@ -860,7 +860,7 @@ static int mg_probe(struct platform_device *plat_dev)
860 err = -EINVAL; 860 err = -EINVAL;
861 goto probe_err_2; 861 goto probe_err_2;
862 } 862 }
863 host->dev_base = ioremap(rsc->start , rsc->end + 1); 863 host->dev_base = ioremap(rsc->start, resource_size(rsc));
864 if (!host->dev_base) { 864 if (!host->dev_base) {
865 printk(KERN_ERR "%s:%d ioremap fail\n", 865 printk(KERN_ERR "%s:%d ioremap fail\n",
866 __func__, __LINE__); 866 __func__, __LINE__);
diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c
index 2ddf03ae034e..68b5957f107c 100644
--- a/drivers/block/pktcdvd.c
+++ b/drivers/block/pktcdvd.c
@@ -322,7 +322,7 @@ static void pkt_sysfs_dev_remove(struct pktcdvd_device *pd)
322 pkt_kobj_remove(pd->kobj_stat); 322 pkt_kobj_remove(pd->kobj_stat);
323 pkt_kobj_remove(pd->kobj_wqueue); 323 pkt_kobj_remove(pd->kobj_wqueue);
324 if (class_pktcdvd) 324 if (class_pktcdvd)
325 device_destroy(class_pktcdvd, pd->pkt_dev); 325 device_unregister(pd->dev);
326} 326}
327 327
328 328
diff --git a/drivers/bluetooth/Kconfig b/drivers/bluetooth/Kconfig
index 652367aa6546..058fbccf2f52 100644
--- a/drivers/bluetooth/Kconfig
+++ b/drivers/bluetooth/Kconfig
@@ -195,5 +195,16 @@ config BT_MRVL_SDIO
195 Say Y here to compile support for Marvell BT-over-SDIO driver 195 Say Y here to compile support for Marvell BT-over-SDIO driver
196 into the kernel or say M to compile it as module. 196 into the kernel or say M to compile it as module.
197 197
198endmenu 198config BT_ATH3K
199 tristate "Atheros firmware download driver"
200 depends on BT_HCIBTUSB
201 select FW_LOADER
202 help
203 Bluetooth firmware download driver.
204 This driver loads the firmware into the Atheros Bluetooth
205 chipset.
199 206
207 Say Y here to compile support for "Atheros firmware download driver"
208 into the kernel or say M to compile it as module (ath3k).
209
210endmenu
diff --git a/drivers/bluetooth/Makefile b/drivers/bluetooth/Makefile
index b3f57d2d4eb0..7e5aed598121 100644
--- a/drivers/bluetooth/Makefile
+++ b/drivers/bluetooth/Makefile
@@ -15,6 +15,7 @@ obj-$(CONFIG_BT_HCIBTUART) += btuart_cs.o
15obj-$(CONFIG_BT_HCIBTUSB) += btusb.o 15obj-$(CONFIG_BT_HCIBTUSB) += btusb.o
16obj-$(CONFIG_BT_HCIBTSDIO) += btsdio.o 16obj-$(CONFIG_BT_HCIBTSDIO) += btsdio.o
17 17
18obj-$(CONFIG_BT_ATH3K) += ath3k.o
18obj-$(CONFIG_BT_MRVL) += btmrvl.o 19obj-$(CONFIG_BT_MRVL) += btmrvl.o
19obj-$(CONFIG_BT_MRVL_SDIO) += btmrvl_sdio.o 20obj-$(CONFIG_BT_MRVL_SDIO) += btmrvl_sdio.o
20 21
diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
new file mode 100644
index 000000000000..add9485ca5b6
--- /dev/null
+++ b/drivers/bluetooth/ath3k.c
@@ -0,0 +1,187 @@
1/*
2 * Copyright (c) 2008-2009 Atheros Communications 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 as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (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, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 *
18 */
19
20
21#include <linux/module.h>
22#include <linux/kernel.h>
23#include <linux/init.h>
24#include <linux/slab.h>
25#include <linux/types.h>
26#include <linux/errno.h>
27#include <linux/device.h>
28#include <linux/firmware.h>
29#include <linux/usb.h>
30#include <net/bluetooth/bluetooth.h>
31
32#define VERSION "1.0"
33
34
35static struct usb_device_id ath3k_table[] = {
36 /* Atheros AR3011 */
37 { USB_DEVICE(0x0CF3, 0x3000) },
38 { } /* Terminating entry */
39};
40
41MODULE_DEVICE_TABLE(usb, ath3k_table);
42
43#define USB_REQ_DFU_DNLOAD 1
44#define BULK_SIZE 4096
45
46struct ath3k_data {
47 struct usb_device *udev;
48 u8 *fw_data;
49 u32 fw_size;
50 u32 fw_sent;
51};
52
53static int ath3k_load_firmware(struct ath3k_data *data,
54 unsigned char *firmware,
55 int count)
56{
57 u8 *send_buf;
58 int err, pipe, len, size, sent = 0;
59
60 BT_DBG("ath3k %p udev %p", data, data->udev);
61
62 pipe = usb_sndctrlpipe(data->udev, 0);
63
64 if ((usb_control_msg(data->udev, pipe,
65 USB_REQ_DFU_DNLOAD,
66 USB_TYPE_VENDOR, 0, 0,
67 firmware, 20, USB_CTRL_SET_TIMEOUT)) < 0) {
68 BT_ERR("Can't change to loading configuration err");
69 return -EBUSY;
70 }
71 sent += 20;
72 count -= 20;
73
74 send_buf = kmalloc(BULK_SIZE, GFP_ATOMIC);
75 if (!send_buf) {
76 BT_ERR("Can't allocate memory chunk for firmware");
77 return -ENOMEM;
78 }
79
80 while (count) {
81 size = min_t(uint, count, BULK_SIZE);
82 pipe = usb_sndbulkpipe(data->udev, 0x02);
83 memcpy(send_buf, firmware + sent, size);
84
85 err = usb_bulk_msg(data->udev, pipe, send_buf, size,
86 &len, 3000);
87
88 if (err || (len != size)) {
89 BT_ERR("Error in firmware loading err = %d,"
90 "len = %d, size = %d", err, len, size);
91 goto error;
92 }
93
94 sent += size;
95 count -= size;
96 }
97
98 kfree(send_buf);
99 return 0;
100
101error:
102 kfree(send_buf);
103 return err;
104}
105
106static int ath3k_probe(struct usb_interface *intf,
107 const struct usb_device_id *id)
108{
109 const struct firmware *firmware;
110 struct usb_device *udev = interface_to_usbdev(intf);
111 struct ath3k_data *data;
112 int size;
113
114 BT_DBG("intf %p id %p", intf, id);
115
116 if (intf->cur_altsetting->desc.bInterfaceNumber != 0)
117 return -ENODEV;
118
119 data = kzalloc(sizeof(*data), GFP_KERNEL);
120 if (!data)
121 return -ENOMEM;
122
123 data->udev = udev;
124
125 if (request_firmware(&firmware, "ath3k-1.fw", &udev->dev) < 0) {
126 kfree(data);
127 return -EIO;
128 }
129
130 size = max_t(uint, firmware->size, 4096);
131 data->fw_data = kmalloc(size, GFP_KERNEL);
132 if (!data->fw_data) {
133 release_firmware(firmware);
134 kfree(data);
135 return -ENOMEM;
136 }
137
138 memcpy(data->fw_data, firmware->data, firmware->size);
139 data->fw_size = firmware->size;
140 data->fw_sent = 0;
141 release_firmware(firmware);
142
143 usb_set_intfdata(intf, data);
144 if (ath3k_load_firmware(data, data->fw_data, data->fw_size)) {
145 usb_set_intfdata(intf, NULL);
146 return -EIO;
147 }
148
149 return 0;
150}
151
152static void ath3k_disconnect(struct usb_interface *intf)
153{
154 struct ath3k_data *data = usb_get_intfdata(intf);
155
156 BT_DBG("ath3k_disconnect intf %p", intf);
157
158 kfree(data->fw_data);
159 kfree(data);
160}
161
162static struct usb_driver ath3k_driver = {
163 .name = "ath3k",
164 .probe = ath3k_probe,
165 .disconnect = ath3k_disconnect,
166 .id_table = ath3k_table,
167};
168
169static int __init ath3k_init(void)
170{
171 BT_INFO("Atheros AR30xx firmware driver ver %s", VERSION);
172 return usb_register(&ath3k_driver);
173}
174
175static void __exit ath3k_exit(void)
176{
177 usb_deregister(&ath3k_driver);
178}
179
180module_init(ath3k_init);
181module_exit(ath3k_exit);
182
183MODULE_AUTHOR("Atheros Communications");
184MODULE_DESCRIPTION("Atheros AR30xx firmware driver");
185MODULE_VERSION(VERSION);
186MODULE_LICENSE("GPL");
187MODULE_FIRMWARE("ath3k-1.fw");
diff --git a/drivers/bluetooth/bluecard_cs.c b/drivers/bluetooth/bluecard_cs.c
index 2acdc605cb4b..c2cf81144715 100644
--- a/drivers/bluetooth/bluecard_cs.c
+++ b/drivers/bluetooth/bluecard_cs.c
@@ -503,7 +503,9 @@ static irqreturn_t bluecard_interrupt(int irq, void *dev_inst)
503 unsigned int iobase; 503 unsigned int iobase;
504 unsigned char reg; 504 unsigned char reg;
505 505
506 BUG_ON(!info->hdev); 506 if (!info || !info->hdev)
507 /* our irq handler is shared */
508 return IRQ_NONE;
507 509
508 if (!test_bit(CARD_READY, &(info->hw_state))) 510 if (!test_bit(CARD_READY, &(info->hw_state)))
509 return IRQ_HANDLED; 511 return IRQ_HANDLED;
diff --git a/drivers/bluetooth/bt3c_cs.c b/drivers/bluetooth/bt3c_cs.c
index d814a2755ccb..9f5926aaf57f 100644
--- a/drivers/bluetooth/bt3c_cs.c
+++ b/drivers/bluetooth/bt3c_cs.c
@@ -345,7 +345,9 @@ static irqreturn_t bt3c_interrupt(int irq, void *dev_inst)
345 int iir; 345 int iir;
346 irqreturn_t r = IRQ_NONE; 346 irqreturn_t r = IRQ_NONE;
347 347
348 BUG_ON(!info->hdev); 348 if (!info || !info->hdev)
349 /* our irq handler is shared */
350 return IRQ_NONE;
349 351
350 iobase = info->p_dev->io.BasePort1; 352 iobase = info->p_dev->io.BasePort1;
351 353
diff --git a/drivers/bluetooth/btmrvl_sdio.c b/drivers/bluetooth/btmrvl_sdio.c
index f36defa37764..57d965b7f521 100644
--- a/drivers/bluetooth/btmrvl_sdio.c
+++ b/drivers/bluetooth/btmrvl_sdio.c
@@ -808,6 +808,7 @@ static int btmrvl_sdio_host_to_card(struct btmrvl_private *priv,
808 808
809exit: 809exit:
810 sdio_release_host(card->func); 810 sdio_release_host(card->func);
811 kfree(tmpbuf);
811 812
812 return ret; 813 return ret;
813} 814}
diff --git a/drivers/bluetooth/btuart_cs.c b/drivers/bluetooth/btuart_cs.c
index d339464dc15e..91c523099804 100644
--- a/drivers/bluetooth/btuart_cs.c
+++ b/drivers/bluetooth/btuart_cs.c
@@ -295,7 +295,9 @@ static irqreturn_t btuart_interrupt(int irq, void *dev_inst)
295 int iir, lsr; 295 int iir, lsr;
296 irqreturn_t r = IRQ_NONE; 296 irqreturn_t r = IRQ_NONE;
297 297
298 BUG_ON(!info->hdev); 298 if (!info || !info->hdev)
299 /* our irq handler is shared */
300 return IRQ_NONE;
299 301
300 iobase = info->p_dev->io.BasePort1; 302 iobase = info->p_dev->io.BasePort1;
301 303
diff --git a/drivers/bluetooth/dtl1_cs.c b/drivers/bluetooth/dtl1_cs.c
index 4f02a6f3c980..697591941e17 100644
--- a/drivers/bluetooth/dtl1_cs.c
+++ b/drivers/bluetooth/dtl1_cs.c
@@ -299,7 +299,9 @@ static irqreturn_t dtl1_interrupt(int irq, void *dev_inst)
299 int iir, lsr; 299 int iir, lsr;
300 irqreturn_t r = IRQ_NONE; 300 irqreturn_t r = IRQ_NONE;
301 301
302 BUG_ON(!info->hdev); 302 if (!info || !info->hdev)
303 /* our irq handler is shared */
304 return IRQ_NONE;
303 305
304 iobase = info->p_dev->io.BasePort1; 306 iobase = info->p_dev->io.BasePort1;
305 307
diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
index 31be3ac2e21b..e023682be2c4 100644
--- a/drivers/char/Kconfig
+++ b/drivers/char/Kconfig
@@ -669,7 +669,7 @@ config VIRTIO_CONSOLE
669 669
670config HVCS 670config HVCS
671 tristate "IBM Hypervisor Virtual Console Server support" 671 tristate "IBM Hypervisor Virtual Console Server support"
672 depends on PPC_PSERIES 672 depends on PPC_PSERIES && HVC_CONSOLE
673 help 673 help
674 Partitionable IBM Power5 ppc64 machines allow hosting of 674 Partitionable IBM Power5 ppc64 machines allow hosting of
675 firmware virtual consoles from one Linux partition by 675 firmware virtual consoles from one Linux partition by
diff --git a/drivers/char/agp/amd64-agp.c b/drivers/char/agp/amd64-agp.c
index 2fb2e6cc322a..fd50ead59c79 100644
--- a/drivers/char/agp/amd64-agp.c
+++ b/drivers/char/agp/amd64-agp.c
@@ -728,6 +728,7 @@ int __init agp_amd64_init(void)
728 728
729 if (agp_off) 729 if (agp_off)
730 return -EINVAL; 730 return -EINVAL;
731
731 err = pci_register_driver(&agp_amd64_pci_driver); 732 err = pci_register_driver(&agp_amd64_pci_driver);
732 if (err < 0) 733 if (err < 0)
733 return err; 734 return err;
@@ -764,19 +765,28 @@ int __init agp_amd64_init(void)
764 return err; 765 return err;
765} 766}
766 767
768static int __init agp_amd64_mod_init(void)
769{
770#ifndef MODULE
771 if (gart_iommu_aperture)
772 return agp_bridges_found ? 0 : -ENODEV;
773#endif
774 return agp_amd64_init();
775}
776
767static void __exit agp_amd64_cleanup(void) 777static void __exit agp_amd64_cleanup(void)
768{ 778{
779#ifndef MODULE
780 if (gart_iommu_aperture)
781 return;
782#endif
769 if (aperture_resource) 783 if (aperture_resource)
770 release_resource(aperture_resource); 784 release_resource(aperture_resource);
771 pci_unregister_driver(&agp_amd64_pci_driver); 785 pci_unregister_driver(&agp_amd64_pci_driver);
772} 786}
773 787
774/* On AMD64 the PCI driver needs to initialize this driver early 788module_init(agp_amd64_mod_init);
775 for the IOMMU, so it has to be called via a backdoor. */
776#ifndef CONFIG_GART_IOMMU
777module_init(agp_amd64_init);
778module_exit(agp_amd64_cleanup); 789module_exit(agp_amd64_cleanup);
779#endif
780 790
781MODULE_AUTHOR("Dave Jones <davej@redhat.com>, Andi Kleen"); 791MODULE_AUTHOR("Dave Jones <davej@redhat.com>, Andi Kleen");
782module_param(agp_try_unsupported, bool, 0); 792module_param(agp_try_unsupported, bool, 0);
diff --git a/drivers/char/agp/backend.c b/drivers/char/agp/backend.c
index a56ca080e108..c3ab46da51a3 100644
--- a/drivers/char/agp/backend.c
+++ b/drivers/char/agp/backend.c
@@ -285,18 +285,22 @@ int agp_add_bridge(struct agp_bridge_data *bridge)
285{ 285{
286 int error; 286 int error;
287 287
288 if (agp_off) 288 if (agp_off) {
289 return -ENODEV; 289 error = -ENODEV;
290 goto err_put_bridge;
291 }
290 292
291 if (!bridge->dev) { 293 if (!bridge->dev) {
292 printk (KERN_DEBUG PFX "Erk, registering with no pci_dev!\n"); 294 printk (KERN_DEBUG PFX "Erk, registering with no pci_dev!\n");
293 return -EINVAL; 295 error = -EINVAL;
296 goto err_put_bridge;
294 } 297 }
295 298
296 /* Grab reference on the chipset driver. */ 299 /* Grab reference on the chipset driver. */
297 if (!try_module_get(bridge->driver->owner)) { 300 if (!try_module_get(bridge->driver->owner)) {
298 dev_info(&bridge->dev->dev, "can't lock chipset driver\n"); 301 dev_info(&bridge->dev->dev, "can't lock chipset driver\n");
299 return -EINVAL; 302 error = -EINVAL;
303 goto err_put_bridge;
300 } 304 }
301 305
302 error = agp_backend_initialize(bridge); 306 error = agp_backend_initialize(bridge);
@@ -326,6 +330,7 @@ frontend_err:
326 agp_backend_cleanup(bridge); 330 agp_backend_cleanup(bridge);
327err_out: 331err_out:
328 module_put(bridge->driver->owner); 332 module_put(bridge->driver->owner);
333err_put_bridge:
329 agp_put_bridge(bridge); 334 agp_put_bridge(bridge);
330 return error; 335 return error;
331} 336}
diff --git a/drivers/char/agp/hp-agp.c b/drivers/char/agp/hp-agp.c
index 9047b2714653..58752b70efea 100644
--- a/drivers/char/agp/hp-agp.c
+++ b/drivers/char/agp/hp-agp.c
@@ -488,9 +488,8 @@ zx1_gart_probe (acpi_handle obj, u32 depth, void *context, void **ret)
488 handle = obj; 488 handle = obj;
489 do { 489 do {
490 status = acpi_get_object_info(handle, &info); 490 status = acpi_get_object_info(handle, &info);
491 if (ACPI_SUCCESS(status)) { 491 if (ACPI_SUCCESS(status) && (info->valid & ACPI_VALID_HID)) {
492 /* TBD check _CID also */ 492 /* TBD check _CID also */
493 info->hardware_id.string[sizeof(info->hardware_id.length)-1] = '\0';
494 match = (strcmp(info->hardware_id.string, "HWP0001") == 0); 493 match = (strcmp(info->hardware_id.string, "HWP0001") == 0);
495 kfree(info); 494 kfree(info);
496 if (match) { 495 if (match) {
@@ -509,6 +508,9 @@ zx1_gart_probe (acpi_handle obj, u32 depth, void *context, void **ret)
509 handle = parent; 508 handle = parent;
510 } while (ACPI_SUCCESS(status)); 509 } while (ACPI_SUCCESS(status));
511 510
511 if (ACPI_FAILURE(status))
512 return AE_OK; /* found no enclosing IOC */
513
512 if (hp_zx1_setup(sba_hpa + HP_ZX1_IOC_OFFSET, lba_hpa)) 514 if (hp_zx1_setup(sba_hpa + HP_ZX1_IOC_OFFSET, lba_hpa))
513 return AE_OK; 515 return AE_OK;
514 516
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
index 30c36ac2cd00..3999a5f25f38 100644
--- a/drivers/char/agp/intel-agp.c
+++ b/drivers/char/agp/intel-agp.c
@@ -2460,10 +2460,14 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev,
2460 &bridge->mode); 2460 &bridge->mode);
2461 } 2461 }
2462 2462
2463 if (bridge->driver->mask_memory == intel_i965_mask_memory) 2463 if (bridge->driver->mask_memory == intel_i965_mask_memory) {
2464 if (pci_set_dma_mask(intel_private.pcidev, DMA_BIT_MASK(36))) 2464 if (pci_set_dma_mask(intel_private.pcidev, DMA_BIT_MASK(36)))
2465 dev_err(&intel_private.pcidev->dev, 2465 dev_err(&intel_private.pcidev->dev,
2466 "set gfx device dma mask 36bit failed!\n"); 2466 "set gfx device dma mask 36bit failed!\n");
2467 else
2468 pci_set_consistent_dma_mask(intel_private.pcidev,
2469 DMA_BIT_MASK(36));
2470 }
2467 2471
2468 pci_set_drvdata(pdev, bridge); 2472 pci_set_drvdata(pdev, bridge);
2469 return agp_add_bridge(bridge); 2473 return agp_add_bridge(bridge);
diff --git a/drivers/char/hw_random/core.c b/drivers/char/hw_random/core.c
index e989f67bb61f..3d9c61e5acbf 100644
--- a/drivers/char/hw_random/core.c
+++ b/drivers/char/hw_random/core.c
@@ -158,10 +158,11 @@ static ssize_t rng_dev_read(struct file *filp, char __user *buf,
158 goto out; 158 goto out;
159 } 159 }
160 } 160 }
161out_unlock:
162 mutex_unlock(&rng_mutex);
163out: 161out:
164 return ret ? : err; 162 return ret ? : err;
163out_unlock:
164 mutex_unlock(&rng_mutex);
165 goto out;
165} 166}
166 167
167 168
diff --git a/drivers/char/hw_random/virtio-rng.c b/drivers/char/hw_random/virtio-rng.c
index bdaef8e94021..64fe0a793efd 100644
--- a/drivers/char/hw_random/virtio-rng.c
+++ b/drivers/char/hw_random/virtio-rng.c
@@ -114,7 +114,7 @@ static struct virtio_device_id id_table[] = {
114 { 0 }, 114 { 0 },
115}; 115};
116 116
117static struct virtio_driver virtio_rng = { 117static struct virtio_driver virtio_rng_driver = {
118 .driver.name = KBUILD_MODNAME, 118 .driver.name = KBUILD_MODNAME,
119 .driver.owner = THIS_MODULE, 119 .driver.owner = THIS_MODULE,
120 .id_table = id_table, 120 .id_table = id_table,
@@ -124,12 +124,12 @@ static struct virtio_driver virtio_rng = {
124 124
125static int __init init(void) 125static int __init init(void)
126{ 126{
127 return register_virtio_driver(&virtio_rng); 127 return register_virtio_driver(&virtio_rng_driver);
128} 128}
129 129
130static void __exit fini(void) 130static void __exit fini(void)
131{ 131{
132 unregister_virtio_driver(&virtio_rng); 132 unregister_virtio_driver(&virtio_rng_driver);
133} 133}
134module_init(init); 134module_init(init);
135module_exit(fini); 135module_exit(fini);
diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
index 679cd08b80b4..176f1751237f 100644
--- a/drivers/char/ipmi/ipmi_si_intf.c
+++ b/drivers/char/ipmi/ipmi_si_intf.c
@@ -3204,7 +3204,7 @@ static __devinit int init_ipmi_si(void)
3204#ifdef CONFIG_ACPI 3204#ifdef CONFIG_ACPI
3205 spmi_find_bmc(); 3205 spmi_find_bmc();
3206#endif 3206#endif
3207#ifdef CONFIG_PNP 3207#ifdef CONFIG_ACPI
3208 pnp_register_driver(&ipmi_pnp_driver); 3208 pnp_register_driver(&ipmi_pnp_driver);
3209#endif 3209#endif
3210 3210
@@ -3330,7 +3330,7 @@ static __exit void cleanup_ipmi_si(void)
3330#ifdef CONFIG_PCI 3330#ifdef CONFIG_PCI
3331 pci_unregister_driver(&ipmi_pci_driver); 3331 pci_unregister_driver(&ipmi_pci_driver);
3332#endif 3332#endif
3333#ifdef CONFIG_PNP 3333#ifdef CONFIG_ACPI
3334 pnp_unregister_driver(&ipmi_pnp_driver); 3334 pnp_unregister_driver(&ipmi_pnp_driver);
3335#endif 3335#endif
3336 3336
diff --git a/drivers/char/mem.c b/drivers/char/mem.c
index be832b6f8279..48788db4e280 100644
--- a/drivers/char/mem.c
+++ b/drivers/char/mem.c
@@ -395,6 +395,7 @@ static ssize_t read_kmem(struct file *file, char __user *buf,
395 unsigned long p = *ppos; 395 unsigned long p = *ppos;
396 ssize_t low_count, read, sz; 396 ssize_t low_count, read, sz;
397 char * kbuf; /* k-addr because vread() takes vmlist_lock rwlock */ 397 char * kbuf; /* k-addr because vread() takes vmlist_lock rwlock */
398 int err = 0;
398 399
399 read = 0; 400 read = 0;
400 if (p < (unsigned long) high_memory) { 401 if (p < (unsigned long) high_memory) {
@@ -441,12 +442,16 @@ static ssize_t read_kmem(struct file *file, char __user *buf,
441 return -ENOMEM; 442 return -ENOMEM;
442 while (count > 0) { 443 while (count > 0) {
443 sz = size_inside_page(p, count); 444 sz = size_inside_page(p, count);
445 if (!is_vmalloc_or_module_addr((void *)p)) {
446 err = -ENXIO;
447 break;
448 }
444 sz = vread(kbuf, (char *)p, sz); 449 sz = vread(kbuf, (char *)p, sz);
445 if (!sz) 450 if (!sz)
446 break; 451 break;
447 if (copy_to_user(buf, kbuf, sz)) { 452 if (copy_to_user(buf, kbuf, sz)) {
448 free_page((unsigned long)kbuf); 453 err = -EFAULT;
449 return -EFAULT; 454 break;
450 } 455 }
451 count -= sz; 456 count -= sz;
452 buf += sz; 457 buf += sz;
@@ -455,8 +460,8 @@ static ssize_t read_kmem(struct file *file, char __user *buf,
455 } 460 }
456 free_page((unsigned long)kbuf); 461 free_page((unsigned long)kbuf);
457 } 462 }
458 *ppos = p; 463 *ppos = p;
459 return read; 464 return read ? read : err;
460} 465}
461 466
462 467
@@ -520,6 +525,7 @@ static ssize_t write_kmem(struct file * file, const char __user * buf,
520 ssize_t wrote = 0; 525 ssize_t wrote = 0;
521 ssize_t virtr = 0; 526 ssize_t virtr = 0;
522 char * kbuf; /* k-addr because vwrite() takes vmlist_lock rwlock */ 527 char * kbuf; /* k-addr because vwrite() takes vmlist_lock rwlock */
528 int err = 0;
523 529
524 if (p < (unsigned long) high_memory) { 530 if (p < (unsigned long) high_memory) {
525 unsigned long to_write = min_t(unsigned long, count, 531 unsigned long to_write = min_t(unsigned long, count,
@@ -540,14 +546,16 @@ static ssize_t write_kmem(struct file * file, const char __user * buf,
540 unsigned long sz = size_inside_page(p, count); 546 unsigned long sz = size_inside_page(p, count);
541 unsigned long n; 547 unsigned long n;
542 548
549 if (!is_vmalloc_or_module_addr((void *)p)) {
550 err = -ENXIO;
551 break;
552 }
543 n = copy_from_user(kbuf, buf, sz); 553 n = copy_from_user(kbuf, buf, sz);
544 if (n) { 554 if (n) {
545 if (wrote + virtr) 555 err = -EFAULT;
546 break; 556 break;
547 free_page((unsigned long)kbuf);
548 return -EFAULT;
549 } 557 }
550 sz = vwrite(kbuf, (char *)p, sz); 558 vwrite(kbuf, (char *)p, sz);
551 count -= sz; 559 count -= sz;
552 buf += sz; 560 buf += sz;
553 virtr += sz; 561 virtr += sz;
@@ -556,8 +564,8 @@ static ssize_t write_kmem(struct file * file, const char __user * buf,
556 free_page((unsigned long)kbuf); 564 free_page((unsigned long)kbuf);
557 } 565 }
558 566
559 *ppos = p; 567 *ppos = p;
560 return virtr + wrote; 568 return virtr + wrote ? : err;
561} 569}
562#endif 570#endif
563 571
diff --git a/drivers/char/nozomi.c b/drivers/char/nozomi.c
index 7d73cd430340..2ad7d37afbd0 100644
--- a/drivers/char/nozomi.c
+++ b/drivers/char/nozomi.c
@@ -1651,10 +1651,10 @@ static void ntty_close(struct tty_struct *tty, struct file *file)
1651 1651
1652 dc->open_ttys--; 1652 dc->open_ttys--;
1653 port->count--; 1653 port->count--;
1654 tty_port_tty_set(port, NULL);
1655 1654
1656 if (port->count == 0) { 1655 if (port->count == 0) {
1657 DBG1("close: %d", nport->token_dl); 1656 DBG1("close: %d", nport->token_dl);
1657 tty_port_tty_set(port, NULL);
1658 spin_lock_irqsave(&dc->spin_mutex, flags); 1658 spin_lock_irqsave(&dc->spin_mutex, flags);
1659 dc->last_ier &= ~(nport->token_dl); 1659 dc->last_ier &= ~(nport->token_dl);
1660 writew(dc->last_ier, dc->reg_ier); 1660 writew(dc->last_ier, dc->reg_ier);
diff --git a/drivers/char/random.c b/drivers/char/random.c
index 8258982b49ec..2849713d2231 100644
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -1051,12 +1051,6 @@ random_read(struct file *file, char __user *buf, size_t nbytes, loff_t *ppos)
1051 /* like a named pipe */ 1051 /* like a named pipe */
1052 } 1052 }
1053 1053
1054 /*
1055 * If we gave the user some bytes, update the access time.
1056 */
1057 if (count)
1058 file_accessed(file);
1059
1060 return (count ? count : retval); 1054 return (count ? count : retval);
1061} 1055}
1062 1056
@@ -1107,7 +1101,6 @@ static ssize_t random_write(struct file *file, const char __user *buffer,
1107 size_t count, loff_t *ppos) 1101 size_t count, loff_t *ppos)
1108{ 1102{
1109 size_t ret; 1103 size_t ret;
1110 struct inode *inode = file->f_path.dentry->d_inode;
1111 1104
1112 ret = write_pool(&blocking_pool, buffer, count); 1105 ret = write_pool(&blocking_pool, buffer, count);
1113 if (ret) 1106 if (ret)
@@ -1116,8 +1109,6 @@ static ssize_t random_write(struct file *file, const char __user *buffer,
1116 if (ret) 1109 if (ret)
1117 return ret; 1110 return ret;
1118 1111
1119 inode->i_mtime = current_fs_time(inode->i_sb);
1120 mark_inode_dirty(inode);
1121 return (ssize_t)count; 1112 return (ssize_t)count;
1122} 1113}
1123 1114
diff --git a/drivers/char/sonypi.c b/drivers/char/sonypi.c
index 0798754a607c..bba727c3807e 100644
--- a/drivers/char/sonypi.c
+++ b/drivers/char/sonypi.c
@@ -50,7 +50,6 @@
50#include <linux/err.h> 50#include <linux/err.h>
51#include <linux/kfifo.h> 51#include <linux/kfifo.h>
52#include <linux/platform_device.h> 52#include <linux/platform_device.h>
53#include <linux/smp_lock.h>
54 53
55#include <asm/uaccess.h> 54#include <asm/uaccess.h>
56#include <asm/io.h> 55#include <asm/io.h>
@@ -905,14 +904,13 @@ static int sonypi_misc_release(struct inode *inode, struct file *file)
905 904
906static int sonypi_misc_open(struct inode *inode, struct file *file) 905static int sonypi_misc_open(struct inode *inode, struct file *file)
907{ 906{
908 lock_kernel();
909 mutex_lock(&sonypi_device.lock); 907 mutex_lock(&sonypi_device.lock);
910 /* Flush input queue on first open */ 908 /* Flush input queue on first open */
911 if (!sonypi_device.open_count) 909 if (!sonypi_device.open_count)
912 kfifo_reset(&sonypi_device.fifo); 910 kfifo_reset(&sonypi_device.fifo);
913 sonypi_device.open_count++; 911 sonypi_device.open_count++;
914 mutex_unlock(&sonypi_device.lock); 912 mutex_unlock(&sonypi_device.lock);
915 unlock_kernel(); 913
916 return 0; 914 return 0;
917} 915}
918 916
@@ -955,10 +953,10 @@ static unsigned int sonypi_misc_poll(struct file *file, poll_table *wait)
955 return 0; 953 return 0;
956} 954}
957 955
958static int sonypi_misc_ioctl(struct inode *ip, struct file *fp, 956static long sonypi_misc_ioctl(struct file *fp,
959 unsigned int cmd, unsigned long arg) 957 unsigned int cmd, unsigned long arg)
960{ 958{
961 int ret = 0; 959 long ret = 0;
962 void __user *argp = (void __user *)arg; 960 void __user *argp = (void __user *)arg;
963 u8 val8; 961 u8 val8;
964 u16 val16; 962 u16 val16;
@@ -1074,7 +1072,8 @@ static const struct file_operations sonypi_misc_fops = {
1074 .open = sonypi_misc_open, 1072 .open = sonypi_misc_open,
1075 .release = sonypi_misc_release, 1073 .release = sonypi_misc_release,
1076 .fasync = sonypi_misc_fasync, 1074 .fasync = sonypi_misc_fasync,
1077 .ioctl = sonypi_misc_ioctl, 1075 .unlocked_ioctl = sonypi_misc_ioctl,
1076 .llseek = no_llseek,
1078}; 1077};
1079 1078
1080static struct miscdevice sonypi_misc_device = { 1079static struct miscdevice sonypi_misc_device = {
diff --git a/drivers/char/toshiba.c b/drivers/char/toshiba.c
index 663cd15d7c78..f8bc79f6de34 100644
--- a/drivers/char/toshiba.c
+++ b/drivers/char/toshiba.c
@@ -68,7 +68,7 @@
68#include <linux/stat.h> 68#include <linux/stat.h>
69#include <linux/proc_fs.h> 69#include <linux/proc_fs.h>
70#include <linux/seq_file.h> 70#include <linux/seq_file.h>
71 71#include <linux/smp_lock.h>
72#include <linux/toshiba.h> 72#include <linux/toshiba.h>
73 73
74#define TOSH_MINOR_DEV 181 74#define TOSH_MINOR_DEV 181
@@ -88,13 +88,13 @@ static int tosh_date;
88static int tosh_sci; 88static int tosh_sci;
89static int tosh_fan; 89static int tosh_fan;
90 90
91static int tosh_ioctl(struct inode *, struct file *, unsigned int, 91static long tosh_ioctl(struct file *, unsigned int,
92 unsigned long); 92 unsigned long);
93 93
94 94
95static const struct file_operations tosh_fops = { 95static const struct file_operations tosh_fops = {
96 .owner = THIS_MODULE, 96 .owner = THIS_MODULE,
97 .ioctl = tosh_ioctl, 97 .unlocked_ioctl = tosh_ioctl,
98}; 98};
99 99
100static struct miscdevice tosh_device = { 100static struct miscdevice tosh_device = {
@@ -252,8 +252,7 @@ int tosh_smm(SMMRegisters *regs)
252EXPORT_SYMBOL(tosh_smm); 252EXPORT_SYMBOL(tosh_smm);
253 253
254 254
255static int tosh_ioctl(struct inode *ip, struct file *fp, unsigned int cmd, 255static long tosh_ioctl(struct file *fp, unsigned int cmd, unsigned long arg)
256 unsigned long arg)
257{ 256{
258 SMMRegisters regs; 257 SMMRegisters regs;
259 SMMRegisters __user *argp = (SMMRegisters __user *)arg; 258 SMMRegisters __user *argp = (SMMRegisters __user *)arg;
@@ -275,13 +274,16 @@ static int tosh_ioctl(struct inode *ip, struct file *fp, unsigned int cmd,
275 return -EINVAL; 274 return -EINVAL;
276 275
277 /* do we need to emulate the fan ? */ 276 /* do we need to emulate the fan ? */
277 lock_kernel();
278 if (tosh_fan==1) { 278 if (tosh_fan==1) {
279 if (((ax==0xf300) || (ax==0xf400)) && (bx==0x0004)) { 279 if (((ax==0xf300) || (ax==0xf400)) && (bx==0x0004)) {
280 err = tosh_emulate_fan(&regs); 280 err = tosh_emulate_fan(&regs);
281 unlock_kernel();
281 break; 282 break;
282 } 283 }
283 } 284 }
284 err = tosh_smm(&regs); 285 err = tosh_smm(&regs);
286 unlock_kernel();
285 break; 287 break;
286 default: 288 default:
287 return -EINVAL; 289 return -EINVAL;
diff --git a/drivers/char/tpm/tpm_infineon.c b/drivers/char/tpm/tpm_infineon.c
index ecba4942fc8e..f58440791e65 100644
--- a/drivers/char/tpm/tpm_infineon.c
+++ b/drivers/char/tpm/tpm_infineon.c
@@ -39,12 +39,12 @@
39struct tpm_inf_dev { 39struct tpm_inf_dev {
40 int iotype; 40 int iotype;
41 41
42 void __iomem *mem_base; /* MMIO ioremap'd addr */ 42 void __iomem *mem_base; /* MMIO ioremap'd addr */
43 unsigned long map_base; /* phys MMIO base */ 43 unsigned long map_base; /* phys MMIO base */
44 unsigned long map_size; /* MMIO region size */ 44 unsigned long map_size; /* MMIO region size */
45 unsigned int index_off; /* index register offset */ 45 unsigned int index_off; /* index register offset */
46 46
47 unsigned int data_regs; /* Data registers */ 47 unsigned int data_regs; /* Data registers */
48 unsigned int data_size; 48 unsigned int data_size;
49 49
50 unsigned int config_port; /* IO Port config index reg */ 50 unsigned int config_port; /* IO Port config index reg */
@@ -406,14 +406,14 @@ static const struct tpm_vendor_specific tpm_inf = {
406 .miscdev = {.fops = &inf_ops,}, 406 .miscdev = {.fops = &inf_ops,},
407}; 407};
408 408
409static const struct pnp_device_id tpm_pnp_tbl[] = { 409static const struct pnp_device_id tpm_inf_pnp_tbl[] = {
410 /* Infineon TPMs */ 410 /* Infineon TPMs */
411 {"IFX0101", 0}, 411 {"IFX0101", 0},
412 {"IFX0102", 0}, 412 {"IFX0102", 0},
413 {"", 0} 413 {"", 0}
414}; 414};
415 415
416MODULE_DEVICE_TABLE(pnp, tpm_pnp_tbl); 416MODULE_DEVICE_TABLE(pnp, tpm_inf_pnp_tbl);
417 417
418static int __devinit tpm_inf_pnp_probe(struct pnp_dev *dev, 418static int __devinit tpm_inf_pnp_probe(struct pnp_dev *dev,
419 const struct pnp_device_id *dev_id) 419 const struct pnp_device_id *dev_id)
@@ -430,7 +430,7 @@ static int __devinit tpm_inf_pnp_probe(struct pnp_dev *dev,
430 if (pnp_port_valid(dev, 0) && pnp_port_valid(dev, 1) && 430 if (pnp_port_valid(dev, 0) && pnp_port_valid(dev, 1) &&
431 !(pnp_port_flags(dev, 0) & IORESOURCE_DISABLED)) { 431 !(pnp_port_flags(dev, 0) & IORESOURCE_DISABLED)) {
432 432
433 tpm_dev.iotype = TPM_INF_IO_PORT; 433 tpm_dev.iotype = TPM_INF_IO_PORT;
434 434
435 tpm_dev.config_port = pnp_port_start(dev, 0); 435 tpm_dev.config_port = pnp_port_start(dev, 0);
436 tpm_dev.config_size = pnp_port_len(dev, 0); 436 tpm_dev.config_size = pnp_port_len(dev, 0);
@@ -459,9 +459,9 @@ static int __devinit tpm_inf_pnp_probe(struct pnp_dev *dev,
459 goto err_last; 459 goto err_last;
460 } 460 }
461 } else if (pnp_mem_valid(dev, 0) && 461 } else if (pnp_mem_valid(dev, 0) &&
462 !(pnp_mem_flags(dev, 0) & IORESOURCE_DISABLED)) { 462 !(pnp_mem_flags(dev, 0) & IORESOURCE_DISABLED)) {
463 463
464 tpm_dev.iotype = TPM_INF_IO_MEM; 464 tpm_dev.iotype = TPM_INF_IO_MEM;
465 465
466 tpm_dev.map_base = pnp_mem_start(dev, 0); 466 tpm_dev.map_base = pnp_mem_start(dev, 0);
467 tpm_dev.map_size = pnp_mem_len(dev, 0); 467 tpm_dev.map_size = pnp_mem_len(dev, 0);
@@ -563,11 +563,11 @@ static int __devinit tpm_inf_pnp_probe(struct pnp_dev *dev,
563 "product id 0x%02x%02x" 563 "product id 0x%02x%02x"
564 "%s\n", 564 "%s\n",
565 tpm_dev.iotype == TPM_INF_IO_PORT ? 565 tpm_dev.iotype == TPM_INF_IO_PORT ?
566 tpm_dev.config_port : 566 tpm_dev.config_port :
567 tpm_dev.map_base + tpm_dev.index_off, 567 tpm_dev.map_base + tpm_dev.index_off,
568 tpm_dev.iotype == TPM_INF_IO_PORT ? 568 tpm_dev.iotype == TPM_INF_IO_PORT ?
569 tpm_dev.data_regs : 569 tpm_dev.data_regs :
570 tpm_dev.map_base + tpm_dev.data_regs, 570 tpm_dev.map_base + tpm_dev.data_regs,
571 version[0], version[1], 571 version[0], version[1],
572 vendorid[0], vendorid[1], 572 vendorid[0], vendorid[1],
573 productid[0], productid[1], chipname); 573 productid[0], productid[1], chipname);
@@ -607,20 +607,55 @@ static __devexit void tpm_inf_pnp_remove(struct pnp_dev *dev)
607 iounmap(tpm_dev.mem_base); 607 iounmap(tpm_dev.mem_base);
608 release_mem_region(tpm_dev.map_base, tpm_dev.map_size); 608 release_mem_region(tpm_dev.map_base, tpm_dev.map_size);
609 } 609 }
610 tpm_dev_vendor_release(chip);
610 tpm_remove_hardware(chip->dev); 611 tpm_remove_hardware(chip->dev);
611 } 612 }
612} 613}
613 614
615static int tpm_inf_pnp_suspend(struct pnp_dev *dev, pm_message_t pm_state)
616{
617 struct tpm_chip *chip = pnp_get_drvdata(dev);
618 int rc;
619 if (chip) {
620 u8 savestate[] = {
621 0, 193, /* TPM_TAG_RQU_COMMAND */
622 0, 0, 0, 10, /* blob length (in bytes) */
623 0, 0, 0, 152 /* TPM_ORD_SaveState */
624 };
625 dev_info(&dev->dev, "saving TPM state\n");
626 rc = tpm_inf_send(chip, savestate, sizeof(savestate));
627 if (rc < 0) {
628 dev_err(&dev->dev, "error while saving TPM state\n");
629 return rc;
630 }
631 }
632 return 0;
633}
634
635static int tpm_inf_pnp_resume(struct pnp_dev *dev)
636{
637 /* Re-configure TPM after suspending */
638 tpm_config_out(ENABLE_REGISTER_PAIR, TPM_INF_ADDR);
639 tpm_config_out(IOLIMH, TPM_INF_ADDR);
640 tpm_config_out((tpm_dev.data_regs >> 8) & 0xff, TPM_INF_DATA);
641 tpm_config_out(IOLIML, TPM_INF_ADDR);
642 tpm_config_out((tpm_dev.data_regs & 0xff), TPM_INF_DATA);
643 /* activate register */
644 tpm_config_out(TPM_DAR, TPM_INF_ADDR);
645 tpm_config_out(0x01, TPM_INF_DATA);
646 tpm_config_out(DISABLE_REGISTER_PAIR, TPM_INF_ADDR);
647 /* disable RESET, LP and IRQC */
648 tpm_data_out(RESET_LP_IRQC_DISABLE, CMD);
649 return tpm_pm_resume(&dev->dev);
650}
651
614static struct pnp_driver tpm_inf_pnp_driver = { 652static struct pnp_driver tpm_inf_pnp_driver = {
615 .name = "tpm_inf_pnp", 653 .name = "tpm_inf_pnp",
616 .driver = { 654 .id_table = tpm_inf_pnp_tbl,
617 .owner = THIS_MODULE,
618 .suspend = tpm_pm_suspend,
619 .resume = tpm_pm_resume,
620 },
621 .id_table = tpm_pnp_tbl,
622 .probe = tpm_inf_pnp_probe, 655 .probe = tpm_inf_pnp_probe,
623 .remove = __devexit_p(tpm_inf_pnp_remove), 656 .suspend = tpm_inf_pnp_suspend,
657 .resume = tpm_inf_pnp_resume,
658 .remove = __devexit_p(tpm_inf_pnp_remove)
624}; 659};
625 660
626static int __init init_inf(void) 661static int __init init_inf(void)
@@ -638,5 +673,5 @@ module_exit(cleanup_inf);
638 673
639MODULE_AUTHOR("Marcel Selhorst <m.selhorst@sirrix.com>"); 674MODULE_AUTHOR("Marcel Selhorst <m.selhorst@sirrix.com>");
640MODULE_DESCRIPTION("Driver for Infineon TPM SLD 9630 TT 1.1 / SLB 9635 TT 1.2"); 675MODULE_DESCRIPTION("Driver for Infineon TPM SLD 9630 TT 1.1 / SLB 9635 TT 1.2");
641MODULE_VERSION("1.9"); 676MODULE_VERSION("1.9.2");
642MODULE_LICENSE("GPL"); 677MODULE_LICENSE("GPL");
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c
index f15df40bc318..dcb9083ecde0 100644
--- a/drivers/char/tty_io.c
+++ b/drivers/char/tty_io.c
@@ -1951,8 +1951,10 @@ static int tty_fasync(int fd, struct file *filp, int on)
1951 pid = task_pid(current); 1951 pid = task_pid(current);
1952 type = PIDTYPE_PID; 1952 type = PIDTYPE_PID;
1953 } 1953 }
1954 get_pid(pid);
1954 spin_unlock_irqrestore(&tty->ctrl_lock, flags); 1955 spin_unlock_irqrestore(&tty->ctrl_lock, flags);
1955 retval = __f_setown(filp, pid, type, 0); 1956 retval = __f_setown(filp, pid, type, 0);
1957 put_pid(pid);
1956 if (retval) 1958 if (retval)
1957 goto out; 1959 goto out;
1958 } else { 1960 } else {
diff --git a/drivers/char/uv_mmtimer.c b/drivers/char/uv_mmtimer.c
index 867b67be9f0a..c7072ba14f48 100644
--- a/drivers/char/uv_mmtimer.c
+++ b/drivers/char/uv_mmtimer.c
@@ -89,13 +89,17 @@ static long uv_mmtimer_ioctl(struct file *file, unsigned int cmd,
89 switch (cmd) { 89 switch (cmd) {
90 case MMTIMER_GETOFFSET: /* offset of the counter */ 90 case MMTIMER_GETOFFSET: /* offset of the counter */
91 /* 91 /*
92 * UV RTC register is on its own page 92 * Starting with HUB rev 2.0, the UV RTC register is
93 * replicated across all cachelines of it's own page.
94 * This allows faster simultaneous reads from a given socket.
95 *
96 * The offset returned is in 64 bit units.
93 */ 97 */
94 if (PAGE_SIZE <= (1 << 16)) 98 if (uv_get_min_hub_revision_id() == 1)
95 ret = ((UV_LOCAL_MMR_BASE | UVH_RTC) & (PAGE_SIZE-1)) 99 ret = 0;
96 / 8;
97 else 100 else
98 ret = -ENOSYS; 101 ret = ((uv_blade_processor_id() * L1_CACHE_BYTES) %
102 PAGE_SIZE) / 8;
99 break; 103 break;
100 104
101 case MMTIMER_GETRES: /* resolution of the clock in 10^-15 s */ 105 case MMTIMER_GETRES: /* resolution of the clock in 10^-15 s */
@@ -115,8 +119,8 @@ static long uv_mmtimer_ioctl(struct file *file, unsigned int cmd,
115 ret = hweight64(UVH_RTC_REAL_TIME_CLOCK_MASK); 119 ret = hweight64(UVH_RTC_REAL_TIME_CLOCK_MASK);
116 break; 120 break;
117 121
118 case MMTIMER_MMAPAVAIL: /* can we mmap the clock into userspace? */ 122 case MMTIMER_MMAPAVAIL:
119 ret = (PAGE_SIZE <= (1 << 16)) ? 1 : 0; 123 ret = 1;
120 break; 124 break;
121 125
122 case MMTIMER_GETCOUNTER: 126 case MMTIMER_GETCOUNTER:
diff --git a/drivers/clocksource/cs5535-clockevt.c b/drivers/clocksource/cs5535-clockevt.c
index 27d20fac19d1..b314a999aabe 100644
--- a/drivers/clocksource/cs5535-clockevt.c
+++ b/drivers/clocksource/cs5535-clockevt.c
@@ -21,7 +21,7 @@
21 21
22#define DRV_NAME "cs5535-clockevt" 22#define DRV_NAME "cs5535-clockevt"
23 23
24static int timer_irq = CONFIG_CS5535_MFGPT_DEFAULT_IRQ; 24static int timer_irq;
25module_param_named(irq, timer_irq, int, 0644); 25module_param_named(irq, timer_irq, int, 0644);
26MODULE_PARM_DESC(irq, "Which IRQ to use for the clock source MFGPT ticks."); 26MODULE_PARM_DESC(irq, "Which IRQ to use for the clock source MFGPT ticks.");
27 27
diff --git a/drivers/connector/connector.c b/drivers/connector/connector.c
index f06024668f99..537c29ac4487 100644
--- a/drivers/connector/connector.c
+++ b/drivers/connector/connector.c
@@ -36,17 +36,6 @@ MODULE_LICENSE("GPL");
36MODULE_AUTHOR("Evgeniy Polyakov <zbr@ioremap.net>"); 36MODULE_AUTHOR("Evgeniy Polyakov <zbr@ioremap.net>");
37MODULE_DESCRIPTION("Generic userspace <-> kernelspace connector."); 37MODULE_DESCRIPTION("Generic userspace <-> kernelspace connector.");
38 38
39static u32 cn_idx = CN_IDX_CONNECTOR;
40static u32 cn_val = CN_VAL_CONNECTOR;
41
42module_param(cn_idx, uint, 0);
43module_param(cn_val, uint, 0);
44MODULE_PARM_DESC(cn_idx, "Connector's main device idx.");
45MODULE_PARM_DESC(cn_val, "Connector's main device val.");
46
47static DEFINE_MUTEX(notify_lock);
48static LIST_HEAD(notify_list);
49
50static struct cn_dev cdev; 39static struct cn_dev cdev;
51 40
52static int cn_already_initialized; 41static int cn_already_initialized;
@@ -210,54 +199,6 @@ static void cn_rx_skb(struct sk_buff *__skb)
210} 199}
211 200
212/* 201/*
213 * Notification routing.
214 *
215 * Gets id and checks if there are notification request for it's idx
216 * and val. If there are such requests notify the listeners with the
217 * given notify event.
218 *
219 */
220static void cn_notify(struct cb_id *id, u32 notify_event)
221{
222 struct cn_ctl_entry *ent;
223
224 mutex_lock(&notify_lock);
225 list_for_each_entry(ent, &notify_list, notify_entry) {
226 int i;
227 struct cn_notify_req *req;
228 struct cn_ctl_msg *ctl = ent->msg;
229 int idx_found, val_found;
230
231 idx_found = val_found = 0;
232
233 req = (struct cn_notify_req *)ctl->data;
234 for (i = 0; i < ctl->idx_notify_num; ++i, ++req) {
235 if (id->idx >= req->first &&
236 id->idx < req->first + req->range) {
237 idx_found = 1;
238 break;
239 }
240 }
241
242 for (i = 0; i < ctl->val_notify_num; ++i, ++req) {
243 if (id->val >= req->first &&
244 id->val < req->first + req->range) {
245 val_found = 1;
246 break;
247 }
248 }
249
250 if (idx_found && val_found) {
251 struct cn_msg m = { .ack = notify_event, };
252
253 memcpy(&m.id, id, sizeof(m.id));
254 cn_netlink_send(&m, ctl->group, GFP_KERNEL);
255 }
256 }
257 mutex_unlock(&notify_lock);
258}
259
260/*
261 * Callback add routing - adds callback with given ID and name. 202 * Callback add routing - adds callback with given ID and name.
262 * If there is registered callback with the same ID it will not be added. 203 * If there is registered callback with the same ID it will not be added.
263 * 204 *
@@ -276,8 +217,6 @@ int cn_add_callback(struct cb_id *id, char *name,
276 if (err) 217 if (err)
277 return err; 218 return err;
278 219
279 cn_notify(id, 0);
280
281 return 0; 220 return 0;
282} 221}
283EXPORT_SYMBOL_GPL(cn_add_callback); 222EXPORT_SYMBOL_GPL(cn_add_callback);
@@ -295,111 +234,9 @@ void cn_del_callback(struct cb_id *id)
295 struct cn_dev *dev = &cdev; 234 struct cn_dev *dev = &cdev;
296 235
297 cn_queue_del_callback(dev->cbdev, id); 236 cn_queue_del_callback(dev->cbdev, id);
298 cn_notify(id, 1);
299} 237}
300EXPORT_SYMBOL_GPL(cn_del_callback); 238EXPORT_SYMBOL_GPL(cn_del_callback);
301 239
302/*
303 * Checks two connector's control messages to be the same.
304 * Returns 1 if they are the same or if the first one is corrupted.
305 */
306static int cn_ctl_msg_equals(struct cn_ctl_msg *m1, struct cn_ctl_msg *m2)
307{
308 int i;
309 struct cn_notify_req *req1, *req2;
310
311 if (m1->idx_notify_num != m2->idx_notify_num)
312 return 0;
313
314 if (m1->val_notify_num != m2->val_notify_num)
315 return 0;
316
317 if (m1->len != m2->len)
318 return 0;
319
320 if ((m1->idx_notify_num + m1->val_notify_num) * sizeof(*req1) !=
321 m1->len)
322 return 1;
323
324 req1 = (struct cn_notify_req *)m1->data;
325 req2 = (struct cn_notify_req *)m2->data;
326
327 for (i = 0; i < m1->idx_notify_num; ++i) {
328 if (req1->first != req2->first || req1->range != req2->range)
329 return 0;
330 req1++;
331 req2++;
332 }
333
334 for (i = 0; i < m1->val_notify_num; ++i) {
335 if (req1->first != req2->first || req1->range != req2->range)
336 return 0;
337 req1++;
338 req2++;
339 }
340
341 return 1;
342}
343
344/*
345 * Main connector device's callback.
346 *
347 * Used for notification of a request's processing.
348 */
349static void cn_callback(struct cn_msg *msg, struct netlink_skb_parms *nsp)
350{
351 struct cn_ctl_msg *ctl;
352 struct cn_ctl_entry *ent;
353 u32 size;
354
355 if (msg->len < sizeof(*ctl))
356 return;
357
358 ctl = (struct cn_ctl_msg *)msg->data;
359
360 size = (sizeof(*ctl) + ((ctl->idx_notify_num +
361 ctl->val_notify_num) *
362 sizeof(struct cn_notify_req)));
363
364 if (msg->len != size)
365 return;
366
367 if (ctl->len + sizeof(*ctl) != msg->len)
368 return;
369
370 /*
371 * Remove notification.
372 */
373 if (ctl->group == 0) {
374 struct cn_ctl_entry *n;
375
376 mutex_lock(&notify_lock);
377 list_for_each_entry_safe(ent, n, &notify_list, notify_entry) {
378 if (cn_ctl_msg_equals(ent->msg, ctl)) {
379 list_del(&ent->notify_entry);
380 kfree(ent);
381 }
382 }
383 mutex_unlock(&notify_lock);
384
385 return;
386 }
387
388 size += sizeof(*ent);
389
390 ent = kzalloc(size, GFP_KERNEL);
391 if (!ent)
392 return;
393
394 ent->msg = (struct cn_ctl_msg *)(ent + 1);
395
396 memcpy(ent->msg, ctl, size - sizeof(*ent));
397
398 mutex_lock(&notify_lock);
399 list_add(&ent->notify_entry, &notify_list);
400 mutex_unlock(&notify_lock);
401}
402
403static int cn_proc_show(struct seq_file *m, void *v) 240static int cn_proc_show(struct seq_file *m, void *v)
404{ 241{
405 struct cn_queue_dev *dev = cdev.cbdev; 242 struct cn_queue_dev *dev = cdev.cbdev;
@@ -437,11 +274,8 @@ static const struct file_operations cn_file_ops = {
437static int __devinit cn_init(void) 274static int __devinit cn_init(void)
438{ 275{
439 struct cn_dev *dev = &cdev; 276 struct cn_dev *dev = &cdev;
440 int err;
441 277
442 dev->input = cn_rx_skb; 278 dev->input = cn_rx_skb;
443 dev->id.idx = cn_idx;
444 dev->id.val = cn_val;
445 279
446 dev->nls = netlink_kernel_create(&init_net, NETLINK_CONNECTOR, 280 dev->nls = netlink_kernel_create(&init_net, NETLINK_CONNECTOR,
447 CN_NETLINK_USERS + 0xf, 281 CN_NETLINK_USERS + 0xf,
@@ -457,14 +291,6 @@ static int __devinit cn_init(void)
457 291
458 cn_already_initialized = 1; 292 cn_already_initialized = 1;
459 293
460 err = cn_add_callback(&dev->id, "connector", &cn_callback);
461 if (err) {
462 cn_already_initialized = 0;
463 cn_queue_free_dev(dev->cbdev);
464 netlink_kernel_release(dev->nls);
465 return -EINVAL;
466 }
467
468 proc_net_fops_create(&init_net, "connector", S_IRUGO, &cn_file_ops); 294 proc_net_fops_create(&init_net, "connector", S_IRUGO, &cn_file_ops);
469 295
470 return 0; 296 return 0;
@@ -478,7 +304,6 @@ static void __devexit cn_fini(void)
478 304
479 proc_net_remove(&init_net, "connector"); 305 proc_net_remove(&init_net, "connector");
480 306
481 cn_del_callback(&dev->id);
482 cn_queue_free_dev(dev->cbdev); 307 cn_queue_free_dev(dev->cbdev);
483 netlink_kernel_release(dev->nls); 308 netlink_kernel_release(dev->nls);
484} 309}
diff --git a/drivers/cpufreq/cpufreq_ondemand.c b/drivers/cpufreq/cpufreq_ondemand.c
index 4b34ade2332b..bd444dc93cf2 100644
--- a/drivers/cpufreq/cpufreq_ondemand.c
+++ b/drivers/cpufreq/cpufreq_ondemand.c
@@ -554,6 +554,9 @@ static void dbs_check_cpu(struct cpu_dbs_info_s *this_dbs_info)
554 (dbs_tuners_ins.up_threshold - 554 (dbs_tuners_ins.up_threshold -
555 dbs_tuners_ins.down_differential); 555 dbs_tuners_ins.down_differential);
556 556
557 if (freq_next < policy->min)
558 freq_next = policy->min;
559
557 if (!dbs_tuners_ins.powersave_bias) { 560 if (!dbs_tuners_ins.powersave_bias) {
558 __cpufreq_driver_target(policy, freq_next, 561 __cpufreq_driver_target(policy, freq_next,
559 CPUFREQ_RELATION_L); 562 CPUFREQ_RELATION_L);
diff --git a/drivers/cpuidle/governors/menu.c b/drivers/cpuidle/governors/menu.c
index 68104434ebb5..73655aeb3a60 100644
--- a/drivers/cpuidle/governors/menu.c
+++ b/drivers/cpuidle/governors/menu.c
@@ -18,6 +18,7 @@
18#include <linux/hrtimer.h> 18#include <linux/hrtimer.h>
19#include <linux/tick.h> 19#include <linux/tick.h>
20#include <linux/sched.h> 20#include <linux/sched.h>
21#include <linux/math64.h>
21 22
22#define BUCKETS 12 23#define BUCKETS 12
23#define RESOLUTION 1024 24#define RESOLUTION 1024
@@ -169,6 +170,12 @@ static DEFINE_PER_CPU(struct menu_device, menu_devices);
169 170
170static void menu_update(struct cpuidle_device *dev); 171static void menu_update(struct cpuidle_device *dev);
171 172
173/* This implements DIV_ROUND_CLOSEST but avoids 64 bit division */
174static u64 div_round64(u64 dividend, u32 divisor)
175{
176 return div_u64(dividend + (divisor / 2), divisor);
177}
178
172/** 179/**
173 * menu_select - selects the next idle state to enter 180 * menu_select - selects the next idle state to enter
174 * @dev: the CPU 181 * @dev: the CPU
@@ -209,9 +216,8 @@ static int menu_select(struct cpuidle_device *dev)
209 data->correction_factor[data->bucket] = RESOLUTION * DECAY; 216 data->correction_factor[data->bucket] = RESOLUTION * DECAY;
210 217
211 /* Make sure to round up for half microseconds */ 218 /* Make sure to round up for half microseconds */
212 data->predicted_us = DIV_ROUND_CLOSEST( 219 data->predicted_us = div_round64(data->expected_us * data->correction_factor[data->bucket],
213 data->expected_us * data->correction_factor[data->bucket], 220 RESOLUTION * DECAY);
214 RESOLUTION * DECAY);
215 221
216 /* 222 /*
217 * We want to default to C1 (hlt), not to busy polling 223 * We want to default to C1 (hlt), not to busy polling
diff --git a/drivers/crypto/padlock-sha.c b/drivers/crypto/padlock-sha.c
index 0af80577dc7b..d3a27e0119bc 100644
--- a/drivers/crypto/padlock-sha.c
+++ b/drivers/crypto/padlock-sha.c
@@ -57,6 +57,23 @@ static int padlock_sha_update(struct shash_desc *desc,
57 return crypto_shash_update(&dctx->fallback, data, length); 57 return crypto_shash_update(&dctx->fallback, data, length);
58} 58}
59 59
60static int padlock_sha_export(struct shash_desc *desc, void *out)
61{
62 struct padlock_sha_desc *dctx = shash_desc_ctx(desc);
63
64 return crypto_shash_export(&dctx->fallback, out);
65}
66
67static int padlock_sha_import(struct shash_desc *desc, const void *in)
68{
69 struct padlock_sha_desc *dctx = shash_desc_ctx(desc);
70 struct padlock_sha_ctx *ctx = crypto_shash_ctx(desc->tfm);
71
72 dctx->fallback.tfm = ctx->fallback;
73 dctx->fallback.flags = desc->flags & CRYPTO_TFM_REQ_MAY_SLEEP;
74 return crypto_shash_import(&dctx->fallback, in);
75}
76
60static inline void padlock_output_block(uint32_t *src, 77static inline void padlock_output_block(uint32_t *src,
61 uint32_t *dst, size_t count) 78 uint32_t *dst, size_t count)
62{ 79{
@@ -235,7 +252,10 @@ static struct shash_alg sha1_alg = {
235 .update = padlock_sha_update, 252 .update = padlock_sha_update,
236 .finup = padlock_sha1_finup, 253 .finup = padlock_sha1_finup,
237 .final = padlock_sha1_final, 254 .final = padlock_sha1_final,
255 .export = padlock_sha_export,
256 .import = padlock_sha_import,
238 .descsize = sizeof(struct padlock_sha_desc), 257 .descsize = sizeof(struct padlock_sha_desc),
258 .statesize = sizeof(struct sha1_state),
239 .base = { 259 .base = {
240 .cra_name = "sha1", 260 .cra_name = "sha1",
241 .cra_driver_name = "sha1-padlock", 261 .cra_driver_name = "sha1-padlock",
@@ -256,7 +276,10 @@ static struct shash_alg sha256_alg = {
256 .update = padlock_sha_update, 276 .update = padlock_sha_update,
257 .finup = padlock_sha256_finup, 277 .finup = padlock_sha256_finup,
258 .final = padlock_sha256_final, 278 .final = padlock_sha256_final,
279 .export = padlock_sha_export,
280 .import = padlock_sha_import,
259 .descsize = sizeof(struct padlock_sha_desc), 281 .descsize = sizeof(struct padlock_sha_desc),
282 .statesize = sizeof(struct sha256_state),
260 .base = { 283 .base = {
261 .cra_name = "sha256", 284 .cra_name = "sha256",
262 .cra_driver_name = "sha256-padlock", 285 .cra_driver_name = "sha256-padlock",
diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c
index f15112569c1d..efc1a61ca231 100644
--- a/drivers/dma/at_hdmac.c
+++ b/drivers/dma/at_hdmac.c
@@ -815,7 +815,7 @@ atc_is_tx_complete(struct dma_chan *chan,
815 dev_vdbg(chan2dev(chan), "is_tx_complete: %d (d%d, u%d)\n", 815 dev_vdbg(chan2dev(chan), "is_tx_complete: %d (d%d, u%d)\n",
816 cookie, done ? *done : 0, used ? *used : 0); 816 cookie, done ? *done : 0, used ? *used : 0);
817 817
818 spin_lock_bh(atchan->lock); 818 spin_lock_bh(&atchan->lock);
819 819
820 last_complete = atchan->completed_cookie; 820 last_complete = atchan->completed_cookie;
821 last_used = chan->cookie; 821 last_used = chan->cookie;
@@ -830,7 +830,7 @@ atc_is_tx_complete(struct dma_chan *chan,
830 ret = dma_async_is_complete(cookie, last_complete, last_used); 830 ret = dma_async_is_complete(cookie, last_complete, last_used);
831 } 831 }
832 832
833 spin_unlock_bh(atchan->lock); 833 spin_unlock_bh(&atchan->lock);
834 834
835 if (done) 835 if (done)
836 *done = last_complete; 836 *done = last_complete;
diff --git a/drivers/dma/coh901318.c b/drivers/dma/coh901318.c
index 4a99cd94536b..64a937262a40 100644
--- a/drivers/dma/coh901318.c
+++ b/drivers/dma/coh901318.c
@@ -613,8 +613,6 @@ static void dma_tasklet(unsigned long data)
613 cohd_fin->pending_irqs--; 613 cohd_fin->pending_irqs--;
614 cohc->completed = cohd_fin->desc.cookie; 614 cohc->completed = cohd_fin->desc.cookie;
615 615
616 BUG_ON(cohc->nbr_active_done && cohd_fin == NULL);
617
618 if (cohc->nbr_active_done == 0) 616 if (cohc->nbr_active_done == 0)
619 return; 617 return;
620 618
@@ -1294,8 +1292,8 @@ static int __exit coh901318_remove(struct platform_device *pdev)
1294 dma_async_device_unregister(&base->dma_slave); 1292 dma_async_device_unregister(&base->dma_slave);
1295 coh901318_pool_destroy(&base->pool); 1293 coh901318_pool_destroy(&base->pool);
1296 free_irq(platform_get_irq(pdev, 0), base); 1294 free_irq(platform_get_irq(pdev, 0), base);
1297 kfree(base);
1298 iounmap(base->virtbase); 1295 iounmap(base->virtbase);
1296 kfree(base);
1299 release_mem_region(pdev->resource->start, 1297 release_mem_region(pdev->resource->start,
1300 resource_size(pdev->resource)); 1298 resource_size(pdev->resource));
1301 return 0; 1299 return 0;
diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c
index 6f51a0a7a8bb..e7a3230fb7d5 100644
--- a/drivers/dma/dmaengine.c
+++ b/drivers/dma/dmaengine.c
@@ -826,6 +826,7 @@ void dma_async_device_unregister(struct dma_device *device)
826 chan->dev->chan = NULL; 826 chan->dev->chan = NULL;
827 mutex_unlock(&dma_list_mutex); 827 mutex_unlock(&dma_list_mutex);
828 device_unregister(&chan->dev->device); 828 device_unregister(&chan->dev->device);
829 free_percpu(chan->local);
829 } 830 }
830} 831}
831EXPORT_SYMBOL(dma_async_device_unregister); 832EXPORT_SYMBOL(dma_async_device_unregister);
diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c
index 8b905161fbf4..948d563941c9 100644
--- a/drivers/dma/dmatest.c
+++ b/drivers/dma/dmatest.c
@@ -467,7 +467,7 @@ err_srcs:
467 467
468 if (iterations > 0) 468 if (iterations > 0)
469 while (!kthread_should_stop()) { 469 while (!kthread_should_stop()) {
470 DECLARE_WAIT_QUEUE_HEAD(wait_dmatest_exit); 470 DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wait_dmatest_exit);
471 interruptible_sleep_on(&wait_dmatest_exit); 471 interruptible_sleep_on(&wait_dmatest_exit);
472 } 472 }
473 473
diff --git a/drivers/dma/dw_dmac.c b/drivers/dma/dw_dmac.c
index 285bed0fe17b..d28369f7afd2 100644
--- a/drivers/dma/dw_dmac.c
+++ b/drivers/dma/dw_dmac.c
@@ -1270,8 +1270,6 @@ static int __init dw_probe(struct platform_device *pdev)
1270 goto err_kfree; 1270 goto err_kfree;
1271 } 1271 }
1272 1272
1273 memset(dw, 0, sizeof *dw);
1274
1275 dw->regs = ioremap(io->start, DW_REGLEN); 1273 dw->regs = ioremap(io->start, DW_REGLEN);
1276 if (!dw->regs) { 1274 if (!dw->regs) {
1277 err = -ENOMEM; 1275 err = -ENOMEM;
diff --git a/drivers/dma/ioat/dma.c b/drivers/dma/ioat/dma.c
index c524d36d3c2e..dcc4ab78b32b 100644
--- a/drivers/dma/ioat/dma.c
+++ b/drivers/dma/ioat/dma.c
@@ -1032,7 +1032,7 @@ int __devinit ioat_probe(struct ioatdma_device *device)
1032 dma->dev = &pdev->dev; 1032 dma->dev = &pdev->dev;
1033 1033
1034 if (!dma->chancnt) { 1034 if (!dma->chancnt) {
1035 dev_err(dev, "zero channels detected\n"); 1035 dev_err(dev, "channel enumeration error\n");
1036 goto err_setup_interrupts; 1036 goto err_setup_interrupts;
1037 } 1037 }
1038 1038
diff --git a/drivers/dma/ioat/dma.h b/drivers/dma/ioat/dma.h
index 45edde996480..bbc3e78ef333 100644
--- a/drivers/dma/ioat/dma.h
+++ b/drivers/dma/ioat/dma.h
@@ -60,6 +60,7 @@
60 * @dca: direct cache access context 60 * @dca: direct cache access context
61 * @intr_quirk: interrupt setup quirk (for ioat_v1 devices) 61 * @intr_quirk: interrupt setup quirk (for ioat_v1 devices)
62 * @enumerate_channels: hw version specific channel enumeration 62 * @enumerate_channels: hw version specific channel enumeration
63 * @reset_hw: hw version specific channel (re)initialization
63 * @cleanup_tasklet: select between the v2 and v3 cleanup routines 64 * @cleanup_tasklet: select between the v2 and v3 cleanup routines
64 * @timer_fn: select between the v2 and v3 timer watchdog routines 65 * @timer_fn: select between the v2 and v3 timer watchdog routines
65 * @self_test: hardware version specific self test for each supported op type 66 * @self_test: hardware version specific self test for each supported op type
@@ -78,6 +79,7 @@ struct ioatdma_device {
78 struct dca_provider *dca; 79 struct dca_provider *dca;
79 void (*intr_quirk)(struct ioatdma_device *device); 80 void (*intr_quirk)(struct ioatdma_device *device);
80 int (*enumerate_channels)(struct ioatdma_device *device); 81 int (*enumerate_channels)(struct ioatdma_device *device);
82 int (*reset_hw)(struct ioat_chan_common *chan);
81 void (*cleanup_tasklet)(unsigned long data); 83 void (*cleanup_tasklet)(unsigned long data);
82 void (*timer_fn)(unsigned long data); 84 void (*timer_fn)(unsigned long data);
83 int (*self_test)(struct ioatdma_device *device); 85 int (*self_test)(struct ioatdma_device *device);
@@ -264,6 +266,22 @@ static inline void ioat_suspend(struct ioat_chan_common *chan)
264 writeb(IOAT_CHANCMD_SUSPEND, chan->reg_base + IOAT_CHANCMD_OFFSET(ver)); 266 writeb(IOAT_CHANCMD_SUSPEND, chan->reg_base + IOAT_CHANCMD_OFFSET(ver));
265} 267}
266 268
269static inline void ioat_reset(struct ioat_chan_common *chan)
270{
271 u8 ver = chan->device->version;
272
273 writeb(IOAT_CHANCMD_RESET, chan->reg_base + IOAT_CHANCMD_OFFSET(ver));
274}
275
276static inline bool ioat_reset_pending(struct ioat_chan_common *chan)
277{
278 u8 ver = chan->device->version;
279 u8 cmd;
280
281 cmd = readb(chan->reg_base + IOAT_CHANCMD_OFFSET(ver));
282 return (cmd & IOAT_CHANCMD_RESET) == IOAT_CHANCMD_RESET;
283}
284
267static inline void ioat_set_chainaddr(struct ioat_dma_chan *ioat, u64 addr) 285static inline void ioat_set_chainaddr(struct ioat_dma_chan *ioat, u64 addr)
268{ 286{
269 struct ioat_chan_common *chan = &ioat->base; 287 struct ioat_chan_common *chan = &ioat->base;
diff --git a/drivers/dma/ioat/dma_v2.c b/drivers/dma/ioat/dma_v2.c
index 8f1f7f05deaa..5cc37afe2bc1 100644
--- a/drivers/dma/ioat/dma_v2.c
+++ b/drivers/dma/ioat/dma_v2.c
@@ -239,20 +239,50 @@ void __ioat2_restart_chan(struct ioat2_dma_chan *ioat)
239 __ioat2_start_null_desc(ioat); 239 __ioat2_start_null_desc(ioat);
240} 240}
241 241
242static void ioat2_restart_channel(struct ioat2_dma_chan *ioat) 242int ioat2_quiesce(struct ioat_chan_common *chan, unsigned long tmo)
243{ 243{
244 struct ioat_chan_common *chan = &ioat->base; 244 unsigned long end = jiffies + tmo;
245 unsigned long phys_complete; 245 int err = 0;
246 u32 status; 246 u32 status;
247 247
248 status = ioat_chansts(chan); 248 status = ioat_chansts(chan);
249 if (is_ioat_active(status) || is_ioat_idle(status)) 249 if (is_ioat_active(status) || is_ioat_idle(status))
250 ioat_suspend(chan); 250 ioat_suspend(chan);
251 while (is_ioat_active(status) || is_ioat_idle(status)) { 251 while (is_ioat_active(status) || is_ioat_idle(status)) {
252 if (tmo && time_after(jiffies, end)) {
253 err = -ETIMEDOUT;
254 break;
255 }
252 status = ioat_chansts(chan); 256 status = ioat_chansts(chan);
253 cpu_relax(); 257 cpu_relax();
254 } 258 }
255 259
260 return err;
261}
262
263int ioat2_reset_sync(struct ioat_chan_common *chan, unsigned long tmo)
264{
265 unsigned long end = jiffies + tmo;
266 int err = 0;
267
268 ioat_reset(chan);
269 while (ioat_reset_pending(chan)) {
270 if (end && time_after(jiffies, end)) {
271 err = -ETIMEDOUT;
272 break;
273 }
274 cpu_relax();
275 }
276
277 return err;
278}
279
280static void ioat2_restart_channel(struct ioat2_dma_chan *ioat)
281{
282 struct ioat_chan_common *chan = &ioat->base;
283 unsigned long phys_complete;
284
285 ioat2_quiesce(chan, 0);
256 if (ioat_cleanup_preamble(chan, &phys_complete)) 286 if (ioat_cleanup_preamble(chan, &phys_complete))
257 __cleanup(ioat, phys_complete); 287 __cleanup(ioat, phys_complete);
258 288
@@ -318,6 +348,19 @@ void ioat2_timer_event(unsigned long data)
318 spin_unlock_bh(&chan->cleanup_lock); 348 spin_unlock_bh(&chan->cleanup_lock);
319} 349}
320 350
351static int ioat2_reset_hw(struct ioat_chan_common *chan)
352{
353 /* throw away whatever the channel was doing and get it initialized */
354 u32 chanerr;
355
356 ioat2_quiesce(chan, msecs_to_jiffies(100));
357
358 chanerr = readl(chan->reg_base + IOAT_CHANERR_OFFSET);
359 writel(chanerr, chan->reg_base + IOAT_CHANERR_OFFSET);
360
361 return ioat2_reset_sync(chan, msecs_to_jiffies(200));
362}
363
321/** 364/**
322 * ioat2_enumerate_channels - find and initialize the device's channels 365 * ioat2_enumerate_channels - find and initialize the device's channels
323 * @device: the device to be enumerated 366 * @device: the device to be enumerated
@@ -360,6 +403,10 @@ int ioat2_enumerate_channels(struct ioatdma_device *device)
360 (unsigned long) ioat); 403 (unsigned long) ioat);
361 ioat->xfercap_log = xfercap_log; 404 ioat->xfercap_log = xfercap_log;
362 spin_lock_init(&ioat->ring_lock); 405 spin_lock_init(&ioat->ring_lock);
406 if (device->reset_hw(&ioat->base)) {
407 i = 0;
408 break;
409 }
363 } 410 }
364 dma->chancnt = i; 411 dma->chancnt = i;
365 return i; 412 return i;
@@ -467,7 +514,6 @@ int ioat2_alloc_chan_resources(struct dma_chan *c)
467 struct ioat2_dma_chan *ioat = to_ioat2_chan(c); 514 struct ioat2_dma_chan *ioat = to_ioat2_chan(c);
468 struct ioat_chan_common *chan = &ioat->base; 515 struct ioat_chan_common *chan = &ioat->base;
469 struct ioat_ring_ent **ring; 516 struct ioat_ring_ent **ring;
470 u32 chanerr;
471 int order; 517 int order;
472 518
473 /* have we already been set up? */ 519 /* have we already been set up? */
@@ -477,12 +523,6 @@ int ioat2_alloc_chan_resources(struct dma_chan *c)
477 /* Setup register to interrupt and write completion status on error */ 523 /* Setup register to interrupt and write completion status on error */
478 writew(IOAT_CHANCTRL_RUN, chan->reg_base + IOAT_CHANCTRL_OFFSET); 524 writew(IOAT_CHANCTRL_RUN, chan->reg_base + IOAT_CHANCTRL_OFFSET);
479 525
480 chanerr = readl(chan->reg_base + IOAT_CHANERR_OFFSET);
481 if (chanerr) {
482 dev_err(to_dev(chan), "CHANERR = %x, clearing\n", chanerr);
483 writel(chanerr, chan->reg_base + IOAT_CHANERR_OFFSET);
484 }
485
486 /* allocate a completion writeback area */ 526 /* allocate a completion writeback area */
487 /* doing 2 32bit writes to mmio since 1 64b write doesn't work */ 527 /* doing 2 32bit writes to mmio since 1 64b write doesn't work */
488 chan->completion = pci_pool_alloc(chan->device->completion_pool, 528 chan->completion = pci_pool_alloc(chan->device->completion_pool,
@@ -746,13 +786,7 @@ void ioat2_free_chan_resources(struct dma_chan *c)
746 tasklet_disable(&chan->cleanup_task); 786 tasklet_disable(&chan->cleanup_task);
747 del_timer_sync(&chan->timer); 787 del_timer_sync(&chan->timer);
748 device->cleanup_tasklet((unsigned long) ioat); 788 device->cleanup_tasklet((unsigned long) ioat);
749 789 device->reset_hw(chan);
750 /* Delay 100ms after reset to allow internal DMA logic to quiesce
751 * before removing DMA descriptor resources.
752 */
753 writeb(IOAT_CHANCMD_RESET,
754 chan->reg_base + IOAT_CHANCMD_OFFSET(chan->device->version));
755 mdelay(100);
756 790
757 spin_lock_bh(&ioat->ring_lock); 791 spin_lock_bh(&ioat->ring_lock);
758 descs = ioat2_ring_space(ioat); 792 descs = ioat2_ring_space(ioat);
@@ -839,6 +873,7 @@ int __devinit ioat2_dma_probe(struct ioatdma_device *device, int dca)
839 int err; 873 int err;
840 874
841 device->enumerate_channels = ioat2_enumerate_channels; 875 device->enumerate_channels = ioat2_enumerate_channels;
876 device->reset_hw = ioat2_reset_hw;
842 device->cleanup_tasklet = ioat2_cleanup_tasklet; 877 device->cleanup_tasklet = ioat2_cleanup_tasklet;
843 device->timer_fn = ioat2_timer_event; 878 device->timer_fn = ioat2_timer_event;
844 device->self_test = ioat_dma_self_test; 879 device->self_test = ioat_dma_self_test;
diff --git a/drivers/dma/ioat/dma_v2.h b/drivers/dma/ioat/dma_v2.h
index 1d849ef74d5f..3afad8da43cc 100644
--- a/drivers/dma/ioat/dma_v2.h
+++ b/drivers/dma/ioat/dma_v2.h
@@ -185,6 +185,8 @@ bool reshape_ring(struct ioat2_dma_chan *ioat, int order);
185void __ioat2_issue_pending(struct ioat2_dma_chan *ioat); 185void __ioat2_issue_pending(struct ioat2_dma_chan *ioat);
186void ioat2_cleanup_tasklet(unsigned long data); 186void ioat2_cleanup_tasklet(unsigned long data);
187void ioat2_timer_event(unsigned long data); 187void ioat2_timer_event(unsigned long data);
188int ioat2_quiesce(struct ioat_chan_common *chan, unsigned long tmo);
189int ioat2_reset_sync(struct ioat_chan_common *chan, unsigned long tmo);
188extern struct kobj_type ioat2_ktype; 190extern struct kobj_type ioat2_ktype;
189extern struct kmem_cache *ioat2_cache; 191extern struct kmem_cache *ioat2_cache;
190#endif /* IOATDMA_V2_H */ 192#endif /* IOATDMA_V2_H */
diff --git a/drivers/dma/ioat/dma_v3.c b/drivers/dma/ioat/dma_v3.c
index 42f6f10fb0cc..9908c9e94b2d 100644
--- a/drivers/dma/ioat/dma_v3.c
+++ b/drivers/dma/ioat/dma_v3.c
@@ -650,9 +650,11 @@ __ioat3_prep_pq_lock(struct dma_chan *c, enum sum_check_flags *result,
650 650
651 num_descs = ioat2_xferlen_to_descs(ioat, len); 651 num_descs = ioat2_xferlen_to_descs(ioat, len);
652 /* we need 2x the number of descriptors to cover greater than 3 652 /* we need 2x the number of descriptors to cover greater than 3
653 * sources 653 * sources (we need 1 extra source in the q-only continuation
654 * case and 3 extra sources in the p+q continuation case.
654 */ 655 */
655 if (src_cnt > 3 || flags & DMA_PREP_CONTINUE) { 656 if (src_cnt + dmaf_p_disabled_continue(flags) > 3 ||
657 (dmaf_continue(flags) && !dmaf_p_disabled_continue(flags))) {
656 with_ext = 1; 658 with_ext = 1;
657 num_descs *= 2; 659 num_descs *= 2;
658 } else 660 } else
@@ -1128,6 +1130,45 @@ static int __devinit ioat3_dma_self_test(struct ioatdma_device *device)
1128 return 0; 1130 return 0;
1129} 1131}
1130 1132
1133static int ioat3_reset_hw(struct ioat_chan_common *chan)
1134{
1135 /* throw away whatever the channel was doing and get it
1136 * initialized, with ioat3 specific workarounds
1137 */
1138 struct ioatdma_device *device = chan->device;
1139 struct pci_dev *pdev = device->pdev;
1140 u32 chanerr;
1141 u16 dev_id;
1142 int err;
1143
1144 ioat2_quiesce(chan, msecs_to_jiffies(100));
1145
1146 chanerr = readl(chan->reg_base + IOAT_CHANERR_OFFSET);
1147 writel(chanerr, chan->reg_base + IOAT_CHANERR_OFFSET);
1148
1149 /* -= IOAT ver.3 workarounds =- */
1150 /* Write CHANERRMSK_INT with 3E07h to mask out the errors
1151 * that can cause stability issues for IOAT ver.3, and clear any
1152 * pending errors
1153 */
1154 pci_write_config_dword(pdev, IOAT_PCI_CHANERRMASK_INT_OFFSET, 0x3e07);
1155 err = pci_read_config_dword(pdev, IOAT_PCI_CHANERR_INT_OFFSET, &chanerr);
1156 if (err) {
1157 dev_err(&pdev->dev, "channel error register unreachable\n");
1158 return err;
1159 }
1160 pci_write_config_dword(pdev, IOAT_PCI_CHANERR_INT_OFFSET, chanerr);
1161
1162 /* Clear DMAUNCERRSTS Cfg-Reg Parity Error status bit
1163 * (workaround for spurious config parity error after restart)
1164 */
1165 pci_read_config_word(pdev, IOAT_PCI_DEVICE_ID_OFFSET, &dev_id);
1166 if (dev_id == PCI_DEVICE_ID_INTEL_IOAT_TBG0)
1167 pci_write_config_dword(pdev, IOAT_PCI_DMAUNCERRSTS_OFFSET, 0x10);
1168
1169 return ioat2_reset_sync(chan, msecs_to_jiffies(200));
1170}
1171
1131int __devinit ioat3_dma_probe(struct ioatdma_device *device, int dca) 1172int __devinit ioat3_dma_probe(struct ioatdma_device *device, int dca)
1132{ 1173{
1133 struct pci_dev *pdev = device->pdev; 1174 struct pci_dev *pdev = device->pdev;
@@ -1137,10 +1178,10 @@ int __devinit ioat3_dma_probe(struct ioatdma_device *device, int dca)
1137 struct ioat_chan_common *chan; 1178 struct ioat_chan_common *chan;
1138 bool is_raid_device = false; 1179 bool is_raid_device = false;
1139 int err; 1180 int err;
1140 u16 dev_id;
1141 u32 cap; 1181 u32 cap;
1142 1182
1143 device->enumerate_channels = ioat2_enumerate_channels; 1183 device->enumerate_channels = ioat2_enumerate_channels;
1184 device->reset_hw = ioat3_reset_hw;
1144 device->self_test = ioat3_dma_self_test; 1185 device->self_test = ioat3_dma_self_test;
1145 dma = &device->common; 1186 dma = &device->common;
1146 dma->device_prep_dma_memcpy = ioat2_dma_prep_memcpy_lock; 1187 dma->device_prep_dma_memcpy = ioat2_dma_prep_memcpy_lock;
@@ -1216,19 +1257,6 @@ int __devinit ioat3_dma_probe(struct ioatdma_device *device, int dca)
1216 dma->device_prep_dma_xor_val = NULL; 1257 dma->device_prep_dma_xor_val = NULL;
1217 #endif 1258 #endif
1218 1259
1219 /* -= IOAT ver.3 workarounds =- */
1220 /* Write CHANERRMSK_INT with 3E07h to mask out the errors
1221 * that can cause stability issues for IOAT ver.3
1222 */
1223 pci_write_config_dword(pdev, IOAT_PCI_CHANERRMASK_INT_OFFSET, 0x3e07);
1224
1225 /* Clear DMAUNCERRSTS Cfg-Reg Parity Error status bit
1226 * (workaround for spurious config parity error after restart)
1227 */
1228 pci_read_config_word(pdev, IOAT_PCI_DEVICE_ID_OFFSET, &dev_id);
1229 if (dev_id == PCI_DEVICE_ID_INTEL_IOAT_TBG0)
1230 pci_write_config_dword(pdev, IOAT_PCI_DMAUNCERRSTS_OFFSET, 0x10);
1231
1232 err = ioat_probe(device); 1260 err = ioat_probe(device);
1233 if (err) 1261 if (err)
1234 return err; 1262 return err;
diff --git a/drivers/dma/ioat/registers.h b/drivers/dma/ioat/registers.h
index f015ec196700..e8ae63baf588 100644
--- a/drivers/dma/ioat/registers.h
+++ b/drivers/dma/ioat/registers.h
@@ -27,6 +27,7 @@
27 27
28#define IOAT_PCI_DEVICE_ID_OFFSET 0x02 28#define IOAT_PCI_DEVICE_ID_OFFSET 0x02
29#define IOAT_PCI_DMAUNCERRSTS_OFFSET 0x148 29#define IOAT_PCI_DMAUNCERRSTS_OFFSET 0x148
30#define IOAT_PCI_CHANERR_INT_OFFSET 0x180
30#define IOAT_PCI_CHANERRMASK_INT_OFFSET 0x184 31#define IOAT_PCI_CHANERRMASK_INT_OFFSET 0x184
31 32
32/* MMIO Device Registers */ 33/* MMIO Device Registers */
diff --git a/drivers/dma/ipu/ipu_idmac.c b/drivers/dma/ipu/ipu_idmac.c
index 9a5bc1a7389e..e80bae1673fa 100644
--- a/drivers/dma/ipu/ipu_idmac.c
+++ b/drivers/dma/ipu/ipu_idmac.c
@@ -761,12 +761,10 @@ static void ipu_select_buffer(enum ipu_channel channel, int buffer_n)
761 * @buffer_n: buffer number to update. 761 * @buffer_n: buffer number to update.
762 * 0 or 1 are the only valid values. 762 * 0 or 1 are the only valid values.
763 * @phyaddr: buffer physical address. 763 * @phyaddr: buffer physical address.
764 * @return: Returns 0 on success or negative error code on failure. This
765 * function will fail if the buffer is set to ready.
766 */ 764 */
767/* Called under spin_lock(_irqsave)(&ichan->lock) */ 765/* Called under spin_lock(_irqsave)(&ichan->lock) */
768static int ipu_update_channel_buffer(struct idmac_channel *ichan, 766static void ipu_update_channel_buffer(struct idmac_channel *ichan,
769 int buffer_n, dma_addr_t phyaddr) 767 int buffer_n, dma_addr_t phyaddr)
770{ 768{
771 enum ipu_channel channel = ichan->dma_chan.chan_id; 769 enum ipu_channel channel = ichan->dma_chan.chan_id;
772 uint32_t reg; 770 uint32_t reg;
@@ -806,8 +804,6 @@ static int ipu_update_channel_buffer(struct idmac_channel *ichan,
806 } 804 }
807 805
808 spin_unlock_irqrestore(&ipu_data.lock, flags); 806 spin_unlock_irqrestore(&ipu_data.lock, flags);
809
810 return 0;
811} 807}
812 808
813/* Called under spin_lock_irqsave(&ichan->lock) */ 809/* Called under spin_lock_irqsave(&ichan->lock) */
@@ -816,7 +812,6 @@ static int ipu_submit_buffer(struct idmac_channel *ichan,
816{ 812{
817 unsigned int chan_id = ichan->dma_chan.chan_id; 813 unsigned int chan_id = ichan->dma_chan.chan_id;
818 struct device *dev = &ichan->dma_chan.dev->device; 814 struct device *dev = &ichan->dma_chan.dev->device;
819 int ret;
820 815
821 if (async_tx_test_ack(&desc->txd)) 816 if (async_tx_test_ack(&desc->txd))
822 return -EINTR; 817 return -EINTR;
@@ -827,14 +822,7 @@ static int ipu_submit_buffer(struct idmac_channel *ichan,
827 * could make it conditional on status >= IPU_CHANNEL_ENABLED, but 822 * could make it conditional on status >= IPU_CHANNEL_ENABLED, but
828 * doing it again shouldn't hurt either. 823 * doing it again shouldn't hurt either.
829 */ 824 */
830 ret = ipu_update_channel_buffer(ichan, buf_idx, 825 ipu_update_channel_buffer(ichan, buf_idx, sg_dma_address(sg));
831 sg_dma_address(sg));
832
833 if (ret < 0) {
834 dev_err(dev, "Updating sg %p on channel 0x%x buffer %d failed!\n",
835 sg, chan_id, buf_idx);
836 return ret;
837 }
838 826
839 ipu_select_buffer(chan_id, buf_idx); 827 ipu_select_buffer(chan_id, buf_idx);
840 dev_dbg(dev, "Updated sg %p on channel 0x%x buffer %d\n", 828 dev_dbg(dev, "Updated sg %p on channel 0x%x buffer %d\n",
@@ -1379,10 +1367,11 @@ static irqreturn_t idmac_interrupt(int irq, void *dev_id)
1379 1367
1380 if (likely(sgnew) && 1368 if (likely(sgnew) &&
1381 ipu_submit_buffer(ichan, descnew, sgnew, ichan->active_buffer) < 0) { 1369 ipu_submit_buffer(ichan, descnew, sgnew, ichan->active_buffer) < 0) {
1382 callback = desc->txd.callback; 1370 callback = descnew->txd.callback;
1383 callback_param = desc->txd.callback_param; 1371 callback_param = descnew->txd.callback_param;
1384 spin_unlock(&ichan->lock); 1372 spin_unlock(&ichan->lock);
1385 callback(callback_param); 1373 if (callback)
1374 callback(callback_param);
1386 spin_lock(&ichan->lock); 1375 spin_lock(&ichan->lock);
1387 } 1376 }
1388 1377
diff --git a/drivers/dma/shdma.c b/drivers/dma/shdma.c
index 2e4a54c8afeb..d10cc899c460 100644
--- a/drivers/dma/shdma.c
+++ b/drivers/dma/shdma.c
@@ -23,16 +23,19 @@
23#include <linux/dmaengine.h> 23#include <linux/dmaengine.h>
24#include <linux/delay.h> 24#include <linux/delay.h>
25#include <linux/dma-mapping.h> 25#include <linux/dma-mapping.h>
26#include <linux/dmapool.h>
27#include <linux/platform_device.h> 26#include <linux/platform_device.h>
28#include <cpu/dma.h> 27#include <cpu/dma.h>
29#include <asm/dma-sh.h> 28#include <asm/dma-sh.h>
30#include "shdma.h" 29#include "shdma.h"
31 30
32/* DMA descriptor control */ 31/* DMA descriptor control */
33#define DESC_LAST (-1) 32enum sh_dmae_desc_status {
34#define DESC_COMP (1) 33 DESC_IDLE,
35#define DESC_NCOMP (0) 34 DESC_PREPARED,
35 DESC_SUBMITTED,
36 DESC_COMPLETED, /* completed, have to call callback */
37 DESC_WAITING, /* callback called, waiting for ack / re-submit */
38};
36 39
37#define NR_DESCS_PER_CHANNEL 32 40#define NR_DESCS_PER_CHANNEL 32
38/* 41/*
@@ -45,6 +48,8 @@
45 */ 48 */
46#define RS_DEFAULT (RS_DUAL) 49#define RS_DEFAULT (RS_DUAL)
47 50
51static void sh_dmae_chan_ld_cleanup(struct sh_dmae_chan *sh_chan, bool all);
52
48#define SH_DMAC_CHAN_BASE(id) (dma_base_addr[id]) 53#define SH_DMAC_CHAN_BASE(id) (dma_base_addr[id])
49static void sh_dmae_writel(struct sh_dmae_chan *sh_dc, u32 data, u32 reg) 54static void sh_dmae_writel(struct sh_dmae_chan *sh_dc, u32 data, u32 reg)
50{ 55{
@@ -106,11 +111,11 @@ static inline unsigned int calc_xmit_shift(struct sh_dmae_chan *sh_chan)
106 return ts_shift[(chcr & CHCR_TS_MASK) >> CHCR_TS_SHIFT]; 111 return ts_shift[(chcr & CHCR_TS_MASK) >> CHCR_TS_SHIFT];
107} 112}
108 113
109static void dmae_set_reg(struct sh_dmae_chan *sh_chan, struct sh_dmae_regs hw) 114static void dmae_set_reg(struct sh_dmae_chan *sh_chan, struct sh_dmae_regs *hw)
110{ 115{
111 sh_dmae_writel(sh_chan, hw.sar, SAR); 116 sh_dmae_writel(sh_chan, hw->sar, SAR);
112 sh_dmae_writel(sh_chan, hw.dar, DAR); 117 sh_dmae_writel(sh_chan, hw->dar, DAR);
113 sh_dmae_writel(sh_chan, hw.tcr >> calc_xmit_shift(sh_chan), TCR); 118 sh_dmae_writel(sh_chan, hw->tcr >> calc_xmit_shift(sh_chan), TCR);
114} 119}
115 120
116static void dmae_start(struct sh_dmae_chan *sh_chan) 121static void dmae_start(struct sh_dmae_chan *sh_chan)
@@ -184,8 +189,9 @@ static int dmae_set_dmars(struct sh_dmae_chan *sh_chan, u16 val)
184 189
185static dma_cookie_t sh_dmae_tx_submit(struct dma_async_tx_descriptor *tx) 190static dma_cookie_t sh_dmae_tx_submit(struct dma_async_tx_descriptor *tx)
186{ 191{
187 struct sh_desc *desc = tx_to_sh_desc(tx); 192 struct sh_desc *desc = tx_to_sh_desc(tx), *chunk, *last = desc, *c;
188 struct sh_dmae_chan *sh_chan = to_sh_chan(tx->chan); 193 struct sh_dmae_chan *sh_chan = to_sh_chan(tx->chan);
194 dma_async_tx_callback callback = tx->callback;
189 dma_cookie_t cookie; 195 dma_cookie_t cookie;
190 196
191 spin_lock_bh(&sh_chan->desc_lock); 197 spin_lock_bh(&sh_chan->desc_lock);
@@ -195,45 +201,53 @@ static dma_cookie_t sh_dmae_tx_submit(struct dma_async_tx_descriptor *tx)
195 if (cookie < 0) 201 if (cookie < 0)
196 cookie = 1; 202 cookie = 1;
197 203
198 /* If desc only in the case of 1 */ 204 sh_chan->common.cookie = cookie;
199 if (desc->async_tx.cookie != -EBUSY) 205 tx->cookie = cookie;
200 desc->async_tx.cookie = cookie; 206
201 sh_chan->common.cookie = desc->async_tx.cookie; 207 /* Mark all chunks of this descriptor as submitted, move to the queue */
208 list_for_each_entry_safe(chunk, c, desc->node.prev, node) {
209 /*
210 * All chunks are on the global ld_free, so, we have to find
211 * the end of the chain ourselves
212 */
213 if (chunk != desc && (chunk->mark == DESC_IDLE ||
214 chunk->async_tx.cookie > 0 ||
215 chunk->async_tx.cookie == -EBUSY ||
216 &chunk->node == &sh_chan->ld_free))
217 break;
218 chunk->mark = DESC_SUBMITTED;
219 /* Callback goes to the last chunk */
220 chunk->async_tx.callback = NULL;
221 chunk->cookie = cookie;
222 list_move_tail(&chunk->node, &sh_chan->ld_queue);
223 last = chunk;
224 }
225
226 last->async_tx.callback = callback;
227 last->async_tx.callback_param = tx->callback_param;
202 228
203 list_splice_init(&desc->tx_list, sh_chan->ld_queue.prev); 229 dev_dbg(sh_chan->dev, "submit #%d@%p on %d: %x[%d] -> %x\n",
230 tx->cookie, &last->async_tx, sh_chan->id,
231 desc->hw.sar, desc->hw.tcr, desc->hw.dar);
204 232
205 spin_unlock_bh(&sh_chan->desc_lock); 233 spin_unlock_bh(&sh_chan->desc_lock);
206 234
207 return cookie; 235 return cookie;
208} 236}
209 237
238/* Called with desc_lock held */
210static struct sh_desc *sh_dmae_get_desc(struct sh_dmae_chan *sh_chan) 239static struct sh_desc *sh_dmae_get_desc(struct sh_dmae_chan *sh_chan)
211{ 240{
212 struct sh_desc *desc, *_desc, *ret = NULL; 241 struct sh_desc *desc;
213 242
214 spin_lock_bh(&sh_chan->desc_lock); 243 list_for_each_entry(desc, &sh_chan->ld_free, node)
215 list_for_each_entry_safe(desc, _desc, &sh_chan->ld_free, node) { 244 if (desc->mark != DESC_PREPARED) {
216 if (async_tx_test_ack(&desc->async_tx)) { 245 BUG_ON(desc->mark != DESC_IDLE);
217 list_del(&desc->node); 246 list_del(&desc->node);
218 ret = desc; 247 return desc;
219 break;
220 } 248 }
221 }
222 spin_unlock_bh(&sh_chan->desc_lock);
223
224 return ret;
225}
226
227static void sh_dmae_put_desc(struct sh_dmae_chan *sh_chan, struct sh_desc *desc)
228{
229 if (desc) {
230 spin_lock_bh(&sh_chan->desc_lock);
231
232 list_splice_init(&desc->tx_list, &sh_chan->ld_free);
233 list_add(&desc->node, &sh_chan->ld_free);
234 249
235 spin_unlock_bh(&sh_chan->desc_lock); 250 return NULL;
236 }
237} 251}
238 252
239static int sh_dmae_alloc_chan_resources(struct dma_chan *chan) 253static int sh_dmae_alloc_chan_resources(struct dma_chan *chan)
@@ -252,11 +266,10 @@ static int sh_dmae_alloc_chan_resources(struct dma_chan *chan)
252 dma_async_tx_descriptor_init(&desc->async_tx, 266 dma_async_tx_descriptor_init(&desc->async_tx,
253 &sh_chan->common); 267 &sh_chan->common);
254 desc->async_tx.tx_submit = sh_dmae_tx_submit; 268 desc->async_tx.tx_submit = sh_dmae_tx_submit;
255 desc->async_tx.flags = DMA_CTRL_ACK; 269 desc->mark = DESC_IDLE;
256 INIT_LIST_HEAD(&desc->tx_list);
257 sh_dmae_put_desc(sh_chan, desc);
258 270
259 spin_lock_bh(&sh_chan->desc_lock); 271 spin_lock_bh(&sh_chan->desc_lock);
272 list_add(&desc->node, &sh_chan->ld_free);
260 sh_chan->descs_allocated++; 273 sh_chan->descs_allocated++;
261 } 274 }
262 spin_unlock_bh(&sh_chan->desc_lock); 275 spin_unlock_bh(&sh_chan->desc_lock);
@@ -273,7 +286,10 @@ static void sh_dmae_free_chan_resources(struct dma_chan *chan)
273 struct sh_desc *desc, *_desc; 286 struct sh_desc *desc, *_desc;
274 LIST_HEAD(list); 287 LIST_HEAD(list);
275 288
276 BUG_ON(!list_empty(&sh_chan->ld_queue)); 289 /* Prepared and not submitted descriptors can still be on the queue */
290 if (!list_empty(&sh_chan->ld_queue))
291 sh_dmae_chan_ld_cleanup(sh_chan, true);
292
277 spin_lock_bh(&sh_chan->desc_lock); 293 spin_lock_bh(&sh_chan->desc_lock);
278 294
279 list_splice_init(&sh_chan->ld_free, &list); 295 list_splice_init(&sh_chan->ld_free, &list);
@@ -292,6 +308,8 @@ static struct dma_async_tx_descriptor *sh_dmae_prep_memcpy(
292 struct sh_dmae_chan *sh_chan; 308 struct sh_dmae_chan *sh_chan;
293 struct sh_desc *first = NULL, *prev = NULL, *new; 309 struct sh_desc *first = NULL, *prev = NULL, *new;
294 size_t copy_size; 310 size_t copy_size;
311 LIST_HEAD(tx_list);
312 int chunks = (len + SH_DMA_TCR_MAX) / (SH_DMA_TCR_MAX + 1);
295 313
296 if (!chan) 314 if (!chan)
297 return NULL; 315 return NULL;
@@ -301,108 +319,189 @@ static struct dma_async_tx_descriptor *sh_dmae_prep_memcpy(
301 319
302 sh_chan = to_sh_chan(chan); 320 sh_chan = to_sh_chan(chan);
303 321
322 /* Have to lock the whole loop to protect against concurrent release */
323 spin_lock_bh(&sh_chan->desc_lock);
324
325 /*
326 * Chaining:
327 * first descriptor is what user is dealing with in all API calls, its
328 * cookie is at first set to -EBUSY, at tx-submit to a positive
329 * number
330 * if more than one chunk is needed further chunks have cookie = -EINVAL
331 * the last chunk, if not equal to the first, has cookie = -ENOSPC
332 * all chunks are linked onto the tx_list head with their .node heads
333 * only during this function, then they are immediately spliced
334 * back onto the free list in form of a chain
335 */
304 do { 336 do {
305 /* Allocate the link descriptor from DMA pool */ 337 /* Allocate the link descriptor from the free list */
306 new = sh_dmae_get_desc(sh_chan); 338 new = sh_dmae_get_desc(sh_chan);
307 if (!new) { 339 if (!new) {
308 dev_err(sh_chan->dev, 340 dev_err(sh_chan->dev,
309 "No free memory for link descriptor\n"); 341 "No free memory for link descriptor\n");
310 goto err_get_desc; 342 list_for_each_entry(new, &tx_list, node)
343 new->mark = DESC_IDLE;
344 list_splice(&tx_list, &sh_chan->ld_free);
345 spin_unlock_bh(&sh_chan->desc_lock);
346 return NULL;
311 } 347 }
312 348
313 copy_size = min(len, (size_t)SH_DMA_TCR_MAX); 349 copy_size = min(len, (size_t)SH_DMA_TCR_MAX + 1);
314 350
315 new->hw.sar = dma_src; 351 new->hw.sar = dma_src;
316 new->hw.dar = dma_dest; 352 new->hw.dar = dma_dest;
317 new->hw.tcr = copy_size; 353 new->hw.tcr = copy_size;
318 if (!first) 354 if (!first) {
355 /* First desc */
356 new->async_tx.cookie = -EBUSY;
319 first = new; 357 first = new;
358 } else {
359 /* Other desc - invisible to the user */
360 new->async_tx.cookie = -EINVAL;
361 }
320 362
321 new->mark = DESC_NCOMP; 363 dev_dbg(sh_chan->dev,
322 async_tx_ack(&new->async_tx); 364 "chaining %u of %u with %p, dst %x, cookie %d\n",
365 copy_size, len, &new->async_tx, dma_dest,
366 new->async_tx.cookie);
367
368 new->mark = DESC_PREPARED;
369 new->async_tx.flags = flags;
370 new->chunks = chunks--;
323 371
324 prev = new; 372 prev = new;
325 len -= copy_size; 373 len -= copy_size;
326 dma_src += copy_size; 374 dma_src += copy_size;
327 dma_dest += copy_size; 375 dma_dest += copy_size;
328 /* Insert the link descriptor to the LD ring */ 376 /* Insert the link descriptor to the LD ring */
329 list_add_tail(&new->node, &first->tx_list); 377 list_add_tail(&new->node, &tx_list);
330 } while (len); 378 } while (len);
331 379
332 new->async_tx.flags = flags; /* client is in control of this ack */ 380 if (new != first)
333 new->async_tx.cookie = -EBUSY; /* Last desc */ 381 new->async_tx.cookie = -ENOSPC;
334 382
335 return &first->async_tx; 383 /* Put them back on the free list, so, they don't get lost */
384 list_splice_tail(&tx_list, &sh_chan->ld_free);
336 385
337err_get_desc: 386 spin_unlock_bh(&sh_chan->desc_lock);
338 sh_dmae_put_desc(sh_chan, first);
339 return NULL;
340 387
388 return &first->async_tx;
341} 389}
342 390
343/* 391static dma_async_tx_callback __ld_cleanup(struct sh_dmae_chan *sh_chan, bool all)
344 * sh_chan_ld_cleanup - Clean up link descriptors
345 *
346 * This function clean up the ld_queue of DMA channel.
347 */
348static void sh_dmae_chan_ld_cleanup(struct sh_dmae_chan *sh_chan)
349{ 392{
350 struct sh_desc *desc, *_desc; 393 struct sh_desc *desc, *_desc;
394 /* Is the "exposed" head of a chain acked? */
395 bool head_acked = false;
396 dma_cookie_t cookie = 0;
397 dma_async_tx_callback callback = NULL;
398 void *param = NULL;
351 399
352 spin_lock_bh(&sh_chan->desc_lock); 400 spin_lock_bh(&sh_chan->desc_lock);
353 list_for_each_entry_safe(desc, _desc, &sh_chan->ld_queue, node) { 401 list_for_each_entry_safe(desc, _desc, &sh_chan->ld_queue, node) {
354 dma_async_tx_callback callback; 402 struct dma_async_tx_descriptor *tx = &desc->async_tx;
355 void *callback_param; 403
356 404 BUG_ON(tx->cookie > 0 && tx->cookie != desc->cookie);
357 /* non send data */ 405 BUG_ON(desc->mark != DESC_SUBMITTED &&
358 if (desc->mark == DESC_NCOMP) 406 desc->mark != DESC_COMPLETED &&
407 desc->mark != DESC_WAITING);
408
409 /*
410 * queue is ordered, and we use this loop to (1) clean up all
411 * completed descriptors, and to (2) update descriptor flags of
412 * any chunks in a (partially) completed chain
413 */
414 if (!all && desc->mark == DESC_SUBMITTED &&
415 desc->cookie != cookie)
359 break; 416 break;
360 417
361 /* send data sesc */ 418 if (tx->cookie > 0)
362 callback = desc->async_tx.callback; 419 cookie = tx->cookie;
363 callback_param = desc->async_tx.callback_param;
364 420
365 /* Remove from ld_queue list */ 421 if (desc->mark == DESC_COMPLETED && desc->chunks == 1) {
366 list_splice_init(&desc->tx_list, &sh_chan->ld_free); 422 BUG_ON(sh_chan->completed_cookie != desc->cookie - 1);
423 sh_chan->completed_cookie = desc->cookie;
424 }
367 425
368 dev_dbg(sh_chan->dev, "link descriptor %p will be recycle.\n", 426 /* Call callback on the last chunk */
369 desc); 427 if (desc->mark == DESC_COMPLETED && tx->callback) {
428 desc->mark = DESC_WAITING;
429 callback = tx->callback;
430 param = tx->callback_param;
431 dev_dbg(sh_chan->dev, "descriptor #%d@%p on %d callback\n",
432 tx->cookie, tx, sh_chan->id);
433 BUG_ON(desc->chunks != 1);
434 break;
435 }
370 436
371 list_move(&desc->node, &sh_chan->ld_free); 437 if (tx->cookie > 0 || tx->cookie == -EBUSY) {
372 /* Run the link descriptor callback function */ 438 if (desc->mark == DESC_COMPLETED) {
373 if (callback) { 439 BUG_ON(tx->cookie < 0);
374 spin_unlock_bh(&sh_chan->desc_lock); 440 desc->mark = DESC_WAITING;
375 dev_dbg(sh_chan->dev, "link descriptor %p callback\n", 441 }
376 desc); 442 head_acked = async_tx_test_ack(tx);
377 callback(callback_param); 443 } else {
378 spin_lock_bh(&sh_chan->desc_lock); 444 switch (desc->mark) {
445 case DESC_COMPLETED:
446 desc->mark = DESC_WAITING;
447 /* Fall through */
448 case DESC_WAITING:
449 if (head_acked)
450 async_tx_ack(&desc->async_tx);
451 }
452 }
453
454 dev_dbg(sh_chan->dev, "descriptor %p #%d completed.\n",
455 tx, tx->cookie);
456
457 if (((desc->mark == DESC_COMPLETED ||
458 desc->mark == DESC_WAITING) &&
459 async_tx_test_ack(&desc->async_tx)) || all) {
460 /* Remove from ld_queue list */
461 desc->mark = DESC_IDLE;
462 list_move(&desc->node, &sh_chan->ld_free);
379 } 463 }
380 } 464 }
381 spin_unlock_bh(&sh_chan->desc_lock); 465 spin_unlock_bh(&sh_chan->desc_lock);
466
467 if (callback)
468 callback(param);
469
470 return callback;
471}
472
473/*
474 * sh_chan_ld_cleanup - Clean up link descriptors
475 *
476 * This function cleans up the ld_queue of DMA channel.
477 */
478static void sh_dmae_chan_ld_cleanup(struct sh_dmae_chan *sh_chan, bool all)
479{
480 while (__ld_cleanup(sh_chan, all))
481 ;
382} 482}
383 483
384static void sh_chan_xfer_ld_queue(struct sh_dmae_chan *sh_chan) 484static void sh_chan_xfer_ld_queue(struct sh_dmae_chan *sh_chan)
385{ 485{
386 struct list_head *ld_node; 486 struct sh_desc *sd;
387 struct sh_dmae_regs hw;
388 487
488 spin_lock_bh(&sh_chan->desc_lock);
389 /* DMA work check */ 489 /* DMA work check */
390 if (dmae_is_busy(sh_chan)) 490 if (dmae_is_busy(sh_chan)) {
491 spin_unlock_bh(&sh_chan->desc_lock);
391 return; 492 return;
493 }
392 494
393 /* Find the first un-transfer desciptor */ 495 /* Find the first un-transfer desciptor */
394 for (ld_node = sh_chan->ld_queue.next; 496 list_for_each_entry(sd, &sh_chan->ld_queue, node)
395 (ld_node != &sh_chan->ld_queue) 497 if (sd->mark == DESC_SUBMITTED) {
396 && (to_sh_desc(ld_node)->mark == DESC_COMP); 498 /* Get the ld start address from ld_queue */
397 ld_node = ld_node->next) 499 dmae_set_reg(sh_chan, &sd->hw);
398 cpu_relax(); 500 dmae_start(sh_chan);
399 501 break;
400 if (ld_node != &sh_chan->ld_queue) { 502 }
401 /* Get the ld start address from ld_queue */ 503
402 hw = to_sh_desc(ld_node)->hw; 504 spin_unlock_bh(&sh_chan->desc_lock);
403 dmae_set_reg(sh_chan, hw);
404 dmae_start(sh_chan);
405 }
406} 505}
407 506
408static void sh_dmae_memcpy_issue_pending(struct dma_chan *chan) 507static void sh_dmae_memcpy_issue_pending(struct dma_chan *chan)
@@ -420,12 +519,11 @@ static enum dma_status sh_dmae_is_complete(struct dma_chan *chan,
420 dma_cookie_t last_used; 519 dma_cookie_t last_used;
421 dma_cookie_t last_complete; 520 dma_cookie_t last_complete;
422 521
423 sh_dmae_chan_ld_cleanup(sh_chan); 522 sh_dmae_chan_ld_cleanup(sh_chan, false);
424 523
425 last_used = chan->cookie; 524 last_used = chan->cookie;
426 last_complete = sh_chan->completed_cookie; 525 last_complete = sh_chan->completed_cookie;
427 if (last_complete == -EBUSY) 526 BUG_ON(last_complete < 0);
428 last_complete = last_used;
429 527
430 if (done) 528 if (done)
431 *done = last_complete; 529 *done = last_complete;
@@ -480,11 +578,13 @@ static irqreturn_t sh_dmae_err(int irq, void *data)
480 err = sh_dmae_rst(0); 578 err = sh_dmae_rst(0);
481 if (err) 579 if (err)
482 return err; 580 return err;
581#ifdef SH_DMAC_BASE1
483 if (shdev->pdata.mode & SHDMA_DMAOR1) { 582 if (shdev->pdata.mode & SHDMA_DMAOR1) {
484 err = sh_dmae_rst(1); 583 err = sh_dmae_rst(1);
485 if (err) 584 if (err)
486 return err; 585 return err;
487 } 586 }
587#endif
488 disable_irq(irq); 588 disable_irq(irq);
489 return IRQ_HANDLED; 589 return IRQ_HANDLED;
490 } 590 }
@@ -494,35 +594,25 @@ static irqreturn_t sh_dmae_err(int irq, void *data)
494static void dmae_do_tasklet(unsigned long data) 594static void dmae_do_tasklet(unsigned long data)
495{ 595{
496 struct sh_dmae_chan *sh_chan = (struct sh_dmae_chan *)data; 596 struct sh_dmae_chan *sh_chan = (struct sh_dmae_chan *)data;
497 struct sh_desc *desc, *_desc, *cur_desc = NULL; 597 struct sh_desc *desc;
498 u32 sar_buf = sh_dmae_readl(sh_chan, SAR); 598 u32 sar_buf = sh_dmae_readl(sh_chan, SAR);
499 599
500 list_for_each_entry_safe(desc, _desc, 600 spin_lock(&sh_chan->desc_lock);
501 &sh_chan->ld_queue, node) { 601 list_for_each_entry(desc, &sh_chan->ld_queue, node) {
502 if ((desc->hw.sar + desc->hw.tcr) == sar_buf) { 602 if ((desc->hw.sar + desc->hw.tcr) == sar_buf &&
503 cur_desc = desc; 603 desc->mark == DESC_SUBMITTED) {
604 dev_dbg(sh_chan->dev, "done #%d@%p dst %u\n",
605 desc->async_tx.cookie, &desc->async_tx,
606 desc->hw.dar);
607 desc->mark = DESC_COMPLETED;
504 break; 608 break;
505 } 609 }
506 } 610 }
611 spin_unlock(&sh_chan->desc_lock);
507 612
508 if (cur_desc) {
509 switch (cur_desc->async_tx.cookie) {
510 case 0: /* other desc data */
511 break;
512 case -EBUSY: /* last desc */
513 sh_chan->completed_cookie =
514 cur_desc->async_tx.cookie;
515 break;
516 default: /* first desc ( 0 < )*/
517 sh_chan->completed_cookie =
518 cur_desc->async_tx.cookie - 1;
519 break;
520 }
521 cur_desc->mark = DESC_COMP;
522 }
523 /* Next desc */ 613 /* Next desc */
524 sh_chan_xfer_ld_queue(sh_chan); 614 sh_chan_xfer_ld_queue(sh_chan);
525 sh_dmae_chan_ld_cleanup(sh_chan); 615 sh_dmae_chan_ld_cleanup(sh_chan, false);
526} 616}
527 617
528static unsigned int get_dmae_irq(unsigned int id) 618static unsigned int get_dmae_irq(unsigned int id)
diff --git a/drivers/dma/shdma.h b/drivers/dma/shdma.h
index 60b81e529b42..108f1cffb6f5 100644
--- a/drivers/dma/shdma.h
+++ b/drivers/dma/shdma.h
@@ -13,9 +13,9 @@
13#ifndef __DMA_SHDMA_H 13#ifndef __DMA_SHDMA_H
14#define __DMA_SHDMA_H 14#define __DMA_SHDMA_H
15 15
16#include <linux/device.h>
17#include <linux/dmapool.h>
18#include <linux/dmaengine.h> 16#include <linux/dmaengine.h>
17#include <linux/interrupt.h>
18#include <linux/list.h>
19 19
20#define SH_DMA_TCR_MAX 0x00FFFFFF /* 16MB */ 20#define SH_DMA_TCR_MAX 0x00FFFFFF /* 16MB */
21 21
@@ -26,13 +26,16 @@ struct sh_dmae_regs {
26}; 26};
27 27
28struct sh_desc { 28struct sh_desc {
29 struct list_head tx_list;
30 struct sh_dmae_regs hw; 29 struct sh_dmae_regs hw;
31 struct list_head node; 30 struct list_head node;
32 struct dma_async_tx_descriptor async_tx; 31 struct dma_async_tx_descriptor async_tx;
32 dma_cookie_t cookie;
33 int chunks;
33 int mark; 34 int mark;
34}; 35};
35 36
37struct device;
38
36struct sh_dmae_chan { 39struct sh_dmae_chan {
37 dma_cookie_t completed_cookie; /* The maximum cookie completed */ 40 dma_cookie_t completed_cookie; /* The maximum cookie completed */
38 spinlock_t desc_lock; /* Descriptor operation lock */ 41 spinlock_t desc_lock; /* Descriptor operation lock */
diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c
index c5facd951dda..3391e6739d06 100644
--- a/drivers/edac/amd64_edac.c
+++ b/drivers/edac/amd64_edac.c
@@ -197,7 +197,7 @@ static int amd64_get_scrub_rate(struct mem_ctl_info *mci, u32 *bw)
197 edac_printk(KERN_DEBUG, EDAC_MC, 197 edac_printk(KERN_DEBUG, EDAC_MC,
198 "pci-read, sdram scrub control value: %d \n", scrubval); 198 "pci-read, sdram scrub control value: %d \n", scrubval);
199 199
200 for (i = 0; ARRAY_SIZE(scrubrates); i++) { 200 for (i = 0; i < ARRAY_SIZE(scrubrates); i++) {
201 if (scrubrates[i].scrubval == scrubval) { 201 if (scrubrates[i].scrubval == scrubval) {
202 *bw = scrubrates[i].bandwidth; 202 *bw = scrubrates[i].bandwidth;
203 status = 0; 203 status = 0;
@@ -2658,10 +2658,11 @@ static void amd64_restore_ecc_error_reporting(struct amd64_pvt *pvt)
2658 * the memory system completely. A command line option allows to force-enable 2658 * the memory system completely. A command line option allows to force-enable
2659 * hardware ECC later in amd64_enable_ecc_error_reporting(). 2659 * hardware ECC later in amd64_enable_ecc_error_reporting().
2660 */ 2660 */
2661static const char *ecc_warning = 2661static const char *ecc_msg =
2662 "WARNING: ECC is disabled by BIOS. Module will NOT be loaded.\n" 2662 "ECC disabled in the BIOS or no ECC capability, module will not load.\n"
2663 " Either Enable ECC in the BIOS, or set 'ecc_enable_override'.\n" 2663 " Either enable ECC checking or force module loading by setting "
2664 " Also, use of the override can cause unknown side effects.\n"; 2664 "'ecc_enable_override'.\n"
2665 " (Note that use of the override may cause unknown side effects.)\n";
2665 2666
2666static int amd64_check_ecc_enabled(struct amd64_pvt *pvt) 2667static int amd64_check_ecc_enabled(struct amd64_pvt *pvt)
2667{ 2668{
@@ -2673,7 +2674,7 @@ static int amd64_check_ecc_enabled(struct amd64_pvt *pvt)
2673 2674
2674 ecc_enabled = !!(value & K8_NBCFG_ECC_ENABLE); 2675 ecc_enabled = !!(value & K8_NBCFG_ECC_ENABLE);
2675 if (!ecc_enabled) 2676 if (!ecc_enabled)
2676 amd64_printk(KERN_WARNING, "This node reports that Memory ECC " 2677 amd64_printk(KERN_NOTICE, "This node reports that Memory ECC "
2677 "is currently disabled, set F3x%x[22] (%s).\n", 2678 "is currently disabled, set F3x%x[22] (%s).\n",
2678 K8_NBCFG, pci_name(pvt->misc_f3_ctl)); 2679 K8_NBCFG, pci_name(pvt->misc_f3_ctl));
2679 else 2680 else
@@ -2681,13 +2682,13 @@ static int amd64_check_ecc_enabled(struct amd64_pvt *pvt)
2681 2682
2682 nb_mce_en = amd64_nb_mce_bank_enabled_on_node(pvt->mc_node_id); 2683 nb_mce_en = amd64_nb_mce_bank_enabled_on_node(pvt->mc_node_id);
2683 if (!nb_mce_en) 2684 if (!nb_mce_en)
2684 amd64_printk(KERN_WARNING, "NB MCE bank disabled, set MSR " 2685 amd64_printk(KERN_NOTICE, "NB MCE bank disabled, set MSR "
2685 "0x%08x[4] on node %d to enable.\n", 2686 "0x%08x[4] on node %d to enable.\n",
2686 MSR_IA32_MCG_CTL, pvt->mc_node_id); 2687 MSR_IA32_MCG_CTL, pvt->mc_node_id);
2687 2688
2688 if (!ecc_enabled || !nb_mce_en) { 2689 if (!ecc_enabled || !nb_mce_en) {
2689 if (!ecc_enable_override) { 2690 if (!ecc_enable_override) {
2690 amd64_printk(KERN_WARNING, "%s", ecc_warning); 2691 amd64_printk(KERN_NOTICE, "%s", ecc_msg);
2691 return -ENODEV; 2692 return -ENODEV;
2692 } 2693 }
2693 ecc_enable_override = 0; 2694 ecc_enable_override = 0;
diff --git a/drivers/edac/i5000_edac.c b/drivers/edac/i5000_edac.c
index 77a9579d7167..adc10a2ac5f6 100644
--- a/drivers/edac/i5000_edac.c
+++ b/drivers/edac/i5000_edac.c
@@ -577,7 +577,13 @@ static void i5000_process_nonfatal_error_info(struct mem_ctl_info *mci,
577 debugf0("\tUncorrected bits= 0x%x\n", ue_errors); 577 debugf0("\tUncorrected bits= 0x%x\n", ue_errors);
578 578
579 branch = EXTRACT_FBDCHAN_INDX(info->ferr_nf_fbd); 579 branch = EXTRACT_FBDCHAN_INDX(info->ferr_nf_fbd);
580 channel = branch; 580
581 /*
582 * According with i5000 datasheet, bit 28 has no significance
583 * for errors M4Err-M12Err and M17Err-M21Err, on FERR_NF_FBD
584 */
585 channel = branch & 2;
586
581 bank = NREC_BANK(info->nrecmema); 587 bank = NREC_BANK(info->nrecmema);
582 rank = NREC_RANK(info->nrecmema); 588 rank = NREC_RANK(info->nrecmema);
583 rdwr = NREC_RDWR(info->nrecmema); 589 rdwr = NREC_RDWR(info->nrecmema);
diff --git a/drivers/edac/mpc85xx_edac.c b/drivers/edac/mpc85xx_edac.c
index cf27402af97b..ecd5928d7110 100644
--- a/drivers/edac/mpc85xx_edac.c
+++ b/drivers/edac/mpc85xx_edac.c
@@ -804,8 +804,8 @@ static void __devinit mpc85xx_init_csrows(struct mem_ctl_info *mci)
804 end <<= (24 - PAGE_SHIFT); 804 end <<= (24 - PAGE_SHIFT);
805 end |= (1 << (24 - PAGE_SHIFT)) - 1; 805 end |= (1 << (24 - PAGE_SHIFT)) - 1;
806 806
807 csrow->first_page = start >> PAGE_SHIFT; 807 csrow->first_page = start;
808 csrow->last_page = end >> PAGE_SHIFT; 808 csrow->last_page = end;
809 csrow->nr_pages = end + 1 - start; 809 csrow->nr_pages = end + 1 - start;
810 csrow->grain = 8; 810 csrow->grain = 8;
811 csrow->mtype = mtype; 811 csrow->mtype = mtype;
@@ -892,10 +892,6 @@ static int __devinit mpc85xx_mc_err_probe(struct of_device *op,
892 892
893 mpc85xx_init_csrows(mci); 893 mpc85xx_init_csrows(mci);
894 894
895#ifdef CONFIG_EDAC_DEBUG
896 edac_mc_register_mcidev_debug((struct attribute **)debug_attr);
897#endif
898
899 /* store the original error disable bits */ 895 /* store the original error disable bits */
900 orig_ddr_err_disable = 896 orig_ddr_err_disable =
901 in_be32(pdata->mc_vbase + MPC85XX_MC_ERR_DISABLE); 897 in_be32(pdata->mc_vbase + MPC85XX_MC_ERR_DISABLE);
diff --git a/drivers/firewire/core-card.c b/drivers/firewire/core-card.c
index 7083bcc1b9c7..5045156c5313 100644
--- a/drivers/firewire/core-card.c
+++ b/drivers/firewire/core-card.c
@@ -57,6 +57,8 @@ static LIST_HEAD(descriptor_list);
57static int descriptor_count; 57static int descriptor_count;
58 58
59static __be32 tmp_config_rom[256]; 59static __be32 tmp_config_rom[256];
60/* ROM header, bus info block, root dir header, capabilities = 7 quadlets */
61static size_t config_rom_length = 1 + 4 + 1 + 1;
60 62
61#define BIB_CRC(v) ((v) << 0) 63#define BIB_CRC(v) ((v) << 0)
62#define BIB_CRC_LENGTH(v) ((v) << 16) 64#define BIB_CRC_LENGTH(v) ((v) << 16)
@@ -73,7 +75,7 @@ static __be32 tmp_config_rom[256];
73#define BIB_CMC ((1) << 30) 75#define BIB_CMC ((1) << 30)
74#define BIB_IMC ((1) << 31) 76#define BIB_IMC ((1) << 31)
75 77
76static size_t generate_config_rom(struct fw_card *card, __be32 *config_rom) 78static void generate_config_rom(struct fw_card *card, __be32 *config_rom)
77{ 79{
78 struct fw_descriptor *desc; 80 struct fw_descriptor *desc;
79 int i, j, k, length; 81 int i, j, k, length;
@@ -130,23 +132,30 @@ static size_t generate_config_rom(struct fw_card *card, __be32 *config_rom)
130 for (i = 0; i < j; i += length + 1) 132 for (i = 0; i < j; i += length + 1)
131 length = fw_compute_block_crc(config_rom + i); 133 length = fw_compute_block_crc(config_rom + i);
132 134
133 return j; 135 WARN_ON(j != config_rom_length);
134} 136}
135 137
136static void update_config_roms(void) 138static void update_config_roms(void)
137{ 139{
138 struct fw_card *card; 140 struct fw_card *card;
139 size_t length;
140 141
141 list_for_each_entry (card, &card_list, link) { 142 list_for_each_entry (card, &card_list, link) {
142 length = generate_config_rom(card, tmp_config_rom); 143 generate_config_rom(card, tmp_config_rom);
143 card->driver->set_config_rom(card, tmp_config_rom, length); 144 card->driver->set_config_rom(card, tmp_config_rom,
145 config_rom_length);
144 } 146 }
145} 147}
146 148
149static size_t required_space(struct fw_descriptor *desc)
150{
151 /* descriptor + entry into root dir + optional immediate entry */
152 return desc->length + 1 + (desc->immediate > 0 ? 1 : 0);
153}
154
147int fw_core_add_descriptor(struct fw_descriptor *desc) 155int fw_core_add_descriptor(struct fw_descriptor *desc)
148{ 156{
149 size_t i; 157 size_t i;
158 int ret;
150 159
151 /* 160 /*
152 * Check descriptor is valid; the length of all blocks in the 161 * Check descriptor is valid; the length of all blocks in the
@@ -162,15 +171,21 @@ int fw_core_add_descriptor(struct fw_descriptor *desc)
162 171
163 mutex_lock(&card_mutex); 172 mutex_lock(&card_mutex);
164 173
165 list_add_tail(&desc->link, &descriptor_list); 174 if (config_rom_length + required_space(desc) > 256) {
166 descriptor_count++; 175 ret = -EBUSY;
167 if (desc->immediate > 0) 176 } else {
177 list_add_tail(&desc->link, &descriptor_list);
178 config_rom_length += required_space(desc);
168 descriptor_count++; 179 descriptor_count++;
169 update_config_roms(); 180 if (desc->immediate > 0)
181 descriptor_count++;
182 update_config_roms();
183 ret = 0;
184 }
170 185
171 mutex_unlock(&card_mutex); 186 mutex_unlock(&card_mutex);
172 187
173 return 0; 188 return ret;
174} 189}
175EXPORT_SYMBOL(fw_core_add_descriptor); 190EXPORT_SYMBOL(fw_core_add_descriptor);
176 191
@@ -179,6 +194,7 @@ void fw_core_remove_descriptor(struct fw_descriptor *desc)
179 mutex_lock(&card_mutex); 194 mutex_lock(&card_mutex);
180 195
181 list_del(&desc->link); 196 list_del(&desc->link);
197 config_rom_length -= required_space(desc);
182 descriptor_count--; 198 descriptor_count--;
183 if (desc->immediate > 0) 199 if (desc->immediate > 0)
184 descriptor_count--; 200 descriptor_count--;
@@ -428,7 +444,6 @@ EXPORT_SYMBOL(fw_card_initialize);
428int fw_card_add(struct fw_card *card, 444int fw_card_add(struct fw_card *card,
429 u32 max_receive, u32 link_speed, u64 guid) 445 u32 max_receive, u32 link_speed, u64 guid)
430{ 446{
431 size_t length;
432 int ret; 447 int ret;
433 448
434 card->max_receive = max_receive; 449 card->max_receive = max_receive;
@@ -437,8 +452,8 @@ int fw_card_add(struct fw_card *card,
437 452
438 mutex_lock(&card_mutex); 453 mutex_lock(&card_mutex);
439 454
440 length = generate_config_rom(card, tmp_config_rom); 455 generate_config_rom(card, tmp_config_rom);
441 ret = card->driver->enable(card, tmp_config_rom, length); 456 ret = card->driver->enable(card, tmp_config_rom, config_rom_length);
442 if (ret == 0) 457 if (ret == 0)
443 list_add_tail(&card->link, &card_list); 458 list_add_tail(&card->link, &card_list);
444 459
diff --git a/drivers/firewire/core-cdev.c b/drivers/firewire/core-cdev.c
index 5538d5130f7b..3c1ac0933d24 100644
--- a/drivers/firewire/core-cdev.c
+++ b/drivers/firewire/core-cdev.c
@@ -35,6 +35,7 @@
35#include <linux/poll.h> 35#include <linux/poll.h>
36#include <linux/sched.h> 36#include <linux/sched.h>
37#include <linux/spinlock.h> 37#include <linux/spinlock.h>
38#include <linux/string.h>
38#include <linux/time.h> 39#include <linux/time.h>
39#include <linux/uaccess.h> 40#include <linux/uaccess.h>
40#include <linux/vmalloc.h> 41#include <linux/vmalloc.h>
@@ -595,13 +596,20 @@ static int ioctl_send_request(struct client *client, void *buffer)
595 client->device->max_speed); 596 client->device->max_speed);
596} 597}
597 598
599static inline bool is_fcp_request(struct fw_request *request)
600{
601 return request == NULL;
602}
603
598static void release_request(struct client *client, 604static void release_request(struct client *client,
599 struct client_resource *resource) 605 struct client_resource *resource)
600{ 606{
601 struct inbound_transaction_resource *r = container_of(resource, 607 struct inbound_transaction_resource *r = container_of(resource,
602 struct inbound_transaction_resource, resource); 608 struct inbound_transaction_resource, resource);
603 609
604 if (r->request) 610 if (is_fcp_request(r->request))
611 kfree(r->data);
612 else
605 fw_send_response(client->device->card, r->request, 613 fw_send_response(client->device->card, r->request,
606 RCODE_CONFLICT_ERROR); 614 RCODE_CONFLICT_ERROR);
607 kfree(r); 615 kfree(r);
@@ -616,6 +624,7 @@ static void handle_request(struct fw_card *card, struct fw_request *request,
616 struct address_handler_resource *handler = callback_data; 624 struct address_handler_resource *handler = callback_data;
617 struct inbound_transaction_resource *r; 625 struct inbound_transaction_resource *r;
618 struct inbound_transaction_event *e; 626 struct inbound_transaction_event *e;
627 void *fcp_frame = NULL;
619 int ret; 628 int ret;
620 629
621 r = kmalloc(sizeof(*r), GFP_ATOMIC); 630 r = kmalloc(sizeof(*r), GFP_ATOMIC);
@@ -627,6 +636,18 @@ static void handle_request(struct fw_card *card, struct fw_request *request,
627 r->data = payload; 636 r->data = payload;
628 r->length = length; 637 r->length = length;
629 638
639 if (is_fcp_request(request)) {
640 /*
641 * FIXME: Let core-transaction.c manage a
642 * single reference-counted copy?
643 */
644 fcp_frame = kmemdup(payload, length, GFP_ATOMIC);
645 if (fcp_frame == NULL)
646 goto failed;
647
648 r->data = fcp_frame;
649 }
650
630 r->resource.release = release_request; 651 r->resource.release = release_request;
631 ret = add_client_resource(handler->client, &r->resource, GFP_ATOMIC); 652 ret = add_client_resource(handler->client, &r->resource, GFP_ATOMIC);
632 if (ret < 0) 653 if (ret < 0)
@@ -640,13 +661,15 @@ static void handle_request(struct fw_card *card, struct fw_request *request,
640 e->request.closure = handler->closure; 661 e->request.closure = handler->closure;
641 662
642 queue_event(handler->client, &e->event, 663 queue_event(handler->client, &e->event,
643 &e->request, sizeof(e->request), payload, length); 664 &e->request, sizeof(e->request), r->data, length);
644 return; 665 return;
645 666
646 failed: 667 failed:
647 kfree(r); 668 kfree(r);
648 kfree(e); 669 kfree(e);
649 if (request) 670 kfree(fcp_frame);
671
672 if (!is_fcp_request(request))
650 fw_send_response(card, request, RCODE_CONFLICT_ERROR); 673 fw_send_response(card, request, RCODE_CONFLICT_ERROR);
651} 674}
652 675
@@ -717,18 +740,17 @@ static int ioctl_send_response(struct client *client, void *buffer)
717 740
718 r = container_of(resource, struct inbound_transaction_resource, 741 r = container_of(resource, struct inbound_transaction_resource,
719 resource); 742 resource);
720 if (r->request) { 743 if (is_fcp_request(r->request))
721 if (request->length < r->length) 744 goto out;
722 r->length = request->length; 745
723 if (copy_from_user(r->data, u64_to_uptr(request->data), 746 if (request->length < r->length)
724 r->length)) { 747 r->length = request->length;
725 ret = -EFAULT; 748 if (copy_from_user(r->data, u64_to_uptr(request->data), r->length)) {
726 kfree(r->request); 749 ret = -EFAULT;
727 goto out; 750 kfree(r->request);
728 } 751 goto out;
729 fw_send_response(client->device->card, r->request,
730 request->rcode);
731 } 752 }
753 fw_send_response(client->device->card, r->request, request->rcode);
732 out: 754 out:
733 kfree(r); 755 kfree(r);
734 756
diff --git a/drivers/firewire/net.c b/drivers/firewire/net.c
index cbaf420c36c5..2d3dc7ded0a9 100644
--- a/drivers/firewire/net.c
+++ b/drivers/firewire/net.c
@@ -893,20 +893,31 @@ static void fwnet_receive_broadcast(struct fw_iso_context *context,
893 893
894static struct kmem_cache *fwnet_packet_task_cache; 894static struct kmem_cache *fwnet_packet_task_cache;
895 895
896static void fwnet_free_ptask(struct fwnet_packet_task *ptask)
897{
898 dev_kfree_skb_any(ptask->skb);
899 kmem_cache_free(fwnet_packet_task_cache, ptask);
900}
901
896static int fwnet_send_packet(struct fwnet_packet_task *ptask); 902static int fwnet_send_packet(struct fwnet_packet_task *ptask);
897 903
898static void fwnet_transmit_packet_done(struct fwnet_packet_task *ptask) 904static void fwnet_transmit_packet_done(struct fwnet_packet_task *ptask)
899{ 905{
900 struct fwnet_device *dev; 906 struct fwnet_device *dev = ptask->dev;
901 unsigned long flags; 907 unsigned long flags;
902 908 bool free;
903 dev = ptask->dev;
904 909
905 spin_lock_irqsave(&dev->lock, flags); 910 spin_lock_irqsave(&dev->lock, flags);
906 list_del(&ptask->pt_link);
907 spin_unlock_irqrestore(&dev->lock, flags);
908 911
909 ptask->outstanding_pkts--; /* FIXME access inside lock */ 912 ptask->outstanding_pkts--;
913
914 /* Check whether we or the networking TX soft-IRQ is last user. */
915 free = (ptask->outstanding_pkts == 0 && !list_empty(&ptask->pt_link));
916
917 if (ptask->outstanding_pkts == 0)
918 list_del(&ptask->pt_link);
919
920 spin_unlock_irqrestore(&dev->lock, flags);
910 921
911 if (ptask->outstanding_pkts > 0) { 922 if (ptask->outstanding_pkts > 0) {
912 u16 dg_size; 923 u16 dg_size;
@@ -951,10 +962,10 @@ static void fwnet_transmit_packet_done(struct fwnet_packet_task *ptask)
951 ptask->max_payload = skb->len + RFC2374_FRAG_HDR_SIZE; 962 ptask->max_payload = skb->len + RFC2374_FRAG_HDR_SIZE;
952 } 963 }
953 fwnet_send_packet(ptask); 964 fwnet_send_packet(ptask);
954 } else {
955 dev_kfree_skb_any(ptask->skb);
956 kmem_cache_free(fwnet_packet_task_cache, ptask);
957 } 965 }
966
967 if (free)
968 fwnet_free_ptask(ptask);
958} 969}
959 970
960static void fwnet_write_complete(struct fw_card *card, int rcode, 971static void fwnet_write_complete(struct fw_card *card, int rcode,
@@ -977,6 +988,7 @@ static int fwnet_send_packet(struct fwnet_packet_task *ptask)
977 unsigned tx_len; 988 unsigned tx_len;
978 struct rfc2734_header *bufhdr; 989 struct rfc2734_header *bufhdr;
979 unsigned long flags; 990 unsigned long flags;
991 bool free;
980 992
981 dev = ptask->dev; 993 dev = ptask->dev;
982 tx_len = ptask->max_payload; 994 tx_len = ptask->max_payload;
@@ -1022,12 +1034,16 @@ static int fwnet_send_packet(struct fwnet_packet_task *ptask)
1022 generation, SCODE_100, 0ULL, ptask->skb->data, 1034 generation, SCODE_100, 0ULL, ptask->skb->data,
1023 tx_len + 8, fwnet_write_complete, ptask); 1035 tx_len + 8, fwnet_write_complete, ptask);
1024 1036
1025 /* FIXME race? */
1026 spin_lock_irqsave(&dev->lock, flags); 1037 spin_lock_irqsave(&dev->lock, flags);
1027 list_add_tail(&ptask->pt_link, &dev->broadcasted_list); 1038
1039 /* If the AT tasklet already ran, we may be last user. */
1040 free = (ptask->outstanding_pkts == 0 && list_empty(&ptask->pt_link));
1041 if (!free)
1042 list_add_tail(&ptask->pt_link, &dev->broadcasted_list);
1043
1028 spin_unlock_irqrestore(&dev->lock, flags); 1044 spin_unlock_irqrestore(&dev->lock, flags);
1029 1045
1030 return 0; 1046 goto out;
1031 } 1047 }
1032 1048
1033 fw_send_request(dev->card, &ptask->transaction, 1049 fw_send_request(dev->card, &ptask->transaction,
@@ -1035,12 +1051,19 @@ static int fwnet_send_packet(struct fwnet_packet_task *ptask)
1035 ptask->generation, ptask->speed, ptask->fifo_addr, 1051 ptask->generation, ptask->speed, ptask->fifo_addr,
1036 ptask->skb->data, tx_len, fwnet_write_complete, ptask); 1052 ptask->skb->data, tx_len, fwnet_write_complete, ptask);
1037 1053
1038 /* FIXME race? */
1039 spin_lock_irqsave(&dev->lock, flags); 1054 spin_lock_irqsave(&dev->lock, flags);
1040 list_add_tail(&ptask->pt_link, &dev->sent_list); 1055
1056 /* If the AT tasklet already ran, we may be last user. */
1057 free = (ptask->outstanding_pkts == 0 && list_empty(&ptask->pt_link));
1058 if (!free)
1059 list_add_tail(&ptask->pt_link, &dev->sent_list);
1060
1041 spin_unlock_irqrestore(&dev->lock, flags); 1061 spin_unlock_irqrestore(&dev->lock, flags);
1042 1062
1043 dev->netdev->trans_start = jiffies; 1063 dev->netdev->trans_start = jiffies;
1064 out:
1065 if (free)
1066 fwnet_free_ptask(ptask);
1044 1067
1045 return 0; 1068 return 0;
1046} 1069}
@@ -1298,6 +1321,8 @@ static netdev_tx_t fwnet_tx(struct sk_buff *skb, struct net_device *net)
1298 spin_unlock_irqrestore(&dev->lock, flags); 1321 spin_unlock_irqrestore(&dev->lock, flags);
1299 1322
1300 ptask->max_payload = max_payload; 1323 ptask->max_payload = max_payload;
1324 INIT_LIST_HEAD(&ptask->pt_link);
1325
1301 fwnet_send_packet(ptask); 1326 fwnet_send_packet(ptask);
1302 1327
1303 return NETDEV_TX_OK; 1328 return NETDEV_TX_OK;
diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c
index f8a71397cf6e..0f7c4bb978e7 100644
--- a/drivers/firewire/ohci.c
+++ b/drivers/firewire/ohci.c
@@ -2136,11 +2136,6 @@ static int ohci_queue_iso_transmit(struct fw_iso_context *base,
2136 u32 payload_index, payload_end_index, next_page_index; 2136 u32 payload_index, payload_end_index, next_page_index;
2137 int page, end_page, i, length, offset; 2137 int page, end_page, i, length, offset;
2138 2138
2139 /*
2140 * FIXME: Cycle lost behavior should be configurable: lose
2141 * packet, retransmit or terminate..
2142 */
2143
2144 p = packet; 2139 p = packet;
2145 payload_index = payload; 2140 payload_index = payload;
2146 2141
@@ -2170,6 +2165,14 @@ static int ohci_queue_iso_transmit(struct fw_iso_context *base,
2170 if (!p->skip) { 2165 if (!p->skip) {
2171 d[0].control = cpu_to_le16(DESCRIPTOR_KEY_IMMEDIATE); 2166 d[0].control = cpu_to_le16(DESCRIPTOR_KEY_IMMEDIATE);
2172 d[0].req_count = cpu_to_le16(8); 2167 d[0].req_count = cpu_to_le16(8);
2168 /*
2169 * Link the skip address to this descriptor itself. This causes
2170 * a context to skip a cycle whenever lost cycles or FIFO
2171 * overruns occur, without dropping the data. The application
2172 * should then decide whether this is an error condition or not.
2173 * FIXME: Make the context's cycle-lost behaviour configurable?
2174 */
2175 d[0].branch_address = cpu_to_le32(d_bus | z);
2173 2176
2174 header = (__le32 *) &d[1]; 2177 header = (__le32 *) &d[1];
2175 header[0] = cpu_to_le32(IT_HEADER_SY(p->sy) | 2178 header[0] = cpu_to_le32(IT_HEADER_SY(p->sy) |
@@ -2455,6 +2458,7 @@ static void ohci_pmac_off(struct pci_dev *dev)
2455 2458
2456#define PCI_VENDOR_ID_AGERE PCI_VENDOR_ID_ATT 2459#define PCI_VENDOR_ID_AGERE PCI_VENDOR_ID_ATT
2457#define PCI_DEVICE_ID_AGERE_FW643 0x5901 2460#define PCI_DEVICE_ID_AGERE_FW643 0x5901
2461#define PCI_DEVICE_ID_TI_TSB43AB23 0x8024
2458 2462
2459static int __devinit pci_probe(struct pci_dev *dev, 2463static int __devinit pci_probe(struct pci_dev *dev,
2460 const struct pci_device_id *ent) 2464 const struct pci_device_id *ent)
@@ -2523,7 +2527,8 @@ static int __devinit pci_probe(struct pci_dev *dev,
2523#if !defined(CONFIG_X86_32) 2527#if !defined(CONFIG_X86_32)
2524 /* dual-buffer mode is broken with descriptor addresses above 2G */ 2528 /* dual-buffer mode is broken with descriptor addresses above 2G */
2525 if (dev->vendor == PCI_VENDOR_ID_TI && 2529 if (dev->vendor == PCI_VENDOR_ID_TI &&
2526 dev->device == PCI_DEVICE_ID_TI_TSB43AB22) 2530 (dev->device == PCI_DEVICE_ID_TI_TSB43AB22 ||
2531 dev->device == PCI_DEVICE_ID_TI_TSB43AB23))
2527 ohci->use_dualbuffer = false; 2532 ohci->use_dualbuffer = false;
2528#endif 2533#endif
2529 2534
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
index a019b49ecc9b..1f1d88ae68d6 100644
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
@@ -172,6 +172,15 @@ config GPIO_ADP5520
172 To compile this driver as a module, choose M here: the module will 172 To compile this driver as a module, choose M here: the module will
173 be called adp5520-gpio. 173 be called adp5520-gpio.
174 174
175config GPIO_ADP5588
176 tristate "ADP5588 I2C GPIO expander"
177 depends on I2C
178 help
179 This option enables support for 18 GPIOs found
180 on Analog Devices ADP5588 GPIO Expanders.
181 To compile this driver as a module, choose M here: the module will be
182 called adp5588-gpio.
183
175comment "PCI GPIO expanders:" 184comment "PCI GPIO expanders:"
176 185
177config GPIO_CS5535 186config GPIO_CS5535
diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile
index 52fe4cf734c7..48687238edb1 100644
--- a/drivers/gpio/Makefile
+++ b/drivers/gpio/Makefile
@@ -5,6 +5,7 @@ ccflags-$(CONFIG_DEBUG_GPIO) += -DDEBUG
5obj-$(CONFIG_GPIOLIB) += gpiolib.o 5obj-$(CONFIG_GPIOLIB) += gpiolib.o
6 6
7obj-$(CONFIG_GPIO_ADP5520) += adp5520-gpio.o 7obj-$(CONFIG_GPIO_ADP5520) += adp5520-gpio.o
8obj-$(CONFIG_GPIO_ADP5588) += adp5588-gpio.o
8obj-$(CONFIG_GPIO_LANGWELL) += langwell_gpio.o 9obj-$(CONFIG_GPIO_LANGWELL) += langwell_gpio.o
9obj-$(CONFIG_GPIO_MAX7301) += max7301.o 10obj-$(CONFIG_GPIO_MAX7301) += max7301.o
10obj-$(CONFIG_GPIO_MAX732X) += max732x.o 11obj-$(CONFIG_GPIO_MAX732X) += max732x.o
diff --git a/drivers/gpio/adp5588-gpio.c b/drivers/gpio/adp5588-gpio.c
new file mode 100644
index 000000000000..afc097a16b33
--- /dev/null
+++ b/drivers/gpio/adp5588-gpio.c
@@ -0,0 +1,266 @@
1/*
2 * GPIO Chip driver for Analog Devices
3 * ADP5588 I/O Expander and QWERTY Keypad Controller
4 *
5 * Copyright 2009 Analog Devices Inc.
6 *
7 * Licensed under the GPL-2 or later.
8 */
9
10#include <linux/module.h>
11#include <linux/kernel.h>
12#include <linux/init.h>
13#include <linux/i2c.h>
14#include <linux/gpio.h>
15
16#include <linux/i2c/adp5588.h>
17
18#define DRV_NAME "adp5588-gpio"
19#define MAXGPIO 18
20#define ADP_BANK(offs) ((offs) >> 3)
21#define ADP_BIT(offs) (1u << ((offs) & 0x7))
22
23struct adp5588_gpio {
24 struct i2c_client *client;
25 struct gpio_chip gpio_chip;
26 struct mutex lock; /* protect cached dir, dat_out */
27 unsigned gpio_start;
28 uint8_t dat_out[3];
29 uint8_t dir[3];
30};
31
32static int adp5588_gpio_read(struct i2c_client *client, u8 reg)
33{
34 int ret = i2c_smbus_read_byte_data(client, reg);
35
36 if (ret < 0)
37 dev_err(&client->dev, "Read Error\n");
38
39 return ret;
40}
41
42static int adp5588_gpio_write(struct i2c_client *client, u8 reg, u8 val)
43{
44 int ret = i2c_smbus_write_byte_data(client, reg, val);
45
46 if (ret < 0)
47 dev_err(&client->dev, "Write Error\n");
48
49 return ret;
50}
51
52static int adp5588_gpio_get_value(struct gpio_chip *chip, unsigned off)
53{
54 struct adp5588_gpio *dev =
55 container_of(chip, struct adp5588_gpio, gpio_chip);
56
57 return !!(adp5588_gpio_read(dev->client, GPIO_DAT_STAT1 + ADP_BANK(off))
58 & ADP_BIT(off));
59}
60
61static void adp5588_gpio_set_value(struct gpio_chip *chip,
62 unsigned off, int val)
63{
64 unsigned bank, bit;
65 struct adp5588_gpio *dev =
66 container_of(chip, struct adp5588_gpio, gpio_chip);
67
68 bank = ADP_BANK(off);
69 bit = ADP_BIT(off);
70
71 mutex_lock(&dev->lock);
72 if (val)
73 dev->dat_out[bank] |= bit;
74 else
75 dev->dat_out[bank] &= ~bit;
76
77 adp5588_gpio_write(dev->client, GPIO_DAT_OUT1 + bank,
78 dev->dat_out[bank]);
79 mutex_unlock(&dev->lock);
80}
81
82static int adp5588_gpio_direction_input(struct gpio_chip *chip, unsigned off)
83{
84 int ret;
85 unsigned bank;
86 struct adp5588_gpio *dev =
87 container_of(chip, struct adp5588_gpio, gpio_chip);
88
89 bank = ADP_BANK(off);
90
91 mutex_lock(&dev->lock);
92 dev->dir[bank] &= ~ADP_BIT(off);
93 ret = adp5588_gpio_write(dev->client, GPIO_DIR1 + bank, dev->dir[bank]);
94 mutex_unlock(&dev->lock);
95
96 return ret;
97}
98
99static int adp5588_gpio_direction_output(struct gpio_chip *chip,
100 unsigned off, int val)
101{
102 int ret;
103 unsigned bank, bit;
104 struct adp5588_gpio *dev =
105 container_of(chip, struct adp5588_gpio, gpio_chip);
106
107 bank = ADP_BANK(off);
108 bit = ADP_BIT(off);
109
110 mutex_lock(&dev->lock);
111 dev->dir[bank] |= bit;
112
113 if (val)
114 dev->dat_out[bank] |= bit;
115 else
116 dev->dat_out[bank] &= ~bit;
117
118 ret = adp5588_gpio_write(dev->client, GPIO_DAT_OUT1 + bank,
119 dev->dat_out[bank]);
120 ret |= adp5588_gpio_write(dev->client, GPIO_DIR1 + bank,
121 dev->dir[bank]);
122 mutex_unlock(&dev->lock);
123
124 return ret;
125}
126
127static int __devinit adp5588_gpio_probe(struct i2c_client *client,
128 const struct i2c_device_id *id)
129{
130 struct adp5588_gpio_platform_data *pdata = client->dev.platform_data;
131 struct adp5588_gpio *dev;
132 struct gpio_chip *gc;
133 int ret, i, revid;
134
135 if (pdata == NULL) {
136 dev_err(&client->dev, "missing platform data\n");
137 return -ENODEV;
138 }
139
140 if (!i2c_check_functionality(client->adapter,
141 I2C_FUNC_SMBUS_BYTE_DATA)) {
142 dev_err(&client->dev, "SMBUS Byte Data not Supported\n");
143 return -EIO;
144 }
145
146 dev = kzalloc(sizeof(*dev), GFP_KERNEL);
147 if (dev == NULL) {
148 dev_err(&client->dev, "failed to alloc memory\n");
149 return -ENOMEM;
150 }
151
152 dev->client = client;
153
154 gc = &dev->gpio_chip;
155 gc->direction_input = adp5588_gpio_direction_input;
156 gc->direction_output = adp5588_gpio_direction_output;
157 gc->get = adp5588_gpio_get_value;
158 gc->set = adp5588_gpio_set_value;
159 gc->can_sleep = 1;
160
161 gc->base = pdata->gpio_start;
162 gc->ngpio = MAXGPIO;
163 gc->label = client->name;
164 gc->owner = THIS_MODULE;
165
166 mutex_init(&dev->lock);
167
168
169 ret = adp5588_gpio_read(dev->client, DEV_ID);
170 if (ret < 0)
171 goto err;
172
173 revid = ret & ADP5588_DEVICE_ID_MASK;
174
175 for (i = 0, ret = 0; i <= ADP_BANK(MAXGPIO); i++) {
176 dev->dat_out[i] = adp5588_gpio_read(client, GPIO_DAT_OUT1 + i);
177 dev->dir[i] = adp5588_gpio_read(client, GPIO_DIR1 + i);
178 ret |= adp5588_gpio_write(client, KP_GPIO1 + i, 0);
179 ret |= adp5588_gpio_write(client, GPIO_PULL1 + i,
180 (pdata->pullup_dis_mask >> (8 * i)) & 0xFF);
181
182 if (ret)
183 goto err;
184 }
185
186 ret = gpiochip_add(&dev->gpio_chip);
187 if (ret)
188 goto err;
189
190 dev_info(&client->dev, "gpios %d..%d on a %s Rev. %d\n",
191 gc->base, gc->base + gc->ngpio - 1,
192 client->name, revid);
193
194 if (pdata->setup) {
195 ret = pdata->setup(client, gc->base, gc->ngpio, pdata->context);
196 if (ret < 0)
197 dev_warn(&client->dev, "setup failed, %d\n", ret);
198 }
199
200 i2c_set_clientdata(client, dev);
201 return 0;
202
203err:
204 kfree(dev);
205 return ret;
206}
207
208static int __devexit adp5588_gpio_remove(struct i2c_client *client)
209{
210 struct adp5588_gpio_platform_data *pdata = client->dev.platform_data;
211 struct adp5588_gpio *dev = i2c_get_clientdata(client);
212 int ret;
213
214 if (pdata->teardown) {
215 ret = pdata->teardown(client,
216 dev->gpio_chip.base, dev->gpio_chip.ngpio,
217 pdata->context);
218 if (ret < 0) {
219 dev_err(&client->dev, "teardown failed %d\n", ret);
220 return ret;
221 }
222 }
223
224 ret = gpiochip_remove(&dev->gpio_chip);
225 if (ret) {
226 dev_err(&client->dev, "gpiochip_remove failed %d\n", ret);
227 return ret;
228 }
229
230 kfree(dev);
231 return 0;
232}
233
234static const struct i2c_device_id adp5588_gpio_id[] = {
235 {DRV_NAME, 0},
236 {}
237};
238
239MODULE_DEVICE_TABLE(i2c, adp5588_gpio_id);
240
241static struct i2c_driver adp5588_gpio_driver = {
242 .driver = {
243 .name = DRV_NAME,
244 },
245 .probe = adp5588_gpio_probe,
246 .remove = __devexit_p(adp5588_gpio_remove),
247 .id_table = adp5588_gpio_id,
248};
249
250static int __init adp5588_gpio_init(void)
251{
252 return i2c_add_driver(&adp5588_gpio_driver);
253}
254
255module_init(adp5588_gpio_init);
256
257static void __exit adp5588_gpio_exit(void)
258{
259 i2c_del_driver(&adp5588_gpio_driver);
260}
261
262module_exit(adp5588_gpio_exit);
263
264MODULE_AUTHOR("Michael Hennerich <hennerich@blackfin.uclinux.org>");
265MODULE_DESCRIPTION("GPIO ADP5588 Driver");
266MODULE_LICENSE("GPL");
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index a25ad284a272..350842ad3632 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -858,8 +858,6 @@ int gpio_sysfs_set_active_low(unsigned gpio, int value)
858 desc = &gpio_desc[gpio]; 858 desc = &gpio_desc[gpio];
859 859
860 if (test_bit(FLAG_EXPORT, &desc->flags)) { 860 if (test_bit(FLAG_EXPORT, &desc->flags)) {
861 struct device *dev;
862
863 dev = class_find_device(&gpio_class, NULL, desc, match_export); 861 dev = class_find_device(&gpio_class, NULL, desc, match_export);
864 if (dev == NULL) { 862 if (dev == NULL) {
865 status = -ENODEV; 863 status = -ENODEV;
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
index 96eddd17e050..305c59003963 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -66,6 +66,8 @@ config DRM_RADEON
66 66
67 If M is selected, the module will be called radeon. 67 If M is selected, the module will be called radeon.
68 68
69source "drivers/gpu/drm/radeon/Kconfig"
70
69config DRM_I810 71config DRM_I810
70 tristate "Intel I810" 72 tristate "Intel I810"
71 depends on DRM && AGP && AGP_INTEL 73 depends on DRM && AGP && AGP_INTEL
diff --git a/drivers/gpu/drm/ati_pcigart.c b/drivers/gpu/drm/ati_pcigart.c
index 628eae3e9b83..17be051b7aa3 100644
--- a/drivers/gpu/drm/ati_pcigart.c
+++ b/drivers/gpu/drm/ati_pcigart.c
@@ -39,8 +39,7 @@ static int drm_ati_alloc_pcigart_table(struct drm_device *dev,
39 struct drm_ati_pcigart_info *gart_info) 39 struct drm_ati_pcigart_info *gart_info)
40{ 40{
41 gart_info->table_handle = drm_pci_alloc(dev, gart_info->table_size, 41 gart_info->table_handle = drm_pci_alloc(dev, gart_info->table_size,
42 PAGE_SIZE, 42 PAGE_SIZE);
43 gart_info->table_mask);
44 if (gart_info->table_handle == NULL) 43 if (gart_info->table_handle == NULL)
45 return -ENOMEM; 44 return -ENOMEM;
46 45
@@ -112,6 +111,13 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
112 if (gart_info->gart_table_location == DRM_ATI_GART_MAIN) { 111 if (gart_info->gart_table_location == DRM_ATI_GART_MAIN) {
113 DRM_DEBUG("PCI: no table in VRAM: using normal RAM\n"); 112 DRM_DEBUG("PCI: no table in VRAM: using normal RAM\n");
114 113
114 if (pci_set_dma_mask(dev->pdev, gart_info->table_mask)) {
115 DRM_ERROR("fail to set dma mask to 0x%Lx\n",
116 (unsigned long long)gart_info->table_mask);
117 ret = 1;
118 goto done;
119 }
120
115 ret = drm_ati_alloc_pcigart_table(dev, gart_info); 121 ret = drm_ati_alloc_pcigart_table(dev, gart_info);
116 if (ret) { 122 if (ret) {
117 DRM_ERROR("cannot allocate PCI GART page!\n"); 123 DRM_ERROR("cannot allocate PCI GART page!\n");
diff --git a/drivers/gpu/drm/drm_bufs.c b/drivers/gpu/drm/drm_bufs.c
index 3d09e304f6f4..8417cc4c43f1 100644
--- a/drivers/gpu/drm/drm_bufs.c
+++ b/drivers/gpu/drm/drm_bufs.c
@@ -326,7 +326,7 @@ static int drm_addmap_core(struct drm_device * dev, resource_size_t offset,
326 * As we're limiting the address to 2^32-1 (or less), 326 * As we're limiting the address to 2^32-1 (or less),
327 * casting it down to 32 bits is no problem, but we 327 * casting it down to 32 bits is no problem, but we
328 * need to point to a 64bit variable first. */ 328 * need to point to a 64bit variable first. */
329 dmah = drm_pci_alloc(dev, map->size, map->size, 0xffffffffUL); 329 dmah = drm_pci_alloc(dev, map->size, map->size);
330 if (!dmah) { 330 if (!dmah) {
331 kfree(map); 331 kfree(map);
332 return -ENOMEM; 332 return -ENOMEM;
@@ -885,7 +885,7 @@ int drm_addbufs_pci(struct drm_device * dev, struct drm_buf_desc * request)
885 885
886 while (entry->buf_count < count) { 886 while (entry->buf_count < count) {
887 887
888 dmah = drm_pci_alloc(dev, PAGE_SIZE << page_order, 0x1000, 0xfffffffful); 888 dmah = drm_pci_alloc(dev, PAGE_SIZE << page_order, 0x1000);
889 889
890 if (!dmah) { 890 if (!dmah) {
891 /* Set count correctly so we free the proper amount. */ 891 /* Set count correctly so we free the proper amount. */
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 5124401f266a..d91fb8c0b7b3 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -158,6 +158,7 @@ static struct drm_conn_prop_enum_list drm_connector_enum_list[] =
158 { DRM_MODE_CONNECTOR_HDMIA, "HDMI Type A", 0 }, 158 { DRM_MODE_CONNECTOR_HDMIA, "HDMI Type A", 0 },
159 { DRM_MODE_CONNECTOR_HDMIB, "HDMI Type B", 0 }, 159 { DRM_MODE_CONNECTOR_HDMIB, "HDMI Type B", 0 },
160 { DRM_MODE_CONNECTOR_TV, "TV", 0 }, 160 { DRM_MODE_CONNECTOR_TV, "TV", 0 },
161 { DRM_MODE_CONNECTOR_eDP, "Embedded DisplayPort", 0 },
161}; 162};
162 163
163static struct drm_prop_enum_list drm_encoder_enum_list[] = 164static struct drm_prop_enum_list drm_encoder_enum_list[] =
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
index 4231d6db72ec..7d0f00a935fa 100644
--- a/drivers/gpu/drm/drm_crtc_helper.c
+++ b/drivers/gpu/drm/drm_crtc_helper.c
@@ -216,7 +216,7 @@ bool drm_helper_crtc_in_use(struct drm_crtc *crtc)
216EXPORT_SYMBOL(drm_helper_crtc_in_use); 216EXPORT_SYMBOL(drm_helper_crtc_in_use);
217 217
218/** 218/**
219 * drm_disable_unused_functions - disable unused objects 219 * drm_helper_disable_unused_functions - disable unused objects
220 * @dev: DRM device 220 * @dev: DRM device
221 * 221 *
222 * LOCKING: 222 * LOCKING:
@@ -702,7 +702,7 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
702 if (encoder->crtc != crtc) 702 if (encoder->crtc != crtc)
703 continue; 703 continue;
704 704
705 DRM_INFO("%s: set mode %s %x\n", drm_get_encoder_name(encoder), 705 DRM_DEBUG("%s: set mode %s %x\n", drm_get_encoder_name(encoder),
706 mode->name, mode->base.id); 706 mode->name, mode->base.id);
707 encoder_funcs = encoder->helper_private; 707 encoder_funcs = encoder->helper_private;
708 encoder_funcs->mode_set(encoder, mode, adjusted_mode); 708 encoder_funcs->mode_set(encoder, mode, adjusted_mode);
@@ -1032,7 +1032,8 @@ bool drm_helper_initial_config(struct drm_device *dev)
1032 /* 1032 /*
1033 * we shouldn't end up with no modes here. 1033 * we shouldn't end up with no modes here.
1034 */ 1034 */
1035 WARN(!count, "No connectors reported connected with modes\n"); 1035 if (count == 0)
1036 printk(KERN_INFO "No connectors reported connected with modes\n");
1036 1037
1037 drm_setup_crtcs(dev); 1038 drm_setup_crtcs(dev);
1038 1039
@@ -1162,6 +1163,9 @@ EXPORT_SYMBOL(drm_helper_mode_fill_fb_struct);
1162int drm_helper_resume_force_mode(struct drm_device *dev) 1163int drm_helper_resume_force_mode(struct drm_device *dev)
1163{ 1164{
1164 struct drm_crtc *crtc; 1165 struct drm_crtc *crtc;
1166 struct drm_encoder *encoder;
1167 struct drm_encoder_helper_funcs *encoder_funcs;
1168 struct drm_crtc_helper_funcs *crtc_funcs;
1165 int ret; 1169 int ret;
1166 1170
1167 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { 1171 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
@@ -1174,6 +1178,25 @@ int drm_helper_resume_force_mode(struct drm_device *dev)
1174 1178
1175 if (ret == false) 1179 if (ret == false)
1176 DRM_ERROR("failed to set mode on crtc %p\n", crtc); 1180 DRM_ERROR("failed to set mode on crtc %p\n", crtc);
1181
1182 /* Turn off outputs that were already powered off */
1183 if (drm_helper_choose_crtc_dpms(crtc)) {
1184 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
1185
1186 if(encoder->crtc != crtc)
1187 continue;
1188
1189 encoder_funcs = encoder->helper_private;
1190 if (encoder_funcs->dpms)
1191 (*encoder_funcs->dpms) (encoder,
1192 drm_helper_choose_encoder_dpms(encoder));
1193
1194 crtc_funcs = crtc->helper_private;
1195 if (crtc_funcs->dpms)
1196 (*crtc_funcs->dpms) (crtc,
1197 drm_helper_choose_crtc_dpms(crtc));
1198 }
1199 }
1177 } 1200 }
1178 /* disable the unused connectors while restoring the modesetting */ 1201 /* disable the unused connectors while restoring the modesetting */
1179 drm_helper_disable_unused_functions(dev); 1202 drm_helper_disable_unused_functions(dev);
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 5c9f79877cbf..ab6c97330412 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -598,6 +598,50 @@ struct drm_display_mode *drm_mode_std(struct drm_device *dev,
598 return mode; 598 return mode;
599} 599}
600 600
601/*
602 * EDID is delightfully ambiguous about how interlaced modes are to be
603 * encoded. Our internal representation is of frame height, but some
604 * HDTV detailed timings are encoded as field height.
605 *
606 * The format list here is from CEA, in frame size. Technically we
607 * should be checking refresh rate too. Whatever.
608 */
609static void
610drm_mode_do_interlace_quirk(struct drm_display_mode *mode,
611 struct detailed_pixel_timing *pt)
612{
613 int i;
614 static const struct {
615 int w, h;
616 } cea_interlaced[] = {
617 { 1920, 1080 },
618 { 720, 480 },
619 { 1440, 480 },
620 { 2880, 480 },
621 { 720, 576 },
622 { 1440, 576 },
623 { 2880, 576 },
624 };
625 static const int n_sizes =
626 sizeof(cea_interlaced)/sizeof(cea_interlaced[0]);
627
628 if (!(pt->misc & DRM_EDID_PT_INTERLACED))
629 return;
630
631 for (i = 0; i < n_sizes; i++) {
632 if ((mode->hdisplay == cea_interlaced[i].w) &&
633 (mode->vdisplay == cea_interlaced[i].h / 2)) {
634 mode->vdisplay *= 2;
635 mode->vsync_start *= 2;
636 mode->vsync_end *= 2;
637 mode->vtotal *= 2;
638 mode->vtotal |= 1;
639 }
640 }
641
642 mode->flags |= DRM_MODE_FLAG_INTERLACE;
643}
644
601/** 645/**
602 * drm_mode_detailed - create a new mode from an EDID detailed timing section 646 * drm_mode_detailed - create a new mode from an EDID detailed timing section
603 * @dev: DRM device (needed to create new mode) 647 * @dev: DRM device (needed to create new mode)
@@ -633,8 +677,7 @@ static struct drm_display_mode *drm_mode_detailed(struct drm_device *dev,
633 return NULL; 677 return NULL;
634 } 678 }
635 if (!(pt->misc & DRM_EDID_PT_SEPARATE_SYNC)) { 679 if (!(pt->misc & DRM_EDID_PT_SEPARATE_SYNC)) {
636 printk(KERN_WARNING "integrated sync not supported\n"); 680 printk(KERN_WARNING "composite sync not supported\n");
637 return NULL;
638 } 681 }
639 682
640 /* it is incorrect if hsync/vsync width is zero */ 683 /* it is incorrect if hsync/vsync width is zero */
@@ -681,8 +724,7 @@ static struct drm_display_mode *drm_mode_detailed(struct drm_device *dev,
681 724
682 drm_mode_set_name(mode); 725 drm_mode_set_name(mode);
683 726
684 if (pt->misc & DRM_EDID_PT_INTERLACED) 727 drm_mode_do_interlace_quirk(mode, pt);
685 mode->flags |= DRM_MODE_FLAG_INTERLACE;
686 728
687 if (quirks & EDID_QUIRK_DETAILED_SYNC_PP) { 729 if (quirks & EDID_QUIRK_DETAILED_SYNC_PP) {
688 pt->misc |= DRM_EDID_PT_HSYNC_POSITIVE | DRM_EDID_PT_VSYNC_POSITIVE; 730 pt->misc |= DRM_EDID_PT_HSYNC_POSITIVE | DRM_EDID_PT_VSYNC_POSITIVE;
@@ -911,23 +953,27 @@ static int drm_cvt_modes(struct drm_connector *connector,
911 struct drm_device *dev = connector->dev; 953 struct drm_device *dev = connector->dev;
912 struct cvt_timing *cvt; 954 struct cvt_timing *cvt;
913 const int rates[] = { 60, 85, 75, 60, 50 }; 955 const int rates[] = { 60, 85, 75, 60, 50 };
956 const u8 empty[3] = { 0, 0, 0 };
914 957
915 for (i = 0; i < 4; i++) { 958 for (i = 0; i < 4; i++) {
916 int uninitialized_var(width), height; 959 int uninitialized_var(width), height;
917 cvt = &(timing->data.other_data.data.cvt[i]); 960 cvt = &(timing->data.other_data.data.cvt[i]);
918 961
919 height = (cvt->code[0] + ((cvt->code[1] & 0xf0) << 8) + 1) * 2; 962 if (!memcmp(cvt->code, empty, 3))
920 switch (cvt->code[1] & 0xc0) { 963 continue;
964
965 height = (cvt->code[0] + ((cvt->code[1] & 0xf0) << 4) + 1) * 2;
966 switch (cvt->code[1] & 0x0c) {
921 case 0x00: 967 case 0x00:
922 width = height * 4 / 3; 968 width = height * 4 / 3;
923 break; 969 break;
924 case 0x40: 970 case 0x04:
925 width = height * 16 / 9; 971 width = height * 16 / 9;
926 break; 972 break;
927 case 0x80: 973 case 0x08:
928 width = height * 16 / 10; 974 width = height * 16 / 10;
929 break; 975 break;
930 case 0xc0: 976 case 0x0c:
931 width = height * 15 / 9; 977 width = height * 15 / 9;
932 break; 978 break;
933 } 979 }
diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
index 1b49fa055f4f..0f9e90552dc4 100644
--- a/drivers/gpu/drm/drm_fb_helper.c
+++ b/drivers/gpu/drm/drm_fb_helper.c
@@ -156,7 +156,7 @@ static bool drm_fb_helper_connector_parse_command_line(struct drm_connector *con
156 force = DRM_FORCE_ON; 156 force = DRM_FORCE_ON;
157 break; 157 break;
158 case 'D': 158 case 'D':
159 if ((connector->connector_type != DRM_MODE_CONNECTOR_DVII) || 159 if ((connector->connector_type != DRM_MODE_CONNECTOR_DVII) &&
160 (connector->connector_type != DRM_MODE_CONNECTOR_HDMIB)) 160 (connector->connector_type != DRM_MODE_CONNECTOR_HDMIB))
161 force = DRM_FORCE_ON; 161 force = DRM_FORCE_ON;
162 else 162 else
@@ -389,7 +389,7 @@ int drm_fb_helper_blank(int blank, struct fb_info *info)
389 break; 389 break;
390 /* Display: Off; HSync: On, VSync: On */ 390 /* Display: Off; HSync: On, VSync: On */
391 case FB_BLANK_NORMAL: 391 case FB_BLANK_NORMAL:
392 drm_fb_helper_off(info, DRM_MODE_DPMS_ON); 392 drm_fb_helper_off(info, DRM_MODE_DPMS_STANDBY);
393 break; 393 break;
394 /* Display: Off; HSync: Off, VSync: On */ 394 /* Display: Off; HSync: Off, VSync: On */
395 case FB_BLANK_HSYNC_SUSPEND: 395 case FB_BLANK_HSYNC_SUSPEND:
@@ -606,11 +606,10 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var,
606 return -EINVAL; 606 return -EINVAL;
607 607
608 /* Need to resize the fb object !!! */ 608 /* Need to resize the fb object !!! */
609 if (var->xres > fb->width || var->yres > fb->height) { 609 if (var->bits_per_pixel > fb->bits_per_pixel || var->xres > fb->width || var->yres > fb->height) {
610 DRM_ERROR("Requested width/height is greater than current fb " 610 DRM_DEBUG("fb userspace requested width/height/bpp is greater than current fb "
611 "object %dx%d > %dx%d\n", var->xres, var->yres, 611 "object %dx%d-%d > %dx%d-%d\n", var->xres, var->yres, var->bits_per_pixel,
612 fb->width, fb->height); 612 fb->width, fb->height, fb->bits_per_pixel);
613 DRM_ERROR("Need resizing code.\n");
614 return -EINVAL; 613 return -EINVAL;
615 } 614 }
616 615
diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
index e9dbb481c469..8bf3770f294e 100644
--- a/drivers/gpu/drm/drm_gem.c
+++ b/drivers/gpu/drm/drm_gem.c
@@ -142,19 +142,6 @@ drm_gem_object_alloc(struct drm_device *dev, size_t size)
142 if (IS_ERR(obj->filp)) 142 if (IS_ERR(obj->filp))
143 goto free; 143 goto free;
144 144
145 /* Basically we want to disable the OOM killer and handle ENOMEM
146 * ourselves by sacrificing pages from cached buffers.
147 * XXX shmem_file_[gs]et_gfp_mask()
148 */
149 mapping_set_gfp_mask(obj->filp->f_path.dentry->d_inode->i_mapping,
150 GFP_HIGHUSER |
151 __GFP_COLD |
152 __GFP_FS |
153 __GFP_RECLAIMABLE |
154 __GFP_NORETRY |
155 __GFP_NOWARN |
156 __GFP_NOMEMALLOC);
157
158 kref_init(&obj->refcount); 145 kref_init(&obj->refcount);
159 kref_init(&obj->handlecount); 146 kref_init(&obj->handlecount);
160 obj->size = size; 147 obj->size = size;
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
index 7998ee66b317..b98384dbd9a7 100644
--- a/drivers/gpu/drm/drm_irq.c
+++ b/drivers/gpu/drm/drm_irq.c
@@ -115,6 +115,7 @@ void drm_vblank_cleanup(struct drm_device *dev)
115 115
116 dev->num_crtcs = 0; 116 dev->num_crtcs = 0;
117} 117}
118EXPORT_SYMBOL(drm_vblank_cleanup);
118 119
119int drm_vblank_init(struct drm_device *dev, int num_crtcs) 120int drm_vblank_init(struct drm_device *dev, int num_crtcs)
120{ 121{
@@ -163,7 +164,6 @@ int drm_vblank_init(struct drm_device *dev, int num_crtcs)
163 } 164 }
164 165
165 dev->vblank_disable_allowed = 0; 166 dev->vblank_disable_allowed = 0;
166
167 return 0; 167 return 0;
168 168
169err: 169err:
@@ -493,6 +493,9 @@ EXPORT_SYMBOL(drm_vblank_off);
493 */ 493 */
494void drm_vblank_pre_modeset(struct drm_device *dev, int crtc) 494void drm_vblank_pre_modeset(struct drm_device *dev, int crtc)
495{ 495{
496 /* vblank is not initialized (IRQ not installed ?) */
497 if (!dev->num_crtcs)
498 return;
496 /* 499 /*
497 * To avoid all the problems that might happen if interrupts 500 * To avoid all the problems that might happen if interrupts
498 * were enabled/disabled around or between these calls, we just 501 * were enabled/disabled around or between these calls, we just
diff --git a/drivers/gpu/drm/drm_mm.c b/drivers/gpu/drm/drm_mm.c
index cdec32977129..2ac074c8f5d2 100644
--- a/drivers/gpu/drm/drm_mm.c
+++ b/drivers/gpu/drm/drm_mm.c
@@ -405,7 +405,8 @@ struct drm_mm_node *drm_mm_search_free_in_range(const struct drm_mm *mm,
405 wasted += alignment - tmp; 405 wasted += alignment - tmp;
406 } 406 }
407 407
408 if (entry->size >= size + wasted) { 408 if (entry->size >= size + wasted &&
409 (entry->start + wasted + size) <= end) {
409 if (!best_match) 410 if (!best_match)
410 return entry; 411 return entry;
411 if (entry->size < best_size) { 412 if (entry->size < best_size) {
diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c
index 6d81a02463a3..76d63394c776 100644
--- a/drivers/gpu/drm/drm_modes.c
+++ b/drivers/gpu/drm/drm_modes.c
@@ -1,9 +1,4 @@
1/* 1/*
2 * The list_sort function is (presumably) licensed under the GPL (see the
3 * top level "COPYING" file for details).
4 *
5 * The remainder of this file is:
6 *
7 * Copyright © 1997-2003 by The XFree86 Project, Inc. 2 * Copyright © 1997-2003 by The XFree86 Project, Inc.
8 * Copyright © 2007 Dave Airlie 3 * Copyright © 2007 Dave Airlie
9 * Copyright © 2007-2008 Intel Corporation 4 * Copyright © 2007-2008 Intel Corporation
@@ -36,6 +31,7 @@
36 */ 31 */
37 32
38#include <linux/list.h> 33#include <linux/list.h>
34#include <linux/list_sort.h>
39#include "drmP.h" 35#include "drmP.h"
40#include "drm.h" 36#include "drm.h"
41#include "drm_crtc.h" 37#include "drm_crtc.h"
@@ -855,6 +851,7 @@ EXPORT_SYMBOL(drm_mode_prune_invalid);
855 851
856/** 852/**
857 * drm_mode_compare - compare modes for favorability 853 * drm_mode_compare - compare modes for favorability
854 * @priv: unused
858 * @lh_a: list_head for first mode 855 * @lh_a: list_head for first mode
859 * @lh_b: list_head for second mode 856 * @lh_b: list_head for second mode
860 * 857 *
@@ -868,7 +865,7 @@ EXPORT_SYMBOL(drm_mode_prune_invalid);
868 * Negative if @lh_a is better than @lh_b, zero if they're equivalent, or 865 * Negative if @lh_a is better than @lh_b, zero if they're equivalent, or
869 * positive if @lh_b is better than @lh_a. 866 * positive if @lh_b is better than @lh_a.
870 */ 867 */
871static int drm_mode_compare(struct list_head *lh_a, struct list_head *lh_b) 868static int drm_mode_compare(void *priv, struct list_head *lh_a, struct list_head *lh_b)
872{ 869{
873 struct drm_display_mode *a = list_entry(lh_a, struct drm_display_mode, head); 870 struct drm_display_mode *a = list_entry(lh_a, struct drm_display_mode, head);
874 struct drm_display_mode *b = list_entry(lh_b, struct drm_display_mode, head); 871 struct drm_display_mode *b = list_entry(lh_b, struct drm_display_mode, head);
@@ -885,85 +882,6 @@ static int drm_mode_compare(struct list_head *lh_a, struct list_head *lh_b)
885 return diff; 882 return diff;
886} 883}
887 884
888/* FIXME: what we don't have a list sort function? */
889/* list sort from Mark J Roberts (mjr@znex.org) */
890void list_sort(struct list_head *head,
891 int (*cmp)(struct list_head *a, struct list_head *b))
892{
893 struct list_head *p, *q, *e, *list, *tail, *oldhead;
894 int insize, nmerges, psize, qsize, i;
895
896 list = head->next;
897 list_del(head);
898 insize = 1;
899 for (;;) {
900 p = oldhead = list;
901 list = tail = NULL;
902 nmerges = 0;
903
904 while (p) {
905 nmerges++;
906 q = p;
907 psize = 0;
908 for (i = 0; i < insize; i++) {
909 psize++;
910 q = q->next == oldhead ? NULL : q->next;
911 if (!q)
912 break;
913 }
914
915 qsize = insize;
916 while (psize > 0 || (qsize > 0 && q)) {
917 if (!psize) {
918 e = q;
919 q = q->next;
920 qsize--;
921 if (q == oldhead)
922 q = NULL;
923 } else if (!qsize || !q) {
924 e = p;
925 p = p->next;
926 psize--;
927 if (p == oldhead)
928 p = NULL;
929 } else if (cmp(p, q) <= 0) {
930 e = p;
931 p = p->next;
932 psize--;
933 if (p == oldhead)
934 p = NULL;
935 } else {
936 e = q;
937 q = q->next;
938 qsize--;
939 if (q == oldhead)
940 q = NULL;
941 }
942 if (tail)
943 tail->next = e;
944 else
945 list = e;
946 e->prev = tail;
947 tail = e;
948 }
949 p = q;
950 }
951
952 tail->next = list;
953 list->prev = tail;
954
955 if (nmerges <= 1)
956 break;
957
958 insize *= 2;
959 }
960
961 head->next = list;
962 head->prev = list->prev;
963 list->prev->next = head;
964 list->prev = head;
965}
966
967/** 885/**
968 * drm_mode_sort - sort mode list 886 * drm_mode_sort - sort mode list
969 * @mode_list: list to sort 887 * @mode_list: list to sort
@@ -975,7 +893,7 @@ void list_sort(struct list_head *head,
975 */ 893 */
976void drm_mode_sort(struct list_head *mode_list) 894void drm_mode_sort(struct list_head *mode_list)
977{ 895{
978 list_sort(mode_list, drm_mode_compare); 896 list_sort(NULL, mode_list, drm_mode_compare);
979} 897}
980EXPORT_SYMBOL(drm_mode_sort); 898EXPORT_SYMBOL(drm_mode_sort);
981 899
diff --git a/drivers/gpu/drm/drm_pci.c b/drivers/gpu/drm/drm_pci.c
index 577094fb1995..e68ebf92fa2a 100644
--- a/drivers/gpu/drm/drm_pci.c
+++ b/drivers/gpu/drm/drm_pci.c
@@ -47,8 +47,7 @@
47/** 47/**
48 * \brief Allocate a PCI consistent memory block, for DMA. 48 * \brief Allocate a PCI consistent memory block, for DMA.
49 */ 49 */
50drm_dma_handle_t *drm_pci_alloc(struct drm_device * dev, size_t size, size_t align, 50drm_dma_handle_t *drm_pci_alloc(struct drm_device * dev, size_t size, size_t align)
51 dma_addr_t maxaddr)
52{ 51{
53 drm_dma_handle_t *dmah; 52 drm_dma_handle_t *dmah;
54#if 1 53#if 1
@@ -63,11 +62,6 @@ drm_dma_handle_t *drm_pci_alloc(struct drm_device * dev, size_t size, size_t ali
63 if (align > size) 62 if (align > size)
64 return NULL; 63 return NULL;
65 64
66 if (pci_set_dma_mask(dev->pdev, maxaddr) != 0) {
67 DRM_ERROR("Setting pci dma mask failed\n");
68 return NULL;
69 }
70
71 dmah = kmalloc(sizeof(drm_dma_handle_t), GFP_KERNEL); 65 dmah = kmalloc(sizeof(drm_dma_handle_t), GFP_KERNEL);
72 if (!dmah) 66 if (!dmah)
73 return NULL; 67 return NULL;
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 18476bf0b580..a894ade03093 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -272,7 +272,7 @@ static void i915_dump_pages(struct seq_file *m, struct page **pages, int page_co
272 mem = kmap_atomic(pages[page], KM_USER0); 272 mem = kmap_atomic(pages[page], KM_USER0);
273 for (i = 0; i < PAGE_SIZE; i += 4) 273 for (i = 0; i < PAGE_SIZE; i += 4)
274 seq_printf(m, "%08x : %08x\n", i, mem[i / 4]); 274 seq_printf(m, "%08x : %08x\n", i, mem[i / 4]);
275 kunmap_atomic(pages[page], KM_USER0); 275 kunmap_atomic(mem, KM_USER0);
276 } 276 }
277} 277}
278 278
@@ -290,7 +290,7 @@ static int i915_batchbuffer_info(struct seq_file *m, void *data)
290 list_for_each_entry(obj_priv, &dev_priv->mm.active_list, list) { 290 list_for_each_entry(obj_priv, &dev_priv->mm.active_list, list) {
291 obj = obj_priv->obj; 291 obj = obj_priv->obj;
292 if (obj->read_domains & I915_GEM_DOMAIN_COMMAND) { 292 if (obj->read_domains & I915_GEM_DOMAIN_COMMAND) {
293 ret = i915_gem_object_get_pages(obj); 293 ret = i915_gem_object_get_pages(obj, 0);
294 if (ret) { 294 if (ret) {
295 DRM_ERROR("Failed to get pages: %d\n", ret); 295 DRM_ERROR("Failed to get pages: %d\n", ret);
296 spin_unlock(&dev_priv->mm.active_list_lock); 296 spin_unlock(&dev_priv->mm.active_list_lock);
@@ -386,34 +386,6 @@ out:
386 return 0; 386 return 0;
387} 387}
388 388
389static int i915_registers_info(struct seq_file *m, void *data) {
390 struct drm_info_node *node = (struct drm_info_node *) m->private;
391 struct drm_device *dev = node->minor->dev;
392 drm_i915_private_t *dev_priv = dev->dev_private;
393 uint32_t reg;
394
395#define DUMP_RANGE(start, end) \
396 for (reg=start; reg < end; reg += 4) \
397 seq_printf(m, "%08x\t%08x\n", reg, I915_READ(reg));
398
399 DUMP_RANGE(0x00000, 0x00fff); /* VGA registers */
400 DUMP_RANGE(0x02000, 0x02fff); /* instruction, memory, interrupt control registers */
401 DUMP_RANGE(0x03000, 0x031ff); /* FENCE and PPGTT control registers */
402 DUMP_RANGE(0x03200, 0x03fff); /* frame buffer compression registers */
403 DUMP_RANGE(0x05000, 0x05fff); /* I/O control registers */
404 DUMP_RANGE(0x06000, 0x06fff); /* clock control registers */
405 DUMP_RANGE(0x07000, 0x07fff); /* 3D internal debug registers */
406 DUMP_RANGE(0x07400, 0x088ff); /* GPE debug registers */
407 DUMP_RANGE(0x0a000, 0x0afff); /* display palette registers */
408 DUMP_RANGE(0x10000, 0x13fff); /* MMIO MCHBAR */
409 DUMP_RANGE(0x30000, 0x3ffff); /* overlay registers */
410 DUMP_RANGE(0x60000, 0x6ffff); /* display engine pipeline registers */
411 DUMP_RANGE(0x70000, 0x72fff); /* display and cursor registers */
412 DUMP_RANGE(0x73000, 0x73fff); /* performance counters */
413
414 return 0;
415}
416
417static int 389static int
418i915_wedged_open(struct inode *inode, 390i915_wedged_open(struct inode *inode,
419 struct file *filp) 391 struct file *filp)
@@ -519,7 +491,6 @@ static int i915_wedged_create(struct dentry *root, struct drm_minor *minor)
519} 491}
520 492
521static struct drm_info_list i915_debugfs_list[] = { 493static struct drm_info_list i915_debugfs_list[] = {
522 {"i915_regs", i915_registers_info, 0},
523 {"i915_gem_active", i915_gem_object_list_info, 0, (void *) ACTIVE_LIST}, 494 {"i915_gem_active", i915_gem_object_list_info, 0, (void *) ACTIVE_LIST},
524 {"i915_gem_flushing", i915_gem_object_list_info, 0, (void *) FLUSHING_LIST}, 495 {"i915_gem_flushing", i915_gem_object_list_info, 0, (void *) FLUSHING_LIST},
525 {"i915_gem_inactive", i915_gem_object_list_info, 0, (void *) INACTIVE_LIST}, 496 {"i915_gem_inactive", i915_gem_object_list_info, 0, (void *) INACTIVE_LIST},
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
index 701bfeac7f57..2307f98349f7 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -123,7 +123,7 @@ static int i915_init_phys_hws(struct drm_device *dev)
123 drm_i915_private_t *dev_priv = dev->dev_private; 123 drm_i915_private_t *dev_priv = dev->dev_private;
124 /* Program Hardware Status Page */ 124 /* Program Hardware Status Page */
125 dev_priv->status_page_dmah = 125 dev_priv->status_page_dmah =
126 drm_pci_alloc(dev, PAGE_SIZE, PAGE_SIZE, 0xffffffff); 126 drm_pci_alloc(dev, PAGE_SIZE, PAGE_SIZE);
127 127
128 if (!dev_priv->status_page_dmah) { 128 if (!dev_priv->status_page_dmah) {
129 DRM_ERROR("Can not allocate hardware status page\n"); 129 DRM_ERROR("Can not allocate hardware status page\n");
@@ -134,6 +134,10 @@ static int i915_init_phys_hws(struct drm_device *dev)
134 134
135 memset(dev_priv->hw_status_page, 0, PAGE_SIZE); 135 memset(dev_priv->hw_status_page, 0, PAGE_SIZE);
136 136
137 if (IS_I965G(dev))
138 dev_priv->dma_status_page |= (dev_priv->dma_status_page >> 28) &
139 0xf0;
140
137 I915_WRITE(HWS_PGA, dev_priv->dma_status_page); 141 I915_WRITE(HWS_PGA, dev_priv->dma_status_page);
138 DRM_DEBUG_DRIVER("Enabled hardware status page\n"); 142 DRM_DEBUG_DRIVER("Enabled hardware status page\n");
139 return 0; 143 return 0;
@@ -731,8 +735,10 @@ static int i915_cmdbuffer(struct drm_device *dev, void *data,
731 if (cmdbuf->num_cliprects) { 735 if (cmdbuf->num_cliprects) {
732 cliprects = kcalloc(cmdbuf->num_cliprects, 736 cliprects = kcalloc(cmdbuf->num_cliprects,
733 sizeof(struct drm_clip_rect), GFP_KERNEL); 737 sizeof(struct drm_clip_rect), GFP_KERNEL);
734 if (cliprects == NULL) 738 if (cliprects == NULL) {
739 ret = -ENOMEM;
735 goto fail_batch_free; 740 goto fail_batch_free;
741 }
736 742
737 ret = copy_from_user(cliprects, cmdbuf->cliprects, 743 ret = copy_from_user(cliprects, cmdbuf->cliprects,
738 cmdbuf->num_cliprects * 744 cmdbuf->num_cliprects *
@@ -813,9 +819,13 @@ static int i915_getparam(struct drm_device *dev, void *data,
813 case I915_PARAM_HAS_PAGEFLIPPING: 819 case I915_PARAM_HAS_PAGEFLIPPING:
814 value = 1; 820 value = 1;
815 break; 821 break;
822 case I915_PARAM_HAS_EXECBUF2:
823 /* depends on GEM */
824 value = dev_priv->has_gem;
825 break;
816 default: 826 default:
817 DRM_DEBUG_DRIVER("Unknown parameter %d\n", 827 DRM_DEBUG_DRIVER("Unknown parameter %d\n",
818 param->param); 828 param->param);
819 return -EINVAL; 829 return -EINVAL;
820 } 830 }
821 831
@@ -1117,7 +1127,8 @@ static void i915_setup_compression(struct drm_device *dev, int size)
1117{ 1127{
1118 struct drm_i915_private *dev_priv = dev->dev_private; 1128 struct drm_i915_private *dev_priv = dev->dev_private;
1119 struct drm_mm_node *compressed_fb, *compressed_llb; 1129 struct drm_mm_node *compressed_fb, *compressed_llb;
1120 unsigned long cfb_base, ll_base; 1130 unsigned long cfb_base;
1131 unsigned long ll_base = 0;
1121 1132
1122 /* Leave 1M for line length buffer & misc. */ 1133 /* Leave 1M for line length buffer & misc. */
1123 compressed_fb = drm_mm_search_free(&dev_priv->vram, size, 4096, 0); 1134 compressed_fb = drm_mm_search_free(&dev_priv->vram, size, 4096, 0);
@@ -1200,14 +1211,6 @@ static int i915_load_modeset_init(struct drm_device *dev,
1200 dev->mode_config.fb_base = drm_get_resource_start(dev, fb_bar) & 1211 dev->mode_config.fb_base = drm_get_resource_start(dev, fb_bar) &
1201 0xff000000; 1212 0xff000000;
1202 1213
1203 if (IS_MOBILE(dev) || IS_I9XX(dev))
1204 dev_priv->cursor_needs_physical = true;
1205 else
1206 dev_priv->cursor_needs_physical = false;
1207
1208 if (IS_I965G(dev) || IS_G33(dev))
1209 dev_priv->cursor_needs_physical = false;
1210
1211 /* Basic memrange allocator for stolen space (aka vram) */ 1214 /* Basic memrange allocator for stolen space (aka vram) */
1212 drm_mm_init(&dev_priv->vram, 0, prealloc_size); 1215 drm_mm_init(&dev_priv->vram, 0, prealloc_size);
1213 DRM_INFO("set up %ldM of stolen space\n", prealloc_size / (1024*1024)); 1216 DRM_INFO("set up %ldM of stolen space\n", prealloc_size / (1024*1024));
@@ -1257,6 +1260,8 @@ static int i915_load_modeset_init(struct drm_device *dev,
1257 if (ret) 1260 if (ret)
1258 goto destroy_ringbuffer; 1261 goto destroy_ringbuffer;
1259 1262
1263 intel_modeset_init(dev);
1264
1260 ret = drm_irq_install(dev); 1265 ret = drm_irq_install(dev);
1261 if (ret) 1266 if (ret)
1262 goto destroy_ringbuffer; 1267 goto destroy_ringbuffer;
@@ -1271,8 +1276,6 @@ static int i915_load_modeset_init(struct drm_device *dev,
1271 1276
1272 I915_WRITE(INSTPM, (1 << 5) | (1 << 21)); 1277 I915_WRITE(INSTPM, (1 << 5) | (1 << 21));
1273 1278
1274 intel_modeset_init(dev);
1275
1276 drm_helper_initial_config(dev); 1279 drm_helper_initial_config(dev);
1277 1280
1278 return 0; 1281 return 0;
@@ -1360,7 +1363,7 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
1360{ 1363{
1361 struct drm_i915_private *dev_priv = dev->dev_private; 1364 struct drm_i915_private *dev_priv = dev->dev_private;
1362 resource_size_t base, size; 1365 resource_size_t base, size;
1363 int ret = 0, mmio_bar = IS_I9XX(dev) ? 0 : 1; 1366 int ret = 0, mmio_bar;
1364 uint32_t agp_size, prealloc_size, prealloc_start; 1367 uint32_t agp_size, prealloc_size, prealloc_start;
1365 1368
1366 /* i915 has 4 more counters */ 1369 /* i915 has 4 more counters */
@@ -1376,8 +1379,10 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
1376 1379
1377 dev->dev_private = (void *)dev_priv; 1380 dev->dev_private = (void *)dev_priv;
1378 dev_priv->dev = dev; 1381 dev_priv->dev = dev;
1382 dev_priv->info = (struct intel_device_info *) flags;
1379 1383
1380 /* Add register map (needed for suspend/resume) */ 1384 /* Add register map (needed for suspend/resume) */
1385 mmio_bar = IS_I9XX(dev) ? 0 : 1;
1381 base = drm_get_resource_start(dev, mmio_bar); 1386 base = drm_get_resource_start(dev, mmio_bar);
1382 size = drm_get_resource_len(dev, mmio_bar); 1387 size = drm_get_resource_len(dev, mmio_bar);
1383 1388
@@ -1652,6 +1657,7 @@ struct drm_ioctl_desc i915_ioctls[] = {
1652 DRM_IOCTL_DEF(DRM_I915_HWS_ADDR, i915_set_status_page, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 1657 DRM_IOCTL_DEF(DRM_I915_HWS_ADDR, i915_set_status_page, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
1653 DRM_IOCTL_DEF(DRM_I915_GEM_INIT, i915_gem_init_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 1658 DRM_IOCTL_DEF(DRM_I915_GEM_INIT, i915_gem_init_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
1654 DRM_IOCTL_DEF(DRM_I915_GEM_EXECBUFFER, i915_gem_execbuffer, DRM_AUTH), 1659 DRM_IOCTL_DEF(DRM_I915_GEM_EXECBUFFER, i915_gem_execbuffer, DRM_AUTH),
1660 DRM_IOCTL_DEF(DRM_I915_GEM_EXECBUFFER2, i915_gem_execbuffer2, DRM_AUTH),
1655 DRM_IOCTL_DEF(DRM_I915_GEM_PIN, i915_gem_pin_ioctl, DRM_AUTH|DRM_ROOT_ONLY), 1661 DRM_IOCTL_DEF(DRM_I915_GEM_PIN, i915_gem_pin_ioctl, DRM_AUTH|DRM_ROOT_ONLY),
1656 DRM_IOCTL_DEF(DRM_I915_GEM_UNPIN, i915_gem_unpin_ioctl, DRM_AUTH|DRM_ROOT_ONLY), 1662 DRM_IOCTL_DEF(DRM_I915_GEM_UNPIN, i915_gem_unpin_ioctl, DRM_AUTH|DRM_ROOT_ONLY),
1657 DRM_IOCTL_DEF(DRM_I915_GEM_BUSY, i915_gem_busy_ioctl, DRM_AUTH), 1663 DRM_IOCTL_DEF(DRM_I915_GEM_BUSY, i915_gem_busy_ioctl, DRM_AUTH),
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 24286ca168fc..cf4cb3e9a0c2 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -33,7 +33,6 @@
33#include "i915_drm.h" 33#include "i915_drm.h"
34#include "i915_drv.h" 34#include "i915_drv.h"
35 35
36#include "drm_pciids.h"
37#include <linux/console.h> 36#include <linux/console.h>
38#include "drm_crtc_helper.h" 37#include "drm_crtc_helper.h"
39 38
@@ -46,36 +45,149 @@ module_param_named(fbpercrtc, i915_fbpercrtc, int, 0400);
46unsigned int i915_powersave = 1; 45unsigned int i915_powersave = 1;
47module_param_named(powersave, i915_powersave, int, 0400); 46module_param_named(powersave, i915_powersave, int, 0400);
48 47
48unsigned int i915_lvds_downclock = 0;
49module_param_named(lvds_downclock, i915_lvds_downclock, int, 0400);
50
49static struct drm_driver driver; 51static struct drm_driver driver;
50 52
51static struct pci_device_id pciidlist[] = { 53#define INTEL_VGA_DEVICE(id, info) { \
52 i915_PCI_IDS 54 .class = PCI_CLASS_DISPLAY_VGA << 8, \
55 .class_mask = 0xffff00, \
56 .vendor = 0x8086, \
57 .device = id, \
58 .subvendor = PCI_ANY_ID, \
59 .subdevice = PCI_ANY_ID, \
60 .driver_data = (unsigned long) info }
61
62const static struct intel_device_info intel_i830_info = {
63 .is_i8xx = 1, .is_mobile = 1, .cursor_needs_physical = 1,
64};
65
66const static struct intel_device_info intel_845g_info = {
67 .is_i8xx = 1,
68};
69
70const static struct intel_device_info intel_i85x_info = {
71 .is_i8xx = 1, .is_mobile = 1, .cursor_needs_physical = 1,
72};
73
74const static struct intel_device_info intel_i865g_info = {
75 .is_i8xx = 1,
76};
77
78const static struct intel_device_info intel_i915g_info = {
79 .is_i915g = 1, .is_i9xx = 1, .cursor_needs_physical = 1,
80};
81const static struct intel_device_info intel_i915gm_info = {
82 .is_i9xx = 1, .is_mobile = 1, .has_fbc = 1,
83 .cursor_needs_physical = 1,
84};
85const static struct intel_device_info intel_i945g_info = {
86 .is_i9xx = 1, .has_hotplug = 1, .cursor_needs_physical = 1,
87};
88const static struct intel_device_info intel_i945gm_info = {
89 .is_i945gm = 1, .is_i9xx = 1, .is_mobile = 1, .has_fbc = 1,
90 .has_hotplug = 1, .cursor_needs_physical = 1,
91};
92
93const static struct intel_device_info intel_i965g_info = {
94 .is_i965g = 1, .is_i9xx = 1, .has_hotplug = 1,
95};
96
97const static struct intel_device_info intel_i965gm_info = {
98 .is_i965g = 1, .is_mobile = 1, .is_i965gm = 1, .is_i9xx = 1,
99 .is_mobile = 1, .has_fbc = 1, .has_rc6 = 1,
100 .has_hotplug = 1,
101};
102
103const static struct intel_device_info intel_g33_info = {
104 .is_g33 = 1, .is_i9xx = 1, .need_gfx_hws = 1,
105 .has_hotplug = 1,
106};
107
108const static struct intel_device_info intel_g45_info = {
109 .is_i965g = 1, .is_g4x = 1, .is_i9xx = 1, .need_gfx_hws = 1,
110 .has_pipe_cxsr = 1,
111 .has_hotplug = 1,
112};
113
114const static struct intel_device_info intel_gm45_info = {
115 .is_i965g = 1, .is_mobile = 1, .is_g4x = 1, .is_i9xx = 1,
116 .is_mobile = 1, .need_gfx_hws = 1, .has_fbc = 1, .has_rc6 = 1,
117 .has_pipe_cxsr = 1,
118 .has_hotplug = 1,
119};
120
121const static struct intel_device_info intel_pineview_info = {
122 .is_g33 = 1, .is_pineview = 1, .is_mobile = 1, .is_i9xx = 1,
123 .need_gfx_hws = 1,
124 .has_hotplug = 1,
125};
126
127const static struct intel_device_info intel_ironlake_d_info = {
128 .is_ironlake = 1, .is_i965g = 1, .is_i9xx = 1, .need_gfx_hws = 1,
129 .has_pipe_cxsr = 1,
130 .has_hotplug = 1,
131};
132
133const static struct intel_device_info intel_ironlake_m_info = {
134 .is_ironlake = 1, .is_mobile = 1, .is_i965g = 1, .is_i9xx = 1,
135 .need_gfx_hws = 1, .has_rc6 = 1,
136 .has_hotplug = 1,
137};
138
139const static struct pci_device_id pciidlist[] = {
140 INTEL_VGA_DEVICE(0x3577, &intel_i830_info),
141 INTEL_VGA_DEVICE(0x2562, &intel_845g_info),
142 INTEL_VGA_DEVICE(0x3582, &intel_i85x_info),
143 INTEL_VGA_DEVICE(0x35e8, &intel_i85x_info),
144 INTEL_VGA_DEVICE(0x2572, &intel_i865g_info),
145 INTEL_VGA_DEVICE(0x2582, &intel_i915g_info),
146 INTEL_VGA_DEVICE(0x258a, &intel_i915g_info),
147 INTEL_VGA_DEVICE(0x2592, &intel_i915gm_info),
148 INTEL_VGA_DEVICE(0x2772, &intel_i945g_info),
149 INTEL_VGA_DEVICE(0x27a2, &intel_i945gm_info),
150 INTEL_VGA_DEVICE(0x27ae, &intel_i945gm_info),
151 INTEL_VGA_DEVICE(0x2972, &intel_i965g_info),
152 INTEL_VGA_DEVICE(0x2982, &intel_i965g_info),
153 INTEL_VGA_DEVICE(0x2992, &intel_i965g_info),
154 INTEL_VGA_DEVICE(0x29a2, &intel_i965g_info),
155 INTEL_VGA_DEVICE(0x29b2, &intel_g33_info),
156 INTEL_VGA_DEVICE(0x29c2, &intel_g33_info),
157 INTEL_VGA_DEVICE(0x29d2, &intel_g33_info),
158 INTEL_VGA_DEVICE(0x2a02, &intel_i965gm_info),
159 INTEL_VGA_DEVICE(0x2a12, &intel_i965gm_info),
160 INTEL_VGA_DEVICE(0x2a42, &intel_gm45_info),
161 INTEL_VGA_DEVICE(0x2e02, &intel_g45_info),
162 INTEL_VGA_DEVICE(0x2e12, &intel_g45_info),
163 INTEL_VGA_DEVICE(0x2e22, &intel_g45_info),
164 INTEL_VGA_DEVICE(0x2e32, &intel_g45_info),
165 INTEL_VGA_DEVICE(0x2e42, &intel_g45_info),
166 INTEL_VGA_DEVICE(0xa001, &intel_pineview_info),
167 INTEL_VGA_DEVICE(0xa011, &intel_pineview_info),
168 INTEL_VGA_DEVICE(0x0042, &intel_ironlake_d_info),
169 INTEL_VGA_DEVICE(0x0046, &intel_ironlake_m_info),
170 {0, 0, 0}
53}; 171};
54 172
55#if defined(CONFIG_DRM_I915_KMS) 173#if defined(CONFIG_DRM_I915_KMS)
56MODULE_DEVICE_TABLE(pci, pciidlist); 174MODULE_DEVICE_TABLE(pci, pciidlist);
57#endif 175#endif
58 176
59static int i915_suspend(struct drm_device *dev, pm_message_t state) 177static int i915_drm_freeze(struct drm_device *dev)
60{ 178{
61 struct drm_i915_private *dev_priv = dev->dev_private; 179 struct drm_i915_private *dev_priv = dev->dev_private;
62 180
63 if (!dev || !dev_priv) {
64 DRM_ERROR("dev: %p, dev_priv: %p\n", dev, dev_priv);
65 DRM_ERROR("DRM not initialized, aborting suspend.\n");
66 return -ENODEV;
67 }
68
69 if (state.event == PM_EVENT_PRETHAW)
70 return 0;
71
72 pci_save_state(dev->pdev); 181 pci_save_state(dev->pdev);
73 182
74 /* If KMS is active, we do the leavevt stuff here */ 183 /* If KMS is active, we do the leavevt stuff here */
75 if (drm_core_check_feature(dev, DRIVER_MODESET)) { 184 if (drm_core_check_feature(dev, DRIVER_MODESET)) {
76 if (i915_gem_idle(dev)) 185 int error = i915_gem_idle(dev);
186 if (error) {
77 dev_err(&dev->pdev->dev, 187 dev_err(&dev->pdev->dev,
78 "GEM idle failed, resume may fail\n"); 188 "GEM idle failed, resume might fail\n");
189 return error;
190 }
79 drm_irq_uninstall(dev); 191 drm_irq_uninstall(dev);
80 } 192 }
81 193
@@ -83,26 +195,42 @@ static int i915_suspend(struct drm_device *dev, pm_message_t state)
83 195
84 intel_opregion_free(dev, 1); 196 intel_opregion_free(dev, 1);
85 197
198 /* Modeset on resume, not lid events */
199 dev_priv->modeset_on_lid = 0;
200
201 return 0;
202}
203
204static int i915_suspend(struct drm_device *dev, pm_message_t state)
205{
206 int error;
207
208 if (!dev || !dev->dev_private) {
209 DRM_ERROR("dev: %p\n", dev);
210 DRM_ERROR("DRM not initialized, aborting suspend.\n");
211 return -ENODEV;
212 }
213
214 if (state.event == PM_EVENT_PRETHAW)
215 return 0;
216
217 error = i915_drm_freeze(dev);
218 if (error)
219 return error;
220
86 if (state.event == PM_EVENT_SUSPEND) { 221 if (state.event == PM_EVENT_SUSPEND) {
87 /* Shut down the device */ 222 /* Shut down the device */
88 pci_disable_device(dev->pdev); 223 pci_disable_device(dev->pdev);
89 pci_set_power_state(dev->pdev, PCI_D3hot); 224 pci_set_power_state(dev->pdev, PCI_D3hot);
90 } 225 }
91 226
92 /* Modeset on resume, not lid events */
93 dev_priv->modeset_on_lid = 0;
94
95 return 0; 227 return 0;
96} 228}
97 229
98static int i915_resume(struct drm_device *dev) 230static int i915_drm_thaw(struct drm_device *dev)
99{ 231{
100 struct drm_i915_private *dev_priv = dev->dev_private; 232 struct drm_i915_private *dev_priv = dev->dev_private;
101 int ret = 0; 233 int error = 0;
102
103 if (pci_enable_device(dev->pdev))
104 return -1;
105 pci_set_master(dev->pdev);
106 234
107 i915_restore_state(dev); 235 i915_restore_state(dev);
108 236
@@ -113,21 +241,28 @@ static int i915_resume(struct drm_device *dev)
113 mutex_lock(&dev->struct_mutex); 241 mutex_lock(&dev->struct_mutex);
114 dev_priv->mm.suspended = 0; 242 dev_priv->mm.suspended = 0;
115 243
116 ret = i915_gem_init_ringbuffer(dev); 244 error = i915_gem_init_ringbuffer(dev);
117 if (ret != 0)
118 ret = -1;
119 mutex_unlock(&dev->struct_mutex); 245 mutex_unlock(&dev->struct_mutex);
120 246
121 drm_irq_install(dev); 247 drm_irq_install(dev);
122 } 248
123 if (drm_core_check_feature(dev, DRIVER_MODESET)) {
124 /* Resume the modeset for every activated CRTC */ 249 /* Resume the modeset for every activated CRTC */
125 drm_helper_resume_force_mode(dev); 250 drm_helper_resume_force_mode(dev);
126 } 251 }
127 252
128 dev_priv->modeset_on_lid = 0; 253 dev_priv->modeset_on_lid = 0;
129 254
130 return ret; 255 return error;
256}
257
258static int i915_resume(struct drm_device *dev)
259{
260 if (pci_enable_device(dev->pdev))
261 return -EIO;
262
263 pci_set_master(dev->pdev);
264
265 return i915_drm_thaw(dev);
131} 266}
132 267
133/** 268/**
@@ -268,22 +403,73 @@ i915_pci_remove(struct pci_dev *pdev)
268 drm_put_dev(dev); 403 drm_put_dev(dev);
269} 404}
270 405
271static int 406static int i915_pm_suspend(struct device *dev)
272i915_pci_suspend(struct pci_dev *pdev, pm_message_t state)
273{ 407{
274 struct drm_device *dev = pci_get_drvdata(pdev); 408 struct pci_dev *pdev = to_pci_dev(dev);
409 struct drm_device *drm_dev = pci_get_drvdata(pdev);
410 int error;
275 411
276 return i915_suspend(dev, state); 412 if (!drm_dev || !drm_dev->dev_private) {
413 dev_err(dev, "DRM not initialized, aborting suspend.\n");
414 return -ENODEV;
415 }
416
417 error = i915_drm_freeze(drm_dev);
418 if (error)
419 return error;
420
421 pci_disable_device(pdev);
422 pci_set_power_state(pdev, PCI_D3hot);
423
424 return 0;
277} 425}
278 426
279static int 427static int i915_pm_resume(struct device *dev)
280i915_pci_resume(struct pci_dev *pdev)
281{ 428{
282 struct drm_device *dev = pci_get_drvdata(pdev); 429 struct pci_dev *pdev = to_pci_dev(dev);
430 struct drm_device *drm_dev = pci_get_drvdata(pdev);
283 431
284 return i915_resume(dev); 432 return i915_resume(drm_dev);
285} 433}
286 434
435static int i915_pm_freeze(struct device *dev)
436{
437 struct pci_dev *pdev = to_pci_dev(dev);
438 struct drm_device *drm_dev = pci_get_drvdata(pdev);
439
440 if (!drm_dev || !drm_dev->dev_private) {
441 dev_err(dev, "DRM not initialized, aborting suspend.\n");
442 return -ENODEV;
443 }
444
445 return i915_drm_freeze(drm_dev);
446}
447
448static int i915_pm_thaw(struct device *dev)
449{
450 struct pci_dev *pdev = to_pci_dev(dev);
451 struct drm_device *drm_dev = pci_get_drvdata(pdev);
452
453 return i915_drm_thaw(drm_dev);
454}
455
456static int i915_pm_poweroff(struct device *dev)
457{
458 struct pci_dev *pdev = to_pci_dev(dev);
459 struct drm_device *drm_dev = pci_get_drvdata(pdev);
460
461 return i915_drm_freeze(drm_dev);
462}
463
464const struct dev_pm_ops i915_pm_ops = {
465 .suspend = i915_pm_suspend,
466 .resume = i915_pm_resume,
467 .freeze = i915_pm_freeze,
468 .thaw = i915_pm_thaw,
469 .poweroff = i915_pm_poweroff,
470 .restore = i915_pm_resume,
471};
472
287static struct vm_operations_struct i915_gem_vm_ops = { 473static struct vm_operations_struct i915_gem_vm_ops = {
288 .fault = i915_gem_fault, 474 .fault = i915_gem_fault,
289 .open = drm_gem_vm_open, 475 .open = drm_gem_vm_open,
@@ -303,8 +489,11 @@ static struct drm_driver driver = {
303 .lastclose = i915_driver_lastclose, 489 .lastclose = i915_driver_lastclose,
304 .preclose = i915_driver_preclose, 490 .preclose = i915_driver_preclose,
305 .postclose = i915_driver_postclose, 491 .postclose = i915_driver_postclose,
492
493 /* Used in place of i915_pm_ops for non-DRIVER_MODESET */
306 .suspend = i915_suspend, 494 .suspend = i915_suspend,
307 .resume = i915_resume, 495 .resume = i915_resume,
496
308 .device_is_agp = i915_driver_device_is_agp, 497 .device_is_agp = i915_driver_device_is_agp,
309 .enable_vblank = i915_enable_vblank, 498 .enable_vblank = i915_enable_vblank,
310 .disable_vblank = i915_disable_vblank, 499 .disable_vblank = i915_disable_vblank,
@@ -344,10 +533,7 @@ static struct drm_driver driver = {
344 .id_table = pciidlist, 533 .id_table = pciidlist,
345 .probe = i915_pci_probe, 534 .probe = i915_pci_probe,
346 .remove = i915_pci_remove, 535 .remove = i915_pci_remove,
347#ifdef CONFIG_PM 536 .driver.pm = &i915_pm_ops,
348 .resume = i915_pci_resume,
349 .suspend = i915_pci_suspend,
350#endif
351 }, 537 },
352 538
353 .name = DRIVER_NAME, 539 .name = DRIVER_NAME,
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index fbecac72f5bb..b99b6a841d95 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -172,9 +172,31 @@ struct drm_i915_display_funcs {
172 172
173struct intel_overlay; 173struct intel_overlay;
174 174
175struct intel_device_info {
176 u8 is_mobile : 1;
177 u8 is_i8xx : 1;
178 u8 is_i915g : 1;
179 u8 is_i9xx : 1;
180 u8 is_i945gm : 1;
181 u8 is_i965g : 1;
182 u8 is_i965gm : 1;
183 u8 is_g33 : 1;
184 u8 need_gfx_hws : 1;
185 u8 is_g4x : 1;
186 u8 is_pineview : 1;
187 u8 is_ironlake : 1;
188 u8 has_fbc : 1;
189 u8 has_rc6 : 1;
190 u8 has_pipe_cxsr : 1;
191 u8 has_hotplug : 1;
192 u8 cursor_needs_physical : 1;
193};
194
175typedef struct drm_i915_private { 195typedef struct drm_i915_private {
176 struct drm_device *dev; 196 struct drm_device *dev;
177 197
198 const struct intel_device_info *info;
199
178 int has_gem; 200 int has_gem;
179 201
180 void __iomem *regs; 202 void __iomem *regs;
@@ -232,8 +254,6 @@ typedef struct drm_i915_private {
232 int hangcheck_count; 254 int hangcheck_count;
233 uint32_t last_acthd; 255 uint32_t last_acthd;
234 256
235 bool cursor_needs_physical;
236
237 struct drm_mm vram; 257 struct drm_mm vram;
238 258
239 unsigned long cfb_size; 259 unsigned long cfb_size;
@@ -263,6 +283,7 @@ typedef struct drm_i915_private {
263 unsigned int lvds_use_ssc:1; 283 unsigned int lvds_use_ssc:1;
264 unsigned int edp_support:1; 284 unsigned int edp_support:1;
265 int lvds_ssc_freq; 285 int lvds_ssc_freq;
286 int edp_bpp;
266 287
267 struct notifier_block lid_notifier; 288 struct notifier_block lid_notifier;
268 289
@@ -287,8 +308,6 @@ typedef struct drm_i915_private {
287 u32 saveDSPACNTR; 308 u32 saveDSPACNTR;
288 u32 saveDSPBCNTR; 309 u32 saveDSPBCNTR;
289 u32 saveDSPARB; 310 u32 saveDSPARB;
290 u32 saveRENDERSTANDBY;
291 u32 savePWRCTXA;
292 u32 saveHWS; 311 u32 saveHWS;
293 u32 savePIPEACONF; 312 u32 savePIPEACONF;
294 u32 savePIPEBCONF; 313 u32 savePIPEBCONF;
@@ -474,6 +493,15 @@ typedef struct drm_i915_private {
474 struct list_head flushing_list; 493 struct list_head flushing_list;
475 494
476 /** 495 /**
496 * List of objects currently pending a GPU write flush.
497 *
498 * All elements on this list will belong to either the
499 * active_list or flushing_list, last_rendering_seqno can
500 * be used to differentiate between the two elements.
501 */
502 struct list_head gpu_write_list;
503
504 /**
477 * LRU list of objects which are not in the ringbuffer and 505 * LRU list of objects which are not in the ringbuffer and
478 * are ready to unbind, but are still in the GTT. 506 * are ready to unbind, but are still in the GTT.
479 * 507 *
@@ -561,6 +589,7 @@ typedef struct drm_i915_private {
561 u16 orig_clock; 589 u16 orig_clock;
562 int child_dev_num; 590 int child_dev_num;
563 struct child_device_config *child_dev; 591 struct child_device_config *child_dev;
592 struct drm_connector *int_lvds_connector;
564} drm_i915_private_t; 593} drm_i915_private_t;
565 594
566/** driver private structure attached to each drm_gem_object */ 595/** driver private structure attached to each drm_gem_object */
@@ -572,6 +601,8 @@ struct drm_i915_gem_object {
572 601
573 /** This object's place on the active/flushing/inactive lists */ 602 /** This object's place on the active/flushing/inactive lists */
574 struct list_head list; 603 struct list_head list;
604 /** This object's place on GPU write list */
605 struct list_head gpu_write_list;
575 606
576 /** This object's place on the fenced object LRU */ 607 /** This object's place on the fenced object LRU */
577 struct list_head fence_list; 608 struct list_head fence_list;
@@ -703,6 +734,7 @@ extern struct drm_ioctl_desc i915_ioctls[];
703extern int i915_max_ioctl; 734extern int i915_max_ioctl;
704extern unsigned int i915_fbpercrtc; 735extern unsigned int i915_fbpercrtc;
705extern unsigned int i915_powersave; 736extern unsigned int i915_powersave;
737extern unsigned int i915_lvds_downclock;
706 738
707extern void i915_save_display(struct drm_device *dev); 739extern void i915_save_display(struct drm_device *dev);
708extern void i915_restore_display(struct drm_device *dev); 740extern void i915_restore_display(struct drm_device *dev);
@@ -794,6 +826,8 @@ int i915_gem_sw_finish_ioctl(struct drm_device *dev, void *data,
794 struct drm_file *file_priv); 826 struct drm_file *file_priv);
795int i915_gem_execbuffer(struct drm_device *dev, void *data, 827int i915_gem_execbuffer(struct drm_device *dev, void *data,
796 struct drm_file *file_priv); 828 struct drm_file *file_priv);
829int i915_gem_execbuffer2(struct drm_device *dev, void *data,
830 struct drm_file *file_priv);
797int i915_gem_pin_ioctl(struct drm_device *dev, void *data, 831int i915_gem_pin_ioctl(struct drm_device *dev, void *data,
798 struct drm_file *file_priv); 832 struct drm_file *file_priv);
799int i915_gem_unpin_ioctl(struct drm_device *dev, void *data, 833int i915_gem_unpin_ioctl(struct drm_device *dev, void *data,
@@ -843,12 +877,13 @@ int i915_do_wait_request(struct drm_device *dev, uint32_t seqno, int interruptib
843int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf); 877int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf);
844int i915_gem_object_set_to_gtt_domain(struct drm_gem_object *obj, 878int i915_gem_object_set_to_gtt_domain(struct drm_gem_object *obj,
845 int write); 879 int write);
880int i915_gem_object_set_to_display_plane(struct drm_gem_object *obj);
846int i915_gem_attach_phys_object(struct drm_device *dev, 881int i915_gem_attach_phys_object(struct drm_device *dev,
847 struct drm_gem_object *obj, int id); 882 struct drm_gem_object *obj, int id);
848void i915_gem_detach_phys_object(struct drm_device *dev, 883void i915_gem_detach_phys_object(struct drm_device *dev,
849 struct drm_gem_object *obj); 884 struct drm_gem_object *obj);
850void i915_gem_free_all_phys_object(struct drm_device *dev); 885void i915_gem_free_all_phys_object(struct drm_device *dev);
851int i915_gem_object_get_pages(struct drm_gem_object *obj); 886int i915_gem_object_get_pages(struct drm_gem_object *obj, gfp_t gfpmask);
852void i915_gem_object_put_pages(struct drm_gem_object *obj); 887void i915_gem_object_put_pages(struct drm_gem_object *obj);
853void i915_gem_release(struct drm_device * dev, struct drm_file *file_priv); 888void i915_gem_release(struct drm_device * dev, struct drm_file *file_priv);
854void i915_gem_object_flush_write_domain(struct drm_gem_object *obj); 889void i915_gem_object_flush_write_domain(struct drm_gem_object *obj);
@@ -860,6 +895,9 @@ void i915_gem_shrinker_exit(void);
860void i915_gem_detect_bit_6_swizzle(struct drm_device *dev); 895void i915_gem_detect_bit_6_swizzle(struct drm_device *dev);
861void i915_gem_object_do_bit_17_swizzle(struct drm_gem_object *obj); 896void i915_gem_object_do_bit_17_swizzle(struct drm_gem_object *obj);
862void i915_gem_object_save_bit_17_swizzle(struct drm_gem_object *obj); 897void i915_gem_object_save_bit_17_swizzle(struct drm_gem_object *obj);
898bool i915_tiling_ok(struct drm_device *dev, int stride, int size,
899 int tiling_mode);
900bool i915_obj_fenceable(struct drm_device *dev, struct drm_gem_object *obj);
863 901
864/* i915_gem_debug.c */ 902/* i915_gem_debug.c */
865void i915_gem_dump_object(struct drm_gem_object *obj, int len, 903void i915_gem_dump_object(struct drm_gem_object *obj, int len,
@@ -982,67 +1020,33 @@ extern void g4x_disable_fbc(struct drm_device *dev);
982extern int i915_wrap_ring(struct drm_device * dev); 1020extern int i915_wrap_ring(struct drm_device * dev);
983extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller); 1021extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
984 1022
985#define IS_I830(dev) ((dev)->pci_device == 0x3577) 1023#define INTEL_INFO(dev) (((struct drm_i915_private *) (dev)->dev_private)->info)
986#define IS_845G(dev) ((dev)->pci_device == 0x2562) 1024
987#define IS_I85X(dev) ((dev)->pci_device == 0x3582) 1025#define IS_I830(dev) ((dev)->pci_device == 0x3577)
988#define IS_I865G(dev) ((dev)->pci_device == 0x2572) 1026#define IS_845G(dev) ((dev)->pci_device == 0x2562)
989#define IS_I8XX(dev) (IS_I830(dev) || IS_845G(dev) || IS_I85X(dev) || IS_I865G(dev)) 1027#define IS_I85X(dev) ((dev)->pci_device == 0x3582)
990 1028#define IS_I865G(dev) ((dev)->pci_device == 0x2572)
991#define IS_I915G(dev) ((dev)->pci_device == 0x2582 || (dev)->pci_device == 0x258a) 1029#define IS_I8XX(dev) (INTEL_INFO(dev)->is_i8xx)
992#define IS_I915GM(dev) ((dev)->pci_device == 0x2592) 1030#define IS_I915G(dev) (INTEL_INFO(dev)->is_i915g)
993#define IS_I945G(dev) ((dev)->pci_device == 0x2772) 1031#define IS_I915GM(dev) ((dev)->pci_device == 0x2592)
994#define IS_I945GM(dev) ((dev)->pci_device == 0x27A2 ||\ 1032#define IS_I945G(dev) ((dev)->pci_device == 0x2772)
995 (dev)->pci_device == 0x27AE) 1033#define IS_I945GM(dev) (INTEL_INFO(dev)->is_i945gm)
996#define IS_I965G(dev) ((dev)->pci_device == 0x2972 || \ 1034#define IS_I965G(dev) (INTEL_INFO(dev)->is_i965g)
997 (dev)->pci_device == 0x2982 || \ 1035#define IS_I965GM(dev) (INTEL_INFO(dev)->is_i965gm)
998 (dev)->pci_device == 0x2992 || \ 1036#define IS_GM45(dev) ((dev)->pci_device == 0x2A42)
999 (dev)->pci_device == 0x29A2 || \ 1037#define IS_G4X(dev) (INTEL_INFO(dev)->is_g4x)
1000 (dev)->pci_device == 0x2A02 || \ 1038#define IS_PINEVIEW_G(dev) ((dev)->pci_device == 0xa001)
1001 (dev)->pci_device == 0x2A12 || \ 1039#define IS_PINEVIEW_M(dev) ((dev)->pci_device == 0xa011)
1002 (dev)->pci_device == 0x2A42 || \ 1040#define IS_PINEVIEW(dev) (INTEL_INFO(dev)->is_pineview)
1003 (dev)->pci_device == 0x2E02 || \ 1041#define IS_G33(dev) (INTEL_INFO(dev)->is_g33)
1004 (dev)->pci_device == 0x2E12 || \
1005 (dev)->pci_device == 0x2E22 || \
1006 (dev)->pci_device == 0x2E32 || \
1007 (dev)->pci_device == 0x2E42 || \
1008 (dev)->pci_device == 0x0042 || \
1009 (dev)->pci_device == 0x0046)
1010
1011#define IS_I965GM(dev) ((dev)->pci_device == 0x2A02 || \
1012 (dev)->pci_device == 0x2A12)
1013
1014#define IS_GM45(dev) ((dev)->pci_device == 0x2A42)
1015
1016#define IS_G4X(dev) ((dev)->pci_device == 0x2E02 || \
1017 (dev)->pci_device == 0x2E12 || \
1018 (dev)->pci_device == 0x2E22 || \
1019 (dev)->pci_device == 0x2E32 || \
1020 (dev)->pci_device == 0x2E42 || \
1021 IS_GM45(dev))
1022
1023#define IS_PINEVIEW_G(dev) ((dev)->pci_device == 0xa001)
1024#define IS_PINEVIEW_M(dev) ((dev)->pci_device == 0xa011)
1025#define IS_PINEVIEW(dev) (IS_PINEVIEW_G(dev) || IS_PINEVIEW_M(dev))
1026
1027#define IS_G33(dev) ((dev)->pci_device == 0x29C2 || \
1028 (dev)->pci_device == 0x29B2 || \
1029 (dev)->pci_device == 0x29D2 || \
1030 (IS_PINEVIEW(dev)))
1031
1032#define IS_IRONLAKE_D(dev) ((dev)->pci_device == 0x0042) 1042#define IS_IRONLAKE_D(dev) ((dev)->pci_device == 0x0042)
1033#define IS_IRONLAKE_M(dev) ((dev)->pci_device == 0x0046) 1043#define IS_IRONLAKE_M(dev) ((dev)->pci_device == 0x0046)
1034#define IS_IRONLAKE(dev) (IS_IRONLAKE_D(dev) || IS_IRONLAKE_M(dev)) 1044#define IS_IRONLAKE(dev) (INTEL_INFO(dev)->is_ironlake)
1035 1045#define IS_I9XX(dev) (INTEL_INFO(dev)->is_i9xx)
1036#define IS_I9XX(dev) (IS_I915G(dev) || IS_I915GM(dev) || IS_I945G(dev) || \ 1046#define IS_MOBILE(dev) (INTEL_INFO(dev)->is_mobile)
1037 IS_I945GM(dev) || IS_I965G(dev) || IS_G33(dev) || \
1038 IS_IRONLAKE(dev))
1039 1047
1040#define IS_MOBILE(dev) (IS_I830(dev) || IS_I85X(dev) || IS_I915GM(dev) || \ 1048#define I915_NEED_GFX_HWS(dev) (INTEL_INFO(dev)->need_gfx_hws)
1041 IS_I945GM(dev) || IS_I965GM(dev) || IS_GM45(dev) || \
1042 IS_PINEVIEW(dev) || IS_IRONLAKE_M(dev))
1043 1049
1044#define I915_NEED_GFX_HWS(dev) (IS_G33(dev) || IS_GM45(dev) || IS_G4X(dev) || \
1045 IS_IRONLAKE(dev))
1046/* With the 945 and later, Y tiling got adjusted so that it was 32 128-byte 1050/* With the 945 and later, Y tiling got adjusted so that it was 32 128-byte
1047 * rows, which changed the alignment requirements and fence programming. 1051 * rows, which changed the alignment requirements and fence programming.
1048 */ 1052 */
@@ -1054,17 +1058,14 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
1054#define SUPPORTS_EDP(dev) (IS_IRONLAKE_M(dev)) 1058#define SUPPORTS_EDP(dev) (IS_IRONLAKE_M(dev))
1055#define SUPPORTS_TV(dev) (IS_I9XX(dev) && IS_MOBILE(dev) && \ 1059#define SUPPORTS_TV(dev) (IS_I9XX(dev) && IS_MOBILE(dev) && \
1056 !IS_IRONLAKE(dev) && !IS_PINEVIEW(dev)) 1060 !IS_IRONLAKE(dev) && !IS_PINEVIEW(dev))
1057#define I915_HAS_HOTPLUG(dev) (IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev) || IS_I965G(dev)) 1061#define I915_HAS_HOTPLUG(dev) (INTEL_INFO(dev)->has_hotplug)
1058/* dsparb controlled by hw only */ 1062/* dsparb controlled by hw only */
1059#define DSPARB_HWCONTROL(dev) (IS_G4X(dev) || IS_IRONLAKE(dev)) 1063#define DSPARB_HWCONTROL(dev) (IS_G4X(dev) || IS_IRONLAKE(dev))
1060 1064
1061#define HAS_FW_BLC(dev) (IS_I9XX(dev) || IS_G4X(dev) || IS_IRONLAKE(dev)) 1065#define HAS_FW_BLC(dev) (IS_I9XX(dev) || IS_G4X(dev) || IS_IRONLAKE(dev))
1062#define HAS_PIPE_CXSR(dev) (IS_G4X(dev) || IS_IRONLAKE(dev)) 1066#define HAS_PIPE_CXSR(dev) (INTEL_INFO(dev)->has_pipe_cxsr)
1063#define I915_HAS_FBC(dev) (IS_MOBILE(dev) && \ 1067#define I915_HAS_FBC(dev) (INTEL_INFO(dev)->has_fbc)
1064 (IS_I9XX(dev) || IS_GM45(dev)) && \ 1068#define I915_HAS_RC6(dev) (INTEL_INFO(dev)->has_rc6)
1065 !IS_PINEVIEW(dev) && \
1066 !IS_IRONLAKE(dev))
1067#define I915_HAS_RC6(dev) (IS_I965GM(dev) || IS_GM45(dev) || IS_IRONLAKE_M(dev))
1068 1069
1069#define PRIMARY_RINGBUFFER_SIZE (128*1024) 1070#define PRIMARY_RINGBUFFER_SIZE (128*1024)
1070 1071
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 8c463cf2050a..ec8a0d7ffa39 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -277,7 +277,7 @@ i915_gem_shmem_pread_fast(struct drm_device *dev, struct drm_gem_object *obj,
277 277
278 mutex_lock(&dev->struct_mutex); 278 mutex_lock(&dev->struct_mutex);
279 279
280 ret = i915_gem_object_get_pages(obj); 280 ret = i915_gem_object_get_pages(obj, 0);
281 if (ret != 0) 281 if (ret != 0)
282 goto fail_unlock; 282 goto fail_unlock;
283 283
@@ -321,40 +321,24 @@ fail_unlock:
321 return ret; 321 return ret;
322} 322}
323 323
324static inline gfp_t
325i915_gem_object_get_page_gfp_mask (struct drm_gem_object *obj)
326{
327 return mapping_gfp_mask(obj->filp->f_path.dentry->d_inode->i_mapping);
328}
329
330static inline void
331i915_gem_object_set_page_gfp_mask (struct drm_gem_object *obj, gfp_t gfp)
332{
333 mapping_set_gfp_mask(obj->filp->f_path.dentry->d_inode->i_mapping, gfp);
334}
335
336static int 324static int
337i915_gem_object_get_pages_or_evict(struct drm_gem_object *obj) 325i915_gem_object_get_pages_or_evict(struct drm_gem_object *obj)
338{ 326{
339 int ret; 327 int ret;
340 328
341 ret = i915_gem_object_get_pages(obj); 329 ret = i915_gem_object_get_pages(obj, __GFP_NORETRY | __GFP_NOWARN);
342 330
343 /* If we've insufficient memory to map in the pages, attempt 331 /* If we've insufficient memory to map in the pages, attempt
344 * to make some space by throwing out some old buffers. 332 * to make some space by throwing out some old buffers.
345 */ 333 */
346 if (ret == -ENOMEM) { 334 if (ret == -ENOMEM) {
347 struct drm_device *dev = obj->dev; 335 struct drm_device *dev = obj->dev;
348 gfp_t gfp;
349 336
350 ret = i915_gem_evict_something(dev, obj->size); 337 ret = i915_gem_evict_something(dev, obj->size);
351 if (ret) 338 if (ret)
352 return ret; 339 return ret;
353 340
354 gfp = i915_gem_object_get_page_gfp_mask(obj); 341 ret = i915_gem_object_get_pages(obj, 0);
355 i915_gem_object_set_page_gfp_mask(obj, gfp & ~__GFP_NORETRY);
356 ret = i915_gem_object_get_pages(obj);
357 i915_gem_object_set_page_gfp_mask (obj, gfp);
358 } 342 }
359 343
360 return ret; 344 return ret;
@@ -790,7 +774,7 @@ i915_gem_shmem_pwrite_fast(struct drm_device *dev, struct drm_gem_object *obj,
790 774
791 mutex_lock(&dev->struct_mutex); 775 mutex_lock(&dev->struct_mutex);
792 776
793 ret = i915_gem_object_get_pages(obj); 777 ret = i915_gem_object_get_pages(obj, 0);
794 if (ret != 0) 778 if (ret != 0)
795 goto fail_unlock; 779 goto fail_unlock;
796 780
@@ -1568,6 +1552,8 @@ i915_gem_object_move_to_inactive(struct drm_gem_object *obj)
1568 else 1552 else
1569 list_move_tail(&obj_priv->list, &dev_priv->mm.inactive_list); 1553 list_move_tail(&obj_priv->list, &dev_priv->mm.inactive_list);
1570 1554
1555 BUG_ON(!list_empty(&obj_priv->gpu_write_list));
1556
1571 obj_priv->last_rendering_seqno = 0; 1557 obj_priv->last_rendering_seqno = 0;
1572 if (obj_priv->active) { 1558 if (obj_priv->active) {
1573 obj_priv->active = 0; 1559 obj_priv->active = 0;
@@ -1638,7 +1624,8 @@ i915_add_request(struct drm_device *dev, struct drm_file *file_priv,
1638 struct drm_i915_gem_object *obj_priv, *next; 1624 struct drm_i915_gem_object *obj_priv, *next;
1639 1625
1640 list_for_each_entry_safe(obj_priv, next, 1626 list_for_each_entry_safe(obj_priv, next,
1641 &dev_priv->mm.flushing_list, list) { 1627 &dev_priv->mm.gpu_write_list,
1628 gpu_write_list) {
1642 struct drm_gem_object *obj = obj_priv->obj; 1629 struct drm_gem_object *obj = obj_priv->obj;
1643 1630
1644 if ((obj->write_domain & flush_domains) == 1631 if ((obj->write_domain & flush_domains) ==
@@ -1646,6 +1633,7 @@ i915_add_request(struct drm_device *dev, struct drm_file *file_priv,
1646 uint32_t old_write_domain = obj->write_domain; 1633 uint32_t old_write_domain = obj->write_domain;
1647 1634
1648 obj->write_domain = 0; 1635 obj->write_domain = 0;
1636 list_del_init(&obj_priv->gpu_write_list);
1649 i915_gem_object_move_to_active(obj, seqno); 1637 i915_gem_object_move_to_active(obj, seqno);
1650 1638
1651 trace_i915_gem_object_change_domain(obj, 1639 trace_i915_gem_object_change_domain(obj,
@@ -2021,9 +2009,6 @@ i915_gem_object_unbind(struct drm_gem_object *obj)
2021 /* blow away mappings if mapped through GTT */ 2009 /* blow away mappings if mapped through GTT */
2022 i915_gem_release_mmap(obj); 2010 i915_gem_release_mmap(obj);
2023 2011
2024 if (obj_priv->fence_reg != I915_FENCE_REG_NONE)
2025 i915_gem_clear_fence_reg(obj);
2026
2027 /* Move the object to the CPU domain to ensure that 2012 /* Move the object to the CPU domain to ensure that
2028 * any possible CPU writes while it's not in the GTT 2013 * any possible CPU writes while it's not in the GTT
2029 * are flushed when we go to remap it. This will 2014 * are flushed when we go to remap it. This will
@@ -2039,6 +2024,10 @@ i915_gem_object_unbind(struct drm_gem_object *obj)
2039 2024
2040 BUG_ON(obj_priv->active); 2025 BUG_ON(obj_priv->active);
2041 2026
2027 /* release the fence reg _after_ flushing */
2028 if (obj_priv->fence_reg != I915_FENCE_REG_NONE)
2029 i915_gem_clear_fence_reg(obj);
2030
2042 if (obj_priv->agp_mem != NULL) { 2031 if (obj_priv->agp_mem != NULL) {
2043 drm_unbind_agp(obj_priv->agp_mem); 2032 drm_unbind_agp(obj_priv->agp_mem);
2044 drm_free_agp(obj_priv->agp_mem, obj->size / PAGE_SIZE); 2033 drm_free_agp(obj_priv->agp_mem, obj->size / PAGE_SIZE);
@@ -2099,8 +2088,8 @@ static int
2099i915_gem_evict_everything(struct drm_device *dev) 2088i915_gem_evict_everything(struct drm_device *dev)
2100{ 2089{
2101 drm_i915_private_t *dev_priv = dev->dev_private; 2090 drm_i915_private_t *dev_priv = dev->dev_private;
2102 uint32_t seqno;
2103 int ret; 2091 int ret;
2092 uint32_t seqno;
2104 bool lists_empty; 2093 bool lists_empty;
2105 2094
2106 spin_lock(&dev_priv->mm.active_list_lock); 2095 spin_lock(&dev_priv->mm.active_list_lock);
@@ -2122,6 +2111,8 @@ i915_gem_evict_everything(struct drm_device *dev)
2122 if (ret) 2111 if (ret)
2123 return ret; 2112 return ret;
2124 2113
2114 BUG_ON(!list_empty(&dev_priv->mm.flushing_list));
2115
2125 ret = i915_gem_evict_from_inactive_list(dev); 2116 ret = i915_gem_evict_from_inactive_list(dev);
2126 if (ret) 2117 if (ret)
2127 return ret; 2118 return ret;
@@ -2229,7 +2220,8 @@ i915_gem_evict_something(struct drm_device *dev, int min_size)
2229} 2220}
2230 2221
2231int 2222int
2232i915_gem_object_get_pages(struct drm_gem_object *obj) 2223i915_gem_object_get_pages(struct drm_gem_object *obj,
2224 gfp_t gfpmask)
2233{ 2225{
2234 struct drm_i915_gem_object *obj_priv = obj->driver_private; 2226 struct drm_i915_gem_object *obj_priv = obj->driver_private;
2235 int page_count, i; 2227 int page_count, i;
@@ -2255,7 +2247,10 @@ i915_gem_object_get_pages(struct drm_gem_object *obj)
2255 inode = obj->filp->f_path.dentry->d_inode; 2247 inode = obj->filp->f_path.dentry->d_inode;
2256 mapping = inode->i_mapping; 2248 mapping = inode->i_mapping;
2257 for (i = 0; i < page_count; i++) { 2249 for (i = 0; i < page_count; i++) {
2258 page = read_mapping_page(mapping, i, NULL); 2250 page = read_cache_page_gfp(mapping, i,
2251 mapping_gfp_mask (mapping) |
2252 __GFP_COLD |
2253 gfpmask);
2259 if (IS_ERR(page)) { 2254 if (IS_ERR(page)) {
2260 ret = PTR_ERR(page); 2255 ret = PTR_ERR(page);
2261 i915_gem_object_put_pages(obj); 2256 i915_gem_object_put_pages(obj);
@@ -2578,12 +2573,9 @@ i915_gem_object_bind_to_gtt(struct drm_gem_object *obj, unsigned alignment)
2578 drm_i915_private_t *dev_priv = dev->dev_private; 2573 drm_i915_private_t *dev_priv = dev->dev_private;
2579 struct drm_i915_gem_object *obj_priv = obj->driver_private; 2574 struct drm_i915_gem_object *obj_priv = obj->driver_private;
2580 struct drm_mm_node *free_space; 2575 struct drm_mm_node *free_space;
2581 bool retry_alloc = false; 2576 gfp_t gfpmask = __GFP_NORETRY | __GFP_NOWARN;
2582 int ret; 2577 int ret;
2583 2578
2584 if (dev_priv->mm.suspended)
2585 return -EBUSY;
2586
2587 if (obj_priv->madv != I915_MADV_WILLNEED) { 2579 if (obj_priv->madv != I915_MADV_WILLNEED) {
2588 DRM_ERROR("Attempting to bind a purgeable object\n"); 2580 DRM_ERROR("Attempting to bind a purgeable object\n");
2589 return -EINVAL; 2581 return -EINVAL;
@@ -2625,15 +2617,7 @@ i915_gem_object_bind_to_gtt(struct drm_gem_object *obj, unsigned alignment)
2625 DRM_INFO("Binding object of size %zd at 0x%08x\n", 2617 DRM_INFO("Binding object of size %zd at 0x%08x\n",
2626 obj->size, obj_priv->gtt_offset); 2618 obj->size, obj_priv->gtt_offset);
2627#endif 2619#endif
2628 if (retry_alloc) { 2620 ret = i915_gem_object_get_pages(obj, gfpmask);
2629 i915_gem_object_set_page_gfp_mask (obj,
2630 i915_gem_object_get_page_gfp_mask (obj) & ~__GFP_NORETRY);
2631 }
2632 ret = i915_gem_object_get_pages(obj);
2633 if (retry_alloc) {
2634 i915_gem_object_set_page_gfp_mask (obj,
2635 i915_gem_object_get_page_gfp_mask (obj) | __GFP_NORETRY);
2636 }
2637 if (ret) { 2621 if (ret) {
2638 drm_mm_put_block(obj_priv->gtt_space); 2622 drm_mm_put_block(obj_priv->gtt_space);
2639 obj_priv->gtt_space = NULL; 2623 obj_priv->gtt_space = NULL;
@@ -2643,9 +2627,9 @@ i915_gem_object_bind_to_gtt(struct drm_gem_object *obj, unsigned alignment)
2643 ret = i915_gem_evict_something(dev, obj->size); 2627 ret = i915_gem_evict_something(dev, obj->size);
2644 if (ret) { 2628 if (ret) {
2645 /* now try to shrink everyone else */ 2629 /* now try to shrink everyone else */
2646 if (! retry_alloc) { 2630 if (gfpmask) {
2647 retry_alloc = true; 2631 gfpmask = 0;
2648 goto search_free; 2632 goto search_free;
2649 } 2633 }
2650 2634
2651 return ret; 2635 return ret;
@@ -2723,7 +2707,7 @@ i915_gem_object_flush_gpu_write_domain(struct drm_gem_object *obj)
2723 old_write_domain = obj->write_domain; 2707 old_write_domain = obj->write_domain;
2724 i915_gem_flush(dev, 0, obj->write_domain); 2708 i915_gem_flush(dev, 0, obj->write_domain);
2725 seqno = i915_add_request(dev, NULL, obj->write_domain); 2709 seqno = i915_add_request(dev, NULL, obj->write_domain);
2726 obj->write_domain = 0; 2710 BUG_ON(obj->write_domain);
2727 i915_gem_object_move_to_active(obj, seqno); 2711 i915_gem_object_move_to_active(obj, seqno);
2728 2712
2729 trace_i915_gem_object_change_domain(obj, 2713 trace_i915_gem_object_change_domain(obj,
@@ -2839,6 +2823,57 @@ i915_gem_object_set_to_gtt_domain(struct drm_gem_object *obj, int write)
2839 return 0; 2823 return 0;
2840} 2824}
2841 2825
2826/*
2827 * Prepare buffer for display plane. Use uninterruptible for possible flush
2828 * wait, as in modesetting process we're not supposed to be interrupted.
2829 */
2830int
2831i915_gem_object_set_to_display_plane(struct drm_gem_object *obj)
2832{
2833 struct drm_device *dev = obj->dev;
2834 struct drm_i915_gem_object *obj_priv = obj->driver_private;
2835 uint32_t old_write_domain, old_read_domains;
2836 int ret;
2837
2838 /* Not valid to be called on unbound objects. */
2839 if (obj_priv->gtt_space == NULL)
2840 return -EINVAL;
2841
2842 i915_gem_object_flush_gpu_write_domain(obj);
2843
2844 /* Wait on any GPU rendering and flushing to occur. */
2845 if (obj_priv->active) {
2846#if WATCH_BUF
2847 DRM_INFO("%s: object %p wait for seqno %08x\n",
2848 __func__, obj, obj_priv->last_rendering_seqno);
2849#endif
2850 ret = i915_do_wait_request(dev, obj_priv->last_rendering_seqno, 0);
2851 if (ret != 0)
2852 return ret;
2853 }
2854
2855 old_write_domain = obj->write_domain;
2856 old_read_domains = obj->read_domains;
2857
2858 obj->read_domains &= I915_GEM_DOMAIN_GTT;
2859
2860 i915_gem_object_flush_cpu_write_domain(obj);
2861
2862 /* It should now be out of any other write domains, and we can update
2863 * the domain values for our changes.
2864 */
2865 BUG_ON((obj->write_domain & ~I915_GEM_DOMAIN_GTT) != 0);
2866 obj->read_domains |= I915_GEM_DOMAIN_GTT;
2867 obj->write_domain = I915_GEM_DOMAIN_GTT;
2868 obj_priv->dirty = 1;
2869
2870 trace_i915_gem_object_change_domain(obj,
2871 old_read_domains,
2872 old_write_domain);
2873
2874 return 0;
2875}
2876
2842/** 2877/**
2843 * Moves a single object to the CPU read, and possibly write domain. 2878 * Moves a single object to the CPU read, and possibly write domain.
2844 * 2879 *
@@ -3198,7 +3233,7 @@ i915_gem_object_set_cpu_read_domain_range(struct drm_gem_object *obj,
3198static int 3233static int
3199i915_gem_object_pin_and_relocate(struct drm_gem_object *obj, 3234i915_gem_object_pin_and_relocate(struct drm_gem_object *obj,
3200 struct drm_file *file_priv, 3235 struct drm_file *file_priv,
3201 struct drm_i915_gem_exec_object *entry, 3236 struct drm_i915_gem_exec_object2 *entry,
3202 struct drm_i915_gem_relocation_entry *relocs) 3237 struct drm_i915_gem_relocation_entry *relocs)
3203{ 3238{
3204 struct drm_device *dev = obj->dev; 3239 struct drm_device *dev = obj->dev;
@@ -3206,12 +3241,35 @@ i915_gem_object_pin_and_relocate(struct drm_gem_object *obj,
3206 struct drm_i915_gem_object *obj_priv = obj->driver_private; 3241 struct drm_i915_gem_object *obj_priv = obj->driver_private;
3207 int i, ret; 3242 int i, ret;
3208 void __iomem *reloc_page; 3243 void __iomem *reloc_page;
3244 bool need_fence;
3245
3246 need_fence = entry->flags & EXEC_OBJECT_NEEDS_FENCE &&
3247 obj_priv->tiling_mode != I915_TILING_NONE;
3248
3249 /* Check fence reg constraints and rebind if necessary */
3250 if (need_fence && !i915_obj_fenceable(dev, obj))
3251 i915_gem_object_unbind(obj);
3209 3252
3210 /* Choose the GTT offset for our buffer and put it there. */ 3253 /* Choose the GTT offset for our buffer and put it there. */
3211 ret = i915_gem_object_pin(obj, (uint32_t) entry->alignment); 3254 ret = i915_gem_object_pin(obj, (uint32_t) entry->alignment);
3212 if (ret) 3255 if (ret)
3213 return ret; 3256 return ret;
3214 3257
3258 /*
3259 * Pre-965 chips need a fence register set up in order to
3260 * properly handle blits to/from tiled surfaces.
3261 */
3262 if (need_fence) {
3263 ret = i915_gem_object_get_fence_reg(obj);
3264 if (ret != 0) {
3265 if (ret != -EBUSY && ret != -ERESTARTSYS)
3266 DRM_ERROR("Failure to install fence: %d\n",
3267 ret);
3268 i915_gem_object_unpin(obj);
3269 return ret;
3270 }
3271 }
3272
3215 entry->offset = obj_priv->gtt_offset; 3273 entry->offset = obj_priv->gtt_offset;
3216 3274
3217 /* Apply the relocations, using the GTT aperture to avoid cache 3275 /* Apply the relocations, using the GTT aperture to avoid cache
@@ -3373,7 +3431,7 @@ i915_gem_object_pin_and_relocate(struct drm_gem_object *obj,
3373 */ 3431 */
3374static int 3432static int
3375i915_dispatch_gem_execbuffer(struct drm_device *dev, 3433i915_dispatch_gem_execbuffer(struct drm_device *dev,
3376 struct drm_i915_gem_execbuffer *exec, 3434 struct drm_i915_gem_execbuffer2 *exec,
3377 struct drm_clip_rect *cliprects, 3435 struct drm_clip_rect *cliprects,
3378 uint64_t exec_offset) 3436 uint64_t exec_offset)
3379{ 3437{
@@ -3463,7 +3521,7 @@ i915_gem_ring_throttle(struct drm_device *dev, struct drm_file *file_priv)
3463} 3521}
3464 3522
3465static int 3523static int
3466i915_gem_get_relocs_from_user(struct drm_i915_gem_exec_object *exec_list, 3524i915_gem_get_relocs_from_user(struct drm_i915_gem_exec_object2 *exec_list,
3467 uint32_t buffer_count, 3525 uint32_t buffer_count,
3468 struct drm_i915_gem_relocation_entry **relocs) 3526 struct drm_i915_gem_relocation_entry **relocs)
3469{ 3527{
@@ -3478,8 +3536,10 @@ i915_gem_get_relocs_from_user(struct drm_i915_gem_exec_object *exec_list,
3478 } 3536 }
3479 3537
3480 *relocs = drm_calloc_large(reloc_count, sizeof(**relocs)); 3538 *relocs = drm_calloc_large(reloc_count, sizeof(**relocs));
3481 if (*relocs == NULL) 3539 if (*relocs == NULL) {
3540 DRM_ERROR("failed to alloc relocs, count %d\n", reloc_count);
3482 return -ENOMEM; 3541 return -ENOMEM;
3542 }
3483 3543
3484 for (i = 0; i < buffer_count; i++) { 3544 for (i = 0; i < buffer_count; i++) {
3485 struct drm_i915_gem_relocation_entry __user *user_relocs; 3545 struct drm_i915_gem_relocation_entry __user *user_relocs;
@@ -3503,13 +3563,16 @@ i915_gem_get_relocs_from_user(struct drm_i915_gem_exec_object *exec_list,
3503} 3563}
3504 3564
3505static int 3565static int
3506i915_gem_put_relocs_to_user(struct drm_i915_gem_exec_object *exec_list, 3566i915_gem_put_relocs_to_user(struct drm_i915_gem_exec_object2 *exec_list,
3507 uint32_t buffer_count, 3567 uint32_t buffer_count,
3508 struct drm_i915_gem_relocation_entry *relocs) 3568 struct drm_i915_gem_relocation_entry *relocs)
3509{ 3569{
3510 uint32_t reloc_count = 0, i; 3570 uint32_t reloc_count = 0, i;
3511 int ret = 0; 3571 int ret = 0;
3512 3572
3573 if (relocs == NULL)
3574 return 0;
3575
3513 for (i = 0; i < buffer_count; i++) { 3576 for (i = 0; i < buffer_count; i++) {
3514 struct drm_i915_gem_relocation_entry __user *user_relocs; 3577 struct drm_i915_gem_relocation_entry __user *user_relocs;
3515 int unwritten; 3578 int unwritten;
@@ -3536,7 +3599,7 @@ err:
3536} 3599}
3537 3600
3538static int 3601static int
3539i915_gem_check_execbuffer (struct drm_i915_gem_execbuffer *exec, 3602i915_gem_check_execbuffer (struct drm_i915_gem_execbuffer2 *exec,
3540 uint64_t exec_offset) 3603 uint64_t exec_offset)
3541{ 3604{
3542 uint32_t exec_start, exec_len; 3605 uint32_t exec_start, exec_len;
@@ -3589,18 +3652,18 @@ i915_gem_wait_for_pending_flip(struct drm_device *dev,
3589} 3652}
3590 3653
3591int 3654int
3592i915_gem_execbuffer(struct drm_device *dev, void *data, 3655i915_gem_do_execbuffer(struct drm_device *dev, void *data,
3593 struct drm_file *file_priv) 3656 struct drm_file *file_priv,
3657 struct drm_i915_gem_execbuffer2 *args,
3658 struct drm_i915_gem_exec_object2 *exec_list)
3594{ 3659{
3595 drm_i915_private_t *dev_priv = dev->dev_private; 3660 drm_i915_private_t *dev_priv = dev->dev_private;
3596 struct drm_i915_gem_execbuffer *args = data;
3597 struct drm_i915_gem_exec_object *exec_list = NULL;
3598 struct drm_gem_object **object_list = NULL; 3661 struct drm_gem_object **object_list = NULL;
3599 struct drm_gem_object *batch_obj; 3662 struct drm_gem_object *batch_obj;
3600 struct drm_i915_gem_object *obj_priv; 3663 struct drm_i915_gem_object *obj_priv;
3601 struct drm_clip_rect *cliprects = NULL; 3664 struct drm_clip_rect *cliprects = NULL;
3602 struct drm_i915_gem_relocation_entry *relocs; 3665 struct drm_i915_gem_relocation_entry *relocs = NULL;
3603 int ret, ret2, i, pinned = 0; 3666 int ret = 0, ret2, i, pinned = 0;
3604 uint64_t exec_offset; 3667 uint64_t exec_offset;
3605 uint32_t seqno, flush_domains, reloc_index; 3668 uint32_t seqno, flush_domains, reloc_index;
3606 int pin_tries, flips; 3669 int pin_tries, flips;
@@ -3614,31 +3677,21 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
3614 DRM_ERROR("execbuf with %d buffers\n", args->buffer_count); 3677 DRM_ERROR("execbuf with %d buffers\n", args->buffer_count);
3615 return -EINVAL; 3678 return -EINVAL;
3616 } 3679 }
3617 /* Copy in the exec list from userland */
3618 exec_list = drm_malloc_ab(sizeof(*exec_list), args->buffer_count);
3619 object_list = drm_malloc_ab(sizeof(*object_list), args->buffer_count); 3680 object_list = drm_malloc_ab(sizeof(*object_list), args->buffer_count);
3620 if (exec_list == NULL || object_list == NULL) { 3681 if (object_list == NULL) {
3621 DRM_ERROR("Failed to allocate exec or object list " 3682 DRM_ERROR("Failed to allocate object list for %d buffers\n",
3622 "for %d buffers\n",
3623 args->buffer_count); 3683 args->buffer_count);
3624 ret = -ENOMEM; 3684 ret = -ENOMEM;
3625 goto pre_mutex_err; 3685 goto pre_mutex_err;
3626 } 3686 }
3627 ret = copy_from_user(exec_list,
3628 (struct drm_i915_relocation_entry __user *)
3629 (uintptr_t) args->buffers_ptr,
3630 sizeof(*exec_list) * args->buffer_count);
3631 if (ret != 0) {
3632 DRM_ERROR("copy %d exec entries failed %d\n",
3633 args->buffer_count, ret);
3634 goto pre_mutex_err;
3635 }
3636 3687
3637 if (args->num_cliprects != 0) { 3688 if (args->num_cliprects != 0) {
3638 cliprects = kcalloc(args->num_cliprects, sizeof(*cliprects), 3689 cliprects = kcalloc(args->num_cliprects, sizeof(*cliprects),
3639 GFP_KERNEL); 3690 GFP_KERNEL);
3640 if (cliprects == NULL) 3691 if (cliprects == NULL) {
3692 ret = -ENOMEM;
3641 goto pre_mutex_err; 3693 goto pre_mutex_err;
3694 }
3642 3695
3643 ret = copy_from_user(cliprects, 3696 ret = copy_from_user(cliprects,
3644 (struct drm_clip_rect __user *) 3697 (struct drm_clip_rect __user *)
@@ -3680,6 +3733,8 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
3680 if (object_list[i] == NULL) { 3733 if (object_list[i] == NULL) {
3681 DRM_ERROR("Invalid object handle %d at index %d\n", 3734 DRM_ERROR("Invalid object handle %d at index %d\n",
3682 exec_list[i].handle, i); 3735 exec_list[i].handle, i);
3736 /* prevent error path from reading uninitialized data */
3737 args->buffer_count = i + 1;
3683 ret = -EBADF; 3738 ret = -EBADF;
3684 goto err; 3739 goto err;
3685 } 3740 }
@@ -3688,6 +3743,8 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
3688 if (obj_priv->in_execbuffer) { 3743 if (obj_priv->in_execbuffer) {
3689 DRM_ERROR("Object %p appears more than once in object list\n", 3744 DRM_ERROR("Object %p appears more than once in object list\n",
3690 object_list[i]); 3745 object_list[i]);
3746 /* prevent error path from reading uninitialized data */
3747 args->buffer_count = i + 1;
3691 ret = -EBADF; 3748 ret = -EBADF;
3692 goto err; 3749 goto err;
3693 } 3750 }
@@ -3801,16 +3858,23 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
3801 i915_gem_flush(dev, 3858 i915_gem_flush(dev,
3802 dev->invalidate_domains, 3859 dev->invalidate_domains,
3803 dev->flush_domains); 3860 dev->flush_domains);
3804 if (dev->flush_domains) 3861 if (dev->flush_domains & I915_GEM_GPU_DOMAINS)
3805 (void)i915_add_request(dev, file_priv, 3862 (void)i915_add_request(dev, file_priv,
3806 dev->flush_domains); 3863 dev->flush_domains);
3807 } 3864 }
3808 3865
3809 for (i = 0; i < args->buffer_count; i++) { 3866 for (i = 0; i < args->buffer_count; i++) {
3810 struct drm_gem_object *obj = object_list[i]; 3867 struct drm_gem_object *obj = object_list[i];
3868 struct drm_i915_gem_object *obj_priv = obj->driver_private;
3811 uint32_t old_write_domain = obj->write_domain; 3869 uint32_t old_write_domain = obj->write_domain;
3812 3870
3813 obj->write_domain = obj->pending_write_domain; 3871 obj->write_domain = obj->pending_write_domain;
3872 if (obj->write_domain)
3873 list_move_tail(&obj_priv->gpu_write_list,
3874 &dev_priv->mm.gpu_write_list);
3875 else
3876 list_del_init(&obj_priv->gpu_write_list);
3877
3814 trace_i915_gem_object_change_domain(obj, 3878 trace_i915_gem_object_change_domain(obj,
3815 obj->read_domains, 3879 obj->read_domains,
3816 old_write_domain); 3880 old_write_domain);
@@ -3884,8 +3948,101 @@ err:
3884 3948
3885 mutex_unlock(&dev->struct_mutex); 3949 mutex_unlock(&dev->struct_mutex);
3886 3950
3951pre_mutex_err:
3952 /* Copy the updated relocations out regardless of current error
3953 * state. Failure to update the relocs would mean that the next
3954 * time userland calls execbuf, it would do so with presumed offset
3955 * state that didn't match the actual object state.
3956 */
3957 ret2 = i915_gem_put_relocs_to_user(exec_list, args->buffer_count,
3958 relocs);
3959 if (ret2 != 0) {
3960 DRM_ERROR("Failed to copy relocations back out: %d\n", ret2);
3961
3962 if (ret == 0)
3963 ret = ret2;
3964 }
3965
3966 drm_free_large(object_list);
3967 kfree(cliprects);
3968
3969 return ret;
3970}
3971
3972/*
3973 * Legacy execbuffer just creates an exec2 list from the original exec object
3974 * list array and passes it to the real function.
3975 */
3976int
3977i915_gem_execbuffer(struct drm_device *dev, void *data,
3978 struct drm_file *file_priv)
3979{
3980 struct drm_i915_gem_execbuffer *args = data;
3981 struct drm_i915_gem_execbuffer2 exec2;
3982 struct drm_i915_gem_exec_object *exec_list = NULL;
3983 struct drm_i915_gem_exec_object2 *exec2_list = NULL;
3984 int ret, i;
3985
3986#if WATCH_EXEC
3987 DRM_INFO("buffers_ptr %d buffer_count %d len %08x\n",
3988 (int) args->buffers_ptr, args->buffer_count, args->batch_len);
3989#endif
3990
3991 if (args->buffer_count < 1) {
3992 DRM_ERROR("execbuf with %d buffers\n", args->buffer_count);
3993 return -EINVAL;
3994 }
3995
3996 /* Copy in the exec list from userland */
3997 exec_list = drm_malloc_ab(sizeof(*exec_list), args->buffer_count);
3998 exec2_list = drm_malloc_ab(sizeof(*exec2_list), args->buffer_count);
3999 if (exec_list == NULL || exec2_list == NULL) {
4000 DRM_ERROR("Failed to allocate exec list for %d buffers\n",
4001 args->buffer_count);
4002 drm_free_large(exec_list);
4003 drm_free_large(exec2_list);
4004 return -ENOMEM;
4005 }
4006 ret = copy_from_user(exec_list,
4007 (struct drm_i915_relocation_entry __user *)
4008 (uintptr_t) args->buffers_ptr,
4009 sizeof(*exec_list) * args->buffer_count);
4010 if (ret != 0) {
4011 DRM_ERROR("copy %d exec entries failed %d\n",
4012 args->buffer_count, ret);
4013 drm_free_large(exec_list);
4014 drm_free_large(exec2_list);
4015 return -EFAULT;
4016 }
4017
4018 for (i = 0; i < args->buffer_count; i++) {
4019 exec2_list[i].handle = exec_list[i].handle;
4020 exec2_list[i].relocation_count = exec_list[i].relocation_count;
4021 exec2_list[i].relocs_ptr = exec_list[i].relocs_ptr;
4022 exec2_list[i].alignment = exec_list[i].alignment;
4023 exec2_list[i].offset = exec_list[i].offset;
4024 if (!IS_I965G(dev))
4025 exec2_list[i].flags = EXEC_OBJECT_NEEDS_FENCE;
4026 else
4027 exec2_list[i].flags = 0;
4028 }
4029
4030 exec2.buffers_ptr = args->buffers_ptr;
4031 exec2.buffer_count = args->buffer_count;
4032 exec2.batch_start_offset = args->batch_start_offset;
4033 exec2.batch_len = args->batch_len;
4034 exec2.DR1 = args->DR1;
4035 exec2.DR4 = args->DR4;
4036 exec2.num_cliprects = args->num_cliprects;
4037 exec2.cliprects_ptr = args->cliprects_ptr;
4038 exec2.flags = 0;
4039
4040 ret = i915_gem_do_execbuffer(dev, data, file_priv, &exec2, exec2_list);
3887 if (!ret) { 4041 if (!ret) {
3888 /* Copy the new buffer offsets back to the user's exec list. */ 4042 /* Copy the new buffer offsets back to the user's exec list. */
4043 for (i = 0; i < args->buffer_count; i++)
4044 exec_list[i].offset = exec2_list[i].offset;
4045 /* ... and back out to userspace */
3889 ret = copy_to_user((struct drm_i915_relocation_entry __user *) 4046 ret = copy_to_user((struct drm_i915_relocation_entry __user *)
3890 (uintptr_t) args->buffers_ptr, 4047 (uintptr_t) args->buffers_ptr,
3891 exec_list, 4048 exec_list,
@@ -3898,25 +4055,62 @@ err:
3898 } 4055 }
3899 } 4056 }
3900 4057
3901 /* Copy the updated relocations out regardless of current error 4058 drm_free_large(exec_list);
3902 * state. Failure to update the relocs would mean that the next 4059 drm_free_large(exec2_list);
3903 * time userland calls execbuf, it would do so with presumed offset 4060 return ret;
3904 * state that didn't match the actual object state. 4061}
3905 */
3906 ret2 = i915_gem_put_relocs_to_user(exec_list, args->buffer_count,
3907 relocs);
3908 if (ret2 != 0) {
3909 DRM_ERROR("Failed to copy relocations back out: %d\n", ret2);
3910 4062
3911 if (ret == 0) 4063int
3912 ret = ret2; 4064i915_gem_execbuffer2(struct drm_device *dev, void *data,
4065 struct drm_file *file_priv)
4066{
4067 struct drm_i915_gem_execbuffer2 *args = data;
4068 struct drm_i915_gem_exec_object2 *exec2_list = NULL;
4069 int ret;
4070
4071#if WATCH_EXEC
4072 DRM_INFO("buffers_ptr %d buffer_count %d len %08x\n",
4073 (int) args->buffers_ptr, args->buffer_count, args->batch_len);
4074#endif
4075
4076 if (args->buffer_count < 1) {
4077 DRM_ERROR("execbuf2 with %d buffers\n", args->buffer_count);
4078 return -EINVAL;
3913 } 4079 }
3914 4080
3915pre_mutex_err: 4081 exec2_list = drm_malloc_ab(sizeof(*exec2_list), args->buffer_count);
3916 drm_free_large(object_list); 4082 if (exec2_list == NULL) {
3917 drm_free_large(exec_list); 4083 DRM_ERROR("Failed to allocate exec list for %d buffers\n",
3918 kfree(cliprects); 4084 args->buffer_count);
4085 return -ENOMEM;
4086 }
4087 ret = copy_from_user(exec2_list,
4088 (struct drm_i915_relocation_entry __user *)
4089 (uintptr_t) args->buffers_ptr,
4090 sizeof(*exec2_list) * args->buffer_count);
4091 if (ret != 0) {
4092 DRM_ERROR("copy %d exec entries failed %d\n",
4093 args->buffer_count, ret);
4094 drm_free_large(exec2_list);
4095 return -EFAULT;
4096 }
4097
4098 ret = i915_gem_do_execbuffer(dev, data, file_priv, args, exec2_list);
4099 if (!ret) {
4100 /* Copy the new buffer offsets back to the user's exec list. */
4101 ret = copy_to_user((struct drm_i915_relocation_entry __user *)
4102 (uintptr_t) args->buffers_ptr,
4103 exec2_list,
4104 sizeof(*exec2_list) * args->buffer_count);
4105 if (ret) {
4106 ret = -EFAULT;
4107 DRM_ERROR("failed to copy %d exec entries "
4108 "back to user (%d)\n",
4109 args->buffer_count, ret);
4110 }
4111 }
3919 4112
4113 drm_free_large(exec2_list);
3920 return ret; 4114 return ret;
3921} 4115}
3922 4116
@@ -3933,19 +4127,7 @@ i915_gem_object_pin(struct drm_gem_object *obj, uint32_t alignment)
3933 if (ret) 4127 if (ret)
3934 return ret; 4128 return ret;
3935 } 4129 }
3936 /* 4130
3937 * Pre-965 chips need a fence register set up in order to
3938 * properly handle tiled surfaces.
3939 */
3940 if (!IS_I965G(dev) && obj_priv->tiling_mode != I915_TILING_NONE) {
3941 ret = i915_gem_object_get_fence_reg(obj);
3942 if (ret != 0) {
3943 if (ret != -EBUSY && ret != -ERESTARTSYS)
3944 DRM_ERROR("Failure to install fence: %d\n",
3945 ret);
3946 return ret;
3947 }
3948 }
3949 obj_priv->pin_count++; 4131 obj_priv->pin_count++;
3950 4132
3951 /* If the object is not active and not pending a flush, 4133 /* If the object is not active and not pending a flush,
@@ -4203,6 +4385,7 @@ int i915_gem_init_object(struct drm_gem_object *obj)
4203 obj_priv->obj = obj; 4385 obj_priv->obj = obj;
4204 obj_priv->fence_reg = I915_FENCE_REG_NONE; 4386 obj_priv->fence_reg = I915_FENCE_REG_NONE;
4205 INIT_LIST_HEAD(&obj_priv->list); 4387 INIT_LIST_HEAD(&obj_priv->list);
4388 INIT_LIST_HEAD(&obj_priv->gpu_write_list);
4206 INIT_LIST_HEAD(&obj_priv->fence_list); 4389 INIT_LIST_HEAD(&obj_priv->fence_list);
4207 obj_priv->madv = I915_MADV_WILLNEED; 4390 obj_priv->madv = I915_MADV_WILLNEED;
4208 4391
@@ -4654,6 +4837,7 @@ i915_gem_load(struct drm_device *dev)
4654 spin_lock_init(&dev_priv->mm.active_list_lock); 4837 spin_lock_init(&dev_priv->mm.active_list_lock);
4655 INIT_LIST_HEAD(&dev_priv->mm.active_list); 4838 INIT_LIST_HEAD(&dev_priv->mm.active_list);
4656 INIT_LIST_HEAD(&dev_priv->mm.flushing_list); 4839 INIT_LIST_HEAD(&dev_priv->mm.flushing_list);
4840 INIT_LIST_HEAD(&dev_priv->mm.gpu_write_list);
4657 INIT_LIST_HEAD(&dev_priv->mm.inactive_list); 4841 INIT_LIST_HEAD(&dev_priv->mm.inactive_list);
4658 INIT_LIST_HEAD(&dev_priv->mm.request_list); 4842 INIT_LIST_HEAD(&dev_priv->mm.request_list);
4659 INIT_LIST_HEAD(&dev_priv->mm.fence_list); 4843 INIT_LIST_HEAD(&dev_priv->mm.fence_list);
@@ -4708,7 +4892,7 @@ int i915_gem_init_phys_object(struct drm_device *dev,
4708 4892
4709 phys_obj->id = id; 4893 phys_obj->id = id;
4710 4894
4711 phys_obj->handle = drm_pci_alloc(dev, size, 0, 0xffffffff); 4895 phys_obj->handle = drm_pci_alloc(dev, size, 0);
4712 if (!phys_obj->handle) { 4896 if (!phys_obj->handle) {
4713 ret = -ENOMEM; 4897 ret = -ENOMEM;
4714 goto kfree_obj; 4898 goto kfree_obj;
@@ -4766,7 +4950,7 @@ void i915_gem_detach_phys_object(struct drm_device *dev,
4766 if (!obj_priv->phys_obj) 4950 if (!obj_priv->phys_obj)
4767 return; 4951 return;
4768 4952
4769 ret = i915_gem_object_get_pages(obj); 4953 ret = i915_gem_object_get_pages(obj, 0);
4770 if (ret) 4954 if (ret)
4771 goto out; 4955 goto out;
4772 4956
@@ -4824,7 +5008,7 @@ i915_gem_attach_phys_object(struct drm_device *dev,
4824 obj_priv->phys_obj = dev_priv->mm.phys_objs[id - 1]; 5008 obj_priv->phys_obj = dev_priv->mm.phys_objs[id - 1];
4825 obj_priv->phys_obj->cur_obj = obj; 5009 obj_priv->phys_obj->cur_obj = obj;
4826 5010
4827 ret = i915_gem_object_get_pages(obj); 5011 ret = i915_gem_object_get_pages(obj, 0);
4828 if (ret) { 5012 if (ret) {
4829 DRM_ERROR("failed to get page list\n"); 5013 DRM_ERROR("failed to get page list\n");
4830 goto out; 5014 goto out;
diff --git a/drivers/gpu/drm/i915/i915_gem_tiling.c b/drivers/gpu/drm/i915/i915_gem_tiling.c
index 30d6af6c09bb..df278b2685bf 100644
--- a/drivers/gpu/drm/i915/i915_gem_tiling.c
+++ b/drivers/gpu/drm/i915/i915_gem_tiling.c
@@ -304,35 +304,39 @@ i915_gem_detect_bit_6_swizzle(struct drm_device *dev)
304 304
305 305
306/** 306/**
307 * Returns the size of the fence for a tiled object of the given size. 307 * Returns whether an object is currently fenceable. If not, it may need
308 * to be unbound and have its pitch adjusted.
308 */ 309 */
309static int 310bool
310i915_get_fence_size(struct drm_device *dev, int size) 311i915_obj_fenceable(struct drm_device *dev, struct drm_gem_object *obj)
311{ 312{
312 int i; 313 struct drm_i915_gem_object *obj_priv = obj->driver_private;
313 int start;
314 314
315 if (IS_I965G(dev)) { 315 if (IS_I965G(dev)) {
316 /* The 965 can have fences at any page boundary. */ 316 /* The 965 can have fences at any page boundary. */
317 return ALIGN(size, 4096); 317 if (obj->size & 4095)
318 return false;
319 return true;
320 } else if (IS_I9XX(dev)) {
321 if (obj_priv->gtt_offset & ~I915_FENCE_START_MASK)
322 return false;
318 } else { 323 } else {
319 /* Align the size to a power of two greater than the smallest 324 if (obj_priv->gtt_offset & ~I830_FENCE_START_MASK)
320 * fence size. 325 return false;
321 */ 326 }
322 if (IS_I9XX(dev))
323 start = 1024 * 1024;
324 else
325 start = 512 * 1024;
326 327
327 for (i = start; i < size; i <<= 1) 328 /* Power of two sized... */
328 ; 329 if (obj->size & (obj->size - 1))
330 return false;
329 331
330 return i; 332 /* Objects must be size aligned as well */
331 } 333 if (obj_priv->gtt_offset & (obj->size - 1))
334 return false;
335 return true;
332} 336}
333 337
334/* Check pitch constriants for all chips & tiling formats */ 338/* Check pitch constriants for all chips & tiling formats */
335static bool 339bool
336i915_tiling_ok(struct drm_device *dev, int stride, int size, int tiling_mode) 340i915_tiling_ok(struct drm_device *dev, int stride, int size, int tiling_mode)
337{ 341{
338 int tile_width; 342 int tile_width;
@@ -384,12 +388,6 @@ i915_tiling_ok(struct drm_device *dev, int stride, int size, int tiling_mode)
384 if (stride & (stride - 1)) 388 if (stride & (stride - 1))
385 return false; 389 return false;
386 390
387 /* We don't 0handle the aperture area covered by the fence being bigger
388 * than the object size.
389 */
390 if (i915_get_fence_size(dev, size) != size)
391 return false;
392
393 return true; 391 return true;
394} 392}
395 393
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 85f4c5de97e2..a17d6bdfe63e 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -274,7 +274,6 @@ irqreturn_t ironlake_irq_handler(struct drm_device *dev)
274 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; 274 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
275 int ret = IRQ_NONE; 275 int ret = IRQ_NONE;
276 u32 de_iir, gt_iir, de_ier, pch_iir; 276 u32 de_iir, gt_iir, de_ier, pch_iir;
277 u32 new_de_iir, new_gt_iir, new_pch_iir;
278 struct drm_i915_master_private *master_priv; 277 struct drm_i915_master_private *master_priv;
279 278
280 /* disable master interrupt before clearing iir */ 279 /* disable master interrupt before clearing iir */
@@ -286,49 +285,58 @@ irqreturn_t ironlake_irq_handler(struct drm_device *dev)
286 gt_iir = I915_READ(GTIIR); 285 gt_iir = I915_READ(GTIIR);
287 pch_iir = I915_READ(SDEIIR); 286 pch_iir = I915_READ(SDEIIR);
288 287
289 for (;;) { 288 if (de_iir == 0 && gt_iir == 0 && pch_iir == 0)
290 if (de_iir == 0 && gt_iir == 0 && pch_iir == 0) 289 goto done;
291 break;
292 290
293 ret = IRQ_HANDLED; 291 ret = IRQ_HANDLED;
294 292
295 /* should clear PCH hotplug event before clear CPU irq */ 293 if (dev->primary->master) {
296 I915_WRITE(SDEIIR, pch_iir); 294 master_priv = dev->primary->master->driver_priv;
297 new_pch_iir = I915_READ(SDEIIR); 295 if (master_priv->sarea_priv)
296 master_priv->sarea_priv->last_dispatch =
297 READ_BREADCRUMB(dev_priv);
298 }
298 299
299 I915_WRITE(DEIIR, de_iir); 300 if (gt_iir & GT_USER_INTERRUPT) {
300 new_de_iir = I915_READ(DEIIR); 301 u32 seqno = i915_get_gem_seqno(dev);
301 I915_WRITE(GTIIR, gt_iir); 302 dev_priv->mm.irq_gem_seqno = seqno;
302 new_gt_iir = I915_READ(GTIIR); 303 trace_i915_gem_request_complete(dev, seqno);
304 DRM_WAKEUP(&dev_priv->irq_queue);
305 dev_priv->hangcheck_count = 0;
306 mod_timer(&dev_priv->hangcheck_timer, jiffies + DRM_I915_HANGCHECK_PERIOD);
307 }
303 308
304 if (dev->primary->master) { 309 if (de_iir & DE_GSE)
305 master_priv = dev->primary->master->driver_priv; 310 ironlake_opregion_gse_intr(dev);
306 if (master_priv->sarea_priv)
307 master_priv->sarea_priv->last_dispatch =
308 READ_BREADCRUMB(dev_priv);
309 }
310 311
311 if (gt_iir & GT_USER_INTERRUPT) { 312 if (de_iir & DE_PLANEA_FLIP_DONE) {
312 u32 seqno = i915_get_gem_seqno(dev); 313 intel_prepare_page_flip(dev, 0);
313 dev_priv->mm.irq_gem_seqno = seqno; 314 intel_finish_page_flip(dev, 0);
314 trace_i915_gem_request_complete(dev, seqno); 315 }
315 DRM_WAKEUP(&dev_priv->irq_queue);
316 }
317 316
318 if (de_iir & DE_GSE) 317 if (de_iir & DE_PLANEB_FLIP_DONE) {
319 ironlake_opregion_gse_intr(dev); 318 intel_prepare_page_flip(dev, 1);
319 intel_finish_page_flip(dev, 1);
320 }
320 321
321 /* check event from PCH */ 322 if (de_iir & DE_PIPEA_VBLANK)
322 if ((de_iir & DE_PCH_EVENT) && 323 drm_handle_vblank(dev, 0);
323 (pch_iir & SDE_HOTPLUG_MASK)) {
324 queue_work(dev_priv->wq, &dev_priv->hotplug_work);
325 }
326 324
327 de_iir = new_de_iir; 325 if (de_iir & DE_PIPEB_VBLANK)
328 gt_iir = new_gt_iir; 326 drm_handle_vblank(dev, 1);
329 pch_iir = new_pch_iir; 327
328 /* check event from PCH */
329 if ((de_iir & DE_PCH_EVENT) &&
330 (pch_iir & SDE_HOTPLUG_MASK)) {
331 queue_work(dev_priv->wq, &dev_priv->hotplug_work);
330 } 332 }
331 333
334 /* should clear PCH hotplug event before clear CPU irq */
335 I915_WRITE(SDEIIR, pch_iir);
336 I915_WRITE(GTIIR, gt_iir);
337 I915_WRITE(DEIIR, de_iir);
338
339done:
332 I915_WRITE(DEIER, de_ier); 340 I915_WRITE(DEIER, de_ier);
333 (void)I915_READ(DEIER); 341 (void)I915_READ(DEIER);
334 342
@@ -852,11 +860,11 @@ int i915_enable_vblank(struct drm_device *dev, int pipe)
852 if (!(pipeconf & PIPEACONF_ENABLE)) 860 if (!(pipeconf & PIPEACONF_ENABLE))
853 return -EINVAL; 861 return -EINVAL;
854 862
855 if (IS_IRONLAKE(dev))
856 return 0;
857
858 spin_lock_irqsave(&dev_priv->user_irq_lock, irqflags); 863 spin_lock_irqsave(&dev_priv->user_irq_lock, irqflags);
859 if (IS_I965G(dev)) 864 if (IS_IRONLAKE(dev))
865 ironlake_enable_display_irq(dev_priv, (pipe == 0) ?
866 DE_PIPEA_VBLANK: DE_PIPEB_VBLANK);
867 else if (IS_I965G(dev))
860 i915_enable_pipestat(dev_priv, pipe, 868 i915_enable_pipestat(dev_priv, pipe,
861 PIPE_START_VBLANK_INTERRUPT_ENABLE); 869 PIPE_START_VBLANK_INTERRUPT_ENABLE);
862 else 870 else
@@ -874,13 +882,14 @@ void i915_disable_vblank(struct drm_device *dev, int pipe)
874 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; 882 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
875 unsigned long irqflags; 883 unsigned long irqflags;
876 884
877 if (IS_IRONLAKE(dev))
878 return;
879
880 spin_lock_irqsave(&dev_priv->user_irq_lock, irqflags); 885 spin_lock_irqsave(&dev_priv->user_irq_lock, irqflags);
881 i915_disable_pipestat(dev_priv, pipe, 886 if (IS_IRONLAKE(dev))
882 PIPE_VBLANK_INTERRUPT_ENABLE | 887 ironlake_disable_display_irq(dev_priv, (pipe == 0) ?
883 PIPE_START_VBLANK_INTERRUPT_ENABLE); 888 DE_PIPEA_VBLANK: DE_PIPEB_VBLANK);
889 else
890 i915_disable_pipestat(dev_priv, pipe,
891 PIPE_VBLANK_INTERRUPT_ENABLE |
892 PIPE_START_VBLANK_INTERRUPT_ENABLE);
884 spin_unlock_irqrestore(&dev_priv->user_irq_lock, irqflags); 893 spin_unlock_irqrestore(&dev_priv->user_irq_lock, irqflags);
885} 894}
886 895
@@ -1023,13 +1032,14 @@ static int ironlake_irq_postinstall(struct drm_device *dev)
1023{ 1032{
1024 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; 1033 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
1025 /* enable kind of interrupts always enabled */ 1034 /* enable kind of interrupts always enabled */
1026 u32 display_mask = DE_MASTER_IRQ_CONTROL | DE_GSE | DE_PCH_EVENT; 1035 u32 display_mask = DE_MASTER_IRQ_CONTROL | DE_GSE | DE_PCH_EVENT |
1036 DE_PLANEA_FLIP_DONE | DE_PLANEB_FLIP_DONE;
1027 u32 render_mask = GT_USER_INTERRUPT; 1037 u32 render_mask = GT_USER_INTERRUPT;
1028 u32 hotplug_mask = SDE_CRT_HOTPLUG | SDE_PORTB_HOTPLUG | 1038 u32 hotplug_mask = SDE_CRT_HOTPLUG | SDE_PORTB_HOTPLUG |
1029 SDE_PORTC_HOTPLUG | SDE_PORTD_HOTPLUG; 1039 SDE_PORTC_HOTPLUG | SDE_PORTD_HOTPLUG;
1030 1040
1031 dev_priv->irq_mask_reg = ~display_mask; 1041 dev_priv->irq_mask_reg = ~display_mask;
1032 dev_priv->de_irq_enable_reg = display_mask; 1042 dev_priv->de_irq_enable_reg = display_mask | DE_PIPEA_VBLANK | DE_PIPEB_VBLANK;
1033 1043
1034 /* should always can generate irq */ 1044 /* should always can generate irq */
1035 I915_WRITE(DEIIR, I915_READ(DEIIR)); 1045 I915_WRITE(DEIIR, I915_READ(DEIIR));
@@ -1084,6 +1094,10 @@ void i915_driver_irq_preinstall(struct drm_device * dev)
1084 (void) I915_READ(IER); 1094 (void) I915_READ(IER);
1085} 1095}
1086 1096
1097/*
1098 * Must be called after intel_modeset_init or hotplug interrupts won't be
1099 * enabled correctly.
1100 */
1087int i915_driver_irq_postinstall(struct drm_device *dev) 1101int i915_driver_irq_postinstall(struct drm_device *dev)
1088{ 1102{
1089 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; 1103 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
@@ -1106,19 +1120,23 @@ int i915_driver_irq_postinstall(struct drm_device *dev)
1106 if (I915_HAS_HOTPLUG(dev)) { 1120 if (I915_HAS_HOTPLUG(dev)) {
1107 u32 hotplug_en = I915_READ(PORT_HOTPLUG_EN); 1121 u32 hotplug_en = I915_READ(PORT_HOTPLUG_EN);
1108 1122
1109 /* Leave other bits alone */ 1123 /* Note HDMI and DP share bits */
1110 hotplug_en |= HOTPLUG_EN_MASK; 1124 if (dev_priv->hotplug_supported_mask & HDMIB_HOTPLUG_INT_STATUS)
1125 hotplug_en |= HDMIB_HOTPLUG_INT_EN;
1126 if (dev_priv->hotplug_supported_mask & HDMIC_HOTPLUG_INT_STATUS)
1127 hotplug_en |= HDMIC_HOTPLUG_INT_EN;
1128 if (dev_priv->hotplug_supported_mask & HDMID_HOTPLUG_INT_STATUS)
1129 hotplug_en |= HDMID_HOTPLUG_INT_EN;
1130 if (dev_priv->hotplug_supported_mask & SDVOC_HOTPLUG_INT_STATUS)
1131 hotplug_en |= SDVOC_HOTPLUG_INT_EN;
1132 if (dev_priv->hotplug_supported_mask & SDVOB_HOTPLUG_INT_STATUS)
1133 hotplug_en |= SDVOB_HOTPLUG_INT_EN;
1134 if (dev_priv->hotplug_supported_mask & CRT_HOTPLUG_INT_STATUS)
1135 hotplug_en |= CRT_HOTPLUG_INT_EN;
1136 /* Ignore TV since it's buggy */
1137
1111 I915_WRITE(PORT_HOTPLUG_EN, hotplug_en); 1138 I915_WRITE(PORT_HOTPLUG_EN, hotplug_en);
1112 1139
1113 dev_priv->hotplug_supported_mask = CRT_HOTPLUG_INT_STATUS |
1114 TV_HOTPLUG_INT_STATUS | SDVOC_HOTPLUG_INT_STATUS |
1115 SDVOB_HOTPLUG_INT_STATUS;
1116 if (IS_G4X(dev)) {
1117 dev_priv->hotplug_supported_mask |=
1118 HDMIB_HOTPLUG_INT_STATUS |
1119 HDMIC_HOTPLUG_INT_STATUS |
1120 HDMID_HOTPLUG_INT_STATUS;
1121 }
1122 /* Enable in IER... */ 1140 /* Enable in IER... */
1123 enable_mask |= I915_DISPLAY_PORT_INTERRUPT; 1141 enable_mask |= I915_DISPLAY_PORT_INTERRUPT;
1124 /* and unmask in IMR */ 1142 /* and unmask in IMR */
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 974b3cf70618..ab1bd2d3d3b6 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -338,6 +338,7 @@
338#define FBC_CTL_PERIODIC (1<<30) 338#define FBC_CTL_PERIODIC (1<<30)
339#define FBC_CTL_INTERVAL_SHIFT (16) 339#define FBC_CTL_INTERVAL_SHIFT (16)
340#define FBC_CTL_UNCOMPRESSIBLE (1<<14) 340#define FBC_CTL_UNCOMPRESSIBLE (1<<14)
341#define FBC_C3_IDLE (1<<13)
341#define FBC_CTL_STRIDE_SHIFT (5) 342#define FBC_CTL_STRIDE_SHIFT (5)
342#define FBC_CTL_FENCENO (1<<0) 343#define FBC_CTL_FENCENO (1<<0)
343#define FBC_COMMAND 0x0320c 344#define FBC_COMMAND 0x0320c
@@ -879,13 +880,6 @@
879#define CRT_HOTPLUG_DETECT_VOLTAGE_475MV (1 << 2) 880#define CRT_HOTPLUG_DETECT_VOLTAGE_475MV (1 << 2)
880#define CRT_HOTPLUG_MASK (0x3fc) /* Bits 9-2 */ 881#define CRT_HOTPLUG_MASK (0x3fc) /* Bits 9-2 */
881#define CRT_FORCE_HOTPLUG_MASK 0xfffffe1f 882#define CRT_FORCE_HOTPLUG_MASK 0xfffffe1f
882#define HOTPLUG_EN_MASK (HDMIB_HOTPLUG_INT_EN | \
883 HDMIC_HOTPLUG_INT_EN | \
884 HDMID_HOTPLUG_INT_EN | \
885 SDVOB_HOTPLUG_INT_EN | \
886 SDVOC_HOTPLUG_INT_EN | \
887 CRT_HOTPLUG_INT_EN)
888
889 883
890#define PORT_HOTPLUG_STAT 0x61114 884#define PORT_HOTPLUG_STAT 0x61114
891#define HDMIB_HOTPLUG_INT_STATUS (1 << 29) 885#define HDMIB_HOTPLUG_INT_STATUS (1 << 29)
@@ -982,6 +976,8 @@
982#define LVDS_PORT_EN (1 << 31) 976#define LVDS_PORT_EN (1 << 31)
983/* Selects pipe B for LVDS data. Must be set on pre-965. */ 977/* Selects pipe B for LVDS data. Must be set on pre-965. */
984#define LVDS_PIPEB_SELECT (1 << 30) 978#define LVDS_PIPEB_SELECT (1 << 30)
979/* LVDS dithering flag on 965/g4x platform */
980#define LVDS_ENABLE_DITHER (1 << 25)
985/* Enable border for unscaled (or aspect-scaled) display */ 981/* Enable border for unscaled (or aspect-scaled) display */
986#define LVDS_BORDER_ENABLE (1 << 15) 982#define LVDS_BORDER_ENABLE (1 << 15)
987/* 983/*
@@ -1751,6 +1747,8 @@
1751 1747
1752/* Display & cursor control */ 1748/* Display & cursor control */
1753 1749
1750/* dithering flag on Ironlake */
1751#define PIPE_ENABLE_DITHER (1 << 4)
1754/* Pipe A */ 1752/* Pipe A */
1755#define PIPEADSL 0x70000 1753#define PIPEADSL 0x70000
1756#define PIPEACONF 0x70008 1754#define PIPEACONF 0x70008
@@ -1818,7 +1816,7 @@
1818#define DSPFW_PLANEB_SHIFT 8 1816#define DSPFW_PLANEB_SHIFT 8
1819#define DSPFW2 0x70038 1817#define DSPFW2 0x70038
1820#define DSPFW_CURSORA_MASK 0x00003f00 1818#define DSPFW_CURSORA_MASK 0x00003f00
1821#define DSPFW_CURSORA_SHIFT 16 1819#define DSPFW_CURSORA_SHIFT 8
1822#define DSPFW3 0x7003c 1820#define DSPFW3 0x7003c
1823#define DSPFW_HPLL_SR_EN (1<<31) 1821#define DSPFW_HPLL_SR_EN (1<<31)
1824#define DSPFW_CURSOR_SR_SHIFT 24 1822#define DSPFW_CURSOR_SR_SHIFT 24
diff --git a/drivers/gpu/drm/i915/i915_suspend.c b/drivers/gpu/drm/i915/i915_suspend.c
index d5ebb00a9d49..a3b90c9561dc 100644
--- a/drivers/gpu/drm/i915/i915_suspend.c
+++ b/drivers/gpu/drm/i915/i915_suspend.c
@@ -732,12 +732,6 @@ int i915_save_state(struct drm_device *dev)
732 732
733 pci_read_config_byte(dev->pdev, LBB, &dev_priv->saveLBB); 733 pci_read_config_byte(dev->pdev, LBB, &dev_priv->saveLBB);
734 734
735 /* Render Standby */
736 if (I915_HAS_RC6(dev)) {
737 dev_priv->saveRENDERSTANDBY = I915_READ(MCHBAR_RENDER_STANDBY);
738 dev_priv->savePWRCTXA = I915_READ(PWRCTXA);
739 }
740
741 /* Hardware status page */ 735 /* Hardware status page */
742 dev_priv->saveHWS = I915_READ(HWS_PGA); 736 dev_priv->saveHWS = I915_READ(HWS_PGA);
743 737
@@ -793,12 +787,6 @@ int i915_restore_state(struct drm_device *dev)
793 787
794 pci_write_config_byte(dev->pdev, LBB, dev_priv->saveLBB); 788 pci_write_config_byte(dev->pdev, LBB, dev_priv->saveLBB);
795 789
796 /* Render Standby */
797 if (I915_HAS_RC6(dev)) {
798 I915_WRITE(MCHBAR_RENDER_STANDBY, dev_priv->saveRENDERSTANDBY);
799 I915_WRITE(PWRCTXA, dev_priv->savePWRCTXA);
800 }
801
802 /* Hardware status page */ 790 /* Hardware status page */
803 I915_WRITE(HWS_PGA, dev_priv->saveHWS); 791 I915_WRITE(HWS_PGA, dev_priv->saveHWS);
804 792
diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
index f27567747580..15fbc1b5a83e 100644
--- a/drivers/gpu/drm/i915/intel_bios.c
+++ b/drivers/gpu/drm/i915/intel_bios.c
@@ -33,6 +33,8 @@
33#define SLAVE_ADDR1 0x70 33#define SLAVE_ADDR1 0x70
34#define SLAVE_ADDR2 0x72 34#define SLAVE_ADDR2 0x72
35 35
36static int panel_type;
37
36static void * 38static void *
37find_section(struct bdb_header *bdb, int section_id) 39find_section(struct bdb_header *bdb, int section_id)
38{ 40{
@@ -128,6 +130,7 @@ parse_lfp_panel_data(struct drm_i915_private *dev_priv,
128 dev_priv->lvds_dither = lvds_options->pixel_dither; 130 dev_priv->lvds_dither = lvds_options->pixel_dither;
129 if (lvds_options->panel_type == 0xff) 131 if (lvds_options->panel_type == 0xff)
130 return; 132 return;
133 panel_type = lvds_options->panel_type;
131 134
132 lvds_lfp_data = find_section(bdb, BDB_LVDS_LFP_DATA); 135 lvds_lfp_data = find_section(bdb, BDB_LVDS_LFP_DATA);
133 if (!lvds_lfp_data) 136 if (!lvds_lfp_data)
@@ -197,7 +200,8 @@ parse_lfp_panel_data(struct drm_i915_private *dev_priv,
197 memset(temp_mode, 0, sizeof(*temp_mode)); 200 memset(temp_mode, 0, sizeof(*temp_mode));
198 } 201 }
199 kfree(temp_mode); 202 kfree(temp_mode);
200 if (temp_downclock < panel_fixed_mode->clock) { 203 if (temp_downclock < panel_fixed_mode->clock &&
204 i915_lvds_downclock) {
201 dev_priv->lvds_downclock_avail = 1; 205 dev_priv->lvds_downclock_avail = 1;
202 dev_priv->lvds_downclock = temp_downclock; 206 dev_priv->lvds_downclock = temp_downclock;
203 DRM_DEBUG_KMS("LVDS downclock is found in VBT. ", 207 DRM_DEBUG_KMS("LVDS downclock is found in VBT. ",
@@ -405,6 +409,34 @@ parse_driver_features(struct drm_i915_private *dev_priv,
405} 409}
406 410
407static void 411static void
412parse_edp(struct drm_i915_private *dev_priv, struct bdb_header *bdb)
413{
414 struct bdb_edp *edp;
415
416 edp = find_section(bdb, BDB_EDP);
417 if (!edp) {
418 if (SUPPORTS_EDP(dev_priv->dev) && dev_priv->edp_support) {
419 DRM_DEBUG_KMS("No eDP BDB found but eDP panel supported,\
420 assume 18bpp panel color depth.\n");
421 dev_priv->edp_bpp = 18;
422 }
423 return;
424 }
425
426 switch ((edp->color_depth >> (panel_type * 2)) & 3) {
427 case EDP_18BPP:
428 dev_priv->edp_bpp = 18;
429 break;
430 case EDP_24BPP:
431 dev_priv->edp_bpp = 24;
432 break;
433 case EDP_30BPP:
434 dev_priv->edp_bpp = 30;
435 break;
436 }
437}
438
439static void
408parse_device_mapping(struct drm_i915_private *dev_priv, 440parse_device_mapping(struct drm_i915_private *dev_priv,
409 struct bdb_header *bdb) 441 struct bdb_header *bdb)
410{ 442{
@@ -521,6 +553,7 @@ intel_init_bios(struct drm_device *dev)
521 parse_sdvo_device_mapping(dev_priv, bdb); 553 parse_sdvo_device_mapping(dev_priv, bdb);
522 parse_device_mapping(dev_priv, bdb); 554 parse_device_mapping(dev_priv, bdb);
523 parse_driver_features(dev_priv, bdb); 555 parse_driver_features(dev_priv, bdb);
556 parse_edp(dev_priv, bdb);
524 557
525 pci_unmap_rom(pdev, bios); 558 pci_unmap_rom(pdev, bios);
526 559
diff --git a/drivers/gpu/drm/i915/intel_bios.h b/drivers/gpu/drm/i915/intel_bios.h
index 425ac9d7f724..4c18514f6f80 100644
--- a/drivers/gpu/drm/i915/intel_bios.h
+++ b/drivers/gpu/drm/i915/intel_bios.h
@@ -98,6 +98,7 @@ struct vbios_data {
98#define BDB_SDVO_LVDS_PNP_IDS 24 98#define BDB_SDVO_LVDS_PNP_IDS 24
99#define BDB_SDVO_LVDS_POWER_SEQ 25 99#define BDB_SDVO_LVDS_POWER_SEQ 25
100#define BDB_TV_OPTIONS 26 100#define BDB_TV_OPTIONS 26
101#define BDB_EDP 27
101#define BDB_LVDS_OPTIONS 40 102#define BDB_LVDS_OPTIONS 40
102#define BDB_LVDS_LFP_DATA_PTRS 41 103#define BDB_LVDS_LFP_DATA_PTRS 41
103#define BDB_LVDS_LFP_DATA 42 104#define BDB_LVDS_LFP_DATA 42
@@ -426,6 +427,45 @@ struct bdb_driver_features {
426 u8 custom_vbt_version; 427 u8 custom_vbt_version;
427} __attribute__((packed)); 428} __attribute__((packed));
428 429
430#define EDP_18BPP 0
431#define EDP_24BPP 1
432#define EDP_30BPP 2
433#define EDP_RATE_1_62 0
434#define EDP_RATE_2_7 1
435#define EDP_LANE_1 0
436#define EDP_LANE_2 1
437#define EDP_LANE_4 3
438#define EDP_PREEMPHASIS_NONE 0
439#define EDP_PREEMPHASIS_3_5dB 1
440#define EDP_PREEMPHASIS_6dB 2
441#define EDP_PREEMPHASIS_9_5dB 3
442#define EDP_VSWING_0_4V 0
443#define EDP_VSWING_0_6V 1
444#define EDP_VSWING_0_8V 2
445#define EDP_VSWING_1_2V 3
446
447struct edp_power_seq {
448 u16 t3;
449 u16 t7;
450 u16 t9;
451 u16 t10;
452 u16 t12;
453} __attribute__ ((packed));
454
455struct edp_link_params {
456 u8 rate:4;
457 u8 lanes:4;
458 u8 preemphasis:4;
459 u8 vswing:4;
460} __attribute__ ((packed));
461
462struct bdb_edp {
463 struct edp_power_seq power_seqs[16];
464 u32 color_depth;
465 u32 sdrrs_msa_timing_delay;
466 struct edp_link_params link_params[16];
467} __attribute__ ((packed));
468
429bool intel_init_bios(struct drm_device *dev); 469bool intel_init_bios(struct drm_device *dev);
430 470
431/* 471/*
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
index 9f3d3e563414..79dd4026586f 100644
--- a/drivers/gpu/drm/i915/intel_crt.c
+++ b/drivers/gpu/drm/i915/intel_crt.c
@@ -157,6 +157,9 @@ static bool intel_ironlake_crt_detect_hotplug(struct drm_connector *connector)
157 adpa = I915_READ(PCH_ADPA); 157 adpa = I915_READ(PCH_ADPA);
158 158
159 adpa &= ~ADPA_CRT_HOTPLUG_MASK; 159 adpa &= ~ADPA_CRT_HOTPLUG_MASK;
160 /* disable HPD first */
161 I915_WRITE(PCH_ADPA, adpa);
162 (void)I915_READ(PCH_ADPA);
160 163
161 adpa |= (ADPA_CRT_HOTPLUG_PERIOD_128 | 164 adpa |= (ADPA_CRT_HOTPLUG_PERIOD_128 |
162 ADPA_CRT_HOTPLUG_WARMUP_10MS | 165 ADPA_CRT_HOTPLUG_WARMUP_10MS |
@@ -548,4 +551,6 @@ void intel_crt_init(struct drm_device *dev)
548 drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs); 551 drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs);
549 552
550 drm_sysfs_connector_add(connector); 553 drm_sysfs_connector_add(connector);
554
555 dev_priv->hotplug_supported_mask |= CRT_HOTPLUG_INT_STATUS;
551} 556}
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 52cd9b006da2..b27202d23ebc 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -70,8 +70,6 @@ struct intel_limit {
70 intel_p2_t p2; 70 intel_p2_t p2;
71 bool (* find_pll)(const intel_limit_t *, struct drm_crtc *, 71 bool (* find_pll)(const intel_limit_t *, struct drm_crtc *,
72 int, int, intel_clock_t *); 72 int, int, intel_clock_t *);
73 bool (* find_reduced_pll)(const intel_limit_t *, struct drm_crtc *,
74 int, int, intel_clock_t *);
75}; 73};
76 74
77#define I8XX_DOT_MIN 25000 75#define I8XX_DOT_MIN 25000
@@ -242,38 +240,93 @@ struct intel_limit {
242#define IRONLAKE_DOT_MAX 350000 240#define IRONLAKE_DOT_MAX 350000
243#define IRONLAKE_VCO_MIN 1760000 241#define IRONLAKE_VCO_MIN 1760000
244#define IRONLAKE_VCO_MAX 3510000 242#define IRONLAKE_VCO_MAX 3510000
245#define IRONLAKE_N_MIN 1
246#define IRONLAKE_N_MAX 5
247#define IRONLAKE_M_MIN 79
248#define IRONLAKE_M_MAX 118
249#define IRONLAKE_M1_MIN 12 243#define IRONLAKE_M1_MIN 12
250#define IRONLAKE_M1_MAX 23 244#define IRONLAKE_M1_MAX 22
251#define IRONLAKE_M2_MIN 5 245#define IRONLAKE_M2_MIN 5
252#define IRONLAKE_M2_MAX 9 246#define IRONLAKE_M2_MAX 9
253#define IRONLAKE_P_SDVO_DAC_MIN 5
254#define IRONLAKE_P_SDVO_DAC_MAX 80
255#define IRONLAKE_P_LVDS_MIN 28
256#define IRONLAKE_P_LVDS_MAX 112
257#define IRONLAKE_P1_MIN 1
258#define IRONLAKE_P1_MAX 8
259#define IRONLAKE_P2_SDVO_DAC_SLOW 10
260#define IRONLAKE_P2_SDVO_DAC_FAST 5
261#define IRONLAKE_P2_LVDS_SLOW 14 /* single channel */
262#define IRONLAKE_P2_LVDS_FAST 7 /* double channel */
263#define IRONLAKE_P2_DOT_LIMIT 225000 /* 225Mhz */ 247#define IRONLAKE_P2_DOT_LIMIT 225000 /* 225Mhz */
264 248
249/* We have parameter ranges for different type of outputs. */
250
251/* DAC & HDMI Refclk 120Mhz */
252#define IRONLAKE_DAC_N_MIN 1
253#define IRONLAKE_DAC_N_MAX 5
254#define IRONLAKE_DAC_M_MIN 79
255#define IRONLAKE_DAC_M_MAX 127
256#define IRONLAKE_DAC_P_MIN 5
257#define IRONLAKE_DAC_P_MAX 80
258#define IRONLAKE_DAC_P1_MIN 1
259#define IRONLAKE_DAC_P1_MAX 8
260#define IRONLAKE_DAC_P2_SLOW 10
261#define IRONLAKE_DAC_P2_FAST 5
262
263/* LVDS single-channel 120Mhz refclk */
264#define IRONLAKE_LVDS_S_N_MIN 1
265#define IRONLAKE_LVDS_S_N_MAX 3
266#define IRONLAKE_LVDS_S_M_MIN 79
267#define IRONLAKE_LVDS_S_M_MAX 118
268#define IRONLAKE_LVDS_S_P_MIN 28
269#define IRONLAKE_LVDS_S_P_MAX 112
270#define IRONLAKE_LVDS_S_P1_MIN 2
271#define IRONLAKE_LVDS_S_P1_MAX 8
272#define IRONLAKE_LVDS_S_P2_SLOW 14
273#define IRONLAKE_LVDS_S_P2_FAST 14
274
275/* LVDS dual-channel 120Mhz refclk */
276#define IRONLAKE_LVDS_D_N_MIN 1
277#define IRONLAKE_LVDS_D_N_MAX 3
278#define IRONLAKE_LVDS_D_M_MIN 79
279#define IRONLAKE_LVDS_D_M_MAX 127
280#define IRONLAKE_LVDS_D_P_MIN 14
281#define IRONLAKE_LVDS_D_P_MAX 56
282#define IRONLAKE_LVDS_D_P1_MIN 2
283#define IRONLAKE_LVDS_D_P1_MAX 8
284#define IRONLAKE_LVDS_D_P2_SLOW 7
285#define IRONLAKE_LVDS_D_P2_FAST 7
286
287/* LVDS single-channel 100Mhz refclk */
288#define IRONLAKE_LVDS_S_SSC_N_MIN 1
289#define IRONLAKE_LVDS_S_SSC_N_MAX 2
290#define IRONLAKE_LVDS_S_SSC_M_MIN 79
291#define IRONLAKE_LVDS_S_SSC_M_MAX 126
292#define IRONLAKE_LVDS_S_SSC_P_MIN 28
293#define IRONLAKE_LVDS_S_SSC_P_MAX 112
294#define IRONLAKE_LVDS_S_SSC_P1_MIN 2
295#define IRONLAKE_LVDS_S_SSC_P1_MAX 8
296#define IRONLAKE_LVDS_S_SSC_P2_SLOW 14
297#define IRONLAKE_LVDS_S_SSC_P2_FAST 14
298
299/* LVDS dual-channel 100Mhz refclk */
300#define IRONLAKE_LVDS_D_SSC_N_MIN 1
301#define IRONLAKE_LVDS_D_SSC_N_MAX 3
302#define IRONLAKE_LVDS_D_SSC_M_MIN 79
303#define IRONLAKE_LVDS_D_SSC_M_MAX 126
304#define IRONLAKE_LVDS_D_SSC_P_MIN 14
305#define IRONLAKE_LVDS_D_SSC_P_MAX 42
306#define IRONLAKE_LVDS_D_SSC_P1_MIN 2
307#define IRONLAKE_LVDS_D_SSC_P1_MAX 6
308#define IRONLAKE_LVDS_D_SSC_P2_SLOW 7
309#define IRONLAKE_LVDS_D_SSC_P2_FAST 7
310
311/* DisplayPort */
312#define IRONLAKE_DP_N_MIN 1
313#define IRONLAKE_DP_N_MAX 2
314#define IRONLAKE_DP_M_MIN 81
315#define IRONLAKE_DP_M_MAX 90
316#define IRONLAKE_DP_P_MIN 10
317#define IRONLAKE_DP_P_MAX 20
318#define IRONLAKE_DP_P2_FAST 10
319#define IRONLAKE_DP_P2_SLOW 10
320#define IRONLAKE_DP_P2_LIMIT 0
321#define IRONLAKE_DP_P1_MIN 1
322#define IRONLAKE_DP_P1_MAX 2
323
265static bool 324static bool
266intel_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, 325intel_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc,
267 int target, int refclk, intel_clock_t *best_clock); 326 int target, int refclk, intel_clock_t *best_clock);
268static bool 327static bool
269intel_find_best_reduced_PLL(const intel_limit_t *limit, struct drm_crtc *crtc,
270 int target, int refclk, intel_clock_t *best_clock);
271static bool
272intel_g4x_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, 328intel_g4x_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc,
273 int target, int refclk, intel_clock_t *best_clock); 329 int target, int refclk, intel_clock_t *best_clock);
274static bool
275intel_ironlake_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc,
276 int target, int refclk, intel_clock_t *best_clock);
277 330
278static bool 331static bool
279intel_find_pll_g4x_dp(const intel_limit_t *, struct drm_crtc *crtc, 332intel_find_pll_g4x_dp(const intel_limit_t *, struct drm_crtc *crtc,
@@ -294,7 +347,6 @@ static const intel_limit_t intel_limits_i8xx_dvo = {
294 .p2 = { .dot_limit = I8XX_P2_SLOW_LIMIT, 347 .p2 = { .dot_limit = I8XX_P2_SLOW_LIMIT,
295 .p2_slow = I8XX_P2_SLOW, .p2_fast = I8XX_P2_FAST }, 348 .p2_slow = I8XX_P2_SLOW, .p2_fast = I8XX_P2_FAST },
296 .find_pll = intel_find_best_PLL, 349 .find_pll = intel_find_best_PLL,
297 .find_reduced_pll = intel_find_best_reduced_PLL,
298}; 350};
299 351
300static const intel_limit_t intel_limits_i8xx_lvds = { 352static const intel_limit_t intel_limits_i8xx_lvds = {
@@ -309,7 +361,6 @@ static const intel_limit_t intel_limits_i8xx_lvds = {
309 .p2 = { .dot_limit = I8XX_P2_SLOW_LIMIT, 361 .p2 = { .dot_limit = I8XX_P2_SLOW_LIMIT,
310 .p2_slow = I8XX_P2_LVDS_SLOW, .p2_fast = I8XX_P2_LVDS_FAST }, 362 .p2_slow = I8XX_P2_LVDS_SLOW, .p2_fast = I8XX_P2_LVDS_FAST },
311 .find_pll = intel_find_best_PLL, 363 .find_pll = intel_find_best_PLL,
312 .find_reduced_pll = intel_find_best_reduced_PLL,
313}; 364};
314 365
315static const intel_limit_t intel_limits_i9xx_sdvo = { 366static const intel_limit_t intel_limits_i9xx_sdvo = {
@@ -324,7 +375,6 @@ static const intel_limit_t intel_limits_i9xx_sdvo = {
324 .p2 = { .dot_limit = I9XX_P2_SDVO_DAC_SLOW_LIMIT, 375 .p2 = { .dot_limit = I9XX_P2_SDVO_DAC_SLOW_LIMIT,
325 .p2_slow = I9XX_P2_SDVO_DAC_SLOW, .p2_fast = I9XX_P2_SDVO_DAC_FAST }, 376 .p2_slow = I9XX_P2_SDVO_DAC_SLOW, .p2_fast = I9XX_P2_SDVO_DAC_FAST },
326 .find_pll = intel_find_best_PLL, 377 .find_pll = intel_find_best_PLL,
327 .find_reduced_pll = intel_find_best_reduced_PLL,
328}; 378};
329 379
330static const intel_limit_t intel_limits_i9xx_lvds = { 380static const intel_limit_t intel_limits_i9xx_lvds = {
@@ -342,7 +392,6 @@ static const intel_limit_t intel_limits_i9xx_lvds = {
342 .p2 = { .dot_limit = I9XX_P2_LVDS_SLOW_LIMIT, 392 .p2 = { .dot_limit = I9XX_P2_LVDS_SLOW_LIMIT,
343 .p2_slow = I9XX_P2_LVDS_SLOW, .p2_fast = I9XX_P2_LVDS_FAST }, 393 .p2_slow = I9XX_P2_LVDS_SLOW, .p2_fast = I9XX_P2_LVDS_FAST },
344 .find_pll = intel_find_best_PLL, 394 .find_pll = intel_find_best_PLL,
345 .find_reduced_pll = intel_find_best_reduced_PLL,
346}; 395};
347 396
348 /* below parameter and function is for G4X Chipset Family*/ 397 /* below parameter and function is for G4X Chipset Family*/
@@ -360,7 +409,6 @@ static const intel_limit_t intel_limits_g4x_sdvo = {
360 .p2_fast = G4X_P2_SDVO_FAST 409 .p2_fast = G4X_P2_SDVO_FAST
361 }, 410 },
362 .find_pll = intel_g4x_find_best_PLL, 411 .find_pll = intel_g4x_find_best_PLL,
363 .find_reduced_pll = intel_g4x_find_best_PLL,
364}; 412};
365 413
366static const intel_limit_t intel_limits_g4x_hdmi = { 414static const intel_limit_t intel_limits_g4x_hdmi = {
@@ -377,7 +425,6 @@ static const intel_limit_t intel_limits_g4x_hdmi = {
377 .p2_fast = G4X_P2_HDMI_DAC_FAST 425 .p2_fast = G4X_P2_HDMI_DAC_FAST
378 }, 426 },
379 .find_pll = intel_g4x_find_best_PLL, 427 .find_pll = intel_g4x_find_best_PLL,
380 .find_reduced_pll = intel_g4x_find_best_PLL,
381}; 428};
382 429
383static const intel_limit_t intel_limits_g4x_single_channel_lvds = { 430static const intel_limit_t intel_limits_g4x_single_channel_lvds = {
@@ -402,7 +449,6 @@ static const intel_limit_t intel_limits_g4x_single_channel_lvds = {
402 .p2_fast = G4X_P2_SINGLE_CHANNEL_LVDS_FAST 449 .p2_fast = G4X_P2_SINGLE_CHANNEL_LVDS_FAST
403 }, 450 },
404 .find_pll = intel_g4x_find_best_PLL, 451 .find_pll = intel_g4x_find_best_PLL,
405 .find_reduced_pll = intel_g4x_find_best_PLL,
406}; 452};
407 453
408static const intel_limit_t intel_limits_g4x_dual_channel_lvds = { 454static const intel_limit_t intel_limits_g4x_dual_channel_lvds = {
@@ -427,7 +473,6 @@ static const intel_limit_t intel_limits_g4x_dual_channel_lvds = {
427 .p2_fast = G4X_P2_DUAL_CHANNEL_LVDS_FAST 473 .p2_fast = G4X_P2_DUAL_CHANNEL_LVDS_FAST
428 }, 474 },
429 .find_pll = intel_g4x_find_best_PLL, 475 .find_pll = intel_g4x_find_best_PLL,
430 .find_reduced_pll = intel_g4x_find_best_PLL,
431}; 476};
432 477
433static const intel_limit_t intel_limits_g4x_display_port = { 478static const intel_limit_t intel_limits_g4x_display_port = {
@@ -465,7 +510,6 @@ static const intel_limit_t intel_limits_pineview_sdvo = {
465 .p2 = { .dot_limit = I9XX_P2_SDVO_DAC_SLOW_LIMIT, 510 .p2 = { .dot_limit = I9XX_P2_SDVO_DAC_SLOW_LIMIT,
466 .p2_slow = I9XX_P2_SDVO_DAC_SLOW, .p2_fast = I9XX_P2_SDVO_DAC_FAST }, 511 .p2_slow = I9XX_P2_SDVO_DAC_SLOW, .p2_fast = I9XX_P2_SDVO_DAC_FAST },
467 .find_pll = intel_find_best_PLL, 512 .find_pll = intel_find_best_PLL,
468 .find_reduced_pll = intel_find_best_reduced_PLL,
469}; 513};
470 514
471static const intel_limit_t intel_limits_pineview_lvds = { 515static const intel_limit_t intel_limits_pineview_lvds = {
@@ -481,46 +525,135 @@ static const intel_limit_t intel_limits_pineview_lvds = {
481 .p2 = { .dot_limit = I9XX_P2_LVDS_SLOW_LIMIT, 525 .p2 = { .dot_limit = I9XX_P2_LVDS_SLOW_LIMIT,
482 .p2_slow = I9XX_P2_LVDS_SLOW, .p2_fast = I9XX_P2_LVDS_SLOW }, 526 .p2_slow = I9XX_P2_LVDS_SLOW, .p2_fast = I9XX_P2_LVDS_SLOW },
483 .find_pll = intel_find_best_PLL, 527 .find_pll = intel_find_best_PLL,
484 .find_reduced_pll = intel_find_best_reduced_PLL,
485}; 528};
486 529
487static const intel_limit_t intel_limits_ironlake_sdvo = { 530static const intel_limit_t intel_limits_ironlake_dac = {
531 .dot = { .min = IRONLAKE_DOT_MIN, .max = IRONLAKE_DOT_MAX },
532 .vco = { .min = IRONLAKE_VCO_MIN, .max = IRONLAKE_VCO_MAX },
533 .n = { .min = IRONLAKE_DAC_N_MIN, .max = IRONLAKE_DAC_N_MAX },
534 .m = { .min = IRONLAKE_DAC_M_MIN, .max = IRONLAKE_DAC_M_MAX },
535 .m1 = { .min = IRONLAKE_M1_MIN, .max = IRONLAKE_M1_MAX },
536 .m2 = { .min = IRONLAKE_M2_MIN, .max = IRONLAKE_M2_MAX },
537 .p = { .min = IRONLAKE_DAC_P_MIN, .max = IRONLAKE_DAC_P_MAX },
538 .p1 = { .min = IRONLAKE_DAC_P1_MIN, .max = IRONLAKE_DAC_P1_MAX },
539 .p2 = { .dot_limit = IRONLAKE_P2_DOT_LIMIT,
540 .p2_slow = IRONLAKE_DAC_P2_SLOW,
541 .p2_fast = IRONLAKE_DAC_P2_FAST },
542 .find_pll = intel_g4x_find_best_PLL,
543};
544
545static const intel_limit_t intel_limits_ironlake_single_lvds = {
546 .dot = { .min = IRONLAKE_DOT_MIN, .max = IRONLAKE_DOT_MAX },
547 .vco = { .min = IRONLAKE_VCO_MIN, .max = IRONLAKE_VCO_MAX },
548 .n = { .min = IRONLAKE_LVDS_S_N_MIN, .max = IRONLAKE_LVDS_S_N_MAX },
549 .m = { .min = IRONLAKE_LVDS_S_M_MIN, .max = IRONLAKE_LVDS_S_M_MAX },
550 .m1 = { .min = IRONLAKE_M1_MIN, .max = IRONLAKE_M1_MAX },
551 .m2 = { .min = IRONLAKE_M2_MIN, .max = IRONLAKE_M2_MAX },
552 .p = { .min = IRONLAKE_LVDS_S_P_MIN, .max = IRONLAKE_LVDS_S_P_MAX },
553 .p1 = { .min = IRONLAKE_LVDS_S_P1_MIN, .max = IRONLAKE_LVDS_S_P1_MAX },
554 .p2 = { .dot_limit = IRONLAKE_P2_DOT_LIMIT,
555 .p2_slow = IRONLAKE_LVDS_S_P2_SLOW,
556 .p2_fast = IRONLAKE_LVDS_S_P2_FAST },
557 .find_pll = intel_g4x_find_best_PLL,
558};
559
560static const intel_limit_t intel_limits_ironlake_dual_lvds = {
488 .dot = { .min = IRONLAKE_DOT_MIN, .max = IRONLAKE_DOT_MAX }, 561 .dot = { .min = IRONLAKE_DOT_MIN, .max = IRONLAKE_DOT_MAX },
489 .vco = { .min = IRONLAKE_VCO_MIN, .max = IRONLAKE_VCO_MAX }, 562 .vco = { .min = IRONLAKE_VCO_MIN, .max = IRONLAKE_VCO_MAX },
490 .n = { .min = IRONLAKE_N_MIN, .max = IRONLAKE_N_MAX }, 563 .n = { .min = IRONLAKE_LVDS_D_N_MIN, .max = IRONLAKE_LVDS_D_N_MAX },
491 .m = { .min = IRONLAKE_M_MIN, .max = IRONLAKE_M_MAX }, 564 .m = { .min = IRONLAKE_LVDS_D_M_MIN, .max = IRONLAKE_LVDS_D_M_MAX },
492 .m1 = { .min = IRONLAKE_M1_MIN, .max = IRONLAKE_M1_MAX }, 565 .m1 = { .min = IRONLAKE_M1_MIN, .max = IRONLAKE_M1_MAX },
493 .m2 = { .min = IRONLAKE_M2_MIN, .max = IRONLAKE_M2_MAX }, 566 .m2 = { .min = IRONLAKE_M2_MIN, .max = IRONLAKE_M2_MAX },
494 .p = { .min = IRONLAKE_P_SDVO_DAC_MIN, .max = IRONLAKE_P_SDVO_DAC_MAX }, 567 .p = { .min = IRONLAKE_LVDS_D_P_MIN, .max = IRONLAKE_LVDS_D_P_MAX },
495 .p1 = { .min = IRONLAKE_P1_MIN, .max = IRONLAKE_P1_MAX }, 568 .p1 = { .min = IRONLAKE_LVDS_D_P1_MIN, .max = IRONLAKE_LVDS_D_P1_MAX },
496 .p2 = { .dot_limit = IRONLAKE_P2_DOT_LIMIT, 569 .p2 = { .dot_limit = IRONLAKE_P2_DOT_LIMIT,
497 .p2_slow = IRONLAKE_P2_SDVO_DAC_SLOW, 570 .p2_slow = IRONLAKE_LVDS_D_P2_SLOW,
498 .p2_fast = IRONLAKE_P2_SDVO_DAC_FAST }, 571 .p2_fast = IRONLAKE_LVDS_D_P2_FAST },
499 .find_pll = intel_ironlake_find_best_PLL, 572 .find_pll = intel_g4x_find_best_PLL,
500}; 573};
501 574
502static const intel_limit_t intel_limits_ironlake_lvds = { 575static const intel_limit_t intel_limits_ironlake_single_lvds_100m = {
503 .dot = { .min = IRONLAKE_DOT_MIN, .max = IRONLAKE_DOT_MAX }, 576 .dot = { .min = IRONLAKE_DOT_MIN, .max = IRONLAKE_DOT_MAX },
504 .vco = { .min = IRONLAKE_VCO_MIN, .max = IRONLAKE_VCO_MAX }, 577 .vco = { .min = IRONLAKE_VCO_MIN, .max = IRONLAKE_VCO_MAX },
505 .n = { .min = IRONLAKE_N_MIN, .max = IRONLAKE_N_MAX }, 578 .n = { .min = IRONLAKE_LVDS_S_SSC_N_MIN, .max = IRONLAKE_LVDS_S_SSC_N_MAX },
506 .m = { .min = IRONLAKE_M_MIN, .max = IRONLAKE_M_MAX }, 579 .m = { .min = IRONLAKE_LVDS_S_SSC_M_MIN, .max = IRONLAKE_LVDS_S_SSC_M_MAX },
507 .m1 = { .min = IRONLAKE_M1_MIN, .max = IRONLAKE_M1_MAX }, 580 .m1 = { .min = IRONLAKE_M1_MIN, .max = IRONLAKE_M1_MAX },
508 .m2 = { .min = IRONLAKE_M2_MIN, .max = IRONLAKE_M2_MAX }, 581 .m2 = { .min = IRONLAKE_M2_MIN, .max = IRONLAKE_M2_MAX },
509 .p = { .min = IRONLAKE_P_LVDS_MIN, .max = IRONLAKE_P_LVDS_MAX }, 582 .p = { .min = IRONLAKE_LVDS_S_SSC_P_MIN, .max = IRONLAKE_LVDS_S_SSC_P_MAX },
510 .p1 = { .min = IRONLAKE_P1_MIN, .max = IRONLAKE_P1_MAX }, 583 .p1 = { .min = IRONLAKE_LVDS_S_SSC_P1_MIN,.max = IRONLAKE_LVDS_S_SSC_P1_MAX },
511 .p2 = { .dot_limit = IRONLAKE_P2_DOT_LIMIT, 584 .p2 = { .dot_limit = IRONLAKE_P2_DOT_LIMIT,
512 .p2_slow = IRONLAKE_P2_LVDS_SLOW, 585 .p2_slow = IRONLAKE_LVDS_S_SSC_P2_SLOW,
513 .p2_fast = IRONLAKE_P2_LVDS_FAST }, 586 .p2_fast = IRONLAKE_LVDS_S_SSC_P2_FAST },
514 .find_pll = intel_ironlake_find_best_PLL, 587 .find_pll = intel_g4x_find_best_PLL,
588};
589
590static const intel_limit_t intel_limits_ironlake_dual_lvds_100m = {
591 .dot = { .min = IRONLAKE_DOT_MIN, .max = IRONLAKE_DOT_MAX },
592 .vco = { .min = IRONLAKE_VCO_MIN, .max = IRONLAKE_VCO_MAX },
593 .n = { .min = IRONLAKE_LVDS_D_SSC_N_MIN, .max = IRONLAKE_LVDS_D_SSC_N_MAX },
594 .m = { .min = IRONLAKE_LVDS_D_SSC_M_MIN, .max = IRONLAKE_LVDS_D_SSC_M_MAX },
595 .m1 = { .min = IRONLAKE_M1_MIN, .max = IRONLAKE_M1_MAX },
596 .m2 = { .min = IRONLAKE_M2_MIN, .max = IRONLAKE_M2_MAX },
597 .p = { .min = IRONLAKE_LVDS_D_SSC_P_MIN, .max = IRONLAKE_LVDS_D_SSC_P_MAX },
598 .p1 = { .min = IRONLAKE_LVDS_D_SSC_P1_MIN,.max = IRONLAKE_LVDS_D_SSC_P1_MAX },
599 .p2 = { .dot_limit = IRONLAKE_P2_DOT_LIMIT,
600 .p2_slow = IRONLAKE_LVDS_D_SSC_P2_SLOW,
601 .p2_fast = IRONLAKE_LVDS_D_SSC_P2_FAST },
602 .find_pll = intel_g4x_find_best_PLL,
603};
604
605static const intel_limit_t intel_limits_ironlake_display_port = {
606 .dot = { .min = IRONLAKE_DOT_MIN,
607 .max = IRONLAKE_DOT_MAX },
608 .vco = { .min = IRONLAKE_VCO_MIN,
609 .max = IRONLAKE_VCO_MAX},
610 .n = { .min = IRONLAKE_DP_N_MIN,
611 .max = IRONLAKE_DP_N_MAX },
612 .m = { .min = IRONLAKE_DP_M_MIN,
613 .max = IRONLAKE_DP_M_MAX },
614 .m1 = { .min = IRONLAKE_M1_MIN,
615 .max = IRONLAKE_M1_MAX },
616 .m2 = { .min = IRONLAKE_M2_MIN,
617 .max = IRONLAKE_M2_MAX },
618 .p = { .min = IRONLAKE_DP_P_MIN,
619 .max = IRONLAKE_DP_P_MAX },
620 .p1 = { .min = IRONLAKE_DP_P1_MIN,
621 .max = IRONLAKE_DP_P1_MAX},
622 .p2 = { .dot_limit = IRONLAKE_DP_P2_LIMIT,
623 .p2_slow = IRONLAKE_DP_P2_SLOW,
624 .p2_fast = IRONLAKE_DP_P2_FAST },
625 .find_pll = intel_find_pll_ironlake_dp,
515}; 626};
516 627
517static const intel_limit_t *intel_ironlake_limit(struct drm_crtc *crtc) 628static const intel_limit_t *intel_ironlake_limit(struct drm_crtc *crtc)
518{ 629{
630 struct drm_device *dev = crtc->dev;
631 struct drm_i915_private *dev_priv = dev->dev_private;
519 const intel_limit_t *limit; 632 const intel_limit_t *limit;
520 if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) 633 int refclk = 120;
521 limit = &intel_limits_ironlake_lvds; 634
635 if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) {
636 if (dev_priv->lvds_use_ssc && dev_priv->lvds_ssc_freq == 100)
637 refclk = 100;
638
639 if ((I915_READ(PCH_LVDS) & LVDS_CLKB_POWER_MASK) ==
640 LVDS_CLKB_POWER_UP) {
641 /* LVDS dual channel */
642 if (refclk == 100)
643 limit = &intel_limits_ironlake_dual_lvds_100m;
644 else
645 limit = &intel_limits_ironlake_dual_lvds;
646 } else {
647 if (refclk == 100)
648 limit = &intel_limits_ironlake_single_lvds_100m;
649 else
650 limit = &intel_limits_ironlake_single_lvds;
651 }
652 } else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT) ||
653 HAS_eDP)
654 limit = &intel_limits_ironlake_display_port;
522 else 655 else
523 limit = &intel_limits_ironlake_sdvo; 656 limit = &intel_limits_ironlake_dac;
524 657
525 return limit; 658 return limit;
526} 659}
@@ -737,46 +870,6 @@ intel_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc,
737 return (err != target); 870 return (err != target);
738} 871}
739 872
740
741static bool
742intel_find_best_reduced_PLL(const intel_limit_t *limit, struct drm_crtc *crtc,
743 int target, int refclk, intel_clock_t *best_clock)
744
745{
746 struct drm_device *dev = crtc->dev;
747 intel_clock_t clock;
748 int err = target;
749 bool found = false;
750
751 memcpy(&clock, best_clock, sizeof(intel_clock_t));
752
753 for (clock.m1 = limit->m1.min; clock.m1 <= limit->m1.max; clock.m1++) {
754 for (clock.m2 = limit->m2.min; clock.m2 <= limit->m2.max; clock.m2++) {
755 /* m1 is always 0 in Pineview */
756 if (clock.m2 >= clock.m1 && !IS_PINEVIEW(dev))
757 break;
758 for (clock.n = limit->n.min; clock.n <= limit->n.max;
759 clock.n++) {
760 int this_err;
761
762 intel_clock(dev, refclk, &clock);
763
764 if (!intel_PLL_is_valid(crtc, &clock))
765 continue;
766
767 this_err = abs(clock.dot - target);
768 if (this_err < err) {
769 *best_clock = clock;
770 err = this_err;
771 found = true;
772 }
773 }
774 }
775 }
776
777 return found;
778}
779
780static bool 873static bool
781intel_g4x_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, 874intel_g4x_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc,
782 int target, int refclk, intel_clock_t *best_clock) 875 int target, int refclk, intel_clock_t *best_clock)
@@ -791,7 +884,13 @@ intel_g4x_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc,
791 found = false; 884 found = false;
792 885
793 if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) { 886 if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) {
794 if ((I915_READ(LVDS) & LVDS_CLKB_POWER_MASK) == 887 int lvds_reg;
888
889 if (IS_IRONLAKE(dev))
890 lvds_reg = PCH_LVDS;
891 else
892 lvds_reg = LVDS;
893 if ((I915_READ(lvds_reg) & LVDS_CLKB_POWER_MASK) ==
795 LVDS_CLKB_POWER_UP) 894 LVDS_CLKB_POWER_UP)
796 clock.p2 = limit->p2.p2_fast; 895 clock.p2 = limit->p2.p2_fast;
797 else 896 else
@@ -839,6 +938,11 @@ intel_find_pll_ironlake_dp(const intel_limit_t *limit, struct drm_crtc *crtc,
839{ 938{
840 struct drm_device *dev = crtc->dev; 939 struct drm_device *dev = crtc->dev;
841 intel_clock_t clock; 940 intel_clock_t clock;
941
942 /* return directly when it is eDP */
943 if (HAS_eDP)
944 return true;
945
842 if (target < 200000) { 946 if (target < 200000) {
843 clock.n = 1; 947 clock.n = 1;
844 clock.p1 = 2; 948 clock.p1 = 2;
@@ -857,68 +961,6 @@ intel_find_pll_ironlake_dp(const intel_limit_t *limit, struct drm_crtc *crtc,
857 return true; 961 return true;
858} 962}
859 963
860static bool
861intel_ironlake_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc,
862 int target, int refclk, intel_clock_t *best_clock)
863{
864 struct drm_device *dev = crtc->dev;
865 struct drm_i915_private *dev_priv = dev->dev_private;
866 intel_clock_t clock;
867 int err_most = 47;
868 int err_min = 10000;
869
870 /* eDP has only 2 clock choice, no n/m/p setting */
871 if (HAS_eDP)
872 return true;
873
874 if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT))
875 return intel_find_pll_ironlake_dp(limit, crtc, target,
876 refclk, best_clock);
877
878 if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) {
879 if ((I915_READ(PCH_LVDS) & LVDS_CLKB_POWER_MASK) ==
880 LVDS_CLKB_POWER_UP)
881 clock.p2 = limit->p2.p2_fast;
882 else
883 clock.p2 = limit->p2.p2_slow;
884 } else {
885 if (target < limit->p2.dot_limit)
886 clock.p2 = limit->p2.p2_slow;
887 else
888 clock.p2 = limit->p2.p2_fast;
889 }
890
891 memset(best_clock, 0, sizeof(*best_clock));
892 for (clock.p1 = limit->p1.max; clock.p1 >= limit->p1.min; clock.p1--) {
893 /* based on hardware requriment prefer smaller n to precision */
894 for (clock.n = limit->n.min; clock.n <= limit->n.max; clock.n++) {
895 /* based on hardware requirment prefere larger m1,m2 */
896 for (clock.m1 = limit->m1.max;
897 clock.m1 >= limit->m1.min; clock.m1--) {
898 for (clock.m2 = limit->m2.max;
899 clock.m2 >= limit->m2.min; clock.m2--) {
900 int this_err;
901
902 intel_clock(dev, refclk, &clock);
903 if (!intel_PLL_is_valid(crtc, &clock))
904 continue;
905 this_err = abs((10000 - (target*10000/clock.dot)));
906 if (this_err < err_most) {
907 *best_clock = clock;
908 /* found on first matching */
909 goto out;
910 } else if (this_err < err_min) {
911 *best_clock = clock;
912 err_min = this_err;
913 }
914 }
915 }
916 }
917 }
918out:
919 return true;
920}
921
922/* DisplayPort has only two frequencies, 162MHz and 270MHz */ 964/* DisplayPort has only two frequencies, 162MHz and 270MHz */
923static bool 965static bool
924intel_find_pll_g4x_dp(const intel_limit_t *limit, struct drm_crtc *crtc, 966intel_find_pll_g4x_dp(const intel_limit_t *limit, struct drm_crtc *crtc,
@@ -989,6 +1031,8 @@ static void i8xx_enable_fbc(struct drm_crtc *crtc, unsigned long interval)
989 1031
990 /* enable it... */ 1032 /* enable it... */
991 fbc_ctl = FBC_CTL_EN | FBC_CTL_PERIODIC; 1033 fbc_ctl = FBC_CTL_EN | FBC_CTL_PERIODIC;
1034 if (IS_I945GM(dev))
1035 fbc_ctl |= FBC_C3_IDLE; /* 945 needs special SR handling */
992 fbc_ctl |= (dev_priv->cfb_pitch & 0xff) << FBC_CTL_STRIDE_SHIFT; 1036 fbc_ctl |= (dev_priv->cfb_pitch & 0xff) << FBC_CTL_STRIDE_SHIFT;
993 fbc_ctl |= (interval & 0x2fff) << FBC_CTL_INTERVAL_SHIFT; 1037 fbc_ctl |= (interval & 0x2fff) << FBC_CTL_INTERVAL_SHIFT;
994 if (obj_priv->tiling_mode != I915_TILING_NONE) 1038 if (obj_priv->tiling_mode != I915_TILING_NONE)
@@ -1282,7 +1326,7 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
1282 return ret; 1326 return ret;
1283 } 1327 }
1284 1328
1285 ret = i915_gem_object_set_to_gtt_domain(obj, 1); 1329 ret = i915_gem_object_set_to_display_plane(obj);
1286 if (ret != 0) { 1330 if (ret != 0) {
1287 i915_gem_object_unpin(obj); 1331 i915_gem_object_unpin(obj);
1288 mutex_unlock(&dev->struct_mutex); 1332 mutex_unlock(&dev->struct_mutex);
@@ -1493,6 +1537,10 @@ static void ironlake_crtc_dpms(struct drm_crtc *crtc, int mode)
1493 int trans_vsync_reg = (pipe == 0) ? TRANS_VSYNC_A : TRANS_VSYNC_B; 1537 int trans_vsync_reg = (pipe == 0) ? TRANS_VSYNC_A : TRANS_VSYNC_B;
1494 u32 temp; 1538 u32 temp;
1495 int tries = 5, j, n; 1539 int tries = 5, j, n;
1540 u32 pipe_bpc;
1541
1542 temp = I915_READ(pipeconf_reg);
1543 pipe_bpc = temp & PIPE_BPC_MASK;
1496 1544
1497 /* XXX: When our outputs are all unaware of DPMS modes other than off 1545 /* XXX: When our outputs are all unaware of DPMS modes other than off
1498 * and on, we should map those modes to DRM_MODE_DPMS_OFF in the CRTC. 1546 * and on, we should map those modes to DRM_MODE_DPMS_OFF in the CRTC.
@@ -1524,6 +1572,12 @@ static void ironlake_crtc_dpms(struct drm_crtc *crtc, int mode)
1524 1572
1525 /* enable PCH FDI RX PLL, wait warmup plus DMI latency */ 1573 /* enable PCH FDI RX PLL, wait warmup plus DMI latency */
1526 temp = I915_READ(fdi_rx_reg); 1574 temp = I915_READ(fdi_rx_reg);
1575 /*
1576 * make the BPC in FDI Rx be consistent with that in
1577 * pipeconf reg.
1578 */
1579 temp &= ~(0x7 << 16);
1580 temp |= (pipe_bpc << 11);
1527 I915_WRITE(fdi_rx_reg, temp | FDI_RX_PLL_ENABLE | 1581 I915_WRITE(fdi_rx_reg, temp | FDI_RX_PLL_ENABLE |
1528 FDI_SEL_PCDCLK | 1582 FDI_SEL_PCDCLK |
1529 FDI_DP_PORT_WIDTH_X4); /* default 4 lanes */ 1583 FDI_DP_PORT_WIDTH_X4); /* default 4 lanes */
@@ -1666,6 +1720,12 @@ static void ironlake_crtc_dpms(struct drm_crtc *crtc, int mode)
1666 1720
1667 /* enable PCH transcoder */ 1721 /* enable PCH transcoder */
1668 temp = I915_READ(transconf_reg); 1722 temp = I915_READ(transconf_reg);
1723 /*
1724 * make the BPC in transcoder be consistent with
1725 * that in pipeconf reg.
1726 */
1727 temp &= ~PIPE_BPC_MASK;
1728 temp |= pipe_bpc;
1669 I915_WRITE(transconf_reg, temp | TRANS_ENABLE); 1729 I915_WRITE(transconf_reg, temp | TRANS_ENABLE);
1670 I915_READ(transconf_reg); 1730 I915_READ(transconf_reg);
1671 1731
@@ -1697,6 +1757,7 @@ static void ironlake_crtc_dpms(struct drm_crtc *crtc, int mode)
1697 case DRM_MODE_DPMS_OFF: 1757 case DRM_MODE_DPMS_OFF:
1698 DRM_DEBUG_KMS("crtc %d dpms off\n", pipe); 1758 DRM_DEBUG_KMS("crtc %d dpms off\n", pipe);
1699 1759
1760 drm_vblank_off(dev, pipe);
1700 /* Disable display plane */ 1761 /* Disable display plane */
1701 temp = I915_READ(dspcntr_reg); 1762 temp = I915_READ(dspcntr_reg);
1702 if ((temp & DISPLAY_PLANE_ENABLE) != 0) { 1763 if ((temp & DISPLAY_PLANE_ENABLE) != 0) {
@@ -1745,6 +1806,9 @@ static void ironlake_crtc_dpms(struct drm_crtc *crtc, int mode)
1745 I915_READ(fdi_tx_reg); 1806 I915_READ(fdi_tx_reg);
1746 1807
1747 temp = I915_READ(fdi_rx_reg); 1808 temp = I915_READ(fdi_rx_reg);
1809 /* BPC in FDI rx is consistent with that in pipeconf */
1810 temp &= ~(0x07 << 16);
1811 temp |= (pipe_bpc << 11);
1748 I915_WRITE(fdi_rx_reg, temp & ~FDI_RX_ENABLE); 1812 I915_WRITE(fdi_rx_reg, temp & ~FDI_RX_ENABLE);
1749 I915_READ(fdi_rx_reg); 1813 I915_READ(fdi_rx_reg);
1750 1814
@@ -1789,7 +1853,12 @@ static void ironlake_crtc_dpms(struct drm_crtc *crtc, int mode)
1789 } 1853 }
1790 } 1854 }
1791 } 1855 }
1792 1856 temp = I915_READ(transconf_reg);
1857 /* BPC in transcoder is consistent with that in pipeconf */
1858 temp &= ~PIPE_BPC_MASK;
1859 temp |= pipe_bpc;
1860 I915_WRITE(transconf_reg, temp);
1861 I915_READ(transconf_reg);
1793 udelay(100); 1862 udelay(100);
1794 1863
1795 /* disable PCH DPLL */ 1864 /* disable PCH DPLL */
@@ -2448,7 +2517,7 @@ static void pineview_enable_cxsr(struct drm_device *dev, unsigned long clock,
2448 * A value of 5us seems to be a good balance; safe for very low end 2517 * A value of 5us seems to be a good balance; safe for very low end
2449 * platforms but not overly aggressive on lower latency configs. 2518 * platforms but not overly aggressive on lower latency configs.
2450 */ 2519 */
2451const static int latency_ns = 5000; 2520static const int latency_ns = 5000;
2452 2521
2453static int i9xx_get_fifo_size(struct drm_device *dev, int plane) 2522static int i9xx_get_fifo_size(struct drm_device *dev, int plane)
2454{ 2523{
@@ -2559,7 +2628,7 @@ static void g4x_update_wm(struct drm_device *dev, int planea_clock,
2559 /* Calc sr entries for one plane configs */ 2628 /* Calc sr entries for one plane configs */
2560 if (sr_hdisplay && (!planea_clock || !planeb_clock)) { 2629 if (sr_hdisplay && (!planea_clock || !planeb_clock)) {
2561 /* self-refresh has much higher latency */ 2630 /* self-refresh has much higher latency */
2562 const static int sr_latency_ns = 12000; 2631 static const int sr_latency_ns = 12000;
2563 2632
2564 sr_clock = planea_clock ? planea_clock : planeb_clock; 2633 sr_clock = planea_clock ? planea_clock : planeb_clock;
2565 line_time_us = ((sr_hdisplay * 1000) / sr_clock); 2634 line_time_us = ((sr_hdisplay * 1000) / sr_clock);
@@ -2570,6 +2639,10 @@ static void g4x_update_wm(struct drm_device *dev, int planea_clock,
2570 sr_entries = roundup(sr_entries / cacheline_size, 1); 2639 sr_entries = roundup(sr_entries / cacheline_size, 1);
2571 DRM_DEBUG("self-refresh entries: %d\n", sr_entries); 2640 DRM_DEBUG("self-refresh entries: %d\n", sr_entries);
2572 I915_WRITE(FW_BLC_SELF, FW_BLC_SELF_EN); 2641 I915_WRITE(FW_BLC_SELF, FW_BLC_SELF_EN);
2642 } else {
2643 /* Turn off self refresh if both pipes are enabled */
2644 I915_WRITE(FW_BLC_SELF, I915_READ(FW_BLC_SELF)
2645 & ~FW_BLC_SELF_EN);
2573 } 2646 }
2574 2647
2575 DRM_DEBUG("Setting FIFO watermarks - A: %d, B: %d, SR %d\n", 2648 DRM_DEBUG("Setting FIFO watermarks - A: %d, B: %d, SR %d\n",
@@ -2598,7 +2671,7 @@ static void i965_update_wm(struct drm_device *dev, int planea_clock,
2598 /* Calc sr entries for one plane configs */ 2671 /* Calc sr entries for one plane configs */
2599 if (sr_hdisplay && (!planea_clock || !planeb_clock)) { 2672 if (sr_hdisplay && (!planea_clock || !planeb_clock)) {
2600 /* self-refresh has much higher latency */ 2673 /* self-refresh has much higher latency */
2601 const static int sr_latency_ns = 12000; 2674 static const int sr_latency_ns = 12000;
2602 2675
2603 sr_clock = planea_clock ? planea_clock : planeb_clock; 2676 sr_clock = planea_clock ? planea_clock : planeb_clock;
2604 line_time_us = ((sr_hdisplay * 1000) / sr_clock); 2677 line_time_us = ((sr_hdisplay * 1000) / sr_clock);
@@ -2613,6 +2686,10 @@ static void i965_update_wm(struct drm_device *dev, int planea_clock,
2613 srwm = 1; 2686 srwm = 1;
2614 srwm &= 0x3f; 2687 srwm &= 0x3f;
2615 I915_WRITE(FW_BLC_SELF, FW_BLC_SELF_EN); 2688 I915_WRITE(FW_BLC_SELF, FW_BLC_SELF_EN);
2689 } else {
2690 /* Turn off self refresh if both pipes are enabled */
2691 I915_WRITE(FW_BLC_SELF, I915_READ(FW_BLC_SELF)
2692 & ~FW_BLC_SELF_EN);
2616 } 2693 }
2617 2694
2618 DRM_DEBUG_KMS("Setting FIFO watermarks - A: 8, B: 8, C: 8, SR %d\n", 2695 DRM_DEBUG_KMS("Setting FIFO watermarks - A: 8, B: 8, C: 8, SR %d\n",
@@ -2667,7 +2744,7 @@ static void i9xx_update_wm(struct drm_device *dev, int planea_clock,
2667 if (HAS_FW_BLC(dev) && sr_hdisplay && 2744 if (HAS_FW_BLC(dev) && sr_hdisplay &&
2668 (!planea_clock || !planeb_clock)) { 2745 (!planea_clock || !planeb_clock)) {
2669 /* self-refresh has much higher latency */ 2746 /* self-refresh has much higher latency */
2670 const static int sr_latency_ns = 6000; 2747 static const int sr_latency_ns = 6000;
2671 2748
2672 sr_clock = planea_clock ? planea_clock : planeb_clock; 2749 sr_clock = planea_clock ? planea_clock : planeb_clock;
2673 line_time_us = ((sr_hdisplay * 1000) / sr_clock); 2750 line_time_us = ((sr_hdisplay * 1000) / sr_clock);
@@ -2681,6 +2758,10 @@ static void i9xx_update_wm(struct drm_device *dev, int planea_clock,
2681 if (srwm < 0) 2758 if (srwm < 0)
2682 srwm = 1; 2759 srwm = 1;
2683 I915_WRITE(FW_BLC_SELF, FW_BLC_SELF_EN | (srwm & 0x3f)); 2760 I915_WRITE(FW_BLC_SELF, FW_BLC_SELF_EN | (srwm & 0x3f));
2761 } else {
2762 /* Turn off self refresh if both pipes are enabled */
2763 I915_WRITE(FW_BLC_SELF, I915_READ(FW_BLC_SELF)
2764 & ~FW_BLC_SELF_EN);
2684 } 2765 }
2685 2766
2686 DRM_DEBUG_KMS("Setting FIFO watermarks - A: %d, B: %d, C: %d, SR %d\n", 2767 DRM_DEBUG_KMS("Setting FIFO watermarks - A: %d, B: %d, C: %d, SR %d\n",
@@ -2906,10 +2987,8 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
2906 return -EINVAL; 2987 return -EINVAL;
2907 } 2988 }
2908 2989
2909 if (is_lvds && limit->find_reduced_pll && 2990 if (is_lvds && dev_priv->lvds_downclock_avail) {
2910 dev_priv->lvds_downclock_avail) { 2991 has_reduced_clock = limit->find_pll(limit, crtc,
2911 memcpy(&reduced_clock, &clock, sizeof(intel_clock_t));
2912 has_reduced_clock = limit->find_reduced_pll(limit, crtc,
2913 dev_priv->lvds_downclock, 2992 dev_priv->lvds_downclock,
2914 refclk, 2993 refclk,
2915 &reduced_clock); 2994 &reduced_clock);
@@ -2969,6 +3048,33 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
2969 3048
2970 /* determine panel color depth */ 3049 /* determine panel color depth */
2971 temp = I915_READ(pipeconf_reg); 3050 temp = I915_READ(pipeconf_reg);
3051 temp &= ~PIPE_BPC_MASK;
3052 if (is_lvds) {
3053 int lvds_reg = I915_READ(PCH_LVDS);
3054 /* the BPC will be 6 if it is 18-bit LVDS panel */
3055 if ((lvds_reg & LVDS_A3_POWER_MASK) == LVDS_A3_POWER_UP)
3056 temp |= PIPE_8BPC;
3057 else
3058 temp |= PIPE_6BPC;
3059 } else if (is_edp) {
3060 switch (dev_priv->edp_bpp/3) {
3061 case 8:
3062 temp |= PIPE_8BPC;
3063 break;
3064 case 10:
3065 temp |= PIPE_10BPC;
3066 break;
3067 case 6:
3068 temp |= PIPE_6BPC;
3069 break;
3070 case 12:
3071 temp |= PIPE_12BPC;
3072 break;
3073 }
3074 } else
3075 temp |= PIPE_8BPC;
3076 I915_WRITE(pipeconf_reg, temp);
3077 I915_READ(pipeconf_reg);
2972 3078
2973 switch (temp & PIPE_BPC_MASK) { 3079 switch (temp & PIPE_BPC_MASK) {
2974 case PIPE_8BPC: 3080 case PIPE_8BPC:
@@ -3195,7 +3301,20 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
3195 * appropriately here, but we need to look more thoroughly into how 3301 * appropriately here, but we need to look more thoroughly into how
3196 * panels behave in the two modes. 3302 * panels behave in the two modes.
3197 */ 3303 */
3198 3304 /* set the dithering flag */
3305 if (IS_I965G(dev)) {
3306 if (dev_priv->lvds_dither) {
3307 if (IS_IRONLAKE(dev))
3308 pipeconf |= PIPE_ENABLE_DITHER;
3309 else
3310 lvds |= LVDS_ENABLE_DITHER;
3311 } else {
3312 if (IS_IRONLAKE(dev))
3313 pipeconf &= ~PIPE_ENABLE_DITHER;
3314 else
3315 lvds &= ~LVDS_ENABLE_DITHER;
3316 }
3317 }
3199 I915_WRITE(lvds_reg, lvds); 3318 I915_WRITE(lvds_reg, lvds);
3200 I915_READ(lvds_reg); 3319 I915_READ(lvds_reg);
3201 } 3320 }
@@ -3385,7 +3504,7 @@ static int intel_crtc_cursor_set(struct drm_crtc *crtc,
3385 3504
3386 /* we only need to pin inside GTT if cursor is non-phy */ 3505 /* we only need to pin inside GTT if cursor is non-phy */
3387 mutex_lock(&dev->struct_mutex); 3506 mutex_lock(&dev->struct_mutex);
3388 if (!dev_priv->cursor_needs_physical) { 3507 if (!dev_priv->info->cursor_needs_physical) {
3389 ret = i915_gem_object_pin(bo, PAGE_SIZE); 3508 ret = i915_gem_object_pin(bo, PAGE_SIZE);
3390 if (ret) { 3509 if (ret) {
3391 DRM_ERROR("failed to pin cursor bo\n"); 3510 DRM_ERROR("failed to pin cursor bo\n");
@@ -3420,7 +3539,7 @@ static int intel_crtc_cursor_set(struct drm_crtc *crtc,
3420 I915_WRITE(base, addr); 3539 I915_WRITE(base, addr);
3421 3540
3422 if (intel_crtc->cursor_bo) { 3541 if (intel_crtc->cursor_bo) {
3423 if (dev_priv->cursor_needs_physical) { 3542 if (dev_priv->info->cursor_needs_physical) {
3424 if (intel_crtc->cursor_bo != bo) 3543 if (intel_crtc->cursor_bo != bo)
3425 i915_gem_detach_phys_object(dev, intel_crtc->cursor_bo); 3544 i915_gem_detach_phys_object(dev, intel_crtc->cursor_bo);
3426 } else 3545 } else
@@ -3779,125 +3898,6 @@ static void intel_gpu_idle_timer(unsigned long arg)
3779 queue_work(dev_priv->wq, &dev_priv->idle_work); 3898 queue_work(dev_priv->wq, &dev_priv->idle_work);
3780} 3899}
3781 3900
3782void intel_increase_renderclock(struct drm_device *dev, bool schedule)
3783{
3784 drm_i915_private_t *dev_priv = dev->dev_private;
3785
3786 if (IS_IRONLAKE(dev))
3787 return;
3788
3789 if (!dev_priv->render_reclock_avail) {
3790 DRM_DEBUG_DRIVER("not reclocking render clock\n");
3791 return;
3792 }
3793
3794 /* Restore render clock frequency to original value */
3795 if (IS_G4X(dev) || IS_I9XX(dev))
3796 pci_write_config_word(dev->pdev, GCFGC, dev_priv->orig_clock);
3797 else if (IS_I85X(dev))
3798 pci_write_config_word(dev->pdev, HPLLCC, dev_priv->orig_clock);
3799 DRM_DEBUG_DRIVER("increasing render clock frequency\n");
3800
3801 /* Schedule downclock */
3802 if (schedule)
3803 mod_timer(&dev_priv->idle_timer, jiffies +
3804 msecs_to_jiffies(GPU_IDLE_TIMEOUT));
3805}
3806
3807void intel_decrease_renderclock(struct drm_device *dev)
3808{
3809 drm_i915_private_t *dev_priv = dev->dev_private;
3810
3811 if (IS_IRONLAKE(dev))
3812 return;
3813
3814 if (!dev_priv->render_reclock_avail) {
3815 DRM_DEBUG_DRIVER("not reclocking render clock\n");
3816 return;
3817 }
3818
3819 if (IS_G4X(dev)) {
3820 u16 gcfgc;
3821
3822 /* Adjust render clock... */
3823 pci_read_config_word(dev->pdev, GCFGC, &gcfgc);
3824
3825 /* Down to minimum... */
3826 gcfgc &= ~GM45_GC_RENDER_CLOCK_MASK;
3827 gcfgc |= GM45_GC_RENDER_CLOCK_266_MHZ;
3828
3829 pci_write_config_word(dev->pdev, GCFGC, gcfgc);
3830 } else if (IS_I965G(dev)) {
3831 u16 gcfgc;
3832
3833 /* Adjust render clock... */
3834 pci_read_config_word(dev->pdev, GCFGC, &gcfgc);
3835
3836 /* Down to minimum... */
3837 gcfgc &= ~I965_GC_RENDER_CLOCK_MASK;
3838 gcfgc |= I965_GC_RENDER_CLOCK_267_MHZ;
3839
3840 pci_write_config_word(dev->pdev, GCFGC, gcfgc);
3841 } else if (IS_I945G(dev) || IS_I945GM(dev)) {
3842 u16 gcfgc;
3843
3844 /* Adjust render clock... */
3845 pci_read_config_word(dev->pdev, GCFGC, &gcfgc);
3846
3847 /* Down to minimum... */
3848 gcfgc &= ~I945_GC_RENDER_CLOCK_MASK;
3849 gcfgc |= I945_GC_RENDER_CLOCK_166_MHZ;
3850
3851 pci_write_config_word(dev->pdev, GCFGC, gcfgc);
3852 } else if (IS_I915G(dev)) {
3853 u16 gcfgc;
3854
3855 /* Adjust render clock... */
3856 pci_read_config_word(dev->pdev, GCFGC, &gcfgc);
3857
3858 /* Down to minimum... */
3859 gcfgc &= ~I915_GC_RENDER_CLOCK_MASK;
3860 gcfgc |= I915_GC_RENDER_CLOCK_166_MHZ;
3861
3862 pci_write_config_word(dev->pdev, GCFGC, gcfgc);
3863 } else if (IS_I85X(dev)) {
3864 u16 hpllcc;
3865
3866 /* Adjust render clock... */
3867 pci_read_config_word(dev->pdev, HPLLCC, &hpllcc);
3868
3869 /* Up to maximum... */
3870 hpllcc &= ~GC_CLOCK_CONTROL_MASK;
3871 hpllcc |= GC_CLOCK_133_200;
3872
3873 pci_write_config_word(dev->pdev, HPLLCC, hpllcc);
3874 }
3875 DRM_DEBUG_DRIVER("decreasing render clock frequency\n");
3876}
3877
3878/* Note that no increase function is needed for this - increase_renderclock()
3879 * will also rewrite these bits
3880 */
3881void intel_decrease_displayclock(struct drm_device *dev)
3882{
3883 if (IS_IRONLAKE(dev))
3884 return;
3885
3886 if (IS_I945G(dev) || IS_I945GM(dev) || IS_I915G(dev) ||
3887 IS_I915GM(dev)) {
3888 u16 gcfgc;
3889
3890 /* Adjust render clock... */
3891 pci_read_config_word(dev->pdev, GCFGC, &gcfgc);
3892
3893 /* Down to minimum... */
3894 gcfgc &= ~0xf0;
3895 gcfgc |= 0x80;
3896
3897 pci_write_config_word(dev->pdev, GCFGC, gcfgc);
3898 }
3899}
3900
3901#define CRTC_IDLE_TIMEOUT 1000 /* ms */ 3901#define CRTC_IDLE_TIMEOUT 1000 /* ms */
3902 3902
3903static void intel_crtc_idle_timer(unsigned long arg) 3903static void intel_crtc_idle_timer(unsigned long arg)
@@ -4011,12 +4011,6 @@ static void intel_idle_update(struct work_struct *work)
4011 4011
4012 mutex_lock(&dev->struct_mutex); 4012 mutex_lock(&dev->struct_mutex);
4013 4013
4014 /* GPU isn't processing, downclock it. */
4015 if (!dev_priv->busy) {
4016 intel_decrease_renderclock(dev);
4017 intel_decrease_displayclock(dev);
4018 }
4019
4020 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { 4014 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
4021 /* Skip inactive CRTCs */ 4015 /* Skip inactive CRTCs */
4022 if (!crtc->fb) 4016 if (!crtc->fb)
@@ -4050,13 +4044,11 @@ void intel_mark_busy(struct drm_device *dev, struct drm_gem_object *obj)
4050 if (!drm_core_check_feature(dev, DRIVER_MODESET)) 4044 if (!drm_core_check_feature(dev, DRIVER_MODESET))
4051 return; 4045 return;
4052 4046
4053 if (!dev_priv->busy) { 4047 if (!dev_priv->busy)
4054 dev_priv->busy = true; 4048 dev_priv->busy = true;
4055 intel_increase_renderclock(dev, true); 4049 else
4056 } else {
4057 mod_timer(&dev_priv->idle_timer, jiffies + 4050 mod_timer(&dev_priv->idle_timer, jiffies +
4058 msecs_to_jiffies(GPU_IDLE_TIMEOUT)); 4051 msecs_to_jiffies(GPU_IDLE_TIMEOUT));
4059 }
4060 4052
4061 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { 4053 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
4062 if (!crtc->fb) 4054 if (!crtc->fb)
@@ -4089,7 +4081,8 @@ static void intel_crtc_destroy(struct drm_crtc *crtc)
4089struct intel_unpin_work { 4081struct intel_unpin_work {
4090 struct work_struct work; 4082 struct work_struct work;
4091 struct drm_device *dev; 4083 struct drm_device *dev;
4092 struct drm_gem_object *obj; 4084 struct drm_gem_object *old_fb_obj;
4085 struct drm_gem_object *pending_flip_obj;
4093 struct drm_pending_vblank_event *event; 4086 struct drm_pending_vblank_event *event;
4094 int pending; 4087 int pending;
4095}; 4088};
@@ -4100,8 +4093,9 @@ static void intel_unpin_work_fn(struct work_struct *__work)
4100 container_of(__work, struct intel_unpin_work, work); 4093 container_of(__work, struct intel_unpin_work, work);
4101 4094
4102 mutex_lock(&work->dev->struct_mutex); 4095 mutex_lock(&work->dev->struct_mutex);
4103 i915_gem_object_unpin(work->obj); 4096 i915_gem_object_unpin(work->old_fb_obj);
4104 drm_gem_object_unreference(work->obj); 4097 drm_gem_object_unreference(work->pending_flip_obj);
4098 drm_gem_object_unreference(work->old_fb_obj);
4105 mutex_unlock(&work->dev->struct_mutex); 4099 mutex_unlock(&work->dev->struct_mutex);
4106 kfree(work); 4100 kfree(work);
4107} 4101}
@@ -4124,6 +4118,12 @@ void intel_finish_page_flip(struct drm_device *dev, int pipe)
4124 spin_lock_irqsave(&dev->event_lock, flags); 4118 spin_lock_irqsave(&dev->event_lock, flags);
4125 work = intel_crtc->unpin_work; 4119 work = intel_crtc->unpin_work;
4126 if (work == NULL || !work->pending) { 4120 if (work == NULL || !work->pending) {
4121 if (work && !work->pending) {
4122 obj_priv = work->pending_flip_obj->driver_private;
4123 DRM_DEBUG_DRIVER("flip finish: %p (%d) not pending?\n",
4124 obj_priv,
4125 atomic_read(&obj_priv->pending_flip));
4126 }
4127 spin_unlock_irqrestore(&dev->event_lock, flags); 4127 spin_unlock_irqrestore(&dev->event_lock, flags);
4128 return; 4128 return;
4129 } 4129 }
@@ -4144,8 +4144,11 @@ void intel_finish_page_flip(struct drm_device *dev, int pipe)
4144 4144
4145 spin_unlock_irqrestore(&dev->event_lock, flags); 4145 spin_unlock_irqrestore(&dev->event_lock, flags);
4146 4146
4147 obj_priv = work->obj->driver_private; 4147 obj_priv = work->pending_flip_obj->driver_private;
4148 if (atomic_dec_and_test(&obj_priv->pending_flip)) 4148
4149 /* Initial scanout buffer will have a 0 pending flip count */
4150 if ((atomic_read(&obj_priv->pending_flip) == 0) ||
4151 atomic_dec_and_test(&obj_priv->pending_flip))
4149 DRM_WAKEUP(&dev_priv->pending_flip_queue); 4152 DRM_WAKEUP(&dev_priv->pending_flip_queue);
4150 schedule_work(&work->work); 4153 schedule_work(&work->work);
4151} 4154}
@@ -4158,8 +4161,11 @@ void intel_prepare_page_flip(struct drm_device *dev, int plane)
4158 unsigned long flags; 4161 unsigned long flags;
4159 4162
4160 spin_lock_irqsave(&dev->event_lock, flags); 4163 spin_lock_irqsave(&dev->event_lock, flags);
4161 if (intel_crtc->unpin_work) 4164 if (intel_crtc->unpin_work) {
4162 intel_crtc->unpin_work->pending = 1; 4165 intel_crtc->unpin_work->pending = 1;
4166 } else {
4167 DRM_DEBUG_DRIVER("preparing flip with no unpin work?\n");
4168 }
4163 spin_unlock_irqrestore(&dev->event_lock, flags); 4169 spin_unlock_irqrestore(&dev->event_lock, flags);
4164} 4170}
4165 4171
@@ -4175,7 +4181,8 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
4175 struct intel_crtc *intel_crtc = to_intel_crtc(crtc); 4181 struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
4176 struct intel_unpin_work *work; 4182 struct intel_unpin_work *work;
4177 unsigned long flags; 4183 unsigned long flags;
4178 int ret; 4184 int pipesrc_reg = (intel_crtc->pipe == 0) ? PIPEASRC : PIPEBSRC;
4185 int ret, pipesrc;
4179 RING_LOCALS; 4186 RING_LOCALS;
4180 4187
4181 work = kzalloc(sizeof *work, GFP_KERNEL); 4188 work = kzalloc(sizeof *work, GFP_KERNEL);
@@ -4187,12 +4194,13 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
4187 work->event = event; 4194 work->event = event;
4188 work->dev = crtc->dev; 4195 work->dev = crtc->dev;
4189 intel_fb = to_intel_framebuffer(crtc->fb); 4196 intel_fb = to_intel_framebuffer(crtc->fb);
4190 work->obj = intel_fb->obj; 4197 work->old_fb_obj = intel_fb->obj;
4191 INIT_WORK(&work->work, intel_unpin_work_fn); 4198 INIT_WORK(&work->work, intel_unpin_work_fn);
4192 4199
4193 /* We borrow the event spin lock for protecting unpin_work */ 4200 /* We borrow the event spin lock for protecting unpin_work */
4194 spin_lock_irqsave(&dev->event_lock, flags); 4201 spin_lock_irqsave(&dev->event_lock, flags);
4195 if (intel_crtc->unpin_work) { 4202 if (intel_crtc->unpin_work) {
4203 DRM_DEBUG_DRIVER("flip queue: crtc already busy\n");
4196 spin_unlock_irqrestore(&dev->event_lock, flags); 4204 spin_unlock_irqrestore(&dev->event_lock, flags);
4197 kfree(work); 4205 kfree(work);
4198 mutex_unlock(&dev->struct_mutex); 4206 mutex_unlock(&dev->struct_mutex);
@@ -4206,19 +4214,24 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
4206 4214
4207 ret = intel_pin_and_fence_fb_obj(dev, obj); 4215 ret = intel_pin_and_fence_fb_obj(dev, obj);
4208 if (ret != 0) { 4216 if (ret != 0) {
4217 DRM_DEBUG_DRIVER("flip queue: %p pin & fence failed\n",
4218 obj->driver_private);
4209 kfree(work); 4219 kfree(work);
4220 intel_crtc->unpin_work = NULL;
4210 mutex_unlock(&dev->struct_mutex); 4221 mutex_unlock(&dev->struct_mutex);
4211 return ret; 4222 return ret;
4212 } 4223 }
4213 4224
4214 /* Reference the old fb object for the scheduled work. */ 4225 /* Reference the objects for the scheduled work. */
4215 drm_gem_object_reference(work->obj); 4226 drm_gem_object_reference(work->old_fb_obj);
4227 drm_gem_object_reference(obj);
4216 4228
4217 crtc->fb = fb; 4229 crtc->fb = fb;
4218 i915_gem_object_flush_write_domain(obj); 4230 i915_gem_object_flush_write_domain(obj);
4219 drm_vblank_get(dev, intel_crtc->pipe); 4231 drm_vblank_get(dev, intel_crtc->pipe);
4220 obj_priv = obj->driver_private; 4232 obj_priv = obj->driver_private;
4221 atomic_inc(&obj_priv->pending_flip); 4233 atomic_inc(&obj_priv->pending_flip);
4234 work->pending_flip_obj = obj;
4222 4235
4223 BEGIN_LP_RING(4); 4236 BEGIN_LP_RING(4);
4224 OUT_RING(MI_DISPLAY_FLIP | 4237 OUT_RING(MI_DISPLAY_FLIP |
@@ -4226,7 +4239,8 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
4226 OUT_RING(fb->pitch); 4239 OUT_RING(fb->pitch);
4227 if (IS_I965G(dev)) { 4240 if (IS_I965G(dev)) {
4228 OUT_RING(obj_priv->gtt_offset | obj_priv->tiling_mode); 4241 OUT_RING(obj_priv->gtt_offset | obj_priv->tiling_mode);
4229 OUT_RING((fb->width << 16) | fb->height); 4242 pipesrc = I915_READ(pipesrc_reg);
4243 OUT_RING(pipesrc & 0x0fff0fff);
4230 } else { 4244 } else {
4231 OUT_RING(obj_priv->gtt_offset); 4245 OUT_RING(obj_priv->gtt_offset);
4232 OUT_RING(MI_NOOP); 4246 OUT_RING(MI_NOOP);
@@ -4400,29 +4414,43 @@ static void intel_setup_outputs(struct drm_device *dev)
4400 bool found = false; 4414 bool found = false;
4401 4415
4402 if (I915_READ(SDVOB) & SDVO_DETECTED) { 4416 if (I915_READ(SDVOB) & SDVO_DETECTED) {
4417 DRM_DEBUG_KMS("probing SDVOB\n");
4403 found = intel_sdvo_init(dev, SDVOB); 4418 found = intel_sdvo_init(dev, SDVOB);
4404 if (!found && SUPPORTS_INTEGRATED_HDMI(dev)) 4419 if (!found && SUPPORTS_INTEGRATED_HDMI(dev)) {
4420 DRM_DEBUG_KMS("probing HDMI on SDVOB\n");
4405 intel_hdmi_init(dev, SDVOB); 4421 intel_hdmi_init(dev, SDVOB);
4422 }
4406 4423
4407 if (!found && SUPPORTS_INTEGRATED_DP(dev)) 4424 if (!found && SUPPORTS_INTEGRATED_DP(dev)) {
4425 DRM_DEBUG_KMS("probing DP_B\n");
4408 intel_dp_init(dev, DP_B); 4426 intel_dp_init(dev, DP_B);
4427 }
4409 } 4428 }
4410 4429
4411 /* Before G4X SDVOC doesn't have its own detect register */ 4430 /* Before G4X SDVOC doesn't have its own detect register */
4412 4431
4413 if (I915_READ(SDVOB) & SDVO_DETECTED) 4432 if (I915_READ(SDVOB) & SDVO_DETECTED) {
4433 DRM_DEBUG_KMS("probing SDVOC\n");
4414 found = intel_sdvo_init(dev, SDVOC); 4434 found = intel_sdvo_init(dev, SDVOC);
4435 }
4415 4436
4416 if (!found && (I915_READ(SDVOC) & SDVO_DETECTED)) { 4437 if (!found && (I915_READ(SDVOC) & SDVO_DETECTED)) {
4417 4438
4418 if (SUPPORTS_INTEGRATED_HDMI(dev)) 4439 if (SUPPORTS_INTEGRATED_HDMI(dev)) {
4440 DRM_DEBUG_KMS("probing HDMI on SDVOC\n");
4419 intel_hdmi_init(dev, SDVOC); 4441 intel_hdmi_init(dev, SDVOC);
4420 if (SUPPORTS_INTEGRATED_DP(dev)) 4442 }
4443 if (SUPPORTS_INTEGRATED_DP(dev)) {
4444 DRM_DEBUG_KMS("probing DP_C\n");
4421 intel_dp_init(dev, DP_C); 4445 intel_dp_init(dev, DP_C);
4446 }
4422 } 4447 }
4423 4448
4424 if (SUPPORTS_INTEGRATED_DP(dev) && (I915_READ(DP_D) & DP_DETECTED)) 4449 if (SUPPORTS_INTEGRATED_DP(dev) &&
4450 (I915_READ(DP_D) & DP_DETECTED)) {
4451 DRM_DEBUG_KMS("probing DP_D\n");
4425 intel_dp_init(dev, DP_D); 4452 intel_dp_init(dev, DP_D);
4453 }
4426 } else if (IS_I8XX(dev)) 4454 } else if (IS_I8XX(dev))
4427 intel_dvo_init(dev); 4455 intel_dvo_init(dev);
4428 4456
@@ -4527,6 +4555,42 @@ static const struct drm_mode_config_funcs intel_mode_funcs = {
4527 .fb_changed = intelfb_probe, 4555 .fb_changed = intelfb_probe,
4528}; 4556};
4529 4557
4558static struct drm_gem_object *
4559intel_alloc_power_context(struct drm_device *dev)
4560{
4561 struct drm_gem_object *pwrctx;
4562 int ret;
4563
4564 pwrctx = drm_gem_object_alloc(dev, 4096);
4565 if (!pwrctx) {
4566 DRM_DEBUG("failed to alloc power context, RC6 disabled\n");
4567 return NULL;
4568 }
4569
4570 mutex_lock(&dev->struct_mutex);
4571 ret = i915_gem_object_pin(pwrctx, 4096);
4572 if (ret) {
4573 DRM_ERROR("failed to pin power context: %d\n", ret);
4574 goto err_unref;
4575 }
4576
4577 ret = i915_gem_object_set_to_gtt_domain(pwrctx, 1);
4578 if (ret) {
4579 DRM_ERROR("failed to set-domain on power context: %d\n", ret);
4580 goto err_unpin;
4581 }
4582 mutex_unlock(&dev->struct_mutex);
4583
4584 return pwrctx;
4585
4586err_unpin:
4587 i915_gem_object_unpin(pwrctx);
4588err_unref:
4589 drm_gem_object_unreference(pwrctx);
4590 mutex_unlock(&dev->struct_mutex);
4591 return NULL;
4592}
4593
4530void intel_init_clock_gating(struct drm_device *dev) 4594void intel_init_clock_gating(struct drm_device *dev)
4531{ 4595{
4532 struct drm_i915_private *dev_priv = dev->dev_private; 4596 struct drm_i915_private *dev_priv = dev->dev_private;
@@ -4579,42 +4643,27 @@ void intel_init_clock_gating(struct drm_device *dev)
4579 * GPU can automatically power down the render unit if given a page 4643 * GPU can automatically power down the render unit if given a page
4580 * to save state. 4644 * to save state.
4581 */ 4645 */
4582 if (I915_HAS_RC6(dev)) { 4646 if (I915_HAS_RC6(dev) && drm_core_check_feature(dev, DRIVER_MODESET)) {
4583 struct drm_gem_object *pwrctx; 4647 struct drm_i915_gem_object *obj_priv = NULL;
4584 struct drm_i915_gem_object *obj_priv;
4585 int ret;
4586 4648
4587 if (dev_priv->pwrctx) { 4649 if (dev_priv->pwrctx) {
4588 obj_priv = dev_priv->pwrctx->driver_private; 4650 obj_priv = dev_priv->pwrctx->driver_private;
4589 } else { 4651 } else {
4590 pwrctx = drm_gem_object_alloc(dev, 4096); 4652 struct drm_gem_object *pwrctx;
4591 if (!pwrctx) {
4592 DRM_DEBUG("failed to alloc power context, "
4593 "RC6 disabled\n");
4594 goto out;
4595 }
4596 4653
4597 ret = i915_gem_object_pin(pwrctx, 4096); 4654 pwrctx = intel_alloc_power_context(dev);
4598 if (ret) { 4655 if (pwrctx) {
4599 DRM_ERROR("failed to pin power context: %d\n", 4656 dev_priv->pwrctx = pwrctx;
4600 ret); 4657 obj_priv = pwrctx->driver_private;
4601 drm_gem_object_unreference(pwrctx);
4602 goto out;
4603 } 4658 }
4604
4605 i915_gem_object_set_to_gtt_domain(pwrctx, 1);
4606
4607 dev_priv->pwrctx = pwrctx;
4608 obj_priv = pwrctx->driver_private;
4609 } 4659 }
4610 4660
4611 I915_WRITE(PWRCTXA, obj_priv->gtt_offset | PWRCTX_EN); 4661 if (obj_priv) {
4612 I915_WRITE(MCHBAR_RENDER_STANDBY, 4662 I915_WRITE(PWRCTXA, obj_priv->gtt_offset | PWRCTX_EN);
4613 I915_READ(MCHBAR_RENDER_STANDBY) & ~RCX_SW_EXIT); 4663 I915_WRITE(MCHBAR_RENDER_STANDBY,
4664 I915_READ(MCHBAR_RENDER_STANDBY) & ~RCX_SW_EXIT);
4665 }
4614 } 4666 }
4615
4616out:
4617 return;
4618} 4667}
4619 4668
4620/* Set up chip specific display functions */ 4669/* Set up chip specific display functions */
@@ -4770,7 +4819,6 @@ void intel_modeset_cleanup(struct drm_device *dev)
4770 del_timer_sync(&intel_crtc->idle_timer); 4819 del_timer_sync(&intel_crtc->idle_timer);
4771 } 4820 }
4772 4821
4773 intel_increase_renderclock(dev, false);
4774 del_timer_sync(&dev_priv->idle_timer); 4822 del_timer_sync(&dev_priv->idle_timer);
4775 4823
4776 if (dev_priv->display.disable_fbc) 4824 if (dev_priv->display.disable_fbc)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 4e7aa8b7b938..439506cefc14 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -125,9 +125,15 @@ intel_dp_link_clock(uint8_t link_bw)
125 125
126/* I think this is a fiction */ 126/* I think this is a fiction */
127static int 127static int
128intel_dp_link_required(int pixel_clock) 128intel_dp_link_required(struct drm_device *dev,
129 struct intel_output *intel_output, int pixel_clock)
129{ 130{
130 return pixel_clock * 3; 131 struct drm_i915_private *dev_priv = dev->dev_private;
132
133 if (IS_eDP(intel_output))
134 return (pixel_clock * dev_priv->edp_bpp) / 8;
135 else
136 return pixel_clock * 3;
131} 137}
132 138
133static int 139static int
@@ -138,7 +144,8 @@ intel_dp_mode_valid(struct drm_connector *connector,
138 int max_link_clock = intel_dp_link_clock(intel_dp_max_link_bw(intel_output)); 144 int max_link_clock = intel_dp_link_clock(intel_dp_max_link_bw(intel_output));
139 int max_lanes = intel_dp_max_lane_count(intel_output); 145 int max_lanes = intel_dp_max_lane_count(intel_output);
140 146
141 if (intel_dp_link_required(mode->clock) > max_link_clock * max_lanes) 147 if (intel_dp_link_required(connector->dev, intel_output, mode->clock)
148 > max_link_clock * max_lanes)
142 return MODE_CLOCK_HIGH; 149 return MODE_CLOCK_HIGH;
143 150
144 if (mode->clock < 10000) 151 if (mode->clock < 10000)
@@ -492,7 +499,8 @@ intel_dp_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode,
492 for (clock = 0; clock <= max_clock; clock++) { 499 for (clock = 0; clock <= max_clock; clock++) {
493 int link_avail = intel_dp_link_clock(bws[clock]) * lane_count; 500 int link_avail = intel_dp_link_clock(bws[clock]) * lane_count;
494 501
495 if (intel_dp_link_required(mode->clock) <= link_avail) { 502 if (intel_dp_link_required(encoder->dev, intel_output, mode->clock)
503 <= link_avail) {
496 dp_priv->link_bw = bws[clock]; 504 dp_priv->link_bw = bws[clock];
497 dp_priv->lane_count = lane_count; 505 dp_priv->lane_count = lane_count;
498 adjusted_mode->clock = intel_dp_link_clock(dp_priv->link_bw); 506 adjusted_mode->clock = intel_dp_link_clock(dp_priv->link_bw);
@@ -1289,53 +1297,7 @@ intel_dp_hot_plug(struct intel_output *intel_output)
1289 if (dp_priv->dpms_mode == DRM_MODE_DPMS_ON) 1297 if (dp_priv->dpms_mode == DRM_MODE_DPMS_ON)
1290 intel_dp_check_link_status(intel_output); 1298 intel_dp_check_link_status(intel_output);
1291} 1299}
1292/* 1300
1293 * Enumerate the child dev array parsed from VBT to check whether
1294 * the given DP is present.
1295 * If it is present, return 1.
1296 * If it is not present, return false.
1297 * If no child dev is parsed from VBT, it is assumed that the given
1298 * DP is present.
1299 */
1300static int dp_is_present_in_vbt(struct drm_device *dev, int dp_reg)
1301{
1302 struct drm_i915_private *dev_priv = dev->dev_private;
1303 struct child_device_config *p_child;
1304 int i, dp_port, ret;
1305
1306 if (!dev_priv->child_dev_num)
1307 return 1;
1308
1309 dp_port = 0;
1310 if (dp_reg == DP_B || dp_reg == PCH_DP_B)
1311 dp_port = PORT_IDPB;
1312 else if (dp_reg == DP_C || dp_reg == PCH_DP_C)
1313 dp_port = PORT_IDPC;
1314 else if (dp_reg == DP_D || dp_reg == PCH_DP_D)
1315 dp_port = PORT_IDPD;
1316
1317 ret = 0;
1318 for (i = 0; i < dev_priv->child_dev_num; i++) {
1319 p_child = dev_priv->child_dev + i;
1320 /*
1321 * If the device type is not DP, continue.
1322 */
1323 if (p_child->device_type != DEVICE_TYPE_DP &&
1324 p_child->device_type != DEVICE_TYPE_eDP)
1325 continue;
1326 /* Find the eDP port */
1327 if (dp_reg == DP_A && p_child->device_type == DEVICE_TYPE_eDP) {
1328 ret = 1;
1329 break;
1330 }
1331 /* Find the DP port */
1332 if (p_child->dvo_port == dp_port) {
1333 ret = 1;
1334 break;
1335 }
1336 }
1337 return ret;
1338}
1339void 1301void
1340intel_dp_init(struct drm_device *dev, int output_reg) 1302intel_dp_init(struct drm_device *dev, int output_reg)
1341{ 1303{
@@ -1345,10 +1307,6 @@ intel_dp_init(struct drm_device *dev, int output_reg)
1345 struct intel_dp_priv *dp_priv; 1307 struct intel_dp_priv *dp_priv;
1346 const char *name = NULL; 1308 const char *name = NULL;
1347 1309
1348 if (!dp_is_present_in_vbt(dev, output_reg)) {
1349 DRM_DEBUG_KMS("DP is not present. Ignore it\n");
1350 return;
1351 }
1352 intel_output = kcalloc(sizeof(struct intel_output) + 1310 intel_output = kcalloc(sizeof(struct intel_output) +
1353 sizeof(struct intel_dp_priv), 1, GFP_KERNEL); 1311 sizeof(struct intel_dp_priv), 1, GFP_KERNEL);
1354 if (!intel_output) 1312 if (!intel_output)
@@ -1373,11 +1331,10 @@ intel_dp_init(struct drm_device *dev, int output_reg)
1373 else if (output_reg == DP_D || output_reg == PCH_DP_D) 1331 else if (output_reg == DP_D || output_reg == PCH_DP_D)
1374 intel_output->clone_mask = (1 << INTEL_DP_D_CLONE_BIT); 1332 intel_output->clone_mask = (1 << INTEL_DP_D_CLONE_BIT);
1375 1333
1376 if (IS_eDP(intel_output)) { 1334 if (IS_eDP(intel_output))
1377 intel_output->crtc_mask = (1 << 1);
1378 intel_output->clone_mask = (1 << INTEL_EDP_CLONE_BIT); 1335 intel_output->clone_mask = (1 << INTEL_EDP_CLONE_BIT);
1379 } else 1336
1380 intel_output->crtc_mask = (1 << 0) | (1 << 1); 1337 intel_output->crtc_mask = (1 << 0) | (1 << 1);
1381 connector->interlace_allowed = true; 1338 connector->interlace_allowed = true;
1382 connector->doublescan_allowed = 0; 1339 connector->doublescan_allowed = 0;
1383 1340
@@ -1402,14 +1359,20 @@ intel_dp_init(struct drm_device *dev, int output_reg)
1402 break; 1359 break;
1403 case DP_B: 1360 case DP_B:
1404 case PCH_DP_B: 1361 case PCH_DP_B:
1362 dev_priv->hotplug_supported_mask |=
1363 HDMIB_HOTPLUG_INT_STATUS;
1405 name = "DPDDC-B"; 1364 name = "DPDDC-B";
1406 break; 1365 break;
1407 case DP_C: 1366 case DP_C:
1408 case PCH_DP_C: 1367 case PCH_DP_C:
1368 dev_priv->hotplug_supported_mask |=
1369 HDMIC_HOTPLUG_INT_STATUS;
1409 name = "DPDDC-C"; 1370 name = "DPDDC-C";
1410 break; 1371 break;
1411 case DP_D: 1372 case DP_D:
1412 case PCH_DP_D: 1373 case PCH_DP_D:
1374 dev_priv->hotplug_supported_mask |=
1375 HDMID_HOTPLUG_INT_STATUS;
1413 name = "DPDDC-D"; 1376 name = "DPDDC-D";
1414 break; 1377 break;
1415 } 1378 }
diff --git a/drivers/gpu/drm/i915/intel_fb.c b/drivers/gpu/drm/i915/intel_fb.c
index 371d753e362b..aaabbcbe5905 100644
--- a/drivers/gpu/drm/i915/intel_fb.c
+++ b/drivers/gpu/drm/i915/intel_fb.c
@@ -148,7 +148,7 @@ static int intelfb_create(struct drm_device *dev, uint32_t fb_width,
148 148
149 mutex_lock(&dev->struct_mutex); 149 mutex_lock(&dev->struct_mutex);
150 150
151 ret = i915_gem_object_pin(fbo, PAGE_SIZE); 151 ret = i915_gem_object_pin(fbo, 64*1024);
152 if (ret) { 152 if (ret) {
153 DRM_ERROR("failed to pin fb: %d\n", ret); 153 DRM_ERROR("failed to pin fb: %d\n", ret);
154 goto out_unref; 154 goto out_unref;
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index f04dbbe7d400..0e268deed761 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -225,52 +225,6 @@ static const struct drm_encoder_funcs intel_hdmi_enc_funcs = {
225 .destroy = intel_hdmi_enc_destroy, 225 .destroy = intel_hdmi_enc_destroy,
226}; 226};
227 227
228/*
229 * Enumerate the child dev array parsed from VBT to check whether
230 * the given HDMI is present.
231 * If it is present, return 1.
232 * If it is not present, return false.
233 * If no child dev is parsed from VBT, it assumes that the given
234 * HDMI is present.
235 */
236static int hdmi_is_present_in_vbt(struct drm_device *dev, int hdmi_reg)
237{
238 struct drm_i915_private *dev_priv = dev->dev_private;
239 struct child_device_config *p_child;
240 int i, hdmi_port, ret;
241
242 if (!dev_priv->child_dev_num)
243 return 1;
244
245 if (hdmi_reg == SDVOB)
246 hdmi_port = DVO_B;
247 else if (hdmi_reg == SDVOC)
248 hdmi_port = DVO_C;
249 else if (hdmi_reg == HDMIB)
250 hdmi_port = DVO_B;
251 else if (hdmi_reg == HDMIC)
252 hdmi_port = DVO_C;
253 else if (hdmi_reg == HDMID)
254 hdmi_port = DVO_D;
255 else
256 return 0;
257
258 ret = 0;
259 for (i = 0; i < dev_priv->child_dev_num; i++) {
260 p_child = dev_priv->child_dev + i;
261 /*
262 * If the device type is not HDMI, continue.
263 */
264 if (p_child->device_type != DEVICE_TYPE_HDMI)
265 continue;
266 /* Find the HDMI port */
267 if (p_child->dvo_port == hdmi_port) {
268 ret = 1;
269 break;
270 }
271 }
272 return ret;
273}
274void intel_hdmi_init(struct drm_device *dev, int sdvox_reg) 228void intel_hdmi_init(struct drm_device *dev, int sdvox_reg)
275{ 229{
276 struct drm_i915_private *dev_priv = dev->dev_private; 230 struct drm_i915_private *dev_priv = dev->dev_private;
@@ -278,10 +232,6 @@ void intel_hdmi_init(struct drm_device *dev, int sdvox_reg)
278 struct intel_output *intel_output; 232 struct intel_output *intel_output;
279 struct intel_hdmi_priv *hdmi_priv; 233 struct intel_hdmi_priv *hdmi_priv;
280 234
281 if (!hdmi_is_present_in_vbt(dev, sdvox_reg)) {
282 DRM_DEBUG_KMS("HDMI is not present. Ignored it \n");
283 return;
284 }
285 intel_output = kcalloc(sizeof(struct intel_output) + 235 intel_output = kcalloc(sizeof(struct intel_output) +
286 sizeof(struct intel_hdmi_priv), 1, GFP_KERNEL); 236 sizeof(struct intel_hdmi_priv), 1, GFP_KERNEL);
287 if (!intel_output) 237 if (!intel_output)
@@ -303,21 +253,26 @@ void intel_hdmi_init(struct drm_device *dev, int sdvox_reg)
303 if (sdvox_reg == SDVOB) { 253 if (sdvox_reg == SDVOB) {
304 intel_output->clone_mask = (1 << INTEL_HDMIB_CLONE_BIT); 254 intel_output->clone_mask = (1 << INTEL_HDMIB_CLONE_BIT);
305 intel_output->ddc_bus = intel_i2c_create(dev, GPIOE, "HDMIB"); 255 intel_output->ddc_bus = intel_i2c_create(dev, GPIOE, "HDMIB");
256 dev_priv->hotplug_supported_mask |= HDMIB_HOTPLUG_INT_STATUS;
306 } else if (sdvox_reg == SDVOC) { 257 } else if (sdvox_reg == SDVOC) {
307 intel_output->clone_mask = (1 << INTEL_HDMIC_CLONE_BIT); 258 intel_output->clone_mask = (1 << INTEL_HDMIC_CLONE_BIT);
308 intel_output->ddc_bus = intel_i2c_create(dev, GPIOD, "HDMIC"); 259 intel_output->ddc_bus = intel_i2c_create(dev, GPIOD, "HDMIC");
260 dev_priv->hotplug_supported_mask |= HDMIC_HOTPLUG_INT_STATUS;
309 } else if (sdvox_reg == HDMIB) { 261 } else if (sdvox_reg == HDMIB) {
310 intel_output->clone_mask = (1 << INTEL_HDMID_CLONE_BIT); 262 intel_output->clone_mask = (1 << INTEL_HDMID_CLONE_BIT);
311 intel_output->ddc_bus = intel_i2c_create(dev, PCH_GPIOE, 263 intel_output->ddc_bus = intel_i2c_create(dev, PCH_GPIOE,
312 "HDMIB"); 264 "HDMIB");
265 dev_priv->hotplug_supported_mask |= HDMIB_HOTPLUG_INT_STATUS;
313 } else if (sdvox_reg == HDMIC) { 266 } else if (sdvox_reg == HDMIC) {
314 intel_output->clone_mask = (1 << INTEL_HDMIE_CLONE_BIT); 267 intel_output->clone_mask = (1 << INTEL_HDMIE_CLONE_BIT);
315 intel_output->ddc_bus = intel_i2c_create(dev, PCH_GPIOD, 268 intel_output->ddc_bus = intel_i2c_create(dev, PCH_GPIOD,
316 "HDMIC"); 269 "HDMIC");
270 dev_priv->hotplug_supported_mask |= HDMIC_HOTPLUG_INT_STATUS;
317 } else if (sdvox_reg == HDMID) { 271 } else if (sdvox_reg == HDMID) {
318 intel_output->clone_mask = (1 << INTEL_HDMIF_CLONE_BIT); 272 intel_output->clone_mask = (1 << INTEL_HDMIF_CLONE_BIT);
319 intel_output->ddc_bus = intel_i2c_create(dev, PCH_GPIOF, 273 intel_output->ddc_bus = intel_i2c_create(dev, PCH_GPIOF,
320 "HDMID"); 274 "HDMID");
275 dev_priv->hotplug_supported_mask |= HDMID_HOTPLUG_INT_STATUS;
321 } 276 }
322 if (!intel_output->ddc_bus) 277 if (!intel_output->ddc_bus)
323 goto err_connector; 278 goto err_connector;
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index 3118ce274e67..c2e8a45780d5 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -602,12 +602,47 @@ static void intel_lvds_mode_set(struct drm_encoder *encoder,
602/* Some lid devices report incorrect lid status, assume they're connected */ 602/* Some lid devices report incorrect lid status, assume they're connected */
603static const struct dmi_system_id bad_lid_status[] = { 603static const struct dmi_system_id bad_lid_status[] = {
604 { 604 {
605 .ident = "Compaq nx9020",
606 .matches = {
607 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
608 DMI_MATCH(DMI_BOARD_NAME, "3084"),
609 },
610 },
611 {
612 .ident = "Samsung SX20S",
613 .matches = {
614 DMI_MATCH(DMI_SYS_VENDOR, "Samsung Electronics"),
615 DMI_MATCH(DMI_BOARD_NAME, "SX20S"),
616 },
617 },
618 {
605 .ident = "Aspire One", 619 .ident = "Aspire One",
606 .matches = { 620 .matches = {
607 DMI_MATCH(DMI_SYS_VENDOR, "Acer"), 621 DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
608 DMI_MATCH(DMI_PRODUCT_NAME, "Aspire one"), 622 DMI_MATCH(DMI_PRODUCT_NAME, "Aspire one"),
609 }, 623 },
610 }, 624 },
625 {
626 .ident = "Aspire 1810T",
627 .matches = {
628 DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
629 DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 1810T"),
630 },
631 },
632 {
633 .ident = "PC-81005",
634 .matches = {
635 DMI_MATCH(DMI_SYS_VENDOR, "MALATA"),
636 DMI_MATCH(DMI_PRODUCT_NAME, "PC-81005"),
637 },
638 },
639 {
640 .ident = "Clevo M5x0N",
641 .matches = {
642 DMI_MATCH(DMI_SYS_VENDOR, "CLEVO Co."),
643 DMI_MATCH(DMI_BOARD_NAME, "M5x0N"),
644 },
645 },
611 { } 646 { }
612}; 647};
613 648
@@ -622,7 +657,7 @@ static enum drm_connector_status intel_lvds_detect(struct drm_connector *connect
622{ 657{
623 enum drm_connector_status status = connector_status_connected; 658 enum drm_connector_status status = connector_status_connected;
624 659
625 if (!acpi_lid_open() && !dmi_check_system(bad_lid_status)) 660 if (!dmi_check_system(bad_lid_status) && !acpi_lid_open())
626 status = connector_status_disconnected; 661 status = connector_status_disconnected;
627 662
628 return status; 663 return status;
@@ -679,7 +714,14 @@ static int intel_lid_notify(struct notifier_block *nb, unsigned long val,
679 struct drm_i915_private *dev_priv = 714 struct drm_i915_private *dev_priv =
680 container_of(nb, struct drm_i915_private, lid_notifier); 715 container_of(nb, struct drm_i915_private, lid_notifier);
681 struct drm_device *dev = dev_priv->dev; 716 struct drm_device *dev = dev_priv->dev;
717 struct drm_connector *connector = dev_priv->int_lvds_connector;
682 718
719 /*
720 * check and update the status of LVDS connector after receiving
721 * the LID nofication event.
722 */
723 if (connector)
724 connector->status = connector->funcs->detect(connector);
683 if (!acpi_lid_open()) { 725 if (!acpi_lid_open()) {
684 dev_priv->modeset_on_lid = 1; 726 dev_priv->modeset_on_lid = 1;
685 return NOTIFY_OK; 727 return NOTIFY_OK;
@@ -854,65 +896,6 @@ static const struct dmi_system_id intel_no_lvds[] = {
854 { } /* terminating entry */ 896 { } /* terminating entry */
855}; 897};
856 898
857#ifdef CONFIG_ACPI
858/*
859 * check_lid_device -- check whether @handle is an ACPI LID device.
860 * @handle: ACPI device handle
861 * @level : depth in the ACPI namespace tree
862 * @context: the number of LID device when we find the device
863 * @rv: a return value to fill if desired (Not use)
864 */
865static acpi_status
866check_lid_device(acpi_handle handle, u32 level, void *context,
867 void **return_value)
868{
869 struct acpi_device *acpi_dev;
870 int *lid_present = context;
871
872 acpi_dev = NULL;
873 /* Get the acpi device for device handle */
874 if (acpi_bus_get_device(handle, &acpi_dev) || !acpi_dev) {
875 /* If there is no ACPI device for handle, return */
876 return AE_OK;
877 }
878
879 if (!strncmp(acpi_device_hid(acpi_dev), "PNP0C0D", 7))
880 *lid_present = 1;
881
882 return AE_OK;
883}
884
885/**
886 * check whether there exists the ACPI LID device by enumerating the ACPI
887 * device tree.
888 */
889static int intel_lid_present(void)
890{
891 int lid_present = 0;
892
893 if (acpi_disabled) {
894 /* If ACPI is disabled, there is no ACPI device tree to
895 * check, so assume the LID device would have been present.
896 */
897 return 1;
898 }
899
900 acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
901 ACPI_UINT32_MAX,
902 check_lid_device, NULL, &lid_present, NULL);
903
904 return lid_present;
905}
906#else
907static int intel_lid_present(void)
908{
909 /* In the absence of ACPI built in, assume that the LID device would
910 * have been present.
911 */
912 return 1;
913}
914#endif
915
916/** 899/**
917 * intel_find_lvds_downclock - find the reduced downclock for LVDS in EDID 900 * intel_find_lvds_downclock - find the reduced downclock for LVDS in EDID
918 * @dev: drm device 901 * @dev: drm device
@@ -957,7 +940,8 @@ static void intel_find_lvds_downclock(struct drm_device *dev,
957 } 940 }
958 } 941 }
959 mutex_unlock(&dev->mode_config.mutex); 942 mutex_unlock(&dev->mode_config.mutex);
960 if (temp_downclock < panel_fixed_mode->clock) { 943 if (temp_downclock < panel_fixed_mode->clock &&
944 i915_lvds_downclock) {
961 /* We found the downclock for LVDS. */ 945 /* We found the downclock for LVDS. */
962 dev_priv->lvds_downclock_avail = 1; 946 dev_priv->lvds_downclock_avail = 1;
963 dev_priv->lvds_downclock = temp_downclock; 947 dev_priv->lvds_downclock = temp_downclock;
@@ -1031,12 +1015,8 @@ void intel_lvds_init(struct drm_device *dev)
1031 if (dmi_check_system(intel_no_lvds)) 1015 if (dmi_check_system(intel_no_lvds))
1032 return; 1016 return;
1033 1017
1034 /* 1018 if (!lvds_is_present_in_vbt(dev)) {
1035 * Assume LVDS is present if there's an ACPI lid device or if the 1019 DRM_DEBUG_KMS("LVDS is not present in VBT\n");
1036 * device is present in the VBT.
1037 */
1038 if (!lvds_is_present_in_vbt(dev) && !intel_lid_present()) {
1039 DRM_DEBUG_KMS("LVDS is not present in VBT and no lid detected\n");
1040 return; 1020 return;
1041 } 1021 }
1042 1022
@@ -1180,6 +1160,8 @@ out:
1180 DRM_DEBUG_KMS("lid notifier registration failed\n"); 1160 DRM_DEBUG_KMS("lid notifier registration failed\n");
1181 dev_priv->lid_notifier.notifier_call = NULL; 1161 dev_priv->lid_notifier.notifier_call = NULL;
1182 } 1162 }
1163 /* keep the LVDS connector */
1164 dev_priv->int_lvds_connector = connector;
1183 drm_sysfs_connector_add(connector); 1165 drm_sysfs_connector_add(connector);
1184 return; 1166 return;
1185 1167
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index 24a3dc99716c..82678d30ab06 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -462,14 +462,63 @@ static int intel_sdvo_get_pixel_multiplier(struct drm_display_mode *mode)
462} 462}
463 463
464/** 464/**
465 * Don't check status code from this as it switches the bus back to the 465 * Try to read the response after issuie the DDC switch command. But it
466 * SDVO chips which defeats the purpose of doing a bus switch in the first 466 * is noted that we must do the action of reading response and issuing DDC
467 * place. 467 * switch command in one I2C transaction. Otherwise when we try to start
468 * another I2C transaction after issuing the DDC bus switch, it will be
469 * switched to the internal SDVO register.
468 */ 470 */
469static void intel_sdvo_set_control_bus_switch(struct intel_output *intel_output, 471static void intel_sdvo_set_control_bus_switch(struct intel_output *intel_output,
470 u8 target) 472 u8 target)
471{ 473{
472 intel_sdvo_write_cmd(intel_output, SDVO_CMD_SET_CONTROL_BUS_SWITCH, &target, 1); 474 struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv;
475 u8 out_buf[2], cmd_buf[2], ret_value[2], ret;
476 struct i2c_msg msgs[] = {
477 {
478 .addr = sdvo_priv->slave_addr >> 1,
479 .flags = 0,
480 .len = 2,
481 .buf = out_buf,
482 },
483 /* the following two are to read the response */
484 {
485 .addr = sdvo_priv->slave_addr >> 1,
486 .flags = 0,
487 .len = 1,
488 .buf = cmd_buf,
489 },
490 {
491 .addr = sdvo_priv->slave_addr >> 1,
492 .flags = I2C_M_RD,
493 .len = 1,
494 .buf = ret_value,
495 },
496 };
497
498 intel_sdvo_debug_write(intel_output, SDVO_CMD_SET_CONTROL_BUS_SWITCH,
499 &target, 1);
500 /* write the DDC switch command argument */
501 intel_sdvo_write_byte(intel_output, SDVO_I2C_ARG_0, target);
502
503 out_buf[0] = SDVO_I2C_OPCODE;
504 out_buf[1] = SDVO_CMD_SET_CONTROL_BUS_SWITCH;
505 cmd_buf[0] = SDVO_I2C_CMD_STATUS;
506 cmd_buf[1] = 0;
507 ret_value[0] = 0;
508 ret_value[1] = 0;
509
510 ret = i2c_transfer(intel_output->i2c_bus, msgs, 3);
511 if (ret != 3) {
512 /* failure in I2C transfer */
513 DRM_DEBUG_KMS("I2c transfer returned %d\n", ret);
514 return;
515 }
516 if (ret_value[0] != SDVO_CMD_STATUS_SUCCESS) {
517 DRM_DEBUG_KMS("DDC switch command returns response %d\n",
518 ret_value[0]);
519 return;
520 }
521 return;
473} 522}
474 523
475static bool intel_sdvo_set_target_input(struct intel_output *intel_output, bool target_0, bool target_1) 524static bool intel_sdvo_set_target_input(struct intel_output *intel_output, bool target_0, bool target_1)
@@ -1579,6 +1628,32 @@ intel_sdvo_hdmi_sink_detect(struct drm_connector *connector, u16 response)
1579 edid = drm_get_edid(&intel_output->base, 1628 edid = drm_get_edid(&intel_output->base,
1580 intel_output->ddc_bus); 1629 intel_output->ddc_bus);
1581 1630
1631 /* This is only applied to SDVO cards with multiple outputs */
1632 if (edid == NULL && intel_sdvo_multifunc_encoder(intel_output)) {
1633 uint8_t saved_ddc, temp_ddc;
1634 saved_ddc = sdvo_priv->ddc_bus;
1635 temp_ddc = sdvo_priv->ddc_bus >> 1;
1636 /*
1637 * Don't use the 1 as the argument of DDC bus switch to get
1638 * the EDID. It is used for SDVO SPD ROM.
1639 */
1640 while(temp_ddc > 1) {
1641 sdvo_priv->ddc_bus = temp_ddc;
1642 edid = drm_get_edid(&intel_output->base,
1643 intel_output->ddc_bus);
1644 if (edid) {
1645 /*
1646 * When we can get the EDID, maybe it is the
1647 * correct DDC bus. Update it.
1648 */
1649 sdvo_priv->ddc_bus = temp_ddc;
1650 break;
1651 }
1652 temp_ddc >>= 1;
1653 }
1654 if (edid == NULL)
1655 sdvo_priv->ddc_bus = saved_ddc;
1656 }
1582 /* when there is no edid and no monitor is connected with VGA 1657 /* when there is no edid and no monitor is connected with VGA
1583 * port, try to use the CRT ddc to read the EDID for DVI-connector 1658 * port, try to use the CRT ddc to read the EDID for DVI-connector
1584 */ 1659 */
@@ -2270,6 +2345,14 @@ intel_sdvo_output_setup(struct intel_output *intel_output, uint16_t flags)
2270 connector->connector_type = DRM_MODE_CONNECTOR_VGA; 2345 connector->connector_type = DRM_MODE_CONNECTOR_VGA;
2271 intel_output->clone_mask = (1 << INTEL_SDVO_NON_TV_CLONE_BIT) | 2346 intel_output->clone_mask = (1 << INTEL_SDVO_NON_TV_CLONE_BIT) |
2272 (1 << INTEL_ANALOG_CLONE_BIT); 2347 (1 << INTEL_ANALOG_CLONE_BIT);
2348 } else if (flags & SDVO_OUTPUT_CVBS0) {
2349
2350 sdvo_priv->controlled_output = SDVO_OUTPUT_CVBS0;
2351 encoder->encoder_type = DRM_MODE_ENCODER_TVDAC;
2352 connector->connector_type = DRM_MODE_CONNECTOR_SVIDEO;
2353 sdvo_priv->is_tv = true;
2354 intel_output->needs_tv_clock = true;
2355 intel_output->clone_mask = 1 << INTEL_SDVO_TV_CLONE_BIT;
2273 } else if (flags & SDVO_OUTPUT_LVDS0) { 2356 } else if (flags & SDVO_OUTPUT_LVDS0) {
2274 2357
2275 sdvo_priv->controlled_output = SDVO_OUTPUT_LVDS0; 2358 sdvo_priv->controlled_output = SDVO_OUTPUT_LVDS0;
@@ -2662,6 +2745,7 @@ static void intel_sdvo_create_enhance_property(struct drm_connector *connector)
2662 2745
2663bool intel_sdvo_init(struct drm_device *dev, int output_device) 2746bool intel_sdvo_init(struct drm_device *dev, int output_device)
2664{ 2747{
2748 struct drm_i915_private *dev_priv = dev->dev_private;
2665 struct drm_connector *connector; 2749 struct drm_connector *connector;
2666 struct intel_output *intel_output; 2750 struct intel_output *intel_output;
2667 struct intel_sdvo_priv *sdvo_priv; 2751 struct intel_sdvo_priv *sdvo_priv;
@@ -2708,10 +2792,12 @@ bool intel_sdvo_init(struct drm_device *dev, int output_device)
2708 intel_output->ddc_bus = intel_i2c_create(dev, GPIOE, "SDVOB DDC BUS"); 2792 intel_output->ddc_bus = intel_i2c_create(dev, GPIOE, "SDVOB DDC BUS");
2709 sdvo_priv->analog_ddc_bus = intel_i2c_create(dev, GPIOA, 2793 sdvo_priv->analog_ddc_bus = intel_i2c_create(dev, GPIOA,
2710 "SDVOB/VGA DDC BUS"); 2794 "SDVOB/VGA DDC BUS");
2795 dev_priv->hotplug_supported_mask |= SDVOB_HOTPLUG_INT_STATUS;
2711 } else { 2796 } else {
2712 intel_output->ddc_bus = intel_i2c_create(dev, GPIOE, "SDVOC DDC BUS"); 2797 intel_output->ddc_bus = intel_i2c_create(dev, GPIOE, "SDVOC DDC BUS");
2713 sdvo_priv->analog_ddc_bus = intel_i2c_create(dev, GPIOA, 2798 sdvo_priv->analog_ddc_bus = intel_i2c_create(dev, GPIOA,
2714 "SDVOC/VGA DDC BUS"); 2799 "SDVOC/VGA DDC BUS");
2800 dev_priv->hotplug_supported_mask |= SDVOC_HOTPLUG_INT_STATUS;
2715 } 2801 }
2716 2802
2717 if (intel_output->ddc_bus == NULL) 2803 if (intel_output->ddc_bus == NULL)
diff --git a/drivers/gpu/drm/nouveau/Kconfig b/drivers/gpu/drm/nouveau/Kconfig
index b1bc1ea182b8..1175429da102 100644
--- a/drivers/gpu/drm/nouveau/Kconfig
+++ b/drivers/gpu/drm/nouveau/Kconfig
@@ -30,12 +30,11 @@ config DRM_NOUVEAU_DEBUG
30 via debugfs. 30 via debugfs.
31 31
32menu "I2C encoder or helper chips" 32menu "I2C encoder or helper chips"
33 depends on DRM && I2C 33 depends on DRM && DRM_KMS_HELPER && I2C
34 34
35config DRM_I2C_CH7006 35config DRM_I2C_CH7006
36 tristate "Chrontel ch7006 TV encoder" 36 tristate "Chrontel ch7006 TV encoder"
37 depends on DRM_NOUVEAU 37 default m if DRM_NOUVEAU
38 default m
39 help 38 help
40 Support for Chrontel ch7006 and similar TV encoders, found 39 Support for Chrontel ch7006 and similar TV encoders, found
41 on some nVidia video cards. 40 on some nVidia video cards.
diff --git a/drivers/gpu/drm/nouveau/nouveau_acpi.c b/drivers/gpu/drm/nouveau/nouveau_acpi.c
index 1cf488247a16..48227e744753 100644
--- a/drivers/gpu/drm/nouveau/nouveau_acpi.c
+++ b/drivers/gpu/drm/nouveau/nouveau_acpi.c
@@ -90,21 +90,21 @@ int nouveau_hybrid_setup(struct drm_device *dev)
90{ 90{
91 int result; 91 int result;
92 92
93 if (nouveau_dsm(dev, NOUVEAU_DSM_ACTIVE, NOUVEAU_DSM_ACTIVE_QUERY, 93 if (nouveau_dsm(dev, NOUVEAU_DSM_POWER, NOUVEAU_DSM_POWER_STATE,
94 &result)) 94 &result))
95 return -ENODEV; 95 return -ENODEV;
96 96
97 NV_INFO(dev, "_DSM hardware status gave 0x%x\n", result); 97 NV_INFO(dev, "_DSM hardware status gave 0x%x\n", result);
98 98
99 if (result & 0x1) { /* Stamina mode - disable the external GPU */ 99 if (result) { /* Ensure that the external GPU is enabled */
100 nouveau_dsm(dev, NOUVEAU_DSM_LED, NOUVEAU_DSM_LED_SPEED, NULL);
101 nouveau_dsm(dev, NOUVEAU_DSM_POWER, NOUVEAU_DSM_POWER_SPEED,
102 NULL);
103 } else { /* Stamina mode - disable the external GPU */
100 nouveau_dsm(dev, NOUVEAU_DSM_LED, NOUVEAU_DSM_LED_STAMINA, 104 nouveau_dsm(dev, NOUVEAU_DSM_LED, NOUVEAU_DSM_LED_STAMINA,
101 NULL); 105 NULL);
102 nouveau_dsm(dev, NOUVEAU_DSM_POWER, NOUVEAU_DSM_POWER_STAMINA, 106 nouveau_dsm(dev, NOUVEAU_DSM_POWER, NOUVEAU_DSM_POWER_STAMINA,
103 NULL); 107 NULL);
104 } else { /* Ensure that the external GPU is enabled */
105 nouveau_dsm(dev, NOUVEAU_DSM_LED, NOUVEAU_DSM_LED_SPEED, NULL);
106 nouveau_dsm(dev, NOUVEAU_DSM_POWER, NOUVEAU_DSM_POWER_SPEED,
107 NULL);
108 } 108 }
109 109
110 return 0; 110 return 0;
diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c
index ba143972769f..0e9cd1d49130 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bios.c
+++ b/drivers/gpu/drm/nouveau/nouveau_bios.c
@@ -310,63 +310,22 @@ valid_reg(struct nvbios *bios, uint32_t reg)
310 struct drm_device *dev = bios->dev; 310 struct drm_device *dev = bios->dev;
311 311
312 /* C51 has misaligned regs on purpose. Marvellous */ 312 /* C51 has misaligned regs on purpose. Marvellous */
313 if (reg & 0x2 || (reg & 0x1 && dev_priv->VBIOS.pub.chip_version != 0x51)) { 313 if (reg & 0x2 ||
314 NV_ERROR(dev, "========== misaligned reg 0x%08X ==========\n", 314 (reg & 0x1 && dev_priv->VBIOS.pub.chip_version != 0x51))
315 reg); 315 NV_ERROR(dev, "======= misaligned reg 0x%08X =======\n", reg);
316 return 0; 316
317 } 317 /* warn on C51 regs that haven't been verified accessible in tracing */
318 /*
319 * Warn on C51 regs that have not been verified accessible in
320 * mmiotracing
321 */
322 if (reg & 0x1 && dev_priv->VBIOS.pub.chip_version == 0x51 && 318 if (reg & 0x1 && dev_priv->VBIOS.pub.chip_version == 0x51 &&
323 reg != 0x130d && reg != 0x1311 && reg != 0x60081d) 319 reg != 0x130d && reg != 0x1311 && reg != 0x60081d)
324 NV_WARN(dev, "=== C51 misaligned reg 0x%08X not verified ===\n", 320 NV_WARN(dev, "=== C51 misaligned reg 0x%08X not verified ===\n",
325 reg); 321 reg);
326 322
327 /* Trust the init scripts on G80 */ 323 if (reg >= (8*1024*1024)) {
328 if (dev_priv->card_type >= NV_50) 324 NV_ERROR(dev, "=== reg 0x%08x out of mapped bounds ===\n", reg);
329 return 1; 325 return 0;
330
331 #define WITHIN(x, y, z) ((x >= y) && (x < y + z))
332 if (WITHIN(reg, NV_PMC_OFFSET, NV_PMC_SIZE))
333 return 1;
334 if (WITHIN(reg, NV_PBUS_OFFSET, NV_PBUS_SIZE))
335 return 1;
336 if (WITHIN(reg, NV_PFIFO_OFFSET, NV_PFIFO_SIZE))
337 return 1;
338 if (dev_priv->VBIOS.pub.chip_version >= 0x30 &&
339 (WITHIN(reg, 0x4000, 0x600) || reg == 0x00004600))
340 return 1;
341 if (dev_priv->VBIOS.pub.chip_version >= 0x40 &&
342 WITHIN(reg, 0xc000, 0x48))
343 return 1;
344 if (dev_priv->VBIOS.pub.chip_version >= 0x17 && reg == 0x0000d204)
345 return 1;
346 if (dev_priv->VBIOS.pub.chip_version >= 0x40) {
347 if (reg == 0x00011014 || reg == 0x00020328)
348 return 1;
349 if (WITHIN(reg, 0x88000, NV_PBUS_SIZE)) /* new PBUS */
350 return 1;
351 } 326 }
352 if (WITHIN(reg, NV_PFB_OFFSET, NV_PFB_SIZE))
353 return 1;
354 if (WITHIN(reg, NV_PEXTDEV_OFFSET, NV_PEXTDEV_SIZE))
355 return 1;
356 if (WITHIN(reg, NV_PCRTC0_OFFSET, NV_PCRTC0_SIZE * 2))
357 return 1;
358 if (WITHIN(reg, NV_PRAMDAC0_OFFSET, NV_PRAMDAC0_SIZE * 2))
359 return 1;
360 if (dev_priv->VBIOS.pub.chip_version >= 0x17 && reg == 0x0070fff0)
361 return 1;
362 if (dev_priv->VBIOS.pub.chip_version == 0x51 &&
363 WITHIN(reg, NV_PRAMIN_OFFSET, NV_PRAMIN_SIZE))
364 return 1;
365 #undef WITHIN
366
367 NV_ERROR(dev, "========== unknown reg 0x%08X ==========\n", reg);
368 327
369 return 0; 328 return 1;
370} 329}
371 330
372static bool 331static bool
@@ -1906,7 +1865,7 @@ init_compute_mem(struct nvbios *bios, uint16_t offset, struct init_exec *iexec)
1906 1865
1907 struct drm_nouveau_private *dev_priv = bios->dev->dev_private; 1866 struct drm_nouveau_private *dev_priv = bios->dev->dev_private;
1908 1867
1909 if (dev_priv->card_type >= NV_50) 1868 if (dev_priv->card_type >= NV_40)
1910 return 1; 1869 return 1;
1911 1870
1912 /* 1871 /*
@@ -3196,16 +3155,25 @@ static int call_lvds_manufacturer_script(struct drm_device *dev, struct dcb_entr
3196 } 3155 }
3197#ifdef __powerpc__ 3156#ifdef __powerpc__
3198 /* Powerbook specific quirks */ 3157 /* Powerbook specific quirks */
3199 if (script == LVDS_RESET && ((dev->pci_device & 0xffff) == 0x0179 || (dev->pci_device & 0xffff) == 0x0329)) 3158 if ((dev->pci_device & 0xffff) == 0x0179 ||
3200 nv_write_tmds(dev, dcbent->or, 0, 0x02, 0x72); 3159 (dev->pci_device & 0xffff) == 0x0189 ||
3201 if ((dev->pci_device & 0xffff) == 0x0179 || (dev->pci_device & 0xffff) == 0x0189 || (dev->pci_device & 0xffff) == 0x0329) { 3160 (dev->pci_device & 0xffff) == 0x0329) {
3202 if (script == LVDS_PANEL_ON) { 3161 if (script == LVDS_RESET) {
3203 bios_wr32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL, bios_rd32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL) | (1 << 31)); 3162 nv_write_tmds(dev, dcbent->or, 0, 0x02, 0x72);
3204 bios_wr32(bios, NV_PCRTC_GPIO_EXT, bios_rd32(bios, NV_PCRTC_GPIO_EXT) | 1); 3163
3205 } 3164 } else if (script == LVDS_PANEL_ON) {
3206 if (script == LVDS_PANEL_OFF) { 3165 bios_wr32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL,
3207 bios_wr32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL, bios_rd32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL) & ~(1 << 31)); 3166 bios_rd32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL)
3208 bios_wr32(bios, NV_PCRTC_GPIO_EXT, bios_rd32(bios, NV_PCRTC_GPIO_EXT) & ~3); 3167 | (1 << 31));
3168 bios_wr32(bios, NV_PCRTC_GPIO_EXT,
3169 bios_rd32(bios, NV_PCRTC_GPIO_EXT) | 1);
3170
3171 } else if (script == LVDS_PANEL_OFF) {
3172 bios_wr32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL,
3173 bios_rd32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL)
3174 & ~(1 << 31));
3175 bios_wr32(bios, NV_PCRTC_GPIO_EXT,
3176 bios_rd32(bios, NV_PCRTC_GPIO_EXT) & ~3);
3209 } 3177 }
3210 } 3178 }
3211#endif 3179#endif
@@ -3797,7 +3765,6 @@ nouveau_bios_run_display_table(struct drm_device *dev, struct dcb_entry *dcbent,
3797 */ 3765 */
3798 3766
3799 struct drm_nouveau_private *dev_priv = dev->dev_private; 3767 struct drm_nouveau_private *dev_priv = dev->dev_private;
3800 struct init_exec iexec = {true, false};
3801 struct nvbios *bios = &dev_priv->VBIOS; 3768 struct nvbios *bios = &dev_priv->VBIOS;
3802 uint8_t *table = &bios->data[bios->display.script_table_ptr]; 3769 uint8_t *table = &bios->data[bios->display.script_table_ptr];
3803 uint8_t *otable = NULL; 3770 uint8_t *otable = NULL;
@@ -3877,8 +3844,6 @@ nouveau_bios_run_display_table(struct drm_device *dev, struct dcb_entry *dcbent,
3877 } 3844 }
3878 } 3845 }
3879 3846
3880 bios->display.output = dcbent;
3881
3882 if (pxclk == 0) { 3847 if (pxclk == 0) {
3883 script = ROM16(otable[6]); 3848 script = ROM16(otable[6]);
3884 if (!script) { 3849 if (!script) {
@@ -3887,7 +3852,7 @@ nouveau_bios_run_display_table(struct drm_device *dev, struct dcb_entry *dcbent,
3887 } 3852 }
3888 3853
3889 NV_TRACE(dev, "0x%04X: parsing output script 0\n", script); 3854 NV_TRACE(dev, "0x%04X: parsing output script 0\n", script);
3890 parse_init_table(bios, script, &iexec); 3855 nouveau_bios_run_init_table(dev, script, dcbent);
3891 } else 3856 } else
3892 if (pxclk == -1) { 3857 if (pxclk == -1) {
3893 script = ROM16(otable[8]); 3858 script = ROM16(otable[8]);
@@ -3897,7 +3862,7 @@ nouveau_bios_run_display_table(struct drm_device *dev, struct dcb_entry *dcbent,
3897 } 3862 }
3898 3863
3899 NV_TRACE(dev, "0x%04X: parsing output script 1\n", script); 3864 NV_TRACE(dev, "0x%04X: parsing output script 1\n", script);
3900 parse_init_table(bios, script, &iexec); 3865 nouveau_bios_run_init_table(dev, script, dcbent);
3901 } else 3866 } else
3902 if (pxclk == -2) { 3867 if (pxclk == -2) {
3903 if (table[4] >= 12) 3868 if (table[4] >= 12)
@@ -3910,7 +3875,7 @@ nouveau_bios_run_display_table(struct drm_device *dev, struct dcb_entry *dcbent,
3910 } 3875 }
3911 3876
3912 NV_TRACE(dev, "0x%04X: parsing output script 2\n", script); 3877 NV_TRACE(dev, "0x%04X: parsing output script 2\n", script);
3913 parse_init_table(bios, script, &iexec); 3878 nouveau_bios_run_init_table(dev, script, dcbent);
3914 } else 3879 } else
3915 if (pxclk > 0) { 3880 if (pxclk > 0) {
3916 script = ROM16(otable[table[4] + i*6 + 2]); 3881 script = ROM16(otable[table[4] + i*6 + 2]);
@@ -3922,7 +3887,7 @@ nouveau_bios_run_display_table(struct drm_device *dev, struct dcb_entry *dcbent,
3922 } 3887 }
3923 3888
3924 NV_TRACE(dev, "0x%04X: parsing clock script 0\n", script); 3889 NV_TRACE(dev, "0x%04X: parsing clock script 0\n", script);
3925 parse_init_table(bios, script, &iexec); 3890 nouveau_bios_run_init_table(dev, script, dcbent);
3926 } else 3891 } else
3927 if (pxclk < 0) { 3892 if (pxclk < 0) {
3928 script = ROM16(otable[table[4] + i*6 + 4]); 3893 script = ROM16(otable[table[4] + i*6 + 4]);
@@ -3934,7 +3899,7 @@ nouveau_bios_run_display_table(struct drm_device *dev, struct dcb_entry *dcbent,
3934 } 3899 }
3935 3900
3936 NV_TRACE(dev, "0x%04X: parsing clock script 1\n", script); 3901 NV_TRACE(dev, "0x%04X: parsing clock script 1\n", script);
3937 parse_init_table(bios, script, &iexec); 3902 nouveau_bios_run_init_table(dev, script, dcbent);
3938 } 3903 }
3939 3904
3940 return 0; 3905 return 0;
@@ -5434,52 +5399,49 @@ static bool
5434parse_dcb15_entry(struct drm_device *dev, struct parsed_dcb *dcb, 5399parse_dcb15_entry(struct drm_device *dev, struct parsed_dcb *dcb,
5435 uint32_t conn, uint32_t conf, struct dcb_entry *entry) 5400 uint32_t conn, uint32_t conf, struct dcb_entry *entry)
5436{ 5401{
5437 if (conn != 0xf0003f00 && conn != 0xf2247f10 && conn != 0xf2204001 && 5402 switch (conn & 0x0000000f) {
5438 conn != 0xf2204301 && conn != 0xf2204311 && conn != 0xf2208001 && 5403 case 0:
5439 conn != 0xf2244001 && conn != 0xf2244301 && conn != 0xf2244311 && 5404 entry->type = OUTPUT_ANALOG;
5440 conn != 0xf4204011 && conn != 0xf4208011 && conn != 0xf4248011 && 5405 break;
5441 conn != 0xf2045ff2 && conn != 0xf2045f14 && conn != 0xf207df14 && 5406 case 1:
5442 conn != 0xf2205004 && conn != 0xf2209004) { 5407 entry->type = OUTPUT_TV;
5443 NV_ERROR(dev, "Unknown DCB 1.5 entry, please report\n"); 5408 break;
5444 5409 case 2:
5445 /* cause output setting to fail for !TV, so message is seen */ 5410 case 3:
5446 if ((conn & 0xf) != 0x1)
5447 dcb->entries = 0;
5448
5449 return false;
5450 }
5451 /* most of the below is a "best guess" atm */
5452 entry->type = conn & 0xf;
5453 if (entry->type == 2)
5454 /* another way of specifying straps based lvds... */
5455 entry->type = OUTPUT_LVDS; 5411 entry->type = OUTPUT_LVDS;
5456 if (entry->type == 4) { /* digital */ 5412 break;
5457 if (conn & 0x10) 5413 case 4:
5458 entry->type = OUTPUT_LVDS; 5414 switch ((conn & 0x000000f0) >> 4) {
5459 else 5415 case 0:
5460 entry->type = OUTPUT_TMDS; 5416 entry->type = OUTPUT_TMDS;
5417 break;
5418 case 1:
5419 entry->type = OUTPUT_LVDS;
5420 break;
5421 default:
5422 NV_ERROR(dev, "Unknown DCB subtype 4/%d\n",
5423 (conn & 0x000000f0) >> 4);
5424 return false;
5425 }
5426 break;
5427 default:
5428 NV_ERROR(dev, "Unknown DCB type %d\n", conn & 0x0000000f);
5429 return false;
5461 } 5430 }
5462 /* what's in bits 5-13? could be some encoder maker thing, in tv case */ 5431
5463 entry->i2c_index = (conn >> 14) & 0xf; 5432 entry->i2c_index = (conn & 0x0003c000) >> 14;
5464 /* raw heads field is in range 0-1, so move to 1-2 */ 5433 entry->heads = ((conn & 0x001c0000) >> 18) + 1;
5465 entry->heads = ((conn >> 18) & 0x7) + 1; 5434 entry->or = entry->heads; /* same as heads, hopefully safe enough */
5466 entry->location = (conn >> 21) & 0xf; 5435 entry->location = (conn & 0x01e00000) >> 21;
5467 /* unused: entry->bus = (conn >> 25) & 0x7; */ 5436 entry->bus = (conn & 0x0e000000) >> 25;
5468 /* set or to be same as heads -- hopefully safe enough */
5469 entry->or = entry->heads;
5470 entry->duallink_possible = false; 5437 entry->duallink_possible = false;
5471 5438
5472 switch (entry->type) { 5439 switch (entry->type) {
5473 case OUTPUT_ANALOG: 5440 case OUTPUT_ANALOG:
5474 entry->crtconf.maxfreq = (conf & 0xffff) * 10; 5441 entry->crtconf.maxfreq = (conf & 0xffff) * 10;
5475 break; 5442 break;
5476 case OUTPUT_LVDS: 5443 case OUTPUT_TV:
5477 /* 5444 entry->tvconf.has_component_output = false;
5478 * This is probably buried in conn's unknown bits.
5479 * This will upset EDID-ful models, if they exist
5480 */
5481 entry->lvdsconf.use_straps_for_mode = true;
5482 entry->lvdsconf.use_power_scripts = true;
5483 break; 5445 break;
5484 case OUTPUT_TMDS: 5446 case OUTPUT_TMDS:
5485 /* 5447 /*
@@ -5488,8 +5450,12 @@ parse_dcb15_entry(struct drm_device *dev, struct parsed_dcb *dcb,
5488 */ 5450 */
5489 fabricate_vga_output(dcb, entry->i2c_index, entry->heads); 5451 fabricate_vga_output(dcb, entry->i2c_index, entry->heads);
5490 break; 5452 break;
5491 case OUTPUT_TV: 5453 case OUTPUT_LVDS:
5492 entry->tvconf.has_component_output = false; 5454 if ((conn & 0x00003f00) != 0x10)
5455 entry->lvdsconf.use_straps_for_mode = true;
5456 entry->lvdsconf.use_power_scripts = true;
5457 break;
5458 default:
5493 break; 5459 break;
5494 } 5460 }
5495 5461
@@ -5564,11 +5530,13 @@ void merge_like_dcb_entries(struct drm_device *dev, struct parsed_dcb *dcb)
5564 dcb->entries = newentries; 5530 dcb->entries = newentries;
5565} 5531}
5566 5532
5567static int parse_dcb_table(struct drm_device *dev, struct nvbios *bios, bool twoHeads) 5533static int
5534parse_dcb_table(struct drm_device *dev, struct nvbios *bios, bool twoHeads)
5568{ 5535{
5536 struct drm_nouveau_private *dev_priv = dev->dev_private;
5569 struct bios_parsed_dcb *bdcb = &bios->bdcb; 5537 struct bios_parsed_dcb *bdcb = &bios->bdcb;
5570 struct parsed_dcb *dcb; 5538 struct parsed_dcb *dcb;
5571 uint16_t dcbptr, i2ctabptr = 0; 5539 uint16_t dcbptr = 0, i2ctabptr = 0;
5572 uint8_t *dcbtable; 5540 uint8_t *dcbtable;
5573 uint8_t headerlen = 0x4, entries = DCB_MAX_NUM_ENTRIES; 5541 uint8_t headerlen = 0x4, entries = DCB_MAX_NUM_ENTRIES;
5574 bool configblock = true; 5542 bool configblock = true;
@@ -5579,16 +5547,18 @@ static int parse_dcb_table(struct drm_device *dev, struct nvbios *bios, bool two
5579 dcb->entries = 0; 5547 dcb->entries = 0;
5580 5548
5581 /* get the offset from 0x36 */ 5549 /* get the offset from 0x36 */
5582 dcbptr = ROM16(bios->data[0x36]); 5550 if (dev_priv->card_type > NV_04) {
5551 dcbptr = ROM16(bios->data[0x36]);
5552 if (dcbptr == 0x0000)
5553 NV_WARN(dev, "No output data (DCB) found in BIOS\n");
5554 }
5583 5555
5556 /* this situation likely means a really old card, pre DCB */
5584 if (dcbptr == 0x0) { 5557 if (dcbptr == 0x0) {
5585 NV_WARN(dev, "No output data (DCB) found in BIOS, " 5558 NV_INFO(dev, "Assuming a CRT output exists\n");
5586 "assuming a CRT output exists\n");
5587 /* this situation likely means a really old card, pre DCB */
5588 fabricate_vga_output(dcb, LEGACY_I2C_CRT, 1); 5559 fabricate_vga_output(dcb, LEGACY_I2C_CRT, 1);
5589 5560
5590 if (nv04_tv_identify(dev, 5561 if (nv04_tv_identify(dev, bios->legacy.i2c_indices.tv) >= 0)
5591 bios->legacy.i2c_indices.tv) >= 0)
5592 fabricate_tv_output(dcb, twoHeads); 5562 fabricate_tv_output(dcb, twoHeads);
5593 5563
5594 return 0; 5564 return 0;
@@ -5892,9 +5862,11 @@ nouveau_bios_run_init_table(struct drm_device *dev, uint16_t table,
5892 struct nvbios *bios = &dev_priv->VBIOS; 5862 struct nvbios *bios = &dev_priv->VBIOS;
5893 struct init_exec iexec = { true, false }; 5863 struct init_exec iexec = { true, false };
5894 5864
5865 mutex_lock(&bios->lock);
5895 bios->display.output = dcbent; 5866 bios->display.output = dcbent;
5896 parse_init_table(bios, table, &iexec); 5867 parse_init_table(bios, table, &iexec);
5897 bios->display.output = NULL; 5868 bios->display.output = NULL;
5869 mutex_unlock(&bios->lock);
5898} 5870}
5899 5871
5900static bool NVInitVBIOS(struct drm_device *dev) 5872static bool NVInitVBIOS(struct drm_device *dev)
@@ -5903,6 +5875,7 @@ static bool NVInitVBIOS(struct drm_device *dev)
5903 struct nvbios *bios = &dev_priv->VBIOS; 5875 struct nvbios *bios = &dev_priv->VBIOS;
5904 5876
5905 memset(bios, 0, sizeof(struct nvbios)); 5877 memset(bios, 0, sizeof(struct nvbios));
5878 mutex_init(&bios->lock);
5906 bios->dev = dev; 5879 bios->dev = dev;
5907 5880
5908 if (!NVShadowVBIOS(dev, bios->data)) 5881 if (!NVShadowVBIOS(dev, bios->data))
diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.h b/drivers/gpu/drm/nouveau/nouveau_bios.h
index 058e98c76d89..fd94bd6dc264 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bios.h
+++ b/drivers/gpu/drm/nouveau/nouveau_bios.h
@@ -205,6 +205,8 @@ struct nvbios {
205 struct drm_device *dev; 205 struct drm_device *dev;
206 struct nouveau_bios_info pub; 206 struct nouveau_bios_info pub;
207 207
208 struct mutex lock;
209
208 uint8_t data[NV_PROM_SIZE]; 210 uint8_t data[NV_PROM_SIZE];
209 unsigned int length; 211 unsigned int length;
210 bool execute; 212 bool execute;
diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
index 0cad6d834eb2..028719fddf76 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bo.c
+++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
@@ -33,10 +33,13 @@
33#include "nouveau_drv.h" 33#include "nouveau_drv.h"
34#include "nouveau_dma.h" 34#include "nouveau_dma.h"
35 35
36#include <linux/log2.h>
37
36static void 38static void
37nouveau_bo_del_ttm(struct ttm_buffer_object *bo) 39nouveau_bo_del_ttm(struct ttm_buffer_object *bo)
38{ 40{
39 struct drm_nouveau_private *dev_priv = nouveau_bdev(bo->bdev); 41 struct drm_nouveau_private *dev_priv = nouveau_bdev(bo->bdev);
42 struct drm_device *dev = dev_priv->dev;
40 struct nouveau_bo *nvbo = nouveau_bo(bo); 43 struct nouveau_bo *nvbo = nouveau_bo(bo);
41 44
42 ttm_bo_kunmap(&nvbo->kmap); 45 ttm_bo_kunmap(&nvbo->kmap);
@@ -44,12 +47,87 @@ nouveau_bo_del_ttm(struct ttm_buffer_object *bo)
44 if (unlikely(nvbo->gem)) 47 if (unlikely(nvbo->gem))
45 DRM_ERROR("bo %p still attached to GEM object\n", bo); 48 DRM_ERROR("bo %p still attached to GEM object\n", bo);
46 49
50 if (nvbo->tile)
51 nv10_mem_expire_tiling(dev, nvbo->tile, NULL);
52
47 spin_lock(&dev_priv->ttm.bo_list_lock); 53 spin_lock(&dev_priv->ttm.bo_list_lock);
48 list_del(&nvbo->head); 54 list_del(&nvbo->head);
49 spin_unlock(&dev_priv->ttm.bo_list_lock); 55 spin_unlock(&dev_priv->ttm.bo_list_lock);
50 kfree(nvbo); 56 kfree(nvbo);
51} 57}
52 58
59static void
60nouveau_bo_fixup_align(struct drm_device *dev,
61 uint32_t tile_mode, uint32_t tile_flags,
62 int *align, int *size)
63{
64 struct drm_nouveau_private *dev_priv = dev->dev_private;
65
66 /*
67 * Some of the tile_flags have a periodic structure of N*4096 bytes,
68 * align to to that as well as the page size. Align the size to the
69 * appropriate boundaries. This does imply that sizes are rounded up
70 * 3-7 pages, so be aware of this and do not waste memory by allocating
71 * many small buffers.
72 */
73 if (dev_priv->card_type == NV_50) {
74 uint32_t block_size = nouveau_mem_fb_amount(dev) >> 15;
75 int i;
76
77 switch (tile_flags) {
78 case 0x1800:
79 case 0x2800:
80 case 0x4800:
81 case 0x7a00:
82 if (is_power_of_2(block_size)) {
83 for (i = 1; i < 10; i++) {
84 *align = 12 * i * block_size;
85 if (!(*align % 65536))
86 break;
87 }
88 } else {
89 for (i = 1; i < 10; i++) {
90 *align = 8 * i * block_size;
91 if (!(*align % 65536))
92 break;
93 }
94 }
95 *size = roundup(*size, *align);
96 break;
97 default:
98 break;
99 }
100
101 } else {
102 if (tile_mode) {
103 if (dev_priv->chipset >= 0x40) {
104 *align = 65536;
105 *size = roundup(*size, 64 * tile_mode);
106
107 } else if (dev_priv->chipset >= 0x30) {
108 *align = 32768;
109 *size = roundup(*size, 64 * tile_mode);
110
111 } else if (dev_priv->chipset >= 0x20) {
112 *align = 16384;
113 *size = roundup(*size, 64 * tile_mode);
114
115 } else if (dev_priv->chipset >= 0x10) {
116 *align = 16384;
117 *size = roundup(*size, 32 * tile_mode);
118 }
119 }
120 }
121
122 /* ALIGN works only on powers of two. */
123 *size = roundup(*size, PAGE_SIZE);
124
125 if (dev_priv->card_type == NV_50) {
126 *size = roundup(*size, 65536);
127 *align = max(65536, *align);
128 }
129}
130
53int 131int
54nouveau_bo_new(struct drm_device *dev, struct nouveau_channel *chan, 132nouveau_bo_new(struct drm_device *dev, struct nouveau_channel *chan,
55 int size, int align, uint32_t flags, uint32_t tile_mode, 133 int size, int align, uint32_t flags, uint32_t tile_mode,
@@ -58,7 +136,7 @@ nouveau_bo_new(struct drm_device *dev, struct nouveau_channel *chan,
58{ 136{
59 struct drm_nouveau_private *dev_priv = dev->dev_private; 137 struct drm_nouveau_private *dev_priv = dev->dev_private;
60 struct nouveau_bo *nvbo; 138 struct nouveau_bo *nvbo;
61 int ret, n = 0; 139 int ret = 0;
62 140
63 nvbo = kzalloc(sizeof(struct nouveau_bo), GFP_KERNEL); 141 nvbo = kzalloc(sizeof(struct nouveau_bo), GFP_KERNEL);
64 if (!nvbo) 142 if (!nvbo)
@@ -70,59 +148,14 @@ nouveau_bo_new(struct drm_device *dev, struct nouveau_channel *chan,
70 nvbo->tile_mode = tile_mode; 148 nvbo->tile_mode = tile_mode;
71 nvbo->tile_flags = tile_flags; 149 nvbo->tile_flags = tile_flags;
72 150
73 /* 151 nouveau_bo_fixup_align(dev, tile_mode, tile_flags, &align, &size);
74 * Some of the tile_flags have a periodic structure of N*4096 bytes,
75 * align to to that as well as the page size. Overallocate memory to
76 * avoid corruption of other buffer objects.
77 */
78 switch (tile_flags) {
79 case 0x1800:
80 case 0x2800:
81 case 0x4800:
82 case 0x7a00:
83 if (dev_priv->chipset >= 0xA0) {
84 /* This is based on high end cards with 448 bits
85 * memory bus, could be different elsewhere.*/
86 size += 6 * 28672;
87 /* 8 * 28672 is the actual alignment requirement,
88 * but we must also align to page size. */
89 align = 2 * 8 * 28672;
90 } else if (dev_priv->chipset >= 0x90) {
91 size += 3 * 16384;
92 align = 12 * 16834;
93 } else {
94 size += 3 * 8192;
95 /* 12 * 8192 is the actual alignment requirement,
96 * but we must also align to page size. */
97 align = 2 * 12 * 8192;
98 }
99 break;
100 default:
101 break;
102 }
103
104 align >>= PAGE_SHIFT; 152 align >>= PAGE_SHIFT;
105 153
106 size = (size + (PAGE_SIZE - 1)) & ~(PAGE_SIZE - 1);
107 if (dev_priv->card_type == NV_50) {
108 size = (size + 65535) & ~65535;
109 if (align < (65536 / PAGE_SIZE))
110 align = (65536 / PAGE_SIZE);
111 }
112
113 if (flags & TTM_PL_FLAG_VRAM)
114 nvbo->placements[n++] = TTM_PL_FLAG_VRAM | TTM_PL_MASK_CACHING;
115 if (flags & TTM_PL_FLAG_TT)
116 nvbo->placements[n++] = TTM_PL_FLAG_TT | TTM_PL_MASK_CACHING;
117 nvbo->placement.fpfn = 0; 154 nvbo->placement.fpfn = 0;
118 nvbo->placement.lpfn = mappable ? dev_priv->fb_mappable_pages : 0; 155 nvbo->placement.lpfn = mappable ? dev_priv->fb_mappable_pages : 0;
119 nvbo->placement.placement = nvbo->placements; 156 nouveau_bo_placement_set(nvbo, flags);
120 nvbo->placement.busy_placement = nvbo->placements;
121 nvbo->placement.num_placement = n;
122 nvbo->placement.num_busy_placement = n;
123 157
124 nvbo->channel = chan; 158 nvbo->channel = chan;
125 nouveau_bo_placement_set(nvbo, flags);
126 ret = ttm_bo_init(&dev_priv->ttm.bdev, &nvbo->bo, size, 159 ret = ttm_bo_init(&dev_priv->ttm.bdev, &nvbo->bo, size,
127 ttm_bo_type_device, &nvbo->placement, align, 0, 160 ttm_bo_type_device, &nvbo->placement, align, 0,
128 false, NULL, size, nouveau_bo_del_ttm); 161 false, NULL, size, nouveau_bo_del_ttm);
@@ -421,6 +454,7 @@ nouveau_bo_evict_flags(struct ttm_buffer_object *bo, struct ttm_placement *pl)
421/* GPU-assisted copy using NV_MEMORY_TO_MEMORY_FORMAT, can access 454/* GPU-assisted copy using NV_MEMORY_TO_MEMORY_FORMAT, can access
422 * TTM_PL_{VRAM,TT} directly. 455 * TTM_PL_{VRAM,TT} directly.
423 */ 456 */
457
424static int 458static int
425nouveau_bo_move_accel_cleanup(struct nouveau_channel *chan, 459nouveau_bo_move_accel_cleanup(struct nouveau_channel *chan,
426 struct nouveau_bo *nvbo, bool evict, bool no_wait, 460 struct nouveau_bo *nvbo, bool evict, bool no_wait,
@@ -435,6 +469,8 @@ nouveau_bo_move_accel_cleanup(struct nouveau_channel *chan,
435 469
436 ret = ttm_bo_move_accel_cleanup(&nvbo->bo, fence, NULL, 470 ret = ttm_bo_move_accel_cleanup(&nvbo->bo, fence, NULL,
437 evict, no_wait, new_mem); 471 evict, no_wait, new_mem);
472 if (nvbo->channel && nvbo->channel != chan)
473 ret = nouveau_fence_wait(fence, NULL, false, false);
438 nouveau_fence_unref((void *)&fence); 474 nouveau_fence_unref((void *)&fence);
439 return ret; 475 return ret;
440} 476}
@@ -455,11 +491,12 @@ nouveau_bo_mem_ctxdma(struct nouveau_bo *nvbo, struct nouveau_channel *chan,
455} 491}
456 492
457static int 493static int
458nouveau_bo_move_m2mf(struct ttm_buffer_object *bo, int evict, int no_wait, 494nouveau_bo_move_m2mf(struct ttm_buffer_object *bo, int evict, bool intr,
459 struct ttm_mem_reg *old_mem, struct ttm_mem_reg *new_mem) 495 int no_wait, struct ttm_mem_reg *new_mem)
460{ 496{
461 struct nouveau_bo *nvbo = nouveau_bo(bo); 497 struct nouveau_bo *nvbo = nouveau_bo(bo);
462 struct drm_nouveau_private *dev_priv = nouveau_bdev(bo->bdev); 498 struct drm_nouveau_private *dev_priv = nouveau_bdev(bo->bdev);
499 struct ttm_mem_reg *old_mem = &bo->mem;
463 struct nouveau_channel *chan; 500 struct nouveau_channel *chan;
464 uint64_t src_offset, dst_offset; 501 uint64_t src_offset, dst_offset;
465 uint32_t page_count; 502 uint32_t page_count;
@@ -547,7 +584,7 @@ nouveau_bo_move_flipd(struct ttm_buffer_object *bo, bool evict, bool intr,
547 584
548 placement.fpfn = placement.lpfn = 0; 585 placement.fpfn = placement.lpfn = 0;
549 placement.num_placement = placement.num_busy_placement = 1; 586 placement.num_placement = placement.num_busy_placement = 1;
550 placement.placement = &placement_memtype; 587 placement.placement = placement.busy_placement = &placement_memtype;
551 588
552 tmp_mem = *new_mem; 589 tmp_mem = *new_mem;
553 tmp_mem.mm_node = NULL; 590 tmp_mem.mm_node = NULL;
@@ -559,7 +596,7 @@ nouveau_bo_move_flipd(struct ttm_buffer_object *bo, bool evict, bool intr,
559 if (ret) 596 if (ret)
560 goto out; 597 goto out;
561 598
562 ret = nouveau_bo_move_m2mf(bo, true, no_wait, &bo->mem, &tmp_mem); 599 ret = nouveau_bo_move_m2mf(bo, true, intr, no_wait, &tmp_mem);
563 if (ret) 600 if (ret)
564 goto out; 601 goto out;
565 602
@@ -585,7 +622,7 @@ nouveau_bo_move_flips(struct ttm_buffer_object *bo, bool evict, bool intr,
585 622
586 placement.fpfn = placement.lpfn = 0; 623 placement.fpfn = placement.lpfn = 0;
587 placement.num_placement = placement.num_busy_placement = 1; 624 placement.num_placement = placement.num_busy_placement = 1;
588 placement.placement = &placement_memtype; 625 placement.placement = placement.busy_placement = &placement_memtype;
589 626
590 tmp_mem = *new_mem; 627 tmp_mem = *new_mem;
591 tmp_mem.mm_node = NULL; 628 tmp_mem.mm_node = NULL;
@@ -597,7 +634,7 @@ nouveau_bo_move_flips(struct ttm_buffer_object *bo, bool evict, bool intr,
597 if (ret) 634 if (ret)
598 goto out; 635 goto out;
599 636
600 ret = nouveau_bo_move_m2mf(bo, true, no_wait, &bo->mem, new_mem); 637 ret = nouveau_bo_move_m2mf(bo, evict, intr, no_wait, new_mem);
601 if (ret) 638 if (ret)
602 goto out; 639 goto out;
603 640
@@ -612,52 +649,106 @@ out:
612} 649}
613 650
614static int 651static int
615nouveau_bo_move(struct ttm_buffer_object *bo, bool evict, bool intr, 652nouveau_bo_vm_bind(struct ttm_buffer_object *bo, struct ttm_mem_reg *new_mem,
616 bool no_wait, struct ttm_mem_reg *new_mem) 653 struct nouveau_tile_reg **new_tile)
617{ 654{
618 struct drm_nouveau_private *dev_priv = nouveau_bdev(bo->bdev); 655 struct drm_nouveau_private *dev_priv = nouveau_bdev(bo->bdev);
619 struct nouveau_bo *nvbo = nouveau_bo(bo);
620 struct drm_device *dev = dev_priv->dev; 656 struct drm_device *dev = dev_priv->dev;
621 struct ttm_mem_reg *old_mem = &bo->mem; 657 struct nouveau_bo *nvbo = nouveau_bo(bo);
658 uint64_t offset;
622 int ret; 659 int ret;
623 660
624 if (dev_priv->card_type == NV_50 && new_mem->mem_type == TTM_PL_VRAM && 661 if (nvbo->no_vm || new_mem->mem_type != TTM_PL_VRAM) {
625 !nvbo->no_vm) { 662 /* Nothing to do. */
626 uint64_t offset = new_mem->mm_node->start << PAGE_SHIFT; 663 *new_tile = NULL;
664 return 0;
665 }
666
667 offset = new_mem->mm_node->start << PAGE_SHIFT;
627 668
669 if (dev_priv->card_type == NV_50) {
628 ret = nv50_mem_vm_bind_linear(dev, 670 ret = nv50_mem_vm_bind_linear(dev,
629 offset + dev_priv->vm_vram_base, 671 offset + dev_priv->vm_vram_base,
630 new_mem->size, nvbo->tile_flags, 672 new_mem->size, nvbo->tile_flags,
631 offset); 673 offset);
632 if (ret) 674 if (ret)
633 return ret; 675 return ret;
676
677 } else if (dev_priv->card_type >= NV_10) {
678 *new_tile = nv10_mem_set_tiling(dev, offset, new_mem->size,
679 nvbo->tile_mode);
680 }
681
682 return 0;
683}
684
685static void
686nouveau_bo_vm_cleanup(struct ttm_buffer_object *bo,
687 struct nouveau_tile_reg *new_tile,
688 struct nouveau_tile_reg **old_tile)
689{
690 struct drm_nouveau_private *dev_priv = nouveau_bdev(bo->bdev);
691 struct drm_device *dev = dev_priv->dev;
692
693 if (dev_priv->card_type >= NV_10 &&
694 dev_priv->card_type < NV_50) {
695 if (*old_tile)
696 nv10_mem_expire_tiling(dev, *old_tile, bo->sync_obj);
697
698 *old_tile = new_tile;
634 } 699 }
700}
701
702static int
703nouveau_bo_move(struct ttm_buffer_object *bo, bool evict, bool intr,
704 bool no_wait, struct ttm_mem_reg *new_mem)
705{
706 struct drm_nouveau_private *dev_priv = nouveau_bdev(bo->bdev);
707 struct nouveau_bo *nvbo = nouveau_bo(bo);
708 struct ttm_mem_reg *old_mem = &bo->mem;
709 struct nouveau_tile_reg *new_tile = NULL;
710 int ret = 0;
711
712 ret = nouveau_bo_vm_bind(bo, new_mem, &new_tile);
713 if (ret)
714 return ret;
635 715
716 /* Software copy if the card isn't up and running yet. */
636 if (dev_priv->init_state != NOUVEAU_CARD_INIT_DONE || 717 if (dev_priv->init_state != NOUVEAU_CARD_INIT_DONE ||
637 !dev_priv->channel) 718 !dev_priv->channel) {
638 return ttm_bo_move_memcpy(bo, evict, no_wait, new_mem); 719 ret = ttm_bo_move_memcpy(bo, evict, no_wait, new_mem);
720 goto out;
721 }
639 722
723 /* Fake bo copy. */
640 if (old_mem->mem_type == TTM_PL_SYSTEM && !bo->ttm) { 724 if (old_mem->mem_type == TTM_PL_SYSTEM && !bo->ttm) {
641 BUG_ON(bo->mem.mm_node != NULL); 725 BUG_ON(bo->mem.mm_node != NULL);
642 bo->mem = *new_mem; 726 bo->mem = *new_mem;
643 new_mem->mm_node = NULL; 727 new_mem->mm_node = NULL;
644 return 0; 728 goto out;
645 } 729 }
646 730
647 if (new_mem->mem_type == TTM_PL_SYSTEM) { 731 /* Hardware assisted copy. */
648 if (old_mem->mem_type == TTM_PL_SYSTEM) 732 if (new_mem->mem_type == TTM_PL_SYSTEM)
649 return ttm_bo_move_memcpy(bo, evict, no_wait, new_mem); 733 ret = nouveau_bo_move_flipd(bo, evict, intr, no_wait, new_mem);
650 if (nouveau_bo_move_flipd(bo, evict, intr, no_wait, new_mem)) 734 else if (old_mem->mem_type == TTM_PL_SYSTEM)
651 return ttm_bo_move_memcpy(bo, evict, no_wait, new_mem); 735 ret = nouveau_bo_move_flips(bo, evict, intr, no_wait, new_mem);
652 } else if (old_mem->mem_type == TTM_PL_SYSTEM) { 736 else
653 if (nouveau_bo_move_flips(bo, evict, intr, no_wait, new_mem)) 737 ret = nouveau_bo_move_m2mf(bo, evict, intr, no_wait, new_mem);
654 return ttm_bo_move_memcpy(bo, evict, no_wait, new_mem);
655 } else {
656 if (nouveau_bo_move_m2mf(bo, evict, no_wait, old_mem, new_mem))
657 return ttm_bo_move_memcpy(bo, evict, no_wait, new_mem);
658 }
659 738
660 return 0; 739 if (!ret)
740 goto out;
741
742 /* Fallback to software copy. */
743 ret = ttm_bo_move_memcpy(bo, evict, no_wait, new_mem);
744
745out:
746 if (ret)
747 nouveau_bo_vm_cleanup(bo, NULL, &new_tile);
748 else
749 nouveau_bo_vm_cleanup(bo, new_tile, &nvbo->tile);
750
751 return ret;
661} 752}
662 753
663static int 754static int
diff --git a/drivers/gpu/drm/nouveau/nouveau_channel.c b/drivers/gpu/drm/nouveau/nouveau_channel.c
index 9aaa972f8822..2281f99da7fc 100644
--- a/drivers/gpu/drm/nouveau/nouveau_channel.c
+++ b/drivers/gpu/drm/nouveau/nouveau_channel.c
@@ -158,6 +158,8 @@ nouveau_channel_alloc(struct drm_device *dev, struct nouveau_channel **chan_ret,
158 return ret; 158 return ret;
159 } 159 }
160 160
161 nouveau_dma_pre_init(chan);
162
161 /* Locate channel's user control regs */ 163 /* Locate channel's user control regs */
162 if (dev_priv->card_type < NV_40) 164 if (dev_priv->card_type < NV_40)
163 user = NV03_USER(channel); 165 user = NV03_USER(channel);
@@ -235,47 +237,6 @@ nouveau_channel_alloc(struct drm_device *dev, struct nouveau_channel **chan_ret,
235 return 0; 237 return 0;
236} 238}
237 239
238int
239nouveau_channel_idle(struct nouveau_channel *chan)
240{
241 struct drm_device *dev = chan->dev;
242 struct drm_nouveau_private *dev_priv = dev->dev_private;
243 struct nouveau_engine *engine = &dev_priv->engine;
244 uint32_t caches;
245 int idle;
246
247 if (!chan) {
248 NV_ERROR(dev, "no channel...\n");
249 return 1;
250 }
251
252 caches = nv_rd32(dev, NV03_PFIFO_CACHES);
253 nv_wr32(dev, NV03_PFIFO_CACHES, caches & ~1);
254
255 if (engine->fifo.channel_id(dev) != chan->id) {
256 struct nouveau_gpuobj *ramfc =
257 chan->ramfc ? chan->ramfc->gpuobj : NULL;
258
259 if (!ramfc) {
260 NV_ERROR(dev, "No RAMFC for channel %d\n", chan->id);
261 return 1;
262 }
263
264 engine->instmem.prepare_access(dev, false);
265 if (nv_ro32(dev, ramfc, 0) != nv_ro32(dev, ramfc, 1))
266 idle = 0;
267 else
268 idle = 1;
269 engine->instmem.finish_access(dev);
270 } else {
271 idle = (nv_rd32(dev, NV04_PFIFO_CACHE1_DMA_GET) ==
272 nv_rd32(dev, NV04_PFIFO_CACHE1_DMA_PUT));
273 }
274
275 nv_wr32(dev, NV03_PFIFO_CACHES, caches);
276 return idle;
277}
278
279/* stops a fifo */ 240/* stops a fifo */
280void 241void
281nouveau_channel_free(struct nouveau_channel *chan) 242nouveau_channel_free(struct nouveau_channel *chan)
@@ -317,12 +278,11 @@ nouveau_channel_free(struct nouveau_channel *chan)
317 /* Ensure the channel is no longer active on the GPU */ 278 /* Ensure the channel is no longer active on the GPU */
318 pfifo->reassign(dev, false); 279 pfifo->reassign(dev, false);
319 280
320 if (pgraph->channel(dev) == chan) { 281 pgraph->fifo_access(dev, false);
321 pgraph->fifo_access(dev, false); 282 if (pgraph->channel(dev) == chan)
322 pgraph->unload_context(dev); 283 pgraph->unload_context(dev);
323 pgraph->fifo_access(dev, true);
324 }
325 pgraph->destroy_context(chan); 284 pgraph->destroy_context(chan);
285 pgraph->fifo_access(dev, true);
326 286
327 if (pfifo->channel_id(dev) == chan->id) { 287 if (pfifo->channel_id(dev) == chan->id) {
328 pfifo->disable(dev); 288 pfifo->disable(dev);
@@ -414,7 +374,9 @@ nouveau_ioctl_fifo_alloc(struct drm_device *dev, void *data,
414 init->subchan[0].grclass = 0x0039; 374 init->subchan[0].grclass = 0x0039;
415 else 375 else
416 init->subchan[0].grclass = 0x5039; 376 init->subchan[0].grclass = 0x5039;
417 init->nr_subchan = 1; 377 init->subchan[1].handle = NvSw;
378 init->subchan[1].grclass = NV_SW;
379 init->nr_subchan = 2;
418 380
419 /* Named memory object area */ 381 /* Named memory object area */
420 ret = drm_gem_handle_create(file_priv, chan->notifier_bo->gem, 382 ret = drm_gem_handle_create(file_priv, chan->notifier_bo->gem,
diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
index 5a10deb8bdbd..d2f63353ea97 100644
--- a/drivers/gpu/drm/nouveau/nouveau_connector.c
+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
@@ -24,9 +24,12 @@
24 * 24 *
25 */ 25 */
26 26
27#include <acpi/button.h>
28
27#include "drmP.h" 29#include "drmP.h"
28#include "drm_edid.h" 30#include "drm_edid.h"
29#include "drm_crtc_helper.h" 31#include "drm_crtc_helper.h"
32
30#include "nouveau_reg.h" 33#include "nouveau_reg.h"
31#include "nouveau_drv.h" 34#include "nouveau_drv.h"
32#include "nouveau_encoder.h" 35#include "nouveau_encoder.h"
@@ -83,14 +86,17 @@ nouveau_encoder_connector_get(struct nouveau_encoder *encoder)
83static void 86static void
84nouveau_connector_destroy(struct drm_connector *drm_connector) 87nouveau_connector_destroy(struct drm_connector *drm_connector)
85{ 88{
86 struct nouveau_connector *connector = nouveau_connector(drm_connector); 89 struct nouveau_connector *nv_connector =
87 struct drm_device *dev = connector->base.dev; 90 nouveau_connector(drm_connector);
91 struct drm_device *dev;
88 92
89 NV_DEBUG_KMS(dev, "\n"); 93 if (!nv_connector)
90
91 if (!connector)
92 return; 94 return;
93 95
96 dev = nv_connector->base.dev;
97 NV_DEBUG_KMS(dev, "\n");
98
99 kfree(nv_connector->edid);
94 drm_sysfs_connector_remove(drm_connector); 100 drm_sysfs_connector_remove(drm_connector);
95 drm_connector_cleanup(drm_connector); 101 drm_connector_cleanup(drm_connector);
96 kfree(drm_connector); 102 kfree(drm_connector);
@@ -233,10 +239,21 @@ nouveau_connector_detect(struct drm_connector *connector)
233 if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS) 239 if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)
234 nv_encoder = find_encoder_by_type(connector, OUTPUT_LVDS); 240 nv_encoder = find_encoder_by_type(connector, OUTPUT_LVDS);
235 if (nv_encoder && nv_connector->native_mode) { 241 if (nv_encoder && nv_connector->native_mode) {
242#ifdef CONFIG_ACPI
243 if (!nouveau_ignorelid && !acpi_lid_open())
244 return connector_status_disconnected;
245#endif
236 nouveau_connector_set_encoder(connector, nv_encoder); 246 nouveau_connector_set_encoder(connector, nv_encoder);
237 return connector_status_connected; 247 return connector_status_connected;
238 } 248 }
239 249
250 /* Cleanup the previous EDID block. */
251 if (nv_connector->edid) {
252 drm_mode_connector_update_edid_property(connector, NULL);
253 kfree(nv_connector->edid);
254 nv_connector->edid = NULL;
255 }
256
240 i2c = nouveau_connector_ddc_detect(connector, &nv_encoder); 257 i2c = nouveau_connector_ddc_detect(connector, &nv_encoder);
241 if (i2c) { 258 if (i2c) {
242 nouveau_connector_ddc_prepare(connector, &flags); 259 nouveau_connector_ddc_prepare(connector, &flags);
@@ -247,7 +264,7 @@ nouveau_connector_detect(struct drm_connector *connector)
247 if (!nv_connector->edid) { 264 if (!nv_connector->edid) {
248 NV_ERROR(dev, "DDC responded, but no EDID for %s\n", 265 NV_ERROR(dev, "DDC responded, but no EDID for %s\n",
249 drm_get_connector_name(connector)); 266 drm_get_connector_name(connector));
250 return connector_status_disconnected; 267 goto detect_analog;
251 } 268 }
252 269
253 if (nv_encoder->dcb->type == OUTPUT_DP && 270 if (nv_encoder->dcb->type == OUTPUT_DP &&
@@ -281,6 +298,7 @@ nouveau_connector_detect(struct drm_connector *connector)
281 return connector_status_connected; 298 return connector_status_connected;
282 } 299 }
283 300
301detect_analog:
284 nv_encoder = find_encoder_by_type(connector, OUTPUT_ANALOG); 302 nv_encoder = find_encoder_by_type(connector, OUTPUT_ANALOG);
285 if (!nv_encoder) 303 if (!nv_encoder)
286 nv_encoder = find_encoder_by_type(connector, OUTPUT_TV); 304 nv_encoder = find_encoder_by_type(connector, OUTPUT_TV);
@@ -687,8 +705,12 @@ nouveau_connector_create_lvds(struct drm_device *dev,
687 */ 705 */
688 if (!nv_connector->edid && !nv_connector->native_mode && 706 if (!nv_connector->edid && !nv_connector->native_mode &&
689 !dev_priv->VBIOS.pub.fp_no_ddc) { 707 !dev_priv->VBIOS.pub.fp_no_ddc) {
690 nv_connector->edid = 708 struct edid *edid =
691 (struct edid *)nouveau_bios_embedded_edid(dev); 709 (struct edid *)nouveau_bios_embedded_edid(dev);
710 if (edid) {
711 nv_connector->edid = kmalloc(EDID_LENGTH, GFP_KERNEL);
712 *(nv_connector->edid) = *edid;
713 }
692 } 714 }
693 715
694 if (!nv_connector->edid) 716 if (!nv_connector->edid)
diff --git a/drivers/gpu/drm/nouveau/nouveau_dma.c b/drivers/gpu/drm/nouveau/nouveau_dma.c
index 703553687b20..50d9e67745af 100644
--- a/drivers/gpu/drm/nouveau/nouveau_dma.c
+++ b/drivers/gpu/drm/nouveau/nouveau_dma.c
@@ -29,12 +29,22 @@
29#include "nouveau_drv.h" 29#include "nouveau_drv.h"
30#include "nouveau_dma.h" 30#include "nouveau_dma.h"
31 31
32void
33nouveau_dma_pre_init(struct nouveau_channel *chan)
34{
35 chan->dma.max = (chan->pushbuf_bo->bo.mem.size >> 2) - 2;
36 chan->dma.put = 0;
37 chan->dma.cur = chan->dma.put;
38 chan->dma.free = chan->dma.max - chan->dma.cur;
39}
40
32int 41int
33nouveau_dma_init(struct nouveau_channel *chan) 42nouveau_dma_init(struct nouveau_channel *chan)
34{ 43{
35 struct drm_device *dev = chan->dev; 44 struct drm_device *dev = chan->dev;
36 struct drm_nouveau_private *dev_priv = dev->dev_private; 45 struct drm_nouveau_private *dev_priv = dev->dev_private;
37 struct nouveau_gpuobj *m2mf = NULL; 46 struct nouveau_gpuobj *m2mf = NULL;
47 struct nouveau_gpuobj *nvsw = NULL;
38 int ret, i; 48 int ret, i;
39 49
40 /* Create NV_MEMORY_TO_MEMORY_FORMAT for buffer moves */ 50 /* Create NV_MEMORY_TO_MEMORY_FORMAT for buffer moves */
@@ -47,6 +57,15 @@ nouveau_dma_init(struct nouveau_channel *chan)
47 if (ret) 57 if (ret)
48 return ret; 58 return ret;
49 59
60 /* Create an NV_SW object for various sync purposes */
61 ret = nouveau_gpuobj_sw_new(chan, NV_SW, &nvsw);
62 if (ret)
63 return ret;
64
65 ret = nouveau_gpuobj_ref_add(dev, chan, NvSw, nvsw, NULL);
66 if (ret)
67 return ret;
68
50 /* NV_MEMORY_TO_MEMORY_FORMAT requires a notifier object */ 69 /* NV_MEMORY_TO_MEMORY_FORMAT requires a notifier object */
51 ret = nouveau_notifier_alloc(chan, NvNotify0, 32, &chan->m2mf_ntfy); 70 ret = nouveau_notifier_alloc(chan, NvNotify0, 32, &chan->m2mf_ntfy);
52 if (ret) 71 if (ret)
@@ -64,12 +83,6 @@ nouveau_dma_init(struct nouveau_channel *chan)
64 return ret; 83 return ret;
65 } 84 }
66 85
67 /* Initialise DMA vars */
68 chan->dma.max = (chan->pushbuf_bo->bo.mem.size >> 2) - 2;
69 chan->dma.put = 0;
70 chan->dma.cur = chan->dma.put;
71 chan->dma.free = chan->dma.max - chan->dma.cur;
72
73 /* Insert NOPS for NOUVEAU_DMA_SKIPS */ 86 /* Insert NOPS for NOUVEAU_DMA_SKIPS */
74 ret = RING_SPACE(chan, NOUVEAU_DMA_SKIPS); 87 ret = RING_SPACE(chan, NOUVEAU_DMA_SKIPS);
75 if (ret) 88 if (ret)
@@ -87,6 +100,13 @@ nouveau_dma_init(struct nouveau_channel *chan)
87 BEGIN_RING(chan, NvSubM2MF, NV_MEMORY_TO_MEMORY_FORMAT_DMA_NOTIFY, 1); 100 BEGIN_RING(chan, NvSubM2MF, NV_MEMORY_TO_MEMORY_FORMAT_DMA_NOTIFY, 1);
88 OUT_RING(chan, NvNotify0); 101 OUT_RING(chan, NvNotify0);
89 102
103 /* Initialise NV_SW */
104 ret = RING_SPACE(chan, 2);
105 if (ret)
106 return ret;
107 BEGIN_RING(chan, NvSubSw, 0, 1);
108 OUT_RING(chan, NvSw);
109
90 /* Sit back and pray the channel works.. */ 110 /* Sit back and pray the channel works.. */
91 FIRE_RING(chan); 111 FIRE_RING(chan);
92 112
@@ -106,47 +126,52 @@ OUT_RINGp(struct nouveau_channel *chan, const void *data, unsigned nr_dwords)
106 chan->dma.cur += nr_dwords; 126 chan->dma.cur += nr_dwords;
107} 127}
108 128
109static inline bool 129/* Fetch and adjust GPU GET pointer
110READ_GET(struct nouveau_channel *chan, uint32_t *get) 130 *
131 * Returns:
132 * value >= 0, the adjusted GET pointer
133 * -EINVAL if GET pointer currently outside main push buffer
134 * -EBUSY if timeout exceeded
135 */
136static inline int
137READ_GET(struct nouveau_channel *chan, uint32_t *prev_get, uint32_t *timeout)
111{ 138{
112 uint32_t val; 139 uint32_t val;
113 140
114 val = nvchan_rd32(chan, chan->user_get); 141 val = nvchan_rd32(chan, chan->user_get);
115 if (val < chan->pushbuf_base || 142
116 val >= chan->pushbuf_base + chan->pushbuf_bo->bo.mem.size) { 143 /* reset counter as long as GET is still advancing, this is
117 /* meaningless to dma_wait() except to know whether the 144 * to avoid misdetecting a GPU lockup if the GPU happens to
118 * GPU has stalled or not 145 * just be processing an operation that takes a long time
119 */ 146 */
120 *get = val; 147 if (val != *prev_get) {
121 return false; 148 *prev_get = val;
149 *timeout = 0;
150 }
151
152 if ((++*timeout & 0xff) == 0) {
153 DRM_UDELAY(1);
154 if (*timeout > 100000)
155 return -EBUSY;
122 } 156 }
123 157
124 *get = (val - chan->pushbuf_base) >> 2; 158 if (val < chan->pushbuf_base ||
125 return true; 159 val > chan->pushbuf_base + (chan->dma.max << 2))
160 return -EINVAL;
161
162 return (val - chan->pushbuf_base) >> 2;
126} 163}
127 164
128int 165int
129nouveau_dma_wait(struct nouveau_channel *chan, int size) 166nouveau_dma_wait(struct nouveau_channel *chan, int size)
130{ 167{
131 uint32_t get, prev_get = 0, cnt = 0; 168 uint32_t prev_get = 0, cnt = 0;
132 bool get_valid; 169 int get;
133 170
134 while (chan->dma.free < size) { 171 while (chan->dma.free < size) {
135 /* reset counter as long as GET is still advancing, this is 172 get = READ_GET(chan, &prev_get, &cnt);
136 * to avoid misdetecting a GPU lockup if the GPU happens to 173 if (unlikely(get == -EBUSY))
137 * just be processing an operation that takes a long time 174 return -EBUSY;
138 */
139 get_valid = READ_GET(chan, &get);
140 if (get != prev_get) {
141 prev_get = get;
142 cnt = 0;
143 }
144
145 if ((++cnt & 0xff) == 0) {
146 DRM_UDELAY(1);
147 if (cnt > 100000)
148 return -EBUSY;
149 }
150 175
151 /* loop until we have a usable GET pointer. the value 176 /* loop until we have a usable GET pointer. the value
152 * we read from the GPU may be outside the main ring if 177 * we read from the GPU may be outside the main ring if
@@ -157,7 +182,7 @@ nouveau_dma_wait(struct nouveau_channel *chan, int size)
157 * from the SKIPS area, so the code below doesn't have to deal 182 * from the SKIPS area, so the code below doesn't have to deal
158 * with some fun corner cases. 183 * with some fun corner cases.
159 */ 184 */
160 if (!get_valid || get < NOUVEAU_DMA_SKIPS) 185 if (unlikely(get == -EINVAL) || get < NOUVEAU_DMA_SKIPS)
161 continue; 186 continue;
162 187
163 if (get <= chan->dma.cur) { 188 if (get <= chan->dma.cur) {
@@ -183,6 +208,19 @@ nouveau_dma_wait(struct nouveau_channel *chan, int size)
183 * after processing the currently pending commands. 208 * after processing the currently pending commands.
184 */ 209 */
185 OUT_RING(chan, chan->pushbuf_base | 0x20000000); 210 OUT_RING(chan, chan->pushbuf_base | 0x20000000);
211
212 /* wait for GET to depart from the skips area.
213 * prevents writing GET==PUT and causing a race
214 * condition that causes us to think the GPU is
215 * idle when it's not.
216 */
217 do {
218 get = READ_GET(chan, &prev_get, &cnt);
219 if (unlikely(get == -EBUSY))
220 return -EBUSY;
221 if (unlikely(get == -EINVAL))
222 continue;
223 } while (get <= NOUVEAU_DMA_SKIPS);
186 WRITE_PUT(NOUVEAU_DMA_SKIPS); 224 WRITE_PUT(NOUVEAU_DMA_SKIPS);
187 225
188 /* we're now submitting commands at the start of 226 /* we're now submitting commands at the start of
diff --git a/drivers/gpu/drm/nouveau/nouveau_dma.h b/drivers/gpu/drm/nouveau/nouveau_dma.h
index 04e85d8f757e..dabfd655f93e 100644
--- a/drivers/gpu/drm/nouveau/nouveau_dma.h
+++ b/drivers/gpu/drm/nouveau/nouveau_dma.h
@@ -46,10 +46,11 @@
46/* Hardcoded object assignments to subchannels (subchannel id). */ 46/* Hardcoded object assignments to subchannels (subchannel id). */
47enum { 47enum {
48 NvSubM2MF = 0, 48 NvSubM2MF = 0,
49 NvSub2D = 1, 49 NvSubSw = 1,
50 NvSubCtxSurf2D = 1, 50 NvSub2D = 2,
51 NvSubGdiRect = 2, 51 NvSubCtxSurf2D = 2,
52 NvSubImageBlit = 3 52 NvSubGdiRect = 3,
53 NvSubImageBlit = 4
53}; 54};
54 55
55/* Object handles. */ 56/* Object handles. */
@@ -67,6 +68,7 @@ enum {
67 NvClipRect = 0x8000000b, 68 NvClipRect = 0x8000000b,
68 NvGdiRect = 0x8000000c, 69 NvGdiRect = 0x8000000c,
69 NvImageBlit = 0x8000000d, 70 NvImageBlit = 0x8000000d,
71 NvSw = 0x8000000e,
70 72
71 /* G80+ display objects */ 73 /* G80+ display objects */
72 NvEvoVRAM = 0x01000000, 74 NvEvoVRAM = 0x01000000,
diff --git a/drivers/gpu/drm/nouveau/nouveau_dp.c b/drivers/gpu/drm/nouveau/nouveau_dp.c
index 9e2926c48579..f954ad93e81f 100644
--- a/drivers/gpu/drm/nouveau/nouveau_dp.c
+++ b/drivers/gpu/drm/nouveau/nouveau_dp.c
@@ -490,7 +490,8 @@ nouveau_dp_auxch(struct nouveau_i2c_chan *auxch, int cmd, int addr,
490 if (!nv_wait(NV50_AUXCH_CTRL(index), 0x00010000, 0x00000000)) { 490 if (!nv_wait(NV50_AUXCH_CTRL(index), 0x00010000, 0x00000000)) {
491 NV_ERROR(dev, "expected bit 16 == 0, got 0x%08x\n", 491 NV_ERROR(dev, "expected bit 16 == 0, got 0x%08x\n",
492 nv_rd32(dev, NV50_AUXCH_CTRL(index))); 492 nv_rd32(dev, NV50_AUXCH_CTRL(index)));
493 return -EBUSY; 493 ret = -EBUSY;
494 goto out;
494 } 495 }
495 496
496 udelay(400); 497 udelay(400);
@@ -502,6 +503,11 @@ nouveau_dp_auxch(struct nouveau_i2c_chan *auxch, int cmd, int addr,
502 } 503 }
503 504
504 if (cmd & 1) { 505 if (cmd & 1) {
506 if ((stat & NV50_AUXCH_STAT_COUNT) != data_nr) {
507 ret = -EREMOTEIO;
508 goto out;
509 }
510
505 for (i = 0; i < 4; i++) { 511 for (i = 0; i < 4; i++) {
506 data32[i] = nv_rd32(dev, NV50_AUXCH_DATA_IN(index, i)); 512 data32[i] = nv_rd32(dev, NV50_AUXCH_DATA_IN(index, i));
507 NV_DEBUG_KMS(dev, "rd %d: 0x%08x\n", i, data32[i]); 513 NV_DEBUG_KMS(dev, "rd %d: 0x%08x\n", i, data32[i]);
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.c b/drivers/gpu/drm/nouveau/nouveau_drv.c
index 06eb993e0883..da3b93b84502 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drv.c
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.c
@@ -56,7 +56,7 @@ int nouveau_vram_pushbuf;
56module_param_named(vram_pushbuf, nouveau_vram_pushbuf, int, 0400); 56module_param_named(vram_pushbuf, nouveau_vram_pushbuf, int, 0400);
57 57
58MODULE_PARM_DESC(vram_notify, "Force DMA notifiers to be in VRAM"); 58MODULE_PARM_DESC(vram_notify, "Force DMA notifiers to be in VRAM");
59int nouveau_vram_notify; 59int nouveau_vram_notify = 1;
60module_param_named(vram_notify, nouveau_vram_notify, int, 0400); 60module_param_named(vram_notify, nouveau_vram_notify, int, 0400);
61 61
62MODULE_PARM_DESC(duallink, "Allow dual-link TMDS (>=GeForce 8)"); 62MODULE_PARM_DESC(duallink, "Allow dual-link TMDS (>=GeForce 8)");
@@ -71,6 +71,18 @@ MODULE_PARM_DESC(uscript_tmds, "TMDS output script table ID (>=GeForce 8)");
71int nouveau_uscript_tmds = -1; 71int nouveau_uscript_tmds = -1;
72module_param_named(uscript_tmds, nouveau_uscript_tmds, int, 0400); 72module_param_named(uscript_tmds, nouveau_uscript_tmds, int, 0400);
73 73
74MODULE_PARM_DESC(ignorelid, "Ignore ACPI lid status");
75int nouveau_ignorelid = 0;
76module_param_named(ignorelid, nouveau_ignorelid, int, 0400);
77
78MODULE_PARM_DESC(noagp, "Disable all acceleration");
79int nouveau_noaccel = 0;
80module_param_named(noaccel, nouveau_noaccel, int, 0400);
81
82MODULE_PARM_DESC(noagp, "Disable fbcon acceleration");
83int nouveau_nofbaccel = 0;
84module_param_named(nofbaccel, nouveau_nofbaccel, int, 0400);
85
74MODULE_PARM_DESC(tv_norm, "Default TV norm.\n" 86MODULE_PARM_DESC(tv_norm, "Default TV norm.\n"
75 "\t\tSupported: PAL, PAL-M, PAL-N, PAL-Nc, NTSC-M, NTSC-J,\n" 87 "\t\tSupported: PAL, PAL-M, PAL-N, PAL-Nc, NTSC-M, NTSC-J,\n"
76 "\t\t\thd480i, hd480p, hd576i, hd576p, hd720p, hd1080i.\n" 88 "\t\t\thd480i, hd480p, hd576i, hd576p, hd720p, hd1080i.\n"
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h
index 5f8cbb79c499..1c15ef37b71c 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drv.h
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.h
@@ -59,11 +59,19 @@ struct nouveau_grctx;
59#define MAX_NUM_DCB_ENTRIES 16 59#define MAX_NUM_DCB_ENTRIES 16
60 60
61#define NOUVEAU_MAX_CHANNEL_NR 128 61#define NOUVEAU_MAX_CHANNEL_NR 128
62#define NOUVEAU_MAX_TILE_NR 15
62 63
63#define NV50_VM_MAX_VRAM (2*1024*1024*1024ULL) 64#define NV50_VM_MAX_VRAM (2*1024*1024*1024ULL)
64#define NV50_VM_BLOCK (512*1024*1024ULL) 65#define NV50_VM_BLOCK (512*1024*1024ULL)
65#define NV50_VM_VRAM_NR (NV50_VM_MAX_VRAM / NV50_VM_BLOCK) 66#define NV50_VM_VRAM_NR (NV50_VM_MAX_VRAM / NV50_VM_BLOCK)
66 67
68struct nouveau_tile_reg {
69 struct nouveau_fence *fence;
70 uint32_t addr;
71 uint32_t size;
72 bool used;
73};
74
67struct nouveau_bo { 75struct nouveau_bo {
68 struct ttm_buffer_object bo; 76 struct ttm_buffer_object bo;
69 struct ttm_placement placement; 77 struct ttm_placement placement;
@@ -83,6 +91,7 @@ struct nouveau_bo {
83 91
84 uint32_t tile_mode; 92 uint32_t tile_mode;
85 uint32_t tile_flags; 93 uint32_t tile_flags;
94 struct nouveau_tile_reg *tile;
86 95
87 struct drm_gem_object *gem; 96 struct drm_gem_object *gem;
88 struct drm_file *cpu_filp; 97 struct drm_file *cpu_filp;
@@ -277,8 +286,13 @@ struct nouveau_timer_engine {
277}; 286};
278 287
279struct nouveau_fb_engine { 288struct nouveau_fb_engine {
289 int num_tiles;
290
280 int (*init)(struct drm_device *dev); 291 int (*init)(struct drm_device *dev);
281 void (*takedown)(struct drm_device *dev); 292 void (*takedown)(struct drm_device *dev);
293
294 void (*set_region_tiling)(struct drm_device *dev, int i, uint32_t addr,
295 uint32_t size, uint32_t pitch);
282}; 296};
283 297
284struct nouveau_fifo_engine { 298struct nouveau_fifo_engine {
@@ -292,6 +306,8 @@ struct nouveau_fifo_engine {
292 void (*disable)(struct drm_device *); 306 void (*disable)(struct drm_device *);
293 void (*enable)(struct drm_device *); 307 void (*enable)(struct drm_device *);
294 bool (*reassign)(struct drm_device *, bool enable); 308 bool (*reassign)(struct drm_device *, bool enable);
309 bool (*cache_flush)(struct drm_device *dev);
310 bool (*cache_pull)(struct drm_device *dev, bool enable);
295 311
296 int (*channel_id)(struct drm_device *); 312 int (*channel_id)(struct drm_device *);
297 313
@@ -330,6 +346,9 @@ struct nouveau_pgraph_engine {
330 void (*destroy_context)(struct nouveau_channel *); 346 void (*destroy_context)(struct nouveau_channel *);
331 int (*load_context)(struct nouveau_channel *); 347 int (*load_context)(struct nouveau_channel *);
332 int (*unload_context)(struct drm_device *); 348 int (*unload_context)(struct drm_device *);
349
350 void (*set_region_tiling)(struct drm_device *dev, int i, uint32_t addr,
351 uint32_t size, uint32_t pitch);
333}; 352};
334 353
335struct nouveau_engine { 354struct nouveau_engine {
@@ -490,6 +509,8 @@ struct drm_nouveau_private {
490 void __iomem *ramin; 509 void __iomem *ramin;
491 uint32_t ramin_size; 510 uint32_t ramin_size;
492 511
512 struct nouveau_bo *vga_ram;
513
493 struct workqueue_struct *wq; 514 struct workqueue_struct *wq;
494 struct work_struct irq_work; 515 struct work_struct irq_work;
495 516
@@ -548,6 +569,12 @@ struct drm_nouveau_private {
548 unsigned long sg_handle; 569 unsigned long sg_handle;
549 } gart_info; 570 } gart_info;
550 571
572 /* nv10-nv40 tiling regions */
573 struct {
574 struct nouveau_tile_reg reg[NOUVEAU_MAX_TILE_NR];
575 spinlock_t lock;
576 } tile;
577
551 /* G8x/G9x virtual address space */ 578 /* G8x/G9x virtual address space */
552 uint64_t vm_gart_base; 579 uint64_t vm_gart_base;
553 uint64_t vm_gart_size; 580 uint64_t vm_gart_size;
@@ -556,6 +583,7 @@ struct drm_nouveau_private {
556 uint64_t vm_end; 583 uint64_t vm_end;
557 struct nouveau_gpuobj *vm_vram_pt[NV50_VM_VRAM_NR]; 584 struct nouveau_gpuobj *vm_vram_pt[NV50_VM_VRAM_NR];
558 int vm_vram_pt_nr; 585 int vm_vram_pt_nr;
586 uint64_t vram_sys_base;
559 587
560 /* the mtrr covering the FB */ 588 /* the mtrr covering the FB */
561 int fb_mtrr; 589 int fb_mtrr;
@@ -650,6 +678,9 @@ extern char *nouveau_tv_norm;
650extern int nouveau_reg_debug; 678extern int nouveau_reg_debug;
651extern char *nouveau_vbios; 679extern char *nouveau_vbios;
652extern int nouveau_ctxfw; 680extern int nouveau_ctxfw;
681extern int nouveau_ignorelid;
682extern int nouveau_nofbaccel;
683extern int nouveau_noaccel;
653 684
654/* nouveau_state.c */ 685/* nouveau_state.c */
655extern void nouveau_preclose(struct drm_device *dev, struct drm_file *); 686extern void nouveau_preclose(struct drm_device *dev, struct drm_file *);
@@ -685,6 +716,13 @@ extern void nouveau_mem_release(struct drm_file *, struct mem_block *heap);
685extern int nouveau_mem_init(struct drm_device *); 716extern int nouveau_mem_init(struct drm_device *);
686extern int nouveau_mem_init_agp(struct drm_device *); 717extern int nouveau_mem_init_agp(struct drm_device *);
687extern void nouveau_mem_close(struct drm_device *); 718extern void nouveau_mem_close(struct drm_device *);
719extern struct nouveau_tile_reg *nv10_mem_set_tiling(struct drm_device *dev,
720 uint32_t addr,
721 uint32_t size,
722 uint32_t pitch);
723extern void nv10_mem_expire_tiling(struct drm_device *dev,
724 struct nouveau_tile_reg *tile,
725 struct nouveau_fence *fence);
688extern int nv50_mem_vm_bind_linear(struct drm_device *, uint64_t virt, 726extern int nv50_mem_vm_bind_linear(struct drm_device *, uint64_t virt,
689 uint32_t size, uint32_t flags, 727 uint32_t size, uint32_t flags,
690 uint64_t phys); 728 uint64_t phys);
@@ -713,7 +751,6 @@ extern int nouveau_channel_alloc(struct drm_device *dev,
713 struct drm_file *file_priv, 751 struct drm_file *file_priv,
714 uint32_t fb_ctxdma, uint32_t tt_ctxdma); 752 uint32_t fb_ctxdma, uint32_t tt_ctxdma);
715extern void nouveau_channel_free(struct nouveau_channel *); 753extern void nouveau_channel_free(struct nouveau_channel *);
716extern int nouveau_channel_idle(struct nouveau_channel *chan);
717 754
718/* nouveau_object.c */ 755/* nouveau_object.c */
719extern int nouveau_gpuobj_early_init(struct drm_device *); 756extern int nouveau_gpuobj_early_init(struct drm_device *);
@@ -756,6 +793,8 @@ extern int nouveau_gpuobj_gart_dma_new(struct nouveau_channel *,
756 uint32_t *o_ret); 793 uint32_t *o_ret);
757extern int nouveau_gpuobj_gr_new(struct nouveau_channel *, int class, 794extern int nouveau_gpuobj_gr_new(struct nouveau_channel *, int class,
758 struct nouveau_gpuobj **); 795 struct nouveau_gpuobj **);
796extern int nouveau_gpuobj_sw_new(struct nouveau_channel *, int class,
797 struct nouveau_gpuobj **);
759extern int nouveau_ioctl_grobj_alloc(struct drm_device *, void *data, 798extern int nouveau_ioctl_grobj_alloc(struct drm_device *, void *data,
760 struct drm_file *); 799 struct drm_file *);
761extern int nouveau_ioctl_gpuobj_free(struct drm_device *, void *data, 800extern int nouveau_ioctl_gpuobj_free(struct drm_device *, void *data,
@@ -804,6 +843,7 @@ nouveau_debugfs_channel_fini(struct nouveau_channel *chan)
804#endif 843#endif
805 844
806/* nouveau_dma.c */ 845/* nouveau_dma.c */
846extern void nouveau_dma_pre_init(struct nouveau_channel *);
807extern int nouveau_dma_init(struct nouveau_channel *); 847extern int nouveau_dma_init(struct nouveau_channel *);
808extern int nouveau_dma_wait(struct nouveau_channel *, int size); 848extern int nouveau_dma_wait(struct nouveau_channel *, int size);
809 849
@@ -879,16 +919,22 @@ extern void nv04_fb_takedown(struct drm_device *);
879/* nv10_fb.c */ 919/* nv10_fb.c */
880extern int nv10_fb_init(struct drm_device *); 920extern int nv10_fb_init(struct drm_device *);
881extern void nv10_fb_takedown(struct drm_device *); 921extern void nv10_fb_takedown(struct drm_device *);
922extern void nv10_fb_set_region_tiling(struct drm_device *, int, uint32_t,
923 uint32_t, uint32_t);
882 924
883/* nv40_fb.c */ 925/* nv40_fb.c */
884extern int nv40_fb_init(struct drm_device *); 926extern int nv40_fb_init(struct drm_device *);
885extern void nv40_fb_takedown(struct drm_device *); 927extern void nv40_fb_takedown(struct drm_device *);
928extern void nv40_fb_set_region_tiling(struct drm_device *, int, uint32_t,
929 uint32_t, uint32_t);
886 930
887/* nv04_fifo.c */ 931/* nv04_fifo.c */
888extern int nv04_fifo_init(struct drm_device *); 932extern int nv04_fifo_init(struct drm_device *);
889extern void nv04_fifo_disable(struct drm_device *); 933extern void nv04_fifo_disable(struct drm_device *);
890extern void nv04_fifo_enable(struct drm_device *); 934extern void nv04_fifo_enable(struct drm_device *);
891extern bool nv04_fifo_reassign(struct drm_device *, bool); 935extern bool nv04_fifo_reassign(struct drm_device *, bool);
936extern bool nv04_fifo_cache_flush(struct drm_device *);
937extern bool nv04_fifo_cache_pull(struct drm_device *, bool);
892extern int nv04_fifo_channel_id(struct drm_device *); 938extern int nv04_fifo_channel_id(struct drm_device *);
893extern int nv04_fifo_create_context(struct nouveau_channel *); 939extern int nv04_fifo_create_context(struct nouveau_channel *);
894extern void nv04_fifo_destroy_context(struct nouveau_channel *); 940extern void nv04_fifo_destroy_context(struct nouveau_channel *);
@@ -941,6 +987,8 @@ extern void nv10_graph_destroy_context(struct nouveau_channel *);
941extern int nv10_graph_load_context(struct nouveau_channel *); 987extern int nv10_graph_load_context(struct nouveau_channel *);
942extern int nv10_graph_unload_context(struct drm_device *); 988extern int nv10_graph_unload_context(struct drm_device *);
943extern void nv10_graph_context_switch(struct drm_device *); 989extern void nv10_graph_context_switch(struct drm_device *);
990extern void nv10_graph_set_region_tiling(struct drm_device *, int, uint32_t,
991 uint32_t, uint32_t);
944 992
945/* nv20_graph.c */ 993/* nv20_graph.c */
946extern struct nouveau_pgraph_object_class nv20_graph_grclass[]; 994extern struct nouveau_pgraph_object_class nv20_graph_grclass[];
@@ -952,6 +1000,8 @@ extern int nv20_graph_unload_context(struct drm_device *);
952extern int nv20_graph_init(struct drm_device *); 1000extern int nv20_graph_init(struct drm_device *);
953extern void nv20_graph_takedown(struct drm_device *); 1001extern void nv20_graph_takedown(struct drm_device *);
954extern int nv30_graph_init(struct drm_device *); 1002extern int nv30_graph_init(struct drm_device *);
1003extern void nv20_graph_set_region_tiling(struct drm_device *, int, uint32_t,
1004 uint32_t, uint32_t);
955 1005
956/* nv40_graph.c */ 1006/* nv40_graph.c */
957extern struct nouveau_pgraph_object_class nv40_graph_grclass[]; 1007extern struct nouveau_pgraph_object_class nv40_graph_grclass[];
@@ -963,6 +1013,8 @@ extern void nv40_graph_destroy_context(struct nouveau_channel *);
963extern int nv40_graph_load_context(struct nouveau_channel *); 1013extern int nv40_graph_load_context(struct nouveau_channel *);
964extern int nv40_graph_unload_context(struct drm_device *); 1014extern int nv40_graph_unload_context(struct drm_device *);
965extern void nv40_grctx_init(struct nouveau_grctx *); 1015extern void nv40_grctx_init(struct nouveau_grctx *);
1016extern void nv40_graph_set_region_tiling(struct drm_device *, int, uint32_t,
1017 uint32_t, uint32_t);
966 1018
967/* nv50_graph.c */ 1019/* nv50_graph.c */
968extern struct nouveau_pgraph_object_class nv50_graph_grclass[]; 1020extern struct nouveau_pgraph_object_class nv50_graph_grclass[];
@@ -1030,8 +1082,7 @@ extern long nouveau_compat_ioctl(struct file *file, unsigned int cmd,
1030 1082
1031/* nv04_dac.c */ 1083/* nv04_dac.c */
1032extern int nv04_dac_create(struct drm_device *dev, struct dcb_entry *entry); 1084extern int nv04_dac_create(struct drm_device *dev, struct dcb_entry *entry);
1033extern enum drm_connector_status nv17_dac_detect(struct drm_encoder *encoder, 1085extern uint32_t nv17_dac_sample_load(struct drm_encoder *encoder);
1034 struct drm_connector *connector);
1035extern int nv04_dac_output_offset(struct drm_encoder *encoder); 1086extern int nv04_dac_output_offset(struct drm_encoder *encoder);
1036extern void nv04_dac_update_dacclk(struct drm_encoder *encoder, bool enable); 1087extern void nv04_dac_update_dacclk(struct drm_encoder *encoder, bool enable);
1037 1088
@@ -1049,9 +1100,6 @@ extern int nv04_tv_create(struct drm_device *dev, struct dcb_entry *entry);
1049 1100
1050/* nv17_tv.c */ 1101/* nv17_tv.c */
1051extern int nv17_tv_create(struct drm_device *dev, struct dcb_entry *entry); 1102extern int nv17_tv_create(struct drm_device *dev, struct dcb_entry *entry);
1052extern enum drm_connector_status nv17_tv_detect(struct drm_encoder *encoder,
1053 struct drm_connector *connector,
1054 uint32_t pin_mask);
1055 1103
1056/* nv04_display.c */ 1104/* nv04_display.c */
1057extern int nv04_display_create(struct drm_device *); 1105extern int nv04_display_create(struct drm_device *);
@@ -1290,14 +1338,14 @@ nv_two_reg_pll(struct drm_device *dev)
1290 return false; 1338 return false;
1291} 1339}
1292 1340
1293#define NV50_NVSW 0x0000506e 1341#define NV_SW 0x0000506e
1294#define NV50_NVSW_DMA_SEMAPHORE 0x00000060 1342#define NV_SW_DMA_SEMAPHORE 0x00000060
1295#define NV50_NVSW_SEMAPHORE_OFFSET 0x00000064 1343#define NV_SW_SEMAPHORE_OFFSET 0x00000064
1296#define NV50_NVSW_SEMAPHORE_ACQUIRE 0x00000068 1344#define NV_SW_SEMAPHORE_ACQUIRE 0x00000068
1297#define NV50_NVSW_SEMAPHORE_RELEASE 0x0000006c 1345#define NV_SW_SEMAPHORE_RELEASE 0x0000006c
1298#define NV50_NVSW_DMA_VBLSEM 0x0000018c 1346#define NV_SW_DMA_VBLSEM 0x0000018c
1299#define NV50_NVSW_VBLSEM_OFFSET 0x00000400 1347#define NV_SW_VBLSEM_OFFSET 0x00000400
1300#define NV50_NVSW_VBLSEM_RELEASE_VALUE 0x00000404 1348#define NV_SW_VBLSEM_RELEASE_VALUE 0x00000404
1301#define NV50_NVSW_VBLSEM_RELEASE 0x00000408 1349#define NV_SW_VBLSEM_RELEASE 0x00000408
1302 1350
1303#endif /* __NOUVEAU_DRV_H__ */ 1351#endif /* __NOUVEAU_DRV_H__ */
diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
index 84af25c238b6..ea879a2efef3 100644
--- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c
+++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
@@ -64,8 +64,7 @@ nouveau_fbcon_sync(struct fb_info *info)
64 return 0; 64 return 0;
65 65
66 if (RING_SPACE(chan, 4)) { 66 if (RING_SPACE(chan, 4)) {
67 NV_ERROR(dev, "GPU lockup - switching to software fbcon\n"); 67 nouveau_fbcon_gpu_lockup(info);
68 info->flags |= FBINFO_HWACCEL_DISABLED;
69 return 0; 68 return 0;
70 } 69 }
71 70
@@ -86,8 +85,7 @@ nouveau_fbcon_sync(struct fb_info *info)
86 } 85 }
87 86
88 if (ret) { 87 if (ret) {
89 NV_ERROR(dev, "GPU lockup - switching to software fbcon\n"); 88 nouveau_fbcon_gpu_lockup(info);
90 info->flags |= FBINFO_HWACCEL_DISABLED;
91 return 0; 89 return 0;
92 } 90 }
93 91
@@ -109,6 +107,34 @@ static struct fb_ops nouveau_fbcon_ops = {
109 .fb_setcmap = drm_fb_helper_setcmap, 107 .fb_setcmap = drm_fb_helper_setcmap,
110}; 108};
111 109
110static struct fb_ops nv04_fbcon_ops = {
111 .owner = THIS_MODULE,
112 .fb_check_var = drm_fb_helper_check_var,
113 .fb_set_par = drm_fb_helper_set_par,
114 .fb_setcolreg = drm_fb_helper_setcolreg,
115 .fb_fillrect = nv04_fbcon_fillrect,
116 .fb_copyarea = nv04_fbcon_copyarea,
117 .fb_imageblit = nv04_fbcon_imageblit,
118 .fb_sync = nouveau_fbcon_sync,
119 .fb_pan_display = drm_fb_helper_pan_display,
120 .fb_blank = drm_fb_helper_blank,
121 .fb_setcmap = drm_fb_helper_setcmap,
122};
123
124static struct fb_ops nv50_fbcon_ops = {
125 .owner = THIS_MODULE,
126 .fb_check_var = drm_fb_helper_check_var,
127 .fb_set_par = drm_fb_helper_set_par,
128 .fb_setcolreg = drm_fb_helper_setcolreg,
129 .fb_fillrect = nv50_fbcon_fillrect,
130 .fb_copyarea = nv50_fbcon_copyarea,
131 .fb_imageblit = nv50_fbcon_imageblit,
132 .fb_sync = nouveau_fbcon_sync,
133 .fb_pan_display = drm_fb_helper_pan_display,
134 .fb_blank = drm_fb_helper_blank,
135 .fb_setcmap = drm_fb_helper_setcmap,
136};
137
112static void nouveau_fbcon_gamma_set(struct drm_crtc *crtc, u16 red, u16 green, 138static void nouveau_fbcon_gamma_set(struct drm_crtc *crtc, u16 red, u16 green,
113 u16 blue, int regno) 139 u16 blue, int regno)
114{ 140{
@@ -212,11 +238,11 @@ nouveau_fbcon_create(struct drm_device *dev, uint32_t fb_width,
212 238
213 mode_cmd.bpp = surface_bpp; 239 mode_cmd.bpp = surface_bpp;
214 mode_cmd.pitch = mode_cmd.width * (mode_cmd.bpp >> 3); 240 mode_cmd.pitch = mode_cmd.width * (mode_cmd.bpp >> 3);
215 mode_cmd.pitch = ALIGN(mode_cmd.pitch, 256); 241 mode_cmd.pitch = roundup(mode_cmd.pitch, 256);
216 mode_cmd.depth = surface_depth; 242 mode_cmd.depth = surface_depth;
217 243
218 size = mode_cmd.pitch * mode_cmd.height; 244 size = mode_cmd.pitch * mode_cmd.height;
219 size = ALIGN(size, PAGE_SIZE); 245 size = roundup(size, PAGE_SIZE);
220 246
221 ret = nouveau_gem_new(dev, dev_priv->channel, size, 0, TTM_PL_FLAG_VRAM, 247 ret = nouveau_gem_new(dev, dev_priv->channel, size, 0, TTM_PL_FLAG_VRAM,
222 0, 0x0000, false, true, &nvbo); 248 0, 0x0000, false, true, &nvbo);
@@ -269,8 +295,12 @@ nouveau_fbcon_create(struct drm_device *dev, uint32_t fb_width,
269 dev_priv->fbdev_info = info; 295 dev_priv->fbdev_info = info;
270 296
271 strcpy(info->fix.id, "nouveaufb"); 297 strcpy(info->fix.id, "nouveaufb");
272 info->flags = FBINFO_DEFAULT | FBINFO_HWACCEL_COPYAREA | 298 if (nouveau_nofbaccel)
273 FBINFO_HWACCEL_FILLRECT | FBINFO_HWACCEL_IMAGEBLIT; 299 info->flags = FBINFO_DEFAULT | FBINFO_HWACCEL_DISABLED;
300 else
301 info->flags = FBINFO_DEFAULT | FBINFO_HWACCEL_COPYAREA |
302 FBINFO_HWACCEL_FILLRECT |
303 FBINFO_HWACCEL_IMAGEBLIT;
274 info->fbops = &nouveau_fbcon_ops; 304 info->fbops = &nouveau_fbcon_ops;
275 info->fix.smem_start = dev->mode_config.fb_base + nvbo->bo.offset - 305 info->fix.smem_start = dev->mode_config.fb_base + nvbo->bo.offset -
276 dev_priv->vm_vram_base; 306 dev_priv->vm_vram_base;
@@ -318,13 +348,15 @@ nouveau_fbcon_create(struct drm_device *dev, uint32_t fb_width,
318 par->nouveau_fb = nouveau_fb; 348 par->nouveau_fb = nouveau_fb;
319 par->dev = dev; 349 par->dev = dev;
320 350
321 if (dev_priv->channel) { 351 if (dev_priv->channel && !nouveau_nofbaccel) {
322 switch (dev_priv->card_type) { 352 switch (dev_priv->card_type) {
323 case NV_50: 353 case NV_50:
324 nv50_fbcon_accel_init(info); 354 nv50_fbcon_accel_init(info);
355 info->fbops = &nv50_fbcon_ops;
325 break; 356 break;
326 default: 357 default:
327 nv04_fbcon_accel_init(info); 358 nv04_fbcon_accel_init(info);
359 info->fbops = &nv04_fbcon_ops;
328 break; 360 break;
329 }; 361 };
330 } 362 }
@@ -380,3 +412,12 @@ nouveau_fbcon_remove(struct drm_device *dev, struct drm_framebuffer *fb)
380 412
381 return 0; 413 return 0;
382} 414}
415
416void nouveau_fbcon_gpu_lockup(struct fb_info *info)
417{
418 struct nouveau_fbcon_par *par = info->par;
419 struct drm_device *dev = par->dev;
420
421 NV_ERROR(dev, "GPU lockup - switching to software fbcon\n");
422 info->flags |= FBINFO_HWACCEL_DISABLED;
423}
diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.h b/drivers/gpu/drm/nouveau/nouveau_fbcon.h
index 8531140fedbc..f9c34e1a8c11 100644
--- a/drivers/gpu/drm/nouveau/nouveau_fbcon.h
+++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.h
@@ -40,8 +40,15 @@ int nouveau_fbcon_remove(struct drm_device *dev, struct drm_framebuffer *fb);
40void nouveau_fbcon_restore(void); 40void nouveau_fbcon_restore(void);
41void nouveau_fbcon_zfill(struct drm_device *dev); 41void nouveau_fbcon_zfill(struct drm_device *dev);
42 42
43void nv04_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *region);
44void nv04_fbcon_fillrect(struct fb_info *info, const struct fb_fillrect *rect);
45void nv04_fbcon_imageblit(struct fb_info *info, const struct fb_image *image);
43int nv04_fbcon_accel_init(struct fb_info *info); 46int nv04_fbcon_accel_init(struct fb_info *info);
47void nv50_fbcon_fillrect(struct fb_info *info, const struct fb_fillrect *rect);
48void nv50_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *region);
49void nv50_fbcon_imageblit(struct fb_info *info, const struct fb_image *image);
44int nv50_fbcon_accel_init(struct fb_info *info); 50int nv50_fbcon_accel_init(struct fb_info *info);
45 51
52void nouveau_fbcon_gpu_lockup(struct fb_info *info);
46#endif /* __NV50_FBCON_H__ */ 53#endif /* __NV50_FBCON_H__ */
47 54
diff --git a/drivers/gpu/drm/nouveau/nouveau_fence.c b/drivers/gpu/drm/nouveau/nouveau_fence.c
index dacac9a0842a..faddf53ff9ed 100644
--- a/drivers/gpu/drm/nouveau/nouveau_fence.c
+++ b/drivers/gpu/drm/nouveau/nouveau_fence.c
@@ -142,7 +142,7 @@ nouveau_fence_emit(struct nouveau_fence *fence)
142 list_add_tail(&fence->entry, &chan->fence.pending); 142 list_add_tail(&fence->entry, &chan->fence.pending);
143 spin_unlock_irqrestore(&chan->fence.lock, flags); 143 spin_unlock_irqrestore(&chan->fence.lock, flags);
144 144
145 BEGIN_RING(chan, NvSubM2MF, USE_REFCNT ? 0x0050 : 0x0150, 1); 145 BEGIN_RING(chan, NvSubSw, USE_REFCNT ? 0x0050 : 0x0150, 1);
146 OUT_RING(chan, fence->sequence); 146 OUT_RING(chan, fence->sequence);
147 FIRE_RING(chan); 147 FIRE_RING(chan);
148 148
diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c
index 18fd8ac9fca7..70cc30803e3b 100644
--- a/drivers/gpu/drm/nouveau/nouveau_gem.c
+++ b/drivers/gpu/drm/nouveau/nouveau_gem.c
@@ -220,7 +220,6 @@ nouveau_gem_set_domain(struct drm_gem_object *gem, uint32_t read_domains,
220} 220}
221 221
222struct validate_op { 222struct validate_op {
223 struct nouveau_fence *fence;
224 struct list_head vram_list; 223 struct list_head vram_list;
225 struct list_head gart_list; 224 struct list_head gart_list;
226 struct list_head both_list; 225 struct list_head both_list;
@@ -252,17 +251,11 @@ validate_fini_list(struct list_head *list, struct nouveau_fence *fence)
252} 251}
253 252
254static void 253static void
255validate_fini(struct validate_op *op, bool success) 254validate_fini(struct validate_op *op, struct nouveau_fence* fence)
256{ 255{
257 struct nouveau_fence *fence = op->fence; 256 validate_fini_list(&op->vram_list, fence);
258 257 validate_fini_list(&op->gart_list, fence);
259 if (unlikely(!success)) 258 validate_fini_list(&op->both_list, fence);
260 op->fence = NULL;
261
262 validate_fini_list(&op->vram_list, op->fence);
263 validate_fini_list(&op->gart_list, op->fence);
264 validate_fini_list(&op->both_list, op->fence);
265 nouveau_fence_unref((void *)&fence);
266} 259}
267 260
268static int 261static int
@@ -328,6 +321,7 @@ retry:
328 else { 321 else {
329 NV_ERROR(dev, "invalid valid domains: 0x%08x\n", 322 NV_ERROR(dev, "invalid valid domains: 0x%08x\n",
330 b->valid_domains); 323 b->valid_domains);
324 list_add_tail(&nvbo->entry, &op->both_list);
331 validate_fini(op, NULL); 325 validate_fini(op, NULL);
332 return -EINVAL; 326 return -EINVAL;
333 } 327 }
@@ -420,10 +414,6 @@ nouveau_gem_pushbuf_validate(struct nouveau_channel *chan,
420 INIT_LIST_HEAD(&op->gart_list); 414 INIT_LIST_HEAD(&op->gart_list);
421 INIT_LIST_HEAD(&op->both_list); 415 INIT_LIST_HEAD(&op->both_list);
422 416
423 ret = nouveau_fence_new(chan, &op->fence, false);
424 if (ret)
425 return ret;
426
427 if (nr_buffers == 0) 417 if (nr_buffers == 0)
428 return 0; 418 return 0;
429 419
@@ -477,13 +467,14 @@ u_memcpya(uint64_t user, unsigned nmemb, unsigned size)
477static int 467static int
478nouveau_gem_pushbuf_reloc_apply(struct nouveau_channel *chan, int nr_bo, 468nouveau_gem_pushbuf_reloc_apply(struct nouveau_channel *chan, int nr_bo,
479 struct drm_nouveau_gem_pushbuf_bo *bo, 469 struct drm_nouveau_gem_pushbuf_bo *bo,
480 int nr_relocs, uint64_t ptr_relocs, 470 unsigned nr_relocs, uint64_t ptr_relocs,
481 int nr_dwords, int first_dword, 471 unsigned nr_dwords, unsigned first_dword,
482 uint32_t *pushbuf, bool is_iomem) 472 uint32_t *pushbuf, bool is_iomem)
483{ 473{
484 struct drm_nouveau_gem_pushbuf_reloc *reloc = NULL; 474 struct drm_nouveau_gem_pushbuf_reloc *reloc = NULL;
485 struct drm_device *dev = chan->dev; 475 struct drm_device *dev = chan->dev;
486 int ret = 0, i; 476 int ret = 0;
477 unsigned i;
487 478
488 reloc = u_memcpya(ptr_relocs, nr_relocs, sizeof(*reloc)); 479 reloc = u_memcpya(ptr_relocs, nr_relocs, sizeof(*reloc));
489 if (IS_ERR(reloc)) 480 if (IS_ERR(reloc))
@@ -541,6 +532,7 @@ nouveau_gem_ioctl_pushbuf(struct drm_device *dev, void *data,
541 struct drm_nouveau_gem_pushbuf_bo *bo = NULL; 532 struct drm_nouveau_gem_pushbuf_bo *bo = NULL;
542 struct nouveau_channel *chan; 533 struct nouveau_channel *chan;
543 struct validate_op op; 534 struct validate_op op;
535 struct nouveau_fence* fence = 0;
544 uint32_t *pushbuf = NULL; 536 uint32_t *pushbuf = NULL;
545 int ret = 0, do_reloc = 0, i; 537 int ret = 0, do_reloc = 0, i;
546 538
@@ -597,7 +589,7 @@ nouveau_gem_ioctl_pushbuf(struct drm_device *dev, void *data,
597 589
598 OUT_RINGp(chan, pushbuf, req->nr_dwords); 590 OUT_RINGp(chan, pushbuf, req->nr_dwords);
599 591
600 ret = nouveau_fence_emit(op.fence); 592 ret = nouveau_fence_new(chan, &fence, true);
601 if (ret) { 593 if (ret) {
602 NV_ERROR(dev, "error fencing pushbuf: %d\n", ret); 594 NV_ERROR(dev, "error fencing pushbuf: %d\n", ret);
603 WIND_RING(chan); 595 WIND_RING(chan);
@@ -605,7 +597,7 @@ nouveau_gem_ioctl_pushbuf(struct drm_device *dev, void *data,
605 } 597 }
606 598
607 if (nouveau_gem_pushbuf_sync(chan)) { 599 if (nouveau_gem_pushbuf_sync(chan)) {
608 ret = nouveau_fence_wait(op.fence, NULL, false, false); 600 ret = nouveau_fence_wait(fence, NULL, false, false);
609 if (ret) { 601 if (ret) {
610 for (i = 0; i < req->nr_dwords; i++) 602 for (i = 0; i < req->nr_dwords; i++)
611 NV_ERROR(dev, "0x%08x\n", pushbuf[i]); 603 NV_ERROR(dev, "0x%08x\n", pushbuf[i]);
@@ -614,7 +606,8 @@ nouveau_gem_ioctl_pushbuf(struct drm_device *dev, void *data,
614 } 606 }
615 607
616out: 608out:
617 validate_fini(&op, ret == 0); 609 validate_fini(&op, fence);
610 nouveau_fence_unref((void**)&fence);
618 mutex_unlock(&dev->struct_mutex); 611 mutex_unlock(&dev->struct_mutex);
619 kfree(pushbuf); 612 kfree(pushbuf);
620 kfree(bo); 613 kfree(bo);
@@ -634,6 +627,7 @@ nouveau_gem_ioctl_pushbuf_call(struct drm_device *dev, void *data,
634 struct drm_gem_object *gem; 627 struct drm_gem_object *gem;
635 struct nouveau_bo *pbbo; 628 struct nouveau_bo *pbbo;
636 struct validate_op op; 629 struct validate_op op;
630 struct nouveau_fence* fence = 0;
637 int i, ret = 0, do_reloc = 0; 631 int i, ret = 0, do_reloc = 0;
638 632
639 NOUVEAU_CHECK_INITIALISED_WITH_RETURN; 633 NOUVEAU_CHECK_INITIALISED_WITH_RETURN;
@@ -675,6 +669,18 @@ nouveau_gem_ioctl_pushbuf_call(struct drm_device *dev, void *data,
675 } 669 }
676 pbbo = nouveau_gem_object(gem); 670 pbbo = nouveau_gem_object(gem);
677 671
672 if ((req->offset & 3) || req->nr_dwords < 2 ||
673 (unsigned long)req->offset > (unsigned long)pbbo->bo.mem.size ||
674 (unsigned long)req->nr_dwords >
675 ((unsigned long)(pbbo->bo.mem.size - req->offset ) >> 2)) {
676 NV_ERROR(dev, "pb call misaligned or out of bounds: "
677 "%d + %d * 4 > %ld\n",
678 req->offset, req->nr_dwords, pbbo->bo.mem.size);
679 ret = -EINVAL;
680 drm_gem_object_unreference(gem);
681 goto out;
682 }
683
678 ret = ttm_bo_reserve(&pbbo->bo, false, false, true, 684 ret = ttm_bo_reserve(&pbbo->bo, false, false, true,
679 chan->fence.sequence); 685 chan->fence.sequence);
680 if (ret) { 686 if (ret) {
@@ -772,7 +778,7 @@ nouveau_gem_ioctl_pushbuf_call(struct drm_device *dev, void *data,
772 OUT_RING(chan, 0); 778 OUT_RING(chan, 0);
773 } 779 }
774 780
775 ret = nouveau_fence_emit(op.fence); 781 ret = nouveau_fence_new(chan, &fence, true);
776 if (ret) { 782 if (ret) {
777 NV_ERROR(dev, "error fencing pushbuf: %d\n", ret); 783 NV_ERROR(dev, "error fencing pushbuf: %d\n", ret);
778 WIND_RING(chan); 784 WIND_RING(chan);
@@ -780,7 +786,8 @@ nouveau_gem_ioctl_pushbuf_call(struct drm_device *dev, void *data,
780 } 786 }
781 787
782out: 788out:
783 validate_fini(&op, ret == 0); 789 validate_fini(&op, fence);
790 nouveau_fence_unref((void**)&fence);
784 mutex_unlock(&dev->struct_mutex); 791 mutex_unlock(&dev->struct_mutex);
785 kfree(bo); 792 kfree(bo);
786 793
@@ -918,7 +925,9 @@ nouveau_gem_ioctl_cpu_prep(struct drm_device *dev, void *data,
918 } 925 }
919 926
920 if (req->flags & NOUVEAU_GEM_CPU_PREP_NOBLOCK) { 927 if (req->flags & NOUVEAU_GEM_CPU_PREP_NOBLOCK) {
928 spin_lock(&nvbo->bo.lock);
921 ret = ttm_bo_wait(&nvbo->bo, false, false, no_wait); 929 ret = ttm_bo_wait(&nvbo->bo, false, false, no_wait);
930 spin_unlock(&nvbo->bo.lock);
922 } else { 931 } else {
923 ret = ttm_bo_synccpu_write_grab(&nvbo->bo, no_wait); 932 ret = ttm_bo_synccpu_write_grab(&nvbo->bo, no_wait);
924 if (ret == 0) 933 if (ret == 0)
diff --git a/drivers/gpu/drm/nouveau/nouveau_grctx.c b/drivers/gpu/drm/nouveau/nouveau_grctx.c
index 419f4c2b3b89..c7ebec696747 100644
--- a/drivers/gpu/drm/nouveau/nouveau_grctx.c
+++ b/drivers/gpu/drm/nouveau/nouveau_grctx.c
@@ -97,8 +97,8 @@ nouveau_grctx_prog_load(struct drm_device *dev)
97 } 97 }
98 98
99 pgraph->ctxvals = kmalloc(fw->size, GFP_KERNEL); 99 pgraph->ctxvals = kmalloc(fw->size, GFP_KERNEL);
100 if (!pgraph->ctxprog) { 100 if (!pgraph->ctxvals) {
101 NV_ERROR(dev, "OOM copying ctxprog\n"); 101 NV_ERROR(dev, "OOM copying ctxvals\n");
102 release_firmware(fw); 102 release_firmware(fw);
103 nouveau_grctx_fini(dev); 103 nouveau_grctx_fini(dev);
104 return -ENOMEM; 104 return -ENOMEM;
diff --git a/drivers/gpu/drm/nouveau/nouveau_irq.c b/drivers/gpu/drm/nouveau/nouveau_irq.c
index 370c72c968d1..447f9f69d6b1 100644
--- a/drivers/gpu/drm/nouveau/nouveau_irq.c
+++ b/drivers/gpu/drm/nouveau/nouveau_irq.c
@@ -211,6 +211,20 @@ nouveau_fifo_irq_handler(struct drm_device *dev)
211 get + 4); 211 get + 4);
212 } 212 }
213 213
214 if (status & NV_PFIFO_INTR_SEMAPHORE) {
215 uint32_t sem;
216
217 status &= ~NV_PFIFO_INTR_SEMAPHORE;
218 nv_wr32(dev, NV03_PFIFO_INTR_0,
219 NV_PFIFO_INTR_SEMAPHORE);
220
221 sem = nv_rd32(dev, NV10_PFIFO_CACHE1_SEMAPHORE);
222 nv_wr32(dev, NV10_PFIFO_CACHE1_SEMAPHORE, sem | 0x1);
223
224 nv_wr32(dev, NV03_PFIFO_CACHE1_GET, get + 4);
225 nv_wr32(dev, NV04_PFIFO_CACHE1_PULL0, 1);
226 }
227
214 if (status) { 228 if (status) {
215 NV_INFO(dev, "PFIFO_INTR 0x%08x - Ch %d\n", 229 NV_INFO(dev, "PFIFO_INTR 0x%08x - Ch %d\n",
216 status, chid); 230 status, chid);
@@ -483,6 +497,13 @@ nouveau_pgraph_intr_error(struct drm_device *dev, uint32_t nsource)
483 if (nsource & NV03_PGRAPH_NSOURCE_ILLEGAL_MTHD) { 497 if (nsource & NV03_PGRAPH_NSOURCE_ILLEGAL_MTHD) {
484 if (nouveau_pgraph_intr_swmthd(dev, &trap)) 498 if (nouveau_pgraph_intr_swmthd(dev, &trap))
485 unhandled = 1; 499 unhandled = 1;
500 } else if (nsource & NV03_PGRAPH_NSOURCE_DMA_VTX_PROTECTION) {
501 uint32_t v = nv_rd32(dev, 0x402000);
502 nv_wr32(dev, 0x402000, v);
503
504 /* dump the error anyway for now: it's useful for
505 Gallium development */
506 unhandled = 1;
486 } else { 507 } else {
487 unhandled = 1; 508 unhandled = 1;
488 } 509 }
@@ -559,85 +580,99 @@ nouveau_pgraph_irq_handler(struct drm_device *dev)
559static void 580static void
560nv50_pgraph_irq_handler(struct drm_device *dev) 581nv50_pgraph_irq_handler(struct drm_device *dev)
561{ 582{
562 uint32_t status, nsource; 583 uint32_t status;
563 584
564 status = nv_rd32(dev, NV03_PGRAPH_INTR); 585 while ((status = nv_rd32(dev, NV03_PGRAPH_INTR))) {
565 nsource = nv_rd32(dev, NV03_PGRAPH_NSOURCE); 586 uint32_t nsource = nv_rd32(dev, NV03_PGRAPH_NSOURCE);
566 587
567 if (status & 0x00000001) { 588 if (status & 0x00000001) {
568 nouveau_pgraph_intr_notify(dev, nsource); 589 nouveau_pgraph_intr_notify(dev, nsource);
569 status &= ~0x00000001; 590 status &= ~0x00000001;
570 nv_wr32(dev, NV03_PGRAPH_INTR, 0x00000001); 591 nv_wr32(dev, NV03_PGRAPH_INTR, 0x00000001);
571 } 592 }
572 593
573 if (status & 0x00000010) { 594 if (status & 0x00000010) {
574 nouveau_pgraph_intr_error(dev, nsource | 595 nouveau_pgraph_intr_error(dev, nsource |
575 NV03_PGRAPH_NSOURCE_ILLEGAL_MTHD); 596 NV03_PGRAPH_NSOURCE_ILLEGAL_MTHD);
576 597
577 status &= ~0x00000010; 598 status &= ~0x00000010;
578 nv_wr32(dev, NV03_PGRAPH_INTR, 0x00000010); 599 nv_wr32(dev, NV03_PGRAPH_INTR, 0x00000010);
579 } 600 }
580 601
581 if (status & 0x00001000) { 602 if (status & 0x00001000) {
582 nv_wr32(dev, 0x400500, 0x00000000); 603 nv_wr32(dev, 0x400500, 0x00000000);
583 nv_wr32(dev, NV03_PGRAPH_INTR, NV_PGRAPH_INTR_CONTEXT_SWITCH); 604 nv_wr32(dev, NV03_PGRAPH_INTR,
584 nv_wr32(dev, NV40_PGRAPH_INTR_EN, nv_rd32(dev, 605 NV_PGRAPH_INTR_CONTEXT_SWITCH);
585 NV40_PGRAPH_INTR_EN) & ~NV_PGRAPH_INTR_CONTEXT_SWITCH); 606 nv_wr32(dev, NV40_PGRAPH_INTR_EN, nv_rd32(dev,
586 nv_wr32(dev, 0x400500, 0x00010001); 607 NV40_PGRAPH_INTR_EN) &
608 ~NV_PGRAPH_INTR_CONTEXT_SWITCH);
609 nv_wr32(dev, 0x400500, 0x00010001);
587 610
588 nv50_graph_context_switch(dev); 611 nv50_graph_context_switch(dev);
589 612
590 status &= ~NV_PGRAPH_INTR_CONTEXT_SWITCH; 613 status &= ~NV_PGRAPH_INTR_CONTEXT_SWITCH;
591 } 614 }
592 615
593 if (status & 0x00100000) { 616 if (status & 0x00100000) {
594 nouveau_pgraph_intr_error(dev, nsource | 617 nouveau_pgraph_intr_error(dev, nsource |
595 NV03_PGRAPH_NSOURCE_DATA_ERROR); 618 NV03_PGRAPH_NSOURCE_DATA_ERROR);
596 619
597 status &= ~0x00100000; 620 status &= ~0x00100000;
598 nv_wr32(dev, NV03_PGRAPH_INTR, 0x00100000); 621 nv_wr32(dev, NV03_PGRAPH_INTR, 0x00100000);
599 } 622 }
600 623
601 if (status & 0x00200000) { 624 if (status & 0x00200000) {
602 int r; 625 int r;
603 626
604 nouveau_pgraph_intr_error(dev, nsource | 627 nouveau_pgraph_intr_error(dev, nsource |
605 NV03_PGRAPH_NSOURCE_PROTECTION_ERROR); 628 NV03_PGRAPH_NSOURCE_PROTECTION_ERROR);
606 629
607 NV_ERROR(dev, "magic set 1:\n"); 630 NV_ERROR(dev, "magic set 1:\n");
608 for (r = 0x408900; r <= 0x408910; r += 4) 631 for (r = 0x408900; r <= 0x408910; r += 4)
609 NV_ERROR(dev, "\t0x%08x: 0x%08x\n", r, nv_rd32(dev, r)); 632 NV_ERROR(dev, "\t0x%08x: 0x%08x\n", r,
610 nv_wr32(dev, 0x408900, nv_rd32(dev, 0x408904) | 0xc0000000); 633 nv_rd32(dev, r));
611 for (r = 0x408e08; r <= 0x408e24; r += 4) 634 nv_wr32(dev, 0x408900,
612 NV_ERROR(dev, "\t0x%08x: 0x%08x\n", r, nv_rd32(dev, r)); 635 nv_rd32(dev, 0x408904) | 0xc0000000);
613 nv_wr32(dev, 0x408e08, nv_rd32(dev, 0x408e08) | 0xc0000000); 636 for (r = 0x408e08; r <= 0x408e24; r += 4)
614 637 NV_ERROR(dev, "\t0x%08x: 0x%08x\n", r,
615 NV_ERROR(dev, "magic set 2:\n"); 638 nv_rd32(dev, r));
616 for (r = 0x409900; r <= 0x409910; r += 4) 639 nv_wr32(dev, 0x408e08,
617 NV_ERROR(dev, "\t0x%08x: 0x%08x\n", r, nv_rd32(dev, r)); 640 nv_rd32(dev, 0x408e08) | 0xc0000000);
618 nv_wr32(dev, 0x409900, nv_rd32(dev, 0x409904) | 0xc0000000); 641
619 for (r = 0x409e08; r <= 0x409e24; r += 4) 642 NV_ERROR(dev, "magic set 2:\n");
620 NV_ERROR(dev, "\t0x%08x: 0x%08x\n", r, nv_rd32(dev, r)); 643 for (r = 0x409900; r <= 0x409910; r += 4)
621 nv_wr32(dev, 0x409e08, nv_rd32(dev, 0x409e08) | 0xc0000000); 644 NV_ERROR(dev, "\t0x%08x: 0x%08x\n", r,
622 645 nv_rd32(dev, r));
623 status &= ~0x00200000; 646 nv_wr32(dev, 0x409900,
624 nv_wr32(dev, NV03_PGRAPH_NSOURCE, nsource); 647 nv_rd32(dev, 0x409904) | 0xc0000000);
625 nv_wr32(dev, NV03_PGRAPH_INTR, 0x00200000); 648 for (r = 0x409e08; r <= 0x409e24; r += 4)
626 } 649 NV_ERROR(dev, "\t0x%08x: 0x%08x\n", r,
650 nv_rd32(dev, r));
651 nv_wr32(dev, 0x409e08,
652 nv_rd32(dev, 0x409e08) | 0xc0000000);
653
654 status &= ~0x00200000;
655 nv_wr32(dev, NV03_PGRAPH_NSOURCE, nsource);
656 nv_wr32(dev, NV03_PGRAPH_INTR, 0x00200000);
657 }
627 658
628 if (status) { 659 if (status) {
629 NV_INFO(dev, "Unhandled PGRAPH_INTR - 0x%08x\n", status); 660 NV_INFO(dev, "Unhandled PGRAPH_INTR - 0x%08x\n",
630 nv_wr32(dev, NV03_PGRAPH_INTR, status); 661 status);
631 } 662 nv_wr32(dev, NV03_PGRAPH_INTR, status);
663 }
632 664
633 { 665 {
634 const int isb = (1 << 16) | (1 << 0); 666 const int isb = (1 << 16) | (1 << 0);
635 667
636 if ((nv_rd32(dev, 0x400500) & isb) != isb) 668 if ((nv_rd32(dev, 0x400500) & isb) != isb)
637 nv_wr32(dev, 0x400500, nv_rd32(dev, 0x400500) | isb); 669 nv_wr32(dev, 0x400500,
670 nv_rd32(dev, 0x400500) | isb);
671 }
638 } 672 }
639 673
640 nv_wr32(dev, NV03_PMC_INTR_0, NV_PMC_INTR_0_PGRAPH_PENDING); 674 nv_wr32(dev, NV03_PMC_INTR_0, NV_PMC_INTR_0_PGRAPH_PENDING);
675 nv_wr32(dev, 0x400824, nv_rd32(dev, 0x400824) & ~(1 << 31));
641} 676}
642 677
643static void 678static void
diff --git a/drivers/gpu/drm/nouveau/nouveau_mem.c b/drivers/gpu/drm/nouveau/nouveau_mem.c
index 5158a12f7844..2dc09dbd817d 100644
--- a/drivers/gpu/drm/nouveau/nouveau_mem.c
+++ b/drivers/gpu/drm/nouveau/nouveau_mem.c
@@ -192,6 +192,92 @@ void nouveau_mem_release(struct drm_file *file_priv, struct mem_block *heap)
192} 192}
193 193
194/* 194/*
195 * NV10-NV40 tiling helpers
196 */
197
198static void
199nv10_mem_set_region_tiling(struct drm_device *dev, int i, uint32_t addr,
200 uint32_t size, uint32_t pitch)
201{
202 struct drm_nouveau_private *dev_priv = dev->dev_private;
203 struct nouveau_fifo_engine *pfifo = &dev_priv->engine.fifo;
204 struct nouveau_fb_engine *pfb = &dev_priv->engine.fb;
205 struct nouveau_pgraph_engine *pgraph = &dev_priv->engine.graph;
206 struct nouveau_tile_reg *tile = &dev_priv->tile.reg[i];
207
208 tile->addr = addr;
209 tile->size = size;
210 tile->used = !!pitch;
211 nouveau_fence_unref((void **)&tile->fence);
212
213 if (!pfifo->cache_flush(dev))
214 return;
215
216 pfifo->reassign(dev, false);
217 pfifo->cache_flush(dev);
218 pfifo->cache_pull(dev, false);
219
220 nouveau_wait_for_idle(dev);
221
222 pgraph->set_region_tiling(dev, i, addr, size, pitch);
223 pfb->set_region_tiling(dev, i, addr, size, pitch);
224
225 pfifo->cache_pull(dev, true);
226 pfifo->reassign(dev, true);
227}
228
229struct nouveau_tile_reg *
230nv10_mem_set_tiling(struct drm_device *dev, uint32_t addr, uint32_t size,
231 uint32_t pitch)
232{
233 struct drm_nouveau_private *dev_priv = dev->dev_private;
234 struct nouveau_fb_engine *pfb = &dev_priv->engine.fb;
235 struct nouveau_tile_reg *tile = dev_priv->tile.reg, *found = NULL;
236 int i;
237
238 spin_lock(&dev_priv->tile.lock);
239
240 for (i = 0; i < pfb->num_tiles; i++) {
241 if (tile[i].used)
242 /* Tile region in use. */
243 continue;
244
245 if (tile[i].fence &&
246 !nouveau_fence_signalled(tile[i].fence, NULL))
247 /* Pending tile region. */
248 continue;
249
250 if (max(tile[i].addr, addr) <
251 min(tile[i].addr + tile[i].size, addr + size))
252 /* Kill an intersecting tile region. */
253 nv10_mem_set_region_tiling(dev, i, 0, 0, 0);
254
255 if (pitch && !found) {
256 /* Free tile region. */
257 nv10_mem_set_region_tiling(dev, i, addr, size, pitch);
258 found = &tile[i];
259 }
260 }
261
262 spin_unlock(&dev_priv->tile.lock);
263
264 return found;
265}
266
267void
268nv10_mem_expire_tiling(struct drm_device *dev, struct nouveau_tile_reg *tile,
269 struct nouveau_fence *fence)
270{
271 if (fence) {
272 /* Mark it as pending. */
273 tile->fence = fence;
274 nouveau_fence_ref(fence);
275 }
276
277 tile->used = false;
278}
279
280/*
195 * NV50 VM helpers 281 * NV50 VM helpers
196 */ 282 */
197int 283int
@@ -199,53 +285,50 @@ nv50_mem_vm_bind_linear(struct drm_device *dev, uint64_t virt, uint32_t size,
199 uint32_t flags, uint64_t phys) 285 uint32_t flags, uint64_t phys)
200{ 286{
201 struct drm_nouveau_private *dev_priv = dev->dev_private; 287 struct drm_nouveau_private *dev_priv = dev->dev_private;
202 struct nouveau_gpuobj **pgt; 288 struct nouveau_gpuobj *pgt;
203 unsigned psz, pfl, pages; 289 unsigned block;
204 290 int i;
205 if (virt >= dev_priv->vm_gart_base && 291
206 (virt + size) < (dev_priv->vm_gart_base + dev_priv->vm_gart_size)) { 292 virt = ((virt - dev_priv->vm_vram_base) >> 16) << 1;
207 psz = 12; 293 size = (size >> 16) << 1;
208 pgt = &dev_priv->gart_info.sg_ctxdma; 294
209 pfl = 0x21; 295 phys |= ((uint64_t)flags << 32);
210 virt -= dev_priv->vm_gart_base; 296 phys |= 1;
211 } else 297 if (dev_priv->vram_sys_base) {
212 if (virt >= dev_priv->vm_vram_base && 298 phys += dev_priv->vram_sys_base;
213 (virt + size) < (dev_priv->vm_vram_base + dev_priv->vm_vram_size)) { 299 phys |= 0x30;
214 psz = 16;
215 pgt = dev_priv->vm_vram_pt;
216 pfl = 0x01;
217 virt -= dev_priv->vm_vram_base;
218 } else {
219 NV_ERROR(dev, "Invalid address: 0x%16llx-0x%16llx\n",
220 virt, virt + size - 1);
221 return -EINVAL;
222 } 300 }
223 301
224 pages = size >> psz;
225
226 dev_priv->engine.instmem.prepare_access(dev, true); 302 dev_priv->engine.instmem.prepare_access(dev, true);
227 if (flags & 0x80000000) { 303 while (size) {
228 while (pages--) { 304 unsigned offset_h = upper_32_bits(phys);
229 struct nouveau_gpuobj *pt = pgt[virt >> 29]; 305 unsigned offset_l = lower_32_bits(phys);
230 unsigned pte = ((virt & 0x1fffffffULL) >> psz) << 1; 306 unsigned pte, end;
307
308 for (i = 7; i >= 0; i--) {
309 block = 1 << (i + 1);
310 if (size >= block && !(virt & (block - 1)))
311 break;
312 }
313 offset_l |= (i << 7);
231 314
232 nv_wo32(dev, pt, pte++, 0x00000000); 315 phys += block << 15;
233 nv_wo32(dev, pt, pte++, 0x00000000); 316 size -= block;
234 317
235 virt += (1 << psz); 318 while (block) {
236 } 319 pgt = dev_priv->vm_vram_pt[virt >> 14];
237 } else { 320 pte = virt & 0x3ffe;
238 while (pages--) {
239 struct nouveau_gpuobj *pt = pgt[virt >> 29];
240 unsigned pte = ((virt & 0x1fffffffULL) >> psz) << 1;
241 unsigned offset_h = upper_32_bits(phys) & 0xff;
242 unsigned offset_l = lower_32_bits(phys);
243 321
244 nv_wo32(dev, pt, pte++, offset_l | pfl); 322 end = pte + block;
245 nv_wo32(dev, pt, pte++, offset_h | flags); 323 if (end > 16384)
324 end = 16384;
325 block -= (end - pte);
326 virt += (end - pte);
246 327
247 phys += (1 << psz); 328 while (pte < end) {
248 virt += (1 << psz); 329 nv_wo32(dev, pgt, pte++, offset_l);
330 nv_wo32(dev, pgt, pte++, offset_h);
331 }
249 } 332 }
250 } 333 }
251 dev_priv->engine.instmem.finish_access(dev); 334 dev_priv->engine.instmem.finish_access(dev);
@@ -270,7 +353,41 @@ nv50_mem_vm_bind_linear(struct drm_device *dev, uint64_t virt, uint32_t size,
270void 353void
271nv50_mem_vm_unbind(struct drm_device *dev, uint64_t virt, uint32_t size) 354nv50_mem_vm_unbind(struct drm_device *dev, uint64_t virt, uint32_t size)
272{ 355{
273 nv50_mem_vm_bind_linear(dev, virt, size, 0x80000000, 0); 356 struct drm_nouveau_private *dev_priv = dev->dev_private;
357 struct nouveau_gpuobj *pgt;
358 unsigned pages, pte, end;
359
360 virt -= dev_priv->vm_vram_base;
361 pages = (size >> 16) << 1;
362
363 dev_priv->engine.instmem.prepare_access(dev, true);
364 while (pages) {
365 pgt = dev_priv->vm_vram_pt[virt >> 29];
366 pte = (virt & 0x1ffe0000ULL) >> 15;
367
368 end = pte + pages;
369 if (end > 16384)
370 end = 16384;
371 pages -= (end - pte);
372 virt += (end - pte) << 15;
373
374 while (pte < end)
375 nv_wo32(dev, pgt, pte++, 0);
376 }
377 dev_priv->engine.instmem.finish_access(dev);
378
379 nv_wr32(dev, 0x100c80, 0x00050001);
380 if (!nv_wait(0x100c80, 0x00000001, 0x00000000)) {
381 NV_ERROR(dev, "timeout: (0x100c80 & 1) == 0 (2)\n");
382 NV_ERROR(dev, "0x100c80 = 0x%08x\n", nv_rd32(dev, 0x100c80));
383 return;
384 }
385
386 nv_wr32(dev, 0x100c80, 0x00000001);
387 if (!nv_wait(0x100c80, 0x00000001, 0x00000000)) {
388 NV_ERROR(dev, "timeout: (0x100c80 & 1) == 0 (2)\n");
389 NV_ERROR(dev, "0x100c80 = 0x%08x\n", nv_rd32(dev, 0x100c80));
390 }
274} 391}
275 392
276/* 393/*
@@ -297,9 +414,8 @@ void nouveau_mem_close(struct drm_device *dev)
297{ 414{
298 struct drm_nouveau_private *dev_priv = dev->dev_private; 415 struct drm_nouveau_private *dev_priv = dev->dev_private;
299 416
300 if (dev_priv->ttm.bdev.man[TTM_PL_PRIV0].has_type) 417 nouveau_bo_unpin(dev_priv->vga_ram);
301 ttm_bo_clean_mm(&dev_priv->ttm.bdev, TTM_PL_PRIV0); 418 nouveau_bo_ref(NULL, &dev_priv->vga_ram);
302 ttm_bo_clean_mm(&dev_priv->ttm.bdev, TTM_PL_VRAM);
303 419
304 ttm_bo_device_release(&dev_priv->ttm.bdev); 420 ttm_bo_device_release(&dev_priv->ttm.bdev);
305 421
@@ -513,6 +629,7 @@ nouveau_mem_init(struct drm_device *dev)
513 629
514 INIT_LIST_HEAD(&dev_priv->ttm.bo_list); 630 INIT_LIST_HEAD(&dev_priv->ttm.bo_list);
515 spin_lock_init(&dev_priv->ttm.bo_list_lock); 631 spin_lock_init(&dev_priv->ttm.bo_list_lock);
632 spin_lock_init(&dev_priv->tile.lock);
516 633
517 dev_priv->fb_available_size = nouveau_mem_fb_amount(dev); 634 dev_priv->fb_available_size = nouveau_mem_fb_amount(dev);
518 635
@@ -535,6 +652,15 @@ nouveau_mem_init(struct drm_device *dev)
535 return ret; 652 return ret;
536 } 653 }
537 654
655 ret = nouveau_bo_new(dev, NULL, 256*1024, 0, TTM_PL_FLAG_VRAM,
656 0, 0, true, true, &dev_priv->vga_ram);
657 if (ret == 0)
658 ret = nouveau_bo_pin(dev_priv->vga_ram, TTM_PL_FLAG_VRAM);
659 if (ret) {
660 NV_WARN(dev, "failed to reserve VGA memory\n");
661 nouveau_bo_ref(NULL, &dev_priv->vga_ram);
662 }
663
538 /* GART */ 664 /* GART */
539#if !defined(__powerpc__) && !defined(__ia64__) 665#if !defined(__powerpc__) && !defined(__ia64__)
540 if (drm_device_is_agp(dev) && dev->agp) { 666 if (drm_device_is_agp(dev) && dev->agp) {
@@ -566,6 +692,7 @@ nouveau_mem_init(struct drm_device *dev)
566 dev_priv->fb_mtrr = drm_mtrr_add(drm_get_resource_start(dev, 1), 692 dev_priv->fb_mtrr = drm_mtrr_add(drm_get_resource_start(dev, 1),
567 drm_get_resource_len(dev, 1), 693 drm_get_resource_len(dev, 1),
568 DRM_MTRR_WC); 694 DRM_MTRR_WC);
695
569 return 0; 696 return 0;
570} 697}
571 698
diff --git a/drivers/gpu/drm/nouveau/nouveau_notifier.c b/drivers/gpu/drm/nouveau/nouveau_notifier.c
index 6c66a34b6345..d99dc087f9b1 100644
--- a/drivers/gpu/drm/nouveau/nouveau_notifier.c
+++ b/drivers/gpu/drm/nouveau/nouveau_notifier.c
@@ -34,15 +34,20 @@ nouveau_notifier_init_channel(struct nouveau_channel *chan)
34{ 34{
35 struct drm_device *dev = chan->dev; 35 struct drm_device *dev = chan->dev;
36 struct nouveau_bo *ntfy = NULL; 36 struct nouveau_bo *ntfy = NULL;
37 uint32_t flags;
37 int ret; 38 int ret;
38 39
39 ret = nouveau_gem_new(dev, NULL, PAGE_SIZE, 0, nouveau_vram_notify ? 40 if (nouveau_vram_notify)
40 TTM_PL_FLAG_VRAM : TTM_PL_FLAG_TT, 41 flags = TTM_PL_FLAG_VRAM;
42 else
43 flags = TTM_PL_FLAG_TT;
44
45 ret = nouveau_gem_new(dev, NULL, PAGE_SIZE, 0, flags,
41 0, 0x0000, false, true, &ntfy); 46 0, 0x0000, false, true, &ntfy);
42 if (ret) 47 if (ret)
43 return ret; 48 return ret;
44 49
45 ret = nouveau_bo_pin(ntfy, TTM_PL_FLAG_VRAM); 50 ret = nouveau_bo_pin(ntfy, flags);
46 if (ret) 51 if (ret)
47 goto out_err; 52 goto out_err;
48 53
@@ -128,6 +133,8 @@ nouveau_notifier_alloc(struct nouveau_channel *chan, uint32_t handle,
128 target = NV_DMA_TARGET_PCI; 133 target = NV_DMA_TARGET_PCI;
129 } else { 134 } else {
130 target = NV_DMA_TARGET_AGP; 135 target = NV_DMA_TARGET_AGP;
136 if (dev_priv->card_type >= NV_50)
137 offset += dev_priv->vm_gart_base;
131 } 138 }
132 } else { 139 } else {
133 NV_ERROR(dev, "Bad DMA target, mem_type %d!\n", 140 NV_ERROR(dev, "Bad DMA target, mem_type %d!\n",
diff --git a/drivers/gpu/drm/nouveau/nouveau_object.c b/drivers/gpu/drm/nouveau/nouveau_object.c
index 93379bb81bea..e7c100ba63a1 100644
--- a/drivers/gpu/drm/nouveau/nouveau_object.c
+++ b/drivers/gpu/drm/nouveau/nouveau_object.c
@@ -881,15 +881,16 @@ nouveau_gpuobj_gr_new(struct nouveau_channel *chan, int class,
881 return 0; 881 return 0;
882} 882}
883 883
884static int 884int
885nouveau_gpuobj_sw_new(struct nouveau_channel *chan, int class, 885nouveau_gpuobj_sw_new(struct nouveau_channel *chan, int class,
886 struct nouveau_gpuobj **gpuobj_ret) 886 struct nouveau_gpuobj **gpuobj_ret)
887{ 887{
888 struct drm_nouveau_private *dev_priv = chan->dev->dev_private; 888 struct drm_nouveau_private *dev_priv;
889 struct nouveau_gpuobj *gpuobj; 889 struct nouveau_gpuobj *gpuobj;
890 890
891 if (!chan || !gpuobj_ret || *gpuobj_ret != NULL) 891 if (!chan || !gpuobj_ret || *gpuobj_ret != NULL)
892 return -EINVAL; 892 return -EINVAL;
893 dev_priv = chan->dev->dev_private;
893 894
894 gpuobj = kzalloc(sizeof(*gpuobj), GFP_KERNEL); 895 gpuobj = kzalloc(sizeof(*gpuobj), GFP_KERNEL);
895 if (!gpuobj) 896 if (!gpuobj)
diff --git a/drivers/gpu/drm/nouveau/nouveau_reg.h b/drivers/gpu/drm/nouveau/nouveau_reg.h
index fa1b0e7165b9..aa9b310e41be 100644
--- a/drivers/gpu/drm/nouveau/nouveau_reg.h
+++ b/drivers/gpu/drm/nouveau/nouveau_reg.h
@@ -99,6 +99,7 @@
99 * the card will hang early on in the X init process. 99 * the card will hang early on in the X init process.
100 */ 100 */
101# define NV_PMC_ENABLE_UNK13 (1<<13) 101# define NV_PMC_ENABLE_UNK13 (1<<13)
102#define NV40_PMC_GRAPH_UNITS 0x00001540
102#define NV40_PMC_BACKLIGHT 0x000015f0 103#define NV40_PMC_BACKLIGHT 0x000015f0
103# define NV40_PMC_BACKLIGHT_MASK 0x001f0000 104# define NV40_PMC_BACKLIGHT_MASK 0x001f0000
104#define NV40_PMC_1700 0x00001700 105#define NV40_PMC_1700 0x00001700
@@ -349,19 +350,19 @@
349#define NV04_PGRAPH_BLEND 0x00400824 350#define NV04_PGRAPH_BLEND 0x00400824
350#define NV04_PGRAPH_STORED_FMT 0x00400830 351#define NV04_PGRAPH_STORED_FMT 0x00400830
351#define NV04_PGRAPH_PATT_COLORRAM 0x00400900 352#define NV04_PGRAPH_PATT_COLORRAM 0x00400900
352#define NV40_PGRAPH_TILE0(i) (0x00400900 + (i*16)) 353#define NV20_PGRAPH_TILE(i) (0x00400900 + (i*16))
353#define NV40_PGRAPH_TLIMIT0(i) (0x00400904 + (i*16)) 354#define NV20_PGRAPH_TLIMIT(i) (0x00400904 + (i*16))
354#define NV40_PGRAPH_TSIZE0(i) (0x00400908 + (i*16)) 355#define NV20_PGRAPH_TSIZE(i) (0x00400908 + (i*16))
355#define NV40_PGRAPH_TSTATUS0(i) (0x0040090C + (i*16)) 356#define NV20_PGRAPH_TSTATUS(i) (0x0040090C + (i*16))
356#define NV10_PGRAPH_TILE(i) (0x00400B00 + (i*16)) 357#define NV10_PGRAPH_TILE(i) (0x00400B00 + (i*16))
357#define NV10_PGRAPH_TLIMIT(i) (0x00400B04 + (i*16)) 358#define NV10_PGRAPH_TLIMIT(i) (0x00400B04 + (i*16))
358#define NV10_PGRAPH_TSIZE(i) (0x00400B08 + (i*16)) 359#define NV10_PGRAPH_TSIZE(i) (0x00400B08 + (i*16))
359#define NV10_PGRAPH_TSTATUS(i) (0x00400B0C + (i*16)) 360#define NV10_PGRAPH_TSTATUS(i) (0x00400B0C + (i*16))
360#define NV04_PGRAPH_U_RAM 0x00400D00 361#define NV04_PGRAPH_U_RAM 0x00400D00
361#define NV47_PGRAPH_TILE0(i) (0x00400D00 + (i*16)) 362#define NV47_PGRAPH_TILE(i) (0x00400D00 + (i*16))
362#define NV47_PGRAPH_TLIMIT0(i) (0x00400D04 + (i*16)) 363#define NV47_PGRAPH_TLIMIT(i) (0x00400D04 + (i*16))
363#define NV47_PGRAPH_TSIZE0(i) (0x00400D08 + (i*16)) 364#define NV47_PGRAPH_TSIZE(i) (0x00400D08 + (i*16))
364#define NV47_PGRAPH_TSTATUS0(i) (0x00400D0C + (i*16)) 365#define NV47_PGRAPH_TSTATUS(i) (0x00400D0C + (i*16))
365#define NV04_PGRAPH_V_RAM 0x00400D40 366#define NV04_PGRAPH_V_RAM 0x00400D40
366#define NV04_PGRAPH_W_RAM 0x00400D80 367#define NV04_PGRAPH_W_RAM 0x00400D80
367#define NV10_PGRAPH_COMBINER0_IN_ALPHA 0x00400E40 368#define NV10_PGRAPH_COMBINER0_IN_ALPHA 0x00400E40
diff --git a/drivers/gpu/drm/nouveau/nouveau_sgdma.c b/drivers/gpu/drm/nouveau/nouveau_sgdma.c
index 4c7f1e403e80..ed1590577b6c 100644
--- a/drivers/gpu/drm/nouveau/nouveau_sgdma.c
+++ b/drivers/gpu/drm/nouveau/nouveau_sgdma.c
@@ -54,11 +54,12 @@ static void
54nouveau_sgdma_clear(struct ttm_backend *be) 54nouveau_sgdma_clear(struct ttm_backend *be)
55{ 55{
56 struct nouveau_sgdma_be *nvbe = (struct nouveau_sgdma_be *)be; 56 struct nouveau_sgdma_be *nvbe = (struct nouveau_sgdma_be *)be;
57 struct drm_device *dev = nvbe->dev; 57 struct drm_device *dev;
58
59 NV_DEBUG(nvbe->dev, "\n");
60 58
61 if (nvbe && nvbe->pages) { 59 if (nvbe && nvbe->pages) {
60 dev = nvbe->dev;
61 NV_DEBUG(dev, "\n");
62
62 if (nvbe->bound) 63 if (nvbe->bound)
63 be->func->unbind(be); 64 be->func->unbind(be);
64 65
diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
index e76ec2d207a9..a4851af5b05e 100644
--- a/drivers/gpu/drm/nouveau/nouveau_state.c
+++ b/drivers/gpu/drm/nouveau/nouveau_state.c
@@ -76,6 +76,8 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
76 engine->fifo.disable = nv04_fifo_disable; 76 engine->fifo.disable = nv04_fifo_disable;
77 engine->fifo.enable = nv04_fifo_enable; 77 engine->fifo.enable = nv04_fifo_enable;
78 engine->fifo.reassign = nv04_fifo_reassign; 78 engine->fifo.reassign = nv04_fifo_reassign;
79 engine->fifo.cache_flush = nv04_fifo_cache_flush;
80 engine->fifo.cache_pull = nv04_fifo_cache_pull;
79 engine->fifo.channel_id = nv04_fifo_channel_id; 81 engine->fifo.channel_id = nv04_fifo_channel_id;
80 engine->fifo.create_context = nv04_fifo_create_context; 82 engine->fifo.create_context = nv04_fifo_create_context;
81 engine->fifo.destroy_context = nv04_fifo_destroy_context; 83 engine->fifo.destroy_context = nv04_fifo_destroy_context;
@@ -100,6 +102,7 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
100 engine->timer.takedown = nv04_timer_takedown; 102 engine->timer.takedown = nv04_timer_takedown;
101 engine->fb.init = nv10_fb_init; 103 engine->fb.init = nv10_fb_init;
102 engine->fb.takedown = nv10_fb_takedown; 104 engine->fb.takedown = nv10_fb_takedown;
105 engine->fb.set_region_tiling = nv10_fb_set_region_tiling;
103 engine->graph.grclass = nv10_graph_grclass; 106 engine->graph.grclass = nv10_graph_grclass;
104 engine->graph.init = nv10_graph_init; 107 engine->graph.init = nv10_graph_init;
105 engine->graph.takedown = nv10_graph_takedown; 108 engine->graph.takedown = nv10_graph_takedown;
@@ -109,12 +112,15 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
109 engine->graph.fifo_access = nv04_graph_fifo_access; 112 engine->graph.fifo_access = nv04_graph_fifo_access;
110 engine->graph.load_context = nv10_graph_load_context; 113 engine->graph.load_context = nv10_graph_load_context;
111 engine->graph.unload_context = nv10_graph_unload_context; 114 engine->graph.unload_context = nv10_graph_unload_context;
115 engine->graph.set_region_tiling = nv10_graph_set_region_tiling;
112 engine->fifo.channels = 32; 116 engine->fifo.channels = 32;
113 engine->fifo.init = nv10_fifo_init; 117 engine->fifo.init = nv10_fifo_init;
114 engine->fifo.takedown = nouveau_stub_takedown; 118 engine->fifo.takedown = nouveau_stub_takedown;
115 engine->fifo.disable = nv04_fifo_disable; 119 engine->fifo.disable = nv04_fifo_disable;
116 engine->fifo.enable = nv04_fifo_enable; 120 engine->fifo.enable = nv04_fifo_enable;
117 engine->fifo.reassign = nv04_fifo_reassign; 121 engine->fifo.reassign = nv04_fifo_reassign;
122 engine->fifo.cache_flush = nv04_fifo_cache_flush;
123 engine->fifo.cache_pull = nv04_fifo_cache_pull;
118 engine->fifo.channel_id = nv10_fifo_channel_id; 124 engine->fifo.channel_id = nv10_fifo_channel_id;
119 engine->fifo.create_context = nv10_fifo_create_context; 125 engine->fifo.create_context = nv10_fifo_create_context;
120 engine->fifo.destroy_context = nv10_fifo_destroy_context; 126 engine->fifo.destroy_context = nv10_fifo_destroy_context;
@@ -139,6 +145,7 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
139 engine->timer.takedown = nv04_timer_takedown; 145 engine->timer.takedown = nv04_timer_takedown;
140 engine->fb.init = nv10_fb_init; 146 engine->fb.init = nv10_fb_init;
141 engine->fb.takedown = nv10_fb_takedown; 147 engine->fb.takedown = nv10_fb_takedown;
148 engine->fb.set_region_tiling = nv10_fb_set_region_tiling;
142 engine->graph.grclass = nv20_graph_grclass; 149 engine->graph.grclass = nv20_graph_grclass;
143 engine->graph.init = nv20_graph_init; 150 engine->graph.init = nv20_graph_init;
144 engine->graph.takedown = nv20_graph_takedown; 151 engine->graph.takedown = nv20_graph_takedown;
@@ -148,12 +155,15 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
148 engine->graph.fifo_access = nv04_graph_fifo_access; 155 engine->graph.fifo_access = nv04_graph_fifo_access;
149 engine->graph.load_context = nv20_graph_load_context; 156 engine->graph.load_context = nv20_graph_load_context;
150 engine->graph.unload_context = nv20_graph_unload_context; 157 engine->graph.unload_context = nv20_graph_unload_context;
158 engine->graph.set_region_tiling = nv20_graph_set_region_tiling;
151 engine->fifo.channels = 32; 159 engine->fifo.channels = 32;
152 engine->fifo.init = nv10_fifo_init; 160 engine->fifo.init = nv10_fifo_init;
153 engine->fifo.takedown = nouveau_stub_takedown; 161 engine->fifo.takedown = nouveau_stub_takedown;
154 engine->fifo.disable = nv04_fifo_disable; 162 engine->fifo.disable = nv04_fifo_disable;
155 engine->fifo.enable = nv04_fifo_enable; 163 engine->fifo.enable = nv04_fifo_enable;
156 engine->fifo.reassign = nv04_fifo_reassign; 164 engine->fifo.reassign = nv04_fifo_reassign;
165 engine->fifo.cache_flush = nv04_fifo_cache_flush;
166 engine->fifo.cache_pull = nv04_fifo_cache_pull;
157 engine->fifo.channel_id = nv10_fifo_channel_id; 167 engine->fifo.channel_id = nv10_fifo_channel_id;
158 engine->fifo.create_context = nv10_fifo_create_context; 168 engine->fifo.create_context = nv10_fifo_create_context;
159 engine->fifo.destroy_context = nv10_fifo_destroy_context; 169 engine->fifo.destroy_context = nv10_fifo_destroy_context;
@@ -178,6 +188,7 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
178 engine->timer.takedown = nv04_timer_takedown; 188 engine->timer.takedown = nv04_timer_takedown;
179 engine->fb.init = nv10_fb_init; 189 engine->fb.init = nv10_fb_init;
180 engine->fb.takedown = nv10_fb_takedown; 190 engine->fb.takedown = nv10_fb_takedown;
191 engine->fb.set_region_tiling = nv10_fb_set_region_tiling;
181 engine->graph.grclass = nv30_graph_grclass; 192 engine->graph.grclass = nv30_graph_grclass;
182 engine->graph.init = nv30_graph_init; 193 engine->graph.init = nv30_graph_init;
183 engine->graph.takedown = nv20_graph_takedown; 194 engine->graph.takedown = nv20_graph_takedown;
@@ -187,12 +198,15 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
187 engine->graph.destroy_context = nv20_graph_destroy_context; 198 engine->graph.destroy_context = nv20_graph_destroy_context;
188 engine->graph.load_context = nv20_graph_load_context; 199 engine->graph.load_context = nv20_graph_load_context;
189 engine->graph.unload_context = nv20_graph_unload_context; 200 engine->graph.unload_context = nv20_graph_unload_context;
201 engine->graph.set_region_tiling = nv20_graph_set_region_tiling;
190 engine->fifo.channels = 32; 202 engine->fifo.channels = 32;
191 engine->fifo.init = nv10_fifo_init; 203 engine->fifo.init = nv10_fifo_init;
192 engine->fifo.takedown = nouveau_stub_takedown; 204 engine->fifo.takedown = nouveau_stub_takedown;
193 engine->fifo.disable = nv04_fifo_disable; 205 engine->fifo.disable = nv04_fifo_disable;
194 engine->fifo.enable = nv04_fifo_enable; 206 engine->fifo.enable = nv04_fifo_enable;
195 engine->fifo.reassign = nv04_fifo_reassign; 207 engine->fifo.reassign = nv04_fifo_reassign;
208 engine->fifo.cache_flush = nv04_fifo_cache_flush;
209 engine->fifo.cache_pull = nv04_fifo_cache_pull;
196 engine->fifo.channel_id = nv10_fifo_channel_id; 210 engine->fifo.channel_id = nv10_fifo_channel_id;
197 engine->fifo.create_context = nv10_fifo_create_context; 211 engine->fifo.create_context = nv10_fifo_create_context;
198 engine->fifo.destroy_context = nv10_fifo_destroy_context; 212 engine->fifo.destroy_context = nv10_fifo_destroy_context;
@@ -218,6 +232,7 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
218 engine->timer.takedown = nv04_timer_takedown; 232 engine->timer.takedown = nv04_timer_takedown;
219 engine->fb.init = nv40_fb_init; 233 engine->fb.init = nv40_fb_init;
220 engine->fb.takedown = nv40_fb_takedown; 234 engine->fb.takedown = nv40_fb_takedown;
235 engine->fb.set_region_tiling = nv40_fb_set_region_tiling;
221 engine->graph.grclass = nv40_graph_grclass; 236 engine->graph.grclass = nv40_graph_grclass;
222 engine->graph.init = nv40_graph_init; 237 engine->graph.init = nv40_graph_init;
223 engine->graph.takedown = nv40_graph_takedown; 238 engine->graph.takedown = nv40_graph_takedown;
@@ -227,12 +242,15 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
227 engine->graph.destroy_context = nv40_graph_destroy_context; 242 engine->graph.destroy_context = nv40_graph_destroy_context;
228 engine->graph.load_context = nv40_graph_load_context; 243 engine->graph.load_context = nv40_graph_load_context;
229 engine->graph.unload_context = nv40_graph_unload_context; 244 engine->graph.unload_context = nv40_graph_unload_context;
245 engine->graph.set_region_tiling = nv40_graph_set_region_tiling;
230 engine->fifo.channels = 32; 246 engine->fifo.channels = 32;
231 engine->fifo.init = nv40_fifo_init; 247 engine->fifo.init = nv40_fifo_init;
232 engine->fifo.takedown = nouveau_stub_takedown; 248 engine->fifo.takedown = nouveau_stub_takedown;
233 engine->fifo.disable = nv04_fifo_disable; 249 engine->fifo.disable = nv04_fifo_disable;
234 engine->fifo.enable = nv04_fifo_enable; 250 engine->fifo.enable = nv04_fifo_enable;
235 engine->fifo.reassign = nv04_fifo_reassign; 251 engine->fifo.reassign = nv04_fifo_reassign;
252 engine->fifo.cache_flush = nv04_fifo_cache_flush;
253 engine->fifo.cache_pull = nv04_fifo_cache_pull;
236 engine->fifo.channel_id = nv10_fifo_channel_id; 254 engine->fifo.channel_id = nv10_fifo_channel_id;
237 engine->fifo.create_context = nv40_fifo_create_context; 255 engine->fifo.create_context = nv40_fifo_create_context;
238 engine->fifo.destroy_context = nv40_fifo_destroy_context; 256 engine->fifo.destroy_context = nv40_fifo_destroy_context;
@@ -292,6 +310,14 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
292static unsigned int 310static unsigned int
293nouveau_vga_set_decode(void *priv, bool state) 311nouveau_vga_set_decode(void *priv, bool state)
294{ 312{
313 struct drm_device *dev = priv;
314 struct drm_nouveau_private *dev_priv = dev->dev_private;
315
316 if (dev_priv->chipset >= 0x40)
317 nv_wr32(dev, 0x88054, state);
318 else
319 nv_wr32(dev, 0x1854, state);
320
295 if (state) 321 if (state)
296 return VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM | 322 return VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM |
297 VGA_RSRC_NORMAL_IO | VGA_RSRC_NORMAL_MEM; 323 VGA_RSRC_NORMAL_IO | VGA_RSRC_NORMAL_MEM;
@@ -409,15 +435,19 @@ nouveau_card_init(struct drm_device *dev)
409 if (ret) 435 if (ret)
410 goto out_timer; 436 goto out_timer;
411 437
412 /* PGRAPH */ 438 if (nouveau_noaccel)
413 ret = engine->graph.init(dev); 439 engine->graph.accel_blocked = true;
414 if (ret) 440 else {
415 goto out_fb; 441 /* PGRAPH */
442 ret = engine->graph.init(dev);
443 if (ret)
444 goto out_fb;
416 445
417 /* PFIFO */ 446 /* PFIFO */
418 ret = engine->fifo.init(dev); 447 ret = engine->fifo.init(dev);
419 if (ret) 448 if (ret)
420 goto out_graph; 449 goto out_graph;
450 }
421 451
422 /* this call irq_preinstall, register irq handler and 452 /* this call irq_preinstall, register irq handler and
423 * call irq_postinstall 453 * call irq_postinstall
@@ -461,9 +491,11 @@ nouveau_card_init(struct drm_device *dev)
461out_irq: 491out_irq:
462 drm_irq_uninstall(dev); 492 drm_irq_uninstall(dev);
463out_fifo: 493out_fifo:
464 engine->fifo.takedown(dev); 494 if (!nouveau_noaccel)
495 engine->fifo.takedown(dev);
465out_graph: 496out_graph:
466 engine->graph.takedown(dev); 497 if (!nouveau_noaccel)
498 engine->graph.takedown(dev);
467out_fb: 499out_fb:
468 engine->fb.takedown(dev); 500 engine->fb.takedown(dev);
469out_timer: 501out_timer:
@@ -500,13 +532,16 @@ static void nouveau_card_takedown(struct drm_device *dev)
500 dev_priv->channel = NULL; 532 dev_priv->channel = NULL;
501 } 533 }
502 534
503 engine->fifo.takedown(dev); 535 if (!nouveau_noaccel) {
504 engine->graph.takedown(dev); 536 engine->fifo.takedown(dev);
537 engine->graph.takedown(dev);
538 }
505 engine->fb.takedown(dev); 539 engine->fb.takedown(dev);
506 engine->timer.takedown(dev); 540 engine->timer.takedown(dev);
507 engine->mc.takedown(dev); 541 engine->mc.takedown(dev);
508 542
509 mutex_lock(&dev->struct_mutex); 543 mutex_lock(&dev->struct_mutex);
544 ttm_bo_clean_mm(&dev_priv->ttm.bdev, TTM_PL_VRAM);
510 ttm_bo_clean_mm(&dev_priv->ttm.bdev, TTM_PL_TT); 545 ttm_bo_clean_mm(&dev_priv->ttm.bdev, TTM_PL_TT);
511 mutex_unlock(&dev->struct_mutex); 546 mutex_unlock(&dev->struct_mutex);
512 nouveau_sgdma_takedown(dev); 547 nouveau_sgdma_takedown(dev);
@@ -624,7 +659,10 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
624 dev_priv->chipset = (reg0 & 0xff00000) >> 20; 659 dev_priv->chipset = (reg0 & 0xff00000) >> 20;
625 /* NV04 or NV05 */ 660 /* NV04 or NV05 */
626 } else if ((reg0 & 0xff00fff0) == 0x20004000) { 661 } else if ((reg0 & 0xff00fff0) == 0x20004000) {
627 dev_priv->chipset = 0x04; 662 if (reg0 & 0x00f00000)
663 dev_priv->chipset = 0x05;
664 else
665 dev_priv->chipset = 0x04;
628 } else 666 } else
629 dev_priv->chipset = 0xff; 667 dev_priv->chipset = 0xff;
630 668
@@ -704,8 +742,8 @@ static void nouveau_close(struct drm_device *dev)
704{ 742{
705 struct drm_nouveau_private *dev_priv = dev->dev_private; 743 struct drm_nouveau_private *dev_priv = dev->dev_private;
706 744
707 /* In the case of an error dev_priv may not be be allocated yet */ 745 /* In the case of an error dev_priv may not be allocated yet */
708 if (dev_priv && dev_priv->card_type) 746 if (dev_priv)
709 nouveau_card_takedown(dev); 747 nouveau_card_takedown(dev);
710} 748}
711 749
@@ -795,6 +833,15 @@ int nouveau_ioctl_getparam(struct drm_device *dev, void *data,
795 case NOUVEAU_GETPARAM_VM_VRAM_BASE: 833 case NOUVEAU_GETPARAM_VM_VRAM_BASE:
796 getparam->value = dev_priv->vm_vram_base; 834 getparam->value = dev_priv->vm_vram_base;
797 break; 835 break;
836 case NOUVEAU_GETPARAM_GRAPH_UNITS:
837 /* NV40 and NV50 versions are quite different, but register
838 * address is the same. User is supposed to know the card
839 * family anyway... */
840 if (dev_priv->chipset >= 0x40) {
841 getparam->value = nv_rd32(dev, NV40_PMC_GRAPH_UNITS);
842 break;
843 }
844 /* FALLTHRU */
798 default: 845 default:
799 NV_ERROR(dev, "unknown parameter %lld\n", getparam->param); 846 NV_ERROR(dev, "unknown parameter %lld\n", getparam->param);
800 return -EINVAL; 847 return -EINVAL;
diff --git a/drivers/gpu/drm/nouveau/nouveau_ttm.c b/drivers/gpu/drm/nouveau/nouveau_ttm.c
index 187eb84e4da5..c385d50f041b 100644
--- a/drivers/gpu/drm/nouveau/nouveau_ttm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_ttm.c
@@ -28,45 +28,17 @@
28 28
29#include "nouveau_drv.h" 29#include "nouveau_drv.h"
30 30
31static struct vm_operations_struct nouveau_ttm_vm_ops;
32static const struct vm_operations_struct *ttm_vm_ops;
33
34static int
35nouveau_ttm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
36{
37 struct ttm_buffer_object *bo = vma->vm_private_data;
38 int ret;
39
40 if (unlikely(bo == NULL))
41 return VM_FAULT_NOPAGE;
42
43 ret = ttm_vm_ops->fault(vma, vmf);
44 return ret;
45}
46
47int 31int
48nouveau_ttm_mmap(struct file *filp, struct vm_area_struct *vma) 32nouveau_ttm_mmap(struct file *filp, struct vm_area_struct *vma)
49{ 33{
50 struct drm_file *file_priv = filp->private_data; 34 struct drm_file *file_priv = filp->private_data;
51 struct drm_nouveau_private *dev_priv = 35 struct drm_nouveau_private *dev_priv =
52 file_priv->minor->dev->dev_private; 36 file_priv->minor->dev->dev_private;
53 int ret;
54 37
55 if (unlikely(vma->vm_pgoff < DRM_FILE_PAGE_OFFSET)) 38 if (unlikely(vma->vm_pgoff < DRM_FILE_PAGE_OFFSET))
56 return drm_mmap(filp, vma); 39 return drm_mmap(filp, vma);
57 40
58 ret = ttm_bo_mmap(filp, vma, &dev_priv->ttm.bdev); 41 return ttm_bo_mmap(filp, vma, &dev_priv->ttm.bdev);
59 if (unlikely(ret != 0))
60 return ret;
61
62 if (unlikely(ttm_vm_ops == NULL)) {
63 ttm_vm_ops = vma->vm_ops;
64 nouveau_ttm_vm_ops = *ttm_vm_ops;
65 nouveau_ttm_vm_ops.fault = &nouveau_ttm_fault;
66 }
67
68 vma->vm_ops = &nouveau_ttm_vm_ops;
69 return 0;
70} 42}
71 43
72static int 44static int
diff --git a/drivers/gpu/drm/nouveau/nv04_dac.c b/drivers/gpu/drm/nouveau/nv04_dac.c
index d9f32879ba38..1d73b15d70da 100644
--- a/drivers/gpu/drm/nouveau/nv04_dac.c
+++ b/drivers/gpu/drm/nouveau/nv04_dac.c
@@ -119,7 +119,7 @@ static enum drm_connector_status nv04_dac_detect(struct drm_encoder *encoder,
119 struct drm_connector *connector) 119 struct drm_connector *connector)
120{ 120{
121 struct drm_device *dev = encoder->dev; 121 struct drm_device *dev = encoder->dev;
122 uint8_t saved_seq1, saved_pi, saved_rpc1; 122 uint8_t saved_seq1, saved_pi, saved_rpc1, saved_cr_mode;
123 uint8_t saved_palette0[3], saved_palette_mask; 123 uint8_t saved_palette0[3], saved_palette_mask;
124 uint32_t saved_rtest_ctrl, saved_rgen_ctrl; 124 uint32_t saved_rtest_ctrl, saved_rgen_ctrl;
125 int i; 125 int i;
@@ -135,6 +135,9 @@ static enum drm_connector_status nv04_dac_detect(struct drm_encoder *encoder,
135 /* only implemented for head A for now */ 135 /* only implemented for head A for now */
136 NVSetOwner(dev, 0); 136 NVSetOwner(dev, 0);
137 137
138 saved_cr_mode = NVReadVgaCrtc(dev, 0, NV_CIO_CR_MODE_INDEX);
139 NVWriteVgaCrtc(dev, 0, NV_CIO_CR_MODE_INDEX, saved_cr_mode | 0x80);
140
138 saved_seq1 = NVReadVgaSeq(dev, 0, NV_VIO_SR_CLOCK_INDEX); 141 saved_seq1 = NVReadVgaSeq(dev, 0, NV_VIO_SR_CLOCK_INDEX);
139 NVWriteVgaSeq(dev, 0, NV_VIO_SR_CLOCK_INDEX, saved_seq1 & ~0x20); 142 NVWriteVgaSeq(dev, 0, NV_VIO_SR_CLOCK_INDEX, saved_seq1 & ~0x20);
140 143
@@ -203,6 +206,7 @@ out:
203 NVWriteVgaCrtc(dev, 0, NV_CIO_CRE_PIXEL_INDEX, saved_pi); 206 NVWriteVgaCrtc(dev, 0, NV_CIO_CRE_PIXEL_INDEX, saved_pi);
204 NVWriteVgaCrtc(dev, 0, NV_CIO_CRE_RPC1_INDEX, saved_rpc1); 207 NVWriteVgaCrtc(dev, 0, NV_CIO_CRE_RPC1_INDEX, saved_rpc1);
205 NVWriteVgaSeq(dev, 0, NV_VIO_SR_CLOCK_INDEX, saved_seq1); 208 NVWriteVgaSeq(dev, 0, NV_VIO_SR_CLOCK_INDEX, saved_seq1);
209 NVWriteVgaCrtc(dev, 0, NV_CIO_CR_MODE_INDEX, saved_cr_mode);
206 210
207 if (blue == 0x18) { 211 if (blue == 0x18) {
208 NV_INFO(dev, "Load detected on head A\n"); 212 NV_INFO(dev, "Load detected on head A\n");
@@ -212,16 +216,15 @@ out:
212 return connector_status_disconnected; 216 return connector_status_disconnected;
213} 217}
214 218
215enum drm_connector_status nv17_dac_detect(struct drm_encoder *encoder, 219uint32_t nv17_dac_sample_load(struct drm_encoder *encoder)
216 struct drm_connector *connector)
217{ 220{
218 struct drm_device *dev = encoder->dev; 221 struct drm_device *dev = encoder->dev;
219 struct drm_nouveau_private *dev_priv = dev->dev_private; 222 struct drm_nouveau_private *dev_priv = dev->dev_private;
220 struct dcb_entry *dcb = nouveau_encoder(encoder)->dcb; 223 struct dcb_entry *dcb = nouveau_encoder(encoder)->dcb;
221 uint32_t testval, regoffset = nv04_dac_output_offset(encoder); 224 uint32_t sample, testval, regoffset = nv04_dac_output_offset(encoder);
222 uint32_t saved_powerctrl_2 = 0, saved_powerctrl_4 = 0, saved_routput, 225 uint32_t saved_powerctrl_2 = 0, saved_powerctrl_4 = 0, saved_routput,
223 saved_rtest_ctrl, saved_gpio0, saved_gpio1, temp, routput; 226 saved_rtest_ctrl, saved_gpio0, saved_gpio1, temp, routput;
224 int head, present = 0; 227 int head;
225 228
226#define RGB_TEST_DATA(r, g, b) (r << 0 | g << 10 | b << 20) 229#define RGB_TEST_DATA(r, g, b) (r << 0 | g << 10 | b << 20)
227 if (dcb->type == OUTPUT_TV) { 230 if (dcb->type == OUTPUT_TV) {
@@ -287,13 +290,7 @@ enum drm_connector_status nv17_dac_detect(struct drm_encoder *encoder,
287 temp | NV_PRAMDAC_TEST_CONTROL_TP_INS_EN_ASSERTED); 290 temp | NV_PRAMDAC_TEST_CONTROL_TP_INS_EN_ASSERTED);
288 msleep(5); 291 msleep(5);
289 292
290 temp = NVReadRAMDAC(dev, 0, NV_PRAMDAC_TEST_CONTROL + regoffset); 293 sample = NVReadRAMDAC(dev, 0, NV_PRAMDAC_TEST_CONTROL + regoffset);
291
292 if (dcb->type == OUTPUT_TV)
293 present = (nv17_tv_detect(encoder, connector, temp)
294 == connector_status_connected);
295 else
296 present = temp & NV_PRAMDAC_TEST_CONTROL_SENSEB_ALLHI;
297 294
298 temp = NVReadRAMDAC(dev, head, NV_PRAMDAC_TEST_CONTROL); 295 temp = NVReadRAMDAC(dev, head, NV_PRAMDAC_TEST_CONTROL);
299 NVWriteRAMDAC(dev, head, NV_PRAMDAC_TEST_CONTROL, 296 NVWriteRAMDAC(dev, head, NV_PRAMDAC_TEST_CONTROL,
@@ -310,15 +307,25 @@ enum drm_connector_status nv17_dac_detect(struct drm_encoder *encoder,
310 nv17_gpio_set(dev, DCB_GPIO_TVDAC1, saved_gpio1); 307 nv17_gpio_set(dev, DCB_GPIO_TVDAC1, saved_gpio1);
311 nv17_gpio_set(dev, DCB_GPIO_TVDAC0, saved_gpio0); 308 nv17_gpio_set(dev, DCB_GPIO_TVDAC0, saved_gpio0);
312 309
313 if (present) { 310 return sample;
314 NV_INFO(dev, "Load detected on output %c\n", '@' + ffs(dcb->or)); 311}
312
313static enum drm_connector_status
314nv17_dac_detect(struct drm_encoder *encoder, struct drm_connector *connector)
315{
316 struct drm_device *dev = encoder->dev;
317 struct dcb_entry *dcb = nouveau_encoder(encoder)->dcb;
318 uint32_t sample = nv17_dac_sample_load(encoder);
319
320 if (sample & NV_PRAMDAC_TEST_CONTROL_SENSEB_ALLHI) {
321 NV_INFO(dev, "Load detected on output %c\n",
322 '@' + ffs(dcb->or));
315 return connector_status_connected; 323 return connector_status_connected;
324 } else {
325 return connector_status_disconnected;
316 } 326 }
317
318 return connector_status_disconnected;
319} 327}
320 328
321
322static bool nv04_dac_mode_fixup(struct drm_encoder *encoder, 329static bool nv04_dac_mode_fixup(struct drm_encoder *encoder,
323 struct drm_display_mode *mode, 330 struct drm_display_mode *mode,
324 struct drm_display_mode *adjusted_mode) 331 struct drm_display_mode *adjusted_mode)
diff --git a/drivers/gpu/drm/nouveau/nv04_fbcon.c b/drivers/gpu/drm/nouveau/nv04_fbcon.c
index 09a31071ee58..fd01caabd5c3 100644
--- a/drivers/gpu/drm/nouveau/nv04_fbcon.c
+++ b/drivers/gpu/drm/nouveau/nv04_fbcon.c
@@ -27,7 +27,7 @@
27#include "nouveau_dma.h" 27#include "nouveau_dma.h"
28#include "nouveau_fbcon.h" 28#include "nouveau_fbcon.h"
29 29
30static void 30void
31nv04_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *region) 31nv04_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *region)
32{ 32{
33 struct nouveau_fbcon_par *par = info->par; 33 struct nouveau_fbcon_par *par = info->par;
@@ -39,8 +39,7 @@ nv04_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *region)
39 return; 39 return;
40 40
41 if (!(info->flags & FBINFO_HWACCEL_DISABLED) && RING_SPACE(chan, 4)) { 41 if (!(info->flags & FBINFO_HWACCEL_DISABLED) && RING_SPACE(chan, 4)) {
42 NV_ERROR(dev, "GPU lockup - switching to software fbcon\n"); 42 nouveau_fbcon_gpu_lockup(info);
43 info->flags |= FBINFO_HWACCEL_DISABLED;
44 } 43 }
45 44
46 if (info->flags & FBINFO_HWACCEL_DISABLED) { 45 if (info->flags & FBINFO_HWACCEL_DISABLED) {
@@ -55,21 +54,19 @@ nv04_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *region)
55 FIRE_RING(chan); 54 FIRE_RING(chan);
56} 55}
57 56
58static void 57void
59nv04_fbcon_fillrect(struct fb_info *info, const struct fb_fillrect *rect) 58nv04_fbcon_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
60{ 59{
61 struct nouveau_fbcon_par *par = info->par; 60 struct nouveau_fbcon_par *par = info->par;
62 struct drm_device *dev = par->dev; 61 struct drm_device *dev = par->dev;
63 struct drm_nouveau_private *dev_priv = dev->dev_private; 62 struct drm_nouveau_private *dev_priv = dev->dev_private;
64 struct nouveau_channel *chan = dev_priv->channel; 63 struct nouveau_channel *chan = dev_priv->channel;
65 uint32_t color = ((uint32_t *) info->pseudo_palette)[rect->color];
66 64
67 if (info->state != FBINFO_STATE_RUNNING) 65 if (info->state != FBINFO_STATE_RUNNING)
68 return; 66 return;
69 67
70 if (!(info->flags & FBINFO_HWACCEL_DISABLED) && RING_SPACE(chan, 7)) { 68 if (!(info->flags & FBINFO_HWACCEL_DISABLED) && RING_SPACE(chan, 7)) {
71 NV_ERROR(dev, "GPU lockup - switching to software fbcon\n"); 69 nouveau_fbcon_gpu_lockup(info);
72 info->flags |= FBINFO_HWACCEL_DISABLED;
73 } 70 }
74 71
75 if (info->flags & FBINFO_HWACCEL_DISABLED) { 72 if (info->flags & FBINFO_HWACCEL_DISABLED) {
@@ -80,14 +77,18 @@ nv04_fbcon_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
80 BEGIN_RING(chan, NvSubGdiRect, 0x02fc, 1); 77 BEGIN_RING(chan, NvSubGdiRect, 0x02fc, 1);
81 OUT_RING(chan, (rect->rop != ROP_COPY) ? 1 : 3); 78 OUT_RING(chan, (rect->rop != ROP_COPY) ? 1 : 3);
82 BEGIN_RING(chan, NvSubGdiRect, 0x03fc, 1); 79 BEGIN_RING(chan, NvSubGdiRect, 0x03fc, 1);
83 OUT_RING(chan, color); 80 if (info->fix.visual == FB_VISUAL_TRUECOLOR ||
81 info->fix.visual == FB_VISUAL_DIRECTCOLOR)
82 OUT_RING(chan, ((uint32_t *)info->pseudo_palette)[rect->color]);
83 else
84 OUT_RING(chan, rect->color);
84 BEGIN_RING(chan, NvSubGdiRect, 0x0400, 2); 85 BEGIN_RING(chan, NvSubGdiRect, 0x0400, 2);
85 OUT_RING(chan, (rect->dx << 16) | rect->dy); 86 OUT_RING(chan, (rect->dx << 16) | rect->dy);
86 OUT_RING(chan, (rect->width << 16) | rect->height); 87 OUT_RING(chan, (rect->width << 16) | rect->height);
87 FIRE_RING(chan); 88 FIRE_RING(chan);
88} 89}
89 90
90static void 91void
91nv04_fbcon_imageblit(struct fb_info *info, const struct fb_image *image) 92nv04_fbcon_imageblit(struct fb_info *info, const struct fb_image *image)
92{ 93{
93 struct nouveau_fbcon_par *par = info->par; 94 struct nouveau_fbcon_par *par = info->par;
@@ -109,8 +110,7 @@ nv04_fbcon_imageblit(struct fb_info *info, const struct fb_image *image)
109 } 110 }
110 111
111 if (!(info->flags & FBINFO_HWACCEL_DISABLED) && RING_SPACE(chan, 8)) { 112 if (!(info->flags & FBINFO_HWACCEL_DISABLED) && RING_SPACE(chan, 8)) {
112 NV_ERROR(dev, "GPU lockup - switching to software fbcon\n"); 113 nouveau_fbcon_gpu_lockup(info);
113 info->flags |= FBINFO_HWACCEL_DISABLED;
114 } 114 }
115 115
116 if (info->flags & FBINFO_HWACCEL_DISABLED) { 116 if (info->flags & FBINFO_HWACCEL_DISABLED) {
@@ -144,8 +144,7 @@ nv04_fbcon_imageblit(struct fb_info *info, const struct fb_image *image)
144 int iter_len = dsize > 128 ? 128 : dsize; 144 int iter_len = dsize > 128 ? 128 : dsize;
145 145
146 if (RING_SPACE(chan, iter_len + 1)) { 146 if (RING_SPACE(chan, iter_len + 1)) {
147 NV_ERROR(dev, "GPU lockup - switching to software fbcon\n"); 147 nouveau_fbcon_gpu_lockup(info);
148 info->flags |= FBINFO_HWACCEL_DISABLED;
149 cfb_imageblit(info, image); 148 cfb_imageblit(info, image);
150 return; 149 return;
151 } 150 }
@@ -184,6 +183,7 @@ nv04_fbcon_accel_init(struct fb_info *info)
184 struct drm_device *dev = par->dev; 183 struct drm_device *dev = par->dev;
185 struct drm_nouveau_private *dev_priv = dev->dev_private; 184 struct drm_nouveau_private *dev_priv = dev->dev_private;
186 struct nouveau_channel *chan = dev_priv->channel; 185 struct nouveau_channel *chan = dev_priv->channel;
186 const int sub = NvSubCtxSurf2D;
187 int surface_fmt, pattern_fmt, rect_fmt; 187 int surface_fmt, pattern_fmt, rect_fmt;
188 int ret; 188 int ret;
189 189
@@ -242,30 +242,29 @@ nv04_fbcon_accel_init(struct fb_info *info)
242 return ret; 242 return ret;
243 243
244 if (RING_SPACE(chan, 49)) { 244 if (RING_SPACE(chan, 49)) {
245 NV_ERROR(dev, "GPU lockup - switching to software fbcon\n"); 245 nouveau_fbcon_gpu_lockup(info);
246 info->flags |= FBINFO_HWACCEL_DISABLED;
247 return 0; 246 return 0;
248 } 247 }
249 248
250 BEGIN_RING(chan, 1, 0x0000, 1); 249 BEGIN_RING(chan, sub, 0x0000, 1);
251 OUT_RING(chan, NvCtxSurf2D); 250 OUT_RING(chan, NvCtxSurf2D);
252 BEGIN_RING(chan, 1, 0x0184, 2); 251 BEGIN_RING(chan, sub, 0x0184, 2);
253 OUT_RING(chan, NvDmaFB); 252 OUT_RING(chan, NvDmaFB);
254 OUT_RING(chan, NvDmaFB); 253 OUT_RING(chan, NvDmaFB);
255 BEGIN_RING(chan, 1, 0x0300, 4); 254 BEGIN_RING(chan, sub, 0x0300, 4);
256 OUT_RING(chan, surface_fmt); 255 OUT_RING(chan, surface_fmt);
257 OUT_RING(chan, info->fix.line_length | (info->fix.line_length << 16)); 256 OUT_RING(chan, info->fix.line_length | (info->fix.line_length << 16));
258 OUT_RING(chan, info->fix.smem_start - dev->mode_config.fb_base); 257 OUT_RING(chan, info->fix.smem_start - dev->mode_config.fb_base);
259 OUT_RING(chan, info->fix.smem_start - dev->mode_config.fb_base); 258 OUT_RING(chan, info->fix.smem_start - dev->mode_config.fb_base);
260 259
261 BEGIN_RING(chan, 1, 0x0000, 1); 260 BEGIN_RING(chan, sub, 0x0000, 1);
262 OUT_RING(chan, NvRop); 261 OUT_RING(chan, NvRop);
263 BEGIN_RING(chan, 1, 0x0300, 1); 262 BEGIN_RING(chan, sub, 0x0300, 1);
264 OUT_RING(chan, 0x55); 263 OUT_RING(chan, 0x55);
265 264
266 BEGIN_RING(chan, 1, 0x0000, 1); 265 BEGIN_RING(chan, sub, 0x0000, 1);
267 OUT_RING(chan, NvImagePatt); 266 OUT_RING(chan, NvImagePatt);
268 BEGIN_RING(chan, 1, 0x0300, 8); 267 BEGIN_RING(chan, sub, 0x0300, 8);
269 OUT_RING(chan, pattern_fmt); 268 OUT_RING(chan, pattern_fmt);
270#ifdef __BIG_ENDIAN 269#ifdef __BIG_ENDIAN
271 OUT_RING(chan, 2); 270 OUT_RING(chan, 2);
@@ -279,9 +278,9 @@ nv04_fbcon_accel_init(struct fb_info *info)
279 OUT_RING(chan, ~0); 278 OUT_RING(chan, ~0);
280 OUT_RING(chan, ~0); 279 OUT_RING(chan, ~0);
281 280
282 BEGIN_RING(chan, 1, 0x0000, 1); 281 BEGIN_RING(chan, sub, 0x0000, 1);
283 OUT_RING(chan, NvClipRect); 282 OUT_RING(chan, NvClipRect);
284 BEGIN_RING(chan, 1, 0x0300, 2); 283 BEGIN_RING(chan, sub, 0x0300, 2);
285 OUT_RING(chan, 0); 284 OUT_RING(chan, 0);
286 OUT_RING(chan, (info->var.yres_virtual << 16) | info->var.xres_virtual); 285 OUT_RING(chan, (info->var.yres_virtual << 16) | info->var.xres_virtual);
287 286
@@ -308,9 +307,6 @@ nv04_fbcon_accel_init(struct fb_info *info)
308 307
309 FIRE_RING(chan); 308 FIRE_RING(chan);
310 309
311 info->fbops->fb_fillrect = nv04_fbcon_fillrect;
312 info->fbops->fb_copyarea = nv04_fbcon_copyarea;
313 info->fbops->fb_imageblit = nv04_fbcon_imageblit;
314 return 0; 310 return 0;
315} 311}
316 312
diff --git a/drivers/gpu/drm/nouveau/nv04_fifo.c b/drivers/gpu/drm/nouveau/nv04_fifo.c
index 0c3cd53c7313..f31347b8c9b0 100644
--- a/drivers/gpu/drm/nouveau/nv04_fifo.c
+++ b/drivers/gpu/drm/nouveau/nv04_fifo.c
@@ -71,6 +71,40 @@ nv04_fifo_reassign(struct drm_device *dev, bool enable)
71 return (reassign == 1); 71 return (reassign == 1);
72} 72}
73 73
74bool
75nv04_fifo_cache_flush(struct drm_device *dev)
76{
77 struct drm_nouveau_private *dev_priv = dev->dev_private;
78 struct nouveau_timer_engine *ptimer = &dev_priv->engine.timer;
79 uint64_t start = ptimer->read(dev);
80
81 do {
82 if (nv_rd32(dev, NV03_PFIFO_CACHE1_GET) ==
83 nv_rd32(dev, NV03_PFIFO_CACHE1_PUT))
84 return true;
85
86 } while (ptimer->read(dev) - start < 100000000);
87
88 NV_ERROR(dev, "Timeout flushing the PFIFO cache.\n");
89
90 return false;
91}
92
93bool
94nv04_fifo_cache_pull(struct drm_device *dev, bool enable)
95{
96 uint32_t pull = nv_rd32(dev, NV04_PFIFO_CACHE1_PULL0);
97
98 if (enable) {
99 nv_wr32(dev, NV04_PFIFO_CACHE1_PULL0, pull | 1);
100 } else {
101 nv_wr32(dev, NV04_PFIFO_CACHE1_PULL0, pull & ~1);
102 nv_wr32(dev, NV04_PFIFO_CACHE1_HASH, 0);
103 }
104
105 return !!(pull & 1);
106}
107
74int 108int
75nv04_fifo_channel_id(struct drm_device *dev) 109nv04_fifo_channel_id(struct drm_device *dev)
76{ 110{
diff --git a/drivers/gpu/drm/nouveau/nv04_graph.c b/drivers/gpu/drm/nouveau/nv04_graph.c
index d561d773c0f4..e260986ea65a 100644
--- a/drivers/gpu/drm/nouveau/nv04_graph.c
+++ b/drivers/gpu/drm/nouveau/nv04_graph.c
@@ -28,6 +28,10 @@
28#include "nouveau_drv.h" 28#include "nouveau_drv.h"
29 29
30static uint32_t nv04_graph_ctx_regs[] = { 30static uint32_t nv04_graph_ctx_regs[] = {
31 0x0040053c,
32 0x00400544,
33 0x00400540,
34 0x00400548,
31 NV04_PGRAPH_CTX_SWITCH1, 35 NV04_PGRAPH_CTX_SWITCH1,
32 NV04_PGRAPH_CTX_SWITCH2, 36 NV04_PGRAPH_CTX_SWITCH2,
33 NV04_PGRAPH_CTX_SWITCH3, 37 NV04_PGRAPH_CTX_SWITCH3,
@@ -102,69 +106,69 @@ static uint32_t nv04_graph_ctx_regs[] = {
102 NV04_PGRAPH_PATT_COLOR0, 106 NV04_PGRAPH_PATT_COLOR0,
103 NV04_PGRAPH_PATT_COLOR1, 107 NV04_PGRAPH_PATT_COLOR1,
104 NV04_PGRAPH_PATT_COLORRAM+0x00, 108 NV04_PGRAPH_PATT_COLORRAM+0x00,
105 NV04_PGRAPH_PATT_COLORRAM+0x01,
106 NV04_PGRAPH_PATT_COLORRAM+0x02,
107 NV04_PGRAPH_PATT_COLORRAM+0x03,
108 NV04_PGRAPH_PATT_COLORRAM+0x04, 109 NV04_PGRAPH_PATT_COLORRAM+0x04,
109 NV04_PGRAPH_PATT_COLORRAM+0x05,
110 NV04_PGRAPH_PATT_COLORRAM+0x06,
111 NV04_PGRAPH_PATT_COLORRAM+0x07,
112 NV04_PGRAPH_PATT_COLORRAM+0x08, 110 NV04_PGRAPH_PATT_COLORRAM+0x08,
113 NV04_PGRAPH_PATT_COLORRAM+0x09, 111 NV04_PGRAPH_PATT_COLORRAM+0x0c,
114 NV04_PGRAPH_PATT_COLORRAM+0x0A,
115 NV04_PGRAPH_PATT_COLORRAM+0x0B,
116 NV04_PGRAPH_PATT_COLORRAM+0x0C,
117 NV04_PGRAPH_PATT_COLORRAM+0x0D,
118 NV04_PGRAPH_PATT_COLORRAM+0x0E,
119 NV04_PGRAPH_PATT_COLORRAM+0x0F,
120 NV04_PGRAPH_PATT_COLORRAM+0x10, 112 NV04_PGRAPH_PATT_COLORRAM+0x10,
121 NV04_PGRAPH_PATT_COLORRAM+0x11,
122 NV04_PGRAPH_PATT_COLORRAM+0x12,
123 NV04_PGRAPH_PATT_COLORRAM+0x13,
124 NV04_PGRAPH_PATT_COLORRAM+0x14, 113 NV04_PGRAPH_PATT_COLORRAM+0x14,
125 NV04_PGRAPH_PATT_COLORRAM+0x15,
126 NV04_PGRAPH_PATT_COLORRAM+0x16,
127 NV04_PGRAPH_PATT_COLORRAM+0x17,
128 NV04_PGRAPH_PATT_COLORRAM+0x18, 114 NV04_PGRAPH_PATT_COLORRAM+0x18,
129 NV04_PGRAPH_PATT_COLORRAM+0x19, 115 NV04_PGRAPH_PATT_COLORRAM+0x1c,
130 NV04_PGRAPH_PATT_COLORRAM+0x1A,
131 NV04_PGRAPH_PATT_COLORRAM+0x1B,
132 NV04_PGRAPH_PATT_COLORRAM+0x1C,
133 NV04_PGRAPH_PATT_COLORRAM+0x1D,
134 NV04_PGRAPH_PATT_COLORRAM+0x1E,
135 NV04_PGRAPH_PATT_COLORRAM+0x1F,
136 NV04_PGRAPH_PATT_COLORRAM+0x20, 116 NV04_PGRAPH_PATT_COLORRAM+0x20,
137 NV04_PGRAPH_PATT_COLORRAM+0x21,
138 NV04_PGRAPH_PATT_COLORRAM+0x22,
139 NV04_PGRAPH_PATT_COLORRAM+0x23,
140 NV04_PGRAPH_PATT_COLORRAM+0x24, 117 NV04_PGRAPH_PATT_COLORRAM+0x24,
141 NV04_PGRAPH_PATT_COLORRAM+0x25,
142 NV04_PGRAPH_PATT_COLORRAM+0x26,
143 NV04_PGRAPH_PATT_COLORRAM+0x27,
144 NV04_PGRAPH_PATT_COLORRAM+0x28, 118 NV04_PGRAPH_PATT_COLORRAM+0x28,
145 NV04_PGRAPH_PATT_COLORRAM+0x29, 119 NV04_PGRAPH_PATT_COLORRAM+0x2c,
146 NV04_PGRAPH_PATT_COLORRAM+0x2A,
147 NV04_PGRAPH_PATT_COLORRAM+0x2B,
148 NV04_PGRAPH_PATT_COLORRAM+0x2C,
149 NV04_PGRAPH_PATT_COLORRAM+0x2D,
150 NV04_PGRAPH_PATT_COLORRAM+0x2E,
151 NV04_PGRAPH_PATT_COLORRAM+0x2F,
152 NV04_PGRAPH_PATT_COLORRAM+0x30, 120 NV04_PGRAPH_PATT_COLORRAM+0x30,
153 NV04_PGRAPH_PATT_COLORRAM+0x31,
154 NV04_PGRAPH_PATT_COLORRAM+0x32,
155 NV04_PGRAPH_PATT_COLORRAM+0x33,
156 NV04_PGRAPH_PATT_COLORRAM+0x34, 121 NV04_PGRAPH_PATT_COLORRAM+0x34,
157 NV04_PGRAPH_PATT_COLORRAM+0x35,
158 NV04_PGRAPH_PATT_COLORRAM+0x36,
159 NV04_PGRAPH_PATT_COLORRAM+0x37,
160 NV04_PGRAPH_PATT_COLORRAM+0x38, 122 NV04_PGRAPH_PATT_COLORRAM+0x38,
161 NV04_PGRAPH_PATT_COLORRAM+0x39, 123 NV04_PGRAPH_PATT_COLORRAM+0x3c,
162 NV04_PGRAPH_PATT_COLORRAM+0x3A, 124 NV04_PGRAPH_PATT_COLORRAM+0x40,
163 NV04_PGRAPH_PATT_COLORRAM+0x3B, 125 NV04_PGRAPH_PATT_COLORRAM+0x44,
164 NV04_PGRAPH_PATT_COLORRAM+0x3C, 126 NV04_PGRAPH_PATT_COLORRAM+0x48,
165 NV04_PGRAPH_PATT_COLORRAM+0x3D, 127 NV04_PGRAPH_PATT_COLORRAM+0x4c,
166 NV04_PGRAPH_PATT_COLORRAM+0x3E, 128 NV04_PGRAPH_PATT_COLORRAM+0x50,
167 NV04_PGRAPH_PATT_COLORRAM+0x3F, 129 NV04_PGRAPH_PATT_COLORRAM+0x54,
130 NV04_PGRAPH_PATT_COLORRAM+0x58,
131 NV04_PGRAPH_PATT_COLORRAM+0x5c,
132 NV04_PGRAPH_PATT_COLORRAM+0x60,
133 NV04_PGRAPH_PATT_COLORRAM+0x64,
134 NV04_PGRAPH_PATT_COLORRAM+0x68,
135 NV04_PGRAPH_PATT_COLORRAM+0x6c,
136 NV04_PGRAPH_PATT_COLORRAM+0x70,
137 NV04_PGRAPH_PATT_COLORRAM+0x74,
138 NV04_PGRAPH_PATT_COLORRAM+0x78,
139 NV04_PGRAPH_PATT_COLORRAM+0x7c,
140 NV04_PGRAPH_PATT_COLORRAM+0x80,
141 NV04_PGRAPH_PATT_COLORRAM+0x84,
142 NV04_PGRAPH_PATT_COLORRAM+0x88,
143 NV04_PGRAPH_PATT_COLORRAM+0x8c,
144 NV04_PGRAPH_PATT_COLORRAM+0x90,
145 NV04_PGRAPH_PATT_COLORRAM+0x94,
146 NV04_PGRAPH_PATT_COLORRAM+0x98,
147 NV04_PGRAPH_PATT_COLORRAM+0x9c,
148 NV04_PGRAPH_PATT_COLORRAM+0xa0,
149 NV04_PGRAPH_PATT_COLORRAM+0xa4,
150 NV04_PGRAPH_PATT_COLORRAM+0xa8,
151 NV04_PGRAPH_PATT_COLORRAM+0xac,
152 NV04_PGRAPH_PATT_COLORRAM+0xb0,
153 NV04_PGRAPH_PATT_COLORRAM+0xb4,
154 NV04_PGRAPH_PATT_COLORRAM+0xb8,
155 NV04_PGRAPH_PATT_COLORRAM+0xbc,
156 NV04_PGRAPH_PATT_COLORRAM+0xc0,
157 NV04_PGRAPH_PATT_COLORRAM+0xc4,
158 NV04_PGRAPH_PATT_COLORRAM+0xc8,
159 NV04_PGRAPH_PATT_COLORRAM+0xcc,
160 NV04_PGRAPH_PATT_COLORRAM+0xd0,
161 NV04_PGRAPH_PATT_COLORRAM+0xd4,
162 NV04_PGRAPH_PATT_COLORRAM+0xd8,
163 NV04_PGRAPH_PATT_COLORRAM+0xdc,
164 NV04_PGRAPH_PATT_COLORRAM+0xe0,
165 NV04_PGRAPH_PATT_COLORRAM+0xe4,
166 NV04_PGRAPH_PATT_COLORRAM+0xe8,
167 NV04_PGRAPH_PATT_COLORRAM+0xec,
168 NV04_PGRAPH_PATT_COLORRAM+0xf0,
169 NV04_PGRAPH_PATT_COLORRAM+0xf4,
170 NV04_PGRAPH_PATT_COLORRAM+0xf8,
171 NV04_PGRAPH_PATT_COLORRAM+0xfc,
168 NV04_PGRAPH_PATTERN, 172 NV04_PGRAPH_PATTERN,
169 0x0040080c, 173 0x0040080c,
170 NV04_PGRAPH_PATTERN_SHAPE, 174 NV04_PGRAPH_PATTERN_SHAPE,
@@ -247,14 +251,6 @@ static uint32_t nv04_graph_ctx_regs[] = {
247 0x004004f8, 251 0x004004f8,
248 0x0040047c, 252 0x0040047c,
249 0x004004fc, 253 0x004004fc,
250 0x0040053c,
251 0x00400544,
252 0x00400540,
253 0x00400548,
254 0x00400560,
255 0x00400568,
256 0x00400564,
257 0x0040056c,
258 0x00400534, 254 0x00400534,
259 0x00400538, 255 0x00400538,
260 0x00400514, 256 0x00400514,
@@ -341,9 +337,8 @@ static uint32_t nv04_graph_ctx_regs[] = {
341 0x00400500, 337 0x00400500,
342 0x00400504, 338 0x00400504,
343 NV04_PGRAPH_VALID1, 339 NV04_PGRAPH_VALID1,
344 NV04_PGRAPH_VALID2 340 NV04_PGRAPH_VALID2,
345 341 NV04_PGRAPH_DEBUG_3
346
347}; 342};
348 343
349struct graph_state { 344struct graph_state {
@@ -388,6 +383,18 @@ nv04_graph_context_switch(struct drm_device *dev)
388 pgraph->fifo_access(dev, true); 383 pgraph->fifo_access(dev, true);
389} 384}
390 385
386static uint32_t *ctx_reg(struct graph_state *ctx, uint32_t reg)
387{
388 int i;
389
390 for (i = 0; i < ARRAY_SIZE(nv04_graph_ctx_regs); i++) {
391 if (nv04_graph_ctx_regs[i] == reg)
392 return &ctx->nv04[i];
393 }
394
395 return NULL;
396}
397
391int nv04_graph_create_context(struct nouveau_channel *chan) 398int nv04_graph_create_context(struct nouveau_channel *chan)
392{ 399{
393 struct graph_state *pgraph_ctx; 400 struct graph_state *pgraph_ctx;
@@ -398,15 +405,8 @@ int nv04_graph_create_context(struct nouveau_channel *chan)
398 if (pgraph_ctx == NULL) 405 if (pgraph_ctx == NULL)
399 return -ENOMEM; 406 return -ENOMEM;
400 407
401 /* dev_priv->fifos[channel].pgraph_ctx_user = channel << 24; */ 408 *ctx_reg(pgraph_ctx, NV04_PGRAPH_DEBUG_3) = 0xfad4ff31;
402 pgraph_ctx->nv04[0] = 0x0001ffff; 409
403 /* is it really needed ??? */
404#if 0
405 dev_priv->fifos[channel].pgraph_ctx[1] =
406 nv_rd32(dev, NV_PGRAPH_DEBUG_4);
407 dev_priv->fifos[channel].pgraph_ctx[2] =
408 nv_rd32(dev, 0x004006b0);
409#endif
410 return 0; 410 return 0;
411} 411}
412 412
@@ -429,9 +429,13 @@ int nv04_graph_load_context(struct nouveau_channel *chan)
429 nv_wr32(dev, nv04_graph_ctx_regs[i], pgraph_ctx->nv04[i]); 429 nv_wr32(dev, nv04_graph_ctx_regs[i], pgraph_ctx->nv04[i]);
430 430
431 nv_wr32(dev, NV04_PGRAPH_CTX_CONTROL, 0x10010100); 431 nv_wr32(dev, NV04_PGRAPH_CTX_CONTROL, 0x10010100);
432 nv_wr32(dev, NV04_PGRAPH_CTX_USER, chan->id << 24); 432
433 tmp = nv_rd32(dev, NV04_PGRAPH_CTX_USER) & 0x00ffffff;
434 nv_wr32(dev, NV04_PGRAPH_CTX_USER, tmp | chan->id << 24);
435
433 tmp = nv_rd32(dev, NV04_PGRAPH_FFINTFC_ST2); 436 tmp = nv_rd32(dev, NV04_PGRAPH_FFINTFC_ST2);
434 nv_wr32(dev, NV04_PGRAPH_FFINTFC_ST2, tmp & 0x000fffff); 437 nv_wr32(dev, NV04_PGRAPH_FFINTFC_ST2, tmp & 0x000fffff);
438
435 return 0; 439 return 0;
436} 440}
437 441
@@ -494,7 +498,7 @@ int nv04_graph_init(struct drm_device *dev)
494 nv_wr32(dev, NV04_PGRAPH_STATE , 0xFFFFFFFF); 498 nv_wr32(dev, NV04_PGRAPH_STATE , 0xFFFFFFFF);
495 nv_wr32(dev, NV04_PGRAPH_CTX_CONTROL , 0x10000100); 499 nv_wr32(dev, NV04_PGRAPH_CTX_CONTROL , 0x10000100);
496 tmp = nv_rd32(dev, NV04_PGRAPH_CTX_USER) & 0x00ffffff; 500 tmp = nv_rd32(dev, NV04_PGRAPH_CTX_USER) & 0x00ffffff;
497 tmp |= dev_priv->engine.fifo.channels << 24; 501 tmp |= (dev_priv->engine.fifo.channels - 1) << 24;
498 nv_wr32(dev, NV04_PGRAPH_CTX_USER, tmp); 502 nv_wr32(dev, NV04_PGRAPH_CTX_USER, tmp);
499 503
500 /* These don't belong here, they're part of a per-channel context */ 504 /* These don't belong here, they're part of a per-channel context */
@@ -533,7 +537,7 @@ nv04_graph_mthd_set_operation(struct nouveau_channel *chan, int grclass,
533 int mthd, uint32_t data) 537 int mthd, uint32_t data)
534{ 538{
535 struct drm_device *dev = chan->dev; 539 struct drm_device *dev = chan->dev;
536 uint32_t instance = nv_rd32(dev, NV04_PGRAPH_CTX_SWITCH4) & 0xffff; 540 uint32_t instance = (nv_rd32(dev, NV04_PGRAPH_CTX_SWITCH4) & 0xffff) << 4;
537 int subc = (nv_rd32(dev, NV04_PGRAPH_TRAPPED_ADDR) >> 13) & 0x7; 541 int subc = (nv_rd32(dev, NV04_PGRAPH_TRAPPED_ADDR) >> 13) & 0x7;
538 uint32_t tmp; 542 uint32_t tmp;
539 543
@@ -547,7 +551,7 @@ nv04_graph_mthd_set_operation(struct nouveau_channel *chan, int grclass,
547 return 0; 551 return 0;
548} 552}
549 553
550static struct nouveau_pgraph_object_method nv04_graph_mthds_m2mf[] = { 554static struct nouveau_pgraph_object_method nv04_graph_mthds_sw[] = {
551 { 0x0150, nv04_graph_mthd_set_ref }, 555 { 0x0150, nv04_graph_mthd_set_ref },
552 {} 556 {}
553}; 557};
@@ -558,7 +562,7 @@ static struct nouveau_pgraph_object_method nv04_graph_mthds_set_operation[] = {
558}; 562};
559 563
560struct nouveau_pgraph_object_class nv04_graph_grclass[] = { 564struct nouveau_pgraph_object_class nv04_graph_grclass[] = {
561 { 0x0039, false, nv04_graph_mthds_m2mf }, 565 { 0x0039, false, NULL },
562 { 0x004a, false, nv04_graph_mthds_set_operation }, /* gdirect */ 566 { 0x004a, false, nv04_graph_mthds_set_operation }, /* gdirect */
563 { 0x005f, false, nv04_graph_mthds_set_operation }, /* imageblit */ 567 { 0x005f, false, nv04_graph_mthds_set_operation }, /* imageblit */
564 { 0x0061, false, nv04_graph_mthds_set_operation }, /* ifc */ 568 { 0x0061, false, nv04_graph_mthds_set_operation }, /* ifc */
@@ -574,6 +578,7 @@ struct nouveau_pgraph_object_class nv04_graph_grclass[] = {
574 { 0x0053, false, NULL }, /* surf3d */ 578 { 0x0053, false, NULL }, /* surf3d */
575 { 0x0054, false, NULL }, /* tex_tri */ 579 { 0x0054, false, NULL }, /* tex_tri */
576 { 0x0055, false, NULL }, /* multitex_tri */ 580 { 0x0055, false, NULL }, /* multitex_tri */
581 { 0x506e, true, nv04_graph_mthds_sw },
577 {} 582 {}
578}; 583};
579 584
diff --git a/drivers/gpu/drm/nouveau/nv04_instmem.c b/drivers/gpu/drm/nouveau/nv04_instmem.c
index a20c206625a2..a3b9563a6f60 100644
--- a/drivers/gpu/drm/nouveau/nv04_instmem.c
+++ b/drivers/gpu/drm/nouveau/nv04_instmem.c
@@ -30,7 +30,7 @@ nv04_instmem_determine_amount(struct drm_device *dev)
30 * of vram. For now, only reserve a small piece until we know 30 * of vram. For now, only reserve a small piece until we know
31 * more about what each chipset requires. 31 * more about what each chipset requires.
32 */ 32 */
33 switch (dev_priv->chipset & 0xf0) { 33 switch (dev_priv->chipset) {
34 case 0x40: 34 case 0x40:
35 case 0x47: 35 case 0x47:
36 case 0x49: 36 case 0x49:
diff --git a/drivers/gpu/drm/nouveau/nv10_fb.c b/drivers/gpu/drm/nouveau/nv10_fb.c
index 79e2d104d70a..cc5cda44e501 100644
--- a/drivers/gpu/drm/nouveau/nv10_fb.c
+++ b/drivers/gpu/drm/nouveau/nv10_fb.c
@@ -3,17 +3,37 @@
3#include "nouveau_drv.h" 3#include "nouveau_drv.h"
4#include "nouveau_drm.h" 4#include "nouveau_drm.h"
5 5
6void
7nv10_fb_set_region_tiling(struct drm_device *dev, int i, uint32_t addr,
8 uint32_t size, uint32_t pitch)
9{
10 struct drm_nouveau_private *dev_priv = dev->dev_private;
11 uint32_t limit = max(1u, addr + size) - 1;
12
13 if (pitch) {
14 if (dev_priv->card_type >= NV_20)
15 addr |= 1;
16 else
17 addr |= 1 << 31;
18 }
19
20 nv_wr32(dev, NV10_PFB_TLIMIT(i), limit);
21 nv_wr32(dev, NV10_PFB_TSIZE(i), pitch);
22 nv_wr32(dev, NV10_PFB_TILE(i), addr);
23}
24
6int 25int
7nv10_fb_init(struct drm_device *dev) 26nv10_fb_init(struct drm_device *dev)
8{ 27{
9 uint32_t fb_bar_size; 28 struct drm_nouveau_private *dev_priv = dev->dev_private;
29 struct nouveau_fb_engine *pfb = &dev_priv->engine.fb;
10 int i; 30 int i;
11 31
12 fb_bar_size = drm_get_resource_len(dev, 0) - 1; 32 pfb->num_tiles = NV10_PFB_TILE__SIZE;
13 for (i = 0; i < NV10_PFB_TILE__SIZE; i++) { 33
14 nv_wr32(dev, NV10_PFB_TILE(i), 0); 34 /* Turn all the tiling regions off. */
15 nv_wr32(dev, NV10_PFB_TLIMIT(i), fb_bar_size); 35 for (i = 0; i < pfb->num_tiles; i++)
16 } 36 pfb->set_region_tiling(dev, i, 0, 0, 0);
17 37
18 return 0; 38 return 0;
19} 39}
diff --git a/drivers/gpu/drm/nouveau/nv10_graph.c b/drivers/gpu/drm/nouveau/nv10_graph.c
index 6870e0ee2e7e..fcf2cdd19493 100644
--- a/drivers/gpu/drm/nouveau/nv10_graph.c
+++ b/drivers/gpu/drm/nouveau/nv10_graph.c
@@ -807,6 +807,20 @@ void nv10_graph_destroy_context(struct nouveau_channel *chan)
807 chan->pgraph_ctx = NULL; 807 chan->pgraph_ctx = NULL;
808} 808}
809 809
810void
811nv10_graph_set_region_tiling(struct drm_device *dev, int i, uint32_t addr,
812 uint32_t size, uint32_t pitch)
813{
814 uint32_t limit = max(1u, addr + size) - 1;
815
816 if (pitch)
817 addr |= 1 << 31;
818
819 nv_wr32(dev, NV10_PGRAPH_TLIMIT(i), limit);
820 nv_wr32(dev, NV10_PGRAPH_TSIZE(i), pitch);
821 nv_wr32(dev, NV10_PGRAPH_TILE(i), addr);
822}
823
810int nv10_graph_init(struct drm_device *dev) 824int nv10_graph_init(struct drm_device *dev)
811{ 825{
812 struct drm_nouveau_private *dev_priv = dev->dev_private; 826 struct drm_nouveau_private *dev_priv = dev->dev_private;
@@ -838,17 +852,9 @@ int nv10_graph_init(struct drm_device *dev)
838 } else 852 } else
839 nv_wr32(dev, NV10_PGRAPH_DEBUG_4, 0x00000000); 853 nv_wr32(dev, NV10_PGRAPH_DEBUG_4, 0x00000000);
840 854
841 /* copy tile info from PFB */ 855 /* Turn all the tiling regions off. */
842 for (i = 0; i < NV10_PFB_TILE__SIZE; i++) { 856 for (i = 0; i < NV10_PFB_TILE__SIZE; i++)
843 nv_wr32(dev, NV10_PGRAPH_TILE(i), 857 nv10_graph_set_region_tiling(dev, i, 0, 0, 0);
844 nv_rd32(dev, NV10_PFB_TILE(i)));
845 nv_wr32(dev, NV10_PGRAPH_TLIMIT(i),
846 nv_rd32(dev, NV10_PFB_TLIMIT(i)));
847 nv_wr32(dev, NV10_PGRAPH_TSIZE(i),
848 nv_rd32(dev, NV10_PFB_TSIZE(i)));
849 nv_wr32(dev, NV10_PGRAPH_TSTATUS(i),
850 nv_rd32(dev, NV10_PFB_TSTATUS(i)));
851 }
852 858
853 nv_wr32(dev, NV10_PGRAPH_CTX_SWITCH1, 0x00000000); 859 nv_wr32(dev, NV10_PGRAPH_CTX_SWITCH1, 0x00000000);
854 nv_wr32(dev, NV10_PGRAPH_CTX_SWITCH2, 0x00000000); 860 nv_wr32(dev, NV10_PGRAPH_CTX_SWITCH2, 0x00000000);
diff --git a/drivers/gpu/drm/nouveau/nv17_tv.c b/drivers/gpu/drm/nouveau/nv17_tv.c
index 81c01353a9f9..21ac6e49b6ee 100644
--- a/drivers/gpu/drm/nouveau/nv17_tv.c
+++ b/drivers/gpu/drm/nouveau/nv17_tv.c
@@ -33,13 +33,103 @@
33#include "nouveau_hw.h" 33#include "nouveau_hw.h"
34#include "nv17_tv.h" 34#include "nv17_tv.h"
35 35
36enum drm_connector_status nv17_tv_detect(struct drm_encoder *encoder, 36static uint32_t nv42_tv_sample_load(struct drm_encoder *encoder)
37 struct drm_connector *connector,
38 uint32_t pin_mask)
39{ 37{
38 struct drm_device *dev = encoder->dev;
39 struct drm_nouveau_private *dev_priv = dev->dev_private;
40 uint32_t testval, regoffset = nv04_dac_output_offset(encoder);
41 uint32_t gpio0, gpio1, fp_htotal, fp_hsync_start, fp_hsync_end,
42 fp_control, test_ctrl, dacclk, ctv_14, ctv_1c, ctv_6c;
43 uint32_t sample = 0;
44 int head;
45
46#define RGB_TEST_DATA(r, g, b) (r << 0 | g << 10 | b << 20)
47 testval = RGB_TEST_DATA(0x82, 0xeb, 0x82);
48 if (dev_priv->vbios->tvdactestval)
49 testval = dev_priv->vbios->tvdactestval;
50
51 dacclk = NVReadRAMDAC(dev, 0, NV_PRAMDAC_DACCLK + regoffset);
52 head = (dacclk & 0x100) >> 8;
53
54 /* Save the previous state. */
55 gpio1 = nv17_gpio_get(dev, DCB_GPIO_TVDAC1);
56 gpio0 = nv17_gpio_get(dev, DCB_GPIO_TVDAC0);
57 fp_htotal = NVReadRAMDAC(dev, head, NV_PRAMDAC_FP_HTOTAL);
58 fp_hsync_start = NVReadRAMDAC(dev, head, NV_PRAMDAC_FP_HSYNC_START);
59 fp_hsync_end = NVReadRAMDAC(dev, head, NV_PRAMDAC_FP_HSYNC_END);
60 fp_control = NVReadRAMDAC(dev, head, NV_PRAMDAC_FP_TG_CONTROL);
61 test_ctrl = NVReadRAMDAC(dev, 0, NV_PRAMDAC_TEST_CONTROL + regoffset);
62 ctv_1c = NVReadRAMDAC(dev, head, 0x680c1c);
63 ctv_14 = NVReadRAMDAC(dev, head, 0x680c14);
64 ctv_6c = NVReadRAMDAC(dev, head, 0x680c6c);
65
66 /* Prepare the DAC for load detection. */
67 nv17_gpio_set(dev, DCB_GPIO_TVDAC1, true);
68 nv17_gpio_set(dev, DCB_GPIO_TVDAC0, true);
69
70 NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_HTOTAL, 1343);
71 NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_HSYNC_START, 1047);
72 NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_HSYNC_END, 1183);
73 NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_TG_CONTROL,
74 NV_PRAMDAC_FP_TG_CONTROL_DISPEN_POS |
75 NV_PRAMDAC_FP_TG_CONTROL_WIDTH_12 |
76 NV_PRAMDAC_FP_TG_CONTROL_READ_PROG |
77 NV_PRAMDAC_FP_TG_CONTROL_HSYNC_POS |
78 NV_PRAMDAC_FP_TG_CONTROL_VSYNC_POS);
79
80 NVWriteRAMDAC(dev, 0, NV_PRAMDAC_TEST_CONTROL + regoffset, 0);
81
82 NVWriteRAMDAC(dev, 0, NV_PRAMDAC_DACCLK + regoffset,
83 (dacclk & ~0xff) | 0x22);
84 msleep(1);
85 NVWriteRAMDAC(dev, 0, NV_PRAMDAC_DACCLK + regoffset,
86 (dacclk & ~0xff) | 0x21);
87
88 NVWriteRAMDAC(dev, head, 0x680c1c, 1 << 20);
89 NVWriteRAMDAC(dev, head, 0x680c14, 4 << 16);
90
91 /* Sample pin 0x4 (usually S-video luma). */
92 NVWriteRAMDAC(dev, head, 0x680c6c, testval >> 10 & 0x3ff);
93 msleep(20);
94 sample |= NVReadRAMDAC(dev, 0, NV_PRAMDAC_TEST_CONTROL + regoffset)
95 & 0x4 << 28;
96
97 /* Sample the remaining pins. */
98 NVWriteRAMDAC(dev, head, 0x680c6c, testval & 0x3ff);
99 msleep(20);
100 sample |= NVReadRAMDAC(dev, 0, NV_PRAMDAC_TEST_CONTROL + regoffset)
101 & 0xa << 28;
102
103 /* Restore the previous state. */
104 NVWriteRAMDAC(dev, head, 0x680c1c, ctv_1c);
105 NVWriteRAMDAC(dev, head, 0x680c14, ctv_14);
106 NVWriteRAMDAC(dev, head, 0x680c6c, ctv_6c);
107 NVWriteRAMDAC(dev, 0, NV_PRAMDAC_DACCLK + regoffset, dacclk);
108 NVWriteRAMDAC(dev, 0, NV_PRAMDAC_TEST_CONTROL + regoffset, test_ctrl);
109 NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_TG_CONTROL, fp_control);
110 NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_HSYNC_END, fp_hsync_end);
111 NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_HSYNC_START, fp_hsync_start);
112 NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_HTOTAL, fp_htotal);
113 nv17_gpio_set(dev, DCB_GPIO_TVDAC1, gpio1);
114 nv17_gpio_set(dev, DCB_GPIO_TVDAC0, gpio0);
115
116 return sample;
117}
118
119static enum drm_connector_status
120nv17_tv_detect(struct drm_encoder *encoder, struct drm_connector *connector)
121{
122 struct drm_device *dev = encoder->dev;
123 struct drm_nouveau_private *dev_priv = dev->dev_private;
124 struct drm_mode_config *conf = &dev->mode_config;
40 struct nv17_tv_encoder *tv_enc = to_tv_enc(encoder); 125 struct nv17_tv_encoder *tv_enc = to_tv_enc(encoder);
126 struct dcb_entry *dcb = tv_enc->base.dcb;
41 127
42 tv_enc->pin_mask = pin_mask >> 28 & 0xe; 128 if (dev_priv->chipset == 0x42 ||
129 dev_priv->chipset == 0x43)
130 tv_enc->pin_mask = nv42_tv_sample_load(encoder) >> 28 & 0xe;
131 else
132 tv_enc->pin_mask = nv17_dac_sample_load(encoder) >> 28 & 0xe;
43 133
44 switch (tv_enc->pin_mask) { 134 switch (tv_enc->pin_mask) {
45 case 0x2: 135 case 0x2:
@@ -50,7 +140,7 @@ enum drm_connector_status nv17_tv_detect(struct drm_encoder *encoder,
50 tv_enc->subconnector = DRM_MODE_SUBCONNECTOR_SVIDEO; 140 tv_enc->subconnector = DRM_MODE_SUBCONNECTOR_SVIDEO;
51 break; 141 break;
52 case 0xe: 142 case 0xe:
53 if (nouveau_encoder(encoder)->dcb->tvconf.has_component_output) 143 if (dcb->tvconf.has_component_output)
54 tv_enc->subconnector = DRM_MODE_SUBCONNECTOR_Component; 144 tv_enc->subconnector = DRM_MODE_SUBCONNECTOR_Component;
55 else 145 else
56 tv_enc->subconnector = DRM_MODE_SUBCONNECTOR_SCART; 146 tv_enc->subconnector = DRM_MODE_SUBCONNECTOR_SCART;
@@ -61,11 +151,16 @@ enum drm_connector_status nv17_tv_detect(struct drm_encoder *encoder,
61 } 151 }
62 152
63 drm_connector_property_set_value(connector, 153 drm_connector_property_set_value(connector,
64 encoder->dev->mode_config.tv_subconnector_property, 154 conf->tv_subconnector_property,
65 tv_enc->subconnector); 155 tv_enc->subconnector);
66 156
67 return tv_enc->subconnector ? connector_status_connected : 157 if (tv_enc->subconnector) {
68 connector_status_disconnected; 158 NV_INFO(dev, "Load detected on output %c\n",
159 '@' + ffs(dcb->or));
160 return connector_status_connected;
161 } else {
162 return connector_status_disconnected;
163 }
69} 164}
70 165
71static const struct { 166static const struct {
@@ -484,6 +579,8 @@ static void nv17_tv_restore(struct drm_encoder *encoder)
484 nouveau_encoder(encoder)->restore.output); 579 nouveau_encoder(encoder)->restore.output);
485 580
486 nv17_tv_state_load(dev, &to_tv_enc(encoder)->saved_state); 581 nv17_tv_state_load(dev, &to_tv_enc(encoder)->saved_state);
582
583 nouveau_encoder(encoder)->last_dpms = NV_DPMS_CLEARED;
487} 584}
488 585
489static int nv17_tv_create_resources(struct drm_encoder *encoder, 586static int nv17_tv_create_resources(struct drm_encoder *encoder,
@@ -633,7 +730,7 @@ static struct drm_encoder_helper_funcs nv17_tv_helper_funcs = {
633 .prepare = nv17_tv_prepare, 730 .prepare = nv17_tv_prepare,
634 .commit = nv17_tv_commit, 731 .commit = nv17_tv_commit,
635 .mode_set = nv17_tv_mode_set, 732 .mode_set = nv17_tv_mode_set,
636 .detect = nv17_dac_detect, 733 .detect = nv17_tv_detect,
637}; 734};
638 735
639static struct drm_encoder_slave_funcs nv17_tv_slave_funcs = { 736static struct drm_encoder_slave_funcs nv17_tv_slave_funcs = {
diff --git a/drivers/gpu/drm/nouveau/nv20_graph.c b/drivers/gpu/drm/nouveau/nv20_graph.c
index 18ba74f19703..d6fc0a82f03d 100644
--- a/drivers/gpu/drm/nouveau/nv20_graph.c
+++ b/drivers/gpu/drm/nouveau/nv20_graph.c
@@ -514,6 +514,27 @@ nv20_graph_rdi(struct drm_device *dev)
514 nouveau_wait_for_idle(dev); 514 nouveau_wait_for_idle(dev);
515} 515}
516 516
517void
518nv20_graph_set_region_tiling(struct drm_device *dev, int i, uint32_t addr,
519 uint32_t size, uint32_t pitch)
520{
521 uint32_t limit = max(1u, addr + size) - 1;
522
523 if (pitch)
524 addr |= 1;
525
526 nv_wr32(dev, NV20_PGRAPH_TLIMIT(i), limit);
527 nv_wr32(dev, NV20_PGRAPH_TSIZE(i), pitch);
528 nv_wr32(dev, NV20_PGRAPH_TILE(i), addr);
529
530 nv_wr32(dev, NV10_PGRAPH_RDI_INDEX, 0x00EA0030 + 4 * i);
531 nv_wr32(dev, NV10_PGRAPH_RDI_DATA, limit);
532 nv_wr32(dev, NV10_PGRAPH_RDI_INDEX, 0x00EA0050 + 4 * i);
533 nv_wr32(dev, NV10_PGRAPH_RDI_DATA, pitch);
534 nv_wr32(dev, NV10_PGRAPH_RDI_INDEX, 0x00EA0010 + 4 * i);
535 nv_wr32(dev, NV10_PGRAPH_RDI_DATA, addr);
536}
537
517int 538int
518nv20_graph_init(struct drm_device *dev) 539nv20_graph_init(struct drm_device *dev)
519{ 540{
@@ -572,27 +593,10 @@ nv20_graph_init(struct drm_device *dev)
572 nv_wr32(dev, NV10_PGRAPH_RDI_DATA , 0x00000030); 593 nv_wr32(dev, NV10_PGRAPH_RDI_DATA , 0x00000030);
573 } 594 }
574 595
575 /* copy tile info from PFB */ 596 /* Turn all the tiling regions off. */
576 for (i = 0; i < NV10_PFB_TILE__SIZE; i++) { 597 for (i = 0; i < NV10_PFB_TILE__SIZE; i++)
577 nv_wr32(dev, 0x00400904 + i * 0x10, 598 nv20_graph_set_region_tiling(dev, i, 0, 0, 0);
578 nv_rd32(dev, NV10_PFB_TLIMIT(i))); 599
579 /* which is NV40_PGRAPH_TLIMIT0(i) ?? */
580 nv_wr32(dev, NV10_PGRAPH_RDI_INDEX, 0x00EA0030 + i * 4);
581 nv_wr32(dev, NV10_PGRAPH_RDI_DATA,
582 nv_rd32(dev, NV10_PFB_TLIMIT(i)));
583 nv_wr32(dev, 0x00400908 + i * 0x10,
584 nv_rd32(dev, NV10_PFB_TSIZE(i)));
585 /* which is NV40_PGRAPH_TSIZE0(i) ?? */
586 nv_wr32(dev, NV10_PGRAPH_RDI_INDEX, 0x00EA0050 + i * 4);
587 nv_wr32(dev, NV10_PGRAPH_RDI_DATA,
588 nv_rd32(dev, NV10_PFB_TSIZE(i)));
589 nv_wr32(dev, 0x00400900 + i * 0x10,
590 nv_rd32(dev, NV10_PFB_TILE(i)));
591 /* which is NV40_PGRAPH_TILE0(i) ?? */
592 nv_wr32(dev, NV10_PGRAPH_RDI_INDEX, 0x00EA0010 + i * 4);
593 nv_wr32(dev, NV10_PGRAPH_RDI_DATA,
594 nv_rd32(dev, NV10_PFB_TILE(i)));
595 }
596 for (i = 0; i < 8; i++) { 600 for (i = 0; i < 8; i++) {
597 nv_wr32(dev, 0x400980 + i * 4, nv_rd32(dev, 0x100300 + i * 4)); 601 nv_wr32(dev, 0x400980 + i * 4, nv_rd32(dev, 0x100300 + i * 4));
598 nv_wr32(dev, NV10_PGRAPH_RDI_INDEX, 0x00EA0090 + i * 4); 602 nv_wr32(dev, NV10_PGRAPH_RDI_INDEX, 0x00EA0090 + i * 4);
@@ -704,18 +708,9 @@ nv30_graph_init(struct drm_device *dev)
704 708
705 nv_wr32(dev, 0x4000c0, 0x00000016); 709 nv_wr32(dev, 0x4000c0, 0x00000016);
706 710
707 /* copy tile info from PFB */ 711 /* Turn all the tiling regions off. */
708 for (i = 0; i < NV10_PFB_TILE__SIZE; i++) { 712 for (i = 0; i < NV10_PFB_TILE__SIZE; i++)
709 nv_wr32(dev, 0x00400904 + i * 0x10, 713 nv20_graph_set_region_tiling(dev, i, 0, 0, 0);
710 nv_rd32(dev, NV10_PFB_TLIMIT(i)));
711 /* which is NV40_PGRAPH_TLIMIT0(i) ?? */
712 nv_wr32(dev, 0x00400908 + i * 0x10,
713 nv_rd32(dev, NV10_PFB_TSIZE(i)));
714 /* which is NV40_PGRAPH_TSIZE0(i) ?? */
715 nv_wr32(dev, 0x00400900 + i * 0x10,
716 nv_rd32(dev, NV10_PFB_TILE(i)));
717 /* which is NV40_PGRAPH_TILE0(i) ?? */
718 }
719 714
720 nv_wr32(dev, NV10_PGRAPH_CTX_CONTROL, 0x10000100); 715 nv_wr32(dev, NV10_PGRAPH_CTX_CONTROL, 0x10000100);
721 nv_wr32(dev, NV10_PGRAPH_STATE , 0xFFFFFFFF); 716 nv_wr32(dev, NV10_PGRAPH_STATE , 0xFFFFFFFF);
diff --git a/drivers/gpu/drm/nouveau/nv40_fb.c b/drivers/gpu/drm/nouveau/nv40_fb.c
index ca1d27107a8e..3cd07d8d5bd7 100644
--- a/drivers/gpu/drm/nouveau/nv40_fb.c
+++ b/drivers/gpu/drm/nouveau/nv40_fb.c
@@ -3,12 +3,37 @@
3#include "nouveau_drv.h" 3#include "nouveau_drv.h"
4#include "nouveau_drm.h" 4#include "nouveau_drm.h"
5 5
6void
7nv40_fb_set_region_tiling(struct drm_device *dev, int i, uint32_t addr,
8 uint32_t size, uint32_t pitch)
9{
10 struct drm_nouveau_private *dev_priv = dev->dev_private;
11 uint32_t limit = max(1u, addr + size) - 1;
12
13 if (pitch)
14 addr |= 1;
15
16 switch (dev_priv->chipset) {
17 case 0x40:
18 nv_wr32(dev, NV10_PFB_TLIMIT(i), limit);
19 nv_wr32(dev, NV10_PFB_TSIZE(i), pitch);
20 nv_wr32(dev, NV10_PFB_TILE(i), addr);
21 break;
22
23 default:
24 nv_wr32(dev, NV40_PFB_TLIMIT(i), limit);
25 nv_wr32(dev, NV40_PFB_TSIZE(i), pitch);
26 nv_wr32(dev, NV40_PFB_TILE(i), addr);
27 break;
28 }
29}
30
6int 31int
7nv40_fb_init(struct drm_device *dev) 32nv40_fb_init(struct drm_device *dev)
8{ 33{
9 struct drm_nouveau_private *dev_priv = dev->dev_private; 34 struct drm_nouveau_private *dev_priv = dev->dev_private;
10 uint32_t fb_bar_size, tmp; 35 struct nouveau_fb_engine *pfb = &dev_priv->engine.fb;
11 int num_tiles; 36 uint32_t tmp;
12 int i; 37 int i;
13 38
14 /* This is strictly a NV4x register (don't know about NV5x). */ 39 /* This is strictly a NV4x register (don't know about NV5x). */
@@ -23,35 +48,23 @@ nv40_fb_init(struct drm_device *dev)
23 case 0x45: 48 case 0x45:
24 tmp = nv_rd32(dev, NV10_PFB_CLOSE_PAGE2); 49 tmp = nv_rd32(dev, NV10_PFB_CLOSE_PAGE2);
25 nv_wr32(dev, NV10_PFB_CLOSE_PAGE2, tmp & ~(1 << 15)); 50 nv_wr32(dev, NV10_PFB_CLOSE_PAGE2, tmp & ~(1 << 15));
26 num_tiles = NV10_PFB_TILE__SIZE; 51 pfb->num_tiles = NV10_PFB_TILE__SIZE;
27 break; 52 break;
28 case 0x46: /* G72 */ 53 case 0x46: /* G72 */
29 case 0x47: /* G70 */ 54 case 0x47: /* G70 */
30 case 0x49: /* G71 */ 55 case 0x49: /* G71 */
31 case 0x4b: /* G73 */ 56 case 0x4b: /* G73 */
32 case 0x4c: /* C51 (G7X version) */ 57 case 0x4c: /* C51 (G7X version) */
33 num_tiles = NV40_PFB_TILE__SIZE_1; 58 pfb->num_tiles = NV40_PFB_TILE__SIZE_1;
34 break; 59 break;
35 default: 60 default:
36 num_tiles = NV40_PFB_TILE__SIZE_0; 61 pfb->num_tiles = NV40_PFB_TILE__SIZE_0;
37 break; 62 break;
38 } 63 }
39 64
40 fb_bar_size = drm_get_resource_len(dev, 0) - 1; 65 /* Turn all the tiling regions off. */
41 switch (dev_priv->chipset) { 66 for (i = 0; i < pfb->num_tiles; i++)
42 case 0x40: 67 pfb->set_region_tiling(dev, i, 0, 0, 0);
43 for (i = 0; i < num_tiles; i++) {
44 nv_wr32(dev, NV10_PFB_TILE(i), 0);
45 nv_wr32(dev, NV10_PFB_TLIMIT(i), fb_bar_size);
46 }
47 break;
48 default:
49 for (i = 0; i < num_tiles; i++) {
50 nv_wr32(dev, NV40_PFB_TILE(i), 0);
51 nv_wr32(dev, NV40_PFB_TLIMIT(i), fb_bar_size);
52 }
53 break;
54 }
55 68
56 return 0; 69 return 0;
57} 70}
diff --git a/drivers/gpu/drm/nouveau/nv40_graph.c b/drivers/gpu/drm/nouveau/nv40_graph.c
index 2b332bb55acf..53e8afe1dcd1 100644
--- a/drivers/gpu/drm/nouveau/nv40_graph.c
+++ b/drivers/gpu/drm/nouveau/nv40_graph.c
@@ -181,6 +181,48 @@ nv40_graph_unload_context(struct drm_device *dev)
181 return ret; 181 return ret;
182} 182}
183 183
184void
185nv40_graph_set_region_tiling(struct drm_device *dev, int i, uint32_t addr,
186 uint32_t size, uint32_t pitch)
187{
188 struct drm_nouveau_private *dev_priv = dev->dev_private;
189 uint32_t limit = max(1u, addr + size) - 1;
190
191 if (pitch)
192 addr |= 1;
193
194 switch (dev_priv->chipset) {
195 case 0x44:
196 case 0x4a:
197 case 0x4e:
198 nv_wr32(dev, NV20_PGRAPH_TSIZE(i), pitch);
199 nv_wr32(dev, NV20_PGRAPH_TLIMIT(i), limit);
200 nv_wr32(dev, NV20_PGRAPH_TILE(i), addr);
201 break;
202
203 case 0x46:
204 case 0x47:
205 case 0x49:
206 case 0x4b:
207 nv_wr32(dev, NV47_PGRAPH_TSIZE(i), pitch);
208 nv_wr32(dev, NV47_PGRAPH_TLIMIT(i), limit);
209 nv_wr32(dev, NV47_PGRAPH_TILE(i), addr);
210 nv_wr32(dev, NV40_PGRAPH_TSIZE1(i), pitch);
211 nv_wr32(dev, NV40_PGRAPH_TLIMIT1(i), limit);
212 nv_wr32(dev, NV40_PGRAPH_TILE1(i), addr);
213 break;
214
215 default:
216 nv_wr32(dev, NV20_PGRAPH_TSIZE(i), pitch);
217 nv_wr32(dev, NV20_PGRAPH_TLIMIT(i), limit);
218 nv_wr32(dev, NV20_PGRAPH_TILE(i), addr);
219 nv_wr32(dev, NV40_PGRAPH_TSIZE1(i), pitch);
220 nv_wr32(dev, NV40_PGRAPH_TLIMIT1(i), limit);
221 nv_wr32(dev, NV40_PGRAPH_TILE1(i), addr);
222 break;
223 }
224}
225
184/* 226/*
185 * G70 0x47 227 * G70 0x47
186 * G71 0x49 228 * G71 0x49
@@ -195,7 +237,8 @@ nv40_graph_init(struct drm_device *dev)
195{ 237{
196 struct drm_nouveau_private *dev_priv = 238 struct drm_nouveau_private *dev_priv =
197 (struct drm_nouveau_private *)dev->dev_private; 239 (struct drm_nouveau_private *)dev->dev_private;
198 uint32_t vramsz, tmp; 240 struct nouveau_fb_engine *pfb = &dev_priv->engine.fb;
241 uint32_t vramsz;
199 int i, j; 242 int i, j;
200 243
201 nv_wr32(dev, NV03_PMC_ENABLE, nv_rd32(dev, NV03_PMC_ENABLE) & 244 nv_wr32(dev, NV03_PMC_ENABLE, nv_rd32(dev, NV03_PMC_ENABLE) &
@@ -292,74 +335,9 @@ nv40_graph_init(struct drm_device *dev)
292 nv_wr32(dev, 0x400b38, 0x2ffff800); 335 nv_wr32(dev, 0x400b38, 0x2ffff800);
293 nv_wr32(dev, 0x400b3c, 0x00006000); 336 nv_wr32(dev, 0x400b3c, 0x00006000);
294 337
295 /* copy tile info from PFB */ 338 /* Turn all the tiling regions off. */
296 switch (dev_priv->chipset) { 339 for (i = 0; i < pfb->num_tiles; i++)
297 case 0x40: /* vanilla NV40 */ 340 nv40_graph_set_region_tiling(dev, i, 0, 0, 0);
298 for (i = 0; i < NV10_PFB_TILE__SIZE; i++) {
299 tmp = nv_rd32(dev, NV10_PFB_TILE(i));
300 nv_wr32(dev, NV40_PGRAPH_TILE0(i), tmp);
301 nv_wr32(dev, NV40_PGRAPH_TILE1(i), tmp);
302 tmp = nv_rd32(dev, NV10_PFB_TLIMIT(i));
303 nv_wr32(dev, NV40_PGRAPH_TLIMIT0(i), tmp);
304 nv_wr32(dev, NV40_PGRAPH_TLIMIT1(i), tmp);
305 tmp = nv_rd32(dev, NV10_PFB_TSIZE(i));
306 nv_wr32(dev, NV40_PGRAPH_TSIZE0(i), tmp);
307 nv_wr32(dev, NV40_PGRAPH_TSIZE1(i), tmp);
308 tmp = nv_rd32(dev, NV10_PFB_TSTATUS(i));
309 nv_wr32(dev, NV40_PGRAPH_TSTATUS0(i), tmp);
310 nv_wr32(dev, NV40_PGRAPH_TSTATUS1(i), tmp);
311 }
312 break;
313 case 0x44:
314 case 0x4a:
315 case 0x4e: /* NV44-based cores don't have 0x406900? */
316 for (i = 0; i < NV40_PFB_TILE__SIZE_0; i++) {
317 tmp = nv_rd32(dev, NV40_PFB_TILE(i));
318 nv_wr32(dev, NV40_PGRAPH_TILE0(i), tmp);
319 tmp = nv_rd32(dev, NV40_PFB_TLIMIT(i));
320 nv_wr32(dev, NV40_PGRAPH_TLIMIT0(i), tmp);
321 tmp = nv_rd32(dev, NV40_PFB_TSIZE(i));
322 nv_wr32(dev, NV40_PGRAPH_TSIZE0(i), tmp);
323 tmp = nv_rd32(dev, NV40_PFB_TSTATUS(i));
324 nv_wr32(dev, NV40_PGRAPH_TSTATUS0(i), tmp);
325 }
326 break;
327 case 0x46:
328 case 0x47:
329 case 0x49:
330 case 0x4b: /* G7X-based cores */
331 for (i = 0; i < NV40_PFB_TILE__SIZE_1; i++) {
332 tmp = nv_rd32(dev, NV40_PFB_TILE(i));
333 nv_wr32(dev, NV47_PGRAPH_TILE0(i), tmp);
334 nv_wr32(dev, NV40_PGRAPH_TILE1(i), tmp);
335 tmp = nv_rd32(dev, NV40_PFB_TLIMIT(i));
336 nv_wr32(dev, NV47_PGRAPH_TLIMIT0(i), tmp);
337 nv_wr32(dev, NV40_PGRAPH_TLIMIT1(i), tmp);
338 tmp = nv_rd32(dev, NV40_PFB_TSIZE(i));
339 nv_wr32(dev, NV47_PGRAPH_TSIZE0(i), tmp);
340 nv_wr32(dev, NV40_PGRAPH_TSIZE1(i), tmp);
341 tmp = nv_rd32(dev, NV40_PFB_TSTATUS(i));
342 nv_wr32(dev, NV47_PGRAPH_TSTATUS0(i), tmp);
343 nv_wr32(dev, NV40_PGRAPH_TSTATUS1(i), tmp);
344 }
345 break;
346 default: /* everything else */
347 for (i = 0; i < NV40_PFB_TILE__SIZE_0; i++) {
348 tmp = nv_rd32(dev, NV40_PFB_TILE(i));
349 nv_wr32(dev, NV40_PGRAPH_TILE0(i), tmp);
350 nv_wr32(dev, NV40_PGRAPH_TILE1(i), tmp);
351 tmp = nv_rd32(dev, NV40_PFB_TLIMIT(i));
352 nv_wr32(dev, NV40_PGRAPH_TLIMIT0(i), tmp);
353 nv_wr32(dev, NV40_PGRAPH_TLIMIT1(i), tmp);
354 tmp = nv_rd32(dev, NV40_PFB_TSIZE(i));
355 nv_wr32(dev, NV40_PGRAPH_TSIZE0(i), tmp);
356 nv_wr32(dev, NV40_PGRAPH_TSIZE1(i), tmp);
357 tmp = nv_rd32(dev, NV40_PFB_TSTATUS(i));
358 nv_wr32(dev, NV40_PGRAPH_TSTATUS0(i), tmp);
359 nv_wr32(dev, NV40_PGRAPH_TSTATUS1(i), tmp);
360 }
361 break;
362 }
363 341
364 /* begin RAM config */ 342 /* begin RAM config */
365 vramsz = drm_get_resource_len(dev, 0) - 1; 343 vramsz = drm_get_resource_len(dev, 0) - 1;
diff --git a/drivers/gpu/drm/nouveau/nv50_crtc.c b/drivers/gpu/drm/nouveau/nv50_crtc.c
index 118d3285fd8c..d1a651e3400c 100644
--- a/drivers/gpu/drm/nouveau/nv50_crtc.c
+++ b/drivers/gpu/drm/nouveau/nv50_crtc.c
@@ -298,14 +298,17 @@ nv50_crtc_set_clock(struct drm_device *dev, int head, int pclk)
298static void 298static void
299nv50_crtc_destroy(struct drm_crtc *crtc) 299nv50_crtc_destroy(struct drm_crtc *crtc)
300{ 300{
301 struct drm_device *dev = crtc->dev; 301 struct drm_device *dev;
302 struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); 302 struct nouveau_crtc *nv_crtc;
303
304 NV_DEBUG_KMS(dev, "\n");
305 303
306 if (!crtc) 304 if (!crtc)
307 return; 305 return;
308 306
307 dev = crtc->dev;
308 nv_crtc = nouveau_crtc(crtc);
309
310 NV_DEBUG_KMS(dev, "\n");
311
309 drm_crtc_cleanup(&nv_crtc->base); 312 drm_crtc_cleanup(&nv_crtc->base);
310 313
311 nv50_cursor_fini(nv_crtc); 314 nv50_cursor_fini(nv_crtc);
@@ -432,6 +435,7 @@ nv50_crtc_prepare(struct drm_crtc *crtc)
432 struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); 435 struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc);
433 struct drm_device *dev = crtc->dev; 436 struct drm_device *dev = crtc->dev;
434 struct drm_encoder *encoder; 437 struct drm_encoder *encoder;
438 uint32_t dac = 0, sor = 0;
435 439
436 NV_DEBUG_KMS(dev, "index %d\n", nv_crtc->index); 440 NV_DEBUG_KMS(dev, "index %d\n", nv_crtc->index);
437 441
@@ -439,9 +443,28 @@ nv50_crtc_prepare(struct drm_crtc *crtc)
439 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { 443 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
440 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder); 444 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
441 445
442 if (drm_helper_encoder_in_use(encoder)) 446 if (!drm_helper_encoder_in_use(encoder))
443 continue; 447 continue;
444 448
449 if (nv_encoder->dcb->type == OUTPUT_ANALOG ||
450 nv_encoder->dcb->type == OUTPUT_TV)
451 dac |= (1 << nv_encoder->or);
452 else
453 sor |= (1 << nv_encoder->or);
454 }
455
456 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
457 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
458
459 if (nv_encoder->dcb->type == OUTPUT_ANALOG ||
460 nv_encoder->dcb->type == OUTPUT_TV) {
461 if (dac & (1 << nv_encoder->or))
462 continue;
463 } else {
464 if (sor & (1 << nv_encoder->or))
465 continue;
466 }
467
445 nv_encoder->disconnect(nv_encoder); 468 nv_encoder->disconnect(nv_encoder);
446 } 469 }
447 470
diff --git a/drivers/gpu/drm/nouveau/nv50_display.c b/drivers/gpu/drm/nouveau/nv50_display.c
index a9263d92a231..90f0bf59fbcd 100644
--- a/drivers/gpu/drm/nouveau/nv50_display.c
+++ b/drivers/gpu/drm/nouveau/nv50_display.c
@@ -690,9 +690,21 @@ nv50_display_script_select(struct drm_device *dev, struct dcb_entry *dcbent,
690 int pxclk) 690 int pxclk)
691{ 691{
692 struct drm_nouveau_private *dev_priv = dev->dev_private; 692 struct drm_nouveau_private *dev_priv = dev->dev_private;
693 struct nouveau_connector *nv_connector = NULL;
694 struct drm_encoder *encoder;
693 struct nvbios *bios = &dev_priv->VBIOS; 695 struct nvbios *bios = &dev_priv->VBIOS;
694 uint32_t mc, script = 0, or; 696 uint32_t mc, script = 0, or;
695 697
698 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
699 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
700
701 if (nv_encoder->dcb != dcbent)
702 continue;
703
704 nv_connector = nouveau_encoder_connector_get(nv_encoder);
705 break;
706 }
707
696 or = ffs(dcbent->or) - 1; 708 or = ffs(dcbent->or) - 1;
697 mc = nv50_display_mode_ctrl(dev, dcbent->type != OUTPUT_ANALOG, or); 709 mc = nv50_display_mode_ctrl(dev, dcbent->type != OUTPUT_ANALOG, or);
698 switch (dcbent->type) { 710 switch (dcbent->type) {
@@ -711,6 +723,11 @@ nv50_display_script_select(struct drm_device *dev, struct dcb_entry *dcbent,
711 } else 723 } else
712 if (bios->fp.strapless_is_24bit & 1) 724 if (bios->fp.strapless_is_24bit & 1)
713 script |= 0x0200; 725 script |= 0x0200;
726
727 if (nv_connector && nv_connector->edid &&
728 (nv_connector->edid->revision >= 4) &&
729 (nv_connector->edid->input & 0x70) >= 0x20)
730 script |= 0x0200;
714 } 731 }
715 732
716 if (nouveau_uscript_lvds >= 0) { 733 if (nouveau_uscript_lvds >= 0) {
diff --git a/drivers/gpu/drm/nouveau/nv50_fbcon.c b/drivers/gpu/drm/nouveau/nv50_fbcon.c
index 6bcc6d39e9b0..0f57cdf7ccb2 100644
--- a/drivers/gpu/drm/nouveau/nv50_fbcon.c
+++ b/drivers/gpu/drm/nouveau/nv50_fbcon.c
@@ -3,7 +3,7 @@
3#include "nouveau_dma.h" 3#include "nouveau_dma.h"
4#include "nouveau_fbcon.h" 4#include "nouveau_fbcon.h"
5 5
6static void 6void
7nv50_fbcon_fillrect(struct fb_info *info, const struct fb_fillrect *rect) 7nv50_fbcon_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
8{ 8{
9 struct nouveau_fbcon_par *par = info->par; 9 struct nouveau_fbcon_par *par = info->par;
@@ -16,9 +16,7 @@ nv50_fbcon_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
16 16
17 if (!(info->flags & FBINFO_HWACCEL_DISABLED) && 17 if (!(info->flags & FBINFO_HWACCEL_DISABLED) &&
18 RING_SPACE(chan, rect->rop == ROP_COPY ? 7 : 11)) { 18 RING_SPACE(chan, rect->rop == ROP_COPY ? 7 : 11)) {
19 NV_ERROR(dev, "GPU lockup - switching to software fbcon\n"); 19 nouveau_fbcon_gpu_lockup(info);
20
21 info->flags |= FBINFO_HWACCEL_DISABLED;
22 } 20 }
23 21
24 if (info->flags & FBINFO_HWACCEL_DISABLED) { 22 if (info->flags & FBINFO_HWACCEL_DISABLED) {
@@ -31,7 +29,11 @@ nv50_fbcon_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
31 OUT_RING(chan, 1); 29 OUT_RING(chan, 1);
32 } 30 }
33 BEGIN_RING(chan, NvSub2D, 0x0588, 1); 31 BEGIN_RING(chan, NvSub2D, 0x0588, 1);
34 OUT_RING(chan, rect->color); 32 if (info->fix.visual == FB_VISUAL_TRUECOLOR ||
33 info->fix.visual == FB_VISUAL_DIRECTCOLOR)
34 OUT_RING(chan, ((uint32_t *)info->pseudo_palette)[rect->color]);
35 else
36 OUT_RING(chan, rect->color);
35 BEGIN_RING(chan, NvSub2D, 0x0600, 4); 37 BEGIN_RING(chan, NvSub2D, 0x0600, 4);
36 OUT_RING(chan, rect->dx); 38 OUT_RING(chan, rect->dx);
37 OUT_RING(chan, rect->dy); 39 OUT_RING(chan, rect->dy);
@@ -44,7 +46,7 @@ nv50_fbcon_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
44 FIRE_RING(chan); 46 FIRE_RING(chan);
45} 47}
46 48
47static void 49void
48nv50_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *region) 50nv50_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *region)
49{ 51{
50 struct nouveau_fbcon_par *par = info->par; 52 struct nouveau_fbcon_par *par = info->par;
@@ -56,9 +58,7 @@ nv50_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *region)
56 return; 58 return;
57 59
58 if (!(info->flags & FBINFO_HWACCEL_DISABLED) && RING_SPACE(chan, 12)) { 60 if (!(info->flags & FBINFO_HWACCEL_DISABLED) && RING_SPACE(chan, 12)) {
59 NV_ERROR(dev, "GPU lockup - switching to software fbcon\n"); 61 nouveau_fbcon_gpu_lockup(info);
60
61 info->flags |= FBINFO_HWACCEL_DISABLED;
62 } 62 }
63 63
64 if (info->flags & FBINFO_HWACCEL_DISABLED) { 64 if (info->flags & FBINFO_HWACCEL_DISABLED) {
@@ -81,7 +81,7 @@ nv50_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *region)
81 FIRE_RING(chan); 81 FIRE_RING(chan);
82} 82}
83 83
84static void 84void
85nv50_fbcon_imageblit(struct fb_info *info, const struct fb_image *image) 85nv50_fbcon_imageblit(struct fb_info *info, const struct fb_image *image)
86{ 86{
87 struct nouveau_fbcon_par *par = info->par; 87 struct nouveau_fbcon_par *par = info->par;
@@ -101,8 +101,7 @@ nv50_fbcon_imageblit(struct fb_info *info, const struct fb_image *image)
101 } 101 }
102 102
103 if (!(info->flags & FBINFO_HWACCEL_DISABLED) && RING_SPACE(chan, 11)) { 103 if (!(info->flags & FBINFO_HWACCEL_DISABLED) && RING_SPACE(chan, 11)) {
104 NV_ERROR(dev, "GPU lockup - switching to software fbcon\n"); 104 nouveau_fbcon_gpu_lockup(info);
105 info->flags |= FBINFO_HWACCEL_DISABLED;
106 } 105 }
107 106
108 if (info->flags & FBINFO_HWACCEL_DISABLED) { 107 if (info->flags & FBINFO_HWACCEL_DISABLED) {
@@ -135,9 +134,7 @@ nv50_fbcon_imageblit(struct fb_info *info, const struct fb_image *image)
135 int push = dwords > 2047 ? 2047 : dwords; 134 int push = dwords > 2047 ? 2047 : dwords;
136 135
137 if (RING_SPACE(chan, push + 1)) { 136 if (RING_SPACE(chan, push + 1)) {
138 NV_ERROR(dev, 137 nouveau_fbcon_gpu_lockup(info);
139 "GPU lockup - switching to software fbcon\n");
140 info->flags |= FBINFO_HWACCEL_DISABLED;
141 cfb_imageblit(info, image); 138 cfb_imageblit(info, image);
142 return; 139 return;
143 } 140 }
@@ -199,7 +196,7 @@ nv50_fbcon_accel_init(struct fb_info *info)
199 196
200 ret = RING_SPACE(chan, 59); 197 ret = RING_SPACE(chan, 59);
201 if (ret) { 198 if (ret) {
202 NV_ERROR(dev, "GPU lockup - switching to software fbcon\n"); 199 nouveau_fbcon_gpu_lockup(info);
203 return ret; 200 return ret;
204 } 201 }
205 202
@@ -265,9 +262,6 @@ nv50_fbcon_accel_init(struct fb_info *info)
265 OUT_RING(chan, info->fix.smem_start - dev_priv->fb_phys + 262 OUT_RING(chan, info->fix.smem_start - dev_priv->fb_phys +
266 dev_priv->vm_vram_base); 263 dev_priv->vm_vram_base);
267 264
268 info->fbops->fb_fillrect = nv50_fbcon_fillrect;
269 info->fbops->fb_copyarea = nv50_fbcon_copyarea;
270 info->fbops->fb_imageblit = nv50_fbcon_imageblit;
271 return 0; 265 return 0;
272} 266}
273 267
diff --git a/drivers/gpu/drm/nouveau/nv50_fifo.c b/drivers/gpu/drm/nouveau/nv50_fifo.c
index b7282284f080..204a79ff10f4 100644
--- a/drivers/gpu/drm/nouveau/nv50_fifo.c
+++ b/drivers/gpu/drm/nouveau/nv50_fifo.c
@@ -272,7 +272,7 @@ nv50_fifo_create_context(struct nouveau_channel *chan)
272 return ret; 272 return ret;
273 ramfc = chan->ramfc->gpuobj; 273 ramfc = chan->ramfc->gpuobj;
274 274
275 ret = nouveau_gpuobj_new_ref(dev, chan, NULL, 0, 4096, 256, 275 ret = nouveau_gpuobj_new_ref(dev, chan, NULL, 0, 4096, 1024,
276 0, &chan->cache); 276 0, &chan->cache);
277 if (ret) 277 if (ret)
278 return ret; 278 return ret;
@@ -317,17 +317,20 @@ void
317nv50_fifo_destroy_context(struct nouveau_channel *chan) 317nv50_fifo_destroy_context(struct nouveau_channel *chan)
318{ 318{
319 struct drm_device *dev = chan->dev; 319 struct drm_device *dev = chan->dev;
320 struct nouveau_gpuobj_ref *ramfc = chan->ramfc;
320 321
321 NV_DEBUG(dev, "ch%d\n", chan->id); 322 NV_DEBUG(dev, "ch%d\n", chan->id);
322 323
323 nouveau_gpuobj_ref_del(dev, &chan->ramfc); 324 /* This will ensure the channel is seen as disabled. */
324 nouveau_gpuobj_ref_del(dev, &chan->cache); 325 chan->ramfc = NULL;
325
326 nv50_fifo_channel_disable(dev, chan->id, false); 326 nv50_fifo_channel_disable(dev, chan->id, false);
327 327
328 /* Dummy channel, also used on ch 127 */ 328 /* Dummy channel, also used on ch 127 */
329 if (chan->id == 0) 329 if (chan->id == 0)
330 nv50_fifo_channel_disable(dev, 127, false); 330 nv50_fifo_channel_disable(dev, 127, false);
331
332 nouveau_gpuobj_ref_del(dev, &ramfc);
333 nouveau_gpuobj_ref_del(dev, &chan->cache);
331} 334}
332 335
333int 336int
@@ -384,8 +387,8 @@ nv50_fifo_load_context(struct nouveau_channel *chan)
384 nv_wr32(dev, NV40_PFIFO_CACHE1_DATA(ptr), 387 nv_wr32(dev, NV40_PFIFO_CACHE1_DATA(ptr),
385 nv_ro32(dev, cache, (ptr * 2) + 1)); 388 nv_ro32(dev, cache, (ptr * 2) + 1));
386 } 389 }
387 nv_wr32(dev, 0x3210, cnt << 2); 390 nv_wr32(dev, NV03_PFIFO_CACHE1_PUT, cnt << 2);
388 nv_wr32(dev, 0x3270, 0); 391 nv_wr32(dev, NV03_PFIFO_CACHE1_GET, 0);
389 392
390 /* guessing that all the 0x34xx regs aren't on NV50 */ 393 /* guessing that all the 0x34xx regs aren't on NV50 */
391 if (!IS_G80) { 394 if (!IS_G80) {
@@ -398,8 +401,6 @@ nv50_fifo_load_context(struct nouveau_channel *chan)
398 401
399 dev_priv->engine.instmem.finish_access(dev); 402 dev_priv->engine.instmem.finish_access(dev);
400 403
401 nv_wr32(dev, NV03_PFIFO_CACHE1_GET, 0);
402 nv_wr32(dev, NV03_PFIFO_CACHE1_PUT, 0);
403 nv_wr32(dev, NV03_PFIFO_CACHE1_PUSH1, chan->id | (1<<16)); 404 nv_wr32(dev, NV03_PFIFO_CACHE1_PUSH1, chan->id | (1<<16));
404 return 0; 405 return 0;
405} 406}
diff --git a/drivers/gpu/drm/nouveau/nv50_graph.c b/drivers/gpu/drm/nouveau/nv50_graph.c
index ca79f32be44c..6d504801b514 100644
--- a/drivers/gpu/drm/nouveau/nv50_graph.c
+++ b/drivers/gpu/drm/nouveau/nv50_graph.c
@@ -84,7 +84,7 @@ nv50_graph_init_regs__nv(struct drm_device *dev)
84 nv_wr32(dev, 0x400804, 0xc0000000); 84 nv_wr32(dev, 0x400804, 0xc0000000);
85 nv_wr32(dev, 0x406800, 0xc0000000); 85 nv_wr32(dev, 0x406800, 0xc0000000);
86 nv_wr32(dev, 0x400c04, 0xc0000000); 86 nv_wr32(dev, 0x400c04, 0xc0000000);
87 nv_wr32(dev, 0x401804, 0xc0000000); 87 nv_wr32(dev, 0x401800, 0xc0000000);
88 nv_wr32(dev, 0x405018, 0xc0000000); 88 nv_wr32(dev, 0x405018, 0xc0000000);
89 nv_wr32(dev, 0x402000, 0xc0000000); 89 nv_wr32(dev, 0x402000, 0xc0000000);
90 90
@@ -165,6 +165,12 @@ nv50_graph_channel(struct drm_device *dev)
165 uint32_t inst; 165 uint32_t inst;
166 int i; 166 int i;
167 167
168 /* Be sure we're not in the middle of a context switch or bad things
169 * will happen, such as unloading the wrong pgraph context.
170 */
171 if (!nv_wait(0x400300, 0x00000001, 0x00000000))
172 NV_ERROR(dev, "Ctxprog is still running\n");
173
168 inst = nv_rd32(dev, NV50_PGRAPH_CTXCTL_CUR); 174 inst = nv_rd32(dev, NV50_PGRAPH_CTXCTL_CUR);
169 if (!(inst & NV50_PGRAPH_CTXCTL_CUR_LOADED)) 175 if (!(inst & NV50_PGRAPH_CTXCTL_CUR_LOADED))
170 return NULL; 176 return NULL;
@@ -275,19 +281,18 @@ nv50_graph_load_context(struct nouveau_channel *chan)
275int 281int
276nv50_graph_unload_context(struct drm_device *dev) 282nv50_graph_unload_context(struct drm_device *dev)
277{ 283{
278 uint32_t inst, fifo = nv_rd32(dev, 0x400500); 284 uint32_t inst;
279 285
280 inst = nv_rd32(dev, NV50_PGRAPH_CTXCTL_CUR); 286 inst = nv_rd32(dev, NV50_PGRAPH_CTXCTL_CUR);
281 if (!(inst & NV50_PGRAPH_CTXCTL_CUR_LOADED)) 287 if (!(inst & NV50_PGRAPH_CTXCTL_CUR_LOADED))
282 return 0; 288 return 0;
283 inst &= NV50_PGRAPH_CTXCTL_CUR_INSTANCE; 289 inst &= NV50_PGRAPH_CTXCTL_CUR_INSTANCE;
284 290
285 nv_wr32(dev, 0x400500, fifo & ~1); 291 nouveau_wait_for_idle(dev);
286 nv_wr32(dev, 0x400784, inst); 292 nv_wr32(dev, 0x400784, inst);
287 nv_wr32(dev, 0x400824, nv_rd32(dev, 0x400824) | 0x20); 293 nv_wr32(dev, 0x400824, nv_rd32(dev, 0x400824) | 0x20);
288 nv_wr32(dev, 0x400304, nv_rd32(dev, 0x400304) | 0x01); 294 nv_wr32(dev, 0x400304, nv_rd32(dev, 0x400304) | 0x01);
289 nouveau_wait_for_idle(dev); 295 nouveau_wait_for_idle(dev);
290 nv_wr32(dev, 0x400500, fifo);
291 296
292 nv_wr32(dev, NV50_PGRAPH_CTXCTL_CUR, inst); 297 nv_wr32(dev, NV50_PGRAPH_CTXCTL_CUR, inst);
293 return 0; 298 return 0;
diff --git a/drivers/gpu/drm/nouveau/nv50_instmem.c b/drivers/gpu/drm/nouveau/nv50_instmem.c
index 94400f777e7f..f0dc4e36ef05 100644
--- a/drivers/gpu/drm/nouveau/nv50_instmem.c
+++ b/drivers/gpu/drm/nouveau/nv50_instmem.c
@@ -76,6 +76,11 @@ nv50_instmem_init(struct drm_device *dev)
76 for (i = 0x1700; i <= 0x1710; i += 4) 76 for (i = 0x1700; i <= 0x1710; i += 4)
77 priv->save1700[(i-0x1700)/4] = nv_rd32(dev, i); 77 priv->save1700[(i-0x1700)/4] = nv_rd32(dev, i);
78 78
79 if (dev_priv->chipset == 0xaa || dev_priv->chipset == 0xac)
80 dev_priv->vram_sys_base = nv_rd32(dev, 0x100e10) << 12;
81 else
82 dev_priv->vram_sys_base = 0;
83
79 /* Reserve the last MiB of VRAM, we should probably try to avoid 84 /* Reserve the last MiB of VRAM, we should probably try to avoid
80 * setting up the below tables over the top of the VBIOS image at 85 * setting up the below tables over the top of the VBIOS image at
81 * some point. 86 * some point.
@@ -172,16 +177,28 @@ nv50_instmem_init(struct drm_device *dev)
172 * We map the entire fake channel into the start of the PRAMIN BAR 177 * We map the entire fake channel into the start of the PRAMIN BAR
173 */ 178 */
174 ret = nouveau_gpuobj_new_ref(dev, chan, NULL, 0, pt_size, 0x1000, 179 ret = nouveau_gpuobj_new_ref(dev, chan, NULL, 0, pt_size, 0x1000,
175 0, &priv->pramin_pt); 180 0, &priv->pramin_pt);
176 if (ret) 181 if (ret)
177 return ret; 182 return ret;
178 183
179 for (i = 0, v = c_offset; i < pt_size; i += 8, v += 0x1000) { 184 v = c_offset | 1;
180 if (v < (c_offset + c_size)) 185 if (dev_priv->vram_sys_base) {
181 BAR0_WI32(priv->pramin_pt->gpuobj, i + 0, v | 1); 186 v += dev_priv->vram_sys_base;
182 else 187 v |= 0x30;
183 BAR0_WI32(priv->pramin_pt->gpuobj, i + 0, 0x00000009); 188 }
189
190 i = 0;
191 while (v < dev_priv->vram_sys_base + c_offset + c_size) {
192 BAR0_WI32(priv->pramin_pt->gpuobj, i + 0, v);
193 BAR0_WI32(priv->pramin_pt->gpuobj, i + 4, 0x00000000);
194 v += 0x1000;
195 i += 8;
196 }
197
198 while (i < pt_size) {
199 BAR0_WI32(priv->pramin_pt->gpuobj, i + 0, 0x00000000);
184 BAR0_WI32(priv->pramin_pt->gpuobj, i + 4, 0x00000000); 200 BAR0_WI32(priv->pramin_pt->gpuobj, i + 4, 0x00000000);
201 i += 8;
185 } 202 }
186 203
187 BAR0_WI32(chan->vm_pd, 0x00, priv->pramin_pt->instance | 0x63); 204 BAR0_WI32(chan->vm_pd, 0x00, priv->pramin_pt->instance | 0x63);
@@ -416,7 +433,9 @@ nv50_instmem_bind(struct drm_device *dev, struct nouveau_gpuobj *gpuobj)
416{ 433{
417 struct drm_nouveau_private *dev_priv = dev->dev_private; 434 struct drm_nouveau_private *dev_priv = dev->dev_private;
418 struct nv50_instmem_priv *priv = dev_priv->engine.instmem.priv; 435 struct nv50_instmem_priv *priv = dev_priv->engine.instmem.priv;
419 uint32_t pte, pte_end, vram; 436 struct nouveau_gpuobj *pramin_pt = priv->pramin_pt->gpuobj;
437 uint32_t pte, pte_end;
438 uint64_t vram;
420 439
421 if (!gpuobj->im_backing || !gpuobj->im_pramin || gpuobj->im_bound) 440 if (!gpuobj->im_backing || !gpuobj->im_pramin || gpuobj->im_bound)
422 return -EINVAL; 441 return -EINVAL;
@@ -424,20 +443,24 @@ nv50_instmem_bind(struct drm_device *dev, struct nouveau_gpuobj *gpuobj)
424 NV_DEBUG(dev, "st=0x%0llx sz=0x%0llx\n", 443 NV_DEBUG(dev, "st=0x%0llx sz=0x%0llx\n",
425 gpuobj->im_pramin->start, gpuobj->im_pramin->size); 444 gpuobj->im_pramin->start, gpuobj->im_pramin->size);
426 445
427 pte = (gpuobj->im_pramin->start >> 12) << 3; 446 pte = (gpuobj->im_pramin->start >> 12) << 1;
428 pte_end = ((gpuobj->im_pramin->size >> 12) << 3) + pte; 447 pte_end = ((gpuobj->im_pramin->size >> 12) << 1) + pte;
429 vram = gpuobj->im_backing_start; 448 vram = gpuobj->im_backing_start;
430 449
431 NV_DEBUG(dev, "pramin=0x%llx, pte=%d, pte_end=%d\n", 450 NV_DEBUG(dev, "pramin=0x%llx, pte=%d, pte_end=%d\n",
432 gpuobj->im_pramin->start, pte, pte_end); 451 gpuobj->im_pramin->start, pte, pte_end);
433 NV_DEBUG(dev, "first vram page: 0x%08x\n", gpuobj->im_backing_start); 452 NV_DEBUG(dev, "first vram page: 0x%08x\n", gpuobj->im_backing_start);
434 453
454 vram |= 1;
455 if (dev_priv->vram_sys_base) {
456 vram += dev_priv->vram_sys_base;
457 vram |= 0x30;
458 }
459
435 dev_priv->engine.instmem.prepare_access(dev, true); 460 dev_priv->engine.instmem.prepare_access(dev, true);
436 while (pte < pte_end) { 461 while (pte < pte_end) {
437 nv_wo32(dev, priv->pramin_pt->gpuobj, (pte + 0)/4, vram | 1); 462 nv_wo32(dev, pramin_pt, pte++, lower_32_bits(vram));
438 nv_wo32(dev, priv->pramin_pt->gpuobj, (pte + 4)/4, 0x00000000); 463 nv_wo32(dev, pramin_pt, pte++, upper_32_bits(vram));
439
440 pte += 8;
441 vram += NV50_INSTMEM_PAGE_SIZE; 464 vram += NV50_INSTMEM_PAGE_SIZE;
442 } 465 }
443 dev_priv->engine.instmem.finish_access(dev); 466 dev_priv->engine.instmem.finish_access(dev);
@@ -470,14 +493,13 @@ nv50_instmem_unbind(struct drm_device *dev, struct nouveau_gpuobj *gpuobj)
470 if (gpuobj->im_bound == 0) 493 if (gpuobj->im_bound == 0)
471 return -EINVAL; 494 return -EINVAL;
472 495
473 pte = (gpuobj->im_pramin->start >> 12) << 3; 496 pte = (gpuobj->im_pramin->start >> 12) << 1;
474 pte_end = ((gpuobj->im_pramin->size >> 12) << 3) + pte; 497 pte_end = ((gpuobj->im_pramin->size >> 12) << 1) + pte;
475 498
476 dev_priv->engine.instmem.prepare_access(dev, true); 499 dev_priv->engine.instmem.prepare_access(dev, true);
477 while (pte < pte_end) { 500 while (pte < pte_end) {
478 nv_wo32(dev, priv->pramin_pt->gpuobj, (pte + 0)/4, 0x00000009); 501 nv_wo32(dev, priv->pramin_pt->gpuobj, pte++, 0x00000000);
479 nv_wo32(dev, priv->pramin_pt->gpuobj, (pte + 4)/4, 0x00000000); 502 nv_wo32(dev, priv->pramin_pt->gpuobj, pte++, 0x00000000);
480 pte += 8;
481 } 503 }
482 dev_priv->engine.instmem.finish_access(dev); 504 dev_priv->engine.instmem.finish_access(dev);
483 505
diff --git a/drivers/gpu/drm/nouveau/nv50_sor.c b/drivers/gpu/drm/nouveau/nv50_sor.c
index e395c16d30f5..c2fff543b06f 100644
--- a/drivers/gpu/drm/nouveau/nv50_sor.c
+++ b/drivers/gpu/drm/nouveau/nv50_sor.c
@@ -90,11 +90,25 @@ nv50_sor_dpms(struct drm_encoder *encoder, int mode)
90{ 90{
91 struct drm_device *dev = encoder->dev; 91 struct drm_device *dev = encoder->dev;
92 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder); 92 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
93 struct drm_encoder *enc;
93 uint32_t val; 94 uint32_t val;
94 int or = nv_encoder->or; 95 int or = nv_encoder->or;
95 96
96 NV_DEBUG_KMS(dev, "or %d mode %d\n", or, mode); 97 NV_DEBUG_KMS(dev, "or %d mode %d\n", or, mode);
97 98
99 nv_encoder->last_dpms = mode;
100 list_for_each_entry(enc, &dev->mode_config.encoder_list, head) {
101 struct nouveau_encoder *nvenc = nouveau_encoder(enc);
102
103 if (nvenc == nv_encoder ||
104 nvenc->disconnect != nv50_sor_disconnect ||
105 nvenc->dcb->or != nv_encoder->dcb->or)
106 continue;
107
108 if (nvenc->last_dpms == DRM_MODE_DPMS_ON)
109 return;
110 }
111
98 /* wait for it to be done */ 112 /* wait for it to be done */
99 if (!nv_wait(NV50_PDISPLAY_SOR_DPMS_CTRL(or), 113 if (!nv_wait(NV50_PDISPLAY_SOR_DPMS_CTRL(or),
100 NV50_PDISPLAY_SOR_DPMS_CTRL_PENDING, 0)) { 114 NV50_PDISPLAY_SOR_DPMS_CTRL_PENDING, 0)) {
diff --git a/drivers/gpu/drm/radeon/Kconfig b/drivers/gpu/drm/radeon/Kconfig
index 5982321be4d5..1c02d23f6fcc 100644
--- a/drivers/gpu/drm/radeon/Kconfig
+++ b/drivers/gpu/drm/radeon/Kconfig
@@ -1,10 +1,14 @@
1config DRM_RADEON_KMS 1config DRM_RADEON_KMS
2 bool "Enable modesetting on radeon by default" 2 bool "Enable modesetting on radeon by default - NEW DRIVER"
3 depends on DRM_RADEON 3 depends on DRM_RADEON
4 help 4 help
5 Choose this option if you want kernel modesetting enabled by default, 5 Choose this option if you want kernel modesetting enabled by default.
6 and you have a new enough userspace to support this. Running old 6
7 userspaces with this enabled will cause pain. 7 This is a completely new driver. It's only part of the existing drm
8 for compatibility reasons. It requires an entirely different graphics
9 stack above it and works very differently from the old drm stack.
10 i.e. don't enable this unless you know what you are doing it may
11 cause issues or bugs compared to the previous userspace driver stack.
8 12
9 When kernel modesetting is enabled the IOCTL of radeon/drm 13 When kernel modesetting is enabled the IOCTL of radeon/drm
10 driver are considered as invalid and an error message is printed 14 driver are considered as invalid and an error message is printed
diff --git a/drivers/gpu/drm/radeon/Makefile b/drivers/gpu/drm/radeon/Makefile
index b5f5fe75e6af..1cc7b937b1ea 100644
--- a/drivers/gpu/drm/radeon/Makefile
+++ b/drivers/gpu/drm/radeon/Makefile
@@ -24,6 +24,9 @@ $(obj)/rv515_reg_safe.h: $(src)/reg_srcs/rv515 $(obj)/mkregtable
24$(obj)/r300_reg_safe.h: $(src)/reg_srcs/r300 $(obj)/mkregtable 24$(obj)/r300_reg_safe.h: $(src)/reg_srcs/r300 $(obj)/mkregtable
25 $(call if_changed,mkregtable) 25 $(call if_changed,mkregtable)
26 26
27$(obj)/r420_reg_safe.h: $(src)/reg_srcs/r420 $(obj)/mkregtable
28 $(call if_changed,mkregtable)
29
27$(obj)/rs600_reg_safe.h: $(src)/reg_srcs/rs600 $(obj)/mkregtable 30$(obj)/rs600_reg_safe.h: $(src)/reg_srcs/rs600 $(obj)/mkregtable
28 $(call if_changed,mkregtable) 31 $(call if_changed,mkregtable)
29 32
@@ -35,6 +38,8 @@ $(obj)/rv515.o: $(obj)/rv515_reg_safe.h
35 38
36$(obj)/r300.o: $(obj)/r300_reg_safe.h 39$(obj)/r300.o: $(obj)/r300_reg_safe.h
37 40
41$(obj)/r420.o: $(obj)/r420_reg_safe.h
42
38$(obj)/rs600.o: $(obj)/rs600_reg_safe.h 43$(obj)/rs600.o: $(obj)/rs600_reg_safe.h
39 44
40radeon-y := radeon_drv.o radeon_cp.o radeon_state.o radeon_mem.o \ 45radeon-y := radeon_drv.o radeon_cp.o radeon_state.o radeon_mem.o \
diff --git a/drivers/gpu/drm/radeon/ObjectID.h b/drivers/gpu/drm/radeon/ObjectID.h
index 6d0183c61d3b..c714179d1bfa 100644
--- a/drivers/gpu/drm/radeon/ObjectID.h
+++ b/drivers/gpu/drm/radeon/ObjectID.h
@@ -1,5 +1,5 @@
1/* 1/*
2* Copyright 2006-2007 Advanced Micro Devices, Inc. 2* Copyright 2006-2007 Advanced Micro Devices, Inc.
3* 3*
4* Permission is hereby granted, free of charge, to any person obtaining a 4* Permission is hereby granted, free of charge, to any person obtaining a
5* copy of this software and associated documentation files (the "Software"), 5* copy of this software and associated documentation files (the "Software"),
@@ -41,14 +41,14 @@
41/****************************************************/ 41/****************************************************/
42/* Encoder Object ID Definition */ 42/* Encoder Object ID Definition */
43/****************************************************/ 43/****************************************************/
44#define ENCODER_OBJECT_ID_NONE 0x00 44#define ENCODER_OBJECT_ID_NONE 0x00
45 45
46/* Radeon Class Display Hardware */ 46/* Radeon Class Display Hardware */
47#define ENCODER_OBJECT_ID_INTERNAL_LVDS 0x01 47#define ENCODER_OBJECT_ID_INTERNAL_LVDS 0x01
48#define ENCODER_OBJECT_ID_INTERNAL_TMDS1 0x02 48#define ENCODER_OBJECT_ID_INTERNAL_TMDS1 0x02
49#define ENCODER_OBJECT_ID_INTERNAL_TMDS2 0x03 49#define ENCODER_OBJECT_ID_INTERNAL_TMDS2 0x03
50#define ENCODER_OBJECT_ID_INTERNAL_DAC1 0x04 50#define ENCODER_OBJECT_ID_INTERNAL_DAC1 0x04
51#define ENCODER_OBJECT_ID_INTERNAL_DAC2 0x05 /* TV/CV DAC */ 51#define ENCODER_OBJECT_ID_INTERNAL_DAC2 0x05 /* TV/CV DAC */
52#define ENCODER_OBJECT_ID_INTERNAL_SDVOA 0x06 52#define ENCODER_OBJECT_ID_INTERNAL_SDVOA 0x06
53#define ENCODER_OBJECT_ID_INTERNAL_SDVOB 0x07 53#define ENCODER_OBJECT_ID_INTERNAL_SDVOB 0x07
54 54
@@ -56,11 +56,11 @@
56#define ENCODER_OBJECT_ID_SI170B 0x08 56#define ENCODER_OBJECT_ID_SI170B 0x08
57#define ENCODER_OBJECT_ID_CH7303 0x09 57#define ENCODER_OBJECT_ID_CH7303 0x09
58#define ENCODER_OBJECT_ID_CH7301 0x0A 58#define ENCODER_OBJECT_ID_CH7301 0x0A
59#define ENCODER_OBJECT_ID_INTERNAL_DVO1 0x0B /* This belongs to Radeon Class Display Hardware */ 59#define ENCODER_OBJECT_ID_INTERNAL_DVO1 0x0B /* This belongs to Radeon Class Display Hardware */
60#define ENCODER_OBJECT_ID_EXTERNAL_SDVOA 0x0C 60#define ENCODER_OBJECT_ID_EXTERNAL_SDVOA 0x0C
61#define ENCODER_OBJECT_ID_EXTERNAL_SDVOB 0x0D 61#define ENCODER_OBJECT_ID_EXTERNAL_SDVOB 0x0D
62#define ENCODER_OBJECT_ID_TITFP513 0x0E 62#define ENCODER_OBJECT_ID_TITFP513 0x0E
63#define ENCODER_OBJECT_ID_INTERNAL_LVTM1 0x0F /* not used for Radeon */ 63#define ENCODER_OBJECT_ID_INTERNAL_LVTM1 0x0F /* not used for Radeon */
64#define ENCODER_OBJECT_ID_VT1623 0x10 64#define ENCODER_OBJECT_ID_VT1623 0x10
65#define ENCODER_OBJECT_ID_HDMI_SI1930 0x11 65#define ENCODER_OBJECT_ID_HDMI_SI1930 0x11
66#define ENCODER_OBJECT_ID_HDMI_INTERNAL 0x12 66#define ENCODER_OBJECT_ID_HDMI_INTERNAL 0x12
@@ -68,9 +68,9 @@
68#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1 0x13 68#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1 0x13
69#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1 0x14 69#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1 0x14
70#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1 0x15 70#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1 0x15
71#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2 0x16 /* Shared with CV/TV and CRT */ 71#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2 0x16 /* Shared with CV/TV and CRT */
72#define ENCODER_OBJECT_ID_SI178 0X17 /* External TMDS (dual link, no HDCP.) */ 72#define ENCODER_OBJECT_ID_SI178 0X17 /* External TMDS (dual link, no HDCP.) */
73#define ENCODER_OBJECT_ID_MVPU_FPGA 0x18 /* MVPU FPGA chip */ 73#define ENCODER_OBJECT_ID_MVPU_FPGA 0x18 /* MVPU FPGA chip */
74#define ENCODER_OBJECT_ID_INTERNAL_DDI 0x19 74#define ENCODER_OBJECT_ID_INTERNAL_DDI 0x19
75#define ENCODER_OBJECT_ID_VT1625 0x1A 75#define ENCODER_OBJECT_ID_VT1625 0x1A
76#define ENCODER_OBJECT_ID_HDMI_SI1932 0x1B 76#define ENCODER_OBJECT_ID_HDMI_SI1932 0x1B
@@ -86,7 +86,7 @@
86/****************************************************/ 86/****************************************************/
87/* Connector Object ID Definition */ 87/* Connector Object ID Definition */
88/****************************************************/ 88/****************************************************/
89#define CONNECTOR_OBJECT_ID_NONE 0x00 89#define CONNECTOR_OBJECT_ID_NONE 0x00
90#define CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I 0x01 90#define CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I 0x01
91#define CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I 0x02 91#define CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I 0x02
92#define CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D 0x03 92#define CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D 0x03
@@ -96,7 +96,7 @@
96#define CONNECTOR_OBJECT_ID_SVIDEO 0x07 96#define CONNECTOR_OBJECT_ID_SVIDEO 0x07
97#define CONNECTOR_OBJECT_ID_YPbPr 0x08 97#define CONNECTOR_OBJECT_ID_YPbPr 0x08
98#define CONNECTOR_OBJECT_ID_D_CONNECTOR 0x09 98#define CONNECTOR_OBJECT_ID_D_CONNECTOR 0x09
99#define CONNECTOR_OBJECT_ID_9PIN_DIN 0x0A /* Supports both CV & TV */ 99#define CONNECTOR_OBJECT_ID_9PIN_DIN 0x0A /* Supports both CV & TV */
100#define CONNECTOR_OBJECT_ID_SCART 0x0B 100#define CONNECTOR_OBJECT_ID_SCART 0x0B
101#define CONNECTOR_OBJECT_ID_HDMI_TYPE_A 0x0C 101#define CONNECTOR_OBJECT_ID_HDMI_TYPE_A 0x0C
102#define CONNECTOR_OBJECT_ID_HDMI_TYPE_B 0x0D 102#define CONNECTOR_OBJECT_ID_HDMI_TYPE_B 0x0D
@@ -106,6 +106,8 @@
106#define CONNECTOR_OBJECT_ID_CROSSFIRE 0x11 106#define CONNECTOR_OBJECT_ID_CROSSFIRE 0x11
107#define CONNECTOR_OBJECT_ID_HARDCODE_DVI 0x12 107#define CONNECTOR_OBJECT_ID_HARDCODE_DVI 0x12
108#define CONNECTOR_OBJECT_ID_DISPLAYPORT 0x13 108#define CONNECTOR_OBJECT_ID_DISPLAYPORT 0x13
109#define CONNECTOR_OBJECT_ID_eDP 0x14
110#define CONNECTOR_OBJECT_ID_MXM 0x15
109 111
110/* deleted */ 112/* deleted */
111 113
@@ -116,6 +118,14 @@
116#define ROUTER_OBJECT_ID_I2C_EXTENDER_CNTL 0x01 118#define ROUTER_OBJECT_ID_I2C_EXTENDER_CNTL 0x01
117 119
118/****************************************************/ 120/****************************************************/
121/* Generic Object ID Definition */
122/****************************************************/
123#define GENERIC_OBJECT_ID_NONE 0x00
124#define GENERIC_OBJECT_ID_GLSYNC 0x01
125#define GENERIC_OBJECT_ID_PX2_NON_DRIVABLE 0x02
126#define GENERIC_OBJECT_ID_MXM_OPM 0x03
127
128/****************************************************/
119/* Graphics Object ENUM ID Definition */ 129/* Graphics Object ENUM ID Definition */
120/****************************************************/ 130/****************************************************/
121#define GRAPH_OBJECT_ENUM_ID1 0x01 131#define GRAPH_OBJECT_ENUM_ID1 0x01
@@ -124,6 +134,7 @@
124#define GRAPH_OBJECT_ENUM_ID4 0x04 134#define GRAPH_OBJECT_ENUM_ID4 0x04
125#define GRAPH_OBJECT_ENUM_ID5 0x05 135#define GRAPH_OBJECT_ENUM_ID5 0x05
126#define GRAPH_OBJECT_ENUM_ID6 0x06 136#define GRAPH_OBJECT_ENUM_ID6 0x06
137#define GRAPH_OBJECT_ENUM_ID7 0x07
127 138
128/****************************************************/ 139/****************************************************/
129/* Graphics Object ID Bit definition */ 140/* Graphics Object ID Bit definition */
@@ -133,35 +144,35 @@
133#define RESERVED1_ID_MASK 0x0800 144#define RESERVED1_ID_MASK 0x0800
134#define OBJECT_TYPE_MASK 0x7000 145#define OBJECT_TYPE_MASK 0x7000
135#define RESERVED2_ID_MASK 0x8000 146#define RESERVED2_ID_MASK 0x8000
136 147
137#define OBJECT_ID_SHIFT 0x00 148#define OBJECT_ID_SHIFT 0x00
138#define ENUM_ID_SHIFT 0x08 149#define ENUM_ID_SHIFT 0x08
139#define OBJECT_TYPE_SHIFT 0x0C 150#define OBJECT_TYPE_SHIFT 0x0C
140 151
152
141/****************************************************/ 153/****************************************************/
142/* Graphics Object family definition */ 154/* Graphics Object family definition */
143/****************************************************/ 155/****************************************************/
144#define CONSTRUCTOBJECTFAMILYID(GRAPHICS_OBJECT_TYPE, GRAPHICS_OBJECT_ID) \ 156#define CONSTRUCTOBJECTFAMILYID(GRAPHICS_OBJECT_TYPE, GRAPHICS_OBJECT_ID) (GRAPHICS_OBJECT_TYPE << OBJECT_TYPE_SHIFT | \
145 (GRAPHICS_OBJECT_TYPE << OBJECT_TYPE_SHIFT | \ 157 GRAPHICS_OBJECT_ID << OBJECT_ID_SHIFT)
146 GRAPHICS_OBJECT_ID << OBJECT_ID_SHIFT)
147/****************************************************/ 158/****************************************************/
148/* GPU Object ID definition - Shared with BIOS */ 159/* GPU Object ID definition - Shared with BIOS */
149/****************************************************/ 160/****************************************************/
150#define GPU_ENUM_ID1 (GRAPH_OBJECT_TYPE_GPU << OBJECT_TYPE_SHIFT |\ 161#define GPU_ENUM_ID1 ( GRAPH_OBJECT_TYPE_GPU << OBJECT_TYPE_SHIFT |\
151 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT) 162 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT)
152 163
153/****************************************************/ 164/****************************************************/
154/* Encoder Object ID definition - Shared with BIOS */ 165/* Encoder Object ID definition - Shared with BIOS */
155/****************************************************/ 166/****************************************************/
156/* 167/*
157#define ENCODER_INTERNAL_LVDS_ENUM_ID1 0x2101 168#define ENCODER_INTERNAL_LVDS_ENUM_ID1 0x2101
158#define ENCODER_INTERNAL_TMDS1_ENUM_ID1 0x2102 169#define ENCODER_INTERNAL_TMDS1_ENUM_ID1 0x2102
159#define ENCODER_INTERNAL_TMDS2_ENUM_ID1 0x2103 170#define ENCODER_INTERNAL_TMDS2_ENUM_ID1 0x2103
160#define ENCODER_INTERNAL_DAC1_ENUM_ID1 0x2104 171#define ENCODER_INTERNAL_DAC1_ENUM_ID1 0x2104
161#define ENCODER_INTERNAL_DAC2_ENUM_ID1 0x2105 172#define ENCODER_INTERNAL_DAC2_ENUM_ID1 0x2105
162#define ENCODER_INTERNAL_SDVOA_ENUM_ID1 0x2106 173#define ENCODER_INTERNAL_SDVOA_ENUM_ID1 0x2106
163#define ENCODER_INTERNAL_SDVOB_ENUM_ID1 0x2107 174#define ENCODER_INTERNAL_SDVOB_ENUM_ID1 0x2107
164#define ENCODER_SIL170B_ENUM_ID1 0x2108 175#define ENCODER_SIL170B_ENUM_ID1 0x2108
165#define ENCODER_CH7303_ENUM_ID1 0x2109 176#define ENCODER_CH7303_ENUM_ID1 0x2109
166#define ENCODER_CH7301_ENUM_ID1 0x210A 177#define ENCODER_CH7301_ENUM_ID1 0x210A
167#define ENCODER_INTERNAL_DVO1_ENUM_ID1 0x210B 178#define ENCODER_INTERNAL_DVO1_ENUM_ID1 0x210B
@@ -175,8 +186,8 @@
175#define ENCODER_INTERNAL_KLDSCP_TMDS1_ENUM_ID1 0x2113 186#define ENCODER_INTERNAL_KLDSCP_TMDS1_ENUM_ID1 0x2113
176#define ENCODER_INTERNAL_KLDSCP_DVO1_ENUM_ID1 0x2114 187#define ENCODER_INTERNAL_KLDSCP_DVO1_ENUM_ID1 0x2114
177#define ENCODER_INTERNAL_KLDSCP_DAC1_ENUM_ID1 0x2115 188#define ENCODER_INTERNAL_KLDSCP_DAC1_ENUM_ID1 0x2115
178#define ENCODER_INTERNAL_KLDSCP_DAC2_ENUM_ID1 0x2116 189#define ENCODER_INTERNAL_KLDSCP_DAC2_ENUM_ID1 0x2116
179#define ENCODER_SI178_ENUM_ID1 0x2117 190#define ENCODER_SI178_ENUM_ID1 0x2117
180#define ENCODER_MVPU_FPGA_ENUM_ID1 0x2118 191#define ENCODER_MVPU_FPGA_ENUM_ID1 0x2118
181#define ENCODER_INTERNAL_DDI_ENUM_ID1 0x2119 192#define ENCODER_INTERNAL_DDI_ENUM_ID1 0x2119
182#define ENCODER_VT1625_ENUM_ID1 0x211A 193#define ENCODER_VT1625_ENUM_ID1 0x211A
@@ -185,205 +196,169 @@
185#define ENCODER_DP_DP501_ENUM_ID1 0x211D 196#define ENCODER_DP_DP501_ENUM_ID1 0x211D
186#define ENCODER_INTERNAL_UNIPHY_ENUM_ID1 0x211E 197#define ENCODER_INTERNAL_UNIPHY_ENUM_ID1 0x211E
187*/ 198*/
188#define ENCODER_INTERNAL_LVDS_ENUM_ID1 \ 199#define ENCODER_INTERNAL_LVDS_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
189 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 200 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
190 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 201 ENCODER_OBJECT_ID_INTERNAL_LVDS << OBJECT_ID_SHIFT)
191 ENCODER_OBJECT_ID_INTERNAL_LVDS << OBJECT_ID_SHIFT) 202
192 203#define ENCODER_INTERNAL_TMDS1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
193#define ENCODER_INTERNAL_TMDS1_ENUM_ID1 \ 204 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
194 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 205 ENCODER_OBJECT_ID_INTERNAL_TMDS1 << OBJECT_ID_SHIFT)
195 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 206
196 ENCODER_OBJECT_ID_INTERNAL_TMDS1 << OBJECT_ID_SHIFT) 207#define ENCODER_INTERNAL_TMDS2_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
197 208 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
198#define ENCODER_INTERNAL_TMDS2_ENUM_ID1 \ 209 ENCODER_OBJECT_ID_INTERNAL_TMDS2 << OBJECT_ID_SHIFT)
199 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 210
200 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 211#define ENCODER_INTERNAL_DAC1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
201 ENCODER_OBJECT_ID_INTERNAL_TMDS2 << OBJECT_ID_SHIFT) 212 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
202 213 ENCODER_OBJECT_ID_INTERNAL_DAC1 << OBJECT_ID_SHIFT)
203#define ENCODER_INTERNAL_DAC1_ENUM_ID1 \ 214
204 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 215#define ENCODER_INTERNAL_DAC2_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
205 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 216 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
206 ENCODER_OBJECT_ID_INTERNAL_DAC1 << OBJECT_ID_SHIFT) 217 ENCODER_OBJECT_ID_INTERNAL_DAC2 << OBJECT_ID_SHIFT)
207 218
208#define ENCODER_INTERNAL_DAC2_ENUM_ID1 \ 219#define ENCODER_INTERNAL_SDVOA_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
209 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 220 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
210 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 221 ENCODER_OBJECT_ID_INTERNAL_SDVOA << OBJECT_ID_SHIFT)
211 ENCODER_OBJECT_ID_INTERNAL_DAC2 << OBJECT_ID_SHIFT) 222
212 223#define ENCODER_INTERNAL_SDVOA_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
213#define ENCODER_INTERNAL_SDVOA_ENUM_ID1 \ 224 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
214 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 225 ENCODER_OBJECT_ID_INTERNAL_SDVOA << OBJECT_ID_SHIFT)
215 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 226
216 ENCODER_OBJECT_ID_INTERNAL_SDVOA << OBJECT_ID_SHIFT) 227#define ENCODER_INTERNAL_SDVOB_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
217 228 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
218#define ENCODER_INTERNAL_SDVOA_ENUM_ID2 \ 229 ENCODER_OBJECT_ID_INTERNAL_SDVOB << OBJECT_ID_SHIFT)
219 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 230
220 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\ 231#define ENCODER_SIL170B_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
221 ENCODER_OBJECT_ID_INTERNAL_SDVOA << OBJECT_ID_SHIFT) 232 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
222 233 ENCODER_OBJECT_ID_SI170B << OBJECT_ID_SHIFT)
223#define ENCODER_INTERNAL_SDVOB_ENUM_ID1 \ 234
224 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 235#define ENCODER_CH7303_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
225 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 236 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
226 ENCODER_OBJECT_ID_INTERNAL_SDVOB << OBJECT_ID_SHIFT) 237 ENCODER_OBJECT_ID_CH7303 << OBJECT_ID_SHIFT)
227 238
228#define ENCODER_SIL170B_ENUM_ID1 \ 239#define ENCODER_CH7301_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
229 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 240 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
230 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 241 ENCODER_OBJECT_ID_CH7301 << OBJECT_ID_SHIFT)
231 ENCODER_OBJECT_ID_SI170B << OBJECT_ID_SHIFT) 242
232 243#define ENCODER_INTERNAL_DVO1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
233#define ENCODER_CH7303_ENUM_ID1 \ 244 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
234 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 245 ENCODER_OBJECT_ID_INTERNAL_DVO1 << OBJECT_ID_SHIFT)
235 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 246
236 ENCODER_OBJECT_ID_CH7303 << OBJECT_ID_SHIFT) 247#define ENCODER_EXTERNAL_SDVOA_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
237 248 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
238#define ENCODER_CH7301_ENUM_ID1 \ 249 ENCODER_OBJECT_ID_EXTERNAL_SDVOA << OBJECT_ID_SHIFT)
239 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 250
240 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 251#define ENCODER_EXTERNAL_SDVOA_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
241 ENCODER_OBJECT_ID_CH7301 << OBJECT_ID_SHIFT) 252 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
242 253 ENCODER_OBJECT_ID_EXTERNAL_SDVOA << OBJECT_ID_SHIFT)
243#define ENCODER_INTERNAL_DVO1_ENUM_ID1 \ 254
244 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 255
245 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 256#define ENCODER_EXTERNAL_SDVOB_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
246 ENCODER_OBJECT_ID_INTERNAL_DVO1 << OBJECT_ID_SHIFT) 257 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
247 258 ENCODER_OBJECT_ID_EXTERNAL_SDVOB << OBJECT_ID_SHIFT)
248#define ENCODER_EXTERNAL_SDVOA_ENUM_ID1 \ 259
249 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 260
250 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 261#define ENCODER_TITFP513_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
251 ENCODER_OBJECT_ID_EXTERNAL_SDVOA << OBJECT_ID_SHIFT) 262 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
252 263 ENCODER_OBJECT_ID_TITFP513 << OBJECT_ID_SHIFT)
253#define ENCODER_EXTERNAL_SDVOA_ENUM_ID2 \ 264
254 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 265#define ENCODER_INTERNAL_LVTM1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
255 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\ 266 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
256 ENCODER_OBJECT_ID_EXTERNAL_SDVOA << OBJECT_ID_SHIFT) 267 ENCODER_OBJECT_ID_INTERNAL_LVTM1 << OBJECT_ID_SHIFT)
257 268
258#define ENCODER_EXTERNAL_SDVOB_ENUM_ID1 \ 269#define ENCODER_VT1623_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
259 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 270 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
260 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 271 ENCODER_OBJECT_ID_VT1623 << OBJECT_ID_SHIFT)
261 ENCODER_OBJECT_ID_EXTERNAL_SDVOB << OBJECT_ID_SHIFT) 272
262 273#define ENCODER_HDMI_SI1930_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
263#define ENCODER_TITFP513_ENUM_ID1 \ 274 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
264 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 275 ENCODER_OBJECT_ID_HDMI_SI1930 << OBJECT_ID_SHIFT)
265 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 276
266 ENCODER_OBJECT_ID_TITFP513 << OBJECT_ID_SHIFT) 277#define ENCODER_HDMI_INTERNAL_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
267 278 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
268#define ENCODER_INTERNAL_LVTM1_ENUM_ID1 \ 279 ENCODER_OBJECT_ID_HDMI_INTERNAL << OBJECT_ID_SHIFT)
269 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 280
270 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 281#define ENCODER_INTERNAL_KLDSCP_TMDS1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
271 ENCODER_OBJECT_ID_INTERNAL_LVTM1 << OBJECT_ID_SHIFT) 282 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
272 283 ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1 << OBJECT_ID_SHIFT)
273#define ENCODER_VT1623_ENUM_ID1 \ 284
274 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 285
275 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 286#define ENCODER_INTERNAL_KLDSCP_TMDS1_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
276 ENCODER_OBJECT_ID_VT1623 << OBJECT_ID_SHIFT) 287 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
277 288 ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1 << OBJECT_ID_SHIFT)
278#define ENCODER_HDMI_SI1930_ENUM_ID1 \ 289
279 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 290
280 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 291#define ENCODER_INTERNAL_KLDSCP_DVO1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
281 ENCODER_OBJECT_ID_HDMI_SI1930 << OBJECT_ID_SHIFT) 292 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
282 293 ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1 << OBJECT_ID_SHIFT)
283#define ENCODER_HDMI_INTERNAL_ENUM_ID1 \ 294
284 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 295#define ENCODER_INTERNAL_KLDSCP_DAC1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
285 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 296 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
286 ENCODER_OBJECT_ID_HDMI_INTERNAL << OBJECT_ID_SHIFT) 297 ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1 << OBJECT_ID_SHIFT)
287 298
288#define ENCODER_INTERNAL_KLDSCP_TMDS1_ENUM_ID1 \ 299#define ENCODER_INTERNAL_KLDSCP_DAC2_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
289 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 300 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
290 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 301 ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2 << OBJECT_ID_SHIFT) // Shared with CV/TV and CRT
291 ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1 << OBJECT_ID_SHIFT) 302
292 303#define ENCODER_SI178_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
293#define ENCODER_INTERNAL_KLDSCP_TMDS1_ENUM_ID2 \ 304 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
294 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 305 ENCODER_OBJECT_ID_SI178 << OBJECT_ID_SHIFT)
295 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\ 306
296 ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1 << OBJECT_ID_SHIFT) 307#define ENCODER_MVPU_FPGA_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
297 308 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
298#define ENCODER_INTERNAL_KLDSCP_DVO1_ENUM_ID1 \ 309 ENCODER_OBJECT_ID_MVPU_FPGA << OBJECT_ID_SHIFT)
299 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 310
300 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 311#define ENCODER_INTERNAL_DDI_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
301 ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1 << OBJECT_ID_SHIFT) 312 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
302 313 ENCODER_OBJECT_ID_INTERNAL_DDI << OBJECT_ID_SHIFT)
303#define ENCODER_INTERNAL_KLDSCP_DAC1_ENUM_ID1 \ 314
304 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 315#define ENCODER_VT1625_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
305 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 316 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
306 ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1 << OBJECT_ID_SHIFT) 317 ENCODER_OBJECT_ID_VT1625 << OBJECT_ID_SHIFT)
307 318
308#define ENCODER_INTERNAL_KLDSCP_DAC2_ENUM_ID1 \ 319#define ENCODER_HDMI_SI1932_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
309 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 320 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
310 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 321 ENCODER_OBJECT_ID_HDMI_SI1932 << OBJECT_ID_SHIFT)
311 ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2 << OBJECT_ID_SHIFT) /* Shared with CV/TV and CRT */ 322
312 323#define ENCODER_DP_DP501_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
313#define ENCODER_SI178_ENUM_ID1 \ 324 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
314 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 325 ENCODER_OBJECT_ID_DP_DP501 << OBJECT_ID_SHIFT)
315 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 326
316 ENCODER_OBJECT_ID_SI178 << OBJECT_ID_SHIFT) 327#define ENCODER_DP_AN9801_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
317 328 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
318#define ENCODER_MVPU_FPGA_ENUM_ID1 \ 329 ENCODER_OBJECT_ID_DP_AN9801 << OBJECT_ID_SHIFT)
319 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 330
320 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 331#define ENCODER_INTERNAL_UNIPHY_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
321 ENCODER_OBJECT_ID_MVPU_FPGA << OBJECT_ID_SHIFT) 332 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
322 333 ENCODER_OBJECT_ID_INTERNAL_UNIPHY << OBJECT_ID_SHIFT)
323#define ENCODER_INTERNAL_DDI_ENUM_ID1 \ 334
324 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 335#define ENCODER_INTERNAL_UNIPHY_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
325 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 336 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
326 ENCODER_OBJECT_ID_INTERNAL_DDI << OBJECT_ID_SHIFT) 337 ENCODER_OBJECT_ID_INTERNAL_UNIPHY << OBJECT_ID_SHIFT)
327 338
328#define ENCODER_VT1625_ENUM_ID1 \ 339#define ENCODER_INTERNAL_KLDSCP_LVTMA_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
329 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 340 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
330 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 341 ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA << OBJECT_ID_SHIFT)
331 ENCODER_OBJECT_ID_VT1625 << OBJECT_ID_SHIFT) 342
332 343#define ENCODER_INTERNAL_UNIPHY1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
333#define ENCODER_HDMI_SI1932_ENUM_ID1 \ 344 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
334 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 345 ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 << OBJECT_ID_SHIFT)
335 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 346
336 ENCODER_OBJECT_ID_HDMI_SI1932 << OBJECT_ID_SHIFT) 347#define ENCODER_INTERNAL_UNIPHY1_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
337 348 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
338#define ENCODER_DP_DP501_ENUM_ID1 \ 349 ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 << OBJECT_ID_SHIFT)
339 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 350
340 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 351#define ENCODER_INTERNAL_UNIPHY2_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
341 ENCODER_OBJECT_ID_DP_DP501 << OBJECT_ID_SHIFT) 352 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
342 353 ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 << OBJECT_ID_SHIFT)
343#define ENCODER_DP_AN9801_ENUM_ID1 \ 354
344 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 355#define ENCODER_INTERNAL_UNIPHY2_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
345 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 356 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
346 ENCODER_OBJECT_ID_DP_AN9801 << OBJECT_ID_SHIFT) 357 ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 << OBJECT_ID_SHIFT)
347 358
348#define ENCODER_INTERNAL_UNIPHY_ENUM_ID1 \ 359#define ENCODER_GENERAL_EXTERNAL_DVO_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
349 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ 360 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
350 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 361 ENCODER_OBJECT_ID_GENERAL_EXTERNAL_DVO << OBJECT_ID_SHIFT)
351 ENCODER_OBJECT_ID_INTERNAL_UNIPHY << OBJECT_ID_SHIFT)
352
353#define ENCODER_INTERNAL_UNIPHY_ENUM_ID2 \
354 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
355 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
356 ENCODER_OBJECT_ID_INTERNAL_UNIPHY << OBJECT_ID_SHIFT)
357
358#define ENCODER_INTERNAL_KLDSCP_LVTMA_ENUM_ID1 \
359 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
360 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
361 ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA << OBJECT_ID_SHIFT)
362
363#define ENCODER_INTERNAL_UNIPHY1_ENUM_ID1 \
364 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
365 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
366 ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 << OBJECT_ID_SHIFT)
367
368#define ENCODER_INTERNAL_UNIPHY1_ENUM_ID2 \
369 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
370 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
371 ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 << OBJECT_ID_SHIFT)
372
373#define ENCODER_INTERNAL_UNIPHY2_ENUM_ID1 \
374 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
375 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
376 ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 << OBJECT_ID_SHIFT)
377
378#define ENCODER_INTERNAL_UNIPHY2_ENUM_ID2 \
379 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
380 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
381 ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 << OBJECT_ID_SHIFT)
382
383#define ENCODER_GENERAL_EXTERNAL_DVO_ENUM_ID1 \
384 (GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
385 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
386 ENCODER_OBJECT_ID_GENERAL_EXTERNAL_DVO << OBJECT_ID_SHIFT)
387 362
388/****************************************************/ 363/****************************************************/
389/* Connector Object ID definition - Shared with BIOS */ 364/* Connector Object ID definition - Shared with BIOS */
@@ -406,167 +381,253 @@
406#define CONNECTOR_7PIN_DIN_ENUM_ID1 0x310F 381#define CONNECTOR_7PIN_DIN_ENUM_ID1 0x310F
407#define CONNECTOR_PCIE_CONNECTOR_ENUM_ID1 0x3110 382#define CONNECTOR_PCIE_CONNECTOR_ENUM_ID1 0x3110
408*/ 383*/
409#define CONNECTOR_LVDS_ENUM_ID1 \ 384#define CONNECTOR_LVDS_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
410 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 385 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
411 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 386 CONNECTOR_OBJECT_ID_LVDS << OBJECT_ID_SHIFT)
412 CONNECTOR_OBJECT_ID_LVDS << OBJECT_ID_SHIFT) 387
413 388#define CONNECTOR_LVDS_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
414#define CONNECTOR_SINGLE_LINK_DVI_I_ENUM_ID1 \ 389 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
415 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 390 CONNECTOR_OBJECT_ID_LVDS << OBJECT_ID_SHIFT)
416 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 391
417 CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I << OBJECT_ID_SHIFT) 392#define CONNECTOR_eDP_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
418 393 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
419#define CONNECTOR_SINGLE_LINK_DVI_I_ENUM_ID2 \ 394 CONNECTOR_OBJECT_ID_eDP << OBJECT_ID_SHIFT)
420 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 395
421 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\ 396#define CONNECTOR_eDP_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
422 CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I << OBJECT_ID_SHIFT) 397 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
423 398 CONNECTOR_OBJECT_ID_eDP << OBJECT_ID_SHIFT)
424#define CONNECTOR_DUAL_LINK_DVI_I_ENUM_ID1 \ 399
425 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 400#define CONNECTOR_SINGLE_LINK_DVI_I_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
426 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 401 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
427 CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I << OBJECT_ID_SHIFT) 402 CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I << OBJECT_ID_SHIFT)
428 403
429#define CONNECTOR_DUAL_LINK_DVI_I_ENUM_ID2 \ 404#define CONNECTOR_SINGLE_LINK_DVI_I_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
430 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 405 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
431 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\ 406 CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I << OBJECT_ID_SHIFT)
432 CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I << OBJECT_ID_SHIFT) 407
433 408#define CONNECTOR_DUAL_LINK_DVI_I_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
434#define CONNECTOR_SINGLE_LINK_DVI_D_ENUM_ID1 \ 409 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
435 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 410 CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I << OBJECT_ID_SHIFT)
436 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 411
437 CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D << OBJECT_ID_SHIFT) 412#define CONNECTOR_DUAL_LINK_DVI_I_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
438 413 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
439#define CONNECTOR_SINGLE_LINK_DVI_D_ENUM_ID2 \ 414 CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I << OBJECT_ID_SHIFT)
440 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 415
441 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\ 416#define CONNECTOR_SINGLE_LINK_DVI_D_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
442 CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D << OBJECT_ID_SHIFT) 417 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
443 418 CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D << OBJECT_ID_SHIFT)
444#define CONNECTOR_DUAL_LINK_DVI_D_ENUM_ID1 \ 419
445 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 420#define CONNECTOR_SINGLE_LINK_DVI_D_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
446 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 421 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
447 CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D << OBJECT_ID_SHIFT) 422 CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D << OBJECT_ID_SHIFT)
448 423
449#define CONNECTOR_VGA_ENUM_ID1 \ 424#define CONNECTOR_DUAL_LINK_DVI_D_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
450 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 425 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
451 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 426 CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D << OBJECT_ID_SHIFT)
452 CONNECTOR_OBJECT_ID_VGA << OBJECT_ID_SHIFT) 427
453 428#define CONNECTOR_DUAL_LINK_DVI_D_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
454#define CONNECTOR_VGA_ENUM_ID2 \ 429 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
455 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 430 CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D << OBJECT_ID_SHIFT)
456 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\ 431
457 CONNECTOR_OBJECT_ID_VGA << OBJECT_ID_SHIFT) 432#define CONNECTOR_DUAL_LINK_DVI_D_ENUM_ID3 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
458 433 GRAPH_OBJECT_ENUM_ID3 << ENUM_ID_SHIFT |\
459#define CONNECTOR_COMPOSITE_ENUM_ID1 \ 434 CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D << OBJECT_ID_SHIFT)
460 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 435
461 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 436#define CONNECTOR_VGA_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
462 CONNECTOR_OBJECT_ID_COMPOSITE << OBJECT_ID_SHIFT) 437 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
463 438 CONNECTOR_OBJECT_ID_VGA << OBJECT_ID_SHIFT)
464#define CONNECTOR_SVIDEO_ENUM_ID1 \ 439
465 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 440#define CONNECTOR_VGA_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
466 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 441 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
467 CONNECTOR_OBJECT_ID_SVIDEO << OBJECT_ID_SHIFT) 442 CONNECTOR_OBJECT_ID_VGA << OBJECT_ID_SHIFT)
468 443
469#define CONNECTOR_YPbPr_ENUM_ID1 \ 444#define CONNECTOR_COMPOSITE_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
470 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 445 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
471 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 446 CONNECTOR_OBJECT_ID_COMPOSITE << OBJECT_ID_SHIFT)
472 CONNECTOR_OBJECT_ID_YPbPr << OBJECT_ID_SHIFT) 447
473 448#define CONNECTOR_COMPOSITE_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
474#define CONNECTOR_D_CONNECTOR_ENUM_ID1 \ 449 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
475 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 450 CONNECTOR_OBJECT_ID_COMPOSITE << OBJECT_ID_SHIFT)
476 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 451
477 CONNECTOR_OBJECT_ID_D_CONNECTOR << OBJECT_ID_SHIFT) 452#define CONNECTOR_SVIDEO_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
478 453 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
479#define CONNECTOR_9PIN_DIN_ENUM_ID1 \ 454 CONNECTOR_OBJECT_ID_SVIDEO << OBJECT_ID_SHIFT)
480 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 455
481 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 456#define CONNECTOR_SVIDEO_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
482 CONNECTOR_OBJECT_ID_9PIN_DIN << OBJECT_ID_SHIFT) 457 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
483 458 CONNECTOR_OBJECT_ID_SVIDEO << OBJECT_ID_SHIFT)
484#define CONNECTOR_SCART_ENUM_ID1 \ 459
485 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 460#define CONNECTOR_YPbPr_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
486 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 461 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
487 CONNECTOR_OBJECT_ID_SCART << OBJECT_ID_SHIFT) 462 CONNECTOR_OBJECT_ID_YPbPr << OBJECT_ID_SHIFT)
488 463
489#define CONNECTOR_HDMI_TYPE_A_ENUM_ID1 \ 464#define CONNECTOR_YPbPr_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
490 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 465 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
491 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 466 CONNECTOR_OBJECT_ID_YPbPr << OBJECT_ID_SHIFT)
492 CONNECTOR_OBJECT_ID_HDMI_TYPE_A << OBJECT_ID_SHIFT) 467
493 468#define CONNECTOR_D_CONNECTOR_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
494#define CONNECTOR_HDMI_TYPE_B_ENUM_ID1 \ 469 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
495 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 470 CONNECTOR_OBJECT_ID_D_CONNECTOR << OBJECT_ID_SHIFT)
496 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 471
497 CONNECTOR_OBJECT_ID_HDMI_TYPE_B << OBJECT_ID_SHIFT) 472#define CONNECTOR_D_CONNECTOR_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
498 473 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
499#define CONNECTOR_7PIN_DIN_ENUM_ID1 \ 474 CONNECTOR_OBJECT_ID_D_CONNECTOR << OBJECT_ID_SHIFT)
500 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 475
501 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 476#define CONNECTOR_9PIN_DIN_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
502 CONNECTOR_OBJECT_ID_7PIN_DIN << OBJECT_ID_SHIFT) 477 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
503 478 CONNECTOR_OBJECT_ID_9PIN_DIN << OBJECT_ID_SHIFT)
504#define CONNECTOR_PCIE_CONNECTOR_ENUM_ID1 \ 479
505 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 480#define CONNECTOR_9PIN_DIN_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
506 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 481 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
507 CONNECTOR_OBJECT_ID_PCIE_CONNECTOR << OBJECT_ID_SHIFT) 482 CONNECTOR_OBJECT_ID_9PIN_DIN << OBJECT_ID_SHIFT)
508 483
509#define CONNECTOR_PCIE_CONNECTOR_ENUM_ID2 \ 484#define CONNECTOR_SCART_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
510 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 485 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
511 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\ 486 CONNECTOR_OBJECT_ID_SCART << OBJECT_ID_SHIFT)
512 CONNECTOR_OBJECT_ID_PCIE_CONNECTOR << OBJECT_ID_SHIFT) 487
513 488#define CONNECTOR_SCART_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
514#define CONNECTOR_CROSSFIRE_ENUM_ID1 \ 489 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
515 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 490 CONNECTOR_OBJECT_ID_SCART << OBJECT_ID_SHIFT)
516 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 491
517 CONNECTOR_OBJECT_ID_CROSSFIRE << OBJECT_ID_SHIFT) 492#define CONNECTOR_HDMI_TYPE_A_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
518 493 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
519#define CONNECTOR_CROSSFIRE_ENUM_ID2 \ 494 CONNECTOR_OBJECT_ID_HDMI_TYPE_A << OBJECT_ID_SHIFT)
520 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 495
521 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\ 496#define CONNECTOR_HDMI_TYPE_A_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
522 CONNECTOR_OBJECT_ID_CROSSFIRE << OBJECT_ID_SHIFT) 497 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
523 498 CONNECTOR_OBJECT_ID_HDMI_TYPE_A << OBJECT_ID_SHIFT)
524#define CONNECTOR_HARDCODE_DVI_ENUM_ID1 \ 499
525 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 500#define CONNECTOR_HDMI_TYPE_A_ENUM_ID3 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
526 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 501 GRAPH_OBJECT_ENUM_ID3 << ENUM_ID_SHIFT |\
527 CONNECTOR_OBJECT_ID_HARDCODE_DVI << OBJECT_ID_SHIFT) 502 CONNECTOR_OBJECT_ID_HDMI_TYPE_A << OBJECT_ID_SHIFT)
528 503
529#define CONNECTOR_HARDCODE_DVI_ENUM_ID2 \ 504#define CONNECTOR_HDMI_TYPE_B_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
530 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 505 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
531 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\ 506 CONNECTOR_OBJECT_ID_HDMI_TYPE_B << OBJECT_ID_SHIFT)
532 CONNECTOR_OBJECT_ID_HARDCODE_DVI << OBJECT_ID_SHIFT) 507
533 508#define CONNECTOR_HDMI_TYPE_B_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
534#define CONNECTOR_DISPLAYPORT_ENUM_ID1 \ 509 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
535 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 510 CONNECTOR_OBJECT_ID_HDMI_TYPE_B << OBJECT_ID_SHIFT)
536 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 511
537 CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT) 512#define CONNECTOR_7PIN_DIN_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
538 513 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
539#define CONNECTOR_DISPLAYPORT_ENUM_ID2 \ 514 CONNECTOR_OBJECT_ID_7PIN_DIN << OBJECT_ID_SHIFT)
540 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 515#define CONNECTOR_7PIN_DIN_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
541 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\ 516 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
542 CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT) 517 CONNECTOR_OBJECT_ID_7PIN_DIN << OBJECT_ID_SHIFT)
543 518
544#define CONNECTOR_DISPLAYPORT_ENUM_ID3 \ 519#define CONNECTOR_PCIE_CONNECTOR_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
545 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 520 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
546 GRAPH_OBJECT_ENUM_ID3 << ENUM_ID_SHIFT |\ 521 CONNECTOR_OBJECT_ID_PCIE_CONNECTOR << OBJECT_ID_SHIFT)
547 CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT) 522
548 523#define CONNECTOR_PCIE_CONNECTOR_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
549#define CONNECTOR_DISPLAYPORT_ENUM_ID4 \ 524 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
550 (GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ 525 CONNECTOR_OBJECT_ID_PCIE_CONNECTOR << OBJECT_ID_SHIFT)
551 GRAPH_OBJECT_ENUM_ID4 << ENUM_ID_SHIFT |\ 526
552 CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT) 527#define CONNECTOR_CROSSFIRE_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
528 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
529 CONNECTOR_OBJECT_ID_CROSSFIRE << OBJECT_ID_SHIFT)
530
531#define CONNECTOR_CROSSFIRE_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
532 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
533 CONNECTOR_OBJECT_ID_CROSSFIRE << OBJECT_ID_SHIFT)
534
535
536#define CONNECTOR_HARDCODE_DVI_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
537 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
538 CONNECTOR_OBJECT_ID_HARDCODE_DVI << OBJECT_ID_SHIFT)
539
540#define CONNECTOR_HARDCODE_DVI_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
541 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
542 CONNECTOR_OBJECT_ID_HARDCODE_DVI << OBJECT_ID_SHIFT)
543
544#define CONNECTOR_DISPLAYPORT_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
545 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
546 CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
547
548#define CONNECTOR_DISPLAYPORT_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
549 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
550 CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
551
552#define CONNECTOR_DISPLAYPORT_ENUM_ID3 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
553 GRAPH_OBJECT_ENUM_ID3 << ENUM_ID_SHIFT |\
554 CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
555
556#define CONNECTOR_DISPLAYPORT_ENUM_ID4 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
557 GRAPH_OBJECT_ENUM_ID4 << ENUM_ID_SHIFT |\
558 CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
559
560#define CONNECTOR_DISPLAYPORT_ENUM_ID5 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
561 GRAPH_OBJECT_ENUM_ID5 << ENUM_ID_SHIFT |\
562 CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
563
564#define CONNECTOR_DISPLAYPORT_ENUM_ID6 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
565 GRAPH_OBJECT_ENUM_ID6 << ENUM_ID_SHIFT |\
566 CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
567
568#define CONNECTOR_MXM_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
569 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
570 CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_DP_A
571
572#define CONNECTOR_MXM_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
573 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
574 CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_DP_B
575
576#define CONNECTOR_MXM_ENUM_ID3 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
577 GRAPH_OBJECT_ENUM_ID3 << ENUM_ID_SHIFT |\
578 CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_DP_C
579
580#define CONNECTOR_MXM_ENUM_ID4 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
581 GRAPH_OBJECT_ENUM_ID4 << ENUM_ID_SHIFT |\
582 CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_DP_D
583
584#define CONNECTOR_MXM_ENUM_ID5 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
585 GRAPH_OBJECT_ENUM_ID5 << ENUM_ID_SHIFT |\
586 CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_LVDS_TXxx
587
588#define CONNECTOR_MXM_ENUM_ID6 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
589 GRAPH_OBJECT_ENUM_ID6 << ENUM_ID_SHIFT |\
590 CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_LVDS_UXxx
591
592#define CONNECTOR_MXM_ENUM_ID7 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
593 GRAPH_OBJECT_ENUM_ID7 << ENUM_ID_SHIFT |\
594 CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_DAC
553 595
554/****************************************************/ 596/****************************************************/
555/* Router Object ID definition - Shared with BIOS */ 597/* Router Object ID definition - Shared with BIOS */
556/****************************************************/ 598/****************************************************/
557#define ROUTER_I2C_EXTENDER_CNTL_ENUM_ID1 \ 599#define ROUTER_I2C_EXTENDER_CNTL_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ROUTER << OBJECT_TYPE_SHIFT |\
558 (GRAPH_OBJECT_TYPE_ROUTER << OBJECT_TYPE_SHIFT |\ 600 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
559 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ 601 ROUTER_OBJECT_ID_I2C_EXTENDER_CNTL << OBJECT_ID_SHIFT)
560 ROUTER_OBJECT_ID_I2C_EXTENDER_CNTL << OBJECT_ID_SHIFT)
561 602
562/* deleted */ 603/* deleted */
563 604
564/****************************************************/ 605/****************************************************/
606/* Generic Object ID definition - Shared with BIOS */
607/****************************************************/
608#define GENERICOBJECT_GLSYNC_ENUM_ID1 (GRAPH_OBJECT_TYPE_GENERIC << OBJECT_TYPE_SHIFT |\
609 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
610 GENERIC_OBJECT_ID_GLSYNC << OBJECT_ID_SHIFT)
611
612#define GENERICOBJECT_PX2_NON_DRIVABLE_ID1 (GRAPH_OBJECT_TYPE_GENERIC << OBJECT_TYPE_SHIFT |\
613 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
614 GENERIC_OBJECT_ID_PX2_NON_DRIVABLE<< OBJECT_ID_SHIFT)
615
616#define GENERICOBJECT_PX2_NON_DRIVABLE_ID2 (GRAPH_OBJECT_TYPE_GENERIC << OBJECT_TYPE_SHIFT |\
617 GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
618 GENERIC_OBJECT_ID_PX2_NON_DRIVABLE<< OBJECT_ID_SHIFT)
619
620#define GENERICOBJECT_MXM_OPM_ENUM_ID1 (GRAPH_OBJECT_TYPE_GENERIC << OBJECT_TYPE_SHIFT |\
621 GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
622 GENERIC_OBJECT_ID_MXM_OPM << OBJECT_ID_SHIFT)
623
624/****************************************************/
565/* Object Cap definition - Shared with BIOS */ 625/* Object Cap definition - Shared with BIOS */
566/****************************************************/ 626/****************************************************/
567#define GRAPHICS_OBJECT_CAP_I2C 0x00000001L 627#define GRAPHICS_OBJECT_CAP_I2C 0x00000001L
568#define GRAPHICS_OBJECT_CAP_TABLE_ID 0x00000002L 628#define GRAPHICS_OBJECT_CAP_TABLE_ID 0x00000002L
569 629
630
570#define GRAPHICS_OBJECT_I2CCOMMAND_TABLE_ID 0x01 631#define GRAPHICS_OBJECT_I2CCOMMAND_TABLE_ID 0x01
571#define GRAPHICS_OBJECT_HOTPLUGDETECTIONINTERUPT_TABLE_ID 0x02 632#define GRAPHICS_OBJECT_HOTPLUGDETECTIONINTERUPT_TABLE_ID 0x02
572#define GRAPHICS_OBJECT_ENCODER_OUTPUT_PROTECTION_TABLE_ID 0x03 633#define GRAPHICS_OBJECT_ENCODER_OUTPUT_PROTECTION_TABLE_ID 0x03
@@ -575,4 +636,8 @@
575#pragma pack() 636#pragma pack()
576#endif 637#endif
577 638
578#endif /*GRAPHICTYPE */ 639#endif /*GRAPHICTYPE */
640
641
642
643
diff --git a/drivers/gpu/drm/radeon/atom.c b/drivers/gpu/drm/radeon/atom.c
index 388140a7e651..7f152f66f196 100644
--- a/drivers/gpu/drm/radeon/atom.c
+++ b/drivers/gpu/drm/radeon/atom.c
@@ -24,6 +24,7 @@
24 24
25#include <linux/module.h> 25#include <linux/module.h>
26#include <linux/sched.h> 26#include <linux/sched.h>
27#include <asm/unaligned.h>
27 28
28#define ATOM_DEBUG 29#define ATOM_DEBUG
29 30
@@ -212,7 +213,9 @@ static uint32_t atom_get_src_int(atom_exec_context *ctx, uint8_t attr,
212 case ATOM_ARG_PS: 213 case ATOM_ARG_PS:
213 idx = U8(*ptr); 214 idx = U8(*ptr);
214 (*ptr)++; 215 (*ptr)++;
215 val = le32_to_cpu(ctx->ps[idx]); 216 /* get_unaligned_le32 avoids unaligned accesses from atombios
217 * tables, noticed on a DEC Alpha. */
218 val = get_unaligned_le32((u32 *)&ctx->ps[idx]);
216 if (print) 219 if (print)
217 DEBUG("PS[0x%02X,0x%04X]", idx, val); 220 DEBUG("PS[0x%02X,0x%04X]", idx, val);
218 break; 221 break;
@@ -246,6 +249,9 @@ static uint32_t atom_get_src_int(atom_exec_context *ctx, uint8_t attr,
246 case ATOM_WS_ATTRIBUTES: 249 case ATOM_WS_ATTRIBUTES:
247 val = gctx->io_attr; 250 val = gctx->io_attr;
248 break; 251 break;
252 case ATOM_WS_REGPTR:
253 val = gctx->reg_block;
254 break;
249 default: 255 default:
250 val = ctx->ws[idx]; 256 val = ctx->ws[idx];
251 } 257 }
@@ -385,6 +391,32 @@ static uint32_t atom_get_src(atom_exec_context *ctx, uint8_t attr, int *ptr)
385 return atom_get_src_int(ctx, attr, ptr, NULL, 1); 391 return atom_get_src_int(ctx, attr, ptr, NULL, 1);
386} 392}
387 393
394static uint32_t atom_get_src_direct(atom_exec_context *ctx, uint8_t align, int *ptr)
395{
396 uint32_t val = 0xCDCDCDCD;
397
398 switch (align) {
399 case ATOM_SRC_DWORD:
400 val = U32(*ptr);
401 (*ptr) += 4;
402 break;
403 case ATOM_SRC_WORD0:
404 case ATOM_SRC_WORD8:
405 case ATOM_SRC_WORD16:
406 val = U16(*ptr);
407 (*ptr) += 2;
408 break;
409 case ATOM_SRC_BYTE0:
410 case ATOM_SRC_BYTE8:
411 case ATOM_SRC_BYTE16:
412 case ATOM_SRC_BYTE24:
413 val = U8(*ptr);
414 (*ptr)++;
415 break;
416 }
417 return val;
418}
419
388static uint32_t atom_get_dst(atom_exec_context *ctx, int arg, uint8_t attr, 420static uint32_t atom_get_dst(atom_exec_context *ctx, int arg, uint8_t attr,
389 int *ptr, uint32_t *saved, int print) 421 int *ptr, uint32_t *saved, int print)
390{ 422{
@@ -482,6 +514,9 @@ static void atom_put_dst(atom_exec_context *ctx, int arg, uint8_t attr,
482 case ATOM_WS_ATTRIBUTES: 514 case ATOM_WS_ATTRIBUTES:
483 gctx->io_attr = val; 515 gctx->io_attr = val;
484 break; 516 break;
517 case ATOM_WS_REGPTR:
518 gctx->reg_block = val;
519 break;
485 default: 520 default:
486 ctx->ws[idx] = val; 521 ctx->ws[idx] = val;
487 } 522 }
@@ -608,7 +643,7 @@ static void atom_op_delay(atom_exec_context *ctx, int *ptr, int arg)
608 uint8_t count = U8((*ptr)++); 643 uint8_t count = U8((*ptr)++);
609 SDEBUG(" count: %d\n", count); 644 SDEBUG(" count: %d\n", count);
610 if (arg == ATOM_UNIT_MICROSEC) 645 if (arg == ATOM_UNIT_MICROSEC)
611 schedule_timeout_uninterruptible(usecs_to_jiffies(count)); 646 udelay(count);
612 else 647 else
613 schedule_timeout_uninterruptible(msecs_to_jiffies(count)); 648 schedule_timeout_uninterruptible(msecs_to_jiffies(count));
614} 649}
@@ -677,7 +712,7 @@ static void atom_op_mask(atom_exec_context *ctx, int *ptr, int arg)
677 SDEBUG(" dst: "); 712 SDEBUG(" dst: ");
678 dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1); 713 dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1);
679 SDEBUG(" src1: "); 714 SDEBUG(" src1: ");
680 src1 = atom_get_src(ctx, attr, ptr); 715 src1 = atom_get_src_direct(ctx, ((attr >> 3) & 7), ptr);
681 SDEBUG(" src2: "); 716 SDEBUG(" src2: ");
682 src2 = atom_get_src(ctx, attr, ptr); 717 src2 = atom_get_src(ctx, attr, ptr);
683 dst &= src1; 718 dst &= src1;
@@ -809,6 +844,38 @@ static void atom_op_setregblock(atom_exec_context *ctx, int *ptr, int arg)
809 SDEBUG(" base: 0x%04X\n", ctx->ctx->reg_block); 844 SDEBUG(" base: 0x%04X\n", ctx->ctx->reg_block);
810} 845}
811 846
847static void atom_op_shift_left(atom_exec_context *ctx, int *ptr, int arg)
848{
849 uint8_t attr = U8((*ptr)++), shift;
850 uint32_t saved, dst;
851 int dptr = *ptr;
852 attr &= 0x38;
853 attr |= atom_def_dst[attr >> 3] << 6;
854 SDEBUG(" dst: ");
855 dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1);
856 shift = atom_get_src_direct(ctx, ATOM_SRC_BYTE0, ptr);
857 SDEBUG(" shift: %d\n", shift);
858 dst <<= shift;
859 SDEBUG(" dst: ");
860 atom_put_dst(ctx, arg, attr, &dptr, dst, saved);
861}
862
863static void atom_op_shift_right(atom_exec_context *ctx, int *ptr, int arg)
864{
865 uint8_t attr = U8((*ptr)++), shift;
866 uint32_t saved, dst;
867 int dptr = *ptr;
868 attr &= 0x38;
869 attr |= atom_def_dst[attr >> 3] << 6;
870 SDEBUG(" dst: ");
871 dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1);
872 shift = atom_get_src_direct(ctx, ATOM_SRC_BYTE0, ptr);
873 SDEBUG(" shift: %d\n", shift);
874 dst >>= shift;
875 SDEBUG(" dst: ");
876 atom_put_dst(ctx, arg, attr, &dptr, dst, saved);
877}
878
812static void atom_op_shl(atom_exec_context *ctx, int *ptr, int arg) 879static void atom_op_shl(atom_exec_context *ctx, int *ptr, int arg)
813{ 880{
814 uint8_t attr = U8((*ptr)++), shift; 881 uint8_t attr = U8((*ptr)++), shift;
@@ -818,7 +885,7 @@ static void atom_op_shl(atom_exec_context *ctx, int *ptr, int arg)
818 attr |= atom_def_dst[attr >> 3] << 6; 885 attr |= atom_def_dst[attr >> 3] << 6;
819 SDEBUG(" dst: "); 886 SDEBUG(" dst: ");
820 dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1); 887 dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1);
821 shift = U8((*ptr)++); 888 shift = atom_get_src(ctx, attr, ptr);
822 SDEBUG(" shift: %d\n", shift); 889 SDEBUG(" shift: %d\n", shift);
823 dst <<= shift; 890 dst <<= shift;
824 SDEBUG(" dst: "); 891 SDEBUG(" dst: ");
@@ -834,7 +901,7 @@ static void atom_op_shr(atom_exec_context *ctx, int *ptr, int arg)
834 attr |= atom_def_dst[attr >> 3] << 6; 901 attr |= atom_def_dst[attr >> 3] << 6;
835 SDEBUG(" dst: "); 902 SDEBUG(" dst: ");
836 dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1); 903 dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1);
837 shift = U8((*ptr)++); 904 shift = atom_get_src(ctx, attr, ptr);
838 SDEBUG(" shift: %d\n", shift); 905 SDEBUG(" shift: %d\n", shift);
839 dst >>= shift; 906 dst >>= shift;
840 SDEBUG(" dst: "); 907 SDEBUG(" dst: ");
@@ -937,18 +1004,18 @@ static struct {
937 atom_op_or, ATOM_ARG_FB}, { 1004 atom_op_or, ATOM_ARG_FB}, {
938 atom_op_or, ATOM_ARG_PLL}, { 1005 atom_op_or, ATOM_ARG_PLL}, {
939 atom_op_or, ATOM_ARG_MC}, { 1006 atom_op_or, ATOM_ARG_MC}, {
940 atom_op_shl, ATOM_ARG_REG}, { 1007 atom_op_shift_left, ATOM_ARG_REG}, {
941 atom_op_shl, ATOM_ARG_PS}, { 1008 atom_op_shift_left, ATOM_ARG_PS}, {
942 atom_op_shl, ATOM_ARG_WS}, { 1009 atom_op_shift_left, ATOM_ARG_WS}, {
943 atom_op_shl, ATOM_ARG_FB}, { 1010 atom_op_shift_left, ATOM_ARG_FB}, {
944 atom_op_shl, ATOM_ARG_PLL}, { 1011 atom_op_shift_left, ATOM_ARG_PLL}, {
945 atom_op_shl, ATOM_ARG_MC}, { 1012 atom_op_shift_left, ATOM_ARG_MC}, {
946 atom_op_shr, ATOM_ARG_REG}, { 1013 atom_op_shift_right, ATOM_ARG_REG}, {
947 atom_op_shr, ATOM_ARG_PS}, { 1014 atom_op_shift_right, ATOM_ARG_PS}, {
948 atom_op_shr, ATOM_ARG_WS}, { 1015 atom_op_shift_right, ATOM_ARG_WS}, {
949 atom_op_shr, ATOM_ARG_FB}, { 1016 atom_op_shift_right, ATOM_ARG_FB}, {
950 atom_op_shr, ATOM_ARG_PLL}, { 1017 atom_op_shift_right, ATOM_ARG_PLL}, {
951 atom_op_shr, ATOM_ARG_MC}, { 1018 atom_op_shift_right, ATOM_ARG_MC}, {
952 atom_op_mul, ATOM_ARG_REG}, { 1019 atom_op_mul, ATOM_ARG_REG}, {
953 atom_op_mul, ATOM_ARG_PS}, { 1020 atom_op_mul, ATOM_ARG_PS}, {
954 atom_op_mul, ATOM_ARG_WS}, { 1021 atom_op_mul, ATOM_ARG_WS}, {
@@ -1058,8 +1125,6 @@ static void atom_execute_table_locked(struct atom_context *ctx, int index, uint3
1058 1125
1059 SDEBUG(">> execute %04X (len %d, WS %d, PS %d)\n", base, len, ws, ps); 1126 SDEBUG(">> execute %04X (len %d, WS %d, PS %d)\n", base, len, ws, ps);
1060 1127
1061 /* reset reg block */
1062 ctx->reg_block = 0;
1063 ectx.ctx = ctx; 1128 ectx.ctx = ctx;
1064 ectx.ps_shift = ps / 4; 1129 ectx.ps_shift = ps / 4;
1065 ectx.start = base; 1130 ectx.start = base;
@@ -1096,6 +1161,12 @@ static void atom_execute_table_locked(struct atom_context *ctx, int index, uint3
1096void atom_execute_table(struct atom_context *ctx, int index, uint32_t * params) 1161void atom_execute_table(struct atom_context *ctx, int index, uint32_t * params)
1097{ 1162{
1098 mutex_lock(&ctx->mutex); 1163 mutex_lock(&ctx->mutex);
1164 /* reset reg block */
1165 ctx->reg_block = 0;
1166 /* reset fb window */
1167 ctx->fb_base = 0;
1168 /* reset io mode */
1169 ctx->io_mode = ATOM_IO_MM;
1099 atom_execute_table_locked(ctx, index, params); 1170 atom_execute_table_locked(ctx, index, params);
1100 mutex_unlock(&ctx->mutex); 1171 mutex_unlock(&ctx->mutex);
1101} 1172}
diff --git a/drivers/gpu/drm/radeon/atom.h b/drivers/gpu/drm/radeon/atom.h
index 47fd943f6d14..bc73781423a1 100644
--- a/drivers/gpu/drm/radeon/atom.h
+++ b/drivers/gpu/drm/radeon/atom.h
@@ -91,6 +91,7 @@
91#define ATOM_WS_AND_MASK 0x45 91#define ATOM_WS_AND_MASK 0x45
92#define ATOM_WS_FB_WINDOW 0x46 92#define ATOM_WS_FB_WINDOW 0x46
93#define ATOM_WS_ATTRIBUTES 0x47 93#define ATOM_WS_ATTRIBUTES 0x47
94#define ATOM_WS_REGPTR 0x48
94 95
95#define ATOM_IIO_NOP 0 96#define ATOM_IIO_NOP 0
96#define ATOM_IIO_START 1 97#define ATOM_IIO_START 1
diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c
index 260fcf59f00c..af464e351fbd 100644
--- a/drivers/gpu/drm/radeon/atombios_crtc.c
+++ b/drivers/gpu/drm/radeon/atombios_crtc.c
@@ -307,7 +307,6 @@ atombios_set_crtc_dtd_timing(struct drm_crtc *crtc,
307 args.susModeMiscInfo.usAccess = cpu_to_le16(misc); 307 args.susModeMiscInfo.usAccess = cpu_to_le16(misc);
308 args.ucCRTC = radeon_crtc->crtc_id; 308 args.ucCRTC = radeon_crtc->crtc_id;
309 309
310 printk("executing set crtc dtd timing\n");
311 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); 310 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
312} 311}
313 312
@@ -347,7 +346,6 @@ static void atombios_crtc_set_timing(struct drm_crtc *crtc,
347 args.susModeMiscInfo.usAccess = cpu_to_le16(misc); 346 args.susModeMiscInfo.usAccess = cpu_to_le16(misc);
348 args.ucCRTC = radeon_crtc->crtc_id; 347 args.ucCRTC = radeon_crtc->crtc_id;
349 348
350 printk("executing set crtc timing\n");
351 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); 349 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
352} 350}
353 351
@@ -409,59 +407,57 @@ static void atombios_set_ss(struct drm_crtc *crtc, int enable)
409 } 407 }
410} 408}
411 409
412void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode) 410union adjust_pixel_clock {
411 ADJUST_DISPLAY_PLL_PS_ALLOCATION v1;
412};
413
414static u32 atombios_adjust_pll(struct drm_crtc *crtc,
415 struct drm_display_mode *mode,
416 struct radeon_pll *pll)
413{ 417{
414 struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
415 struct drm_device *dev = crtc->dev; 418 struct drm_device *dev = crtc->dev;
416 struct radeon_device *rdev = dev->dev_private; 419 struct radeon_device *rdev = dev->dev_private;
417 struct drm_encoder *encoder = NULL; 420 struct drm_encoder *encoder = NULL;
418 struct radeon_encoder *radeon_encoder = NULL; 421 struct radeon_encoder *radeon_encoder = NULL;
419 uint8_t frev, crev; 422 u32 adjusted_clock = mode->clock;
420 int index;
421 SET_PIXEL_CLOCK_PS_ALLOCATION args;
422 PIXEL_CLOCK_PARAMETERS *spc1_ptr;
423 PIXEL_CLOCK_PARAMETERS_V2 *spc2_ptr;
424 PIXEL_CLOCK_PARAMETERS_V3 *spc3_ptr;
425 uint32_t pll_clock = mode->clock;
426 uint32_t adjusted_clock;
427 uint32_t ref_div = 0, fb_div = 0, frac_fb_div = 0, post_div = 0;
428 struct radeon_pll *pll;
429 int pll_flags = 0;
430 423
431 memset(&args, 0, sizeof(args)); 424 /* reset the pll flags */
425 pll->flags = 0;
432 426
433 if (ASIC_IS_AVIVO(rdev)) { 427 if (ASIC_IS_AVIVO(rdev)) {
434 if ((rdev->family == CHIP_RS600) || 428 if ((rdev->family == CHIP_RS600) ||
435 (rdev->family == CHIP_RS690) || 429 (rdev->family == CHIP_RS690) ||
436 (rdev->family == CHIP_RS740)) 430 (rdev->family == CHIP_RS740))
437 pll_flags |= (RADEON_PLL_USE_FRAC_FB_DIV | 431 pll->flags |= (RADEON_PLL_USE_FRAC_FB_DIV |
438 RADEON_PLL_PREFER_CLOSEST_LOWER); 432 RADEON_PLL_PREFER_CLOSEST_LOWER);
439 433
440 if (ASIC_IS_DCE32(rdev) && mode->clock > 200000) /* range limits??? */ 434 if (ASIC_IS_DCE32(rdev) && mode->clock > 200000) /* range limits??? */
441 pll_flags |= RADEON_PLL_PREFER_HIGH_FB_DIV; 435 pll->flags |= RADEON_PLL_PREFER_HIGH_FB_DIV;
442 else 436 else
443 pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV; 437 pll->flags |= RADEON_PLL_PREFER_LOW_REF_DIV;
444 } else { 438 } else {
445 pll_flags |= RADEON_PLL_LEGACY; 439 pll->flags |= RADEON_PLL_LEGACY;
446 440
447 if (mode->clock > 200000) /* range limits??? */ 441 if (mode->clock > 200000) /* range limits??? */
448 pll_flags |= RADEON_PLL_PREFER_HIGH_FB_DIV; 442 pll->flags |= RADEON_PLL_PREFER_HIGH_FB_DIV;
449 else 443 else
450 pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV; 444 pll->flags |= RADEON_PLL_PREFER_LOW_REF_DIV;
451 445
452 } 446 }
453 447
454 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { 448 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
455 if (encoder->crtc == crtc) { 449 if (encoder->crtc == crtc) {
456 if (!ASIC_IS_AVIVO(rdev)) {
457 if (encoder->encoder_type !=
458 DRM_MODE_ENCODER_DAC)
459 pll_flags |= RADEON_PLL_NO_ODD_POST_DIV;
460 if (encoder->encoder_type ==
461 DRM_MODE_ENCODER_LVDS)
462 pll_flags |= RADEON_PLL_USE_REF_DIV;
463 }
464 radeon_encoder = to_radeon_encoder(encoder); 450 radeon_encoder = to_radeon_encoder(encoder);
451 if (ASIC_IS_AVIVO(rdev)) {
452 /* DVO wants 2x pixel clock if the DVO chip is in 12 bit mode */
453 if (radeon_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1)
454 adjusted_clock = mode->clock * 2;
455 } else {
456 if (encoder->encoder_type != DRM_MODE_ENCODER_DAC)
457 pll->flags |= RADEON_PLL_NO_ODD_POST_DIV;
458 if (encoder->encoder_type == DRM_MODE_ENCODER_LVDS)
459 pll->flags |= RADEON_PLL_USE_REF_DIV;
460 }
465 break; 461 break;
466 } 462 }
467 } 463 }
@@ -471,46 +467,101 @@ void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode)
471 * special hw requirements. 467 * special hw requirements.
472 */ 468 */
473 if (ASIC_IS_DCE3(rdev)) { 469 if (ASIC_IS_DCE3(rdev)) {
474 ADJUST_DISPLAY_PLL_PS_ALLOCATION adjust_pll_args; 470 union adjust_pixel_clock args;
471 struct radeon_encoder_atom_dig *dig;
472 u8 frev, crev;
473 int index;
475 474
476 if (!encoder) 475 if (!radeon_encoder->enc_priv)
477 return; 476 return adjusted_clock;
478 477 dig = radeon_encoder->enc_priv;
479 memset(&adjust_pll_args, 0, sizeof(adjust_pll_args));
480 adjust_pll_args.usPixelClock = cpu_to_le16(mode->clock / 10);
481 adjust_pll_args.ucTransmitterID = radeon_encoder->encoder_id;
482 adjust_pll_args.ucEncodeMode = atombios_get_encoder_mode(encoder);
483 478
484 index = GetIndexIntoMasterTable(COMMAND, AdjustDisplayPll); 479 index = GetIndexIntoMasterTable(COMMAND, AdjustDisplayPll);
485 atom_execute_table(rdev->mode_info.atom_context, 480 atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev,
486 index, (uint32_t *)&adjust_pll_args); 481 &crev);
487 adjusted_clock = le16_to_cpu(adjust_pll_args.usPixelClock) * 10; 482
488 } else { 483 memset(&args, 0, sizeof(args));
489 /* DVO wants 2x pixel clock if the DVO chip is in 12 bit mode */ 484
490 if (ASIC_IS_AVIVO(rdev) && 485 switch (frev) {
491 (radeon_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1)) 486 case 1:
492 adjusted_clock = mode->clock * 2; 487 switch (crev) {
493 else 488 case 1:
494 adjusted_clock = mode->clock; 489 case 2:
490 args.v1.usPixelClock = cpu_to_le16(mode->clock / 10);
491 args.v1.ucTransmitterID = radeon_encoder->encoder_id;
492 args.v1.ucEncodeMode = atombios_get_encoder_mode(encoder);
493
494 atom_execute_table(rdev->mode_info.atom_context,
495 index, (uint32_t *)&args);
496 adjusted_clock = le16_to_cpu(args.v1.usPixelClock) * 10;
497 break;
498 default:
499 DRM_ERROR("Unknown table version %d %d\n", frev, crev);
500 return adjusted_clock;
501 }
502 break;
503 default:
504 DRM_ERROR("Unknown table version %d %d\n", frev, crev);
505 return adjusted_clock;
506 }
495 } 507 }
508 return adjusted_clock;
509}
510
511union set_pixel_clock {
512 SET_PIXEL_CLOCK_PS_ALLOCATION base;
513 PIXEL_CLOCK_PARAMETERS v1;
514 PIXEL_CLOCK_PARAMETERS_V2 v2;
515 PIXEL_CLOCK_PARAMETERS_V3 v3;
516};
517
518void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode)
519{
520 struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
521 struct drm_device *dev = crtc->dev;
522 struct radeon_device *rdev = dev->dev_private;
523 struct drm_encoder *encoder = NULL;
524 struct radeon_encoder *radeon_encoder = NULL;
525 u8 frev, crev;
526 int index;
527 union set_pixel_clock args;
528 u32 pll_clock = mode->clock;
529 u32 ref_div = 0, fb_div = 0, frac_fb_div = 0, post_div = 0;
530 struct radeon_pll *pll;
531 u32 adjusted_clock;
532
533 memset(&args, 0, sizeof(args));
534
535 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
536 if (encoder->crtc == crtc) {
537 radeon_encoder = to_radeon_encoder(encoder);
538 break;
539 }
540 }
541
542 if (!radeon_encoder)
543 return;
496 544
497 if (radeon_crtc->crtc_id == 0) 545 if (radeon_crtc->crtc_id == 0)
498 pll = &rdev->clock.p1pll; 546 pll = &rdev->clock.p1pll;
499 else 547 else
500 pll = &rdev->clock.p2pll; 548 pll = &rdev->clock.p2pll;
501 549
550 /* adjust pixel clock as needed */
551 adjusted_clock = atombios_adjust_pll(crtc, mode, pll);
552
502 if (ASIC_IS_AVIVO(rdev)) { 553 if (ASIC_IS_AVIVO(rdev)) {
503 if (radeon_new_pll) 554 if (radeon_new_pll)
504 radeon_compute_pll_avivo(pll, adjusted_clock, &pll_clock, 555 radeon_compute_pll_avivo(pll, adjusted_clock, &pll_clock,
505 &fb_div, &frac_fb_div, 556 &fb_div, &frac_fb_div,
506 &ref_div, &post_div, pll_flags); 557 &ref_div, &post_div);
507 else 558 else
508 radeon_compute_pll(pll, adjusted_clock, &pll_clock, 559 radeon_compute_pll(pll, adjusted_clock, &pll_clock,
509 &fb_div, &frac_fb_div, 560 &fb_div, &frac_fb_div,
510 &ref_div, &post_div, pll_flags); 561 &ref_div, &post_div);
511 } else 562 } else
512 radeon_compute_pll(pll, adjusted_clock, &pll_clock, &fb_div, &frac_fb_div, 563 radeon_compute_pll(pll, adjusted_clock, &pll_clock, &fb_div, &frac_fb_div,
513 &ref_div, &post_div, pll_flags); 564 &ref_div, &post_div);
514 565
515 index = GetIndexIntoMasterTable(COMMAND, SetPixelClock); 566 index = GetIndexIntoMasterTable(COMMAND, SetPixelClock);
516 atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, 567 atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev,
@@ -520,45 +571,38 @@ void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode)
520 case 1: 571 case 1:
521 switch (crev) { 572 switch (crev) {
522 case 1: 573 case 1:
523 spc1_ptr = (PIXEL_CLOCK_PARAMETERS *) & args.sPCLKInput; 574 args.v1.usPixelClock = cpu_to_le16(mode->clock / 10);
524 spc1_ptr->usPixelClock = cpu_to_le16(mode->clock / 10); 575 args.v1.usRefDiv = cpu_to_le16(ref_div);
525 spc1_ptr->usRefDiv = cpu_to_le16(ref_div); 576 args.v1.usFbDiv = cpu_to_le16(fb_div);
526 spc1_ptr->usFbDiv = cpu_to_le16(fb_div); 577 args.v1.ucFracFbDiv = frac_fb_div;
527 spc1_ptr->ucFracFbDiv = frac_fb_div; 578 args.v1.ucPostDiv = post_div;
528 spc1_ptr->ucPostDiv = post_div; 579 args.v1.ucPpll =
529 spc1_ptr->ucPpll =
530 radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1; 580 radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1;
531 spc1_ptr->ucCRTC = radeon_crtc->crtc_id; 581 args.v1.ucCRTC = radeon_crtc->crtc_id;
532 spc1_ptr->ucRefDivSrc = 1; 582 args.v1.ucRefDivSrc = 1;
533 break; 583 break;
534 case 2: 584 case 2:
535 spc2_ptr = 585 args.v2.usPixelClock = cpu_to_le16(mode->clock / 10);
536 (PIXEL_CLOCK_PARAMETERS_V2 *) & args.sPCLKInput; 586 args.v2.usRefDiv = cpu_to_le16(ref_div);
537 spc2_ptr->usPixelClock = cpu_to_le16(mode->clock / 10); 587 args.v2.usFbDiv = cpu_to_le16(fb_div);
538 spc2_ptr->usRefDiv = cpu_to_le16(ref_div); 588 args.v2.ucFracFbDiv = frac_fb_div;
539 spc2_ptr->usFbDiv = cpu_to_le16(fb_div); 589 args.v2.ucPostDiv = post_div;
540 spc2_ptr->ucFracFbDiv = frac_fb_div; 590 args.v2.ucPpll =
541 spc2_ptr->ucPostDiv = post_div;
542 spc2_ptr->ucPpll =
543 radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1; 591 radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1;
544 spc2_ptr->ucCRTC = radeon_crtc->crtc_id; 592 args.v2.ucCRTC = radeon_crtc->crtc_id;
545 spc2_ptr->ucRefDivSrc = 1; 593 args.v2.ucRefDivSrc = 1;
546 break; 594 break;
547 case 3: 595 case 3:
548 if (!encoder) 596 args.v3.usPixelClock = cpu_to_le16(mode->clock / 10);
549 return; 597 args.v3.usRefDiv = cpu_to_le16(ref_div);
550 spc3_ptr = 598 args.v3.usFbDiv = cpu_to_le16(fb_div);
551 (PIXEL_CLOCK_PARAMETERS_V3 *) & args.sPCLKInput; 599 args.v3.ucFracFbDiv = frac_fb_div;
552 spc3_ptr->usPixelClock = cpu_to_le16(mode->clock / 10); 600 args.v3.ucPostDiv = post_div;
553 spc3_ptr->usRefDiv = cpu_to_le16(ref_div); 601 args.v3.ucPpll =
554 spc3_ptr->usFbDiv = cpu_to_le16(fb_div);
555 spc3_ptr->ucFracFbDiv = frac_fb_div;
556 spc3_ptr->ucPostDiv = post_div;
557 spc3_ptr->ucPpll =
558 radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1; 602 radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1;
559 spc3_ptr->ucMiscInfo = (radeon_crtc->crtc_id << 2); 603 args.v3.ucMiscInfo = (radeon_crtc->crtc_id << 2);
560 spc3_ptr->ucTransmitterId = radeon_encoder->encoder_id; 604 args.v3.ucTransmitterId = radeon_encoder->encoder_id;
561 spc3_ptr->ucEncoderMode = 605 args.v3.ucEncoderMode =
562 atombios_get_encoder_mode(encoder); 606 atombios_get_encoder_mode(encoder);
563 break; 607 break;
564 default: 608 default:
@@ -571,12 +615,11 @@ void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode)
571 return; 615 return;
572 } 616 }
573 617
574 printk("executing set pll\n");
575 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); 618 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
576} 619}
577 620
578int atombios_crtc_set_base(struct drm_crtc *crtc, int x, int y, 621static int avivo_crtc_set_base(struct drm_crtc *crtc, int x, int y,
579 struct drm_framebuffer *old_fb) 622 struct drm_framebuffer *old_fb)
580{ 623{
581 struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); 624 struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
582 struct drm_device *dev = crtc->dev; 625 struct drm_device *dev = crtc->dev;
@@ -706,6 +749,42 @@ int atombios_crtc_set_base(struct drm_crtc *crtc, int x, int y,
706 return 0; 749 return 0;
707} 750}
708 751
752int atombios_crtc_set_base(struct drm_crtc *crtc, int x, int y,
753 struct drm_framebuffer *old_fb)
754{
755 struct drm_device *dev = crtc->dev;
756 struct radeon_device *rdev = dev->dev_private;
757
758 if (ASIC_IS_AVIVO(rdev))
759 return avivo_crtc_set_base(crtc, x, y, old_fb);
760 else
761 return radeon_crtc_set_base(crtc, x, y, old_fb);
762}
763
764/* properly set additional regs when using atombios */
765static void radeon_legacy_atom_fixup(struct drm_crtc *crtc)
766{
767 struct drm_device *dev = crtc->dev;
768 struct radeon_device *rdev = dev->dev_private;
769 struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
770 u32 disp_merge_cntl;
771
772 switch (radeon_crtc->crtc_id) {
773 case 0:
774 disp_merge_cntl = RREG32(RADEON_DISP_MERGE_CNTL);
775 disp_merge_cntl &= ~RADEON_DISP_RGB_OFFSET_EN;
776 WREG32(RADEON_DISP_MERGE_CNTL, disp_merge_cntl);
777 break;
778 case 1:
779 disp_merge_cntl = RREG32(RADEON_DISP2_MERGE_CNTL);
780 disp_merge_cntl &= ~RADEON_DISP2_RGB_OFFSET_EN;
781 WREG32(RADEON_DISP2_MERGE_CNTL, disp_merge_cntl);
782 WREG32(RADEON_FP_H2_SYNC_STRT_WID, RREG32(RADEON_CRTC2_H_SYNC_STRT_WID));
783 WREG32(RADEON_FP_V2_SYNC_STRT_WID, RREG32(RADEON_CRTC2_V_SYNC_STRT_WID));
784 break;
785 }
786}
787
709int atombios_crtc_mode_set(struct drm_crtc *crtc, 788int atombios_crtc_mode_set(struct drm_crtc *crtc,
710 struct drm_display_mode *mode, 789 struct drm_display_mode *mode,
711 struct drm_display_mode *adjusted_mode, 790 struct drm_display_mode *adjusted_mode,
@@ -727,8 +806,8 @@ int atombios_crtc_mode_set(struct drm_crtc *crtc,
727 else { 806 else {
728 if (radeon_crtc->crtc_id == 0) 807 if (radeon_crtc->crtc_id == 0)
729 atombios_set_crtc_dtd_timing(crtc, adjusted_mode); 808 atombios_set_crtc_dtd_timing(crtc, adjusted_mode);
730 radeon_crtc_set_base(crtc, x, y, old_fb); 809 atombios_crtc_set_base(crtc, x, y, old_fb);
731 radeon_legacy_atom_set_surface(crtc); 810 radeon_legacy_atom_fixup(crtc);
732 } 811 }
733 atombios_overscan_setup(crtc, mode, adjusted_mode); 812 atombios_overscan_setup(crtc, mode, adjusted_mode);
734 atombios_scaler_setup(crtc); 813 atombios_scaler_setup(crtc);
@@ -746,8 +825,8 @@ static bool atombios_crtc_mode_fixup(struct drm_crtc *crtc,
746 825
747static void atombios_crtc_prepare(struct drm_crtc *crtc) 826static void atombios_crtc_prepare(struct drm_crtc *crtc)
748{ 827{
749 atombios_crtc_dpms(crtc, DRM_MODE_DPMS_OFF);
750 atombios_lock_crtc(crtc, 1); 828 atombios_lock_crtc(crtc, 1);
829 atombios_crtc_dpms(crtc, DRM_MODE_DPMS_OFF);
751} 830}
752 831
753static void atombios_crtc_commit(struct drm_crtc *crtc) 832static void atombios_crtc_commit(struct drm_crtc *crtc)
diff --git a/drivers/gpu/drm/radeon/atombios_dp.c b/drivers/gpu/drm/radeon/atombios_dp.c
index 0d63c4436e7c..99915a682d59 100644
--- a/drivers/gpu/drm/radeon/atombios_dp.c
+++ b/drivers/gpu/drm/radeon/atombios_dp.c
@@ -332,11 +332,13 @@ bool radeon_process_aux_ch(struct radeon_i2c_chan *chan, u8 *req_bytes,
332 PROCESS_AUX_CHANNEL_TRANSACTION_PS_ALLOCATION args; 332 PROCESS_AUX_CHANNEL_TRANSACTION_PS_ALLOCATION args;
333 int index = GetIndexIntoMasterTable(COMMAND, ProcessAuxChannelTransaction); 333 int index = GetIndexIntoMasterTable(COMMAND, ProcessAuxChannelTransaction);
334 unsigned char *base; 334 unsigned char *base;
335 int retry_count = 0;
335 336
336 memset(&args, 0, sizeof(args)); 337 memset(&args, 0, sizeof(args));
337 338
338 base = (unsigned char *)rdev->mode_info.atom_context->scratch; 339 base = (unsigned char *)rdev->mode_info.atom_context->scratch;
339 340
341retry:
340 memcpy(base, req_bytes, num_bytes); 342 memcpy(base, req_bytes, num_bytes);
341 343
342 args.lpAuxRequest = 0; 344 args.lpAuxRequest = 0;
@@ -347,10 +349,12 @@ bool radeon_process_aux_ch(struct radeon_i2c_chan *chan, u8 *req_bytes,
347 349
348 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); 350 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
349 351
350 if (args.ucReplyStatus) { 352 if (args.ucReplyStatus && !args.ucDataOutLen) {
351 DRM_DEBUG("failed to get auxch %02x%02x %02x %02x 0x%02x %02x\n", 353 if (args.ucReplyStatus == 0x20 && retry_count++ < 10)
354 goto retry;
355 DRM_DEBUG("failed to get auxch %02x%02x %02x %02x 0x%02x %02x after %d retries\n",
352 req_bytes[1], req_bytes[0], req_bytes[2], req_bytes[3], 356 req_bytes[1], req_bytes[0], req_bytes[2], req_bytes[3],
353 chan->rec.i2c_id, args.ucReplyStatus); 357 chan->rec.i2c_id, args.ucReplyStatus, retry_count);
354 return false; 358 return false;
355 } 359 }
356 360
@@ -468,7 +472,8 @@ void radeon_dp_set_link_config(struct drm_connector *connector,
468 struct radeon_connector *radeon_connector; 472 struct radeon_connector *radeon_connector;
469 struct radeon_connector_atom_dig *dig_connector; 473 struct radeon_connector_atom_dig *dig_connector;
470 474
471 if (connector->connector_type != DRM_MODE_CONNECTOR_DisplayPort) 475 if ((connector->connector_type != DRM_MODE_CONNECTOR_DisplayPort) &&
476 (connector->connector_type != DRM_MODE_CONNECTOR_eDP))
472 return; 477 return;
473 478
474 radeon_connector = to_radeon_connector(connector); 479 radeon_connector = to_radeon_connector(connector);
@@ -582,7 +587,8 @@ void dp_link_train(struct drm_encoder *encoder,
582 u8 train_set[4]; 587 u8 train_set[4];
583 int i; 588 int i;
584 589
585 if (connector->connector_type != DRM_MODE_CONNECTOR_DisplayPort) 590 if ((connector->connector_type != DRM_MODE_CONNECTOR_DisplayPort) &&
591 (connector->connector_type != DRM_MODE_CONNECTOR_eDP))
586 return; 592 return;
587 593
588 if (!radeon_encoder->enc_priv) 594 if (!radeon_encoder->enc_priv)
@@ -594,21 +600,14 @@ void dp_link_train(struct drm_encoder *encoder,
594 return; 600 return;
595 dig_connector = radeon_connector->con_priv; 601 dig_connector = radeon_connector->con_priv;
596 602
597 if (ASIC_IS_DCE32(rdev)) { 603 if (dig->dig_encoder)
598 if (dig->dig_block) 604 enc_id |= ATOM_DP_CONFIG_DIG2_ENCODER;
599 enc_id |= ATOM_DP_CONFIG_DIG2_ENCODER; 605 else
600 else 606 enc_id |= ATOM_DP_CONFIG_DIG1_ENCODER;
601 enc_id |= ATOM_DP_CONFIG_DIG1_ENCODER; 607 if (dig_connector->linkb)
602 if (dig_connector->linkb) 608 enc_id |= ATOM_DP_CONFIG_LINK_B;
603 enc_id |= ATOM_DP_CONFIG_LINK_B; 609 else
604 else 610 enc_id |= ATOM_DP_CONFIG_LINK_A;
605 enc_id |= ATOM_DP_CONFIG_LINK_A;
606 } else {
607 if (dig_connector->linkb)
608 enc_id |= ATOM_DP_CONFIG_DIG2_ENCODER | ATOM_DP_CONFIG_LINK_B;
609 else
610 enc_id |= ATOM_DP_CONFIG_DIG1_ENCODER | ATOM_DP_CONFIG_LINK_A;
611 }
612 611
613 memset(link_configuration, 0, DP_LINK_CONFIGURATION_SIZE); 612 memset(link_configuration, 0, DP_LINK_CONFIGURATION_SIZE);
614 if (dig_connector->dp_clock == 270000) 613 if (dig_connector->dp_clock == 270000)
diff --git a/drivers/gpu/drm/radeon/mkregtable.c b/drivers/gpu/drm/radeon/mkregtable.c
index 0d79577c1576..607241c6a8a9 100644
--- a/drivers/gpu/drm/radeon/mkregtable.c
+++ b/drivers/gpu/drm/radeon/mkregtable.c
@@ -661,8 +661,10 @@ static int parser_auth(struct table *t, const char *filename)
661 fseek(file, 0, SEEK_SET); 661 fseek(file, 0, SEEK_SET);
662 662
663 /* get header */ 663 /* get header */
664 if (fgets(buf, 1024, file) == NULL) 664 if (fgets(buf, 1024, file) == NULL) {
665 fclose(file);
665 return -1; 666 return -1;
667 }
666 668
667 /* first line will contain the last register 669 /* first line will contain the last register
668 * and gpu name */ 670 * and gpu name */
diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c
index 71727460968f..c0d4650cdb79 100644
--- a/drivers/gpu/drm/radeon/r100.c
+++ b/drivers/gpu/drm/radeon/r100.c
@@ -131,7 +131,8 @@ void r100_hpd_init(struct radeon_device *rdev)
131 break; 131 break;
132 } 132 }
133 } 133 }
134 r100_irq_set(rdev); 134 if (rdev->irq.installed)
135 r100_irq_set(rdev);
135} 136}
136 137
137void r100_hpd_fini(struct radeon_device *rdev) 138void r100_hpd_fini(struct radeon_device *rdev)
@@ -243,6 +244,11 @@ int r100_irq_set(struct radeon_device *rdev)
243{ 244{
244 uint32_t tmp = 0; 245 uint32_t tmp = 0;
245 246
247 if (!rdev->irq.installed) {
248 WARN(1, "Can't enable IRQ/MSI because no handler is installed.\n");
249 WREG32(R_000040_GEN_INT_CNTL, 0);
250 return -EINVAL;
251 }
246 if (rdev->irq.sw_int) { 252 if (rdev->irq.sw_int) {
247 tmp |= RADEON_SW_INT_ENABLE; 253 tmp |= RADEON_SW_INT_ENABLE;
248 } 254 }
@@ -348,14 +354,25 @@ u32 r100_get_vblank_counter(struct radeon_device *rdev, int crtc)
348 return RREG32(RADEON_CRTC2_CRNT_FRAME); 354 return RREG32(RADEON_CRTC2_CRNT_FRAME);
349} 355}
350 356
357/* Who ever call radeon_fence_emit should call ring_lock and ask
358 * for enough space (today caller are ib schedule and buffer move) */
351void r100_fence_ring_emit(struct radeon_device *rdev, 359void r100_fence_ring_emit(struct radeon_device *rdev,
352 struct radeon_fence *fence) 360 struct radeon_fence *fence)
353{ 361{
354 /* Who ever call radeon_fence_emit should call ring_lock and ask 362 /* We have to make sure that caches are flushed before
355 * for enough space (today caller are ib schedule and buffer move) */ 363 * CPU might read something from VRAM. */
364 radeon_ring_write(rdev, PACKET0(RADEON_RB3D_DSTCACHE_CTLSTAT, 0));
365 radeon_ring_write(rdev, RADEON_RB3D_DC_FLUSH_ALL);
366 radeon_ring_write(rdev, PACKET0(RADEON_RB3D_ZCACHE_CTLSTAT, 0));
367 radeon_ring_write(rdev, RADEON_RB3D_ZC_FLUSH_ALL);
356 /* Wait until IDLE & CLEAN */ 368 /* Wait until IDLE & CLEAN */
357 radeon_ring_write(rdev, PACKET0(0x1720, 0)); 369 radeon_ring_write(rdev, PACKET0(0x1720, 0));
358 radeon_ring_write(rdev, (1 << 16) | (1 << 17)); 370 radeon_ring_write(rdev, (1 << 16) | (1 << 17));
371 radeon_ring_write(rdev, PACKET0(RADEON_HOST_PATH_CNTL, 0));
372 radeon_ring_write(rdev, rdev->config.r100.hdp_cntl |
373 RADEON_HDP_READ_BUFFER_INVALIDATE);
374 radeon_ring_write(rdev, PACKET0(RADEON_HOST_PATH_CNTL, 0));
375 radeon_ring_write(rdev, rdev->config.r100.hdp_cntl);
359 /* Emit fence sequence & fire IRQ */ 376 /* Emit fence sequence & fire IRQ */
360 radeon_ring_write(rdev, PACKET0(rdev->fence_drv.scratch_reg, 0)); 377 radeon_ring_write(rdev, PACKET0(rdev->fence_drv.scratch_reg, 0));
361 radeon_ring_write(rdev, fence->seq); 378 radeon_ring_write(rdev, fence->seq);
@@ -1493,6 +1510,7 @@ static int r100_packet3_check(struct radeon_cs_parser *p,
1493 DRM_ERROR("PRIM_WALK must be 3 for IMMD draw\n"); 1510 DRM_ERROR("PRIM_WALK must be 3 for IMMD draw\n");
1494 return -EINVAL; 1511 return -EINVAL;
1495 } 1512 }
1513 track->vtx_size = r100_get_vtx_size(radeon_get_ib_value(p, idx + 0));
1496 track->vap_vf_cntl = radeon_get_ib_value(p, idx + 1); 1514 track->vap_vf_cntl = radeon_get_ib_value(p, idx + 1);
1497 track->immd_dwords = pkt->count - 1; 1515 track->immd_dwords = pkt->count - 1;
1498 r = r100_cs_track_check(p->rdev, track); 1516 r = r100_cs_track_check(p->rdev, track);
@@ -1713,14 +1731,6 @@ void r100_gpu_init(struct radeon_device *rdev)
1713 r100_hdp_reset(rdev); 1731 r100_hdp_reset(rdev);
1714} 1732}
1715 1733
1716void r100_hdp_flush(struct radeon_device *rdev)
1717{
1718 u32 tmp;
1719 tmp = RREG32(RADEON_HOST_PATH_CNTL);
1720 tmp |= RADEON_HDP_READ_BUFFER_INVALIDATE;
1721 WREG32(RADEON_HOST_PATH_CNTL, tmp);
1722}
1723
1724void r100_hdp_reset(struct radeon_device *rdev) 1734void r100_hdp_reset(struct radeon_device *rdev)
1725{ 1735{
1726 uint32_t tmp; 1736 uint32_t tmp;
@@ -3313,6 +3323,7 @@ static int r100_startup(struct radeon_device *rdev)
3313 } 3323 }
3314 /* Enable IRQ */ 3324 /* Enable IRQ */
3315 r100_irq_set(rdev); 3325 r100_irq_set(rdev);
3326 rdev->config.r100.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL);
3316 /* 1M ring buffer */ 3327 /* 1M ring buffer */
3317 r = r100_cp_init(rdev, 1024 * 1024); 3328 r = r100_cp_init(rdev, 1024 * 1024);
3318 if (r) { 3329 if (r) {
@@ -3364,13 +3375,13 @@ int r100_suspend(struct radeon_device *rdev)
3364 3375
3365void r100_fini(struct radeon_device *rdev) 3376void r100_fini(struct radeon_device *rdev)
3366{ 3377{
3367 r100_suspend(rdev);
3368 r100_cp_fini(rdev); 3378 r100_cp_fini(rdev);
3369 r100_wb_fini(rdev); 3379 r100_wb_fini(rdev);
3370 r100_ib_fini(rdev); 3380 r100_ib_fini(rdev);
3371 radeon_gem_fini(rdev); 3381 radeon_gem_fini(rdev);
3372 if (rdev->flags & RADEON_IS_PCI) 3382 if (rdev->flags & RADEON_IS_PCI)
3373 r100_pci_gart_fini(rdev); 3383 r100_pci_gart_fini(rdev);
3384 radeon_agp_fini(rdev);
3374 radeon_irq_kms_fini(rdev); 3385 radeon_irq_kms_fini(rdev);
3375 radeon_fence_driver_fini(rdev); 3386 radeon_fence_driver_fini(rdev);
3376 radeon_bo_fini(rdev); 3387 radeon_bo_fini(rdev);
@@ -3394,9 +3405,7 @@ int r100_mc_init(struct radeon_device *rdev)
3394 if (rdev->flags & RADEON_IS_AGP) { 3405 if (rdev->flags & RADEON_IS_AGP) {
3395 r = radeon_agp_init(rdev); 3406 r = radeon_agp_init(rdev);
3396 if (r) { 3407 if (r) {
3397 printk(KERN_WARNING "[drm] Disabling AGP\n"); 3408 radeon_agp_disable(rdev);
3398 rdev->flags &= ~RADEON_IS_AGP;
3399 rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024;
3400 } else { 3409 } else {
3401 rdev->mc.gtt_location = rdev->mc.agp_base; 3410 rdev->mc.gtt_location = rdev->mc.agp_base;
3402 } 3411 }
@@ -3477,13 +3486,12 @@ int r100_init(struct radeon_device *rdev)
3477 if (r) { 3486 if (r) {
3478 /* Somethings want wront with the accel init stop accel */ 3487 /* Somethings want wront with the accel init stop accel */
3479 dev_err(rdev->dev, "Disabling GPU acceleration\n"); 3488 dev_err(rdev->dev, "Disabling GPU acceleration\n");
3480 r100_suspend(rdev);
3481 r100_cp_fini(rdev); 3489 r100_cp_fini(rdev);
3482 r100_wb_fini(rdev); 3490 r100_wb_fini(rdev);
3483 r100_ib_fini(rdev); 3491 r100_ib_fini(rdev);
3492 radeon_irq_kms_fini(rdev);
3484 if (rdev->flags & RADEON_IS_PCI) 3493 if (rdev->flags & RADEON_IS_PCI)
3485 r100_pci_gart_fini(rdev); 3494 r100_pci_gart_fini(rdev);
3486 radeon_irq_kms_fini(rdev);
3487 rdev->accel_working = false; 3495 rdev->accel_working = false;
3488 } 3496 }
3489 return 0; 3497 return 0;
diff --git a/drivers/gpu/drm/radeon/r200.c b/drivers/gpu/drm/radeon/r200.c
index 20942127c46b..ff1e0cd608bf 100644
--- a/drivers/gpu/drm/radeon/r200.c
+++ b/drivers/gpu/drm/radeon/r200.c
@@ -371,13 +371,16 @@ int r200_packet0_check(struct radeon_cs_parser *p,
371 case 5: 371 case 5:
372 case 6: 372 case 6:
373 case 7: 373 case 7:
374 /* 1D/2D */
374 track->textures[i].tex_coord_type = 0; 375 track->textures[i].tex_coord_type = 0;
375 break; 376 break;
376 case 1: 377 case 1:
377 track->textures[i].tex_coord_type = 1; 378 /* CUBE */
379 track->textures[i].tex_coord_type = 2;
378 break; 380 break;
379 case 2: 381 case 2:
380 track->textures[i].tex_coord_type = 2; 382 /* 3D */
383 track->textures[i].tex_coord_type = 1;
381 break; 384 break;
382 } 385 }
383 break; 386 break;
diff --git a/drivers/gpu/drm/radeon/r300.c b/drivers/gpu/drm/radeon/r300.c
index 3f2cc9e2e8d9..43b55a030b4d 100644
--- a/drivers/gpu/drm/radeon/r300.c
+++ b/drivers/gpu/drm/radeon/r300.c
@@ -36,7 +36,15 @@
36#include "rv350d.h" 36#include "rv350d.h"
37#include "r300_reg_safe.h" 37#include "r300_reg_safe.h"
38 38
39/* This files gather functions specifics to: r300,r350,rv350,rv370,rv380 */ 39/* This files gather functions specifics to: r300,r350,rv350,rv370,rv380
40 *
41 * GPU Errata:
42 * - HOST_PATH_CNTL: r300 family seems to dislike write to HOST_PATH_CNTL
43 * using MMIO to flush host path read cache, this lead to HARDLOCKUP.
44 * However, scheduling such write to the ring seems harmless, i suspect
45 * the CP read collide with the flush somehow, or maybe the MC, hard to
46 * tell. (Jerome Glisse)
47 */
40 48
41/* 49/*
42 * rv370,rv380 PCIE GART 50 * rv370,rv380 PCIE GART
@@ -178,6 +186,11 @@ void r300_fence_ring_emit(struct radeon_device *rdev,
178 /* Wait until IDLE & CLEAN */ 186 /* Wait until IDLE & CLEAN */
179 radeon_ring_write(rdev, PACKET0(0x1720, 0)); 187 radeon_ring_write(rdev, PACKET0(0x1720, 0));
180 radeon_ring_write(rdev, (1 << 17) | (1 << 16) | (1 << 9)); 188 radeon_ring_write(rdev, (1 << 17) | (1 << 16) | (1 << 9));
189 radeon_ring_write(rdev, PACKET0(RADEON_HOST_PATH_CNTL, 0));
190 radeon_ring_write(rdev, rdev->config.r300.hdp_cntl |
191 RADEON_HDP_READ_BUFFER_INVALIDATE);
192 radeon_ring_write(rdev, PACKET0(RADEON_HOST_PATH_CNTL, 0));
193 radeon_ring_write(rdev, rdev->config.r300.hdp_cntl);
181 /* Emit fence sequence & fire IRQ */ 194 /* Emit fence sequence & fire IRQ */
182 radeon_ring_write(rdev, PACKET0(rdev->fence_drv.scratch_reg, 0)); 195 radeon_ring_write(rdev, PACKET0(rdev->fence_drv.scratch_reg, 0));
183 radeon_ring_write(rdev, fence->seq); 196 radeon_ring_write(rdev, fence->seq);
@@ -493,11 +506,14 @@ void r300_vram_info(struct radeon_device *rdev)
493 506
494 /* DDR for all card after R300 & IGP */ 507 /* DDR for all card after R300 & IGP */
495 rdev->mc.vram_is_ddr = true; 508 rdev->mc.vram_is_ddr = true;
509
496 tmp = RREG32(RADEON_MEM_CNTL); 510 tmp = RREG32(RADEON_MEM_CNTL);
497 if (tmp & R300_MEM_NUM_CHANNELS_MASK) { 511 tmp &= R300_MEM_NUM_CHANNELS_MASK;
498 rdev->mc.vram_width = 128; 512 switch (tmp) {
499 } else { 513 case 0: rdev->mc.vram_width = 64; break;
500 rdev->mc.vram_width = 64; 514 case 1: rdev->mc.vram_width = 128; break;
515 case 2: rdev->mc.vram_width = 256; break;
516 default: rdev->mc.vram_width = 128; break;
501 } 517 }
502 518
503 r100_vram_init_sizes(rdev); 519 r100_vram_init_sizes(rdev);
@@ -1258,6 +1274,7 @@ static int r300_startup(struct radeon_device *rdev)
1258 } 1274 }
1259 /* Enable IRQ */ 1275 /* Enable IRQ */
1260 r100_irq_set(rdev); 1276 r100_irq_set(rdev);
1277 rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL);
1261 /* 1M ring buffer */ 1278 /* 1M ring buffer */
1262 r = r100_cp_init(rdev, 1024 * 1024); 1279 r = r100_cp_init(rdev, 1024 * 1024);
1263 if (r) { 1280 if (r) {
@@ -1313,7 +1330,6 @@ int r300_suspend(struct radeon_device *rdev)
1313 1330
1314void r300_fini(struct radeon_device *rdev) 1331void r300_fini(struct radeon_device *rdev)
1315{ 1332{
1316 r300_suspend(rdev);
1317 r100_cp_fini(rdev); 1333 r100_cp_fini(rdev);
1318 r100_wb_fini(rdev); 1334 r100_wb_fini(rdev);
1319 r100_ib_fini(rdev); 1335 r100_ib_fini(rdev);
@@ -1322,6 +1338,7 @@ void r300_fini(struct radeon_device *rdev)
1322 rv370_pcie_gart_fini(rdev); 1338 rv370_pcie_gart_fini(rdev);
1323 if (rdev->flags & RADEON_IS_PCI) 1339 if (rdev->flags & RADEON_IS_PCI)
1324 r100_pci_gart_fini(rdev); 1340 r100_pci_gart_fini(rdev);
1341 radeon_agp_fini(rdev);
1325 radeon_irq_kms_fini(rdev); 1342 radeon_irq_kms_fini(rdev);
1326 radeon_fence_driver_fini(rdev); 1343 radeon_fence_driver_fini(rdev);
1327 radeon_bo_fini(rdev); 1344 radeon_bo_fini(rdev);
@@ -1403,15 +1420,15 @@ int r300_init(struct radeon_device *rdev)
1403 if (r) { 1420 if (r) {
1404 /* Somethings want wront with the accel init stop accel */ 1421 /* Somethings want wront with the accel init stop accel */
1405 dev_err(rdev->dev, "Disabling GPU acceleration\n"); 1422 dev_err(rdev->dev, "Disabling GPU acceleration\n");
1406 r300_suspend(rdev);
1407 r100_cp_fini(rdev); 1423 r100_cp_fini(rdev);
1408 r100_wb_fini(rdev); 1424 r100_wb_fini(rdev);
1409 r100_ib_fini(rdev); 1425 r100_ib_fini(rdev);
1426 radeon_irq_kms_fini(rdev);
1410 if (rdev->flags & RADEON_IS_PCIE) 1427 if (rdev->flags & RADEON_IS_PCIE)
1411 rv370_pcie_gart_fini(rdev); 1428 rv370_pcie_gart_fini(rdev);
1412 if (rdev->flags & RADEON_IS_PCI) 1429 if (rdev->flags & RADEON_IS_PCI)
1413 r100_pci_gart_fini(rdev); 1430 r100_pci_gart_fini(rdev);
1414 radeon_irq_kms_fini(rdev); 1431 radeon_agp_fini(rdev);
1415 rdev->accel_working = false; 1432 rdev->accel_working = false;
1416 } 1433 }
1417 return 0; 1434 return 0;
diff --git a/drivers/gpu/drm/radeon/r420.c b/drivers/gpu/drm/radeon/r420.c
index c05a7270cf0c..d9373246c97f 100644
--- a/drivers/gpu/drm/radeon/r420.c
+++ b/drivers/gpu/drm/radeon/r420.c
@@ -30,7 +30,15 @@
30#include "radeon_reg.h" 30#include "radeon_reg.h"
31#include "radeon.h" 31#include "radeon.h"
32#include "atom.h" 32#include "atom.h"
33#include "r100d.h"
33#include "r420d.h" 34#include "r420d.h"
35#include "r420_reg_safe.h"
36
37static void r420_set_reg_safe(struct radeon_device *rdev)
38{
39 rdev->config.r300.reg_safe_bm = r420_reg_safe_bm;
40 rdev->config.r300.reg_safe_bm_size = ARRAY_SIZE(r420_reg_safe_bm);
41}
34 42
35int r420_mc_init(struct radeon_device *rdev) 43int r420_mc_init(struct radeon_device *rdev)
36{ 44{
@@ -42,9 +50,7 @@ int r420_mc_init(struct radeon_device *rdev)
42 if (rdev->flags & RADEON_IS_AGP) { 50 if (rdev->flags & RADEON_IS_AGP) {
43 r = radeon_agp_init(rdev); 51 r = radeon_agp_init(rdev);
44 if (r) { 52 if (r) {
45 printk(KERN_WARNING "[drm] Disabling AGP\n"); 53 radeon_agp_disable(rdev);
46 rdev->flags &= ~RADEON_IS_AGP;
47 rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024;
48 } else { 54 } else {
49 rdev->mc.gtt_location = rdev->mc.agp_base; 55 rdev->mc.gtt_location = rdev->mc.agp_base;
50 } 56 }
@@ -165,6 +171,34 @@ static void r420_clock_resume(struct radeon_device *rdev)
165 WREG32_PLL(R_00000D_SCLK_CNTL, sclk_cntl); 171 WREG32_PLL(R_00000D_SCLK_CNTL, sclk_cntl);
166} 172}
167 173
174static void r420_cp_errata_init(struct radeon_device *rdev)
175{
176 /* RV410 and R420 can lock up if CP DMA to host memory happens
177 * while the 2D engine is busy.
178 *
179 * The proper workaround is to queue a RESYNC at the beginning
180 * of the CP init, apparently.
181 */
182 radeon_scratch_get(rdev, &rdev->config.r300.resync_scratch);
183 radeon_ring_lock(rdev, 8);
184 radeon_ring_write(rdev, PACKET0(R300_CP_RESYNC_ADDR, 1));
185 radeon_ring_write(rdev, rdev->config.r300.resync_scratch);
186 radeon_ring_write(rdev, 0xDEADBEEF);
187 radeon_ring_unlock_commit(rdev);
188}
189
190static void r420_cp_errata_fini(struct radeon_device *rdev)
191{
192 /* Catch the RESYNC we dispatched all the way back,
193 * at the very beginning of the CP init.
194 */
195 radeon_ring_lock(rdev, 8);
196 radeon_ring_write(rdev, PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0));
197 radeon_ring_write(rdev, R300_RB3D_DC_FINISH);
198 radeon_ring_unlock_commit(rdev);
199 radeon_scratch_free(rdev, rdev->config.r300.resync_scratch);
200}
201
168static int r420_startup(struct radeon_device *rdev) 202static int r420_startup(struct radeon_device *rdev)
169{ 203{
170 int r; 204 int r;
@@ -190,12 +224,14 @@ static int r420_startup(struct radeon_device *rdev)
190 r420_pipes_init(rdev); 224 r420_pipes_init(rdev);
191 /* Enable IRQ */ 225 /* Enable IRQ */
192 r100_irq_set(rdev); 226 r100_irq_set(rdev);
227 rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL);
193 /* 1M ring buffer */ 228 /* 1M ring buffer */
194 r = r100_cp_init(rdev, 1024 * 1024); 229 r = r100_cp_init(rdev, 1024 * 1024);
195 if (r) { 230 if (r) {
196 dev_err(rdev->dev, "failled initializing CP (%d).\n", r); 231 dev_err(rdev->dev, "failled initializing CP (%d).\n", r);
197 return r; 232 return r;
198 } 233 }
234 r420_cp_errata_init(rdev);
199 r = r100_wb_init(rdev); 235 r = r100_wb_init(rdev);
200 if (r) { 236 if (r) {
201 dev_err(rdev->dev, "failled initializing WB (%d).\n", r); 237 dev_err(rdev->dev, "failled initializing WB (%d).\n", r);
@@ -238,6 +274,7 @@ int r420_resume(struct radeon_device *rdev)
238 274
239int r420_suspend(struct radeon_device *rdev) 275int r420_suspend(struct radeon_device *rdev)
240{ 276{
277 r420_cp_errata_fini(rdev);
241 r100_cp_disable(rdev); 278 r100_cp_disable(rdev);
242 r100_wb_disable(rdev); 279 r100_wb_disable(rdev);
243 r100_irq_disable(rdev); 280 r100_irq_disable(rdev);
@@ -346,22 +383,21 @@ int r420_init(struct radeon_device *rdev)
346 if (r) 383 if (r)
347 return r; 384 return r;
348 } 385 }
349 r300_set_reg_safe(rdev); 386 r420_set_reg_safe(rdev);
350 rdev->accel_working = true; 387 rdev->accel_working = true;
351 r = r420_startup(rdev); 388 r = r420_startup(rdev);
352 if (r) { 389 if (r) {
353 /* Somethings want wront with the accel init stop accel */ 390 /* Somethings want wront with the accel init stop accel */
354 dev_err(rdev->dev, "Disabling GPU acceleration\n"); 391 dev_err(rdev->dev, "Disabling GPU acceleration\n");
355 r420_suspend(rdev);
356 r100_cp_fini(rdev); 392 r100_cp_fini(rdev);
357 r100_wb_fini(rdev); 393 r100_wb_fini(rdev);
358 r100_ib_fini(rdev); 394 r100_ib_fini(rdev);
395 radeon_irq_kms_fini(rdev);
359 if (rdev->flags & RADEON_IS_PCIE) 396 if (rdev->flags & RADEON_IS_PCIE)
360 rv370_pcie_gart_fini(rdev); 397 rv370_pcie_gart_fini(rdev);
361 if (rdev->flags & RADEON_IS_PCI) 398 if (rdev->flags & RADEON_IS_PCI)
362 r100_pci_gart_fini(rdev); 399 r100_pci_gart_fini(rdev);
363 radeon_agp_fini(rdev); 400 radeon_agp_fini(rdev);
364 radeon_irq_kms_fini(rdev);
365 rdev->accel_working = false; 401 rdev->accel_working = false;
366 } 402 }
367 return 0; 403 return 0;
diff --git a/drivers/gpu/drm/radeon/r520.c b/drivers/gpu/drm/radeon/r520.c
index 0f3843b6dac7..ddf5731eba0d 100644
--- a/drivers/gpu/drm/radeon/r520.c
+++ b/drivers/gpu/drm/radeon/r520.c
@@ -186,6 +186,7 @@ static int r520_startup(struct radeon_device *rdev)
186 } 186 }
187 /* Enable IRQ */ 187 /* Enable IRQ */
188 rs600_irq_set(rdev); 188 rs600_irq_set(rdev);
189 rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL);
189 /* 1M ring buffer */ 190 /* 1M ring buffer */
190 r = r100_cp_init(rdev, 1024 * 1024); 191 r = r100_cp_init(rdev, 1024 * 1024);
191 if (r) { 192 if (r) {
@@ -293,13 +294,12 @@ int r520_init(struct radeon_device *rdev)
293 if (r) { 294 if (r) {
294 /* Somethings want wront with the accel init stop accel */ 295 /* Somethings want wront with the accel init stop accel */
295 dev_err(rdev->dev, "Disabling GPU acceleration\n"); 296 dev_err(rdev->dev, "Disabling GPU acceleration\n");
296 rv515_suspend(rdev);
297 r100_cp_fini(rdev); 297 r100_cp_fini(rdev);
298 r100_wb_fini(rdev); 298 r100_wb_fini(rdev);
299 r100_ib_fini(rdev); 299 r100_ib_fini(rdev);
300 radeon_irq_kms_fini(rdev);
300 rv370_pcie_gart_fini(rdev); 301 rv370_pcie_gart_fini(rdev);
301 radeon_agp_fini(rdev); 302 radeon_agp_fini(rdev);
302 radeon_irq_kms_fini(rdev);
303 rdev->accel_working = false; 303 rdev->accel_working = false;
304 } 304 }
305 return 0; 305 return 0;
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
index a0ac3c134b1b..2ffcf5a03551 100644
--- a/drivers/gpu/drm/radeon/r600.c
+++ b/drivers/gpu/drm/radeon/r600.c
@@ -285,7 +285,8 @@ void r600_hpd_init(struct radeon_device *rdev)
285 } 285 }
286 } 286 }
287 } 287 }
288 r600_irq_set(rdev); 288 if (rdev->irq.installed)
289 r600_irq_set(rdev);
289} 290}
290 291
291void r600_hpd_fini(struct radeon_device *rdev) 292void r600_hpd_fini(struct radeon_device *rdev)
@@ -623,7 +624,6 @@ int r600_mc_init(struct radeon_device *rdev)
623 fixed20_12 a; 624 fixed20_12 a;
624 u32 tmp; 625 u32 tmp;
625 int chansize, numchan; 626 int chansize, numchan;
626 int r;
627 627
628 /* Get VRAM informations */ 628 /* Get VRAM informations */
629 rdev->mc.vram_is_ddr = true; 629 rdev->mc.vram_is_ddr = true;
@@ -666,9 +666,6 @@ int r600_mc_init(struct radeon_device *rdev)
666 rdev->mc.real_vram_size = rdev->mc.aper_size; 666 rdev->mc.real_vram_size = rdev->mc.aper_size;
667 667
668 if (rdev->flags & RADEON_IS_AGP) { 668 if (rdev->flags & RADEON_IS_AGP) {
669 r = radeon_agp_init(rdev);
670 if (r)
671 return r;
672 /* gtt_size is setup by radeon_agp_init */ 669 /* gtt_size is setup by radeon_agp_init */
673 rdev->mc.gtt_location = rdev->mc.agp_base; 670 rdev->mc.gtt_location = rdev->mc.agp_base;
674 tmp = 0xFFFFFFFFUL - rdev->mc.agp_base - rdev->mc.gtt_size; 671 tmp = 0xFFFFFFFFUL - rdev->mc.agp_base - rdev->mc.gtt_size;
@@ -726,6 +723,10 @@ int r600_mc_init(struct radeon_device *rdev)
726 a.full = rfixed_const(100); 723 a.full = rfixed_const(100);
727 rdev->pm.sclk.full = rfixed_const(rdev->clock.default_sclk); 724 rdev->pm.sclk.full = rfixed_const(rdev->clock.default_sclk);
728 rdev->pm.sclk.full = rfixed_div(rdev->pm.sclk, a); 725 rdev->pm.sclk.full = rfixed_div(rdev->pm.sclk, a);
726
727 if (rdev->flags & RADEON_IS_IGP)
728 rdev->mc.igp_sideport_enabled = radeon_atombios_sideport_present(rdev);
729
729 return 0; 730 return 0;
730} 731}
731 732
@@ -1384,11 +1385,6 @@ void r600_pciep_wreg(struct radeon_device *rdev, u32 reg, u32 v)
1384 (void)RREG32(PCIE_PORT_DATA); 1385 (void)RREG32(PCIE_PORT_DATA);
1385} 1386}
1386 1387
1387void r600_hdp_flush(struct radeon_device *rdev)
1388{
1389 WREG32(R_005480_HDP_MEM_COHERENCY_FLUSH_CNTL, 0x1);
1390}
1391
1392/* 1388/*
1393 * CP & Ring 1389 * CP & Ring
1394 */ 1390 */
@@ -1658,6 +1654,12 @@ void r600_ring_init(struct radeon_device *rdev, unsigned ring_size)
1658 rdev->cp.align_mask = 16 - 1; 1654 rdev->cp.align_mask = 16 - 1;
1659} 1655}
1660 1656
1657void r600_cp_fini(struct radeon_device *rdev)
1658{
1659 r600_cp_stop(rdev);
1660 radeon_ring_fini(rdev);
1661}
1662
1661 1663
1662/* 1664/*
1663 * GPU scratch registers helpers function. 1665 * GPU scratch registers helpers function.
@@ -1785,28 +1787,31 @@ void r600_fence_ring_emit(struct radeon_device *rdev,
1785 radeon_ring_write(rdev, PACKET3(PACKET3_SET_CONFIG_REG, 1)); 1787 radeon_ring_write(rdev, PACKET3(PACKET3_SET_CONFIG_REG, 1));
1786 radeon_ring_write(rdev, ((rdev->fence_drv.scratch_reg - PACKET3_SET_CONFIG_REG_OFFSET) >> 2)); 1788 radeon_ring_write(rdev, ((rdev->fence_drv.scratch_reg - PACKET3_SET_CONFIG_REG_OFFSET) >> 2));
1787 radeon_ring_write(rdev, fence->seq); 1789 radeon_ring_write(rdev, fence->seq);
1790 radeon_ring_write(rdev, PACKET0(R_005480_HDP_MEM_COHERENCY_FLUSH_CNTL, 0));
1791 radeon_ring_write(rdev, 1);
1788 /* CP_INTERRUPT packet 3 no longer exists, use packet 0 */ 1792 /* CP_INTERRUPT packet 3 no longer exists, use packet 0 */
1789 radeon_ring_write(rdev, PACKET0(CP_INT_STATUS, 0)); 1793 radeon_ring_write(rdev, PACKET0(CP_INT_STATUS, 0));
1790 radeon_ring_write(rdev, RB_INT_STAT); 1794 radeon_ring_write(rdev, RB_INT_STAT);
1791} 1795}
1792 1796
1793int r600_copy_dma(struct radeon_device *rdev,
1794 uint64_t src_offset,
1795 uint64_t dst_offset,
1796 unsigned num_pages,
1797 struct radeon_fence *fence)
1798{
1799 /* FIXME: implement */
1800 return 0;
1801}
1802
1803int r600_copy_blit(struct radeon_device *rdev, 1797int r600_copy_blit(struct radeon_device *rdev,
1804 uint64_t src_offset, uint64_t dst_offset, 1798 uint64_t src_offset, uint64_t dst_offset,
1805 unsigned num_pages, struct radeon_fence *fence) 1799 unsigned num_pages, struct radeon_fence *fence)
1806{ 1800{
1807 r600_blit_prepare_copy(rdev, num_pages * RADEON_GPU_PAGE_SIZE); 1801 int r;
1802
1803 mutex_lock(&rdev->r600_blit.mutex);
1804 rdev->r600_blit.vb_ib = NULL;
1805 r = r600_blit_prepare_copy(rdev, num_pages * RADEON_GPU_PAGE_SIZE);
1806 if (r) {
1807 if (rdev->r600_blit.vb_ib)
1808 radeon_ib_free(rdev, &rdev->r600_blit.vb_ib);
1809 mutex_unlock(&rdev->r600_blit.mutex);
1810 return r;
1811 }
1808 r600_kms_blit_copy(rdev, src_offset, dst_offset, num_pages * RADEON_GPU_PAGE_SIZE); 1812 r600_kms_blit_copy(rdev, src_offset, dst_offset, num_pages * RADEON_GPU_PAGE_SIZE);
1809 r600_blit_done_copy(rdev, fence); 1813 r600_blit_done_copy(rdev, fence);
1814 mutex_unlock(&rdev->r600_blit.mutex);
1810 return 0; 1815 return 0;
1811} 1816}
1812 1817
@@ -1862,26 +1867,25 @@ int r600_startup(struct radeon_device *rdev)
1862 return r; 1867 return r;
1863 } 1868 }
1864 r600_gpu_init(rdev); 1869 r600_gpu_init(rdev);
1865 1870 r = r600_blit_init(rdev);
1866 if (!rdev->r600_blit.shader_obj) { 1871 if (r) {
1867 r = r600_blit_init(rdev); 1872 r600_blit_fini(rdev);
1873 rdev->asic->copy = NULL;
1874 dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r);
1875 }
1876 /* pin copy shader into vram */
1877 if (rdev->r600_blit.shader_obj) {
1878 r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
1879 if (unlikely(r != 0))
1880 return r;
1881 r = radeon_bo_pin(rdev->r600_blit.shader_obj, RADEON_GEM_DOMAIN_VRAM,
1882 &rdev->r600_blit.shader_gpu_addr);
1883 radeon_bo_unreserve(rdev->r600_blit.shader_obj);
1868 if (r) { 1884 if (r) {
1869 DRM_ERROR("radeon: failed blitter (%d).\n", r); 1885 dev_err(rdev->dev, "(%d) pin blit object failed\n", r);
1870 return r; 1886 return r;
1871 } 1887 }
1872 } 1888 }
1873
1874 r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
1875 if (unlikely(r != 0))
1876 return r;
1877 r = radeon_bo_pin(rdev->r600_blit.shader_obj, RADEON_GEM_DOMAIN_VRAM,
1878 &rdev->r600_blit.shader_gpu_addr);
1879 radeon_bo_unreserve(rdev->r600_blit.shader_obj);
1880 if (r) {
1881 dev_err(rdev->dev, "(%d) pin blit object failed\n", r);
1882 return r;
1883 }
1884
1885 /* Enable IRQ */ 1889 /* Enable IRQ */
1886 r = r600_irq_init(rdev); 1890 r = r600_irq_init(rdev);
1887 if (r) { 1891 if (r) {
@@ -1946,6 +1950,13 @@ int r600_resume(struct radeon_device *rdev)
1946 DRM_ERROR("radeon: failled testing IB (%d).\n", r); 1950 DRM_ERROR("radeon: failled testing IB (%d).\n", r);
1947 return r; 1951 return r;
1948 } 1952 }
1953
1954 r = r600_audio_init(rdev);
1955 if (r) {
1956 DRM_ERROR("radeon: audio resume failed\n");
1957 return r;
1958 }
1959
1949 return r; 1960 return r;
1950} 1961}
1951 1962
@@ -1953,17 +1964,21 @@ int r600_suspend(struct radeon_device *rdev)
1953{ 1964{
1954 int r; 1965 int r;
1955 1966
1967 r600_audio_fini(rdev);
1956 /* FIXME: we should wait for ring to be empty */ 1968 /* FIXME: we should wait for ring to be empty */
1957 r600_cp_stop(rdev); 1969 r600_cp_stop(rdev);
1958 rdev->cp.ready = false; 1970 rdev->cp.ready = false;
1971 r600_irq_suspend(rdev);
1959 r600_wb_disable(rdev); 1972 r600_wb_disable(rdev);
1960 r600_pcie_gart_disable(rdev); 1973 r600_pcie_gart_disable(rdev);
1961 /* unpin shaders bo */ 1974 /* unpin shaders bo */
1962 r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false); 1975 if (rdev->r600_blit.shader_obj) {
1963 if (unlikely(r != 0)) 1976 r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
1964 return r; 1977 if (!r) {
1965 radeon_bo_unpin(rdev->r600_blit.shader_obj); 1978 radeon_bo_unpin(rdev->r600_blit.shader_obj);
1966 radeon_bo_unreserve(rdev->r600_blit.shader_obj); 1979 radeon_bo_unreserve(rdev->r600_blit.shader_obj);
1980 }
1981 }
1967 return 0; 1982 return 0;
1968} 1983}
1969 1984
@@ -2024,6 +2039,11 @@ int r600_init(struct radeon_device *rdev)
2024 r = radeon_fence_driver_init(rdev); 2039 r = radeon_fence_driver_init(rdev);
2025 if (r) 2040 if (r)
2026 return r; 2041 return r;
2042 if (rdev->flags & RADEON_IS_AGP) {
2043 r = radeon_agp_init(rdev);
2044 if (r)
2045 radeon_agp_disable(rdev);
2046 }
2027 r = r600_mc_init(rdev); 2047 r = r600_mc_init(rdev);
2028 if (r) 2048 if (r)
2029 return r; 2049 return r;
@@ -2049,22 +2069,25 @@ int r600_init(struct radeon_device *rdev)
2049 rdev->accel_working = true; 2069 rdev->accel_working = true;
2050 r = r600_startup(rdev); 2070 r = r600_startup(rdev);
2051 if (r) { 2071 if (r) {
2052 r600_suspend(rdev); 2072 dev_err(rdev->dev, "disabling GPU acceleration\n");
2073 r600_cp_fini(rdev);
2053 r600_wb_fini(rdev); 2074 r600_wb_fini(rdev);
2054 radeon_ring_fini(rdev); 2075 r600_irq_fini(rdev);
2076 radeon_irq_kms_fini(rdev);
2055 r600_pcie_gart_fini(rdev); 2077 r600_pcie_gart_fini(rdev);
2056 rdev->accel_working = false; 2078 rdev->accel_working = false;
2057 } 2079 }
2058 if (rdev->accel_working) { 2080 if (rdev->accel_working) {
2059 r = radeon_ib_pool_init(rdev); 2081 r = radeon_ib_pool_init(rdev);
2060 if (r) { 2082 if (r) {
2061 DRM_ERROR("radeon: failed initializing IB pool (%d).\n", r); 2083 dev_err(rdev->dev, "IB initialization failed (%d).\n", r);
2062 rdev->accel_working = false;
2063 }
2064 r = r600_ib_test(rdev);
2065 if (r) {
2066 DRM_ERROR("radeon: failed testing IB (%d).\n", r);
2067 rdev->accel_working = false; 2084 rdev->accel_working = false;
2085 } else {
2086 r = r600_ib_test(rdev);
2087 if (r) {
2088 dev_err(rdev->dev, "IB test failed (%d).\n", r);
2089 rdev->accel_working = false;
2090 }
2068 } 2091 }
2069 } 2092 }
2070 2093
@@ -2076,21 +2099,17 @@ int r600_init(struct radeon_device *rdev)
2076 2099
2077void r600_fini(struct radeon_device *rdev) 2100void r600_fini(struct radeon_device *rdev)
2078{ 2101{
2079 /* Suspend operations */
2080 r600_suspend(rdev);
2081
2082 r600_audio_fini(rdev); 2102 r600_audio_fini(rdev);
2083 r600_blit_fini(rdev); 2103 r600_blit_fini(rdev);
2104 r600_cp_fini(rdev);
2105 r600_wb_fini(rdev);
2084 r600_irq_fini(rdev); 2106 r600_irq_fini(rdev);
2085 radeon_irq_kms_fini(rdev); 2107 radeon_irq_kms_fini(rdev);
2086 radeon_ring_fini(rdev);
2087 r600_wb_fini(rdev);
2088 r600_pcie_gart_fini(rdev); 2108 r600_pcie_gart_fini(rdev);
2109 radeon_agp_fini(rdev);
2089 radeon_gem_fini(rdev); 2110 radeon_gem_fini(rdev);
2090 radeon_fence_driver_fini(rdev); 2111 radeon_fence_driver_fini(rdev);
2091 radeon_clocks_fini(rdev); 2112 radeon_clocks_fini(rdev);
2092 if (rdev->flags & RADEON_IS_AGP)
2093 radeon_agp_fini(rdev);
2094 radeon_bo_fini(rdev); 2113 radeon_bo_fini(rdev);
2095 radeon_atombios_fini(rdev); 2114 radeon_atombios_fini(rdev);
2096 kfree(rdev->bios); 2115 kfree(rdev->bios);
@@ -2196,14 +2215,14 @@ void r600_ih_ring_init(struct radeon_device *rdev, unsigned ring_size)
2196 rb_bufsz = drm_order(ring_size / 4); 2215 rb_bufsz = drm_order(ring_size / 4);
2197 ring_size = (1 << rb_bufsz) * 4; 2216 ring_size = (1 << rb_bufsz) * 4;
2198 rdev->ih.ring_size = ring_size; 2217 rdev->ih.ring_size = ring_size;
2199 rdev->ih.align_mask = 4 - 1; 2218 rdev->ih.ptr_mask = rdev->ih.ring_size - 1;
2219 rdev->ih.rptr = 0;
2200} 2220}
2201 2221
2202static int r600_ih_ring_alloc(struct radeon_device *rdev, unsigned ring_size) 2222static int r600_ih_ring_alloc(struct radeon_device *rdev)
2203{ 2223{
2204 int r; 2224 int r;
2205 2225
2206 rdev->ih.ring_size = ring_size;
2207 /* Allocate ring buffer */ 2226 /* Allocate ring buffer */
2208 if (rdev->ih.ring_obj == NULL) { 2227 if (rdev->ih.ring_obj == NULL) {
2209 r = radeon_bo_create(rdev, NULL, rdev->ih.ring_size, 2228 r = radeon_bo_create(rdev, NULL, rdev->ih.ring_size,
@@ -2233,9 +2252,6 @@ static int r600_ih_ring_alloc(struct radeon_device *rdev, unsigned ring_size)
2233 return r; 2252 return r;
2234 } 2253 }
2235 } 2254 }
2236 rdev->ih.ptr_mask = (rdev->cp.ring_size / 4) - 1;
2237 rdev->ih.rptr = 0;
2238
2239 return 0; 2255 return 0;
2240} 2256}
2241 2257
@@ -2385,7 +2401,7 @@ int r600_irq_init(struct radeon_device *rdev)
2385 u32 interrupt_cntl, ih_cntl, ih_rb_cntl; 2401 u32 interrupt_cntl, ih_cntl, ih_rb_cntl;
2386 2402
2387 /* allocate ring */ 2403 /* allocate ring */
2388 ret = r600_ih_ring_alloc(rdev, rdev->ih.ring_size); 2404 ret = r600_ih_ring_alloc(rdev);
2389 if (ret) 2405 if (ret)
2390 return ret; 2406 return ret;
2391 2407
@@ -2448,10 +2464,15 @@ int r600_irq_init(struct radeon_device *rdev)
2448 return ret; 2464 return ret;
2449} 2465}
2450 2466
2451void r600_irq_fini(struct radeon_device *rdev) 2467void r600_irq_suspend(struct radeon_device *rdev)
2452{ 2468{
2453 r600_disable_interrupts(rdev); 2469 r600_disable_interrupts(rdev);
2454 r600_rlc_stop(rdev); 2470 r600_rlc_stop(rdev);
2471}
2472
2473void r600_irq_fini(struct radeon_device *rdev)
2474{
2475 r600_irq_suspend(rdev);
2455 r600_ih_ring_fini(rdev); 2476 r600_ih_ring_fini(rdev);
2456} 2477}
2457 2478
@@ -2461,9 +2482,17 @@ int r600_irq_set(struct radeon_device *rdev)
2461 u32 mode_int = 0; 2482 u32 mode_int = 0;
2462 u32 hpd1, hpd2, hpd3, hpd4 = 0, hpd5 = 0, hpd6 = 0; 2483 u32 hpd1, hpd2, hpd3, hpd4 = 0, hpd5 = 0, hpd6 = 0;
2463 2484
2485 if (!rdev->irq.installed) {
2486 WARN(1, "Can't enable IRQ/MSI because no handler is installed.\n");
2487 return -EINVAL;
2488 }
2464 /* don't enable anything if the ih is disabled */ 2489 /* don't enable anything if the ih is disabled */
2465 if (!rdev->ih.enabled) 2490 if (!rdev->ih.enabled) {
2491 r600_disable_interrupts(rdev);
2492 /* force the active interrupt state to all disabled */
2493 r600_disable_interrupt_state(rdev);
2466 return 0; 2494 return 0;
2495 }
2467 2496
2468 if (ASIC_IS_DCE3(rdev)) { 2497 if (ASIC_IS_DCE3(rdev)) {
2469 hpd1 = RREG32(DC_HPD1_INT_CONTROL) & ~DC_HPDx_INT_EN; 2498 hpd1 = RREG32(DC_HPD1_INT_CONTROL) & ~DC_HPDx_INT_EN;
@@ -2633,16 +2662,18 @@ static inline u32 r600_get_ih_wptr(struct radeon_device *rdev)
2633 wptr = RREG32(IH_RB_WPTR); 2662 wptr = RREG32(IH_RB_WPTR);
2634 2663
2635 if (wptr & RB_OVERFLOW) { 2664 if (wptr & RB_OVERFLOW) {
2636 WARN_ON(1); 2665 /* When a ring buffer overflow happen start parsing interrupt
2637 /* XXX deal with overflow */ 2666 * from the last not overwritten vector (wptr + 16). Hopefully
2638 DRM_ERROR("IH RB overflow\n"); 2667 * this should allow us to catchup.
2668 */
2669 dev_warn(rdev->dev, "IH ring buffer overflow (0x%08X, %d, %d)\n",
2670 wptr, rdev->ih.rptr, (wptr + 16) + rdev->ih.ptr_mask);
2671 rdev->ih.rptr = (wptr + 16) & rdev->ih.ptr_mask;
2639 tmp = RREG32(IH_RB_CNTL); 2672 tmp = RREG32(IH_RB_CNTL);
2640 tmp |= IH_WPTR_OVERFLOW_CLEAR; 2673 tmp |= IH_WPTR_OVERFLOW_CLEAR;
2641 WREG32(IH_RB_CNTL, tmp); 2674 WREG32(IH_RB_CNTL, tmp);
2642 } 2675 }
2643 wptr = wptr & WPTR_OFFSET_MASK; 2676 return (wptr & rdev->ih.ptr_mask);
2644
2645 return wptr;
2646} 2677}
2647 2678
2648/* r600 IV Ring 2679/* r600 IV Ring
@@ -2678,12 +2709,13 @@ int r600_irq_process(struct radeon_device *rdev)
2678 u32 wptr = r600_get_ih_wptr(rdev); 2709 u32 wptr = r600_get_ih_wptr(rdev);
2679 u32 rptr = rdev->ih.rptr; 2710 u32 rptr = rdev->ih.rptr;
2680 u32 src_id, src_data; 2711 u32 src_id, src_data;
2681 u32 last_entry = rdev->ih.ring_size - 16;
2682 u32 ring_index, disp_int, disp_int_cont, disp_int_cont2; 2712 u32 ring_index, disp_int, disp_int_cont, disp_int_cont2;
2683 unsigned long flags; 2713 unsigned long flags;
2684 bool queue_hotplug = false; 2714 bool queue_hotplug = false;
2685 2715
2686 DRM_DEBUG("r600_irq_process start: rptr %d, wptr %d\n", rptr, wptr); 2716 DRM_DEBUG("r600_irq_process start: rptr %d, wptr %d\n", rptr, wptr);
2717 if (!rdev->ih.enabled)
2718 return IRQ_NONE;
2687 2719
2688 spin_lock_irqsave(&rdev->ih.lock, flags); 2720 spin_lock_irqsave(&rdev->ih.lock, flags);
2689 2721
@@ -2724,7 +2756,7 @@ restart_ih:
2724 } 2756 }
2725 break; 2757 break;
2726 default: 2758 default:
2727 DRM_ERROR("Unhandled interrupt: %d %d\n", src_id, src_data); 2759 DRM_DEBUG("Unhandled interrupt: %d %d\n", src_id, src_data);
2728 break; 2760 break;
2729 } 2761 }
2730 break; 2762 break;
@@ -2744,7 +2776,7 @@ restart_ih:
2744 } 2776 }
2745 break; 2777 break;
2746 default: 2778 default:
2747 DRM_ERROR("Unhandled interrupt: %d %d\n", src_id, src_data); 2779 DRM_DEBUG("Unhandled interrupt: %d %d\n", src_id, src_data);
2748 break; 2780 break;
2749 } 2781 }
2750 break; 2782 break;
@@ -2793,7 +2825,7 @@ restart_ih:
2793 } 2825 }
2794 break; 2826 break;
2795 default: 2827 default:
2796 DRM_ERROR("Unhandled interrupt: %d %d\n", src_id, src_data); 2828 DRM_DEBUG("Unhandled interrupt: %d %d\n", src_id, src_data);
2797 break; 2829 break;
2798 } 2830 }
2799 break; 2831 break;
@@ -2807,15 +2839,13 @@ restart_ih:
2807 DRM_DEBUG("IH: CP EOP\n"); 2839 DRM_DEBUG("IH: CP EOP\n");
2808 break; 2840 break;
2809 default: 2841 default:
2810 DRM_ERROR("Unhandled interrupt: %d %d\n", src_id, src_data); 2842 DRM_DEBUG("Unhandled interrupt: %d %d\n", src_id, src_data);
2811 break; 2843 break;
2812 } 2844 }
2813 2845
2814 /* wptr/rptr are in bytes! */ 2846 /* wptr/rptr are in bytes! */
2815 if (rptr == last_entry) 2847 rptr += 16;
2816 rptr = 0; 2848 rptr &= rdev->ih.ptr_mask;
2817 else
2818 rptr += 16;
2819 } 2849 }
2820 /* make sure wptr hasn't changed while processing */ 2850 /* make sure wptr hasn't changed while processing */
2821 wptr = r600_get_ih_wptr(rdev); 2851 wptr = r600_get_ih_wptr(rdev);
@@ -2883,3 +2913,18 @@ int r600_debugfs_mc_info_init(struct radeon_device *rdev)
2883 return 0; 2913 return 0;
2884#endif 2914#endif
2885} 2915}
2916
2917/**
2918 * r600_ioctl_wait_idle - flush host path cache on wait idle ioctl
2919 * rdev: radeon device structure
2920 * bo: buffer object struct which userspace is waiting for idle
2921 *
2922 * Some R6XX/R7XX doesn't seems to take into account HDP flush performed
2923 * through ring buffer, this leads to corruption in rendering, see
2924 * http://bugzilla.kernel.org/show_bug.cgi?id=15186 to avoid this we
2925 * directly perform HDP flush by writing register through MMIO.
2926 */
2927void r600_ioctl_wait_idle(struct radeon_device *rdev, struct radeon_bo *bo)
2928{
2929 WREG32(R_005480_HDP_MEM_COHERENCY_FLUSH_CNTL, 0x1);
2930}
diff --git a/drivers/gpu/drm/radeon/r600_audio.c b/drivers/gpu/drm/radeon/r600_audio.c
index 99e2c3891a7d..0dcb6904c4ff 100644
--- a/drivers/gpu/drm/radeon/r600_audio.c
+++ b/drivers/gpu/drm/radeon/r600_audio.c
@@ -35,7 +35,7 @@
35 */ 35 */
36static int r600_audio_chipset_supported(struct radeon_device *rdev) 36static int r600_audio_chipset_supported(struct radeon_device *rdev)
37{ 37{
38 return rdev->family >= CHIP_R600 38 return (rdev->family >= CHIP_R600 && rdev->family < CHIP_RV710)
39 || rdev->family == CHIP_RS600 39 || rdev->family == CHIP_RS600
40 || rdev->family == CHIP_RS690 40 || rdev->family == CHIP_RS690
41 || rdev->family == CHIP_RS740; 41 || rdev->family == CHIP_RS740;
@@ -261,7 +261,6 @@ void r600_audio_fini(struct radeon_device *rdev)
261 if (!r600_audio_chipset_supported(rdev)) 261 if (!r600_audio_chipset_supported(rdev))
262 return; 262 return;
263 263
264 WREG32_P(R600_AUDIO_ENABLE, 0x0, ~0x81000000);
265
266 del_timer(&rdev->audio_timer); 264 del_timer(&rdev->audio_timer);
265 WREG32_P(R600_AUDIO_ENABLE, 0x0, ~0x81000000);
267} 266}
diff --git a/drivers/gpu/drm/radeon/r600_blit_kms.c b/drivers/gpu/drm/radeon/r600_blit_kms.c
index 9aecafb51b66..446b765ac72a 100644
--- a/drivers/gpu/drm/radeon/r600_blit_kms.c
+++ b/drivers/gpu/drm/radeon/r600_blit_kms.c
@@ -449,6 +449,7 @@ int r600_blit_init(struct radeon_device *rdev)
449 u32 packet2s[16]; 449 u32 packet2s[16];
450 int num_packet2s = 0; 450 int num_packet2s = 0;
451 451
452 mutex_init(&rdev->r600_blit.mutex);
452 rdev->r600_blit.state_offset = 0; 453 rdev->r600_blit.state_offset = 0;
453 454
454 if (rdev->family >= CHIP_RV770) 455 if (rdev->family >= CHIP_RV770)
@@ -512,14 +513,16 @@ void r600_blit_fini(struct radeon_device *rdev)
512{ 513{
513 int r; 514 int r;
514 515
516 if (rdev->r600_blit.shader_obj == NULL)
517 return;
518 /* If we can't reserve the bo, unref should be enough to destroy
519 * it when it becomes idle.
520 */
515 r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false); 521 r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
516 if (unlikely(r != 0)) { 522 if (!r) {
517 dev_err(rdev->dev, "(%d) can't finish r600 blit\n", r); 523 radeon_bo_unpin(rdev->r600_blit.shader_obj);
518 goto out_unref; 524 radeon_bo_unreserve(rdev->r600_blit.shader_obj);
519 } 525 }
520 radeon_bo_unpin(rdev->r600_blit.shader_obj);
521 radeon_bo_unreserve(rdev->r600_blit.shader_obj);
522out_unref:
523 radeon_bo_unref(&rdev->r600_blit.shader_obj); 526 radeon_bo_unref(&rdev->r600_blit.shader_obj);
524} 527}
525 528
@@ -540,9 +543,6 @@ int r600_vb_ib_get(struct radeon_device *rdev)
540void r600_vb_ib_put(struct radeon_device *rdev) 543void r600_vb_ib_put(struct radeon_device *rdev)
541{ 544{
542 radeon_fence_emit(rdev, rdev->r600_blit.vb_ib->fence); 545 radeon_fence_emit(rdev, rdev->r600_blit.vb_ib->fence);
543 mutex_lock(&rdev->ib_pool.mutex);
544 list_add_tail(&rdev->r600_blit.vb_ib->list, &rdev->ib_pool.scheduled_ibs);
545 mutex_unlock(&rdev->ib_pool.mutex);
546 radeon_ib_free(rdev, &rdev->r600_blit.vb_ib); 546 radeon_ib_free(rdev, &rdev->r600_blit.vb_ib);
547} 547}
548 548
@@ -555,7 +555,8 @@ int r600_blit_prepare_copy(struct radeon_device *rdev, int size_bytes)
555 int dwords_per_loop = 76, num_loops; 555 int dwords_per_loop = 76, num_loops;
556 556
557 r = r600_vb_ib_get(rdev); 557 r = r600_vb_ib_get(rdev);
558 WARN_ON(r); 558 if (r)
559 return r;
559 560
560 /* set_render_target emits 2 extra dwords on rv6xx */ 561 /* set_render_target emits 2 extra dwords on rv6xx */
561 if (rdev->family > CHIP_R600 && rdev->family < CHIP_RV770) 562 if (rdev->family > CHIP_R600 && rdev->family < CHIP_RV770)
@@ -577,11 +578,12 @@ int r600_blit_prepare_copy(struct radeon_device *rdev, int size_bytes)
577 ring_size = num_loops * dwords_per_loop; 578 ring_size = num_loops * dwords_per_loop;
578 /* set default + shaders */ 579 /* set default + shaders */
579 ring_size += 40; /* shaders + def state */ 580 ring_size += 40; /* shaders + def state */
580 ring_size += 5; /* fence emit for VB IB */ 581 ring_size += 7; /* fence emit for VB IB */
581 ring_size += 5; /* done copy */ 582 ring_size += 5; /* done copy */
582 ring_size += 5; /* fence emit for done copy */ 583 ring_size += 7; /* fence emit for done copy */
583 r = radeon_ring_lock(rdev, ring_size); 584 r = radeon_ring_lock(rdev, ring_size);
584 WARN_ON(r); 585 if (r)
586 return r;
585 587
586 set_default_state(rdev); /* 14 */ 588 set_default_state(rdev); /* 14 */
587 set_shaders(rdev); /* 26 */ 589 set_shaders(rdev); /* 26 */
diff --git a/drivers/gpu/drm/radeon/r600_cp.c b/drivers/gpu/drm/radeon/r600_cp.c
index 6d5a711c2e91..75bcf35a0931 100644
--- a/drivers/gpu/drm/radeon/r600_cp.c
+++ b/drivers/gpu/drm/radeon/r600_cp.c
@@ -1428,9 +1428,12 @@ static void r700_gfx_init(struct drm_device *dev,
1428 1428
1429 gb_tiling_config |= R600_BANK_SWAPS(1); 1429 gb_tiling_config |= R600_BANK_SWAPS(1);
1430 1430
1431 backend_map = r700_get_tile_pipe_to_backend_map(dev_priv->r600_max_tile_pipes, 1431 if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV740)
1432 dev_priv->r600_max_backends, 1432 backend_map = 0x28;
1433 (0xff << dev_priv->r600_max_backends) & 0xff); 1433 else
1434 backend_map = r700_get_tile_pipe_to_backend_map(dev_priv->r600_max_tile_pipes,
1435 dev_priv->r600_max_backends,
1436 (0xff << dev_priv->r600_max_backends) & 0xff);
1434 gb_tiling_config |= R600_BACKEND_MAP(backend_map); 1437 gb_tiling_config |= R600_BACKEND_MAP(backend_map);
1435 1438
1436 cc_gc_shader_pipe_config = 1439 cc_gc_shader_pipe_config =
diff --git a/drivers/gpu/drm/radeon/r600_cs.c b/drivers/gpu/drm/radeon/r600_cs.c
index 44060b92d9e6..e4c45ec16507 100644
--- a/drivers/gpu/drm/radeon/r600_cs.c
+++ b/drivers/gpu/drm/radeon/r600_cs.c
@@ -36,6 +36,10 @@ static int r600_cs_packet_next_reloc_nomm(struct radeon_cs_parser *p,
36typedef int (*next_reloc_t)(struct radeon_cs_parser*, struct radeon_cs_reloc**); 36typedef int (*next_reloc_t)(struct radeon_cs_parser*, struct radeon_cs_reloc**);
37static next_reloc_t r600_cs_packet_next_reloc = &r600_cs_packet_next_reloc_mm; 37static next_reloc_t r600_cs_packet_next_reloc = &r600_cs_packet_next_reloc_mm;
38 38
39struct r600_cs_track {
40 u32 cb_color0_base_last;
41};
42
39/** 43/**
40 * r600_cs_packet_parse() - parse cp packet and point ib index to next packet 44 * r600_cs_packet_parse() - parse cp packet and point ib index to next packet
41 * @parser: parser structure holding parsing context. 45 * @parser: parser structure holding parsing context.
@@ -177,6 +181,28 @@ static int r600_cs_packet_next_reloc_nomm(struct radeon_cs_parser *p,
177} 181}
178 182
179/** 183/**
184 * r600_cs_packet_next_is_pkt3_nop() - test if next packet is packet3 nop for reloc
185 * @parser: parser structure holding parsing context.
186 *
187 * Check next packet is relocation packet3, do bo validation and compute
188 * GPU offset using the provided start.
189 **/
190static inline int r600_cs_packet_next_is_pkt3_nop(struct radeon_cs_parser *p)
191{
192 struct radeon_cs_packet p3reloc;
193 int r;
194
195 r = r600_cs_packet_parse(p, &p3reloc, p->idx);
196 if (r) {
197 return 0;
198 }
199 if (p3reloc.type != PACKET_TYPE3 || p3reloc.opcode != PACKET3_NOP) {
200 return 0;
201 }
202 return 1;
203}
204
205/**
180 * r600_cs_packet_next_vline() - parse userspace VLINE packet 206 * r600_cs_packet_next_vline() - parse userspace VLINE packet
181 * @parser: parser structure holding parsing context. 207 * @parser: parser structure holding parsing context.
182 * 208 *
@@ -337,6 +363,7 @@ static int r600_packet3_check(struct radeon_cs_parser *p,
337 struct radeon_cs_packet *pkt) 363 struct radeon_cs_packet *pkt)
338{ 364{
339 struct radeon_cs_reloc *reloc; 365 struct radeon_cs_reloc *reloc;
366 struct r600_cs_track *track;
340 volatile u32 *ib; 367 volatile u32 *ib;
341 unsigned idx; 368 unsigned idx;
342 unsigned i; 369 unsigned i;
@@ -344,6 +371,7 @@ static int r600_packet3_check(struct radeon_cs_parser *p,
344 int r; 371 int r;
345 u32 idx_value; 372 u32 idx_value;
346 373
374 track = (struct r600_cs_track *)p->track;
347 ib = p->ib->ptr; 375 ib = p->ib->ptr;
348 idx = pkt->idx + 1; 376 idx = pkt->idx + 1;
349 idx_value = radeon_get_ib_value(p, idx); 377 idx_value = radeon_get_ib_value(p, idx);
@@ -503,9 +531,60 @@ static int r600_packet3_check(struct radeon_cs_parser *p,
503 for (i = 0; i < pkt->count; i++) { 531 for (i = 0; i < pkt->count; i++) {
504 reg = start_reg + (4 * i); 532 reg = start_reg + (4 * i);
505 switch (reg) { 533 switch (reg) {
534 /* This register were added late, there is userspace
535 * which does provide relocation for those but set
536 * 0 offset. In order to avoid breaking old userspace
537 * we detect this and set address to point to last
538 * CB_COLOR0_BASE, note that if userspace doesn't set
539 * CB_COLOR0_BASE before this register we will report
540 * error. Old userspace always set CB_COLOR0_BASE
541 * before any of this.
542 */
543 case R_0280E0_CB_COLOR0_FRAG:
544 case R_0280E4_CB_COLOR1_FRAG:
545 case R_0280E8_CB_COLOR2_FRAG:
546 case R_0280EC_CB_COLOR3_FRAG:
547 case R_0280F0_CB_COLOR4_FRAG:
548 case R_0280F4_CB_COLOR5_FRAG:
549 case R_0280F8_CB_COLOR6_FRAG:
550 case R_0280FC_CB_COLOR7_FRAG:
551 case R_0280C0_CB_COLOR0_TILE:
552 case R_0280C4_CB_COLOR1_TILE:
553 case R_0280C8_CB_COLOR2_TILE:
554 case R_0280CC_CB_COLOR3_TILE:
555 case R_0280D0_CB_COLOR4_TILE:
556 case R_0280D4_CB_COLOR5_TILE:
557 case R_0280D8_CB_COLOR6_TILE:
558 case R_0280DC_CB_COLOR7_TILE:
559 if (!r600_cs_packet_next_is_pkt3_nop(p)) {
560 if (!track->cb_color0_base_last) {
561 dev_err(p->dev, "Broken old userspace ? no cb_color0_base supplied before trying to write 0x%08X\n", reg);
562 return -EINVAL;
563 }
564 ib[idx+1+i] = track->cb_color0_base_last;
565 printk_once(KERN_WARNING "radeon: You have old & broken userspace "
566 "please consider updating mesa & xf86-video-ati\n");
567 } else {
568 r = r600_cs_packet_next_reloc(p, &reloc);
569 if (r) {
570 dev_err(p->dev, "bad SET_CONTEXT_REG 0x%04X\n", reg);
571 return -EINVAL;
572 }
573 ib[idx+1+i] += (u32)((reloc->lobj.gpu_offset >> 8) & 0xffffffff);
574 }
575 break;
506 case DB_DEPTH_BASE: 576 case DB_DEPTH_BASE:
507 case DB_HTILE_DATA_BASE: 577 case DB_HTILE_DATA_BASE:
508 case CB_COLOR0_BASE: 578 case CB_COLOR0_BASE:
579 r = r600_cs_packet_next_reloc(p, &reloc);
580 if (r) {
581 DRM_ERROR("bad SET_CONTEXT_REG "
582 "0x%04X\n", reg);
583 return -EINVAL;
584 }
585 ib[idx+1+i] += (u32)((reloc->lobj.gpu_offset >> 8) & 0xffffffff);
586 track->cb_color0_base_last = ib[idx+1+i];
587 break;
509 case CB_COLOR1_BASE: 588 case CB_COLOR1_BASE:
510 case CB_COLOR2_BASE: 589 case CB_COLOR2_BASE:
511 case CB_COLOR3_BASE: 590 case CB_COLOR3_BASE:
@@ -678,8 +757,11 @@ static int r600_packet3_check(struct radeon_cs_parser *p,
678int r600_cs_parse(struct radeon_cs_parser *p) 757int r600_cs_parse(struct radeon_cs_parser *p)
679{ 758{
680 struct radeon_cs_packet pkt; 759 struct radeon_cs_packet pkt;
760 struct r600_cs_track *track;
681 int r; 761 int r;
682 762
763 track = kzalloc(sizeof(*track), GFP_KERNEL);
764 p->track = track;
683 do { 765 do {
684 r = r600_cs_packet_parse(p, &pkt, p->idx); 766 r = r600_cs_packet_parse(p, &pkt, p->idx);
685 if (r) { 767 if (r) {
@@ -757,6 +839,7 @@ int r600_cs_legacy(struct drm_device *dev, void *data, struct drm_file *filp,
757 /* initialize parser */ 839 /* initialize parser */
758 memset(&parser, 0, sizeof(struct radeon_cs_parser)); 840 memset(&parser, 0, sizeof(struct radeon_cs_parser));
759 parser.filp = filp; 841 parser.filp = filp;
842 parser.dev = &dev->pdev->dev;
760 parser.rdev = NULL; 843 parser.rdev = NULL;
761 parser.family = family; 844 parser.family = family;
762 parser.ib = &fake_ib; 845 parser.ib = &fake_ib;
diff --git a/drivers/gpu/drm/radeon/r600d.h b/drivers/gpu/drm/radeon/r600d.h
index 05894edadab4..30480881aed1 100644
--- a/drivers/gpu/drm/radeon/r600d.h
+++ b/drivers/gpu/drm/radeon/r600d.h
@@ -882,4 +882,29 @@
882#define S_000E60_SOFT_RESET_VMC(x) (((x) & 1) << 17) 882#define S_000E60_SOFT_RESET_VMC(x) (((x) & 1) << 17)
883 883
884#define R_005480_HDP_MEM_COHERENCY_FLUSH_CNTL 0x5480 884#define R_005480_HDP_MEM_COHERENCY_FLUSH_CNTL 0x5480
885
886#define R_0280E0_CB_COLOR0_FRAG 0x0280E0
887#define S_0280E0_BASE_256B(x) (((x) & 0xFFFFFFFF) << 0)
888#define G_0280E0_BASE_256B(x) (((x) >> 0) & 0xFFFFFFFF)
889#define C_0280E0_BASE_256B 0x00000000
890#define R_0280E4_CB_COLOR1_FRAG 0x0280E4
891#define R_0280E8_CB_COLOR2_FRAG 0x0280E8
892#define R_0280EC_CB_COLOR3_FRAG 0x0280EC
893#define R_0280F0_CB_COLOR4_FRAG 0x0280F0
894#define R_0280F4_CB_COLOR5_FRAG 0x0280F4
895#define R_0280F8_CB_COLOR6_FRAG 0x0280F8
896#define R_0280FC_CB_COLOR7_FRAG 0x0280FC
897#define R_0280C0_CB_COLOR0_TILE 0x0280C0
898#define S_0280C0_BASE_256B(x) (((x) & 0xFFFFFFFF) << 0)
899#define G_0280C0_BASE_256B(x) (((x) >> 0) & 0xFFFFFFFF)
900#define C_0280C0_BASE_256B 0x00000000
901#define R_0280C4_CB_COLOR1_TILE 0x0280C4
902#define R_0280C8_CB_COLOR2_TILE 0x0280C8
903#define R_0280CC_CB_COLOR3_TILE 0x0280CC
904#define R_0280D0_CB_COLOR4_TILE 0x0280D0
905#define R_0280D4_CB_COLOR5_TILE 0x0280D4
906#define R_0280D8_CB_COLOR6_TILE 0x0280D8
907#define R_0280DC_CB_COLOR7_TILE 0x0280DC
908
909
885#endif 910#endif
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index 53b55608102b..c0356bb193e5 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -96,6 +96,7 @@ extern int radeon_audio;
96 * symbol; 96 * symbol;
97 */ 97 */
98#define RADEON_MAX_USEC_TIMEOUT 100000 /* 100 ms */ 98#define RADEON_MAX_USEC_TIMEOUT 100000 /* 100 ms */
99/* RADEON_IB_POOL_SIZE must be a power of 2 */
99#define RADEON_IB_POOL_SIZE 16 100#define RADEON_IB_POOL_SIZE 16
100#define RADEON_DEBUGFS_MAX_NUM_FILES 32 101#define RADEON_DEBUGFS_MAX_NUM_FILES 32
101#define RADEONFB_CONN_LIMIT 4 102#define RADEONFB_CONN_LIMIT 4
@@ -319,10 +320,12 @@ struct radeon_mc {
319 u64 real_vram_size; 320 u64 real_vram_size;
320 int vram_mtrr; 321 int vram_mtrr;
321 bool vram_is_ddr; 322 bool vram_is_ddr;
323 bool igp_sideport_enabled;
322}; 324};
323 325
324int radeon_mc_setup(struct radeon_device *rdev); 326int radeon_mc_setup(struct radeon_device *rdev);
325 327bool radeon_combios_sideport_present(struct radeon_device *rdev);
328bool radeon_atombios_sideport_present(struct radeon_device *rdev);
326 329
327/* 330/*
328 * GPU scratch registers structures, functions & helpers 331 * GPU scratch registers structures, functions & helpers
@@ -361,11 +364,12 @@ void radeon_irq_kms_sw_irq_put(struct radeon_device *rdev);
361 */ 364 */
362struct radeon_ib { 365struct radeon_ib {
363 struct list_head list; 366 struct list_head list;
364 unsigned long idx; 367 unsigned idx;
365 uint64_t gpu_addr; 368 uint64_t gpu_addr;
366 struct radeon_fence *fence; 369 struct radeon_fence *fence;
367 uint32_t *ptr; 370 uint32_t *ptr;
368 uint32_t length_dw; 371 uint32_t length_dw;
372 bool free;
369}; 373};
370 374
371/* 375/*
@@ -375,10 +379,9 @@ struct radeon_ib {
375struct radeon_ib_pool { 379struct radeon_ib_pool {
376 struct mutex mutex; 380 struct mutex mutex;
377 struct radeon_bo *robj; 381 struct radeon_bo *robj;
378 struct list_head scheduled_ibs;
379 struct radeon_ib ibs[RADEON_IB_POOL_SIZE]; 382 struct radeon_ib ibs[RADEON_IB_POOL_SIZE];
380 bool ready; 383 bool ready;
381 DECLARE_BITMAP(alloc_bm, RADEON_IB_POOL_SIZE); 384 unsigned head_id;
382}; 385};
383 386
384struct radeon_cp { 387struct radeon_cp {
@@ -408,13 +411,13 @@ struct r600_ih {
408 unsigned wptr_old; 411 unsigned wptr_old;
409 unsigned ring_size; 412 unsigned ring_size;
410 uint64_t gpu_addr; 413 uint64_t gpu_addr;
411 uint32_t align_mask;
412 uint32_t ptr_mask; 414 uint32_t ptr_mask;
413 spinlock_t lock; 415 spinlock_t lock;
414 bool enabled; 416 bool enabled;
415}; 417};
416 418
417struct r600_blit { 419struct r600_blit {
420 struct mutex mutex;
418 struct radeon_bo *shader_obj; 421 struct radeon_bo *shader_obj;
419 u64 shader_gpu_addr; 422 u64 shader_gpu_addr;
420 u32 vs_offset, ps_offset; 423 u32 vs_offset, ps_offset;
@@ -463,6 +466,7 @@ struct radeon_cs_chunk {
463}; 466};
464 467
465struct radeon_cs_parser { 468struct radeon_cs_parser {
469 struct device *dev;
466 struct radeon_device *rdev; 470 struct radeon_device *rdev;
467 struct drm_file *filp; 471 struct drm_file *filp;
468 /* chunks */ 472 /* chunks */
@@ -654,11 +658,17 @@ struct radeon_asic {
654 uint32_t offset, uint32_t obj_size); 658 uint32_t offset, uint32_t obj_size);
655 int (*clear_surface_reg)(struct radeon_device *rdev, int reg); 659 int (*clear_surface_reg)(struct radeon_device *rdev, int reg);
656 void (*bandwidth_update)(struct radeon_device *rdev); 660 void (*bandwidth_update)(struct radeon_device *rdev);
657 void (*hdp_flush)(struct radeon_device *rdev);
658 void (*hpd_init)(struct radeon_device *rdev); 661 void (*hpd_init)(struct radeon_device *rdev);
659 void (*hpd_fini)(struct radeon_device *rdev); 662 void (*hpd_fini)(struct radeon_device *rdev);
660 bool (*hpd_sense)(struct radeon_device *rdev, enum radeon_hpd_id hpd); 663 bool (*hpd_sense)(struct radeon_device *rdev, enum radeon_hpd_id hpd);
661 void (*hpd_set_polarity)(struct radeon_device *rdev, enum radeon_hpd_id hpd); 664 void (*hpd_set_polarity)(struct radeon_device *rdev, enum radeon_hpd_id hpd);
665 /* ioctl hw specific callback. Some hw might want to perform special
666 * operation on specific ioctl. For instance on wait idle some hw
667 * might want to perform and HDP flush through MMIO as it seems that
668 * some R6XX/R7XX hw doesn't take HDP flush into account if programmed
669 * through ring.
670 */
671 void (*ioctl_wait_idle)(struct radeon_device *rdev, struct radeon_bo *bo);
662}; 672};
663 673
664/* 674/*
@@ -667,11 +677,14 @@ struct radeon_asic {
667struct r100_asic { 677struct r100_asic {
668 const unsigned *reg_safe_bm; 678 const unsigned *reg_safe_bm;
669 unsigned reg_safe_bm_size; 679 unsigned reg_safe_bm_size;
680 u32 hdp_cntl;
670}; 681};
671 682
672struct r300_asic { 683struct r300_asic {
673 const unsigned *reg_safe_bm; 684 const unsigned *reg_safe_bm;
674 unsigned reg_safe_bm_size; 685 unsigned reg_safe_bm_size;
686 u32 resync_scratch;
687 u32 hdp_cntl;
675}; 688};
676 689
677struct r600_asic { 690struct r600_asic {
@@ -843,7 +856,7 @@ void r600_kms_blit_copy(struct radeon_device *rdev,
843 856
844static inline uint32_t r100_mm_rreg(struct radeon_device *rdev, uint32_t reg) 857static inline uint32_t r100_mm_rreg(struct radeon_device *rdev, uint32_t reg)
845{ 858{
846 if (reg < 0x10000) 859 if (reg < rdev->rmmio_size)
847 return readl(((void __iomem *)rdev->rmmio) + reg); 860 return readl(((void __iomem *)rdev->rmmio) + reg);
848 else { 861 else {
849 writel(reg, ((void __iomem *)rdev->rmmio) + RADEON_MM_INDEX); 862 writel(reg, ((void __iomem *)rdev->rmmio) + RADEON_MM_INDEX);
@@ -853,7 +866,7 @@ static inline uint32_t r100_mm_rreg(struct radeon_device *rdev, uint32_t reg)
853 866
854static inline void r100_mm_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v) 867static inline void r100_mm_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v)
855{ 868{
856 if (reg < 0x10000) 869 if (reg < rdev->rmmio_size)
857 writel(v, ((void __iomem *)rdev->rmmio) + reg); 870 writel(v, ((void __iomem *)rdev->rmmio) + reg);
858 else { 871 else {
859 writel(reg, ((void __iomem *)rdev->rmmio) + RADEON_MM_INDEX); 872 writel(reg, ((void __iomem *)rdev->rmmio) + RADEON_MM_INDEX);
@@ -1007,13 +1020,14 @@ static inline void radeon_ring_write(struct radeon_device *rdev, uint32_t v)
1007#define radeon_set_surface_reg(rdev, r, f, p, o, s) ((rdev)->asic->set_surface_reg((rdev), (r), (f), (p), (o), (s))) 1020#define radeon_set_surface_reg(rdev, r, f, p, o, s) ((rdev)->asic->set_surface_reg((rdev), (r), (f), (p), (o), (s)))
1008#define radeon_clear_surface_reg(rdev, r) ((rdev)->asic->clear_surface_reg((rdev), (r))) 1021#define radeon_clear_surface_reg(rdev, r) ((rdev)->asic->clear_surface_reg((rdev), (r)))
1009#define radeon_bandwidth_update(rdev) (rdev)->asic->bandwidth_update((rdev)) 1022#define radeon_bandwidth_update(rdev) (rdev)->asic->bandwidth_update((rdev))
1010#define radeon_hdp_flush(rdev) (rdev)->asic->hdp_flush((rdev))
1011#define radeon_hpd_init(rdev) (rdev)->asic->hpd_init((rdev)) 1023#define radeon_hpd_init(rdev) (rdev)->asic->hpd_init((rdev))
1012#define radeon_hpd_fini(rdev) (rdev)->asic->hpd_fini((rdev)) 1024#define radeon_hpd_fini(rdev) (rdev)->asic->hpd_fini((rdev))
1013#define radeon_hpd_sense(rdev, hpd) (rdev)->asic->hpd_sense((rdev), (hpd)) 1025#define radeon_hpd_sense(rdev, hpd) (rdev)->asic->hpd_sense((rdev), (hpd))
1014#define radeon_hpd_set_polarity(rdev, hpd) (rdev)->asic->hpd_set_polarity((rdev), (hpd)) 1026#define radeon_hpd_set_polarity(rdev, hpd) (rdev)->asic->hpd_set_polarity((rdev), (hpd))
1015 1027
1016/* Common functions */ 1028/* Common functions */
1029/* AGP */
1030extern void radeon_agp_disable(struct radeon_device *rdev);
1017extern int radeon_gart_table_vram_pin(struct radeon_device *rdev); 1031extern int radeon_gart_table_vram_pin(struct radeon_device *rdev);
1018extern int radeon_modeset_init(struct radeon_device *rdev); 1032extern int radeon_modeset_init(struct radeon_device *rdev);
1019extern void radeon_modeset_fini(struct radeon_device *rdev); 1033extern void radeon_modeset_fini(struct radeon_device *rdev);
@@ -1137,6 +1151,7 @@ extern bool r600_card_posted(struct radeon_device *rdev);
1137extern void r600_cp_stop(struct radeon_device *rdev); 1151extern void r600_cp_stop(struct radeon_device *rdev);
1138extern void r600_ring_init(struct radeon_device *rdev, unsigned ring_size); 1152extern void r600_ring_init(struct radeon_device *rdev, unsigned ring_size);
1139extern int r600_cp_resume(struct radeon_device *rdev); 1153extern int r600_cp_resume(struct radeon_device *rdev);
1154extern void r600_cp_fini(struct radeon_device *rdev);
1140extern int r600_count_pipe_bits(uint32_t val); 1155extern int r600_count_pipe_bits(uint32_t val);
1141extern int r600_gart_clear_page(struct radeon_device *rdev, int i); 1156extern int r600_gart_clear_page(struct radeon_device *rdev, int i);
1142extern int r600_mc_wait_for_idle(struct radeon_device *rdev); 1157extern int r600_mc_wait_for_idle(struct radeon_device *rdev);
@@ -1157,7 +1172,8 @@ extern int r600_irq_init(struct radeon_device *rdev);
1157extern void r600_irq_fini(struct radeon_device *rdev); 1172extern void r600_irq_fini(struct radeon_device *rdev);
1158extern void r600_ih_ring_init(struct radeon_device *rdev, unsigned ring_size); 1173extern void r600_ih_ring_init(struct radeon_device *rdev, unsigned ring_size);
1159extern int r600_irq_set(struct radeon_device *rdev); 1174extern int r600_irq_set(struct radeon_device *rdev);
1160 1175extern void r600_irq_suspend(struct radeon_device *rdev);
1176/* r600 audio */
1161extern int r600_audio_init(struct radeon_device *rdev); 1177extern int r600_audio_init(struct radeon_device *rdev);
1162extern int r600_audio_tmds_index(struct drm_encoder *encoder); 1178extern int r600_audio_tmds_index(struct drm_encoder *encoder);
1163extern void r600_audio_set_clock(struct drm_encoder *encoder, int clock); 1179extern void r600_audio_set_clock(struct drm_encoder *encoder, int clock);
diff --git a/drivers/gpu/drm/radeon/radeon_agp.c b/drivers/gpu/drm/radeon/radeon_agp.c
index 54bf49a6d676..c0681a5556dc 100644
--- a/drivers/gpu/drm/radeon/radeon_agp.c
+++ b/drivers/gpu/drm/radeon/radeon_agp.c
@@ -144,9 +144,19 @@ int radeon_agp_init(struct radeon_device *rdev)
144 144
145 ret = drm_agp_info(rdev->ddev, &info); 145 ret = drm_agp_info(rdev->ddev, &info);
146 if (ret) { 146 if (ret) {
147 drm_agp_release(rdev->ddev);
147 DRM_ERROR("Unable to get AGP info: %d\n", ret); 148 DRM_ERROR("Unable to get AGP info: %d\n", ret);
148 return ret; 149 return ret;
149 } 150 }
151
152 if (rdev->ddev->agp->agp_info.aper_size < 32) {
153 drm_agp_release(rdev->ddev);
154 dev_warn(rdev->dev, "AGP aperture too small (%zuM) "
155 "need at least 32M, disabling AGP\n",
156 rdev->ddev->agp->agp_info.aper_size);
157 return -EINVAL;
158 }
159
150 mode.mode = info.mode; 160 mode.mode = info.mode;
151 agp_status = (RREG32(RADEON_AGP_STATUS) | RADEON_AGPv3_MODE) & mode.mode; 161 agp_status = (RREG32(RADEON_AGP_STATUS) | RADEON_AGPv3_MODE) & mode.mode;
152 is_v3 = !!(agp_status & RADEON_AGPv3_MODE); 162 is_v3 = !!(agp_status & RADEON_AGPv3_MODE);
@@ -221,6 +231,7 @@ int radeon_agp_init(struct radeon_device *rdev)
221 ret = drm_agp_enable(rdev->ddev, mode); 231 ret = drm_agp_enable(rdev->ddev, mode);
222 if (ret) { 232 if (ret) {
223 DRM_ERROR("Unable to enable AGP (mode = 0x%lx)\n", mode.mode); 233 DRM_ERROR("Unable to enable AGP (mode = 0x%lx)\n", mode.mode);
234 drm_agp_release(rdev->ddev);
224 return ret; 235 return ret;
225 } 236 }
226 237
@@ -252,10 +263,8 @@ void radeon_agp_resume(struct radeon_device *rdev)
252void radeon_agp_fini(struct radeon_device *rdev) 263void radeon_agp_fini(struct radeon_device *rdev)
253{ 264{
254#if __OS_HAS_AGP 265#if __OS_HAS_AGP
255 if (rdev->flags & RADEON_IS_AGP) { 266 if (rdev->ddev->agp && rdev->ddev->agp->acquired) {
256 if (rdev->ddev->agp && rdev->ddev->agp->acquired) { 267 drm_agp_release(rdev->ddev);
257 drm_agp_release(rdev->ddev);
258 }
259 } 268 }
260#endif 269#endif
261} 270}
diff --git a/drivers/gpu/drm/radeon/radeon_asic.h b/drivers/gpu/drm/radeon/radeon_asic.h
index eb29217bbf1d..05ee1aeac3fd 100644
--- a/drivers/gpu/drm/radeon/radeon_asic.h
+++ b/drivers/gpu/drm/radeon/radeon_asic.h
@@ -77,7 +77,6 @@ int r100_clear_surface_reg(struct radeon_device *rdev, int reg);
77void r100_bandwidth_update(struct radeon_device *rdev); 77void r100_bandwidth_update(struct radeon_device *rdev);
78void r100_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); 78void r100_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib);
79int r100_ring_test(struct radeon_device *rdev); 79int r100_ring_test(struct radeon_device *rdev);
80void r100_hdp_flush(struct radeon_device *rdev);
81void r100_hpd_init(struct radeon_device *rdev); 80void r100_hpd_init(struct radeon_device *rdev);
82void r100_hpd_fini(struct radeon_device *rdev); 81void r100_hpd_fini(struct radeon_device *rdev);
83bool r100_hpd_sense(struct radeon_device *rdev, enum radeon_hpd_id hpd); 82bool r100_hpd_sense(struct radeon_device *rdev, enum radeon_hpd_id hpd);
@@ -114,11 +113,11 @@ static struct radeon_asic r100_asic = {
114 .set_surface_reg = r100_set_surface_reg, 113 .set_surface_reg = r100_set_surface_reg,
115 .clear_surface_reg = r100_clear_surface_reg, 114 .clear_surface_reg = r100_clear_surface_reg,
116 .bandwidth_update = &r100_bandwidth_update, 115 .bandwidth_update = &r100_bandwidth_update,
117 .hdp_flush = &r100_hdp_flush,
118 .hpd_init = &r100_hpd_init, 116 .hpd_init = &r100_hpd_init,
119 .hpd_fini = &r100_hpd_fini, 117 .hpd_fini = &r100_hpd_fini,
120 .hpd_sense = &r100_hpd_sense, 118 .hpd_sense = &r100_hpd_sense,
121 .hpd_set_polarity = &r100_hpd_set_polarity, 119 .hpd_set_polarity = &r100_hpd_set_polarity,
120 .ioctl_wait_idle = NULL,
122}; 121};
123 122
124 123
@@ -174,11 +173,11 @@ static struct radeon_asic r300_asic = {
174 .set_surface_reg = r100_set_surface_reg, 173 .set_surface_reg = r100_set_surface_reg,
175 .clear_surface_reg = r100_clear_surface_reg, 174 .clear_surface_reg = r100_clear_surface_reg,
176 .bandwidth_update = &r100_bandwidth_update, 175 .bandwidth_update = &r100_bandwidth_update,
177 .hdp_flush = &r100_hdp_flush,
178 .hpd_init = &r100_hpd_init, 176 .hpd_init = &r100_hpd_init,
179 .hpd_fini = &r100_hpd_fini, 177 .hpd_fini = &r100_hpd_fini,
180 .hpd_sense = &r100_hpd_sense, 178 .hpd_sense = &r100_hpd_sense,
181 .hpd_set_polarity = &r100_hpd_set_polarity, 179 .hpd_set_polarity = &r100_hpd_set_polarity,
180 .ioctl_wait_idle = NULL,
182}; 181};
183 182
184/* 183/*
@@ -218,11 +217,11 @@ static struct radeon_asic r420_asic = {
218 .set_surface_reg = r100_set_surface_reg, 217 .set_surface_reg = r100_set_surface_reg,
219 .clear_surface_reg = r100_clear_surface_reg, 218 .clear_surface_reg = r100_clear_surface_reg,
220 .bandwidth_update = &r100_bandwidth_update, 219 .bandwidth_update = &r100_bandwidth_update,
221 .hdp_flush = &r100_hdp_flush,
222 .hpd_init = &r100_hpd_init, 220 .hpd_init = &r100_hpd_init,
223 .hpd_fini = &r100_hpd_fini, 221 .hpd_fini = &r100_hpd_fini,
224 .hpd_sense = &r100_hpd_sense, 222 .hpd_sense = &r100_hpd_sense,
225 .hpd_set_polarity = &r100_hpd_set_polarity, 223 .hpd_set_polarity = &r100_hpd_set_polarity,
224 .ioctl_wait_idle = NULL,
226}; 225};
227 226
228 227
@@ -267,11 +266,11 @@ static struct radeon_asic rs400_asic = {
267 .set_surface_reg = r100_set_surface_reg, 266 .set_surface_reg = r100_set_surface_reg,
268 .clear_surface_reg = r100_clear_surface_reg, 267 .clear_surface_reg = r100_clear_surface_reg,
269 .bandwidth_update = &r100_bandwidth_update, 268 .bandwidth_update = &r100_bandwidth_update,
270 .hdp_flush = &r100_hdp_flush,
271 .hpd_init = &r100_hpd_init, 269 .hpd_init = &r100_hpd_init,
272 .hpd_fini = &r100_hpd_fini, 270 .hpd_fini = &r100_hpd_fini,
273 .hpd_sense = &r100_hpd_sense, 271 .hpd_sense = &r100_hpd_sense,
274 .hpd_set_polarity = &r100_hpd_set_polarity, 272 .hpd_set_polarity = &r100_hpd_set_polarity,
273 .ioctl_wait_idle = NULL,
275}; 274};
276 275
277 276
@@ -324,11 +323,11 @@ static struct radeon_asic rs600_asic = {
324 .set_pcie_lanes = NULL, 323 .set_pcie_lanes = NULL,
325 .set_clock_gating = &radeon_atom_set_clock_gating, 324 .set_clock_gating = &radeon_atom_set_clock_gating,
326 .bandwidth_update = &rs600_bandwidth_update, 325 .bandwidth_update = &rs600_bandwidth_update,
327 .hdp_flush = &r100_hdp_flush,
328 .hpd_init = &rs600_hpd_init, 326 .hpd_init = &rs600_hpd_init,
329 .hpd_fini = &rs600_hpd_fini, 327 .hpd_fini = &rs600_hpd_fini,
330 .hpd_sense = &rs600_hpd_sense, 328 .hpd_sense = &rs600_hpd_sense,
331 .hpd_set_polarity = &rs600_hpd_set_polarity, 329 .hpd_set_polarity = &rs600_hpd_set_polarity,
330 .ioctl_wait_idle = NULL,
332}; 331};
333 332
334 333
@@ -372,11 +371,11 @@ static struct radeon_asic rs690_asic = {
372 .set_surface_reg = r100_set_surface_reg, 371 .set_surface_reg = r100_set_surface_reg,
373 .clear_surface_reg = r100_clear_surface_reg, 372 .clear_surface_reg = r100_clear_surface_reg,
374 .bandwidth_update = &rs690_bandwidth_update, 373 .bandwidth_update = &rs690_bandwidth_update,
375 .hdp_flush = &r100_hdp_flush,
376 .hpd_init = &rs600_hpd_init, 374 .hpd_init = &rs600_hpd_init,
377 .hpd_fini = &rs600_hpd_fini, 375 .hpd_fini = &rs600_hpd_fini,
378 .hpd_sense = &rs600_hpd_sense, 376 .hpd_sense = &rs600_hpd_sense,
379 .hpd_set_polarity = &rs600_hpd_set_polarity, 377 .hpd_set_polarity = &rs600_hpd_set_polarity,
378 .ioctl_wait_idle = NULL,
380}; 379};
381 380
382 381
@@ -424,11 +423,11 @@ static struct radeon_asic rv515_asic = {
424 .set_surface_reg = r100_set_surface_reg, 423 .set_surface_reg = r100_set_surface_reg,
425 .clear_surface_reg = r100_clear_surface_reg, 424 .clear_surface_reg = r100_clear_surface_reg,
426 .bandwidth_update = &rv515_bandwidth_update, 425 .bandwidth_update = &rv515_bandwidth_update,
427 .hdp_flush = &r100_hdp_flush,
428 .hpd_init = &rs600_hpd_init, 426 .hpd_init = &rs600_hpd_init,
429 .hpd_fini = &rs600_hpd_fini, 427 .hpd_fini = &rs600_hpd_fini,
430 .hpd_sense = &rs600_hpd_sense, 428 .hpd_sense = &rs600_hpd_sense,
431 .hpd_set_polarity = &rs600_hpd_set_polarity, 429 .hpd_set_polarity = &rs600_hpd_set_polarity,
430 .ioctl_wait_idle = NULL,
432}; 431};
433 432
434 433
@@ -467,11 +466,11 @@ static struct radeon_asic r520_asic = {
467 .set_surface_reg = r100_set_surface_reg, 466 .set_surface_reg = r100_set_surface_reg,
468 .clear_surface_reg = r100_clear_surface_reg, 467 .clear_surface_reg = r100_clear_surface_reg,
469 .bandwidth_update = &rv515_bandwidth_update, 468 .bandwidth_update = &rv515_bandwidth_update,
470 .hdp_flush = &r100_hdp_flush,
471 .hpd_init = &rs600_hpd_init, 469 .hpd_init = &rs600_hpd_init,
472 .hpd_fini = &rs600_hpd_fini, 470 .hpd_fini = &rs600_hpd_fini,
473 .hpd_sense = &rs600_hpd_sense, 471 .hpd_sense = &rs600_hpd_sense,
474 .hpd_set_polarity = &rs600_hpd_set_polarity, 472 .hpd_set_polarity = &rs600_hpd_set_polarity,
473 .ioctl_wait_idle = NULL,
475}; 474};
476 475
477/* 476/*
@@ -508,12 +507,12 @@ int r600_ring_test(struct radeon_device *rdev);
508int r600_copy_blit(struct radeon_device *rdev, 507int r600_copy_blit(struct radeon_device *rdev,
509 uint64_t src_offset, uint64_t dst_offset, 508 uint64_t src_offset, uint64_t dst_offset,
510 unsigned num_pages, struct radeon_fence *fence); 509 unsigned num_pages, struct radeon_fence *fence);
511void r600_hdp_flush(struct radeon_device *rdev);
512void r600_hpd_init(struct radeon_device *rdev); 510void r600_hpd_init(struct radeon_device *rdev);
513void r600_hpd_fini(struct radeon_device *rdev); 511void r600_hpd_fini(struct radeon_device *rdev);
514bool r600_hpd_sense(struct radeon_device *rdev, enum radeon_hpd_id hpd); 512bool r600_hpd_sense(struct radeon_device *rdev, enum radeon_hpd_id hpd);
515void r600_hpd_set_polarity(struct radeon_device *rdev, 513void r600_hpd_set_polarity(struct radeon_device *rdev,
516 enum radeon_hpd_id hpd); 514 enum radeon_hpd_id hpd);
515extern void r600_ioctl_wait_idle(struct radeon_device *rdev, struct radeon_bo *bo);
517 516
518static struct radeon_asic r600_asic = { 517static struct radeon_asic r600_asic = {
519 .init = &r600_init, 518 .init = &r600_init,
@@ -544,11 +543,11 @@ static struct radeon_asic r600_asic = {
544 .set_surface_reg = r600_set_surface_reg, 543 .set_surface_reg = r600_set_surface_reg,
545 .clear_surface_reg = r600_clear_surface_reg, 544 .clear_surface_reg = r600_clear_surface_reg,
546 .bandwidth_update = &rv515_bandwidth_update, 545 .bandwidth_update = &rv515_bandwidth_update,
547 .hdp_flush = &r600_hdp_flush,
548 .hpd_init = &r600_hpd_init, 546 .hpd_init = &r600_hpd_init,
549 .hpd_fini = &r600_hpd_fini, 547 .hpd_fini = &r600_hpd_fini,
550 .hpd_sense = &r600_hpd_sense, 548 .hpd_sense = &r600_hpd_sense,
551 .hpd_set_polarity = &r600_hpd_set_polarity, 549 .hpd_set_polarity = &r600_hpd_set_polarity,
550 .ioctl_wait_idle = r600_ioctl_wait_idle,
552}; 551};
553 552
554/* 553/*
@@ -589,11 +588,11 @@ static struct radeon_asic rv770_asic = {
589 .set_surface_reg = r600_set_surface_reg, 588 .set_surface_reg = r600_set_surface_reg,
590 .clear_surface_reg = r600_clear_surface_reg, 589 .clear_surface_reg = r600_clear_surface_reg,
591 .bandwidth_update = &rv515_bandwidth_update, 590 .bandwidth_update = &rv515_bandwidth_update,
592 .hdp_flush = &r600_hdp_flush,
593 .hpd_init = &r600_hpd_init, 591 .hpd_init = &r600_hpd_init,
594 .hpd_fini = &r600_hpd_fini, 592 .hpd_fini = &r600_hpd_fini,
595 .hpd_sense = &r600_hpd_sense, 593 .hpd_sense = &r600_hpd_sense,
596 .hpd_set_polarity = &r600_hpd_set_polarity, 594 .hpd_set_polarity = &r600_hpd_set_polarity,
595 .ioctl_wait_idle = r600_ioctl_wait_idle,
597}; 596};
598 597
599#endif 598#endif
diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c
index 321044bef71c..4d8831548a5f 100644
--- a/drivers/gpu/drm/radeon/radeon_atombios.c
+++ b/drivers/gpu/drm/radeon/radeon_atombios.c
@@ -114,6 +114,7 @@ static inline struct radeon_i2c_bus_rec radeon_lookup_i2c_gpio(struct radeon_dev
114 i2c.i2c_id = gpio->sucI2cId.ucAccess; 114 i2c.i2c_id = gpio->sucI2cId.ucAccess;
115 115
116 i2c.valid = true; 116 i2c.valid = true;
117 break;
117 } 118 }
118 } 119 }
119 120
@@ -205,6 +206,15 @@ static bool radeon_atom_apply_quirks(struct drm_device *dev,
205 *connector_type = DRM_MODE_CONNECTOR_DVID; 206 *connector_type = DRM_MODE_CONNECTOR_DVID;
206 } 207 }
207 208
209 /* Asrock RS600 board lists the DVI port as HDMI */
210 if ((dev->pdev->device == 0x7941) &&
211 (dev->pdev->subsystem_vendor == 0x1849) &&
212 (dev->pdev->subsystem_device == 0x7941)) {
213 if ((*connector_type == DRM_MODE_CONNECTOR_HDMIA) &&
214 (supported_device == ATOM_DEVICE_DFP3_SUPPORT))
215 *connector_type = DRM_MODE_CONNECTOR_DVID;
216 }
217
208 /* a-bit f-i90hd - ciaranm on #radeonhd - this board has no DVI */ 218 /* a-bit f-i90hd - ciaranm on #radeonhd - this board has no DVI */
209 if ((dev->pdev->device == 0x7941) && 219 if ((dev->pdev->device == 0x7941) &&
210 (dev->pdev->subsystem_vendor == 0x147b) && 220 (dev->pdev->subsystem_vendor == 0x147b) &&
@@ -286,6 +296,15 @@ static bool radeon_atom_apply_quirks(struct drm_device *dev,
286 *connector_type = DRM_MODE_CONNECTOR_DVID; 296 *connector_type = DRM_MODE_CONNECTOR_DVID;
287 } 297 }
288 298
299 /* XFX Pine Group device rv730 reports no VGA DDC lines
300 * even though they are wired up to record 0x93
301 */
302 if ((dev->pdev->device == 0x9498) &&
303 (dev->pdev->subsystem_vendor == 0x1682) &&
304 (dev->pdev->subsystem_device == 0x2452)) {
305 struct radeon_device *rdev = dev->dev_private;
306 *i2c_bus = radeon_lookup_i2c_gpio(rdev, 0x93);
307 }
289 return true; 308 return true;
290} 309}
291 310
@@ -345,7 +364,9 @@ const int object_connector_convert[] = {
345 DRM_MODE_CONNECTOR_Unknown, 364 DRM_MODE_CONNECTOR_Unknown,
346 DRM_MODE_CONNECTOR_Unknown, 365 DRM_MODE_CONNECTOR_Unknown,
347 DRM_MODE_CONNECTOR_Unknown, 366 DRM_MODE_CONNECTOR_Unknown,
348 DRM_MODE_CONNECTOR_DisplayPort 367 DRM_MODE_CONNECTOR_DisplayPort,
368 DRM_MODE_CONNECTOR_eDP,
369 DRM_MODE_CONNECTOR_Unknown
349}; 370};
350 371
351bool radeon_get_atom_connector_info_from_object_table(struct drm_device *dev) 372bool radeon_get_atom_connector_info_from_object_table(struct drm_device *dev)
@@ -935,6 +956,43 @@ bool radeon_atom_get_clock_info(struct drm_device *dev)
935 return false; 956 return false;
936} 957}
937 958
959union igp_info {
960 struct _ATOM_INTEGRATED_SYSTEM_INFO info;
961 struct _ATOM_INTEGRATED_SYSTEM_INFO_V2 info_2;
962};
963
964bool radeon_atombios_sideport_present(struct radeon_device *rdev)
965{
966 struct radeon_mode_info *mode_info = &rdev->mode_info;
967 int index = GetIndexIntoMasterTable(DATA, IntegratedSystemInfo);
968 union igp_info *igp_info;
969 u8 frev, crev;
970 u16 data_offset;
971
972 atom_parse_data_header(mode_info->atom_context, index, NULL, &frev,
973 &crev, &data_offset);
974
975 igp_info = (union igp_info *)(mode_info->atom_context->bios +
976 data_offset);
977
978 if (igp_info) {
979 switch (crev) {
980 case 1:
981 if (igp_info->info.ucMemoryType & 0xf0)
982 return true;
983 break;
984 case 2:
985 if (igp_info->info_2.ucMemoryType & 0x0f)
986 return true;
987 break;
988 default:
989 DRM_ERROR("Unsupported IGP table: %d %d\n", frev, crev);
990 break;
991 }
992 }
993 return false;
994}
995
938bool radeon_atombios_get_tmds_info(struct radeon_encoder *encoder, 996bool radeon_atombios_get_tmds_info(struct radeon_encoder *encoder,
939 struct radeon_encoder_int_tmds *tmds) 997 struct radeon_encoder_int_tmds *tmds)
940{ 998{
@@ -1026,6 +1084,7 @@ static struct radeon_atom_ss *radeon_atombios_get_ss_info(struct
1026 ss->delay = ss_info->asSS_Info[i].ucSS_Delay; 1084 ss->delay = ss_info->asSS_Info[i].ucSS_Delay;
1027 ss->range = ss_info->asSS_Info[i].ucSS_Range; 1085 ss->range = ss_info->asSS_Info[i].ucSS_Range;
1028 ss->refdiv = ss_info->asSS_Info[i].ucRecommendedRef_Div; 1086 ss->refdiv = ss_info->asSS_Info[i].ucRecommendedRef_Div;
1087 break;
1029 } 1088 }
1030 } 1089 }
1031 } 1090 }
diff --git a/drivers/gpu/drm/radeon/radeon_benchmark.c b/drivers/gpu/drm/radeon/radeon_benchmark.c
index 4ddfd4b5bc51..7932dc4d6b90 100644
--- a/drivers/gpu/drm/radeon/radeon_benchmark.c
+++ b/drivers/gpu/drm/radeon/radeon_benchmark.c
@@ -65,31 +65,42 @@ void radeon_benchmark_move(struct radeon_device *rdev, unsigned bsize,
65 if (r) { 65 if (r) {
66 goto out_cleanup; 66 goto out_cleanup;
67 } 67 }
68 start_jiffies = jiffies; 68
69 for (i = 0; i < n; i++) { 69 /* r100 doesn't have dma engine so skip the test */
70 r = radeon_fence_create(rdev, &fence); 70 if (rdev->asic->copy_dma) {
71 if (r) { 71
72 goto out_cleanup; 72 start_jiffies = jiffies;
73 for (i = 0; i < n; i++) {
74 r = radeon_fence_create(rdev, &fence);
75 if (r) {
76 goto out_cleanup;
77 }
78
79 r = radeon_copy_dma(rdev, saddr, daddr,
80 size / RADEON_GPU_PAGE_SIZE, fence);
81
82 if (r) {
83 goto out_cleanup;
84 }
85 r = radeon_fence_wait(fence, false);
86 if (r) {
87 goto out_cleanup;
88 }
89 radeon_fence_unref(&fence);
73 } 90 }
74 r = radeon_copy_dma(rdev, saddr, daddr, size / RADEON_GPU_PAGE_SIZE, fence); 91 end_jiffies = jiffies;
75 if (r) { 92 time = end_jiffies - start_jiffies;
76 goto out_cleanup; 93 time = jiffies_to_msecs(time);
94 if (time > 0) {
95 i = ((n * size) >> 10) / time;
96 printk(KERN_INFO "radeon: dma %u bo moves of %ukb from"
97 " %d to %d in %lums (%ukb/ms %ukb/s %uM/s)\n",
98 n, size >> 10,
99 sdomain, ddomain, time,
100 i, i * 1000, (i * 1000) / 1024);
77 } 101 }
78 r = radeon_fence_wait(fence, false);
79 if (r) {
80 goto out_cleanup;
81 }
82 radeon_fence_unref(&fence);
83 }
84 end_jiffies = jiffies;
85 time = end_jiffies - start_jiffies;
86 time = jiffies_to_msecs(time);
87 if (time > 0) {
88 i = ((n * size) >> 10) / time;
89 printk(KERN_INFO "radeon: dma %u bo moves of %ukb from %d to %d"
90 " in %lums (%ukb/ms %ukb/s %uM/s)\n", n, size >> 10,
91 sdomain, ddomain, time, i, i * 1000, (i * 1000) / 1024);
92 } 102 }
103
93 start_jiffies = jiffies; 104 start_jiffies = jiffies;
94 for (i = 0; i < n; i++) { 105 for (i = 0; i < n; i++) {
95 r = radeon_fence_create(rdev, &fence); 106 r = radeon_fence_create(rdev, &fence);
diff --git a/drivers/gpu/drm/radeon/radeon_clocks.c b/drivers/gpu/drm/radeon/radeon_clocks.c
index 812f24dbc2a8..73c4405bf42f 100644
--- a/drivers/gpu/drm/radeon/radeon_clocks.c
+++ b/drivers/gpu/drm/radeon/radeon_clocks.c
@@ -56,7 +56,7 @@ uint32_t radeon_legacy_get_engine_clock(struct radeon_device *rdev)
56 else if (post_div == 3) 56 else if (post_div == 3)
57 sclk >>= 2; 57 sclk >>= 2;
58 else if (post_div == 4) 58 else if (post_div == 4)
59 sclk >>= 4; 59 sclk >>= 3;
60 60
61 return sclk; 61 return sclk;
62} 62}
@@ -86,7 +86,7 @@ uint32_t radeon_legacy_get_memory_clock(struct radeon_device *rdev)
86 else if (post_div == 3) 86 else if (post_div == 3)
87 mclk >>= 2; 87 mclk >>= 2;
88 else if (post_div == 4) 88 else if (post_div == 4)
89 mclk >>= 4; 89 mclk >>= 3;
90 90
91 return mclk; 91 return mclk;
92} 92}
diff --git a/drivers/gpu/drm/radeon/radeon_combios.c b/drivers/gpu/drm/radeon/radeon_combios.c
index fd94dbca33ac..e7b19440102e 100644
--- a/drivers/gpu/drm/radeon/radeon_combios.c
+++ b/drivers/gpu/drm/radeon/radeon_combios.c
@@ -595,6 +595,48 @@ bool radeon_combios_get_clock_info(struct drm_device *dev)
595 return false; 595 return false;
596} 596}
597 597
598bool radeon_combios_sideport_present(struct radeon_device *rdev)
599{
600 struct drm_device *dev = rdev->ddev;
601 u16 igp_info;
602
603 igp_info = combios_get_table_offset(dev, COMBIOS_INTEGRATED_SYSTEM_INFO_TABLE);
604
605 if (igp_info) {
606 if (RBIOS16(igp_info + 0x4))
607 return true;
608 }
609 return false;
610}
611
612static const uint32_t default_primarydac_adj[CHIP_LAST] = {
613 0x00000808, /* r100 */
614 0x00000808, /* rv100 */
615 0x00000808, /* rs100 */
616 0x00000808, /* rv200 */
617 0x00000808, /* rs200 */
618 0x00000808, /* r200 */
619 0x00000808, /* rv250 */
620 0x00000000, /* rs300 */
621 0x00000808, /* rv280 */
622 0x00000808, /* r300 */
623 0x00000808, /* r350 */
624 0x00000808, /* rv350 */
625 0x00000808, /* rv380 */
626 0x00000808, /* r420 */
627 0x00000808, /* r423 */
628 0x00000808, /* rv410 */
629 0x00000000, /* rs400 */
630 0x00000000, /* rs480 */
631};
632
633static void radeon_legacy_get_primary_dac_info_from_table(struct radeon_device *rdev,
634 struct radeon_encoder_primary_dac *p_dac)
635{
636 p_dac->ps2_pdac_adj = default_primarydac_adj[rdev->family];
637 return;
638}
639
598struct radeon_encoder_primary_dac *radeon_combios_get_primary_dac_info(struct 640struct radeon_encoder_primary_dac *radeon_combios_get_primary_dac_info(struct
599 radeon_encoder 641 radeon_encoder
600 *encoder) 642 *encoder)
@@ -604,20 +646,20 @@ struct radeon_encoder_primary_dac *radeon_combios_get_primary_dac_info(struct
604 uint16_t dac_info; 646 uint16_t dac_info;
605 uint8_t rev, bg, dac; 647 uint8_t rev, bg, dac;
606 struct radeon_encoder_primary_dac *p_dac = NULL; 648 struct radeon_encoder_primary_dac *p_dac = NULL;
649 int found = 0;
607 650
608 if (rdev->bios == NULL) 651 p_dac = kzalloc(sizeof(struct radeon_encoder_primary_dac),
652 GFP_KERNEL);
653
654 if (!p_dac)
609 return NULL; 655 return NULL;
610 656
657 if (rdev->bios == NULL)
658 goto out;
659
611 /* check CRT table */ 660 /* check CRT table */
612 dac_info = combios_get_table_offset(dev, COMBIOS_CRT_INFO_TABLE); 661 dac_info = combios_get_table_offset(dev, COMBIOS_CRT_INFO_TABLE);
613 if (dac_info) { 662 if (dac_info) {
614 p_dac =
615 kzalloc(sizeof(struct radeon_encoder_primary_dac),
616 GFP_KERNEL);
617
618 if (!p_dac)
619 return NULL;
620
621 rev = RBIOS8(dac_info) & 0x3; 663 rev = RBIOS8(dac_info) & 0x3;
622 if (rev < 2) { 664 if (rev < 2) {
623 bg = RBIOS8(dac_info + 0x2) & 0xf; 665 bg = RBIOS8(dac_info + 0x2) & 0xf;
@@ -628,9 +670,13 @@ struct radeon_encoder_primary_dac *radeon_combios_get_primary_dac_info(struct
628 dac = RBIOS8(dac_info + 0x3) & 0xf; 670 dac = RBIOS8(dac_info + 0x3) & 0xf;
629 p_dac->ps2_pdac_adj = (bg << 8) | (dac); 671 p_dac->ps2_pdac_adj = (bg << 8) | (dac);
630 } 672 }
631 673 found = 1;
632 } 674 }
633 675
676out:
677 if (!found) /* fallback to defaults */
678 radeon_legacy_get_primary_dac_info_from_table(rdev, p_dac);
679
634 return p_dac; 680 return p_dac;
635} 681}
636 682
@@ -641,6 +687,9 @@ radeon_combios_get_tv_info(struct radeon_device *rdev)
641 uint16_t tv_info; 687 uint16_t tv_info;
642 enum radeon_tv_std tv_std = TV_STD_NTSC; 688 enum radeon_tv_std tv_std = TV_STD_NTSC;
643 689
690 if (rdev->bios == NULL)
691 return tv_std;
692
644 tv_info = combios_get_table_offset(dev, COMBIOS_TV_INFO_TABLE); 693 tv_info = combios_get_table_offset(dev, COMBIOS_TV_INFO_TABLE);
645 if (tv_info) { 694 if (tv_info) {
646 if (RBIOS8(tv_info + 6) == 'T') { 695 if (RBIOS8(tv_info + 6) == 'T') {
@@ -922,8 +971,7 @@ struct radeon_encoder_lvds *radeon_combios_get_lvds_info(struct radeon_encoder
922 lvds->native_mode.vdisplay); 971 lvds->native_mode.vdisplay);
923 972
924 lvds->panel_vcc_delay = RBIOS16(lcd_info + 0x2c); 973 lvds->panel_vcc_delay = RBIOS16(lcd_info + 0x2c);
925 if (lvds->panel_vcc_delay > 2000 || lvds->panel_vcc_delay < 0) 974 lvds->panel_vcc_delay = min_t(u16, lvds->panel_vcc_delay, 2000);
926 lvds->panel_vcc_delay = 2000;
927 975
928 lvds->panel_pwr_delay = RBIOS8(lcd_info + 0x24); 976 lvds->panel_pwr_delay = RBIOS8(lcd_info + 0x24);
929 lvds->panel_digon_delay = RBIOS16(lcd_info + 0x38) & 0xf; 977 lvds->panel_digon_delay = RBIOS16(lcd_info + 0x38) & 0xf;
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
index 20161567dbff..65f81942f399 100644
--- a/drivers/gpu/drm/radeon/radeon_connectors.c
+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
@@ -49,8 +49,10 @@ void radeon_connector_hotplug(struct drm_connector *connector)
49 if (radeon_connector->hpd.hpd != RADEON_HPD_NONE) 49 if (radeon_connector->hpd.hpd != RADEON_HPD_NONE)
50 radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd); 50 radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd);
51 51
52 if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) { 52 if ((connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) ||
53 if (radeon_dp_getsinktype(radeon_connector) == CONNECTOR_OBJECT_ID_DISPLAYPORT) { 53 (connector->connector_type == DRM_MODE_CONNECTOR_eDP)) {
54 if ((radeon_dp_getsinktype(radeon_connector) == CONNECTOR_OBJECT_ID_DISPLAYPORT) ||
55 (radeon_dp_getsinktype(radeon_connector) == CONNECTOR_OBJECT_ID_eDP)) {
54 if (radeon_dp_needs_link_train(radeon_connector)) { 56 if (radeon_dp_needs_link_train(radeon_connector)) {
55 if (connector->encoder) 57 if (connector->encoder)
56 dp_link_train(connector->encoder, connector); 58 dp_link_train(connector->encoder, connector);
@@ -578,16 +580,18 @@ static enum drm_connector_status radeon_vga_detect(struct drm_connector *connect
578 struct radeon_connector *radeon_connector = to_radeon_connector(connector); 580 struct radeon_connector *radeon_connector = to_radeon_connector(connector);
579 struct drm_encoder *encoder; 581 struct drm_encoder *encoder;
580 struct drm_encoder_helper_funcs *encoder_funcs; 582 struct drm_encoder_helper_funcs *encoder_funcs;
581 bool dret; 583 bool dret = false;
582 enum drm_connector_status ret = connector_status_disconnected; 584 enum drm_connector_status ret = connector_status_disconnected;
583 585
584 encoder = radeon_best_single_encoder(connector); 586 encoder = radeon_best_single_encoder(connector);
585 if (!encoder) 587 if (!encoder)
586 ret = connector_status_disconnected; 588 ret = connector_status_disconnected;
587 589
588 radeon_i2c_do_lock(radeon_connector->ddc_bus, 1); 590 if (radeon_connector->ddc_bus) {
589 dret = radeon_ddc_probe(radeon_connector); 591 radeon_i2c_do_lock(radeon_connector->ddc_bus, 1);
590 radeon_i2c_do_lock(radeon_connector->ddc_bus, 0); 592 dret = radeon_ddc_probe(radeon_connector);
593 radeon_i2c_do_lock(radeon_connector->ddc_bus, 0);
594 }
591 if (dret) { 595 if (dret) {
592 if (radeon_connector->edid) { 596 if (radeon_connector->edid) {
593 kfree(radeon_connector->edid); 597 kfree(radeon_connector->edid);
@@ -615,7 +619,7 @@ static enum drm_connector_status radeon_vga_detect(struct drm_connector *connect
615 ret = connector_status_connected; 619 ret = connector_status_connected;
616 } 620 }
617 } else { 621 } else {
618 if (radeon_connector->dac_load_detect) { 622 if (radeon_connector->dac_load_detect && encoder) {
619 encoder_funcs = encoder->helper_private; 623 encoder_funcs = encoder->helper_private;
620 ret = encoder_funcs->detect(encoder, connector); 624 ret = encoder_funcs->detect(encoder, connector);
621 } 625 }
@@ -738,11 +742,13 @@ static enum drm_connector_status radeon_dvi_detect(struct drm_connector *connect
738 struct drm_mode_object *obj; 742 struct drm_mode_object *obj;
739 int i; 743 int i;
740 enum drm_connector_status ret = connector_status_disconnected; 744 enum drm_connector_status ret = connector_status_disconnected;
741 bool dret; 745 bool dret = false;
742 746
743 radeon_i2c_do_lock(radeon_connector->ddc_bus, 1); 747 if (radeon_connector->ddc_bus) {
744 dret = radeon_ddc_probe(radeon_connector); 748 radeon_i2c_do_lock(radeon_connector->ddc_bus, 1);
745 radeon_i2c_do_lock(radeon_connector->ddc_bus, 0); 749 dret = radeon_ddc_probe(radeon_connector);
750 radeon_i2c_do_lock(radeon_connector->ddc_bus, 0);
751 }
746 if (dret) { 752 if (dret) {
747 if (radeon_connector->edid) { 753 if (radeon_connector->edid) {
748 kfree(radeon_connector->edid); 754 kfree(radeon_connector->edid);
@@ -774,7 +780,7 @@ static enum drm_connector_status radeon_dvi_detect(struct drm_connector *connect
774 * connected and the DVI port disconnected. If the edid doesn't 780 * connected and the DVI port disconnected. If the edid doesn't
775 * say HDMI, vice versa. 781 * say HDMI, vice versa.
776 */ 782 */
777 if (radeon_connector->shared_ddc && connector_status_connected) { 783 if (radeon_connector->shared_ddc && (ret == connector_status_connected)) {
778 struct drm_device *dev = connector->dev; 784 struct drm_device *dev = connector->dev;
779 struct drm_connector *list_connector; 785 struct drm_connector *list_connector;
780 struct radeon_connector *list_radeon_connector; 786 struct radeon_connector *list_radeon_connector;
@@ -898,10 +904,18 @@ static void radeon_dvi_force(struct drm_connector *connector)
898static int radeon_dvi_mode_valid(struct drm_connector *connector, 904static int radeon_dvi_mode_valid(struct drm_connector *connector,
899 struct drm_display_mode *mode) 905 struct drm_display_mode *mode)
900{ 906{
907 struct drm_device *dev = connector->dev;
908 struct radeon_device *rdev = dev->dev_private;
901 struct radeon_connector *radeon_connector = to_radeon_connector(connector); 909 struct radeon_connector *radeon_connector = to_radeon_connector(connector);
902 910
903 /* XXX check mode bandwidth */ 911 /* XXX check mode bandwidth */
904 912
913 /* clocks over 135 MHz have heat issues with DVI on RV100 */
914 if (radeon_connector->use_digital &&
915 (rdev->family == CHIP_RV100) &&
916 (mode->clock > 135000))
917 return MODE_CLOCK_HIGH;
918
905 if (radeon_connector->use_digital && (mode->clock > 165000)) { 919 if (radeon_connector->use_digital && (mode->clock > 165000)) {
906 if ((radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I) || 920 if ((radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I) ||
907 (radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D) || 921 (radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D) ||
@@ -967,7 +981,8 @@ static enum drm_connector_status radeon_dp_detect(struct drm_connector *connecto
967 } 981 }
968 982
969 sink_type = radeon_dp_getsinktype(radeon_connector); 983 sink_type = radeon_dp_getsinktype(radeon_connector);
970 if (sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) { 984 if ((sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) ||
985 (sink_type == CONNECTOR_OBJECT_ID_eDP)) {
971 if (radeon_dp_getdpcd(radeon_connector)) { 986 if (radeon_dp_getdpcd(radeon_connector)) {
972 radeon_dig_connector->dp_sink_type = sink_type; 987 radeon_dig_connector->dp_sink_type = sink_type;
973 ret = connector_status_connected; 988 ret = connector_status_connected;
@@ -992,7 +1007,8 @@ static int radeon_dp_mode_valid(struct drm_connector *connector,
992 1007
993 /* XXX check mode bandwidth */ 1008 /* XXX check mode bandwidth */
994 1009
995 if (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) 1010 if ((radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) ||
1011 (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP))
996 return radeon_dp_mode_valid_helper(radeon_connector, mode); 1012 return radeon_dp_mode_valid_helper(radeon_connector, mode);
997 else 1013 else
998 return MODE_OK; 1014 return MODE_OK;
@@ -1044,8 +1060,7 @@ radeon_add_atom_connector(struct drm_device *dev,
1044 return; 1060 return;
1045 } 1061 }
1046 if (radeon_connector->ddc_bus && i2c_bus->valid) { 1062 if (radeon_connector->ddc_bus && i2c_bus->valid) {
1047 if (memcmp(&radeon_connector->ddc_bus->rec, i2c_bus, 1063 if (radeon_connector->ddc_bus->rec.i2c_id == i2c_bus->i2c_id) {
1048 sizeof(struct radeon_i2c_bus_rec)) == 0) {
1049 radeon_connector->shared_ddc = true; 1064 radeon_connector->shared_ddc = true;
1050 shared_ddc = true; 1065 shared_ddc = true;
1051 } 1066 }
@@ -1145,6 +1160,7 @@ radeon_add_atom_connector(struct drm_device *dev,
1145 subpixel_order = SubPixelHorizontalRGB; 1160 subpixel_order = SubPixelHorizontalRGB;
1146 break; 1161 break;
1147 case DRM_MODE_CONNECTOR_DisplayPort: 1162 case DRM_MODE_CONNECTOR_DisplayPort:
1163 case DRM_MODE_CONNECTOR_eDP:
1148 radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL); 1164 radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL);
1149 if (!radeon_dig_connector) 1165 if (!radeon_dig_connector)
1150 goto failed; 1166 goto failed;
@@ -1157,10 +1173,16 @@ radeon_add_atom_connector(struct drm_device *dev,
1157 goto failed; 1173 goto failed;
1158 if (i2c_bus->valid) { 1174 if (i2c_bus->valid) {
1159 /* add DP i2c bus */ 1175 /* add DP i2c bus */
1160 radeon_dig_connector->dp_i2c_bus = radeon_i2c_create_dp(dev, i2c_bus, "DP-auxch"); 1176 if (connector_type == DRM_MODE_CONNECTOR_eDP)
1177 radeon_dig_connector->dp_i2c_bus = radeon_i2c_create_dp(dev, i2c_bus, "eDP-auxch");
1178 else
1179 radeon_dig_connector->dp_i2c_bus = radeon_i2c_create_dp(dev, i2c_bus, "DP-auxch");
1161 if (!radeon_dig_connector->dp_i2c_bus) 1180 if (!radeon_dig_connector->dp_i2c_bus)
1162 goto failed; 1181 goto failed;
1163 radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "DP"); 1182 if (connector_type == DRM_MODE_CONNECTOR_eDP)
1183 radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "eDP");
1184 else
1185 radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "DP");
1164 if (!radeon_connector->ddc_bus) 1186 if (!radeon_connector->ddc_bus)
1165 goto failed; 1187 goto failed;
1166 } 1188 }
@@ -1324,7 +1346,7 @@ radeon_add_legacy_connector(struct drm_device *dev,
1324 radeon_connector->dac_load_detect = false; 1346 radeon_connector->dac_load_detect = false;
1325 drm_connector_attach_property(&radeon_connector->base, 1347 drm_connector_attach_property(&radeon_connector->base,
1326 rdev->mode_info.load_detect_property, 1348 rdev->mode_info.load_detect_property,
1327 1); 1349 radeon_connector->dac_load_detect);
1328 drm_connector_attach_property(&radeon_connector->base, 1350 drm_connector_attach_property(&radeon_connector->base,
1329 rdev->mode_info.tv_std_property, 1351 rdev->mode_info.tv_std_property,
1330 radeon_combios_get_tv_info(rdev)); 1352 radeon_combios_get_tv_info(rdev));
diff --git a/drivers/gpu/drm/radeon/radeon_cp.c b/drivers/gpu/drm/radeon/radeon_cp.c
index 0b2f9c2ad2c1..06123ba31d31 100644
--- a/drivers/gpu/drm/radeon/radeon_cp.c
+++ b/drivers/gpu/drm/radeon/radeon_cp.c
@@ -2145,6 +2145,7 @@ int radeon_master_create(struct drm_device *dev, struct drm_master *master)
2145 &master_priv->sarea); 2145 &master_priv->sarea);
2146 if (ret) { 2146 if (ret) {
2147 DRM_ERROR("SAREA setup failed\n"); 2147 DRM_ERROR("SAREA setup failed\n");
2148 kfree(master_priv);
2148 return ret; 2149 return ret;
2149 } 2150 }
2150 master_priv->sarea_priv = master_priv->sarea->handle + sizeof(struct drm_sarea); 2151 master_priv->sarea_priv = master_priv->sarea->handle + sizeof(struct drm_sarea);
diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c
index 65590a0f1d93..e9d085021c1f 100644
--- a/drivers/gpu/drm/radeon/radeon_cs.c
+++ b/drivers/gpu/drm/radeon/radeon_cs.c
@@ -86,7 +86,7 @@ int radeon_cs_parser_relocs(struct radeon_cs_parser *p)
86 &p->validated); 86 &p->validated);
87 } 87 }
88 } 88 }
89 return radeon_bo_list_validate(&p->validated, p->ib->fence); 89 return radeon_bo_list_validate(&p->validated);
90} 90}
91 91
92int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data) 92int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data)
@@ -189,12 +189,10 @@ static void radeon_cs_parser_fini(struct radeon_cs_parser *parser, int error)
189{ 189{
190 unsigned i; 190 unsigned i;
191 191
192 if (error) { 192 if (!error && parser->ib) {
193 radeon_bo_list_unvalidate(&parser->validated, 193 radeon_bo_list_fence(&parser->validated, parser->ib->fence);
194 parser->ib->fence);
195 } else {
196 radeon_bo_list_unreserve(&parser->validated);
197 } 194 }
195 radeon_bo_list_unreserve(&parser->validated);
198 for (i = 0; i < parser->nrelocs; i++) { 196 for (i = 0; i < parser->nrelocs; i++) {
199 if (parser->relocs[i].gobj) { 197 if (parser->relocs[i].gobj) {
200 mutex_lock(&parser->rdev->ddev->struct_mutex); 198 mutex_lock(&parser->rdev->ddev->struct_mutex);
@@ -231,6 +229,7 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
231 memset(&parser, 0, sizeof(struct radeon_cs_parser)); 229 memset(&parser, 0, sizeof(struct radeon_cs_parser));
232 parser.filp = filp; 230 parser.filp = filp;
233 parser.rdev = rdev; 231 parser.rdev = rdev;
232 parser.dev = rdev->dev;
234 r = radeon_cs_parser_init(&parser, data); 233 r = radeon_cs_parser_init(&parser, data);
235 if (r) { 234 if (r) {
236 DRM_ERROR("Failed to initialize parser !\n"); 235 DRM_ERROR("Failed to initialize parser !\n");
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
index 7c6848096bcd..768b1509fa03 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -544,6 +544,7 @@ void radeon_agp_disable(struct radeon_device *rdev)
544 rdev->asic->gart_tlb_flush = &r100_pci_gart_tlb_flush; 544 rdev->asic->gart_tlb_flush = &r100_pci_gart_tlb_flush;
545 rdev->asic->gart_set_page = &r100_pci_gart_set_page; 545 rdev->asic->gart_set_page = &r100_pci_gart_set_page;
546 } 546 }
547 rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024;
547} 548}
548 549
549void radeon_check_arguments(struct radeon_device *rdev) 550void radeon_check_arguments(struct radeon_device *rdev)
@@ -733,16 +734,18 @@ void radeon_device_fini(struct radeon_device *rdev)
733 */ 734 */
734int radeon_suspend_kms(struct drm_device *dev, pm_message_t state) 735int radeon_suspend_kms(struct drm_device *dev, pm_message_t state)
735{ 736{
736 struct radeon_device *rdev = dev->dev_private; 737 struct radeon_device *rdev;
737 struct drm_crtc *crtc; 738 struct drm_crtc *crtc;
738 int r; 739 int r;
739 740
740 if (dev == NULL || rdev == NULL) { 741 if (dev == NULL || dev->dev_private == NULL) {
741 return -ENODEV; 742 return -ENODEV;
742 } 743 }
743 if (state.event == PM_EVENT_PRETHAW) { 744 if (state.event == PM_EVENT_PRETHAW) {
744 return 0; 745 return 0;
745 } 746 }
747 rdev = dev->dev_private;
748
746 /* unpin the front buffers */ 749 /* unpin the front buffers */
747 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { 750 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
748 struct radeon_framebuffer *rfb = to_radeon_framebuffer(crtc->fb); 751 struct radeon_framebuffer *rfb = to_radeon_framebuffer(crtc->fb);
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
index 91d72b70abc9..7e17a362b54b 100644
--- a/drivers/gpu/drm/radeon/radeon_display.c
+++ b/drivers/gpu/drm/radeon/radeon_display.c
@@ -234,7 +234,7 @@ static const char *encoder_names[34] = {
234 "INTERNAL_UNIPHY2", 234 "INTERNAL_UNIPHY2",
235}; 235};
236 236
237static const char *connector_names[13] = { 237static const char *connector_names[15] = {
238 "Unknown", 238 "Unknown",
239 "VGA", 239 "VGA",
240 "DVI-I", 240 "DVI-I",
@@ -248,6 +248,8 @@ static const char *connector_names[13] = {
248 "DisplayPort", 248 "DisplayPort",
249 "HDMI-A", 249 "HDMI-A",
250 "HDMI-B", 250 "HDMI-B",
251 "TV",
252 "eDP",
251}; 253};
252 254
253static const char *hpd_names[7] = { 255static const char *hpd_names[7] = {
@@ -276,7 +278,7 @@ static void radeon_print_display_setup(struct drm_device *dev)
276 DRM_INFO(" %s\n", connector_names[connector->connector_type]); 278 DRM_INFO(" %s\n", connector_names[connector->connector_type]);
277 if (radeon_connector->hpd.hpd != RADEON_HPD_NONE) 279 if (radeon_connector->hpd.hpd != RADEON_HPD_NONE)
278 DRM_INFO(" %s\n", hpd_names[radeon_connector->hpd.hpd]); 280 DRM_INFO(" %s\n", hpd_names[radeon_connector->hpd.hpd]);
279 if (radeon_connector->ddc_bus) 281 if (radeon_connector->ddc_bus) {
280 DRM_INFO(" DDC: 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", 282 DRM_INFO(" DDC: 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n",
281 radeon_connector->ddc_bus->rec.mask_clk_reg, 283 radeon_connector->ddc_bus->rec.mask_clk_reg,
282 radeon_connector->ddc_bus->rec.mask_data_reg, 284 radeon_connector->ddc_bus->rec.mask_data_reg,
@@ -286,6 +288,15 @@ static void radeon_print_display_setup(struct drm_device *dev)
286 radeon_connector->ddc_bus->rec.en_data_reg, 288 radeon_connector->ddc_bus->rec.en_data_reg,
287 radeon_connector->ddc_bus->rec.y_clk_reg, 289 radeon_connector->ddc_bus->rec.y_clk_reg,
288 radeon_connector->ddc_bus->rec.y_data_reg); 290 radeon_connector->ddc_bus->rec.y_data_reg);
291 } else {
292 if (connector->connector_type == DRM_MODE_CONNECTOR_VGA ||
293 connector->connector_type == DRM_MODE_CONNECTOR_DVII ||
294 connector->connector_type == DRM_MODE_CONNECTOR_DVID ||
295 connector->connector_type == DRM_MODE_CONNECTOR_DVIA ||
296 connector->connector_type == DRM_MODE_CONNECTOR_HDMIA ||
297 connector->connector_type == DRM_MODE_CONNECTOR_HDMIB)
298 DRM_INFO(" DDC: no ddc bus - possible BIOS bug - please report to xorg-driver-ati@lists.x.org\n");
299 }
289 DRM_INFO(" Encoders:\n"); 300 DRM_INFO(" Encoders:\n");
290 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { 301 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
291 radeon_encoder = to_radeon_encoder(encoder); 302 radeon_encoder = to_radeon_encoder(encoder);
@@ -329,8 +340,11 @@ static bool radeon_setup_enc_conn(struct drm_device *dev)
329 ret = radeon_get_atom_connector_info_from_object_table(dev); 340 ret = radeon_get_atom_connector_info_from_object_table(dev);
330 else 341 else
331 ret = radeon_get_atom_connector_info_from_supported_devices_table(dev); 342 ret = radeon_get_atom_connector_info_from_supported_devices_table(dev);
332 } else 343 } else {
333 ret = radeon_get_legacy_connector_info_from_bios(dev); 344 ret = radeon_get_legacy_connector_info_from_bios(dev);
345 if (ret == false)
346 ret = radeon_get_legacy_connector_info_from_table(dev);
347 }
334 } else { 348 } else {
335 if (!ASIC_IS_AVIVO(rdev)) 349 if (!ASIC_IS_AVIVO(rdev))
336 ret = radeon_get_legacy_connector_info_from_table(dev); 350 ret = radeon_get_legacy_connector_info_from_table(dev);
@@ -349,9 +363,11 @@ int radeon_ddc_get_modes(struct radeon_connector *radeon_connector)
349{ 363{
350 int ret = 0; 364 int ret = 0;
351 365
352 if (radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_DisplayPort) { 366 if ((radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_DisplayPort) ||
367 (radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_eDP)) {
353 struct radeon_connector_atom_dig *dig = radeon_connector->con_priv; 368 struct radeon_connector_atom_dig *dig = radeon_connector->con_priv;
354 if (dig->dp_i2c_bus) 369 if ((dig->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT ||
370 dig->dp_sink_type == CONNECTOR_OBJECT_ID_eDP) && dig->dp_i2c_bus)
355 radeon_connector->edid = drm_get_edid(&radeon_connector->base, &dig->dp_i2c_bus->adapter); 371 radeon_connector->edid = drm_get_edid(&radeon_connector->base, &dig->dp_i2c_bus->adapter);
356 } 372 }
357 if (!radeon_connector->ddc_bus) 373 if (!radeon_connector->ddc_bus)
@@ -404,11 +420,12 @@ void radeon_compute_pll(struct radeon_pll *pll,
404 uint32_t *fb_div_p, 420 uint32_t *fb_div_p,
405 uint32_t *frac_fb_div_p, 421 uint32_t *frac_fb_div_p,
406 uint32_t *ref_div_p, 422 uint32_t *ref_div_p,
407 uint32_t *post_div_p, 423 uint32_t *post_div_p)
408 int flags)
409{ 424{
410 uint32_t min_ref_div = pll->min_ref_div; 425 uint32_t min_ref_div = pll->min_ref_div;
411 uint32_t max_ref_div = pll->max_ref_div; 426 uint32_t max_ref_div = pll->max_ref_div;
427 uint32_t min_post_div = pll->min_post_div;
428 uint32_t max_post_div = pll->max_post_div;
412 uint32_t min_fractional_feed_div = 0; 429 uint32_t min_fractional_feed_div = 0;
413 uint32_t max_fractional_feed_div = 0; 430 uint32_t max_fractional_feed_div = 0;
414 uint32_t best_vco = pll->best_vco; 431 uint32_t best_vco = pll->best_vco;
@@ -424,7 +441,7 @@ void radeon_compute_pll(struct radeon_pll *pll,
424 DRM_DEBUG("PLL freq %llu %u %u\n", freq, pll->min_ref_div, pll->max_ref_div); 441 DRM_DEBUG("PLL freq %llu %u %u\n", freq, pll->min_ref_div, pll->max_ref_div);
425 freq = freq * 1000; 442 freq = freq * 1000;
426 443
427 if (flags & RADEON_PLL_USE_REF_DIV) 444 if (pll->flags & RADEON_PLL_USE_REF_DIV)
428 min_ref_div = max_ref_div = pll->reference_div; 445 min_ref_div = max_ref_div = pll->reference_div;
429 else { 446 else {
430 while (min_ref_div < max_ref_div-1) { 447 while (min_ref_div < max_ref_div-1) {
@@ -439,19 +456,22 @@ void radeon_compute_pll(struct radeon_pll *pll,
439 } 456 }
440 } 457 }
441 458
442 if (flags & RADEON_PLL_USE_FRAC_FB_DIV) { 459 if (pll->flags & RADEON_PLL_USE_POST_DIV)
460 min_post_div = max_post_div = pll->post_div;
461
462 if (pll->flags & RADEON_PLL_USE_FRAC_FB_DIV) {
443 min_fractional_feed_div = pll->min_frac_feedback_div; 463 min_fractional_feed_div = pll->min_frac_feedback_div;
444 max_fractional_feed_div = pll->max_frac_feedback_div; 464 max_fractional_feed_div = pll->max_frac_feedback_div;
445 } 465 }
446 466
447 for (post_div = pll->min_post_div; post_div <= pll->max_post_div; ++post_div) { 467 for (post_div = min_post_div; post_div <= max_post_div; ++post_div) {
448 uint32_t ref_div; 468 uint32_t ref_div;
449 469
450 if ((flags & RADEON_PLL_NO_ODD_POST_DIV) && (post_div & 1)) 470 if ((pll->flags & RADEON_PLL_NO_ODD_POST_DIV) && (post_div & 1))
451 continue; 471 continue;
452 472
453 /* legacy radeons only have a few post_divs */ 473 /* legacy radeons only have a few post_divs */
454 if (flags & RADEON_PLL_LEGACY) { 474 if (pll->flags & RADEON_PLL_LEGACY) {
455 if ((post_div == 5) || 475 if ((post_div == 5) ||
456 (post_div == 7) || 476 (post_div == 7) ||
457 (post_div == 9) || 477 (post_div == 9) ||
@@ -498,7 +518,7 @@ void radeon_compute_pll(struct radeon_pll *pll,
498 tmp += (uint64_t)pll->reference_freq * 1000 * frac_feedback_div; 518 tmp += (uint64_t)pll->reference_freq * 1000 * frac_feedback_div;
499 current_freq = radeon_div(tmp, ref_div * post_div); 519 current_freq = radeon_div(tmp, ref_div * post_div);
500 520
501 if (flags & RADEON_PLL_PREFER_CLOSEST_LOWER) { 521 if (pll->flags & RADEON_PLL_PREFER_CLOSEST_LOWER) {
502 error = freq - current_freq; 522 error = freq - current_freq;
503 error = error < 0 ? 0xffffffff : error; 523 error = error < 0 ? 0xffffffff : error;
504 } else 524 } else
@@ -525,12 +545,12 @@ void radeon_compute_pll(struct radeon_pll *pll,
525 best_freq = current_freq; 545 best_freq = current_freq;
526 best_error = error; 546 best_error = error;
527 best_vco_diff = vco_diff; 547 best_vco_diff = vco_diff;
528 } else if (((flags & RADEON_PLL_PREFER_LOW_REF_DIV) && (ref_div < best_ref_div)) || 548 } else if (((pll->flags & RADEON_PLL_PREFER_LOW_REF_DIV) && (ref_div < best_ref_div)) ||
529 ((flags & RADEON_PLL_PREFER_HIGH_REF_DIV) && (ref_div > best_ref_div)) || 549 ((pll->flags & RADEON_PLL_PREFER_HIGH_REF_DIV) && (ref_div > best_ref_div)) ||
530 ((flags & RADEON_PLL_PREFER_LOW_FB_DIV) && (feedback_div < best_feedback_div)) || 550 ((pll->flags & RADEON_PLL_PREFER_LOW_FB_DIV) && (feedback_div < best_feedback_div)) ||
531 ((flags & RADEON_PLL_PREFER_HIGH_FB_DIV) && (feedback_div > best_feedback_div)) || 551 ((pll->flags & RADEON_PLL_PREFER_HIGH_FB_DIV) && (feedback_div > best_feedback_div)) ||
532 ((flags & RADEON_PLL_PREFER_LOW_POST_DIV) && (post_div < best_post_div)) || 552 ((pll->flags & RADEON_PLL_PREFER_LOW_POST_DIV) && (post_div < best_post_div)) ||
533 ((flags & RADEON_PLL_PREFER_HIGH_POST_DIV) && (post_div > best_post_div))) { 553 ((pll->flags & RADEON_PLL_PREFER_HIGH_POST_DIV) && (post_div > best_post_div))) {
534 best_post_div = post_div; 554 best_post_div = post_div;
535 best_ref_div = ref_div; 555 best_ref_div = ref_div;
536 best_feedback_div = feedback_div; 556 best_feedback_div = feedback_div;
@@ -566,8 +586,7 @@ void radeon_compute_pll_avivo(struct radeon_pll *pll,
566 uint32_t *fb_div_p, 586 uint32_t *fb_div_p,
567 uint32_t *frac_fb_div_p, 587 uint32_t *frac_fb_div_p,
568 uint32_t *ref_div_p, 588 uint32_t *ref_div_p,
569 uint32_t *post_div_p, 589 uint32_t *post_div_p)
570 int flags)
571{ 590{
572 fixed20_12 m, n, frac_n, p, f_vco, f_pclk, best_freq; 591 fixed20_12 m, n, frac_n, p, f_vco, f_pclk, best_freq;
573 fixed20_12 pll_out_max, pll_out_min; 592 fixed20_12 pll_out_max, pll_out_min;
@@ -661,7 +680,6 @@ static void radeon_user_framebuffer_destroy(struct drm_framebuffer *fb)
661 radeonfb_remove(dev, fb); 680 radeonfb_remove(dev, fb);
662 681
663 if (radeon_fb->obj) { 682 if (radeon_fb->obj) {
664 radeon_gem_object_unpin(radeon_fb->obj);
665 mutex_lock(&dev->struct_mutex); 683 mutex_lock(&dev->struct_mutex);
666 drm_gem_object_unreference(radeon_fb->obj); 684 drm_gem_object_unreference(radeon_fb->obj);
667 mutex_unlock(&dev->struct_mutex); 685 mutex_unlock(&dev->struct_mutex);
@@ -709,7 +727,11 @@ radeon_user_framebuffer_create(struct drm_device *dev,
709 struct drm_gem_object *obj; 727 struct drm_gem_object *obj;
710 728
711 obj = drm_gem_object_lookup(dev, file_priv, mode_cmd->handle); 729 obj = drm_gem_object_lookup(dev, file_priv, mode_cmd->handle);
712 730 if (obj == NULL) {
731 dev_err(&dev->pdev->dev, "No GEM object associated to handle 0x%08X, "
732 "can't create framebuffer\n", mode_cmd->handle);
733 return NULL;
734 }
713 return radeon_framebuffer_create(dev, mode_cmd, obj); 735 return radeon_framebuffer_create(dev, mode_cmd, obj);
714} 736}
715 737
diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
index e13785282a82..c57ad606504d 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.h
+++ b/drivers/gpu/drm/radeon/radeon_drv.h
@@ -106,9 +106,10 @@
106 * 1.29- R500 3D cmd buffer support 106 * 1.29- R500 3D cmd buffer support
107 * 1.30- Add support for occlusion queries 107 * 1.30- Add support for occlusion queries
108 * 1.31- Add support for num Z pipes from GET_PARAM 108 * 1.31- Add support for num Z pipes from GET_PARAM
109 * 1.32- fixes for rv740 setup
109 */ 110 */
110#define DRIVER_MAJOR 1 111#define DRIVER_MAJOR 1
111#define DRIVER_MINOR 31 112#define DRIVER_MINOR 32
112#define DRIVER_PATCHLEVEL 0 113#define DRIVER_PATCHLEVEL 0
113 114
114enum radeon_cp_microcode_version { 115enum radeon_cp_microcode_version {
diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c
index ccba95f83d11..3c91724457ca 100644
--- a/drivers/gpu/drm/radeon/radeon_encoders.c
+++ b/drivers/gpu/drm/radeon/radeon_encoders.c
@@ -156,6 +156,26 @@ radeon_get_encoder_id(struct drm_device *dev, uint32_t supported_device, uint8_t
156 return ret; 156 return ret;
157} 157}
158 158
159static inline bool radeon_encoder_is_digital(struct drm_encoder *encoder)
160{
161 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
162 switch (radeon_encoder->encoder_id) {
163 case ENCODER_OBJECT_ID_INTERNAL_LVDS:
164 case ENCODER_OBJECT_ID_INTERNAL_TMDS1:
165 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1:
166 case ENCODER_OBJECT_ID_INTERNAL_LVTM1:
167 case ENCODER_OBJECT_ID_INTERNAL_DVO1:
168 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1:
169 case ENCODER_OBJECT_ID_INTERNAL_DDI:
170 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
171 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA:
172 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
173 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
174 return true;
175 default:
176 return false;
177 }
178}
159void 179void
160radeon_link_encoder_connector(struct drm_device *dev) 180radeon_link_encoder_connector(struct drm_device *dev)
161{ 181{
@@ -202,7 +222,7 @@ radeon_get_connector_for_encoder(struct drm_encoder *encoder)
202 222
203 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { 223 list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
204 radeon_connector = to_radeon_connector(connector); 224 radeon_connector = to_radeon_connector(connector);
205 if (radeon_encoder->devices & radeon_connector->devices) 225 if (radeon_encoder->active_device & radeon_connector->devices)
206 return connector; 226 return connector;
207 } 227 }
208 return NULL; 228 return NULL;
@@ -596,21 +616,23 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
596 return ATOM_ENCODER_MODE_LVDS; 616 return ATOM_ENCODER_MODE_LVDS;
597 break; 617 break;
598 case DRM_MODE_CONNECTOR_DisplayPort: 618 case DRM_MODE_CONNECTOR_DisplayPort:
619 case DRM_MODE_CONNECTOR_eDP:
599 radeon_dig_connector = radeon_connector->con_priv; 620 radeon_dig_connector = radeon_connector->con_priv;
600 if (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) 621 if ((radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) ||
622 (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP))
601 return ATOM_ENCODER_MODE_DP; 623 return ATOM_ENCODER_MODE_DP;
602 else if (drm_detect_hdmi_monitor(radeon_connector->edid)) 624 else if (drm_detect_hdmi_monitor(radeon_connector->edid))
603 return ATOM_ENCODER_MODE_HDMI; 625 return ATOM_ENCODER_MODE_HDMI;
604 else 626 else
605 return ATOM_ENCODER_MODE_DVI; 627 return ATOM_ENCODER_MODE_DVI;
606 break; 628 break;
607 case CONNECTOR_DVI_A: 629 case DRM_MODE_CONNECTOR_DVIA:
608 case CONNECTOR_VGA: 630 case DRM_MODE_CONNECTOR_VGA:
609 return ATOM_ENCODER_MODE_CRT; 631 return ATOM_ENCODER_MODE_CRT;
610 break; 632 break;
611 case CONNECTOR_STV: 633 case DRM_MODE_CONNECTOR_Composite:
612 case CONNECTOR_CTV: 634 case DRM_MODE_CONNECTOR_SVIDEO:
613 case CONNECTOR_DIN: 635 case DRM_MODE_CONNECTOR_9PinDIN:
614 /* fix me */ 636 /* fix me */
615 return ATOM_ENCODER_MODE_TV; 637 return ATOM_ENCODER_MODE_TV;
616 /*return ATOM_ENCODER_MODE_CV;*/ 638 /*return ATOM_ENCODER_MODE_CV;*/
@@ -674,31 +696,11 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action)
674 696
675 memset(&args, 0, sizeof(args)); 697 memset(&args, 0, sizeof(args));
676 698
677 if (ASIC_IS_DCE32(rdev)) { 699 if (dig->dig_encoder)
678 if (dig->dig_block) 700 index = GetIndexIntoMasterTable(COMMAND, DIG2EncoderControl);
679 index = GetIndexIntoMasterTable(COMMAND, DIG2EncoderControl); 701 else
680 else 702 index = GetIndexIntoMasterTable(COMMAND, DIG1EncoderControl);
681 index = GetIndexIntoMasterTable(COMMAND, DIG1EncoderControl); 703 num = dig->dig_encoder + 1;
682 num = dig->dig_block + 1;
683 } else {
684 switch (radeon_encoder->encoder_id) {
685 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
686 /* XXX doesn't really matter which dig encoder we pick as long as it's
687 * not already in use
688 */
689 if (dig_connector->linkb)
690 index = GetIndexIntoMasterTable(COMMAND, DIG2EncoderControl);
691 else
692 index = GetIndexIntoMasterTable(COMMAND, DIG1EncoderControl);
693 num = 1;
694 break;
695 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA:
696 /* Only dig2 encoder can drive LVTMA */
697 index = GetIndexIntoMasterTable(COMMAND, DIG2EncoderControl);
698 num = 2;
699 break;
700 }
701 }
702 704
703 atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, &crev); 705 atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, &crev);
704 706
@@ -820,7 +822,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
820 args.v1.usPixelClock = cpu_to_le16(radeon_encoder->pixel_clock / 10); 822 args.v1.usPixelClock = cpu_to_le16(radeon_encoder->pixel_clock / 10);
821 } 823 }
822 if (ASIC_IS_DCE32(rdev)) { 824 if (ASIC_IS_DCE32(rdev)) {
823 if (dig->dig_block) 825 if (dig->dig_encoder == 1)
824 args.v2.acConfig.ucEncoderSel = 1; 826 args.v2.acConfig.ucEncoderSel = 1;
825 if (dig_connector->linkb) 827 if (dig_connector->linkb)
826 args.v2.acConfig.ucLinkSel = 1; 828 args.v2.acConfig.ucLinkSel = 1;
@@ -847,17 +849,16 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
847 args.v2.acConfig.fCoherentMode = 1; 849 args.v2.acConfig.fCoherentMode = 1;
848 } 850 }
849 } else { 851 } else {
852
850 args.v1.ucConfig = ATOM_TRANSMITTER_CONFIG_CLKSRC_PPLL; 853 args.v1.ucConfig = ATOM_TRANSMITTER_CONFIG_CLKSRC_PPLL;
851 854
855 if (dig->dig_encoder)
856 args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_DIG2_ENCODER;
857 else
858 args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_DIG1_ENCODER;
859
852 switch (radeon_encoder->encoder_id) { 860 switch (radeon_encoder->encoder_id) {
853 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: 861 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
854 /* XXX doesn't really matter which dig encoder we pick as long as it's
855 * not already in use
856 */
857 if (dig_connector->linkb)
858 args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_DIG2_ENCODER;
859 else
860 args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_DIG1_ENCODER;
861 if (rdev->flags & RADEON_IS_IGP) { 862 if (rdev->flags & RADEON_IS_IGP) {
862 if (radeon_encoder->pixel_clock > 165000) { 863 if (radeon_encoder->pixel_clock > 165000) {
863 if (dig_connector->igp_lane_info & 0x3) 864 if (dig_connector->igp_lane_info & 0x3)
@@ -876,10 +877,6 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
876 } 877 }
877 } 878 }
878 break; 879 break;
879 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA:
880 /* Only dig2 encoder can drive LVTMA */
881 args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_DIG2_ENCODER;
882 break;
883 } 880 }
884 881
885 if (radeon_encoder->pixel_clock > 165000) 882 if (radeon_encoder->pixel_clock > 165000)
@@ -1044,6 +1041,7 @@ atombios_set_encoder_crtc_source(struct drm_encoder *encoder)
1044 union crtc_sourc_param args; 1041 union crtc_sourc_param args;
1045 int index = GetIndexIntoMasterTable(COMMAND, SelectCRTC_Source); 1042 int index = GetIndexIntoMasterTable(COMMAND, SelectCRTC_Source);
1046 uint8_t frev, crev; 1043 uint8_t frev, crev;
1044 struct radeon_encoder_atom_dig *dig;
1047 1045
1048 memset(&args, 0, sizeof(args)); 1046 memset(&args, 0, sizeof(args));
1049 1047
@@ -1107,40 +1105,16 @@ atombios_set_encoder_crtc_source(struct drm_encoder *encoder)
1107 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: 1105 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
1108 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: 1106 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
1109 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2: 1107 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
1110 if (ASIC_IS_DCE32(rdev)) { 1108 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA:
1111 if (radeon_crtc->crtc_id) 1109 dig = radeon_encoder->enc_priv;
1112 args.v2.ucEncoderID = ASIC_INT_DIG2_ENCODER_ID; 1110 if (dig->dig_encoder)
1113 else 1111 args.v2.ucEncoderID = ASIC_INT_DIG2_ENCODER_ID;
1114 args.v2.ucEncoderID = ASIC_INT_DIG1_ENCODER_ID; 1112 else
1115 } else { 1113 args.v2.ucEncoderID = ASIC_INT_DIG1_ENCODER_ID;
1116 struct drm_connector *connector;
1117 struct radeon_connector *radeon_connector;
1118 struct radeon_connector_atom_dig *dig_connector;
1119
1120 connector = radeon_get_connector_for_encoder(encoder);
1121 if (!connector)
1122 return;
1123 radeon_connector = to_radeon_connector(connector);
1124 if (!radeon_connector->con_priv)
1125 return;
1126 dig_connector = radeon_connector->con_priv;
1127
1128 /* XXX doesn't really matter which dig encoder we pick as long as it's
1129 * not already in use
1130 */
1131 if (dig_connector->linkb)
1132 args.v2.ucEncoderID = ASIC_INT_DIG2_ENCODER_ID;
1133 else
1134 args.v2.ucEncoderID = ASIC_INT_DIG1_ENCODER_ID;
1135 }
1136 break; 1114 break;
1137 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1: 1115 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1:
1138 args.v2.ucEncoderID = ASIC_INT_DVO_ENCODER_ID; 1116 args.v2.ucEncoderID = ASIC_INT_DVO_ENCODER_ID;
1139 break; 1117 break;
1140 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA:
1141 /* Only dig2 encoder can drive LVTMA */
1142 args.v2.ucEncoderID = ASIC_INT_DIG2_ENCODER_ID;
1143 break;
1144 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1: 1118 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1:
1145 if (radeon_encoder->active_device & (ATOM_DEVICE_TV_SUPPORT)) 1119 if (radeon_encoder->active_device & (ATOM_DEVICE_TV_SUPPORT))
1146 args.v2.ucEncoderID = ASIC_INT_TV_ENCODER_ID; 1120 args.v2.ucEncoderID = ASIC_INT_TV_ENCODER_ID;
@@ -1200,6 +1174,47 @@ atombios_apply_encoder_quirks(struct drm_encoder *encoder,
1200 } 1174 }
1201} 1175}
1202 1176
1177static int radeon_atom_pick_dig_encoder(struct drm_encoder *encoder)
1178{
1179 struct drm_device *dev = encoder->dev;
1180 struct radeon_device *rdev = dev->dev_private;
1181 struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
1182 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1183 struct drm_encoder *test_encoder;
1184 struct radeon_encoder_atom_dig *dig;
1185 uint32_t dig_enc_in_use = 0;
1186 /* on DCE32 and encoder can driver any block so just crtc id */
1187 if (ASIC_IS_DCE32(rdev)) {
1188 return radeon_crtc->crtc_id;
1189 }
1190
1191 /* on DCE3 - LVTMA can only be driven by DIGB */
1192 list_for_each_entry(test_encoder, &dev->mode_config.encoder_list, head) {
1193 struct radeon_encoder *radeon_test_encoder;
1194
1195 if (encoder == test_encoder)
1196 continue;
1197
1198 if (!radeon_encoder_is_digital(test_encoder))
1199 continue;
1200
1201 radeon_test_encoder = to_radeon_encoder(test_encoder);
1202 dig = radeon_test_encoder->enc_priv;
1203
1204 if (dig->dig_encoder >= 0)
1205 dig_enc_in_use |= (1 << dig->dig_encoder);
1206 }
1207
1208 if (radeon_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA) {
1209 if (dig_enc_in_use & 0x2)
1210 DRM_ERROR("LVDS required digital encoder 2 but it was in use - stealing\n");
1211 return 1;
1212 }
1213 if (!(dig_enc_in_use & 1))
1214 return 0;
1215 return 1;
1216}
1217
1203static void 1218static void
1204radeon_atom_encoder_mode_set(struct drm_encoder *encoder, 1219radeon_atom_encoder_mode_set(struct drm_encoder *encoder,
1205 struct drm_display_mode *mode, 1220 struct drm_display_mode *mode,
@@ -1212,12 +1227,9 @@ radeon_atom_encoder_mode_set(struct drm_encoder *encoder,
1212 1227
1213 if (radeon_encoder->active_device & 1228 if (radeon_encoder->active_device &
1214 (ATOM_DEVICE_DFP_SUPPORT | ATOM_DEVICE_LCD_SUPPORT)) { 1229 (ATOM_DEVICE_DFP_SUPPORT | ATOM_DEVICE_LCD_SUPPORT)) {
1215 if (radeon_encoder->enc_priv) { 1230 struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv;
1216 struct radeon_encoder_atom_dig *dig; 1231 if (dig)
1217 1232 dig->dig_encoder = radeon_atom_pick_dig_encoder(encoder);
1218 dig = radeon_encoder->enc_priv;
1219 dig->dig_block = radeon_crtc->crtc_id;
1220 }
1221 } 1233 }
1222 radeon_encoder->pixel_clock = adjusted_mode->clock; 1234 radeon_encoder->pixel_clock = adjusted_mode->clock;
1223 1235
@@ -1377,7 +1389,13 @@ static void radeon_atom_encoder_commit(struct drm_encoder *encoder)
1377static void radeon_atom_encoder_disable(struct drm_encoder *encoder) 1389static void radeon_atom_encoder_disable(struct drm_encoder *encoder)
1378{ 1390{
1379 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); 1391 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
1392 struct radeon_encoder_atom_dig *dig;
1380 radeon_atom_encoder_dpms(encoder, DRM_MODE_DPMS_OFF); 1393 radeon_atom_encoder_dpms(encoder, DRM_MODE_DPMS_OFF);
1394
1395 if (radeon_encoder_is_digital(encoder)) {
1396 dig = radeon_encoder->enc_priv;
1397 dig->dig_encoder = -1;
1398 }
1381 radeon_encoder->active_device = 0; 1399 radeon_encoder->active_device = 0;
1382} 1400}
1383 1401
@@ -1434,6 +1452,7 @@ radeon_atombios_set_dig_info(struct radeon_encoder *radeon_encoder)
1434 1452
1435 /* coherent mode by default */ 1453 /* coherent mode by default */
1436 dig->coherent_mode = true; 1454 dig->coherent_mode = true;
1455 dig->dig_encoder = -1;
1437 1456
1438 return dig; 1457 return dig;
1439} 1458}
diff --git a/drivers/gpu/drm/radeon/radeon_fb.c b/drivers/gpu/drm/radeon/radeon_fb.c
index 3ba213d1b06c..d71e346e9ab5 100644
--- a/drivers/gpu/drm/radeon/radeon_fb.c
+++ b/drivers/gpu/drm/radeon/radeon_fb.c
@@ -248,7 +248,7 @@ int radeonfb_create(struct drm_device *dev,
248 if (ret) 248 if (ret)
249 goto out_unref; 249 goto out_unref;
250 250
251 memset_io(fbptr, 0xff, aligned_size); 251 memset_io(fbptr, 0x0, aligned_size);
252 252
253 strcpy(info->fix.id, "radeondrmfb"); 253 strcpy(info->fix.id, "radeondrmfb");
254 254
diff --git a/drivers/gpu/drm/radeon/radeon_fence.c b/drivers/gpu/drm/radeon/radeon_fence.c
index 4cdd8b4f7549..8495d4e32e18 100644
--- a/drivers/gpu/drm/radeon/radeon_fence.c
+++ b/drivers/gpu/drm/radeon/radeon_fence.c
@@ -140,16 +140,15 @@ int radeon_fence_create(struct radeon_device *rdev, struct radeon_fence **fence)
140 140
141bool radeon_fence_signaled(struct radeon_fence *fence) 141bool radeon_fence_signaled(struct radeon_fence *fence)
142{ 142{
143 struct radeon_device *rdev = fence->rdev;
144 unsigned long irq_flags; 143 unsigned long irq_flags;
145 bool signaled = false; 144 bool signaled = false;
146 145
147 if (rdev->gpu_lockup) { 146 if (!fence)
148 return true; 147 return true;
149 } 148
150 if (fence == NULL) { 149 if (fence->rdev->gpu_lockup)
151 return true; 150 return true;
152 } 151
153 write_lock_irqsave(&fence->rdev->fence_drv.lock, irq_flags); 152 write_lock_irqsave(&fence->rdev->fence_drv.lock, irq_flags);
154 signaled = fence->signaled; 153 signaled = fence->signaled;
155 /* if we are shuting down report all fence as signaled */ 154 /* if we are shuting down report all fence as signaled */
diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c
index 60df2d7e7e4c..db8e9a355a01 100644
--- a/drivers/gpu/drm/radeon/radeon_gem.c
+++ b/drivers/gpu/drm/radeon/radeon_gem.c
@@ -131,7 +131,6 @@ int radeon_gem_set_domain(struct drm_gem_object *gobj,
131 printk(KERN_ERR "Failed to wait for object !\n"); 131 printk(KERN_ERR "Failed to wait for object !\n");
132 return r; 132 return r;
133 } 133 }
134 radeon_hdp_flush(robj->rdev);
135 } 134 }
136 return 0; 135 return 0;
137} 136}
@@ -309,10 +308,12 @@ int radeon_gem_wait_idle_ioctl(struct drm_device *dev, void *data,
309 } 308 }
310 robj = gobj->driver_private; 309 robj = gobj->driver_private;
311 r = radeon_bo_wait(robj, NULL, false); 310 r = radeon_bo_wait(robj, NULL, false);
311 /* callback hw specific functions if any */
312 if (robj->rdev->asic->ioctl_wait_idle)
313 robj->rdev->asic->ioctl_wait_idle(robj->rdev, robj);
312 mutex_lock(&dev->struct_mutex); 314 mutex_lock(&dev->struct_mutex);
313 drm_gem_object_unreference(gobj); 315 drm_gem_object_unreference(gobj);
314 mutex_unlock(&dev->struct_mutex); 316 mutex_unlock(&dev->struct_mutex);
315 radeon_hdp_flush(robj->rdev);
316 return r; 317 return r;
317} 318}
318 319
diff --git a/drivers/gpu/drm/radeon/radeon_irq.c b/drivers/gpu/drm/radeon/radeon_irq.c
index b79ecc4a7cc4..2f349a300195 100644
--- a/drivers/gpu/drm/radeon/radeon_irq.c
+++ b/drivers/gpu/drm/radeon/radeon_irq.c
@@ -289,16 +289,16 @@ int radeon_irq_emit(struct drm_device *dev, void *data, struct drm_file *file_pr
289 drm_radeon_irq_emit_t *emit = data; 289 drm_radeon_irq_emit_t *emit = data;
290 int result; 290 int result;
291 291
292 if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_R600)
293 return -EINVAL;
294
295 LOCK_TEST_WITH_RETURN(dev, file_priv);
296
297 if (!dev_priv) { 292 if (!dev_priv) {
298 DRM_ERROR("called with no initialization\n"); 293 DRM_ERROR("called with no initialization\n");
299 return -EINVAL; 294 return -EINVAL;
300 } 295 }
301 296
297 if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_R600)
298 return -EINVAL;
299
300 LOCK_TEST_WITH_RETURN(dev, file_priv);
301
302 result = radeon_emit_irq(dev); 302 result = radeon_emit_irq(dev);
303 303
304 if (DRM_COPY_TO_USER(emit->irq_seq, &result, sizeof(int))) { 304 if (DRM_COPY_TO_USER(emit->irq_seq, &result, sizeof(int))) {
diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c b/drivers/gpu/drm/radeon/radeon_irq_kms.c
index 9223296fe37b..3cfd60fd0083 100644
--- a/drivers/gpu/drm/radeon/radeon_irq_kms.c
+++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c
@@ -97,6 +97,7 @@ void radeon_driver_irq_uninstall_kms(struct drm_device *dev)
97 rdev->irq.sw_int = false; 97 rdev->irq.sw_int = false;
98 for (i = 0; i < 2; i++) { 98 for (i = 0; i < 2; i++) {
99 rdev->irq.crtc_vblank_int[i] = false; 99 rdev->irq.crtc_vblank_int[i] = false;
100 rdev->irq.hpd[i] = false;
100 } 101 }
101 radeon_irq_set(rdev); 102 radeon_irq_set(rdev);
102} 103}
@@ -128,17 +129,22 @@ int radeon_irq_kms_init(struct radeon_device *rdev)
128 DRM_INFO("radeon: using MSI.\n"); 129 DRM_INFO("radeon: using MSI.\n");
129 } 130 }
130 } 131 }
131 drm_irq_install(rdev->ddev);
132 rdev->irq.installed = true; 132 rdev->irq.installed = true;
133 r = drm_irq_install(rdev->ddev);
134 if (r) {
135 rdev->irq.installed = false;
136 return r;
137 }
133 DRM_INFO("radeon: irq initialized.\n"); 138 DRM_INFO("radeon: irq initialized.\n");
134 return 0; 139 return 0;
135} 140}
136 141
137void radeon_irq_kms_fini(struct radeon_device *rdev) 142void radeon_irq_kms_fini(struct radeon_device *rdev)
138{ 143{
144 drm_vblank_cleanup(rdev->ddev);
139 if (rdev->irq.installed) { 145 if (rdev->irq.installed) {
140 rdev->irq.installed = false;
141 drm_irq_uninstall(rdev->ddev); 146 drm_irq_uninstall(rdev->ddev);
147 rdev->irq.installed = false;
142 if (rdev->msi_enabled) 148 if (rdev->msi_enabled)
143 pci_disable_msi(rdev->pdev); 149 pci_disable_msi(rdev->pdev);
144 } 150 }
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
index cc27485a07ad..b6d8081e1246 100644
--- a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
+++ b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
@@ -339,69 +339,6 @@ void radeon_crtc_dpms(struct drm_crtc *crtc, int mode)
339 } 339 }
340} 340}
341 341
342/* properly set crtc bpp when using atombios */
343void radeon_legacy_atom_set_surface(struct drm_crtc *crtc)
344{
345 struct drm_device *dev = crtc->dev;
346 struct radeon_device *rdev = dev->dev_private;
347 struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
348 int format;
349 uint32_t crtc_gen_cntl;
350 uint32_t disp_merge_cntl;
351 uint32_t crtc_pitch;
352
353 switch (crtc->fb->bits_per_pixel) {
354 case 8:
355 format = 2;
356 break;
357 case 15: /* 555 */
358 format = 3;
359 break;
360 case 16: /* 565 */
361 format = 4;
362 break;
363 case 24: /* RGB */
364 format = 5;
365 break;
366 case 32: /* xRGB */
367 format = 6;
368 break;
369 default:
370 return;
371 }
372
373 crtc_pitch = ((((crtc->fb->pitch / (crtc->fb->bits_per_pixel / 8)) * crtc->fb->bits_per_pixel) +
374 ((crtc->fb->bits_per_pixel * 8) - 1)) /
375 (crtc->fb->bits_per_pixel * 8));
376 crtc_pitch |= crtc_pitch << 16;
377
378 WREG32(RADEON_CRTC_PITCH + radeon_crtc->crtc_offset, crtc_pitch);
379
380 switch (radeon_crtc->crtc_id) {
381 case 0:
382 disp_merge_cntl = RREG32(RADEON_DISP_MERGE_CNTL);
383 disp_merge_cntl &= ~RADEON_DISP_RGB_OFFSET_EN;
384 WREG32(RADEON_DISP_MERGE_CNTL, disp_merge_cntl);
385
386 crtc_gen_cntl = RREG32(RADEON_CRTC_GEN_CNTL) & 0xfffff0ff;
387 crtc_gen_cntl |= (format << 8);
388 crtc_gen_cntl |= RADEON_CRTC_EXT_DISP_EN;
389 WREG32(RADEON_CRTC_GEN_CNTL, crtc_gen_cntl);
390 break;
391 case 1:
392 disp_merge_cntl = RREG32(RADEON_DISP2_MERGE_CNTL);
393 disp_merge_cntl &= ~RADEON_DISP2_RGB_OFFSET_EN;
394 WREG32(RADEON_DISP2_MERGE_CNTL, disp_merge_cntl);
395
396 crtc_gen_cntl = RREG32(RADEON_CRTC2_GEN_CNTL) & 0xfffff0ff;
397 crtc_gen_cntl |= (format << 8);
398 WREG32(RADEON_CRTC2_GEN_CNTL, crtc_gen_cntl);
399 WREG32(RADEON_FP_H2_SYNC_STRT_WID, RREG32(RADEON_CRTC2_H_SYNC_STRT_WID));
400 WREG32(RADEON_FP_V2_SYNC_STRT_WID, RREG32(RADEON_CRTC2_V_SYNC_STRT_WID));
401 break;
402 }
403}
404
405int radeon_crtc_set_base(struct drm_crtc *crtc, int x, int y, 342int radeon_crtc_set_base(struct drm_crtc *crtc, int x, int y,
406 struct drm_framebuffer *old_fb) 343 struct drm_framebuffer *old_fb)
407{ 344{
@@ -755,7 +692,6 @@ static void radeon_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode)
755 uint32_t post_divider = 0; 692 uint32_t post_divider = 0;
756 uint32_t freq = 0; 693 uint32_t freq = 0;
757 uint8_t pll_gain; 694 uint8_t pll_gain;
758 int pll_flags = RADEON_PLL_LEGACY;
759 bool use_bios_divs = false; 695 bool use_bios_divs = false;
760 /* PLL registers */ 696 /* PLL registers */
761 uint32_t pll_ref_div = 0; 697 uint32_t pll_ref_div = 0;
@@ -789,10 +725,12 @@ static void radeon_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode)
789 else 725 else
790 pll = &rdev->clock.p1pll; 726 pll = &rdev->clock.p1pll;
791 727
728 pll->flags = RADEON_PLL_LEGACY;
729
792 if (mode->clock > 200000) /* range limits??? */ 730 if (mode->clock > 200000) /* range limits??? */
793 pll_flags |= RADEON_PLL_PREFER_HIGH_FB_DIV; 731 pll->flags |= RADEON_PLL_PREFER_HIGH_FB_DIV;
794 else 732 else
795 pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV; 733 pll->flags |= RADEON_PLL_PREFER_LOW_REF_DIV;
796 734
797 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { 735 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
798 if (encoder->crtc == crtc) { 736 if (encoder->crtc == crtc) {
@@ -804,7 +742,7 @@ static void radeon_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode)
804 } 742 }
805 743
806 if (encoder->encoder_type != DRM_MODE_ENCODER_DAC) 744 if (encoder->encoder_type != DRM_MODE_ENCODER_DAC)
807 pll_flags |= RADEON_PLL_NO_ODD_POST_DIV; 745 pll->flags |= RADEON_PLL_NO_ODD_POST_DIV;
808 if (encoder->encoder_type == DRM_MODE_ENCODER_LVDS) { 746 if (encoder->encoder_type == DRM_MODE_ENCODER_LVDS) {
809 if (!rdev->is_atom_bios) { 747 if (!rdev->is_atom_bios) {
810 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); 748 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
@@ -819,7 +757,7 @@ static void radeon_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode)
819 } 757 }
820 } 758 }
821 } 759 }
822 pll_flags |= RADEON_PLL_USE_REF_DIV; 760 pll->flags |= RADEON_PLL_USE_REF_DIV;
823 } 761 }
824 } 762 }
825 } 763 }
@@ -829,8 +767,7 @@ static void radeon_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode)
829 if (!use_bios_divs) { 767 if (!use_bios_divs) {
830 radeon_compute_pll(pll, mode->clock, 768 radeon_compute_pll(pll, mode->clock,
831 &freq, &feedback_div, &frac_fb_div, 769 &freq, &feedback_div, &frac_fb_div,
832 &reference_div, &post_divider, 770 &reference_div, &post_divider);
833 pll_flags);
834 771
835 for (post_div = &post_divs[0]; post_div->divider; ++post_div) { 772 for (post_div = &post_divs[0]; post_div->divider; ++post_div) {
836 if (post_div->divider == post_divider) 773 if (post_div->divider == post_divider)
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
index 981508ff7037..38e45e231ef5 100644
--- a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
+++ b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
@@ -46,6 +46,7 @@ static void radeon_legacy_lvds_dpms(struct drm_encoder *encoder, int mode)
46 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); 46 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
47 uint32_t lvds_gen_cntl, lvds_pll_cntl, pixclks_cntl, disp_pwr_man; 47 uint32_t lvds_gen_cntl, lvds_pll_cntl, pixclks_cntl, disp_pwr_man;
48 int panel_pwr_delay = 2000; 48 int panel_pwr_delay = 2000;
49 bool is_mac = false;
49 DRM_DEBUG("\n"); 50 DRM_DEBUG("\n");
50 51
51 if (radeon_encoder->enc_priv) { 52 if (radeon_encoder->enc_priv) {
@@ -58,6 +59,15 @@ static void radeon_legacy_lvds_dpms(struct drm_encoder *encoder, int mode)
58 } 59 }
59 } 60 }
60 61
62 /* macs (and possibly some x86 oem systems?) wire up LVDS strangely
63 * Taken from radeonfb.
64 */
65 if ((rdev->mode_info.connector_table == CT_IBOOK) ||
66 (rdev->mode_info.connector_table == CT_POWERBOOK_EXTERNAL) ||
67 (rdev->mode_info.connector_table == CT_POWERBOOK_INTERNAL) ||
68 (rdev->mode_info.connector_table == CT_POWERBOOK_VGA))
69 is_mac = true;
70
61 switch (mode) { 71 switch (mode) {
62 case DRM_MODE_DPMS_ON: 72 case DRM_MODE_DPMS_ON:
63 disp_pwr_man = RREG32(RADEON_DISP_PWR_MAN); 73 disp_pwr_man = RREG32(RADEON_DISP_PWR_MAN);
@@ -74,6 +84,8 @@ static void radeon_legacy_lvds_dpms(struct drm_encoder *encoder, int mode)
74 84
75 lvds_gen_cntl = RREG32(RADEON_LVDS_GEN_CNTL); 85 lvds_gen_cntl = RREG32(RADEON_LVDS_GEN_CNTL);
76 lvds_gen_cntl |= (RADEON_LVDS_ON | RADEON_LVDS_EN | RADEON_LVDS_DIGON | RADEON_LVDS_BLON); 86 lvds_gen_cntl |= (RADEON_LVDS_ON | RADEON_LVDS_EN | RADEON_LVDS_DIGON | RADEON_LVDS_BLON);
87 if (is_mac)
88 lvds_gen_cntl |= RADEON_LVDS_BL_MOD_EN;
77 lvds_gen_cntl &= ~(RADEON_LVDS_DISPLAY_DIS); 89 lvds_gen_cntl &= ~(RADEON_LVDS_DISPLAY_DIS);
78 udelay(panel_pwr_delay * 1000); 90 udelay(panel_pwr_delay * 1000);
79 WREG32(RADEON_LVDS_GEN_CNTL, lvds_gen_cntl); 91 WREG32(RADEON_LVDS_GEN_CNTL, lvds_gen_cntl);
@@ -85,7 +97,14 @@ static void radeon_legacy_lvds_dpms(struct drm_encoder *encoder, int mode)
85 WREG32_PLL_P(RADEON_PIXCLKS_CNTL, 0, ~RADEON_PIXCLK_LVDS_ALWAYS_ONb); 97 WREG32_PLL_P(RADEON_PIXCLKS_CNTL, 0, ~RADEON_PIXCLK_LVDS_ALWAYS_ONb);
86 lvds_gen_cntl = RREG32(RADEON_LVDS_GEN_CNTL); 98 lvds_gen_cntl = RREG32(RADEON_LVDS_GEN_CNTL);
87 lvds_gen_cntl |= RADEON_LVDS_DISPLAY_DIS; 99 lvds_gen_cntl |= RADEON_LVDS_DISPLAY_DIS;
88 lvds_gen_cntl &= ~(RADEON_LVDS_ON | RADEON_LVDS_BLON | RADEON_LVDS_EN | RADEON_LVDS_DIGON); 100 if (is_mac) {
101 lvds_gen_cntl &= ~RADEON_LVDS_BL_MOD_EN;
102 WREG32(RADEON_LVDS_GEN_CNTL, lvds_gen_cntl);
103 lvds_gen_cntl &= ~(RADEON_LVDS_ON | RADEON_LVDS_EN);
104 } else {
105 WREG32(RADEON_LVDS_GEN_CNTL, lvds_gen_cntl);
106 lvds_gen_cntl &= ~(RADEON_LVDS_ON | RADEON_LVDS_BLON | RADEON_LVDS_EN | RADEON_LVDS_DIGON);
107 }
89 udelay(panel_pwr_delay * 1000); 108 udelay(panel_pwr_delay * 1000);
90 WREG32(RADEON_LVDS_GEN_CNTL, lvds_gen_cntl); 109 WREG32(RADEON_LVDS_GEN_CNTL, lvds_gen_cntl);
91 WREG32_PLL(RADEON_PIXCLKS_CNTL, pixclks_cntl); 110 WREG32_PLL(RADEON_PIXCLKS_CNTL, pixclks_cntl);
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_tv.c b/drivers/gpu/drm/radeon/radeon_legacy_tv.c
index 3a12bb0c0563..417684daef4c 100644
--- a/drivers/gpu/drm/radeon/radeon_legacy_tv.c
+++ b/drivers/gpu/drm/radeon/radeon_legacy_tv.c
@@ -77,7 +77,7 @@ struct radeon_tv_mode_constants {
77 unsigned pix_to_tv; 77 unsigned pix_to_tv;
78}; 78};
79 79
80static const uint16_t hor_timing_NTSC[] = { 80static const uint16_t hor_timing_NTSC[MAX_H_CODE_TIMING_LEN] = {
81 0x0007, 81 0x0007,
82 0x003f, 82 0x003f,
83 0x0263, 83 0x0263,
@@ -98,7 +98,7 @@ static const uint16_t hor_timing_NTSC[] = {
98 0 98 0
99}; 99};
100 100
101static const uint16_t vert_timing_NTSC[] = { 101static const uint16_t vert_timing_NTSC[MAX_V_CODE_TIMING_LEN] = {
102 0x2001, 102 0x2001,
103 0x200d, 103 0x200d,
104 0x1006, 104 0x1006,
@@ -115,7 +115,7 @@ static const uint16_t vert_timing_NTSC[] = {
115 0 115 0
116}; 116};
117 117
118static const uint16_t hor_timing_PAL[] = { 118static const uint16_t hor_timing_PAL[MAX_H_CODE_TIMING_LEN] = {
119 0x0007, 119 0x0007,
120 0x0058, 120 0x0058,
121 0x027c, 121 0x027c,
@@ -136,7 +136,7 @@ static const uint16_t hor_timing_PAL[] = {
136 0 136 0
137}; 137};
138 138
139static const uint16_t vert_timing_PAL[] = { 139static const uint16_t vert_timing_PAL[MAX_V_CODE_TIMING_LEN] = {
140 0x2001, 140 0x2001,
141 0x200c, 141 0x200c,
142 0x1005, 142 0x1005,
@@ -623,9 +623,9 @@ void radeon_legacy_tv_mode_set(struct drm_encoder *encoder,
623 } 623 }
624 flicker_removal = (tmp + 500) / 1000; 624 flicker_removal = (tmp + 500) / 1000;
625 625
626 if (flicker_removal < 3) 626 if (flicker_removal < 2)
627 flicker_removal = 3; 627 flicker_removal = 2;
628 for (i = 0; i < 6; ++i) { 628 for (i = 0; i < ARRAY_SIZE(SLOPE_limit); ++i) {
629 if (flicker_removal == SLOPE_limit[i]) 629 if (flicker_removal == SLOPE_limit[i])
630 break; 630 break;
631 } 631 }
diff --git a/drivers/gpu/drm/radeon/radeon_mode.h b/drivers/gpu/drm/radeon/radeon_mode.h
index 402369db5ba0..e81b2aeb6a8f 100644
--- a/drivers/gpu/drm/radeon/radeon_mode.h
+++ b/drivers/gpu/drm/radeon/radeon_mode.h
@@ -46,32 +46,6 @@ struct radeon_device;
46#define to_radeon_encoder(x) container_of(x, struct radeon_encoder, base) 46#define to_radeon_encoder(x) container_of(x, struct radeon_encoder, base)
47#define to_radeon_framebuffer(x) container_of(x, struct radeon_framebuffer, base) 47#define to_radeon_framebuffer(x) container_of(x, struct radeon_framebuffer, base)
48 48
49enum radeon_connector_type {
50 CONNECTOR_NONE,
51 CONNECTOR_VGA,
52 CONNECTOR_DVI_I,
53 CONNECTOR_DVI_D,
54 CONNECTOR_DVI_A,
55 CONNECTOR_STV,
56 CONNECTOR_CTV,
57 CONNECTOR_LVDS,
58 CONNECTOR_DIGITAL,
59 CONNECTOR_SCART,
60 CONNECTOR_HDMI_TYPE_A,
61 CONNECTOR_HDMI_TYPE_B,
62 CONNECTOR_0XC,
63 CONNECTOR_0XD,
64 CONNECTOR_DIN,
65 CONNECTOR_DISPLAY_PORT,
66 CONNECTOR_UNSUPPORTED
67};
68
69enum radeon_dvi_type {
70 DVI_AUTO,
71 DVI_DIGITAL,
72 DVI_ANALOG
73};
74
75enum radeon_rmx_type { 49enum radeon_rmx_type {
76 RMX_OFF, 50 RMX_OFF,
77 RMX_FULL, 51 RMX_FULL,
@@ -151,16 +125,24 @@ struct radeon_tmds_pll {
151#define RADEON_PLL_PREFER_HIGH_POST_DIV (1 << 9) 125#define RADEON_PLL_PREFER_HIGH_POST_DIV (1 << 9)
152#define RADEON_PLL_USE_FRAC_FB_DIV (1 << 10) 126#define RADEON_PLL_USE_FRAC_FB_DIV (1 << 10)
153#define RADEON_PLL_PREFER_CLOSEST_LOWER (1 << 11) 127#define RADEON_PLL_PREFER_CLOSEST_LOWER (1 << 11)
128#define RADEON_PLL_USE_POST_DIV (1 << 12)
154 129
155struct radeon_pll { 130struct radeon_pll {
156 uint16_t reference_freq; 131 /* reference frequency */
157 uint16_t reference_div; 132 uint32_t reference_freq;
133
134 /* fixed dividers */
135 uint32_t reference_div;
136 uint32_t post_div;
137
138 /* pll in/out limits */
158 uint32_t pll_in_min; 139 uint32_t pll_in_min;
159 uint32_t pll_in_max; 140 uint32_t pll_in_max;
160 uint32_t pll_out_min; 141 uint32_t pll_out_min;
161 uint32_t pll_out_max; 142 uint32_t pll_out_max;
162 uint16_t xclk; 143 uint32_t best_vco;
163 144
145 /* divider limits */
164 uint32_t min_ref_div; 146 uint32_t min_ref_div;
165 uint32_t max_ref_div; 147 uint32_t max_ref_div;
166 uint32_t min_post_div; 148 uint32_t min_post_div;
@@ -169,7 +151,12 @@ struct radeon_pll {
169 uint32_t max_feedback_div; 151 uint32_t max_feedback_div;
170 uint32_t min_frac_feedback_div; 152 uint32_t min_frac_feedback_div;
171 uint32_t max_frac_feedback_div; 153 uint32_t max_frac_feedback_div;
172 uint32_t best_vco; 154
155 /* flags for the current clock */
156 uint32_t flags;
157
158 /* pll id */
159 uint32_t id;
173}; 160};
174 161
175struct radeon_i2c_chan { 162struct radeon_i2c_chan {
@@ -312,7 +299,7 @@ struct radeon_atom_ss {
312struct radeon_encoder_atom_dig { 299struct radeon_encoder_atom_dig {
313 /* atom dig */ 300 /* atom dig */
314 bool coherent_mode; 301 bool coherent_mode;
315 int dig_block; 302 int dig_encoder; /* -1 disabled, 0 DIGA, 1 DIGB */
316 /* atom lvds */ 303 /* atom lvds */
317 uint32_t lvds_misc; 304 uint32_t lvds_misc;
318 uint16_t panel_pwr_delay; 305 uint16_t panel_pwr_delay;
@@ -443,8 +430,7 @@ extern void radeon_compute_pll(struct radeon_pll *pll,
443 uint32_t *fb_div_p, 430 uint32_t *fb_div_p,
444 uint32_t *frac_fb_div_p, 431 uint32_t *frac_fb_div_p,
445 uint32_t *ref_div_p, 432 uint32_t *ref_div_p,
446 uint32_t *post_div_p, 433 uint32_t *post_div_p);
447 int flags);
448 434
449extern void radeon_compute_pll_avivo(struct radeon_pll *pll, 435extern void radeon_compute_pll_avivo(struct radeon_pll *pll,
450 uint64_t freq, 436 uint64_t freq,
@@ -452,8 +438,7 @@ extern void radeon_compute_pll_avivo(struct radeon_pll *pll,
452 uint32_t *fb_div_p, 438 uint32_t *fb_div_p,
453 uint32_t *frac_fb_div_p, 439 uint32_t *frac_fb_div_p,
454 uint32_t *ref_div_p, 440 uint32_t *ref_div_p,
455 uint32_t *post_div_p, 441 uint32_t *post_div_p);
456 int flags);
457 442
458extern void radeon_setup_encoder_clones(struct drm_device *dev); 443extern void radeon_setup_encoder_clones(struct drm_device *dev);
459 444
@@ -479,7 +464,6 @@ extern void atombios_crtc_dpms(struct drm_crtc *crtc, int mode);
479 464
480extern int radeon_crtc_set_base(struct drm_crtc *crtc, int x, int y, 465extern int radeon_crtc_set_base(struct drm_crtc *crtc, int x, int y,
481 struct drm_framebuffer *old_fb); 466 struct drm_framebuffer *old_fb);
482extern void radeon_legacy_atom_set_surface(struct drm_crtc *crtc);
483 467
484extern int radeon_crtc_cursor_set(struct drm_crtc *crtc, 468extern int radeon_crtc_cursor_set(struct drm_crtc *crtc,
485 struct drm_file *file_priv, 469 struct drm_file *file_priv,
diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c
index d9ffe1f56e8f..f1da370928eb 100644
--- a/drivers/gpu/drm/radeon/radeon_object.c
+++ b/drivers/gpu/drm/radeon/radeon_object.c
@@ -220,9 +220,11 @@ int radeon_bo_unpin(struct radeon_bo *bo)
220 220
221int radeon_bo_evict_vram(struct radeon_device *rdev) 221int radeon_bo_evict_vram(struct radeon_device *rdev)
222{ 222{
223 if (rdev->flags & RADEON_IS_IGP) { 223 /* late 2.6.33 fix IGP hibernate - we need pm ops to do this correct */
224 /* Useless to evict on IGP chips */ 224 if (0 && (rdev->flags & RADEON_IS_IGP)) {
225 return 0; 225 if (rdev->mc.igp_sideport_enabled == false)
226 /* Useless to evict on IGP chips */
227 return 0;
226 } 228 }
227 return ttm_bo_evict_mm(&rdev->mman.bdev, TTM_PL_VRAM); 229 return ttm_bo_evict_mm(&rdev->mman.bdev, TTM_PL_VRAM);
228} 230}
@@ -304,11 +306,10 @@ void radeon_bo_list_unreserve(struct list_head *head)
304 } 306 }
305} 307}
306 308
307int radeon_bo_list_validate(struct list_head *head, void *fence) 309int radeon_bo_list_validate(struct list_head *head)
308{ 310{
309 struct radeon_bo_list *lobj; 311 struct radeon_bo_list *lobj;
310 struct radeon_bo *bo; 312 struct radeon_bo *bo;
311 struct radeon_fence *old_fence = NULL;
312 int r; 313 int r;
313 314
314 r = radeon_bo_list_reserve(head); 315 r = radeon_bo_list_reserve(head);
@@ -332,32 +333,27 @@ int radeon_bo_list_validate(struct list_head *head, void *fence)
332 } 333 }
333 lobj->gpu_offset = radeon_bo_gpu_offset(bo); 334 lobj->gpu_offset = radeon_bo_gpu_offset(bo);
334 lobj->tiling_flags = bo->tiling_flags; 335 lobj->tiling_flags = bo->tiling_flags;
335 if (fence) {
336 old_fence = (struct radeon_fence *)bo->tbo.sync_obj;
337 bo->tbo.sync_obj = radeon_fence_ref(fence);
338 bo->tbo.sync_obj_arg = NULL;
339 }
340 if (old_fence) {
341 radeon_fence_unref(&old_fence);
342 }
343 } 336 }
344 return 0; 337 return 0;
345} 338}
346 339
347void radeon_bo_list_unvalidate(struct list_head *head, void *fence) 340void radeon_bo_list_fence(struct list_head *head, void *fence)
348{ 341{
349 struct radeon_bo_list *lobj; 342 struct radeon_bo_list *lobj;
350 struct radeon_fence *old_fence; 343 struct radeon_bo *bo;
351 344 struct radeon_fence *old_fence = NULL;
352 if (fence) 345
353 list_for_each_entry(lobj, head, list) { 346 list_for_each_entry(lobj, head, list) {
354 old_fence = to_radeon_fence(lobj->bo->tbo.sync_obj); 347 bo = lobj->bo;
355 if (old_fence == fence) { 348 spin_lock(&bo->tbo.lock);
356 lobj->bo->tbo.sync_obj = NULL; 349 old_fence = (struct radeon_fence *)bo->tbo.sync_obj;
357 radeon_fence_unref(&old_fence); 350 bo->tbo.sync_obj = radeon_fence_ref(fence);
358 } 351 bo->tbo.sync_obj_arg = NULL;
352 spin_unlock(&bo->tbo.lock);
353 if (old_fence) {
354 radeon_fence_unref(&old_fence);
359 } 355 }
360 radeon_bo_list_unreserve(head); 356 }
361} 357}
362 358
363int radeon_bo_fbdev_mmap(struct radeon_bo *bo, 359int radeon_bo_fbdev_mmap(struct radeon_bo *bo,
diff --git a/drivers/gpu/drm/radeon/radeon_object.h b/drivers/gpu/drm/radeon/radeon_object.h
index a02f18011ad1..7ab43de1e244 100644
--- a/drivers/gpu/drm/radeon/radeon_object.h
+++ b/drivers/gpu/drm/radeon/radeon_object.h
@@ -156,8 +156,8 @@ extern void radeon_bo_list_add_object(struct radeon_bo_list *lobj,
156 struct list_head *head); 156 struct list_head *head);
157extern int radeon_bo_list_reserve(struct list_head *head); 157extern int radeon_bo_list_reserve(struct list_head *head);
158extern void radeon_bo_list_unreserve(struct list_head *head); 158extern void radeon_bo_list_unreserve(struct list_head *head);
159extern int radeon_bo_list_validate(struct list_head *head, void *fence); 159extern int radeon_bo_list_validate(struct list_head *head);
160extern void radeon_bo_list_unvalidate(struct list_head *head, void *fence); 160extern void radeon_bo_list_fence(struct list_head *head, void *fence);
161extern int radeon_bo_fbdev_mmap(struct radeon_bo *bo, 161extern int radeon_bo_fbdev_mmap(struct radeon_bo *bo,
162 struct vm_area_struct *vma); 162 struct vm_area_struct *vma);
163extern int radeon_bo_set_tiling_flags(struct radeon_bo *bo, 163extern int radeon_bo_set_tiling_flags(struct radeon_bo *bo,
diff --git a/drivers/gpu/drm/radeon/radeon_ring.c b/drivers/gpu/drm/radeon/radeon_ring.c
index 4d12b2d17b4d..6579eb4c1f28 100644
--- a/drivers/gpu/drm/radeon/radeon_ring.c
+++ b/drivers/gpu/drm/radeon/radeon_ring.c
@@ -41,68 +41,55 @@ int radeon_ib_get(struct radeon_device *rdev, struct radeon_ib **ib)
41{ 41{
42 struct radeon_fence *fence; 42 struct radeon_fence *fence;
43 struct radeon_ib *nib; 43 struct radeon_ib *nib;
44 unsigned long i; 44 int r = 0, i, c;
45 int r = 0;
46 45
47 *ib = NULL; 46 *ib = NULL;
48 r = radeon_fence_create(rdev, &fence); 47 r = radeon_fence_create(rdev, &fence);
49 if (r) { 48 if (r) {
50 DRM_ERROR("failed to create fence for new IB\n"); 49 dev_err(rdev->dev, "failed to create fence for new IB\n");
51 return r; 50 return r;
52 } 51 }
53 mutex_lock(&rdev->ib_pool.mutex); 52 mutex_lock(&rdev->ib_pool.mutex);
54 i = find_first_zero_bit(rdev->ib_pool.alloc_bm, RADEON_IB_POOL_SIZE); 53 for (i = rdev->ib_pool.head_id, c = 0, nib = NULL; c < RADEON_IB_POOL_SIZE; c++, i++) {
55 if (i < RADEON_IB_POOL_SIZE) { 54 i &= (RADEON_IB_POOL_SIZE - 1);
56 set_bit(i, rdev->ib_pool.alloc_bm); 55 if (rdev->ib_pool.ibs[i].free) {
57 rdev->ib_pool.ibs[i].length_dw = 0; 56 nib = &rdev->ib_pool.ibs[i];
58 *ib = &rdev->ib_pool.ibs[i]; 57 break;
59 mutex_unlock(&rdev->ib_pool.mutex); 58 }
60 goto out;
61 } 59 }
62 if (list_empty(&rdev->ib_pool.scheduled_ibs)) { 60 if (nib == NULL) {
63 /* we go do nothings here */ 61 /* This should never happen, it means we allocated all
62 * IB and haven't scheduled one yet, return EBUSY to
63 * userspace hoping that on ioctl recall we get better
64 * luck
65 */
66 dev_err(rdev->dev, "no free indirect buffer !\n");
64 mutex_unlock(&rdev->ib_pool.mutex); 67 mutex_unlock(&rdev->ib_pool.mutex);
65 DRM_ERROR("all IB allocated none scheduled.\n"); 68 radeon_fence_unref(&fence);
66 r = -EINVAL; 69 return -EBUSY;
67 goto out;
68 } 70 }
69 /* get the first ib on the scheduled list */ 71 rdev->ib_pool.head_id = (nib->idx + 1) & (RADEON_IB_POOL_SIZE - 1);
70 nib = list_entry(rdev->ib_pool.scheduled_ibs.next, 72 nib->free = false;
71 struct radeon_ib, list); 73 if (nib->fence) {
72 if (nib->fence == NULL) {
73 /* we go do nothings here */
74 mutex_unlock(&rdev->ib_pool.mutex); 74 mutex_unlock(&rdev->ib_pool.mutex);
75 DRM_ERROR("IB %lu scheduled without a fence.\n", nib->idx); 75 r = radeon_fence_wait(nib->fence, false);
76 r = -EINVAL; 76 if (r) {
77 goto out; 77 dev_err(rdev->dev, "error waiting fence of IB(%u:0x%016lX:%u)\n",
78 } 78 nib->idx, (unsigned long)nib->gpu_addr, nib->length_dw);
79 mutex_unlock(&rdev->ib_pool.mutex); 79 mutex_lock(&rdev->ib_pool.mutex);
80 80 nib->free = true;
81 r = radeon_fence_wait(nib->fence, false); 81 mutex_unlock(&rdev->ib_pool.mutex);
82 if (r) { 82 radeon_fence_unref(&fence);
83 DRM_ERROR("radeon: IB(%lu:0x%016lX:%u)\n", nib->idx, 83 return r;
84 (unsigned long)nib->gpu_addr, nib->length_dw); 84 }
85 DRM_ERROR("radeon: GPU lockup detected, fail to get a IB\n"); 85 mutex_lock(&rdev->ib_pool.mutex);
86 goto out;
87 } 86 }
88 radeon_fence_unref(&nib->fence); 87 radeon_fence_unref(&nib->fence);
89 88 nib->fence = fence;
90 nib->length_dw = 0; 89 nib->length_dw = 0;
91
92 /* scheduled list is accessed here */
93 mutex_lock(&rdev->ib_pool.mutex);
94 list_del(&nib->list);
95 INIT_LIST_HEAD(&nib->list);
96 mutex_unlock(&rdev->ib_pool.mutex); 90 mutex_unlock(&rdev->ib_pool.mutex);
97
98 *ib = nib; 91 *ib = nib;
99out: 92 return 0;
100 if (r) {
101 radeon_fence_unref(&fence);
102 } else {
103 (*ib)->fence = fence;
104 }
105 return r;
106} 93}
107 94
108void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib **ib) 95void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib **ib)
@@ -113,19 +100,10 @@ void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib **ib)
113 if (tmp == NULL) { 100 if (tmp == NULL) {
114 return; 101 return;
115 } 102 }
116 mutex_lock(&rdev->ib_pool.mutex); 103 if (!tmp->fence->emited)
117 if (!list_empty(&tmp->list) && !radeon_fence_signaled(tmp->fence)) {
118 /* IB is scheduled & not signaled don't do anythings */
119 mutex_unlock(&rdev->ib_pool.mutex);
120 return;
121 }
122 list_del(&tmp->list);
123 INIT_LIST_HEAD(&tmp->list);
124 if (tmp->fence)
125 radeon_fence_unref(&tmp->fence); 104 radeon_fence_unref(&tmp->fence);
126 105 mutex_lock(&rdev->ib_pool.mutex);
127 tmp->length_dw = 0; 106 tmp->free = true;
128 clear_bit(tmp->idx, rdev->ib_pool.alloc_bm);
129 mutex_unlock(&rdev->ib_pool.mutex); 107 mutex_unlock(&rdev->ib_pool.mutex);
130} 108}
131 109
@@ -135,7 +113,7 @@ int radeon_ib_schedule(struct radeon_device *rdev, struct radeon_ib *ib)
135 113
136 if (!ib->length_dw || !rdev->cp.ready) { 114 if (!ib->length_dw || !rdev->cp.ready) {
137 /* TODO: Nothings in the ib we should report. */ 115 /* TODO: Nothings in the ib we should report. */
138 DRM_ERROR("radeon: couldn't schedule IB(%lu).\n", ib->idx); 116 DRM_ERROR("radeon: couldn't schedule IB(%u).\n", ib->idx);
139 return -EINVAL; 117 return -EINVAL;
140 } 118 }
141 119
@@ -148,7 +126,8 @@ int radeon_ib_schedule(struct radeon_device *rdev, struct radeon_ib *ib)
148 radeon_ring_ib_execute(rdev, ib); 126 radeon_ring_ib_execute(rdev, ib);
149 radeon_fence_emit(rdev, ib->fence); 127 radeon_fence_emit(rdev, ib->fence);
150 mutex_lock(&rdev->ib_pool.mutex); 128 mutex_lock(&rdev->ib_pool.mutex);
151 list_add_tail(&ib->list, &rdev->ib_pool.scheduled_ibs); 129 /* once scheduled IB is considered free and protected by the fence */
130 ib->free = true;
152 mutex_unlock(&rdev->ib_pool.mutex); 131 mutex_unlock(&rdev->ib_pool.mutex);
153 radeon_ring_unlock_commit(rdev); 132 radeon_ring_unlock_commit(rdev);
154 return 0; 133 return 0;
@@ -164,7 +143,6 @@ int radeon_ib_pool_init(struct radeon_device *rdev)
164 if (rdev->ib_pool.robj) 143 if (rdev->ib_pool.robj)
165 return 0; 144 return 0;
166 /* Allocate 1M object buffer */ 145 /* Allocate 1M object buffer */
167 INIT_LIST_HEAD(&rdev->ib_pool.scheduled_ibs);
168 r = radeon_bo_create(rdev, NULL, RADEON_IB_POOL_SIZE*64*1024, 146 r = radeon_bo_create(rdev, NULL, RADEON_IB_POOL_SIZE*64*1024,
169 true, RADEON_GEM_DOMAIN_GTT, 147 true, RADEON_GEM_DOMAIN_GTT,
170 &rdev->ib_pool.robj); 148 &rdev->ib_pool.robj);
@@ -195,9 +173,9 @@ int radeon_ib_pool_init(struct radeon_device *rdev)
195 rdev->ib_pool.ibs[i].ptr = ptr + offset; 173 rdev->ib_pool.ibs[i].ptr = ptr + offset;
196 rdev->ib_pool.ibs[i].idx = i; 174 rdev->ib_pool.ibs[i].idx = i;
197 rdev->ib_pool.ibs[i].length_dw = 0; 175 rdev->ib_pool.ibs[i].length_dw = 0;
198 INIT_LIST_HEAD(&rdev->ib_pool.ibs[i].list); 176 rdev->ib_pool.ibs[i].free = true;
199 } 177 }
200 bitmap_zero(rdev->ib_pool.alloc_bm, RADEON_IB_POOL_SIZE); 178 rdev->ib_pool.head_id = 0;
201 rdev->ib_pool.ready = true; 179 rdev->ib_pool.ready = true;
202 DRM_INFO("radeon: ib pool ready.\n"); 180 DRM_INFO("radeon: ib pool ready.\n");
203 if (radeon_debugfs_ib_init(rdev)) { 181 if (radeon_debugfs_ib_init(rdev)) {
@@ -214,7 +192,6 @@ void radeon_ib_pool_fini(struct radeon_device *rdev)
214 return; 192 return;
215 } 193 }
216 mutex_lock(&rdev->ib_pool.mutex); 194 mutex_lock(&rdev->ib_pool.mutex);
217 bitmap_zero(rdev->ib_pool.alloc_bm, RADEON_IB_POOL_SIZE);
218 if (rdev->ib_pool.robj) { 195 if (rdev->ib_pool.robj) {
219 r = radeon_bo_reserve(rdev->ib_pool.robj, false); 196 r = radeon_bo_reserve(rdev->ib_pool.robj, false);
220 if (likely(r == 0)) { 197 if (likely(r == 0)) {
@@ -363,7 +340,7 @@ static int radeon_debugfs_ib_info(struct seq_file *m, void *data)
363 if (ib == NULL) { 340 if (ib == NULL) {
364 return 0; 341 return 0;
365 } 342 }
366 seq_printf(m, "IB %04lu\n", ib->idx); 343 seq_printf(m, "IB %04u\n", ib->idx);
367 seq_printf(m, "IB fence %p\n", ib->fence); 344 seq_printf(m, "IB fence %p\n", ib->fence);
368 seq_printf(m, "IB size %05u dwords\n", ib->length_dw); 345 seq_printf(m, "IB size %05u dwords\n", ib->length_dw);
369 for (i = 0; i < ib->length_dw; i++) { 346 for (i = 0; i < ib->length_dw; i++) {
diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
index 3b0c07b444a2..58b5adf974ca 100644
--- a/drivers/gpu/drm/radeon/radeon_ttm.c
+++ b/drivers/gpu/drm/radeon/radeon_ttm.c
@@ -215,7 +215,10 @@ static void radeon_evict_flags(struct ttm_buffer_object *bo,
215 rbo = container_of(bo, struct radeon_bo, tbo); 215 rbo = container_of(bo, struct radeon_bo, tbo);
216 switch (bo->mem.mem_type) { 216 switch (bo->mem.mem_type) {
217 case TTM_PL_VRAM: 217 case TTM_PL_VRAM:
218 radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_GTT); 218 if (rbo->rdev->cp.ready == false)
219 radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_CPU);
220 else
221 radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_GTT);
219 break; 222 break;
220 case TTM_PL_TT: 223 case TTM_PL_TT:
221 default: 224 default:
diff --git a/drivers/gpu/drm/radeon/reg_srcs/r200 b/drivers/gpu/drm/radeon/reg_srcs/r200
index 6021c8849a16..c29ac434ac9c 100644
--- a/drivers/gpu/drm/radeon/reg_srcs/r200
+++ b/drivers/gpu/drm/radeon/reg_srcs/r200
@@ -91,6 +91,8 @@ r200 0x3294
910x22b8 SE_TCL_TEX_CYL_WRAP_CTL 910x22b8 SE_TCL_TEX_CYL_WRAP_CTL
920x22c0 SE_TCL_UCP_VERT_BLEND_CNTL 920x22c0 SE_TCL_UCP_VERT_BLEND_CNTL
930x22c4 SE_TCL_POINT_SPRITE_CNTL 930x22c4 SE_TCL_POINT_SPRITE_CNTL
940x22d0 SE_PVS_CNTL
950x22d4 SE_PVS_CONST_CNTL
940x2648 RE_POINTSIZE 960x2648 RE_POINTSIZE
950x26c0 RE_TOP_LEFT 970x26c0 RE_TOP_LEFT
960x26c4 RE_MISC 980x26c4 RE_MISC
diff --git a/drivers/gpu/drm/radeon/reg_srcs/r420 b/drivers/gpu/drm/radeon/reg_srcs/r420
new file mode 100644
index 000000000000..989f7a020832
--- /dev/null
+++ b/drivers/gpu/drm/radeon/reg_srcs/r420
@@ -0,0 +1,795 @@
1r420 0x4f60
20x1434 SRC_Y_X
30x1438 DST_Y_X
40x143C DST_HEIGHT_WIDTH
50x146C DP_GUI_MASTER_CNTL
60x1474 BRUSH_Y_X
70x1478 DP_BRUSH_BKGD_CLR
80x147C DP_BRUSH_FRGD_CLR
90x1480 BRUSH_DATA0
100x1484 BRUSH_DATA1
110x1598 DST_WIDTH_HEIGHT
120x15C0 CLR_CMP_CNTL
130x15C4 CLR_CMP_CLR_SRC
140x15C8 CLR_CMP_CLR_DST
150x15CC CLR_CMP_MSK
160x15D8 DP_SRC_FRGD_CLR
170x15DC DP_SRC_BKGD_CLR
180x1600 DST_LINE_START
190x1604 DST_LINE_END
200x1608 DST_LINE_PATCOUNT
210x16C0 DP_CNTL
220x16CC DP_WRITE_MSK
230x16D0 DP_CNTL_XDIR_YDIR_YMAJOR
240x16E8 DEFAULT_SC_BOTTOM_RIGHT
250x16EC SC_TOP_LEFT
260x16F0 SC_BOTTOM_RIGHT
270x16F4 SRC_SC_BOTTOM_RIGHT
280x1714 DSTCACHE_CTLSTAT
290x1720 WAIT_UNTIL
300x172C RBBM_GUICNTL
310x1D98 VAP_VPORT_XSCALE
320x1D9C VAP_VPORT_XOFFSET
330x1DA0 VAP_VPORT_YSCALE
340x1DA4 VAP_VPORT_YOFFSET
350x1DA8 VAP_VPORT_ZSCALE
360x1DAC VAP_VPORT_ZOFFSET
370x2080 VAP_CNTL
380x2090 VAP_OUT_VTX_FMT_0
390x2094 VAP_OUT_VTX_FMT_1
400x20B0 VAP_VTE_CNTL
410x2138 VAP_VF_MIN_VTX_INDX
420x2140 VAP_CNTL_STATUS
430x2150 VAP_PROG_STREAM_CNTL_0
440x2154 VAP_PROG_STREAM_CNTL_1
450x2158 VAP_PROG_STREAM_CNTL_2
460x215C VAP_PROG_STREAM_CNTL_3
470x2160 VAP_PROG_STREAM_CNTL_4
480x2164 VAP_PROG_STREAM_CNTL_5
490x2168 VAP_PROG_STREAM_CNTL_6
500x216C VAP_PROG_STREAM_CNTL_7
510x2180 VAP_VTX_STATE_CNTL
520x2184 VAP_VSM_VTX_ASSM
530x2188 VAP_VTX_STATE_IND_REG_0
540x218C VAP_VTX_STATE_IND_REG_1
550x2190 VAP_VTX_STATE_IND_REG_2
560x2194 VAP_VTX_STATE_IND_REG_3
570x2198 VAP_VTX_STATE_IND_REG_4
580x219C VAP_VTX_STATE_IND_REG_5
590x21A0 VAP_VTX_STATE_IND_REG_6
600x21A4 VAP_VTX_STATE_IND_REG_7
610x21A8 VAP_VTX_STATE_IND_REG_8
620x21AC VAP_VTX_STATE_IND_REG_9
630x21B0 VAP_VTX_STATE_IND_REG_10
640x21B4 VAP_VTX_STATE_IND_REG_11
650x21B8 VAP_VTX_STATE_IND_REG_12
660x21BC VAP_VTX_STATE_IND_REG_13
670x21C0 VAP_VTX_STATE_IND_REG_14
680x21C4 VAP_VTX_STATE_IND_REG_15
690x21DC VAP_PSC_SGN_NORM_CNTL
700x21E0 VAP_PROG_STREAM_CNTL_EXT_0
710x21E4 VAP_PROG_STREAM_CNTL_EXT_1
720x21E8 VAP_PROG_STREAM_CNTL_EXT_2
730x21EC VAP_PROG_STREAM_CNTL_EXT_3
740x21F0 VAP_PROG_STREAM_CNTL_EXT_4
750x21F4 VAP_PROG_STREAM_CNTL_EXT_5
760x21F8 VAP_PROG_STREAM_CNTL_EXT_6
770x21FC VAP_PROG_STREAM_CNTL_EXT_7
780x2200 VAP_PVS_VECTOR_INDX_REG
790x2204 VAP_PVS_VECTOR_DATA_REG
800x2208 VAP_PVS_VECTOR_DATA_REG_128
810x221C VAP_CLIP_CNTL
820x2220 VAP_GB_VERT_CLIP_ADJ
830x2224 VAP_GB_VERT_DISC_ADJ
840x2228 VAP_GB_HORZ_CLIP_ADJ
850x222C VAP_GB_HORZ_DISC_ADJ
860x2230 VAP_PVS_FLOW_CNTL_ADDRS_0
870x2234 VAP_PVS_FLOW_CNTL_ADDRS_1
880x2238 VAP_PVS_FLOW_CNTL_ADDRS_2
890x223C VAP_PVS_FLOW_CNTL_ADDRS_3
900x2240 VAP_PVS_FLOW_CNTL_ADDRS_4
910x2244 VAP_PVS_FLOW_CNTL_ADDRS_5
920x2248 VAP_PVS_FLOW_CNTL_ADDRS_6
930x224C VAP_PVS_FLOW_CNTL_ADDRS_7
940x2250 VAP_PVS_FLOW_CNTL_ADDRS_8
950x2254 VAP_PVS_FLOW_CNTL_ADDRS_9
960x2258 VAP_PVS_FLOW_CNTL_ADDRS_10
970x225C VAP_PVS_FLOW_CNTL_ADDRS_11
980x2260 VAP_PVS_FLOW_CNTL_ADDRS_12
990x2264 VAP_PVS_FLOW_CNTL_ADDRS_13
1000x2268 VAP_PVS_FLOW_CNTL_ADDRS_14
1010x226C VAP_PVS_FLOW_CNTL_ADDRS_15
1020x2284 VAP_PVS_STATE_FLUSH_REG
1030x2288 VAP_PVS_VTX_TIMEOUT_REG
1040x2290 VAP_PVS_FLOW_CNTL_LOOP_INDEX_0
1050x2294 VAP_PVS_FLOW_CNTL_LOOP_INDEX_1
1060x2298 VAP_PVS_FLOW_CNTL_LOOP_INDEX_2
1070x229C VAP_PVS_FLOW_CNTL_LOOP_INDEX_3
1080x22A0 VAP_PVS_FLOW_CNTL_LOOP_INDEX_4
1090x22A4 VAP_PVS_FLOW_CNTL_LOOP_INDEX_5
1100x22A8 VAP_PVS_FLOW_CNTL_LOOP_INDEX_6
1110x22AC VAP_PVS_FLOW_CNTL_LOOP_INDEX_7
1120x22B0 VAP_PVS_FLOW_CNTL_LOOP_INDEX_8
1130x22B4 VAP_PVS_FLOW_CNTL_LOOP_INDEX_9
1140x22B8 VAP_PVS_FLOW_CNTL_LOOP_INDEX_10
1150x22BC VAP_PVS_FLOW_CNTL_LOOP_INDEX_11
1160x22C0 VAP_PVS_FLOW_CNTL_LOOP_INDEX_12
1170x22C4 VAP_PVS_FLOW_CNTL_LOOP_INDEX_13
1180x22C8 VAP_PVS_FLOW_CNTL_LOOP_INDEX_14
1190x22CC VAP_PVS_FLOW_CNTL_LOOP_INDEX_15
1200x22D0 VAP_PVS_CODE_CNTL_0
1210x22D4 VAP_PVS_CONST_CNTL
1220x22D8 VAP_PVS_CODE_CNTL_1
1230x22DC VAP_PVS_FLOW_CNTL_OPC
1240x342C RB2D_DSTCACHE_CTLSTAT
1250x4000 GB_VAP_RASTER_VTX_FMT_0
1260x4004 GB_VAP_RASTER_VTX_FMT_1
1270x4008 GB_ENABLE
1280x401C GB_SELECT
1290x4020 GB_AA_CONFIG
1300x4024 GB_FIFO_SIZE
1310x4100 TX_INVALTAGS
1320x4200 GA_POINT_S0
1330x4204 GA_POINT_T0
1340x4208 GA_POINT_S1
1350x420C GA_POINT_T1
1360x4214 GA_TRIANGLE_STIPPLE
1370x421C GA_POINT_SIZE
1380x4230 GA_POINT_MINMAX
1390x4234 GA_LINE_CNTL
1400x4238 GA_LINE_STIPPLE_CONFIG
1410x4260 GA_LINE_STIPPLE_VALUE
1420x4264 GA_LINE_S0
1430x4268 GA_LINE_S1
1440x4278 GA_COLOR_CONTROL
1450x427C GA_SOLID_RG
1460x4280 GA_SOLID_BA
1470x4288 GA_POLY_MODE
1480x428C GA_ROUND_MODE
1490x4290 GA_OFFSET
1500x4294 GA_FOG_SCALE
1510x4298 GA_FOG_OFFSET
1520x42A0 SU_TEX_WRAP
1530x42A4 SU_POLY_OFFSET_FRONT_SCALE
1540x42A8 SU_POLY_OFFSET_FRONT_OFFSET
1550x42AC SU_POLY_OFFSET_BACK_SCALE
1560x42B0 SU_POLY_OFFSET_BACK_OFFSET
1570x42B4 SU_POLY_OFFSET_ENABLE
1580x42B8 SU_CULL_MODE
1590x42C0 SU_DEPTH_SCALE
1600x42C4 SU_DEPTH_OFFSET
1610x42C8 SU_REG_DEST
1620x4300 RS_COUNT
1630x4304 RS_INST_COUNT
1640x4310 RS_IP_0
1650x4314 RS_IP_1
1660x4318 RS_IP_2
1670x431C RS_IP_3
1680x4320 RS_IP_4
1690x4324 RS_IP_5
1700x4328 RS_IP_6
1710x432C RS_IP_7
1720x4330 RS_INST_0
1730x4334 RS_INST_1
1740x4338 RS_INST_2
1750x433C RS_INST_3
1760x4340 RS_INST_4
1770x4344 RS_INST_5
1780x4348 RS_INST_6
1790x434C RS_INST_7
1800x4350 RS_INST_8
1810x4354 RS_INST_9
1820x4358 RS_INST_10
1830x435C RS_INST_11
1840x4360 RS_INST_12
1850x4364 RS_INST_13
1860x4368 RS_INST_14
1870x436C RS_INST_15
1880x43A4 SC_HYPERZ_EN
1890x43A8 SC_EDGERULE
1900x43B0 SC_CLIP_0_A
1910x43B4 SC_CLIP_0_B
1920x43B8 SC_CLIP_1_A
1930x43BC SC_CLIP_1_B
1940x43C0 SC_CLIP_2_A
1950x43C4 SC_CLIP_2_B
1960x43C8 SC_CLIP_3_A
1970x43CC SC_CLIP_3_B
1980x43D0 SC_CLIP_RULE
1990x43E0 SC_SCISSOR0
2000x43E8 SC_SCREENDOOR
2010x4440 TX_FILTER1_0
2020x4444 TX_FILTER1_1
2030x4448 TX_FILTER1_2
2040x444C TX_FILTER1_3
2050x4450 TX_FILTER1_4
2060x4454 TX_FILTER1_5
2070x4458 TX_FILTER1_6
2080x445C TX_FILTER1_7
2090x4460 TX_FILTER1_8
2100x4464 TX_FILTER1_9
2110x4468 TX_FILTER1_10
2120x446C TX_FILTER1_11
2130x4470 TX_FILTER1_12
2140x4474 TX_FILTER1_13
2150x4478 TX_FILTER1_14
2160x447C TX_FILTER1_15
2170x4580 TX_CHROMA_KEY_0
2180x4584 TX_CHROMA_KEY_1
2190x4588 TX_CHROMA_KEY_2
2200x458C TX_CHROMA_KEY_3
2210x4590 TX_CHROMA_KEY_4
2220x4594 TX_CHROMA_KEY_5
2230x4598 TX_CHROMA_KEY_6
2240x459C TX_CHROMA_KEY_7
2250x45A0 TX_CHROMA_KEY_8
2260x45A4 TX_CHROMA_KEY_9
2270x45A8 TX_CHROMA_KEY_10
2280x45AC TX_CHROMA_KEY_11
2290x45B0 TX_CHROMA_KEY_12
2300x45B4 TX_CHROMA_KEY_13
2310x45B8 TX_CHROMA_KEY_14
2320x45BC TX_CHROMA_KEY_15
2330x45C0 TX_BORDER_COLOR_0
2340x45C4 TX_BORDER_COLOR_1
2350x45C8 TX_BORDER_COLOR_2
2360x45CC TX_BORDER_COLOR_3
2370x45D0 TX_BORDER_COLOR_4
2380x45D4 TX_BORDER_COLOR_5
2390x45D8 TX_BORDER_COLOR_6
2400x45DC TX_BORDER_COLOR_7
2410x45E0 TX_BORDER_COLOR_8
2420x45E4 TX_BORDER_COLOR_9
2430x45E8 TX_BORDER_COLOR_10
2440x45EC TX_BORDER_COLOR_11
2450x45F0 TX_BORDER_COLOR_12
2460x45F4 TX_BORDER_COLOR_13
2470x45F8 TX_BORDER_COLOR_14
2480x45FC TX_BORDER_COLOR_15
2490x4600 US_CONFIG
2500x4604 US_PIXSIZE
2510x4608 US_CODE_OFFSET
2520x460C US_RESET
2530x4610 US_CODE_ADDR_0
2540x4614 US_CODE_ADDR_1
2550x4618 US_CODE_ADDR_2
2560x461C US_CODE_ADDR_3
2570x4620 US_TEX_INST_0
2580x4624 US_TEX_INST_1
2590x4628 US_TEX_INST_2
2600x462C US_TEX_INST_3
2610x4630 US_TEX_INST_4
2620x4634 US_TEX_INST_5
2630x4638 US_TEX_INST_6
2640x463C US_TEX_INST_7
2650x4640 US_TEX_INST_8
2660x4644 US_TEX_INST_9
2670x4648 US_TEX_INST_10
2680x464C US_TEX_INST_11
2690x4650 US_TEX_INST_12
2700x4654 US_TEX_INST_13
2710x4658 US_TEX_INST_14
2720x465C US_TEX_INST_15
2730x4660 US_TEX_INST_16
2740x4664 US_TEX_INST_17
2750x4668 US_TEX_INST_18
2760x466C US_TEX_INST_19
2770x4670 US_TEX_INST_20
2780x4674 US_TEX_INST_21
2790x4678 US_TEX_INST_22
2800x467C US_TEX_INST_23
2810x4680 US_TEX_INST_24
2820x4684 US_TEX_INST_25
2830x4688 US_TEX_INST_26
2840x468C US_TEX_INST_27
2850x4690 US_TEX_INST_28
2860x4694 US_TEX_INST_29
2870x4698 US_TEX_INST_30
2880x469C US_TEX_INST_31
2890x46A4 US_OUT_FMT_0
2900x46A8 US_OUT_FMT_1
2910x46AC US_OUT_FMT_2
2920x46B0 US_OUT_FMT_3
2930x46B4 US_W_FMT
2940x46B8 US_CODE_BANK
2950x46BC US_CODE_EXT
2960x46C0 US_ALU_RGB_ADDR_0
2970x46C4 US_ALU_RGB_ADDR_1
2980x46C8 US_ALU_RGB_ADDR_2
2990x46CC US_ALU_RGB_ADDR_3
3000x46D0 US_ALU_RGB_ADDR_4
3010x46D4 US_ALU_RGB_ADDR_5
3020x46D8 US_ALU_RGB_ADDR_6
3030x46DC US_ALU_RGB_ADDR_7
3040x46E0 US_ALU_RGB_ADDR_8
3050x46E4 US_ALU_RGB_ADDR_9
3060x46E8 US_ALU_RGB_ADDR_10
3070x46EC US_ALU_RGB_ADDR_11
3080x46F0 US_ALU_RGB_ADDR_12
3090x46F4 US_ALU_RGB_ADDR_13
3100x46F8 US_ALU_RGB_ADDR_14
3110x46FC US_ALU_RGB_ADDR_15
3120x4700 US_ALU_RGB_ADDR_16
3130x4704 US_ALU_RGB_ADDR_17
3140x4708 US_ALU_RGB_ADDR_18
3150x470C US_ALU_RGB_ADDR_19
3160x4710 US_ALU_RGB_ADDR_20
3170x4714 US_ALU_RGB_ADDR_21
3180x4718 US_ALU_RGB_ADDR_22
3190x471C US_ALU_RGB_ADDR_23
3200x4720 US_ALU_RGB_ADDR_24
3210x4724 US_ALU_RGB_ADDR_25
3220x4728 US_ALU_RGB_ADDR_26
3230x472C US_ALU_RGB_ADDR_27
3240x4730 US_ALU_RGB_ADDR_28
3250x4734 US_ALU_RGB_ADDR_29
3260x4738 US_ALU_RGB_ADDR_30
3270x473C US_ALU_RGB_ADDR_31
3280x4740 US_ALU_RGB_ADDR_32
3290x4744 US_ALU_RGB_ADDR_33
3300x4748 US_ALU_RGB_ADDR_34
3310x474C US_ALU_RGB_ADDR_35
3320x4750 US_ALU_RGB_ADDR_36
3330x4754 US_ALU_RGB_ADDR_37
3340x4758 US_ALU_RGB_ADDR_38
3350x475C US_ALU_RGB_ADDR_39
3360x4760 US_ALU_RGB_ADDR_40
3370x4764 US_ALU_RGB_ADDR_41
3380x4768 US_ALU_RGB_ADDR_42
3390x476C US_ALU_RGB_ADDR_43
3400x4770 US_ALU_RGB_ADDR_44
3410x4774 US_ALU_RGB_ADDR_45
3420x4778 US_ALU_RGB_ADDR_46
3430x477C US_ALU_RGB_ADDR_47
3440x4780 US_ALU_RGB_ADDR_48
3450x4784 US_ALU_RGB_ADDR_49
3460x4788 US_ALU_RGB_ADDR_50
3470x478C US_ALU_RGB_ADDR_51
3480x4790 US_ALU_RGB_ADDR_52
3490x4794 US_ALU_RGB_ADDR_53
3500x4798 US_ALU_RGB_ADDR_54
3510x479C US_ALU_RGB_ADDR_55
3520x47A0 US_ALU_RGB_ADDR_56
3530x47A4 US_ALU_RGB_ADDR_57
3540x47A8 US_ALU_RGB_ADDR_58
3550x47AC US_ALU_RGB_ADDR_59
3560x47B0 US_ALU_RGB_ADDR_60
3570x47B4 US_ALU_RGB_ADDR_61
3580x47B8 US_ALU_RGB_ADDR_62
3590x47BC US_ALU_RGB_ADDR_63
3600x47C0 US_ALU_ALPHA_ADDR_0
3610x47C4 US_ALU_ALPHA_ADDR_1
3620x47C8 US_ALU_ALPHA_ADDR_2
3630x47CC US_ALU_ALPHA_ADDR_3
3640x47D0 US_ALU_ALPHA_ADDR_4
3650x47D4 US_ALU_ALPHA_ADDR_5
3660x47D8 US_ALU_ALPHA_ADDR_6
3670x47DC US_ALU_ALPHA_ADDR_7
3680x47E0 US_ALU_ALPHA_ADDR_8
3690x47E4 US_ALU_ALPHA_ADDR_9
3700x47E8 US_ALU_ALPHA_ADDR_10
3710x47EC US_ALU_ALPHA_ADDR_11
3720x47F0 US_ALU_ALPHA_ADDR_12
3730x47F4 US_ALU_ALPHA_ADDR_13
3740x47F8 US_ALU_ALPHA_ADDR_14
3750x47FC US_ALU_ALPHA_ADDR_15
3760x4800 US_ALU_ALPHA_ADDR_16
3770x4804 US_ALU_ALPHA_ADDR_17
3780x4808 US_ALU_ALPHA_ADDR_18
3790x480C US_ALU_ALPHA_ADDR_19
3800x4810 US_ALU_ALPHA_ADDR_20
3810x4814 US_ALU_ALPHA_ADDR_21
3820x4818 US_ALU_ALPHA_ADDR_22
3830x481C US_ALU_ALPHA_ADDR_23
3840x4820 US_ALU_ALPHA_ADDR_24
3850x4824 US_ALU_ALPHA_ADDR_25
3860x4828 US_ALU_ALPHA_ADDR_26
3870x482C US_ALU_ALPHA_ADDR_27
3880x4830 US_ALU_ALPHA_ADDR_28
3890x4834 US_ALU_ALPHA_ADDR_29
3900x4838 US_ALU_ALPHA_ADDR_30
3910x483C US_ALU_ALPHA_ADDR_31
3920x4840 US_ALU_ALPHA_ADDR_32
3930x4844 US_ALU_ALPHA_ADDR_33
3940x4848 US_ALU_ALPHA_ADDR_34
3950x484C US_ALU_ALPHA_ADDR_35
3960x4850 US_ALU_ALPHA_ADDR_36
3970x4854 US_ALU_ALPHA_ADDR_37
3980x4858 US_ALU_ALPHA_ADDR_38
3990x485C US_ALU_ALPHA_ADDR_39
4000x4860 US_ALU_ALPHA_ADDR_40
4010x4864 US_ALU_ALPHA_ADDR_41
4020x4868 US_ALU_ALPHA_ADDR_42
4030x486C US_ALU_ALPHA_ADDR_43
4040x4870 US_ALU_ALPHA_ADDR_44
4050x4874 US_ALU_ALPHA_ADDR_45
4060x4878 US_ALU_ALPHA_ADDR_46
4070x487C US_ALU_ALPHA_ADDR_47
4080x4880 US_ALU_ALPHA_ADDR_48
4090x4884 US_ALU_ALPHA_ADDR_49
4100x4888 US_ALU_ALPHA_ADDR_50
4110x488C US_ALU_ALPHA_ADDR_51
4120x4890 US_ALU_ALPHA_ADDR_52
4130x4894 US_ALU_ALPHA_ADDR_53
4140x4898 US_ALU_ALPHA_ADDR_54
4150x489C US_ALU_ALPHA_ADDR_55
4160x48A0 US_ALU_ALPHA_ADDR_56
4170x48A4 US_ALU_ALPHA_ADDR_57
4180x48A8 US_ALU_ALPHA_ADDR_58
4190x48AC US_ALU_ALPHA_ADDR_59
4200x48B0 US_ALU_ALPHA_ADDR_60
4210x48B4 US_ALU_ALPHA_ADDR_61
4220x48B8 US_ALU_ALPHA_ADDR_62
4230x48BC US_ALU_ALPHA_ADDR_63
4240x48C0 US_ALU_RGB_INST_0
4250x48C4 US_ALU_RGB_INST_1
4260x48C8 US_ALU_RGB_INST_2
4270x48CC US_ALU_RGB_INST_3
4280x48D0 US_ALU_RGB_INST_4
4290x48D4 US_ALU_RGB_INST_5
4300x48D8 US_ALU_RGB_INST_6
4310x48DC US_ALU_RGB_INST_7
4320x48E0 US_ALU_RGB_INST_8
4330x48E4 US_ALU_RGB_INST_9
4340x48E8 US_ALU_RGB_INST_10
4350x48EC US_ALU_RGB_INST_11
4360x48F0 US_ALU_RGB_INST_12
4370x48F4 US_ALU_RGB_INST_13
4380x48F8 US_ALU_RGB_INST_14
4390x48FC US_ALU_RGB_INST_15
4400x4900 US_ALU_RGB_INST_16
4410x4904 US_ALU_RGB_INST_17
4420x4908 US_ALU_RGB_INST_18
4430x490C US_ALU_RGB_INST_19
4440x4910 US_ALU_RGB_INST_20
4450x4914 US_ALU_RGB_INST_21
4460x4918 US_ALU_RGB_INST_22
4470x491C US_ALU_RGB_INST_23
4480x4920 US_ALU_RGB_INST_24
4490x4924 US_ALU_RGB_INST_25
4500x4928 US_ALU_RGB_INST_26
4510x492C US_ALU_RGB_INST_27
4520x4930 US_ALU_RGB_INST_28
4530x4934 US_ALU_RGB_INST_29
4540x4938 US_ALU_RGB_INST_30
4550x493C US_ALU_RGB_INST_31
4560x4940 US_ALU_RGB_INST_32
4570x4944 US_ALU_RGB_INST_33
4580x4948 US_ALU_RGB_INST_34
4590x494C US_ALU_RGB_INST_35
4600x4950 US_ALU_RGB_INST_36
4610x4954 US_ALU_RGB_INST_37
4620x4958 US_ALU_RGB_INST_38
4630x495C US_ALU_RGB_INST_39
4640x4960 US_ALU_RGB_INST_40
4650x4964 US_ALU_RGB_INST_41
4660x4968 US_ALU_RGB_INST_42
4670x496C US_ALU_RGB_INST_43
4680x4970 US_ALU_RGB_INST_44
4690x4974 US_ALU_RGB_INST_45
4700x4978 US_ALU_RGB_INST_46
4710x497C US_ALU_RGB_INST_47
4720x4980 US_ALU_RGB_INST_48
4730x4984 US_ALU_RGB_INST_49
4740x4988 US_ALU_RGB_INST_50
4750x498C US_ALU_RGB_INST_51
4760x4990 US_ALU_RGB_INST_52
4770x4994 US_ALU_RGB_INST_53
4780x4998 US_ALU_RGB_INST_54
4790x499C US_ALU_RGB_INST_55
4800x49A0 US_ALU_RGB_INST_56
4810x49A4 US_ALU_RGB_INST_57
4820x49A8 US_ALU_RGB_INST_58
4830x49AC US_ALU_RGB_INST_59
4840x49B0 US_ALU_RGB_INST_60
4850x49B4 US_ALU_RGB_INST_61
4860x49B8 US_ALU_RGB_INST_62
4870x49BC US_ALU_RGB_INST_63
4880x49C0 US_ALU_ALPHA_INST_0
4890x49C4 US_ALU_ALPHA_INST_1
4900x49C8 US_ALU_ALPHA_INST_2
4910x49CC US_ALU_ALPHA_INST_3
4920x49D0 US_ALU_ALPHA_INST_4
4930x49D4 US_ALU_ALPHA_INST_5
4940x49D8 US_ALU_ALPHA_INST_6
4950x49DC US_ALU_ALPHA_INST_7
4960x49E0 US_ALU_ALPHA_INST_8
4970x49E4 US_ALU_ALPHA_INST_9
4980x49E8 US_ALU_ALPHA_INST_10
4990x49EC US_ALU_ALPHA_INST_11
5000x49F0 US_ALU_ALPHA_INST_12
5010x49F4 US_ALU_ALPHA_INST_13
5020x49F8 US_ALU_ALPHA_INST_14
5030x49FC US_ALU_ALPHA_INST_15
5040x4A00 US_ALU_ALPHA_INST_16
5050x4A04 US_ALU_ALPHA_INST_17
5060x4A08 US_ALU_ALPHA_INST_18
5070x4A0C US_ALU_ALPHA_INST_19
5080x4A10 US_ALU_ALPHA_INST_20
5090x4A14 US_ALU_ALPHA_INST_21
5100x4A18 US_ALU_ALPHA_INST_22
5110x4A1C US_ALU_ALPHA_INST_23
5120x4A20 US_ALU_ALPHA_INST_24
5130x4A24 US_ALU_ALPHA_INST_25
5140x4A28 US_ALU_ALPHA_INST_26
5150x4A2C US_ALU_ALPHA_INST_27
5160x4A30 US_ALU_ALPHA_INST_28
5170x4A34 US_ALU_ALPHA_INST_29
5180x4A38 US_ALU_ALPHA_INST_30
5190x4A3C US_ALU_ALPHA_INST_31
5200x4A40 US_ALU_ALPHA_INST_32
5210x4A44 US_ALU_ALPHA_INST_33
5220x4A48 US_ALU_ALPHA_INST_34
5230x4A4C US_ALU_ALPHA_INST_35
5240x4A50 US_ALU_ALPHA_INST_36
5250x4A54 US_ALU_ALPHA_INST_37
5260x4A58 US_ALU_ALPHA_INST_38
5270x4A5C US_ALU_ALPHA_INST_39
5280x4A60 US_ALU_ALPHA_INST_40
5290x4A64 US_ALU_ALPHA_INST_41
5300x4A68 US_ALU_ALPHA_INST_42
5310x4A6C US_ALU_ALPHA_INST_43
5320x4A70 US_ALU_ALPHA_INST_44
5330x4A74 US_ALU_ALPHA_INST_45
5340x4A78 US_ALU_ALPHA_INST_46
5350x4A7C US_ALU_ALPHA_INST_47
5360x4A80 US_ALU_ALPHA_INST_48
5370x4A84 US_ALU_ALPHA_INST_49
5380x4A88 US_ALU_ALPHA_INST_50
5390x4A8C US_ALU_ALPHA_INST_51
5400x4A90 US_ALU_ALPHA_INST_52
5410x4A94 US_ALU_ALPHA_INST_53
5420x4A98 US_ALU_ALPHA_INST_54
5430x4A9C US_ALU_ALPHA_INST_55
5440x4AA0 US_ALU_ALPHA_INST_56
5450x4AA4 US_ALU_ALPHA_INST_57
5460x4AA8 US_ALU_ALPHA_INST_58
5470x4AAC US_ALU_ALPHA_INST_59
5480x4AB0 US_ALU_ALPHA_INST_60
5490x4AB4 US_ALU_ALPHA_INST_61
5500x4AB8 US_ALU_ALPHA_INST_62
5510x4ABC US_ALU_ALPHA_INST_63
5520x4AC0 US_ALU_EXT_ADDR_0
5530x4AC4 US_ALU_EXT_ADDR_1
5540x4AC8 US_ALU_EXT_ADDR_2
5550x4ACC US_ALU_EXT_ADDR_3
5560x4AD0 US_ALU_EXT_ADDR_4
5570x4AD4 US_ALU_EXT_ADDR_5
5580x4AD8 US_ALU_EXT_ADDR_6
5590x4ADC US_ALU_EXT_ADDR_7
5600x4AE0 US_ALU_EXT_ADDR_8
5610x4AE4 US_ALU_EXT_ADDR_9
5620x4AE8 US_ALU_EXT_ADDR_10
5630x4AEC US_ALU_EXT_ADDR_11
5640x4AF0 US_ALU_EXT_ADDR_12
5650x4AF4 US_ALU_EXT_ADDR_13
5660x4AF8 US_ALU_EXT_ADDR_14
5670x4AFC US_ALU_EXT_ADDR_15
5680x4B00 US_ALU_EXT_ADDR_16
5690x4B04 US_ALU_EXT_ADDR_17
5700x4B08 US_ALU_EXT_ADDR_18
5710x4B0C US_ALU_EXT_ADDR_19
5720x4B10 US_ALU_EXT_ADDR_20
5730x4B14 US_ALU_EXT_ADDR_21
5740x4B18 US_ALU_EXT_ADDR_22
5750x4B1C US_ALU_EXT_ADDR_23
5760x4B20 US_ALU_EXT_ADDR_24
5770x4B24 US_ALU_EXT_ADDR_25
5780x4B28 US_ALU_EXT_ADDR_26
5790x4B2C US_ALU_EXT_ADDR_27
5800x4B30 US_ALU_EXT_ADDR_28
5810x4B34 US_ALU_EXT_ADDR_29
5820x4B38 US_ALU_EXT_ADDR_30
5830x4B3C US_ALU_EXT_ADDR_31
5840x4B40 US_ALU_EXT_ADDR_32
5850x4B44 US_ALU_EXT_ADDR_33
5860x4B48 US_ALU_EXT_ADDR_34
5870x4B4C US_ALU_EXT_ADDR_35
5880x4B50 US_ALU_EXT_ADDR_36
5890x4B54 US_ALU_EXT_ADDR_37
5900x4B58 US_ALU_EXT_ADDR_38
5910x4B5C US_ALU_EXT_ADDR_39
5920x4B60 US_ALU_EXT_ADDR_40
5930x4B64 US_ALU_EXT_ADDR_41
5940x4B68 US_ALU_EXT_ADDR_42
5950x4B6C US_ALU_EXT_ADDR_43
5960x4B70 US_ALU_EXT_ADDR_44
5970x4B74 US_ALU_EXT_ADDR_45
5980x4B78 US_ALU_EXT_ADDR_46
5990x4B7C US_ALU_EXT_ADDR_47
6000x4B80 US_ALU_EXT_ADDR_48
6010x4B84 US_ALU_EXT_ADDR_49
6020x4B88 US_ALU_EXT_ADDR_50
6030x4B8C US_ALU_EXT_ADDR_51
6040x4B90 US_ALU_EXT_ADDR_52
6050x4B94 US_ALU_EXT_ADDR_53
6060x4B98 US_ALU_EXT_ADDR_54
6070x4B9C US_ALU_EXT_ADDR_55
6080x4BA0 US_ALU_EXT_ADDR_56
6090x4BA4 US_ALU_EXT_ADDR_57
6100x4BA8 US_ALU_EXT_ADDR_58
6110x4BAC US_ALU_EXT_ADDR_59
6120x4BB0 US_ALU_EXT_ADDR_60
6130x4BB4 US_ALU_EXT_ADDR_61
6140x4BB8 US_ALU_EXT_ADDR_62
6150x4BBC US_ALU_EXT_ADDR_63
6160x4BC0 FG_FOG_BLEND
6170x4BC4 FG_FOG_FACTOR
6180x4BC8 FG_FOG_COLOR_R
6190x4BCC FG_FOG_COLOR_G
6200x4BD0 FG_FOG_COLOR_B
6210x4BD4 FG_ALPHA_FUNC
6220x4BD8 FG_DEPTH_SRC
6230x4C00 US_ALU_CONST_R_0
6240x4C04 US_ALU_CONST_G_0
6250x4C08 US_ALU_CONST_B_0
6260x4C0C US_ALU_CONST_A_0
6270x4C10 US_ALU_CONST_R_1
6280x4C14 US_ALU_CONST_G_1
6290x4C18 US_ALU_CONST_B_1
6300x4C1C US_ALU_CONST_A_1
6310x4C20 US_ALU_CONST_R_2
6320x4C24 US_ALU_CONST_G_2
6330x4C28 US_ALU_CONST_B_2
6340x4C2C US_ALU_CONST_A_2
6350x4C30 US_ALU_CONST_R_3
6360x4C34 US_ALU_CONST_G_3
6370x4C38 US_ALU_CONST_B_3
6380x4C3C US_ALU_CONST_A_3
6390x4C40 US_ALU_CONST_R_4
6400x4C44 US_ALU_CONST_G_4
6410x4C48 US_ALU_CONST_B_4
6420x4C4C US_ALU_CONST_A_4
6430x4C50 US_ALU_CONST_R_5
6440x4C54 US_ALU_CONST_G_5
6450x4C58 US_ALU_CONST_B_5
6460x4C5C US_ALU_CONST_A_5
6470x4C60 US_ALU_CONST_R_6
6480x4C64 US_ALU_CONST_G_6
6490x4C68 US_ALU_CONST_B_6
6500x4C6C US_ALU_CONST_A_6
6510x4C70 US_ALU_CONST_R_7
6520x4C74 US_ALU_CONST_G_7
6530x4C78 US_ALU_CONST_B_7
6540x4C7C US_ALU_CONST_A_7
6550x4C80 US_ALU_CONST_R_8
6560x4C84 US_ALU_CONST_G_8
6570x4C88 US_ALU_CONST_B_8
6580x4C8C US_ALU_CONST_A_8
6590x4C90 US_ALU_CONST_R_9
6600x4C94 US_ALU_CONST_G_9
6610x4C98 US_ALU_CONST_B_9
6620x4C9C US_ALU_CONST_A_9
6630x4CA0 US_ALU_CONST_R_10
6640x4CA4 US_ALU_CONST_G_10
6650x4CA8 US_ALU_CONST_B_10
6660x4CAC US_ALU_CONST_A_10
6670x4CB0 US_ALU_CONST_R_11
6680x4CB4 US_ALU_CONST_G_11
6690x4CB8 US_ALU_CONST_B_11
6700x4CBC US_ALU_CONST_A_11
6710x4CC0 US_ALU_CONST_R_12
6720x4CC4 US_ALU_CONST_G_12
6730x4CC8 US_ALU_CONST_B_12
6740x4CCC US_ALU_CONST_A_12
6750x4CD0 US_ALU_CONST_R_13
6760x4CD4 US_ALU_CONST_G_13
6770x4CD8 US_ALU_CONST_B_13
6780x4CDC US_ALU_CONST_A_13
6790x4CE0 US_ALU_CONST_R_14
6800x4CE4 US_ALU_CONST_G_14
6810x4CE8 US_ALU_CONST_B_14
6820x4CEC US_ALU_CONST_A_14
6830x4CF0 US_ALU_CONST_R_15
6840x4CF4 US_ALU_CONST_G_15
6850x4CF8 US_ALU_CONST_B_15
6860x4CFC US_ALU_CONST_A_15
6870x4D00 US_ALU_CONST_R_16
6880x4D04 US_ALU_CONST_G_16
6890x4D08 US_ALU_CONST_B_16
6900x4D0C US_ALU_CONST_A_16
6910x4D10 US_ALU_CONST_R_17
6920x4D14 US_ALU_CONST_G_17
6930x4D18 US_ALU_CONST_B_17
6940x4D1C US_ALU_CONST_A_17
6950x4D20 US_ALU_CONST_R_18
6960x4D24 US_ALU_CONST_G_18
6970x4D28 US_ALU_CONST_B_18
6980x4D2C US_ALU_CONST_A_18
6990x4D30 US_ALU_CONST_R_19
7000x4D34 US_ALU_CONST_G_19
7010x4D38 US_ALU_CONST_B_19
7020x4D3C US_ALU_CONST_A_19
7030x4D40 US_ALU_CONST_R_20
7040x4D44 US_ALU_CONST_G_20
7050x4D48 US_ALU_CONST_B_20
7060x4D4C US_ALU_CONST_A_20
7070x4D50 US_ALU_CONST_R_21
7080x4D54 US_ALU_CONST_G_21
7090x4D58 US_ALU_CONST_B_21
7100x4D5C US_ALU_CONST_A_21
7110x4D60 US_ALU_CONST_R_22
7120x4D64 US_ALU_CONST_G_22
7130x4D68 US_ALU_CONST_B_22
7140x4D6C US_ALU_CONST_A_22
7150x4D70 US_ALU_CONST_R_23
7160x4D74 US_ALU_CONST_G_23
7170x4D78 US_ALU_CONST_B_23
7180x4D7C US_ALU_CONST_A_23
7190x4D80 US_ALU_CONST_R_24
7200x4D84 US_ALU_CONST_G_24
7210x4D88 US_ALU_CONST_B_24
7220x4D8C US_ALU_CONST_A_24
7230x4D90 US_ALU_CONST_R_25
7240x4D94 US_ALU_CONST_G_25
7250x4D98 US_ALU_CONST_B_25
7260x4D9C US_ALU_CONST_A_25
7270x4DA0 US_ALU_CONST_R_26
7280x4DA4 US_ALU_CONST_G_26
7290x4DA8 US_ALU_CONST_B_26
7300x4DAC US_ALU_CONST_A_26
7310x4DB0 US_ALU_CONST_R_27
7320x4DB4 US_ALU_CONST_G_27
7330x4DB8 US_ALU_CONST_B_27
7340x4DBC US_ALU_CONST_A_27
7350x4DC0 US_ALU_CONST_R_28
7360x4DC4 US_ALU_CONST_G_28
7370x4DC8 US_ALU_CONST_B_28
7380x4DCC US_ALU_CONST_A_28
7390x4DD0 US_ALU_CONST_R_29
7400x4DD4 US_ALU_CONST_G_29
7410x4DD8 US_ALU_CONST_B_29
7420x4DDC US_ALU_CONST_A_29
7430x4DE0 US_ALU_CONST_R_30
7440x4DE4 US_ALU_CONST_G_30
7450x4DE8 US_ALU_CONST_B_30
7460x4DEC US_ALU_CONST_A_30
7470x4DF0 US_ALU_CONST_R_31
7480x4DF4 US_ALU_CONST_G_31
7490x4DF8 US_ALU_CONST_B_31
7500x4DFC US_ALU_CONST_A_31
7510x4E04 RB3D_BLENDCNTL_R3
7520x4E08 RB3D_ABLENDCNTL_R3
7530x4E0C RB3D_COLOR_CHANNEL_MASK
7540x4E10 RB3D_CONSTANT_COLOR
7550x4E14 RB3D_COLOR_CLEAR_VALUE
7560x4E18 RB3D_ROPCNTL_R3
7570x4E1C RB3D_CLRCMP_FLIPE_R3
7580x4E20 RB3D_CLRCMP_CLR_R3
7590x4E24 RB3D_CLRCMP_MSK_R3
7600x4E48 RB3D_DEBUG_CTL
7610x4E4C RB3D_DSTCACHE_CTLSTAT_R3
7620x4E50 RB3D_DITHER_CTL
7630x4E54 RB3D_CMASK_OFFSET0
7640x4E58 RB3D_CMASK_OFFSET1
7650x4E5C RB3D_CMASK_OFFSET2
7660x4E60 RB3D_CMASK_OFFSET3
7670x4E64 RB3D_CMASK_PITCH0
7680x4E68 RB3D_CMASK_PITCH1
7690x4E6C RB3D_CMASK_PITCH2
7700x4E70 RB3D_CMASK_PITCH3
7710x4E74 RB3D_CMASK_WRINDEX
7720x4E78 RB3D_CMASK_DWORD
7730x4E7C RB3D_CMASK_RDINDEX
7740x4E80 RB3D_AARESOLVE_OFFSET
7750x4E84 RB3D_AARESOLVE_PITCH
7760x4E88 RB3D_AARESOLVE_CTL
7770x4EA0 RB3D_DISCARD_SRC_PIXEL_LTE_THRESHOLD
7780x4EA4 RB3D_DISCARD_SRC_PIXEL_GTE_THRESHOLD
7790x4F04 ZB_ZSTENCILCNTL
7800x4F08 ZB_STENCILREFMASK
7810x4F14 ZB_ZTOP
7820x4F18 ZB_ZCACHE_CTLSTAT
7830x4F1C ZB_BW_CNTL
7840x4F28 ZB_DEPTHCLEARVALUE
7850x4F30 ZB_ZMASK_OFFSET
7860x4F34 ZB_ZMASK_PITCH
7870x4F38 ZB_ZMASK_WRINDEX
7880x4F3C ZB_ZMASK_DWORD
7890x4F40 ZB_ZMASK_RDINDEX
7900x4F44 ZB_HIZ_OFFSET
7910x4F48 ZB_HIZ_WRINDEX
7920x4F4C ZB_HIZ_DWORD
7930x4F50 ZB_HIZ_RDINDEX
7940x4F54 ZB_HIZ_PITCH
7950x4F58 ZB_ZPASS_DATA
diff --git a/drivers/gpu/drm/radeon/reg_srcs/rs600 b/drivers/gpu/drm/radeon/reg_srcs/rs600
index 8e3c0b807add..6801b865d1c4 100644
--- a/drivers/gpu/drm/radeon/reg_srcs/rs600
+++ b/drivers/gpu/drm/radeon/reg_srcs/rs600
@@ -153,7 +153,7 @@ rs600 0x6d40
1530x42A4 SU_POLY_OFFSET_FRONT_SCALE 1530x42A4 SU_POLY_OFFSET_FRONT_SCALE
1540x42A8 SU_POLY_OFFSET_FRONT_OFFSET 1540x42A8 SU_POLY_OFFSET_FRONT_OFFSET
1550x42AC SU_POLY_OFFSET_BACK_SCALE 1550x42AC SU_POLY_OFFSET_BACK_SCALE
1560x42B0 SU_POLY_OFFSET_BACK_OFFSET 1560x42B0 SU_POLY_OFFSET_BACK_OFFSET
1570x42B4 SU_POLY_OFFSET_ENABLE 1570x42B4 SU_POLY_OFFSET_ENABLE
1580x42B8 SU_CULL_MODE 1580x42B8 SU_CULL_MODE
1590x42C0 SU_DEPTH_SCALE 1590x42C0 SU_DEPTH_SCALE
@@ -291,6 +291,8 @@ rs600 0x6d40
2910x46AC US_OUT_FMT_2 2910x46AC US_OUT_FMT_2
2920x46B0 US_OUT_FMT_3 2920x46B0 US_OUT_FMT_3
2930x46B4 US_W_FMT 2930x46B4 US_W_FMT
2940x46B8 US_CODE_BANK
2950x46BC US_CODE_EXT
2940x46C0 US_ALU_RGB_ADDR_0 2960x46C0 US_ALU_RGB_ADDR_0
2950x46C4 US_ALU_RGB_ADDR_1 2970x46C4 US_ALU_RGB_ADDR_1
2960x46C8 US_ALU_RGB_ADDR_2 2980x46C8 US_ALU_RGB_ADDR_2
@@ -547,6 +549,70 @@ rs600 0x6d40
5470x4AB4 US_ALU_ALPHA_INST_61 5490x4AB4 US_ALU_ALPHA_INST_61
5480x4AB8 US_ALU_ALPHA_INST_62 5500x4AB8 US_ALU_ALPHA_INST_62
5490x4ABC US_ALU_ALPHA_INST_63 5510x4ABC US_ALU_ALPHA_INST_63
5520x4AC0 US_ALU_EXT_ADDR_0
5530x4AC4 US_ALU_EXT_ADDR_1
5540x4AC8 US_ALU_EXT_ADDR_2
5550x4ACC US_ALU_EXT_ADDR_3
5560x4AD0 US_ALU_EXT_ADDR_4
5570x4AD4 US_ALU_EXT_ADDR_5
5580x4AD8 US_ALU_EXT_ADDR_6
5590x4ADC US_ALU_EXT_ADDR_7
5600x4AE0 US_ALU_EXT_ADDR_8
5610x4AE4 US_ALU_EXT_ADDR_9
5620x4AE8 US_ALU_EXT_ADDR_10
5630x4AEC US_ALU_EXT_ADDR_11
5640x4AF0 US_ALU_EXT_ADDR_12
5650x4AF4 US_ALU_EXT_ADDR_13
5660x4AF8 US_ALU_EXT_ADDR_14
5670x4AFC US_ALU_EXT_ADDR_15
5680x4B00 US_ALU_EXT_ADDR_16
5690x4B04 US_ALU_EXT_ADDR_17
5700x4B08 US_ALU_EXT_ADDR_18
5710x4B0C US_ALU_EXT_ADDR_19
5720x4B10 US_ALU_EXT_ADDR_20
5730x4B14 US_ALU_EXT_ADDR_21
5740x4B18 US_ALU_EXT_ADDR_22
5750x4B1C US_ALU_EXT_ADDR_23
5760x4B20 US_ALU_EXT_ADDR_24
5770x4B24 US_ALU_EXT_ADDR_25
5780x4B28 US_ALU_EXT_ADDR_26
5790x4B2C US_ALU_EXT_ADDR_27
5800x4B30 US_ALU_EXT_ADDR_28
5810x4B34 US_ALU_EXT_ADDR_29
5820x4B38 US_ALU_EXT_ADDR_30
5830x4B3C US_ALU_EXT_ADDR_31
5840x4B40 US_ALU_EXT_ADDR_32
5850x4B44 US_ALU_EXT_ADDR_33
5860x4B48 US_ALU_EXT_ADDR_34
5870x4B4C US_ALU_EXT_ADDR_35
5880x4B50 US_ALU_EXT_ADDR_36
5890x4B54 US_ALU_EXT_ADDR_37
5900x4B58 US_ALU_EXT_ADDR_38
5910x4B5C US_ALU_EXT_ADDR_39
5920x4B60 US_ALU_EXT_ADDR_40
5930x4B64 US_ALU_EXT_ADDR_41
5940x4B68 US_ALU_EXT_ADDR_42
5950x4B6C US_ALU_EXT_ADDR_43
5960x4B70 US_ALU_EXT_ADDR_44
5970x4B74 US_ALU_EXT_ADDR_45
5980x4B78 US_ALU_EXT_ADDR_46
5990x4B7C US_ALU_EXT_ADDR_47
6000x4B80 US_ALU_EXT_ADDR_48
6010x4B84 US_ALU_EXT_ADDR_49
6020x4B88 US_ALU_EXT_ADDR_50
6030x4B8C US_ALU_EXT_ADDR_51
6040x4B90 US_ALU_EXT_ADDR_52
6050x4B94 US_ALU_EXT_ADDR_53
6060x4B98 US_ALU_EXT_ADDR_54
6070x4B9C US_ALU_EXT_ADDR_55
6080x4BA0 US_ALU_EXT_ADDR_56
6090x4BA4 US_ALU_EXT_ADDR_57
6100x4BA8 US_ALU_EXT_ADDR_58
6110x4BAC US_ALU_EXT_ADDR_59
6120x4BB0 US_ALU_EXT_ADDR_60
6130x4BB4 US_ALU_EXT_ADDR_61
6140x4BB8 US_ALU_EXT_ADDR_62
6150x4BBC US_ALU_EXT_ADDR_63
5500x4BC0 FG_FOG_BLEND 6160x4BC0 FG_FOG_BLEND
5510x4BC4 FG_FOG_FACTOR 6170x4BC4 FG_FOG_FACTOR
5520x4BC8 FG_FOG_COLOR_R 6180x4BC8 FG_FOG_COLOR_R
diff --git a/drivers/gpu/drm/radeon/reg_srcs/rv515 b/drivers/gpu/drm/radeon/reg_srcs/rv515
index 0102a0d5735c..38abf63bf2cd 100644
--- a/drivers/gpu/drm/radeon/reg_srcs/rv515
+++ b/drivers/gpu/drm/radeon/reg_srcs/rv515
@@ -161,7 +161,12 @@ rv515 0x6d40
1610x401C GB_SELECT 1610x401C GB_SELECT
1620x4020 GB_AA_CONFIG 1620x4020 GB_AA_CONFIG
1630x4024 GB_FIFO_SIZE 1630x4024 GB_FIFO_SIZE
1640x4028 GB_Z_PEQ_CONFIG
1640x4100 TX_INVALTAGS 1650x4100 TX_INVALTAGS
1660x4114 SU_TEX_WRAP_PS3
1670x4118 PS3_ENABLE
1680x411c PS3_VTX_FMT
1690x4120 PS3_TEX_SOURCE
1650x4200 GA_POINT_S0 1700x4200 GA_POINT_S0
1660x4204 GA_POINT_T0 1710x4204 GA_POINT_T0
1670x4208 GA_POINT_S1 1720x4208 GA_POINT_S1
@@ -171,6 +176,7 @@ rv515 0x6d40
1710x4230 GA_POINT_MINMAX 1760x4230 GA_POINT_MINMAX
1720x4234 GA_LINE_CNTL 1770x4234 GA_LINE_CNTL
1730x4238 GA_LINE_STIPPLE_CONFIG 1780x4238 GA_LINE_STIPPLE_CONFIG
1790x4258 GA_COLOR_CONTROL_PS3
1740x4260 GA_LINE_STIPPLE_VALUE 1800x4260 GA_LINE_STIPPLE_VALUE
1750x4264 GA_LINE_S0 1810x4264 GA_LINE_S0
1760x4268 GA_LINE_S1 1820x4268 GA_LINE_S1
diff --git a/drivers/gpu/drm/radeon/rs400.c b/drivers/gpu/drm/radeon/rs400.c
index 368415df5f3a..287fcebfb4e6 100644
--- a/drivers/gpu/drm/radeon/rs400.c
+++ b/drivers/gpu/drm/radeon/rs400.c
@@ -223,15 +223,31 @@ int rs400_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr)
223 return 0; 223 return 0;
224} 224}
225 225
226int rs400_mc_wait_for_idle(struct radeon_device *rdev)
227{
228 unsigned i;
229 uint32_t tmp;
230
231 for (i = 0; i < rdev->usec_timeout; i++) {
232 /* read MC_STATUS */
233 tmp = RREG32(0x0150);
234 if (tmp & (1 << 2)) {
235 return 0;
236 }
237 DRM_UDELAY(1);
238 }
239 return -1;
240}
241
226void rs400_gpu_init(struct radeon_device *rdev) 242void rs400_gpu_init(struct radeon_device *rdev)
227{ 243{
228 /* FIXME: HDP same place on rs400 ? */ 244 /* FIXME: HDP same place on rs400 ? */
229 r100_hdp_reset(rdev); 245 r100_hdp_reset(rdev);
230 /* FIXME: is this correct ? */ 246 /* FIXME: is this correct ? */
231 r420_pipes_init(rdev); 247 r420_pipes_init(rdev);
232 if (r300_mc_wait_for_idle(rdev)) { 248 if (rs400_mc_wait_for_idle(rdev)) {
233 printk(KERN_WARNING "Failed to wait MC idle while " 249 printk(KERN_WARNING "rs400: Failed to wait MC idle while "
234 "programming pipes. Bad things might happen.\n"); 250 "programming pipes. Bad things might happen. %08x\n", RREG32(0x150));
235 } 251 }
236} 252}
237 253
@@ -356,6 +372,7 @@ static int rs400_mc_init(struct radeon_device *rdev)
356 rdev->mc.vram_location = G_00015C_MC_FB_START(tmp) << 16; 372 rdev->mc.vram_location = G_00015C_MC_FB_START(tmp) << 16;
357 rdev->mc.gtt_location = 0xFFFFFFFFUL; 373 rdev->mc.gtt_location = 0xFFFFFFFFUL;
358 r = radeon_mc_setup(rdev); 374 r = radeon_mc_setup(rdev);
375 rdev->mc.igp_sideport_enabled = radeon_combios_sideport_present(rdev);
359 if (r) 376 if (r)
360 return r; 377 return r;
361 return 0; 378 return 0;
@@ -369,8 +386,8 @@ void rs400_mc_program(struct radeon_device *rdev)
369 r100_mc_stop(rdev, &save); 386 r100_mc_stop(rdev, &save);
370 387
371 /* Wait for mc idle */ 388 /* Wait for mc idle */
372 if (r300_mc_wait_for_idle(rdev)) 389 if (rs400_mc_wait_for_idle(rdev))
373 dev_warn(rdev->dev, "Wait MC idle timeout before updating MC.\n"); 390 dev_warn(rdev->dev, "rs400: Wait MC idle timeout before updating MC.\n");
374 WREG32(R_000148_MC_FB_LOCATION, 391 WREG32(R_000148_MC_FB_LOCATION,
375 S_000148_MC_FB_START(rdev->mc.vram_start >> 16) | 392 S_000148_MC_FB_START(rdev->mc.vram_start >> 16) |
376 S_000148_MC_FB_TOP(rdev->mc.vram_end >> 16)); 393 S_000148_MC_FB_TOP(rdev->mc.vram_end >> 16));
@@ -395,6 +412,7 @@ static int rs400_startup(struct radeon_device *rdev)
395 return r; 412 return r;
396 /* Enable IRQ */ 413 /* Enable IRQ */
397 r100_irq_set(rdev); 414 r100_irq_set(rdev);
415 rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL);
398 /* 1M ring buffer */ 416 /* 1M ring buffer */
399 r = r100_cp_init(rdev, 1024 * 1024); 417 r = r100_cp_init(rdev, 1024 * 1024);
400 if (r) { 418 if (r) {
@@ -446,7 +464,6 @@ int rs400_suspend(struct radeon_device *rdev)
446 464
447void rs400_fini(struct radeon_device *rdev) 465void rs400_fini(struct radeon_device *rdev)
448{ 466{
449 rs400_suspend(rdev);
450 r100_cp_fini(rdev); 467 r100_cp_fini(rdev);
451 r100_wb_fini(rdev); 468 r100_wb_fini(rdev);
452 r100_ib_fini(rdev); 469 r100_ib_fini(rdev);
@@ -525,7 +542,6 @@ int rs400_init(struct radeon_device *rdev)
525 if (r) { 542 if (r) {
526 /* Somethings want wront with the accel init stop accel */ 543 /* Somethings want wront with the accel init stop accel */
527 dev_err(rdev->dev, "Disabling GPU acceleration\n"); 544 dev_err(rdev->dev, "Disabling GPU acceleration\n");
528 rs400_suspend(rdev);
529 r100_cp_fini(rdev); 545 r100_cp_fini(rdev);
530 r100_wb_fini(rdev); 546 r100_wb_fini(rdev);
531 r100_ib_fini(rdev); 547 r100_ib_fini(rdev);
diff --git a/drivers/gpu/drm/radeon/rs600.c b/drivers/gpu/drm/radeon/rs600.c
index 4f8ea4260572..c3818562a13e 100644
--- a/drivers/gpu/drm/radeon/rs600.c
+++ b/drivers/gpu/drm/radeon/rs600.c
@@ -56,6 +56,7 @@ int rs600_mc_init(struct radeon_device *rdev)
56 rdev->mc.vram_location = G_000004_MC_FB_START(tmp) << 16; 56 rdev->mc.vram_location = G_000004_MC_FB_START(tmp) << 16;
57 rdev->mc.gtt_location = 0xffffffffUL; 57 rdev->mc.gtt_location = 0xffffffffUL;
58 r = radeon_mc_setup(rdev); 58 r = radeon_mc_setup(rdev);
59 rdev->mc.igp_sideport_enabled = radeon_atombios_sideport_present(rdev);
59 if (r) 60 if (r)
60 return r; 61 return r;
61 return 0; 62 return 0;
@@ -134,7 +135,8 @@ void rs600_hpd_init(struct radeon_device *rdev)
134 break; 135 break;
135 } 136 }
136 } 137 }
137 rs600_irq_set(rdev); 138 if (rdev->irq.installed)
139 rs600_irq_set(rdev);
138} 140}
139 141
140void rs600_hpd_fini(struct radeon_device *rdev) 142void rs600_hpd_fini(struct radeon_device *rdev)
@@ -315,6 +317,11 @@ int rs600_irq_set(struct radeon_device *rdev)
315 u32 hpd2 = RREG32(R_007D18_DC_HOT_PLUG_DETECT2_INT_CONTROL) & 317 u32 hpd2 = RREG32(R_007D18_DC_HOT_PLUG_DETECT2_INT_CONTROL) &
316 ~S_007D18_DC_HOT_PLUG_DETECT2_INT_EN(1); 318 ~S_007D18_DC_HOT_PLUG_DETECT2_INT_EN(1);
317 319
320 if (!rdev->irq.installed) {
321 WARN(1, "Can't enable IRQ/MSI because no handler is installed.\n");
322 WREG32(R_000040_GEN_INT_CNTL, 0);
323 return -EINVAL;
324 }
318 if (rdev->irq.sw_int) { 325 if (rdev->irq.sw_int) {
319 tmp |= S_000040_SW_INT_EN(1); 326 tmp |= S_000040_SW_INT_EN(1);
320 } 327 }
@@ -396,7 +403,7 @@ int rs600_irq_process(struct radeon_device *rdev)
396 } 403 }
397 while (status || r500_disp_int) { 404 while (status || r500_disp_int) {
398 /* SW interrupt */ 405 /* SW interrupt */
399 if (G_000040_SW_INT_EN(status)) 406 if (G_000044_SW_INT(status))
400 radeon_fence_process(rdev); 407 radeon_fence_process(rdev);
401 /* Vertical blank interrupts */ 408 /* Vertical blank interrupts */
402 if (G_007EDC_LB_D1_VBLANK_INTERRUPT(r500_disp_int)) 409 if (G_007EDC_LB_D1_VBLANK_INTERRUPT(r500_disp_int))
@@ -553,6 +560,7 @@ static int rs600_startup(struct radeon_device *rdev)
553 return r; 560 return r;
554 /* Enable IRQ */ 561 /* Enable IRQ */
555 rs600_irq_set(rdev); 562 rs600_irq_set(rdev);
563 rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL);
556 /* 1M ring buffer */ 564 /* 1M ring buffer */
557 r = r100_cp_init(rdev, 1024 * 1024); 565 r = r100_cp_init(rdev, 1024 * 1024);
558 if (r) { 566 if (r) {
@@ -602,7 +610,6 @@ int rs600_suspend(struct radeon_device *rdev)
602 610
603void rs600_fini(struct radeon_device *rdev) 611void rs600_fini(struct radeon_device *rdev)
604{ 612{
605 rs600_suspend(rdev);
606 r100_cp_fini(rdev); 613 r100_cp_fini(rdev);
607 r100_wb_fini(rdev); 614 r100_wb_fini(rdev);
608 r100_ib_fini(rdev); 615 r100_ib_fini(rdev);
@@ -681,7 +688,6 @@ int rs600_init(struct radeon_device *rdev)
681 if (r) { 688 if (r) {
682 /* Somethings want wront with the accel init stop accel */ 689 /* Somethings want wront with the accel init stop accel */
683 dev_err(rdev->dev, "Disabling GPU acceleration\n"); 690 dev_err(rdev->dev, "Disabling GPU acceleration\n");
684 rs600_suspend(rdev);
685 r100_cp_fini(rdev); 691 r100_cp_fini(rdev);
686 r100_wb_fini(rdev); 692 r100_wb_fini(rdev);
687 r100_ib_fini(rdev); 693 r100_ib_fini(rdev);
diff --git a/drivers/gpu/drm/radeon/rs690.c b/drivers/gpu/drm/radeon/rs690.c
index 1e22f52d6039..06e2771aee5a 100644
--- a/drivers/gpu/drm/radeon/rs690.c
+++ b/drivers/gpu/drm/radeon/rs690.c
@@ -172,6 +172,7 @@ static int rs690_mc_init(struct radeon_device *rdev)
172 rdev->mc.vram_location = G_000100_MC_FB_START(tmp) << 16; 172 rdev->mc.vram_location = G_000100_MC_FB_START(tmp) << 16;
173 rdev->mc.gtt_location = 0xFFFFFFFFUL; 173 rdev->mc.gtt_location = 0xFFFFFFFFUL;
174 r = radeon_mc_setup(rdev); 174 r = radeon_mc_setup(rdev);
175 rdev->mc.igp_sideport_enabled = radeon_atombios_sideport_present(rdev);
175 if (r) 176 if (r)
176 return r; 177 return r;
177 return 0; 178 return 0;
@@ -625,6 +626,7 @@ static int rs690_startup(struct radeon_device *rdev)
625 return r; 626 return r;
626 /* Enable IRQ */ 627 /* Enable IRQ */
627 rs600_irq_set(rdev); 628 rs600_irq_set(rdev);
629 rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL);
628 /* 1M ring buffer */ 630 /* 1M ring buffer */
629 r = r100_cp_init(rdev, 1024 * 1024); 631 r = r100_cp_init(rdev, 1024 * 1024);
630 if (r) { 632 if (r) {
@@ -674,7 +676,6 @@ int rs690_suspend(struct radeon_device *rdev)
674 676
675void rs690_fini(struct radeon_device *rdev) 677void rs690_fini(struct radeon_device *rdev)
676{ 678{
677 rs690_suspend(rdev);
678 r100_cp_fini(rdev); 679 r100_cp_fini(rdev);
679 r100_wb_fini(rdev); 680 r100_wb_fini(rdev);
680 r100_ib_fini(rdev); 681 r100_ib_fini(rdev);
@@ -754,7 +755,6 @@ int rs690_init(struct radeon_device *rdev)
754 if (r) { 755 if (r) {
755 /* Somethings want wront with the accel init stop accel */ 756 /* Somethings want wront with the accel init stop accel */
756 dev_err(rdev->dev, "Disabling GPU acceleration\n"); 757 dev_err(rdev->dev, "Disabling GPU acceleration\n");
757 rs690_suspend(rdev);
758 r100_cp_fini(rdev); 758 r100_cp_fini(rdev);
759 r100_wb_fini(rdev); 759 r100_wb_fini(rdev);
760 r100_ib_fini(rdev); 760 r100_ib_fini(rdev);
diff --git a/drivers/gpu/drm/radeon/rv515.c b/drivers/gpu/drm/radeon/rv515.c
index 59632a506b46..0e1e6b8632b8 100644
--- a/drivers/gpu/drm/radeon/rv515.c
+++ b/drivers/gpu/drm/radeon/rv515.c
@@ -479,6 +479,7 @@ static int rv515_startup(struct radeon_device *rdev)
479 } 479 }
480 /* Enable IRQ */ 480 /* Enable IRQ */
481 rs600_irq_set(rdev); 481 rs600_irq_set(rdev);
482 rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL);
482 /* 1M ring buffer */ 483 /* 1M ring buffer */
483 r = r100_cp_init(rdev, 1024 * 1024); 484 r = r100_cp_init(rdev, 1024 * 1024);
484 if (r) { 485 if (r) {
@@ -536,7 +537,6 @@ void rv515_set_safe_registers(struct radeon_device *rdev)
536 537
537void rv515_fini(struct radeon_device *rdev) 538void rv515_fini(struct radeon_device *rdev)
538{ 539{
539 rv515_suspend(rdev);
540 r100_cp_fini(rdev); 540 r100_cp_fini(rdev);
541 r100_wb_fini(rdev); 541 r100_wb_fini(rdev);
542 r100_ib_fini(rdev); 542 r100_ib_fini(rdev);
@@ -614,13 +614,12 @@ int rv515_init(struct radeon_device *rdev)
614 if (r) { 614 if (r) {
615 /* Somethings want wront with the accel init stop accel */ 615 /* Somethings want wront with the accel init stop accel */
616 dev_err(rdev->dev, "Disabling GPU acceleration\n"); 616 dev_err(rdev->dev, "Disabling GPU acceleration\n");
617 rv515_suspend(rdev);
618 r100_cp_fini(rdev); 617 r100_cp_fini(rdev);
619 r100_wb_fini(rdev); 618 r100_wb_fini(rdev);
620 r100_ib_fini(rdev); 619 r100_ib_fini(rdev);
620 radeon_irq_kms_fini(rdev);
621 rv370_pcie_gart_fini(rdev); 621 rv370_pcie_gart_fini(rdev);
622 radeon_agp_fini(rdev); 622 radeon_agp_fini(rdev);
623 radeon_irq_kms_fini(rdev);
624 rdev->accel_working = false; 623 rdev->accel_working = false;
625 } 624 }
626 return 0; 625 return 0;
diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c
index 3bcb66e52786..03021674d097 100644
--- a/drivers/gpu/drm/radeon/rv770.c
+++ b/drivers/gpu/drm/radeon/rv770.c
@@ -549,9 +549,12 @@ static void rv770_gpu_init(struct radeon_device *rdev)
549 549
550 gb_tiling_config |= BANK_SWAPS(1); 550 gb_tiling_config |= BANK_SWAPS(1);
551 551
552 backend_map = r700_get_tile_pipe_to_backend_map(rdev->config.rv770.max_tile_pipes, 552 if (rdev->family == CHIP_RV740)
553 rdev->config.rv770.max_backends, 553 backend_map = 0x28;
554 (0xff << rdev->config.rv770.max_backends) & 0xff); 554 else
555 backend_map = r700_get_tile_pipe_to_backend_map(rdev->config.rv770.max_tile_pipes,
556 rdev->config.rv770.max_backends,
557 (0xff << rdev->config.rv770.max_backends) & 0xff);
555 gb_tiling_config |= BACKEND_MAP(backend_map); 558 gb_tiling_config |= BACKEND_MAP(backend_map);
556 559
557 cc_gc_shader_pipe_config = 560 cc_gc_shader_pipe_config =
@@ -779,7 +782,6 @@ int rv770_mc_init(struct radeon_device *rdev)
779 fixed20_12 a; 782 fixed20_12 a;
780 u32 tmp; 783 u32 tmp;
781 int chansize, numchan; 784 int chansize, numchan;
782 int r;
783 785
784 /* Get VRAM informations */ 786 /* Get VRAM informations */
785 rdev->mc.vram_is_ddr = true; 787 rdev->mc.vram_is_ddr = true;
@@ -822,9 +824,6 @@ int rv770_mc_init(struct radeon_device *rdev)
822 rdev->mc.real_vram_size = rdev->mc.aper_size; 824 rdev->mc.real_vram_size = rdev->mc.aper_size;
823 825
824 if (rdev->flags & RADEON_IS_AGP) { 826 if (rdev->flags & RADEON_IS_AGP) {
825 r = radeon_agp_init(rdev);
826 if (r)
827 return r;
828 /* gtt_size is setup by radeon_agp_init */ 827 /* gtt_size is setup by radeon_agp_init */
829 rdev->mc.gtt_location = rdev->mc.agp_base; 828 rdev->mc.gtt_location = rdev->mc.agp_base;
830 tmp = 0xFFFFFFFFUL - rdev->mc.agp_base - rdev->mc.gtt_size; 829 tmp = 0xFFFFFFFFUL - rdev->mc.agp_base - rdev->mc.gtt_size;
@@ -891,26 +890,25 @@ static int rv770_startup(struct radeon_device *rdev)
891 return r; 890 return r;
892 } 891 }
893 rv770_gpu_init(rdev); 892 rv770_gpu_init(rdev);
894 893 r = r600_blit_init(rdev);
895 if (!rdev->r600_blit.shader_obj) { 894 if (r) {
896 r = r600_blit_init(rdev); 895 r600_blit_fini(rdev);
896 rdev->asic->copy = NULL;
897 dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r);
898 }
899 /* pin copy shader into vram */
900 if (rdev->r600_blit.shader_obj) {
901 r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
902 if (unlikely(r != 0))
903 return r;
904 r = radeon_bo_pin(rdev->r600_blit.shader_obj, RADEON_GEM_DOMAIN_VRAM,
905 &rdev->r600_blit.shader_gpu_addr);
906 radeon_bo_unreserve(rdev->r600_blit.shader_obj);
897 if (r) { 907 if (r) {
898 DRM_ERROR("radeon: failed blitter (%d).\n", r); 908 DRM_ERROR("failed to pin blit object %d\n", r);
899 return r; 909 return r;
900 } 910 }
901 } 911 }
902
903 r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
904 if (unlikely(r != 0))
905 return r;
906 r = radeon_bo_pin(rdev->r600_blit.shader_obj, RADEON_GEM_DOMAIN_VRAM,
907 &rdev->r600_blit.shader_gpu_addr);
908 radeon_bo_unreserve(rdev->r600_blit.shader_obj);
909 if (r) {
910 DRM_ERROR("failed to pin blit object %d\n", r);
911 return r;
912 }
913
914 /* Enable IRQ */ 912 /* Enable IRQ */
915 r = r600_irq_init(rdev); 913 r = r600_irq_init(rdev);
916 if (r) { 914 if (r) {
@@ -972,13 +970,16 @@ int rv770_suspend(struct radeon_device *rdev)
972 /* FIXME: we should wait for ring to be empty */ 970 /* FIXME: we should wait for ring to be empty */
973 r700_cp_stop(rdev); 971 r700_cp_stop(rdev);
974 rdev->cp.ready = false; 972 rdev->cp.ready = false;
973 r600_irq_suspend(rdev);
975 r600_wb_disable(rdev); 974 r600_wb_disable(rdev);
976 rv770_pcie_gart_disable(rdev); 975 rv770_pcie_gart_disable(rdev);
977 /* unpin shaders bo */ 976 /* unpin shaders bo */
978 r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false); 977 if (rdev->r600_blit.shader_obj) {
979 if (likely(r == 0)) { 978 r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
980 radeon_bo_unpin(rdev->r600_blit.shader_obj); 979 if (likely(r == 0)) {
981 radeon_bo_unreserve(rdev->r600_blit.shader_obj); 980 radeon_bo_unpin(rdev->r600_blit.shader_obj);
981 radeon_bo_unreserve(rdev->r600_blit.shader_obj);
982 }
982 } 983 }
983 return 0; 984 return 0;
984} 985}
@@ -1037,6 +1038,11 @@ int rv770_init(struct radeon_device *rdev)
1037 r = radeon_fence_driver_init(rdev); 1038 r = radeon_fence_driver_init(rdev);
1038 if (r) 1039 if (r)
1039 return r; 1040 return r;
1041 if (rdev->flags & RADEON_IS_AGP) {
1042 r = radeon_agp_init(rdev);
1043 if (r)
1044 radeon_agp_disable(rdev);
1045 }
1040 r = rv770_mc_init(rdev); 1046 r = rv770_mc_init(rdev);
1041 if (r) 1047 if (r)
1042 return r; 1048 return r;
@@ -1062,22 +1068,25 @@ int rv770_init(struct radeon_device *rdev)
1062 rdev->accel_working = true; 1068 rdev->accel_working = true;
1063 r = rv770_startup(rdev); 1069 r = rv770_startup(rdev);
1064 if (r) { 1070 if (r) {
1065 rv770_suspend(rdev); 1071 dev_err(rdev->dev, "disabling GPU acceleration\n");
1072 r600_cp_fini(rdev);
1066 r600_wb_fini(rdev); 1073 r600_wb_fini(rdev);
1067 radeon_ring_fini(rdev); 1074 r600_irq_fini(rdev);
1075 radeon_irq_kms_fini(rdev);
1068 rv770_pcie_gart_fini(rdev); 1076 rv770_pcie_gart_fini(rdev);
1069 rdev->accel_working = false; 1077 rdev->accel_working = false;
1070 } 1078 }
1071 if (rdev->accel_working) { 1079 if (rdev->accel_working) {
1072 r = radeon_ib_pool_init(rdev); 1080 r = radeon_ib_pool_init(rdev);
1073 if (r) { 1081 if (r) {
1074 DRM_ERROR("radeon: failed initializing IB pool (%d).\n", r); 1082 dev_err(rdev->dev, "IB initialization failed (%d).\n", r);
1075 rdev->accel_working = false;
1076 }
1077 r = r600_ib_test(rdev);
1078 if (r) {
1079 DRM_ERROR("radeon: failed testing IB (%d).\n", r);
1080 rdev->accel_working = false; 1083 rdev->accel_working = false;
1084 } else {
1085 r = r600_ib_test(rdev);
1086 if (r) {
1087 dev_err(rdev->dev, "IB test failed (%d).\n", r);
1088 rdev->accel_working = false;
1089 }
1081 } 1090 }
1082 } 1091 }
1083 return 0; 1092 return 0;
@@ -1085,19 +1094,16 @@ int rv770_init(struct radeon_device *rdev)
1085 1094
1086void rv770_fini(struct radeon_device *rdev) 1095void rv770_fini(struct radeon_device *rdev)
1087{ 1096{
1088 rv770_suspend(rdev);
1089
1090 r600_blit_fini(rdev); 1097 r600_blit_fini(rdev);
1098 r600_cp_fini(rdev);
1099 r600_wb_fini(rdev);
1091 r600_irq_fini(rdev); 1100 r600_irq_fini(rdev);
1092 radeon_irq_kms_fini(rdev); 1101 radeon_irq_kms_fini(rdev);
1093 radeon_ring_fini(rdev);
1094 r600_wb_fini(rdev);
1095 rv770_pcie_gart_fini(rdev); 1102 rv770_pcie_gart_fini(rdev);
1096 radeon_gem_fini(rdev); 1103 radeon_gem_fini(rdev);
1097 radeon_fence_driver_fini(rdev); 1104 radeon_fence_driver_fini(rdev);
1098 radeon_clocks_fini(rdev); 1105 radeon_clocks_fini(rdev);
1099 if (rdev->flags & RADEON_IS_AGP) 1106 radeon_agp_fini(rdev);
1100 radeon_agp_fini(rdev);
1101 radeon_bo_fini(rdev); 1107 radeon_bo_fini(rdev);
1102 radeon_atombios_fini(rdev); 1108 radeon_atombios_fini(rdev);
1103 kfree(rdev->bios); 1109 kfree(rdev->bios);
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
index 2920f9a279e1..c7320ce4567d 100644
--- a/drivers/gpu/drm/ttm/ttm_bo.c
+++ b/drivers/gpu/drm/ttm/ttm_bo.c
@@ -426,7 +426,8 @@ moved:
426 bdev->man[bo->mem.mem_type].gpu_offset; 426 bdev->man[bo->mem.mem_type].gpu_offset;
427 bo->cur_placement = bo->mem.placement; 427 bo->cur_placement = bo->mem.placement;
428 spin_unlock(&bo->lock); 428 spin_unlock(&bo->lock);
429 } 429 } else
430 bo->offset = 0;
430 431
431 return 0; 432 return 0;
432 433
@@ -523,52 +524,44 @@ static int ttm_bo_cleanup_refs(struct ttm_buffer_object *bo, bool remove_all)
523static int ttm_bo_delayed_delete(struct ttm_bo_device *bdev, bool remove_all) 524static int ttm_bo_delayed_delete(struct ttm_bo_device *bdev, bool remove_all)
524{ 525{
525 struct ttm_bo_global *glob = bdev->glob; 526 struct ttm_bo_global *glob = bdev->glob;
526 struct ttm_buffer_object *entry, *nentry; 527 struct ttm_buffer_object *entry = NULL;
527 struct list_head *list, *next; 528 int ret = 0;
528 int ret;
529 529
530 spin_lock(&glob->lru_lock); 530 spin_lock(&glob->lru_lock);
531 list_for_each_safe(list, next, &bdev->ddestroy) { 531 if (list_empty(&bdev->ddestroy))
532 entry = list_entry(list, struct ttm_buffer_object, ddestroy); 532 goto out_unlock;
533 nentry = NULL;
534 533
535 /* 534 entry = list_first_entry(&bdev->ddestroy,
536 * Protect the next list entry from destruction while we 535 struct ttm_buffer_object, ddestroy);
537 * unlock the lru_lock. 536 kref_get(&entry->list_kref);
538 */
539 537
540 if (next != &bdev->ddestroy) { 538 for (;;) {
541 nentry = list_entry(next, struct ttm_buffer_object, 539 struct ttm_buffer_object *nentry = NULL;
542 ddestroy); 540
541 if (entry->ddestroy.next != &bdev->ddestroy) {
542 nentry = list_first_entry(&entry->ddestroy,
543 struct ttm_buffer_object, ddestroy);
543 kref_get(&nentry->list_kref); 544 kref_get(&nentry->list_kref);
544 } 545 }
545 kref_get(&entry->list_kref);
546 546
547 spin_unlock(&glob->lru_lock); 547 spin_unlock(&glob->lru_lock);
548 ret = ttm_bo_cleanup_refs(entry, remove_all); 548 ret = ttm_bo_cleanup_refs(entry, remove_all);
549 kref_put(&entry->list_kref, ttm_bo_release_list); 549 kref_put(&entry->list_kref, ttm_bo_release_list);
550 entry = nentry;
551
552 if (ret || !entry)
553 goto out;
550 554
551 spin_lock(&glob->lru_lock); 555 spin_lock(&glob->lru_lock);
552 if (nentry) { 556 if (list_empty(&entry->ddestroy))
553 bool next_onlist = !list_empty(next);
554 spin_unlock(&glob->lru_lock);
555 kref_put(&nentry->list_kref, ttm_bo_release_list);
556 spin_lock(&glob->lru_lock);
557 /*
558 * Someone might have raced us and removed the
559 * next entry from the list. We don't bother restarting
560 * list traversal.
561 */
562
563 if (!next_onlist)
564 break;
565 }
566 if (ret)
567 break; 557 break;
568 } 558 }
569 ret = !list_empty(&bdev->ddestroy);
570 spin_unlock(&glob->lru_lock);
571 559
560out_unlock:
561 spin_unlock(&glob->lru_lock);
562out:
563 if (entry)
564 kref_put(&entry->list_kref, ttm_bo_release_list);
572 return ret; 565 return ret;
573} 566}
574 567
@@ -950,6 +943,14 @@ int ttm_bo_mem_space(struct ttm_buffer_object *bo,
950 ttm_flag_masked(&cur_flags, placement->busy_placement[i], 943 ttm_flag_masked(&cur_flags, placement->busy_placement[i],
951 ~TTM_PL_MASK_MEMTYPE); 944 ~TTM_PL_MASK_MEMTYPE);
952 945
946
947 if (mem_type == TTM_PL_SYSTEM) {
948 mem->mem_type = mem_type;
949 mem->placement = cur_flags;
950 mem->mm_node = NULL;
951 return 0;
952 }
953
953 ret = ttm_bo_mem_force_space(bo, mem_type, placement, mem, 954 ret = ttm_bo_mem_force_space(bo, mem_type, placement, mem,
954 interruptible, no_wait); 955 interruptible, no_wait);
955 if (ret == 0 && mem->mm_node) { 956 if (ret == 0 && mem->mm_node) {
@@ -1019,6 +1020,12 @@ static int ttm_bo_mem_compat(struct ttm_placement *placement,
1019 struct ttm_mem_reg *mem) 1020 struct ttm_mem_reg *mem)
1020{ 1021{
1021 int i; 1022 int i;
1023 struct drm_mm_node *node = mem->mm_node;
1024
1025 if (node && placement->lpfn != 0 &&
1026 (node->start < placement->fpfn ||
1027 node->start + node->size > placement->lpfn))
1028 return -1;
1022 1029
1023 for (i = 0; i < placement->num_placement; i++) { 1030 for (i = 0; i < placement->num_placement; i++) {
1024 if ((placement->placement[i] & mem->placement & 1031 if ((placement->placement[i] & mem->placement &
@@ -1844,6 +1851,9 @@ static int ttm_bo_swapout(struct ttm_mem_shrink *shrink)
1844 * anyone tries to access a ttm page. 1851 * anyone tries to access a ttm page.
1845 */ 1852 */
1846 1853
1854 if (bo->bdev->driver->swap_notify)
1855 bo->bdev->driver->swap_notify(bo);
1856
1847 ret = ttm_tt_swapout(bo->ttm, bo->persistant_swap_storage); 1857 ret = ttm_tt_swapout(bo->ttm, bo->persistant_swap_storage);
1848out: 1858out:
1849 1859
@@ -1864,3 +1874,4 @@ void ttm_bo_swapout_all(struct ttm_bo_device *bdev)
1864 while (ttm_bo_swapout(&bdev->glob->shrink) == 0) 1874 while (ttm_bo_swapout(&bdev->glob->shrink) == 0)
1865 ; 1875 ;
1866} 1876}
1877EXPORT_SYMBOL(ttm_bo_swapout_all);
diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c
index 2ecf7d0c64f6..5ca37a58a98c 100644
--- a/drivers/gpu/drm/ttm/ttm_bo_util.c
+++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
@@ -53,7 +53,6 @@ int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
53{ 53{
54 struct ttm_tt *ttm = bo->ttm; 54 struct ttm_tt *ttm = bo->ttm;
55 struct ttm_mem_reg *old_mem = &bo->mem; 55 struct ttm_mem_reg *old_mem = &bo->mem;
56 uint32_t save_flags = old_mem->placement;
57 int ret; 56 int ret;
58 57
59 if (old_mem->mem_type != TTM_PL_SYSTEM) { 58 if (old_mem->mem_type != TTM_PL_SYSTEM) {
@@ -62,7 +61,6 @@ int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
62 ttm_flag_masked(&old_mem->placement, TTM_PL_FLAG_SYSTEM, 61 ttm_flag_masked(&old_mem->placement, TTM_PL_FLAG_SYSTEM,
63 TTM_PL_MASK_MEM); 62 TTM_PL_MASK_MEM);
64 old_mem->mem_type = TTM_PL_SYSTEM; 63 old_mem->mem_type = TTM_PL_SYSTEM;
65 save_flags = old_mem->placement;
66 } 64 }
67 65
68 ret = ttm_tt_set_placement_caching(ttm, new_mem->placement); 66 ret = ttm_tt_set_placement_caching(ttm, new_mem->placement);
@@ -77,7 +75,7 @@ int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
77 75
78 *old_mem = *new_mem; 76 *old_mem = *new_mem;
79 new_mem->mm_node = NULL; 77 new_mem->mm_node = NULL;
80 ttm_flag_masked(&save_flags, new_mem->placement, TTM_PL_MASK_MEMTYPE); 78
81 return 0; 79 return 0;
82} 80}
83EXPORT_SYMBOL(ttm_bo_move_ttm); 81EXPORT_SYMBOL(ttm_bo_move_ttm);
@@ -219,7 +217,6 @@ int ttm_bo_move_memcpy(struct ttm_buffer_object *bo,
219 void *old_iomap; 217 void *old_iomap;
220 void *new_iomap; 218 void *new_iomap;
221 int ret; 219 int ret;
222 uint32_t save_flags = old_mem->placement;
223 unsigned long i; 220 unsigned long i;
224 unsigned long page; 221 unsigned long page;
225 unsigned long add = 0; 222 unsigned long add = 0;
@@ -270,7 +267,6 @@ out2:
270 267
271 *old_mem = *new_mem; 268 *old_mem = *new_mem;
272 new_mem->mm_node = NULL; 269 new_mem->mm_node = NULL;
273 ttm_flag_masked(&save_flags, new_mem->placement, TTM_PL_MASK_MEMTYPE);
274 270
275 if ((man->flags & TTM_MEMTYPE_FLAG_FIXED) && (ttm != NULL)) { 271 if ((man->flags & TTM_MEMTYPE_FLAG_FIXED) && (ttm != NULL)) {
276 ttm_tt_unbind(ttm); 272 ttm_tt_unbind(ttm);
@@ -537,7 +533,6 @@ int ttm_bo_move_accel_cleanup(struct ttm_buffer_object *bo,
537 struct ttm_mem_type_manager *man = &bdev->man[new_mem->mem_type]; 533 struct ttm_mem_type_manager *man = &bdev->man[new_mem->mem_type];
538 struct ttm_mem_reg *old_mem = &bo->mem; 534 struct ttm_mem_reg *old_mem = &bo->mem;
539 int ret; 535 int ret;
540 uint32_t save_flags = old_mem->placement;
541 struct ttm_buffer_object *ghost_obj; 536 struct ttm_buffer_object *ghost_obj;
542 void *tmp_obj = NULL; 537 void *tmp_obj = NULL;
543 538
@@ -598,7 +593,7 @@ int ttm_bo_move_accel_cleanup(struct ttm_buffer_object *bo,
598 593
599 *old_mem = *new_mem; 594 *old_mem = *new_mem;
600 new_mem->mm_node = NULL; 595 new_mem->mm_node = NULL;
601 ttm_flag_masked(&save_flags, new_mem->placement, TTM_PL_MASK_MEMTYPE); 596
602 return 0; 597 return 0;
603} 598}
604EXPORT_SYMBOL(ttm_bo_move_accel_cleanup); 599EXPORT_SYMBOL(ttm_bo_move_accel_cleanup);
diff --git a/drivers/gpu/drm/ttm/ttm_lock.c b/drivers/gpu/drm/ttm/ttm_lock.c
index f619ebcaa4ec..3d172ef04ee1 100644
--- a/drivers/gpu/drm/ttm/ttm_lock.c
+++ b/drivers/gpu/drm/ttm/ttm_lock.c
@@ -288,6 +288,7 @@ void ttm_suspend_unlock(struct ttm_lock *lock)
288 wake_up_all(&lock->queue); 288 wake_up_all(&lock->queue);
289 spin_unlock(&lock->lock); 289 spin_unlock(&lock->lock);
290} 290}
291EXPORT_SYMBOL(ttm_suspend_unlock);
291 292
292static bool __ttm_suspend_lock(struct ttm_lock *lock) 293static bool __ttm_suspend_lock(struct ttm_lock *lock)
293{ 294{
@@ -309,3 +310,4 @@ void ttm_suspend_lock(struct ttm_lock *lock)
309{ 310{
310 wait_event(lock->queue, __ttm_suspend_lock(lock)); 311 wait_event(lock->queue, __ttm_suspend_lock(lock));
311} 312}
313EXPORT_SYMBOL(ttm_suspend_lock);
diff --git a/drivers/gpu/drm/ttm/ttm_object.c b/drivers/gpu/drm/ttm/ttm_object.c
index 1099abac824b..75e9d6f86ba4 100644
--- a/drivers/gpu/drm/ttm/ttm_object.c
+++ b/drivers/gpu/drm/ttm/ttm_object.c
@@ -109,8 +109,8 @@ struct ttm_ref_object {
109 struct drm_hash_item hash; 109 struct drm_hash_item hash;
110 struct list_head head; 110 struct list_head head;
111 struct kref kref; 111 struct kref kref;
112 struct ttm_base_object *obj;
113 enum ttm_ref_type ref_type; 112 enum ttm_ref_type ref_type;
113 struct ttm_base_object *obj;
114 struct ttm_object_file *tfile; 114 struct ttm_object_file *tfile;
115}; 115};
116 116
diff --git a/drivers/gpu/drm/ttm/ttm_tt.c b/drivers/gpu/drm/ttm/ttm_tt.c
index 9c2b1cc5dba5..3d47a2c12322 100644
--- a/drivers/gpu/drm/ttm/ttm_tt.c
+++ b/drivers/gpu/drm/ttm/ttm_tt.c
@@ -196,23 +196,34 @@ EXPORT_SYMBOL(ttm_tt_populate);
196 196
197#ifdef CONFIG_X86 197#ifdef CONFIG_X86
198static inline int ttm_tt_set_page_caching(struct page *p, 198static inline int ttm_tt_set_page_caching(struct page *p,
199 enum ttm_caching_state c_state) 199 enum ttm_caching_state c_old,
200 enum ttm_caching_state c_new)
200{ 201{
202 int ret = 0;
203
201 if (PageHighMem(p)) 204 if (PageHighMem(p))
202 return 0; 205 return 0;
203 206
204 switch (c_state) { 207 if (c_old != tt_cached) {
205 case tt_cached: 208 /* p isn't in the default caching state, set it to
206 return set_pages_wb(p, 1); 209 * writeback first to free its current memtype. */
207 case tt_wc: 210
208 return set_memory_wc((unsigned long) page_address(p), 1); 211 ret = set_pages_wb(p, 1);
209 default: 212 if (ret)
210 return set_pages_uc(p, 1); 213 return ret;
211 } 214 }
215
216 if (c_new == tt_wc)
217 ret = set_memory_wc((unsigned long) page_address(p), 1);
218 else if (c_new == tt_uncached)
219 ret = set_pages_uc(p, 1);
220
221 return ret;
212} 222}
213#else /* CONFIG_X86 */ 223#else /* CONFIG_X86 */
214static inline int ttm_tt_set_page_caching(struct page *p, 224static inline int ttm_tt_set_page_caching(struct page *p,
215 enum ttm_caching_state c_state) 225 enum ttm_caching_state c_old,
226 enum ttm_caching_state c_new)
216{ 227{
217 return 0; 228 return 0;
218} 229}
@@ -245,7 +256,9 @@ static int ttm_tt_set_caching(struct ttm_tt *ttm,
245 for (i = 0; i < ttm->num_pages; ++i) { 256 for (i = 0; i < ttm->num_pages; ++i) {
246 cur_page = ttm->pages[i]; 257 cur_page = ttm->pages[i];
247 if (likely(cur_page != NULL)) { 258 if (likely(cur_page != NULL)) {
248 ret = ttm_tt_set_page_caching(cur_page, c_state); 259 ret = ttm_tt_set_page_caching(cur_page,
260 ttm->caching_state,
261 c_state);
249 if (unlikely(ret != 0)) 262 if (unlikely(ret != 0))
250 goto out_err; 263 goto out_err;
251 } 264 }
@@ -259,7 +272,7 @@ out_err:
259 for (j = 0; j < i; ++j) { 272 for (j = 0; j < i; ++j) {
260 cur_page = ttm->pages[j]; 273 cur_page = ttm->pages[j];
261 if (likely(cur_page != NULL)) { 274 if (likely(cur_page != NULL)) {
262 (void)ttm_tt_set_page_caching(cur_page, 275 (void)ttm_tt_set_page_caching(cur_page, c_state,
263 ttm->caching_state); 276 ttm->caching_state);
264 } 277 }
265 } 278 }
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c b/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c
index d6f2d2b882e9..825ebe3d89d5 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c
@@ -48,6 +48,15 @@ struct ttm_placement vmw_vram_placement = {
48 .busy_placement = &vram_placement_flags 48 .busy_placement = &vram_placement_flags
49}; 49};
50 50
51struct ttm_placement vmw_vram_sys_placement = {
52 .fpfn = 0,
53 .lpfn = 0,
54 .num_placement = 1,
55 .placement = &vram_placement_flags,
56 .num_busy_placement = 1,
57 .busy_placement = &sys_placement_flags
58};
59
51struct ttm_placement vmw_vram_ne_placement = { 60struct ttm_placement vmw_vram_ne_placement = {
52 .fpfn = 0, 61 .fpfn = 0,
53 .lpfn = 0, 62 .lpfn = 0,
@@ -172,6 +181,18 @@ static int vmw_verify_access(struct ttm_buffer_object *bo, struct file *filp)
172 return 0; 181 return 0;
173} 182}
174 183
184static void vmw_move_notify(struct ttm_buffer_object *bo,
185 struct ttm_mem_reg *new_mem)
186{
187 if (new_mem->mem_type != TTM_PL_SYSTEM)
188 vmw_dmabuf_gmr_unbind(bo);
189}
190
191static void vmw_swap_notify(struct ttm_buffer_object *bo)
192{
193 vmw_dmabuf_gmr_unbind(bo);
194}
195
175/** 196/**
176 * FIXME: We're using the old vmware polling method to sync. 197 * FIXME: We're using the old vmware polling method to sync.
177 * Do this with fences instead. 198 * Do this with fences instead.
@@ -225,5 +246,7 @@ struct ttm_bo_driver vmw_bo_driver = {
225 .sync_obj_wait = vmw_sync_obj_wait, 246 .sync_obj_wait = vmw_sync_obj_wait,
226 .sync_obj_flush = vmw_sync_obj_flush, 247 .sync_obj_flush = vmw_sync_obj_flush,
227 .sync_obj_unref = vmw_sync_obj_unref, 248 .sync_obj_unref = vmw_sync_obj_unref,
228 .sync_obj_ref = vmw_sync_obj_ref 249 .sync_obj_ref = vmw_sync_obj_ref,
250 .move_notify = vmw_move_notify,
251 .swap_notify = vmw_swap_notify
229}; 252};
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index 1db1ef30be2b..0c9c0811f42d 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -147,6 +147,8 @@ static char *vmw_devname = "vmwgfx";
147 147
148static int vmw_probe(struct pci_dev *, const struct pci_device_id *); 148static int vmw_probe(struct pci_dev *, const struct pci_device_id *);
149static void vmw_master_init(struct vmw_master *); 149static void vmw_master_init(struct vmw_master *);
150static int vmwgfx_pm_notifier(struct notifier_block *nb, unsigned long val,
151 void *ptr);
150 152
151static void vmw_print_capabilities(uint32_t capabilities) 153static void vmw_print_capabilities(uint32_t capabilities)
152{ 154{
@@ -207,6 +209,7 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset)
207{ 209{
208 struct vmw_private *dev_priv; 210 struct vmw_private *dev_priv;
209 int ret; 211 int ret;
212 uint32_t svga_id;
210 213
211 dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL); 214 dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL);
212 if (unlikely(dev_priv == NULL)) { 215 if (unlikely(dev_priv == NULL)) {
@@ -217,6 +220,7 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset)
217 220
218 dev_priv->dev = dev; 221 dev_priv->dev = dev;
219 dev_priv->vmw_chipset = chipset; 222 dev_priv->vmw_chipset = chipset;
223 dev_priv->last_read_sequence = (uint32_t) -100;
220 mutex_init(&dev_priv->hw_mutex); 224 mutex_init(&dev_priv->hw_mutex);
221 mutex_init(&dev_priv->cmdbuf_mutex); 225 mutex_init(&dev_priv->cmdbuf_mutex);
222 rwlock_init(&dev_priv->resource_lock); 226 rwlock_init(&dev_priv->resource_lock);
@@ -236,6 +240,16 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset)
236 dev_priv->mmio_start = pci_resource_start(dev->pdev, 2); 240 dev_priv->mmio_start = pci_resource_start(dev->pdev, 2);
237 241
238 mutex_lock(&dev_priv->hw_mutex); 242 mutex_lock(&dev_priv->hw_mutex);
243
244 vmw_write(dev_priv, SVGA_REG_ID, SVGA_ID_2);
245 svga_id = vmw_read(dev_priv, SVGA_REG_ID);
246 if (svga_id != SVGA_ID_2) {
247 ret = -ENOSYS;
248 DRM_ERROR("Unsuported SVGA ID 0x%x\n", svga_id);
249 mutex_unlock(&dev_priv->hw_mutex);
250 goto out_err0;
251 }
252
239 dev_priv->capabilities = vmw_read(dev_priv, SVGA_REG_CAPABILITIES); 253 dev_priv->capabilities = vmw_read(dev_priv, SVGA_REG_CAPABILITIES);
240 254
241 if (dev_priv->capabilities & SVGA_CAP_GMR) { 255 if (dev_priv->capabilities & SVGA_CAP_GMR) {
@@ -334,22 +348,24 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset)
334 */ 348 */
335 349
336 DRM_INFO("It appears like vesafb is loaded. " 350 DRM_INFO("It appears like vesafb is loaded. "
337 "Ignore above error if any. Entering stealth mode.\n"); 351 "Ignore above error if any.\n");
338 ret = pci_request_region(dev->pdev, 2, "vmwgfx stealth probe"); 352 ret = pci_request_region(dev->pdev, 2, "vmwgfx stealth probe");
339 if (unlikely(ret != 0)) { 353 if (unlikely(ret != 0)) {
340 DRM_ERROR("Failed reserving the SVGA MMIO resource.\n"); 354 DRM_ERROR("Failed reserving the SVGA MMIO resource.\n");
341 goto out_no_device; 355 goto out_no_device;
342 } 356 }
343 vmw_kms_init(dev_priv);
344 vmw_overlay_init(dev_priv);
345 } else {
346 ret = vmw_request_device(dev_priv);
347 if (unlikely(ret != 0))
348 goto out_no_device;
349 vmw_kms_init(dev_priv);
350 vmw_overlay_init(dev_priv);
351 vmw_fb_init(dev_priv);
352 } 357 }
358 ret = vmw_request_device(dev_priv);
359 if (unlikely(ret != 0))
360 goto out_no_device;
361 vmw_kms_init(dev_priv);
362 vmw_overlay_init(dev_priv);
363 vmw_fb_init(dev_priv);
364
365 dev_priv->pm_nb.notifier_call = vmwgfx_pm_notifier;
366 register_pm_notifier(&dev_priv->pm_nb);
367
368 DRM_INFO("%s", vmw_fifo_have_3d(dev_priv) ? "Have 3D\n" : "No 3D\n");
353 369
354 return 0; 370 return 0;
355 371
@@ -385,17 +401,17 @@ static int vmw_driver_unload(struct drm_device *dev)
385 401
386 DRM_INFO(VMWGFX_DRIVER_NAME " unload.\n"); 402 DRM_INFO(VMWGFX_DRIVER_NAME " unload.\n");
387 403
388 if (!dev_priv->stealth) { 404 unregister_pm_notifier(&dev_priv->pm_nb);
389 vmw_fb_close(dev_priv); 405
390 vmw_kms_close(dev_priv); 406 vmw_fb_close(dev_priv);
391 vmw_overlay_close(dev_priv); 407 vmw_kms_close(dev_priv);
392 vmw_release_device(dev_priv); 408 vmw_overlay_close(dev_priv);
393 pci_release_regions(dev->pdev); 409 vmw_release_device(dev_priv);
394 } else { 410 if (dev_priv->stealth)
395 vmw_kms_close(dev_priv);
396 vmw_overlay_close(dev_priv);
397 pci_release_region(dev->pdev, 2); 411 pci_release_region(dev->pdev, 2);
398 } 412 else
413 pci_release_regions(dev->pdev);
414
399 if (dev_priv->capabilities & SVGA_CAP_IRQMASK) 415 if (dev_priv->capabilities & SVGA_CAP_IRQMASK)
400 drm_irq_uninstall(dev_priv->dev); 416 drm_irq_uninstall(dev_priv->dev);
401 if (dev->devname == vmw_devname) 417 if (dev->devname == vmw_devname)
@@ -564,11 +580,6 @@ static int vmw_master_set(struct drm_device *dev,
564 int ret = 0; 580 int ret = 0;
565 581
566 DRM_INFO("Master set.\n"); 582 DRM_INFO("Master set.\n");
567 if (dev_priv->stealth) {
568 ret = vmw_request_device(dev_priv);
569 if (unlikely(ret != 0))
570 return ret;
571 }
572 583
573 if (active) { 584 if (active) {
574 BUG_ON(active != &dev_priv->fbdev_master); 585 BUG_ON(active != &dev_priv->fbdev_master);
@@ -628,18 +639,11 @@ static void vmw_master_drop(struct drm_device *dev,
628 639
629 ttm_lock_set_kill(&vmaster->lock, true, SIGTERM); 640 ttm_lock_set_kill(&vmaster->lock, true, SIGTERM);
630 641
631 if (dev_priv->stealth) {
632 ret = ttm_bo_evict_mm(&dev_priv->bdev, TTM_PL_VRAM);
633 if (unlikely(ret != 0))
634 DRM_ERROR("Unable to clean VRAM on master drop.\n");
635 vmw_release_device(dev_priv);
636 }
637 dev_priv->active_master = &dev_priv->fbdev_master; 642 dev_priv->active_master = &dev_priv->fbdev_master;
638 ttm_lock_set_kill(&dev_priv->fbdev_master.lock, false, SIGTERM); 643 ttm_lock_set_kill(&dev_priv->fbdev_master.lock, false, SIGTERM);
639 ttm_vt_unlock(&dev_priv->fbdev_master.lock); 644 ttm_vt_unlock(&dev_priv->fbdev_master.lock);
640 645
641 if (!dev_priv->stealth) 646 vmw_fb_on(dev_priv);
642 vmw_fb_on(dev_priv);
643} 647}
644 648
645 649
@@ -650,6 +654,57 @@ static void vmw_remove(struct pci_dev *pdev)
650 drm_put_dev(dev); 654 drm_put_dev(dev);
651} 655}
652 656
657static int vmwgfx_pm_notifier(struct notifier_block *nb, unsigned long val,
658 void *ptr)
659{
660 struct vmw_private *dev_priv =
661 container_of(nb, struct vmw_private, pm_nb);
662 struct vmw_master *vmaster = dev_priv->active_master;
663
664 switch (val) {
665 case PM_HIBERNATION_PREPARE:
666 case PM_SUSPEND_PREPARE:
667 ttm_suspend_lock(&vmaster->lock);
668
669 /**
670 * This empties VRAM and unbinds all GMR bindings.
671 * Buffer contents is moved to swappable memory.
672 */
673 ttm_bo_swapout_all(&dev_priv->bdev);
674 break;
675 case PM_POST_HIBERNATION:
676 case PM_POST_SUSPEND:
677 ttm_suspend_unlock(&vmaster->lock);
678 break;
679 case PM_RESTORE_PREPARE:
680 break;
681 case PM_POST_RESTORE:
682 break;
683 default:
684 break;
685 }
686 return 0;
687}
688
689/**
690 * These might not be needed with the virtual SVGA device.
691 */
692
693int vmw_pci_suspend(struct pci_dev *pdev, pm_message_t state)
694{
695 pci_save_state(pdev);
696 pci_disable_device(pdev);
697 pci_set_power_state(pdev, PCI_D3hot);
698 return 0;
699}
700
701int vmw_pci_resume(struct pci_dev *pdev)
702{
703 pci_set_power_state(pdev, PCI_D0);
704 pci_restore_state(pdev);
705 return pci_enable_device(pdev);
706}
707
653static struct drm_driver driver = { 708static struct drm_driver driver = {
654 .driver_features = DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | 709 .driver_features = DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED |
655 DRIVER_MODESET, 710 DRIVER_MODESET,
@@ -689,7 +744,9 @@ static struct drm_driver driver = {
689 .name = VMWGFX_DRIVER_NAME, 744 .name = VMWGFX_DRIVER_NAME,
690 .id_table = vmw_pci_id_list, 745 .id_table = vmw_pci_id_list,
691 .probe = vmw_probe, 746 .probe = vmw_probe,
692 .remove = vmw_remove 747 .remove = vmw_remove,
748 .suspend = vmw_pci_suspend,
749 .resume = vmw_pci_resume
693 }, 750 },
694 .name = VMWGFX_DRIVER_NAME, 751 .name = VMWGFX_DRIVER_NAME,
695 .desc = VMWGFX_DRIVER_DESC, 752 .desc = VMWGFX_DRIVER_DESC,
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
index e61bd85b6975..356dc935ec13 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
@@ -32,16 +32,17 @@
32#include "drmP.h" 32#include "drmP.h"
33#include "vmwgfx_drm.h" 33#include "vmwgfx_drm.h"
34#include "drm_hashtab.h" 34#include "drm_hashtab.h"
35#include "linux/suspend.h"
35#include "ttm/ttm_bo_driver.h" 36#include "ttm/ttm_bo_driver.h"
36#include "ttm/ttm_object.h" 37#include "ttm/ttm_object.h"
37#include "ttm/ttm_lock.h" 38#include "ttm/ttm_lock.h"
38#include "ttm/ttm_execbuf_util.h" 39#include "ttm/ttm_execbuf_util.h"
39#include "ttm/ttm_module.h" 40#include "ttm/ttm_module.h"
40 41
41#define VMWGFX_DRIVER_DATE "20090724" 42#define VMWGFX_DRIVER_DATE "20100209"
42#define VMWGFX_DRIVER_MAJOR 0 43#define VMWGFX_DRIVER_MAJOR 1
43#define VMWGFX_DRIVER_MINOR 1 44#define VMWGFX_DRIVER_MINOR 0
44#define VMWGFX_DRIVER_PATCHLEVEL 2 45#define VMWGFX_DRIVER_PATCHLEVEL 0
45#define VMWGFX_FILE_PAGE_OFFSET 0x00100000 46#define VMWGFX_FILE_PAGE_OFFSET 0x00100000
46#define VMWGFX_FIFO_STATIC_SIZE (1024*1024) 47#define VMWGFX_FIFO_STATIC_SIZE (1024*1024)
47#define VMWGFX_MAX_RELOCATIONS 2048 48#define VMWGFX_MAX_RELOCATIONS 2048
@@ -95,6 +96,8 @@ struct vmw_surface {
95 struct drm_vmw_size *sizes; 96 struct drm_vmw_size *sizes;
96 uint32_t num_sizes; 97 uint32_t num_sizes;
97 98
99 bool scanout;
100
98 /* TODO so far just a extra pointer */ 101 /* TODO so far just a extra pointer */
99 struct vmw_cursor_snooper snooper; 102 struct vmw_cursor_snooper snooper;
100}; 103};
@@ -110,6 +113,7 @@ struct vmw_fifo_state {
110 unsigned long static_buffer_size; 113 unsigned long static_buffer_size;
111 bool using_bounce_buffer; 114 bool using_bounce_buffer;
112 uint32_t capabilities; 115 uint32_t capabilities;
116 struct mutex fifo_mutex;
113 struct rw_semaphore rwsem; 117 struct rw_semaphore rwsem;
114}; 118};
115 119
@@ -210,7 +214,7 @@ struct vmw_private {
210 * Fencing and IRQs. 214 * Fencing and IRQs.
211 */ 215 */
212 216
213 uint32_t fence_seq; 217 atomic_t fence_seq;
214 wait_queue_head_t fence_queue; 218 wait_queue_head_t fence_queue;
215 wait_queue_head_t fifo_queue; 219 wait_queue_head_t fifo_queue;
216 atomic_t fence_queue_waiters; 220 atomic_t fence_queue_waiters;
@@ -258,6 +262,7 @@ struct vmw_private {
258 262
259 struct vmw_master *active_master; 263 struct vmw_master *active_master;
260 struct vmw_master fbdev_master; 264 struct vmw_master fbdev_master;
265 struct notifier_block pm_nb;
261}; 266};
262 267
263static inline struct vmw_private *vmw_priv(struct drm_device *dev) 268static inline struct vmw_private *vmw_priv(struct drm_device *dev)
@@ -353,6 +358,7 @@ extern int vmw_dmabuf_to_start_of_vram(struct vmw_private *vmw_priv,
353 struct vmw_dma_buffer *bo); 358 struct vmw_dma_buffer *bo);
354extern int vmw_dmabuf_from_vram(struct vmw_private *vmw_priv, 359extern int vmw_dmabuf_from_vram(struct vmw_private *vmw_priv,
355 struct vmw_dma_buffer *bo); 360 struct vmw_dma_buffer *bo);
361extern void vmw_dmabuf_gmr_unbind(struct ttm_buffer_object *bo);
356extern int vmw_stream_claim_ioctl(struct drm_device *dev, void *data, 362extern int vmw_stream_claim_ioctl(struct drm_device *dev, void *data,
357 struct drm_file *file_priv); 363 struct drm_file *file_priv);
358extern int vmw_stream_unref_ioctl(struct drm_device *dev, void *data, 364extern int vmw_stream_unref_ioctl(struct drm_device *dev, void *data,
@@ -386,6 +392,7 @@ extern int vmw_fifo_send_fence(struct vmw_private *dev_priv,
386 uint32_t *sequence); 392 uint32_t *sequence);
387extern void vmw_fifo_ping_host(struct vmw_private *dev_priv, uint32_t reason); 393extern void vmw_fifo_ping_host(struct vmw_private *dev_priv, uint32_t reason);
388extern int vmw_fifo_mmap(struct file *filp, struct vm_area_struct *vma); 394extern int vmw_fifo_mmap(struct file *filp, struct vm_area_struct *vma);
395extern bool vmw_fifo_have_3d(struct vmw_private *dev_priv);
389 396
390/** 397/**
391 * TTM glue - vmwgfx_ttm_glue.c 398 * TTM glue - vmwgfx_ttm_glue.c
@@ -401,6 +408,7 @@ extern int vmw_mmap(struct file *filp, struct vm_area_struct *vma);
401 408
402extern struct ttm_placement vmw_vram_placement; 409extern struct ttm_placement vmw_vram_placement;
403extern struct ttm_placement vmw_vram_ne_placement; 410extern struct ttm_placement vmw_vram_ne_placement;
411extern struct ttm_placement vmw_vram_sys_placement;
404extern struct ttm_placement vmw_sys_placement; 412extern struct ttm_placement vmw_sys_placement;
405extern struct ttm_bo_driver vmw_bo_driver; 413extern struct ttm_bo_driver vmw_bo_driver;
406extern int vmw_dma_quiescent(struct drm_device *dev); 414extern int vmw_dma_quiescent(struct drm_device *dev);
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
index 2e92da567403..0897359b3e4e 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
@@ -182,25 +182,19 @@ static int vmw_cmd_present_check(struct vmw_private *dev_priv,
182 return vmw_cmd_sid_check(dev_priv, sw_context, &cmd->body.sid); 182 return vmw_cmd_sid_check(dev_priv, sw_context, &cmd->body.sid);
183} 183}
184 184
185static int vmw_cmd_dma(struct vmw_private *dev_priv, 185static int vmw_translate_guest_ptr(struct vmw_private *dev_priv,
186 struct vmw_sw_context *sw_context, 186 struct vmw_sw_context *sw_context,
187 SVGA3dCmdHeader *header) 187 SVGAGuestPtr *ptr,
188 struct vmw_dma_buffer **vmw_bo_p)
188{ 189{
189 uint32_t handle;
190 struct vmw_dma_buffer *vmw_bo = NULL; 190 struct vmw_dma_buffer *vmw_bo = NULL;
191 struct ttm_buffer_object *bo; 191 struct ttm_buffer_object *bo;
192 struct vmw_surface *srf = NULL; 192 uint32_t handle = ptr->gmrId;
193 struct vmw_dma_cmd {
194 SVGA3dCmdHeader header;
195 SVGA3dCmdSurfaceDMA dma;
196 } *cmd;
197 struct vmw_relocation *reloc; 193 struct vmw_relocation *reloc;
198 int ret;
199 uint32_t cur_validate_node; 194 uint32_t cur_validate_node;
200 struct ttm_validate_buffer *val_buf; 195 struct ttm_validate_buffer *val_buf;
196 int ret;
201 197
202 cmd = container_of(header, struct vmw_dma_cmd, header);
203 handle = cmd->dma.guest.ptr.gmrId;
204 ret = vmw_user_dmabuf_lookup(sw_context->tfile, handle, &vmw_bo); 198 ret = vmw_user_dmabuf_lookup(sw_context->tfile, handle, &vmw_bo);
205 if (unlikely(ret != 0)) { 199 if (unlikely(ret != 0)) {
206 DRM_ERROR("Could not find or use GMR region.\n"); 200 DRM_ERROR("Could not find or use GMR region.\n");
@@ -209,14 +203,14 @@ static int vmw_cmd_dma(struct vmw_private *dev_priv,
209 bo = &vmw_bo->base; 203 bo = &vmw_bo->base;
210 204
211 if (unlikely(sw_context->cur_reloc >= VMWGFX_MAX_RELOCATIONS)) { 205 if (unlikely(sw_context->cur_reloc >= VMWGFX_MAX_RELOCATIONS)) {
212 DRM_ERROR("Max number of DMA commands per submission" 206 DRM_ERROR("Max number relocations per submission"
213 " exceeded\n"); 207 " exceeded\n");
214 ret = -EINVAL; 208 ret = -EINVAL;
215 goto out_no_reloc; 209 goto out_no_reloc;
216 } 210 }
217 211
218 reloc = &sw_context->relocs[sw_context->cur_reloc++]; 212 reloc = &sw_context->relocs[sw_context->cur_reloc++];
219 reloc->location = &cmd->dma.guest.ptr; 213 reloc->location = ptr;
220 214
221 cur_validate_node = vmw_dmabuf_validate_node(bo, sw_context->cur_val_buf); 215 cur_validate_node = vmw_dmabuf_validate_node(bo, sw_context->cur_val_buf);
222 if (unlikely(cur_validate_node >= VMWGFX_MAX_GMRS)) { 216 if (unlikely(cur_validate_node >= VMWGFX_MAX_GMRS)) {
@@ -234,7 +228,89 @@ static int vmw_cmd_dma(struct vmw_private *dev_priv,
234 list_add_tail(&val_buf->head, &sw_context->validate_nodes); 228 list_add_tail(&val_buf->head, &sw_context->validate_nodes);
235 ++sw_context->cur_val_buf; 229 ++sw_context->cur_val_buf;
236 } 230 }
231 *vmw_bo_p = vmw_bo;
232 return 0;
233
234out_no_reloc:
235 vmw_dmabuf_unreference(&vmw_bo);
236 vmw_bo_p = NULL;
237 return ret;
238}
239
240static int vmw_cmd_end_query(struct vmw_private *dev_priv,
241 struct vmw_sw_context *sw_context,
242 SVGA3dCmdHeader *header)
243{
244 struct vmw_dma_buffer *vmw_bo;
245 struct vmw_query_cmd {
246 SVGA3dCmdHeader header;
247 SVGA3dCmdEndQuery q;
248 } *cmd;
249 int ret;
237 250
251 cmd = container_of(header, struct vmw_query_cmd, header);
252 ret = vmw_cmd_cid_check(dev_priv, sw_context, header);
253 if (unlikely(ret != 0))
254 return ret;
255
256 ret = vmw_translate_guest_ptr(dev_priv, sw_context,
257 &cmd->q.guestResult,
258 &vmw_bo);
259 if (unlikely(ret != 0))
260 return ret;
261
262 vmw_dmabuf_unreference(&vmw_bo);
263 return 0;
264}
265
266static int vmw_cmd_wait_query(struct vmw_private *dev_priv,
267 struct vmw_sw_context *sw_context,
268 SVGA3dCmdHeader *header)
269{
270 struct vmw_dma_buffer *vmw_bo;
271 struct vmw_query_cmd {
272 SVGA3dCmdHeader header;
273 SVGA3dCmdWaitForQuery q;
274 } *cmd;
275 int ret;
276
277 cmd = container_of(header, struct vmw_query_cmd, header);
278 ret = vmw_cmd_cid_check(dev_priv, sw_context, header);
279 if (unlikely(ret != 0))
280 return ret;
281
282 ret = vmw_translate_guest_ptr(dev_priv, sw_context,
283 &cmd->q.guestResult,
284 &vmw_bo);
285 if (unlikely(ret != 0))
286 return ret;
287
288 vmw_dmabuf_unreference(&vmw_bo);
289 return 0;
290}
291
292
293static int vmw_cmd_dma(struct vmw_private *dev_priv,
294 struct vmw_sw_context *sw_context,
295 SVGA3dCmdHeader *header)
296{
297 struct vmw_dma_buffer *vmw_bo = NULL;
298 struct ttm_buffer_object *bo;
299 struct vmw_surface *srf = NULL;
300 struct vmw_dma_cmd {
301 SVGA3dCmdHeader header;
302 SVGA3dCmdSurfaceDMA dma;
303 } *cmd;
304 int ret;
305
306 cmd = container_of(header, struct vmw_dma_cmd, header);
307 ret = vmw_translate_guest_ptr(dev_priv, sw_context,
308 &cmd->dma.guest.ptr,
309 &vmw_bo);
310 if (unlikely(ret != 0))
311 return ret;
312
313 bo = &vmw_bo->base;
238 ret = vmw_user_surface_lookup_handle(dev_priv, sw_context->tfile, 314 ret = vmw_user_surface_lookup_handle(dev_priv, sw_context->tfile,
239 cmd->dma.host.sid, &srf); 315 cmd->dma.host.sid, &srf);
240 if (ret) { 316 if (ret) {
@@ -379,8 +455,8 @@ static vmw_cmd_func vmw_cmd_funcs[SVGA_3D_CMD_MAX] = {
379 VMW_CMD_DEF(SVGA_3D_CMD_DRAW_PRIMITIVES, &vmw_cmd_draw), 455 VMW_CMD_DEF(SVGA_3D_CMD_DRAW_PRIMITIVES, &vmw_cmd_draw),
380 VMW_CMD_DEF(SVGA_3D_CMD_SETSCISSORRECT, &vmw_cmd_cid_check), 456 VMW_CMD_DEF(SVGA_3D_CMD_SETSCISSORRECT, &vmw_cmd_cid_check),
381 VMW_CMD_DEF(SVGA_3D_CMD_BEGIN_QUERY, &vmw_cmd_cid_check), 457 VMW_CMD_DEF(SVGA_3D_CMD_BEGIN_QUERY, &vmw_cmd_cid_check),
382 VMW_CMD_DEF(SVGA_3D_CMD_END_QUERY, &vmw_cmd_cid_check), 458 VMW_CMD_DEF(SVGA_3D_CMD_END_QUERY, &vmw_cmd_end_query),
383 VMW_CMD_DEF(SVGA_3D_CMD_WAIT_FOR_QUERY, &vmw_cmd_cid_check), 459 VMW_CMD_DEF(SVGA_3D_CMD_WAIT_FOR_QUERY, &vmw_cmd_wait_query),
384 VMW_CMD_DEF(SVGA_3D_CMD_PRESENT_READBACK, &vmw_cmd_ok), 460 VMW_CMD_DEF(SVGA_3D_CMD_PRESENT_READBACK, &vmw_cmd_ok),
385 VMW_CMD_DEF(SVGA_3D_CMD_BLIT_SURFACE_TO_SCREEN, 461 VMW_CMD_DEF(SVGA_3D_CMD_BLIT_SURFACE_TO_SCREEN,
386 &vmw_cmd_blt_surf_screen_check) 462 &vmw_cmd_blt_surf_screen_check)
@@ -490,10 +566,29 @@ static int vmw_validate_single_buffer(struct vmw_private *dev_priv,
490 if (vmw_dmabuf_gmr(bo) != SVGA_GMR_NULL) 566 if (vmw_dmabuf_gmr(bo) != SVGA_GMR_NULL)
491 return 0; 567 return 0;
492 568
569 /**
570 * Put BO in VRAM, only if there is space.
571 */
572
573 ret = ttm_bo_validate(bo, &vmw_vram_sys_placement, true, false);
574 if (unlikely(ret == -ERESTARTSYS))
575 return ret;
576
577 /**
578 * Otherwise, set it up as GMR.
579 */
580
581 if (vmw_dmabuf_gmr(bo) != SVGA_GMR_NULL)
582 return 0;
583
493 ret = vmw_gmr_bind(dev_priv, bo); 584 ret = vmw_gmr_bind(dev_priv, bo);
494 if (likely(ret == 0 || ret == -ERESTARTSYS)) 585 if (likely(ret == 0 || ret == -ERESTARTSYS))
495 return ret; 586 return ret;
496 587
588 /**
589 * If that failed, try VRAM again, this time evicting
590 * previous contents.
591 */
497 592
498 ret = ttm_bo_validate(bo, &vmw_vram_placement, true, false); 593 ret = ttm_bo_validate(bo, &vmw_vram_placement, true, false);
499 return ret; 594 return ret;
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
index 641dde76ada1..a93367041cdc 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
@@ -559,6 +559,9 @@ int vmw_fb_init(struct vmw_private *vmw_priv)
559 info->pixmap.scan_align = 1; 559 info->pixmap.scan_align = 1;
560#endif 560#endif
561 561
562 info->aperture_base = vmw_priv->vram_start;
563 info->aperture_size = vmw_priv->vram_size;
564
562 /* 565 /*
563 * Dirty & Deferred IO 566 * Dirty & Deferred IO
564 */ 567 */
@@ -649,14 +652,6 @@ int vmw_dmabuf_to_start_of_vram(struct vmw_private *vmw_priv,
649 if (unlikely(ret != 0)) 652 if (unlikely(ret != 0))
650 goto err_unlock; 653 goto err_unlock;
651 654
652 if (vmw_bo->gmr_bound) {
653 vmw_gmr_unbind(vmw_priv, vmw_bo->gmr_id);
654 spin_lock(&bo->glob->lru_lock);
655 ida_remove(&vmw_priv->gmr_ida, vmw_bo->gmr_id);
656 spin_unlock(&bo->glob->lru_lock);
657 vmw_bo->gmr_bound = NULL;
658 }
659
660 ret = ttm_bo_validate(bo, &ne_placement, false, false); 655 ret = ttm_bo_validate(bo, &ne_placement, false, false);
661 ttm_bo_unreserve(bo); 656 ttm_bo_unreserve(bo);
662err_unlock: 657err_unlock:
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
index 01feb48af333..39d43a01d846 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
@@ -29,6 +29,25 @@
29#include "drmP.h" 29#include "drmP.h"
30#include "ttm/ttm_placement.h" 30#include "ttm/ttm_placement.h"
31 31
32bool vmw_fifo_have_3d(struct vmw_private *dev_priv)
33{
34 __le32 __iomem *fifo_mem = dev_priv->mmio_virt;
35 uint32_t fifo_min, hwversion;
36
37 fifo_min = ioread32(fifo_mem + SVGA_FIFO_MIN);
38 if (fifo_min <= SVGA_FIFO_3D_HWVERSION * sizeof(unsigned int))
39 return false;
40
41 hwversion = ioread32(fifo_mem + SVGA_FIFO_3D_HWVERSION);
42 if (hwversion == 0)
43 return false;
44
45 if (hwversion < SVGA3D_HWVERSION_WS65_B1)
46 return false;
47
48 return true;
49}
50
32int vmw_fifo_init(struct vmw_private *dev_priv, struct vmw_fifo_state *fifo) 51int vmw_fifo_init(struct vmw_private *dev_priv, struct vmw_fifo_state *fifo)
33{ 52{
34 __le32 __iomem *fifo_mem = dev_priv->mmio_virt; 53 __le32 __iomem *fifo_mem = dev_priv->mmio_virt;
@@ -55,6 +74,7 @@ int vmw_fifo_init(struct vmw_private *dev_priv, struct vmw_fifo_state *fifo)
55 fifo->reserved_size = 0; 74 fifo->reserved_size = 0;
56 fifo->using_bounce_buffer = false; 75 fifo->using_bounce_buffer = false;
57 76
77 mutex_init(&fifo->fifo_mutex);
58 init_rwsem(&fifo->rwsem); 78 init_rwsem(&fifo->rwsem);
59 79
60 /* 80 /*
@@ -98,8 +118,7 @@ int vmw_fifo_init(struct vmw_private *dev_priv, struct vmw_fifo_state *fifo)
98 (unsigned int) min, 118 (unsigned int) min,
99 (unsigned int) fifo->capabilities); 119 (unsigned int) fifo->capabilities);
100 120
101 dev_priv->fence_seq = (uint32_t) -100; 121 atomic_set(&dev_priv->fence_seq, dev_priv->last_read_sequence);
102 dev_priv->last_read_sequence = (uint32_t) -100;
103 iowrite32(dev_priv->last_read_sequence, fifo_mem + SVGA_FIFO_FENCE); 122 iowrite32(dev_priv->last_read_sequence, fifo_mem + SVGA_FIFO_FENCE);
104 123
105 return vmw_fifo_send_fence(dev_priv, &dummy); 124 return vmw_fifo_send_fence(dev_priv, &dummy);
@@ -265,7 +284,7 @@ void *vmw_fifo_reserve(struct vmw_private *dev_priv, uint32_t bytes)
265 uint32_t reserveable = fifo_state->capabilities & SVGA_FIFO_CAP_RESERVE; 284 uint32_t reserveable = fifo_state->capabilities & SVGA_FIFO_CAP_RESERVE;
266 int ret; 285 int ret;
267 286
268 down_write(&fifo_state->rwsem); 287 mutex_lock(&fifo_state->fifo_mutex);
269 max = ioread32(fifo_mem + SVGA_FIFO_MAX); 288 max = ioread32(fifo_mem + SVGA_FIFO_MAX);
270 min = ioread32(fifo_mem + SVGA_FIFO_MIN); 289 min = ioread32(fifo_mem + SVGA_FIFO_MIN);
271 next_cmd = ioread32(fifo_mem + SVGA_FIFO_NEXT_CMD); 290 next_cmd = ioread32(fifo_mem + SVGA_FIFO_NEXT_CMD);
@@ -333,7 +352,7 @@ void *vmw_fifo_reserve(struct vmw_private *dev_priv, uint32_t bytes)
333 } 352 }
334out_err: 353out_err:
335 fifo_state->reserved_size = 0; 354 fifo_state->reserved_size = 0;
336 up_write(&fifo_state->rwsem); 355 mutex_unlock(&fifo_state->fifo_mutex);
337 return NULL; 356 return NULL;
338} 357}
339 358
@@ -408,6 +427,7 @@ void vmw_fifo_commit(struct vmw_private *dev_priv, uint32_t bytes)
408 427
409 } 428 }
410 429
430 down_write(&fifo_state->rwsem);
411 if (fifo_state->using_bounce_buffer || reserveable) { 431 if (fifo_state->using_bounce_buffer || reserveable) {
412 next_cmd += bytes; 432 next_cmd += bytes;
413 if (next_cmd >= max) 433 if (next_cmd >= max)
@@ -419,8 +439,9 @@ void vmw_fifo_commit(struct vmw_private *dev_priv, uint32_t bytes)
419 if (reserveable) 439 if (reserveable)
420 iowrite32(0, fifo_mem + SVGA_FIFO_RESERVED); 440 iowrite32(0, fifo_mem + SVGA_FIFO_RESERVED);
421 mb(); 441 mb();
422 vmw_fifo_ping_host(dev_priv, SVGA_SYNC_GENERIC);
423 up_write(&fifo_state->rwsem); 442 up_write(&fifo_state->rwsem);
443 vmw_fifo_ping_host(dev_priv, SVGA_SYNC_GENERIC);
444 mutex_unlock(&fifo_state->fifo_mutex);
424} 445}
425 446
426int vmw_fifo_send_fence(struct vmw_private *dev_priv, uint32_t *sequence) 447int vmw_fifo_send_fence(struct vmw_private *dev_priv, uint32_t *sequence)
@@ -433,9 +454,7 @@ int vmw_fifo_send_fence(struct vmw_private *dev_priv, uint32_t *sequence)
433 454
434 fm = vmw_fifo_reserve(dev_priv, bytes); 455 fm = vmw_fifo_reserve(dev_priv, bytes);
435 if (unlikely(fm == NULL)) { 456 if (unlikely(fm == NULL)) {
436 down_write(&fifo_state->rwsem); 457 *sequence = atomic_read(&dev_priv->fence_seq);
437 *sequence = dev_priv->fence_seq;
438 up_write(&fifo_state->rwsem);
439 ret = -ENOMEM; 458 ret = -ENOMEM;
440 (void)vmw_fallback_wait(dev_priv, false, true, *sequence, 459 (void)vmw_fallback_wait(dev_priv, false, true, *sequence,
441 false, 3*HZ); 460 false, 3*HZ);
@@ -443,7 +462,7 @@ int vmw_fifo_send_fence(struct vmw_private *dev_priv, uint32_t *sequence)
443 } 462 }
444 463
445 do { 464 do {
446 *sequence = dev_priv->fence_seq++; 465 *sequence = atomic_add_return(1, &dev_priv->fence_seq);
447 } while (*sequence == 0); 466 } while (*sequence == 0);
448 467
449 if (!(fifo_state->capabilities & SVGA_FIFO_CAP_FENCE)) { 468 if (!(fifo_state->capabilities & SVGA_FIFO_CAP_FENCE)) {
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c
index 5fa6a4ed238a..1c7a316454d8 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c
@@ -43,11 +43,17 @@ int vmw_getparam_ioctl(struct drm_device *dev, void *data,
43 param->value = vmw_overlay_num_free_overlays(dev_priv); 43 param->value = vmw_overlay_num_free_overlays(dev_priv);
44 break; 44 break;
45 case DRM_VMW_PARAM_3D: 45 case DRM_VMW_PARAM_3D:
46 param->value = dev_priv->capabilities & SVGA_CAP_3D ? 1 : 0; 46 param->value = vmw_fifo_have_3d(dev_priv) ? 1 : 0;
47 break; 47 break;
48 case DRM_VMW_PARAM_FIFO_OFFSET: 48 case DRM_VMW_PARAM_FIFO_OFFSET:
49 param->value = dev_priv->mmio_start; 49 param->value = dev_priv->mmio_start;
50 break; 50 break;
51 case DRM_VMW_PARAM_HW_CAPS:
52 param->value = dev_priv->capabilities;
53 break;
54 case DRM_VMW_PARAM_FIFO_CAPS:
55 param->value = dev_priv->fifo.capabilities;
56 break;
51 default: 57 default:
52 DRM_ERROR("Illegal vmwgfx get param request: %d\n", 58 DRM_ERROR("Illegal vmwgfx get param request: %d\n",
53 param->param); 59 param->param);
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c b/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
index d40086fc8647..4d7cb5393860 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c
@@ -85,19 +85,12 @@ bool vmw_fence_signaled(struct vmw_private *dev_priv,
85 return true; 85 return true;
86 86
87 /** 87 /**
88 * Below is to signal stale fences that have wrapped.
89 * First, block fence submission.
90 */
91
92 down_read(&fifo_state->rwsem);
93
94 /**
95 * Then check if the sequence is higher than what we've actually 88 * Then check if the sequence is higher than what we've actually
96 * emitted. Then the fence is stale and signaled. 89 * emitted. Then the fence is stale and signaled.
97 */ 90 */
98 91
99 ret = ((dev_priv->fence_seq - sequence) > VMW_FENCE_WRAP); 92 ret = ((atomic_read(&dev_priv->fence_seq) - sequence)
100 up_read(&fifo_state->rwsem); 93 > VMW_FENCE_WRAP);
101 94
102 return ret; 95 return ret;
103} 96}
@@ -127,7 +120,7 @@ int vmw_fallback_wait(struct vmw_private *dev_priv,
127 120
128 if (fifo_idle) 121 if (fifo_idle)
129 down_read(&fifo_state->rwsem); 122 down_read(&fifo_state->rwsem);
130 signal_seq = dev_priv->fence_seq; 123 signal_seq = atomic_read(&dev_priv->fence_seq);
131 ret = 0; 124 ret = 0;
132 125
133 for (;;) { 126 for (;;) {
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
index b1af76e371c3..31f9afed0a63 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
@@ -553,9 +553,7 @@ int vmw_framebuffer_dmabuf_dirty(struct drm_framebuffer *framebuffer,
553 } *cmd; 553 } *cmd;
554 int i, increment = 1; 554 int i, increment = 1;
555 555
556 if (!num_clips || 556 if (!num_clips) {
557 !(dev_priv->fifo.capabilities &
558 SVGA_FIFO_CAP_SCREEN_OBJECT)) {
559 num_clips = 1; 557 num_clips = 1;
560 clips = &norect; 558 clips = &norect;
561 norect.x1 = norect.y1 = 0; 559 norect.x1 = norect.y1 = 0;
@@ -574,10 +572,10 @@ int vmw_framebuffer_dmabuf_dirty(struct drm_framebuffer *framebuffer,
574 572
575 for (i = 0; i < num_clips; i++, clips += increment) { 573 for (i = 0; i < num_clips; i++, clips += increment) {
576 cmd[i].header = cpu_to_le32(SVGA_CMD_UPDATE); 574 cmd[i].header = cpu_to_le32(SVGA_CMD_UPDATE);
577 cmd[i].body.x = cpu_to_le32(clips[i].x1); 575 cmd[i].body.x = cpu_to_le32(clips->x1);
578 cmd[i].body.y = cpu_to_le32(clips[i].y1); 576 cmd[i].body.y = cpu_to_le32(clips->y1);
579 cmd[i].body.width = cpu_to_le32(clips[i].x2 - clips[i].x1); 577 cmd[i].body.width = cpu_to_le32(clips->x2 - clips->x1);
580 cmd[i].body.height = cpu_to_le32(clips[i].y2 - clips[i].y1); 578 cmd[i].body.height = cpu_to_le32(clips->y2 - clips->y1);
581 } 579 }
582 580
583 vmw_fifo_commit(dev_priv, sizeof(*cmd) * num_clips); 581 vmw_fifo_commit(dev_priv, sizeof(*cmd) * num_clips);
@@ -709,6 +707,9 @@ static struct drm_framebuffer *vmw_kms_fb_create(struct drm_device *dev,
709 if (ret) 707 if (ret)
710 goto try_dmabuf; 708 goto try_dmabuf;
711 709
710 if (!surface->scanout)
711 goto err_not_scanout;
712
712 ret = vmw_kms_new_framebuffer_surface(dev_priv, surface, &vfb, 713 ret = vmw_kms_new_framebuffer_surface(dev_priv, surface, &vfb,
713 mode_cmd->width, mode_cmd->height); 714 mode_cmd->width, mode_cmd->height);
714 715
@@ -742,6 +743,13 @@ try_dmabuf:
742 } 743 }
743 744
744 return &vfb->base; 745 return &vfb->base;
746
747err_not_scanout:
748 DRM_ERROR("surface not marked as scanout\n");
749 /* vmw_user_surface_lookup takes one ref */
750 vmw_surface_unreference(&surface);
751
752 return NULL;
745} 753}
746 754
747static int vmw_kms_fb_changed(struct drm_device *dev) 755static int vmw_kms_fb_changed(struct drm_device *dev)
@@ -761,10 +769,10 @@ int vmw_kms_init(struct vmw_private *dev_priv)
761 769
762 drm_mode_config_init(dev); 770 drm_mode_config_init(dev);
763 dev->mode_config.funcs = &vmw_kms_funcs; 771 dev->mode_config.funcs = &vmw_kms_funcs;
764 dev->mode_config.min_width = 640; 772 dev->mode_config.min_width = 1;
765 dev->mode_config.min_height = 480; 773 dev->mode_config.min_height = 1;
766 dev->mode_config.max_width = 2048; 774 dev->mode_config.max_width = dev_priv->fb_max_width;
767 dev->mode_config.max_height = 2048; 775 dev->mode_config.max_height = dev_priv->fb_max_height;
768 776
769 ret = vmw_kms_init_legacy_display_system(dev_priv); 777 ret = vmw_kms_init_legacy_display_system(dev_priv);
770 778
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c b/drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c
index bb6e6a096d25..5b6eabeb7f51 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c
@@ -104,7 +104,6 @@ static int vmw_dmabuf_pin_in_vram(struct vmw_private *dev_priv,
104 bool pin, bool interruptible) 104 bool pin, bool interruptible)
105{ 105{
106 struct ttm_buffer_object *bo = &buf->base; 106 struct ttm_buffer_object *bo = &buf->base;
107 struct ttm_bo_global *glob = bo->glob;
108 struct ttm_placement *overlay_placement = &vmw_vram_placement; 107 struct ttm_placement *overlay_placement = &vmw_vram_placement;
109 int ret; 108 int ret;
110 109
@@ -116,14 +115,6 @@ static int vmw_dmabuf_pin_in_vram(struct vmw_private *dev_priv,
116 if (unlikely(ret != 0)) 115 if (unlikely(ret != 0))
117 goto err; 116 goto err;
118 117
119 if (buf->gmr_bound) {
120 vmw_gmr_unbind(dev_priv, buf->gmr_id);
121 spin_lock(&glob->lru_lock);
122 ida_remove(&dev_priv->gmr_ida, buf->gmr_id);
123 spin_unlock(&glob->lru_lock);
124 buf->gmr_bound = NULL;
125 }
126
127 if (pin) 118 if (pin)
128 overlay_placement = &vmw_vram_ne_placement; 119 overlay_placement = &vmw_vram_ne_placement;
129 120
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
index c012d5927f65..f8fbbc67a406 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
@@ -574,6 +574,7 @@ int vmw_surface_define_ioctl(struct drm_device *dev, void *data,
574 574
575 srf->flags = req->flags; 575 srf->flags = req->flags;
576 srf->format = req->format; 576 srf->format = req->format;
577 srf->scanout = req->scanout;
577 memcpy(srf->mip_levels, req->mip_levels, sizeof(srf->mip_levels)); 578 memcpy(srf->mip_levels, req->mip_levels, sizeof(srf->mip_levels));
578 srf->num_sizes = 0; 579 srf->num_sizes = 0;
579 for (i = 0; i < DRM_VMW_MAX_SURFACE_FACES; ++i) 580 for (i = 0; i < DRM_VMW_MAX_SURFACE_FACES; ++i)
@@ -599,6 +600,26 @@ int vmw_surface_define_ioctl(struct drm_device *dev, void *data,
599 if (unlikely(ret != 0)) 600 if (unlikely(ret != 0))
600 goto out_err1; 601 goto out_err1;
601 602
603 if (srf->scanout &&
604 srf->num_sizes == 1 &&
605 srf->sizes[0].width == 64 &&
606 srf->sizes[0].height == 64 &&
607 srf->format == SVGA3D_A8R8G8B8) {
608
609 srf->snooper.image = kmalloc(64 * 64 * 4, GFP_KERNEL);
610 /* clear the image */
611 if (srf->snooper.image) {
612 memset(srf->snooper.image, 0x00, 64 * 64 * 4);
613 } else {
614 DRM_ERROR("Failed to allocate cursor_image\n");
615 ret = -ENOMEM;
616 goto out_err1;
617 }
618 } else {
619 srf->snooper.image = NULL;
620 }
621 srf->snooper.crtc = NULL;
622
602 user_srf->base.shareable = false; 623 user_srf->base.shareable = false;
603 user_srf->base.tfile = NULL; 624 user_srf->base.tfile = NULL;
604 625
@@ -622,24 +643,6 @@ int vmw_surface_define_ioctl(struct drm_device *dev, void *data,
622 return ret; 643 return ret;
623 } 644 }
624 645
625 if (srf->flags & (1 << 9) &&
626 srf->num_sizes == 1 &&
627 srf->sizes[0].width == 64 &&
628 srf->sizes[0].height == 64 &&
629 srf->format == SVGA3D_A8R8G8B8) {
630
631 srf->snooper.image = kmalloc(64 * 64 * 4, GFP_KERNEL);
632 /* clear the image */
633 if (srf->snooper.image)
634 memset(srf->snooper.image, 0x00, 64 * 64 * 4);
635 else
636 DRM_ERROR("Failed to allocate cursor_image\n");
637
638 } else {
639 srf->snooper.image = NULL;
640 }
641 srf->snooper.crtc = NULL;
642
643 rep->sid = user_srf->base.hash.key; 646 rep->sid = user_srf->base.hash.key;
644 if (rep->sid == SVGA3D_INVALID_ID) 647 if (rep->sid == SVGA3D_INVALID_ID)
645 DRM_ERROR("Created bad Surface ID.\n"); 648 DRM_ERROR("Created bad Surface ID.\n");
@@ -754,20 +757,29 @@ static size_t vmw_dmabuf_acc_size(struct ttm_bo_global *glob,
754 return bo_user_size + page_array_size; 757 return bo_user_size + page_array_size;
755} 758}
756 759
757void vmw_dmabuf_bo_free(struct ttm_buffer_object *bo) 760void vmw_dmabuf_gmr_unbind(struct ttm_buffer_object *bo)
758{ 761{
759 struct vmw_dma_buffer *vmw_bo = vmw_dma_buffer(bo); 762 struct vmw_dma_buffer *vmw_bo = vmw_dma_buffer(bo);
760 struct ttm_bo_global *glob = bo->glob; 763 struct ttm_bo_global *glob = bo->glob;
761 struct vmw_private *dev_priv = 764 struct vmw_private *dev_priv =
762 container_of(bo->bdev, struct vmw_private, bdev); 765 container_of(bo->bdev, struct vmw_private, bdev);
763 766
764 ttm_mem_global_free(glob->mem_glob, bo->acc_size);
765 if (vmw_bo->gmr_bound) { 767 if (vmw_bo->gmr_bound) {
766 vmw_gmr_unbind(dev_priv, vmw_bo->gmr_id); 768 vmw_gmr_unbind(dev_priv, vmw_bo->gmr_id);
767 spin_lock(&glob->lru_lock); 769 spin_lock(&glob->lru_lock);
768 ida_remove(&dev_priv->gmr_ida, vmw_bo->gmr_id); 770 ida_remove(&dev_priv->gmr_ida, vmw_bo->gmr_id);
769 spin_unlock(&glob->lru_lock); 771 spin_unlock(&glob->lru_lock);
772 vmw_bo->gmr_bound = false;
770 } 773 }
774}
775
776void vmw_dmabuf_bo_free(struct ttm_buffer_object *bo)
777{
778 struct vmw_dma_buffer *vmw_bo = vmw_dma_buffer(bo);
779 struct ttm_bo_global *glob = bo->glob;
780
781 vmw_dmabuf_gmr_unbind(bo);
782 ttm_mem_global_free(glob->mem_glob, bo->acc_size);
771 kfree(vmw_bo); 783 kfree(vmw_bo);
772} 784}
773 785
@@ -813,18 +825,10 @@ int vmw_dmabuf_init(struct vmw_private *dev_priv,
813static void vmw_user_dmabuf_destroy(struct ttm_buffer_object *bo) 825static void vmw_user_dmabuf_destroy(struct ttm_buffer_object *bo)
814{ 826{
815 struct vmw_user_dma_buffer *vmw_user_bo = vmw_user_dma_buffer(bo); 827 struct vmw_user_dma_buffer *vmw_user_bo = vmw_user_dma_buffer(bo);
816 struct vmw_dma_buffer *vmw_bo = &vmw_user_bo->dma;
817 struct ttm_bo_global *glob = bo->glob; 828 struct ttm_bo_global *glob = bo->glob;
818 struct vmw_private *dev_priv =
819 container_of(bo->bdev, struct vmw_private, bdev);
820 829
830 vmw_dmabuf_gmr_unbind(bo);
821 ttm_mem_global_free(glob->mem_glob, bo->acc_size); 831 ttm_mem_global_free(glob->mem_glob, bo->acc_size);
822 if (vmw_bo->gmr_bound) {
823 vmw_gmr_unbind(dev_priv, vmw_bo->gmr_id);
824 spin_lock(&glob->lru_lock);
825 ida_remove(&dev_priv->gmr_ida, vmw_bo->gmr_id);
826 spin_unlock(&glob->lru_lock);
827 }
828 kfree(vmw_user_bo); 832 kfree(vmw_user_bo);
829} 833}
830 834
@@ -868,7 +872,7 @@ int vmw_dmabuf_alloc_ioctl(struct drm_device *dev, void *data,
868 } 872 }
869 873
870 ret = vmw_dmabuf_init(dev_priv, &vmw_user_bo->dma, req->size, 874 ret = vmw_dmabuf_init(dev_priv, &vmw_user_bo->dma, req->size,
871 &vmw_vram_placement, true, 875 &vmw_vram_sys_placement, true,
872 &vmw_user_dmabuf_destroy); 876 &vmw_user_dmabuf_destroy);
873 if (unlikely(ret != 0)) 877 if (unlikely(ret != 0))
874 return ret; 878 return ret;
diff --git a/drivers/gpu/vga/vgaarb.c b/drivers/gpu/vga/vgaarb.c
index 1ac0c93603c9..2f6cf69ecb39 100644
--- a/drivers/gpu/vga/vgaarb.c
+++ b/drivers/gpu/vga/vgaarb.c
@@ -961,7 +961,7 @@ static ssize_t vga_arb_write(struct file *file, const char __user * buf,
961 remaining -= 7; 961 remaining -= 7;
962 pr_devel("client 0x%p called 'target'\n", priv); 962 pr_devel("client 0x%p called 'target'\n", priv);
963 /* if target is default */ 963 /* if target is default */
964 if (!strncmp(buf, "default", 7)) 964 if (!strncmp(curr_pos, "default", 7))
965 pdev = pci_dev_get(vga_default_device()); 965 pdev = pci_dev_get(vga_default_device());
966 else { 966 else {
967 if (!vga_pci_str_to_vars(curr_pos, remaining, 967 if (!vga_pci_str_to_vars(curr_pos, remaining,
diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c
index 4b96e7a898cf..5b4d66dc1a05 100644
--- a/drivers/hid/hid-apple.c
+++ b/drivers/hid/hid-apple.c
@@ -431,6 +431,13 @@ static const struct hid_device_id apple_devices[] = {
431 .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD }, 431 .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
432 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS), 432 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS),
433 .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS }, 433 .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
434 { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI),
435 .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
436 { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO),
437 .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN |
438 APPLE_ISO_KEYBOARD },
439 { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS),
440 .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
434 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY), 441 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY),
435 .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN }, 442 .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
436 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY), 443 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY),
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 80792d38d25c..eabe5f87c6c1 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -1285,6 +1285,9 @@ static const struct hid_device_id hid_blacklist[] = {
1285 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI) }, 1285 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI) },
1286 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ISO) }, 1286 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ISO) },
1287 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS) }, 1287 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS) },
1288 { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI) },
1289 { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO) },
1290 { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS) },
1288 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) }, 1291 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) },
1289 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) }, 1292 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) },
1290 { HID_USB_DEVICE(USB_VENDOR_ID_BELKIN, USB_DEVICE_ID_FLIP_KVM) }, 1293 { HID_USB_DEVICE(USB_VENDOR_ID_BELKIN, USB_DEVICE_ID_FLIP_KVM) },
@@ -1553,6 +1556,7 @@ static const struct hid_device_id hid_ignore_list[] = {
1553 { HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EARTHMATE) }, 1556 { HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EARTHMATE) },
1554 { HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EM_LT20) }, 1557 { HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EM_LT20) },
1555 { HID_USB_DEVICE(USB_VENDOR_ID_ESSENTIAL_REALITY, USB_DEVICE_ID_ESSENTIAL_REALITY_P5) }, 1558 { HID_USB_DEVICE(USB_VENDOR_ID_ESSENTIAL_REALITY, USB_DEVICE_ID_ESSENTIAL_REALITY_P5) },
1559 { HID_USB_DEVICE(USB_VENDOR_ID_ETT, USB_DEVICE_ID_TC5UH) },
1556 { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0001) }, 1560 { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0001) },
1557 { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0002) }, 1561 { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0002) },
1558 { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0003) }, 1562 { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0003) },
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 3839340e293a..010368e649ed 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -88,6 +88,9 @@
88#define USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI 0x0236 88#define USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI 0x0236
89#define USB_DEVICE_ID_APPLE_WELLSPRING3_ISO 0x0237 89#define USB_DEVICE_ID_APPLE_WELLSPRING3_ISO 0x0237
90#define USB_DEVICE_ID_APPLE_WELLSPRING3_JIS 0x0238 90#define USB_DEVICE_ID_APPLE_WELLSPRING3_JIS 0x0238
91#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI 0x0239
92#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO 0x023a
93#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS 0x023b
91#define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a 94#define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a
92#define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b 95#define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b
93#define USB_DEVICE_ID_APPLE_ATV_IRCONTROL 0x8241 96#define USB_DEVICE_ID_APPLE_ATV_IRCONTROL 0x8241
@@ -166,6 +169,9 @@
166#define USB_VENDOR_ID_ESSENTIAL_REALITY 0x0d7f 169#define USB_VENDOR_ID_ESSENTIAL_REALITY 0x0d7f
167#define USB_DEVICE_ID_ESSENTIAL_REALITY_P5 0x0100 170#define USB_DEVICE_ID_ESSENTIAL_REALITY_P5 0x0100
168 171
172#define USB_VENDOR_ID_ETT 0x0664
173#define USB_DEVICE_ID_TC5UH 0x0309
174
169#define USB_VENDOR_ID_EZKEY 0x0518 175#define USB_VENDOR_ID_EZKEY 0x0518
170#define USB_DEVICE_ID_BTC_8193 0x0002 176#define USB_DEVICE_ID_BTC_8193 0x0002
171 177
diff --git a/drivers/hid/hid-samsung.c b/drivers/hid/hid-samsung.c
index 5b222eed0692..510dd1340597 100644
--- a/drivers/hid/hid-samsung.c
+++ b/drivers/hid/hid-samsung.c
@@ -39,7 +39,17 @@
39 * 39 *
40 * 3. 135 byte report descriptor 40 * 3. 135 byte report descriptor
41 * Report #4 has an array field with logical range 0..17 instead of 1..14. 41 * Report #4 has an array field with logical range 0..17 instead of 1..14.
42 *
43 * 4. 171 byte report descriptor
44 * Report #3 has an array field with logical range 0..1 instead of 1..3.
42 */ 45 */
46static inline void samsung_dev_trace(struct hid_device *hdev,
47 unsigned int rsize)
48{
49 dev_info(&hdev->dev, "fixing up Samsung IrDA %d byte report "
50 "descriptor\n", rsize);
51}
52
43static void samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc, 53static void samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc,
44 unsigned int rsize) 54 unsigned int rsize)
45{ 55{
@@ -47,8 +57,7 @@ static void samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc,
47 rdesc[177] == 0x75 && rdesc[178] == 0x30 && 57 rdesc[177] == 0x75 && rdesc[178] == 0x30 &&
48 rdesc[179] == 0x95 && rdesc[180] == 0x01 && 58 rdesc[179] == 0x95 && rdesc[180] == 0x01 &&
49 rdesc[182] == 0x40) { 59 rdesc[182] == 0x40) {
50 dev_info(&hdev->dev, "fixing up Samsung IrDA %d byte report " 60 samsung_dev_trace(hdev, 184);
51 "descriptor\n", 184);
52 rdesc[176] = 0xff; 61 rdesc[176] = 0xff;
53 rdesc[178] = 0x08; 62 rdesc[178] = 0x08;
54 rdesc[180] = 0x06; 63 rdesc[180] = 0x06;
@@ -56,17 +65,21 @@ static void samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc,
56 } else 65 } else
57 if (rsize == 203 && rdesc[192] == 0x15 && rdesc[193] == 0x0 && 66 if (rsize == 203 && rdesc[192] == 0x15 && rdesc[193] == 0x0 &&
58 rdesc[194] == 0x25 && rdesc[195] == 0x12) { 67 rdesc[194] == 0x25 && rdesc[195] == 0x12) {
59 dev_info(&hdev->dev, "fixing up Samsung IrDA %d byte report " 68 samsung_dev_trace(hdev, 203);
60 "descriptor\n", 203);
61 rdesc[193] = 0x1; 69 rdesc[193] = 0x1;
62 rdesc[195] = 0xf; 70 rdesc[195] = 0xf;
63 } else 71 } else
64 if (rsize == 135 && rdesc[124] == 0x15 && rdesc[125] == 0x0 && 72 if (rsize == 135 && rdesc[124] == 0x15 && rdesc[125] == 0x0 &&
65 rdesc[126] == 0x25 && rdesc[127] == 0x11) { 73 rdesc[126] == 0x25 && rdesc[127] == 0x11) {
66 dev_info(&hdev->dev, "fixing up Samsung IrDA %d byte report " 74 samsung_dev_trace(hdev, 135);
67 "descriptor\n", 135);
68 rdesc[125] = 0x1; 75 rdesc[125] = 0x1;
69 rdesc[127] = 0xe; 76 rdesc[127] = 0xe;
77 } else
78 if (rsize == 171 && rdesc[160] == 0x15 && rdesc[161] == 0x0 &&
79 rdesc[162] == 0x25 && rdesc[163] == 0x01) {
80 samsung_dev_trace(hdev, 171);
81 rdesc[161] = 0x1;
82 rdesc[163] = 0x3;
70 } 83 }
71} 84}
72 85
diff --git a/drivers/hid/hid-wacom.c b/drivers/hid/hid-wacom.c
index 747542172242..12dcda529201 100644
--- a/drivers/hid/hid-wacom.c
+++ b/drivers/hid/hid-wacom.c
@@ -142,6 +142,7 @@ static int wacom_raw_event(struct hid_device *hdev, struct hid_report *report,
142 wdata->butstate = rw; 142 wdata->butstate = rw;
143 input_report_key(input, BTN_0, rw & 0x02); 143 input_report_key(input, BTN_0, rw & 0x02);
144 input_report_key(input, BTN_1, rw & 0x01); 144 input_report_key(input, BTN_1, rw & 0x01);
145 input_report_key(input, BTN_TOOL_FINGER, 0xf0);
145 input_event(input, EV_MSC, MSC_SERIAL, 0xf0); 146 input_event(input, EV_MSC, MSC_SERIAL, 0xf0);
146 input_sync(input); 147 input_sync(input);
147 } 148 }
@@ -196,6 +197,9 @@ static int wacom_probe(struct hid_device *hdev,
196 /* Pad */ 197 /* Pad */
197 input->evbit[0] |= BIT(EV_MSC); 198 input->evbit[0] |= BIT(EV_MSC);
198 input->mscbit[0] |= BIT(MSC_SERIAL); 199 input->mscbit[0] |= BIT(MSC_SERIAL);
200 set_bit(BTN_0, input->keybit);
201 set_bit(BTN_1, input->keybit);
202 set_bit(BTN_TOOL_FINGER, input->keybit);
199 203
200 /* Distance, rubber and mouse */ 204 /* Distance, rubber and mouse */
201 input->absbit[0] |= BIT(ABS_DISTANCE); 205 input->absbit[0] |= BIT(ABS_DISTANCE);
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 46c3c566307e..68cf87749a42 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -392,7 +392,7 @@ config SENSORS_GL520SM
392 392
393config SENSORS_CORETEMP 393config SENSORS_CORETEMP
394 tristate "Intel Core/Core2/Atom temperature sensor" 394 tristate "Intel Core/Core2/Atom temperature sensor"
395 depends on X86 && EXPERIMENTAL 395 depends on X86 && PCI && EXPERIMENTAL
396 help 396 help
397 If you say yes here you get support for the temperature 397 If you say yes here you get support for the temperature
398 sensor inside your CPU. Most of the family 6 CPUs 398 sensor inside your CPU. Most of the family 6 CPUs
@@ -792,6 +792,16 @@ config SENSORS_ADS7828
792 This driver can also be built as a module. If so, the module 792 This driver can also be built as a module. If so, the module
793 will be called ads7828. 793 will be called ads7828.
794 794
795config SENSORS_AMC6821
796 tristate "Texas Instruments AMC6821"
797 depends on I2C && EXPERIMENTAL
798 help
799 If you say yes here you get support for the Texas Instruments
800 AMC6821 hardware monitoring chips.
801
802 This driver can also be build as a module. If so, the module
803 will be called amc6821.
804
795config SENSORS_THMC50 805config SENSORS_THMC50
796 tristate "Texas Instruments THMC50 / Analog Devices ADM1022" 806 tristate "Texas Instruments THMC50 / Analog Devices ADM1022"
797 depends on I2C && EXPERIMENTAL 807 depends on I2C && EXPERIMENTAL
diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
index 450c8e894277..4bc215c0953f 100644
--- a/drivers/hwmon/Makefile
+++ b/drivers/hwmon/Makefile
@@ -86,6 +86,7 @@ obj-$(CONFIG_SENSORS_SIS5595) += sis5595.o
86obj-$(CONFIG_SENSORS_SMSC47B397)+= smsc47b397.o 86obj-$(CONFIG_SENSORS_SMSC47B397)+= smsc47b397.o
87obj-$(CONFIG_SENSORS_SMSC47M1) += smsc47m1.o 87obj-$(CONFIG_SENSORS_SMSC47M1) += smsc47m1.o
88obj-$(CONFIG_SENSORS_SMSC47M192)+= smsc47m192.o 88obj-$(CONFIG_SENSORS_SMSC47M192)+= smsc47m192.o
89obj-$(CONFIG_SENSORS_AMC6821) += amc6821.o
89obj-$(CONFIG_SENSORS_THMC50) += thmc50.o 90obj-$(CONFIG_SENSORS_THMC50) += thmc50.o
90obj-$(CONFIG_SENSORS_TMP401) += tmp401.o 91obj-$(CONFIG_SENSORS_TMP401) += tmp401.o
91obj-$(CONFIG_SENSORS_TMP421) += tmp421.o 92obj-$(CONFIG_SENSORS_TMP421) += tmp421.o
diff --git a/drivers/hwmon/adt7462.c b/drivers/hwmon/adt7462.c
index a1a7ef14b519..b8156b4893bb 100644
--- a/drivers/hwmon/adt7462.c
+++ b/drivers/hwmon/adt7462.c
@@ -94,7 +94,7 @@ static const unsigned short normal_i2c[] = { 0x58, 0x5C, I2C_CLIENT_END };
94#define ADT7462_PIN24_SHIFT 6 94#define ADT7462_PIN24_SHIFT 6
95#define ADT7462_PIN26_VOLT_INPUT 0x08 95#define ADT7462_PIN26_VOLT_INPUT 0x08
96#define ADT7462_PIN25_VOLT_INPUT 0x20 96#define ADT7462_PIN25_VOLT_INPUT 0x20
97#define ADT7462_PIN28_SHIFT 6 /* cfg3 */ 97#define ADT7462_PIN28_SHIFT 4 /* cfg3 */
98#define ADT7462_PIN28_VOLT 0x5 98#define ADT7462_PIN28_VOLT 0x5
99 99
100#define ADT7462_REG_ALARM1 0xB8 100#define ADT7462_REG_ALARM1 0xB8
@@ -179,7 +179,7 @@ static const unsigned short normal_i2c[] = { 0x58, 0x5C, I2C_CLIENT_END };
179 * 179 *
180 * Some, but not all, of these voltages have low/high limits. 180 * Some, but not all, of these voltages have low/high limits.
181 */ 181 */
182#define ADT7462_VOLT_COUNT 12 182#define ADT7462_VOLT_COUNT 13
183 183
184#define ADT7462_VENDOR 0x41 184#define ADT7462_VENDOR 0x41
185#define ADT7462_DEVICE 0x62 185#define ADT7462_DEVICE 0x62
diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c
new file mode 100644
index 000000000000..fa9708c2d723
--- /dev/null
+++ b/drivers/hwmon/amc6821.c
@@ -0,0 +1,1115 @@
1/*
2 amc6821.c - Part of lm_sensors, Linux kernel modules for hardware
3 monitoring
4 Copyright (C) 2009 T. Mertelj <tomaz.mertelj@guest.arnes.si>
5
6 Based on max6650.c:
7 Copyright (C) 2007 Hans J. Koch <hjk@linutronix.de>
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22*/
23
24
25#include <linux/kernel.h> /* Needed for KERN_INFO */
26#include <linux/module.h>
27#include <linux/init.h>
28#include <linux/slab.h>
29#include <linux/jiffies.h>
30#include <linux/i2c.h>
31#include <linux/hwmon.h>
32#include <linux/hwmon-sysfs.h>
33#include <linux/err.h>
34#include <linux/mutex.h>
35
36
37/*
38 * Addresses to scan.
39 */
40
41static const unsigned short normal_i2c[] = {0x18, 0x19, 0x1a, 0x2c, 0x2d, 0x2e,
42 0x4c, 0x4d, 0x4e, I2C_CLIENT_END};
43
44
45
46/*
47 * Insmod parameters
48 */
49
50static int pwminv = 0; /*Inverted PWM output. */
51module_param(pwminv, int, S_IRUGO);
52
53static int init = 1; /*Power-on initialization.*/
54module_param(init, int, S_IRUGO);
55
56
57enum chips { amc6821 };
58
59#define AMC6821_REG_DEV_ID 0x3D
60#define AMC6821_REG_COMP_ID 0x3E
61#define AMC6821_REG_CONF1 0x00
62#define AMC6821_REG_CONF2 0x01
63#define AMC6821_REG_CONF3 0x3F
64#define AMC6821_REG_CONF4 0x04
65#define AMC6821_REG_STAT1 0x02
66#define AMC6821_REG_STAT2 0x03
67#define AMC6821_REG_TDATA_LOW 0x08
68#define AMC6821_REG_TDATA_HI 0x09
69#define AMC6821_REG_LTEMP_HI 0x0A
70#define AMC6821_REG_RTEMP_HI 0x0B
71#define AMC6821_REG_LTEMP_LIMIT_MIN 0x15
72#define AMC6821_REG_LTEMP_LIMIT_MAX 0x14
73#define AMC6821_REG_RTEMP_LIMIT_MIN 0x19
74#define AMC6821_REG_RTEMP_LIMIT_MAX 0x18
75#define AMC6821_REG_LTEMP_CRIT 0x1B
76#define AMC6821_REG_RTEMP_CRIT 0x1D
77#define AMC6821_REG_PSV_TEMP 0x1C
78#define AMC6821_REG_DCY 0x22
79#define AMC6821_REG_LTEMP_FAN_CTRL 0x24
80#define AMC6821_REG_RTEMP_FAN_CTRL 0x25
81#define AMC6821_REG_DCY_LOW_TEMP 0x21
82
83#define AMC6821_REG_TACH_LLIMITL 0x10
84#define AMC6821_REG_TACH_LLIMITH 0x11
85#define AMC6821_REG_TACH_HLIMITL 0x12
86#define AMC6821_REG_TACH_HLIMITH 0x13
87
88#define AMC6821_CONF1_START 0x01
89#define AMC6821_CONF1_FAN_INT_EN 0x02
90#define AMC6821_CONF1_FANIE 0x04
91#define AMC6821_CONF1_PWMINV 0x08
92#define AMC6821_CONF1_FAN_FAULT_EN 0x10
93#define AMC6821_CONF1_FDRC0 0x20
94#define AMC6821_CONF1_FDRC1 0x40
95#define AMC6821_CONF1_THERMOVIE 0x80
96
97#define AMC6821_CONF2_PWM_EN 0x01
98#define AMC6821_CONF2_TACH_MODE 0x02
99#define AMC6821_CONF2_TACH_EN 0x04
100#define AMC6821_CONF2_RTFIE 0x08
101#define AMC6821_CONF2_LTOIE 0x10
102#define AMC6821_CONF2_RTOIE 0x20
103#define AMC6821_CONF2_PSVIE 0x40
104#define AMC6821_CONF2_RST 0x80
105
106#define AMC6821_CONF3_THERM_FAN_EN 0x80
107#define AMC6821_CONF3_REV_MASK 0x0F
108
109#define AMC6821_CONF4_OVREN 0x10
110#define AMC6821_CONF4_TACH_FAST 0x20
111#define AMC6821_CONF4_PSPR 0x40
112#define AMC6821_CONF4_MODE 0x80
113
114#define AMC6821_STAT1_RPM_ALARM 0x01
115#define AMC6821_STAT1_FANS 0x02
116#define AMC6821_STAT1_RTH 0x04
117#define AMC6821_STAT1_RTL 0x08
118#define AMC6821_STAT1_R_THERM 0x10
119#define AMC6821_STAT1_RTF 0x20
120#define AMC6821_STAT1_LTH 0x40
121#define AMC6821_STAT1_LTL 0x80
122
123#define AMC6821_STAT2_RTC 0x08
124#define AMC6821_STAT2_LTC 0x10
125#define AMC6821_STAT2_LPSV 0x20
126#define AMC6821_STAT2_L_THERM 0x40
127#define AMC6821_STAT2_THERM_IN 0x80
128
129enum {IDX_TEMP1_INPUT = 0, IDX_TEMP1_MIN, IDX_TEMP1_MAX,
130 IDX_TEMP1_CRIT, IDX_TEMP2_INPUT, IDX_TEMP2_MIN,
131 IDX_TEMP2_MAX, IDX_TEMP2_CRIT,
132 TEMP_IDX_LEN, };
133
134static const u8 temp_reg[] = {AMC6821_REG_LTEMP_HI,
135 AMC6821_REG_LTEMP_LIMIT_MIN,
136 AMC6821_REG_LTEMP_LIMIT_MAX,
137 AMC6821_REG_LTEMP_CRIT,
138 AMC6821_REG_RTEMP_HI,
139 AMC6821_REG_RTEMP_LIMIT_MIN,
140 AMC6821_REG_RTEMP_LIMIT_MAX,
141 AMC6821_REG_RTEMP_CRIT, };
142
143enum {IDX_FAN1_INPUT = 0, IDX_FAN1_MIN, IDX_FAN1_MAX,
144 FAN1_IDX_LEN, };
145
146static const u8 fan_reg_low[] = {AMC6821_REG_TDATA_LOW,
147 AMC6821_REG_TACH_LLIMITL,
148 AMC6821_REG_TACH_HLIMITL, };
149
150
151static const u8 fan_reg_hi[] = {AMC6821_REG_TDATA_HI,
152 AMC6821_REG_TACH_LLIMITH,
153 AMC6821_REG_TACH_HLIMITH, };
154
155static int amc6821_probe(
156 struct i2c_client *client,
157 const struct i2c_device_id *id);
158static int amc6821_detect(
159 struct i2c_client *client,
160 struct i2c_board_info *info);
161static int amc6821_init_client(struct i2c_client *client);
162static int amc6821_remove(struct i2c_client *client);
163static struct amc6821_data *amc6821_update_device(struct device *dev);
164
165/*
166 * Driver data (common to all clients)
167 */
168
169static const struct i2c_device_id amc6821_id[] = {
170 { "amc6821", amc6821 },
171 { }
172};
173
174MODULE_DEVICE_TABLE(i2c, amc6821_id);
175
176static struct i2c_driver amc6821_driver = {
177 .class = I2C_CLASS_HWMON,
178 .driver = {
179 .name = "amc6821",
180 },
181 .probe = amc6821_probe,
182 .remove = amc6821_remove,
183 .id_table = amc6821_id,
184 .detect = amc6821_detect,
185 .address_list = normal_i2c,
186};
187
188
189/*
190 * Client data (each client gets its own)
191 */
192
193struct amc6821_data {
194 struct device *hwmon_dev;
195 struct mutex update_lock;
196 char valid; /* zero until following fields are valid */
197 unsigned long last_updated; /* in jiffies */
198
199 /* register values */
200 int temp[TEMP_IDX_LEN];
201
202 u16 fan[FAN1_IDX_LEN];
203 u8 fan1_div;
204
205 u8 pwm1;
206 u8 temp1_auto_point_temp[3];
207 u8 temp2_auto_point_temp[3];
208 u8 pwm1_auto_point_pwm[3];
209 u8 pwm1_enable;
210 u8 pwm1_auto_channels_temp;
211
212 u8 stat1;
213 u8 stat2;
214};
215
216
217static ssize_t get_temp(
218 struct device *dev,
219 struct device_attribute *devattr,
220 char *buf)
221{
222 struct amc6821_data *data = amc6821_update_device(dev);
223 int ix = to_sensor_dev_attr(devattr)->index;
224
225 return sprintf(buf, "%d\n", data->temp[ix] * 1000);
226}
227
228
229
230static ssize_t set_temp(
231 struct device *dev,
232 struct device_attribute *attr,
233 const char *buf,
234 size_t count)
235{
236 struct i2c_client *client = to_i2c_client(dev);
237 struct amc6821_data *data = i2c_get_clientdata(client);
238 int ix = to_sensor_dev_attr(attr)->index;
239 long val;
240
241 int ret = strict_strtol(buf, 10, &val);
242 if (ret)
243 return ret;
244 val = SENSORS_LIMIT(val / 1000, -128, 127);
245
246 mutex_lock(&data->update_lock);
247 data->temp[ix] = val;
248 if (i2c_smbus_write_byte_data(client, temp_reg[ix], data->temp[ix])) {
249 dev_err(&client->dev, "Register write error, aborting.\n");
250 count = -EIO;
251 }
252 mutex_unlock(&data->update_lock);
253 return count;
254}
255
256
257
258
259static ssize_t get_temp_alarm(
260 struct device *dev,
261 struct device_attribute *devattr,
262 char *buf)
263{
264 struct amc6821_data *data = amc6821_update_device(dev);
265 int ix = to_sensor_dev_attr(devattr)->index;
266 u8 flag;
267
268 switch (ix) {
269 case IDX_TEMP1_MIN:
270 flag = data->stat1 & AMC6821_STAT1_LTL;
271 break;
272 case IDX_TEMP1_MAX:
273 flag = data->stat1 & AMC6821_STAT1_LTH;
274 break;
275 case IDX_TEMP1_CRIT:
276 flag = data->stat2 & AMC6821_STAT2_LTC;
277 break;
278 case IDX_TEMP2_MIN:
279 flag = data->stat1 & AMC6821_STAT1_RTL;
280 break;
281 case IDX_TEMP2_MAX:
282 flag = data->stat1 & AMC6821_STAT1_RTH;
283 break;
284 case IDX_TEMP2_CRIT:
285 flag = data->stat2 & AMC6821_STAT2_RTC;
286 break;
287 default:
288 dev_dbg(dev, "Unknown attr->index (%d).\n", ix);
289 return -EINVAL;
290 }
291 if (flag)
292 return sprintf(buf, "1");
293 else
294 return sprintf(buf, "0");
295}
296
297
298
299
300static ssize_t get_temp2_fault(
301 struct device *dev,
302 struct device_attribute *devattr,
303 char *buf)
304{
305 struct amc6821_data *data = amc6821_update_device(dev);
306 if (data->stat1 & AMC6821_STAT1_RTF)
307 return sprintf(buf, "1");
308 else
309 return sprintf(buf, "0");
310}
311
312static ssize_t get_pwm1(
313 struct device *dev,
314 struct device_attribute *devattr,
315 char *buf)
316{
317 struct amc6821_data *data = amc6821_update_device(dev);
318 return sprintf(buf, "%d\n", data->pwm1);
319}
320
321static ssize_t set_pwm1(
322 struct device *dev,
323 struct device_attribute *devattr,
324 const char *buf,
325 size_t count)
326{
327 struct i2c_client *client = to_i2c_client(dev);
328 struct amc6821_data *data = i2c_get_clientdata(client);
329 long val;
330 int ret = strict_strtol(buf, 10, &val);
331 if (ret)
332 return ret;
333
334 mutex_lock(&data->update_lock);
335 data->pwm1 = SENSORS_LIMIT(val , 0, 255);
336 i2c_smbus_write_byte_data(client, AMC6821_REG_DCY, data->pwm1);
337 mutex_unlock(&data->update_lock);
338 return count;
339}
340
341static ssize_t get_pwm1_enable(
342 struct device *dev,
343 struct device_attribute *devattr,
344 char *buf)
345{
346 struct amc6821_data *data = amc6821_update_device(dev);
347 return sprintf(buf, "%d\n", data->pwm1_enable);
348}
349
350static ssize_t set_pwm1_enable(
351 struct device *dev,
352 struct device_attribute *attr,
353 const char *buf,
354 size_t count)
355{
356 struct i2c_client *client = to_i2c_client(dev);
357 struct amc6821_data *data = i2c_get_clientdata(client);
358 long val;
359 int config = strict_strtol(buf, 10, &val);
360 if (config)
361 return config;
362
363 config = i2c_smbus_read_byte_data(client, AMC6821_REG_CONF1);
364 if (config < 0) {
365 dev_err(&client->dev,
366 "Error reading configuration register, aborting.\n");
367 return -EIO;
368 }
369
370 switch (val) {
371 case 1:
372 config &= ~AMC6821_CONF1_FDRC0;
373 config &= ~AMC6821_CONF1_FDRC1;
374 break;
375 case 2:
376 config &= ~AMC6821_CONF1_FDRC0;
377 config |= AMC6821_CONF1_FDRC1;
378 break;
379 case 3:
380 config |= AMC6821_CONF1_FDRC0;
381 config |= AMC6821_CONF1_FDRC1;
382 break;
383 default:
384 return -EINVAL;
385 }
386 mutex_lock(&data->update_lock);
387 if (i2c_smbus_write_byte_data(client, AMC6821_REG_CONF1, config)) {
388 dev_err(&client->dev,
389 "Configuration register write error, aborting.\n");
390 count = -EIO;
391 }
392 mutex_unlock(&data->update_lock);
393 return count;
394}
395
396
397static ssize_t get_pwm1_auto_channels_temp(
398 struct device *dev,
399 struct device_attribute *devattr,
400 char *buf)
401{
402 struct amc6821_data *data = amc6821_update_device(dev);
403 return sprintf(buf, "%d\n", data->pwm1_auto_channels_temp);
404}
405
406
407static ssize_t get_temp_auto_point_temp(
408 struct device *dev,
409 struct device_attribute *devattr,
410 char *buf)
411{
412 int ix = to_sensor_dev_attr_2(devattr)->index;
413 int nr = to_sensor_dev_attr_2(devattr)->nr;
414 struct amc6821_data *data = amc6821_update_device(dev);
415 switch (nr) {
416 case 1:
417 return sprintf(buf, "%d\n",
418 data->temp1_auto_point_temp[ix] * 1000);
419 break;
420 case 2:
421 return sprintf(buf, "%d\n",
422 data->temp2_auto_point_temp[ix] * 1000);
423 break;
424 default:
425 dev_dbg(dev, "Unknown attr->nr (%d).\n", nr);
426 return -EINVAL;
427 }
428}
429
430
431static ssize_t get_pwm1_auto_point_pwm(
432 struct device *dev,
433 struct device_attribute *devattr,
434 char *buf)
435{
436 int ix = to_sensor_dev_attr(devattr)->index;
437 struct amc6821_data *data = amc6821_update_device(dev);
438 return sprintf(buf, "%d\n", data->pwm1_auto_point_pwm[ix]);
439}
440
441
442static inline ssize_t set_slope_register(struct i2c_client *client,
443 u8 reg,
444 u8 dpwm,
445 u8 *ptemp)
446{
447 int dt;
448 u8 tmp;
449
450 dt = ptemp[2]-ptemp[1];
451 for (tmp = 4; tmp > 0; tmp--) {
452 if (dt * (0x20 >> tmp) >= dpwm)
453 break;
454 }
455 tmp |= (ptemp[1] & 0x7C) << 1;
456 if (i2c_smbus_write_byte_data(client,
457 reg, tmp)) {
458 dev_err(&client->dev, "Register write error, aborting.\n");
459 return -EIO;
460 }
461 return 0;
462}
463
464
465
466static ssize_t set_temp_auto_point_temp(
467 struct device *dev,
468 struct device_attribute *attr,
469 const char *buf,
470 size_t count)
471{
472 struct i2c_client *client = to_i2c_client(dev);
473 struct amc6821_data *data = amc6821_update_device(dev);
474 int ix = to_sensor_dev_attr_2(attr)->index;
475 int nr = to_sensor_dev_attr_2(attr)->nr;
476 u8 *ptemp;
477 u8 reg;
478 int dpwm;
479 long val;
480 int ret = strict_strtol(buf, 10, &val);
481 if (ret)
482 return ret;
483
484 switch (nr) {
485 case 1:
486 ptemp = data->temp1_auto_point_temp;
487 reg = AMC6821_REG_LTEMP_FAN_CTRL;
488 break;
489 case 2:
490 ptemp = data->temp2_auto_point_temp;
491 reg = AMC6821_REG_RTEMP_FAN_CTRL;
492 break;
493 default:
494 dev_dbg(dev, "Unknown attr->nr (%d).\n", nr);
495 return -EINVAL;
496 }
497
498 data->valid = 0;
499 mutex_lock(&data->update_lock);
500 switch (ix) {
501 case 0:
502 ptemp[0] = SENSORS_LIMIT(val / 1000, 0,
503 data->temp1_auto_point_temp[1]);
504 ptemp[0] = SENSORS_LIMIT(ptemp[0], 0,
505 data->temp2_auto_point_temp[1]);
506 ptemp[0] = SENSORS_LIMIT(ptemp[0], 0, 63);
507 if (i2c_smbus_write_byte_data(
508 client,
509 AMC6821_REG_PSV_TEMP,
510 ptemp[0])) {
511 dev_err(&client->dev,
512 "Register write error, aborting.\n");
513 count = -EIO;
514 }
515 goto EXIT;
516 break;
517 case 1:
518 ptemp[1] = SENSORS_LIMIT(
519 val / 1000,
520 (ptemp[0] & 0x7C) + 4,
521 124);
522 ptemp[1] &= 0x7C;
523 ptemp[2] = SENSORS_LIMIT(
524 ptemp[2], ptemp[1] + 1,
525 255);
526 break;
527 case 2:
528 ptemp[2] = SENSORS_LIMIT(
529 val / 1000,
530 ptemp[1]+1,
531 255);
532 break;
533 default:
534 dev_dbg(dev, "Unknown attr->index (%d).\n", ix);
535 count = -EINVAL;
536 goto EXIT;
537 }
538 dpwm = data->pwm1_auto_point_pwm[2] - data->pwm1_auto_point_pwm[1];
539 if (set_slope_register(client, reg, dpwm, ptemp))
540 count = -EIO;
541
542EXIT:
543 mutex_unlock(&data->update_lock);
544 return count;
545}
546
547
548
549static ssize_t set_pwm1_auto_point_pwm(
550 struct device *dev,
551 struct device_attribute *attr,
552 const char *buf,
553 size_t count)
554{
555 struct i2c_client *client = to_i2c_client(dev);
556 struct amc6821_data *data = i2c_get_clientdata(client);
557 int dpwm;
558 long val;
559 int ret = strict_strtol(buf, 10, &val);
560 if (ret)
561 return ret;
562
563 mutex_lock(&data->update_lock);
564 data->pwm1_auto_point_pwm[1] = SENSORS_LIMIT(val, 0, 254);
565 if (i2c_smbus_write_byte_data(client, AMC6821_REG_DCY_LOW_TEMP,
566 data->pwm1_auto_point_pwm[1])) {
567 dev_err(&client->dev, "Register write error, aborting.\n");
568 count = -EIO;
569 goto EXIT;
570 }
571 dpwm = data->pwm1_auto_point_pwm[2] - data->pwm1_auto_point_pwm[1];
572 if (set_slope_register(client, AMC6821_REG_LTEMP_FAN_CTRL, dpwm,
573 data->temp1_auto_point_temp)) {
574 count = -EIO;
575 goto EXIT;
576 }
577 if (set_slope_register(client, AMC6821_REG_RTEMP_FAN_CTRL, dpwm,
578 data->temp2_auto_point_temp)) {
579 count = -EIO;
580 goto EXIT;
581 }
582
583EXIT:
584 data->valid = 0;
585 mutex_unlock(&data->update_lock);
586 return count;
587}
588
589static ssize_t get_fan(
590 struct device *dev,
591 struct device_attribute *devattr,
592 char *buf)
593{
594 struct amc6821_data *data = amc6821_update_device(dev);
595 int ix = to_sensor_dev_attr(devattr)->index;
596 if (0 == data->fan[ix])
597 return sprintf(buf, "0");
598 return sprintf(buf, "%d\n", (int)(6000000 / data->fan[ix]));
599}
600
601
602
603static ssize_t get_fan1_fault(
604 struct device *dev,
605 struct device_attribute *devattr,
606 char *buf)
607{
608 struct amc6821_data *data = amc6821_update_device(dev);
609 if (data->stat1 & AMC6821_STAT1_FANS)
610 return sprintf(buf, "1");
611 else
612 return sprintf(buf, "0");
613}
614
615
616
617static ssize_t set_fan(
618 struct device *dev,
619 struct device_attribute *attr,
620 const char *buf, size_t count)
621{
622 struct i2c_client *client = to_i2c_client(dev);
623 struct amc6821_data *data = i2c_get_clientdata(client);
624 long val;
625 int ix = to_sensor_dev_attr(attr)->index;
626 int ret = strict_strtol(buf, 10, &val);
627 if (ret)
628 return ret;
629 val = 1 > val ? 0xFFFF : 6000000/val;
630
631 mutex_lock(&data->update_lock);
632 data->fan[ix] = (u16) SENSORS_LIMIT(val, 1, 0xFFFF);
633 if (i2c_smbus_write_byte_data(client, fan_reg_low[ix],
634 data->fan[ix] & 0xFF)) {
635 dev_err(&client->dev, "Register write error, aborting.\n");
636 count = -EIO;
637 goto EXIT;
638 }
639 if (i2c_smbus_write_byte_data(client,
640 fan_reg_hi[ix], data->fan[ix] >> 8)) {
641 dev_err(&client->dev, "Register write error, aborting.\n");
642 count = -EIO;
643 }
644EXIT:
645 mutex_unlock(&data->update_lock);
646 return count;
647}
648
649
650
651static ssize_t get_fan1_div(
652 struct device *dev,
653 struct device_attribute *devattr,
654 char *buf)
655{
656 struct amc6821_data *data = amc6821_update_device(dev);
657 return sprintf(buf, "%d\n", data->fan1_div);
658}
659
660static ssize_t set_fan1_div(
661 struct device *dev,
662 struct device_attribute *attr,
663 const char *buf, size_t count)
664{
665 struct i2c_client *client = to_i2c_client(dev);
666 struct amc6821_data *data = i2c_get_clientdata(client);
667 long val;
668 int config = strict_strtol(buf, 10, &val);
669 if (config)
670 return config;
671
672 config = i2c_smbus_read_byte_data(client, AMC6821_REG_CONF4);
673 if (config < 0) {
674 dev_err(&client->dev,
675 "Error reading configuration register, aborting.\n");
676 return -EIO;
677 }
678 mutex_lock(&data->update_lock);
679 switch (val) {
680 case 2:
681 config &= ~AMC6821_CONF4_PSPR;
682 data->fan1_div = 2;
683 break;
684 case 4:
685 config |= AMC6821_CONF4_PSPR;
686 data->fan1_div = 4;
687 break;
688 default:
689 count = -EINVAL;
690 goto EXIT;
691 }
692 if (i2c_smbus_write_byte_data(client, AMC6821_REG_CONF4, config)) {
693 dev_err(&client->dev,
694 "Configuration register write error, aborting.\n");
695 count = -EIO;
696 }
697EXIT:
698 mutex_unlock(&data->update_lock);
699 return count;
700}
701
702
703
704static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO,
705 get_temp, NULL, IDX_TEMP1_INPUT);
706static SENSOR_DEVICE_ATTR(temp1_min, S_IRUGO | S_IWUSR, get_temp,
707 set_temp, IDX_TEMP1_MIN);
708static SENSOR_DEVICE_ATTR(temp1_max, S_IRUGO | S_IWUSR, get_temp,
709 set_temp, IDX_TEMP1_MAX);
710static SENSOR_DEVICE_ATTR(temp1_crit, S_IRUGO | S_IWUSR, get_temp,
711 set_temp, IDX_TEMP1_CRIT);
712static SENSOR_DEVICE_ATTR(temp1_min_alarm, S_IRUGO,
713 get_temp_alarm, NULL, IDX_TEMP1_MIN);
714static SENSOR_DEVICE_ATTR(temp1_max_alarm, S_IRUGO,
715 get_temp_alarm, NULL, IDX_TEMP1_MAX);
716static SENSOR_DEVICE_ATTR(temp1_crit_alarm, S_IRUGO,
717 get_temp_alarm, NULL, IDX_TEMP1_CRIT);
718static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO | S_IWUSR,
719 get_temp, NULL, IDX_TEMP2_INPUT);
720static SENSOR_DEVICE_ATTR(temp2_min, S_IRUGO | S_IWUSR, get_temp,
721 set_temp, IDX_TEMP2_MIN);
722static SENSOR_DEVICE_ATTR(temp2_max, S_IRUGO | S_IWUSR, get_temp,
723 set_temp, IDX_TEMP2_MAX);
724static SENSOR_DEVICE_ATTR(temp2_crit, S_IRUGO | S_IWUSR, get_temp,
725 set_temp, IDX_TEMP2_CRIT);
726static SENSOR_DEVICE_ATTR(temp2_fault, S_IRUGO,
727 get_temp2_fault, NULL, 0);
728static SENSOR_DEVICE_ATTR(temp2_min_alarm, S_IRUGO,
729 get_temp_alarm, NULL, IDX_TEMP2_MIN);
730static SENSOR_DEVICE_ATTR(temp2_max_alarm, S_IRUGO,
731 get_temp_alarm, NULL, IDX_TEMP2_MAX);
732static SENSOR_DEVICE_ATTR(temp2_crit_alarm, S_IRUGO,
733 get_temp_alarm, NULL, IDX_TEMP2_CRIT);
734static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO, get_fan, NULL, IDX_FAN1_INPUT);
735static SENSOR_DEVICE_ATTR(fan1_min, S_IRUGO | S_IWUSR,
736 get_fan, set_fan, IDX_FAN1_MIN);
737static SENSOR_DEVICE_ATTR(fan1_max, S_IRUGO | S_IWUSR,
738 get_fan, set_fan, IDX_FAN1_MAX);
739static SENSOR_DEVICE_ATTR(fan1_fault, S_IRUGO, get_fan1_fault, NULL, 0);
740static SENSOR_DEVICE_ATTR(fan1_div, S_IRUGO | S_IWUSR,
741 get_fan1_div, set_fan1_div, 0);
742
743static SENSOR_DEVICE_ATTR(pwm1, S_IWUSR | S_IRUGO, get_pwm1, set_pwm1, 0);
744static SENSOR_DEVICE_ATTR(pwm1_enable, S_IWUSR | S_IRUGO,
745 get_pwm1_enable, set_pwm1_enable, 0);
746static SENSOR_DEVICE_ATTR(pwm1_auto_point1_pwm, S_IRUGO,
747 get_pwm1_auto_point_pwm, NULL, 0);
748static SENSOR_DEVICE_ATTR(pwm1_auto_point2_pwm, S_IWUSR | S_IRUGO,
749 get_pwm1_auto_point_pwm, set_pwm1_auto_point_pwm, 1);
750static SENSOR_DEVICE_ATTR(pwm1_auto_point3_pwm, S_IRUGO,
751 get_pwm1_auto_point_pwm, NULL, 2);
752static SENSOR_DEVICE_ATTR(pwm1_auto_channels_temp, S_IRUGO,
753 get_pwm1_auto_channels_temp, NULL, 0);
754static SENSOR_DEVICE_ATTR_2(temp1_auto_point1_temp, S_IRUGO,
755 get_temp_auto_point_temp, NULL, 1, 0);
756static SENSOR_DEVICE_ATTR_2(temp1_auto_point2_temp, S_IWUSR | S_IRUGO,
757 get_temp_auto_point_temp, set_temp_auto_point_temp, 1, 1);
758static SENSOR_DEVICE_ATTR_2(temp1_auto_point3_temp, S_IWUSR | S_IRUGO,
759 get_temp_auto_point_temp, set_temp_auto_point_temp, 1, 2);
760
761static SENSOR_DEVICE_ATTR_2(temp2_auto_point1_temp, S_IWUSR | S_IRUGO,
762 get_temp_auto_point_temp, set_temp_auto_point_temp, 2, 0);
763static SENSOR_DEVICE_ATTR_2(temp2_auto_point2_temp, S_IWUSR | S_IRUGO,
764 get_temp_auto_point_temp, set_temp_auto_point_temp, 2, 1);
765static SENSOR_DEVICE_ATTR_2(temp2_auto_point3_temp, S_IWUSR | S_IRUGO,
766 get_temp_auto_point_temp, set_temp_auto_point_temp, 2, 2);
767
768
769
770static struct attribute *amc6821_attrs[] = {
771 &sensor_dev_attr_temp1_input.dev_attr.attr,
772 &sensor_dev_attr_temp1_min.dev_attr.attr,
773 &sensor_dev_attr_temp1_max.dev_attr.attr,
774 &sensor_dev_attr_temp1_crit.dev_attr.attr,
775 &sensor_dev_attr_temp1_min_alarm.dev_attr.attr,
776 &sensor_dev_attr_temp1_max_alarm.dev_attr.attr,
777 &sensor_dev_attr_temp1_crit_alarm.dev_attr.attr,
778 &sensor_dev_attr_temp2_input.dev_attr.attr,
779 &sensor_dev_attr_temp2_min.dev_attr.attr,
780 &sensor_dev_attr_temp2_max.dev_attr.attr,
781 &sensor_dev_attr_temp2_crit.dev_attr.attr,
782 &sensor_dev_attr_temp2_min_alarm.dev_attr.attr,
783 &sensor_dev_attr_temp2_max_alarm.dev_attr.attr,
784 &sensor_dev_attr_temp2_crit_alarm.dev_attr.attr,
785 &sensor_dev_attr_temp2_fault.dev_attr.attr,
786 &sensor_dev_attr_fan1_input.dev_attr.attr,
787 &sensor_dev_attr_fan1_min.dev_attr.attr,
788 &sensor_dev_attr_fan1_max.dev_attr.attr,
789 &sensor_dev_attr_fan1_fault.dev_attr.attr,
790 &sensor_dev_attr_fan1_div.dev_attr.attr,
791 &sensor_dev_attr_pwm1.dev_attr.attr,
792 &sensor_dev_attr_pwm1_enable.dev_attr.attr,
793 &sensor_dev_attr_pwm1_auto_channels_temp.dev_attr.attr,
794 &sensor_dev_attr_pwm1_auto_point1_pwm.dev_attr.attr,
795 &sensor_dev_attr_pwm1_auto_point2_pwm.dev_attr.attr,
796 &sensor_dev_attr_pwm1_auto_point3_pwm.dev_attr.attr,
797 &sensor_dev_attr_temp1_auto_point1_temp.dev_attr.attr,
798 &sensor_dev_attr_temp1_auto_point2_temp.dev_attr.attr,
799 &sensor_dev_attr_temp1_auto_point3_temp.dev_attr.attr,
800 &sensor_dev_attr_temp2_auto_point1_temp.dev_attr.attr,
801 &sensor_dev_attr_temp2_auto_point2_temp.dev_attr.attr,
802 &sensor_dev_attr_temp2_auto_point3_temp.dev_attr.attr,
803 NULL
804};
805
806static struct attribute_group amc6821_attr_grp = {
807 .attrs = amc6821_attrs,
808};
809
810
811
812/* Return 0 if detection is successful, -ENODEV otherwise */
813static int amc6821_detect(
814 struct i2c_client *client,
815 struct i2c_board_info *info)
816{
817 struct i2c_adapter *adapter = client->adapter;
818 int address = client->addr;
819 int dev_id, comp_id;
820
821 dev_dbg(&adapter->dev, "amc6821_detect called.\n");
822
823 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) {
824 dev_dbg(&adapter->dev,
825 "amc6821: I2C bus doesn't support byte mode, "
826 "skipping.\n");
827 return -ENODEV;
828 }
829
830 dev_id = i2c_smbus_read_byte_data(client, AMC6821_REG_DEV_ID);
831 comp_id = i2c_smbus_read_byte_data(client, AMC6821_REG_COMP_ID);
832 if (dev_id != 0x21 || comp_id != 0x49) {
833 dev_dbg(&adapter->dev,
834 "amc6821: detection failed at 0x%02x.\n",
835 address);
836 return -ENODEV;
837 }
838
839 /* Bit 7 of the address register is ignored, so we can check the
840 ID registers again */
841 dev_id = i2c_smbus_read_byte_data(client, 0x80 | AMC6821_REG_DEV_ID);
842 comp_id = i2c_smbus_read_byte_data(client, 0x80 | AMC6821_REG_COMP_ID);
843 if (dev_id != 0x21 || comp_id != 0x49) {
844 dev_dbg(&adapter->dev,
845 "amc6821: detection failed at 0x%02x.\n",
846 address);
847 return -ENODEV;
848 }
849
850 dev_info(&adapter->dev, "amc6821: chip found at 0x%02x.\n", address);
851 strlcpy(info->type, "amc6821", I2C_NAME_SIZE);
852
853 return 0;
854}
855
856static int amc6821_probe(
857 struct i2c_client *client,
858 const struct i2c_device_id *id)
859{
860 struct amc6821_data *data;
861 int err;
862
863 data = kzalloc(sizeof(struct amc6821_data), GFP_KERNEL);
864 if (!data) {
865 dev_err(&client->dev, "out of memory.\n");
866 return -ENOMEM;
867 }
868
869
870 i2c_set_clientdata(client, data);
871 mutex_init(&data->update_lock);
872
873 /*
874 * Initialize the amc6821 chip
875 */
876 err = amc6821_init_client(client);
877 if (err)
878 goto err_free;
879
880 err = sysfs_create_group(&client->dev.kobj, &amc6821_attr_grp);
881 if (err)
882 goto err_free;
883
884 data->hwmon_dev = hwmon_device_register(&client->dev);
885 if (!IS_ERR(data->hwmon_dev))
886 return 0;
887
888 err = PTR_ERR(data->hwmon_dev);
889 dev_err(&client->dev, "error registering hwmon device.\n");
890 sysfs_remove_group(&client->dev.kobj, &amc6821_attr_grp);
891err_free:
892 kfree(data);
893 return err;
894}
895
896static int amc6821_remove(struct i2c_client *client)
897{
898 struct amc6821_data *data = i2c_get_clientdata(client);
899
900 hwmon_device_unregister(data->hwmon_dev);
901 sysfs_remove_group(&client->dev.kobj, &amc6821_attr_grp);
902
903 kfree(data);
904
905 return 0;
906}
907
908
909static int amc6821_init_client(struct i2c_client *client)
910{
911 int config;
912 int err = -EIO;
913
914 if (init) {
915 config = i2c_smbus_read_byte_data(client, AMC6821_REG_CONF4);
916
917 if (config < 0) {
918 dev_err(&client->dev,
919 "Error reading configuration register, aborting.\n");
920 return err;
921 }
922
923 config |= AMC6821_CONF4_MODE;
924
925 if (i2c_smbus_write_byte_data(client, AMC6821_REG_CONF4,
926 config)) {
927 dev_err(&client->dev,
928 "Configuration register write error, aborting.\n");
929 return err;
930 }
931
932 config = i2c_smbus_read_byte_data(client, AMC6821_REG_CONF3);
933
934 if (config < 0) {
935 dev_err(&client->dev,
936 "Error reading configuration register, aborting.\n");
937 return err;
938 }
939
940 dev_info(&client->dev, "Revision %d\n", config & 0x0f);
941
942 config &= ~AMC6821_CONF3_THERM_FAN_EN;
943
944 if (i2c_smbus_write_byte_data(client, AMC6821_REG_CONF3,
945 config)) {
946 dev_err(&client->dev,
947 "Configuration register write error, aborting.\n");
948 return err;
949 }
950
951 config = i2c_smbus_read_byte_data(client, AMC6821_REG_CONF2);
952
953 if (config < 0) {
954 dev_err(&client->dev,
955 "Error reading configuration register, aborting.\n");
956 return err;
957 }
958
959 config &= ~AMC6821_CONF2_RTFIE;
960 config &= ~AMC6821_CONF2_LTOIE;
961 config &= ~AMC6821_CONF2_RTOIE;
962 if (i2c_smbus_write_byte_data(client,
963 AMC6821_REG_CONF2, config)) {
964 dev_err(&client->dev,
965 "Configuration register write error, aborting.\n");
966 return err;
967 }
968
969 config = i2c_smbus_read_byte_data(client, AMC6821_REG_CONF1);
970
971 if (config < 0) {
972 dev_err(&client->dev,
973 "Error reading configuration register, aborting.\n");
974 return err;
975 }
976
977 config &= ~AMC6821_CONF1_THERMOVIE;
978 config &= ~AMC6821_CONF1_FANIE;
979 config |= AMC6821_CONF1_START;
980 if (pwminv)
981 config |= AMC6821_CONF1_PWMINV;
982 else
983 config &= ~AMC6821_CONF1_PWMINV;
984
985 if (i2c_smbus_write_byte_data(
986 client, AMC6821_REG_CONF1, config)) {
987 dev_err(&client->dev,
988 "Configuration register write error, aborting.\n");
989 return err;
990 }
991 }
992 return 0;
993}
994
995
996static struct amc6821_data *amc6821_update_device(struct device *dev)
997{
998 struct i2c_client *client = to_i2c_client(dev);
999 struct amc6821_data *data = i2c_get_clientdata(client);
1000 int timeout = HZ;
1001 u8 reg;
1002 int i;
1003
1004 mutex_lock(&data->update_lock);
1005
1006 if (time_after(jiffies, data->last_updated + timeout) ||
1007 !data->valid) {
1008
1009 for (i = 0; i < TEMP_IDX_LEN; i++)
1010 data->temp[i] = i2c_smbus_read_byte_data(client,
1011 temp_reg[i]);
1012
1013 data->stat1 = i2c_smbus_read_byte_data(client,
1014 AMC6821_REG_STAT1);
1015 data->stat2 = i2c_smbus_read_byte_data(client,
1016 AMC6821_REG_STAT2);
1017
1018 data->pwm1 = i2c_smbus_read_byte_data(client,
1019 AMC6821_REG_DCY);
1020 for (i = 0; i < FAN1_IDX_LEN; i++) {
1021 data->fan[i] = i2c_smbus_read_byte_data(
1022 client,
1023 fan_reg_low[i]);
1024 data->fan[i] += i2c_smbus_read_byte_data(
1025 client,
1026 fan_reg_hi[i]) << 8;
1027 }
1028 data->fan1_div = i2c_smbus_read_byte_data(client,
1029 AMC6821_REG_CONF4);
1030 data->fan1_div = data->fan1_div & AMC6821_CONF4_PSPR ? 4 : 2;
1031
1032 data->pwm1_auto_point_pwm[0] = 0;
1033 data->pwm1_auto_point_pwm[2] = 255;
1034 data->pwm1_auto_point_pwm[1] = i2c_smbus_read_byte_data(client,
1035 AMC6821_REG_DCY_LOW_TEMP);
1036
1037 data->temp1_auto_point_temp[0] =
1038 i2c_smbus_read_byte_data(client,
1039 AMC6821_REG_PSV_TEMP);
1040 data->temp2_auto_point_temp[0] =
1041 data->temp1_auto_point_temp[0];
1042 reg = i2c_smbus_read_byte_data(client,
1043 AMC6821_REG_LTEMP_FAN_CTRL);
1044 data->temp1_auto_point_temp[1] = (reg & 0xF8) >> 1;
1045 reg &= 0x07;
1046 reg = 0x20 >> reg;
1047 if (reg > 0)
1048 data->temp1_auto_point_temp[2] =
1049 data->temp1_auto_point_temp[1] +
1050 (data->pwm1_auto_point_pwm[2] -
1051 data->pwm1_auto_point_pwm[1]) / reg;
1052 else
1053 data->temp1_auto_point_temp[2] = 255;
1054
1055 reg = i2c_smbus_read_byte_data(client,
1056 AMC6821_REG_RTEMP_FAN_CTRL);
1057 data->temp2_auto_point_temp[1] = (reg & 0xF8) >> 1;
1058 reg &= 0x07;
1059 reg = 0x20 >> reg;
1060 if (reg > 0)
1061 data->temp2_auto_point_temp[2] =
1062 data->temp2_auto_point_temp[1] +
1063 (data->pwm1_auto_point_pwm[2] -
1064 data->pwm1_auto_point_pwm[1]) / reg;
1065 else
1066 data->temp2_auto_point_temp[2] = 255;
1067
1068 reg = i2c_smbus_read_byte_data(client, AMC6821_REG_CONF1);
1069 reg = (reg >> 5) & 0x3;
1070 switch (reg) {
1071 case 0: /*open loop: software sets pwm1*/
1072 data->pwm1_auto_channels_temp = 0;
1073 data->pwm1_enable = 1;
1074 break;
1075 case 2: /*closed loop: remote T (temp2)*/
1076 data->pwm1_auto_channels_temp = 2;
1077 data->pwm1_enable = 2;
1078 break;
1079 case 3: /*closed loop: local and remote T (temp2)*/
1080 data->pwm1_auto_channels_temp = 3;
1081 data->pwm1_enable = 3;
1082 break;
1083 case 1: /*semi-open loop: software sets rpm, chip controls pwm1,
1084 *currently not implemented
1085 */
1086 data->pwm1_auto_channels_temp = 0;
1087 data->pwm1_enable = 0;
1088 break;
1089 }
1090
1091 data->last_updated = jiffies;
1092 data->valid = 1;
1093 }
1094 mutex_unlock(&data->update_lock);
1095 return data;
1096}
1097
1098
1099static int __init amc6821_init(void)
1100{
1101 return i2c_add_driver(&amc6821_driver);
1102}
1103
1104static void __exit amc6821_exit(void)
1105{
1106 i2c_del_driver(&amc6821_driver);
1107}
1108
1109module_init(amc6821_init);
1110module_exit(amc6821_exit);
1111
1112
1113MODULE_LICENSE("GPL");
1114MODULE_AUTHOR("T. Mertelj <tomaz.mertelj@guest.arnes.si>");
1115MODULE_DESCRIPTION("Texas Instruments amc6821 hwmon driver");
diff --git a/drivers/hwmon/asus_atk0110.c b/drivers/hwmon/asus_atk0110.c
index 5a3ee00c0e7d..028284f544e3 100644
--- a/drivers/hwmon/asus_atk0110.c
+++ b/drivers/hwmon/asus_atk0110.c
@@ -5,6 +5,7 @@
5 * See COPYING in the top level directory of the kernel tree. 5 * See COPYING in the top level directory of the kernel tree.
6 */ 6 */
7 7
8#include <linux/debugfs.h>
8#include <linux/kernel.h> 9#include <linux/kernel.h>
9#include <linux/hwmon.h> 10#include <linux/hwmon.h>
10#include <linux/list.h> 11#include <linux/list.h>
@@ -101,6 +102,11 @@ struct atk_data {
101 int temperature_count; 102 int temperature_count;
102 int fan_count; 103 int fan_count;
103 struct list_head sensor_list; 104 struct list_head sensor_list;
105
106 struct {
107 struct dentry *root;
108 u32 id;
109 } debugfs;
104}; 110};
105 111
106 112
@@ -624,6 +630,187 @@ static int atk_read_value(struct atk_sensor_data *sensor, u64 *value)
624 return err; 630 return err;
625} 631}
626 632
633#ifdef CONFIG_DEBUG_FS
634static int atk_debugfs_gitm_get(void *p, u64 *val)
635{
636 struct atk_data *data = p;
637 union acpi_object *ret;
638 struct atk_acpi_ret_buffer *buf;
639 int err = 0;
640
641 if (!data->read_handle)
642 return -ENODEV;
643
644 if (!data->debugfs.id)
645 return -EINVAL;
646
647 ret = atk_gitm(data, data->debugfs.id);
648 if (IS_ERR(ret))
649 return PTR_ERR(ret);
650
651 buf = (struct atk_acpi_ret_buffer *)ret->buffer.pointer;
652 if (buf->flags)
653 *val = buf->value;
654 else
655 err = -EIO;
656
657 return err;
658}
659
660DEFINE_SIMPLE_ATTRIBUTE(atk_debugfs_gitm,
661 atk_debugfs_gitm_get,
662 NULL,
663 "0x%08llx\n")
664
665static int atk_acpi_print(char *buf, size_t sz, union acpi_object *obj)
666{
667 int ret = 0;
668
669 switch (obj->type) {
670 case ACPI_TYPE_INTEGER:
671 ret = snprintf(buf, sz, "0x%08llx\n", obj->integer.value);
672 break;
673 case ACPI_TYPE_STRING:
674 ret = snprintf(buf, sz, "%s\n", obj->string.pointer);
675 break;
676 }
677
678 return ret;
679}
680
681static void atk_pack_print(char *buf, size_t sz, union acpi_object *pack)
682{
683 int ret;
684 int i;
685
686 for (i = 0; i < pack->package.count; i++) {
687 union acpi_object *obj = &pack->package.elements[i];
688
689 ret = atk_acpi_print(buf, sz, obj);
690 if (ret >= sz)
691 break;
692 buf += ret;
693 sz -= ret;
694 }
695}
696
697static int atk_debugfs_ggrp_open(struct inode *inode, struct file *file)
698{
699 struct atk_data *data = inode->i_private;
700 char *buf = NULL;
701 union acpi_object *ret;
702 u8 cls;
703 int i;
704
705 if (!data->enumerate_handle)
706 return -ENODEV;
707 if (!data->debugfs.id)
708 return -EINVAL;
709
710 cls = (data->debugfs.id & 0xff000000) >> 24;
711 ret = atk_ggrp(data, cls);
712 if (IS_ERR(ret))
713 return PTR_ERR(ret);
714
715 for (i = 0; i < ret->package.count; i++) {
716 union acpi_object *pack = &ret->package.elements[i];
717 union acpi_object *id;
718
719 if (pack->type != ACPI_TYPE_PACKAGE)
720 continue;
721 if (!pack->package.count)
722 continue;
723 id = &pack->package.elements[0];
724 if (id->integer.value == data->debugfs.id) {
725 /* Print the package */
726 buf = kzalloc(512, GFP_KERNEL);
727 if (!buf) {
728 ACPI_FREE(ret);
729 return -ENOMEM;
730 }
731 atk_pack_print(buf, 512, pack);
732 break;
733 }
734 }
735 ACPI_FREE(ret);
736
737 if (!buf)
738 return -EINVAL;
739
740 file->private_data = buf;
741
742 return nonseekable_open(inode, file);
743}
744
745static ssize_t atk_debugfs_ggrp_read(struct file *file, char __user *buf,
746 size_t count, loff_t *pos)
747{
748 char *str = file->private_data;
749 size_t len = strlen(str);
750
751 return simple_read_from_buffer(buf, count, pos, str, len);
752}
753
754static int atk_debugfs_ggrp_release(struct inode *inode, struct file *file)
755{
756 kfree(file->private_data);
757 return 0;
758}
759
760static const struct file_operations atk_debugfs_ggrp_fops = {
761 .read = atk_debugfs_ggrp_read,
762 .open = atk_debugfs_ggrp_open,
763 .release = atk_debugfs_ggrp_release,
764};
765
766static void atk_debugfs_init(struct atk_data *data)
767{
768 struct dentry *d;
769 struct dentry *f;
770
771 data->debugfs.id = 0;
772
773 d = debugfs_create_dir("asus_atk0110", NULL);
774 if (!d || IS_ERR(d))
775 return;
776
777 f = debugfs_create_x32("id", S_IRUSR | S_IWUSR, d, &data->debugfs.id);
778 if (!f || IS_ERR(f))
779 goto cleanup;
780
781 f = debugfs_create_file("gitm", S_IRUSR, d, data,
782 &atk_debugfs_gitm);
783 if (!f || IS_ERR(f))
784 goto cleanup;
785
786 f = debugfs_create_file("ggrp", S_IRUSR, d, data,
787 &atk_debugfs_ggrp_fops);
788 if (!f || IS_ERR(f))
789 goto cleanup;
790
791 data->debugfs.root = d;
792
793 return;
794cleanup:
795 debugfs_remove_recursive(d);
796}
797
798static void atk_debugfs_cleanup(struct atk_data *data)
799{
800 debugfs_remove_recursive(data->debugfs.root);
801}
802
803#else /* CONFIG_DEBUG_FS */
804
805static void atk_debugfs_init(struct atk_data *data)
806{
807}
808
809static void atk_debugfs_cleanup(struct atk_data *data)
810{
811}
812#endif
813
627static int atk_add_sensor(struct atk_data *data, union acpi_object *obj) 814static int atk_add_sensor(struct atk_data *data, union acpi_object *obj)
628{ 815{
629 struct device *dev = &data->acpi_dev->dev; 816 struct device *dev = &data->acpi_dev->dev;
@@ -1047,76 +1234,75 @@ remove:
1047 return err; 1234 return err;
1048} 1235}
1049 1236
1050static int atk_check_old_if(struct atk_data *data) 1237static int atk_probe_if(struct atk_data *data)
1051{ 1238{
1052 struct device *dev = &data->acpi_dev->dev; 1239 struct device *dev = &data->acpi_dev->dev;
1053 acpi_handle ret; 1240 acpi_handle ret;
1054 acpi_status status; 1241 acpi_status status;
1242 int err = 0;
1055 1243
1056 /* RTMP: read temperature */ 1244 /* RTMP: read temperature */
1057 status = acpi_get_handle(data->atk_handle, METHOD_OLD_READ_TMP, &ret); 1245 status = acpi_get_handle(data->atk_handle, METHOD_OLD_READ_TMP, &ret);
1058 if (status != AE_OK) { 1246 if (ACPI_SUCCESS(status))
1247 data->rtmp_handle = ret;
1248 else
1059 dev_dbg(dev, "method " METHOD_OLD_READ_TMP " not found: %s\n", 1249 dev_dbg(dev, "method " METHOD_OLD_READ_TMP " not found: %s\n",
1060 acpi_format_exception(status)); 1250 acpi_format_exception(status));
1061 return -ENODEV;
1062 }
1063 data->rtmp_handle = ret;
1064 1251
1065 /* RVLT: read voltage */ 1252 /* RVLT: read voltage */
1066 status = acpi_get_handle(data->atk_handle, METHOD_OLD_READ_VLT, &ret); 1253 status = acpi_get_handle(data->atk_handle, METHOD_OLD_READ_VLT, &ret);
1067 if (status != AE_OK) { 1254 if (ACPI_SUCCESS(status))
1255 data->rvlt_handle = ret;
1256 else
1068 dev_dbg(dev, "method " METHOD_OLD_READ_VLT " not found: %s\n", 1257 dev_dbg(dev, "method " METHOD_OLD_READ_VLT " not found: %s\n",
1069 acpi_format_exception(status)); 1258 acpi_format_exception(status));
1070 return -ENODEV;
1071 }
1072 data->rvlt_handle = ret;
1073 1259
1074 /* RFAN: read fan status */ 1260 /* RFAN: read fan status */
1075 status = acpi_get_handle(data->atk_handle, METHOD_OLD_READ_FAN, &ret); 1261 status = acpi_get_handle(data->atk_handle, METHOD_OLD_READ_FAN, &ret);
1076 if (status != AE_OK) { 1262 if (ACPI_SUCCESS(status))
1263 data->rfan_handle = ret;
1264 else
1077 dev_dbg(dev, "method " METHOD_OLD_READ_FAN " not found: %s\n", 1265 dev_dbg(dev, "method " METHOD_OLD_READ_FAN " not found: %s\n",
1078 acpi_format_exception(status)); 1266 acpi_format_exception(status));
1079 return -ENODEV;
1080 }
1081 data->rfan_handle = ret;
1082
1083 return 0;
1084}
1085
1086static int atk_check_new_if(struct atk_data *data)
1087{
1088 struct device *dev = &data->acpi_dev->dev;
1089 acpi_handle ret;
1090 acpi_status status;
1091 1267
1092 /* Enumeration */ 1268 /* Enumeration */
1093 status = acpi_get_handle(data->atk_handle, METHOD_ENUMERATE, &ret); 1269 status = acpi_get_handle(data->atk_handle, METHOD_ENUMERATE, &ret);
1094 if (status != AE_OK) { 1270 if (ACPI_SUCCESS(status))
1271 data->enumerate_handle = ret;
1272 else
1095 dev_dbg(dev, "method " METHOD_ENUMERATE " not found: %s\n", 1273 dev_dbg(dev, "method " METHOD_ENUMERATE " not found: %s\n",
1096 acpi_format_exception(status)); 1274 acpi_format_exception(status));
1097 return -ENODEV;
1098 }
1099 data->enumerate_handle = ret;
1100 1275
1101 /* De-multiplexer (read) */ 1276 /* De-multiplexer (read) */
1102 status = acpi_get_handle(data->atk_handle, METHOD_READ, &ret); 1277 status = acpi_get_handle(data->atk_handle, METHOD_READ, &ret);
1103 if (status != AE_OK) { 1278 if (ACPI_SUCCESS(status))
1279 data->read_handle = ret;
1280 else
1104 dev_dbg(dev, "method " METHOD_READ " not found: %s\n", 1281 dev_dbg(dev, "method " METHOD_READ " not found: %s\n",
1105 acpi_format_exception(status)); 1282 acpi_format_exception(status));
1106 return -ENODEV;
1107 }
1108 data->read_handle = ret;
1109 1283
1110 /* De-multiplexer (write) */ 1284 /* De-multiplexer (write) */
1111 status = acpi_get_handle(data->atk_handle, METHOD_WRITE, &ret); 1285 status = acpi_get_handle(data->atk_handle, METHOD_WRITE, &ret);
1112 if (status != AE_OK) { 1286 if (ACPI_SUCCESS(status))
1113 dev_dbg(dev, "method " METHOD_READ " not found: %s\n", 1287 data->write_handle = ret;
1288 else
1289 dev_dbg(dev, "method " METHOD_WRITE " not found: %s\n",
1114 acpi_format_exception(status)); 1290 acpi_format_exception(status));
1115 return -ENODEV;
1116 }
1117 data->write_handle = ret;
1118 1291
1119 return 0; 1292 /* Check for hwmon methods: first check "old" style methods; note that
1293 * both may be present: in this case we stick to the old interface;
1294 * analysis of multiple DSDTs indicates that when both interfaces
1295 * are present the new one (GGRP/GITM) is not functional.
1296 */
1297 if (data->rtmp_handle && data->rvlt_handle && data->rfan_handle)
1298 data->old_interface = true;
1299 else if (data->enumerate_handle && data->read_handle &&
1300 data->write_handle)
1301 data->old_interface = false;
1302 else
1303 err = -ENODEV;
1304
1305 return err;
1120} 1306}
1121 1307
1122static int atk_add(struct acpi_device *device) 1308static int atk_add(struct acpi_device *device)
@@ -1143,40 +1329,30 @@ static int atk_add(struct acpi_device *device)
1143 &buf, ACPI_TYPE_PACKAGE); 1329 &buf, ACPI_TYPE_PACKAGE);
1144 if (ret != AE_OK) { 1330 if (ret != AE_OK) {
1145 dev_dbg(&device->dev, "atk: method MBIF not found\n"); 1331 dev_dbg(&device->dev, "atk: method MBIF not found\n");
1146 err = -ENODEV; 1332 } else {
1147 goto out; 1333 obj = buf.pointer;
1334 if (obj->package.count >= 2) {
1335 union acpi_object *id = &obj->package.elements[1];
1336 if (id->type == ACPI_TYPE_STRING)
1337 dev_dbg(&device->dev, "board ID = %s\n",
1338 id->string.pointer);
1339 }
1340 ACPI_FREE(buf.pointer);
1148 } 1341 }
1149 1342
1150 obj = buf.pointer; 1343 err = atk_probe_if(data);
1151 if (obj->package.count >= 2 && 1344 if (err) {
1152 obj->package.elements[1].type == ACPI_TYPE_STRING) { 1345 dev_err(&device->dev, "No usable hwmon interface detected\n");
1153 dev_dbg(&device->dev, "board ID = %s\n", 1346 goto out;
1154 obj->package.elements[1].string.pointer);
1155 } 1347 }
1156 ACPI_FREE(buf.pointer);
1157 1348
1158 /* Check for hwmon methods: first check "old" style methods; note that 1349 if (data->old_interface) {
1159 * both may be present: in this case we stick to the old interface;
1160 * analysis of multiple DSDTs indicates that when both interfaces
1161 * are present the new one (GGRP/GITM) is not functional.
1162 */
1163 err = atk_check_old_if(data);
1164 if (!err) {
1165 dev_dbg(&device->dev, "Using old hwmon interface\n"); 1350 dev_dbg(&device->dev, "Using old hwmon interface\n");
1166 data->old_interface = true; 1351 err = atk_enumerate_old_hwmon(data);
1167 } else { 1352 } else {
1168 err = atk_check_new_if(data);
1169 if (err)
1170 goto out;
1171
1172 dev_dbg(&device->dev, "Using new hwmon interface\n"); 1353 dev_dbg(&device->dev, "Using new hwmon interface\n");
1173 data->old_interface = false;
1174 }
1175
1176 if (data->old_interface)
1177 err = atk_enumerate_old_hwmon(data);
1178 else
1179 err = atk_enumerate_new_hwmon(data); 1354 err = atk_enumerate_new_hwmon(data);
1355 }
1180 if (err < 0) 1356 if (err < 0)
1181 goto out; 1357 goto out;
1182 if (err == 0) { 1358 if (err == 0) {
@@ -1190,6 +1366,8 @@ static int atk_add(struct acpi_device *device)
1190 if (err) 1366 if (err)
1191 goto cleanup; 1367 goto cleanup;
1192 1368
1369 atk_debugfs_init(data);
1370
1193 device->driver_data = data; 1371 device->driver_data = data;
1194 return 0; 1372 return 0;
1195cleanup: 1373cleanup:
@@ -1208,6 +1386,8 @@ static int atk_remove(struct acpi_device *device, int type)
1208 1386
1209 device->driver_data = NULL; 1387 device->driver_data = NULL;
1210 1388
1389 atk_debugfs_cleanup(data);
1390
1211 atk_remove_files(data); 1391 atk_remove_files(data);
1212 atk_free_sensors(data); 1392 atk_free_sensors(data);
1213 hwmon_device_unregister(data->hwmon_dev); 1393 hwmon_device_unregister(data->hwmon_dev);
diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c
index caef39cda8c8..2d7bceeed0bc 100644
--- a/drivers/hwmon/coretemp.c
+++ b/drivers/hwmon/coretemp.c
@@ -33,6 +33,7 @@
33#include <linux/list.h> 33#include <linux/list.h>
34#include <linux/platform_device.h> 34#include <linux/platform_device.h>
35#include <linux/cpu.h> 35#include <linux/cpu.h>
36#include <linux/pci.h>
36#include <asm/msr.h> 37#include <asm/msr.h>
37#include <asm/processor.h> 38#include <asm/processor.h>
38 39
@@ -161,6 +162,7 @@ static int __devinit adjust_tjmax(struct cpuinfo_x86 *c, u32 id, struct device *
161 int usemsr_ee = 1; 162 int usemsr_ee = 1;
162 int err; 163 int err;
163 u32 eax, edx; 164 u32 eax, edx;
165 struct pci_dev *host_bridge;
164 166
165 /* Early chips have no MSR for TjMax */ 167 /* Early chips have no MSR for TjMax */
166 168
@@ -168,11 +170,21 @@ static int __devinit adjust_tjmax(struct cpuinfo_x86 *c, u32 id, struct device *
168 usemsr_ee = 0; 170 usemsr_ee = 0;
169 } 171 }
170 172
171 /* Atoms seems to have TjMax at 90C */ 173 /* Atom CPUs */
172 174
173 if (c->x86_model == 0x1c) { 175 if (c->x86_model == 0x1c) {
174 usemsr_ee = 0; 176 usemsr_ee = 0;
175 tjmax = 90000; 177
178 host_bridge = pci_get_bus_and_slot(0, PCI_DEVFN(0, 0));
179
180 if (host_bridge && host_bridge->vendor == PCI_VENDOR_ID_INTEL
181 && (host_bridge->device == 0xa000 /* NM10 based nettop */
182 || host_bridge->device == 0xa010)) /* NM10 based netbook */
183 tjmax = 100000;
184 else
185 tjmax = 90000;
186
187 pci_dev_put(host_bridge);
176 } 188 }
177 189
178 if ((c->x86_model > 0xe) && (usemsr_ee)) { 190 if ((c->x86_model > 0xe) && (usemsr_ee)) {
diff --git a/drivers/hwmon/fschmd.c b/drivers/hwmon/fschmd.c
index bd0fc67e804b..fa0728232e71 100644
--- a/drivers/hwmon/fschmd.c
+++ b/drivers/hwmon/fschmd.c
@@ -768,6 +768,7 @@ leave:
768static int watchdog_open(struct inode *inode, struct file *filp) 768static int watchdog_open(struct inode *inode, struct file *filp)
769{ 769{
770 struct fschmd_data *pos, *data = NULL; 770 struct fschmd_data *pos, *data = NULL;
771 int watchdog_is_open;
771 772
772 /* We get called from drivers/char/misc.c with misc_mtx hold, and we 773 /* We get called from drivers/char/misc.c with misc_mtx hold, and we
773 call misc_register() from fschmd_probe() with watchdog_data_mutex 774 call misc_register() from fschmd_probe() with watchdog_data_mutex
@@ -782,10 +783,12 @@ static int watchdog_open(struct inode *inode, struct file *filp)
782 } 783 }
783 } 784 }
784 /* Note we can never not have found data, so we don't check for this */ 785 /* Note we can never not have found data, so we don't check for this */
785 kref_get(&data->kref); 786 watchdog_is_open = test_and_set_bit(0, &data->watchdog_is_open);
787 if (!watchdog_is_open)
788 kref_get(&data->kref);
786 mutex_unlock(&watchdog_data_mutex); 789 mutex_unlock(&watchdog_data_mutex);
787 790
788 if (test_and_set_bit(0, &data->watchdog_is_open)) 791 if (watchdog_is_open)
789 return -EBUSY; 792 return -EBUSY;
790 793
791 /* Start the watchdog */ 794 /* Start the watchdog */
diff --git a/drivers/hwmon/k10temp.c b/drivers/hwmon/k10temp.c
index d8a26d16d948..099a2138cdf6 100644
--- a/drivers/hwmon/k10temp.c
+++ b/drivers/hwmon/k10temp.c
@@ -33,6 +33,16 @@ static bool force;
33module_param(force, bool, 0444); 33module_param(force, bool, 0444);
34MODULE_PARM_DESC(force, "force loading on processors with erratum 319"); 34MODULE_PARM_DESC(force, "force loading on processors with erratum 319");
35 35
36/* CPUID function 0x80000001, ebx */
37#define CPUID_PKGTYPE_MASK 0xf0000000
38#define CPUID_PKGTYPE_F 0x00000000
39#define CPUID_PKGTYPE_AM2R2_AM3 0x10000000
40
41/* DRAM controller (PCI function 2) */
42#define REG_DCT0_CONFIG_HIGH 0x094
43#define DDR3_MODE 0x00000100
44
45/* miscellaneous (PCI function 3) */
36#define REG_HARDWARE_THERMAL_CONTROL 0x64 46#define REG_HARDWARE_THERMAL_CONTROL 0x64
37#define HTC_ENABLE 0x00000001 47#define HTC_ENABLE 0x00000001
38 48
@@ -85,13 +95,28 @@ static SENSOR_DEVICE_ATTR(temp1_crit, S_IRUGO, show_temp_crit, NULL, 0);
85static SENSOR_DEVICE_ATTR(temp1_crit_hyst, S_IRUGO, show_temp_crit, NULL, 1); 95static SENSOR_DEVICE_ATTR(temp1_crit_hyst, S_IRUGO, show_temp_crit, NULL, 1);
86static DEVICE_ATTR(name, S_IRUGO, show_name, NULL); 96static DEVICE_ATTR(name, S_IRUGO, show_name, NULL);
87 97
88static bool __devinit has_erratum_319(void) 98static bool __devinit has_erratum_319(struct pci_dev *pdev)
89{ 99{
100 u32 pkg_type, reg_dram_cfg;
101
102 if (boot_cpu_data.x86 != 0x10)
103 return false;
104
90 /* 105 /*
91 * Erratum 319: The thermal sensor of older Family 10h processors 106 * Erratum 319: The thermal sensor of Socket F/AM2+ processors
92 * (B steppings) may be unreliable. 107 * may be unreliable.
93 */ 108 */
94 return boot_cpu_data.x86 == 0x10 && boot_cpu_data.x86_model <= 2; 109 pkg_type = cpuid_ebx(0x80000001) & CPUID_PKGTYPE_MASK;
110 if (pkg_type == CPUID_PKGTYPE_F)
111 return true;
112 if (pkg_type != CPUID_PKGTYPE_AM2R2_AM3)
113 return false;
114
115 /* Differentiate between AM2+ (bad) and AM3 (good) */
116 pci_bus_read_config_dword(pdev->bus,
117 PCI_DEVFN(PCI_SLOT(pdev->devfn), 2),
118 REG_DCT0_CONFIG_HIGH, &reg_dram_cfg);
119 return !(reg_dram_cfg & DDR3_MODE);
95} 120}
96 121
97static int __devinit k10temp_probe(struct pci_dev *pdev, 122static int __devinit k10temp_probe(struct pci_dev *pdev,
@@ -99,9 +124,10 @@ static int __devinit k10temp_probe(struct pci_dev *pdev,
99{ 124{
100 struct device *hwmon_dev; 125 struct device *hwmon_dev;
101 u32 reg_caps, reg_htc; 126 u32 reg_caps, reg_htc;
127 int unreliable = has_erratum_319(pdev);
102 int err; 128 int err;
103 129
104 if (has_erratum_319() && !force) { 130 if (unreliable && !force) {
105 dev_err(&pdev->dev, 131 dev_err(&pdev->dev,
106 "unreliable CPU thermal sensor; monitoring disabled\n"); 132 "unreliable CPU thermal sensor; monitoring disabled\n");
107 err = -ENODEV; 133 err = -ENODEV;
@@ -139,7 +165,7 @@ static int __devinit k10temp_probe(struct pci_dev *pdev,
139 } 165 }
140 dev_set_drvdata(&pdev->dev, hwmon_dev); 166 dev_set_drvdata(&pdev->dev, hwmon_dev);
141 167
142 if (has_erratum_319() && force) 168 if (unreliable && force)
143 dev_warn(&pdev->dev, 169 dev_warn(&pdev->dev,
144 "unreliable CPU thermal sensor; check erratum 319\n"); 170 "unreliable CPU thermal sensor; check erratum 319\n");
145 return 0; 171 return 0;
@@ -169,7 +195,7 @@ static void __devexit k10temp_remove(struct pci_dev *pdev)
169 dev_set_drvdata(&pdev->dev, NULL); 195 dev_set_drvdata(&pdev->dev, NULL);
170} 196}
171 197
172static struct pci_device_id k10temp_id_table[] = { 198static const struct pci_device_id k10temp_id_table[] = {
173 { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_10H_NB_MISC) }, 199 { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_10H_NB_MISC) },
174 { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_11H_NB_MISC) }, 200 { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_11H_NB_MISC) },
175 {} 201 {}
diff --git a/drivers/hwmon/k8temp.c b/drivers/hwmon/k8temp.c
index 1fe995111841..0ceb6d6200a3 100644
--- a/drivers/hwmon/k8temp.c
+++ b/drivers/hwmon/k8temp.c
@@ -136,7 +136,7 @@ static SENSOR_DEVICE_ATTR_2(temp3_input, S_IRUGO, show_temp, NULL, 1, 0);
136static SENSOR_DEVICE_ATTR_2(temp4_input, S_IRUGO, show_temp, NULL, 1, 1); 136static SENSOR_DEVICE_ATTR_2(temp4_input, S_IRUGO, show_temp, NULL, 1, 1);
137static DEVICE_ATTR(name, S_IRUGO, show_name, NULL); 137static DEVICE_ATTR(name, S_IRUGO, show_name, NULL);
138 138
139static struct pci_device_id k8temp_ids[] = { 139static const struct pci_device_id k8temp_ids[] = {
140 { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_K8_NB_MISC) }, 140 { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_K8_NB_MISC) },
141 { 0 }, 141 { 0 },
142}; 142};
diff --git a/drivers/hwmon/lm78.c b/drivers/hwmon/lm78.c
index cadcbd90ff3b..72ff2c4e757d 100644
--- a/drivers/hwmon/lm78.c
+++ b/drivers/hwmon/lm78.c
@@ -851,17 +851,16 @@ static struct lm78_data *lm78_update_device(struct device *dev)
851static int __init lm78_isa_found(unsigned short address) 851static int __init lm78_isa_found(unsigned short address)
852{ 852{
853 int val, save, found = 0; 853 int val, save, found = 0;
854 854 int port;
855 /* We have to request the region in two parts because some 855
856 boards declare base+4 to base+7 as a PNP device */ 856 /* Some boards declare base+0 to base+7 as a PNP device, some base+4
857 if (!request_region(address, 4, "lm78")) { 857 * to base+7 and some base+5 to base+6. So we better request each port
858 pr_debug("lm78: Failed to request low part of region\n"); 858 * individually for the probing phase. */
859 return 0; 859 for (port = address; port < address + LM78_EXTENT; port++) {
860 } 860 if (!request_region(port, 1, "lm78")) {
861 if (!request_region(address + 4, 4, "lm78")) { 861 pr_debug("lm78: Failed to request port 0x%x\n", port);
862 pr_debug("lm78: Failed to request high part of region\n"); 862 goto release;
863 release_region(address, 4); 863 }
864 return 0;
865 } 864 }
866 865
867#define REALLY_SLOW_IO 866#define REALLY_SLOW_IO
@@ -925,8 +924,8 @@ static int __init lm78_isa_found(unsigned short address)
925 val & 0x80 ? "LM79" : "LM78", (int)address); 924 val & 0x80 ? "LM79" : "LM78", (int)address);
926 925
927 release: 926 release:
928 release_region(address + 4, 4); 927 for (port--; port >= address; port--)
929 release_region(address, 4); 928 release_region(port, 1);
930 return found; 929 return found;
931} 930}
932 931
diff --git a/drivers/hwmon/sis5595.c b/drivers/hwmon/sis5595.c
index 12f2e7086560..79c2931e3008 100644
--- a/drivers/hwmon/sis5595.c
+++ b/drivers/hwmon/sis5595.c
@@ -697,7 +697,7 @@ static struct sis5595_data *sis5595_update_device(struct device *dev)
697 return data; 697 return data;
698} 698}
699 699
700static struct pci_device_id sis5595_pci_ids[] = { 700static const struct pci_device_id sis5595_pci_ids[] = {
701 { PCI_DEVICE(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_503) }, 701 { PCI_DEVICE(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_503) },
702 { 0, } 702 { 0, }
703}; 703};
diff --git a/drivers/hwmon/smsc47m1.c b/drivers/hwmon/smsc47m1.c
index 9ca97818bd4b..8fa462f2b570 100644
--- a/drivers/hwmon/smsc47m1.c
+++ b/drivers/hwmon/smsc47m1.c
@@ -488,7 +488,7 @@ static int __init smsc47m1_find(unsigned short *addr,
488} 488}
489 489
490/* Restore device to its initial state */ 490/* Restore device to its initial state */
491static void __init smsc47m1_restore(const struct smsc47m1_sio_data *sio_data) 491static void smsc47m1_restore(const struct smsc47m1_sio_data *sio_data)
492{ 492{
493 if ((sio_data->activate & 0x01) == 0) { 493 if ((sio_data->activate & 0x01) == 0) {
494 superio_enter(); 494 superio_enter();
diff --git a/drivers/hwmon/via686a.c b/drivers/hwmon/via686a.c
index 39e82a492f26..f397ce7ad598 100644
--- a/drivers/hwmon/via686a.c
+++ b/drivers/hwmon/via686a.c
@@ -767,7 +767,7 @@ static struct via686a_data *via686a_update_device(struct device *dev)
767 return data; 767 return data;
768} 768}
769 769
770static struct pci_device_id via686a_pci_ids[] = { 770static const struct pci_device_id via686a_pci_ids[] = {
771 { PCI_DEVICE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4) }, 771 { PCI_DEVICE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4) },
772 { 0, } 772 { 0, }
773}; 773};
diff --git a/drivers/hwmon/vt8231.c b/drivers/hwmon/vt8231.c
index 470a1226ba2b..d47b4c9949c2 100644
--- a/drivers/hwmon/vt8231.c
+++ b/drivers/hwmon/vt8231.c
@@ -697,7 +697,7 @@ static struct platform_driver vt8231_driver = {
697 .remove = __devexit_p(vt8231_remove), 697 .remove = __devexit_p(vt8231_remove),
698}; 698};
699 699
700static struct pci_device_id vt8231_pci_ids[] = { 700static const struct pci_device_id vt8231_pci_ids[] = {
701 { PCI_DEVICE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8231_4) }, 701 { PCI_DEVICE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8231_4) },
702 { 0, } 702 { 0, }
703}; 703};
diff --git a/drivers/hwmon/w83781d.c b/drivers/hwmon/w83781d.c
index 05f9225b6f94..32d4adee73db 100644
--- a/drivers/hwmon/w83781d.c
+++ b/drivers/hwmon/w83781d.c
@@ -1793,17 +1793,17 @@ static int __init
1793w83781d_isa_found(unsigned short address) 1793w83781d_isa_found(unsigned short address)
1794{ 1794{
1795 int val, save, found = 0; 1795 int val, save, found = 0;
1796 1796 int port;
1797 /* We have to request the region in two parts because some 1797
1798 boards declare base+4 to base+7 as a PNP device */ 1798 /* Some boards declare base+0 to base+7 as a PNP device, some base+4
1799 if (!request_region(address, 4, "w83781d")) { 1799 * to base+7 and some base+5 to base+6. So we better request each port
1800 pr_debug("w83781d: Failed to request low part of region\n"); 1800 * individually for the probing phase. */
1801 return 0; 1801 for (port = address; port < address + W83781D_EXTENT; port++) {
1802 } 1802 if (!request_region(port, 1, "w83781d")) {
1803 if (!request_region(address + 4, 4, "w83781d")) { 1803 pr_debug("w83781d: Failed to request port 0x%x\n",
1804 pr_debug("w83781d: Failed to request high part of region\n"); 1804 port);
1805 release_region(address, 4); 1805 goto release;
1806 return 0; 1806 }
1807 } 1807 }
1808 1808
1809#define REALLY_SLOW_IO 1809#define REALLY_SLOW_IO
@@ -1877,8 +1877,8 @@ w83781d_isa_found(unsigned short address)
1877 val == 0x30 ? "W83782D" : "W83781D", (int)address); 1877 val == 0x30 ? "W83782D" : "W83781D", (int)address);
1878 1878
1879 release: 1879 release:
1880 release_region(address + 4, 4); 1880 for (port--; port >= address; port--)
1881 release_region(address, 4); 1881 release_region(port, 1);
1882 return found; 1882 return found;
1883} 1883}
1884 1884
diff --git a/drivers/i2c/busses/i2c-ali1563.c b/drivers/i2c/busses/i2c-ali1563.c
index f70f46582c6c..4687af40dd50 100644
--- a/drivers/i2c/busses/i2c-ali1563.c
+++ b/drivers/i2c/busses/i2c-ali1563.c
@@ -87,9 +87,9 @@ static int ali1563_transaction(struct i2c_adapter * a, int size)
87 outb_p(inb_p(SMB_HST_CNTL2) | HST_CNTL2_START, SMB_HST_CNTL2); 87 outb_p(inb_p(SMB_HST_CNTL2) | HST_CNTL2_START, SMB_HST_CNTL2);
88 88
89 timeout = ALI1563_MAX_TIMEOUT; 89 timeout = ALI1563_MAX_TIMEOUT;
90 do 90 do {
91 msleep(1); 91 msleep(1);
92 while (((data = inb_p(SMB_HST_STS)) & HST_STS_BUSY) && --timeout); 92 } while (((data = inb_p(SMB_HST_STS)) & HST_STS_BUSY) && --timeout);
93 93
94 dev_dbg(&a->dev, "Transaction (post): STS=%02x, CNTL1=%02x, " 94 dev_dbg(&a->dev, "Transaction (post): STS=%02x, CNTL1=%02x, "
95 "CNTL2=%02x, CMD=%02x, ADD=%02x, DAT0=%02x, DAT1=%02x\n", 95 "CNTL2=%02x, CMD=%02x, ADD=%02x, DAT0=%02x, DAT1=%02x\n",
@@ -157,9 +157,9 @@ static int ali1563_block_start(struct i2c_adapter * a)
157 outb_p(inb_p(SMB_HST_CNTL2) | HST_CNTL2_START, SMB_HST_CNTL2); 157 outb_p(inb_p(SMB_HST_CNTL2) | HST_CNTL2_START, SMB_HST_CNTL2);
158 158
159 timeout = ALI1563_MAX_TIMEOUT; 159 timeout = ALI1563_MAX_TIMEOUT;
160 do 160 do {
161 msleep(1); 161 msleep(1);
162 while (!((data = inb_p(SMB_HST_STS)) & HST_STS_DONE) && --timeout); 162 } while (!((data = inb_p(SMB_HST_STS)) & HST_STS_DONE) && --timeout);
163 163
164 dev_dbg(&a->dev, "Block (post): STS=%02x, CNTL1=%02x, " 164 dev_dbg(&a->dev, "Block (post): STS=%02x, CNTL1=%02x, "
165 "CNTL2=%02x, CMD=%02x, ADD=%02x, DAT0=%02x, DAT1=%02x\n", 165 "CNTL2=%02x, CMD=%02x, ADD=%02x, DAT0=%02x, DAT1=%02x\n",
diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
index e3654d683e15..75bf820e7ccb 100644
--- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c
@@ -226,7 +226,6 @@ static void i2c_imx_stop(struct imx_i2c_struct *i2c_imx)
226 temp = readb(i2c_imx->base + IMX_I2C_I2CR); 226 temp = readb(i2c_imx->base + IMX_I2C_I2CR);
227 temp &= ~(I2CR_MSTA | I2CR_MTX); 227 temp &= ~(I2CR_MSTA | I2CR_MTX);
228 writeb(temp, i2c_imx->base + IMX_I2C_I2CR); 228 writeb(temp, i2c_imx->base + IMX_I2C_I2CR);
229 i2c_imx->stopped = 1;
230 } 229 }
231 if (cpu_is_mx1()) { 230 if (cpu_is_mx1()) {
232 /* 231 /*
@@ -236,8 +235,10 @@ static void i2c_imx_stop(struct imx_i2c_struct *i2c_imx)
236 udelay(i2c_imx->disable_delay); 235 udelay(i2c_imx->disable_delay);
237 } 236 }
238 237
239 if (!i2c_imx->stopped) 238 if (!i2c_imx->stopped) {
240 i2c_imx_bus_busy(i2c_imx, 0); 239 i2c_imx_bus_busy(i2c_imx, 0);
240 i2c_imx->stopped = 1;
241 }
241 242
242 /* Disable I2C controller */ 243 /* Disable I2C controller */
243 writeb(0, i2c_imx->base + IMX_I2C_I2CR); 244 writeb(0, i2c_imx->base + IMX_I2C_I2CR);
@@ -496,22 +497,23 @@ static int __init i2c_imx_probe(struct platform_device *pdev)
496 } 497 }
497 498
498 res_size = resource_size(res); 499 res_size = resource_size(res);
500
501 if (!request_mem_region(res->start, res_size, DRIVER_NAME)) {
502 ret = -EBUSY;
503 goto fail0;
504 }
505
499 base = ioremap(res->start, res_size); 506 base = ioremap(res->start, res_size);
500 if (!base) { 507 if (!base) {
501 dev_err(&pdev->dev, "ioremap failed\n"); 508 dev_err(&pdev->dev, "ioremap failed\n");
502 ret = -EIO; 509 ret = -EIO;
503 goto fail0; 510 goto fail1;
504 } 511 }
505 512
506 i2c_imx = kzalloc(sizeof(struct imx_i2c_struct), GFP_KERNEL); 513 i2c_imx = kzalloc(sizeof(struct imx_i2c_struct), GFP_KERNEL);
507 if (!i2c_imx) { 514 if (!i2c_imx) {
508 dev_err(&pdev->dev, "can't allocate interface\n"); 515 dev_err(&pdev->dev, "can't allocate interface\n");
509 ret = -ENOMEM; 516 ret = -ENOMEM;
510 goto fail1;
511 }
512
513 if (!request_mem_region(res->start, res_size, DRIVER_NAME)) {
514 ret = -EBUSY;
515 goto fail2; 517 goto fail2;
516 } 518 }
517 519
@@ -582,11 +584,11 @@ fail5:
582fail4: 584fail4:
583 clk_put(i2c_imx->clk); 585 clk_put(i2c_imx->clk);
584fail3: 586fail3:
585 release_mem_region(i2c_imx->res->start, resource_size(res));
586fail2:
587 kfree(i2c_imx); 587 kfree(i2c_imx);
588fail1: 588fail2:
589 iounmap(base); 589 iounmap(base);
590fail1:
591 release_mem_region(res->start, resource_size(res));
590fail0: 592fail0:
591 if (pdata && pdata->exit) 593 if (pdata && pdata->exit)
592 pdata->exit(&pdev->dev); 594 pdata->exit(&pdev->dev);
@@ -618,8 +620,8 @@ static int __exit i2c_imx_remove(struct platform_device *pdev)
618 620
619 clk_put(i2c_imx->clk); 621 clk_put(i2c_imx->clk);
620 622
621 release_mem_region(i2c_imx->res->start, resource_size(i2c_imx->res));
622 iounmap(i2c_imx->base); 623 iounmap(i2c_imx->base);
624 release_mem_region(i2c_imx->res->start, resource_size(i2c_imx->res));
623 kfree(i2c_imx); 625 kfree(i2c_imx);
624 return 0; 626 return 0;
625} 627}
diff --git a/drivers/i2c/busses/i2c-pca-isa.c b/drivers/i2c/busses/i2c-pca-isa.c
index 0ed68e2ccd22..f7346a9bd95f 100644
--- a/drivers/i2c/busses/i2c-pca-isa.c
+++ b/drivers/i2c/busses/i2c-pca-isa.c
@@ -75,7 +75,7 @@ static int pca_isa_waitforcompletion(void *pd)
75 unsigned long timeout; 75 unsigned long timeout;
76 76
77 if (irq > -1) { 77 if (irq > -1) {
78 ret = wait_event_interruptible_timeout(pca_wait, 78 ret = wait_event_timeout(pca_wait,
79 pca_isa_readbyte(pd, I2C_PCA_CON) 79 pca_isa_readbyte(pd, I2C_PCA_CON)
80 & I2C_PCA_CON_SI, pca_isa_ops.timeout); 80 & I2C_PCA_CON_SI, pca_isa_ops.timeout);
81 } else { 81 } else {
@@ -96,7 +96,7 @@ static void pca_isa_resetchip(void *pd)
96} 96}
97 97
98static irqreturn_t pca_handler(int this_irq, void *dev_id) { 98static irqreturn_t pca_handler(int this_irq, void *dev_id) {
99 wake_up_interruptible(&pca_wait); 99 wake_up(&pca_wait);
100 return IRQ_HANDLED; 100 return IRQ_HANDLED;
101} 101}
102 102
diff --git a/drivers/i2c/busses/i2c-pca-platform.c b/drivers/i2c/busses/i2c-pca-platform.c
index c4df9d411cd5..5b2213df5ed0 100644
--- a/drivers/i2c/busses/i2c-pca-platform.c
+++ b/drivers/i2c/busses/i2c-pca-platform.c
@@ -84,7 +84,7 @@ static int i2c_pca_pf_waitforcompletion(void *pd)
84 unsigned long timeout; 84 unsigned long timeout;
85 85
86 if (i2c->irq) { 86 if (i2c->irq) {
87 ret = wait_event_interruptible_timeout(i2c->wait, 87 ret = wait_event_timeout(i2c->wait,
88 i2c->algo_data.read_byte(i2c, I2C_PCA_CON) 88 i2c->algo_data.read_byte(i2c, I2C_PCA_CON)
89 & I2C_PCA_CON_SI, i2c->adap.timeout); 89 & I2C_PCA_CON_SI, i2c->adap.timeout);
90 } else { 90 } else {
@@ -122,7 +122,7 @@ static irqreturn_t i2c_pca_pf_handler(int this_irq, void *dev_id)
122 if ((i2c->algo_data.read_byte(i2c, I2C_PCA_CON) & I2C_PCA_CON_SI) == 0) 122 if ((i2c->algo_data.read_byte(i2c, I2C_PCA_CON) & I2C_PCA_CON_SI) == 0)
123 return IRQ_NONE; 123 return IRQ_NONE;
124 124
125 wake_up_interruptible(&i2c->wait); 125 wake_up(&i2c->wait);
126 126
127 return IRQ_HANDLED; 127 return IRQ_HANDLED;
128} 128}
diff --git a/drivers/i2c/busses/i2c-piix4.c b/drivers/i2c/busses/i2c-piix4.c
index 1e245e9cad31..e56e4b6823ca 100644
--- a/drivers/i2c/busses/i2c-piix4.c
+++ b/drivers/i2c/busses/i2c-piix4.c
@@ -324,12 +324,12 @@ static int piix4_transaction(void)
324 else 324 else
325 msleep(1); 325 msleep(1);
326 326
327 while ((timeout++ < MAX_TIMEOUT) && 327 while ((++timeout < MAX_TIMEOUT) &&
328 ((temp = inb_p(SMBHSTSTS)) & 0x01)) 328 ((temp = inb_p(SMBHSTSTS)) & 0x01))
329 msleep(1); 329 msleep(1);
330 330
331 /* If the SMBus is still busy, we give up */ 331 /* If the SMBus is still busy, we give up */
332 if (timeout >= MAX_TIMEOUT) { 332 if (timeout == MAX_TIMEOUT) {
333 dev_err(&piix4_adapter.dev, "SMBus Timeout!\n"); 333 dev_err(&piix4_adapter.dev, "SMBus Timeout!\n");
334 result = -ETIMEDOUT; 334 result = -ETIMEDOUT;
335 } 335 }
diff --git a/drivers/i2c/busses/i2c-tiny-usb.c b/drivers/i2c/busses/i2c-tiny-usb.c
index b1c050ff311d..e29b6d5ba8ef 100644
--- a/drivers/i2c/busses/i2c-tiny-usb.c
+++ b/drivers/i2c/busses/i2c-tiny-usb.c
@@ -13,6 +13,7 @@
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/errno.h> 14#include <linux/errno.h>
15#include <linux/module.h> 15#include <linux/module.h>
16#include <linux/types.h>
16 17
17/* include interfaces to usb layer */ 18/* include interfaces to usb layer */
18#include <linux/usb.h> 19#include <linux/usb.h>
@@ -31,8 +32,8 @@
31#define CMD_I2C_IO_END (1<<1) 32#define CMD_I2C_IO_END (1<<1)
32 33
33/* i2c bit delay, default is 10us -> 100kHz */ 34/* i2c bit delay, default is 10us -> 100kHz */
34static int delay = 10; 35static unsigned short delay = 10;
35module_param(delay, int, 0); 36module_param(delay, ushort, 0);
36MODULE_PARM_DESC(delay, "bit delay in microseconds, " 37MODULE_PARM_DESC(delay, "bit delay in microseconds, "
37 "e.g. 10 for 100kHz (default is 100kHz)"); 38 "e.g. 10 for 100kHz (default is 100kHz)");
38 39
@@ -109,7 +110,7 @@ static int usb_xfer(struct i2c_adapter *adapter, struct i2c_msg *msgs, int num)
109 110
110static u32 usb_func(struct i2c_adapter *adapter) 111static u32 usb_func(struct i2c_adapter *adapter)
111{ 112{
112 u32 func; 113 __le32 func;
113 114
114 /* get functionality from adapter */ 115 /* get functionality from adapter */
115 if (usb_read(adapter, CMD_GET_FUNC, 0, 0, &func, sizeof(func)) != 116 if (usb_read(adapter, CMD_GET_FUNC, 0, 0, &func, sizeof(func)) !=
@@ -118,7 +119,7 @@ static u32 usb_func(struct i2c_adapter *adapter)
118 return 0; 119 return 0;
119 } 120 }
120 121
121 return func; 122 return le32_to_cpu(func);
122} 123}
123 124
124/* This is the actual algorithm we define */ 125/* This is the actual algorithm we define */
@@ -216,8 +217,7 @@ static int i2c_tiny_usb_probe(struct usb_interface *interface,
216 "i2c-tiny-usb at bus %03d device %03d", 217 "i2c-tiny-usb at bus %03d device %03d",
217 dev->usb_dev->bus->busnum, dev->usb_dev->devnum); 218 dev->usb_dev->bus->busnum, dev->usb_dev->devnum);
218 219
219 if (usb_write(&dev->adapter, CMD_SET_DELAY, 220 if (usb_write(&dev->adapter, CMD_SET_DELAY, delay, 0, NULL, 0) != 0) {
220 cpu_to_le16(delay), 0, NULL, 0) != 0) {
221 dev_err(&dev->adapter.dev, 221 dev_err(&dev->adapter.dev,
222 "failure setting delay to %dus\n", delay); 222 "failure setting delay to %dus\n", delay);
223 retval = -EIO; 223 retval = -EIO;
diff --git a/drivers/i2c/busses/i2c-viapro.c b/drivers/i2c/busses/i2c-viapro.c
index e4b1543015af..a84a909e1234 100644
--- a/drivers/i2c/busses/i2c-viapro.c
+++ b/drivers/i2c/busses/i2c-viapro.c
@@ -165,10 +165,10 @@ static int vt596_transaction(u8 size)
165 do { 165 do {
166 msleep(1); 166 msleep(1);
167 temp = inb_p(SMBHSTSTS); 167 temp = inb_p(SMBHSTSTS);
168 } while ((temp & 0x01) && (timeout++ < MAX_TIMEOUT)); 168 } while ((temp & 0x01) && (++timeout < MAX_TIMEOUT));
169 169
170 /* If the SMBus is still busy, we give up */ 170 /* If the SMBus is still busy, we give up */
171 if (timeout >= MAX_TIMEOUT) { 171 if (timeout == MAX_TIMEOUT) {
172 result = -ETIMEDOUT; 172 result = -ETIMEDOUT;
173 dev_err(&vt596_adapter.dev, "SMBus timeout!\n"); 173 dev_err(&vt596_adapter.dev, "SMBus timeout!\n");
174 } 174 }
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 0ac2f90ab840..10be7b5fbe97 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -248,7 +248,7 @@ static const struct attribute_group *i2c_dev_attr_groups[] = {
248 NULL 248 NULL
249}; 249};
250 250
251const static struct dev_pm_ops i2c_device_pm_ops = { 251static const struct dev_pm_ops i2c_device_pm_ops = {
252 .suspend = i2c_device_pm_suspend, 252 .suspend = i2c_device_pm_suspend,
253 .resume = i2c_device_pm_resume, 253 .resume = i2c_device_pm_resume,
254}; 254};
@@ -843,6 +843,9 @@ int i2c_del_adapter(struct i2c_adapter *adap)
843 adap->dev.parent); 843 adap->dev.parent);
844#endif 844#endif
845 845
846 /* device name is gone after device_unregister */
847 dev_dbg(&adap->dev, "adapter [%s] unregistered\n", adap->name);
848
846 /* clean up the sysfs representation */ 849 /* clean up the sysfs representation */
847 init_completion(&adap->dev_released); 850 init_completion(&adap->dev_released);
848 device_unregister(&adap->dev); 851 device_unregister(&adap->dev);
@@ -855,8 +858,6 @@ int i2c_del_adapter(struct i2c_adapter *adap)
855 idr_remove(&i2c_adapter_idr, adap->nr); 858 idr_remove(&i2c_adapter_idr, adap->nr);
856 mutex_unlock(&core_lock); 859 mutex_unlock(&core_lock);
857 860
858 dev_dbg(&adap->dev, "adapter [%s] unregistered\n", adap->name);
859
860 /* Clear the device structure in case this adapter is ever going to be 861 /* Clear the device structure in case this adapter is ever going to be
861 added again */ 862 added again */
862 memset(&adap->dev, 0, sizeof(adap->dev)); 863 memset(&adap->dev, 0, sizeof(adap->dev));
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index fbdd73106000..875e34e0b235 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -2083,7 +2083,7 @@ static int cma_get_port(struct rdma_id_private *id_priv)
2083static int cma_check_linklocal(struct rdma_dev_addr *dev_addr, 2083static int cma_check_linklocal(struct rdma_dev_addr *dev_addr,
2084 struct sockaddr *addr) 2084 struct sockaddr *addr)
2085{ 2085{
2086#if defined(CONFIG_IPv6) || defined(CONFIG_IPV6_MODULE) 2086#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
2087 struct sockaddr_in6 *sin6; 2087 struct sockaddr_in6 *sin6;
2088 2088
2089 if (addr->sa_family != AF_INET6) 2089 if (addr->sa_family != AF_INET6)
@@ -2115,9 +2115,7 @@ int rdma_bind_addr(struct rdma_cm_id *id, struct sockaddr *addr)
2115 if (ret) 2115 if (ret)
2116 goto err1; 2116 goto err1;
2117 2117
2118 if (cma_loopback_addr(addr)) { 2118 if (!cma_any_addr(addr)) {
2119 ret = cma_bind_loopback(id_priv);
2120 } else if (!cma_zero_addr(addr)) {
2121 ret = rdma_translate_ip(addr, &id->route.addr.dev_addr); 2119 ret = rdma_translate_ip(addr, &id->route.addr.dev_addr);
2122 if (ret) 2120 if (ret)
2123 goto err1; 2121 goto err1;
diff --git a/drivers/infiniband/hw/ipath/ipath_fs.c b/drivers/infiniband/hw/ipath/ipath_fs.c
index b3684060465e..100da8542bba 100644
--- a/drivers/infiniband/hw/ipath/ipath_fs.c
+++ b/drivers/infiniband/hw/ipath/ipath_fs.c
@@ -346,10 +346,8 @@ static int ipathfs_fill_super(struct super_block *sb, void *data,
346 list_for_each_entry_safe(dd, tmp, &ipath_dev_list, ipath_list) { 346 list_for_each_entry_safe(dd, tmp, &ipath_dev_list, ipath_list) {
347 spin_unlock_irqrestore(&ipath_devs_lock, flags); 347 spin_unlock_irqrestore(&ipath_devs_lock, flags);
348 ret = create_device_files(sb, dd); 348 ret = create_device_files(sb, dd);
349 if (ret) { 349 if (ret)
350 deactivate_locked_super(sb);
351 goto bail; 350 goto bail;
352 }
353 spin_lock_irqsave(&ipath_devs_lock, flags); 351 spin_lock_irqsave(&ipath_devs_lock, flags);
354 } 352 }
355 353
diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index 989555cee883..2a97c964b9ef 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -1752,7 +1752,7 @@ int mlx4_ib_post_recv(struct ib_qp *ibqp, struct ib_recv_wr *wr,
1752 ind = qp->rq.head & (qp->rq.wqe_cnt - 1); 1752 ind = qp->rq.head & (qp->rq.wqe_cnt - 1);
1753 1753
1754 for (nreq = 0; wr; ++nreq, wr = wr->next) { 1754 for (nreq = 0; wr; ++nreq, wr = wr->next) {
1755 if (mlx4_wq_overflow(&qp->rq, nreq, qp->ibqp.send_cq)) { 1755 if (mlx4_wq_overflow(&qp->rq, nreq, qp->ibqp.recv_cq)) {
1756 err = -ENOMEM; 1756 err = -ENOMEM;
1757 *bad_wr = wr; 1757 *bad_wr = wr;
1758 goto out; 1758 goto out;
diff --git a/drivers/infiniband/hw/mlx4/srq.c b/drivers/infiniband/hw/mlx4/srq.c
index d42565258fb7..cf8085bcbd6d 100644
--- a/drivers/infiniband/hw/mlx4/srq.c
+++ b/drivers/infiniband/hw/mlx4/srq.c
@@ -74,6 +74,7 @@ struct ib_srq *mlx4_ib_create_srq(struct ib_pd *pd,
74 struct mlx4_ib_dev *dev = to_mdev(pd->device); 74 struct mlx4_ib_dev *dev = to_mdev(pd->device);
75 struct mlx4_ib_srq *srq; 75 struct mlx4_ib_srq *srq;
76 struct mlx4_wqe_srq_next_seg *next; 76 struct mlx4_wqe_srq_next_seg *next;
77 struct mlx4_wqe_data_seg *scatter;
77 int desc_size; 78 int desc_size;
78 int buf_size; 79 int buf_size;
79 int err; 80 int err;
@@ -149,6 +150,11 @@ struct ib_srq *mlx4_ib_create_srq(struct ib_pd *pd,
149 next = get_wqe(srq, i); 150 next = get_wqe(srq, i);
150 next->next_wqe_index = 151 next->next_wqe_index =
151 cpu_to_be16((i + 1) & (srq->msrq.max - 1)); 152 cpu_to_be16((i + 1) & (srq->msrq.max - 1));
153
154 for (scatter = (void *) (next + 1);
155 (void *) scatter < (void *) next + desc_size;
156 ++scatter)
157 scatter->lkey = cpu_to_be32(MLX4_INVALID_LKEY);
152 } 158 }
153 159
154 err = mlx4_mtt_init(dev->dev, srq->buf.npages, srq->buf.page_shift, 160 err = mlx4_mtt_init(dev->dev, srq->buf.npages, srq->buf.page_shift,
diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
index dee6706038aa..258c639571b5 100644
--- a/drivers/input/evdev.c
+++ b/drivers/input/evdev.c
@@ -59,7 +59,8 @@ static void evdev_pass_event(struct evdev_client *client,
59 client->head &= EVDEV_BUFFER_SIZE - 1; 59 client->head &= EVDEV_BUFFER_SIZE - 1;
60 spin_unlock(&client->buffer_lock); 60 spin_unlock(&client->buffer_lock);
61 61
62 kill_fasync(&client->fasync, SIGIO, POLL_IN); 62 if (event->type == EV_SYN)
63 kill_fasync(&client->fasync, SIGIO, POLL_IN);
63} 64}
64 65
65/* 66/*
diff --git a/drivers/input/ff-memless.c b/drivers/input/ff-memless.c
index b483b2995fa9..f967008f332e 100644
--- a/drivers/input/ff-memless.c
+++ b/drivers/input/ff-memless.c
@@ -221,11 +221,27 @@ static int get_compatible_type(struct ff_device *ff, int effect_type)
221} 221}
222 222
223/* 223/*
224 * Only left/right direction should be used (under/over 0x8000) for
225 * forward/reverse motor direction (to keep calculation fast & simple).
226 */
227static u16 ml_calculate_direction(u16 direction, u16 force,
228 u16 new_direction, u16 new_force)
229{
230 if (!force)
231 return new_direction;
232 if (!new_force)
233 return direction;
234 return (((u32)(direction >> 1) * force +
235 (new_direction >> 1) * new_force) /
236 (force + new_force)) << 1;
237}
238
239/*
224 * Combine two effects and apply gain. 240 * Combine two effects and apply gain.
225 */ 241 */
226static void ml_combine_effects(struct ff_effect *effect, 242static void ml_combine_effects(struct ff_effect *effect,
227 struct ml_effect_state *state, 243 struct ml_effect_state *state,
228 unsigned int gain) 244 int gain)
229{ 245{
230 struct ff_effect *new = state->effect; 246 struct ff_effect *new = state->effect;
231 unsigned int strong, weak, i; 247 unsigned int strong, weak, i;
@@ -252,8 +268,21 @@ static void ml_combine_effects(struct ff_effect *effect,
252 break; 268 break;
253 269
254 case FF_RUMBLE: 270 case FF_RUMBLE:
255 strong = new->u.rumble.strong_magnitude * gain / 0xffff; 271 strong = (u32)new->u.rumble.strong_magnitude * gain / 0xffff;
256 weak = new->u.rumble.weak_magnitude * gain / 0xffff; 272 weak = (u32)new->u.rumble.weak_magnitude * gain / 0xffff;
273
274 if (effect->u.rumble.strong_magnitude + strong)
275 effect->direction = ml_calculate_direction(
276 effect->direction,
277 effect->u.rumble.strong_magnitude,
278 new->direction, strong);
279 else if (effect->u.rumble.weak_magnitude + weak)
280 effect->direction = ml_calculate_direction(
281 effect->direction,
282 effect->u.rumble.weak_magnitude,
283 new->direction, weak);
284 else
285 effect->direction = 0;
257 effect->u.rumble.strong_magnitude = 286 effect->u.rumble.strong_magnitude =
258 min(strong + effect->u.rumble.strong_magnitude, 287 min(strong + effect->u.rumble.strong_magnitude,
259 0xffffU); 288 0xffffU);
@@ -268,6 +297,13 @@ static void ml_combine_effects(struct ff_effect *effect,
268 /* here we also scale it 0x7fff => 0xffff */ 297 /* here we also scale it 0x7fff => 0xffff */
269 i = i * gain / 0x7fff; 298 i = i * gain / 0x7fff;
270 299
300 if (effect->u.rumble.strong_magnitude + i)
301 effect->direction = ml_calculate_direction(
302 effect->direction,
303 effect->u.rumble.strong_magnitude,
304 new->direction, i);
305 else
306 effect->direction = 0;
271 effect->u.rumble.strong_magnitude = 307 effect->u.rumble.strong_magnitude =
272 min(i + effect->u.rumble.strong_magnitude, 0xffffU); 308 min(i + effect->u.rumble.strong_magnitude, 0xffffU);
273 effect->u.rumble.weak_magnitude = 309 effect->u.rumble.weak_magnitude =
@@ -411,8 +447,6 @@ static int ml_ff_playback(struct input_dev *dev, int effect_id, int value)
411 msecs_to_jiffies(state->effect->replay.length); 447 msecs_to_jiffies(state->effect->replay.length);
412 state->adj_at = state->play_at; 448 state->adj_at = state->play_at;
413 449
414 ml_schedule_timer(ml);
415
416 } else { 450 } else {
417 debug("initiated stop"); 451 debug("initiated stop");
418 452
@@ -420,10 +454,10 @@ static int ml_ff_playback(struct input_dev *dev, int effect_id, int value)
420 __set_bit(FF_EFFECT_ABORTING, &state->flags); 454 __set_bit(FF_EFFECT_ABORTING, &state->flags);
421 else 455 else
422 __clear_bit(FF_EFFECT_STARTED, &state->flags); 456 __clear_bit(FF_EFFECT_STARTED, &state->flags);
423
424 ml_play_effects(ml);
425 } 457 }
426 458
459 ml_play_effects(ml);
460
427 return 0; 461 return 0;
428} 462}
429 463
diff --git a/drivers/input/input-polldev.c b/drivers/input/input-polldev.c
index aa6713b4a988..291d9393d359 100644
--- a/drivers/input/input-polldev.c
+++ b/drivers/input/input-polldev.c
@@ -100,6 +100,12 @@ static void input_close_polled_device(struct input_dev *input)
100 struct input_polled_dev *dev = input_get_drvdata(input); 100 struct input_polled_dev *dev = input_get_drvdata(input);
101 101
102 cancel_delayed_work_sync(&dev->work); 102 cancel_delayed_work_sync(&dev->work);
103 /*
104 * Clean up work struct to remove references to the workqueue.
105 * It may be destroyed by the next call. This causes problems
106 * at next device open-close in case of poll_interval == 0.
107 */
108 INIT_DELAYED_WORK(&dev->work, dev->work.work.func);
103 input_polldev_stop_workqueue(); 109 input_polldev_stop_workqueue();
104 110
105 if (dev->close) 111 if (dev->close)
diff --git a/drivers/input/input.c b/drivers/input/input.c
index ab060710688f..86cb2d2196ff 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -24,6 +24,7 @@
24#include <linux/mutex.h> 24#include <linux/mutex.h>
25#include <linux/rcupdate.h> 25#include <linux/rcupdate.h>
26#include <linux/smp_lock.h> 26#include <linux/smp_lock.h>
27#include "input-compat.h"
27 28
28MODULE_AUTHOR("Vojtech Pavlik <vojtech@suse.cz>"); 29MODULE_AUTHOR("Vojtech Pavlik <vojtech@suse.cz>");
29MODULE_DESCRIPTION("Input core"); 30MODULE_DESCRIPTION("Input core");
@@ -45,6 +46,7 @@ static unsigned int input_abs_bypass_init_data[] __initdata = {
45 ABS_MT_TOOL_TYPE, 46 ABS_MT_TOOL_TYPE,
46 ABS_MT_BLOB_ID, 47 ABS_MT_BLOB_ID,
47 ABS_MT_TRACKING_ID, 48 ABS_MT_TRACKING_ID,
49 ABS_MT_PRESSURE,
48 0 50 0
49}; 51};
50static unsigned long input_abs_bypass[BITS_TO_LONGS(ABS_CNT)]; 52static unsigned long input_abs_bypass[BITS_TO_LONGS(ABS_CNT)];
@@ -764,6 +766,40 @@ static int input_attach_handler(struct input_dev *dev, struct input_handler *han
764 return error; 766 return error;
765} 767}
766 768
769#ifdef CONFIG_COMPAT
770
771static int input_bits_to_string(char *buf, int buf_size,
772 unsigned long bits, bool skip_empty)
773{
774 int len = 0;
775
776 if (INPUT_COMPAT_TEST) {
777 u32 dword = bits >> 32;
778 if (dword || !skip_empty)
779 len += snprintf(buf, buf_size, "%x ", dword);
780
781 dword = bits & 0xffffffffUL;
782 if (dword || !skip_empty || len)
783 len += snprintf(buf + len, max(buf_size - len, 0),
784 "%x", dword);
785 } else {
786 if (bits || !skip_empty)
787 len += snprintf(buf, buf_size, "%lx", bits);
788 }
789
790 return len;
791}
792
793#else /* !CONFIG_COMPAT */
794
795static int input_bits_to_string(char *buf, int buf_size,
796 unsigned long bits, bool skip_empty)
797{
798 return bits || !skip_empty ?
799 snprintf(buf, buf_size, "%lx", bits) : 0;
800}
801
802#endif
767 803
768#ifdef CONFIG_PROC_FS 804#ifdef CONFIG_PROC_FS
769 805
@@ -832,14 +868,25 @@ static void input_seq_print_bitmap(struct seq_file *seq, const char *name,
832 unsigned long *bitmap, int max) 868 unsigned long *bitmap, int max)
833{ 869{
834 int i; 870 int i;
835 871 bool skip_empty = true;
836 for (i = BITS_TO_LONGS(max) - 1; i > 0; i--) 872 char buf[18];
837 if (bitmap[i])
838 break;
839 873
840 seq_printf(seq, "B: %s=", name); 874 seq_printf(seq, "B: %s=", name);
841 for (; i >= 0; i--) 875
842 seq_printf(seq, "%lx%s", bitmap[i], i > 0 ? " " : ""); 876 for (i = BITS_TO_LONGS(max) - 1; i >= 0; i--) {
877 if (input_bits_to_string(buf, sizeof(buf),
878 bitmap[i], skip_empty)) {
879 skip_empty = false;
880 seq_printf(seq, "%s%s", buf, i > 0 ? " " : "");
881 }
882 }
883
884 /*
885 * If no output was produced print a single 0.
886 */
887 if (skip_empty)
888 seq_puts(seq, "0");
889
843 seq_putc(seq, '\n'); 890 seq_putc(seq, '\n');
844} 891}
845 892
@@ -1128,14 +1175,23 @@ static int input_print_bitmap(char *buf, int buf_size, unsigned long *bitmap,
1128{ 1175{
1129 int i; 1176 int i;
1130 int len = 0; 1177 int len = 0;
1178 bool skip_empty = true;
1179
1180 for (i = BITS_TO_LONGS(max) - 1; i >= 0; i--) {
1181 len += input_bits_to_string(buf + len, max(buf_size - len, 0),
1182 bitmap[i], skip_empty);
1183 if (len) {
1184 skip_empty = false;
1185 if (i > 0)
1186 len += snprintf(buf + len, max(buf_size - len, 0), " ");
1187 }
1188 }
1131 1189
1132 for (i = BITS_TO_LONGS(max) - 1; i > 0; i--) 1190 /*
1133 if (bitmap[i]) 1191 * If no output was produced print a single 0.
1134 break; 1192 */
1135 1193 if (len == 0)
1136 for (; i >= 0; i--) 1194 len = snprintf(buf, buf_size, "%d", 0);
1137 len += snprintf(buf + len, max(buf_size - len, 0),
1138 "%lx%s", bitmap[i], i > 0 ? " " : "");
1139 1195
1140 if (add_cr) 1196 if (add_cr)
1141 len += snprintf(buf + len, max(buf_size - len, 0), "\n"); 1197 len += snprintf(buf + len, max(buf_size - len, 0), "\n");
@@ -1150,7 +1206,8 @@ static ssize_t input_dev_show_cap_##bm(struct device *dev, \
1150{ \ 1206{ \
1151 struct input_dev *input_dev = to_input_dev(dev); \ 1207 struct input_dev *input_dev = to_input_dev(dev); \
1152 int len = input_print_bitmap(buf, PAGE_SIZE, \ 1208 int len = input_print_bitmap(buf, PAGE_SIZE, \
1153 input_dev->bm##bit, ev##_MAX, 1); \ 1209 input_dev->bm##bit, ev##_MAX, \
1210 true); \
1154 return min_t(int, len, PAGE_SIZE); \ 1211 return min_t(int, len, PAGE_SIZE); \
1155} \ 1212} \
1156static DEVICE_ATTR(bm, S_IRUGO, input_dev_show_cap_##bm, NULL) 1213static DEVICE_ATTR(bm, S_IRUGO, input_dev_show_cap_##bm, NULL)
@@ -1214,7 +1271,7 @@ static int input_add_uevent_bm_var(struct kobj_uevent_env *env,
1214 1271
1215 len = input_print_bitmap(&env->buf[env->buflen - 1], 1272 len = input_print_bitmap(&env->buf[env->buflen - 1],
1216 sizeof(env->buf) - env->buflen, 1273 sizeof(env->buf) - env->buflen,
1217 bitmap, max, 0); 1274 bitmap, max, false);
1218 if (len >= (sizeof(env->buf) - env->buflen)) 1275 if (len >= (sizeof(env->buf) - env->buflen))
1219 return -ENOMEM; 1276 return -ENOMEM;
1220 1277
diff --git a/drivers/input/joystick/gf2k.c b/drivers/input/joystick/gf2k.c
index 67c207f5b1a1..45ac70eae0aa 100644
--- a/drivers/input/joystick/gf2k.c
+++ b/drivers/input/joystick/gf2k.c
@@ -277,7 +277,7 @@ static int gf2k_connect(struct gameport *gameport, struct gameport_driver *drv)
277 } 277 }
278 278
279#ifdef RESET_WORKS 279#ifdef RESET_WORKS
280 if ((gf2k->id != (GB(19,2,0) | GB(15,3,2) | GB(12,3,5))) || 280 if ((gf2k->id != (GB(19,2,0) | GB(15,3,2) | GB(12,3,5))) &&
281 (gf2k->id != (GB(31,2,0) | GB(27,3,2) | GB(24,3,5)))) { 281 (gf2k->id != (GB(31,2,0) | GB(27,3,2) | GB(24,3,5)))) {
282 err = -ENODEV; 282 err = -ENODEV;
283 goto fail2; 283 goto fail2;
diff --git a/drivers/input/joystick/iforce/iforce-main.c b/drivers/input/joystick/iforce/iforce-main.c
index f6c688cae334..b1edd778639c 100644
--- a/drivers/input/joystick/iforce/iforce-main.c
+++ b/drivers/input/joystick/iforce/iforce-main.c
@@ -210,7 +210,7 @@ static int iforce_open(struct input_dev *dev)
210 return 0; 210 return 0;
211} 211}
212 212
213static void iforce_release(struct input_dev *dev) 213static void iforce_close(struct input_dev *dev)
214{ 214{
215 struct iforce *iforce = input_get_drvdata(dev); 215 struct iforce *iforce = input_get_drvdata(dev);
216 int i; 216 int i;
@@ -228,30 +228,17 @@ static void iforce_release(struct input_dev *dev)
228 228
229 /* Disable force feedback playback */ 229 /* Disable force feedback playback */
230 iforce_send_packet(iforce, FF_CMD_ENABLE, "\001"); 230 iforce_send_packet(iforce, FF_CMD_ENABLE, "\001");
231 /* Wait for the command to complete */
232 wait_event_interruptible(iforce->wait,
233 !test_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags));
231 } 234 }
232 235
233 switch (iforce->bus) { 236 switch (iforce->bus) {
234#ifdef CONFIG_JOYSTICK_IFORCE_USB 237#ifdef CONFIG_JOYSTICK_IFORCE_USB
235 case IFORCE_USB:
236 usb_kill_urb(iforce->irq);
237
238 /* The device was unplugged before the file
239 * was released */
240 if (iforce->usbdev == NULL) {
241 iforce_delete_device(iforce);
242 kfree(iforce);
243 }
244 break;
245#endif
246 }
247}
248
249void iforce_delete_device(struct iforce *iforce)
250{
251 switch (iforce->bus) {
252#ifdef CONFIG_JOYSTICK_IFORCE_USB
253 case IFORCE_USB: 238 case IFORCE_USB:
254 iforce_usb_delete(iforce); 239 usb_kill_urb(iforce->irq);
240 usb_kill_urb(iforce->out);
241 usb_kill_urb(iforce->ctrl);
255 break; 242 break;
256#endif 243#endif
257#ifdef CONFIG_JOYSTICK_IFORCE_232 244#ifdef CONFIG_JOYSTICK_IFORCE_232
@@ -303,7 +290,7 @@ int iforce_init_device(struct iforce *iforce)
303 290
304 input_dev->name = "Unknown I-Force device"; 291 input_dev->name = "Unknown I-Force device";
305 input_dev->open = iforce_open; 292 input_dev->open = iforce_open;
306 input_dev->close = iforce_release; 293 input_dev->close = iforce_close;
307 294
308/* 295/*
309 * On-device memory allocation. 296 * On-device memory allocation.
diff --git a/drivers/input/joystick/iforce/iforce-usb.c b/drivers/input/joystick/iforce/iforce-usb.c
index 9f289d8f52c6..b41303d3ec54 100644
--- a/drivers/input/joystick/iforce/iforce-usb.c
+++ b/drivers/input/joystick/iforce/iforce-usb.c
@@ -109,6 +109,7 @@ static void iforce_usb_out(struct urb *urb)
109 struct iforce *iforce = urb->context; 109 struct iforce *iforce = urb->context;
110 110
111 if (urb->status) { 111 if (urb->status) {
112 clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags);
112 dbg("urb->status %d, exiting", urb->status); 113 dbg("urb->status %d, exiting", urb->status);
113 return; 114 return;
114 } 115 }
@@ -186,33 +187,19 @@ fail:
186 return err; 187 return err;
187} 188}
188 189
189/* Called by iforce_delete() */
190void iforce_usb_delete(struct iforce* iforce)
191{
192 usb_kill_urb(iforce->irq);
193 usb_kill_urb(iforce->out);
194 usb_kill_urb(iforce->ctrl);
195
196 usb_free_urb(iforce->irq);
197 usb_free_urb(iforce->out);
198 usb_free_urb(iforce->ctrl);
199}
200
201static void iforce_usb_disconnect(struct usb_interface *intf) 190static void iforce_usb_disconnect(struct usb_interface *intf)
202{ 191{
203 struct iforce *iforce = usb_get_intfdata(intf); 192 struct iforce *iforce = usb_get_intfdata(intf);
204 int open = 0; /* FIXME! iforce->dev.handle->open; */
205 193
206 usb_set_intfdata(intf, NULL); 194 usb_set_intfdata(intf, NULL);
207 if (iforce) {
208 iforce->usbdev = NULL;
209 input_unregister_device(iforce->dev);
210 195
211 if (!open) { 196 input_unregister_device(iforce->dev);
212 iforce_delete_device(iforce); 197
213 kfree(iforce); 198 usb_free_urb(iforce->irq);
214 } 199 usb_free_urb(iforce->out);
215 } 200 usb_free_urb(iforce->ctrl);
201
202 kfree(iforce);
216} 203}
217 204
218static struct usb_device_id iforce_usb_ids [] = { 205static struct usb_device_id iforce_usb_ids [] = {
diff --git a/drivers/input/joystick/iforce/iforce.h b/drivers/input/joystick/iforce/iforce.h
index f2d91f4028ca..9f494b75848a 100644
--- a/drivers/input/joystick/iforce/iforce.h
+++ b/drivers/input/joystick/iforce/iforce.h
@@ -150,11 +150,9 @@ void iforce_serial_xmit(struct iforce *iforce);
150 150
151/* iforce-usb.c */ 151/* iforce-usb.c */
152void iforce_usb_xmit(struct iforce *iforce); 152void iforce_usb_xmit(struct iforce *iforce);
153void iforce_usb_delete(struct iforce *iforce);
154 153
155/* iforce-main.c */ 154/* iforce-main.c */
156int iforce_init_device(struct iforce *iforce); 155int iforce_init_device(struct iforce *iforce);
157void iforce_delete_device(struct iforce *iforce);
158 156
159/* iforce-packets.c */ 157/* iforce-packets.c */
160int iforce_control_playback(struct iforce*, u16 id, unsigned int); 158int iforce_control_playback(struct iforce*, u16 id, unsigned int);
diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
index 482cb1204e43..8a28fb7846dc 100644
--- a/drivers/input/joystick/xpad.c
+++ b/drivers/input/joystick/xpad.c
@@ -446,7 +446,7 @@ static void xpad_irq_in(struct urb *urb)
446 } 446 }
447 447
448exit: 448exit:
449 retval = usb_submit_urb (urb, GFP_ATOMIC); 449 retval = usb_submit_urb(urb, GFP_ATOMIC);
450 if (retval) 450 if (retval)
451 err ("%s - usb_submit_urb failed with result %d", 451 err ("%s - usb_submit_urb failed with result %d",
452 __func__, retval); 452 __func__, retval);
@@ -571,7 +571,7 @@ static int xpad_play_effect(struct input_dev *dev, void *data,
571 xpad->odata[6] = 0x00; 571 xpad->odata[6] = 0x00;
572 xpad->odata[7] = 0x00; 572 xpad->odata[7] = 0x00;
573 xpad->irq_out->transfer_buffer_length = 8; 573 xpad->irq_out->transfer_buffer_length = 8;
574 usb_submit_urb(xpad->irq_out, GFP_KERNEL); 574 usb_submit_urb(xpad->irq_out, GFP_ATOMIC);
575 } 575 }
576 576
577 return 0; 577 return 0;
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
index a3573570c52f..7b4056292eaf 100644
--- a/drivers/input/keyboard/atkbd.c
+++ b/drivers/input/keyboard/atkbd.c
@@ -134,7 +134,8 @@ static const unsigned short atkbd_unxlate_table[128] = {
134#define ATKBD_CMD_GETID 0x02f2 134#define ATKBD_CMD_GETID 0x02f2
135#define ATKBD_CMD_SETREP 0x10f3 135#define ATKBD_CMD_SETREP 0x10f3
136#define ATKBD_CMD_ENABLE 0x00f4 136#define ATKBD_CMD_ENABLE 0x00f4
137#define ATKBD_CMD_RESET_DIS 0x00f5 137#define ATKBD_CMD_RESET_DIS 0x00f5 /* Reset to defaults and disable */
138#define ATKBD_CMD_RESET_DEF 0x00f6 /* Reset to defaults */
138#define ATKBD_CMD_SETALL_MBR 0x00fa 139#define ATKBD_CMD_SETALL_MBR 0x00fa
139#define ATKBD_CMD_RESET_BAT 0x02ff 140#define ATKBD_CMD_RESET_BAT 0x02ff
140#define ATKBD_CMD_RESEND 0x00fe 141#define ATKBD_CMD_RESEND 0x00fe
@@ -224,8 +225,10 @@ struct atkbd {
224 225
225 struct delayed_work event_work; 226 struct delayed_work event_work;
226 unsigned long event_jiffies; 227 unsigned long event_jiffies;
227 struct mutex event_mutex;
228 unsigned long event_mask; 228 unsigned long event_mask;
229
230 /* Serializes reconnect(), attr->set() and event work */
231 struct mutex mutex;
229}; 232};
230 233
231/* 234/*
@@ -576,7 +579,7 @@ static void atkbd_event_work(struct work_struct *work)
576{ 579{
577 struct atkbd *atkbd = container_of(work, struct atkbd, event_work.work); 580 struct atkbd *atkbd = container_of(work, struct atkbd, event_work.work);
578 581
579 mutex_lock(&atkbd->event_mutex); 582 mutex_lock(&atkbd->mutex);
580 583
581 if (!atkbd->enabled) { 584 if (!atkbd->enabled) {
582 /* 585 /*
@@ -595,7 +598,7 @@ static void atkbd_event_work(struct work_struct *work)
595 atkbd_set_repeat_rate(atkbd); 598 atkbd_set_repeat_rate(atkbd);
596 } 599 }
597 600
598 mutex_unlock(&atkbd->event_mutex); 601 mutex_unlock(&atkbd->mutex);
599} 602}
600 603
601/* 604/*
@@ -611,7 +614,7 @@ static void atkbd_schedule_event_work(struct atkbd *atkbd, int event_bit)
611 614
612 atkbd->event_jiffies = jiffies; 615 atkbd->event_jiffies = jiffies;
613 set_bit(event_bit, &atkbd->event_mask); 616 set_bit(event_bit, &atkbd->event_mask);
614 wmb(); 617 mb();
615 schedule_delayed_work(&atkbd->event_work, delay); 618 schedule_delayed_work(&atkbd->event_work, delay);
616} 619}
617 620
@@ -836,7 +839,7 @@ static void atkbd_cleanup(struct serio *serio)
836 struct atkbd *atkbd = serio_get_drvdata(serio); 839 struct atkbd *atkbd = serio_get_drvdata(serio);
837 840
838 atkbd_disable(atkbd); 841 atkbd_disable(atkbd);
839 ps2_command(&atkbd->ps2dev, NULL, ATKBD_CMD_RESET_BAT); 842 ps2_command(&atkbd->ps2dev, NULL, ATKBD_CMD_RESET_DEF);
840} 843}
841 844
842 845
@@ -848,13 +851,20 @@ static void atkbd_disconnect(struct serio *serio)
848{ 851{
849 struct atkbd *atkbd = serio_get_drvdata(serio); 852 struct atkbd *atkbd = serio_get_drvdata(serio);
850 853
854 sysfs_remove_group(&serio->dev.kobj, &atkbd_attribute_group);
855
851 atkbd_disable(atkbd); 856 atkbd_disable(atkbd);
852 857
853 /* make sure we don't have a command in flight */ 858 input_unregister_device(atkbd->dev);
859
860 /*
861 * Make sure we don't have a command in flight.
862 * Note that since atkbd->enabled is false event work will keep
863 * rescheduling itself until it gets canceled and will not try
864 * accessing freed input device or serio port.
865 */
854 cancel_delayed_work_sync(&atkbd->event_work); 866 cancel_delayed_work_sync(&atkbd->event_work);
855 867
856 sysfs_remove_group(&serio->dev.kobj, &atkbd_attribute_group);
857 input_unregister_device(atkbd->dev);
858 serio_close(serio); 868 serio_close(serio);
859 serio_set_drvdata(serio, NULL); 869 serio_set_drvdata(serio, NULL);
860 kfree(atkbd); 870 kfree(atkbd);
@@ -1086,7 +1096,7 @@ static int atkbd_connect(struct serio *serio, struct serio_driver *drv)
1086 atkbd->dev = dev; 1096 atkbd->dev = dev;
1087 ps2_init(&atkbd->ps2dev, serio); 1097 ps2_init(&atkbd->ps2dev, serio);
1088 INIT_DELAYED_WORK(&atkbd->event_work, atkbd_event_work); 1098 INIT_DELAYED_WORK(&atkbd->event_work, atkbd_event_work);
1089 mutex_init(&atkbd->event_mutex); 1099 mutex_init(&atkbd->mutex);
1090 1100
1091 switch (serio->id.type) { 1101 switch (serio->id.type) {
1092 1102
@@ -1159,19 +1169,23 @@ static int atkbd_reconnect(struct serio *serio)
1159{ 1169{
1160 struct atkbd *atkbd = serio_get_drvdata(serio); 1170 struct atkbd *atkbd = serio_get_drvdata(serio);
1161 struct serio_driver *drv = serio->drv; 1171 struct serio_driver *drv = serio->drv;
1172 int retval = -1;
1162 1173
1163 if (!atkbd || !drv) { 1174 if (!atkbd || !drv) {
1164 printk(KERN_DEBUG "atkbd: reconnect request, but serio is disconnected, ignoring...\n"); 1175 printk(KERN_DEBUG "atkbd: reconnect request, but serio is disconnected, ignoring...\n");
1165 return -1; 1176 return -1;
1166 } 1177 }
1167 1178
1179 mutex_lock(&atkbd->mutex);
1180
1168 atkbd_disable(atkbd); 1181 atkbd_disable(atkbd);
1169 1182
1170 if (atkbd->write) { 1183 if (atkbd->write) {
1171 if (atkbd_probe(atkbd)) 1184 if (atkbd_probe(atkbd))
1172 return -1; 1185 goto out;
1186
1173 if (atkbd->set != atkbd_select_set(atkbd, atkbd->set, atkbd->extra)) 1187 if (atkbd->set != atkbd_select_set(atkbd, atkbd->set, atkbd->extra))
1174 return -1; 1188 goto out;
1175 1189
1176 atkbd_activate(atkbd); 1190 atkbd_activate(atkbd);
1177 1191
@@ -1189,8 +1203,11 @@ static int atkbd_reconnect(struct serio *serio)
1189 } 1203 }
1190 1204
1191 atkbd_enable(atkbd); 1205 atkbd_enable(atkbd);
1206 retval = 0;
1192 1207
1193 return 0; 1208 out:
1209 mutex_unlock(&atkbd->mutex);
1210 return retval;
1194} 1211}
1195 1212
1196static struct serio_device_id atkbd_serio_ids[] = { 1213static struct serio_device_id atkbd_serio_ids[] = {
@@ -1234,47 +1251,28 @@ static ssize_t atkbd_attr_show_helper(struct device *dev, char *buf,
1234 ssize_t (*handler)(struct atkbd *, char *)) 1251 ssize_t (*handler)(struct atkbd *, char *))
1235{ 1252{
1236 struct serio *serio = to_serio_port(dev); 1253 struct serio *serio = to_serio_port(dev);
1237 int retval; 1254 struct atkbd *atkbd = serio_get_drvdata(serio);
1238
1239 retval = serio_pin_driver(serio);
1240 if (retval)
1241 return retval;
1242
1243 if (serio->drv != &atkbd_drv) {
1244 retval = -ENODEV;
1245 goto out;
1246 }
1247
1248 retval = handler((struct atkbd *)serio_get_drvdata(serio), buf);
1249 1255
1250out: 1256 return handler(atkbd, buf);
1251 serio_unpin_driver(serio);
1252 return retval;
1253} 1257}
1254 1258
1255static ssize_t atkbd_attr_set_helper(struct device *dev, const char *buf, size_t count, 1259static ssize_t atkbd_attr_set_helper(struct device *dev, const char *buf, size_t count,
1256 ssize_t (*handler)(struct atkbd *, const char *, size_t)) 1260 ssize_t (*handler)(struct atkbd *, const char *, size_t))
1257{ 1261{
1258 struct serio *serio = to_serio_port(dev); 1262 struct serio *serio = to_serio_port(dev);
1259 struct atkbd *atkbd; 1263 struct atkbd *atkbd = serio_get_drvdata(serio);
1260 int retval; 1264 int retval;
1261 1265
1262 retval = serio_pin_driver(serio); 1266 retval = mutex_lock_interruptible(&atkbd->mutex);
1263 if (retval) 1267 if (retval)
1264 return retval; 1268 return retval;
1265 1269
1266 if (serio->drv != &atkbd_drv) {
1267 retval = -ENODEV;
1268 goto out;
1269 }
1270
1271 atkbd = serio_get_drvdata(serio);
1272 atkbd_disable(atkbd); 1270 atkbd_disable(atkbd);
1273 retval = handler(atkbd, buf, count); 1271 retval = handler(atkbd, buf, count);
1274 atkbd_enable(atkbd); 1272 atkbd_enable(atkbd);
1275 1273
1276out: 1274 mutex_unlock(&atkbd->mutex);
1277 serio_unpin_driver(serio); 1275
1278 return retval; 1276 return retval;
1279} 1277}
1280 1278
diff --git a/drivers/input/keyboard/davinci_keyscan.c b/drivers/input/keyboard/davinci_keyscan.c
index 6e52d855f637..d410d7a52f1d 100644
--- a/drivers/input/keyboard/davinci_keyscan.c
+++ b/drivers/input/keyboard/davinci_keyscan.c
@@ -174,6 +174,14 @@ static int __init davinci_ks_probe(struct platform_device *pdev)
174 struct davinci_ks_platform_data *pdata = pdev->dev.platform_data; 174 struct davinci_ks_platform_data *pdata = pdev->dev.platform_data;
175 int error, i; 175 int error, i;
176 176
177 if (pdata->device_enable) {
178 error = pdata->device_enable(dev);
179 if (error < 0) {
180 dev_dbg(dev, "device enable function failed\n");
181 return error;
182 }
183 }
184
177 if (!pdata->keymap) { 185 if (!pdata->keymap) {
178 dev_dbg(dev, "no keymap from pdata\n"); 186 dev_dbg(dev, "no keymap from pdata\n");
179 return -EINVAL; 187 return -EINVAL;
diff --git a/drivers/input/keyboard/matrix_keypad.c b/drivers/input/keyboard/matrix_keypad.c
index 34f4a29d4973..d3c8b61a941d 100644
--- a/drivers/input/keyboard/matrix_keypad.c
+++ b/drivers/input/keyboard/matrix_keypad.c
@@ -29,11 +29,13 @@ struct matrix_keypad {
29 unsigned short *keycodes; 29 unsigned short *keycodes;
30 unsigned int row_shift; 30 unsigned int row_shift;
31 31
32 DECLARE_BITMAP(disabled_gpios, MATRIX_MAX_ROWS);
33
32 uint32_t last_key_state[MATRIX_MAX_COLS]; 34 uint32_t last_key_state[MATRIX_MAX_COLS];
33 struct delayed_work work; 35 struct delayed_work work;
36 spinlock_t lock;
34 bool scan_pending; 37 bool scan_pending;
35 bool stopped; 38 bool stopped;
36 spinlock_t lock;
37}; 39};
38 40
39/* 41/*
@@ -222,9 +224,16 @@ static int matrix_keypad_suspend(struct device *dev)
222 224
223 matrix_keypad_stop(keypad->input_dev); 225 matrix_keypad_stop(keypad->input_dev);
224 226
225 if (device_may_wakeup(&pdev->dev)) 227 if (device_may_wakeup(&pdev->dev)) {
226 for (i = 0; i < pdata->num_row_gpios; i++) 228 for (i = 0; i < pdata->num_row_gpios; i++) {
227 enable_irq_wake(gpio_to_irq(pdata->row_gpios[i])); 229 if (!test_bit(i, keypad->disabled_gpios)) {
230 unsigned int gpio = pdata->row_gpios[i];
231
232 if (enable_irq_wake(gpio_to_irq(gpio)) == 0)
233 __set_bit(i, keypad->disabled_gpios);
234 }
235 }
236 }
228 237
229 return 0; 238 return 0;
230} 239}
@@ -236,9 +245,15 @@ static int matrix_keypad_resume(struct device *dev)
236 const struct matrix_keypad_platform_data *pdata = keypad->pdata; 245 const struct matrix_keypad_platform_data *pdata = keypad->pdata;
237 int i; 246 int i;
238 247
239 if (device_may_wakeup(&pdev->dev)) 248 if (device_may_wakeup(&pdev->dev)) {
240 for (i = 0; i < pdata->num_row_gpios; i++) 249 for (i = 0; i < pdata->num_row_gpios; i++) {
241 disable_irq_wake(gpio_to_irq(pdata->row_gpios[i])); 250 if (test_and_clear_bit(i, keypad->disabled_gpios)) {
251 unsigned int gpio = pdata->row_gpios[i];
252
253 disable_irq_wake(gpio_to_irq(gpio));
254 }
255 }
256 }
242 257
243 matrix_keypad_start(keypad->input_dev); 258 matrix_keypad_start(keypad->input_dev);
244 259
diff --git a/drivers/input/keyboard/twl4030_keypad.c b/drivers/input/keyboard/twl4030_keypad.c
index eeaa7acb9cfc..21d6184efa96 100644
--- a/drivers/input/keyboard/twl4030_keypad.c
+++ b/drivers/input/keyboard/twl4030_keypad.c
@@ -253,14 +253,6 @@ static irqreturn_t do_kp_irq(int irq, void *_kp)
253 u8 reg; 253 u8 reg;
254 int ret; 254 int ret;
255 255
256#ifdef CONFIG_LOCKDEP
257 /* WORKAROUND for lockdep forcing IRQF_DISABLED on us, which
258 * we don't want and can't tolerate. Although it might be
259 * friendlier not to borrow this thread context...
260 */
261 local_irq_enable();
262#endif
263
264 /* Read & Clear TWL4030 pending interrupt */ 256 /* Read & Clear TWL4030 pending interrupt */
265 ret = twl4030_kpread(kp, &reg, KEYP_ISR1, 1); 257 ret = twl4030_kpread(kp, &reg, KEYP_ISR1, 1);
266 258
@@ -403,7 +395,8 @@ static int __devinit twl4030_kp_probe(struct platform_device *pdev)
403 * 395 *
404 * NOTE: we assume this host is wired to TWL4040 INT1, not INT2 ... 396 * NOTE: we assume this host is wired to TWL4040 INT1, not INT2 ...
405 */ 397 */
406 error = request_irq(kp->irq, do_kp_irq, 0, pdev->name, kp); 398 error = request_threaded_irq(kp->irq, NULL, do_kp_irq,
399 0, pdev->name, kp);
407 if (error) { 400 if (error) {
408 dev_info(kp->dbg_dev, "request_irq failed for irq no=%d\n", 401 dev_info(kp->dbg_dev, "request_irq failed for irq no=%d\n",
409 kp->irq); 402 kp->irq);
diff --git a/drivers/input/misc/twl4030-pwrbutton.c b/drivers/input/misc/twl4030-pwrbutton.c
index bdde5c889035..e9069b87fde2 100644
--- a/drivers/input/misc/twl4030-pwrbutton.c
+++ b/drivers/input/misc/twl4030-pwrbutton.c
@@ -39,18 +39,8 @@ static irqreturn_t powerbutton_irq(int irq, void *_pwr)
39 int err; 39 int err;
40 u8 value; 40 u8 value;
41 41
42#ifdef CONFIG_LOCKDEP
43 /* WORKAROUND for lockdep forcing IRQF_DISABLED on us, which
44 * we don't want and can't tolerate since this is a threaded
45 * IRQ and can sleep due to the i2c reads it has to issue.
46 * Although it might be friendlier not to borrow this thread
47 * context...
48 */
49 local_irq_enable();
50#endif
51
52 err = twl_i2c_read_u8(TWL4030_MODULE_PM_MASTER, &value, 42 err = twl_i2c_read_u8(TWL4030_MODULE_PM_MASTER, &value,
53 STS_HW_CONDITIONS); 43 STS_HW_CONDITIONS);
54 if (!err) { 44 if (!err) {
55 input_report_key(pwr, KEY_POWER, value & PWR_PWRON_IRQ); 45 input_report_key(pwr, KEY_POWER, value & PWR_PWRON_IRQ);
56 input_sync(pwr); 46 input_sync(pwr);
@@ -80,7 +70,7 @@ static int __devinit twl4030_pwrbutton_probe(struct platform_device *pdev)
80 pwr->phys = "twl4030_pwrbutton/input0"; 70 pwr->phys = "twl4030_pwrbutton/input0";
81 pwr->dev.parent = &pdev->dev; 71 pwr->dev.parent = &pdev->dev;
82 72
83 err = request_irq(irq, powerbutton_irq, 73 err = request_threaded_irq(irq, NULL, powerbutton_irq,
84 IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING, 74 IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
85 "twl4030_pwrbutton", pwr); 75 "twl4030_pwrbutton", pwr);
86 if (err < 0) { 76 if (err < 0) {
diff --git a/drivers/input/misc/winbond-cir.c b/drivers/input/misc/winbond-cir.c
index 33309fe44e20..c8f5a9a3fa14 100644
--- a/drivers/input/misc/winbond-cir.c
+++ b/drivers/input/misc/winbond-cir.c
@@ -768,7 +768,7 @@ wbcir_parse_rc6(struct device *dev, struct wbcir_data *data)
768 return; 768 return;
769 } 769 }
770 770
771 dev_info(dev, "IR-RC6 ad 0x%02X cm 0x%02X cu 0x%04X " 771 dev_dbg(dev, "IR-RC6 ad 0x%02X cm 0x%02X cu 0x%04X "
772 "toggle %u mode %u scan 0x%08X\n", 772 "toggle %u mode %u scan 0x%08X\n",
773 address, 773 address,
774 command, 774 command,
diff --git a/drivers/input/misc/wistron_btns.c b/drivers/input/misc/wistron_btns.c
index 38da6ab04384..c0afb71a3a6d 100644
--- a/drivers/input/misc/wistron_btns.c
+++ b/drivers/input/misc/wistron_btns.c
@@ -1328,7 +1328,7 @@ static struct platform_driver wistron_driver = {
1328 .driver = { 1328 .driver = {
1329 .name = "wistron-bios", 1329 .name = "wistron-bios",
1330 .owner = THIS_MODULE, 1330 .owner = THIS_MODULE,
1331#if CONFIG_PM 1331#ifdef CONFIG_PM
1332 .pm = &wistron_pm_ops, 1332 .pm = &wistron_pm_ops,
1333#endif 1333#endif
1334 }, 1334 },
diff --git a/drivers/input/mouse/Kconfig b/drivers/input/mouse/Kconfig
index 3feeb3af8abd..c714ca2407f8 100644
--- a/drivers/input/mouse/Kconfig
+++ b/drivers/input/mouse/Kconfig
@@ -70,7 +70,7 @@ config MOUSE_PS2_SYNAPTICS
70config MOUSE_PS2_LIFEBOOK 70config MOUSE_PS2_LIFEBOOK
71 bool "Fujitsu Lifebook PS/2 mouse protocol extension" if EMBEDDED 71 bool "Fujitsu Lifebook PS/2 mouse protocol extension" if EMBEDDED
72 default y 72 default y
73 depends on MOUSE_PS2 && X86 73 depends on MOUSE_PS2 && X86 && DMI
74 help 74 help
75 Say Y here if you have a Fujitsu B-series Lifebook PS/2 75 Say Y here if you have a Fujitsu B-series Lifebook PS/2
76 TouchScreen connected to your system. 76 TouchScreen connected to your system.
diff --git a/drivers/input/mouse/bcm5974.c b/drivers/input/mouse/bcm5974.c
index 0d1d33468b43..4f8fe0886b2a 100644
--- a/drivers/input/mouse/bcm5974.c
+++ b/drivers/input/mouse/bcm5974.c
@@ -139,6 +139,7 @@ struct tp_finger {
139/* trackpad finger data size, empirically at least ten fingers */ 139/* trackpad finger data size, empirically at least ten fingers */
140#define SIZEOF_FINGER sizeof(struct tp_finger) 140#define SIZEOF_FINGER sizeof(struct tp_finger)
141#define SIZEOF_ALL_FINGERS (16 * SIZEOF_FINGER) 141#define SIZEOF_ALL_FINGERS (16 * SIZEOF_FINGER)
142#define MAX_FINGER_ORIENTATION 16384
142 143
143/* device-specific parameters */ 144/* device-specific parameters */
144struct bcm5974_param { 145struct bcm5974_param {
@@ -284,6 +285,26 @@ static void setup_events_to_report(struct input_dev *input_dev,
284 input_set_abs_params(input_dev, ABS_Y, 285 input_set_abs_params(input_dev, ABS_Y,
285 0, cfg->y.dim, cfg->y.fuzz, 0); 286 0, cfg->y.dim, cfg->y.fuzz, 0);
286 287
288 /* finger touch area */
289 input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR,
290 cfg->w.devmin, cfg->w.devmax, 0, 0);
291 input_set_abs_params(input_dev, ABS_MT_TOUCH_MINOR,
292 cfg->w.devmin, cfg->w.devmax, 0, 0);
293 /* finger approach area */
294 input_set_abs_params(input_dev, ABS_MT_WIDTH_MAJOR,
295 cfg->w.devmin, cfg->w.devmax, 0, 0);
296 input_set_abs_params(input_dev, ABS_MT_WIDTH_MINOR,
297 cfg->w.devmin, cfg->w.devmax, 0, 0);
298 /* finger orientation */
299 input_set_abs_params(input_dev, ABS_MT_ORIENTATION,
300 -MAX_FINGER_ORIENTATION,
301 MAX_FINGER_ORIENTATION, 0, 0);
302 /* finger position */
303 input_set_abs_params(input_dev, ABS_MT_POSITION_X,
304 cfg->x.devmin, cfg->x.devmax, 0, 0);
305 input_set_abs_params(input_dev, ABS_MT_POSITION_Y,
306 cfg->y.devmin, cfg->y.devmax, 0, 0);
307
287 __set_bit(EV_KEY, input_dev->evbit); 308 __set_bit(EV_KEY, input_dev->evbit);
288 __set_bit(BTN_TOUCH, input_dev->keybit); 309 __set_bit(BTN_TOUCH, input_dev->keybit);
289 __set_bit(BTN_TOOL_FINGER, input_dev->keybit); 310 __set_bit(BTN_TOOL_FINGER, input_dev->keybit);
@@ -310,13 +331,29 @@ static int report_bt_state(struct bcm5974 *dev, int size)
310 return 0; 331 return 0;
311} 332}
312 333
334static void report_finger_data(struct input_dev *input,
335 const struct bcm5974_config *cfg,
336 const struct tp_finger *f)
337{
338 input_report_abs(input, ABS_MT_TOUCH_MAJOR, raw2int(f->force_major));
339 input_report_abs(input, ABS_MT_TOUCH_MINOR, raw2int(f->force_minor));
340 input_report_abs(input, ABS_MT_WIDTH_MAJOR, raw2int(f->size_major));
341 input_report_abs(input, ABS_MT_WIDTH_MINOR, raw2int(f->size_minor));
342 input_report_abs(input, ABS_MT_ORIENTATION,
343 MAX_FINGER_ORIENTATION - raw2int(f->orientation));
344 input_report_abs(input, ABS_MT_POSITION_X, raw2int(f->abs_x));
345 input_report_abs(input, ABS_MT_POSITION_Y,
346 cfg->y.devmin + cfg->y.devmax - raw2int(f->abs_y));
347 input_mt_sync(input);
348}
349
313/* report trackpad data as logical trackpad state */ 350/* report trackpad data as logical trackpad state */
314static int report_tp_state(struct bcm5974 *dev, int size) 351static int report_tp_state(struct bcm5974 *dev, int size)
315{ 352{
316 const struct bcm5974_config *c = &dev->cfg; 353 const struct bcm5974_config *c = &dev->cfg;
317 const struct tp_finger *f; 354 const struct tp_finger *f;
318 struct input_dev *input = dev->input; 355 struct input_dev *input = dev->input;
319 int raw_p, raw_w, raw_x, raw_y, raw_n; 356 int raw_p, raw_w, raw_x, raw_y, raw_n, i;
320 int ptest, origin, ibt = 0, nmin = 0, nmax = 0; 357 int ptest, origin, ibt = 0, nmin = 0, nmax = 0;
321 int abs_p = 0, abs_w = 0, abs_x = 0, abs_y = 0; 358 int abs_p = 0, abs_w = 0, abs_x = 0, abs_y = 0;
322 359
@@ -329,6 +366,11 @@ static int report_tp_state(struct bcm5974 *dev, int size)
329 366
330 /* always track the first finger; when detached, start over */ 367 /* always track the first finger; when detached, start over */
331 if (raw_n) { 368 if (raw_n) {
369
370 /* report raw trackpad data */
371 for (i = 0; i < raw_n; i++)
372 report_finger_data(input, c, &f[i]);
373
332 raw_p = raw2int(f->force_major); 374 raw_p = raw2int(f->force_major);
333 raw_w = raw2int(f->size_major); 375 raw_w = raw2int(f->size_major);
334 raw_x = raw2int(f->abs_x); 376 raw_x = raw2int(f->abs_x);
diff --git a/drivers/input/mouse/hgpk.c b/drivers/input/mouse/hgpk.c
index b146237266d8..90be30e93556 100644
--- a/drivers/input/mouse/hgpk.c
+++ b/drivers/input/mouse/hgpk.c
@@ -427,7 +427,6 @@ static void hgpk_recalib_work(struct work_struct *work)
427 427
428static int hgpk_register(struct psmouse *psmouse) 428static int hgpk_register(struct psmouse *psmouse)
429{ 429{
430 struct input_dev *dev = psmouse->dev;
431 int err; 430 int err;
432 431
433 /* register handlers */ 432 /* register handlers */
diff --git a/drivers/input/mouse/lifebook.c b/drivers/input/mouse/lifebook.c
index 2e6bdfea0165..7c1d7d420ae3 100644
--- a/drivers/input/mouse/lifebook.c
+++ b/drivers/input/mouse/lifebook.c
@@ -44,7 +44,6 @@ static int lifebook_set_6byte_proto(const struct dmi_system_id *d)
44} 44}
45 45
46static const struct dmi_system_id __initconst lifebook_dmi_table[] = { 46static const struct dmi_system_id __initconst lifebook_dmi_table[] = {
47#if defined(CONFIG_DMI) && defined(CONFIG_X86)
48 { 47 {
49 /* FLORA-ie 55mi */ 48 /* FLORA-ie 55mi */
50 .matches = { 49 .matches = {
@@ -54,6 +53,12 @@ static const struct dmi_system_id __initconst lifebook_dmi_table[] = {
54 { 53 {
55 /* LifeBook B */ 54 /* LifeBook B */
56 .matches = { 55 .matches = {
56 DMI_MATCH(DMI_PRODUCT_NAME, "Lifebook B Series"),
57 },
58 },
59 {
60 /* LifeBook B */
61 .matches = {
57 DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook B Series"), 62 DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook B Series"),
58 }, 63 },
59 }, 64 },
@@ -118,7 +123,6 @@ static const struct dmi_system_id __initconst lifebook_dmi_table[] = {
118 }, 123 },
119 }, 124 },
120 { } 125 { }
121#endif
122}; 126};
123 127
124void __init lifebook_module_init(void) 128void __init lifebook_module_init(void)
diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c
index fd0bc094616a..d8c0c8d6992c 100644
--- a/drivers/input/mouse/psmouse-base.c
+++ b/drivers/input/mouse/psmouse-base.c
@@ -627,8 +627,15 @@ static int psmouse_extensions(struct psmouse *psmouse,
627 synaptics_hardware = true; 627 synaptics_hardware = true;
628 628
629 if (max_proto > PSMOUSE_IMEX) { 629 if (max_proto > PSMOUSE_IMEX) {
630 if (!set_properties || synaptics_init(psmouse) == 0) 630/*
631 * Try activating protocol, but check if support is enabled first, since
632 * we try detecting Synaptics even when protocol is disabled.
633 */
634 if (synaptics_supported() &&
635 (!set_properties || synaptics_init(psmouse) == 0)) {
631 return PSMOUSE_SYNAPTICS; 636 return PSMOUSE_SYNAPTICS;
637 }
638
632/* 639/*
633 * Some Synaptics touchpads can emulate extended protocols (like IMPS/2). 640 * Some Synaptics touchpads can emulate extended protocols (like IMPS/2).
634 * Unfortunately Logitech/Genius probes confuse some firmware versions so 641 * Unfortunately Logitech/Genius probes confuse some firmware versions so
@@ -683,19 +690,6 @@ static int psmouse_extensions(struct psmouse *psmouse,
683 max_proto = PSMOUSE_IMEX; 690 max_proto = PSMOUSE_IMEX;
684 } 691 }
685 692
686/*
687 * Try Finger Sensing Pad
688 */
689 if (max_proto > PSMOUSE_IMEX) {
690 if (fsp_detect(psmouse, set_properties) == 0) {
691 if (!set_properties || fsp_init(psmouse) == 0)
692 return PSMOUSE_FSP;
693/*
694 * Init failed, try basic relative protocols
695 */
696 max_proto = PSMOUSE_IMEX;
697 }
698 }
699 693
700 if (max_proto > PSMOUSE_IMEX) { 694 if (max_proto > PSMOUSE_IMEX) {
701 if (genius_detect(psmouse, set_properties) == 0) 695 if (genius_detect(psmouse, set_properties) == 0)
@@ -712,6 +706,21 @@ static int psmouse_extensions(struct psmouse *psmouse,
712 } 706 }
713 707
714/* 708/*
709 * Try Finger Sensing Pad. We do it here because its probe upsets
710 * Trackpoint devices (causing TP_READ_ID command to time out).
711 */
712 if (max_proto > PSMOUSE_IMEX) {
713 if (fsp_detect(psmouse, set_properties) == 0) {
714 if (!set_properties || fsp_init(psmouse) == 0)
715 return PSMOUSE_FSP;
716/*
717 * Init failed, try basic relative protocols
718 */
719 max_proto = PSMOUSE_IMEX;
720 }
721 }
722
723/*
715 * Reset to defaults in case the device got confused by extended 724 * Reset to defaults in case the device got confused by extended
716 * protocol probes. Note that we follow up with full reset because 725 * protocol probes. Note that we follow up with full reset because
717 * some mice put themselves to sleep when they see PSMOUSE_RESET_DIS. 726 * some mice put themselves to sleep when they see PSMOUSE_RESET_DIS.
@@ -1132,12 +1141,22 @@ static void psmouse_cleanup(struct serio *serio)
1132 psmouse_deactivate(parent); 1141 psmouse_deactivate(parent);
1133 } 1142 }
1134 1143
1135 psmouse_deactivate(psmouse); 1144 psmouse_set_state(psmouse, PSMOUSE_INITIALIZING);
1145
1146 /*
1147 * Disable stream mode so cleanup routine can proceed undisturbed.
1148 */
1149 if (ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_DISABLE))
1150 printk(KERN_WARNING "psmouse.c: Failed to disable mouse on %s\n",
1151 psmouse->ps2dev.serio->phys);
1136 1152
1137 if (psmouse->cleanup) 1153 if (psmouse->cleanup)
1138 psmouse->cleanup(psmouse); 1154 psmouse->cleanup(psmouse);
1139 1155
1140 psmouse_reset(psmouse); 1156/*
1157 * Reset the mouse to defaults (bare PS/2 protocol).
1158 */
1159 ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS);
1141 1160
1142/* 1161/*
1143 * Some boxes, such as HP nx7400, get terribly confused if mouse 1162 * Some boxes, such as HP nx7400, get terribly confused if mouse
@@ -1447,24 +1466,10 @@ ssize_t psmouse_attr_show_helper(struct device *dev, struct device_attribute *de
1447 struct serio *serio = to_serio_port(dev); 1466 struct serio *serio = to_serio_port(dev);
1448 struct psmouse_attribute *attr = to_psmouse_attr(devattr); 1467 struct psmouse_attribute *attr = to_psmouse_attr(devattr);
1449 struct psmouse *psmouse; 1468 struct psmouse *psmouse;
1450 int retval;
1451
1452 retval = serio_pin_driver(serio);
1453 if (retval)
1454 return retval;
1455
1456 if (serio->drv != &psmouse_drv) {
1457 retval = -ENODEV;
1458 goto out;
1459 }
1460 1469
1461 psmouse = serio_get_drvdata(serio); 1470 psmouse = serio_get_drvdata(serio);
1462 1471
1463 retval = attr->show(psmouse, attr->data, buf); 1472 return attr->show(psmouse, attr->data, buf);
1464
1465out:
1466 serio_unpin_driver(serio);
1467 return retval;
1468} 1473}
1469 1474
1470ssize_t psmouse_attr_set_helper(struct device *dev, struct device_attribute *devattr, 1475ssize_t psmouse_attr_set_helper(struct device *dev, struct device_attribute *devattr,
@@ -1475,18 +1480,9 @@ ssize_t psmouse_attr_set_helper(struct device *dev, struct device_attribute *dev
1475 struct psmouse *psmouse, *parent = NULL; 1480 struct psmouse *psmouse, *parent = NULL;
1476 int retval; 1481 int retval;
1477 1482
1478 retval = serio_pin_driver(serio);
1479 if (retval)
1480 return retval;
1481
1482 if (serio->drv != &psmouse_drv) {
1483 retval = -ENODEV;
1484 goto out_unpin;
1485 }
1486
1487 retval = mutex_lock_interruptible(&psmouse_mutex); 1483 retval = mutex_lock_interruptible(&psmouse_mutex);
1488 if (retval) 1484 if (retval)
1489 goto out_unpin; 1485 goto out;
1490 1486
1491 psmouse = serio_get_drvdata(serio); 1487 psmouse = serio_get_drvdata(serio);
1492 1488
@@ -1516,8 +1512,7 @@ ssize_t psmouse_attr_set_helper(struct device *dev, struct device_attribute *dev
1516 1512
1517 out_unlock: 1513 out_unlock:
1518 mutex_unlock(&psmouse_mutex); 1514 mutex_unlock(&psmouse_mutex);
1519 out_unpin: 1515 out:
1520 serio_unpin_driver(serio);
1521 return retval; 1516 return retval;
1522} 1517}
1523 1518
@@ -1579,9 +1574,7 @@ static ssize_t psmouse_attr_set_protocol(struct psmouse *psmouse, void *data, co
1579 } 1574 }
1580 1575
1581 mutex_unlock(&psmouse_mutex); 1576 mutex_unlock(&psmouse_mutex);
1582 serio_unpin_driver(serio);
1583 serio_unregister_child_port(serio); 1577 serio_unregister_child_port(serio);
1584 serio_pin_driver_uninterruptible(serio);
1585 mutex_lock(&psmouse_mutex); 1578 mutex_lock(&psmouse_mutex);
1586 1579
1587 if (serio->drv != &psmouse_drv) { 1580 if (serio->drv != &psmouse_drv) {
diff --git a/drivers/input/mouse/sentelic.c b/drivers/input/mouse/sentelic.c
index 77b9fd0b3fbf..81a6b81cb2fe 100644
--- a/drivers/input/mouse/sentelic.c
+++ b/drivers/input/mouse/sentelic.c
@@ -2,7 +2,7 @@
2 * Finger Sensing Pad PS/2 mouse driver. 2 * Finger Sensing Pad PS/2 mouse driver.
3 * 3 *
4 * Copyright (C) 2005-2007 Asia Vital Components Co., Ltd. 4 * Copyright (C) 2005-2007 Asia Vital Components Co., Ltd.
5 * Copyright (C) 2005-2009 Tai-hwa Liang, Sentelic Corporation. 5 * Copyright (C) 2005-2010 Tai-hwa Liang, Sentelic Corporation.
6 * 6 *
7 * This program is free software; you can redistribute it and/or 7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License 8 * modify it under the terms of the GNU General Public License
@@ -658,9 +658,9 @@ static psmouse_ret_t fsp_process_byte(struct psmouse *psmouse)
658 if (packet[3] & BIT(1)) 658 if (packet[3] & BIT(1))
659 button_status |= 0x0f; /* wheel up */ 659 button_status |= 0x0f; /* wheel up */
660 if (packet[3] & BIT(2)) 660 if (packet[3] & BIT(2))
661 button_status |= BIT(5);/* horizontal left */ 661 button_status |= BIT(4);/* horizontal left */
662 if (packet[3] & BIT(3)) 662 if (packet[3] & BIT(3))
663 button_status |= BIT(4);/* horizontal right */ 663 button_status |= BIT(5);/* horizontal right */
664 /* push back to packet queue */ 664 /* push back to packet queue */
665 if (button_status != 0) 665 if (button_status != 0)
666 packet[3] = button_status; 666 packet[3] = button_status;
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
index 05689e732191..d3f5243fa093 100644
--- a/drivers/input/mouse/synaptics.c
+++ b/drivers/input/mouse/synaptics.c
@@ -743,6 +743,11 @@ int synaptics_init(struct psmouse *psmouse)
743 return -1; 743 return -1;
744} 744}
745 745
746bool synaptics_supported(void)
747{
748 return true;
749}
750
746#else /* CONFIG_MOUSE_PS2_SYNAPTICS */ 751#else /* CONFIG_MOUSE_PS2_SYNAPTICS */
747 752
748void __init synaptics_module_init(void) 753void __init synaptics_module_init(void)
@@ -754,5 +759,10 @@ int synaptics_init(struct psmouse *psmouse)
754 return -ENOSYS; 759 return -ENOSYS;
755} 760}
756 761
762bool synaptics_supported(void)
763{
764 return false;
765}
766
757#endif /* CONFIG_MOUSE_PS2_SYNAPTICS */ 767#endif /* CONFIG_MOUSE_PS2_SYNAPTICS */
758 768
diff --git a/drivers/input/mouse/synaptics.h b/drivers/input/mouse/synaptics.h
index 838e7f2c9b30..f0f40a331dc8 100644
--- a/drivers/input/mouse/synaptics.h
+++ b/drivers/input/mouse/synaptics.h
@@ -109,5 +109,6 @@ void synaptics_module_init(void);
109int synaptics_detect(struct psmouse *psmouse, bool set_properties); 109int synaptics_detect(struct psmouse *psmouse, bool set_properties);
110int synaptics_init(struct psmouse *psmouse); 110int synaptics_init(struct psmouse *psmouse);
111void synaptics_reset(struct psmouse *psmouse); 111void synaptics_reset(struct psmouse *psmouse);
112bool synaptics_supported(void);
112 113
113#endif /* _SYNAPTICS_H */ 114#endif /* _SYNAPTICS_H */
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
index 64b688daf48a..2a5982e532f8 100644
--- a/drivers/input/serio/i8042-x86ia64io.h
+++ b/drivers/input/serio/i8042-x86ia64io.h
@@ -524,6 +524,13 @@ static const struct dmi_system_id __initconst i8042_dmi_laptop_table[] = {
524 */ 524 */
525static const struct dmi_system_id __initconst i8042_dmi_dritek_table[] = { 525static const struct dmi_system_id __initconst i8042_dmi_dritek_table[] = {
526 { 526 {
527 /* Acer Aspire 5610 */
528 .matches = {
529 DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
530 DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5610"),
531 },
532 },
533 {
527 /* Acer Aspire 5630 */ 534 /* Acer Aspire 5630 */
528 .matches = { 535 .matches = {
529 DMI_MATCH(DMI_SYS_VENDOR, "Acer"), 536 DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index d84a36e545f6..b54aee7cd9e3 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -1161,9 +1161,17 @@ static int i8042_pm_restore(struct device *dev)
1161 return 0; 1161 return 0;
1162} 1162}
1163 1163
1164static int i8042_pm_thaw(struct device *dev)
1165{
1166 i8042_interrupt(0, NULL);
1167
1168 return 0;
1169}
1170
1164static const struct dev_pm_ops i8042_pm_ops = { 1171static const struct dev_pm_ops i8042_pm_ops = {
1165 .suspend = i8042_pm_reset, 1172 .suspend = i8042_pm_reset,
1166 .resume = i8042_pm_restore, 1173 .resume = i8042_pm_restore,
1174 .thaw = i8042_pm_thaw,
1167 .poweroff = i8042_pm_reset, 1175 .poweroff = i8042_pm_reset,
1168 .restore = i8042_pm_restore, 1176 .restore = i8042_pm_restore,
1169}; 1177};
diff --git a/drivers/input/serio/serio.c b/drivers/input/serio/serio.c
index 0236f0d5fd91..e0f30186d513 100644
--- a/drivers/input/serio/serio.c
+++ b/drivers/input/serio/serio.c
@@ -284,13 +284,7 @@ static void serio_handle_event(void)
284 284
285 mutex_lock(&serio_mutex); 285 mutex_lock(&serio_mutex);
286 286
287 /* 287 while ((event = serio_get_event())) {
288 * Note that we handle only one event here to give swsusp
289 * a chance to freeze kseriod thread. Serio events should
290 * be pretty rare so we are not concerned about taking
291 * performance hit.
292 */
293 if ((event = serio_get_event())) {
294 288
295 switch (event->type) { 289 switch (event->type) {
296 case SERIO_REGISTER_PORT: 290 case SERIO_REGISTER_PORT:
@@ -380,10 +374,9 @@ static struct serio *serio_get_pending_child(struct serio *parent)
380 374
381static int serio_thread(void *nothing) 375static int serio_thread(void *nothing)
382{ 376{
383 set_freezable();
384 do { 377 do {
385 serio_handle_event(); 378 serio_handle_event();
386 wait_event_freezable(serio_wait, 379 wait_event_interruptible(serio_wait,
387 kthread_should_stop() || !list_empty(&serio_event_list)); 380 kthread_should_stop() || !list_empty(&serio_event_list));
388 } while (!kthread_should_stop()); 381 } while (!kthread_should_stop());
389 382
diff --git a/drivers/input/touchscreen/ad7879.c b/drivers/input/touchscreen/ad7879.c
index c21e6d3a8844..794d070c6900 100644
--- a/drivers/input/touchscreen/ad7879.c
+++ b/drivers/input/touchscreen/ad7879.c
@@ -47,6 +47,7 @@
47#include <linux/workqueue.h> 47#include <linux/workqueue.h>
48#include <linux/spi/spi.h> 48#include <linux/spi/spi.h>
49#include <linux/i2c.h> 49#include <linux/i2c.h>
50#include <linux/gpio.h>
50 51
51#include <linux/spi/ad7879.h> 52#include <linux/spi/ad7879.h>
52 53
@@ -132,7 +133,9 @@ struct ad7879 {
132 struct input_dev *input; 133 struct input_dev *input;
133 struct work_struct work; 134 struct work_struct work;
134 struct timer_list timer; 135 struct timer_list timer;
135 136#ifdef CONFIG_GPIOLIB
137 struct gpio_chip gc;
138#endif
136 struct mutex mutex; 139 struct mutex mutex;
137 unsigned disabled:1; /* P: mutex */ 140 unsigned disabled:1; /* P: mutex */
138 141
@@ -150,11 +153,9 @@ struct ad7879 {
150 u8 median; 153 u8 median;
151 u16 x_plate_ohms; 154 u16 x_plate_ohms;
152 u16 pressure_max; 155 u16 pressure_max;
153 u16 gpio_init;
154 u16 cmd_crtl1; 156 u16 cmd_crtl1;
155 u16 cmd_crtl2; 157 u16 cmd_crtl2;
156 u16 cmd_crtl3; 158 u16 cmd_crtl3;
157 unsigned gpio:1;
158}; 159};
159 160
160static int ad7879_read(bus_device *, u8); 161static int ad7879_read(bus_device *, u8);
@@ -237,24 +238,6 @@ static irqreturn_t ad7879_irq(int irq, void *handle)
237 238
238static void ad7879_setup(struct ad7879 *ts) 239static void ad7879_setup(struct ad7879 *ts)
239{ 240{
240 ts->cmd_crtl3 = AD7879_YPLUS_BIT |
241 AD7879_XPLUS_BIT |
242 AD7879_Z2_BIT |
243 AD7879_Z1_BIT |
244 AD7879_TEMPMASK_BIT |
245 AD7879_AUXVBATMASK_BIT |
246 AD7879_GPIOALERTMASK_BIT;
247
248 ts->cmd_crtl2 = AD7879_PM(AD7879_PM_DYN) | AD7879_DFR |
249 AD7879_AVG(ts->averaging) |
250 AD7879_MFS(ts->median) |
251 AD7879_FCD(ts->first_conversion_delay) |
252 ts->gpio_init;
253
254 ts->cmd_crtl1 = AD7879_MODE_INT | AD7879_MODE_SEQ1 |
255 AD7879_ACQ(ts->acquisition_time) |
256 AD7879_TMR(ts->pen_down_acc_interval);
257
258 ad7879_write(ts->bus, AD7879_REG_CTRL2, ts->cmd_crtl2); 241 ad7879_write(ts->bus, AD7879_REG_CTRL2, ts->cmd_crtl2);
259 ad7879_write(ts->bus, AD7879_REG_CTRL3, ts->cmd_crtl3); 242 ad7879_write(ts->bus, AD7879_REG_CTRL3, ts->cmd_crtl3);
260 ad7879_write(ts->bus, AD7879_REG_CTRL1, ts->cmd_crtl1); 243 ad7879_write(ts->bus, AD7879_REG_CTRL1, ts->cmd_crtl1);
@@ -324,48 +307,132 @@ static ssize_t ad7879_disable_store(struct device *dev,
324 307
325static DEVICE_ATTR(disable, 0664, ad7879_disable_show, ad7879_disable_store); 308static DEVICE_ATTR(disable, 0664, ad7879_disable_show, ad7879_disable_store);
326 309
327static ssize_t ad7879_gpio_show(struct device *dev, 310static struct attribute *ad7879_attributes[] = {
328 struct device_attribute *attr, char *buf) 311 &dev_attr_disable.attr,
312 NULL
313};
314
315static const struct attribute_group ad7879_attr_group = {
316 .attrs = ad7879_attributes,
317};
318
319#ifdef CONFIG_GPIOLIB
320static int ad7879_gpio_direction_input(struct gpio_chip *chip,
321 unsigned gpio)
329{ 322{
330 struct ad7879 *ts = dev_get_drvdata(dev); 323 struct ad7879 *ts = container_of(chip, struct ad7879, gc);
324 int err;
331 325
332 return sprintf(buf, "%u\n", ts->gpio); 326 mutex_lock(&ts->mutex);
327 ts->cmd_crtl2 |= AD7879_GPIO_EN | AD7879_GPIODIR | AD7879_GPIOPOL;
328 err = ad7879_write(ts->bus, AD7879_REG_CTRL2, ts->cmd_crtl2);
329 mutex_unlock(&ts->mutex);
330
331 return err;
333} 332}
334 333
335static ssize_t ad7879_gpio_store(struct device *dev, 334static int ad7879_gpio_direction_output(struct gpio_chip *chip,
336 struct device_attribute *attr, 335 unsigned gpio, int level)
337 const char *buf, size_t count)
338{ 336{
339 struct ad7879 *ts = dev_get_drvdata(dev); 337 struct ad7879 *ts = container_of(chip, struct ad7879, gc);
340 unsigned long val; 338 int err;
341 int error;
342 339
343 error = strict_strtoul(buf, 10, &val); 340 mutex_lock(&ts->mutex);
344 if (error) 341 ts->cmd_crtl2 &= ~AD7879_GPIODIR;
345 return error; 342 ts->cmd_crtl2 |= AD7879_GPIO_EN | AD7879_GPIOPOL;
343 if (level)
344 ts->cmd_crtl2 |= AD7879_GPIO_DATA;
345 else
346 ts->cmd_crtl2 &= ~AD7879_GPIO_DATA;
347
348 err = ad7879_write(ts->bus, AD7879_REG_CTRL2, ts->cmd_crtl2);
349 mutex_unlock(&ts->mutex);
350
351 return err;
352}
353
354static int ad7879_gpio_get_value(struct gpio_chip *chip, unsigned gpio)
355{
356 struct ad7879 *ts = container_of(chip, struct ad7879, gc);
357 u16 val;
346 358
347 mutex_lock(&ts->mutex); 359 mutex_lock(&ts->mutex);
348 ts->gpio = !!val; 360 val = ad7879_read(ts->bus, AD7879_REG_CTRL2);
349 error = ad7879_write(ts->bus, AD7879_REG_CTRL2,
350 ts->gpio ?
351 ts->cmd_crtl2 & ~AD7879_GPIO_DATA :
352 ts->cmd_crtl2 | AD7879_GPIO_DATA);
353 mutex_unlock(&ts->mutex); 361 mutex_unlock(&ts->mutex);
354 362
355 return error ? : count; 363 return !!(val & AD7879_GPIO_DATA);
356} 364}
357 365
358static DEVICE_ATTR(gpio, 0664, ad7879_gpio_show, ad7879_gpio_store); 366static void ad7879_gpio_set_value(struct gpio_chip *chip,
367 unsigned gpio, int value)
368{
369 struct ad7879 *ts = container_of(chip, struct ad7879, gc);
359 370
360static struct attribute *ad7879_attributes[] = { 371 mutex_lock(&ts->mutex);
361 &dev_attr_disable.attr, 372 if (value)
362 &dev_attr_gpio.attr, 373 ts->cmd_crtl2 |= AD7879_GPIO_DATA;
363 NULL 374 else
364}; 375 ts->cmd_crtl2 &= ~AD7879_GPIO_DATA;
365 376
366static const struct attribute_group ad7879_attr_group = { 377 ad7879_write(ts->bus, AD7879_REG_CTRL2, ts->cmd_crtl2);
367 .attrs = ad7879_attributes, 378 mutex_unlock(&ts->mutex);
368}; 379}
380
381static int __devinit ad7879_gpio_add(struct device *dev)
382{
383 struct ad7879 *ts = dev_get_drvdata(dev);
384 struct ad7879_platform_data *pdata = dev->platform_data;
385 int ret = 0;
386
387 if (pdata->gpio_export) {
388 ts->gc.direction_input = ad7879_gpio_direction_input;
389 ts->gc.direction_output = ad7879_gpio_direction_output;
390 ts->gc.get = ad7879_gpio_get_value;
391 ts->gc.set = ad7879_gpio_set_value;
392 ts->gc.can_sleep = 1;
393 ts->gc.base = pdata->gpio_base;
394 ts->gc.ngpio = 1;
395 ts->gc.label = "AD7879-GPIO";
396 ts->gc.owner = THIS_MODULE;
397 ts->gc.dev = dev;
398
399 ret = gpiochip_add(&ts->gc);
400 if (ret)
401 dev_err(dev, "failed to register gpio %d\n",
402 ts->gc.base);
403 }
404
405 return ret;
406}
407
408/*
409 * We mark ad7879_gpio_remove inline so there is a chance the code
410 * gets discarded when not needed. We can't do __devinit/__devexit
411 * markup since it is used in both probe and remove methods.
412 */
413static inline void ad7879_gpio_remove(struct device *dev)
414{
415 struct ad7879 *ts = dev_get_drvdata(dev);
416 struct ad7879_platform_data *pdata = dev->platform_data;
417 int ret;
418
419 if (pdata->gpio_export) {
420 ret = gpiochip_remove(&ts->gc);
421 if (ret)
422 dev_err(dev, "failed to remove gpio %d\n",
423 ts->gc.base);
424 }
425}
426#else
427static inline int ad7879_gpio_add(struct device *dev)
428{
429 return 0;
430}
431
432static inline void ad7879_gpio_remove(struct device *dev)
433{
434}
435#endif
369 436
370static int __devinit ad7879_construct(bus_device *bus, struct ad7879 *ts) 437static int __devinit ad7879_construct(bus_device *bus, struct ad7879 *ts)
371{ 438{
@@ -403,12 +470,6 @@ static int __devinit ad7879_construct(bus_device *bus, struct ad7879 *ts)
403 ts->pen_down_acc_interval = pdata->pen_down_acc_interval; 470 ts->pen_down_acc_interval = pdata->pen_down_acc_interval;
404 ts->median = pdata->median; 471 ts->median = pdata->median;
405 472
406 if (pdata->gpio_output)
407 ts->gpio_init = AD7879_GPIO_EN |
408 (pdata->gpio_default ? 0 : AD7879_GPIO_DATA);
409 else
410 ts->gpio_init = AD7879_GPIO_EN | AD7879_GPIODIR;
411
412 snprintf(ts->phys, sizeof(ts->phys), "%s/input0", dev_name(&bus->dev)); 473 snprintf(ts->phys, sizeof(ts->phys), "%s/input0", dev_name(&bus->dev));
413 474
414 input_dev->name = "AD7879 Touchscreen"; 475 input_dev->name = "AD7879 Touchscreen";
@@ -446,6 +507,23 @@ static int __devinit ad7879_construct(bus_device *bus, struct ad7879 *ts)
446 goto err_free_mem; 507 goto err_free_mem;
447 } 508 }
448 509
510 ts->cmd_crtl3 = AD7879_YPLUS_BIT |
511 AD7879_XPLUS_BIT |
512 AD7879_Z2_BIT |
513 AD7879_Z1_BIT |
514 AD7879_TEMPMASK_BIT |
515 AD7879_AUXVBATMASK_BIT |
516 AD7879_GPIOALERTMASK_BIT;
517
518 ts->cmd_crtl2 = AD7879_PM(AD7879_PM_DYN) | AD7879_DFR |
519 AD7879_AVG(ts->averaging) |
520 AD7879_MFS(ts->median) |
521 AD7879_FCD(ts->first_conversion_delay);
522
523 ts->cmd_crtl1 = AD7879_MODE_INT | AD7879_MODE_SEQ1 |
524 AD7879_ACQ(ts->acquisition_time) |
525 AD7879_TMR(ts->pen_down_acc_interval);
526
449 ad7879_setup(ts); 527 ad7879_setup(ts);
450 528
451 err = request_irq(bus->irq, ad7879_irq, 529 err = request_irq(bus->irq, ad7879_irq,
@@ -460,15 +538,21 @@ static int __devinit ad7879_construct(bus_device *bus, struct ad7879 *ts)
460 if (err) 538 if (err)
461 goto err_free_irq; 539 goto err_free_irq;
462 540
463 err = input_register_device(input_dev); 541 err = ad7879_gpio_add(&bus->dev);
464 if (err) 542 if (err)
465 goto err_remove_attr; 543 goto err_remove_attr;
466 544
545 err = input_register_device(input_dev);
546 if (err)
547 goto err_remove_gpio;
548
467 dev_info(&bus->dev, "Rev.%d touchscreen, irq %d\n", 549 dev_info(&bus->dev, "Rev.%d touchscreen, irq %d\n",
468 revid >> 8, bus->irq); 550 revid >> 8, bus->irq);
469 551
470 return 0; 552 return 0;
471 553
554err_remove_gpio:
555 ad7879_gpio_remove(&bus->dev);
472err_remove_attr: 556err_remove_attr:
473 sysfs_remove_group(&bus->dev.kobj, &ad7879_attr_group); 557 sysfs_remove_group(&bus->dev.kobj, &ad7879_attr_group);
474err_free_irq: 558err_free_irq:
@@ -481,6 +565,7 @@ err_free_mem:
481 565
482static int __devexit ad7879_destroy(bus_device *bus, struct ad7879 *ts) 566static int __devexit ad7879_destroy(bus_device *bus, struct ad7879 *ts)
483{ 567{
568 ad7879_gpio_remove(&bus->dev);
484 ad7879_disable(ts); 569 ad7879_disable(ts);
485 sysfs_remove_group(&ts->bus->dev.kobj, &ad7879_attr_group); 570 sysfs_remove_group(&ts->bus->dev.kobj, &ad7879_attr_group);
486 free_irq(ts->bus->irq, ts); 571 free_irq(ts->bus->irq, ts);
diff --git a/drivers/input/touchscreen/usbtouchscreen.c b/drivers/input/touchscreen/usbtouchscreen.c
index 09a5e7341bd5..5256123a5228 100644
--- a/drivers/input/touchscreen/usbtouchscreen.c
+++ b/drivers/input/touchscreen/usbtouchscreen.c
@@ -618,8 +618,8 @@ static int idealtek_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
618#ifdef CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH 618#ifdef CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH
619static int general_touch_read_data(struct usbtouch_usb *dev, unsigned char *pkt) 619static int general_touch_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
620{ 620{
621 dev->x = ((pkt[2] & 0x0F) << 8) | pkt[1] ; 621 dev->x = (pkt[2] << 8) | pkt[1];
622 dev->y = ((pkt[4] & 0x0F) << 8) | pkt[3] ; 622 dev->y = (pkt[4] << 8) | pkt[3];
623 dev->press = pkt[5] & 0xff; 623 dev->press = pkt[5] & 0xff;
624 dev->touch = pkt[0] & 0x01; 624 dev->touch = pkt[0] & 0x01;
625 625
@@ -809,9 +809,9 @@ static struct usbtouch_device_info usbtouch_dev_info[] = {
809#ifdef CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH 809#ifdef CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH
810 [DEVTYPE_GENERAL_TOUCH] = { 810 [DEVTYPE_GENERAL_TOUCH] = {
811 .min_xc = 0x0, 811 .min_xc = 0x0,
812 .max_xc = 0x0500, 812 .max_xc = 0x7fff,
813 .min_yc = 0x0, 813 .min_yc = 0x0,
814 .max_yc = 0x0500, 814 .max_yc = 0x7fff,
815 .rept_size = 7, 815 .rept_size = 7,
816 .read_data = general_touch_read_data, 816 .read_data = general_touch_read_data,
817 }, 817 },
diff --git a/drivers/isdn/hardware/mISDN/hfcmulti.c b/drivers/isdn/hardware/mISDN/hfcmulti.c
index a6624ad252c5..1a1420d7a828 100644
--- a/drivers/isdn/hardware/mISDN/hfcmulti.c
+++ b/drivers/isdn/hardware/mISDN/hfcmulti.c
@@ -3152,7 +3152,7 @@ static void
3152hfcmulti_pcm(struct hfc_multi *hc, int ch, int slot_tx, int bank_tx, 3152hfcmulti_pcm(struct hfc_multi *hc, int ch, int slot_tx, int bank_tx,
3153 int slot_rx, int bank_rx) 3153 int slot_rx, int bank_rx)
3154{ 3154{
3155 if (slot_rx < 0 || slot_rx < 0 || bank_tx < 0 || bank_rx < 0) { 3155 if (slot_tx < 0 || slot_rx < 0 || bank_tx < 0 || bank_rx < 0) {
3156 /* disable PCM */ 3156 /* disable PCM */
3157 mode_hfcmulti(hc, ch, hc->chan[ch].protocol, -1, 0, -1, 0); 3157 mode_hfcmulti(hc, ch, hc->chan[ch].protocol, -1, 0, -1, 0);
3158 return; 3158 return;
diff --git a/drivers/lguest/segments.c b/drivers/lguest/segments.c
index 951c57b0a7e0..ede46581351a 100644
--- a/drivers/lguest/segments.c
+++ b/drivers/lguest/segments.c
@@ -179,8 +179,10 @@ void load_guest_gdt_entry(struct lg_cpu *cpu, u32 num, u32 lo, u32 hi)
179 * We assume the Guest has the same number of GDT entries as the 179 * We assume the Guest has the same number of GDT entries as the
180 * Host, otherwise we'd have to dynamically allocate the Guest GDT. 180 * Host, otherwise we'd have to dynamically allocate the Guest GDT.
181 */ 181 */
182 if (num >= ARRAY_SIZE(cpu->arch.gdt)) 182 if (num >= ARRAY_SIZE(cpu->arch.gdt)) {
183 kill_guest(cpu, "too many gdt entries %i", num); 183 kill_guest(cpu, "too many gdt entries %i", num);
184 return;
185 }
184 186
185 /* Set it up, then fix it. */ 187 /* Set it up, then fix it. */
186 cpu->arch.gdt[num].a = lo; 188 cpu->arch.gdt[num].a = lo;
diff --git a/drivers/macintosh/smu.c b/drivers/macintosh/smu.c
index 96faa799b82a..f96feeb6b9ce 100644
--- a/drivers/macintosh/smu.c
+++ b/drivers/macintosh/smu.c
@@ -660,7 +660,7 @@ static int smu_platform_probe(struct of_device* dev,
660 return 0; 660 return 0;
661} 661}
662 662
663static struct of_device_id smu_platform_match[] = 663static const struct of_device_id smu_platform_match[] =
664{ 664{
665 { 665 {
666 .type = "smu", 666 .type = "smu",
diff --git a/drivers/macintosh/therm_pm72.c b/drivers/macintosh/therm_pm72.c
index ea32c7e5a9af..454bc501df3c 100644
--- a/drivers/macintosh/therm_pm72.c
+++ b/drivers/macintosh/therm_pm72.c
@@ -2211,7 +2211,7 @@ static int fcu_of_remove(struct of_device* dev)
2211 return 0; 2211 return 0;
2212} 2212}
2213 2213
2214static struct of_device_id fcu_match[] = 2214static const struct of_device_id fcu_match[] =
2215{ 2215{
2216 { 2216 {
2217 .type = "fcu", 2217 .type = "fcu",
diff --git a/drivers/macintosh/therm_windtunnel.c b/drivers/macintosh/therm_windtunnel.c
index 3fbe41b0ac07..ba48fd76396e 100644
--- a/drivers/macintosh/therm_windtunnel.c
+++ b/drivers/macintosh/therm_windtunnel.c
@@ -457,7 +457,7 @@ therm_of_remove( struct of_device *dev )
457 return 0; 457 return 0;
458} 458}
459 459
460static struct of_device_id therm_of_match[] = {{ 460static const struct of_device_id therm_of_match[] = {{
461 .name = "fan", 461 .name = "fan",
462 .compatible = "adm1030" 462 .compatible = "adm1030"
463 }, {} 463 }, {}
diff --git a/drivers/md/dm-log-userspace-transfer.c b/drivers/md/dm-log-userspace-transfer.c
index 54abf9e303b7..f1c8cae70b4b 100644
--- a/drivers/md/dm-log-userspace-transfer.c
+++ b/drivers/md/dm-log-userspace-transfer.c
@@ -172,11 +172,15 @@ int dm_consult_userspace(const char *uuid, uint64_t luid, int request_type,
172{ 172{
173 int r = 0; 173 int r = 0;
174 size_t dummy = 0; 174 size_t dummy = 0;
175 int overhead_size = 175 int overhead_size = sizeof(struct dm_ulog_request) + sizeof(struct cn_msg);
176 sizeof(struct dm_ulog_request *) + sizeof(struct cn_msg);
177 struct dm_ulog_request *tfr = prealloced_ulog_tfr; 176 struct dm_ulog_request *tfr = prealloced_ulog_tfr;
178 struct receiving_pkg pkg; 177 struct receiving_pkg pkg;
179 178
179 /*
180 * Given the space needed to hold the 'struct cn_msg' and
181 * 'struct dm_ulog_request' - do we have enough payload
182 * space remaining?
183 */
180 if (data_size > (DM_ULOG_PREALLOCED_SIZE - overhead_size)) { 184 if (data_size > (DM_ULOG_PREALLOCED_SIZE - overhead_size)) {
181 DMINFO("Size of tfr exceeds preallocated size"); 185 DMINFO("Size of tfr exceeds preallocated size");
182 return -EINVAL; 186 return -EINVAL;
@@ -191,7 +195,7 @@ resend:
191 */ 195 */
192 mutex_lock(&dm_ulog_lock); 196 mutex_lock(&dm_ulog_lock);
193 197
194 memset(tfr, 0, DM_ULOG_PREALLOCED_SIZE - overhead_size); 198 memset(tfr, 0, DM_ULOG_PREALLOCED_SIZE - sizeof(struct cn_msg));
195 memcpy(tfr->uuid, uuid, DM_UUID_LEN); 199 memcpy(tfr->uuid, uuid, DM_UUID_LEN);
196 tfr->luid = luid; 200 tfr->luid = luid;
197 tfr->seq = dm_ulog_seq++; 201 tfr->seq = dm_ulog_seq++;
diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c
index ad779bd13aec..6c1046df81f6 100644
--- a/drivers/md/dm-raid1.c
+++ b/drivers/md/dm-raid1.c
@@ -724,7 +724,7 @@ static void do_writes(struct mirror_set *ms, struct bio_list *writes)
724 /* 724 /*
725 * Dispatch io. 725 * Dispatch io.
726 */ 726 */
727 if (unlikely(ms->log_failure)) { 727 if (unlikely(ms->log_failure) && errors_handled(ms)) {
728 spin_lock_irq(&ms->lock); 728 spin_lock_irq(&ms->lock);
729 bio_list_merge(&ms->failures, &sync); 729 bio_list_merge(&ms->failures, &sync);
730 spin_unlock_irq(&ms->lock); 730 spin_unlock_irq(&ms->lock);
diff --git a/drivers/md/dm-region-hash.c b/drivers/md/dm-region-hash.c
index 5f19ceb6fe91..168bd38f5006 100644
--- a/drivers/md/dm-region-hash.c
+++ b/drivers/md/dm-region-hash.c
@@ -660,10 +660,9 @@ void dm_rh_recovery_end(struct dm_region *reg, int success)
660 spin_lock_irq(&rh->region_lock); 660 spin_lock_irq(&rh->region_lock);
661 if (success) 661 if (success)
662 list_add(&reg->list, &reg->rh->recovered_regions); 662 list_add(&reg->list, &reg->rh->recovered_regions);
663 else { 663 else
664 reg->state = DM_RH_NOSYNC;
665 list_add(&reg->list, &reg->rh->failed_recovered_regions); 664 list_add(&reg->list, &reg->rh->failed_recovered_regions);
666 } 665
667 spin_unlock_irq(&rh->region_lock); 666 spin_unlock_irq(&rh->region_lock);
668 667
669 rh->wakeup_workers(rh->context); 668 rh->wakeup_workers(rh->context);
diff --git a/drivers/md/dm-snap-persistent.c b/drivers/md/dm-snap-persistent.c
index 7d08879689ac..c097d8a4823d 100644
--- a/drivers/md/dm-snap-persistent.c
+++ b/drivers/md/dm-snap-persistent.c
@@ -254,7 +254,7 @@ static int chunk_io(struct pstore *ps, void *area, chunk_t chunk, int rw,
254 * Issue the synchronous I/O from a different thread 254 * Issue the synchronous I/O from a different thread
255 * to avoid generic_make_request recursion. 255 * to avoid generic_make_request recursion.
256 */ 256 */
257 INIT_WORK(&req.work, do_metadata); 257 INIT_WORK_ON_STACK(&req.work, do_metadata);
258 queue_work(ps->metadata_wq, &req.work); 258 queue_work(ps->metadata_wq, &req.work);
259 flush_workqueue(ps->metadata_wq); 259 flush_workqueue(ps->metadata_wq);
260 260
diff --git a/drivers/md/dm-stripe.c b/drivers/md/dm-stripe.c
index e0efc1adcaff..bd58703ee8f6 100644
--- a/drivers/md/dm-stripe.c
+++ b/drivers/md/dm-stripe.c
@@ -110,7 +110,7 @@ static int stripe_ctr(struct dm_target *ti, unsigned int argc, char **argv)
110 } 110 }
111 111
112 stripes = simple_strtoul(argv[0], &end, 10); 112 stripes = simple_strtoul(argv[0], &end, 10);
113 if (*end) { 113 if (!stripes || *end) {
114 ti->error = "Invalid stripe count"; 114 ti->error = "Invalid stripe count";
115 return -EINVAL; 115 return -EINVAL;
116 } 116 }
diff --git a/drivers/md/dm-sysfs.c b/drivers/md/dm-sysfs.c
index f53392df7b97..f91b40942e07 100644
--- a/drivers/md/dm-sysfs.c
+++ b/drivers/md/dm-sysfs.c
@@ -80,20 +80,12 @@ static struct sysfs_ops dm_sysfs_ops = {
80}; 80};
81 81
82/* 82/*
83 * The sysfs structure is embedded in md struct, nothing to do here
84 */
85static void dm_sysfs_release(struct kobject *kobj)
86{
87}
88
89/*
90 * dm kobject is embedded in mapped_device structure 83 * dm kobject is embedded in mapped_device structure
91 * no need to define release function here 84 * no need to define release function here
92 */ 85 */
93static struct kobj_type dm_ktype = { 86static struct kobj_type dm_ktype = {
94 .sysfs_ops = &dm_sysfs_ops, 87 .sysfs_ops = &dm_sysfs_ops,
95 .default_attrs = dm_attrs, 88 .default_attrs = dm_attrs,
96 .release = dm_sysfs_release
97}; 89};
98 90
99/* 91/*
diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
index be625475cf6d..4b22feb01a0c 100644
--- a/drivers/md/dm-table.c
+++ b/drivers/md/dm-table.c
@@ -503,16 +503,15 @@ int dm_set_device_limits(struct dm_target *ti, struct dm_dev *dev,
503 return 0; 503 return 0;
504 } 504 }
505 505
506 if (blk_stack_limits(limits, &q->limits, start << 9) < 0) 506 if (bdev_stack_limits(limits, bdev, start) < 0)
507 DMWARN("%s: target device %s is misaligned: " 507 DMWARN("%s: adding target device %s caused an alignment inconsistency: "
508 "physical_block_size=%u, logical_block_size=%u, " 508 "physical_block_size=%u, logical_block_size=%u, "
509 "alignment_offset=%u, start=%llu", 509 "alignment_offset=%u, start=%llu",
510 dm_device_name(ti->table->md), bdevname(bdev, b), 510 dm_device_name(ti->table->md), bdevname(bdev, b),
511 q->limits.physical_block_size, 511 q->limits.physical_block_size,
512 q->limits.logical_block_size, 512 q->limits.logical_block_size,
513 q->limits.alignment_offset, 513 q->limits.alignment_offset,
514 (unsigned long long) start << 9); 514 (unsigned long long) start << SECTOR_SHIFT);
515
516 515
517 /* 516 /*
518 * Check if merge fn is supported. 517 * Check if merge fn is supported.
@@ -1026,9 +1025,9 @@ combine_limits:
1026 * for the table. 1025 * for the table.
1027 */ 1026 */
1028 if (blk_stack_limits(limits, &ti_limits, 0) < 0) 1027 if (blk_stack_limits(limits, &ti_limits, 0) < 0)
1029 DMWARN("%s: target device " 1028 DMWARN("%s: adding target device "
1030 "(start sect %llu len %llu) " 1029 "(start sect %llu len %llu) "
1031 "is misaligned", 1030 "caused an alignment inconsistency",
1032 dm_device_name(table->md), 1031 dm_device_name(table->md),
1033 (unsigned long long) ti->begin, 1032 (unsigned long long) ti->begin,
1034 (unsigned long long) ti->len); 1033 (unsigned long long) ti->len);
@@ -1080,15 +1079,6 @@ void dm_table_set_restrictions(struct dm_table *t, struct request_queue *q,
1080 struct queue_limits *limits) 1079 struct queue_limits *limits)
1081{ 1080{
1082 /* 1081 /*
1083 * Each target device in the table has a data area that should normally
1084 * be aligned such that the DM device's alignment_offset is 0.
1085 * FIXME: Propagate alignment_offsets up the stack and warn of
1086 * sub-optimal or inconsistent settings.
1087 */
1088 limits->alignment_offset = 0;
1089 limits->misaligned = 0;
1090
1091 /*
1092 * Copy table's limits to the DM device's request_queue 1082 * Copy table's limits to the DM device's request_queue
1093 */ 1083 */
1094 q->limits = *limits; 1084 q->limits = *limits;
diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index 3167480b532c..aa4e2aa86d49 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -1595,10 +1595,15 @@ static int dm_prep_fn(struct request_queue *q, struct request *rq)
1595 return BLKPREP_OK; 1595 return BLKPREP_OK;
1596} 1596}
1597 1597
1598static void map_request(struct dm_target *ti, struct request *clone, 1598/*
1599 struct mapped_device *md) 1599 * Returns:
1600 * 0 : the request has been processed (not requeued)
1601 * !0 : the request has been requeued
1602 */
1603static int map_request(struct dm_target *ti, struct request *clone,
1604 struct mapped_device *md)
1600{ 1605{
1601 int r; 1606 int r, requeued = 0;
1602 struct dm_rq_target_io *tio = clone->end_io_data; 1607 struct dm_rq_target_io *tio = clone->end_io_data;
1603 1608
1604 /* 1609 /*
@@ -1625,6 +1630,7 @@ static void map_request(struct dm_target *ti, struct request *clone,
1625 case DM_MAPIO_REQUEUE: 1630 case DM_MAPIO_REQUEUE:
1626 /* The target wants to requeue the I/O */ 1631 /* The target wants to requeue the I/O */
1627 dm_requeue_unmapped_request(clone); 1632 dm_requeue_unmapped_request(clone);
1633 requeued = 1;
1628 break; 1634 break;
1629 default: 1635 default:
1630 if (r > 0) { 1636 if (r > 0) {
@@ -1636,6 +1642,8 @@ static void map_request(struct dm_target *ti, struct request *clone,
1636 dm_kill_unmapped_request(clone, r); 1642 dm_kill_unmapped_request(clone, r);
1637 break; 1643 break;
1638 } 1644 }
1645
1646 return requeued;
1639} 1647}
1640 1648
1641/* 1649/*
@@ -1677,12 +1685,17 @@ static void dm_request_fn(struct request_queue *q)
1677 atomic_inc(&md->pending[rq_data_dir(clone)]); 1685 atomic_inc(&md->pending[rq_data_dir(clone)]);
1678 1686
1679 spin_unlock(q->queue_lock); 1687 spin_unlock(q->queue_lock);
1680 map_request(ti, clone, md); 1688 if (map_request(ti, clone, md))
1689 goto requeued;
1690
1681 spin_lock_irq(q->queue_lock); 1691 spin_lock_irq(q->queue_lock);
1682 } 1692 }
1683 1693
1684 goto out; 1694 goto out;
1685 1695
1696requeued:
1697 spin_lock_irq(q->queue_lock);
1698
1686plug_and_out: 1699plug_and_out:
1687 if (!elv_queue_empty(q)) 1700 if (!elv_queue_empty(q))
1688 /* Some requests still remain, retry later */ 1701 /* Some requests still remain, retry later */
diff --git a/drivers/md/md.c b/drivers/md/md.c
index f4f5f82f9f53..a20a71e5efd3 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -386,7 +386,9 @@ static void mddev_put(mddev_t *mddev)
386 if (!atomic_dec_and_lock(&mddev->active, &all_mddevs_lock)) 386 if (!atomic_dec_and_lock(&mddev->active, &all_mddevs_lock))
387 return; 387 return;
388 if (!mddev->raid_disks && list_empty(&mddev->disks) && 388 if (!mddev->raid_disks && list_empty(&mddev->disks) &&
389 !mddev->hold_active) { 389 mddev->ctime == 0 && !mddev->hold_active) {
390 /* Array is not configured at all, and not held active,
391 * so destroy it */
390 list_del(&mddev->all_mddevs); 392 list_del(&mddev->all_mddevs);
391 if (mddev->gendisk) { 393 if (mddev->gendisk) {
392 /* we did a probe so need to clean up. 394 /* we did a probe so need to clean up.
@@ -4073,8 +4075,10 @@ static void mddev_delayed_delete(struct work_struct *ws)
4073{ 4075{
4074 mddev_t *mddev = container_of(ws, mddev_t, del_work); 4076 mddev_t *mddev = container_of(ws, mddev_t, del_work);
4075 4077
4076 if (mddev->private == &md_redundancy_group) { 4078 if (mddev->private) {
4077 sysfs_remove_group(&mddev->kobj, &md_redundancy_group); 4079 sysfs_remove_group(&mddev->kobj, &md_redundancy_group);
4080 if (mddev->private != (void*)1)
4081 sysfs_remove_group(&mddev->kobj, mddev->private);
4078 if (mddev->sysfs_action) 4082 if (mddev->sysfs_action)
4079 sysfs_put(mddev->sysfs_action); 4083 sysfs_put(mddev->sysfs_action);
4080 mddev->sysfs_action = NULL; 4084 mddev->sysfs_action = NULL;
@@ -4285,10 +4289,7 @@ static int do_md_run(mddev_t * mddev)
4285 sysfs_notify_dirent(rdev->sysfs_state); 4289 sysfs_notify_dirent(rdev->sysfs_state);
4286 } 4290 }
4287 4291
4288 md_probe(mddev->unit, NULL, NULL);
4289 disk = mddev->gendisk; 4292 disk = mddev->gendisk;
4290 if (!disk)
4291 return -ENOMEM;
4292 4293
4293 spin_lock(&pers_lock); 4294 spin_lock(&pers_lock);
4294 pers = find_pers(mddev->level, mddev->clevel); 4295 pers = find_pers(mddev->level, mddev->clevel);
@@ -4355,7 +4356,7 @@ static int do_md_run(mddev_t * mddev)
4355 mddev->barriers_work = 1; 4356 mddev->barriers_work = 1;
4356 mddev->ok_start_degraded = start_dirty_degraded; 4357 mddev->ok_start_degraded = start_dirty_degraded;
4357 4358
4358 if (start_readonly) 4359 if (start_readonly && mddev->ro == 0)
4359 mddev->ro = 2; /* read-only, but switch on first write */ 4360 mddev->ro = 2; /* read-only, but switch on first write */
4360 4361
4361 err = mddev->pers->run(mddev); 4362 err = mddev->pers->run(mddev);
@@ -4419,33 +4420,6 @@ static int do_md_run(mddev_t * mddev)
4419 4420
4420 set_capacity(disk, mddev->array_sectors); 4421 set_capacity(disk, mddev->array_sectors);
4421 4422
4422 /* If there is a partially-recovered drive we need to
4423 * start recovery here. If we leave it to md_check_recovery,
4424 * it will remove the drives and not do the right thing
4425 */
4426 if (mddev->degraded && !mddev->sync_thread) {
4427 int spares = 0;
4428 list_for_each_entry(rdev, &mddev->disks, same_set)
4429 if (rdev->raid_disk >= 0 &&
4430 !test_bit(In_sync, &rdev->flags) &&
4431 !test_bit(Faulty, &rdev->flags))
4432 /* complete an interrupted recovery */
4433 spares++;
4434 if (spares && mddev->pers->sync_request) {
4435 mddev->recovery = 0;
4436 set_bit(MD_RECOVERY_RUNNING, &mddev->recovery);
4437 mddev->sync_thread = md_register_thread(md_do_sync,
4438 mddev,
4439 "resync");
4440 if (!mddev->sync_thread) {
4441 printk(KERN_ERR "%s: could not start resync"
4442 " thread...\n",
4443 mdname(mddev));
4444 /* leave the spares where they are, it shouldn't hurt */
4445 mddev->recovery = 0;
4446 }
4447 }
4448 }
4449 md_wakeup_thread(mddev->thread); 4423 md_wakeup_thread(mddev->thread);
4450 md_wakeup_thread(mddev->sync_thread); /* possibly kick off a reshape */ 4424 md_wakeup_thread(mddev->sync_thread); /* possibly kick off a reshape */
4451 4425
@@ -4555,8 +4529,8 @@ static int do_md_stop(mddev_t * mddev, int mode, int is_open)
4555 mddev->queue->unplug_fn = NULL; 4529 mddev->queue->unplug_fn = NULL;
4556 mddev->queue->backing_dev_info.congested_fn = NULL; 4530 mddev->queue->backing_dev_info.congested_fn = NULL;
4557 module_put(mddev->pers->owner); 4531 module_put(mddev->pers->owner);
4558 if (mddev->pers->sync_request) 4532 if (mddev->pers->sync_request && mddev->private == NULL)
4559 mddev->private = &md_redundancy_group; 4533 mddev->private = (void*)1;
4560 mddev->pers = NULL; 4534 mddev->pers = NULL;
4561 /* tell userspace to handle 'inactive' */ 4535 /* tell userspace to handle 'inactive' */
4562 sysfs_notify_dirent(mddev->sysfs_state); 4536 sysfs_notify_dirent(mddev->sysfs_state);
@@ -4603,9 +4577,6 @@ out:
4603 } 4577 }
4604 mddev->bitmap_info.offset = 0; 4578 mddev->bitmap_info.offset = 0;
4605 4579
4606 /* make sure all md_delayed_delete calls have finished */
4607 flush_scheduled_work();
4608
4609 export_array(mddev); 4580 export_array(mddev);
4610 4581
4611 mddev->array_sectors = 0; 4582 mddev->array_sectors = 0;
@@ -5262,6 +5233,10 @@ static int set_array_info(mddev_t * mddev, mdu_array_info_t *info)
5262 mddev->minor_version = info->minor_version; 5233 mddev->minor_version = info->minor_version;
5263 mddev->patch_version = info->patch_version; 5234 mddev->patch_version = info->patch_version;
5264 mddev->persistent = !info->not_persistent; 5235 mddev->persistent = !info->not_persistent;
5236 /* ensure mddev_put doesn't delete this now that there
5237 * is some minimal configuration.
5238 */
5239 mddev->ctime = get_seconds();
5265 return 0; 5240 return 0;
5266 } 5241 }
5267 mddev->major_version = MD_MAJOR_VERSION; 5242 mddev->major_version = MD_MAJOR_VERSION;
@@ -6494,10 +6469,11 @@ void md_do_sync(mddev_t *mddev)
6494 mddev->curr_resync = 2; 6469 mddev->curr_resync = 2;
6495 6470
6496 try_again: 6471 try_again:
6497 if (kthread_should_stop()) { 6472 if (kthread_should_stop())
6498 set_bit(MD_RECOVERY_INTR, &mddev->recovery); 6473 set_bit(MD_RECOVERY_INTR, &mddev->recovery);
6474
6475 if (test_bit(MD_RECOVERY_INTR, &mddev->recovery))
6499 goto skip; 6476 goto skip;
6500 }
6501 for_each_mddev(mddev2, tmp) { 6477 for_each_mddev(mddev2, tmp) {
6502 if (mddev2 == mddev) 6478 if (mddev2 == mddev)
6503 continue; 6479 continue;
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index e84204eb12df..ceb24afdc147 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -5136,9 +5136,8 @@ static int stop(mddev_t *mddev)
5136 mddev->thread = NULL; 5136 mddev->thread = NULL;
5137 mddev->queue->backing_dev_info.congested_fn = NULL; 5137 mddev->queue->backing_dev_info.congested_fn = NULL;
5138 blk_sync_queue(mddev->queue); /* the unplug fn references 'conf'*/ 5138 blk_sync_queue(mddev->queue); /* the unplug fn references 'conf'*/
5139 sysfs_remove_group(&mddev->kobj, &raid5_attrs_group);
5140 free_conf(conf); 5139 free_conf(conf);
5141 mddev->private = NULL; 5140 mddev->private = &raid5_attrs_group;
5142 return 0; 5141 return 0;
5143} 5142}
5144 5143
@@ -5464,11 +5463,11 @@ static int raid5_start_reshape(mddev_t *mddev)
5464 !test_bit(Faulty, &rdev->flags)) { 5463 !test_bit(Faulty, &rdev->flags)) {
5465 if (raid5_add_disk(mddev, rdev) == 0) { 5464 if (raid5_add_disk(mddev, rdev) == 0) {
5466 char nm[20]; 5465 char nm[20];
5467 if (rdev->raid_disk >= conf->previous_raid_disks) 5466 if (rdev->raid_disk >= conf->previous_raid_disks) {
5468 set_bit(In_sync, &rdev->flags); 5467 set_bit(In_sync, &rdev->flags);
5469 else 5468 added_devices++;
5469 } else
5470 rdev->recovery_offset = 0; 5470 rdev->recovery_offset = 0;
5471 added_devices++;
5472 sprintf(nm, "rd%d", rdev->raid_disk); 5471 sprintf(nm, "rd%d", rdev->raid_disk);
5473 if (sysfs_create_link(&mddev->kobj, 5472 if (sysfs_create_link(&mddev->kobj,
5474 &rdev->kobj, nm)) 5473 &rdev->kobj, nm))
@@ -5480,9 +5479,12 @@ static int raid5_start_reshape(mddev_t *mddev)
5480 break; 5479 break;
5481 } 5480 }
5482 5481
5482 /* When a reshape changes the number of devices, ->degraded
5483 * is measured against the large of the pre and post number of
5484 * devices.*/
5483 if (mddev->delta_disks > 0) { 5485 if (mddev->delta_disks > 0) {
5484 spin_lock_irqsave(&conf->device_lock, flags); 5486 spin_lock_irqsave(&conf->device_lock, flags);
5485 mddev->degraded = (conf->raid_disks - conf->previous_raid_disks) 5487 mddev->degraded += (conf->raid_disks - conf->previous_raid_disks)
5486 - added_devices; 5488 - added_devices;
5487 spin_unlock_irqrestore(&conf->device_lock, flags); 5489 spin_unlock_irqrestore(&conf->device_lock, flags);
5488 } 5490 }
diff --git a/drivers/media/IR/ir-keytable.c b/drivers/media/IR/ir-keytable.c
index bff7a5356037..b521ed9d6e2e 100644
--- a/drivers/media/IR/ir-keytable.c
+++ b/drivers/media/IR/ir-keytable.c
@@ -13,7 +13,7 @@
13 */ 13 */
14 14
15 15
16#include <linux/usb/input.h> 16#include <linux/input.h>
17#include <media/ir-common.h> 17#include <media/ir-common.h>
18 18
19#define IR_TAB_MIN_SIZE 32 19#define IR_TAB_MIN_SIZE 32
diff --git a/drivers/media/common/saa7146_video.c b/drivers/media/common/saa7146_video.c
index becbaadb3b77..5ed75263340a 100644
--- a/drivers/media/common/saa7146_video.c
+++ b/drivers/media/common/saa7146_video.c
@@ -1333,9 +1333,9 @@ static void buffer_release(struct videobuf_queue *q, struct videobuf_buffer *vb)
1333 1333
1334 DEB_CAP(("vbuf:%p\n",vb)); 1334 DEB_CAP(("vbuf:%p\n",vb));
1335 1335
1336 release_all_pagetables(dev, buf);
1337
1338 saa7146_dma_free(dev,q,buf); 1336 saa7146_dma_free(dev,q,buf);
1337
1338 release_all_pagetables(dev, buf);
1339} 1339}
1340 1340
1341static struct videobuf_queue_ops video_qops = { 1341static struct videobuf_queue_ops video_qops = {
diff --git a/drivers/media/common/tuners/tda8290.c b/drivers/media/common/tuners/tda8290.c
index c190b0dedee4..2833137fa819 100644
--- a/drivers/media/common/tuners/tda8290.c
+++ b/drivers/media/common/tuners/tda8290.c
@@ -144,7 +144,8 @@ static void set_audio(struct dvb_frontend *fe,
144 } 144 }
145 145
146 if (params->mode == V4L2_TUNER_RADIO) { 146 if (params->mode == V4L2_TUNER_RADIO) {
147 priv->tda8290_easy_mode = 0x01; /* Start with MN values */ 147 /* Set TDA8295 to FM radio; Start TDA8290 with MN values */
148 priv->tda8290_easy_mode = (priv->ver & TDA8295) ? 0x80 : 0x01;
148 tuner_dbg("setting to radio FM\n"); 149 tuner_dbg("setting to radio FM\n");
149 } else { 150 } else {
150 tuner_dbg("setting tda829x to system %s\n", mode); 151 tuner_dbg("setting tda829x to system %s\n", mode);
@@ -672,16 +673,19 @@ static int tda8290_probe(struct tuner_i2c_props *i2c_props)
672static int tda8295_probe(struct tuner_i2c_props *i2c_props) 673static int tda8295_probe(struct tuner_i2c_props *i2c_props)
673{ 674{
674#define TDA8295_ID 0x8a 675#define TDA8295_ID 0x8a
676#define TDA8295C2_ID 0x8b
675 unsigned char tda8295_id[] = { 0x2f, 0x00 }; 677 unsigned char tda8295_id[] = { 0x2f, 0x00 };
676 678
677 /* detect tda8295 */ 679 /* detect tda8295 */
678 tuner_i2c_xfer_send(i2c_props, &tda8295_id[0], 1); 680 tuner_i2c_xfer_send(i2c_props, &tda8295_id[0], 1);
679 tuner_i2c_xfer_recv(i2c_props, &tda8295_id[1], 1); 681 tuner_i2c_xfer_recv(i2c_props, &tda8295_id[1], 1);
680 682
681 if (tda8295_id[1] == TDA8295_ID) { 683 if ((tda8295_id[1] & 0xfe) == TDA8295_ID) {
682 if (debug) 684 if (debug)
683 printk(KERN_DEBUG "%s: tda8295 detected @ %d-%04x\n", 685 printk(KERN_DEBUG "%s: %s detected @ %d-%04x\n",
684 __func__, i2c_adapter_id(i2c_props->adap), 686 __func__, (tda8295_id[1] == TDA8295_ID) ?
687 "tda8295c1" : "tda8295c2",
688 i2c_adapter_id(i2c_props->adap),
685 i2c_props->addr); 689 i2c_props->addr);
686 return 0; 690 return 0;
687 } 691 }
diff --git a/drivers/media/dvb/Kconfig b/drivers/media/dvb/Kconfig
index 35d0817126e9..cf8f65f309da 100644
--- a/drivers/media/dvb/Kconfig
+++ b/drivers/media/dvb/Kconfig
@@ -72,6 +72,10 @@ comment "Supported Earthsoft PT1 Adapters"
72 depends on DVB_CORE && PCI && I2C 72 depends on DVB_CORE && PCI && I2C
73source "drivers/media/dvb/pt1/Kconfig" 73source "drivers/media/dvb/pt1/Kconfig"
74 74
75comment "Supported Mantis Adapters"
76 depends on DVB_CORE && PCI && I2C
77 source "drivers/media/dvb/mantis/Kconfig"
78
75comment "Supported DVB Frontends" 79comment "Supported DVB Frontends"
76 depends on DVB_CORE 80 depends on DVB_CORE
77source "drivers/media/dvb/frontends/Kconfig" 81source "drivers/media/dvb/frontends/Kconfig"
diff --git a/drivers/media/dvb/Makefile b/drivers/media/dvb/Makefile
index 16d262ddb45d..c12922c3659b 100644
--- a/drivers/media/dvb/Makefile
+++ b/drivers/media/dvb/Makefile
@@ -2,6 +2,18 @@
2# Makefile for the kernel multimedia device drivers. 2# Makefile for the kernel multimedia device drivers.
3# 3#
4 4
5obj-y := dvb-core/ frontends/ ttpci/ ttusb-dec/ ttusb-budget/ b2c2/ bt8xx/ dvb-usb/ pluto2/ siano/ dm1105/ pt1/ 5obj-y := dvb-core/ \
6 frontends/ \
7 ttpci/ \
8 ttusb-dec/ \
9 ttusb-budget/ \
10 b2c2/ \
11 bt8xx/ \
12 dvb-usb/ \
13 pluto2/ \
14 siano/ \
15 dm1105/ \
16 pt1/ \
17 mantis/
6 18
7obj-$(CONFIG_DVB_FIREDTV) += firewire/ 19obj-$(CONFIG_DVB_FIREDTV) += firewire/
diff --git a/drivers/media/dvb/dvb-core/dmxdev.c b/drivers/media/dvb/dvb-core/dmxdev.c
index c37790ad92d0..9ddc57909d49 100644
--- a/drivers/media/dvb/dvb-core/dmxdev.c
+++ b/drivers/media/dvb/dvb-core/dmxdev.c
@@ -761,7 +761,6 @@ static int dvb_demux_open(struct inode *inode, struct file *file)
761 dvb_ringbuffer_init(&dmxdevfilter->buffer, NULL, 8192); 761 dvb_ringbuffer_init(&dmxdevfilter->buffer, NULL, 8192);
762 dmxdevfilter->type = DMXDEV_TYPE_NONE; 762 dmxdevfilter->type = DMXDEV_TYPE_NONE;
763 dvb_dmxdev_filter_state_set(dmxdevfilter, DMXDEV_STATE_ALLOCATED); 763 dvb_dmxdev_filter_state_set(dmxdevfilter, DMXDEV_STATE_ALLOCATED);
764 INIT_LIST_HEAD(&dmxdevfilter->feed.ts);
765 init_timer(&dmxdevfilter->timer); 764 init_timer(&dmxdevfilter->timer);
766 765
767 dvbdev->users++; 766 dvbdev->users++;
@@ -887,6 +886,7 @@ static int dvb_dmxdev_pes_filter_set(struct dmxdev *dmxdev,
887 dmxdevfilter->type = DMXDEV_TYPE_PES; 886 dmxdevfilter->type = DMXDEV_TYPE_PES;
888 memcpy(&dmxdevfilter->params, params, 887 memcpy(&dmxdevfilter->params, params,
889 sizeof(struct dmx_pes_filter_params)); 888 sizeof(struct dmx_pes_filter_params));
889 INIT_LIST_HEAD(&dmxdevfilter->feed.ts);
890 890
891 dvb_dmxdev_filter_state_set(dmxdevfilter, DMXDEV_STATE_SET); 891 dvb_dmxdev_filter_state_set(dmxdevfilter, DMXDEV_STATE_SET);
892 892
diff --git a/drivers/media/dvb/dvb-core/dvb_demux.c b/drivers/media/dvb/dvb-core/dvb_demux.c
index b78cfb7d1897..67f189b7aa1f 100644
--- a/drivers/media/dvb/dvb-core/dvb_demux.c
+++ b/drivers/media/dvb/dvb-core/dvb_demux.c
@@ -426,16 +426,7 @@ static void dvb_dmx_swfilter_packet(struct dvb_demux *demux, const u8 *buf)
426 }; 426 };
427 }; 427 };
428 428
429 if (dvb_demux_tscheck) { 429 if (demux->cnt_storage) {
430 if (!demux->cnt_storage)
431 demux->cnt_storage = vmalloc(MAX_PID + 1);
432
433 if (!demux->cnt_storage) {
434 printk(KERN_WARNING "Couldn't allocate memory for TS/TEI check. Disabling it\n");
435 dvb_demux_tscheck = 0;
436 goto no_dvb_demux_tscheck;
437 }
438
439 /* check pkt counter */ 430 /* check pkt counter */
440 if (pid < MAX_PID) { 431 if (pid < MAX_PID) {
441 if (buf[1] & 0x80) 432 if (buf[1] & 0x80)
@@ -454,7 +445,6 @@ static void dvb_dmx_swfilter_packet(struct dvb_demux *demux, const u8 *buf)
454 }; 445 };
455 /* end check */ 446 /* end check */
456 }; 447 };
457no_dvb_demux_tscheck:
458 448
459 list_for_each_entry(feed, &demux->feed_list, list_head) { 449 list_for_each_entry(feed, &demux->feed_list, list_head) {
460 if ((feed->pid != pid) && (feed->pid != 0x2000)) 450 if ((feed->pid != pid) && (feed->pid != 0x2000))
@@ -1246,6 +1236,7 @@ int dvb_dmx_init(struct dvb_demux *dvbdemux)
1246 dvbdemux->feed = vmalloc(dvbdemux->feednum * sizeof(struct dvb_demux_feed)); 1236 dvbdemux->feed = vmalloc(dvbdemux->feednum * sizeof(struct dvb_demux_feed));
1247 if (!dvbdemux->feed) { 1237 if (!dvbdemux->feed) {
1248 vfree(dvbdemux->filter); 1238 vfree(dvbdemux->filter);
1239 dvbdemux->filter = NULL;
1249 return -ENOMEM; 1240 return -ENOMEM;
1250 } 1241 }
1251 for (i = 0; i < dvbdemux->filternum; i++) { 1242 for (i = 0; i < dvbdemux->filternum; i++) {
@@ -1257,6 +1248,13 @@ int dvb_dmx_init(struct dvb_demux *dvbdemux)
1257 dvbdemux->feed[i].index = i; 1248 dvbdemux->feed[i].index = i;
1258 } 1249 }
1259 1250
1251 if (dvb_demux_tscheck) {
1252 dvbdemux->cnt_storage = vmalloc(MAX_PID + 1);
1253
1254 if (!dvbdemux->cnt_storage)
1255 printk(KERN_WARNING "Couldn't allocate memory for TS/TEI check. Disabling it\n");
1256 }
1257
1260 INIT_LIST_HEAD(&dvbdemux->frontend_list); 1258 INIT_LIST_HEAD(&dvbdemux->frontend_list);
1261 1259
1262 for (i = 0; i < DMX_TS_PES_OTHER; i++) { 1260 for (i = 0; i < DMX_TS_PES_OTHER; i++) {
diff --git a/drivers/media/dvb/dvb-usb/Kconfig b/drivers/media/dvb/dvb-usb/Kconfig
index 1b249897c9fb..465295b1d14b 100644
--- a/drivers/media/dvb/dvb-usb/Kconfig
+++ b/drivers/media/dvb/dvb-usb/Kconfig
@@ -112,11 +112,13 @@ config DVB_USB_CXUSB
112 select DVB_MT352 if !DVB_FE_CUSTOMISE 112 select DVB_MT352 if !DVB_FE_CUSTOMISE
113 select DVB_ZL10353 if !DVB_FE_CUSTOMISE 113 select DVB_ZL10353 if !DVB_FE_CUSTOMISE
114 select DVB_DIB7000P if !DVB_FE_CUSTOMISE 114 select DVB_DIB7000P if !DVB_FE_CUSTOMISE
115 select DVB_LGS8GL5 if !DVB_FE_CUSTOMISE
116 select DVB_TUNER_DIB0070 if !DVB_FE_CUSTOMISE 115 select DVB_TUNER_DIB0070 if !DVB_FE_CUSTOMISE
116 select DVB_ATBM8830 if !DVB_FE_CUSTOMISE
117 select DVB_LGS8GXX if !DVB_FE_CUSTOMISE
117 select MEDIA_TUNER_SIMPLE if !MEDIA_TUNER_CUSTOMISE 118 select MEDIA_TUNER_SIMPLE if !MEDIA_TUNER_CUSTOMISE
118 select MEDIA_TUNER_XC2028 if !MEDIA_TUNER_CUSTOMISE 119 select MEDIA_TUNER_XC2028 if !MEDIA_TUNER_CUSTOMISE
119 select MEDIA_TUNER_MXL5005S if !MEDIA_TUNER_CUSTOMISE 120 select MEDIA_TUNER_MXL5005S if !MEDIA_TUNER_CUSTOMISE
121 select MEDIA_TUNER_MAX2165 if !MEDIA_TUNER_CUSTOMISE
120 help 122 help
121 Say Y here to support the Conexant USB2.0 hybrid reference design. 123 Say Y here to support the Conexant USB2.0 hybrid reference design.
122 Currently, only DVB and ATSC modes are supported, analog mode 124 Currently, only DVB and ATSC modes are supported, analog mode
diff --git a/drivers/media/dvb/frontends/Kconfig b/drivers/media/dvb/frontends/Kconfig
index a3b8b697349b..cd7f9b7cbffa 100644
--- a/drivers/media/dvb/frontends/Kconfig
+++ b/drivers/media/dvb/frontends/Kconfig
@@ -208,6 +208,14 @@ config DVB_DS3000
208 help 208 help
209 A DVB-S/S2 tuner module. Say Y when you want to support this frontend. 209 A DVB-S/S2 tuner module. Say Y when you want to support this frontend.
210 210
211config DVB_MB86A16
212 tristate "Fujitsu MB86A16 based"
213 depends on DVB_CORE && I2C
214 default m if DVB_FE_CUSTOMISE
215 help
216 A DVB-S/DSS Direct Conversion reveiver.
217 Say Y when you want to support this frontend.
218
211comment "DVB-T (terrestrial) frontends" 219comment "DVB-T (terrestrial) frontends"
212 depends on DVB_CORE 220 depends on DVB_CORE
213 221
@@ -587,6 +595,17 @@ config DVB_ATBM8830
587 help 595 help
588 A DMB-TH tuner module. Say Y when you want to support this frontend. 596 A DMB-TH tuner module. Say Y when you want to support this frontend.
589 597
598config DVB_TDA665x
599 tristate "TDA665x tuner"
600 depends on DVB_CORE && I2C
601 default m if DVB_FE_CUSTOMISE
602 help
603 Support for tuner modules based on Philips TDA6650/TDA6651 chips.
604 Say Y when you want to support this chip.
605
606 Currently supported tuners:
607 * Panasonic ENV57H12D5 (ET-50DT)
608
590comment "Tools to develop new frontends" 609comment "Tools to develop new frontends"
591 610
592config DVB_DUMMY_FE 611config DVB_DUMMY_FE
diff --git a/drivers/media/dvb/frontends/Makefile b/drivers/media/dvb/frontends/Makefile
index 47575cc7b699..874e8ada4d1d 100644
--- a/drivers/media/dvb/frontends/Makefile
+++ b/drivers/media/dvb/frontends/Makefile
@@ -64,6 +64,7 @@ obj-$(CONFIG_DVB_TDA10048) += tda10048.o
64obj-$(CONFIG_DVB_TUNER_CX24113) += cx24113.o 64obj-$(CONFIG_DVB_TUNER_CX24113) += cx24113.o
65obj-$(CONFIG_DVB_S5H1411) += s5h1411.o 65obj-$(CONFIG_DVB_S5H1411) += s5h1411.o
66obj-$(CONFIG_DVB_LGS8GL5) += lgs8gl5.o 66obj-$(CONFIG_DVB_LGS8GL5) += lgs8gl5.o
67obj-$(CONFIG_DVB_TDA665x) += tda665x.o
67obj-$(CONFIG_DVB_LGS8GXX) += lgs8gxx.o 68obj-$(CONFIG_DVB_LGS8GXX) += lgs8gxx.o
68obj-$(CONFIG_DVB_ATBM8830) += atbm8830.o 69obj-$(CONFIG_DVB_ATBM8830) += atbm8830.o
69obj-$(CONFIG_DVB_DUMMY_FE) += dvb_dummy_fe.o 70obj-$(CONFIG_DVB_DUMMY_FE) += dvb_dummy_fe.o
@@ -80,3 +81,4 @@ obj-$(CONFIG_DVB_STV6110x) += stv6110x.o
80obj-$(CONFIG_DVB_ISL6423) += isl6423.o 81obj-$(CONFIG_DVB_ISL6423) += isl6423.o
81obj-$(CONFIG_DVB_EC100) += ec100.o 82obj-$(CONFIG_DVB_EC100) += ec100.o
82obj-$(CONFIG_DVB_DS3000) += ds3000.o 83obj-$(CONFIG_DVB_DS3000) += ds3000.o
84obj-$(CONFIG_DVB_MB86A16) += mb86a16.o
diff --git a/drivers/media/dvb/frontends/dib8000.h b/drivers/media/dvb/frontends/dib8000.h
index d99619ae983c..b1ee20799639 100644
--- a/drivers/media/dvb/frontends/dib8000.h
+++ b/drivers/media/dvb/frontends/dib8000.h
@@ -100,7 +100,7 @@ static inline int dib8000_set_tune_state(struct dvb_frontend *fe, enum frontend_
100static inline enum frontend_tune_state dib8000_get_tune_state(struct dvb_frontend *fe) 100static inline enum frontend_tune_state dib8000_get_tune_state(struct dvb_frontend *fe)
101{ 101{
102 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 102 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
103 return CT_SHUTDOWN, 103 return CT_SHUTDOWN;
104} 104}
105static inline void dib8000_pwm_agc_reset(struct dvb_frontend *fe) 105static inline void dib8000_pwm_agc_reset(struct dvb_frontend *fe)
106{ 106{
diff --git a/drivers/media/dvb/frontends/l64781.c b/drivers/media/dvb/frontends/l64781.c
index 3051b64aa17c..445fa1068064 100644
--- a/drivers/media/dvb/frontends/l64781.c
+++ b/drivers/media/dvb/frontends/l64781.c
@@ -192,8 +192,8 @@ static int apply_frontend_param (struct dvb_frontend* fe, struct dvb_frontend_pa
192 spi_bias *= qam_tab[p->constellation]; 192 spi_bias *= qam_tab[p->constellation];
193 spi_bias /= p->code_rate_HP + 1; 193 spi_bias /= p->code_rate_HP + 1;
194 spi_bias /= (guard_tab[p->guard_interval] + 32); 194 spi_bias /= (guard_tab[p->guard_interval] + 32);
195 spi_bias *= 1000ULL; 195 spi_bias *= 1000;
196 spi_bias /= 1000ULL + ppm/1000; 196 spi_bias /= 1000 + ppm/1000;
197 spi_bias *= p->code_rate_HP; 197 spi_bias *= p->code_rate_HP;
198 198
199 val0x04 = (p->transmission_mode << 2) | p->guard_interval; 199 val0x04 = (p->transmission_mode << 2) | p->guard_interval;
diff --git a/drivers/media/dvb/frontends/lgdt3305.h b/drivers/media/dvb/frontends/lgdt3305.h
index 4fa6e52d1fe8..9cb11c9cae53 100644
--- a/drivers/media/dvb/frontends/lgdt3305.h
+++ b/drivers/media/dvb/frontends/lgdt3305.h
@@ -54,13 +54,13 @@ struct lgdt3305_config {
54 u16 usref_qam256; /* default: 0x2a80 */ 54 u16 usref_qam256; /* default: 0x2a80 */
55 55
56 /* disable i2c repeater - 0:repeater enabled 1:repeater disabled */ 56 /* disable i2c repeater - 0:repeater enabled 1:repeater disabled */
57 int deny_i2c_rptr:1; 57 unsigned int deny_i2c_rptr:1;
58 58
59 /* spectral inversion - 0:disabled 1:enabled */ 59 /* spectral inversion - 0:disabled 1:enabled */
60 int spectral_inversion:1; 60 unsigned int spectral_inversion:1;
61 61
62 /* use RF AGC loop - 0:disabled 1:enabled */ 62 /* use RF AGC loop - 0:disabled 1:enabled */
63 int rf_agc_loop:1; 63 unsigned int rf_agc_loop:1;
64 64
65 enum lgdt3305_mpeg_mode mpeg_mode; 65 enum lgdt3305_mpeg_mode mpeg_mode;
66 enum lgdt3305_tp_clock_edge tpclk_edge; 66 enum lgdt3305_tp_clock_edge tpclk_edge;
diff --git a/drivers/media/dvb/frontends/mb86a16.c b/drivers/media/dvb/frontends/mb86a16.c
new file mode 100644
index 000000000000..d05f7500e0c5
--- /dev/null
+++ b/drivers/media/dvb/frontends/mb86a16.c
@@ -0,0 +1,1878 @@
1/*
2 Fujitsu MB86A16 DVB-S/DSS DC Receiver driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include <linux/init.h>
22#include <linux/kernel.h>
23#include <linux/module.h>
24#include <linux/moduleparam.h>
25
26#include "dvb_frontend.h"
27#include "mb86a16.h"
28#include "mb86a16_priv.h"
29
30unsigned int verbose = 5;
31module_param(verbose, int, 0644);
32
33#define ABS(x) ((x) < 0 ? (-x) : (x))
34
35struct mb86a16_state {
36 struct i2c_adapter *i2c_adap;
37 const struct mb86a16_config *config;
38 struct dvb_frontend frontend;
39
40 /* tuning parameters */
41 int frequency;
42 int srate;
43
44 /* Internal stuff */
45 int master_clk;
46 int deci;
47 int csel;
48 int rsel;
49};
50
51#define MB86A16_ERROR 0
52#define MB86A16_NOTICE 1
53#define MB86A16_INFO 2
54#define MB86A16_DEBUG 3
55
56#define dprintk(x, y, z, format, arg...) do { \
57 if (z) { \
58 if ((x > MB86A16_ERROR) && (x > y)) \
59 printk(KERN_ERR "%s: " format "\n", __func__, ##arg); \
60 else if ((x > MB86A16_NOTICE) && (x > y)) \
61 printk(KERN_NOTICE "%s: " format "\n", __func__, ##arg); \
62 else if ((x > MB86A16_INFO) && (x > y)) \
63 printk(KERN_INFO "%s: " format "\n", __func__, ##arg); \
64 else if ((x > MB86A16_DEBUG) && (x > y)) \
65 printk(KERN_DEBUG "%s: " format "\n", __func__, ##arg); \
66 } else { \
67 if (x > y) \
68 printk(format, ##arg); \
69 } \
70} while (0)
71
72#define TRACE_IN dprintk(verbose, MB86A16_DEBUG, 1, "-->()")
73#define TRACE_OUT dprintk(verbose, MB86A16_DEBUG, 1, "()-->")
74
75static int mb86a16_write(struct mb86a16_state *state, u8 reg, u8 val)
76{
77 int ret;
78 u8 buf[] = { reg, val };
79
80 struct i2c_msg msg = {
81 .addr = state->config->demod_address,
82 .flags = 0,
83 .buf = buf,
84 .len = 2
85 };
86
87 dprintk(verbose, MB86A16_DEBUG, 1,
88 "writing to [0x%02x],Reg[0x%02x],Data[0x%02x]",
89 state->config->demod_address, buf[0], buf[1]);
90
91 ret = i2c_transfer(state->i2c_adap, &msg, 1);
92
93 return (ret != 1) ? -EREMOTEIO : 0;
94}
95
96static int mb86a16_read(struct mb86a16_state *state, u8 reg, u8 *val)
97{
98 int ret;
99 u8 b0[] = { reg };
100 u8 b1[] = { 0 };
101
102 struct i2c_msg msg[] = {
103 {
104 .addr = state->config->demod_address,
105 .flags = 0,
106 .buf = b0,
107 .len = 1
108 }, {
109 .addr = state->config->demod_address,
110 .flags = I2C_M_RD,
111 .buf = b1,
112 .len = 1
113 }
114 };
115 ret = i2c_transfer(state->i2c_adap, msg, 2);
116 if (ret != 2) {
117 dprintk(verbose, MB86A16_ERROR, 1, "read error(reg=0x%02x, ret=0x%i)",
118 reg, ret);
119
120 return -EREMOTEIO;
121 }
122 *val = b1[0];
123
124 return ret;
125}
126
127static int CNTM_set(struct mb86a16_state *state,
128 unsigned char timint1,
129 unsigned char timint2,
130 unsigned char cnext)
131{
132 unsigned char val;
133
134 val = (timint1 << 4) | (timint2 << 2) | cnext;
135 if (mb86a16_write(state, MB86A16_CNTMR, val) < 0)
136 goto err;
137
138 return 0;
139
140err:
141 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
142 return -EREMOTEIO;
143}
144
145static int smrt_set(struct mb86a16_state *state, int rate)
146{
147 int tmp ;
148 int m ;
149 unsigned char STOFS0, STOFS1;
150
151 m = 1 << state->deci;
152 tmp = (8192 * state->master_clk - 2 * m * rate * 8192 + state->master_clk / 2) / state->master_clk;
153
154 STOFS0 = tmp & 0x0ff;
155 STOFS1 = (tmp & 0xf00) >> 8;
156
157 if (mb86a16_write(state, MB86A16_SRATE1, (state->deci << 2) |
158 (state->csel << 1) |
159 state->rsel) < 0)
160 goto err;
161 if (mb86a16_write(state, MB86A16_SRATE2, STOFS0) < 0)
162 goto err;
163 if (mb86a16_write(state, MB86A16_SRATE3, STOFS1) < 0)
164 goto err;
165
166 return 0;
167err:
168 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
169 return -1;
170}
171
172static int srst(struct mb86a16_state *state)
173{
174 if (mb86a16_write(state, MB86A16_RESET, 0x04) < 0)
175 goto err;
176
177 return 0;
178err:
179 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
180 return -EREMOTEIO;
181
182}
183
184static int afcex_data_set(struct mb86a16_state *state,
185 unsigned char AFCEX_L,
186 unsigned char AFCEX_H)
187{
188 if (mb86a16_write(state, MB86A16_AFCEXL, AFCEX_L) < 0)
189 goto err;
190 if (mb86a16_write(state, MB86A16_AFCEXH, AFCEX_H) < 0)
191 goto err;
192
193 return 0;
194err:
195 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
196
197 return -1;
198}
199
200static int afcofs_data_set(struct mb86a16_state *state,
201 unsigned char AFCEX_L,
202 unsigned char AFCEX_H)
203{
204 if (mb86a16_write(state, 0x58, AFCEX_L) < 0)
205 goto err;
206 if (mb86a16_write(state, 0x59, AFCEX_H) < 0)
207 goto err;
208
209 return 0;
210err:
211 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
212 return -EREMOTEIO;
213}
214
215static int stlp_set(struct mb86a16_state *state,
216 unsigned char STRAS,
217 unsigned char STRBS)
218{
219 if (mb86a16_write(state, MB86A16_STRFILTCOEF1, (STRBS << 3) | (STRAS)) < 0)
220 goto err;
221
222 return 0;
223err:
224 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
225 return -EREMOTEIO;
226}
227
228static int Vi_set(struct mb86a16_state *state, unsigned char ETH, unsigned char VIA)
229{
230 if (mb86a16_write(state, MB86A16_VISET2, 0x04) < 0)
231 goto err;
232 if (mb86a16_write(state, MB86A16_VISET3, 0xf5) < 0)
233 goto err;
234
235 return 0;
236err:
237 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
238 return -EREMOTEIO;
239}
240
241static int initial_set(struct mb86a16_state *state)
242{
243 if (stlp_set(state, 5, 7))
244 goto err;
245
246 udelay(100);
247 if (afcex_data_set(state, 0, 0))
248 goto err;
249
250 udelay(100);
251 if (afcofs_data_set(state, 0, 0))
252 goto err;
253
254 udelay(100);
255 if (mb86a16_write(state, MB86A16_CRLFILTCOEF1, 0x16) < 0)
256 goto err;
257 if (mb86a16_write(state, 0x2f, 0x21) < 0)
258 goto err;
259 if (mb86a16_write(state, MB86A16_VIMAG, 0x38) < 0)
260 goto err;
261 if (mb86a16_write(state, MB86A16_FAGCS1, 0x00) < 0)
262 goto err;
263 if (mb86a16_write(state, MB86A16_FAGCS2, 0x1c) < 0)
264 goto err;
265 if (mb86a16_write(state, MB86A16_FAGCS3, 0x20) < 0)
266 goto err;
267 if (mb86a16_write(state, MB86A16_FAGCS4, 0x1e) < 0)
268 goto err;
269 if (mb86a16_write(state, MB86A16_FAGCS5, 0x23) < 0)
270 goto err;
271 if (mb86a16_write(state, 0x54, 0xff) < 0)
272 goto err;
273 if (mb86a16_write(state, MB86A16_TSOUT, 0x00) < 0)
274 goto err;
275
276 return 0;
277
278err:
279 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
280 return -EREMOTEIO;
281}
282
283static int S01T_set(struct mb86a16_state *state,
284 unsigned char s1t,
285 unsigned s0t)
286{
287 if (mb86a16_write(state, 0x33, (s1t << 3) | s0t) < 0)
288 goto err;
289
290 return 0;
291err:
292 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
293 return -EREMOTEIO;
294}
295
296
297static int EN_set(struct mb86a16_state *state,
298 int cren,
299 int afcen)
300{
301 unsigned char val;
302
303 val = 0x7a | (cren << 7) | (afcen << 2);
304 if (mb86a16_write(state, 0x49, val) < 0)
305 goto err;
306
307 return 0;
308err:
309 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
310 return -EREMOTEIO;
311}
312
313static int AFCEXEN_set(struct mb86a16_state *state,
314 int afcexen,
315 int smrt)
316{
317 unsigned char AFCA ;
318
319 if (smrt > 18875)
320 AFCA = 4;
321 else if (smrt > 9375)
322 AFCA = 3;
323 else if (smrt > 2250)
324 AFCA = 2;
325 else
326 AFCA = 1;
327
328 if (mb86a16_write(state, 0x2a, 0x02 | (afcexen << 5) | (AFCA << 2)) < 0)
329 goto err;
330
331 return 0;
332
333err:
334 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
335 return -EREMOTEIO;
336}
337
338static int DAGC_data_set(struct mb86a16_state *state,
339 unsigned char DAGCA,
340 unsigned char DAGCW)
341{
342 if (mb86a16_write(state, 0x2d, (DAGCA << 3) | DAGCW) < 0)
343 goto err;
344
345 return 0;
346
347err:
348 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
349 return -EREMOTEIO;
350}
351
352static void smrt_info_get(struct mb86a16_state *state, int rate)
353{
354 if (rate >= 37501) {
355 state->deci = 0; state->csel = 0; state->rsel = 0;
356 } else if (rate >= 30001) {
357 state->deci = 0; state->csel = 0; state->rsel = 1;
358 } else if (rate >= 26251) {
359 state->deci = 0; state->csel = 1; state->rsel = 0;
360 } else if (rate >= 22501) {
361 state->deci = 0; state->csel = 1; state->rsel = 1;
362 } else if (rate >= 18751) {
363 state->deci = 1; state->csel = 0; state->rsel = 0;
364 } else if (rate >= 15001) {
365 state->deci = 1; state->csel = 0; state->rsel = 1;
366 } else if (rate >= 13126) {
367 state->deci = 1; state->csel = 1; state->rsel = 0;
368 } else if (rate >= 11251) {
369 state->deci = 1; state->csel = 1; state->rsel = 1;
370 } else if (rate >= 9376) {
371 state->deci = 2; state->csel = 0; state->rsel = 0;
372 } else if (rate >= 7501) {
373 state->deci = 2; state->csel = 0; state->rsel = 1;
374 } else if (rate >= 6563) {
375 state->deci = 2; state->csel = 1; state->rsel = 0;
376 } else if (rate >= 5626) {
377 state->deci = 2; state->csel = 1; state->rsel = 1;
378 } else if (rate >= 4688) {
379 state->deci = 3; state->csel = 0; state->rsel = 0;
380 } else if (rate >= 3751) {
381 state->deci = 3; state->csel = 0; state->rsel = 1;
382 } else if (rate >= 3282) {
383 state->deci = 3; state->csel = 1; state->rsel = 0;
384 } else if (rate >= 2814) {
385 state->deci = 3; state->csel = 1; state->rsel = 1;
386 } else if (rate >= 2344) {
387 state->deci = 4; state->csel = 0; state->rsel = 0;
388 } else if (rate >= 1876) {
389 state->deci = 4; state->csel = 0; state->rsel = 1;
390 } else if (rate >= 1641) {
391 state->deci = 4; state->csel = 1; state->rsel = 0;
392 } else if (rate >= 1407) {
393 state->deci = 4; state->csel = 1; state->rsel = 1;
394 } else if (rate >= 1172) {
395 state->deci = 5; state->csel = 0; state->rsel = 0;
396 } else if (rate >= 939) {
397 state->deci = 5; state->csel = 0; state->rsel = 1;
398 } else if (rate >= 821) {
399 state->deci = 5; state->csel = 1; state->rsel = 0;
400 } else {
401 state->deci = 5; state->csel = 1; state->rsel = 1;
402 }
403
404 if (state->csel == 0)
405 state->master_clk = 92000;
406 else
407 state->master_clk = 61333;
408
409}
410
411static int signal_det(struct mb86a16_state *state,
412 int smrt,
413 unsigned char *SIG)
414{
415
416 int ret ;
417 int smrtd ;
418 int wait_sym ;
419
420 u32 wait_t;
421 unsigned char S[3] ;
422 int i ;
423
424 if (*SIG > 45) {
425 if (CNTM_set(state, 2, 1, 2) < 0) {
426 dprintk(verbose, MB86A16_ERROR, 1, "CNTM set Error");
427 return -1;
428 }
429 wait_sym = 40000;
430 } else {
431 if (CNTM_set(state, 3, 1, 2) < 0) {
432 dprintk(verbose, MB86A16_ERROR, 1, "CNTM set Error");
433 return -1;
434 }
435 wait_sym = 80000;
436 }
437 for (i = 0; i < 3; i++) {
438 if (i == 0)
439 smrtd = smrt * 98 / 100;
440 else if (i == 1)
441 smrtd = smrt;
442 else
443 smrtd = smrt * 102 / 100;
444 smrt_info_get(state, smrtd);
445 smrt_set(state, smrtd);
446 srst(state);
447 wait_t = (wait_sym + 99 * smrtd / 100) / smrtd;
448 if (wait_t == 0)
449 wait_t = 1;
450 msleep_interruptible(10);
451 if (mb86a16_read(state, 0x37, &(S[i])) != 2) {
452 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
453 return -EREMOTEIO;
454 }
455 }
456 if ((S[1] > S[0] * 112 / 100) &&
457 (S[1] > S[2] * 112 / 100)) {
458
459 ret = 1;
460 } else {
461 ret = 0;
462 }
463 *SIG = S[1];
464
465 if (CNTM_set(state, 0, 1, 2) < 0) {
466 dprintk(verbose, MB86A16_ERROR, 1, "CNTM set Error");
467 return -1;
468 }
469
470 return ret;
471}
472
473static int rf_val_set(struct mb86a16_state *state,
474 int f,
475 int smrt,
476 unsigned char R)
477{
478 unsigned char C, F, B;
479 int M;
480 unsigned char rf_val[5];
481 int ack = -1;
482
483 if (smrt > 37750)
484 C = 1;
485 else if (smrt > 18875)
486 C = 2;
487 else if (smrt > 5500)
488 C = 3;
489 else
490 C = 4;
491
492 if (smrt > 30500)
493 F = 3;
494 else if (smrt > 9375)
495 F = 1;
496 else if (smrt > 4625)
497 F = 0;
498 else
499 F = 2;
500
501 if (f < 1060)
502 B = 0;
503 else if (f < 1175)
504 B = 1;
505 else if (f < 1305)
506 B = 2;
507 else if (f < 1435)
508 B = 3;
509 else if (f < 1570)
510 B = 4;
511 else if (f < 1715)
512 B = 5;
513 else if (f < 1845)
514 B = 6;
515 else if (f < 1980)
516 B = 7;
517 else if (f < 2080)
518 B = 8;
519 else
520 B = 9;
521
522 M = f * (1 << R) / 2;
523
524 rf_val[0] = 0x01 | (C << 3) | (F << 1);
525 rf_val[1] = (R << 5) | ((M & 0x1f000) >> 12);
526 rf_val[2] = (M & 0x00ff0) >> 4;
527 rf_val[3] = ((M & 0x0000f) << 4) | B;
528
529 /* Frequency Set */
530 if (mb86a16_write(state, 0x21, rf_val[0]) < 0)
531 ack = 0;
532 if (mb86a16_write(state, 0x22, rf_val[1]) < 0)
533 ack = 0;
534 if (mb86a16_write(state, 0x23, rf_val[2]) < 0)
535 ack = 0;
536 if (mb86a16_write(state, 0x24, rf_val[3]) < 0)
537 ack = 0;
538 if (mb86a16_write(state, 0x25, 0x01) < 0)
539 ack = 0;
540 if (ack == 0) {
541 dprintk(verbose, MB86A16_ERROR, 1, "RF Setup - I2C transfer error");
542 return -EREMOTEIO;
543 }
544
545 return 0;
546}
547
548static int afcerr_chk(struct mb86a16_state *state)
549{
550 unsigned char AFCM_L, AFCM_H ;
551 int AFCM ;
552 int afcm, afcerr ;
553
554 if (mb86a16_read(state, 0x0e, &AFCM_L) != 2)
555 goto err;
556 if (mb86a16_read(state, 0x0f, &AFCM_H) != 2)
557 goto err;
558
559 AFCM = (AFCM_H << 8) + AFCM_L;
560
561 if (AFCM > 2048)
562 afcm = AFCM - 4096;
563 else
564 afcm = AFCM;
565 afcerr = afcm * state->master_clk / 8192;
566
567 return afcerr;
568
569err:
570 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
571 return -EREMOTEIO;
572}
573
574static int dagcm_val_get(struct mb86a16_state *state)
575{
576 int DAGCM;
577 unsigned char DAGCM_H, DAGCM_L;
578
579 if (mb86a16_read(state, 0x45, &DAGCM_L) != 2)
580 goto err;
581 if (mb86a16_read(state, 0x46, &DAGCM_H) != 2)
582 goto err;
583
584 DAGCM = (DAGCM_H << 8) + DAGCM_L;
585
586 return DAGCM;
587
588err:
589 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
590 return -EREMOTEIO;
591}
592
593static int mb86a16_read_status(struct dvb_frontend *fe, fe_status_t *status)
594{
595 u8 stat, stat2;
596 struct mb86a16_state *state = fe->demodulator_priv;
597
598 *status = 0;
599
600 if (mb86a16_read(state, MB86A16_SIG1, &stat) != 2)
601 goto err;
602 if (mb86a16_read(state, MB86A16_SIG2, &stat2) != 2)
603 goto err;
604 if ((stat > 25) && (stat2 > 25))
605 *status |= FE_HAS_SIGNAL;
606 if ((stat > 45) && (stat2 > 45))
607 *status |= FE_HAS_CARRIER;
608
609 if (mb86a16_read(state, MB86A16_STATUS, &stat) != 2)
610 goto err;
611
612 if (stat & 0x01)
613 *status |= FE_HAS_SYNC;
614 if (stat & 0x01)
615 *status |= FE_HAS_VITERBI;
616
617 if (mb86a16_read(state, MB86A16_FRAMESYNC, &stat) != 2)
618 goto err;
619
620 if ((stat & 0x0f) && (*status & FE_HAS_VITERBI))
621 *status |= FE_HAS_LOCK;
622
623 return 0;
624
625err:
626 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
627 return -EREMOTEIO;
628}
629
630static int sync_chk(struct mb86a16_state *state,
631 unsigned char *VIRM)
632{
633 unsigned char val;
634 int sync;
635
636 if (mb86a16_read(state, 0x0d, &val) != 2)
637 goto err;
638
639 dprintk(verbose, MB86A16_INFO, 1, "Status = %02x,", val);
640 sync = val & 0x01;
641 *VIRM = (val & 0x1c) >> 2;
642
643 return sync;
644err:
645 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
646 return -EREMOTEIO;
647
648}
649
650static int freqerr_chk(struct mb86a16_state *state,
651 int fTP,
652 int smrt,
653 int unit)
654{
655 unsigned char CRM, AFCML, AFCMH;
656 unsigned char temp1, temp2, temp3;
657 int crm, afcm, AFCM;
658 int crrerr, afcerr; /* kHz */
659 int frqerr; /* MHz */
660 int afcen, afcexen = 0;
661 int R, M, fOSC, fOSC_OFS;
662
663 if (mb86a16_read(state, 0x43, &CRM) != 2)
664 goto err;
665
666 if (CRM > 127)
667 crm = CRM - 256;
668 else
669 crm = CRM;
670
671 crrerr = smrt * crm / 256;
672 if (mb86a16_read(state, 0x49, &temp1) != 2)
673 goto err;
674
675 afcen = (temp1 & 0x04) >> 2;
676 if (afcen == 0) {
677 if (mb86a16_read(state, 0x2a, &temp1) != 2)
678 goto err;
679 afcexen = (temp1 & 0x20) >> 5;
680 }
681
682 if (afcen == 1) {
683 if (mb86a16_read(state, 0x0e, &AFCML) != 2)
684 goto err;
685 if (mb86a16_read(state, 0x0f, &AFCMH) != 2)
686 goto err;
687 } else if (afcexen == 1) {
688 if (mb86a16_read(state, 0x2b, &AFCML) != 2)
689 goto err;
690 if (mb86a16_read(state, 0x2c, &AFCMH) != 2)
691 goto err;
692 }
693 if ((afcen == 1) || (afcexen == 1)) {
694 smrt_info_get(state, smrt);
695 AFCM = ((AFCMH & 0x01) << 8) + AFCML;
696 if (AFCM > 255)
697 afcm = AFCM - 512;
698 else
699 afcm = AFCM;
700
701 afcerr = afcm * state->master_clk / 8192;
702 } else
703 afcerr = 0;
704
705 if (mb86a16_read(state, 0x22, &temp1) != 2)
706 goto err;
707 if (mb86a16_read(state, 0x23, &temp2) != 2)
708 goto err;
709 if (mb86a16_read(state, 0x24, &temp3) != 2)
710 goto err;
711
712 R = (temp1 & 0xe0) >> 5;
713 M = ((temp1 & 0x1f) << 12) + (temp2 << 4) + (temp3 >> 4);
714 if (R == 0)
715 fOSC = 2 * M;
716 else
717 fOSC = M;
718
719 fOSC_OFS = fOSC - fTP;
720
721 if (unit == 0) { /* MHz */
722 if (crrerr + afcerr + fOSC_OFS * 1000 >= 0)
723 frqerr = (crrerr + afcerr + fOSC_OFS * 1000 + 500) / 1000;
724 else
725 frqerr = (crrerr + afcerr + fOSC_OFS * 1000 - 500) / 1000;
726 } else { /* kHz */
727 frqerr = crrerr + afcerr + fOSC_OFS * 1000;
728 }
729
730 return frqerr;
731err:
732 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
733 return -EREMOTEIO;
734}
735
736static unsigned char vco_dev_get(struct mb86a16_state *state, int smrt)
737{
738 unsigned char R;
739
740 if (smrt > 9375)
741 R = 0;
742 else
743 R = 1;
744
745 return R;
746}
747
748static void swp_info_get(struct mb86a16_state *state,
749 int fOSC_start,
750 int smrt,
751 int v, int R,
752 int swp_ofs,
753 int *fOSC,
754 int *afcex_freq,
755 unsigned char *AFCEX_L,
756 unsigned char *AFCEX_H)
757{
758 int AFCEX ;
759 int crnt_swp_freq ;
760
761 crnt_swp_freq = fOSC_start * 1000 + v * swp_ofs;
762
763 if (R == 0)
764 *fOSC = (crnt_swp_freq + 1000) / 2000 * 2;
765 else
766 *fOSC = (crnt_swp_freq + 500) / 1000;
767
768 if (*fOSC >= crnt_swp_freq)
769 *afcex_freq = *fOSC * 1000 - crnt_swp_freq;
770 else
771 *afcex_freq = crnt_swp_freq - *fOSC * 1000;
772
773 AFCEX = *afcex_freq * 8192 / state->master_clk;
774 *AFCEX_L = AFCEX & 0x00ff;
775 *AFCEX_H = (AFCEX & 0x0f00) >> 8;
776}
777
778
779static int swp_freq_calcuation(struct mb86a16_state *state, int i, int v, int *V, int vmax, int vmin,
780 int SIGMIN, int fOSC, int afcex_freq, int swp_ofs, unsigned char *SIG1)
781{
782 int swp_freq ;
783
784 if ((i % 2 == 1) && (v <= vmax)) {
785 /* positive v (case 1) */
786 if ((v - 1 == vmin) &&
787 (*(V + 30 + v) >= 0) &&
788 (*(V + 30 + v - 1) >= 0) &&
789 (*(V + 30 + v - 1) > *(V + 30 + v)) &&
790 (*(V + 30 + v - 1) > SIGMIN)) {
791
792 swp_freq = fOSC * 1000 + afcex_freq - swp_ofs;
793 *SIG1 = *(V + 30 + v - 1);
794 } else if ((v == vmax) &&
795 (*(V + 30 + v) >= 0) &&
796 (*(V + 30 + v - 1) >= 0) &&
797 (*(V + 30 + v) > *(V + 30 + v - 1)) &&
798 (*(V + 30 + v) > SIGMIN)) {
799 /* (case 2) */
800 swp_freq = fOSC * 1000 + afcex_freq;
801 *SIG1 = *(V + 30 + v);
802 } else if ((*(V + 30 + v) > 0) &&
803 (*(V + 30 + v - 1) > 0) &&
804 (*(V + 30 + v - 2) > 0) &&
805 (*(V + 30 + v - 3) > 0) &&
806 (*(V + 30 + v - 1) > *(V + 30 + v)) &&
807 (*(V + 30 + v - 2) > *(V + 30 + v - 3)) &&
808 ((*(V + 30 + v - 1) > SIGMIN) ||
809 (*(V + 30 + v - 2) > SIGMIN))) {
810 /* (case 3) */
811 if (*(V + 30 + v - 1) >= *(V + 30 + v - 2)) {
812 swp_freq = fOSC * 1000 + afcex_freq - swp_ofs;
813 *SIG1 = *(V + 30 + v - 1);
814 } else {
815 swp_freq = fOSC * 1000 + afcex_freq - swp_ofs * 2;
816 *SIG1 = *(V + 30 + v - 2);
817 }
818 } else if ((v == vmax) &&
819 (*(V + 30 + v) >= 0) &&
820 (*(V + 30 + v - 1) >= 0) &&
821 (*(V + 30 + v - 2) >= 0) &&
822 (*(V + 30 + v) > *(V + 30 + v - 2)) &&
823 (*(V + 30 + v - 1) > *(V + 30 + v - 2)) &&
824 ((*(V + 30 + v) > SIGMIN) ||
825 (*(V + 30 + v - 1) > SIGMIN))) {
826 /* (case 4) */
827 if (*(V + 30 + v) >= *(V + 30 + v - 1)) {
828 swp_freq = fOSC * 1000 + afcex_freq;
829 *SIG1 = *(V + 30 + v);
830 } else {
831 swp_freq = fOSC * 1000 + afcex_freq - swp_ofs;
832 *SIG1 = *(V + 30 + v - 1);
833 }
834 } else {
835 swp_freq = -1 ;
836 }
837 } else if ((i % 2 == 0) && (v >= vmin)) {
838 /* Negative v (case 1) */
839 if ((*(V + 30 + v) > 0) &&
840 (*(V + 30 + v + 1) > 0) &&
841 (*(V + 30 + v + 2) > 0) &&
842 (*(V + 30 + v + 1) > *(V + 30 + v)) &&
843 (*(V + 30 + v + 1) > *(V + 30 + v + 2)) &&
844 (*(V + 30 + v + 1) > SIGMIN)) {
845
846 swp_freq = fOSC * 1000 + afcex_freq + swp_ofs;
847 *SIG1 = *(V + 30 + v + 1);
848 } else if ((v + 1 == vmax) &&
849 (*(V + 30 + v) >= 0) &&
850 (*(V + 30 + v + 1) >= 0) &&
851 (*(V + 30 + v + 1) > *(V + 30 + v)) &&
852 (*(V + 30 + v + 1) > SIGMIN)) {
853 /* (case 2) */
854 swp_freq = fOSC * 1000 + afcex_freq + swp_ofs;
855 *SIG1 = *(V + 30 + v);
856 } else if ((v == vmin) &&
857 (*(V + 30 + v) > 0) &&
858 (*(V + 30 + v + 1) > 0) &&
859 (*(V + 30 + v + 2) > 0) &&
860 (*(V + 30 + v) > *(V + 30 + v + 1)) &&
861 (*(V + 30 + v) > *(V + 30 + v + 2)) &&
862 (*(V + 30 + v) > SIGMIN)) {
863 /* (case 3) */
864 swp_freq = fOSC * 1000 + afcex_freq;
865 *SIG1 = *(V + 30 + v);
866 } else if ((*(V + 30 + v) >= 0) &&
867 (*(V + 30 + v + 1) >= 0) &&
868 (*(V + 30 + v + 2) >= 0) &&
869 (*(V + 30 + v + 3) >= 0) &&
870 (*(V + 30 + v + 1) > *(V + 30 + v)) &&
871 (*(V + 30 + v + 2) > *(V + 30 + v + 3)) &&
872 ((*(V + 30 + v + 1) > SIGMIN) ||
873 (*(V + 30 + v + 2) > SIGMIN))) {
874 /* (case 4) */
875 if (*(V + 30 + v + 1) >= *(V + 30 + v + 2)) {
876 swp_freq = fOSC * 1000 + afcex_freq + swp_ofs;
877 *SIG1 = *(V + 30 + v + 1);
878 } else {
879 swp_freq = fOSC * 1000 + afcex_freq + swp_ofs * 2;
880 *SIG1 = *(V + 30 + v + 2);
881 }
882 } else if ((*(V + 30 + v) >= 0) &&
883 (*(V + 30 + v + 1) >= 0) &&
884 (*(V + 30 + v + 2) >= 0) &&
885 (*(V + 30 + v + 3) >= 0) &&
886 (*(V + 30 + v) > *(V + 30 + v + 2)) &&
887 (*(V + 30 + v + 1) > *(V + 30 + v + 2)) &&
888 (*(V + 30 + v) > *(V + 30 + v + 3)) &&
889 (*(V + 30 + v + 1) > *(V + 30 + v + 3)) &&
890 ((*(V + 30 + v) > SIGMIN) ||
891 (*(V + 30 + v + 1) > SIGMIN))) {
892 /* (case 5) */
893 if (*(V + 30 + v) >= *(V + 30 + v + 1)) {
894 swp_freq = fOSC * 1000 + afcex_freq;
895 *SIG1 = *(V + 30 + v);
896 } else {
897 swp_freq = fOSC * 1000 + afcex_freq + swp_ofs;
898 *SIG1 = *(V + 30 + v + 1);
899 }
900 } else if ((v + 2 == vmin) &&
901 (*(V + 30 + v) >= 0) &&
902 (*(V + 30 + v + 1) >= 0) &&
903 (*(V + 30 + v + 2) >= 0) &&
904 (*(V + 30 + v + 1) > *(V + 30 + v)) &&
905 (*(V + 30 + v + 2) > *(V + 30 + v)) &&
906 ((*(V + 30 + v + 1) > SIGMIN) ||
907 (*(V + 30 + v + 2) > SIGMIN))) {
908 /* (case 6) */
909 if (*(V + 30 + v + 1) >= *(V + 30 + v + 2)) {
910 swp_freq = fOSC * 1000 + afcex_freq + swp_ofs;
911 *SIG1 = *(V + 30 + v + 1);
912 } else {
913 swp_freq = fOSC * 1000 + afcex_freq + swp_ofs * 2;
914 *SIG1 = *(V + 30 + v + 2);
915 }
916 } else if ((vmax == 0) && (vmin == 0) && (*(V + 30 + v) > SIGMIN)) {
917 swp_freq = fOSC * 1000;
918 *SIG1 = *(V + 30 + v);
919 } else
920 swp_freq = -1;
921 } else
922 swp_freq = -1;
923
924 return swp_freq;
925}
926
927static void swp_info_get2(struct mb86a16_state *state,
928 int smrt,
929 int R,
930 int swp_freq,
931 int *afcex_freq,
932 int *fOSC,
933 unsigned char *AFCEX_L,
934 unsigned char *AFCEX_H)
935{
936 int AFCEX ;
937
938 if (R == 0)
939 *fOSC = (swp_freq + 1000) / 2000 * 2;
940 else
941 *fOSC = (swp_freq + 500) / 1000;
942
943 if (*fOSC >= swp_freq)
944 *afcex_freq = *fOSC * 1000 - swp_freq;
945 else
946 *afcex_freq = swp_freq - *fOSC * 1000;
947
948 AFCEX = *afcex_freq * 8192 / state->master_clk;
949 *AFCEX_L = AFCEX & 0x00ff;
950 *AFCEX_H = (AFCEX & 0x0f00) >> 8;
951}
952
953static void afcex_info_get(struct mb86a16_state *state,
954 int afcex_freq,
955 unsigned char *AFCEX_L,
956 unsigned char *AFCEX_H)
957{
958 int AFCEX ;
959
960 AFCEX = afcex_freq * 8192 / state->master_clk;
961 *AFCEX_L = AFCEX & 0x00ff;
962 *AFCEX_H = (AFCEX & 0x0f00) >> 8;
963}
964
965static int SEQ_set(struct mb86a16_state *state, unsigned char loop)
966{
967 /* SLOCK0 = 0 */
968 if (mb86a16_write(state, 0x32, 0x02 | (loop << 2)) < 0) {
969 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
970 return -EREMOTEIO;
971 }
972
973 return 0;
974}
975
976static int iq_vt_set(struct mb86a16_state *state, unsigned char IQINV)
977{
978 /* Viterbi Rate, IQ Settings */
979 if (mb86a16_write(state, 0x06, 0xdf | (IQINV << 5)) < 0) {
980 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
981 return -EREMOTEIO;
982 }
983
984 return 0;
985}
986
987static int FEC_srst(struct mb86a16_state *state)
988{
989 if (mb86a16_write(state, MB86A16_RESET, 0x02) < 0) {
990 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
991 return -EREMOTEIO;
992 }
993
994 return 0;
995}
996
997static int S2T_set(struct mb86a16_state *state, unsigned char S2T)
998{
999 if (mb86a16_write(state, 0x34, 0x70 | S2T) < 0) {
1000 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
1001 return -EREMOTEIO;
1002 }
1003
1004 return 0;
1005}
1006
1007static int S45T_set(struct mb86a16_state *state, unsigned char S4T, unsigned char S5T)
1008{
1009 if (mb86a16_write(state, 0x35, 0x00 | (S5T << 4) | S4T) < 0) {
1010 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
1011 return -EREMOTEIO;
1012 }
1013
1014 return 0;
1015}
1016
1017
1018static int mb86a16_set_fe(struct mb86a16_state *state)
1019{
1020 u8 agcval, cnmval;
1021
1022 int i, j;
1023 int fOSC = 0;
1024 int fOSC_start = 0;
1025 int wait_t;
1026 int fcp;
1027 int swp_ofs;
1028 int V[60];
1029 u8 SIG1MIN;
1030
1031 unsigned char CREN, AFCEN, AFCEXEN;
1032 unsigned char SIG1;
1033 unsigned char TIMINT1, TIMINT2, TIMEXT;
1034 unsigned char S0T, S1T;
1035 unsigned char S2T;
1036/* unsigned char S2T, S3T; */
1037 unsigned char S4T, S5T;
1038 unsigned char AFCEX_L, AFCEX_H;
1039 unsigned char R;
1040 unsigned char VIRM;
1041 unsigned char ETH, VIA;
1042 unsigned char junk;
1043
1044 int loop;
1045 int ftemp;
1046 int v, vmax, vmin;
1047 int vmax_his, vmin_his;
1048 int swp_freq, prev_swp_freq[20];
1049 int prev_freq_num;
1050 int signal_dupl;
1051 int afcex_freq;
1052 int signal;
1053 int afcerr;
1054 int temp_freq, delta_freq;
1055 int dagcm[4];
1056 int smrt_d;
1057/* int freq_err; */
1058 int n;
1059 int ret = -1;
1060 int sync;
1061
1062 dprintk(verbose, MB86A16_INFO, 1, "freq=%d Mhz, symbrt=%d Ksps", state->frequency, state->srate);
1063
1064 fcp = 3000;
1065 swp_ofs = state->srate / 4;
1066
1067 for (i = 0; i < 60; i++)
1068 V[i] = -1;
1069
1070 for (i = 0; i < 20; i++)
1071 prev_swp_freq[i] = 0;
1072
1073 SIG1MIN = 25;
1074
1075 for (n = 0; ((n < 3) && (ret == -1)); n++) {
1076 SEQ_set(state, 0);
1077 iq_vt_set(state, 0);
1078
1079 CREN = 0;
1080 AFCEN = 0;
1081 AFCEXEN = 1;
1082 TIMINT1 = 0;
1083 TIMINT2 = 1;
1084 TIMEXT = 2;
1085 S1T = 0;
1086 S0T = 0;
1087
1088 if (initial_set(state) < 0) {
1089 dprintk(verbose, MB86A16_ERROR, 1, "initial set failed");
1090 return -1;
1091 }
1092 if (DAGC_data_set(state, 3, 2) < 0) {
1093 dprintk(verbose, MB86A16_ERROR, 1, "DAGC data set error");
1094 return -1;
1095 }
1096 if (EN_set(state, CREN, AFCEN) < 0) {
1097 dprintk(verbose, MB86A16_ERROR, 1, "EN set error");
1098 return -1; /* (0, 0) */
1099 }
1100 if (AFCEXEN_set(state, AFCEXEN, state->srate) < 0) {
1101 dprintk(verbose, MB86A16_ERROR, 1, "AFCEXEN set error");
1102 return -1; /* (1, smrt) = (1, symbolrate) */
1103 }
1104 if (CNTM_set(state, TIMINT1, TIMINT2, TIMEXT) < 0) {
1105 dprintk(verbose, MB86A16_ERROR, 1, "CNTM set error");
1106 return -1; /* (0, 1, 2) */
1107 }
1108 if (S01T_set(state, S1T, S0T) < 0) {
1109 dprintk(verbose, MB86A16_ERROR, 1, "S01T set error");
1110 return -1; /* (0, 0) */
1111 }
1112 smrt_info_get(state, state->srate);
1113 if (smrt_set(state, state->srate) < 0) {
1114 dprintk(verbose, MB86A16_ERROR, 1, "smrt info get error");
1115 return -1;
1116 }
1117
1118 R = vco_dev_get(state, state->srate);
1119 if (R == 1)
1120 fOSC_start = state->frequency;
1121
1122 else if (R == 0) {
1123 if (state->frequency % 2 == 0) {
1124 fOSC_start = state->frequency;
1125 } else {
1126 fOSC_start = state->frequency + 1;
1127 if (fOSC_start > 2150)
1128 fOSC_start = state->frequency - 1;
1129 }
1130 }
1131 loop = 1;
1132 ftemp = fOSC_start * 1000;
1133 vmax = 0 ;
1134 while (loop == 1) {
1135 ftemp = ftemp + swp_ofs;
1136 vmax++;
1137
1138 /* Upper bound */
1139 if (ftemp > 2150000) {
1140 loop = 0;
1141 vmax--;
1142 } else {
1143 if ((ftemp == 2150000) ||
1144 (ftemp - state->frequency * 1000 >= fcp + state->srate / 4))
1145 loop = 0;
1146 }
1147 }
1148
1149 loop = 1;
1150 ftemp = fOSC_start * 1000;
1151 vmin = 0 ;
1152 while (loop == 1) {
1153 ftemp = ftemp - swp_ofs;
1154 vmin--;
1155
1156 /* Lower bound */
1157 if (ftemp < 950000) {
1158 loop = 0;
1159 vmin++;
1160 } else {
1161 if ((ftemp == 950000) ||
1162 (state->frequency * 1000 - ftemp >= fcp + state->srate / 4))
1163 loop = 0;
1164 }
1165 }
1166
1167 wait_t = (8000 + state->srate / 2) / state->srate;
1168 if (wait_t == 0)
1169 wait_t = 1;
1170
1171 i = 0;
1172 j = 0;
1173 prev_freq_num = 0;
1174 loop = 1;
1175 signal = 0;
1176 vmax_his = 0;
1177 vmin_his = 0;
1178 v = 0;
1179
1180 while (loop == 1) {
1181 swp_info_get(state, fOSC_start, state->srate,
1182 v, R, swp_ofs, &fOSC,
1183 &afcex_freq, &AFCEX_L, &AFCEX_H);
1184
1185 udelay(100);
1186 if (rf_val_set(state, fOSC, state->srate, R) < 0) {
1187 dprintk(verbose, MB86A16_ERROR, 1, "rf val set error");
1188 return -1;
1189 }
1190 udelay(100);
1191 if (afcex_data_set(state, AFCEX_L, AFCEX_H) < 0) {
1192 dprintk(verbose, MB86A16_ERROR, 1, "afcex data set error");
1193 return -1;
1194 }
1195 if (srst(state) < 0) {
1196 dprintk(verbose, MB86A16_ERROR, 1, "srst error");
1197 return -1;
1198 }
1199 msleep_interruptible(wait_t);
1200
1201 if (mb86a16_read(state, 0x37, &SIG1) != 2) {
1202 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
1203 return -1;
1204 }
1205 V[30 + v] = SIG1 ;
1206 swp_freq = swp_freq_calcuation(state, i, v, V, vmax, vmin,
1207 SIG1MIN, fOSC, afcex_freq,
1208 swp_ofs, &SIG1); /* changed */
1209
1210 signal_dupl = 0;
1211 for (j = 0; j < prev_freq_num; j++) {
1212 if ((ABS(prev_swp_freq[j] - swp_freq)) < (swp_ofs * 3 / 2)) {
1213 signal_dupl = 1;
1214 dprintk(verbose, MB86A16_INFO, 1, "Probably Duplicate Signal, j = %d", j);
1215 }
1216 }
1217 if ((signal_dupl == 0) && (swp_freq > 0) && (ABS(swp_freq - state->frequency * 1000) < fcp + state->srate / 6)) {
1218 dprintk(verbose, MB86A16_DEBUG, 1, "------ Signal detect ------ [swp_freq=[%07d, srate=%05d]]", swp_freq, state->srate);
1219 prev_swp_freq[prev_freq_num] = swp_freq;
1220 prev_freq_num++;
1221 swp_info_get2(state, state->srate, R, swp_freq,
1222 &afcex_freq, &fOSC,
1223 &AFCEX_L, &AFCEX_H);
1224
1225 if (rf_val_set(state, fOSC, state->srate, R) < 0) {
1226 dprintk(verbose, MB86A16_ERROR, 1, "rf val set error");
1227 return -1;
1228 }
1229 if (afcex_data_set(state, AFCEX_L, AFCEX_H) < 0) {
1230 dprintk(verbose, MB86A16_ERROR, 1, "afcex data set error");
1231 return -1;
1232 }
1233 signal = signal_det(state, state->srate, &SIG1);
1234 if (signal == 1) {
1235 dprintk(verbose, MB86A16_ERROR, 1, "***** Signal Found *****");
1236 loop = 0;
1237 } else {
1238 dprintk(verbose, MB86A16_ERROR, 1, "!!!!! No signal !!!!!, try again...");
1239 smrt_info_get(state, state->srate);
1240 if (smrt_set(state, state->srate) < 0) {
1241 dprintk(verbose, MB86A16_ERROR, 1, "smrt set error");
1242 return -1;
1243 }
1244 }
1245 }
1246 if (v > vmax)
1247 vmax_his = 1 ;
1248 if (v < vmin)
1249 vmin_his = 1 ;
1250 i++;
1251
1252 if ((i % 2 == 1) && (vmax_his == 1))
1253 i++;
1254 if ((i % 2 == 0) && (vmin_his == 1))
1255 i++;
1256
1257 if (i % 2 == 1)
1258 v = (i + 1) / 2;
1259 else
1260 v = -i / 2;
1261
1262 if ((vmax_his == 1) && (vmin_his == 1))
1263 loop = 0 ;
1264 }
1265
1266 if (signal == 1) {
1267 dprintk(verbose, MB86A16_INFO, 1, " Start Freq Error Check");
1268 S1T = 7 ;
1269 S0T = 1 ;
1270 CREN = 0 ;
1271 AFCEN = 1 ;
1272 AFCEXEN = 0 ;
1273
1274 if (S01T_set(state, S1T, S0T) < 0) {
1275 dprintk(verbose, MB86A16_ERROR, 1, "S01T set error");
1276 return -1;
1277 }
1278 smrt_info_get(state, state->srate);
1279 if (smrt_set(state, state->srate) < 0) {
1280 dprintk(verbose, MB86A16_ERROR, 1, "smrt set error");
1281 return -1;
1282 }
1283 if (EN_set(state, CREN, AFCEN) < 0) {
1284 dprintk(verbose, MB86A16_ERROR, 1, "EN set error");
1285 return -1;
1286 }
1287 if (AFCEXEN_set(state, AFCEXEN, state->srate) < 0) {
1288 dprintk(verbose, MB86A16_ERROR, 1, "AFCEXEN set error");
1289 return -1;
1290 }
1291 afcex_info_get(state, afcex_freq, &AFCEX_L, &AFCEX_H);
1292 if (afcofs_data_set(state, AFCEX_L, AFCEX_H) < 0) {
1293 dprintk(verbose, MB86A16_ERROR, 1, "AFCOFS data set error");
1294 return -1;
1295 }
1296 if (srst(state) < 0) {
1297 dprintk(verbose, MB86A16_ERROR, 1, "srst error");
1298 return -1;
1299 }
1300 /* delay 4~200 */
1301 wait_t = 200000 / state->master_clk + 200000 / state->srate;
1302 msleep(wait_t);
1303 afcerr = afcerr_chk(state);
1304 if (afcerr == -1)
1305 return -1;
1306
1307 swp_freq = fOSC * 1000 + afcerr ;
1308 AFCEXEN = 1 ;
1309 if (state->srate >= 1500)
1310 smrt_d = state->srate / 3;
1311 else
1312 smrt_d = state->srate / 2;
1313 smrt_info_get(state, smrt_d);
1314 if (smrt_set(state, smrt_d) < 0) {
1315 dprintk(verbose, MB86A16_ERROR, 1, "smrt set error");
1316 return -1;
1317 }
1318 if (AFCEXEN_set(state, AFCEXEN, smrt_d) < 0) {
1319 dprintk(verbose, MB86A16_ERROR, 1, "AFCEXEN set error");
1320 return -1;
1321 }
1322 R = vco_dev_get(state, smrt_d);
1323 if (DAGC_data_set(state, 2, 0) < 0) {
1324 dprintk(verbose, MB86A16_ERROR, 1, "DAGC data set error");
1325 return -1;
1326 }
1327 for (i = 0; i < 3; i++) {
1328 temp_freq = swp_freq + (i - 1) * state->srate / 8;
1329 swp_info_get2(state, smrt_d, R, temp_freq, &afcex_freq, &fOSC, &AFCEX_L, &AFCEX_H);
1330 if (rf_val_set(state, fOSC, smrt_d, R) < 0) {
1331 dprintk(verbose, MB86A16_ERROR, 1, "rf val set error");
1332 return -1;
1333 }
1334 if (afcex_data_set(state, AFCEX_L, AFCEX_H) < 0) {
1335 dprintk(verbose, MB86A16_ERROR, 1, "afcex data set error");
1336 return -1;
1337 }
1338 wait_t = 200000 / state->master_clk + 40000 / smrt_d;
1339 msleep(wait_t);
1340 dagcm[i] = dagcm_val_get(state);
1341 }
1342 if ((dagcm[0] > dagcm[1]) &&
1343 (dagcm[0] > dagcm[2]) &&
1344 (dagcm[0] - dagcm[1] > 2 * (dagcm[2] - dagcm[1]))) {
1345
1346 temp_freq = swp_freq - 2 * state->srate / 8;
1347 swp_info_get2(state, smrt_d, R, temp_freq, &afcex_freq, &fOSC, &AFCEX_L, &AFCEX_H);
1348 if (rf_val_set(state, fOSC, smrt_d, R) < 0) {
1349 dprintk(verbose, MB86A16_ERROR, 1, "rf val set error");
1350 return -1;
1351 }
1352 if (afcex_data_set(state, AFCEX_L, AFCEX_H) < 0) {
1353 dprintk(verbose, MB86A16_ERROR, 1, "afcex data set");
1354 return -1;
1355 }
1356 wait_t = 200000 / state->master_clk + 40000 / smrt_d;
1357 msleep(wait_t);
1358 dagcm[3] = dagcm_val_get(state);
1359 if (dagcm[3] > dagcm[1])
1360 delta_freq = (dagcm[2] - dagcm[0] + dagcm[1] - dagcm[3]) * state->srate / 300;
1361 else
1362 delta_freq = 0;
1363 } else if ((dagcm[2] > dagcm[1]) &&
1364 (dagcm[2] > dagcm[0]) &&
1365 (dagcm[2] - dagcm[1] > 2 * (dagcm[0] - dagcm[1]))) {
1366
1367 temp_freq = swp_freq + 2 * state->srate / 8;
1368 swp_info_get2(state, smrt_d, R, temp_freq, &afcex_freq, &fOSC, &AFCEX_L, &AFCEX_H);
1369 if (rf_val_set(state, fOSC, smrt_d, R) < 0) {
1370 dprintk(verbose, MB86A16_ERROR, 1, "rf val set");
1371 return -1;
1372 }
1373 if (afcex_data_set(state, AFCEX_L, AFCEX_H) < 0) {
1374 dprintk(verbose, MB86A16_ERROR, 1, "afcex data set");
1375 return -1;
1376 }
1377 wait_t = 200000 / state->master_clk + 40000 / smrt_d;
1378 msleep(wait_t);
1379 dagcm[3] = dagcm_val_get(state);
1380 if (dagcm[3] > dagcm[1])
1381 delta_freq = (dagcm[2] - dagcm[0] + dagcm[3] - dagcm[1]) * state->srate / 300;
1382 else
1383 delta_freq = 0 ;
1384
1385 } else {
1386 delta_freq = 0 ;
1387 }
1388 dprintk(verbose, MB86A16_INFO, 1, "SWEEP Frequency = %d", swp_freq);
1389 swp_freq += delta_freq;
1390 dprintk(verbose, MB86A16_INFO, 1, "Adjusting .., DELTA Freq = %d, SWEEP Freq=%d", delta_freq, swp_freq);
1391 if (ABS(state->frequency * 1000 - swp_freq) > 3800) {
1392 dprintk(verbose, MB86A16_INFO, 1, "NO -- SIGNAL !");
1393 } else {
1394
1395 S1T = 0;
1396 S0T = 3;
1397 CREN = 1;
1398 AFCEN = 0;
1399 AFCEXEN = 1;
1400
1401 if (S01T_set(state, S1T, S0T) < 0) {
1402 dprintk(verbose, MB86A16_ERROR, 1, "S01T set error");
1403 return -1;
1404 }
1405 if (DAGC_data_set(state, 0, 0) < 0) {
1406 dprintk(verbose, MB86A16_ERROR, 1, "DAGC data set error");
1407 return -1;
1408 }
1409 R = vco_dev_get(state, state->srate);
1410 smrt_info_get(state, state->srate);
1411 if (smrt_set(state, state->srate) < 0) {
1412 dprintk(verbose, MB86A16_ERROR, 1, "smrt set error");
1413 return -1;
1414 }
1415 if (EN_set(state, CREN, AFCEN) < 0) {
1416 dprintk(verbose, MB86A16_ERROR, 1, "EN set error");
1417 return -1;
1418 }
1419 if (AFCEXEN_set(state, AFCEXEN, state->srate) < 0) {
1420 dprintk(verbose, MB86A16_ERROR, 1, "AFCEXEN set error");
1421 return -1;
1422 }
1423 swp_info_get2(state, state->srate, R, swp_freq, &afcex_freq, &fOSC, &AFCEX_L, &AFCEX_H);
1424 if (rf_val_set(state, fOSC, state->srate, R) < 0) {
1425 dprintk(verbose, MB86A16_ERROR, 1, "rf val set error");
1426 return -1;
1427 }
1428 if (afcex_data_set(state, AFCEX_L, AFCEX_H) < 0) {
1429 dprintk(verbose, MB86A16_ERROR, 1, "afcex data set error");
1430 return -1;
1431 }
1432 if (srst(state) < 0) {
1433 dprintk(verbose, MB86A16_ERROR, 1, "srst error");
1434 return -1;
1435 }
1436 wait_t = 7 + (10000 + state->srate / 2) / state->srate;
1437 if (wait_t == 0)
1438 wait_t = 1;
1439 msleep_interruptible(wait_t);
1440 if (mb86a16_read(state, 0x37, &SIG1) != 2) {
1441 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
1442 return -EREMOTEIO;
1443 }
1444
1445 if (SIG1 > 110) {
1446 S2T = 4; S4T = 1; S5T = 6; ETH = 4; VIA = 6;
1447 wait_t = 7 + (917504 + state->srate / 2) / state->srate;
1448 } else if (SIG1 > 105) {
1449 S2T = 4; S4T = 2; S5T = 8; ETH = 7; VIA = 2;
1450 wait_t = 7 + (1048576 + state->srate / 2) / state->srate;
1451 } else if (SIG1 > 85) {
1452 S2T = 5; S4T = 2; S5T = 8; ETH = 7; VIA = 2;
1453 wait_t = 7 + (1310720 + state->srate / 2) / state->srate;
1454 } else if (SIG1 > 65) {
1455 S2T = 6; S4T = 2; S5T = 8; ETH = 7; VIA = 2;
1456 wait_t = 7 + (1572864 + state->srate / 2) / state->srate;
1457 } else {
1458 S2T = 7; S4T = 2; S5T = 8; ETH = 7; VIA = 2;
1459 wait_t = 7 + (2097152 + state->srate / 2) / state->srate;
1460 }
1461 wait_t *= 2; /* FOS */
1462 S2T_set(state, S2T);
1463 S45T_set(state, S4T, S5T);
1464 Vi_set(state, ETH, VIA);
1465 srst(state);
1466 msleep_interruptible(wait_t);
1467 sync = sync_chk(state, &VIRM);
1468 dprintk(verbose, MB86A16_INFO, 1, "-------- Viterbi=[%d] SYNC=[%d] ---------", VIRM, sync);
1469 if (VIRM) {
1470 if (VIRM == 4) {
1471 /* 5/6 */
1472 if (SIG1 > 110)
1473 wait_t = (786432 + state->srate / 2) / state->srate;
1474 else
1475 wait_t = (1572864 + state->srate / 2) / state->srate;
1476 if (state->srate < 5000)
1477 /* FIXME ! , should be a long wait ! */
1478 msleep_interruptible(wait_t);
1479 else
1480 msleep_interruptible(wait_t);
1481
1482 if (sync_chk(state, &junk) == 0) {
1483 iq_vt_set(state, 1);
1484 FEC_srst(state);
1485 }
1486 }
1487 /* 1/2, 2/3, 3/4, 7/8 */
1488 if (SIG1 > 110)
1489 wait_t = (786432 + state->srate / 2) / state->srate;
1490 else
1491 wait_t = (1572864 + state->srate / 2) / state->srate;
1492 msleep_interruptible(wait_t);
1493 SEQ_set(state, 1);
1494 } else {
1495 dprintk(verbose, MB86A16_INFO, 1, "NO -- SYNC");
1496 SEQ_set(state, 1);
1497 ret = -1;
1498 }
1499 }
1500 } else {
1501 dprintk(verbose, MB86A16_INFO, 1, "NO -- SIGNAL");
1502 ret = -1;
1503 }
1504
1505 sync = sync_chk(state, &junk);
1506 if (sync) {
1507 dprintk(verbose, MB86A16_INFO, 1, "******* SYNC *******");
1508 freqerr_chk(state, state->frequency, state->srate, 1);
1509 ret = 0;
1510 break;
1511 }
1512 }
1513
1514 mb86a16_read(state, 0x15, &agcval);
1515 mb86a16_read(state, 0x26, &cnmval);
1516 dprintk(verbose, MB86A16_INFO, 1, "AGC = %02x CNM = %02x", agcval, cnmval);
1517
1518 return ret;
1519}
1520
1521static int mb86a16_send_diseqc_msg(struct dvb_frontend *fe,
1522 struct dvb_diseqc_master_cmd *cmd)
1523{
1524 struct mb86a16_state *state = fe->demodulator_priv;
1525 int i;
1526 u8 regs;
1527
1528 if (mb86a16_write(state, MB86A16_DCC1, MB86A16_DCC1_DISTA) < 0)
1529 goto err;
1530 if (mb86a16_write(state, MB86A16_DCCOUT, 0x00) < 0)
1531 goto err;
1532 if (mb86a16_write(state, MB86A16_TONEOUT2, 0x04) < 0)
1533 goto err;
1534
1535 regs = 0x18;
1536
1537 if (cmd->msg_len > 5 || cmd->msg_len < 4)
1538 return -EINVAL;
1539
1540 for (i = 0; i < cmd->msg_len; i++) {
1541 if (mb86a16_write(state, regs, cmd->msg[i]) < 0)
1542 goto err;
1543
1544 regs++;
1545 }
1546 i += 0x90;
1547
1548 msleep_interruptible(10);
1549
1550 if (mb86a16_write(state, MB86A16_DCC1, i) < 0)
1551 goto err;
1552 if (mb86a16_write(state, MB86A16_DCCOUT, MB86A16_DCCOUT_DISEN) < 0)
1553 goto err;
1554
1555 return 0;
1556
1557err:
1558 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
1559 return -EREMOTEIO;
1560}
1561
1562static int mb86a16_send_diseqc_burst(struct dvb_frontend *fe, fe_sec_mini_cmd_t burst)
1563{
1564 struct mb86a16_state *state = fe->demodulator_priv;
1565
1566 switch (burst) {
1567 case SEC_MINI_A:
1568 if (mb86a16_write(state, MB86A16_DCC1, MB86A16_DCC1_DISTA |
1569 MB86A16_DCC1_TBEN |
1570 MB86A16_DCC1_TBO) < 0)
1571 goto err;
1572 if (mb86a16_write(state, MB86A16_DCCOUT, MB86A16_DCCOUT_DISEN) < 0)
1573 goto err;
1574 break;
1575 case SEC_MINI_B:
1576 if (mb86a16_write(state, MB86A16_DCC1, MB86A16_DCC1_DISTA |
1577 MB86A16_DCC1_TBEN) < 0)
1578 goto err;
1579 if (mb86a16_write(state, MB86A16_DCCOUT, MB86A16_DCCOUT_DISEN) < 0)
1580 goto err;
1581 break;
1582 }
1583
1584 return 0;
1585err:
1586 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
1587 return -EREMOTEIO;
1588}
1589
1590static int mb86a16_set_tone(struct dvb_frontend *fe, fe_sec_tone_mode_t tone)
1591{
1592 struct mb86a16_state *state = fe->demodulator_priv;
1593
1594 switch (tone) {
1595 case SEC_TONE_ON:
1596 if (mb86a16_write(state, MB86A16_TONEOUT2, 0x00) < 0)
1597 goto err;
1598 if (mb86a16_write(state, MB86A16_DCC1, MB86A16_DCC1_DISTA |
1599 MB86A16_DCC1_CTOE) < 0)
1600
1601 goto err;
1602 if (mb86a16_write(state, MB86A16_DCCOUT, MB86A16_DCCOUT_DISEN) < 0)
1603 goto err;
1604 break;
1605 case SEC_TONE_OFF:
1606 if (mb86a16_write(state, MB86A16_TONEOUT2, 0x04) < 0)
1607 goto err;
1608 if (mb86a16_write(state, MB86A16_DCC1, MB86A16_DCC1_DISTA) < 0)
1609 goto err;
1610 if (mb86a16_write(state, MB86A16_DCCOUT, 0x00) < 0)
1611 goto err;
1612 break;
1613 default:
1614 return -EINVAL;
1615 }
1616 return 0;
1617
1618err:
1619 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
1620 return -EREMOTEIO;
1621}
1622
1623static enum dvbfe_search mb86a16_search(struct dvb_frontend *fe,
1624 struct dvb_frontend_parameters *p)
1625{
1626 struct mb86a16_state *state = fe->demodulator_priv;
1627
1628 state->frequency = p->frequency / 1000;
1629 state->srate = p->u.qpsk.symbol_rate / 1000;
1630
1631 if (!mb86a16_set_fe(state)) {
1632 dprintk(verbose, MB86A16_ERROR, 1, "Succesfully acquired LOCK");
1633 return DVBFE_ALGO_SEARCH_SUCCESS;
1634 }
1635
1636 dprintk(verbose, MB86A16_ERROR, 1, "Lock acquisition failed!");
1637 return DVBFE_ALGO_SEARCH_FAILED;
1638}
1639
1640static void mb86a16_release(struct dvb_frontend *fe)
1641{
1642 struct mb86a16_state *state = fe->demodulator_priv;
1643 kfree(state);
1644}
1645
1646static int mb86a16_init(struct dvb_frontend *fe)
1647{
1648 return 0;
1649}
1650
1651static int mb86a16_sleep(struct dvb_frontend *fe)
1652{
1653 return 0;
1654}
1655
1656static int mb86a16_read_ber(struct dvb_frontend *fe, u32 *ber)
1657{
1658 u8 ber_mon, ber_tab, ber_lsb, ber_mid, ber_msb, ber_tim, ber_rst;
1659 u32 timer;
1660
1661 struct mb86a16_state *state = fe->demodulator_priv;
1662
1663 *ber = 0;
1664 if (mb86a16_read(state, MB86A16_BERMON, &ber_mon) != 2)
1665 goto err;
1666 if (mb86a16_read(state, MB86A16_BERTAB, &ber_tab) != 2)
1667 goto err;
1668 if (mb86a16_read(state, MB86A16_BERLSB, &ber_lsb) != 2)
1669 goto err;
1670 if (mb86a16_read(state, MB86A16_BERMID, &ber_mid) != 2)
1671 goto err;
1672 if (mb86a16_read(state, MB86A16_BERMSB, &ber_msb) != 2)
1673 goto err;
1674 /* BER monitor invalid when BER_EN = 0 */
1675 if (ber_mon & 0x04) {
1676 /* coarse, fast calculation */
1677 *ber = ber_tab & 0x1f;
1678 dprintk(verbose, MB86A16_DEBUG, 1, "BER coarse=[0x%02x]", *ber);
1679 if (ber_mon & 0x01) {
1680 /*
1681 * BER_SEL = 1, The monitored BER is the estimated
1682 * value with a Reed-Solomon decoder error amount at
1683 * the deinterleaver output.
1684 * monitored BER is expressed as a 20 bit output in total
1685 */
1686 ber_rst = ber_mon >> 3;
1687 *ber = (((ber_msb << 8) | ber_mid) << 8) | ber_lsb;
1688 if (ber_rst == 0)
1689 timer = 12500000;
1690 if (ber_rst == 1)
1691 timer = 25000000;
1692 if (ber_rst == 2)
1693 timer = 50000000;
1694 if (ber_rst == 3)
1695 timer = 100000000;
1696
1697 *ber /= timer;
1698 dprintk(verbose, MB86A16_DEBUG, 1, "BER fine=[0x%02x]", *ber);
1699 } else {
1700 /*
1701 * BER_SEL = 0, The monitored BER is the estimated
1702 * value with a Viterbi decoder error amount at the
1703 * QPSK demodulator output.
1704 * monitored BER is expressed as a 24 bit output in total
1705 */
1706 ber_tim = ber_mon >> 1;
1707 *ber = (((ber_msb << 8) | ber_mid) << 8) | ber_lsb;
1708 if (ber_tim == 0)
1709 timer = 16;
1710 if (ber_tim == 1)
1711 timer = 24;
1712
1713 *ber /= 2 ^ timer;
1714 dprintk(verbose, MB86A16_DEBUG, 1, "BER fine=[0x%02x]", *ber);
1715 }
1716 }
1717 return 0;
1718err:
1719 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
1720 return -EREMOTEIO;
1721}
1722
1723static int mb86a16_read_signal_strength(struct dvb_frontend *fe, u16 *strength)
1724{
1725 u8 agcm = 0;
1726 struct mb86a16_state *state = fe->demodulator_priv;
1727
1728 *strength = 0;
1729 if (mb86a16_read(state, MB86A16_AGCM, &agcm) != 2) {
1730 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
1731 return -EREMOTEIO;
1732 }
1733
1734 *strength = ((0xff - agcm) * 100) / 256;
1735 dprintk(verbose, MB86A16_DEBUG, 1, "Signal strength=[%d %%]", (u8) *strength);
1736 *strength = (0xffff - 0xff) + agcm;
1737
1738 return 0;
1739}
1740
1741struct cnr {
1742 u8 cn_reg;
1743 u8 cn_val;
1744};
1745
1746static const struct cnr cnr_tab[] = {
1747 { 35, 2 },
1748 { 40, 3 },
1749 { 50, 4 },
1750 { 60, 5 },
1751 { 70, 6 },
1752 { 80, 7 },
1753 { 92, 8 },
1754 { 103, 9 },
1755 { 115, 10 },
1756 { 138, 12 },
1757 { 162, 15 },
1758 { 180, 18 },
1759 { 185, 19 },
1760 { 189, 20 },
1761 { 195, 22 },
1762 { 199, 24 },
1763 { 201, 25 },
1764 { 202, 26 },
1765 { 203, 27 },
1766 { 205, 28 },
1767 { 208, 30 }
1768};
1769
1770static int mb86a16_read_snr(struct dvb_frontend *fe, u16 *snr)
1771{
1772 struct mb86a16_state *state = fe->demodulator_priv;
1773 int i = 0;
1774 int low_tide = 2, high_tide = 30, q_level;
1775 u8 cn;
1776
1777 *snr = 0;
1778 if (mb86a16_read(state, 0x26, &cn) != 2) {
1779 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
1780 return -EREMOTEIO;
1781 }
1782
1783 for (i = 0; i < ARRAY_SIZE(cnr_tab); i++) {
1784 if (cn < cnr_tab[i].cn_reg) {
1785 *snr = cnr_tab[i].cn_val;
1786 break;
1787 }
1788 }
1789 q_level = (*snr * 100) / (high_tide - low_tide);
1790 dprintk(verbose, MB86A16_ERROR, 1, "SNR (Quality) = [%d dB], Level=%d %%", *snr, q_level);
1791 *snr = (0xffff - 0xff) + *snr;
1792
1793 return 0;
1794}
1795
1796static int mb86a16_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
1797{
1798 u8 dist;
1799 struct mb86a16_state *state = fe->demodulator_priv;
1800
1801 if (mb86a16_read(state, MB86A16_DISTMON, &dist) != 2) {
1802 dprintk(verbose, MB86A16_ERROR, 1, "I2C transfer error");
1803 return -EREMOTEIO;
1804 }
1805 *ucblocks = dist;
1806
1807 return 0;
1808}
1809
1810static enum dvbfe_algo mb86a16_frontend_algo(struct dvb_frontend *fe)
1811{
1812 return DVBFE_ALGO_CUSTOM;
1813}
1814
1815static struct dvb_frontend_ops mb86a16_ops = {
1816 .info = {
1817 .name = "Fujitsu MB86A16 DVB-S",
1818 .type = FE_QPSK,
1819 .frequency_min = 950000,
1820 .frequency_max = 2150000,
1821 .frequency_stepsize = 3000,
1822 .frequency_tolerance = 0,
1823 .symbol_rate_min = 1000000,
1824 .symbol_rate_max = 45000000,
1825 .symbol_rate_tolerance = 500,
1826 .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 |
1827 FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 |
1828 FE_CAN_FEC_7_8 | FE_CAN_QPSK |
1829 FE_CAN_FEC_AUTO
1830 },
1831 .release = mb86a16_release,
1832
1833 .get_frontend_algo = mb86a16_frontend_algo,
1834 .search = mb86a16_search,
1835 .read_status = mb86a16_read_status,
1836 .init = mb86a16_init,
1837 .sleep = mb86a16_sleep,
1838 .read_status = mb86a16_read_status,
1839
1840 .read_ber = mb86a16_read_ber,
1841 .read_signal_strength = mb86a16_read_signal_strength,
1842 .read_snr = mb86a16_read_snr,
1843 .read_ucblocks = mb86a16_read_ucblocks,
1844
1845 .diseqc_send_master_cmd = mb86a16_send_diseqc_msg,
1846 .diseqc_send_burst = mb86a16_send_diseqc_burst,
1847 .set_tone = mb86a16_set_tone,
1848};
1849
1850struct dvb_frontend *mb86a16_attach(const struct mb86a16_config *config,
1851 struct i2c_adapter *i2c_adap)
1852{
1853 u8 dev_id = 0;
1854 struct mb86a16_state *state = NULL;
1855
1856 state = kmalloc(sizeof(struct mb86a16_state), GFP_KERNEL);
1857 if (state == NULL)
1858 goto error;
1859
1860 state->config = config;
1861 state->i2c_adap = i2c_adap;
1862
1863 mb86a16_read(state, 0x7f, &dev_id);
1864 if (dev_id != 0xfe)
1865 goto error;
1866
1867 memcpy(&state->frontend.ops, &mb86a16_ops, sizeof(struct dvb_frontend_ops));
1868 state->frontend.demodulator_priv = state;
1869 state->frontend.ops.set_voltage = state->config->set_voltage;
1870
1871 return &state->frontend;
1872error:
1873 kfree(state);
1874 return NULL;
1875}
1876EXPORT_SYMBOL(mb86a16_attach);
1877MODULE_LICENSE("GPL");
1878MODULE_AUTHOR("Manu Abraham");
diff --git a/drivers/media/dvb/frontends/mb86a16.h b/drivers/media/dvb/frontends/mb86a16.h
new file mode 100644
index 000000000000..6ea8c376394f
--- /dev/null
+++ b/drivers/media/dvb/frontends/mb86a16.h
@@ -0,0 +1,52 @@
1/*
2 Fujitsu MB86A16 DVB-S/DSS DC Receiver driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MB86A16_H
22#define __MB86A16_H
23
24#include <linux/dvb/frontend.h>
25#include "dvb_frontend.h"
26
27
28struct mb86a16_config {
29 u8 demod_address;
30
31 int (*set_voltage)(struct dvb_frontend *fe, fe_sec_voltage_t voltage);
32};
33
34
35
36#if defined(CONFIG_DVB_MB86A16) || (defined(CONFIG_DVB_MB86A16_MODULE) && defined(MODULE))
37
38extern struct dvb_frontend *mb86a16_attach(const struct mb86a16_config *config,
39 struct i2c_adapter *i2c_adap);
40
41#else
42
43static inline struct dvb_frontend *mb86a16_attach(const struct mb86a16_config *config,
44 struct i2c_adapter *i2c_adap)
45{
46 printk(KERN_WARNING "%s: Driver disabled by Kconfig\n", __func__);
47 return NULL;
48}
49
50#endif /* CONFIG_DVB_MB86A16 */
51
52#endif /* __MB86A16_H */
diff --git a/drivers/media/dvb/frontends/mb86a16_priv.h b/drivers/media/dvb/frontends/mb86a16_priv.h
new file mode 100644
index 000000000000..360a35acfe84
--- /dev/null
+++ b/drivers/media/dvb/frontends/mb86a16_priv.h
@@ -0,0 +1,151 @@
1/*
2 Fujitsu MB86A16 DVB-S/DSS DC Receiver driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MB86A16_PRIV_H
22#define __MB86A16_PRIV_H
23
24#define MB86A16_TSOUT 0x00
25#define MB86A16_TSOUT_HIZSEL (0x01 << 5)
26#define MB86A16_TSOUT_HIZCNTI (0x01 << 4)
27#define MB86A16_TSOUT_MODE (0x01 << 3)
28#define MB86A16_TSOUT_ORDER (0x01 << 2)
29#define MB86A16_TSOUT_ERROR (0x01 << 1)
30#define Mb86A16_TSOUT_EDGE (0x01 << 0)
31
32#define MB86A16_FEC 0x01
33#define MB86A16_FEC_FSYNC (0x01 << 5)
34#define MB86A16_FEC_PCKB8 (0x01 << 4)
35#define MB86A16_FEC_DVDS (0x01 << 3)
36#define MB86A16_FEC_EREN (0x01 << 2)
37#define Mb86A16_FEC_RSEN (0x01 << 1)
38#define MB86A16_FEC_DIEN (0x01 << 0)
39
40#define MB86A16_AGC 0x02
41#define MB86A16_AGC_AGMD (0x01 << 6)
42#define MB86A16_AGC_AGCW (0x0f << 2)
43#define MB86A16_AGC_AGCP (0x01 << 1)
44#define MB86A16_AGC_AGCR (0x01 << 0)
45
46#define MB86A16_SRATE1 0x03
47#define MB86A16_SRATE1_DECI (0x07 << 2)
48#define MB86A16_SRATE1_CSEL (0x01 << 1)
49#define MB86A16_SRATE1_RSEL (0x01 << 0)
50
51#define MB86A16_SRATE2 0x04
52#define MB86A16_SRATE2_STOFSL (0xff << 0)
53
54#define MB86A16_SRATE3 0x05
55#define MB86A16_SRATE2_STOFSH (0xff << 0)
56
57#define MB86A16_VITERBI 0x06
58#define MB86A16_FRAMESYNC 0x07
59#define MB86A16_CRLFILTCOEF1 0x08
60#define MB86A16_CRLFILTCOEF2 0x09
61#define MB86A16_STRFILTCOEF1 0x0a
62#define MB86A16_STRFILTCOEF2 0x0b
63#define MB86A16_RESET 0x0c
64#define MB86A16_STATUS 0x0d
65#define MB86A16_AFCML 0x0e
66#define MB86A16_AFCMH 0x0f
67#define MB86A16_BERMON 0x10
68#define MB86A16_BERTAB 0x11
69#define MB86A16_BERLSB 0x12
70#define MB86A16_BERMID 0x13
71#define MB86A16_BERMSB 0x14
72#define MB86A16_AGCM 0x15
73
74#define MB86A16_DCC1 0x16
75#define MB86A16_DCC1_DISTA (0x01 << 7)
76#define MB86A16_DCC1_PRTY (0x01 << 6)
77#define MB86A16_DCC1_CTOE (0x01 << 5)
78#define MB86A16_DCC1_TBEN (0x01 << 4)
79#define MB86A16_DCC1_TBO (0x01 << 3)
80#define MB86A16_DCC1_NUM (0x07 << 0)
81
82#define MB86A16_DCC2 0x17
83#define MB86A16_DCC2_DCBST (0x01 << 0)
84
85#define MB86A16_DCC3 0x18
86#define MB86A16_DCC3_CODE0 (0xff << 0)
87
88#define MB86A16_DCC4 0x19
89#define MB86A16_DCC4_CODE1 (0xff << 0)
90
91#define MB86A16_DCC5 0x1a
92#define MB86A16_DCC5_CODE2 (0xff << 0)
93
94#define MB86A16_DCC6 0x1b
95#define MB86A16_DCC6_CODE3 (0xff << 0)
96
97#define MB86A16_DCC7 0x1c
98#define MB86A16_DCC7_CODE4 (0xff << 0)
99
100#define MB86A16_DCC8 0x1d
101#define MB86A16_DCC8_CODE5 (0xff << 0)
102
103#define MB86A16_DCCOUT 0x1e
104#define MB86A16_DCCOUT_DISEN (0x01 << 0)
105
106#define MB86A16_TONEOUT1 0x1f
107#define MB86A16_TONE_TDIVL (0xff << 0)
108
109#define MB86A16_TONEOUT2 0x20
110#define MB86A16_TONE_TMD (0x03 << 2)
111#define MB86A16_TONE_TDIVH (0x03 << 0)
112
113#define MB86A16_FREQ1 0x21
114#define MB86A16_FREQ2 0x22
115#define MB86A16_FREQ3 0x23
116#define MB86A16_FREQ4 0x24
117#define MB86A16_FREQSET 0x25
118#define MB86A16_CNM 0x26
119#define MB86A16_PORT0 0x27
120#define MB86A16_PORT1 0x28
121#define MB86A16_DRCFILT 0x29
122#define MB86A16_AFC 0x2a
123#define MB86A16_AFCEXL 0x2b
124#define MB86A16_AFCEXH 0x2c
125#define MB86A16_DAGC 0x2d
126#define MB86A16_SEQMODE 0x32
127#define MB86A16_S0S1T 0x33
128#define MB86A16_S2S3T 0x34
129#define MB86A16_S4S5T 0x35
130#define MB86A16_CNTMR 0x36
131#define MB86A16_SIG1 0x37
132#define MB86A16_SIG2 0x38
133#define MB86A16_VIMAG 0x39
134#define MB86A16_VISET1 0x3a
135#define MB86A16_VISET2 0x3b
136#define MB86A16_VISET3 0x3c
137#define MB86A16_FAGCS1 0x3d
138#define MB86A16_FAGCS2 0x3e
139#define MB86A16_FAGCS3 0x3f
140#define MB86A16_FAGCS4 0x40
141#define MB86A16_FAGCS5 0x41
142#define MB86A16_FAGCS6 0x42
143#define MB86A16_CRM 0x43
144#define MB86A16_STRM 0x44
145#define MB86A16_DAGCML 0x45
146#define MB86A16_DAGCMH 0x46
147#define MB86A16_QPSKTST 0x49
148#define MB86A16_DISTMON 0x52
149#define MB86A16_VERSION 0x7f
150
151#endif /* __MB86A16_PRIV_H */
diff --git a/drivers/media/dvb/frontends/tda10021.c b/drivers/media/dvb/frontends/tda10021.c
index 6c1dbf9288d8..6ca533ea0f0e 100644
--- a/drivers/media/dvb/frontends/tda10021.c
+++ b/drivers/media/dvb/frontends/tda10021.c
@@ -426,6 +426,10 @@ struct dvb_frontend* tda10021_attach(const struct tda1002x_config* config,
426 id = tda10021_readreg(state, 0x1a); 426 id = tda10021_readreg(state, 0x1a);
427 if ((id & 0xf0) != 0x70) goto error; 427 if ((id & 0xf0) != 0x70) goto error;
428 428
429 /* Don't claim TDA10023 */
430 if (id == 0x7d)
431 goto error;
432
429 printk("TDA10021: i2c-addr = 0x%02x, id = 0x%02x\n", 433 printk("TDA10021: i2c-addr = 0x%02x, id = 0x%02x\n",
430 state->config->demod_address, id); 434 state->config->demod_address, id);
431 435
diff --git a/drivers/media/dvb/frontends/tda665x.c b/drivers/media/dvb/frontends/tda665x.c
new file mode 100644
index 000000000000..87d52739c828
--- /dev/null
+++ b/drivers/media/dvb/frontends/tda665x.c
@@ -0,0 +1,257 @@
1/*
2 TDA665x tuner driver
3 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18*/
19
20#include <linux/init.h>
21#include <linux/kernel.h>
22#include <linux/module.h>
23
24#include "dvb_frontend.h"
25#include "tda665x.h"
26
27struct tda665x_state {
28 struct dvb_frontend *fe;
29 struct i2c_adapter *i2c;
30 const struct tda665x_config *config;
31
32 u32 frequency;
33 u32 bandwidth;
34};
35
36static int tda665x_read(struct tda665x_state *state, u8 *buf)
37{
38 const struct tda665x_config *config = state->config;
39 int err = 0;
40 struct i2c_msg msg = { .addr = config->addr, .flags = I2C_M_RD, .buf = buf, .len = 2 };
41
42 err = i2c_transfer(state->i2c, &msg, 1);
43 if (err != 1)
44 goto exit;
45
46 return err;
47exit:
48 printk(KERN_ERR "%s: I/O Error err=<%d>\n", __func__, err);
49 return err;
50}
51
52static int tda665x_write(struct tda665x_state *state, u8 *buf, u8 length)
53{
54 const struct tda665x_config *config = state->config;
55 int err = 0;
56 struct i2c_msg msg = { .addr = config->addr, .flags = 0, .buf = buf, .len = length };
57
58 err = i2c_transfer(state->i2c, &msg, 1);
59 if (err != 1)
60 goto exit;
61
62 return err;
63exit:
64 printk(KERN_ERR "%s: I/O Error err=<%d>\n", __func__, err);
65 return err;
66}
67
68static int tda665x_get_state(struct dvb_frontend *fe,
69 enum tuner_param param,
70 struct tuner_state *tstate)
71{
72 struct tda665x_state *state = fe->tuner_priv;
73 int err = 0;
74
75 switch (param) {
76 case DVBFE_TUNER_FREQUENCY:
77 tstate->frequency = state->frequency;
78 break;
79 case DVBFE_TUNER_BANDWIDTH:
80 break;
81 default:
82 printk(KERN_ERR "%s: Unknown parameter (param=%d)\n", __func__, param);
83 err = -EINVAL;
84 break;
85 }
86
87 return err;
88}
89
90static int tda665x_get_status(struct dvb_frontend *fe, u32 *status)
91{
92 struct tda665x_state *state = fe->tuner_priv;
93 u8 result = 0;
94 int err = 0;
95
96 *status = 0;
97
98 err = tda665x_read(state, &result);
99 if (err < 0)
100 goto exit;
101
102 if ((result >> 6) & 0x01) {
103 printk(KERN_DEBUG "%s: Tuner Phase Locked\n", __func__);
104 *status = 1;
105 }
106
107 return err;
108exit:
109 printk(KERN_ERR "%s: I/O Error\n", __func__);
110 return err;
111}
112
113static int tda665x_set_state(struct dvb_frontend *fe,
114 enum tuner_param param,
115 struct tuner_state *tstate)
116{
117 struct tda665x_state *state = fe->tuner_priv;
118 const struct tda665x_config *config = state->config;
119 u32 frequency, status = 0;
120 u8 buf[4];
121 int err = 0;
122
123 if (param & DVBFE_TUNER_FREQUENCY) {
124
125 frequency = tstate->frequency;
126 if ((frequency < config->frequency_max) || (frequency > config->frequency_min)) {
127 printk(KERN_ERR "%s: Frequency beyond limits, frequency=%d\n", __func__, frequency);
128 return -EINVAL;
129 }
130
131 frequency += config->frequency_offst;
132 frequency *= config->ref_multiplier;
133 frequency += config->ref_divider >> 1;
134 frequency /= config->ref_divider;
135
136 buf[0] = (u8) (frequency & 0x7f00) >> 8;
137 buf[1] = (u8) (frequency & 0x00ff) >> 0;
138 buf[2] = 0x80 | 0x40 | 0x02;
139 buf[3] = 0x00;
140
141 /* restore frequency */
142 frequency = tstate->frequency;
143
144 if (frequency < 153000000) {
145 /* VHF-L */
146 buf[3] |= 0x01; /* fc, Low Band, 47 - 153 MHz */
147 if (frequency < 68000000)
148 buf[3] |= 0x40; /* 83uA */
149 if (frequency < 1040000000)
150 buf[3] |= 0x60; /* 122uA */
151 if (frequency < 1250000000)
152 buf[3] |= 0x80; /* 163uA */
153 else
154 buf[3] |= 0xa0; /* 254uA */
155 } else if (frequency < 438000000) {
156 /* VHF-H */
157 buf[3] |= 0x02; /* fc, Mid Band, 153 - 438 MHz */
158 if (frequency < 230000000)
159 buf[3] |= 0x40;
160 if (frequency < 300000000)
161 buf[3] |= 0x60;
162 else
163 buf[3] |= 0x80;
164 } else {
165 /* UHF */
166 buf[3] |= 0x04; /* fc, High Band, 438 - 862 MHz */
167 if (frequency < 470000000)
168 buf[3] |= 0x60;
169 if (frequency < 526000000)
170 buf[3] |= 0x80;
171 else
172 buf[3] |= 0xa0;
173 }
174
175 /* Set params */
176 err = tda665x_write(state, buf, 5);
177 if (err < 0)
178 goto exit;
179
180 /* sleep for some time */
181 printk(KERN_DEBUG "%s: Waiting to Phase LOCK\n", __func__);
182 msleep(20);
183 /* check status */
184 err = tda665x_get_status(fe, &status);
185 if (err < 0)
186 goto exit;
187
188 if (status == 1) {
189 printk(KERN_DEBUG "%s: Tuner Phase locked: status=%d\n", __func__, status);
190 state->frequency = frequency; /* cache successful state */
191 } else {
192 printk(KERN_ERR "%s: No Phase lock: status=%d\n", __func__, status);
193 }
194 } else {
195 printk(KERN_ERR "%s: Unknown parameter (param=%d)\n", __func__, param);
196 return -EINVAL;
197 }
198
199 return 0;
200exit:
201 printk(KERN_ERR "%s: I/O Error\n", __func__);
202 return err;
203}
204
205static int tda665x_release(struct dvb_frontend *fe)
206{
207 struct tda665x_state *state = fe->tuner_priv;
208
209 fe->tuner_priv = NULL;
210 kfree(state);
211 return 0;
212}
213
214static struct dvb_tuner_ops tda665x_ops = {
215
216 .set_state = tda665x_set_state,
217 .get_state = tda665x_get_state,
218 .get_status = tda665x_get_status,
219 .release = tda665x_release
220};
221
222struct dvb_frontend *tda665x_attach(struct dvb_frontend *fe,
223 const struct tda665x_config *config,
224 struct i2c_adapter *i2c)
225{
226 struct tda665x_state *state = NULL;
227 struct dvb_tuner_info *info;
228
229 state = kzalloc(sizeof(struct tda665x_state), GFP_KERNEL);
230 if (state == NULL)
231 goto exit;
232
233 state->config = config;
234 state->i2c = i2c;
235 state->fe = fe;
236 fe->tuner_priv = state;
237 fe->ops.tuner_ops = tda665x_ops;
238 info = &fe->ops.tuner_ops.info;
239
240 memcpy(info->name, config->name, sizeof(config->name));
241 info->frequency_min = config->frequency_min;
242 info->frequency_max = config->frequency_max;
243 info->frequency_step = config->frequency_offst;
244
245 printk(KERN_DEBUG "%s: Attaching TDA665x (%s) tuner\n", __func__, info->name);
246
247 return fe;
248
249exit:
250 kfree(state);
251 return NULL;
252}
253EXPORT_SYMBOL(tda665x_attach);
254
255MODULE_DESCRIPTION("TDA665x driver");
256MODULE_AUTHOR("Manu Abraham");
257MODULE_LICENSE("GPL");
diff --git a/drivers/media/dvb/frontends/tda665x.h b/drivers/media/dvb/frontends/tda665x.h
new file mode 100644
index 000000000000..ec7927aa75ae
--- /dev/null
+++ b/drivers/media/dvb/frontends/tda665x.h
@@ -0,0 +1,52 @@
1/*
2 TDA665x tuner driver
3 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18*/
19
20#ifndef __TDA665x_H
21#define __TDA665x_H
22
23struct tda665x_config {
24 char name[128];
25
26 u8 addr;
27 u32 frequency_min;
28 u32 frequency_max;
29 u32 frequency_offst;
30 u32 ref_multiplier;
31 u32 ref_divider;
32};
33
34#if defined(CONFIG_DVB_TDA665x) || (defined(CONFIG_DVB_TDA665x_MODULE) && defined(MODULE))
35
36extern struct dvb_frontend *tda665x_attach(struct dvb_frontend *fe,
37 const struct tda665x_config *config,
38 struct i2c_adapter *i2c);
39
40#else
41
42static inline struct dvb_frontend *tda665x_attach(struct dvb_frontend *fe,
43 const struct tda665x_config *config,
44 struct i2c_adapter *i2c)
45{
46 printk(KERN_WARNING "%s: Driver disabled by Kconfig\n", __func__);
47 return NULL;
48}
49
50#endif /* CONFIG_DVB_TDA665x */
51
52#endif /* __TDA665x_H */
diff --git a/drivers/media/dvb/mantis/Kconfig b/drivers/media/dvb/mantis/Kconfig
new file mode 100644
index 000000000000..f7b72a32adf3
--- /dev/null
+++ b/drivers/media/dvb/mantis/Kconfig
@@ -0,0 +1,32 @@
1config MANTIS_CORE
2 tristate "Mantis/Hopper PCI bridge based devices"
3 depends on PCI && I2C && INPUT
4
5 help
6 Support for PCI cards based on the Mantis and Hopper PCi bridge.
7
8 Say Y if you own such a device and want to use it.
9
10config DVB_MANTIS
11 tristate "MANTIS based cards"
12 depends on MANTIS_CORE && DVB_CORE && PCI && I2C
13 select DVB_MB86A16
14 select DVB_ZL10353
15 select DVB_STV0299
16 select DVB_PLL
17 help
18 Support for PCI cards based on the Mantis PCI bridge.
19 Say Y when you have a Mantis based DVB card and want to use it.
20
21 If unsure say N.
22
23config DVB_HOPPER
24 tristate "HOPPER based cards"
25 depends on MANTIS_CORE && DVB_CORE && PCI && I2C
26 select DVB_ZL10353
27 select DVB_PLL
28 help
29 Support for PCI cards based on the Hopper PCI bridge.
30 Say Y when you have a Hopper based DVB card and want to use it.
31
32 If unsure say N
diff --git a/drivers/media/dvb/mantis/Makefile b/drivers/media/dvb/mantis/Makefile
new file mode 100644
index 000000000000..98dc5cd258ac
--- /dev/null
+++ b/drivers/media/dvb/mantis/Makefile
@@ -0,0 +1,28 @@
1mantis_core-objs := mantis_ioc.o \
2 mantis_uart.o \
3 mantis_dma.o \
4 mantis_pci.o \
5 mantis_i2c.o \
6 mantis_dvb.o \
7 mantis_evm.o \
8 mantis_hif.o \
9 mantis_ca.o \
10 mantis_pcmcia.o \
11 mantis_input.o
12
13mantis-objs := mantis_cards.o \
14 mantis_vp1033.o \
15 mantis_vp1034.o \
16 mantis_vp1041.o \
17 mantis_vp2033.o \
18 mantis_vp2040.o \
19 mantis_vp3030.o
20
21hopper-objs := hopper_cards.o \
22 hopper_vp3028.o
23
24obj-$(CONFIG_MANTIS_CORE) += mantis_core.o
25obj-$(CONFIG_DVB_MANTIS) += mantis.o
26obj-$(CONFIG_DVB_HOPPER) += hopper.o
27
28EXTRA_CFLAGS = -Idrivers/media/dvb/dvb-core/ -Idrivers/media/dvb/frontends/
diff --git a/drivers/media/dvb/mantis/hopper_cards.c b/drivers/media/dvb/mantis/hopper_cards.c
new file mode 100644
index 000000000000..d073c61e3c0d
--- /dev/null
+++ b/drivers/media/dvb/mantis/hopper_cards.c
@@ -0,0 +1,275 @@
1/*
2 Hopper PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include <linux/module.h>
22#include <linux/moduleparam.h>
23#include <linux/kernel.h>
24#include <linux/pci.h>
25#include <asm/irq.h>
26#include <linux/interrupt.h>
27
28#include "dmxdev.h"
29#include "dvbdev.h"
30#include "dvb_demux.h"
31#include "dvb_frontend.h"
32#include "dvb_net.h"
33
34#include "mantis_common.h"
35#include "hopper_vp3028.h"
36#include "mantis_dma.h"
37#include "mantis_dvb.h"
38#include "mantis_uart.h"
39#include "mantis_ioc.h"
40#include "mantis_pci.h"
41#include "mantis_i2c.h"
42#include "mantis_reg.h"
43
44static unsigned int verbose;
45module_param(verbose, int, 0644);
46MODULE_PARM_DESC(verbose, "verbose startup messages, default is 1 (yes)");
47
48#define DRIVER_NAME "Hopper"
49
50static char *label[10] = {
51 "DMA",
52 "IRQ-0",
53 "IRQ-1",
54 "OCERR",
55 "PABRT",
56 "RIPRR",
57 "PPERR",
58 "FTRGT",
59 "RISCI",
60 "RACK"
61};
62
63static int devs;
64
65static irqreturn_t hopper_irq_handler(int irq, void *dev_id)
66{
67 u32 stat = 0, mask = 0, lstat = 0, mstat = 0;
68 u32 rst_stat = 0, rst_mask = 0;
69
70 struct mantis_pci *mantis;
71 struct mantis_ca *ca;
72
73 mantis = (struct mantis_pci *) dev_id;
74 if (unlikely(mantis == NULL)) {
75 dprintk(MANTIS_ERROR, 1, "Mantis == NULL");
76 return IRQ_NONE;
77 }
78 ca = mantis->mantis_ca;
79
80 stat = mmread(MANTIS_INT_STAT);
81 mask = mmread(MANTIS_INT_MASK);
82 mstat = lstat = stat & ~MANTIS_INT_RISCSTAT;
83 if (!(stat & mask))
84 return IRQ_NONE;
85
86 rst_mask = MANTIS_GPIF_WRACK |
87 MANTIS_GPIF_OTHERR |
88 MANTIS_SBUF_WSTO |
89 MANTIS_GPIF_EXTIRQ;
90
91 rst_stat = mmread(MANTIS_GPIF_STATUS);
92 rst_stat &= rst_mask;
93 mmwrite(rst_stat, MANTIS_GPIF_STATUS);
94
95 mantis->mantis_int_stat = stat;
96 mantis->mantis_int_mask = mask;
97 dprintk(MANTIS_DEBUG, 0, "\n-- Stat=<%02x> Mask=<%02x> --", stat, mask);
98 if (stat & MANTIS_INT_RISCEN) {
99 dprintk(MANTIS_DEBUG, 0, "<%s>", label[0]);
100 }
101 if (stat & MANTIS_INT_IRQ0) {
102 dprintk(MANTIS_DEBUG, 0, "<%s>", label[1]);
103 mantis->gpif_status = rst_stat;
104 wake_up(&ca->hif_write_wq);
105 schedule_work(&ca->hif_evm_work);
106 }
107 if (stat & MANTIS_INT_IRQ1) {
108 dprintk(MANTIS_DEBUG, 0, "<%s>", label[2]);
109 schedule_work(&mantis->uart_work);
110 }
111 if (stat & MANTIS_INT_OCERR) {
112 dprintk(MANTIS_DEBUG, 0, "<%s>", label[3]);
113 }
114 if (stat & MANTIS_INT_PABORT) {
115 dprintk(MANTIS_DEBUG, 0, "<%s>", label[4]);
116 }
117 if (stat & MANTIS_INT_RIPERR) {
118 dprintk(MANTIS_DEBUG, 0, "<%s>", label[5]);
119 }
120 if (stat & MANTIS_INT_PPERR) {
121 dprintk(MANTIS_DEBUG, 0, "<%s>", label[6]);
122 }
123 if (stat & MANTIS_INT_FTRGT) {
124 dprintk(MANTIS_DEBUG, 0, "<%s>", label[7]);
125 }
126 if (stat & MANTIS_INT_RISCI) {
127 dprintk(MANTIS_DEBUG, 0, "<%s>", label[8]);
128 mantis->finished_block = (stat & MANTIS_INT_RISCSTAT) >> 28;
129 tasklet_schedule(&mantis->tasklet);
130 }
131 if (stat & MANTIS_INT_I2CDONE) {
132 dprintk(MANTIS_DEBUG, 0, "<%s>", label[9]);
133 wake_up(&mantis->i2c_wq);
134 }
135 mmwrite(stat, MANTIS_INT_STAT);
136 stat &= ~(MANTIS_INT_RISCEN | MANTIS_INT_I2CDONE |
137 MANTIS_INT_I2CRACK | MANTIS_INT_PCMCIA7 |
138 MANTIS_INT_PCMCIA6 | MANTIS_INT_PCMCIA5 |
139 MANTIS_INT_PCMCIA4 | MANTIS_INT_PCMCIA3 |
140 MANTIS_INT_PCMCIA2 | MANTIS_INT_PCMCIA1 |
141 MANTIS_INT_PCMCIA0 | MANTIS_INT_IRQ1 |
142 MANTIS_INT_IRQ0 | MANTIS_INT_OCERR |
143 MANTIS_INT_PABORT | MANTIS_INT_RIPERR |
144 MANTIS_INT_PPERR | MANTIS_INT_FTRGT |
145 MANTIS_INT_RISCI);
146
147 if (stat)
148 dprintk(MANTIS_DEBUG, 0, "<Unknown> Stat=<%02x> Mask=<%02x>", stat, mask);
149
150 dprintk(MANTIS_DEBUG, 0, "\n");
151 return IRQ_HANDLED;
152}
153
154static int __devinit hopper_pci_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
155{
156 struct mantis_pci *mantis;
157 struct mantis_hwconfig *config;
158 int err = 0;
159
160 mantis = kzalloc(sizeof(struct mantis_pci), GFP_KERNEL);
161 if (mantis == NULL) {
162 printk(KERN_ERR "%s ERROR: Out of memory\n", __func__);
163 err = -ENOMEM;
164 goto fail0;
165 }
166
167 mantis->num = devs;
168 mantis->verbose = verbose;
169 mantis->pdev = pdev;
170 config = (struct mantis_hwconfig *) pci_id->driver_data;
171 config->irq_handler = &hopper_irq_handler;
172 mantis->hwconfig = config;
173
174 err = mantis_pci_init(mantis);
175 if (err) {
176 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis PCI initialization failed <%d>", err);
177 goto fail1;
178 }
179
180 err = mantis_stream_control(mantis, STREAM_TO_HIF);
181 if (err < 0) {
182 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis stream control failed <%d>", err);
183 goto fail1;
184 }
185
186 err = mantis_i2c_init(mantis);
187 if (err < 0) {
188 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis I2C initialization failed <%d>", err);
189 goto fail2;
190 }
191
192 err = mantis_get_mac(mantis);
193 if (err < 0) {
194 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis MAC address read failed <%d>", err);
195 goto fail2;
196 }
197
198 err = mantis_dma_init(mantis);
199 if (err < 0) {
200 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DMA initialization failed <%d>", err);
201 goto fail3;
202 }
203
204 err = mantis_dvb_init(mantis);
205 if (err < 0) {
206 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DVB initialization failed <%d>", err);
207 goto fail4;
208 }
209 devs++;
210
211 return err;
212
213fail4:
214 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DMA exit! <%d>", err);
215 mantis_dma_exit(mantis);
216
217fail3:
218 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis I2C exit! <%d>", err);
219 mantis_i2c_exit(mantis);
220
221fail2:
222 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis PCI exit! <%d>", err);
223 mantis_pci_exit(mantis);
224
225fail1:
226 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis free! <%d>", err);
227 kfree(mantis);
228
229fail0:
230 return err;
231}
232
233static void __devexit hopper_pci_remove(struct pci_dev *pdev)
234{
235 struct mantis_pci *mantis = pci_get_drvdata(pdev);
236
237 if (mantis) {
238 mantis_dvb_exit(mantis);
239 mantis_dma_exit(mantis);
240 mantis_i2c_exit(mantis);
241 mantis_pci_exit(mantis);
242 kfree(mantis);
243 }
244 return;
245
246}
247
248static struct pci_device_id hopper_pci_table[] = {
249 MAKE_ENTRY(TWINHAN_TECHNOLOGIES, MANTIS_VP_3028_DVB_T, &vp3028_config),
250 { }
251};
252
253static struct pci_driver hopper_pci_driver = {
254 .name = DRIVER_NAME,
255 .id_table = hopper_pci_table,
256 .probe = hopper_pci_probe,
257 .remove = hopper_pci_remove,
258};
259
260static int __devinit hopper_init(void)
261{
262 return pci_register_driver(&hopper_pci_driver);
263}
264
265static void __devexit hopper_exit(void)
266{
267 return pci_unregister_driver(&hopper_pci_driver);
268}
269
270module_init(hopper_init);
271module_exit(hopper_exit);
272
273MODULE_DESCRIPTION("HOPPER driver");
274MODULE_AUTHOR("Manu Abraham");
275MODULE_LICENSE("GPL");
diff --git a/drivers/media/dvb/mantis/hopper_vp3028.c b/drivers/media/dvb/mantis/hopper_vp3028.c
new file mode 100644
index 000000000000..96674c78e86b
--- /dev/null
+++ b/drivers/media/dvb/mantis/hopper_vp3028.c
@@ -0,0 +1,88 @@
1/*
2 Hopper VP-3028 driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include <linux/signal.h>
22#include <linux/sched.h>
23#include <linux/interrupt.h>
24
25#include "dmxdev.h"
26#include "dvbdev.h"
27#include "dvb_demux.h"
28#include "dvb_frontend.h"
29#include "dvb_net.h"
30
31#include "zl10353.h"
32#include "mantis_common.h"
33#include "mantis_ioc.h"
34#include "mantis_dvb.h"
35#include "hopper_vp3028.h"
36
37struct zl10353_config hopper_vp3028_config = {
38 .demod_address = 0x0f,
39};
40
41#define MANTIS_MODEL_NAME "VP-3028"
42#define MANTIS_DEV_TYPE "DVB-T"
43
44static int vp3028_frontend_init(struct mantis_pci *mantis, struct dvb_frontend *fe)
45{
46 struct i2c_adapter *adapter = &mantis->adapter;
47 struct mantis_hwconfig *config = mantis->hwconfig;
48 int err = 0;
49
50 gpio_set_bits(mantis, config->reset, 0);
51 msleep(100);
52 err = mantis_frontend_power(mantis, POWER_ON);
53 msleep(100);
54 gpio_set_bits(mantis, config->reset, 1);
55
56 err = mantis_frontend_power(mantis, POWER_ON);
57 if (err == 0) {
58 msleep(250);
59 dprintk(MANTIS_ERROR, 1, "Probing for 10353 (DVB-T)");
60 fe = zl10353_attach(&hopper_vp3028_config, adapter);
61
62 if (!fe)
63 return -1;
64 } else {
65 dprintk(MANTIS_ERROR, 1, "Frontend on <%s> POWER ON failed! <%d>",
66 adapter->name,
67 err);
68
69 return -EIO;
70 }
71 dprintk(MANTIS_ERROR, 1, "Done!");
72
73 return 0;
74}
75
76struct mantis_hwconfig vp3028_config = {
77 .model_name = MANTIS_MODEL_NAME,
78 .dev_type = MANTIS_DEV_TYPE,
79 .ts_size = MANTIS_TS_188,
80
81 .baud_rate = MANTIS_BAUD_9600,
82 .parity = MANTIS_PARITY_NONE,
83 .bytes = 0,
84
85 .frontend_init = vp3028_frontend_init,
86 .power = GPIF_A00,
87 .reset = GPIF_A03,
88};
diff --git a/drivers/media/dvb/mantis/hopper_vp3028.h b/drivers/media/dvb/mantis/hopper_vp3028.h
new file mode 100644
index 000000000000..57239498bc87
--- /dev/null
+++ b/drivers/media/dvb/mantis/hopper_vp3028.h
@@ -0,0 +1,30 @@
1/*
2 Hopper VP-3028 driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MANTIS_VP3028_H
22#define __MANTIS_VP3028_H
23
24#include "mantis_common.h"
25
26#define MANTIS_VP_3028_DVB_T 0x0028
27
28extern struct mantis_hwconfig vp3028_config;
29
30#endif /* __MANTIS_VP3028_H */
diff --git a/drivers/media/dvb/mantis/mantis_ca.c b/drivers/media/dvb/mantis/mantis_ca.c
new file mode 100644
index 000000000000..403ce043d00e
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_ca.c
@@ -0,0 +1,207 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include <linux/signal.h>
22#include <linux/sched.h>
23#include <linux/interrupt.h>
24
25#include "dmxdev.h"
26#include "dvbdev.h"
27#include "dvb_demux.h"
28#include "dvb_frontend.h"
29#include "dvb_net.h"
30
31#include "mantis_common.h"
32#include "mantis_link.h"
33#include "mantis_hif.h"
34#include "mantis_reg.h"
35
36#include "mantis_ca.h"
37
38static int mantis_ca_read_attr_mem(struct dvb_ca_en50221 *en50221, int slot, int addr)
39{
40 struct mantis_ca *ca = en50221->data;
41 struct mantis_pci *mantis = ca->ca_priv;
42
43 dprintk(MANTIS_DEBUG, 1, "Slot(%d): Request Attribute Mem Read", slot);
44
45 if (slot != 0)
46 return -EINVAL;
47
48 return mantis_hif_read_mem(ca, addr);
49}
50
51static int mantis_ca_write_attr_mem(struct dvb_ca_en50221 *en50221, int slot, int addr, u8 data)
52{
53 struct mantis_ca *ca = en50221->data;
54 struct mantis_pci *mantis = ca->ca_priv;
55
56 dprintk(MANTIS_DEBUG, 1, "Slot(%d): Request Attribute Mem Write", slot);
57
58 if (slot != 0)
59 return -EINVAL;
60
61 return mantis_hif_write_mem(ca, addr, data);
62}
63
64static int mantis_ca_read_cam_ctl(struct dvb_ca_en50221 *en50221, int slot, u8 addr)
65{
66 struct mantis_ca *ca = en50221->data;
67 struct mantis_pci *mantis = ca->ca_priv;
68
69 dprintk(MANTIS_DEBUG, 1, "Slot(%d): Request CAM control Read", slot);
70
71 if (slot != 0)
72 return -EINVAL;
73
74 return mantis_hif_read_iom(ca, addr);
75}
76
77static int mantis_ca_write_cam_ctl(struct dvb_ca_en50221 *en50221, int slot, u8 addr, u8 data)
78{
79 struct mantis_ca *ca = en50221->data;
80 struct mantis_pci *mantis = ca->ca_priv;
81
82 dprintk(MANTIS_DEBUG, 1, "Slot(%d): Request CAM control Write", slot);
83
84 if (slot != 0)
85 return -EINVAL;
86
87 return mantis_hif_write_iom(ca, addr, data);
88}
89
90static int mantis_ca_slot_reset(struct dvb_ca_en50221 *en50221, int slot)
91{
92 struct mantis_ca *ca = en50221->data;
93 struct mantis_pci *mantis = ca->ca_priv;
94
95 dprintk(MANTIS_DEBUG, 1, "Slot(%d): Slot RESET", slot);
96 udelay(500); /* Wait.. */
97 mmwrite(0xda, MANTIS_PCMCIA_RESET); /* Leading edge assert */
98 udelay(500);
99 mmwrite(0x00, MANTIS_PCMCIA_RESET); /* Trailing edge deassert */
100 msleep(1000);
101 dvb_ca_en50221_camready_irq(&ca->en50221, 0);
102
103 return 0;
104}
105
106static int mantis_ca_slot_shutdown(struct dvb_ca_en50221 *en50221, int slot)
107{
108 struct mantis_ca *ca = en50221->data;
109 struct mantis_pci *mantis = ca->ca_priv;
110
111 dprintk(MANTIS_DEBUG, 1, "Slot(%d): Slot shutdown", slot);
112
113 return 0;
114}
115
116static int mantis_ts_control(struct dvb_ca_en50221 *en50221, int slot)
117{
118 struct mantis_ca *ca = en50221->data;
119 struct mantis_pci *mantis = ca->ca_priv;
120
121 dprintk(MANTIS_DEBUG, 1, "Slot(%d): TS control", slot);
122/* mantis_set_direction(mantis, 1); */ /* Enable TS through CAM */
123
124 return 0;
125}
126
127static int mantis_slot_status(struct dvb_ca_en50221 *en50221, int slot, int open)
128{
129 struct mantis_ca *ca = en50221->data;
130 struct mantis_pci *mantis = ca->ca_priv;
131
132 dprintk(MANTIS_DEBUG, 1, "Slot(%d): Poll Slot status", slot);
133
134 if (ca->slot_state == MODULE_INSERTED) {
135 dprintk(MANTIS_DEBUG, 1, "CA Module present and ready");
136 return DVB_CA_EN50221_POLL_CAM_PRESENT | DVB_CA_EN50221_POLL_CAM_READY;
137 } else {
138 dprintk(MANTIS_DEBUG, 1, "CA Module not present or not ready");
139 }
140
141 return 0;
142}
143
144int mantis_ca_init(struct mantis_pci *mantis)
145{
146 struct dvb_adapter *dvb_adapter = &mantis->dvb_adapter;
147 struct mantis_ca *ca;
148 int ca_flags = 0, result;
149
150 dprintk(MANTIS_DEBUG, 1, "Initializing Mantis CA");
151 ca = kzalloc(sizeof(struct mantis_ca), GFP_KERNEL);
152 if (!ca) {
153 dprintk(MANTIS_ERROR, 1, "Out of memory!, exiting ..");
154 result = -ENOMEM;
155 goto err;
156 }
157
158 ca->ca_priv = mantis;
159 mantis->mantis_ca = ca;
160 ca_flags = DVB_CA_EN50221_FLAG_IRQ_CAMCHANGE;
161 /* register CA interface */
162 ca->en50221.owner = THIS_MODULE;
163 ca->en50221.read_attribute_mem = mantis_ca_read_attr_mem;
164 ca->en50221.write_attribute_mem = mantis_ca_write_attr_mem;
165 ca->en50221.read_cam_control = mantis_ca_read_cam_ctl;
166 ca->en50221.write_cam_control = mantis_ca_write_cam_ctl;
167 ca->en50221.slot_reset = mantis_ca_slot_reset;
168 ca->en50221.slot_shutdown = mantis_ca_slot_shutdown;
169 ca->en50221.slot_ts_enable = mantis_ts_control;
170 ca->en50221.poll_slot_status = mantis_slot_status;
171 ca->en50221.data = ca;
172
173 mutex_init(&ca->ca_lock);
174
175 init_waitqueue_head(&ca->hif_data_wq);
176 init_waitqueue_head(&ca->hif_opdone_wq);
177 init_waitqueue_head(&ca->hif_write_wq);
178
179 dprintk(MANTIS_ERROR, 1, "Registering EN50221 device");
180 result = dvb_ca_en50221_init(dvb_adapter, &ca->en50221, ca_flags, 1);
181 if (result != 0) {
182 dprintk(MANTIS_ERROR, 1, "EN50221: Initialization failed <%d>", result);
183 goto err;
184 }
185 dprintk(MANTIS_ERROR, 1, "Registered EN50221 device");
186 mantis_evmgr_init(ca);
187 return 0;
188err:
189 kfree(ca);
190 return result;
191}
192EXPORT_SYMBOL_GPL(mantis_ca_init);
193
194void mantis_ca_exit(struct mantis_pci *mantis)
195{
196 struct mantis_ca *ca = mantis->mantis_ca;
197
198 dprintk(MANTIS_DEBUG, 1, "Mantis CA exit");
199
200 mantis_evmgr_exit(ca);
201 dprintk(MANTIS_ERROR, 1, "Unregistering EN50221 device");
202 if (ca)
203 dvb_ca_en50221_release(&ca->en50221);
204
205 kfree(ca);
206}
207EXPORT_SYMBOL_GPL(mantis_ca_exit);
diff --git a/drivers/media/dvb/mantis/mantis_ca.h b/drivers/media/dvb/mantis/mantis_ca.h
new file mode 100644
index 000000000000..dc63e55f7eca
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_ca.h
@@ -0,0 +1,27 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MANTIS_CA_H
22#define __MANTIS_CA_H
23
24extern int mantis_ca_init(struct mantis_pci *mantis);
25extern void mantis_ca_exit(struct mantis_pci *mantis);
26
27#endif /* __MANTIS_CA_H */
diff --git a/drivers/media/dvb/mantis/mantis_cards.c b/drivers/media/dvb/mantis/mantis_cards.c
new file mode 100644
index 000000000000..16f1708fd3bc
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_cards.c
@@ -0,0 +1,305 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include <linux/module.h>
22#include <linux/moduleparam.h>
23#include <linux/kernel.h>
24#include <linux/pci.h>
25#include <asm/irq.h>
26#include <linux/interrupt.h>
27
28#include "dmxdev.h"
29#include "dvbdev.h"
30#include "dvb_demux.h"
31#include "dvb_frontend.h"
32#include "dvb_net.h"
33
34#include "mantis_common.h"
35
36#include "mantis_vp1033.h"
37#include "mantis_vp1034.h"
38#include "mantis_vp1041.h"
39#include "mantis_vp2033.h"
40#include "mantis_vp2040.h"
41#include "mantis_vp3030.h"
42
43#include "mantis_dma.h"
44#include "mantis_ca.h"
45#include "mantis_dvb.h"
46#include "mantis_uart.h"
47#include "mantis_ioc.h"
48#include "mantis_pci.h"
49#include "mantis_i2c.h"
50#include "mantis_reg.h"
51
52static unsigned int verbose;
53module_param(verbose, int, 0644);
54MODULE_PARM_DESC(verbose, "verbose startup messages, default is 1 (yes)");
55
56static int devs;
57
58#define DRIVER_NAME "Mantis"
59
60static char *label[10] = {
61 "DMA",
62 "IRQ-0",
63 "IRQ-1",
64 "OCERR",
65 "PABRT",
66 "RIPRR",
67 "PPERR",
68 "FTRGT",
69 "RISCI",
70 "RACK"
71};
72
73static irqreturn_t mantis_irq_handler(int irq, void *dev_id)
74{
75 u32 stat = 0, mask = 0, lstat = 0, mstat = 0;
76 u32 rst_stat = 0, rst_mask = 0;
77
78 struct mantis_pci *mantis;
79 struct mantis_ca *ca;
80
81 mantis = (struct mantis_pci *) dev_id;
82 if (unlikely(mantis == NULL)) {
83 dprintk(MANTIS_ERROR, 1, "Mantis == NULL");
84 return IRQ_NONE;
85 }
86 ca = mantis->mantis_ca;
87
88 stat = mmread(MANTIS_INT_STAT);
89 mask = mmread(MANTIS_INT_MASK);
90 mstat = lstat = stat & ~MANTIS_INT_RISCSTAT;
91 if (!(stat & mask))
92 return IRQ_NONE;
93
94 rst_mask = MANTIS_GPIF_WRACK |
95 MANTIS_GPIF_OTHERR |
96 MANTIS_SBUF_WSTO |
97 MANTIS_GPIF_EXTIRQ;
98
99 rst_stat = mmread(MANTIS_GPIF_STATUS);
100 rst_stat &= rst_mask;
101 mmwrite(rst_stat, MANTIS_GPIF_STATUS);
102
103 mantis->mantis_int_stat = stat;
104 mantis->mantis_int_mask = mask;
105 dprintk(MANTIS_DEBUG, 0, "\n-- Stat=<%02x> Mask=<%02x> --", stat, mask);
106 if (stat & MANTIS_INT_RISCEN) {
107 dprintk(MANTIS_DEBUG, 0, "<%s>", label[0]);
108 }
109 if (stat & MANTIS_INT_IRQ0) {
110 dprintk(MANTIS_DEBUG, 0, "<%s>", label[1]);
111 mantis->gpif_status = rst_stat;
112 wake_up(&ca->hif_write_wq);
113 schedule_work(&ca->hif_evm_work);
114 }
115 if (stat & MANTIS_INT_IRQ1) {
116 dprintk(MANTIS_DEBUG, 0, "<%s>", label[2]);
117 schedule_work(&mantis->uart_work);
118 }
119 if (stat & MANTIS_INT_OCERR) {
120 dprintk(MANTIS_DEBUG, 0, "<%s>", label[3]);
121 }
122 if (stat & MANTIS_INT_PABORT) {
123 dprintk(MANTIS_DEBUG, 0, "<%s>", label[4]);
124 }
125 if (stat & MANTIS_INT_RIPERR) {
126 dprintk(MANTIS_DEBUG, 0, "<%s>", label[5]);
127 }
128 if (stat & MANTIS_INT_PPERR) {
129 dprintk(MANTIS_DEBUG, 0, "<%s>", label[6]);
130 }
131 if (stat & MANTIS_INT_FTRGT) {
132 dprintk(MANTIS_DEBUG, 0, "<%s>", label[7]);
133 }
134 if (stat & MANTIS_INT_RISCI) {
135 dprintk(MANTIS_DEBUG, 0, "<%s>", label[8]);
136 mantis->finished_block = (stat & MANTIS_INT_RISCSTAT) >> 28;
137 tasklet_schedule(&mantis->tasklet);
138 }
139 if (stat & MANTIS_INT_I2CDONE) {
140 dprintk(MANTIS_DEBUG, 0, "<%s>", label[9]);
141 wake_up(&mantis->i2c_wq);
142 }
143 mmwrite(stat, MANTIS_INT_STAT);
144 stat &= ~(MANTIS_INT_RISCEN | MANTIS_INT_I2CDONE |
145 MANTIS_INT_I2CRACK | MANTIS_INT_PCMCIA7 |
146 MANTIS_INT_PCMCIA6 | MANTIS_INT_PCMCIA5 |
147 MANTIS_INT_PCMCIA4 | MANTIS_INT_PCMCIA3 |
148 MANTIS_INT_PCMCIA2 | MANTIS_INT_PCMCIA1 |
149 MANTIS_INT_PCMCIA0 | MANTIS_INT_IRQ1 |
150 MANTIS_INT_IRQ0 | MANTIS_INT_OCERR |
151 MANTIS_INT_PABORT | MANTIS_INT_RIPERR |
152 MANTIS_INT_PPERR | MANTIS_INT_FTRGT |
153 MANTIS_INT_RISCI);
154
155 if (stat)
156 dprintk(MANTIS_DEBUG, 0, "<Unknown> Stat=<%02x> Mask=<%02x>", stat, mask);
157
158 dprintk(MANTIS_DEBUG, 0, "\n");
159 return IRQ_HANDLED;
160}
161
162static int __devinit mantis_pci_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
163{
164 struct mantis_pci *mantis;
165 struct mantis_hwconfig *config;
166 int err = 0;
167
168 mantis = kzalloc(sizeof(struct mantis_pci), GFP_KERNEL);
169 if (mantis == NULL) {
170 printk(KERN_ERR "%s ERROR: Out of memory\n", __func__);
171 err = -ENOMEM;
172 goto fail0;
173 }
174
175 mantis->num = devs;
176 mantis->verbose = verbose;
177 mantis->pdev = pdev;
178 config = (struct mantis_hwconfig *) pci_id->driver_data;
179 config->irq_handler = &mantis_irq_handler;
180 mantis->hwconfig = config;
181
182 err = mantis_pci_init(mantis);
183 if (err) {
184 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis PCI initialization failed <%d>", err);
185 goto fail1;
186 }
187
188 err = mantis_stream_control(mantis, STREAM_TO_HIF);
189 if (err < 0) {
190 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis stream control failed <%d>", err);
191 goto fail1;
192 }
193
194 err = mantis_i2c_init(mantis);
195 if (err < 0) {
196 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis I2C initialization failed <%d>", err);
197 goto fail2;
198 }
199
200 err = mantis_get_mac(mantis);
201 if (err < 0) {
202 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis MAC address read failed <%d>", err);
203 goto fail2;
204 }
205
206 err = mantis_dma_init(mantis);
207 if (err < 0) {
208 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DMA initialization failed <%d>", err);
209 goto fail3;
210 }
211
212 err = mantis_dvb_init(mantis);
213 if (err < 0) {
214 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DVB initialization failed <%d>", err);
215 goto fail4;
216 }
217 err = mantis_uart_init(mantis);
218 if (err < 0) {
219 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis UART initialization failed <%d>", err);
220 goto fail6;
221 }
222
223 devs++;
224
225 return err;
226
227
228 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis UART exit! <%d>", err);
229 mantis_uart_exit(mantis);
230
231fail6:
232fail4:
233 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DMA exit! <%d>", err);
234 mantis_dma_exit(mantis);
235
236fail3:
237 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis I2C exit! <%d>", err);
238 mantis_i2c_exit(mantis);
239
240fail2:
241 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis PCI exit! <%d>", err);
242 mantis_pci_exit(mantis);
243
244fail1:
245 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis free! <%d>", err);
246 kfree(mantis);
247
248fail0:
249 return err;
250}
251
252static void __devexit mantis_pci_remove(struct pci_dev *pdev)
253{
254 struct mantis_pci *mantis = pci_get_drvdata(pdev);
255
256 if (mantis) {
257
258 mantis_uart_exit(mantis);
259 mantis_dvb_exit(mantis);
260 mantis_dma_exit(mantis);
261 mantis_i2c_exit(mantis);
262 mantis_pci_exit(mantis);
263 kfree(mantis);
264 }
265 return;
266}
267
268static struct pci_device_id mantis_pci_table[] = {
269 MAKE_ENTRY(TWINHAN_TECHNOLOGIES, MANTIS_VP_1033_DVB_S, &vp1033_config),
270 MAKE_ENTRY(TWINHAN_TECHNOLOGIES, MANTIS_VP_1034_DVB_S, &vp1034_config),
271 MAKE_ENTRY(TWINHAN_TECHNOLOGIES, MANTIS_VP_1041_DVB_S2, &vp1041_config),
272 MAKE_ENTRY(TECHNISAT, SKYSTAR_HD2_10, &vp1041_config),
273 MAKE_ENTRY(TECHNISAT, SKYSTAR_HD2_20, &vp1041_config),
274 MAKE_ENTRY(TERRATEC, CINERGY_S2_PCI_HD, &vp1041_config),
275 MAKE_ENTRY(TWINHAN_TECHNOLOGIES, MANTIS_VP_2033_DVB_C, &vp2033_config),
276 MAKE_ENTRY(TWINHAN_TECHNOLOGIES, MANTIS_VP_2040_DVB_C, &vp2040_config),
277 MAKE_ENTRY(TECHNISAT, CABLESTAR_HD2, &vp2040_config),
278 MAKE_ENTRY(TERRATEC, CINERGY_C, &vp2033_config),
279 MAKE_ENTRY(TWINHAN_TECHNOLOGIES, MANTIS_VP_3030_DVB_T, &vp3030_config),
280 { }
281};
282
283static struct pci_driver mantis_pci_driver = {
284 .name = DRIVER_NAME,
285 .id_table = mantis_pci_table,
286 .probe = mantis_pci_probe,
287 .remove = mantis_pci_remove,
288};
289
290static int __devinit mantis_init(void)
291{
292 return pci_register_driver(&mantis_pci_driver);
293}
294
295static void __devexit mantis_exit(void)
296{
297 return pci_unregister_driver(&mantis_pci_driver);
298}
299
300module_init(mantis_init);
301module_exit(mantis_exit);
302
303MODULE_DESCRIPTION("MANTIS driver");
304MODULE_AUTHOR("Manu Abraham");
305MODULE_LICENSE("GPL");
diff --git a/drivers/media/dvb/mantis/mantis_common.h b/drivers/media/dvb/mantis/mantis_common.h
new file mode 100644
index 000000000000..d0b645a483c9
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_common.h
@@ -0,0 +1,179 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MANTIS_COMMON_H
22#define __MANTIS_COMMON_H
23
24#include <linux/mutex.h>
25#include <linux/workqueue.h>
26
27#include "mantis_uart.h"
28
29#include "mantis_link.h"
30
31#define MANTIS_ERROR 0
32#define MANTIS_NOTICE 1
33#define MANTIS_INFO 2
34#define MANTIS_DEBUG 3
35#define MANTIS_TMG 9
36
37#define dprintk(y, z, format, arg...) do { \
38 if (z) { \
39 if ((mantis->verbose > MANTIS_ERROR) && (mantis->verbose > y)) \
40 printk(KERN_ERR "%s (%d): " format "\n" , __func__ , mantis->num , ##arg); \
41 else if ((mantis->verbose > MANTIS_NOTICE) && (mantis->verbose > y)) \
42 printk(KERN_NOTICE "%s (%d): " format "\n" , __func__ , mantis->num , ##arg); \
43 else if ((mantis->verbose > MANTIS_INFO) && (mantis->verbose > y)) \
44 printk(KERN_INFO "%s (%d): " format "\n" , __func__ , mantis->num , ##arg); \
45 else if ((mantis->verbose > MANTIS_DEBUG) && (mantis->verbose > y)) \
46 printk(KERN_DEBUG "%s (%d): " format "\n" , __func__ , mantis->num , ##arg); \
47 else if ((mantis->verbose > MANTIS_TMG) && (mantis->verbose > y)) \
48 printk(KERN_DEBUG "%s (%d): " format "\n" , __func__ , mantis->num , ##arg); \
49 } else { \
50 if (mantis->verbose > y) \
51 printk(format , ##arg); \
52 } \
53} while(0)
54
55#define mwrite(dat, addr) writel((dat), addr)
56#define mread(addr) readl(addr)
57
58#define mmwrite(dat, addr) mwrite((dat), (mantis->mmio + (addr)))
59#define mmread(addr) mread(mantis->mmio + (addr))
60
61#define MANTIS_TS_188 0
62#define MANTIS_TS_204 1
63
64#define TWINHAN_TECHNOLOGIES 0x1822
65#define MANTIS 0x4e35
66
67#define TECHNISAT 0x1ae4
68#define TERRATEC 0x153b
69
70#define MAKE_ENTRY(__subven, __subdev, __configptr) { \
71 .vendor = TWINHAN_TECHNOLOGIES, \
72 .device = MANTIS, \
73 .subvendor = (__subven), \
74 .subdevice = (__subdev), \
75 .driver_data = (unsigned long) (__configptr) \
76}
77
78enum mantis_i2c_mode {
79 MANTIS_PAGE_MODE = 0,
80 MANTIS_BYTE_MODE,
81};
82
83struct mantis_pci;
84
85struct mantis_hwconfig {
86 char *model_name;
87 char *dev_type;
88 u32 ts_size;
89
90 enum mantis_baud baud_rate;
91 enum mantis_parity parity;
92 u32 bytes;
93
94 irqreturn_t (*irq_handler)(int irq, void *dev_id);
95 int (*frontend_init)(struct mantis_pci *mantis, struct dvb_frontend *fe);
96
97 u8 power;
98 u8 reset;
99
100 enum mantis_i2c_mode i2c_mode;
101};
102
103struct mantis_pci {
104 unsigned int verbose;
105
106 /* PCI stuff */
107 u16 vendor_id;
108 u16 device_id;
109 u16 subsystem_vendor;
110 u16 subsystem_device;
111
112 u8 latency;
113
114 struct pci_dev *pdev;
115
116 unsigned long mantis_addr;
117 void __iomem *mmio;
118
119 u8 irq;
120 u8 revision;
121
122 unsigned int num;
123
124 /* RISC Core */
125 u32 finished_block;
126 u32 last_block;
127 u32 line_bytes;
128 u32 line_count;
129 u32 risc_pos;
130 u8 *buf_cpu;
131 dma_addr_t buf_dma;
132 u32 *risc_cpu;
133 dma_addr_t risc_dma;
134
135 struct tasklet_struct tasklet;
136
137 struct i2c_adapter adapter;
138 int i2c_rc;
139 wait_queue_head_t i2c_wq;
140 struct mutex i2c_lock;
141
142 /* DVB stuff */
143 struct dvb_adapter dvb_adapter;
144 struct dvb_frontend *fe;
145 struct dvb_demux demux;
146 struct dmxdev dmxdev;
147 struct dmx_frontend fe_hw;
148 struct dmx_frontend fe_mem;
149 struct dvb_net dvbnet;
150
151 u8 feeds;
152
153 struct mantis_hwconfig *hwconfig;
154
155 u32 mantis_int_stat;
156 u32 mantis_int_mask;
157
158 /* board specific */
159 u8 mac_address[8];
160 u32 sub_vendor_id;
161 u32 sub_device_id;
162
163 /* A12 A13 A14 */
164 u32 gpio_status;
165
166 u32 gpif_status;
167
168 struct mantis_ca *mantis_ca;
169
170 wait_queue_head_t uart_wq;
171 struct work_struct uart_work;
172 spinlock_t uart_lock;
173
174 struct input_dev *rc;
175};
176
177#define MANTIS_HIF_STATUS (mantis->gpio_status)
178
179#endif /* __MANTIS_COMMON_H */
diff --git a/drivers/media/dvb/mantis/mantis_core.c b/drivers/media/dvb/mantis/mantis_core.c
new file mode 100644
index 000000000000..8113b23ce448
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_core.c
@@ -0,0 +1,238 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include "mantis_common.h"
22#include "mantis_core.h"
23#include "mantis_vp1033.h"
24#include "mantis_vp1034.h"
25#include "mantis_vp1041.h"
26#include "mantis_vp2033.h"
27#include "mantis_vp2040.h"
28#include "mantis_vp3030.h"
29
30static int read_eeprom_byte(struct mantis_pci *mantis, u8 *data, u8 length)
31{
32 int err;
33 struct i2c_msg msg[] = {
34 {
35 .addr = 0x50,
36 .flags = 0,
37 .buf = data,
38 .len = 1
39 }, {
40 .addr = 0x50,
41 .flags = I2C_M_RD,
42 .buf = data,
43 .len = length
44 },
45 };
46
47 err = i2c_transfer(&mantis->adapter, msg, 2);
48 if (err < 0) {
49 dprintk(verbose, MANTIS_ERROR, 1,
50 "ERROR: i2c read: < err=%i d0=0x%02x d1=0x%02x >",
51 err, data[0], data[1]);
52
53 return err;
54 }
55
56 return 0;
57}
58
59static int write_eeprom_byte(struct mantis_pci *mantis, u8 *data, u8 length)
60{
61 int err;
62
63 struct i2c_msg msg = {
64 .addr = 0x50,
65 .flags = 0,
66 .buf = data,
67 .len = length
68 };
69
70 err = i2c_transfer(&mantis->adapter, &msg, 1);
71 if (err < 0) {
72 dprintk(verbose, MANTIS_ERROR, 1,
73 "ERROR: i2c write: < err=%i length=0x%02x d0=0x%02x, d1=0x%02x >",
74 err, length, data[0], data[1]);
75
76 return err;
77 }
78
79 return 0;
80}
81
82static int get_mac_address(struct mantis_pci *mantis)
83{
84 int err;
85
86 mantis->mac_address[0] = 0x08;
87 err = read_eeprom_byte(mantis, &mantis->mac_address[0], 6);
88 if (err < 0) {
89 dprintk(verbose, MANTIS_ERROR, 1, "Mantis EEPROM read error");
90
91 return err;
92 }
93 dprintk(verbose, MANTIS_ERROR, 0,
94 " MAC Address=[%02x:%02x:%02x:%02x:%02x:%02x]\n",
95 mantis->mac_address[0], mantis->mac_address[1],
96 mantis->mac_address[2], mantis->mac_address[3],
97 mantis->mac_address[4], mantis->mac_address[5]);
98
99 return 0;
100}
101
102#define MANTIS_MODEL_UNKNOWN "UNKNOWN"
103#define MANTIS_DEV_UNKNOWN "UNKNOWN"
104
105struct mantis_hwconfig unknown_device = {
106 .model_name = MANTIS_MODEL_UNKNOWN,
107 .dev_type = MANTIS_DEV_UNKNOWN,
108};
109
110static void mantis_load_config(struct mantis_pci *mantis)
111{
112 switch (mantis->subsystem_device) {
113 case MANTIS_VP_1033_DVB_S: /* VP-1033 */
114 mantis->hwconfig = &vp1033_mantis_config;
115 break;
116 case MANTIS_VP_1034_DVB_S: /* VP-1034 */
117 mantis->hwconfig = &vp1034_mantis_config;
118 break;
119 case MANTIS_VP_1041_DVB_S2: /* VP-1041 */
120 case TECHNISAT_SKYSTAR_HD2:
121 mantis->hwconfig = &vp1041_mantis_config;
122 break;
123 case MANTIS_VP_2033_DVB_C: /* VP-2033 */
124 mantis->hwconfig = &vp2033_mantis_config;
125 break;
126 case MANTIS_VP_2040_DVB_C: /* VP-2040 */
127 case TERRATEC_CINERGY_C_PCI: /* VP-2040 clone */
128 case TECHNISAT_CABLESTAR_HD2:
129 mantis->hwconfig = &vp2040_mantis_config;
130 break;
131 case MANTIS_VP_3030_DVB_T: /* VP-3030 */
132 mantis->hwconfig = &vp3030_mantis_config;
133 break;
134 default:
135 mantis->hwconfig = &unknown_device;
136 break;
137 }
138}
139
140int mantis_core_init(struct mantis_pci *mantis)
141{
142 int err = 0;
143
144 mantis_load_config(mantis);
145 dprintk(verbose, MANTIS_ERROR, 0, "found a %s PCI %s device on (%02x:%02x.%x),\n",
146 mantis->hwconfig->model_name, mantis->hwconfig->dev_type,
147 mantis->pdev->bus->number, PCI_SLOT(mantis->pdev->devfn), PCI_FUNC(mantis->pdev->devfn));
148 dprintk(verbose, MANTIS_ERROR, 0, " Mantis Rev %d [%04x:%04x], ",
149 mantis->revision,
150 mantis->subsystem_vendor, mantis->subsystem_device);
151 dprintk(verbose, MANTIS_ERROR, 0,
152 "irq: %d, latency: %d\n memory: 0x%lx, mmio: 0x%p\n",
153 mantis->pdev->irq, mantis->latency,
154 mantis->mantis_addr, mantis->mantis_mmio);
155
156 err = mantis_i2c_init(mantis);
157 if (err < 0) {
158 dprintk(verbose, MANTIS_ERROR, 1, "Mantis I2C init failed");
159 return err;
160 }
161 err = get_mac_address(mantis);
162 if (err < 0) {
163 dprintk(verbose, MANTIS_ERROR, 1, "get MAC address failed");
164 return err;
165 }
166 err = mantis_dma_init(mantis);
167 if (err < 0) {
168 dprintk(verbose, MANTIS_ERROR, 1, "Mantis DMA init failed");
169 return err;
170 }
171 err = mantis_dvb_init(mantis);
172 if (err < 0) {
173 dprintk(verbose, MANTIS_DEBUG, 1, "Mantis DVB init failed");
174 return err;
175 }
176 err = mantis_uart_init(mantis);
177 if (err < 0) {
178 dprintk(verbose, MANTIS_DEBUG, 1, "Mantis UART init failed");
179 return err;
180 }
181
182 return 0;
183}
184
185int mantis_core_exit(struct mantis_pci *mantis)
186{
187 mantis_dma_stop(mantis);
188 dprintk(verbose, MANTIS_ERROR, 1, "DMA engine stopping");
189
190 mantis_uart_exit(mantis);
191 dprintk(verbose, MANTIS_ERROR, 1, "UART exit failed");
192
193 if (mantis_dma_exit(mantis) < 0)
194 dprintk(verbose, MANTIS_ERROR, 1, "DMA exit failed");
195 if (mantis_dvb_exit(mantis) < 0)
196 dprintk(verbose, MANTIS_ERROR, 1, "DVB exit failed");
197 if (mantis_i2c_exit(mantis) < 0)
198 dprintk(verbose, MANTIS_ERROR, 1, "I2C adapter delete.. failed");
199
200 return 0;
201}
202
203/* Turn the given bit on or off. */
204void gpio_set_bits(struct mantis_pci *mantis, u32 bitpos, u8 value)
205{
206 u32 cur;
207
208 cur = mmread(MANTIS_GPIF_ADDR);
209 if (value)
210 mantis->gpio_status = cur | (1 << bitpos);
211 else
212 mantis->gpio_status = cur & (~(1 << bitpos));
213
214 mmwrite(mantis->gpio_status, MANTIS_GPIF_ADDR);
215 mmwrite(0x00, MANTIS_GPIF_DOUT);
216 udelay(100);
217}
218
219/* direction = 0 , no CI passthrough ; 1 , CI passthrough */
220void mantis_set_direction(struct mantis_pci *mantis, int direction)
221{
222 u32 reg;
223
224 reg = mmread(0x28);
225 dprintk(verbose, MANTIS_DEBUG, 1, "TS direction setup");
226 if (direction == 0x01) {
227 /* to CI */
228 reg |= 0x04;
229 mmwrite(reg, 0x28);
230 reg &= 0xff - 0x04;
231 mmwrite(reg, 0x28);
232 } else {
233 reg &= 0xff - 0x04;
234 mmwrite(reg, 0x28);
235 reg |= 0x04;
236 mmwrite(reg, 0x28);
237 }
238}
diff --git a/drivers/media/dvb/mantis/mantis_core.h b/drivers/media/dvb/mantis/mantis_core.h
new file mode 100644
index 000000000000..833ee42e694e
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_core.h
@@ -0,0 +1,57 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MANTIS_CORE_H
22#define __MANTIS_CORE_H
23
24#include "mantis_common.h"
25
26
27#define FE_TYPE_SAT 0
28#define FE_TYPE_CAB 1
29#define FE_TYPE_TER 2
30
31#define FE_TYPE_TS204 0
32#define FE_TYPE_TS188 1
33
34
35struct vendorname {
36 u8 *sub_vendor_name;
37 u32 sub_vendor_id;
38};
39
40struct devicetype {
41 u8 *sub_device_name;
42 u32 sub_device_id;
43 u8 device_type;
44 u32 type_flags;
45};
46
47
48extern int mantis_dma_init(struct mantis_pci *mantis);
49extern int mantis_dma_exit(struct mantis_pci *mantis);
50extern void mantis_dma_start(struct mantis_pci *mantis);
51extern void mantis_dma_stop(struct mantis_pci *mantis);
52extern int mantis_i2c_init(struct mantis_pci *mantis);
53extern int mantis_i2c_exit(struct mantis_pci *mantis);
54extern int mantis_core_init(struct mantis_pci *mantis);
55extern int mantis_core_exit(struct mantis_pci *mantis);
56
57#endif /* __MANTIS_CORE_H */
diff --git a/drivers/media/dvb/mantis/mantis_dma.c b/drivers/media/dvb/mantis/mantis_dma.c
new file mode 100644
index 000000000000..46202a4012aa
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_dma.c
@@ -0,0 +1,256 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include <linux/kernel.h>
22#include <asm/page.h>
23#include <linux/vmalloc.h>
24#include <linux/pci.h>
25
26#include <asm/irq.h>
27#include <linux/signal.h>
28#include <linux/sched.h>
29#include <linux/interrupt.h>
30
31#include "dmxdev.h"
32#include "dvbdev.h"
33#include "dvb_demux.h"
34#include "dvb_frontend.h"
35#include "dvb_net.h"
36
37#include "mantis_common.h"
38#include "mantis_reg.h"
39#include "mantis_dma.h"
40
41#define RISC_WRITE (0x01 << 28)
42#define RISC_JUMP (0x07 << 28)
43#define RISC_IRQ (0x01 << 24)
44
45#define RISC_STATUS(status) ((((~status) & 0x0f) << 20) | ((status & 0x0f) << 16))
46#define RISC_FLUSH() (mantis->risc_pos = 0)
47#define RISC_INSTR(opcode) (mantis->risc_cpu[mantis->risc_pos++] = cpu_to_le32(opcode))
48
49#define MANTIS_BUF_SIZE (64 * 1024)
50#define MANTIS_BLOCK_BYTES (MANTIS_BUF_SIZE >> 4)
51#define MANTIS_BLOCK_COUNT (1 << 4)
52#define MANTIS_RISC_SIZE PAGE_SIZE
53
54int mantis_dma_exit(struct mantis_pci *mantis)
55{
56 if (mantis->buf_cpu) {
57 dprintk(MANTIS_ERROR, 1,
58 "DMA=0x%lx cpu=0x%p size=%d",
59 (unsigned long) mantis->buf_dma,
60 mantis->buf_cpu,
61 MANTIS_BUF_SIZE);
62
63 pci_free_consistent(mantis->pdev, MANTIS_BUF_SIZE,
64 mantis->buf_cpu, mantis->buf_dma);
65
66 mantis->buf_cpu = NULL;
67 }
68 if (mantis->risc_cpu) {
69 dprintk(MANTIS_ERROR, 1,
70 "RISC=0x%lx cpu=0x%p size=%lx",
71 (unsigned long) mantis->risc_dma,
72 mantis->risc_cpu,
73 MANTIS_RISC_SIZE);
74
75 pci_free_consistent(mantis->pdev, MANTIS_RISC_SIZE,
76 mantis->risc_cpu, mantis->risc_dma);
77
78 mantis->risc_cpu = NULL;
79 }
80
81 return 0;
82}
83EXPORT_SYMBOL_GPL(mantis_dma_exit);
84
85static inline int mantis_alloc_buffers(struct mantis_pci *mantis)
86{
87 if (!mantis->buf_cpu) {
88 mantis->buf_cpu = pci_alloc_consistent(mantis->pdev,
89 MANTIS_BUF_SIZE,
90 &mantis->buf_dma);
91 if (!mantis->buf_cpu) {
92 dprintk(MANTIS_ERROR, 1,
93 "DMA buffer allocation failed");
94
95 goto err;
96 }
97 dprintk(MANTIS_ERROR, 1,
98 "DMA=0x%lx cpu=0x%p size=%d",
99 (unsigned long) mantis->buf_dma,
100 mantis->buf_cpu, MANTIS_BUF_SIZE);
101 }
102 if (!mantis->risc_cpu) {
103 mantis->risc_cpu = pci_alloc_consistent(mantis->pdev,
104 MANTIS_RISC_SIZE,
105 &mantis->risc_dma);
106
107 if (!mantis->risc_cpu) {
108 dprintk(MANTIS_ERROR, 1,
109 "RISC program allocation failed");
110
111 mantis_dma_exit(mantis);
112
113 goto err;
114 }
115 dprintk(MANTIS_ERROR, 1,
116 "RISC=0x%lx cpu=0x%p size=%lx",
117 (unsigned long) mantis->risc_dma,
118 mantis->risc_cpu, MANTIS_RISC_SIZE);
119 }
120
121 return 0;
122err:
123 dprintk(MANTIS_ERROR, 1, "Out of memory (?) .....");
124 return -ENOMEM;
125}
126
127static inline int mantis_calc_lines(struct mantis_pci *mantis)
128{
129 mantis->line_bytes = MANTIS_BLOCK_BYTES;
130 mantis->line_count = MANTIS_BLOCK_COUNT;
131
132 while (mantis->line_bytes > 4095) {
133 mantis->line_bytes >>= 1;
134 mantis->line_count <<= 1;
135 }
136
137 dprintk(MANTIS_DEBUG, 1, "Mantis RISC block bytes=[%d], line bytes=[%d], line count=[%d]",
138 MANTIS_BLOCK_BYTES, mantis->line_bytes, mantis->line_count);
139
140 if (mantis->line_count > 255) {
141 dprintk(MANTIS_ERROR, 1, "Buffer size error");
142 return -EINVAL;
143 }
144
145 return 0;
146}
147
148int mantis_dma_init(struct mantis_pci *mantis)
149{
150 int err = 0;
151
152 dprintk(MANTIS_DEBUG, 1, "Mantis DMA init");
153 if (mantis_alloc_buffers(mantis) < 0) {
154 dprintk(MANTIS_ERROR, 1, "Error allocating DMA buffer");
155
156 /* Stop RISC Engine */
157 mmwrite(0, MANTIS_DMA_CTL);
158
159 goto err;
160 }
161 err = mantis_calc_lines(mantis);
162 if (err < 0) {
163 dprintk(MANTIS_ERROR, 1, "Mantis calc lines failed");
164
165 goto err;
166 }
167
168 return 0;
169err:
170 return err;
171}
172EXPORT_SYMBOL_GPL(mantis_dma_init);
173
174static inline void mantis_risc_program(struct mantis_pci *mantis)
175{
176 u32 buf_pos = 0;
177 u32 line;
178
179 dprintk(MANTIS_DEBUG, 1, "Mantis create RISC program");
180 RISC_FLUSH();
181
182 dprintk(MANTIS_DEBUG, 1, "risc len lines %u, bytes per line %u",
183 mantis->line_count, mantis->line_bytes);
184
185 for (line = 0; line < mantis->line_count; line++) {
186 dprintk(MANTIS_DEBUG, 1, "RISC PROG line=[%d]", line);
187 if (!(buf_pos % MANTIS_BLOCK_BYTES)) {
188 RISC_INSTR(RISC_WRITE |
189 RISC_IRQ |
190 RISC_STATUS(((buf_pos / MANTIS_BLOCK_BYTES) +
191 (MANTIS_BLOCK_COUNT - 1)) %
192 MANTIS_BLOCK_COUNT) |
193 mantis->line_bytes);
194 } else {
195 RISC_INSTR(RISC_WRITE | mantis->line_bytes);
196 }
197 RISC_INSTR(mantis->buf_dma + buf_pos);
198 buf_pos += mantis->line_bytes;
199 }
200 RISC_INSTR(RISC_JUMP);
201 RISC_INSTR(mantis->risc_dma);
202}
203
204void mantis_dma_start(struct mantis_pci *mantis)
205{
206 dprintk(MANTIS_DEBUG, 1, "Mantis Start DMA engine");
207
208 mantis_risc_program(mantis);
209 mmwrite(mantis->risc_dma, MANTIS_RISC_START);
210 mmwrite(mmread(MANTIS_GPIF_ADDR) | MANTIS_GPIF_HIFRDWRN, MANTIS_GPIF_ADDR);
211
212 mmwrite(0, MANTIS_DMA_CTL);
213 mantis->last_block = mantis->finished_block = 0;
214
215 mmwrite(mmread(MANTIS_INT_MASK) | MANTIS_INT_RISCI, MANTIS_INT_MASK);
216
217 mmwrite(MANTIS_FIFO_EN | MANTIS_DCAP_EN
218 | MANTIS_RISC_EN, MANTIS_DMA_CTL);
219
220}
221
222void mantis_dma_stop(struct mantis_pci *mantis)
223{
224 u32 stat = 0, mask = 0;
225
226 stat = mmread(MANTIS_INT_STAT);
227 mask = mmread(MANTIS_INT_MASK);
228 dprintk(MANTIS_DEBUG, 1, "Mantis Stop DMA engine");
229
230 mmwrite((mmread(MANTIS_GPIF_ADDR) & (~(MANTIS_GPIF_HIFRDWRN))), MANTIS_GPIF_ADDR);
231
232 mmwrite((mmread(MANTIS_DMA_CTL) & ~(MANTIS_FIFO_EN |
233 MANTIS_DCAP_EN |
234 MANTIS_RISC_EN)), MANTIS_DMA_CTL);
235
236 mmwrite(mmread(MANTIS_INT_STAT), MANTIS_INT_STAT);
237
238 mmwrite(mmread(MANTIS_INT_MASK) & ~(MANTIS_INT_RISCI |
239 MANTIS_INT_RISCEN), MANTIS_INT_MASK);
240}
241
242
243void mantis_dma_xfer(unsigned long data)
244{
245 struct mantis_pci *mantis = (struct mantis_pci *) data;
246 struct mantis_hwconfig *config = mantis->hwconfig;
247
248 while (mantis->last_block != mantis->finished_block) {
249 dprintk(MANTIS_DEBUG, 1, "last block=[%d] finished block=[%d]",
250 mantis->last_block, mantis->finished_block);
251
252 (config->ts_size ? dvb_dmx_swfilter_204 : dvb_dmx_swfilter)
253 (&mantis->demux, &mantis->buf_cpu[mantis->last_block * MANTIS_BLOCK_BYTES], MANTIS_BLOCK_BYTES);
254 mantis->last_block = (mantis->last_block + 1) % MANTIS_BLOCK_COUNT;
255 }
256}
diff --git a/drivers/media/dvb/mantis/mantis_dma.h b/drivers/media/dvb/mantis/mantis_dma.h
new file mode 100644
index 000000000000..6be00fa82094
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_dma.h
@@ -0,0 +1,30 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MANTIS_DMA_H
22#define __MANTIS_DMA_H
23
24extern int mantis_dma_init(struct mantis_pci *mantis);
25extern int mantis_dma_exit(struct mantis_pci *mantis);
26extern void mantis_dma_start(struct mantis_pci *mantis);
27extern void mantis_dma_stop(struct mantis_pci *mantis);
28extern void mantis_dma_xfer(unsigned long data);
29
30#endif /* __MANTIS_DMA_H */
diff --git a/drivers/media/dvb/mantis/mantis_dvb.c b/drivers/media/dvb/mantis/mantis_dvb.c
new file mode 100644
index 000000000000..99d82eec3b03
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_dvb.c
@@ -0,0 +1,296 @@
1/*
2 Mantis PCI bridge driver
3 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18*/
19
20#include <linux/kernel.h>
21#include <linux/bitops.h>
22
23#include <linux/signal.h>
24#include <linux/sched.h>
25#include <linux/interrupt.h>
26#include <linux/pci.h>
27#include <linux/i2c.h>
28
29#include "dmxdev.h"
30#include "dvbdev.h"
31#include "dvb_demux.h"
32#include "dvb_frontend.h"
33#include "dvb_net.h"
34
35#include "mantis_common.h"
36#include "mantis_dma.h"
37#include "mantis_ca.h"
38#include "mantis_ioc.h"
39#include "mantis_dvb.h"
40
41DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
42
43int mantis_frontend_power(struct mantis_pci *mantis, enum mantis_power power)
44{
45 struct mantis_hwconfig *config = mantis->hwconfig;
46
47 switch (power) {
48 case POWER_ON:
49 dprintk(MANTIS_DEBUG, 1, "Power ON");
50 gpio_set_bits(mantis, config->power, POWER_ON);
51 msleep(100);
52 gpio_set_bits(mantis, config->power, POWER_ON);
53 msleep(100);
54 break;
55
56 case POWER_OFF:
57 dprintk(MANTIS_DEBUG, 1, "Power OFF");
58 gpio_set_bits(mantis, config->power, POWER_OFF);
59 msleep(100);
60 break;
61
62 default:
63 dprintk(MANTIS_DEBUG, 1, "Unknown state <%02x>", power);
64 return -1;
65 }
66
67 return 0;
68}
69EXPORT_SYMBOL_GPL(mantis_frontend_power);
70
71void mantis_frontend_soft_reset(struct mantis_pci *mantis)
72{
73 struct mantis_hwconfig *config = mantis->hwconfig;
74
75 dprintk(MANTIS_DEBUG, 1, "Frontend RESET");
76 gpio_set_bits(mantis, config->reset, 0);
77 msleep(100);
78 gpio_set_bits(mantis, config->reset, 0);
79 msleep(100);
80 gpio_set_bits(mantis, config->reset, 1);
81 msleep(100);
82 gpio_set_bits(mantis, config->reset, 1);
83 msleep(100);
84
85 return;
86}
87EXPORT_SYMBOL_GPL(mantis_frontend_soft_reset);
88
89static int mantis_frontend_shutdown(struct mantis_pci *mantis)
90{
91 int err;
92
93 mantis_frontend_soft_reset(mantis);
94 err = mantis_frontend_power(mantis, POWER_OFF);
95 if (err != 0) {
96 dprintk(MANTIS_ERROR, 1, "Frontend POWER OFF failed! <%d>", err);
97 return 1;
98 }
99
100 return 0;
101}
102
103static int mantis_dvb_start_feed(struct dvb_demux_feed *dvbdmxfeed)
104{
105 struct dvb_demux *dvbdmx = dvbdmxfeed->demux;
106 struct mantis_pci *mantis = dvbdmx->priv;
107
108 dprintk(MANTIS_DEBUG, 1, "Mantis DVB Start feed");
109 if (!dvbdmx->dmx.frontend) {
110 dprintk(MANTIS_DEBUG, 1, "no frontend ?");
111 return -EINVAL;
112 }
113
114 mantis->feeds++;
115 dprintk(MANTIS_DEBUG, 1, "mantis start feed, feeds=%d", mantis->feeds);
116
117 if (mantis->feeds == 1) {
118 dprintk(MANTIS_DEBUG, 1, "mantis start feed & dma");
119 mantis_dma_start(mantis);
120 }
121
122 return mantis->feeds;
123}
124
125static int mantis_dvb_stop_feed(struct dvb_demux_feed *dvbdmxfeed)
126{
127 struct dvb_demux *dvbdmx = dvbdmxfeed->demux;
128 struct mantis_pci *mantis = dvbdmx->priv;
129
130 dprintk(MANTIS_DEBUG, 1, "Mantis DVB Stop feed");
131 if (!dvbdmx->dmx.frontend) {
132 dprintk(MANTIS_DEBUG, 1, "no frontend ?");
133 return -EINVAL;
134 }
135
136 mantis->feeds--;
137 if (mantis->feeds == 0) {
138 dprintk(MANTIS_DEBUG, 1, "mantis stop feed and dma");
139 mantis_dma_stop(mantis);
140 }
141
142 return 0;
143}
144
145int __devinit mantis_dvb_init(struct mantis_pci *mantis)
146{
147 struct mantis_hwconfig *config = mantis->hwconfig;
148 int result = -1;
149
150 dprintk(MANTIS_DEBUG, 1, "dvb_register_adapter");
151
152 result = dvb_register_adapter(&mantis->dvb_adapter,
153 "Mantis DVB adapter",
154 THIS_MODULE,
155 &mantis->pdev->dev,
156 adapter_nr);
157
158 if (result < 0) {
159
160 dprintk(MANTIS_ERROR, 1, "Error registering adapter");
161 return -ENODEV;
162 }
163
164 mantis->dvb_adapter.priv = mantis;
165 mantis->demux.dmx.capabilities = DMX_TS_FILTERING |
166 DMX_SECTION_FILTERING |
167 DMX_MEMORY_BASED_FILTERING;
168
169 mantis->demux.priv = mantis;
170 mantis->demux.filternum = 256;
171 mantis->demux.feednum = 256;
172 mantis->demux.start_feed = mantis_dvb_start_feed;
173 mantis->demux.stop_feed = mantis_dvb_stop_feed;
174 mantis->demux.write_to_decoder = NULL;
175
176 dprintk(MANTIS_DEBUG, 1, "dvb_dmx_init");
177 result = dvb_dmx_init(&mantis->demux);
178 if (result < 0) {
179 dprintk(MANTIS_ERROR, 1, "dvb_dmx_init failed, ERROR=%d", result);
180
181 goto err0;
182 }
183
184 mantis->dmxdev.filternum = 256;
185 mantis->dmxdev.demux = &mantis->demux.dmx;
186 mantis->dmxdev.capabilities = 0;
187 dprintk(MANTIS_DEBUG, 1, "dvb_dmxdev_init");
188
189 result = dvb_dmxdev_init(&mantis->dmxdev, &mantis->dvb_adapter);
190 if (result < 0) {
191
192 dprintk(MANTIS_ERROR, 1, "dvb_dmxdev_init failed, ERROR=%d", result);
193 goto err1;
194 }
195
196 mantis->fe_hw.source = DMX_FRONTEND_0;
197 result = mantis->demux.dmx.add_frontend(&mantis->demux.dmx, &mantis->fe_hw);
198 if (result < 0) {
199
200 dprintk(MANTIS_ERROR, 1, "dvb_dmx_init failed, ERROR=%d", result);
201 goto err2;
202 }
203
204 mantis->fe_mem.source = DMX_MEMORY_FE;
205 result = mantis->demux.dmx.add_frontend(&mantis->demux.dmx, &mantis->fe_mem);
206 if (result < 0) {
207 dprintk(MANTIS_ERROR, 1, "dvb_dmx_init failed, ERROR=%d", result);
208 goto err3;
209 }
210
211 result = mantis->demux.dmx.connect_frontend(&mantis->demux.dmx, &mantis->fe_hw);
212 if (result < 0) {
213 dprintk(MANTIS_ERROR, 1, "dvb_dmx_init failed, ERROR=%d", result);
214 goto err4;
215 }
216
217 dvb_net_init(&mantis->dvb_adapter, &mantis->dvbnet, &mantis->demux.dmx);
218 tasklet_init(&mantis->tasklet, mantis_dma_xfer, (unsigned long) mantis);
219 if (mantis->hwconfig) {
220 result = config->frontend_init(mantis, mantis->fe);
221 if (result < 0) {
222 dprintk(MANTIS_ERROR, 1, "!!! NO Frontends found !!!");
223 goto err5;
224 } else {
225 if (mantis->fe == NULL) {
226 dprintk(MANTIS_ERROR, 1, "FE <NULL>");
227 goto err5;
228 }
229
230 if (dvb_register_frontend(&mantis->dvb_adapter, mantis->fe)) {
231 dprintk(MANTIS_ERROR, 1, "ERROR: Frontend registration failed");
232
233 if (mantis->fe->ops.release)
234 mantis->fe->ops.release(mantis->fe);
235
236 mantis->fe = NULL;
237 goto err5;
238 }
239 }
240 }
241
242 return 0;
243
244 /* Error conditions .. */
245err5:
246 tasklet_kill(&mantis->tasklet);
247 dvb_net_release(&mantis->dvbnet);
248 dvb_unregister_frontend(mantis->fe);
249 dvb_frontend_detach(mantis->fe);
250err4:
251 mantis->demux.dmx.remove_frontend(&mantis->demux.dmx, &mantis->fe_mem);
252
253err3:
254 mantis->demux.dmx.remove_frontend(&mantis->demux.dmx, &mantis->fe_hw);
255
256err2:
257 dvb_dmxdev_release(&mantis->dmxdev);
258
259err1:
260 dvb_dmx_release(&mantis->demux);
261
262err0:
263 dvb_unregister_adapter(&mantis->dvb_adapter);
264
265 return result;
266}
267EXPORT_SYMBOL_GPL(mantis_dvb_init);
268
269int __devexit mantis_dvb_exit(struct mantis_pci *mantis)
270{
271 int err;
272
273 if (mantis->fe) {
274 /* mantis_ca_exit(mantis); */
275 err = mantis_frontend_shutdown(mantis);
276 if (err != 0)
277 dprintk(MANTIS_ERROR, 1, "Frontend exit while POWER ON! <%d>", err);
278 dvb_unregister_frontend(mantis->fe);
279 dvb_frontend_detach(mantis->fe);
280 }
281
282 tasklet_kill(&mantis->tasklet);
283 dvb_net_release(&mantis->dvbnet);
284
285 mantis->demux.dmx.remove_frontend(&mantis->demux.dmx, &mantis->fe_mem);
286 mantis->demux.dmx.remove_frontend(&mantis->demux.dmx, &mantis->fe_hw);
287
288 dvb_dmxdev_release(&mantis->dmxdev);
289 dvb_dmx_release(&mantis->demux);
290
291 dprintk(MANTIS_DEBUG, 1, "dvb_unregister_adapter");
292 dvb_unregister_adapter(&mantis->dvb_adapter);
293
294 return 0;
295}
296EXPORT_SYMBOL_GPL(mantis_dvb_exit);
diff --git a/drivers/media/dvb/mantis/mantis_dvb.h b/drivers/media/dvb/mantis/mantis_dvb.h
new file mode 100644
index 000000000000..464199db304e
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_dvb.h
@@ -0,0 +1,35 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MANTIS_DVB_H
22#define __MANTIS_DVB_H
23
24enum mantis_power {
25 POWER_OFF = 0,
26 POWER_ON = 1
27};
28
29extern int mantis_frontend_power(struct mantis_pci *mantis, enum mantis_power power);
30extern void mantis_frontend_soft_reset(struct mantis_pci *mantis);
31
32extern int mantis_dvb_init(struct mantis_pci *mantis);
33extern int mantis_dvb_exit(struct mantis_pci *mantis);
34
35#endif /* __MANTIS_DVB_H */
diff --git a/drivers/media/dvb/mantis/mantis_evm.c b/drivers/media/dvb/mantis/mantis_evm.c
new file mode 100644
index 000000000000..a7b369a439d6
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_evm.c
@@ -0,0 +1,117 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include <linux/kernel.h>
22
23#include <linux/signal.h>
24#include <linux/sched.h>
25#include <linux/interrupt.h>
26
27#include "dmxdev.h"
28#include "dvbdev.h"
29#include "dvb_demux.h"
30#include "dvb_frontend.h"
31#include "dvb_net.h"
32
33#include "mantis_common.h"
34#include "mantis_link.h"
35#include "mantis_hif.h"
36#include "mantis_reg.h"
37
38static void mantis_hifevm_work(struct work_struct *work)
39{
40 struct mantis_ca *ca = container_of(work, struct mantis_ca, hif_evm_work);
41 struct mantis_pci *mantis = ca->ca_priv;
42
43 u32 gpif_stat, gpif_mask;
44
45 gpif_stat = mmread(MANTIS_GPIF_STATUS);
46 gpif_mask = mmread(MANTIS_GPIF_IRQCFG);
47
48 if (gpif_stat & MANTIS_GPIF_DETSTAT) {
49 if (gpif_stat & MANTIS_CARD_PLUGIN) {
50 dprintk(MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): CAM Plugin", mantis->num);
51 mmwrite(0xdada0000, MANTIS_CARD_RESET);
52 mantis_event_cam_plugin(ca);
53 dvb_ca_en50221_camchange_irq(&ca->en50221,
54 0,
55 DVB_CA_EN50221_CAMCHANGE_INSERTED);
56 }
57 } else {
58 if (gpif_stat & MANTIS_CARD_PLUGOUT) {
59 dprintk(MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): CAM Unplug", mantis->num);
60 mmwrite(0xdada0000, MANTIS_CARD_RESET);
61 mantis_event_cam_unplug(ca);
62 dvb_ca_en50221_camchange_irq(&ca->en50221,
63 0,
64 DVB_CA_EN50221_CAMCHANGE_REMOVED);
65 }
66 }
67
68 if (mantis->gpif_status & MANTIS_GPIF_EXTIRQ)
69 dprintk(MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Ext IRQ", mantis->num);
70
71 if (mantis->gpif_status & MANTIS_SBUF_WSTO)
72 dprintk(MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Smart Buffer Timeout", mantis->num);
73
74 if (mantis->gpif_status & MANTIS_GPIF_OTHERR)
75 dprintk(MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Alignment Error", mantis->num);
76
77 if (gpif_stat & MANTIS_SBUF_OVFLW)
78 dprintk(MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Smart Buffer Overflow", mantis->num);
79
80 if (gpif_stat & MANTIS_GPIF_BRRDY)
81 dprintk(MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Smart Buffer Read Ready", mantis->num);
82
83 if (gpif_stat & MANTIS_GPIF_INTSTAT)
84 dprintk(MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): GPIF IRQ", mantis->num);
85
86 if (gpif_stat & MANTIS_SBUF_EMPTY)
87 dprintk(MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Smart Buffer Empty", mantis->num);
88
89 if (gpif_stat & MANTIS_SBUF_OPDONE) {
90 dprintk(MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Smart Buffer operation complete", mantis->num);
91 ca->sbuf_status = MANTIS_SBUF_DATA_AVAIL;
92 ca->hif_event = MANTIS_SBUF_OPDONE;
93 wake_up(&ca->hif_opdone_wq);
94 }
95}
96
97int mantis_evmgr_init(struct mantis_ca *ca)
98{
99 struct mantis_pci *mantis = ca->ca_priv;
100
101 dprintk(MANTIS_DEBUG, 1, "Initializing Mantis Host I/F Event manager");
102 INIT_WORK(&ca->hif_evm_work, mantis_hifevm_work);
103 mantis_pcmcia_init(ca);
104 schedule_work(&ca->hif_evm_work);
105 mantis_hif_init(ca);
106 return 0;
107}
108
109void mantis_evmgr_exit(struct mantis_ca *ca)
110{
111 struct mantis_pci *mantis = ca->ca_priv;
112
113 dprintk(MANTIS_DEBUG, 1, "Mantis Host I/F Event manager exiting");
114 flush_scheduled_work();
115 mantis_hif_exit(ca);
116 mantis_pcmcia_exit(ca);
117}
diff --git a/drivers/media/dvb/mantis/mantis_hif.c b/drivers/media/dvb/mantis/mantis_hif.c
new file mode 100644
index 000000000000..7477dac628b4
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_hif.c
@@ -0,0 +1,240 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include <linux/kernel.h>
22#include <linux/signal.h>
23#include <linux/sched.h>
24
25#include <linux/signal.h>
26#include <linux/sched.h>
27#include <linux/interrupt.h>
28
29#include "dmxdev.h"
30#include "dvbdev.h"
31#include "dvb_demux.h"
32#include "dvb_frontend.h"
33#include "dvb_net.h"
34
35#include "mantis_common.h"
36
37#include "mantis_hif.h"
38#include "mantis_link.h" /* temporary due to physical layer stuff */
39
40#include "mantis_reg.h"
41
42
43static int mantis_hif_sbuf_opdone_wait(struct mantis_ca *ca)
44{
45 struct mantis_pci *mantis = ca->ca_priv;
46 int rc = 0;
47
48 if (wait_event_timeout(ca->hif_opdone_wq,
49 ca->hif_event & MANTIS_SBUF_OPDONE,
50 msecs_to_jiffies(500)) == -ERESTARTSYS) {
51
52 dprintk(MANTIS_ERROR, 1, "Adapter(%d) Slot(0): Smart buffer operation timeout !", mantis->num);
53 rc = -EREMOTEIO;
54 }
55 dprintk(MANTIS_DEBUG, 1, "Smart Buffer Operation complete");
56 ca->hif_event &= ~MANTIS_SBUF_OPDONE;
57 return rc;
58}
59
60static int mantis_hif_write_wait(struct mantis_ca *ca)
61{
62 struct mantis_pci *mantis = ca->ca_priv;
63 u32 opdone = 0, timeout = 0;
64 int rc = 0;
65
66 if (wait_event_timeout(ca->hif_write_wq,
67 mantis->gpif_status & MANTIS_GPIF_WRACK,
68 msecs_to_jiffies(500)) == -ERESTARTSYS) {
69
70 dprintk(MANTIS_ERROR, 1, "Adapter(%d) Slot(0): Write ACK timed out !", mantis->num);
71 rc = -EREMOTEIO;
72 }
73 dprintk(MANTIS_DEBUG, 1, "Write Acknowledged");
74 mantis->gpif_status &= ~MANTIS_GPIF_WRACK;
75 while (!opdone) {
76 opdone = (mmread(MANTIS_GPIF_STATUS) & MANTIS_SBUF_OPDONE);
77 udelay(500);
78 timeout++;
79 if (timeout > 100) {
80 dprintk(MANTIS_ERROR, 1, "Adater(%d) Slot(0): Write operation timed out!", mantis->num);
81 rc = -ETIMEDOUT;
82 break;
83 }
84 }
85 dprintk(MANTIS_DEBUG, 1, "HIF Write success");
86 return rc;
87}
88
89
90int mantis_hif_read_mem(struct mantis_ca *ca, u32 addr)
91{
92 struct mantis_pci *mantis = ca->ca_priv;
93 u32 hif_addr = 0, data, count = 4;
94
95 dprintk(MANTIS_DEBUG, 1, "Adapter(%d) Slot(0): Request HIF Mem Read", mantis->num);
96 mutex_lock(&ca->ca_lock);
97 hif_addr &= ~MANTIS_GPIF_PCMCIAREG;
98 hif_addr &= ~MANTIS_GPIF_PCMCIAIOM;
99 hif_addr |= MANTIS_HIF_STATUS;
100 hif_addr |= addr;
101
102 mmwrite(hif_addr, MANTIS_GPIF_BRADDR);
103 mmwrite(count, MANTIS_GPIF_BRBYTES);
104 udelay(20);
105 mmwrite(hif_addr | MANTIS_GPIF_HIFRDWRN, MANTIS_GPIF_ADDR);
106
107 if (mantis_hif_sbuf_opdone_wait(ca) != 0) {
108 dprintk(MANTIS_ERROR, 1, "Adapter(%d) Slot(0): GPIF Smart Buffer operation failed", mantis->num);
109 mutex_unlock(&ca->ca_lock);
110 return -EREMOTEIO;
111 }
112 data = mmread(MANTIS_GPIF_DIN);
113 mutex_unlock(&ca->ca_lock);
114 dprintk(MANTIS_DEBUG, 1, "Mem Read: 0x%02x", data);
115 return (data >> 24) & 0xff;
116}
117
118int mantis_hif_write_mem(struct mantis_ca *ca, u32 addr, u8 data)
119{
120 struct mantis_slot *slot = ca->slot;
121 struct mantis_pci *mantis = ca->ca_priv;
122 u32 hif_addr = 0;
123
124 dprintk(MANTIS_DEBUG, 1, "Adapter(%d) Slot(0): Request HIF Mem Write", mantis->num);
125 mutex_lock(&ca->ca_lock);
126 hif_addr &= ~MANTIS_GPIF_HIFRDWRN;
127 hif_addr &= ~MANTIS_GPIF_PCMCIAREG;
128 hif_addr &= ~MANTIS_GPIF_PCMCIAIOM;
129 hif_addr |= MANTIS_HIF_STATUS;
130 hif_addr |= addr;
131
132 mmwrite(slot->slave_cfg, MANTIS_GPIF_CFGSLA); /* Slot0 alone for now */
133 mmwrite(hif_addr, MANTIS_GPIF_ADDR);
134 mmwrite(data, MANTIS_GPIF_DOUT);
135
136 if (mantis_hif_write_wait(ca) != 0) {
137 dprintk(MANTIS_ERROR, 1, "Adapter(%d) Slot(0): HIF Smart Buffer operation failed", mantis->num);
138 mutex_unlock(&ca->ca_lock);
139 return -EREMOTEIO;
140 }
141 dprintk(MANTIS_DEBUG, 1, "Mem Write: (0x%02x to 0x%02x)", data, addr);
142 mutex_unlock(&ca->ca_lock);
143
144 return 0;
145}
146
147int mantis_hif_read_iom(struct mantis_ca *ca, u32 addr)
148{
149 struct mantis_pci *mantis = ca->ca_priv;
150 u32 data, hif_addr = 0;
151
152 dprintk(MANTIS_DEBUG, 1, "Adapter(%d) Slot(0): Request HIF I/O Read", mantis->num);
153 mutex_lock(&ca->ca_lock);
154 hif_addr &= ~MANTIS_GPIF_PCMCIAREG;
155 hif_addr |= MANTIS_GPIF_PCMCIAIOM;
156 hif_addr |= MANTIS_HIF_STATUS;
157 hif_addr |= addr;
158
159 mmwrite(hif_addr, MANTIS_GPIF_BRADDR);
160 mmwrite(1, MANTIS_GPIF_BRBYTES);
161 udelay(20);
162 mmwrite(hif_addr | MANTIS_GPIF_HIFRDWRN, MANTIS_GPIF_ADDR);
163
164 if (mantis_hif_sbuf_opdone_wait(ca) != 0) {
165 dprintk(MANTIS_ERROR, 1, "Adapter(%d) Slot(0): HIF Smart Buffer operation failed", mantis->num);
166 mutex_unlock(&ca->ca_lock);
167 return -EREMOTEIO;
168 }
169 data = mmread(MANTIS_GPIF_DIN);
170 dprintk(MANTIS_DEBUG, 1, "I/O Read: 0x%02x", data);
171 udelay(50);
172 mutex_unlock(&ca->ca_lock);
173
174 return (u8) data;
175}
176
177int mantis_hif_write_iom(struct mantis_ca *ca, u32 addr, u8 data)
178{
179 struct mantis_pci *mantis = ca->ca_priv;
180 u32 hif_addr = 0;
181
182 dprintk(MANTIS_DEBUG, 1, "Adapter(%d) Slot(0): Request HIF I/O Write", mantis->num);
183 mutex_lock(&ca->ca_lock);
184 hif_addr &= ~MANTIS_GPIF_PCMCIAREG;
185 hif_addr &= ~MANTIS_GPIF_HIFRDWRN;
186 hif_addr |= MANTIS_GPIF_PCMCIAIOM;
187 hif_addr |= MANTIS_HIF_STATUS;
188 hif_addr |= addr;
189
190 mmwrite(hif_addr, MANTIS_GPIF_ADDR);
191 mmwrite(data, MANTIS_GPIF_DOUT);
192
193 if (mantis_hif_write_wait(ca) != 0) {
194 dprintk(MANTIS_ERROR, 1, "Adapter(%d) Slot(0): HIF Smart Buffer operation failed", mantis->num);
195 mutex_unlock(&ca->ca_lock);
196 return -EREMOTEIO;
197 }
198 dprintk(MANTIS_DEBUG, 1, "I/O Write: (0x%02x to 0x%02x)", data, addr);
199 mutex_unlock(&ca->ca_lock);
200 udelay(50);
201
202 return 0;
203}
204
205int mantis_hif_init(struct mantis_ca *ca)
206{
207 struct mantis_slot *slot = ca->slot;
208 struct mantis_pci *mantis = ca->ca_priv;
209 u32 irqcfg;
210
211 slot[0].slave_cfg = 0x70773028;
212 dprintk(MANTIS_ERROR, 1, "Adapter(%d) Initializing Mantis Host Interface", mantis->num);
213
214 mutex_lock(&ca->ca_lock);
215 irqcfg = mmread(MANTIS_GPIF_IRQCFG);
216 irqcfg = MANTIS_MASK_BRRDY |
217 MANTIS_MASK_WRACK |
218 MANTIS_MASK_EXTIRQ |
219 MANTIS_MASK_WSTO |
220 MANTIS_MASK_OTHERR |
221 MANTIS_MASK_OVFLW;
222
223 mmwrite(irqcfg, MANTIS_GPIF_IRQCFG);
224 mutex_unlock(&ca->ca_lock);
225
226 return 0;
227}
228
229void mantis_hif_exit(struct mantis_ca *ca)
230{
231 struct mantis_pci *mantis = ca->ca_priv;
232 u32 irqcfg;
233
234 dprintk(MANTIS_ERROR, 1, "Adapter(%d) Exiting Mantis Host Interface", mantis->num);
235 mutex_lock(&ca->ca_lock);
236 irqcfg = mmread(MANTIS_GPIF_IRQCFG);
237 irqcfg &= ~MANTIS_MASK_BRRDY;
238 mmwrite(irqcfg, MANTIS_GPIF_IRQCFG);
239 mutex_unlock(&ca->ca_lock);
240}
diff --git a/drivers/media/dvb/mantis/mantis_hif.h b/drivers/media/dvb/mantis/mantis_hif.h
new file mode 100644
index 000000000000..9094f9ed2362
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_hif.h
@@ -0,0 +1,29 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MANTIS_HIF_H
22#define __MANTIS_HIF_H
23
24#define MANTIS_HIF_MEMRD 1
25#define MANTIS_HIF_MEMWR 2
26#define MANTIS_HIF_IOMRD 3
27#define MANTIS_HIF_IOMWR 4
28
29#endif /* __MANTIS_HIF_H */
diff --git a/drivers/media/dvb/mantis/mantis_i2c.c b/drivers/media/dvb/mantis/mantis_i2c.c
new file mode 100644
index 000000000000..7870bcf9689a
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_i2c.c
@@ -0,0 +1,267 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include <asm/io.h>
22#include <linux/ioport.h>
23#include <linux/pci.h>
24#include <linux/i2c.h>
25
26#include "dmxdev.h"
27#include "dvbdev.h"
28#include "dvb_demux.h"
29#include "dvb_frontend.h"
30#include "dvb_net.h"
31
32#include "mantis_common.h"
33#include "mantis_reg.h"
34#include "mantis_i2c.h"
35
36#define TRIALS 10000
37
38static int mantis_i2c_read(struct mantis_pci *mantis, const struct i2c_msg *msg)
39{
40 u32 rxd, i, stat, trials;
41
42 dprintk(MANTIS_INFO, 0, " %s: Address=[0x%02x] <R>[ ",
43 __func__, msg->addr);
44
45 for (i = 0; i < msg->len; i++) {
46 rxd = (msg->addr << 25) | (1 << 24)
47 | MANTIS_I2C_RATE_3
48 | MANTIS_I2C_STOP
49 | MANTIS_I2C_PGMODE;
50
51 if (i == (msg->len - 1))
52 rxd &= ~MANTIS_I2C_STOP;
53
54 mmwrite(MANTIS_INT_I2CDONE, MANTIS_INT_STAT);
55 mmwrite(rxd, MANTIS_I2CDATA_CTL);
56
57 /* wait for xfer completion */
58 for (trials = 0; trials < TRIALS; trials++) {
59 stat = mmread(MANTIS_INT_STAT);
60 if (stat & MANTIS_INT_I2CDONE)
61 break;
62 }
63
64 dprintk(MANTIS_TMG, 0, "I2CDONE: trials=%d\n", trials);
65
66 /* wait for xfer completion */
67 for (trials = 0; trials < TRIALS; trials++) {
68 stat = mmread(MANTIS_INT_STAT);
69 if (stat & MANTIS_INT_I2CRACK)
70 break;
71 }
72
73 dprintk(MANTIS_TMG, 0, "I2CRACK: trials=%d\n", trials);
74
75 rxd = mmread(MANTIS_I2CDATA_CTL);
76 msg->buf[i] = (u8)((rxd >> 8) & 0xFF);
77 dprintk(MANTIS_INFO, 0, "%02x ", msg->buf[i]);
78 }
79 dprintk(MANTIS_INFO, 0, "]\n");
80
81 return 0;
82}
83
84static int mantis_i2c_write(struct mantis_pci *mantis, const struct i2c_msg *msg)
85{
86 int i;
87 u32 txd = 0, stat, trials;
88
89 dprintk(MANTIS_INFO, 0, " %s: Address=[0x%02x] <W>[ ",
90 __func__, msg->addr);
91
92 for (i = 0; i < msg->len; i++) {
93 dprintk(MANTIS_INFO, 0, "%02x ", msg->buf[i]);
94 txd = (msg->addr << 25) | (msg->buf[i] << 8)
95 | MANTIS_I2C_RATE_3
96 | MANTIS_I2C_STOP
97 | MANTIS_I2C_PGMODE;
98
99 if (i == (msg->len - 1))
100 txd &= ~MANTIS_I2C_STOP;
101
102 mmwrite(MANTIS_INT_I2CDONE, MANTIS_INT_STAT);
103 mmwrite(txd, MANTIS_I2CDATA_CTL);
104
105 /* wait for xfer completion */
106 for (trials = 0; trials < TRIALS; trials++) {
107 stat = mmread(MANTIS_INT_STAT);
108 if (stat & MANTIS_INT_I2CDONE)
109 break;
110 }
111
112 dprintk(MANTIS_TMG, 0, "I2CDONE: trials=%d\n", trials);
113
114 /* wait for xfer completion */
115 for (trials = 0; trials < TRIALS; trials++) {
116 stat = mmread(MANTIS_INT_STAT);
117 if (stat & MANTIS_INT_I2CRACK)
118 break;
119 }
120
121 dprintk(MANTIS_TMG, 0, "I2CRACK: trials=%d\n", trials);
122 }
123 dprintk(MANTIS_INFO, 0, "]\n");
124
125 return 0;
126}
127
128static int mantis_i2c_xfer(struct i2c_adapter *adapter, struct i2c_msg *msgs, int num)
129{
130 int ret = 0, i = 0, trials;
131 u32 stat, data, txd;
132 struct mantis_pci *mantis;
133 struct mantis_hwconfig *config;
134
135 mantis = i2c_get_adapdata(adapter);
136 BUG_ON(!mantis);
137 config = mantis->hwconfig;
138 BUG_ON(!config);
139
140 dprintk(MANTIS_DEBUG, 1, "Messages:%d", num);
141 mutex_lock(&mantis->i2c_lock);
142
143 while (i < num) {
144 /* Byte MODE */
145 if ((config->i2c_mode & MANTIS_BYTE_MODE) &&
146 ((i + 1) < num) &&
147 (msgs[i].len < 2) &&
148 (msgs[i + 1].len < 2) &&
149 (msgs[i + 1].flags & I2C_M_RD)) {
150
151 dprintk(MANTIS_DEBUG, 0, " Byte MODE:\n");
152
153 /* Read operation */
154 txd = msgs[i].addr << 25 | (0x1 << 24)
155 | (msgs[i].buf[0] << 16)
156 | MANTIS_I2C_RATE_3;
157
158 mmwrite(txd, MANTIS_I2CDATA_CTL);
159 /* wait for xfer completion */
160 for (trials = 0; trials < TRIALS; trials++) {
161 stat = mmread(MANTIS_INT_STAT);
162 if (stat & MANTIS_INT_I2CDONE)
163 break;
164 }
165
166 /* check for xfer completion */
167 if (stat & MANTIS_INT_I2CDONE) {
168 /* check xfer was acknowledged */
169 if (stat & MANTIS_INT_I2CRACK) {
170 data = mmread(MANTIS_I2CDATA_CTL);
171 msgs[i + 1].buf[0] = (data >> 8) & 0xff;
172 dprintk(MANTIS_DEBUG, 0, " Byte <%d> RXD=0x%02x [%02x]\n", 0x0, data, msgs[i + 1].buf[0]);
173 } else {
174 /* I/O error */
175 dprintk(MANTIS_ERROR, 1, " I/O error, LINE:%d", __LINE__);
176 ret = -EIO;
177 break;
178 }
179 } else {
180 /* I/O error */
181 dprintk(MANTIS_ERROR, 1, " I/O error, LINE:%d", __LINE__);
182 ret = -EIO;
183 break;
184 }
185 i += 2; /* Write/Read operation in one go */
186 }
187
188 if (i < num) {
189 if (msgs[i].flags & I2C_M_RD)
190 ret = mantis_i2c_read(mantis, &msgs[i]);
191 else
192 ret = mantis_i2c_write(mantis, &msgs[i]);
193
194 i++;
195 if (ret < 0)
196 goto bail_out;
197 }
198
199 }
200
201 mutex_unlock(&mantis->i2c_lock);
202
203 return num;
204
205bail_out:
206 mutex_unlock(&mantis->i2c_lock);
207 return ret;
208}
209
210static u32 mantis_i2c_func(struct i2c_adapter *adapter)
211{
212 return I2C_FUNC_SMBUS_EMUL;
213}
214
215static struct i2c_algorithm mantis_algo = {
216 .master_xfer = mantis_i2c_xfer,
217 .functionality = mantis_i2c_func,
218};
219
220int __devinit mantis_i2c_init(struct mantis_pci *mantis)
221{
222 u32 intstat, intmask;
223 struct i2c_adapter *i2c_adapter = &mantis->adapter;
224 struct pci_dev *pdev = mantis->pdev;
225
226 init_waitqueue_head(&mantis->i2c_wq);
227 mutex_init(&mantis->i2c_lock);
228 strncpy(i2c_adapter->name, "Mantis I2C", sizeof(i2c_adapter->name));
229 i2c_set_adapdata(i2c_adapter, mantis);
230
231 i2c_adapter->owner = THIS_MODULE;
232 i2c_adapter->class = I2C_CLASS_TV_DIGITAL;
233 i2c_adapter->algo = &mantis_algo;
234 i2c_adapter->algo_data = NULL;
235 i2c_adapter->timeout = 500;
236 i2c_adapter->retries = 3;
237 i2c_adapter->dev.parent = &pdev->dev;
238
239 mantis->i2c_rc = i2c_add_adapter(i2c_adapter);
240 if (mantis->i2c_rc < 0)
241 return mantis->i2c_rc;
242
243 dprintk(MANTIS_DEBUG, 1, "Initializing I2C ..");
244
245 intstat = mmread(MANTIS_INT_STAT);
246 intmask = mmread(MANTIS_INT_MASK);
247 mmwrite(intstat, MANTIS_INT_STAT);
248 dprintk(MANTIS_DEBUG, 1, "Disabling I2C interrupt");
249 intmask = mmread(MANTIS_INT_MASK);
250 mmwrite((intmask & ~MANTIS_INT_I2CDONE), MANTIS_INT_MASK);
251
252 return 0;
253}
254EXPORT_SYMBOL_GPL(mantis_i2c_init);
255
256int mantis_i2c_exit(struct mantis_pci *mantis)
257{
258 u32 intmask;
259
260 dprintk(MANTIS_DEBUG, 1, "Disabling I2C interrupt");
261 intmask = mmread(MANTIS_INT_MASK);
262 mmwrite((intmask & ~MANTIS_INT_I2CDONE), MANTIS_INT_MASK);
263
264 dprintk(MANTIS_DEBUG, 1, "Removing I2C adapter");
265 return i2c_del_adapter(&mantis->adapter);
266}
267EXPORT_SYMBOL_GPL(mantis_i2c_exit);
diff --git a/drivers/media/dvb/mantis/mantis_i2c.h b/drivers/media/dvb/mantis/mantis_i2c.h
new file mode 100644
index 000000000000..1342df2faed8
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_i2c.h
@@ -0,0 +1,30 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MANTIS_I2C_H
22#define __MANTIS_I2C_H
23
24#define I2C_STOP (1 << 0)
25#define I2C_READ (1 << 1)
26
27extern int mantis_i2c_init(struct mantis_pci *mantis);
28extern int mantis_i2c_exit(struct mantis_pci *mantis);
29
30#endif /* __MANTIS_I2C_H */
diff --git a/drivers/media/dvb/mantis/mantis_input.c b/drivers/media/dvb/mantis/mantis_input.c
new file mode 100644
index 000000000000..6a9df779441f
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_input.c
@@ -0,0 +1,148 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include <linux/input.h>
22#include <media/ir-common.h>
23#include <linux/pci.h>
24
25#include "dmxdev.h"
26#include "dvbdev.h"
27#include "dvb_demux.h"
28#include "dvb_frontend.h"
29#include "dvb_net.h"
30
31#include "mantis_common.h"
32#include "mantis_reg.h"
33#include "mantis_uart.h"
34
35static struct ir_scancode mantis_ir_table[] = {
36 { 0x29, KEY_POWER },
37 { 0x28, KEY_FAVORITES },
38 { 0x30, KEY_TEXT },
39 { 0x17, KEY_INFO }, /* Preview */
40 { 0x23, KEY_EPG },
41 { 0x3b, KEY_F22 }, /* Record List */
42 { 0x3c, KEY_1 },
43 { 0x3e, KEY_2 },
44 { 0x39, KEY_3 },
45 { 0x36, KEY_4 },
46 { 0x22, KEY_5 },
47 { 0x20, KEY_6 },
48 { 0x32, KEY_7 },
49 { 0x26, KEY_8 },
50 { 0x24, KEY_9 },
51 { 0x2a, KEY_0 },
52
53 { 0x33, KEY_CANCEL },
54 { 0x2c, KEY_BACK },
55 { 0x15, KEY_CLEAR },
56 { 0x3f, KEY_TAB },
57 { 0x10, KEY_ENTER },
58 { 0x14, KEY_UP },
59 { 0x0d, KEY_RIGHT },
60 { 0x0e, KEY_DOWN },
61 { 0x11, KEY_LEFT },
62
63 { 0x21, KEY_VOLUMEUP },
64 { 0x35, KEY_VOLUMEDOWN },
65 { 0x3d, KEY_CHANNELDOWN },
66 { 0x3a, KEY_CHANNELUP },
67 { 0x2e, KEY_RECORD },
68 { 0x2b, KEY_PLAY },
69 { 0x13, KEY_PAUSE },
70 { 0x25, KEY_STOP },
71
72 { 0x1f, KEY_REWIND },
73 { 0x2d, KEY_FASTFORWARD },
74 { 0x1e, KEY_PREVIOUS }, /* Replay |< */
75 { 0x1d, KEY_NEXT }, /* Skip >| */
76
77 { 0x0b, KEY_CAMERA }, /* Capture */
78 { 0x0f, KEY_LANGUAGE }, /* SAP */
79 { 0x18, KEY_MODE }, /* PIP */
80 { 0x12, KEY_ZOOM }, /* Full screen */
81 { 0x1c, KEY_SUBTITLE },
82 { 0x2f, KEY_MUTE },
83 { 0x16, KEY_F20 }, /* L/R */
84 { 0x38, KEY_F21 }, /* Hibernate */
85
86 { 0x37, KEY_SWITCHVIDEOMODE }, /* A/V */
87 { 0x31, KEY_AGAIN }, /* Recall */
88 { 0x1a, KEY_KPPLUS }, /* Zoom+ */
89 { 0x19, KEY_KPMINUS }, /* Zoom- */
90 { 0x27, KEY_RED },
91 { 0x0C, KEY_GREEN },
92 { 0x01, KEY_YELLOW },
93 { 0x00, KEY_BLUE },
94};
95
96struct ir_scancode_table ir_mantis = {
97 .scan = mantis_ir_table,
98 .size = ARRAY_SIZE(mantis_ir_table),
99};
100EXPORT_SYMBOL_GPL(ir_mantis);
101
102int mantis_input_init(struct mantis_pci *mantis)
103{
104 struct input_dev *rc;
105 struct ir_input_state rc_state;
106 char name[80], dev[80];
107 int err;
108
109 rc = input_allocate_device();
110 if (!rc) {
111 dprintk(MANTIS_ERROR, 1, "Input device allocate failed");
112 return -ENOMEM;
113 }
114
115 sprintf(name, "Mantis %s IR receiver", mantis->hwconfig->model_name);
116 sprintf(dev, "pci-%s/ir0", pci_name(mantis->pdev));
117
118 rc->name = name;
119 rc->phys = dev;
120
121 ir_input_init(rc, &rc_state, IR_TYPE_OTHER);
122
123 rc->id.bustype = BUS_PCI;
124 rc->id.vendor = mantis->vendor_id;
125 rc->id.product = mantis->device_id;
126 rc->id.version = 1;
127 rc->dev = mantis->pdev->dev;
128
129 err = ir_input_register(rc, &ir_mantis);
130 if (err) {
131 dprintk(MANTIS_ERROR, 1, "IR device registration failed, ret = %d", err);
132 input_free_device(rc);
133 return -ENODEV;
134 }
135
136 mantis->rc = rc;
137
138 return 0;
139}
140
141int mantis_exit(struct mantis_pci *mantis)
142{
143 struct input_dev *rc = mantis->rc;
144
145 ir_input_unregister(rc);
146
147 return 0;
148}
diff --git a/drivers/media/dvb/mantis/mantis_ioc.c b/drivers/media/dvb/mantis/mantis_ioc.c
new file mode 100644
index 000000000000..de148ded52d8
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_ioc.c
@@ -0,0 +1,130 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include <linux/kernel.h>
22#include <linux/i2c.h>
23
24#include <linux/signal.h>
25#include <linux/sched.h>
26#include <linux/interrupt.h>
27
28#include "dmxdev.h"
29#include "dvbdev.h"
30#include "dvb_demux.h"
31#include "dvb_frontend.h"
32#include "dvb_net.h"
33
34#include "mantis_common.h"
35#include "mantis_reg.h"
36#include "mantis_ioc.h"
37
38static int read_eeprom_bytes(struct mantis_pci *mantis, u8 reg, u8 *data, u8 length)
39{
40 struct i2c_adapter *adapter = &mantis->adapter;
41 int err;
42 u8 buf = reg;
43
44 struct i2c_msg msg[] = {
45 { .addr = 0x50, .flags = 0, .buf = &buf, .len = 1 },
46 { .addr = 0x50, .flags = I2C_M_RD, .buf = data, .len = length },
47 };
48
49 err = i2c_transfer(adapter, msg, 2);
50 if (err < 0) {
51 dprintk(MANTIS_ERROR, 1, "ERROR: i2c read: < err=%i d0=0x%02x d1=0x%02x >",
52 err, data[0], data[1]);
53
54 return err;
55 }
56
57 return 0;
58}
59int mantis_get_mac(struct mantis_pci *mantis)
60{
61 int err;
62 u8 mac_addr[6] = {0};
63
64 err = read_eeprom_bytes(mantis, 0x08, mac_addr, 6);
65 if (err < 0) {
66 dprintk(MANTIS_ERROR, 1, "ERROR: Mantis EEPROM read error <%d>", err);
67
68 return err;
69 }
70
71 dprintk(MANTIS_ERROR, 0,
72 " MAC Address=[%02x:%02x:%02x:%02x:%02x:%02x]\n",
73 mac_addr[0],
74 mac_addr[1],
75 mac_addr[2],
76 mac_addr[3],
77 mac_addr[4],
78 mac_addr[5]);
79
80 return 0;
81}
82EXPORT_SYMBOL_GPL(mantis_get_mac);
83
84/* Turn the given bit on or off. */
85void gpio_set_bits(struct mantis_pci *mantis, u32 bitpos, u8 value)
86{
87 u32 cur;
88
89 dprintk(MANTIS_DEBUG, 1, "Set Bit <%d> to <%d>", bitpos, value);
90 cur = mmread(MANTIS_GPIF_ADDR);
91 if (value)
92 mantis->gpio_status = cur | (1 << bitpos);
93 else
94 mantis->gpio_status = cur & (~(1 << bitpos));
95
96 dprintk(MANTIS_DEBUG, 1, "GPIO Value <%02x>", mantis->gpio_status);
97 mmwrite(mantis->gpio_status, MANTIS_GPIF_ADDR);
98 mmwrite(0x00, MANTIS_GPIF_DOUT);
99}
100EXPORT_SYMBOL_GPL(gpio_set_bits);
101
102int mantis_stream_control(struct mantis_pci *mantis, enum mantis_stream_control stream_ctl)
103{
104 u32 reg;
105
106 reg = mmread(MANTIS_CONTROL);
107 switch (stream_ctl) {
108 case STREAM_TO_HIF:
109 dprintk(MANTIS_DEBUG, 1, "Set stream to HIF");
110 reg &= 0xff - MANTIS_BYPASS;
111 mmwrite(reg, MANTIS_CONTROL);
112 reg |= MANTIS_BYPASS;
113 mmwrite(reg, MANTIS_CONTROL);
114 break;
115
116 case STREAM_TO_CAM:
117 dprintk(MANTIS_DEBUG, 1, "Set stream to CAM");
118 reg |= MANTIS_BYPASS;
119 mmwrite(reg, MANTIS_CONTROL);
120 reg &= 0xff - MANTIS_BYPASS;
121 mmwrite(reg, MANTIS_CONTROL);
122 break;
123 default:
124 dprintk(MANTIS_ERROR, 1, "Unknown MODE <%02x>", stream_ctl);
125 return -1;
126 }
127
128 return 0;
129}
130EXPORT_SYMBOL_GPL(mantis_stream_control);
diff --git a/drivers/media/dvb/mantis/mantis_ioc.h b/drivers/media/dvb/mantis/mantis_ioc.h
new file mode 100644
index 000000000000..188fe5a81614
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_ioc.h
@@ -0,0 +1,51 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MANTIS_IOC_H
22#define __MANTIS_IOC_H
23
24#define GPIF_A00 0x00
25#define GPIF_A01 0x01
26#define GPIF_A02 0x02
27#define GPIF_A03 0x03
28#define GPIF_A04 0x04
29#define GPIF_A05 0x05
30#define GPIF_A06 0x06
31#define GPIF_A07 0x07
32#define GPIF_A08 0x08
33#define GPIF_A09 0x09
34#define GPIF_A10 0x0a
35#define GPIF_A11 0x0b
36
37#define GPIF_A12 0x0c
38#define GPIF_A13 0x0d
39#define GPIF_A14 0x0e
40
41enum mantis_stream_control {
42 STREAM_TO_HIF = 0,
43 STREAM_TO_CAM
44};
45
46extern int mantis_get_mac(struct mantis_pci *mantis);
47extern void gpio_set_bits(struct mantis_pci *mantis, u32 bitpos, u8 value);
48
49extern int mantis_stream_control(struct mantis_pci *mantis, enum mantis_stream_control stream_ctl);
50
51#endif /* __MANTIS_IOC_H */
diff --git a/drivers/media/dvb/mantis/mantis_link.h b/drivers/media/dvb/mantis/mantis_link.h
new file mode 100644
index 000000000000..2a814774a001
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_link.h
@@ -0,0 +1,83 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MANTIS_LINK_H
22#define __MANTIS_LINK_H
23
24#include <linux/mutex.h>
25#include <linux/workqueue.h>
26#include "dvb_ca_en50221.h"
27
28enum mantis_sbuf_status {
29 MANTIS_SBUF_DATA_AVAIL = 1,
30 MANTIS_SBUF_DATA_EMPTY = 2,
31 MANTIS_SBUF_DATA_OVFLW = 3
32};
33
34struct mantis_slot {
35 u32 timeout;
36 u32 slave_cfg;
37 u32 bar;
38};
39
40/* Physical layer */
41enum mantis_slot_state {
42 MODULE_INSERTED = 3,
43 MODULE_XTRACTED = 4
44};
45
46struct mantis_ca {
47 struct mantis_slot slot[4];
48
49 struct work_struct hif_evm_work;
50
51 u32 hif_event;
52 wait_queue_head_t hif_opdone_wq;
53 wait_queue_head_t hif_brrdyw_wq;
54 wait_queue_head_t hif_data_wq;
55 wait_queue_head_t hif_write_wq; /* HIF Write op */
56
57 enum mantis_sbuf_status sbuf_status;
58
59 enum mantis_slot_state slot_state;
60
61 void *ca_priv;
62
63 struct dvb_ca_en50221 en50221;
64 struct mutex ca_lock;
65};
66
67/* CA */
68extern void mantis_event_cam_plugin(struct mantis_ca *ca);
69extern void mantis_event_cam_unplug(struct mantis_ca *ca);
70extern int mantis_pcmcia_init(struct mantis_ca *ca);
71extern void mantis_pcmcia_exit(struct mantis_ca *ca);
72extern int mantis_evmgr_init(struct mantis_ca *ca);
73extern void mantis_evmgr_exit(struct mantis_ca *ca);
74
75/* HIF */
76extern int mantis_hif_init(struct mantis_ca *ca);
77extern void mantis_hif_exit(struct mantis_ca *ca);
78extern int mantis_hif_read_mem(struct mantis_ca *ca, u32 addr);
79extern int mantis_hif_write_mem(struct mantis_ca *ca, u32 addr, u8 data);
80extern int mantis_hif_read_iom(struct mantis_ca *ca, u32 addr);
81extern int mantis_hif_write_iom(struct mantis_ca *ca, u32 addr, u8 data);
82
83#endif /* __MANTIS_LINK_H */
diff --git a/drivers/media/dvb/mantis/mantis_pci.c b/drivers/media/dvb/mantis/mantis_pci.c
new file mode 100644
index 000000000000..6c7534af6b44
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_pci.c
@@ -0,0 +1,177 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include <linux/module.h>
22#include <linux/moduleparam.h>
23#include <linux/kernel.h>
24#include <asm/io.h>
25#include <asm/pgtable.h>
26#include <asm/page.h>
27#include <linux/kmod.h>
28#include <linux/vmalloc.h>
29#include <linux/init.h>
30#include <linux/device.h>
31#include <linux/pci.h>
32
33#include <asm/irq.h>
34#include <linux/signal.h>
35#include <linux/sched.h>
36#include <linux/interrupt.h>
37
38#include "dmxdev.h"
39#include "dvbdev.h"
40#include "dvb_demux.h"
41#include "dvb_frontend.h"
42#include "dvb_net.h"
43
44#include <asm/irq.h>
45#include <linux/signal.h>
46#include <linux/sched.h>
47#include <linux/interrupt.h>
48
49#include "mantis_common.h"
50#include "mantis_reg.h"
51#include "mantis_pci.h"
52
53#define DRIVER_NAME "Mantis Core"
54
55int __devinit mantis_pci_init(struct mantis_pci *mantis)
56{
57 u8 revision, latency;
58 struct mantis_hwconfig *config = mantis->hwconfig;
59 struct pci_dev *pdev = mantis->pdev;
60 int err, ret = 0;
61
62 dprintk(MANTIS_ERROR, 0, "found a %s PCI %s device on (%02x:%02x.%x),\n",
63 config->model_name,
64 config->dev_type,
65 mantis->pdev->bus->number,
66 PCI_SLOT(mantis->pdev->devfn),
67 PCI_FUNC(mantis->pdev->devfn));
68
69 err = pci_enable_device(pdev);
70 if (err != 0) {
71 ret = -ENODEV;
72 dprintk(MANTIS_ERROR, 1, "ERROR: PCI enable failed <%i>", err);
73 goto fail0;
74 }
75
76 err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));
77 if (err != 0) {
78 dprintk(MANTIS_ERROR, 1, "ERROR: Unable to obtain 32 bit DMA <%i>", err);
79 ret = -ENOMEM;
80 goto fail1;
81 }
82
83 pci_set_master(pdev);
84
85 if (!request_mem_region(pci_resource_start(pdev, 0),
86 pci_resource_len(pdev, 0),
87 DRIVER_NAME)) {
88
89 dprintk(MANTIS_ERROR, 1, "ERROR: BAR0 Request failed !");
90 ret = -ENODEV;
91 goto fail1;
92 }
93
94 mantis->mmio = ioremap(pci_resource_start(pdev, 0),
95 pci_resource_len(pdev, 0));
96
97 if (!mantis->mmio) {
98 dprintk(MANTIS_ERROR, 1, "ERROR: BAR0 remap failed !");
99 ret = -ENODEV;
100 goto fail2;
101 }
102
103 pci_read_config_byte(pdev, PCI_LATENCY_TIMER, &latency);
104 pci_read_config_byte(pdev, PCI_CLASS_REVISION, &revision);
105 mantis->latency = latency;
106 mantis->revision = revision;
107
108 dprintk(MANTIS_ERROR, 0, " Mantis Rev %d [%04x:%04x], ",
109 mantis->revision,
110 mantis->pdev->subsystem_vendor,
111 mantis->pdev->subsystem_device);
112
113 dprintk(MANTIS_ERROR, 0,
114 "irq: %d, latency: %d\n memory: 0x%lx, mmio: 0x%p\n",
115 mantis->pdev->irq,
116 mantis->latency,
117 mantis->mantis_addr,
118 mantis->mmio);
119
120 err = request_irq(pdev->irq,
121 config->irq_handler,
122 IRQF_SHARED,
123 DRIVER_NAME,
124 mantis);
125
126 if (err != 0) {
127
128 dprintk(MANTIS_ERROR, 1, "ERROR: IRQ registration failed ! <%d>", err);
129 ret = -ENODEV;
130 goto fail3;
131 }
132
133 pci_set_drvdata(pdev, mantis);
134 return ret;
135
136 /* Error conditions */
137fail3:
138 dprintk(MANTIS_ERROR, 1, "ERROR: <%d> I/O unmap", ret);
139 if (mantis->mmio)
140 iounmap(mantis->mmio);
141
142fail2:
143 dprintk(MANTIS_ERROR, 1, "ERROR: <%d> releasing regions", ret);
144 release_mem_region(pci_resource_start(pdev, 0),
145 pci_resource_len(pdev, 0));
146
147fail1:
148 dprintk(MANTIS_ERROR, 1, "ERROR: <%d> disabling device", ret);
149 pci_disable_device(pdev);
150
151fail0:
152 dprintk(MANTIS_ERROR, 1, "ERROR: <%d> exiting", ret);
153 pci_set_drvdata(pdev, NULL);
154 return ret;
155}
156EXPORT_SYMBOL_GPL(mantis_pci_init);
157
158void mantis_pci_exit(struct mantis_pci *mantis)
159{
160 struct pci_dev *pdev = mantis->pdev;
161
162 dprintk(MANTIS_NOTICE, 1, " mem: 0x%p", mantis->mmio);
163 free_irq(pdev->irq, mantis);
164 if (mantis->mmio) {
165 iounmap(mantis->mmio);
166 release_mem_region(pci_resource_start(pdev, 0),
167 pci_resource_len(pdev, 0));
168 }
169
170 pci_disable_device(pdev);
171 pci_set_drvdata(pdev, NULL);
172}
173EXPORT_SYMBOL_GPL(mantis_pci_exit);
174
175MODULE_DESCRIPTION("Mantis PCI DTV bridge driver");
176MODULE_AUTHOR("Manu Abraham");
177MODULE_LICENSE("GPL");
diff --git a/drivers/media/dvb/mantis/mantis_pci.h b/drivers/media/dvb/mantis/mantis_pci.h
new file mode 100644
index 000000000000..65f004519086
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_pci.h
@@ -0,0 +1,27 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MANTIS_PCI_H
22#define __MANTIS_PCI_H
23
24extern int mantis_pci_init(struct mantis_pci *mantis);
25extern void mantis_pci_exit(struct mantis_pci *mantis);
26
27#endif /* __MANTIS_PCI_H */
diff --git a/drivers/media/dvb/mantis/mantis_pcmcia.c b/drivers/media/dvb/mantis/mantis_pcmcia.c
new file mode 100644
index 000000000000..5cb545b913f6
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_pcmcia.c
@@ -0,0 +1,120 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include <linux/kernel.h>
22
23#include <linux/signal.h>
24#include <linux/sched.h>
25#include <linux/interrupt.h>
26
27#include "dmxdev.h"
28#include "dvbdev.h"
29#include "dvb_demux.h"
30#include "dvb_frontend.h"
31#include "dvb_net.h"
32
33#include "mantis_common.h"
34#include "mantis_link.h" /* temporary due to physical layer stuff */
35#include "mantis_reg.h"
36
37/*
38 * If Slot state is already PLUG_IN event and we are called
39 * again, definitely it is jitter alone
40 */
41void mantis_event_cam_plugin(struct mantis_ca *ca)
42{
43 struct mantis_pci *mantis = ca->ca_priv;
44
45 u32 gpif_irqcfg;
46
47 if (ca->slot_state == MODULE_XTRACTED) {
48 dprintk(MANTIS_DEBUG, 1, "Event: CAM Plugged IN: Adapter(%d) Slot(0)", mantis->num);
49 udelay(50);
50 mmwrite(0xda000000, MANTIS_CARD_RESET);
51 gpif_irqcfg = mmread(MANTIS_GPIF_IRQCFG);
52 gpif_irqcfg |= MANTIS_MASK_PLUGOUT;
53 gpif_irqcfg &= ~MANTIS_MASK_PLUGIN;
54 mmwrite(gpif_irqcfg, MANTIS_GPIF_IRQCFG);
55 udelay(500);
56 ca->slot_state = MODULE_INSERTED;
57 }
58 udelay(100);
59}
60
61/*
62 * If Slot state is already UN_PLUG event and we are called
63 * again, definitely it is jitter alone
64 */
65void mantis_event_cam_unplug(struct mantis_ca *ca)
66{
67 struct mantis_pci *mantis = ca->ca_priv;
68
69 u32 gpif_irqcfg;
70
71 if (ca->slot_state == MODULE_INSERTED) {
72 dprintk(MANTIS_DEBUG, 1, "Event: CAM Unplugged: Adapter(%d) Slot(0)", mantis->num);
73 udelay(50);
74 mmwrite(0x00da0000, MANTIS_CARD_RESET);
75 gpif_irqcfg = mmread(MANTIS_GPIF_IRQCFG);
76 gpif_irqcfg |= MANTIS_MASK_PLUGIN;
77 gpif_irqcfg &= ~MANTIS_MASK_PLUGOUT;
78 mmwrite(gpif_irqcfg, MANTIS_GPIF_IRQCFG);
79 udelay(500);
80 ca->slot_state = MODULE_XTRACTED;
81 }
82 udelay(100);
83}
84
85int mantis_pcmcia_init(struct mantis_ca *ca)
86{
87 struct mantis_pci *mantis = ca->ca_priv;
88
89 u32 gpif_stat, card_stat;
90
91 mmwrite(mmread(MANTIS_INT_MASK) | MANTIS_INT_IRQ0, MANTIS_INT_MASK);
92 gpif_stat = mmread(MANTIS_GPIF_STATUS);
93 card_stat = mmread(MANTIS_GPIF_IRQCFG);
94
95 if (gpif_stat & MANTIS_GPIF_DETSTAT) {
96 dprintk(MANTIS_DEBUG, 1, "CAM found on Adapter(%d) Slot(0)", mantis->num);
97 mmwrite(card_stat | MANTIS_MASK_PLUGOUT, MANTIS_GPIF_IRQCFG);
98 ca->slot_state = MODULE_INSERTED;
99 dvb_ca_en50221_camchange_irq(&ca->en50221,
100 0,
101 DVB_CA_EN50221_CAMCHANGE_INSERTED);
102 } else {
103 dprintk(MANTIS_DEBUG, 1, "Empty Slot on Adapter(%d) Slot(0)", mantis->num);
104 mmwrite(card_stat | MANTIS_MASK_PLUGIN, MANTIS_GPIF_IRQCFG);
105 ca->slot_state = MODULE_XTRACTED;
106 dvb_ca_en50221_camchange_irq(&ca->en50221,
107 0,
108 DVB_CA_EN50221_CAMCHANGE_REMOVED);
109 }
110
111 return 0;
112}
113
114void mantis_pcmcia_exit(struct mantis_ca *ca)
115{
116 struct mantis_pci *mantis = ca->ca_priv;
117
118 mmwrite(mmread(MANTIS_GPIF_STATUS) & (~MANTIS_CARD_PLUGOUT | ~MANTIS_CARD_PLUGIN), MANTIS_GPIF_STATUS);
119 mmwrite(mmread(MANTIS_INT_MASK) & ~MANTIS_INT_IRQ0, MANTIS_INT_MASK);
120}
diff --git a/drivers/media/dvb/mantis/mantis_reg.h b/drivers/media/dvb/mantis/mantis_reg.h
new file mode 100644
index 000000000000..7761f9dc7fe0
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_reg.h
@@ -0,0 +1,197 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MANTIS_REG_H
22#define __MANTIS_REG_H
23
24/* Interrupts */
25#define MANTIS_INT_STAT 0x00
26#define MANTIS_INT_MASK 0x04
27
28#define MANTIS_INT_RISCSTAT (0x0f << 28)
29#define MANTIS_INT_RISCEN (0x01 << 27)
30#define MANTIS_INT_I2CRACK (0x01 << 26)
31
32/* #define MANTIS_INT_GPIF (0xff << 12) */
33
34#define MANTIS_INT_PCMCIA7 (0x01 << 19)
35#define MANTIS_INT_PCMCIA6 (0x01 << 18)
36#define MANTIS_INT_PCMCIA5 (0x01 << 17)
37#define MANTIS_INT_PCMCIA4 (0x01 << 16)
38#define MANTIS_INT_PCMCIA3 (0x01 << 15)
39#define MANTIS_INT_PCMCIA2 (0x01 << 14)
40#define MANTIS_INT_PCMCIA1 (0x01 << 13)
41#define MANTIS_INT_PCMCIA0 (0x01 << 12)
42#define MANTIS_INT_IRQ1 (0x01 << 11)
43#define MANTIS_INT_IRQ0 (0x01 << 10)
44#define MANTIS_INT_OCERR (0x01 << 8)
45#define MANTIS_INT_PABORT (0x01 << 7)
46#define MANTIS_INT_RIPERR (0x01 << 6)
47#define MANTIS_INT_PPERR (0x01 << 5)
48#define MANTIS_INT_FTRGT (0x01 << 3)
49#define MANTIS_INT_RISCI (0x01 << 1)
50#define MANTIS_INT_I2CDONE (0x01 << 0)
51
52/* DMA */
53#define MANTIS_DMA_CTL 0x08
54#define MANTIS_GPIF_RD (0xff << 24)
55#define MANTIS_GPIF_WR (0xff << 16)
56#define MANTIS_CPU_DO (0x01 << 10)
57#define MANTIS_DRV_DO (0x01 << 9)
58#define MANTIS_I2C_RD (0x01 << 7)
59#define MANTIS_I2C_WR (0x01 << 6)
60#define MANTIS_DCAP_MODE (0x01 << 5)
61#define MANTIS_FIFO_TP_4 (0x00 << 3)
62#define MANTIS_FIFO_TP_8 (0x01 << 3)
63#define MANTIS_FIFO_TP_16 (0x02 << 3)
64#define MANTIS_FIFO_EN (0x01 << 2)
65#define MANTIS_DCAP_EN (0x01 << 1)
66#define MANTIS_RISC_EN (0x01 << 0)
67
68/* DEBUG */
69#define MANTIS_DEBUGREG 0x0c
70#define MANTIS_DATINV (0x0e << 7)
71#define MANTIS_TOP_DEBUGSEL (0x07 << 4)
72#define MANTIS_PCMCIA_DEBUGSEL (0x0f << 0)
73
74#define MANTIS_RISC_START 0x10
75#define MANTIS_RISC_PC 0x14
76
77/* I2C */
78#define MANTIS_I2CDATA_CTL 0x18
79#define MANTIS_I2C_RATE_1 (0x00 << 6)
80#define MANTIS_I2C_RATE_2 (0x01 << 6)
81#define MANTIS_I2C_RATE_3 (0x02 << 6)
82#define MANTIS_I2C_RATE_4 (0x03 << 6)
83#define MANTIS_I2C_STOP (0x01 << 5)
84#define MANTIS_I2C_PGMODE (0x01 << 3)
85
86/* DATA */
87#define MANTIS_CMD_DATA_R1 0x20
88#define MANTIS_CMD_DATA_3 (0xff << 24)
89#define MANTIS_CMD_DATA_2 (0xff << 16)
90#define MANTIS_CMD_DATA_1 (0xff << 8)
91#define MANTIS_CMD_DATA_0 (0xff << 0)
92
93#define MANTIS_CMD_DATA_R2 0x24
94#define MANTIS_CMD_DATA_7 (0xff << 24)
95#define MANTIS_CMD_DATA_6 (0xff << 16)
96#define MANTIS_CMD_DATA_5 (0xff << 8)
97#define MANTIS_CMD_DATA_4 (0xff << 0)
98
99#define MANTIS_CONTROL 0x28
100#define MANTIS_DET (0x01 << 7)
101#define MANTIS_DAT_CF_EN (0x01 << 6)
102#define MANTIS_ACS (0x03 << 4)
103#define MANTIS_VCCEN (0x01 << 3)
104#define MANTIS_BYPASS (0x01 << 2)
105#define MANTIS_MRST (0x01 << 1)
106#define MANTIS_CRST_INT (0x01 << 0)
107
108#define MANTIS_GPIF_CFGSLA 0x84
109#define MANTIS_GPIF_WAITSMPL (0x07 << 28)
110#define MANTIS_GPIF_BYTEADDRSUB (0x01 << 25)
111#define MANTIS_GPIF_WAITPOL (0x01 << 24)
112#define MANTIS_GPIF_NCDELAY (0x07 << 20)
113#define MANTIS_GPIF_RW2CSDELAY (0x07 << 16)
114#define MANTIS_GPIF_SLFTIMEDMODE (0x01 << 15)
115#define MANTIS_GPIF_SLFTIMEDDELY (0x7f << 8)
116#define MANTIS_GPIF_DEVTYPE (0x07 << 4)
117#define MANTIS_GPIF_BIGENDIAN (0x01 << 3)
118#define MANTIS_GPIF_FETCHCMD (0x03 << 1)
119#define MANTIS_GPIF_HWORDDEV (0x01 << 0)
120
121#define MANTIS_GPIF_WSTOPER 0x90
122#define MANTIS_GPIF_WSTOPERWREN3 (0x01 << 31)
123#define MANTIS_GPIF_PARBOOTN (0x01 << 29)
124#define MANTIS_GPIF_WSTOPERSLID3 (0x1f << 24)
125#define MANTIS_GPIF_WSTOPERWREN2 (0x01 << 23)
126#define MANTIS_GPIF_WSTOPERSLID2 (0x1f << 16)
127#define MANTIS_GPIF_WSTOPERWREN1 (0x01 << 15)
128#define MANTIS_GPIF_WSTOPERSLID1 (0x1f << 8)
129#define MANTIS_GPIF_WSTOPERWREN0 (0x01 << 7)
130#define MANTIS_GPIF_WSTOPERSLID0 (0x1f << 0)
131
132#define MANTIS_GPIF_CS2RW 0x94
133#define MANTIS_GPIF_CS2RWWREN3 (0x01 << 31)
134#define MANTIS_GPIF_CS2RWDELY3 (0x3f << 24)
135#define MANTIS_GPIF_CS2RWWREN2 (0x01 << 23)
136#define MANTIS_GPIF_CS2RWDELY2 (0x3f << 16)
137#define MANTIS_GPIF_CS2RWWREN1 (0x01 << 15)
138#define MANTIS_GPIF_CS2RWDELY1 (0x3f << 8)
139#define MANTIS_GPIF_CS2RWWREN0 (0x01 << 7)
140#define MANTIS_GPIF_CS2RWDELY0 (0x3f << 0)
141
142#define MANTIS_GPIF_IRQCFG 0x98
143#define MANTIS_GPIF_IRQPOL (0x01 << 8)
144#define MANTIS_MASK_WRACK (0x01 << 7)
145#define MANTIS_MASK_BRRDY (0x01 << 6)
146#define MANTIS_MASK_OVFLW (0x01 << 5)
147#define MANTIS_MASK_OTHERR (0x01 << 4)
148#define MANTIS_MASK_WSTO (0x01 << 3)
149#define MANTIS_MASK_EXTIRQ (0x01 << 2)
150#define MANTIS_MASK_PLUGIN (0x01 << 1)
151#define MANTIS_MASK_PLUGOUT (0x01 << 0)
152
153#define MANTIS_GPIF_STATUS 0x9c
154#define MANTIS_SBUF_KILLOP (0x01 << 15)
155#define MANTIS_SBUF_OPDONE (0x01 << 14)
156#define MANTIS_SBUF_EMPTY (0x01 << 13)
157#define MANTIS_GPIF_DETSTAT (0x01 << 9)
158#define MANTIS_GPIF_INTSTAT (0x01 << 8)
159#define MANTIS_GPIF_WRACK (0x01 << 7)
160#define MANTIS_GPIF_BRRDY (0x01 << 6)
161#define MANTIS_SBUF_OVFLW (0x01 << 5)
162#define MANTIS_GPIF_OTHERR (0x01 << 4)
163#define MANTIS_SBUF_WSTO (0x01 << 3)
164#define MANTIS_GPIF_EXTIRQ (0x01 << 2)
165#define MANTIS_CARD_PLUGIN (0x01 << 1)
166#define MANTIS_CARD_PLUGOUT (0x01 << 0)
167
168#define MANTIS_GPIF_BRADDR 0xa0
169#define MANTIS_GPIF_PCMCIAREG (0x01 << 27)
170#define MANTIS_GPIF_PCMCIAIOM (0x01 << 26)
171#define MANTIS_GPIF_BR_ADDR (0xfffffff << 0)
172
173#define MANTIS_GPIF_BRBYTES 0xa4
174#define MANTIS_GPIF_BRCNT (0xfff << 0)
175
176#define MANTIS_PCMCIA_RESET 0xa8
177#define MANTIS_PCMCIA_RSTVAL (0xff << 0)
178
179#define MANTIS_CARD_RESET 0xac
180
181#define MANTIS_GPIF_ADDR 0xb0
182#define MANTIS_GPIF_HIFRDWRN (0x01 << 31)
183#define MANTIS_GPIF_PCMCIAREG (0x01 << 27)
184#define MANTIS_GPIF_PCMCIAIOM (0x01 << 26)
185#define MANTIS_GPIF_HIFADDR (0xfffffff << 0)
186
187#define MANTIS_GPIF_DOUT 0xb4
188#define MANTIS_GPIF_HIFDOUT (0xfffffff << 0)
189
190#define MANTIS_GPIF_DIN 0xb8
191#define MANTIS_GPIF_HIFDIN (0xfffffff << 0)
192
193#define MANTIS_GPIF_SPARE 0xbc
194#define MANTIS_GPIF_LOGICRD (0xffff << 16)
195#define MANTIS_GPIF_LOGICRW (0xffff << 0)
196
197#endif /* __MANTIS_REG_H */
diff --git a/drivers/media/dvb/mantis/mantis_uart.c b/drivers/media/dvb/mantis/mantis_uart.c
new file mode 100644
index 000000000000..7d2f2398fa8b
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_uart.c
@@ -0,0 +1,186 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include <linux/kernel.h>
22#include <linux/spinlock.h>
23
24#include <linux/signal.h>
25#include <linux/sched.h>
26#include <linux/interrupt.h>
27
28#include "dmxdev.h"
29#include "dvbdev.h"
30#include "dvb_demux.h"
31#include "dvb_frontend.h"
32#include "dvb_net.h"
33
34#include "mantis_common.h"
35#include "mantis_reg.h"
36#include "mantis_uart.h"
37
38struct mantis_uart_params {
39 enum mantis_baud baud_rate;
40 enum mantis_parity parity;
41};
42
43static struct {
44 char string[7];
45} rates[5] = {
46 { "9600" },
47 { "19200" },
48 { "38400" },
49 { "57600" },
50 { "115200" }
51};
52
53static struct {
54 char string[5];
55} parity[3] = {
56 { "NONE" },
57 { "ODD" },
58 { "EVEN" }
59};
60
61#define UART_MAX_BUF 16
62
63int mantis_uart_read(struct mantis_pci *mantis, u8 *data)
64{
65 struct mantis_hwconfig *config = mantis->hwconfig;
66 u32 stat = 0, i;
67
68 /* get data */
69 for (i = 0; i < (config->bytes + 1); i++) {
70
71 stat = mmread(MANTIS_UART_STAT);
72
73 if (stat & MANTIS_UART_RXFIFO_FULL) {
74 dprintk(MANTIS_ERROR, 1, "RX Fifo FULL");
75 }
76 data[i] = mmread(MANTIS_UART_RXD) & 0x3f;
77
78 dprintk(MANTIS_DEBUG, 1, "Reading ... <%02x>", data[i] & 0x3f);
79
80 if (data[i] & (1 << 7)) {
81 dprintk(MANTIS_ERROR, 1, "UART framing error");
82 return -EINVAL;
83 }
84 if (data[i] & (1 << 6)) {
85 dprintk(MANTIS_ERROR, 1, "UART parity error");
86 return -EINVAL;
87 }
88 }
89
90 return 0;
91}
92
93static void mantis_uart_work(struct work_struct *work)
94{
95 struct mantis_pci *mantis = container_of(work, struct mantis_pci, uart_work);
96 struct mantis_hwconfig *config = mantis->hwconfig;
97 u8 buf[16];
98 int i;
99
100 mantis_uart_read(mantis, buf);
101
102 for (i = 0; i < (config->bytes + 1); i++)
103 dprintk(MANTIS_INFO, 1, "UART BUF:%d <%02x> ", i, buf[i]);
104
105 dprintk(MANTIS_DEBUG, 0, "\n");
106}
107
108static int mantis_uart_setup(struct mantis_pci *mantis,
109 struct mantis_uart_params *params)
110{
111 u32 reg;
112
113 mmwrite((mmread(MANTIS_UART_CTL) | (params->parity & 0x3)), MANTIS_UART_CTL);
114
115 reg = mmread(MANTIS_UART_BAUD);
116
117 switch (params->baud_rate) {
118 case MANTIS_BAUD_9600:
119 reg |= 0xd8;
120 break;
121 case MANTIS_BAUD_19200:
122 reg |= 0x6c;
123 break;
124 case MANTIS_BAUD_38400:
125 reg |= 0x36;
126 break;
127 case MANTIS_BAUD_57600:
128 reg |= 0x23;
129 break;
130 case MANTIS_BAUD_115200:
131 reg |= 0x11;
132 break;
133 default:
134 return -EINVAL;
135 }
136
137 mmwrite(reg, MANTIS_UART_BAUD);
138
139 return 0;
140}
141
142int mantis_uart_init(struct mantis_pci *mantis)
143{
144 struct mantis_hwconfig *config = mantis->hwconfig;
145 struct mantis_uart_params params;
146
147 /* default parity: */
148 params.baud_rate = config->baud_rate;
149 params.parity = config->parity;
150 dprintk(MANTIS_INFO, 1, "Initializing UART @ %sbps parity:%s",
151 rates[params.baud_rate].string,
152 parity[params.parity].string);
153
154 init_waitqueue_head(&mantis->uart_wq);
155 spin_lock_init(&mantis->uart_lock);
156
157 INIT_WORK(&mantis->uart_work, mantis_uart_work);
158
159 /* disable interrupt */
160 mmwrite(mmread(MANTIS_UART_CTL) & 0xffef, MANTIS_UART_CTL);
161
162 mantis_uart_setup(mantis, &params);
163
164 /* default 1 byte */
165 mmwrite((mmread(MANTIS_UART_BAUD) | (config->bytes << 8)), MANTIS_UART_BAUD);
166
167 /* flush buffer */
168 mmwrite((mmread(MANTIS_UART_CTL) | MANTIS_UART_RXFLUSH), MANTIS_UART_CTL);
169
170 /* enable interrupt */
171 mmwrite(mmread(MANTIS_INT_MASK) | 0x800, MANTIS_INT_MASK);
172 mmwrite(mmread(MANTIS_UART_CTL) | MANTIS_UART_RXINT, MANTIS_UART_CTL);
173
174 schedule_work(&mantis->uart_work);
175 dprintk(MANTIS_DEBUG, 1, "UART succesfully initialized");
176
177 return 0;
178}
179EXPORT_SYMBOL_GPL(mantis_uart_init);
180
181void mantis_uart_exit(struct mantis_pci *mantis)
182{
183 /* disable interrupt */
184 mmwrite(mmread(MANTIS_UART_CTL) & 0xffef, MANTIS_UART_CTL);
185}
186EXPORT_SYMBOL_GPL(mantis_uart_exit);
diff --git a/drivers/media/dvb/mantis/mantis_uart.h b/drivers/media/dvb/mantis/mantis_uart.h
new file mode 100644
index 000000000000..ffb62a0a5a13
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_uart.h
@@ -0,0 +1,58 @@
1/*
2 Mantis PCI bridge driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MANTIS_UART_H
22#define __MANTIS_UART_H
23
24#define MANTIS_UART_CTL 0xe0
25#define MANTIS_UART_RXINT (1 << 4)
26#define MANTIS_UART_RXFLUSH (1 << 2)
27
28#define MANTIS_UART_RXD 0xe8
29#define MANTIS_UART_BAUD 0xec
30
31#define MANTIS_UART_STAT 0xf0
32#define MANTIS_UART_RXFIFO_DATA (1 << 7)
33#define MANTIS_UART_RXFIFO_EMPTY (1 << 6)
34#define MANTIS_UART_RXFIFO_FULL (1 << 3)
35#define MANTIS_UART_FRAME_ERR (1 << 2)
36#define MANTIS_UART_PARITY_ERR (1 << 1)
37#define MANTIS_UART_RXTHRESH_INT (1 << 0)
38
39enum mantis_baud {
40 MANTIS_BAUD_9600 = 0,
41 MANTIS_BAUD_19200,
42 MANTIS_BAUD_38400,
43 MANTIS_BAUD_57600,
44 MANTIS_BAUD_115200
45};
46
47enum mantis_parity {
48 MANTIS_PARITY_NONE = 0,
49 MANTIS_PARITY_EVEN,
50 MANTIS_PARITY_ODD,
51};
52
53struct mantis_pci;
54
55extern int mantis_uart_init(struct mantis_pci *mantis);
56extern void mantis_uart_exit(struct mantis_pci *mantis);
57
58#endif /* __MANTIS_UART_H */
diff --git a/drivers/media/dvb/mantis/mantis_vp1033.c b/drivers/media/dvb/mantis/mantis_vp1033.c
new file mode 100644
index 000000000000..4a723bda0031
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_vp1033.c
@@ -0,0 +1,212 @@
1/*
2 Mantis VP-1033 driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include <linux/signal.h>
22#include <linux/sched.h>
23#include <linux/interrupt.h>
24
25#include "dmxdev.h"
26#include "dvbdev.h"
27#include "dvb_demux.h"
28#include "dvb_frontend.h"
29#include "dvb_net.h"
30
31#include "stv0299.h"
32#include "mantis_common.h"
33#include "mantis_ioc.h"
34#include "mantis_dvb.h"
35#include "mantis_vp1033.h"
36#include "mantis_reg.h"
37
38u8 lgtdqcs001f_inittab[] = {
39 0x01, 0x15,
40 0x02, 0x00,
41 0x03, 0x00,
42 0x04, 0x2a,
43 0x05, 0x85,
44 0x06, 0x02,
45 0x07, 0x00,
46 0x08, 0x00,
47 0x0c, 0x01,
48 0x0d, 0x81,
49 0x0e, 0x44,
50 0x0f, 0x94,
51 0x10, 0x3c,
52 0x11, 0x84,
53 0x12, 0xb9,
54 0x13, 0xb5,
55 0x14, 0x4f,
56 0x15, 0xc9,
57 0x16, 0x80,
58 0x17, 0x36,
59 0x18, 0xfb,
60 0x19, 0xcf,
61 0x1a, 0xbc,
62 0x1c, 0x2b,
63 0x1d, 0x27,
64 0x1e, 0x00,
65 0x1f, 0x0b,
66 0x20, 0xa1,
67 0x21, 0x60,
68 0x22, 0x00,
69 0x23, 0x00,
70 0x28, 0x00,
71 0x29, 0x28,
72 0x2a, 0x14,
73 0x2b, 0x0f,
74 0x2c, 0x09,
75 0x2d, 0x05,
76 0x31, 0x1f,
77 0x32, 0x19,
78 0x33, 0xfc,
79 0x34, 0x13,
80 0xff, 0xff,
81};
82
83#define MANTIS_MODEL_NAME "VP-1033"
84#define MANTIS_DEV_TYPE "DVB-S/DSS"
85
86int lgtdqcs001f_tuner_set(struct dvb_frontend *fe,
87 struct dvb_frontend_parameters *params)
88{
89 struct mantis_pci *mantis = fe->dvb->priv;
90 struct i2c_adapter *adapter = &mantis->adapter;
91
92 u8 buf[4];
93 u32 div;
94
95
96 struct i2c_msg msg = {.addr = 0x61, .flags = 0, .buf = buf, .len = sizeof(buf)};
97
98 div = params->frequency / 250;
99
100 buf[0] = (div >> 8) & 0x7f;
101 buf[1] = div & 0xff;
102 buf[2] = 0x83;
103 buf[3] = 0xc0;
104
105 if (params->frequency < 1531000)
106 buf[3] |= 0x04;
107 else
108 buf[3] &= ~0x04;
109 if (i2c_transfer(adapter, &msg, 1) < 0) {
110 dprintk(MANTIS_ERROR, 1, "Write: I2C Transfer failed");
111 return -EIO;
112 }
113 msleep_interruptible(100);
114
115 return 0;
116}
117
118int lgtdqcs001f_set_symbol_rate(struct dvb_frontend *fe,
119 u32 srate, u32 ratio)
120{
121 u8 aclk = 0;
122 u8 bclk = 0;
123
124 if (srate < 1500000) {
125 aclk = 0xb7;
126 bclk = 0x47;
127 } else if (srate < 3000000) {
128 aclk = 0xb7;
129 bclk = 0x4b;
130 } else if (srate < 7000000) {
131 aclk = 0xb7;
132 bclk = 0x4f;
133 } else if (srate < 14000000) {
134 aclk = 0xb7;
135 bclk = 0x53;
136 } else if (srate < 30000000) {
137 aclk = 0xb6;
138 bclk = 0x53;
139 } else if (srate < 45000000) {
140 aclk = 0xb4;
141 bclk = 0x51;
142 }
143 stv0299_writereg(fe, 0x13, aclk);
144 stv0299_writereg(fe, 0x14, bclk);
145
146 stv0299_writereg(fe, 0x1f, (ratio >> 16) & 0xff);
147 stv0299_writereg(fe, 0x20, (ratio >> 8) & 0xff);
148 stv0299_writereg(fe, 0x21, ratio & 0xf0);
149
150 return 0;
151}
152
153struct stv0299_config lgtdqcs001f_config = {
154 .demod_address = 0x68,
155 .inittab = lgtdqcs001f_inittab,
156 .mclk = 88000000UL,
157 .invert = 0,
158 .skip_reinit = 0,
159 .volt13_op0_op1 = STV0299_VOLT13_OP0,
160 .min_delay_ms = 100,
161 .set_symbol_rate = lgtdqcs001f_set_symbol_rate,
162};
163
164static int vp1033_frontend_init(struct mantis_pci *mantis, struct dvb_frontend *fe)
165{
166 struct i2c_adapter *adapter = &mantis->adapter;
167
168 int err = 0;
169
170 err = mantis_frontend_power(mantis, POWER_ON);
171 if (err == 0) {
172 mantis_frontend_soft_reset(mantis);
173 msleep(250);
174
175 dprintk(MANTIS_ERROR, 1, "Probing for STV0299 (DVB-S)");
176 fe = stv0299_attach(&lgtdqcs001f_config, adapter);
177
178 if (fe) {
179 fe->ops.tuner_ops.set_params = lgtdqcs001f_tuner_set;
180 dprintk(MANTIS_ERROR, 1, "found STV0299 DVB-S frontend @ 0x%02x",
181 lgtdqcs001f_config.demod_address);
182
183 dprintk(MANTIS_ERROR, 1, "Mantis DVB-S STV0299 frontend attach success");
184 } else {
185 return -1;
186 }
187 } else {
188 dprintk(MANTIS_ERROR, 1, "Frontend on <%s> POWER ON failed! <%d>",
189 adapter->name,
190 err);
191
192 return -EIO;
193 }
194 mantis->fe = fe;
195 dprintk(MANTIS_ERROR, 1, "Done!");
196
197 return 0;
198}
199
200struct mantis_hwconfig vp1033_config = {
201 .model_name = MANTIS_MODEL_NAME,
202 .dev_type = MANTIS_DEV_TYPE,
203 .ts_size = MANTIS_TS_204,
204
205 .baud_rate = MANTIS_BAUD_9600,
206 .parity = MANTIS_PARITY_NONE,
207 .bytes = 0,
208
209 .frontend_init = vp1033_frontend_init,
210 .power = GPIF_A12,
211 .reset = GPIF_A13,
212};
diff --git a/drivers/media/dvb/mantis/mantis_vp1033.h b/drivers/media/dvb/mantis/mantis_vp1033.h
new file mode 100644
index 000000000000..7daaa1bf127d
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_vp1033.h
@@ -0,0 +1,30 @@
1/*
2 Mantis VP-1033 driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MANTIS_VP1033_H
22#define __MANTIS_VP1033_H
23
24#include "mantis_common.h"
25
26#define MANTIS_VP_1033_DVB_S 0x0016
27
28extern struct mantis_hwconfig vp1033_config;
29
30#endif /* __MANTIS_VP1033_H */
diff --git a/drivers/media/dvb/mantis/mantis_vp1034.c b/drivers/media/dvb/mantis/mantis_vp1034.c
new file mode 100644
index 000000000000..8e6ae558ee57
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_vp1034.c
@@ -0,0 +1,119 @@
1/*
2 Mantis VP-1034 driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include <linux/signal.h>
22#include <linux/sched.h>
23#include <linux/interrupt.h>
24
25#include "dmxdev.h"
26#include "dvbdev.h"
27#include "dvb_demux.h"
28#include "dvb_frontend.h"
29#include "dvb_net.h"
30
31#include "mb86a16.h"
32#include "mantis_common.h"
33#include "mantis_ioc.h"
34#include "mantis_dvb.h"
35#include "mantis_vp1034.h"
36#include "mantis_reg.h"
37
38struct mb86a16_config vp1034_mb86a16_config = {
39 .demod_address = 0x08,
40 .set_voltage = vp1034_set_voltage,
41};
42
43#define MANTIS_MODEL_NAME "VP-1034"
44#define MANTIS_DEV_TYPE "DVB-S/DSS"
45
46int vp1034_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
47{
48 struct mantis_pci *mantis = fe->dvb->priv;
49
50 switch (voltage) {
51 case SEC_VOLTAGE_13:
52 dprintk(MANTIS_ERROR, 1, "Polarization=[13V]");
53 gpio_set_bits(mantis, 13, 1);
54 gpio_set_bits(mantis, 14, 0);
55 break;
56 case SEC_VOLTAGE_18:
57 dprintk(MANTIS_ERROR, 1, "Polarization=[18V]");
58 gpio_set_bits(mantis, 13, 1);
59 gpio_set_bits(mantis, 14, 1);
60 break;
61 case SEC_VOLTAGE_OFF:
62 dprintk(MANTIS_ERROR, 1, "Frontend (dummy) POWERDOWN");
63 break;
64 default:
65 dprintk(MANTIS_ERROR, 1, "Invalid = (%d)", (u32) voltage);
66 return -EINVAL;
67 }
68 mmwrite(0x00, MANTIS_GPIF_DOUT);
69
70 return 0;
71}
72
73static int vp1034_frontend_init(struct mantis_pci *mantis, struct dvb_frontend *fe)
74{
75 struct i2c_adapter *adapter = &mantis->adapter;
76
77 int err = 0;
78
79 err = mantis_frontend_power(mantis, POWER_ON);
80 if (err == 0) {
81 mantis_frontend_soft_reset(mantis);
82 msleep(250);
83
84 dprintk(MANTIS_ERROR, 1, "Probing for MB86A16 (DVB-S/DSS)");
85 fe = mb86a16_attach(&vp1034_mb86a16_config, adapter);
86 if (fe) {
87 dprintk(MANTIS_ERROR, 1,
88 "found MB86A16 DVB-S/DSS frontend @0x%02x",
89 vp1034_mb86a16_config.demod_address);
90
91 } else {
92 return -1;
93 }
94 } else {
95 dprintk(MANTIS_ERROR, 1, "Frontend on <%s> POWER ON failed! <%d>",
96 adapter->name,
97 err);
98
99 return -EIO;
100 }
101 mantis->fe = fe;
102 dprintk(MANTIS_ERROR, 1, "Done!");
103
104 return 0;
105}
106
107struct mantis_hwconfig vp1034_config = {
108 .model_name = MANTIS_MODEL_NAME,
109 .dev_type = MANTIS_DEV_TYPE,
110 .ts_size = MANTIS_TS_204,
111
112 .baud_rate = MANTIS_BAUD_9600,
113 .parity = MANTIS_PARITY_NONE,
114 .bytes = 0,
115
116 .frontend_init = vp1034_frontend_init,
117 .power = GPIF_A12,
118 .reset = GPIF_A13,
119};
diff --git a/drivers/media/dvb/mantis/mantis_vp1034.h b/drivers/media/dvb/mantis/mantis_vp1034.h
new file mode 100644
index 000000000000..323f38ef8e3d
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_vp1034.h
@@ -0,0 +1,33 @@
1/*
2 Mantis VP-1034 driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MANTIS_VP1034_H
22#define __MANTIS_VP1034_H
23
24#include "dvb_frontend.h"
25#include "mantis_common.h"
26
27
28#define MANTIS_VP_1034_DVB_S 0x0014
29
30extern struct mantis_hwconfig vp1034_config;
31extern int vp1034_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage);
32
33#endif /* __MANTIS_VP1034_H */
diff --git a/drivers/media/dvb/mantis/mantis_vp1041.c b/drivers/media/dvb/mantis/mantis_vp1041.c
new file mode 100644
index 000000000000..515346dd31d0
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_vp1041.c
@@ -0,0 +1,358 @@
1/*
2 Mantis VP-1041 driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include <linux/signal.h>
22#include <linux/sched.h>
23#include <linux/interrupt.h>
24
25#include "dmxdev.h"
26#include "dvbdev.h"
27#include "dvb_demux.h"
28#include "dvb_frontend.h"
29#include "dvb_net.h"
30
31#include "mantis_common.h"
32#include "mantis_ioc.h"
33#include "mantis_dvb.h"
34#include "mantis_vp1041.h"
35#include "stb0899_reg.h"
36#include "stb0899_drv.h"
37#include "stb0899_cfg.h"
38#include "stb6100_cfg.h"
39#include "stb6100.h"
40#include "lnbp21.h"
41
42#define MANTIS_MODEL_NAME "VP-1041"
43#define MANTIS_DEV_TYPE "DSS/DVB-S/DVB-S2"
44
45static const struct stb0899_s1_reg vp1041_stb0899_s1_init_1[] = {
46
47 /* 0x0000000b, *//* SYSREG */
48 { STB0899_DEV_ID , 0x30 },
49 { STB0899_DISCNTRL1 , 0x32 },
50 { STB0899_DISCNTRL2 , 0x80 },
51 { STB0899_DISRX_ST0 , 0x04 },
52 { STB0899_DISRX_ST1 , 0x00 },
53 { STB0899_DISPARITY , 0x00 },
54 { STB0899_DISFIFO , 0x00 },
55 { STB0899_DISSTATUS , 0x20 },
56 { STB0899_DISF22 , 0x99 },
57 { STB0899_DISF22RX , 0xa8 },
58 /* SYSREG ? */
59 { STB0899_ACRPRESC , 0x11 },
60 { STB0899_ACRDIV1 , 0x0a },
61 { STB0899_ACRDIV2 , 0x05 },
62 { STB0899_DACR1 , 0x00 },
63 { STB0899_DACR2 , 0x00 },
64 { STB0899_OUTCFG , 0x00 },
65 { STB0899_MODECFG , 0x00 },
66 { STB0899_IRQSTATUS_3 , 0xfe },
67 { STB0899_IRQSTATUS_2 , 0x03 },
68 { STB0899_IRQSTATUS_1 , 0x7c },
69 { STB0899_IRQSTATUS_0 , 0xf4 },
70 { STB0899_IRQMSK_3 , 0xf3 },
71 { STB0899_IRQMSK_2 , 0xfc },
72 { STB0899_IRQMSK_1 , 0xff },
73 { STB0899_IRQMSK_0 , 0xff },
74 { STB0899_IRQCFG , 0x00 },
75 { STB0899_I2CCFG , 0x88 },
76 { STB0899_I2CRPT , 0x58 },
77 { STB0899_IOPVALUE5 , 0x00 },
78 { STB0899_IOPVALUE4 , 0x33 },
79 { STB0899_IOPVALUE3 , 0x6d },
80 { STB0899_IOPVALUE2 , 0x90 },
81 { STB0899_IOPVALUE1 , 0x60 },
82 { STB0899_IOPVALUE0 , 0x00 },
83 { STB0899_GPIO00CFG , 0x82 },
84 { STB0899_GPIO01CFG , 0x82 },
85 { STB0899_GPIO02CFG , 0x82 },
86 { STB0899_GPIO03CFG , 0x82 },
87 { STB0899_GPIO04CFG , 0x82 },
88 { STB0899_GPIO05CFG , 0x82 },
89 { STB0899_GPIO06CFG , 0x82 },
90 { STB0899_GPIO07CFG , 0x82 },
91 { STB0899_GPIO08CFG , 0x82 },
92 { STB0899_GPIO09CFG , 0x82 },
93 { STB0899_GPIO10CFG , 0x82 },
94 { STB0899_GPIO11CFG , 0x82 },
95 { STB0899_GPIO12CFG , 0x82 },
96 { STB0899_GPIO13CFG , 0x82 },
97 { STB0899_GPIO14CFG , 0x82 },
98 { STB0899_GPIO15CFG , 0x82 },
99 { STB0899_GPIO16CFG , 0x82 },
100 { STB0899_GPIO17CFG , 0x82 },
101 { STB0899_GPIO18CFG , 0x82 },
102 { STB0899_GPIO19CFG , 0x82 },
103 { STB0899_GPIO20CFG , 0x82 },
104 { STB0899_SDATCFG , 0xb8 },
105 { STB0899_SCLTCFG , 0xba },
106 { STB0899_AGCRFCFG , 0x1c }, /* 0x11 */
107 { STB0899_GPIO22 , 0x82 }, /* AGCBB2CFG */
108 { STB0899_GPIO21 , 0x91 }, /* AGCBB1CFG */
109 { STB0899_DIRCLKCFG , 0x82 },
110 { STB0899_CLKOUT27CFG , 0x7e },
111 { STB0899_STDBYCFG , 0x82 },
112 { STB0899_CS0CFG , 0x82 },
113 { STB0899_CS1CFG , 0x82 },
114 { STB0899_DISEQCOCFG , 0x20 },
115 { STB0899_GPIO32CFG , 0x82 },
116 { STB0899_GPIO33CFG , 0x82 },
117 { STB0899_GPIO34CFG , 0x82 },
118 { STB0899_GPIO35CFG , 0x82 },
119 { STB0899_GPIO36CFG , 0x82 },
120 { STB0899_GPIO37CFG , 0x82 },
121 { STB0899_GPIO38CFG , 0x82 },
122 { STB0899_GPIO39CFG , 0x82 },
123 { STB0899_NCOARSE , 0x17 }, /* 0x15 = 27 Mhz Clock, F/3 = 198MHz, F/6 = 99MHz */
124 { STB0899_SYNTCTRL , 0x02 }, /* 0x00 = CLK from CLKI, 0x02 = CLK from XTALI */
125 { STB0899_FILTCTRL , 0x00 },
126 { STB0899_SYSCTRL , 0x01 },
127 { STB0899_STOPCLK1 , 0x20 },
128 { STB0899_STOPCLK2 , 0x00 },
129 { STB0899_INTBUFSTATUS , 0x00 },
130 { STB0899_INTBUFCTRL , 0x0a },
131 { 0xffff , 0xff },
132};
133
134static const struct stb0899_s1_reg vp1041_stb0899_s1_init_3[] = {
135 { STB0899_DEMOD , 0x00 },
136 { STB0899_RCOMPC , 0xc9 },
137 { STB0899_AGC1CN , 0x01 },
138 { STB0899_AGC1REF , 0x10 },
139 { STB0899_RTC , 0x23 },
140 { STB0899_TMGCFG , 0x4e },
141 { STB0899_AGC2REF , 0x34 },
142 { STB0899_TLSR , 0x84 },
143 { STB0899_CFD , 0xf7 },
144 { STB0899_ACLC , 0x87 },
145 { STB0899_BCLC , 0x94 },
146 { STB0899_EQON , 0x41 },
147 { STB0899_LDT , 0xf1 },
148 { STB0899_LDT2 , 0xe3 },
149 { STB0899_EQUALREF , 0xb4 },
150 { STB0899_TMGRAMP , 0x10 },
151 { STB0899_TMGTHD , 0x30 },
152 { STB0899_IDCCOMP , 0xfd },
153 { STB0899_QDCCOMP , 0xff },
154 { STB0899_POWERI , 0x0c },
155 { STB0899_POWERQ , 0x0f },
156 { STB0899_RCOMP , 0x6c },
157 { STB0899_AGCIQIN , 0x80 },
158 { STB0899_AGC2I1 , 0x06 },
159 { STB0899_AGC2I2 , 0x00 },
160 { STB0899_TLIR , 0x30 },
161 { STB0899_RTF , 0x7f },
162 { STB0899_DSTATUS , 0x00 },
163 { STB0899_LDI , 0xbc },
164 { STB0899_CFRM , 0xea },
165 { STB0899_CFRL , 0x31 },
166 { STB0899_NIRM , 0x2b },
167 { STB0899_NIRL , 0x80 },
168 { STB0899_ISYMB , 0x1d },
169 { STB0899_QSYMB , 0xa6 },
170 { STB0899_SFRH , 0x2f },
171 { STB0899_SFRM , 0x68 },
172 { STB0899_SFRL , 0x40 },
173 { STB0899_SFRUPH , 0x2f },
174 { STB0899_SFRUPM , 0x68 },
175 { STB0899_SFRUPL , 0x40 },
176 { STB0899_EQUAI1 , 0x02 },
177 { STB0899_EQUAQ1 , 0xff },
178 { STB0899_EQUAI2 , 0x04 },
179 { STB0899_EQUAQ2 , 0x05 },
180 { STB0899_EQUAI3 , 0x02 },
181 { STB0899_EQUAQ3 , 0xfd },
182 { STB0899_EQUAI4 , 0x03 },
183 { STB0899_EQUAQ4 , 0x07 },
184 { STB0899_EQUAI5 , 0x08 },
185 { STB0899_EQUAQ5 , 0xf5 },
186 { STB0899_DSTATUS2 , 0x00 },
187 { STB0899_VSTATUS , 0x00 },
188 { STB0899_VERROR , 0x86 },
189 { STB0899_IQSWAP , 0x2a },
190 { STB0899_ECNT1M , 0x00 },
191 { STB0899_ECNT1L , 0x00 },
192 { STB0899_ECNT2M , 0x00 },
193 { STB0899_ECNT2L , 0x00 },
194 { STB0899_ECNT3M , 0x0a },
195 { STB0899_ECNT3L , 0xad },
196 { STB0899_FECAUTO1 , 0x06 },
197 { STB0899_FECM , 0x01 },
198 { STB0899_VTH12 , 0xb0 },
199 { STB0899_VTH23 , 0x7a },
200 { STB0899_VTH34 , 0x58 },
201 { STB0899_VTH56 , 0x38 },
202 { STB0899_VTH67 , 0x34 },
203 { STB0899_VTH78 , 0x24 },
204 { STB0899_PRVIT , 0xff },
205 { STB0899_VITSYNC , 0x19 },
206 { STB0899_RSULC , 0xb1 }, /* DVB = 0xb1, DSS = 0xa1 */
207 { STB0899_TSULC , 0x42 },
208 { STB0899_RSLLC , 0x41 },
209 { STB0899_TSLPL , 0x12 },
210 { STB0899_TSCFGH , 0x0c },
211 { STB0899_TSCFGM , 0x00 },
212 { STB0899_TSCFGL , 0x00 },
213 { STB0899_TSOUT , 0x69 }, /* 0x0d for CAM */
214 { STB0899_RSSYNCDEL , 0x00 },
215 { STB0899_TSINHDELH , 0x02 },
216 { STB0899_TSINHDELM , 0x00 },
217 { STB0899_TSINHDELL , 0x00 },
218 { STB0899_TSLLSTKM , 0x1b },
219 { STB0899_TSLLSTKL , 0xb3 },
220 { STB0899_TSULSTKM , 0x00 },
221 { STB0899_TSULSTKL , 0x00 },
222 { STB0899_PCKLENUL , 0xbc },
223 { STB0899_PCKLENLL , 0xcc },
224 { STB0899_RSPCKLEN , 0xbd },
225 { STB0899_TSSTATUS , 0x90 },
226 { STB0899_ERRCTRL1 , 0xb6 },
227 { STB0899_ERRCTRL2 , 0x95 },
228 { STB0899_ERRCTRL3 , 0x8d },
229 { STB0899_DMONMSK1 , 0x27 },
230 { STB0899_DMONMSK0 , 0x03 },
231 { STB0899_DEMAPVIT , 0x5c },
232 { STB0899_PLPARM , 0x19 },
233 { STB0899_PDELCTRL , 0x48 },
234 { STB0899_PDELCTRL2 , 0x00 },
235 { STB0899_BBHCTRL1 , 0x00 },
236 { STB0899_BBHCTRL2 , 0x00 },
237 { STB0899_HYSTTHRESH , 0x77 },
238 { STB0899_MATCSTM , 0x00 },
239 { STB0899_MATCSTL , 0x00 },
240 { STB0899_UPLCSTM , 0x00 },
241 { STB0899_UPLCSTL , 0x00 },
242 { STB0899_DFLCSTM , 0x00 },
243 { STB0899_DFLCSTL , 0x00 },
244 { STB0899_SYNCCST , 0x00 },
245 { STB0899_SYNCDCSTM , 0x00 },
246 { STB0899_SYNCDCSTL , 0x00 },
247 { STB0899_ISI_ENTRY , 0x00 },
248 { STB0899_ISI_BIT_EN , 0x00 },
249 { STB0899_MATSTRM , 0xf0 },
250 { STB0899_MATSTRL , 0x02 },
251 { STB0899_UPLSTRM , 0x45 },
252 { STB0899_UPLSTRL , 0x60 },
253 { STB0899_DFLSTRM , 0xe3 },
254 { STB0899_DFLSTRL , 0x00 },
255 { STB0899_SYNCSTR , 0x47 },
256 { STB0899_SYNCDSTRM , 0x05 },
257 { STB0899_SYNCDSTRL , 0x18 },
258 { STB0899_CFGPDELSTATUS1 , 0x19 },
259 { STB0899_CFGPDELSTATUS2 , 0x2b },
260 { STB0899_BBFERRORM , 0x00 },
261 { STB0899_BBFERRORL , 0x01 },
262 { STB0899_UPKTERRORM , 0x00 },
263 { STB0899_UPKTERRORL , 0x00 },
264 { 0xffff , 0xff },
265};
266
267struct stb0899_config vp1041_stb0899_config = {
268 .init_dev = vp1041_stb0899_s1_init_1,
269 .init_s2_demod = stb0899_s2_init_2,
270 .init_s1_demod = vp1041_stb0899_s1_init_3,
271 .init_s2_fec = stb0899_s2_init_4,
272 .init_tst = stb0899_s1_init_5,
273
274 .demod_address = 0x68, /* 0xd0 >> 1 */
275
276 .xtal_freq = 27000000,
277 .inversion = IQ_SWAP_ON, /* 1 */
278
279 .lo_clk = 76500000,
280 .hi_clk = 99000000,
281
282 .esno_ave = STB0899_DVBS2_ESNO_AVE,
283 .esno_quant = STB0899_DVBS2_ESNO_QUANT,
284 .avframes_coarse = STB0899_DVBS2_AVFRAMES_COARSE,
285 .avframes_fine = STB0899_DVBS2_AVFRAMES_FINE,
286 .miss_threshold = STB0899_DVBS2_MISS_THRESHOLD,
287 .uwp_threshold_acq = STB0899_DVBS2_UWP_THRESHOLD_ACQ,
288 .uwp_threshold_track = STB0899_DVBS2_UWP_THRESHOLD_TRACK,
289 .uwp_threshold_sof = STB0899_DVBS2_UWP_THRESHOLD_SOF,
290 .sof_search_timeout = STB0899_DVBS2_SOF_SEARCH_TIMEOUT,
291
292 .btr_nco_bits = STB0899_DVBS2_BTR_NCO_BITS,
293 .btr_gain_shift_offset = STB0899_DVBS2_BTR_GAIN_SHIFT_OFFSET,
294 .crl_nco_bits = STB0899_DVBS2_CRL_NCO_BITS,
295 .ldpc_max_iter = STB0899_DVBS2_LDPC_MAX_ITER,
296
297 .tuner_get_frequency = stb6100_get_frequency,
298 .tuner_set_frequency = stb6100_set_frequency,
299 .tuner_set_bandwidth = stb6100_set_bandwidth,
300 .tuner_get_bandwidth = stb6100_get_bandwidth,
301 .tuner_set_rfsiggain = NULL,
302};
303
304struct stb6100_config vp1041_stb6100_config = {
305 .tuner_address = 0x60,
306 .refclock = 27000000,
307};
308
309static int vp1041_frontend_init(struct mantis_pci *mantis, struct dvb_frontend *fe)
310{
311 struct i2c_adapter *adapter = &mantis->adapter;
312
313 int err = 0;
314
315 err = mantis_frontend_power(mantis, POWER_ON);
316 if (err == 0) {
317 mantis_frontend_soft_reset(mantis);
318 msleep(250);
319 mantis->fe = stb0899_attach(&vp1041_stb0899_config, adapter);
320 if (mantis->fe) {
321 dprintk(MANTIS_ERROR, 1,
322 "found STB0899 DVB-S/DVB-S2 frontend @0x%02x",
323 vp1041_stb0899_config.demod_address);
324
325 if (stb6100_attach(mantis->fe, &vp1041_stb6100_config, adapter)) {
326 if (!lnbp21_attach(mantis->fe, adapter, 0, 0))
327 dprintk(MANTIS_ERROR, 1, "No LNBP21 found!");
328 }
329 } else {
330 return -EREMOTEIO;
331 }
332 } else {
333 dprintk(MANTIS_ERROR, 1, "Frontend on <%s> POWER ON failed! <%d>",
334 adapter->name,
335 err);
336
337 return -EIO;
338 }
339
340
341 dprintk(MANTIS_ERROR, 1, "Done!");
342
343 return 0;
344}
345
346struct mantis_hwconfig vp1041_config = {
347 .model_name = MANTIS_MODEL_NAME,
348 .dev_type = MANTIS_DEV_TYPE,
349 .ts_size = MANTIS_TS_188,
350
351 .baud_rate = MANTIS_BAUD_9600,
352 .parity = MANTIS_PARITY_NONE,
353 .bytes = 0,
354
355 .frontend_init = vp1041_frontend_init,
356 .power = GPIF_A12,
357 .reset = GPIF_A13,
358};
diff --git a/drivers/media/dvb/mantis/mantis_vp1041.h b/drivers/media/dvb/mantis/mantis_vp1041.h
new file mode 100644
index 000000000000..1ae5b3de8081
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_vp1041.h
@@ -0,0 +1,33 @@
1/*
2 Mantis VP-1041 driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MANTIS_VP1041_H
22#define __MANTIS_VP1041_H
23
24#include "mantis_common.h"
25
26#define MANTIS_VP_1041_DVB_S2 0x0031
27#define SKYSTAR_HD2_10 0x0001
28#define SKYSTAR_HD2_20 0x0003
29#define CINERGY_S2_PCI_HD 0x1179
30
31extern struct mantis_hwconfig vp1041_config;
32
33#endif /* __MANTIS_VP1041_H */
diff --git a/drivers/media/dvb/mantis/mantis_vp2033.c b/drivers/media/dvb/mantis/mantis_vp2033.c
new file mode 100644
index 000000000000..10ce81790a8c
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_vp2033.c
@@ -0,0 +1,187 @@
1/*
2 Mantis VP-2033 driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include <linux/signal.h>
22#include <linux/sched.h>
23#include <linux/interrupt.h>
24
25#include "dmxdev.h"
26#include "dvbdev.h"
27#include "dvb_demux.h"
28#include "dvb_frontend.h"
29#include "dvb_net.h"
30
31#include "tda1002x.h"
32#include "mantis_common.h"
33#include "mantis_ioc.h"
34#include "mantis_dvb.h"
35#include "mantis_vp2033.h"
36
37#define MANTIS_MODEL_NAME "VP-2033"
38#define MANTIS_DEV_TYPE "DVB-C"
39
40struct tda1002x_config vp2033_tda1002x_cu1216_config = {
41 .demod_address = 0x18 >> 1,
42 .invert = 1,
43};
44
45struct tda10023_config vp2033_tda10023_cu1216_config = {
46 .demod_address = 0x18 >> 1,
47 .invert = 1,
48};
49
50static u8 read_pwm(struct mantis_pci *mantis)
51{
52 struct i2c_adapter *adapter = &mantis->adapter;
53
54 u8 b = 0xff;
55 u8 pwm;
56 struct i2c_msg msg[] = {
57 {.addr = 0x50, .flags = 0, .buf = &b, .len = 1},
58 {.addr = 0x50, .flags = I2C_M_RD, .buf = &pwm, .len = 1}
59 };
60
61 if ((i2c_transfer(adapter, msg, 2) != 2)
62 || (pwm == 0xff))
63 pwm = 0x48;
64
65 return pwm;
66}
67
68static int tda1002x_cu1216_tuner_set(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
69{
70 struct mantis_pci *mantis = fe->dvb->priv;
71 struct i2c_adapter *adapter = &mantis->adapter;
72
73 u8 buf[6];
74 struct i2c_msg msg = {.addr = 0x60, .flags = 0, .buf = buf, .len = sizeof(buf)};
75 int i;
76
77#define CU1216_IF 36125000
78#define TUNER_MUL 62500
79
80 u32 div = (params->frequency + CU1216_IF + TUNER_MUL / 2) / TUNER_MUL;
81
82 buf[0] = (div >> 8) & 0x7f;
83 buf[1] = div & 0xff;
84 buf[2] = 0xce;
85 buf[3] = (params->frequency < 150000000 ? 0x01 :
86 params->frequency < 445000000 ? 0x02 : 0x04);
87 buf[4] = 0xde;
88 buf[5] = 0x20;
89
90 if (fe->ops.i2c_gate_ctrl)
91 fe->ops.i2c_gate_ctrl(fe, 1);
92
93 if (i2c_transfer(adapter, &msg, 1) != 1)
94 return -EIO;
95
96 /* wait for the pll lock */
97 msg.flags = I2C_M_RD;
98 msg.len = 1;
99 for (i = 0; i < 20; i++) {
100 if (fe->ops.i2c_gate_ctrl)
101 fe->ops.i2c_gate_ctrl(fe, 1);
102
103 if (i2c_transfer(adapter, &msg, 1) == 1 && (buf[0] & 0x40))
104 break;
105
106 msleep(10);
107 }
108
109 /* switch the charge pump to the lower current */
110 msg.flags = 0;
111 msg.len = 2;
112 msg.buf = &buf[2];
113 buf[2] &= ~0x40;
114 if (fe->ops.i2c_gate_ctrl)
115 fe->ops.i2c_gate_ctrl(fe, 1);
116
117 if (i2c_transfer(adapter, &msg, 1) != 1)
118 return -EIO;
119
120 return 0;
121}
122
123static int vp2033_frontend_init(struct mantis_pci *mantis, struct dvb_frontend *fe)
124{
125 struct i2c_adapter *adapter = &mantis->adapter;
126
127 int err = 0;
128
129 err = mantis_frontend_power(mantis, POWER_ON);
130 if (err == 0) {
131 mantis_frontend_soft_reset(mantis);
132 msleep(250);
133
134 dprintk(MANTIS_ERROR, 1, "Probing for CU1216 (DVB-C)");
135 fe = tda10021_attach(&vp2033_tda1002x_cu1216_config,
136 adapter,
137 read_pwm(mantis));
138
139 if (fe) {
140 dprintk(MANTIS_ERROR, 1,
141 "found Philips CU1216 DVB-C frontend (TDA10021) @ 0x%02x",
142 vp2033_tda1002x_cu1216_config.demod_address);
143 } else {
144 fe = tda10023_attach(&vp2033_tda10023_cu1216_config,
145 adapter,
146 read_pwm(mantis));
147
148 if (fe) {
149 dprintk(MANTIS_ERROR, 1,
150 "found Philips CU1216 DVB-C frontend (TDA10023) @ 0x%02x",
151 vp2033_tda1002x_cu1216_config.demod_address);
152 }
153 }
154
155 if (fe) {
156 fe->ops.tuner_ops.set_params = tda1002x_cu1216_tuner_set;
157 dprintk(MANTIS_ERROR, 1, "Mantis DVB-C Philips CU1216 frontend attach success");
158 } else {
159 return -1;
160 }
161 } else {
162 dprintk(MANTIS_ERROR, 1, "Frontend on <%s> POWER ON failed! <%d>",
163 adapter->name,
164 err);
165
166 return -EIO;
167 }
168
169 mantis->fe = fe;
170 dprintk(MANTIS_DEBUG, 1, "Done!");
171
172 return 0;
173}
174
175struct mantis_hwconfig vp2033_config = {
176 .model_name = MANTIS_MODEL_NAME,
177 .dev_type = MANTIS_DEV_TYPE,
178 .ts_size = MANTIS_TS_204,
179
180 .baud_rate = MANTIS_BAUD_9600,
181 .parity = MANTIS_PARITY_NONE,
182 .bytes = 0,
183
184 .frontend_init = vp2033_frontend_init,
185 .power = GPIF_A12,
186 .reset = GPIF_A13,
187};
diff --git a/drivers/media/dvb/mantis/mantis_vp2033.h b/drivers/media/dvb/mantis/mantis_vp2033.h
new file mode 100644
index 000000000000..c55242b79d54
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_vp2033.h
@@ -0,0 +1,30 @@
1/*
2 Mantis VP-2033 driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MANTIS_VP2033_H
22#define __MANTIS_VP2033_H
23
24#include "mantis_common.h"
25
26#define MANTIS_VP_2033_DVB_C 0x0008
27
28extern struct mantis_hwconfig vp2033_config;
29
30#endif /* __MANTIS_VP2033_H */
diff --git a/drivers/media/dvb/mantis/mantis_vp2040.c b/drivers/media/dvb/mantis/mantis_vp2040.c
new file mode 100644
index 000000000000..a7ca233e800b
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_vp2040.c
@@ -0,0 +1,186 @@
1/*
2 Mantis VP-2040 driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include <linux/signal.h>
22#include <linux/sched.h>
23#include <linux/interrupt.h>
24
25#include "dmxdev.h"
26#include "dvbdev.h"
27#include "dvb_demux.h"
28#include "dvb_frontend.h"
29#include "dvb_net.h"
30
31#include "tda1002x.h"
32#include "mantis_common.h"
33#include "mantis_ioc.h"
34#include "mantis_dvb.h"
35#include "mantis_vp2040.h"
36
37#define MANTIS_MODEL_NAME "VP-2040"
38#define MANTIS_DEV_TYPE "DVB-C"
39
40struct tda1002x_config vp2040_tda1002x_cu1216_config = {
41 .demod_address = 0x18 >> 1,
42 .invert = 1,
43};
44
45struct tda10023_config vp2040_tda10023_cu1216_config = {
46 .demod_address = 0x18 >> 1,
47 .invert = 1,
48};
49
50static int tda1002x_cu1216_tuner_set(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
51{
52 struct mantis_pci *mantis = fe->dvb->priv;
53 struct i2c_adapter *adapter = &mantis->adapter;
54
55 u8 buf[6];
56 struct i2c_msg msg = {.addr = 0x60, .flags = 0, .buf = buf, .len = sizeof(buf)};
57 int i;
58
59#define CU1216_IF 36125000
60#define TUNER_MUL 62500
61
62 u32 div = (params->frequency + CU1216_IF + TUNER_MUL / 2) / TUNER_MUL;
63
64 buf[0] = (div >> 8) & 0x7f;
65 buf[1] = div & 0xff;
66 buf[2] = 0xce;
67 buf[3] = (params->frequency < 150000000 ? 0x01 :
68 params->frequency < 445000000 ? 0x02 : 0x04);
69 buf[4] = 0xde;
70 buf[5] = 0x20;
71
72 if (fe->ops.i2c_gate_ctrl)
73 fe->ops.i2c_gate_ctrl(fe, 1);
74
75 if (i2c_transfer(adapter, &msg, 1) != 1)
76 return -EIO;
77
78 /* wait for the pll lock */
79 msg.flags = I2C_M_RD;
80 msg.len = 1;
81 for (i = 0; i < 20; i++) {
82 if (fe->ops.i2c_gate_ctrl)
83 fe->ops.i2c_gate_ctrl(fe, 1);
84
85 if (i2c_transfer(adapter, &msg, 1) == 1 && (buf[0] & 0x40))
86 break;
87
88 msleep(10);
89 }
90
91 /* switch the charge pump to the lower current */
92 msg.flags = 0;
93 msg.len = 2;
94 msg.buf = &buf[2];
95 buf[2] &= ~0x40;
96 if (fe->ops.i2c_gate_ctrl)
97 fe->ops.i2c_gate_ctrl(fe, 1);
98
99 if (i2c_transfer(adapter, &msg, 1) != 1)
100 return -EIO;
101
102 return 0;
103}
104
105static u8 read_pwm(struct mantis_pci *mantis)
106{
107 struct i2c_adapter *adapter = &mantis->adapter;
108
109 u8 b = 0xff;
110 u8 pwm;
111 struct i2c_msg msg[] = {
112 {.addr = 0x50, .flags = 0, .buf = &b, .len = 1},
113 {.addr = 0x50, .flags = I2C_M_RD, .buf = &pwm, .len = 1}
114 };
115
116 if ((i2c_transfer(adapter, msg, 2) != 2)
117 || (pwm == 0xff))
118 pwm = 0x48;
119
120 return pwm;
121}
122
123static int vp2040_frontend_init(struct mantis_pci *mantis, struct dvb_frontend *fe)
124{
125 struct i2c_adapter *adapter = &mantis->adapter;
126
127 int err = 0;
128
129 err = mantis_frontend_power(mantis, POWER_ON);
130 if (err == 0) {
131 mantis_frontend_soft_reset(mantis);
132 msleep(250);
133
134 dprintk(MANTIS_ERROR, 1, "Probing for CU1216 (DVB-C)");
135 fe = tda10021_attach(&vp2040_tda1002x_cu1216_config,
136 adapter,
137 read_pwm(mantis));
138
139 if (fe) {
140 dprintk(MANTIS_ERROR, 1,
141 "found Philips CU1216 DVB-C frontend (TDA10021) @ 0x%02x",
142 vp2040_tda1002x_cu1216_config.demod_address);
143 } else {
144 fe = tda10023_attach(&vp2040_tda10023_cu1216_config,
145 adapter,
146 read_pwm(mantis));
147
148 if (fe) {
149 dprintk(MANTIS_ERROR, 1,
150 "found Philips CU1216 DVB-C frontend (TDA10023) @ 0x%02x",
151 vp2040_tda1002x_cu1216_config.demod_address);
152 }
153 }
154
155 if (fe) {
156 fe->ops.tuner_ops.set_params = tda1002x_cu1216_tuner_set;
157 dprintk(MANTIS_ERROR, 1, "Mantis DVB-C Philips CU1216 frontend attach success");
158 } else {
159 return -1;
160 }
161 } else {
162 dprintk(MANTIS_ERROR, 1, "Frontend on <%s> POWER ON failed! <%d>",
163 adapter->name,
164 err);
165
166 return -EIO;
167 }
168 mantis->fe = fe;
169 dprintk(MANTIS_DEBUG, 1, "Done!");
170
171 return 0;
172}
173
174struct mantis_hwconfig vp2040_config = {
175 .model_name = MANTIS_MODEL_NAME,
176 .dev_type = MANTIS_DEV_TYPE,
177 .ts_size = MANTIS_TS_204,
178
179 .baud_rate = MANTIS_BAUD_9600,
180 .parity = MANTIS_PARITY_NONE,
181 .bytes = 0,
182
183 .frontend_init = vp2040_frontend_init,
184 .power = GPIF_A12,
185 .reset = GPIF_A13,
186};
diff --git a/drivers/media/dvb/mantis/mantis_vp2040.h b/drivers/media/dvb/mantis/mantis_vp2040.h
new file mode 100644
index 000000000000..d125e219b685
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_vp2040.h
@@ -0,0 +1,32 @@
1/*
2 Mantis VP-2040 driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MANTIS_VP2040_H
22#define __MANTIS_VP2040_H
23
24#include "mantis_common.h"
25
26#define MANTIS_VP_2040_DVB_C 0x0043
27#define CINERGY_C 0x1178
28#define CABLESTAR_HD2 0x0002
29
30extern struct mantis_hwconfig vp2040_config;
31
32#endif /* __MANTIS_VP2040_H */
diff --git a/drivers/media/dvb/mantis/mantis_vp3028.c b/drivers/media/dvb/mantis/mantis_vp3028.c
new file mode 100644
index 000000000000..4155c838a18a
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_vp3028.c
@@ -0,0 +1,38 @@
1/*
2 Mantis VP-3028 driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include "mantis_common.h"
22#include "mantis_vp3028.h"
23
24struct zl10353_config mantis_vp3028_config = {
25 .demod_address = 0x0f,
26};
27
28#define MANTIS_MODEL_NAME "VP-3028"
29#define MANTIS_DEV_TYPE "DVB-T"
30
31struct mantis_hwconfig vp3028_mantis_config = {
32 .model_name = MANTIS_MODEL_NAME,
33 .dev_type = MANTIS_DEV_TYPE,
34 .ts_size = MANTIS_TS_188,
35 .baud_rate = MANTIS_BAUD_9600,
36 .parity = MANTIS_PARITY_NONE,
37 .bytes = 0,
38};
diff --git a/drivers/media/dvb/mantis/mantis_vp3028.h b/drivers/media/dvb/mantis/mantis_vp3028.h
new file mode 100644
index 000000000000..b07be6adc522
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_vp3028.h
@@ -0,0 +1,33 @@
1/*
2 Mantis VP-3028 driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MANTIS_VP3028_H
22#define __MANTIS_VP3028_H
23
24#include "dvb_frontend.h"
25#include "mantis_common.h"
26#include "zl10353.h"
27
28#define MANTIS_VP_3028_DVB_T 0x0028
29
30extern struct zl10353_config mantis_vp3028_config;
31extern struct mantis_hwconfig vp3028_mantis_config;
32
33#endif /* __MANTIS_VP3028_H */
diff --git a/drivers/media/dvb/mantis/mantis_vp3030.c b/drivers/media/dvb/mantis/mantis_vp3030.c
new file mode 100644
index 000000000000..1f4334214953
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_vp3030.c
@@ -0,0 +1,105 @@
1/*
2 Mantis VP-3030 driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include <linux/signal.h>
22#include <linux/sched.h>
23#include <linux/interrupt.h>
24
25#include "dmxdev.h"
26#include "dvbdev.h"
27#include "dvb_demux.h"
28#include "dvb_frontend.h"
29#include "dvb_net.h"
30
31#include "zl10353.h"
32#include "tda665x.h"
33#include "mantis_common.h"
34#include "mantis_ioc.h"
35#include "mantis_dvb.h"
36#include "mantis_vp3030.h"
37
38struct zl10353_config mantis_vp3030_config = {
39 .demod_address = 0x0f,
40};
41
42struct tda665x_config env57h12d5_config = {
43 .name = "ENV57H12D5 (ET-50DT)",
44 .addr = 0x60,
45 .frequency_min = 47000000,
46 .frequency_max = 862000000,
47 .frequency_offst = 3616667,
48 .ref_multiplier = 6, /* 1/6 MHz */
49 .ref_divider = 100000, /* 1/6 MHz */
50};
51
52#define MANTIS_MODEL_NAME "VP-3030"
53#define MANTIS_DEV_TYPE "DVB-T"
54
55
56static int vp3030_frontend_init(struct mantis_pci *mantis, struct dvb_frontend *fe)
57{
58 struct i2c_adapter *adapter = &mantis->adapter;
59 struct mantis_hwconfig *config = mantis->hwconfig;
60 int err = 0;
61
62 gpio_set_bits(mantis, config->reset, 0);
63 msleep(100);
64 err = mantis_frontend_power(mantis, POWER_ON);
65 msleep(100);
66 gpio_set_bits(mantis, config->reset, 1);
67
68 if (err == 0) {
69 msleep(250);
70 dprintk(MANTIS_ERROR, 1, "Probing for 10353 (DVB-T)");
71 fe = zl10353_attach(&mantis_vp3030_config, adapter);
72
73 if (!fe)
74 return -1;
75
76 tda665x_attach(fe, &env57h12d5_config, adapter);
77 } else {
78 dprintk(MANTIS_ERROR, 1, "Frontend on <%s> POWER ON failed! <%d>",
79 adapter->name,
80 err);
81
82 return -EIO;
83
84 }
85 mantis->fe = fe;
86 dprintk(MANTIS_ERROR, 1, "Done!");
87
88 return 0;
89}
90
91struct mantis_hwconfig vp3030_config = {
92 .model_name = MANTIS_MODEL_NAME,
93 .dev_type = MANTIS_DEV_TYPE,
94 .ts_size = MANTIS_TS_188,
95
96 .baud_rate = MANTIS_BAUD_9600,
97 .parity = MANTIS_PARITY_NONE,
98 .bytes = 0,
99
100 .frontend_init = vp3030_frontend_init,
101 .power = GPIF_A12,
102 .reset = GPIF_A13,
103
104 .i2c_mode = MANTIS_BYTE_MODE
105};
diff --git a/drivers/media/dvb/mantis/mantis_vp3030.h b/drivers/media/dvb/mantis/mantis_vp3030.h
new file mode 100644
index 000000000000..5f12c4266277
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_vp3030.h
@@ -0,0 +1,30 @@
1/*
2 Mantis VP-3030 driver
3
4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#ifndef __MANTIS_VP3030_H
22#define __MANTIS_VP3030_H
23
24#include "mantis_common.h"
25
26#define MANTIS_VP_3030_DVB_T 0x0024
27
28extern struct mantis_hwconfig vp3030_config;
29
30#endif /* __MANTIS_VP3030_H */
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c
index 3182a406bdd1..ae08b077fd04 100644
--- a/drivers/media/video/bt8xx/bttv-driver.c
+++ b/drivers/media/video/bt8xx/bttv-driver.c
@@ -4461,6 +4461,7 @@ static int __devinit bttv_probe(struct pci_dev *dev,
4461 request_modules(btv); 4461 request_modules(btv);
4462 } 4462 }
4463 4463
4464 init_bttv_i2c_ir(btv);
4464 bttv_input_init(btv); 4465 bttv_input_init(btv);
4465 4466
4466 /* everything is fine */ 4467 /* everything is fine */
diff --git a/drivers/media/video/bt8xx/bttv-i2c.c b/drivers/media/video/bt8xx/bttv-i2c.c
index 63aa31a041e8..407fa61e4cda 100644
--- a/drivers/media/video/bt8xx/bttv-i2c.c
+++ b/drivers/media/video/bt8xx/bttv-i2c.c
@@ -388,7 +388,12 @@ int __devinit init_bttv_i2c(struct bttv *btv)
388 if (0 == btv->i2c_rc && i2c_scan) 388 if (0 == btv->i2c_rc && i2c_scan)
389 do_i2c_scan(btv->c.v4l2_dev.name, &btv->i2c_client); 389 do_i2c_scan(btv->c.v4l2_dev.name, &btv->i2c_client);
390 390
391 /* Instantiate the IR receiver device, if present */ 391 return btv->i2c_rc;
392}
393
394/* Instantiate the I2C IR receiver device, if present */
395void __devinit init_bttv_i2c_ir(struct bttv *btv)
396{
392 if (0 == btv->i2c_rc) { 397 if (0 == btv->i2c_rc) {
393 struct i2c_board_info info; 398 struct i2c_board_info info;
394 /* The external IR receiver is at i2c address 0x34 (0x35 for 399 /* The external IR receiver is at i2c address 0x34 (0x35 for
@@ -408,7 +413,6 @@ int __devinit init_bttv_i2c(struct bttv *btv)
408 strlcpy(info.type, "ir_video", I2C_NAME_SIZE); 413 strlcpy(info.type, "ir_video", I2C_NAME_SIZE);
409 i2c_new_probed_device(&btv->c.i2c_adap, &info, addr_list); 414 i2c_new_probed_device(&btv->c.i2c_adap, &info, addr_list);
410 } 415 }
411 return btv->i2c_rc;
412} 416}
413 417
414int __devexit fini_bttv_i2c(struct bttv *btv) 418int __devexit fini_bttv_i2c(struct bttv *btv)
diff --git a/drivers/media/video/bt8xx/bttvp.h b/drivers/media/video/bt8xx/bttvp.h
index a1d0e9c9f286..6cccc2a17eee 100644
--- a/drivers/media/video/bt8xx/bttvp.h
+++ b/drivers/media/video/bt8xx/bttvp.h
@@ -279,6 +279,7 @@ extern unsigned int bttv_debug;
279extern unsigned int bttv_gpio; 279extern unsigned int bttv_gpio;
280extern void bttv_gpio_tracking(struct bttv *btv, char *comment); 280extern void bttv_gpio_tracking(struct bttv *btv, char *comment);
281extern int init_bttv_i2c(struct bttv *btv); 281extern int init_bttv_i2c(struct bttv *btv);
282extern void init_bttv_i2c_ir(struct bttv *btv);
282extern int fini_bttv_i2c(struct bttv *btv); 283extern int fini_bttv_i2c(struct bttv *btv);
283 284
284#define bttv_printk if (bttv_verbose) printk 285#define bttv_printk if (bttv_verbose) printk
diff --git a/drivers/media/video/gspca/gspca.c b/drivers/media/video/gspca/gspca.c
index e930a67d526b..bd6214d4ab3b 100644
--- a/drivers/media/video/gspca/gspca.c
+++ b/drivers/media/video/gspca/gspca.c
@@ -1815,6 +1815,8 @@ static int vidioc_qbuf(struct file *file, void *priv,
1815 /* put the buffer in the 'queued' queue */ 1815 /* put the buffer in the 'queued' queue */
1816 i = gspca_dev->fr_q; 1816 i = gspca_dev->fr_q;
1817 gspca_dev->fr_queue[i] = index; 1817 gspca_dev->fr_queue[i] = index;
1818 if (gspca_dev->fr_i == i)
1819 gspca_dev->cur_frame = frame;
1818 gspca_dev->fr_q = (i + 1) % gspca_dev->nframes; 1820 gspca_dev->fr_q = (i + 1) % gspca_dev->nframes;
1819 PDEBUG(D_FRAM, "qbuf q:%d i:%d o:%d", 1821 PDEBUG(D_FRAM, "qbuf q:%d i:%d o:%d",
1820 gspca_dev->fr_q, 1822 gspca_dev->fr_q,
diff --git a/drivers/media/video/gspca/m5602/m5602_s5k4aa.c b/drivers/media/video/gspca/m5602/m5602_s5k4aa.c
index aa2f3c7e2cb5..1b536f7d30cf 100644
--- a/drivers/media/video/gspca/m5602/m5602_s5k4aa.c
+++ b/drivers/media/video/gspca/m5602/m5602_s5k4aa.c
@@ -48,6 +48,12 @@ static
48 DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Xa 2528") 48 DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Xa 2528")
49 } 49 }
50 }, { 50 }, {
51 .ident = "Fujitsu-Siemens Amilo Xi 2428",
52 .matches = {
53 DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
54 DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Xi 2428")
55 }
56 }, {
51 .ident = "Fujitsu-Siemens Amilo Xi 2528", 57 .ident = "Fujitsu-Siemens Amilo Xi 2528",
52 .matches = { 58 .matches = {
53 DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), 59 DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
diff --git a/drivers/media/video/gspca/ov534.c b/drivers/media/video/gspca/ov534.c
index 4dbb882c83dc..0a6b8f07a69d 100644
--- a/drivers/media/video/gspca/ov534.c
+++ b/drivers/media/video/gspca/ov534.c
@@ -1533,7 +1533,7 @@ static void setexposure_96(struct gspca_dev *gspca_dev)
1533static void setsharpness_96(struct gspca_dev *gspca_dev) 1533static void setsharpness_96(struct gspca_dev *gspca_dev)
1534{ 1534{
1535 struct sd *sd = (struct sd *) gspca_dev; 1535 struct sd *sd = (struct sd *) gspca_dev;
1536 u8 val; 1536 s8 val;
1537 1537
1538 val = sd->sharpness; 1538 val = sd->sharpness;
1539 if (val < 0) { /* auto */ 1539 if (val < 0) { /* auto */
diff --git a/drivers/media/video/gspca/sn9c20x.c b/drivers/media/video/gspca/sn9c20x.c
index 4cff8035614f..0ca1c06652b1 100644
--- a/drivers/media/video/gspca/sn9c20x.c
+++ b/drivers/media/video/gspca/sn9c20x.c
@@ -2319,7 +2319,7 @@ static void do_autogain(struct gspca_dev *gspca_dev, u16 avg_lum)
2319 } 2319 }
2320 } 2320 }
2321 if (avg_lum > MAX_AVG_LUM) { 2321 if (avg_lum > MAX_AVG_LUM) {
2322 if (sd->gain - 1 >= 0) { 2322 if (sd->gain >= 1) {
2323 sd->gain--; 2323 sd->gain--;
2324 set_gain(gspca_dev); 2324 set_gain(gspca_dev);
2325 } 2325 }
diff --git a/drivers/media/video/gspca/stv06xx/stv06xx_vv6410.h b/drivers/media/video/gspca/stv06xx/stv06xx_vv6410.h
index 487d40555343..96c61926d372 100644
--- a/drivers/media/video/gspca/stv06xx/stv06xx_vv6410.h
+++ b/drivers/media/video/gspca/stv06xx/stv06xx_vv6410.h
@@ -228,6 +228,7 @@ static const struct stv_init stv_bridge_init[] = {
228 /* This reg is written twice. Some kind of reset? */ 228 /* This reg is written twice. Some kind of reset? */
229 {NULL, 0x1620, 0x80}, 229 {NULL, 0x1620, 0x80},
230 {NULL, 0x1620, 0x00}, 230 {NULL, 0x1620, 0x00},
231 {NULL, 0x1443, 0x00},
231 {NULL, 0x1423, 0x04}, 232 {NULL, 0x1423, 0x04},
232 {x1500, 0x1500, ARRAY_SIZE(x1500)}, 233 {x1500, 0x1500, ARRAY_SIZE(x1500)},
233 {x1536, 0x1536, ARRAY_SIZE(x1536)}, 234 {x1536, 0x1536, ARRAY_SIZE(x1536)},
diff --git a/drivers/media/video/gspca/sunplus.c b/drivers/media/video/gspca/sunplus.c
index 716df6b15fc5..306b7d75b4aa 100644
--- a/drivers/media/video/gspca/sunplus.c
+++ b/drivers/media/video/gspca/sunplus.c
@@ -709,7 +709,7 @@ static void spca504B_SetSizeType(struct gspca_dev *gspca_dev)
709 spca504B_PollingDataReady(gspca_dev); 709 spca504B_PollingDataReady(gspca_dev);
710 710
711 /* Init the cam width height with some values get on init ? */ 711 /* Init the cam width height with some values get on init ? */
712 reg_w_riv(gspca_dev, 0x31, 0, 0x04); 712 reg_w_riv(gspca_dev, 0x31, 0x0004, 0x00);
713 spca504B_WaitCmdStatus(gspca_dev); 713 spca504B_WaitCmdStatus(gspca_dev);
714 spca504B_PollingDataReady(gspca_dev); 714 spca504B_PollingDataReady(gspca_dev);
715 break; 715 break;
@@ -807,14 +807,14 @@ static void init_ctl_reg(struct gspca_dev *gspca_dev)
807 default: 807 default:
808/* case BRIDGE_SPCA533: */ 808/* case BRIDGE_SPCA533: */
809/* case BRIDGE_SPCA504B: */ 809/* case BRIDGE_SPCA504B: */
810 reg_w_riv(gspca_dev, 0, 0x00, 0x21ad); /* hue */ 810 reg_w_riv(gspca_dev, 0, 0x21ad, 0x00); /* hue */
811 reg_w_riv(gspca_dev, 0, 0x01, 0x21ac); /* sat/hue */ 811 reg_w_riv(gspca_dev, 0, 0x21ac, 0x01); /* sat/hue */
812 reg_w_riv(gspca_dev, 0, 0x00, 0x21a3); /* gamma */ 812 reg_w_riv(gspca_dev, 0, 0x21a3, 0x00); /* gamma */
813 break; 813 break;
814 case BRIDGE_SPCA536: 814 case BRIDGE_SPCA536:
815 reg_w_riv(gspca_dev, 0, 0x40, 0x20f5); 815 reg_w_riv(gspca_dev, 0, 0x20f5, 0x40);
816 reg_w_riv(gspca_dev, 0, 0x01, 0x20f4); 816 reg_w_riv(gspca_dev, 0, 0x20f4, 0x01);
817 reg_w_riv(gspca_dev, 0, 0x00, 0x2089); 817 reg_w_riv(gspca_dev, 0, 0x2089, 0x00);
818 break; 818 break;
819 } 819 }
820 if (pollreg) 820 if (pollreg)
@@ -887,11 +887,11 @@ static int sd_init(struct gspca_dev *gspca_dev)
887 switch (sd->bridge) { 887 switch (sd->bridge) {
888 case BRIDGE_SPCA504B: 888 case BRIDGE_SPCA504B:
889 reg_w_riv(gspca_dev, 0x1d, 0x00, 0); 889 reg_w_riv(gspca_dev, 0x1d, 0x00, 0);
890 reg_w_riv(gspca_dev, 0, 0x01, 0x2306); 890 reg_w_riv(gspca_dev, 0x00, 0x2306, 0x01);
891 reg_w_riv(gspca_dev, 0, 0x00, 0x0d04); 891 reg_w_riv(gspca_dev, 0x00, 0x0d04, 0x00);
892 reg_w_riv(gspca_dev, 0, 0x00, 0x2000); 892 reg_w_riv(gspca_dev, 0x00, 0x2000, 0x00);
893 reg_w_riv(gspca_dev, 0, 0x13, 0x2301); 893 reg_w_riv(gspca_dev, 0x00, 0x2301, 0x13);
894 reg_w_riv(gspca_dev, 0, 0x00, 0x2306); 894 reg_w_riv(gspca_dev, 0x00, 0x2306, 0x00);
895 /* fall thru */ 895 /* fall thru */
896 case BRIDGE_SPCA533: 896 case BRIDGE_SPCA533:
897 spca504B_PollingDataReady(gspca_dev); 897 spca504B_PollingDataReady(gspca_dev);
@@ -1000,7 +1000,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
1000 spca504B_WaitCmdStatus(gspca_dev); 1000 spca504B_WaitCmdStatus(gspca_dev);
1001 break; 1001 break;
1002 default: 1002 default:
1003 reg_w_riv(gspca_dev, 0x31, 0, 0x04); 1003 reg_w_riv(gspca_dev, 0x31, 0x0004, 0x00);
1004 spca504B_WaitCmdStatus(gspca_dev); 1004 spca504B_WaitCmdStatus(gspca_dev);
1005 spca504B_PollingDataReady(gspca_dev); 1005 spca504B_PollingDataReady(gspca_dev);
1006 break; 1006 break;
diff --git a/drivers/media/video/gspca/vc032x.c b/drivers/media/video/gspca/vc032x.c
index c090efcd8045..71921c878424 100644
--- a/drivers/media/video/gspca/vc032x.c
+++ b/drivers/media/video/gspca/vc032x.c
@@ -3009,6 +3009,10 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
3009 int l; 3009 int l;
3010 3010
3011 frame = gspca_get_i_frame(gspca_dev); 3011 frame = gspca_get_i_frame(gspca_dev);
3012 if (frame == NULL) {
3013 gspca_dev->last_packet_type = DISCARD_PACKET;
3014 return;
3015 }
3012 l = frame->data_end - frame->data; 3016 l = frame->data_end - frame->data;
3013 if (len > frame->v4l2_buf.length - l) 3017 if (len > frame->v4l2_buf.length - l)
3014 len = frame->v4l2_buf.length - l; 3018 len = frame->v4l2_buf.length - l;
diff --git a/drivers/media/video/mt9t112.c b/drivers/media/video/mt9t112.c
index fc4dd6045720..7438f8d775ba 100644
--- a/drivers/media/video/mt9t112.c
+++ b/drivers/media/video/mt9t112.c
@@ -514,7 +514,7 @@ static int mt9t112_init_pll(const struct i2c_client *client)
514 /* poll to verify out of standby. Must Poll this bit */ 514 /* poll to verify out of standby. Must Poll this bit */
515 for (i = 0; i < 100; i++) { 515 for (i = 0; i < 100; i++) {
516 mt9t112_reg_read(data, client, 0x0018); 516 mt9t112_reg_read(data, client, 0x0018);
517 if (0x4000 & data) 517 if (!(0x4000 & data))
518 break; 518 break;
519 519
520 mdelay(10); 520 mdelay(10);
diff --git a/drivers/media/video/mx1_camera.c b/drivers/media/video/mx1_camera.c
index 2ba14fb5b031..c167cc3de492 100644
--- a/drivers/media/video/mx1_camera.c
+++ b/drivers/media/video/mx1_camera.c
@@ -718,7 +718,7 @@ static int __init mx1_camera_probe(struct platform_device *pdev)
718 718
719 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 719 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
720 irq = platform_get_irq(pdev, 0); 720 irq = platform_get_irq(pdev, 0);
721 if (!res || !irq) { 721 if (!res || (int)irq <= 0) {
722 err = -ENODEV; 722 err = -ENODEV;
723 goto exit; 723 goto exit;
724 } 724 }
diff --git a/drivers/media/video/pwc/pwc-ctrl.c b/drivers/media/video/pwc/pwc-ctrl.c
index 50b415e07eda..f7f7e04cf485 100644
--- a/drivers/media/video/pwc/pwc-ctrl.c
+++ b/drivers/media/video/pwc/pwc-ctrl.c
@@ -753,7 +753,7 @@ int pwc_set_shutter_speed(struct pwc_device *pdev, int mode, int value)
753 buf[0] = 0xff; /* fixed */ 753 buf[0] = 0xff; /* fixed */
754 754
755 ret = send_control_msg(pdev, 755 ret = send_control_msg(pdev,
756 SET_LUM_CTL, SHUTTER_MODE_FORMATTER, &buf, sizeof(buf)); 756 SET_LUM_CTL, SHUTTER_MODE_FORMATTER, &buf, 1);
757 757
758 if (!mode && ret >= 0) { 758 if (!mode && ret >= 0) {
759 if (value < 0) 759 if (value < 0)
diff --git a/drivers/media/video/rj54n1cb0c.c b/drivers/media/video/rj54n1cb0c.c
index 7e42989ce0e4..805226e0d9c1 100644
--- a/drivers/media/video/rj54n1cb0c.c
+++ b/drivers/media/video/rj54n1cb0c.c
@@ -563,7 +563,7 @@ static int rj54n1_s_crop(struct v4l2_subdev *sd, struct v4l2_crop *a)
563 struct i2c_client *client = sd->priv; 563 struct i2c_client *client = sd->priv;
564 struct rj54n1 *rj54n1 = to_rj54n1(client); 564 struct rj54n1 *rj54n1 = to_rj54n1(client);
565 struct v4l2_rect *rect = &a->c; 565 struct v4l2_rect *rect = &a->c;
566 unsigned int dummy, output_w, output_h, 566 unsigned int dummy = 0, output_w, output_h,
567 input_w = rect->width, input_h = rect->height; 567 input_w = rect->width, input_h = rect->height;
568 int ret; 568 int ret;
569 569
diff --git a/drivers/media/video/saa7134/saa7134-core.c b/drivers/media/video/saa7134/saa7134-core.c
index 9f85e917f9f3..a7ad7810fddc 100644
--- a/drivers/media/video/saa7134/saa7134-core.c
+++ b/drivers/media/video/saa7134/saa7134-core.c
@@ -420,19 +420,6 @@ int saa7134_set_dmabits(struct saa7134_dev *dev)
420 ctrl |= SAA7134_MAIN_CTRL_TE5; 420 ctrl |= SAA7134_MAIN_CTRL_TE5;
421 irq |= SAA7134_IRQ1_INTE_RA2_1 | 421 irq |= SAA7134_IRQ1_INTE_RA2_1 |
422 SAA7134_IRQ1_INTE_RA2_0; 422 SAA7134_IRQ1_INTE_RA2_0;
423
424 /* dma: setup channel 5 (= TS) */
425
426 saa_writeb(SAA7134_TS_DMA0, (dev->ts.nr_packets - 1) & 0xff);
427 saa_writeb(SAA7134_TS_DMA1,
428 ((dev->ts.nr_packets - 1) >> 8) & 0xff);
429 /* TSNOPIT=0, TSCOLAP=0 */
430 saa_writeb(SAA7134_TS_DMA2,
431 (((dev->ts.nr_packets - 1) >> 16) & 0x3f) | 0x00);
432 saa_writel(SAA7134_RS_PITCH(5), TS_PACKET_SIZE);
433 saa_writel(SAA7134_RS_CONTROL(5), SAA7134_RS_CONTROL_BURST_16 |
434 SAA7134_RS_CONTROL_ME |
435 (dev->ts.pt_ts.dma >> 12));
436 } 423 }
437 424
438 /* set task conditions + field handling */ 425 /* set task conditions + field handling */
diff --git a/drivers/media/video/saa7134/saa7134-empress.c b/drivers/media/video/saa7134/saa7134-empress.c
index 7dfecfc6017c..ee5bff02a92c 100644
--- a/drivers/media/video/saa7134/saa7134-empress.c
+++ b/drivers/media/video/saa7134/saa7134-empress.c
@@ -93,9 +93,9 @@ static int ts_open(struct file *file)
93 dprintk("open dev=%s\n", video_device_node_name(vdev)); 93 dprintk("open dev=%s\n", video_device_node_name(vdev));
94 err = -EBUSY; 94 err = -EBUSY;
95 if (!mutex_trylock(&dev->empress_tsq.vb_lock)) 95 if (!mutex_trylock(&dev->empress_tsq.vb_lock))
96 goto done; 96 return err;
97 if (atomic_read(&dev->empress_users)) 97 if (atomic_read(&dev->empress_users))
98 goto done_up; 98 goto done;
99 99
100 /* Unmute audio */ 100 /* Unmute audio */
101 saa_writeb(SAA7134_AUDIO_MUTE_CTRL, 101 saa_writeb(SAA7134_AUDIO_MUTE_CTRL,
@@ -105,10 +105,8 @@ static int ts_open(struct file *file)
105 file->private_data = dev; 105 file->private_data = dev;
106 err = 0; 106 err = 0;
107 107
108done_up:
109 mutex_unlock(&dev->empress_tsq.vb_lock);
110done: 108done:
111 unlock_kernel(); 109 mutex_unlock(&dev->empress_tsq.vb_lock);
112 return err; 110 return err;
113} 111}
114 112
diff --git a/drivers/media/video/saa7134/saa7134-ts.c b/drivers/media/video/saa7134/saa7134-ts.c
index 03488ba4c99c..b9817d74943f 100644
--- a/drivers/media/video/saa7134/saa7134-ts.c
+++ b/drivers/media/video/saa7134/saa7134-ts.c
@@ -250,6 +250,19 @@ int saa7134_ts_start(struct saa7134_dev *dev)
250 250
251 BUG_ON(dev->ts_started); 251 BUG_ON(dev->ts_started);
252 252
253 /* dma: setup channel 5 (= TS) */
254 saa_writeb(SAA7134_TS_DMA0, (dev->ts.nr_packets - 1) & 0xff);
255 saa_writeb(SAA7134_TS_DMA1,
256 ((dev->ts.nr_packets - 1) >> 8) & 0xff);
257 /* TSNOPIT=0, TSCOLAP=0 */
258 saa_writeb(SAA7134_TS_DMA2,
259 (((dev->ts.nr_packets - 1) >> 16) & 0x3f) | 0x00);
260 saa_writel(SAA7134_RS_PITCH(5), TS_PACKET_SIZE);
261 saa_writel(SAA7134_RS_CONTROL(5), SAA7134_RS_CONTROL_BURST_16 |
262 SAA7134_RS_CONTROL_ME |
263 (dev->ts.pt_ts.dma >> 12));
264
265 /* reset hardware TS buffers */
253 saa_writeb(SAA7134_TS_SERIAL1, 0x00); 266 saa_writeb(SAA7134_TS_SERIAL1, 0x00);
254 saa_writeb(SAA7134_TS_SERIAL1, 0x03); 267 saa_writeb(SAA7134_TS_SERIAL1, 0x03);
255 saa_writeb(SAA7134_TS_SERIAL1, 0x00); 268 saa_writeb(SAA7134_TS_SERIAL1, 0x00);
diff --git a/drivers/media/video/sh_mobile_ceu_camera.c b/drivers/media/video/sh_mobile_ceu_camera.c
index d69363f0d8c9..f09c7140d6b2 100644
--- a/drivers/media/video/sh_mobile_ceu_camera.c
+++ b/drivers/media/video/sh_mobile_ceu_camera.c
@@ -1827,7 +1827,7 @@ static int __devinit sh_mobile_ceu_probe(struct platform_device *pdev)
1827 1827
1828 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 1828 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1829 irq = platform_get_irq(pdev, 0); 1829 irq = platform_get_irq(pdev, 0);
1830 if (!res || !irq) { 1830 if (!res || (int)irq <= 0) {
1831 dev_err(&pdev->dev, "Not enough CEU platform resources.\n"); 1831 dev_err(&pdev->dev, "Not enough CEU platform resources.\n");
1832 err = -ENODEV; 1832 err = -ENODEV;
1833 goto exit; 1833 goto exit;
diff --git a/drivers/media/video/uvc/uvc_ctrl.c b/drivers/media/video/uvc/uvc_ctrl.c
index 0469d7a876a8..ec8ef8c5560a 100644
--- a/drivers/media/video/uvc/uvc_ctrl.c
+++ b/drivers/media/video/uvc/uvc_ctrl.c
@@ -1393,7 +1393,7 @@ uvc_ctrl_prune_entity(struct uvc_device *dev, struct uvc_entity *entity)
1393 size = entity->processing.bControlSize; 1393 size = entity->processing.bControlSize;
1394 1394
1395 for (i = 0; i < ARRAY_SIZE(blacklist); ++i) { 1395 for (i = 0; i < ARRAY_SIZE(blacklist); ++i) {
1396 if (!usb_match_id(dev->intf, &blacklist[i].id)) 1396 if (!usb_match_one_id(dev->intf, &blacklist[i].id))
1397 continue; 1397 continue;
1398 1398
1399 if (blacklist[i].index >= 8 * size || 1399 if (blacklist[i].index >= 8 * size ||
diff --git a/drivers/media/video/uvc/uvc_queue.c b/drivers/media/video/uvc/uvc_queue.c
index f854698c4061..ea11839cba4a 100644
--- a/drivers/media/video/uvc/uvc_queue.c
+++ b/drivers/media/video/uvc/uvc_queue.c
@@ -59,9 +59,9 @@
59 * returns immediately. 59 * returns immediately.
60 * 60 *
61 * When the buffer is full, the completion handler removes it from the irq 61 * When the buffer is full, the completion handler removes it from the irq
62 * queue, marks it as ready (UVC_BUF_STATE_DONE) and wakes its wait queue. 62 * queue, marks it as done (UVC_BUF_STATE_DONE) and wakes its wait queue.
63 * At that point, any process waiting on the buffer will be woken up. If a 63 * At that point, any process waiting on the buffer will be woken up. If a
64 * process tries to dequeue a buffer after it has been marked ready, the 64 * process tries to dequeue a buffer after it has been marked done, the
65 * dequeing will succeed immediately. 65 * dequeing will succeed immediately.
66 * 66 *
67 * 2. Buffers are queued, user is waiting on a buffer and the device gets 67 * 2. Buffers are queued, user is waiting on a buffer and the device gets
@@ -201,6 +201,7 @@ static void __uvc_query_buffer(struct uvc_buffer *buf,
201 break; 201 break;
202 case UVC_BUF_STATE_QUEUED: 202 case UVC_BUF_STATE_QUEUED:
203 case UVC_BUF_STATE_ACTIVE: 203 case UVC_BUF_STATE_ACTIVE:
204 case UVC_BUF_STATE_READY:
204 v4l2_buf->flags |= V4L2_BUF_FLAG_QUEUED; 205 v4l2_buf->flags |= V4L2_BUF_FLAG_QUEUED;
205 break; 206 break;
206 case UVC_BUF_STATE_IDLE: 207 case UVC_BUF_STATE_IDLE:
@@ -295,13 +296,15 @@ static int uvc_queue_waiton(struct uvc_buffer *buf, int nonblocking)
295{ 296{
296 if (nonblocking) { 297 if (nonblocking) {
297 return (buf->state != UVC_BUF_STATE_QUEUED && 298 return (buf->state != UVC_BUF_STATE_QUEUED &&
298 buf->state != UVC_BUF_STATE_ACTIVE) 299 buf->state != UVC_BUF_STATE_ACTIVE &&
300 buf->state != UVC_BUF_STATE_READY)
299 ? 0 : -EAGAIN; 301 ? 0 : -EAGAIN;
300 } 302 }
301 303
302 return wait_event_interruptible(buf->wait, 304 return wait_event_interruptible(buf->wait,
303 buf->state != UVC_BUF_STATE_QUEUED && 305 buf->state != UVC_BUF_STATE_QUEUED &&
304 buf->state != UVC_BUF_STATE_ACTIVE); 306 buf->state != UVC_BUF_STATE_ACTIVE &&
307 buf->state != UVC_BUF_STATE_READY);
305} 308}
306 309
307/* 310/*
@@ -348,6 +351,7 @@ int uvc_dequeue_buffer(struct uvc_video_queue *queue,
348 case UVC_BUF_STATE_IDLE: 351 case UVC_BUF_STATE_IDLE:
349 case UVC_BUF_STATE_QUEUED: 352 case UVC_BUF_STATE_QUEUED:
350 case UVC_BUF_STATE_ACTIVE: 353 case UVC_BUF_STATE_ACTIVE:
354 case UVC_BUF_STATE_READY:
351 default: 355 default:
352 uvc_trace(UVC_TRACE_CAPTURE, "[E] Invalid buffer state %u " 356 uvc_trace(UVC_TRACE_CAPTURE, "[E] Invalid buffer state %u "
353 "(driver bug?).\n", buf->state); 357 "(driver bug?).\n", buf->state);
@@ -489,6 +493,7 @@ struct uvc_buffer *uvc_queue_next_buffer(struct uvc_video_queue *queue,
489 493
490 spin_lock_irqsave(&queue->irqlock, flags); 494 spin_lock_irqsave(&queue->irqlock, flags);
491 list_del(&buf->queue); 495 list_del(&buf->queue);
496 buf->state = UVC_BUF_STATE_DONE;
492 if (!list_empty(&queue->irqqueue)) 497 if (!list_empty(&queue->irqqueue))
493 nextbuf = list_first_entry(&queue->irqqueue, struct uvc_buffer, 498 nextbuf = list_first_entry(&queue->irqqueue, struct uvc_buffer,
494 queue); 499 queue);
diff --git a/drivers/media/video/uvc/uvc_video.c b/drivers/media/video/uvc/uvc_video.c
index 9a9802830d41..7dcf534a0cf3 100644
--- a/drivers/media/video/uvc/uvc_video.c
+++ b/drivers/media/video/uvc/uvc_video.c
@@ -441,7 +441,7 @@ static int uvc_video_decode_start(struct uvc_streaming *stream,
441 if (fid != stream->last_fid && buf->buf.bytesused != 0) { 441 if (fid != stream->last_fid && buf->buf.bytesused != 0) {
442 uvc_trace(UVC_TRACE_FRAME, "Frame complete (FID bit " 442 uvc_trace(UVC_TRACE_FRAME, "Frame complete (FID bit "
443 "toggled).\n"); 443 "toggled).\n");
444 buf->state = UVC_BUF_STATE_DONE; 444 buf->state = UVC_BUF_STATE_READY;
445 return -EAGAIN; 445 return -EAGAIN;
446 } 446 }
447 447
@@ -470,7 +470,7 @@ static void uvc_video_decode_data(struct uvc_streaming *stream,
470 /* Complete the current frame if the buffer size was exceeded. */ 470 /* Complete the current frame if the buffer size was exceeded. */
471 if (len > maxlen) { 471 if (len > maxlen) {
472 uvc_trace(UVC_TRACE_FRAME, "Frame complete (overflow).\n"); 472 uvc_trace(UVC_TRACE_FRAME, "Frame complete (overflow).\n");
473 buf->state = UVC_BUF_STATE_DONE; 473 buf->state = UVC_BUF_STATE_READY;
474 } 474 }
475} 475}
476 476
@@ -482,7 +482,7 @@ static void uvc_video_decode_end(struct uvc_streaming *stream,
482 uvc_trace(UVC_TRACE_FRAME, "Frame complete (EOF found).\n"); 482 uvc_trace(UVC_TRACE_FRAME, "Frame complete (EOF found).\n");
483 if (data[0] == len) 483 if (data[0] == len)
484 uvc_trace(UVC_TRACE_FRAME, "EOF in empty payload.\n"); 484 uvc_trace(UVC_TRACE_FRAME, "EOF in empty payload.\n");
485 buf->state = UVC_BUF_STATE_DONE; 485 buf->state = UVC_BUF_STATE_READY;
486 if (stream->dev->quirks & UVC_QUIRK_STREAM_NO_FID) 486 if (stream->dev->quirks & UVC_QUIRK_STREAM_NO_FID)
487 stream->last_fid ^= UVC_STREAM_FID; 487 stream->last_fid ^= UVC_STREAM_FID;
488 } 488 }
@@ -568,8 +568,7 @@ static void uvc_video_decode_isoc(struct urb *urb, struct uvc_streaming *stream,
568 uvc_video_decode_end(stream, buf, mem, 568 uvc_video_decode_end(stream, buf, mem,
569 urb->iso_frame_desc[i].actual_length); 569 urb->iso_frame_desc[i].actual_length);
570 570
571 if (buf->state == UVC_BUF_STATE_DONE || 571 if (buf->state == UVC_BUF_STATE_READY)
572 buf->state == UVC_BUF_STATE_ERROR)
573 buf = uvc_queue_next_buffer(&stream->queue, buf); 572 buf = uvc_queue_next_buffer(&stream->queue, buf);
574 } 573 }
575} 574}
@@ -627,8 +626,7 @@ static void uvc_video_decode_bulk(struct urb *urb, struct uvc_streaming *stream,
627 if (!stream->bulk.skip_payload && buf != NULL) { 626 if (!stream->bulk.skip_payload && buf != NULL) {
628 uvc_video_decode_end(stream, buf, stream->bulk.header, 627 uvc_video_decode_end(stream, buf, stream->bulk.header,
629 stream->bulk.payload_size); 628 stream->bulk.payload_size);
630 if (buf->state == UVC_BUF_STATE_DONE || 629 if (buf->state == UVC_BUF_STATE_READY)
631 buf->state == UVC_BUF_STATE_ERROR)
632 buf = uvc_queue_next_buffer(&stream->queue, 630 buf = uvc_queue_next_buffer(&stream->queue,
633 buf); 631 buf);
634 } 632 }
@@ -669,7 +667,7 @@ static void uvc_video_encode_bulk(struct urb *urb, struct uvc_streaming *stream,
669 stream->bulk.payload_size == stream->bulk.max_payload_size) { 667 stream->bulk.payload_size == stream->bulk.max_payload_size) {
670 if (buf->buf.bytesused == stream->queue.buf_used) { 668 if (buf->buf.bytesused == stream->queue.buf_used) {
671 stream->queue.buf_used = 0; 669 stream->queue.buf_used = 0;
672 buf->state = UVC_BUF_STATE_DONE; 670 buf->state = UVC_BUF_STATE_READY;
673 uvc_queue_next_buffer(&stream->queue, buf); 671 uvc_queue_next_buffer(&stream->queue, buf);
674 stream->last_fid ^= UVC_STREAM_FID; 672 stream->last_fid ^= UVC_STREAM_FID;
675 } 673 }
@@ -924,10 +922,8 @@ static int uvc_init_video_bulk(struct uvc_streaming *stream,
924static int uvc_init_video(struct uvc_streaming *stream, gfp_t gfp_flags) 922static int uvc_init_video(struct uvc_streaming *stream, gfp_t gfp_flags)
925{ 923{
926 struct usb_interface *intf = stream->intf; 924 struct usb_interface *intf = stream->intf;
927 struct usb_host_interface *alts; 925 struct usb_host_endpoint *ep;
928 struct usb_host_endpoint *ep = NULL; 926 unsigned int i;
929 int intfnum = stream->intfnum;
930 unsigned int bandwidth, psize, i;
931 int ret; 927 int ret;
932 928
933 stream->last_fid = -1; 929 stream->last_fid = -1;
@@ -936,6 +932,12 @@ static int uvc_init_video(struct uvc_streaming *stream, gfp_t gfp_flags)
936 stream->bulk.payload_size = 0; 932 stream->bulk.payload_size = 0;
937 933
938 if (intf->num_altsetting > 1) { 934 if (intf->num_altsetting > 1) {
935 struct usb_host_endpoint *best_ep = NULL;
936 unsigned int best_psize = 3 * 1024;
937 unsigned int bandwidth;
938 unsigned int uninitialized_var(altsetting);
939 int intfnum = stream->intfnum;
940
939 /* Isochronous endpoint, select the alternate setting. */ 941 /* Isochronous endpoint, select the alternate setting. */
940 bandwidth = stream->ctrl.dwMaxPayloadTransferSize; 942 bandwidth = stream->ctrl.dwMaxPayloadTransferSize;
941 943
@@ -949,6 +951,9 @@ static int uvc_init_video(struct uvc_streaming *stream, gfp_t gfp_flags)
949 } 951 }
950 952
951 for (i = 0; i < intf->num_altsetting; ++i) { 953 for (i = 0; i < intf->num_altsetting; ++i) {
954 struct usb_host_interface *alts;
955 unsigned int psize;
956
952 alts = &intf->altsetting[i]; 957 alts = &intf->altsetting[i];
953 ep = uvc_find_endpoint(alts, 958 ep = uvc_find_endpoint(alts,
954 stream->header.bEndpointAddress); 959 stream->header.bEndpointAddress);
@@ -958,21 +963,27 @@ static int uvc_init_video(struct uvc_streaming *stream, gfp_t gfp_flags)
958 /* Check if the bandwidth is high enough. */ 963 /* Check if the bandwidth is high enough. */
959 psize = le16_to_cpu(ep->desc.wMaxPacketSize); 964 psize = le16_to_cpu(ep->desc.wMaxPacketSize);
960 psize = (psize & 0x07ff) * (1 + ((psize >> 11) & 3)); 965 psize = (psize & 0x07ff) * (1 + ((psize >> 11) & 3));
961 if (psize >= bandwidth) 966 if (psize >= bandwidth && psize <= best_psize) {
962 break; 967 altsetting = i;
968 best_psize = psize;
969 best_ep = ep;
970 }
963 } 971 }
964 972
965 if (i >= intf->num_altsetting) { 973 if (best_ep == NULL) {
966 uvc_trace(UVC_TRACE_VIDEO, "No fast enough alt setting " 974 uvc_trace(UVC_TRACE_VIDEO, "No fast enough alt setting "
967 "for requested bandwidth.\n"); 975 "for requested bandwidth.\n");
968 return -EIO; 976 return -EIO;
969 } 977 }
970 978
971 ret = usb_set_interface(stream->dev->udev, intfnum, i); 979 uvc_trace(UVC_TRACE_VIDEO, "Selecting alternate setting %u "
980 "(%u B/frame bandwidth).\n", altsetting, best_psize);
981
982 ret = usb_set_interface(stream->dev->udev, intfnum, altsetting);
972 if (ret < 0) 983 if (ret < 0)
973 return ret; 984 return ret;
974 985
975 ret = uvc_init_video_isoc(stream, ep, gfp_flags); 986 ret = uvc_init_video_isoc(stream, best_ep, gfp_flags);
976 } else { 987 } else {
977 /* Bulk endpoint, proceed to URB initialization. */ 988 /* Bulk endpoint, proceed to URB initialization. */
978 ep = uvc_find_endpoint(&intf->altsetting[0], 989 ep = uvc_find_endpoint(&intf->altsetting[0],
diff --git a/drivers/media/video/uvc/uvcvideo.h b/drivers/media/video/uvc/uvcvideo.h
index 7ec9a04ced50..2337585001ea 100644
--- a/drivers/media/video/uvc/uvcvideo.h
+++ b/drivers/media/video/uvc/uvcvideo.h
@@ -365,8 +365,9 @@ enum uvc_buffer_state {
365 UVC_BUF_STATE_IDLE = 0, 365 UVC_BUF_STATE_IDLE = 0,
366 UVC_BUF_STATE_QUEUED = 1, 366 UVC_BUF_STATE_QUEUED = 1,
367 UVC_BUF_STATE_ACTIVE = 2, 367 UVC_BUF_STATE_ACTIVE = 2,
368 UVC_BUF_STATE_DONE = 3, 368 UVC_BUF_STATE_READY = 3,
369 UVC_BUF_STATE_ERROR = 4, 369 UVC_BUF_STATE_DONE = 4,
370 UVC_BUF_STATE_ERROR = 5,
370}; 371};
371 372
372struct uvc_buffer { 373struct uvc_buffer {
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
index 85bc6a685e36..44d2037e9e56 100644
--- a/drivers/message/fusion/mptbase.c
+++ b/drivers/message/fusion/mptbase.c
@@ -4330,6 +4330,8 @@ initChainBuffers(MPT_ADAPTER *ioc)
4330 4330
4331 if (ioc->bus_type == SPI) 4331 if (ioc->bus_type == SPI)
4332 num_chain *= MPT_SCSI_CAN_QUEUE; 4332 num_chain *= MPT_SCSI_CAN_QUEUE;
4333 else if (ioc->bus_type == SAS)
4334 num_chain *= MPT_SAS_CAN_QUEUE;
4333 else 4335 else
4334 num_chain *= MPT_FC_CAN_QUEUE; 4336 num_chain *= MPT_FC_CAN_QUEUE;
4335 4337
diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c
index 57752751712b..81279b3d694c 100644
--- a/drivers/message/fusion/mptscsih.c
+++ b/drivers/message/fusion/mptscsih.c
@@ -1796,7 +1796,7 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
1796 dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT "task abort: " 1796 dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT "task abort: "
1797 "Command not in the active list! (sc=%p)\n", ioc->name, 1797 "Command not in the active list! (sc=%p)\n", ioc->name,
1798 SCpnt)); 1798 SCpnt));
1799 retval = 0; 1799 retval = SUCCESS;
1800 goto out; 1800 goto out;
1801 } 1801 }
1802 1802
diff --git a/drivers/message/i2o/i2o_config.c b/drivers/message/i2o/i2o_config.c
index efba7021948a..3d5f40cd69df 100644
--- a/drivers/message/i2o/i2o_config.c
+++ b/drivers/message/i2o/i2o_config.c
@@ -40,8 +40,7 @@
40 40
41#define SG_TABLESIZE 30 41#define SG_TABLESIZE 30
42 42
43static int i2o_cfg_ioctl(struct inode *, struct file *, unsigned int, 43static long i2o_cfg_ioctl(struct file *, unsigned int, unsigned long);
44 unsigned long);
45 44
46static spinlock_t i2o_config_lock; 45static spinlock_t i2o_config_lock;
47 46
@@ -751,7 +750,7 @@ static long i2o_cfg_compat_ioctl(struct file *file, unsigned cmd,
751 lock_kernel(); 750 lock_kernel();
752 switch (cmd) { 751 switch (cmd) {
753 case I2OGETIOPS: 752 case I2OGETIOPS:
754 ret = i2o_cfg_ioctl(NULL, file, cmd, arg); 753 ret = i2o_cfg_ioctl(file, cmd, arg);
755 break; 754 break;
756 case I2OPASSTHRU32: 755 case I2OPASSTHRU32:
757 ret = i2o_cfg_passthru32(file, cmd, arg); 756 ret = i2o_cfg_passthru32(file, cmd, arg);
@@ -984,11 +983,11 @@ out:
984/* 983/*
985 * IOCTL Handler 984 * IOCTL Handler
986 */ 985 */
987static int i2o_cfg_ioctl(struct inode *inode, struct file *fp, unsigned int cmd, 986static long i2o_cfg_ioctl(struct file *fp, unsigned int cmd, unsigned long arg)
988 unsigned long arg)
989{ 987{
990 int ret; 988 int ret;
991 989
990 lock_kernel();
992 switch (cmd) { 991 switch (cmd) {
993 case I2OGETIOPS: 992 case I2OGETIOPS:
994 ret = i2o_cfg_getiops(arg); 993 ret = i2o_cfg_getiops(arg);
@@ -1044,7 +1043,7 @@ static int i2o_cfg_ioctl(struct inode *inode, struct file *fp, unsigned int cmd,
1044 osm_debug("unknown ioctl called!\n"); 1043 osm_debug("unknown ioctl called!\n");
1045 ret = -EINVAL; 1044 ret = -EINVAL;
1046 } 1045 }
1047 1046 unlock_kernel();
1048 return ret; 1047 return ret;
1049} 1048}
1050 1049
@@ -1118,7 +1117,7 @@ static int cfg_release(struct inode *inode, struct file *file)
1118static const struct file_operations config_fops = { 1117static const struct file_operations config_fops = {
1119 .owner = THIS_MODULE, 1118 .owner = THIS_MODULE,
1120 .llseek = no_llseek, 1119 .llseek = no_llseek,
1121 .ioctl = i2o_cfg_ioctl, 1120 .unlocked_ioctl = i2o_cfg_ioctl,
1122#ifdef CONFIG_COMPAT 1121#ifdef CONFIG_COMPAT
1123 .compat_ioctl = i2o_cfg_compat_ioctl, 1122 .compat_ioctl = i2o_cfg_compat_ioctl,
1124#endif 1123#endif
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
index ca2f2c4ff05e..e09eb4870db6 100644
--- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile
@@ -3,7 +3,7 @@
3# 3#
4 4
5obj-$(CONFIG_MFD_SM501) += sm501.o 5obj-$(CONFIG_MFD_SM501) += sm501.o
6obj-$(CONFIG_MFD_ASIC3) += asic3.o 6obj-$(CONFIG_MFD_ASIC3) += asic3.o tmio_core.o
7obj-$(CONFIG_MFD_SH_MOBILE_SDHI) += sh_mobile_sdhi.o 7obj-$(CONFIG_MFD_SH_MOBILE_SDHI) += sh_mobile_sdhi.o
8 8
9obj-$(CONFIG_HTC_EGPIO) += htc-egpio.o 9obj-$(CONFIG_HTC_EGPIO) += htc-egpio.o
@@ -11,9 +11,9 @@ obj-$(CONFIG_HTC_PASIC3) += htc-pasic3.o
11 11
12obj-$(CONFIG_MFD_DM355EVM_MSP) += dm355evm_msp.o 12obj-$(CONFIG_MFD_DM355EVM_MSP) += dm355evm_msp.o
13 13
14obj-$(CONFIG_MFD_T7L66XB) += t7l66xb.o 14obj-$(CONFIG_MFD_T7L66XB) += t7l66xb.o tmio_core.o
15obj-$(CONFIG_MFD_TC6387XB) += tc6387xb.o 15obj-$(CONFIG_MFD_TC6387XB) += tc6387xb.o tmio_core.o
16obj-$(CONFIG_MFD_TC6393XB) += tc6393xb.o 16obj-$(CONFIG_MFD_TC6393XB) += tc6393xb.o tmio_core.o
17 17
18obj-$(CONFIG_MFD_WM8400) += wm8400-core.o 18obj-$(CONFIG_MFD_WM8400) += wm8400-core.o
19wm831x-objs := wm831x-core.o wm831x-irq.o wm831x-otp.o 19wm831x-objs := wm831x-core.o wm831x-irq.o wm831x-otp.o
diff --git a/drivers/mfd/asic3.c b/drivers/mfd/asic3.c
index e22128c3e9a8..95c1e6bd1729 100644
--- a/drivers/mfd/asic3.c
+++ b/drivers/mfd/asic3.c
@@ -80,6 +80,7 @@ struct asic3 {
80 u16 irq_bothedge[4]; 80 u16 irq_bothedge[4];
81 struct gpio_chip gpio; 81 struct gpio_chip gpio;
82 struct device *dev; 82 struct device *dev;
83 void __iomem *tmio_cnf;
83 84
84 struct asic3_clk clocks[ARRAY_SIZE(asic3_clk_init)]; 85 struct asic3_clk clocks[ARRAY_SIZE(asic3_clk_init)];
85}; 86};
@@ -685,8 +686,24 @@ static struct mfd_cell asic3_cell_ds1wm = {
685 .resources = ds1wm_resources, 686 .resources = ds1wm_resources,
686}; 687};
687 688
689static void asic3_mmc_pwr(struct platform_device *pdev, int state)
690{
691 struct asic3 *asic = dev_get_drvdata(pdev->dev.parent);
692
693 tmio_core_mmc_pwr(asic->tmio_cnf, 1 - asic->bus_shift, state);
694}
695
696static void asic3_mmc_clk_div(struct platform_device *pdev, int state)
697{
698 struct asic3 *asic = dev_get_drvdata(pdev->dev.parent);
699
700 tmio_core_mmc_clk_div(asic->tmio_cnf, 1 - asic->bus_shift, state);
701}
702
688static struct tmio_mmc_data asic3_mmc_data = { 703static struct tmio_mmc_data asic3_mmc_data = {
689 .hclk = 24576000, 704 .hclk = 24576000,
705 .set_pwr = asic3_mmc_pwr,
706 .set_clk_div = asic3_mmc_clk_div,
690}; 707};
691 708
692static struct resource asic3_mmc_resources[] = { 709static struct resource asic3_mmc_resources[] = {
@@ -696,11 +713,6 @@ static struct resource asic3_mmc_resources[] = {
696 .flags = IORESOURCE_MEM, 713 .flags = IORESOURCE_MEM,
697 }, 714 },
698 { 715 {
699 .start = ASIC3_SD_CONFIG_BASE,
700 .end = ASIC3_SD_CONFIG_BASE + 0x1ff,
701 .flags = IORESOURCE_MEM,
702 },
703 {
704 .start = 0, 716 .start = 0,
705 .end = 0, 717 .end = 0,
706 .flags = IORESOURCE_IRQ, 718 .flags = IORESOURCE_IRQ,
@@ -743,6 +755,10 @@ static int asic3_mmc_enable(struct platform_device *pdev)
743 asic3_set_register(asic, ASIC3_OFFSET(SDHWCTRL, SDCONF), 755 asic3_set_register(asic, ASIC3_OFFSET(SDHWCTRL, SDCONF),
744 ASIC3_SDHWCTRL_SDPWR, 1); 756 ASIC3_SDHWCTRL_SDPWR, 1);
745 757
758 /* ASIC3_SD_CTRL_BASE assumes 32-bit addressing, TMIO is 16-bit */
759 tmio_core_mmc_enable(asic->tmio_cnf, 1 - asic->bus_shift,
760 ASIC3_SD_CTRL_BASE >> 1);
761
746 return 0; 762 return 0;
747} 763}
748 764
@@ -797,10 +813,15 @@ static int __init asic3_mfd_probe(struct platform_device *pdev,
797 asic3_cell_ds1wm.data_size = sizeof(asic3_cell_ds1wm); 813 asic3_cell_ds1wm.data_size = sizeof(asic3_cell_ds1wm);
798 814
799 /* MMC */ 815 /* MMC */
816 asic->tmio_cnf = ioremap((ASIC3_SD_CONFIG_BASE >> asic->bus_shift) +
817 mem_sdio->start, 0x400 >> asic->bus_shift);
818 if (!asic->tmio_cnf) {
819 ret = -ENOMEM;
820 dev_dbg(asic->dev, "Couldn't ioremap SD_CONFIG\n");
821 goto out;
822 }
800 asic3_mmc_resources[0].start >>= asic->bus_shift; 823 asic3_mmc_resources[0].start >>= asic->bus_shift;
801 asic3_mmc_resources[0].end >>= asic->bus_shift; 824 asic3_mmc_resources[0].end >>= asic->bus_shift;
802 asic3_mmc_resources[1].start >>= asic->bus_shift;
803 asic3_mmc_resources[1].end >>= asic->bus_shift;
804 825
805 asic3_cell_mmc.platform_data = &asic3_cell_mmc; 826 asic3_cell_mmc.platform_data = &asic3_cell_mmc;
806 asic3_cell_mmc.data_size = sizeof(asic3_cell_mmc); 827 asic3_cell_mmc.data_size = sizeof(asic3_cell_mmc);
@@ -820,7 +841,10 @@ static int __init asic3_mfd_probe(struct platform_device *pdev,
820 841
821static void asic3_mfd_remove(struct platform_device *pdev) 842static void asic3_mfd_remove(struct platform_device *pdev)
822{ 843{
844 struct asic3 *asic = platform_get_drvdata(pdev);
845
823 mfd_remove_devices(&pdev->dev); 846 mfd_remove_devices(&pdev->dev);
847 iounmap(asic->tmio_cnf);
824} 848}
825 849
826/* Core */ 850/* Core */
diff --git a/drivers/mfd/mc13783-core.c b/drivers/mfd/mc13783-core.c
index a1ade2324ea9..735c8a4d164f 100644
--- a/drivers/mfd/mc13783-core.c
+++ b/drivers/mfd/mc13783-core.c
@@ -619,6 +619,8 @@ err_revision:
619 } 619 }
620 /* This should go away (END) */ 620 /* This should go away (END) */
621 621
622 mc13783_unlock(mc13783);
623
622 if (pdata->flags & MC13783_USE_ADC) 624 if (pdata->flags & MC13783_USE_ADC)
623 mc13783_add_subdevice(mc13783, "mc13783-adc"); 625 mc13783_add_subdevice(mc13783, "mc13783-adc");
624 626
@@ -641,8 +643,6 @@ err_revision:
641 if (pdata->flags & MC13783_USE_TOUCHSCREEN) 643 if (pdata->flags & MC13783_USE_TOUCHSCREEN)
642 mc13783_add_subdevice(mc13783, "mc13783-ts"); 644 mc13783_add_subdevice(mc13783, "mc13783-ts");
643 645
644 mc13783_unlock(mc13783);
645
646 return 0; 646 return 0;
647} 647}
648 648
diff --git a/drivers/mfd/t7l66xb.c b/drivers/mfd/t7l66xb.c
index 0a255c1f1ce7..bcf4687d4af5 100644
--- a/drivers/mfd/t7l66xb.c
+++ b/drivers/mfd/t7l66xb.c
@@ -38,6 +38,19 @@ enum {
38 T7L66XB_CELL_MMC, 38 T7L66XB_CELL_MMC,
39}; 39};
40 40
41static const struct resource t7l66xb_mmc_resources[] = {
42 {
43 .start = 0x800,
44 .end = 0x9ff,
45 .flags = IORESOURCE_MEM,
46 },
47 {
48 .start = IRQ_T7L66XB_MMC,
49 .end = IRQ_T7L66XB_MMC,
50 .flags = IORESOURCE_IRQ,
51 },
52};
53
41#define SCR_REVID 0x08 /* b Revision ID */ 54#define SCR_REVID 0x08 /* b Revision ID */
42#define SCR_IMR 0x42 /* b Interrupt Mask */ 55#define SCR_IMR 0x42 /* b Interrupt Mask */
43#define SCR_DEV_CTL 0xe0 /* b Device control */ 56#define SCR_DEV_CTL 0xe0 /* b Device control */
@@ -83,6 +96,9 @@ static int t7l66xb_mmc_enable(struct platform_device *mmc)
83 96
84 spin_unlock_irqrestore(&t7l66xb->lock, flags); 97 spin_unlock_irqrestore(&t7l66xb->lock, flags);
85 98
99 tmio_core_mmc_enable(t7l66xb->scr + 0x200, 0,
100 t7l66xb_mmc_resources[0].start & 0xfffe);
101
86 return 0; 102 return 0;
87} 103}
88 104
@@ -106,28 +122,28 @@ static int t7l66xb_mmc_disable(struct platform_device *mmc)
106 return 0; 122 return 0;
107} 123}
108 124
125static void t7l66xb_mmc_pwr(struct platform_device *mmc, int state)
126{
127 struct platform_device *dev = to_platform_device(mmc->dev.parent);
128 struct t7l66xb *t7l66xb = platform_get_drvdata(dev);
129
130 tmio_core_mmc_pwr(t7l66xb->scr + 0x200, 0, state);
131}
132
133static void t7l66xb_mmc_clk_div(struct platform_device *mmc, int state)
134{
135 struct platform_device *dev = to_platform_device(mmc->dev.parent);
136 struct t7l66xb *t7l66xb = platform_get_drvdata(dev);
137
138 tmio_core_mmc_clk_div(t7l66xb->scr + 0x200, 0, state);
139}
140
109/*--------------------------------------------------------------------------*/ 141/*--------------------------------------------------------------------------*/
110 142
111static struct tmio_mmc_data t7166xb_mmc_data = { 143static struct tmio_mmc_data t7166xb_mmc_data = {
112 .hclk = 24000000, 144 .hclk = 24000000,
113}; 145 .set_pwr = t7l66xb_mmc_pwr,
114 146 .set_clk_div = t7l66xb_mmc_clk_div,
115static const struct resource t7l66xb_mmc_resources[] = {
116 {
117 .start = 0x800,
118 .end = 0x9ff,
119 .flags = IORESOURCE_MEM,
120 },
121 {
122 .start = 0x200,
123 .end = 0x2ff,
124 .flags = IORESOURCE_MEM,
125 },
126 {
127 .start = IRQ_T7L66XB_MMC,
128 .end = IRQ_T7L66XB_MMC,
129 .flags = IORESOURCE_IRQ,
130 },
131}; 147};
132 148
133static const struct resource t7l66xb_nand_resources[] = { 149static const struct resource t7l66xb_nand_resources[] = {
@@ -282,6 +298,9 @@ static int t7l66xb_resume(struct platform_device *dev)
282 if (pdata && pdata->resume) 298 if (pdata && pdata->resume)
283 pdata->resume(dev); 299 pdata->resume(dev);
284 300
301 tmio_core_mmc_enable(t7l66xb->scr + 0x200, 0,
302 t7l66xb_mmc_resources[0].start & 0xfffe);
303
285 return 0; 304 return 0;
286} 305}
287#else 306#else
diff --git a/drivers/mfd/tc6387xb.c b/drivers/mfd/tc6387xb.c
index 3280ab33f88a..5c7f04343d5c 100644
--- a/drivers/mfd/tc6387xb.c
+++ b/drivers/mfd/tc6387xb.c
@@ -22,28 +22,52 @@ enum {
22 TC6387XB_CELL_MMC, 22 TC6387XB_CELL_MMC,
23}; 23};
24 24
25struct tc6387xb {
26 void __iomem *scr;
27 struct clk *clk32k;
28 struct resource rscr;
29};
30
31static struct resource tc6387xb_mmc_resources[] = {
32 {
33 .start = 0x800,
34 .end = 0x9ff,
35 .flags = IORESOURCE_MEM,
36 },
37 {
38 .start = 0,
39 .end = 0,
40 .flags = IORESOURCE_IRQ,
41 },
42};
43
44/*--------------------------------------------------------------------------*/
45
25#ifdef CONFIG_PM 46#ifdef CONFIG_PM
26static int tc6387xb_suspend(struct platform_device *dev, pm_message_t state) 47static int tc6387xb_suspend(struct platform_device *dev, pm_message_t state)
27{ 48{
28 struct clk *clk32k = platform_get_drvdata(dev); 49 struct tc6387xb *tc6387xb = platform_get_drvdata(dev);
29 struct tc6387xb_platform_data *pdata = dev->dev.platform_data; 50 struct tc6387xb_platform_data *pdata = dev->dev.platform_data;
30 51
31 if (pdata && pdata->suspend) 52 if (pdata && pdata->suspend)
32 pdata->suspend(dev); 53 pdata->suspend(dev);
33 clk_disable(clk32k); 54 clk_disable(tc6387xb->clk32k);
34 55
35 return 0; 56 return 0;
36} 57}
37 58
38static int tc6387xb_resume(struct platform_device *dev) 59static int tc6387xb_resume(struct platform_device *dev)
39{ 60{
40 struct clk *clk32k = platform_get_drvdata(dev); 61 struct tc6387xb *tc6387xb = platform_get_drvdata(dev);
41 struct tc6387xb_platform_data *pdata = dev->dev.platform_data; 62 struct tc6387xb_platform_data *pdata = dev->dev.platform_data;
42 63
43 clk_enable(clk32k); 64 clk_enable(tc6387xb->clk32k);
44 if (pdata && pdata->resume) 65 if (pdata && pdata->resume)
45 pdata->resume(dev); 66 pdata->resume(dev);
46 67
68 tmio_core_mmc_resume(tc6387xb->scr + 0x200, 0,
69 tc6387xb_mmc_resources[0].start & 0xfffe);
70
47 return 0; 71 return 0;
48} 72}
49#else 73#else
@@ -53,12 +77,32 @@ static int tc6387xb_resume(struct platform_device *dev)
53 77
54/*--------------------------------------------------------------------------*/ 78/*--------------------------------------------------------------------------*/
55 79
80static void tc6387xb_mmc_pwr(struct platform_device *mmc, int state)
81{
82 struct platform_device *dev = to_platform_device(mmc->dev.parent);
83 struct tc6387xb *tc6387xb = platform_get_drvdata(dev);
84
85 tmio_core_mmc_pwr(tc6387xb->scr + 0x200, 0, state);
86}
87
88static void tc6387xb_mmc_clk_div(struct platform_device *mmc, int state)
89{
90 struct platform_device *dev = to_platform_device(mmc->dev.parent);
91 struct tc6387xb *tc6387xb = platform_get_drvdata(dev);
92
93 tmio_core_mmc_clk_div(tc6387xb->scr + 0x200, 0, state);
94}
95
96
56static int tc6387xb_mmc_enable(struct platform_device *mmc) 97static int tc6387xb_mmc_enable(struct platform_device *mmc)
57{ 98{
58 struct platform_device *dev = to_platform_device(mmc->dev.parent); 99 struct platform_device *dev = to_platform_device(mmc->dev.parent);
59 struct clk *clk32k = platform_get_drvdata(dev); 100 struct tc6387xb *tc6387xb = platform_get_drvdata(dev);
60 101
61 clk_enable(clk32k); 102 clk_enable(tc6387xb->clk32k);
103
104 tmio_core_mmc_enable(tc6387xb->scr + 0x200, 0,
105 tc6387xb_mmc_resources[0].start & 0xfffe);
62 106
63 return 0; 107 return 0;
64} 108}
@@ -66,36 +110,20 @@ static int tc6387xb_mmc_enable(struct platform_device *mmc)
66static int tc6387xb_mmc_disable(struct platform_device *mmc) 110static int tc6387xb_mmc_disable(struct platform_device *mmc)
67{ 111{
68 struct platform_device *dev = to_platform_device(mmc->dev.parent); 112 struct platform_device *dev = to_platform_device(mmc->dev.parent);
69 struct clk *clk32k = platform_get_drvdata(dev); 113 struct tc6387xb *tc6387xb = platform_get_drvdata(dev);
70 114
71 clk_disable(clk32k); 115 clk_disable(tc6387xb->clk32k);
72 116
73 return 0; 117 return 0;
74} 118}
75 119
76/*--------------------------------------------------------------------------*/
77
78static struct tmio_mmc_data tc6387xb_mmc_data = { 120static struct tmio_mmc_data tc6387xb_mmc_data = {
79 .hclk = 24000000, 121 .hclk = 24000000,
122 .set_pwr = tc6387xb_mmc_pwr,
123 .set_clk_div = tc6387xb_mmc_clk_div,
80}; 124};
81 125
82static struct resource tc6387xb_mmc_resources[] = { 126/*--------------------------------------------------------------------------*/
83 {
84 .start = 0x800,
85 .end = 0x9ff,
86 .flags = IORESOURCE_MEM,
87 },
88 {
89 .start = 0x200,
90 .end = 0x2ff,
91 .flags = IORESOURCE_MEM,
92 },
93 {
94 .start = 0,
95 .end = 0,
96 .flags = IORESOURCE_IRQ,
97 },
98};
99 127
100static struct mfd_cell tc6387xb_cells[] = { 128static struct mfd_cell tc6387xb_cells[] = {
101 [TC6387XB_CELL_MMC] = { 129 [TC6387XB_CELL_MMC] = {
@@ -111,8 +139,9 @@ static struct mfd_cell tc6387xb_cells[] = {
111static int tc6387xb_probe(struct platform_device *dev) 139static int tc6387xb_probe(struct platform_device *dev)
112{ 140{
113 struct tc6387xb_platform_data *pdata = dev->dev.platform_data; 141 struct tc6387xb_platform_data *pdata = dev->dev.platform_data;
114 struct resource *iomem; 142 struct resource *iomem, *rscr;
115 struct clk *clk32k; 143 struct clk *clk32k;
144 struct tc6387xb *tc6387xb;
116 int irq, ret; 145 int irq, ret;
117 146
118 iomem = platform_get_resource(dev, IORESOURCE_MEM, 0); 147 iomem = platform_get_resource(dev, IORESOURCE_MEM, 0);
@@ -120,18 +149,40 @@ static int tc6387xb_probe(struct platform_device *dev)
120 return -EINVAL; 149 return -EINVAL;
121 } 150 }
122 151
152 tc6387xb = kzalloc(sizeof *tc6387xb, GFP_KERNEL);
153 if (!tc6387xb)
154 return -ENOMEM;
155
123 ret = platform_get_irq(dev, 0); 156 ret = platform_get_irq(dev, 0);
124 if (ret >= 0) 157 if (ret >= 0)
125 irq = ret; 158 irq = ret;
126 else 159 else
127 goto err_resource; 160 goto err_no_irq;
128 161
129 clk32k = clk_get(&dev->dev, "CLK_CK32K"); 162 clk32k = clk_get(&dev->dev, "CLK_CK32K");
130 if (IS_ERR(clk32k)) { 163 if (IS_ERR(clk32k)) {
131 ret = PTR_ERR(clk32k); 164 ret = PTR_ERR(clk32k);
165 goto err_no_clk;
166 }
167
168 rscr = &tc6387xb->rscr;
169 rscr->name = "tc6387xb-core";
170 rscr->start = iomem->start;
171 rscr->end = iomem->start + 0xff;
172 rscr->flags = IORESOURCE_MEM;
173
174 ret = request_resource(iomem, rscr);
175 if (ret)
132 goto err_resource; 176 goto err_resource;
177
178 tc6387xb->scr = ioremap(rscr->start, rscr->end - rscr->start + 1);
179 if (!tc6387xb->scr) {
180 ret = -ENOMEM;
181 goto err_ioremap;
133 } 182 }
134 platform_set_drvdata(dev, clk32k); 183
184 tc6387xb->clk32k = clk32k;
185 platform_set_drvdata(dev, tc6387xb);
135 186
136 if (pdata && pdata->enable) 187 if (pdata && pdata->enable)
137 pdata->enable(dev); 188 pdata->enable(dev);
@@ -149,8 +200,13 @@ static int tc6387xb_probe(struct platform_device *dev)
149 if (!ret) 200 if (!ret)
150 return 0; 201 return 0;
151 202
152 clk_put(clk32k); 203err_ioremap:
204 release_resource(&tc6387xb->rscr);
153err_resource: 205err_resource:
206 clk_put(clk32k);
207err_no_clk:
208err_no_irq:
209 kfree(tc6387xb);
154 return ret; 210 return ret;
155} 211}
156 212
@@ -195,3 +251,4 @@ MODULE_DESCRIPTION("Toshiba TC6387XB core driver");
195MODULE_LICENSE("GPL v2"); 251MODULE_LICENSE("GPL v2");
196MODULE_AUTHOR("Ian Molton"); 252MODULE_AUTHOR("Ian Molton");
197MODULE_ALIAS("platform:tc6387xb"); 253MODULE_ALIAS("platform:tc6387xb");
254
diff --git a/drivers/mfd/tc6393xb.c b/drivers/mfd/tc6393xb.c
index 1429a7341a9a..4bc5a08a2b09 100644
--- a/drivers/mfd/tc6393xb.c
+++ b/drivers/mfd/tc6393xb.c
@@ -136,10 +136,6 @@ static int tc6393xb_nand_enable(struct platform_device *nand)
136 return 0; 136 return 0;
137} 137}
138 138
139static struct tmio_mmc_data tc6393xb_mmc_data = {
140 .hclk = 24000000,
141};
142
143static struct resource __devinitdata tc6393xb_nand_resources[] = { 139static struct resource __devinitdata tc6393xb_nand_resources[] = {
144 { 140 {
145 .start = 0x1000, 141 .start = 0x1000,
@@ -165,11 +161,6 @@ static struct resource __devinitdata tc6393xb_mmc_resources[] = {
165 .flags = IORESOURCE_MEM, 161 .flags = IORESOURCE_MEM,
166 }, 162 },
167 { 163 {
168 .start = 0x200,
169 .end = 0x2ff,
170 .flags = IORESOURCE_MEM,
171 },
172 {
173 .start = IRQ_TC6393_MMC, 164 .start = IRQ_TC6393_MMC,
174 .end = IRQ_TC6393_MMC, 165 .end = IRQ_TC6393_MMC,
175 .flags = IORESOURCE_IRQ, 166 .flags = IORESOURCE_IRQ,
@@ -346,6 +337,50 @@ int tc6393xb_lcd_mode(struct platform_device *fb,
346} 337}
347EXPORT_SYMBOL(tc6393xb_lcd_mode); 338EXPORT_SYMBOL(tc6393xb_lcd_mode);
348 339
340static int tc6393xb_mmc_enable(struct platform_device *mmc)
341{
342 struct platform_device *dev = to_platform_device(mmc->dev.parent);
343 struct tc6393xb *tc6393xb = platform_get_drvdata(dev);
344
345 tmio_core_mmc_enable(tc6393xb->scr + 0x200, 0,
346 tc6393xb_mmc_resources[0].start & 0xfffe);
347
348 return 0;
349}
350
351static int tc6393xb_mmc_resume(struct platform_device *mmc)
352{
353 struct platform_device *dev = to_platform_device(mmc->dev.parent);
354 struct tc6393xb *tc6393xb = platform_get_drvdata(dev);
355
356 tmio_core_mmc_resume(tc6393xb->scr + 0x200, 0,
357 tc6393xb_mmc_resources[0].start & 0xfffe);
358
359 return 0;
360}
361
362static void tc6393xb_mmc_pwr(struct platform_device *mmc, int state)
363{
364 struct platform_device *dev = to_platform_device(mmc->dev.parent);
365 struct tc6393xb *tc6393xb = platform_get_drvdata(dev);
366
367 tmio_core_mmc_pwr(tc6393xb->scr + 0x200, 0, state);
368}
369
370static void tc6393xb_mmc_clk_div(struct platform_device *mmc, int state)
371{
372 struct platform_device *dev = to_platform_device(mmc->dev.parent);
373 struct tc6393xb *tc6393xb = platform_get_drvdata(dev);
374
375 tmio_core_mmc_clk_div(tc6393xb->scr + 0x200, 0, state);
376}
377
378static struct tmio_mmc_data tc6393xb_mmc_data = {
379 .hclk = 24000000,
380 .set_pwr = tc6393xb_mmc_pwr,
381 .set_clk_div = tc6393xb_mmc_clk_div,
382};
383
349static struct mfd_cell __devinitdata tc6393xb_cells[] = { 384static struct mfd_cell __devinitdata tc6393xb_cells[] = {
350 [TC6393XB_CELL_NAND] = { 385 [TC6393XB_CELL_NAND] = {
351 .name = "tmio-nand", 386 .name = "tmio-nand",
@@ -355,6 +390,8 @@ static struct mfd_cell __devinitdata tc6393xb_cells[] = {
355 }, 390 },
356 [TC6393XB_CELL_MMC] = { 391 [TC6393XB_CELL_MMC] = {
357 .name = "tmio-mmc", 392 .name = "tmio-mmc",
393 .enable = tc6393xb_mmc_enable,
394 .resume = tc6393xb_mmc_resume,
358 .driver_data = &tc6393xb_mmc_data, 395 .driver_data = &tc6393xb_mmc_data,
359 .num_resources = ARRAY_SIZE(tc6393xb_mmc_resources), 396 .num_resources = ARRAY_SIZE(tc6393xb_mmc_resources),
360 .resources = tc6393xb_mmc_resources, 397 .resources = tc6393xb_mmc_resources,
@@ -836,3 +873,4 @@ MODULE_LICENSE("GPL v2");
836MODULE_AUTHOR("Ian Molton, Dmitry Baryshkov and Dirk Opfer"); 873MODULE_AUTHOR("Ian Molton, Dmitry Baryshkov and Dirk Opfer");
837MODULE_DESCRIPTION("tc6393xb Toshiba Mobile IO Controller"); 874MODULE_DESCRIPTION("tc6393xb Toshiba Mobile IO Controller");
838MODULE_ALIAS("platform:tc6393xb"); 875MODULE_ALIAS("platform:tc6393xb");
876
diff --git a/drivers/mfd/tmio_core.c b/drivers/mfd/tmio_core.c
new file mode 100644
index 000000000000..eddc19ae464b
--- /dev/null
+++ b/drivers/mfd/tmio_core.c
@@ -0,0 +1,52 @@
1/*
2 * Copyright(c) 2009 Ian Molton <spyro@f2s.com>
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
9#include <linux/mfd/tmio.h>
10
11int tmio_core_mmc_enable(void __iomem *cnf, int shift, unsigned long base)
12{
13 /* Enable the MMC/SD Control registers */
14 sd_config_write16(cnf, shift, CNF_CMD, SDCREN);
15 sd_config_write32(cnf, shift, CNF_CTL_BASE, base & 0xfffe);
16
17 /* Disable SD power during suspend */
18 sd_config_write8(cnf, shift, CNF_PWR_CTL_3, 0x01);
19
20 /* The below is required but why? FIXME */
21 sd_config_write8(cnf, shift, CNF_STOP_CLK_CTL, 0x1f);
22
23 /* Power down SD bus */
24 sd_config_write8(cnf, shift, CNF_PWR_CTL_2, 0x00);
25
26 return 0;
27}
28EXPORT_SYMBOL(tmio_core_mmc_enable);
29
30int tmio_core_mmc_resume(void __iomem *cnf, int shift, unsigned long base)
31{
32
33 /* Enable the MMC/SD Control registers */
34 sd_config_write16(cnf, shift, CNF_CMD, SDCREN);
35 sd_config_write32(cnf, shift, CNF_CTL_BASE, base & 0xfffe);
36
37 return 0;
38}
39EXPORT_SYMBOL(tmio_core_mmc_resume);
40
41void tmio_core_mmc_pwr(void __iomem *cnf, int shift, int state)
42{
43 sd_config_write8(cnf, shift, CNF_PWR_CTL_2, state ? 0x02 : 0x00);
44}
45EXPORT_SYMBOL(tmio_core_mmc_pwr);
46
47void tmio_core_mmc_clk_div(void __iomem *cnf, int shift, int state)
48{
49 sd_config_write8(cnf, shift, CNF_SD_CLK_MODE, state ? 1 : 0);
50}
51EXPORT_SYMBOL(tmio_core_mmc_clk_div);
52
diff --git a/drivers/mfd/twl4030-irq.c b/drivers/mfd/twl4030-irq.c
index 20d29bafc9f5..9df9a5ad38f9 100644
--- a/drivers/mfd/twl4030-irq.c
+++ b/drivers/mfd/twl4030-irq.c
@@ -568,12 +568,12 @@ static void twl4030_sih_do_edge(struct work_struct *work)
568 568
569 bytes[byte] &= ~(0x03 << off); 569 bytes[byte] &= ~(0x03 << off);
570 570
571 spin_lock_irq(&d->lock); 571 raw_spin_lock_irq(&d->lock);
572 if (d->status & IRQ_TYPE_EDGE_RISING) 572 if (d->status & IRQ_TYPE_EDGE_RISING)
573 bytes[byte] |= BIT(off + 1); 573 bytes[byte] |= BIT(off + 1);
574 if (d->status & IRQ_TYPE_EDGE_FALLING) 574 if (d->status & IRQ_TYPE_EDGE_FALLING)
575 bytes[byte] |= BIT(off + 0); 575 bytes[byte] |= BIT(off + 0);
576 spin_unlock_irq(&d->lock); 576 raw_spin_unlock_irq(&d->lock);
577 577
578 edge_change &= ~BIT(i); 578 edge_change &= ~BIT(i);
579 } 579 }
diff --git a/drivers/mfd/wm8350-core.c b/drivers/mfd/wm8350-core.c
index 8485a7018060..9a970bd68775 100644
--- a/drivers/mfd/wm8350-core.c
+++ b/drivers/mfd/wm8350-core.c
@@ -134,8 +134,7 @@ static inline int is_reg_locked(struct wm8350 *wm8350, u8 reg)
134 wm8350->reg_cache[WM8350_SECURITY] == WM8350_UNLOCK_KEY) 134 wm8350->reg_cache[WM8350_SECURITY] == WM8350_UNLOCK_KEY)
135 return 0; 135 return 0;
136 136
137 if ((reg == WM8350_GPIO_CONFIGURATION_I_O) || 137 if ((reg >= WM8350_GPIO_FUNCTION_SELECT_1 &&
138 (reg >= WM8350_GPIO_FUNCTION_SELECT_1 &&
139 reg <= WM8350_GPIO_FUNCTION_SELECT_4) || 138 reg <= WM8350_GPIO_FUNCTION_SELECT_4) ||
140 (reg >= WM8350_BATTERY_CHARGER_CONTROL_1 && 139 (reg >= WM8350_BATTERY_CHARGER_CONTROL_1 &&
141 reg <= WM8350_BATTERY_CHARGER_CONTROL_3)) 140 reg <= WM8350_BATTERY_CHARGER_CONTROL_3))
diff --git a/drivers/mfd/wm8350-irq.c b/drivers/mfd/wm8350-irq.c
index c8df547c4747..9025f29e2707 100644
--- a/drivers/mfd/wm8350-irq.c
+++ b/drivers/mfd/wm8350-irq.c
@@ -434,7 +434,7 @@ int wm8350_register_irq(struct wm8350 *wm8350, int irq,
434 irq_handler_t handler, unsigned long flags, 434 irq_handler_t handler, unsigned long flags,
435 const char *name, void *data) 435 const char *name, void *data)
436{ 436{
437 if (irq < 0 || irq > WM8350_NUM_IRQ || !handler) 437 if (irq < 0 || irq >= WM8350_NUM_IRQ || !handler)
438 return -EINVAL; 438 return -EINVAL;
439 439
440 if (wm8350->irq[irq].handler) 440 if (wm8350->irq[irq].handler)
@@ -453,7 +453,7 @@ EXPORT_SYMBOL_GPL(wm8350_register_irq);
453 453
454int wm8350_free_irq(struct wm8350 *wm8350, int irq) 454int wm8350_free_irq(struct wm8350 *wm8350, int irq)
455{ 455{
456 if (irq < 0 || irq > WM8350_NUM_IRQ) 456 if (irq < 0 || irq >= WM8350_NUM_IRQ)
457 return -EINVAL; 457 return -EINVAL;
458 458
459 wm8350_mask_irq(wm8350, irq); 459 wm8350_mask_irq(wm8350, irq);
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
index 85f0e8cd875b..1f552c6e7579 100644
--- a/drivers/mmc/card/block.c
+++ b/drivers/mmc/card/block.c
@@ -85,7 +85,14 @@ static void mmc_blk_put(struct mmc_blk_data *md)
85 mutex_lock(&open_lock); 85 mutex_lock(&open_lock);
86 md->usage--; 86 md->usage--;
87 if (md->usage == 0) { 87 if (md->usage == 0) {
88 int devmaj = MAJOR(disk_devt(md->disk));
88 int devidx = MINOR(disk_devt(md->disk)) >> MMC_SHIFT; 89 int devidx = MINOR(disk_devt(md->disk)) >> MMC_SHIFT;
90
91 if (!devmaj)
92 devidx = md->disk->first_minor >> MMC_SHIFT;
93
94 blk_cleanup_queue(md->queue.queue);
95
89 __clear_bit(devidx, dev_use); 96 __clear_bit(devidx, dev_use);
90 97
91 put_disk(md->disk); 98 put_disk(md->disk);
@@ -613,6 +620,7 @@ static int mmc_blk_probe(struct mmc_card *card)
613 return 0; 620 return 0;
614 621
615 out: 622 out:
623 mmc_cleanup_queue(&md->queue);
616 mmc_blk_put(md); 624 mmc_blk_put(md);
617 625
618 return err; 626 return err;
diff --git a/drivers/mmc/card/mmc_test.c b/drivers/mmc/card/mmc_test.c
index b9f1e84897cc..e7f8027165e6 100644
--- a/drivers/mmc/card/mmc_test.c
+++ b/drivers/mmc/card/mmc_test.c
@@ -74,6 +74,9 @@ static void mmc_test_prepare_mrq(struct mmc_test_card *test,
74 } 74 }
75 75
76 mrq->cmd->arg = dev_addr; 76 mrq->cmd->arg = dev_addr;
77 if (!mmc_card_blockaddr(test->card))
78 mrq->cmd->arg <<= 9;
79
77 mrq->cmd->flags = MMC_RSP_R1 | MMC_CMD_ADTC; 80 mrq->cmd->flags = MMC_RSP_R1 | MMC_CMD_ADTC;
78 81
79 if (blocks == 1) 82 if (blocks == 1)
@@ -190,7 +193,7 @@ static int __mmc_test_prepare(struct mmc_test_card *test, int write)
190 } 193 }
191 194
192 for (i = 0;i < BUFFER_SIZE / 512;i++) { 195 for (i = 0;i < BUFFER_SIZE / 512;i++) {
193 ret = mmc_test_buffer_transfer(test, test->buffer, i * 512, 512, 1); 196 ret = mmc_test_buffer_transfer(test, test->buffer, i, 512, 1);
194 if (ret) 197 if (ret)
195 return ret; 198 return ret;
196 } 199 }
@@ -219,7 +222,7 @@ static int mmc_test_cleanup(struct mmc_test_card *test)
219 memset(test->buffer, 0, 512); 222 memset(test->buffer, 0, 512);
220 223
221 for (i = 0;i < BUFFER_SIZE / 512;i++) { 224 for (i = 0;i < BUFFER_SIZE / 512;i++) {
222 ret = mmc_test_buffer_transfer(test, test->buffer, i * 512, 512, 1); 225 ret = mmc_test_buffer_transfer(test, test->buffer, i, 512, 1);
223 if (ret) 226 if (ret)
224 return ret; 227 return ret;
225 } 228 }
@@ -426,7 +429,7 @@ static int mmc_test_transfer(struct mmc_test_card *test,
426 for (i = 0;i < sectors;i++) { 429 for (i = 0;i < sectors;i++) {
427 ret = mmc_test_buffer_transfer(test, 430 ret = mmc_test_buffer_transfer(test,
428 test->buffer + i * 512, 431 test->buffer + i * 512,
429 dev_addr + i * 512, 512, 0); 432 dev_addr + i, 512, 0);
430 if (ret) 433 if (ret)
431 return ret; 434 return ret;
432 } 435 }
diff --git a/drivers/mmc/card/queue.c b/drivers/mmc/card/queue.c
index 49e582356c65..c5a7a855f4b1 100644
--- a/drivers/mmc/card/queue.c
+++ b/drivers/mmc/card/queue.c
@@ -90,9 +90,10 @@ static void mmc_request(struct request_queue *q)
90 struct request *req; 90 struct request *req;
91 91
92 if (!mq) { 92 if (!mq) {
93 printk(KERN_ERR "MMC: killing requests for dead queue\n"); 93 while ((req = blk_fetch_request(q)) != NULL) {
94 while ((req = blk_fetch_request(q)) != NULL) 94 req->cmd_flags |= REQ_QUIET;
95 __blk_end_request_all(req, -EIO); 95 __blk_end_request_all(req, -EIO);
96 }
96 return; 97 return;
97 } 98 }
98 99
@@ -223,17 +224,18 @@ void mmc_cleanup_queue(struct mmc_queue *mq)
223 struct request_queue *q = mq->queue; 224 struct request_queue *q = mq->queue;
224 unsigned long flags; 225 unsigned long flags;
225 226
226 /* Mark that we should start throwing out stragglers */
227 spin_lock_irqsave(q->queue_lock, flags);
228 q->queuedata = NULL;
229 spin_unlock_irqrestore(q->queue_lock, flags);
230
231 /* Make sure the queue isn't suspended, as that will deadlock */ 227 /* Make sure the queue isn't suspended, as that will deadlock */
232 mmc_queue_resume(mq); 228 mmc_queue_resume(mq);
233 229
234 /* Then terminate our worker thread */ 230 /* Then terminate our worker thread */
235 kthread_stop(mq->thread); 231 kthread_stop(mq->thread);
236 232
233 /* Empty the queue */
234 spin_lock_irqsave(q->queue_lock, flags);
235 q->queuedata = NULL;
236 blk_start_queue(q);
237 spin_unlock_irqrestore(q->queue_lock, flags);
238
237 if (mq->bounce_sg) 239 if (mq->bounce_sg)
238 kfree(mq->bounce_sg); 240 kfree(mq->bounce_sg);
239 mq->bounce_sg = NULL; 241 mq->bounce_sg = NULL;
@@ -245,8 +247,6 @@ void mmc_cleanup_queue(struct mmc_queue *mq)
245 kfree(mq->bounce_buf); 247 kfree(mq->bounce_buf);
246 mq->bounce_buf = NULL; 248 mq->bounce_buf = NULL;
247 249
248 blk_cleanup_queue(mq->queue);
249
250 mq->card = NULL; 250 mq->card = NULL;
251} 251}
252EXPORT_SYMBOL(mmc_cleanup_queue); 252EXPORT_SYMBOL(mmc_cleanup_queue);
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index c11189446a1f..0eac6c814904 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -207,7 +207,7 @@ static int mmc_read_ext_csd(struct mmc_card *card)
207 } 207 }
208 208
209 card->ext_csd.rev = ext_csd[EXT_CSD_REV]; 209 card->ext_csd.rev = ext_csd[EXT_CSD_REV];
210 if (card->ext_csd.rev > 3) { 210 if (card->ext_csd.rev > 5) {
211 printk(KERN_ERR "%s: unrecognised EXT_CSD structure " 211 printk(KERN_ERR "%s: unrecognised EXT_CSD structure "
212 "version %d\n", mmc_hostname(card->host), 212 "version %d\n", mmc_hostname(card->host),
213 card->ext_csd.rev); 213 card->ext_csd.rev);
diff --git a/drivers/mmc/host/tmio_mmc.c b/drivers/mmc/host/tmio_mmc.c
index 7cccc8523747..e22c3fa3516a 100644
--- a/drivers/mmc/host/tmio_mmc.c
+++ b/drivers/mmc/host/tmio_mmc.c
@@ -46,7 +46,9 @@ static void tmio_mmc_set_clock(struct tmio_mmc_host *host, int new_clock)
46 clk |= 0x100; 46 clk |= 0x100;
47 } 47 }
48 48
49 sd_config_write8(host, CNF_SD_CLK_MODE, clk >> 22); 49 if (host->set_clk_div)
50 host->set_clk_div(host->pdev, (clk>>22) & 1);
51
50 sd_ctrl_write16(host, CTL_SD_CARD_CLK_CTL, clk & 0x1ff); 52 sd_ctrl_write16(host, CTL_SD_CARD_CLK_CTL, clk & 0x1ff);
51} 53}
52 54
@@ -427,12 +429,13 @@ static void tmio_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
427 /* Power sequence - OFF -> ON -> UP */ 429 /* Power sequence - OFF -> ON -> UP */
428 switch (ios->power_mode) { 430 switch (ios->power_mode) {
429 case MMC_POWER_OFF: /* power down SD bus */ 431 case MMC_POWER_OFF: /* power down SD bus */
430 sd_config_write8(host, CNF_PWR_CTL_2, 0x00); 432 if (host->set_pwr)
433 host->set_pwr(host->pdev, 0);
431 tmio_mmc_clk_stop(host); 434 tmio_mmc_clk_stop(host);
432 break; 435 break;
433 case MMC_POWER_ON: /* power up SD bus */ 436 case MMC_POWER_ON: /* power up SD bus */
434 437 if (host->set_pwr)
435 sd_config_write8(host, CNF_PWR_CTL_2, 0x02); 438 host->set_pwr(host->pdev, 1);
436 break; 439 break;
437 case MMC_POWER_UP: /* start bus clock */ 440 case MMC_POWER_UP: /* start bus clock */
438 tmio_mmc_clk_start(host); 441 tmio_mmc_clk_start(host);
@@ -485,21 +488,15 @@ static int tmio_mmc_resume(struct platform_device *dev)
485{ 488{
486 struct mfd_cell *cell = (struct mfd_cell *)dev->dev.platform_data; 489 struct mfd_cell *cell = (struct mfd_cell *)dev->dev.platform_data;
487 struct mmc_host *mmc = platform_get_drvdata(dev); 490 struct mmc_host *mmc = platform_get_drvdata(dev);
488 struct tmio_mmc_host *host = mmc_priv(mmc);
489 int ret = 0; 491 int ret = 0;
490 492
491 /* Tell the MFD core we are ready to be enabled */ 493 /* Tell the MFD core we are ready to be enabled */
492 if (cell->enable) { 494 if (cell->resume) {
493 ret = cell->enable(dev); 495 ret = cell->resume(dev);
494 if (ret) 496 if (ret)
495 goto out; 497 goto out;
496 } 498 }
497 499
498 /* Enable the MMC/SD Control registers */
499 sd_config_write16(host, CNF_CMD, SDCREN);
500 sd_config_write32(host, CNF_CTL_BASE,
501 (dev->resource[0].start >> host->bus_shift) & 0xfffe);
502
503 mmc_resume_host(mmc); 500 mmc_resume_host(mmc);
504 501
505out: 502out:
@@ -514,17 +511,16 @@ static int __devinit tmio_mmc_probe(struct platform_device *dev)
514{ 511{
515 struct mfd_cell *cell = (struct mfd_cell *)dev->dev.platform_data; 512 struct mfd_cell *cell = (struct mfd_cell *)dev->dev.platform_data;
516 struct tmio_mmc_data *pdata; 513 struct tmio_mmc_data *pdata;
517 struct resource *res_ctl, *res_cnf; 514 struct resource *res_ctl;
518 struct tmio_mmc_host *host; 515 struct tmio_mmc_host *host;
519 struct mmc_host *mmc; 516 struct mmc_host *mmc;
520 int ret = -EINVAL; 517 int ret = -EINVAL;
521 518
522 if (dev->num_resources != 3) 519 if (dev->num_resources != 2)
523 goto out; 520 goto out;
524 521
525 res_ctl = platform_get_resource(dev, IORESOURCE_MEM, 0); 522 res_ctl = platform_get_resource(dev, IORESOURCE_MEM, 0);
526 res_cnf = platform_get_resource(dev, IORESOURCE_MEM, 1); 523 if (!res_ctl)
527 if (!res_ctl || !res_cnf)
528 goto out; 524 goto out;
529 525
530 pdata = cell->driver_data; 526 pdata = cell->driver_data;
@@ -539,8 +535,12 @@ static int __devinit tmio_mmc_probe(struct platform_device *dev)
539 535
540 host = mmc_priv(mmc); 536 host = mmc_priv(mmc);
541 host->mmc = mmc; 537 host->mmc = mmc;
538 host->pdev = dev;
542 platform_set_drvdata(dev, mmc); 539 platform_set_drvdata(dev, mmc);
543 540
541 host->set_pwr = pdata->set_pwr;
542 host->set_clk_div = pdata->set_clk_div;
543
544 /* SD control register space size is 0x200, 0x400 for bus_shift=1 */ 544 /* SD control register space size is 0x200, 0x400 for bus_shift=1 */
545 host->bus_shift = resource_size(res_ctl) >> 10; 545 host->bus_shift = resource_size(res_ctl) >> 10;
546 546
@@ -548,10 +548,6 @@ static int __devinit tmio_mmc_probe(struct platform_device *dev)
548 if (!host->ctl) 548 if (!host->ctl)
549 goto host_free; 549 goto host_free;
550 550
551 host->cnf = ioremap(res_cnf->start, resource_size(res_cnf));
552 if (!host->cnf)
553 goto unmap_ctl;
554
555 mmc->ops = &tmio_mmc_ops; 551 mmc->ops = &tmio_mmc_ops;
556 mmc->caps = MMC_CAP_4_BIT_DATA; 552 mmc->caps = MMC_CAP_4_BIT_DATA;
557 mmc->f_max = pdata->hclk; 553 mmc->f_max = pdata->hclk;
@@ -562,23 +558,9 @@ static int __devinit tmio_mmc_probe(struct platform_device *dev)
562 if (cell->enable) { 558 if (cell->enable) {
563 ret = cell->enable(dev); 559 ret = cell->enable(dev);
564 if (ret) 560 if (ret)
565 goto unmap_cnf; 561 goto unmap_ctl;
566 } 562 }
567 563
568 /* Enable the MMC/SD Control registers */
569 sd_config_write16(host, CNF_CMD, SDCREN);
570 sd_config_write32(host, CNF_CTL_BASE,
571 (dev->resource[0].start >> host->bus_shift) & 0xfffe);
572
573 /* Disable SD power during suspend */
574 sd_config_write8(host, CNF_PWR_CTL_3, 0x01);
575
576 /* The below is required but why? FIXME */
577 sd_config_write8(host, CNF_STOP_CLK_CTL, 0x1f);
578
579 /* Power down SD bus*/
580 sd_config_write8(host, CNF_PWR_CTL_2, 0x00);
581
582 tmio_mmc_clk_stop(host); 564 tmio_mmc_clk_stop(host);
583 reset(host); 565 reset(host);
584 566
@@ -586,14 +568,14 @@ static int __devinit tmio_mmc_probe(struct platform_device *dev)
586 if (ret >= 0) 568 if (ret >= 0)
587 host->irq = ret; 569 host->irq = ret;
588 else 570 else
589 goto unmap_cnf; 571 goto unmap_ctl;
590 572
591 disable_mmc_irqs(host, TMIO_MASK_ALL); 573 disable_mmc_irqs(host, TMIO_MASK_ALL);
592 574
593 ret = request_irq(host->irq, tmio_mmc_irq, IRQF_DISABLED | 575 ret = request_irq(host->irq, tmio_mmc_irq, IRQF_DISABLED |
594 IRQF_TRIGGER_FALLING, dev_name(&dev->dev), host); 576 IRQF_TRIGGER_FALLING, dev_name(&dev->dev), host);
595 if (ret) 577 if (ret)
596 goto unmap_cnf; 578 goto unmap_ctl;
597 579
598 mmc_add_host(mmc); 580 mmc_add_host(mmc);
599 581
@@ -605,8 +587,6 @@ static int __devinit tmio_mmc_probe(struct platform_device *dev)
605 587
606 return 0; 588 return 0;
607 589
608unmap_cnf:
609 iounmap(host->cnf);
610unmap_ctl: 590unmap_ctl:
611 iounmap(host->ctl); 591 iounmap(host->ctl);
612host_free: 592host_free:
@@ -626,7 +606,6 @@ static int __devexit tmio_mmc_remove(struct platform_device *dev)
626 mmc_remove_host(mmc); 606 mmc_remove_host(mmc);
627 free_irq(host->irq, host); 607 free_irq(host->irq, host);
628 iounmap(host->ctl); 608 iounmap(host->ctl);
629 iounmap(host->cnf);
630 mmc_free_host(mmc); 609 mmc_free_host(mmc);
631 } 610 }
632 611
diff --git a/drivers/mmc/host/tmio_mmc.h b/drivers/mmc/host/tmio_mmc.h
index 9fa998594974..692dc23363b9 100644
--- a/drivers/mmc/host/tmio_mmc.h
+++ b/drivers/mmc/host/tmio_mmc.h
@@ -11,26 +11,6 @@
11 11
12#include <linux/highmem.h> 12#include <linux/highmem.h>
13 13
14#define CNF_CMD 0x04
15#define CNF_CTL_BASE 0x10
16#define CNF_INT_PIN 0x3d
17#define CNF_STOP_CLK_CTL 0x40
18#define CNF_GCLK_CTL 0x41
19#define CNF_SD_CLK_MODE 0x42
20#define CNF_PIN_STATUS 0x44
21#define CNF_PWR_CTL_1 0x48
22#define CNF_PWR_CTL_2 0x49
23#define CNF_PWR_CTL_3 0x4a
24#define CNF_CARD_DETECT_MODE 0x4c
25#define CNF_SD_SLOT 0x50
26#define CNF_EXT_GCLK_CTL_1 0xf0
27#define CNF_EXT_GCLK_CTL_2 0xf1
28#define CNF_EXT_GCLK_CTL_3 0xf9
29#define CNF_SD_LED_EN_1 0xfa
30#define CNF_SD_LED_EN_2 0xfe
31
32#define SDCREN 0x2 /* Enable access to MMC CTL regs. (flag in COMMAND_REG)*/
33
34#define CTL_SD_CMD 0x00 14#define CTL_SD_CMD 0x00
35#define CTL_ARG_REG 0x04 15#define CTL_ARG_REG 0x04
36#define CTL_STOP_INTERNAL_ACTION 0x08 16#define CTL_STOP_INTERNAL_ACTION 0x08
@@ -110,7 +90,6 @@
110 90
111 91
112struct tmio_mmc_host { 92struct tmio_mmc_host {
113 void __iomem *cnf;
114 void __iomem *ctl; 93 void __iomem *ctl;
115 unsigned long bus_shift; 94 unsigned long bus_shift;
116 struct mmc_command *cmd; 95 struct mmc_command *cmd;
@@ -119,10 +98,16 @@ struct tmio_mmc_host {
119 struct mmc_host *mmc; 98 struct mmc_host *mmc;
120 int irq; 99 int irq;
121 100
101 /* Callbacks for clock / power control */
102 void (*set_pwr)(struct platform_device *host, int state);
103 void (*set_clk_div)(struct platform_device *host, int state);
104
122 /* pio related stuff */ 105 /* pio related stuff */
123 struct scatterlist *sg_ptr; 106 struct scatterlist *sg_ptr;
124 unsigned int sg_len; 107 unsigned int sg_len;
125 unsigned int sg_off; 108 unsigned int sg_off;
109
110 struct platform_device *pdev;
126}; 111};
127 112
128#include <linux/io.h> 113#include <linux/io.h>
@@ -163,25 +148,6 @@ static inline void sd_ctrl_write32(struct tmio_mmc_host *host, int addr,
163 writew(val >> 16, host->ctl + ((addr + 2) << host->bus_shift)); 148 writew(val >> 16, host->ctl + ((addr + 2) << host->bus_shift));
164} 149}
165 150
166static inline void sd_config_write8(struct tmio_mmc_host *host, int addr,
167 u8 val)
168{
169 writeb(val, host->cnf + (addr << host->bus_shift));
170}
171
172static inline void sd_config_write16(struct tmio_mmc_host *host, int addr,
173 u16 val)
174{
175 writew(val, host->cnf + (addr << host->bus_shift));
176}
177
178static inline void sd_config_write32(struct tmio_mmc_host *host, int addr,
179 u32 val)
180{
181 writew(val, host->cnf + (addr << host->bus_shift));
182 writew(val >> 16, host->cnf + ((addr + 2) << host->bus_shift));
183}
184
185#include <linux/scatterlist.h> 151#include <linux/scatterlist.h>
186#include <linux/blkdev.h> 152#include <linux/blkdev.h>
187 153
diff --git a/drivers/mtd/maps/Kconfig b/drivers/mtd/maps/Kconfig
index 4c364d44ad59..2de0cc823d60 100644
--- a/drivers/mtd/maps/Kconfig
+++ b/drivers/mtd/maps/Kconfig
@@ -549,4 +549,21 @@ config MTD_VMU
549 To build this as a module select M here, the module will be called 549 To build this as a module select M here, the module will be called
550 vmu-flash. 550 vmu-flash.
551 551
552config MTD_PISMO
553 tristate "MTD discovery driver for PISMO modules"
554 depends on I2C
555 depends on ARCH_VERSATILE
556 help
557 This driver allows for discovery of PISMO modules - see
558 <http://www.pismoworld.org/>. These are small modules containing
559 up to five memory devices (eg, SRAM, flash, DOC) described by an
560 I2C EEPROM.
561
562 This driver does not create any MTD maps itself; instead it
563 creates MTD physmap and MTD SRAM platform devices. If you
564 enable this option, you should consider enabling MTD_PHYSMAP
565 and/or MTD_PLATRAM according to the devices on your module.
566
567 When built as a module, it will be called pismo.ko
568
552endmenu 569endmenu
diff --git a/drivers/mtd/maps/pismo.c b/drivers/mtd/maps/pismo.c
new file mode 100644
index 000000000000..c48cad271f5d
--- /dev/null
+++ b/drivers/mtd/maps/pismo.c
@@ -0,0 +1,320 @@
1/*
2 * PISMO memory driver - http://www.pismoworld.org/
3 *
4 * For ARM Realview and Versatile platforms
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License.
9 */
10#include <linux/init.h>
11#include <linux/module.h>
12#include <linux/i2c.h>
13#include <linux/platform_device.h>
14#include <linux/spinlock.h>
15#include <linux/mutex.h>
16#include <linux/mtd/physmap.h>
17#include <linux/mtd/plat-ram.h>
18#include <linux/mtd/pismo.h>
19
20#define PISMO_NUM_CS 5
21
22struct pismo_cs_block {
23 u8 type;
24 u8 width;
25 __le16 access;
26 __le32 size;
27 u32 reserved[2];
28 char device[32];
29} __packed;
30
31struct pismo_eeprom {
32 struct pismo_cs_block cs[PISMO_NUM_CS];
33 char board[15];
34 u8 sum;
35} __packed;
36
37struct pismo_mem {
38 phys_addr_t base;
39 u32 size;
40 u16 access;
41 u8 width;
42 u8 type;
43};
44
45struct pismo_data {
46 struct i2c_client *client;
47 void (*vpp)(void *, int);
48 void *vpp_data;
49 struct platform_device *dev[PISMO_NUM_CS];
50};
51
52/* FIXME: set_vpp could do with a better calling convention */
53static struct pismo_data *vpp_pismo;
54static DEFINE_MUTEX(pismo_mutex);
55
56static int pismo_setvpp_probe_fix(struct pismo_data *pismo)
57{
58 mutex_lock(&pismo_mutex);
59 if (vpp_pismo) {
60 mutex_unlock(&pismo_mutex);
61 kfree(pismo);
62 return -EBUSY;
63 }
64 vpp_pismo = pismo;
65 mutex_unlock(&pismo_mutex);
66 return 0;
67}
68
69static void pismo_setvpp_remove_fix(struct pismo_data *pismo)
70{
71 mutex_lock(&pismo_mutex);
72 if (vpp_pismo == pismo)
73 vpp_pismo = NULL;
74 mutex_unlock(&pismo_mutex);
75}
76
77static void pismo_set_vpp(struct map_info *map, int on)
78{
79 struct pismo_data *pismo = vpp_pismo;
80
81 pismo->vpp(pismo->vpp_data, on);
82}
83/* end of hack */
84
85
86static unsigned int __devinit pismo_width_to_bytes(unsigned int width)
87{
88 width &= 15;
89 if (width > 2)
90 return 0;
91 return 1 << width;
92}
93
94static int __devinit pismo_eeprom_read(struct i2c_client *client, void *buf,
95 u8 addr, size_t size)
96{
97 int ret;
98 struct i2c_msg msg[] = {
99 {
100 .addr = client->addr,
101 .len = sizeof(addr),
102 .buf = &addr,
103 }, {
104 .addr = client->addr,
105 .flags = I2C_M_RD,
106 .len = size,
107 .buf = buf,
108 },
109 };
110
111 ret = i2c_transfer(client->adapter, msg, ARRAY_SIZE(msg));
112
113 return ret == ARRAY_SIZE(msg) ? size : -EIO;
114}
115
116static int __devinit pismo_add_device(struct pismo_data *pismo, int i,
117 struct pismo_mem *region, const char *name, void *pdata, size_t psize)
118{
119 struct platform_device *dev;
120 struct resource res = { };
121 phys_addr_t base = region.base;
122 int ret;
123
124 if (base == ~0)
125 return -ENXIO;
126
127 res.start = base;
128 res.end = base + region->size - 1;
129 res.flags = IORESOURCE_MEM;
130
131 dev = platform_device_alloc(name, i);
132 if (!dev)
133 return -ENOMEM;
134 dev->dev.parent = &pismo->client->dev;
135
136 do {
137 ret = platform_device_add_resources(dev, &res, 1);
138 if (ret)
139 break;
140
141 ret = platform_device_add_data(dev, pdata, psize);
142 if (ret)
143 break;
144
145 ret = platform_device_add(dev);
146 if (ret)
147 break;
148
149 pismo->dev[i] = dev;
150 return 0;
151 } while (0);
152
153 platform_device_put(dev);
154 return ret;
155}
156
157static int __devinit pismo_add_nor(struct pismo_data *pismo, int i,
158 struct pismo_mem *region)
159{
160 struct physmap_flash_data data = {
161 .width = region->width,
162 };
163
164 if (pismo->vpp)
165 data.set_vpp = pismo_set_vpp;
166
167 return pismo_add_device(pismo, i, region, "physmap-flash",
168 &data, sizeof(data));
169}
170
171static int __devinit pismo_add_sram(struct pismo_data *pismo, int i,
172 struct pismo_mem *region)
173{
174 struct platdata_mtd_ram data = {
175 .bankwidth = region->width,
176 };
177
178 return pismo_add_device(pismo, i, region, "mtd-ram",
179 &data, sizeof(data));
180}
181
182static void __devinit pismo_add_one(struct pismo_data *pismo, int i,
183 const struct pismo_cs_block *cs, phys_addr_t base)
184{
185 struct device *dev = &pismo->client->dev;
186 struct pismo_mem region;
187
188 region.base = base;
189 region.type = cs->type;
190 region.width = pismo_width_to_bytes(cs->width);
191 region.access = le16_to_cpu(cs->access);
192 region.size = le32_to_cpu(cs->size);
193
194 if (region.width == 0) {
195 dev_err(dev, "cs%u: bad width: %02x, ignoring\n", i, cs->width);
196 return;
197 }
198
199 /*
200 * FIXME: may need to the platforms memory controller here, but at
201 * the moment we assume that it has already been correctly setup.
202 * The memory controller can also tell us the base address as well.
203 */
204
205 dev_info(dev, "cs%u: %.32s: type %02x access %u00ps size %uK\n",
206 i, cs->device, region.type, region.access, region.size / 1024);
207
208 switch (region.type) {
209 case 0:
210 break;
211 case 1:
212 /* static DOC */
213 break;
214 case 2:
215 /* static NOR */
216 pismo_add_nor(pismo, i, &region);
217 break;
218 case 3:
219 /* static RAM */
220 pismo_add_sram(pismo, i, &region);
221 break;
222 }
223}
224
225static int __devexit pismo_remove(struct i2c_client *client)
226{
227 struct pismo_data *pismo = i2c_get_clientdata(client);
228 int i;
229
230 for (i = 0; i < ARRAY_SIZE(pismo->dev); i++)
231 platform_device_unregister(pismo->dev[i]);
232
233 /* FIXME: set_vpp needs saner arguments */
234 pismo_setvpp_remove_fix(pismo);
235
236 kfree(pismo);
237
238 return 0;
239}
240
241static int __devinit pismo_probe(struct i2c_client *client,
242 const struct i2c_device_id *id)
243{
244 struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent);
245 struct pismo_pdata *pdata = client->dev.platform_data;
246 struct pismo_eeprom eeprom;
247 struct pismo_data *pismo;
248 int ret, i;
249
250 if (!i2c_check_functionality(adapter, I2C_FUNC_I2C)) {
251 dev_err(&client->dev, "functionality mismatch\n");
252 return -EIO;
253 }
254
255 pismo = kzalloc(sizeof(*pismo), GFP_KERNEL);
256 if (!pismo)
257 return -ENOMEM;
258
259 /* FIXME: set_vpp needs saner arguments */
260 ret = pismo_setvpp_probe_fix(pismo);
261 if (ret)
262 return ret;
263
264 pismo->client = client;
265 if (pdata) {
266 pismo->vpp = pdata->set_vpp;
267 pismo->vpp_data = pdata->vpp_data;
268 }
269 i2c_set_clientdata(client, pismo);
270
271 ret = pismo_eeprom_read(client, &eeprom, 0, sizeof(eeprom));
272 if (ret < 0) {
273 dev_err(&client->dev, "error reading EEPROM: %d\n", ret);
274 return ret;
275 }
276
277 dev_info(&client->dev, "%.15s board found\n", eeprom.board);
278
279 for (i = 0; i < ARRAY_SIZE(eeprom.cs); i++)
280 if (eeprom.cs[i].type != 0xff)
281 pismo_add_one(pismo, i, &eeprom.cs[i],
282 pdata->cs_addrs[i]);
283
284 return 0;
285}
286
287static const struct i2c_device_id pismo_id[] = {
288 { "pismo" },
289 { },
290};
291MODULE_DEVICE_TABLE(i2c, pismo_id);
292
293static struct i2c_driver pismo_driver = {
294 .driver = {
295 .name = "pismo",
296 .owner = THIS_MODULE,
297 },
298 .probe = pismo_probe,
299 .remove = __devexit_p(pismo_remove),
300 .id_table = pismo_id,
301};
302
303static int __init pismo_init(void)
304{
305 BUILD_BUG_ON(sizeof(struct pismo_cs_block) != 48);
306 BUILD_BUG_ON(sizeof(struct pismo_eeprom) != 256);
307
308 return i2c_add_driver(&pismo_driver);
309}
310module_init(pismo_init);
311
312static void __exit pismo_exit(void)
313{
314 i2c_del_driver(&pismo_driver);
315}
316module_exit(pismo_exit);
317
318MODULE_AUTHOR("Russell King <linux@arm.linux.org.uk>");
319MODULE_DESCRIPTION("PISMO memory driver");
320MODULE_LICENSE("GPL");
diff --git a/drivers/mtd/mtdoops.c b/drivers/mtd/mtdoops.c
index a714ec482761..92e12df0917f 100644
--- a/drivers/mtd/mtdoops.c
+++ b/drivers/mtd/mtdoops.c
@@ -322,7 +322,7 @@ static void mtdoops_do_dump(struct kmsg_dumper *dumper,
322 memcpy(dst + l1_cpy, s2 + s2_start, l2_cpy); 322 memcpy(dst + l1_cpy, s2 + s2_start, l2_cpy);
323 323
324 /* Panics must be written immediately */ 324 /* Panics must be written immediately */
325 if (reason == KMSG_DUMP_PANIC) { 325 if (reason != KMSG_DUMP_OOPS) {
326 if (!cxt->mtd->panic_write) 326 if (!cxt->mtd->panic_write)
327 printk(KERN_ERR "mtdoops: Cannot write from panic without panic_write\n"); 327 printk(KERN_ERR "mtdoops: Cannot write from panic without panic_write\n");
328 else 328 else
diff --git a/drivers/mtd/tests/mtd_readtest.c b/drivers/mtd/tests/mtd_readtest.c
index 79fc4530987b..25c5dd03a837 100644
--- a/drivers/mtd/tests/mtd_readtest.c
+++ b/drivers/mtd/tests/mtd_readtest.c
@@ -147,6 +147,10 @@ static int scan_for_bad_eraseblocks(void)
147 } 147 }
148 memset(bbt, 0 , ebcnt); 148 memset(bbt, 0 , ebcnt);
149 149
150 /* NOR flash does not implement block_isbad */
151 if (mtd->block_isbad == NULL)
152 return 0;
153
150 printk(PRINT_PREF "scanning for bad eraseblocks\n"); 154 printk(PRINT_PREF "scanning for bad eraseblocks\n");
151 for (i = 0; i < ebcnt; ++i) { 155 for (i = 0; i < ebcnt; ++i) {
152 bbt[i] = is_block_bad(i) ? 1 : 0; 156 bbt[i] = is_block_bad(i) ? 1 : 0;
@@ -184,7 +188,7 @@ static int __init mtd_readtest_init(void)
184 tmp = mtd->size; 188 tmp = mtd->size;
185 do_div(tmp, mtd->erasesize); 189 do_div(tmp, mtd->erasesize);
186 ebcnt = tmp; 190 ebcnt = tmp;
187 pgcnt = mtd->erasesize / mtd->writesize; 191 pgcnt = mtd->erasesize / pgsize;
188 192
189 printk(PRINT_PREF "MTD device size %llu, eraseblock size %u, " 193 printk(PRINT_PREF "MTD device size %llu, eraseblock size %u, "
190 "page size %u, count of eraseblocks %u, pages per " 194 "page size %u, count of eraseblocks %u, pages per "
diff --git a/drivers/mtd/tests/mtd_speedtest.c b/drivers/mtd/tests/mtd_speedtest.c
index 141363a7e805..7fbb51d4eabe 100644
--- a/drivers/mtd/tests/mtd_speedtest.c
+++ b/drivers/mtd/tests/mtd_speedtest.c
@@ -301,6 +301,10 @@ static int scan_for_bad_eraseblocks(void)
301 } 301 }
302 memset(bbt, 0 , ebcnt); 302 memset(bbt, 0 , ebcnt);
303 303
304 /* NOR flash does not implement block_isbad */
305 if (mtd->block_isbad == NULL)
306 goto out;
307
304 printk(PRINT_PREF "scanning for bad eraseblocks\n"); 308 printk(PRINT_PREF "scanning for bad eraseblocks\n");
305 for (i = 0; i < ebcnt; ++i) { 309 for (i = 0; i < ebcnt; ++i) {
306 bbt[i] = is_block_bad(i) ? 1 : 0; 310 bbt[i] = is_block_bad(i) ? 1 : 0;
@@ -309,6 +313,7 @@ static int scan_for_bad_eraseblocks(void)
309 cond_resched(); 313 cond_resched();
310 } 314 }
311 printk(PRINT_PREF "scanned %d eraseblocks, %d are bad\n", i, bad); 315 printk(PRINT_PREF "scanned %d eraseblocks, %d are bad\n", i, bad);
316out:
312 goodebcnt = ebcnt - bad; 317 goodebcnt = ebcnt - bad;
313 return 0; 318 return 0;
314} 319}
@@ -340,7 +345,7 @@ static int __init mtd_speedtest_init(void)
340 tmp = mtd->size; 345 tmp = mtd->size;
341 do_div(tmp, mtd->erasesize); 346 do_div(tmp, mtd->erasesize);
342 ebcnt = tmp; 347 ebcnt = tmp;
343 pgcnt = mtd->erasesize / mtd->writesize; 348 pgcnt = mtd->erasesize / pgsize;
344 349
345 printk(PRINT_PREF "MTD device size %llu, eraseblock size %u, " 350 printk(PRINT_PREF "MTD device size %llu, eraseblock size %u, "
346 "page size %u, count of eraseblocks %u, pages per " 351 "page size %u, count of eraseblocks %u, pages per "
diff --git a/drivers/mtd/tests/mtd_stresstest.c b/drivers/mtd/tests/mtd_stresstest.c
index 63920476b57a..a99d3cd737d8 100644
--- a/drivers/mtd/tests/mtd_stresstest.c
+++ b/drivers/mtd/tests/mtd_stresstest.c
@@ -227,6 +227,10 @@ static int scan_for_bad_eraseblocks(void)
227 } 227 }
228 memset(bbt, 0 , ebcnt); 228 memset(bbt, 0 , ebcnt);
229 229
230 /* NOR flash does not implement block_isbad */
231 if (mtd->block_isbad == NULL)
232 return 0;
233
230 printk(PRINT_PREF "scanning for bad eraseblocks\n"); 234 printk(PRINT_PREF "scanning for bad eraseblocks\n");
231 for (i = 0; i < ebcnt; ++i) { 235 for (i = 0; i < ebcnt; ++i) {
232 bbt[i] = is_block_bad(i) ? 1 : 0; 236 bbt[i] = is_block_bad(i) ? 1 : 0;
@@ -265,7 +269,7 @@ static int __init mtd_stresstest_init(void)
265 tmp = mtd->size; 269 tmp = mtd->size;
266 do_div(tmp, mtd->erasesize); 270 do_div(tmp, mtd->erasesize);
267 ebcnt = tmp; 271 ebcnt = tmp;
268 pgcnt = mtd->erasesize / mtd->writesize; 272 pgcnt = mtd->erasesize / pgsize;
269 273
270 printk(PRINT_PREF "MTD device size %llu, eraseblock size %u, " 274 printk(PRINT_PREF "MTD device size %llu, eraseblock size %u, "
271 "page size %u, count of eraseblocks %u, pages per " 275 "page size %u, count of eraseblocks %u, pages per "
diff --git a/drivers/mtd/ubi/cdev.c b/drivers/mtd/ubi/cdev.c
index f237ddbb2713..111ea41c4ecd 100644
--- a/drivers/mtd/ubi/cdev.c
+++ b/drivers/mtd/ubi/cdev.c
@@ -853,7 +853,6 @@ static long ubi_cdev_ioctl(struct file *file, unsigned int cmd,
853 break; 853 break;
854 } 854 }
855 855
856 req.name[req.name_len] = '\0';
857 err = verify_mkvol_req(ubi, &req); 856 err = verify_mkvol_req(ubi, &req);
858 if (err) 857 if (err)
859 break; 858 break;
diff --git a/drivers/mtd/ubi/kapi.c b/drivers/mtd/ubi/kapi.c
index 277786ebaa2c..1361574e2b00 100644
--- a/drivers/mtd/ubi/kapi.c
+++ b/drivers/mtd/ubi/kapi.c
@@ -291,8 +291,7 @@ EXPORT_SYMBOL_GPL(ubi_open_volume_nm);
291 */ 291 */
292struct ubi_volume_desc *ubi_open_volume_path(const char *pathname, int mode) 292struct ubi_volume_desc *ubi_open_volume_path(const char *pathname, int mode)
293{ 293{
294 int error, ubi_num, vol_id; 294 int error, ubi_num, vol_id, mod;
295 struct ubi_volume_desc *ret;
296 struct inode *inode; 295 struct inode *inode;
297 struct path path; 296 struct path path;
298 297
@@ -306,16 +305,16 @@ struct ubi_volume_desc *ubi_open_volume_path(const char *pathname, int mode)
306 return ERR_PTR(error); 305 return ERR_PTR(error);
307 306
308 inode = path.dentry->d_inode; 307 inode = path.dentry->d_inode;
308 mod = inode->i_mode;
309 ubi_num = ubi_major2num(imajor(inode)); 309 ubi_num = ubi_major2num(imajor(inode));
310 vol_id = iminor(inode) - 1; 310 vol_id = iminor(inode) - 1;
311 path_put(&path);
311 312
313 if (!S_ISCHR(mod))
314 return ERR_PTR(-EINVAL);
312 if (vol_id >= 0 && ubi_num >= 0) 315 if (vol_id >= 0 && ubi_num >= 0)
313 ret = ubi_open_volume(ubi_num, vol_id, mode); 316 return ubi_open_volume(ubi_num, vol_id, mode);
314 else 317 return ERR_PTR(-ENODEV);
315 ret = ERR_PTR(-ENODEV);
316
317 path_put(&path);
318 return ret;
319} 318}
320EXPORT_SYMBOL_GPL(ubi_open_volume_path); 319EXPORT_SYMBOL_GPL(ubi_open_volume_path);
321 320
diff --git a/drivers/mtd/ubi/upd.c b/drivers/mtd/ubi/upd.c
index c1d7b880c795..425bf5a3edd4 100644
--- a/drivers/mtd/ubi/upd.c
+++ b/drivers/mtd/ubi/upd.c
@@ -155,6 +155,7 @@ int ubi_start_update(struct ubi_device *ubi, struct ubi_volume *vol,
155 if (err) 155 if (err)
156 return err; 156 return err;
157 vol->updating = 0; 157 vol->updating = 0;
158 return 0;
158 } 159 }
159 160
160 vol->upd_buf = vmalloc(ubi->leb_size); 161 vol->upd_buf = vmalloc(ubi->leb_size);
diff --git a/drivers/mtd/ubi/vtbl.c b/drivers/mtd/ubi/vtbl.c
index 1afc61e7455d..40044028d682 100644
--- a/drivers/mtd/ubi/vtbl.c
+++ b/drivers/mtd/ubi/vtbl.c
@@ -566,6 +566,7 @@ static int init_volumes(struct ubi_device *ubi, const struct ubi_scan_info *si,
566 vol->reserved_pebs = be32_to_cpu(vtbl[i].reserved_pebs); 566 vol->reserved_pebs = be32_to_cpu(vtbl[i].reserved_pebs);
567 vol->alignment = be32_to_cpu(vtbl[i].alignment); 567 vol->alignment = be32_to_cpu(vtbl[i].alignment);
568 vol->data_pad = be32_to_cpu(vtbl[i].data_pad); 568 vol->data_pad = be32_to_cpu(vtbl[i].data_pad);
569 vol->upd_marker = vtbl[i].upd_marker;
569 vol->vol_type = vtbl[i].vol_type == UBI_VID_DYNAMIC ? 570 vol->vol_type = vtbl[i].vol_type == UBI_VID_DYNAMIC ?
570 UBI_DYNAMIC_VOLUME : UBI_STATIC_VOLUME; 571 UBI_DYNAMIC_VOLUME : UBI_STATIC_VOLUME;
571 vol->name_len = be16_to_cpu(vtbl[i].name_len); 572 vol->name_len = be16_to_cpu(vtbl[i].name_len);
diff --git a/drivers/net/3c507.c b/drivers/net/3c507.c
index fbc231153e55..77cf0901a441 100644
--- a/drivers/net/3c507.c
+++ b/drivers/net/3c507.c
@@ -56,6 +56,7 @@ static const char version[] =
56#include <linux/errno.h> 56#include <linux/errno.h>
57#include <linux/netdevice.h> 57#include <linux/netdevice.h>
58#include <linux/etherdevice.h> 58#include <linux/etherdevice.h>
59#include <linux/if_ether.h>
59#include <linux/skbuff.h> 60#include <linux/skbuff.h>
60#include <linux/slab.h> 61#include <linux/slab.h>
61#include <linux/init.h> 62#include <linux/init.h>
@@ -734,8 +735,7 @@ static void init_82586_mem(struct net_device *dev)
734 memcpy_toio(lp->base, init_words + 5, sizeof(init_words) - 10); 735 memcpy_toio(lp->base, init_words + 5, sizeof(init_words) - 10);
735 736
736 /* Fill in the station address. */ 737 /* Fill in the station address. */
737 memcpy_toio(lp->base+SA_OFFSET, dev->dev_addr, 738 memcpy_toio(lp->base+SA_OFFSET, dev->dev_addr, ETH_ALEN);
738 sizeof(dev->dev_addr));
739 739
740 /* The Tx-block list is written as needed. We just set up the values. */ 740 /* The Tx-block list is written as needed. We just set up the values. */
741 lp->tx_cmd_link = IDLELOOP + 4; 741 lp->tx_cmd_link = IDLELOOP + 4;
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index e58a65391ad2..dd9a09c72dff 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -2346,6 +2346,7 @@ config GELIC_NET
2346 2346
2347config GELIC_WIRELESS 2347config GELIC_WIRELESS
2348 bool "PS3 Wireless support" 2348 bool "PS3 Wireless support"
2349 depends on WLAN
2349 depends on GELIC_NET 2350 depends on GELIC_NET
2350 select WIRELESS_EXT 2351 select WIRELESS_EXT
2351 help 2352 help
@@ -2358,6 +2359,7 @@ config GELIC_WIRELESS
2358config GELIC_WIRELESS_OLD_PSK_INTERFACE 2359config GELIC_WIRELESS_OLD_PSK_INTERFACE
2359 bool "PS3 Wireless private PSK interface (OBSOLETE)" 2360 bool "PS3 Wireless private PSK interface (OBSOLETE)"
2360 depends on GELIC_WIRELESS 2361 depends on GELIC_WIRELESS
2362 select WEXT_PRIV
2361 help 2363 help
2362 This option retains the obsolete private interface to pass 2364 This option retains the obsolete private interface to pass
2363 the PSK from user space programs to the driver. The PSK 2365 the PSK from user space programs to the driver. The PSK
diff --git a/drivers/net/arm/Kconfig b/drivers/net/arm/Kconfig
index c37ee9e6b67b..39e1c0d39476 100644
--- a/drivers/net/arm/Kconfig
+++ b/drivers/net/arm/Kconfig
@@ -68,6 +68,7 @@ config W90P910_ETH
68 tristate "Nuvoton w90p910 Ethernet support" 68 tristate "Nuvoton w90p910 Ethernet support"
69 depends on ARM && ARCH_W90X900 69 depends on ARM && ARCH_W90X900
70 select PHYLIB 70 select PHYLIB
71 select MII
71 help 72 help
72 Say Y here if you want to use built-in Ethernet ports 73 Say Y here if you want to use built-in Ethernet ports
73 on w90p910 processor. 74 on w90p910 processor.
diff --git a/drivers/net/atarilance.c b/drivers/net/atarilance.c
index c5721cb38265..cc9ed8643910 100644
--- a/drivers/net/atarilance.c
+++ b/drivers/net/atarilance.c
@@ -663,7 +663,7 @@ static int lance_open( struct net_device *dev )
663 while (--i > 0) 663 while (--i > 0)
664 if (DREG & CSR0_IDON) 664 if (DREG & CSR0_IDON)
665 break; 665 break;
666 if (i < 0 || (DREG & CSR0_ERR)) { 666 if (i <= 0 || (DREG & CSR0_ERR)) {
667 DPRINTK( 2, ( "lance_open(): opening %s failed, i=%d, csr0=%04x\n", 667 DPRINTK( 2, ( "lance_open(): opening %s failed, i=%d, csr0=%04x\n",
668 dev->name, i, DREG )); 668 dev->name, i, DREG ));
669 DREG = CSR0_STOP; 669 DREG = CSR0_STOP;
diff --git a/drivers/net/atlx/atl2.c b/drivers/net/atlx/atl2.c
index c0451d75cdcf..ec52529394ad 100644
--- a/drivers/net/atlx/atl2.c
+++ b/drivers/net/atlx/atl2.c
@@ -1959,12 +1959,15 @@ static int atl2_get_eeprom(struct net_device *netdev,
1959 return -ENOMEM; 1959 return -ENOMEM;
1960 1960
1961 for (i = first_dword; i < last_dword; i++) { 1961 for (i = first_dword; i < last_dword; i++) {
1962 if (!atl2_read_eeprom(hw, i*4, &(eeprom_buff[i-first_dword]))) 1962 if (!atl2_read_eeprom(hw, i*4, &(eeprom_buff[i-first_dword]))) {
1963 return -EIO; 1963 ret_val = -EIO;
1964 goto free;
1965 }
1964 } 1966 }
1965 1967
1966 memcpy(bytes, (u8 *)eeprom_buff + (eeprom->offset & 3), 1968 memcpy(bytes, (u8 *)eeprom_buff + (eeprom->offset & 3),
1967 eeprom->len); 1969 eeprom->len);
1970free:
1968 kfree(eeprom_buff); 1971 kfree(eeprom_buff);
1969 1972
1970 return ret_val; 1973 return ret_val;
diff --git a/drivers/net/ax88796.c b/drivers/net/ax88796.c
index 62d9c9cc5671..1dd4403247ca 100644
--- a/drivers/net/ax88796.c
+++ b/drivers/net/ax88796.c
@@ -921,7 +921,7 @@ static int ax_probe(struct platform_device *pdev)
921 size = (res->end - res->start) + 1; 921 size = (res->end - res->start) + 1;
922 922
923 ax->mem2 = request_mem_region(res->start, size, pdev->name); 923 ax->mem2 = request_mem_region(res->start, size, pdev->name);
924 if (ax->mem == NULL) { 924 if (ax->mem2 == NULL) {
925 dev_err(&pdev->dev, "cannot reserve registers\n"); 925 dev_err(&pdev->dev, "cannot reserve registers\n");
926 ret = -ENXIO; 926 ret = -ENXIO;
927 goto exit_mem1; 927 goto exit_mem1;
diff --git a/drivers/net/benet/be.h b/drivers/net/benet/be.h
index 9e56014d27ed..5bc74590c73e 100644
--- a/drivers/net/benet/be.h
+++ b/drivers/net/benet/be.h
@@ -275,8 +275,14 @@ struct be_adapter {
275 u32 tx_fc; /* Tx flow control */ 275 u32 tx_fc; /* Tx flow control */
276 int link_speed; 276 int link_speed;
277 u8 port_type; 277 u8 port_type;
278 u8 transceiver;
279 u8 generation; /* BladeEngine ASIC generation */
278}; 280};
279 281
282/* BladeEngine Generation numbers */
283#define BE_GEN2 2
284#define BE_GEN3 3
285
280extern const struct ethtool_ops be_ethtool_ops; 286extern const struct ethtool_ops be_ethtool_ops;
281 287
282#define drvr_stats(adapter) (&adapter->stats.drvr_stats) 288#define drvr_stats(adapter) (&adapter->stats.drvr_stats)
diff --git a/drivers/net/benet/be_cmds.c b/drivers/net/benet/be_cmds.c
index 1b68bd98dc0c..006cb2efcd22 100644
--- a/drivers/net/benet/be_cmds.c
+++ b/drivers/net/benet/be_cmds.c
@@ -286,7 +286,7 @@ static void be_wrb_hdr_prepare(struct be_mcc_wrb *wrb, int payload_len,
286 MCC_WRB_SGE_CNT_SHIFT; 286 MCC_WRB_SGE_CNT_SHIFT;
287 wrb->payload_length = payload_len; 287 wrb->payload_length = payload_len;
288 wrb->tag0 = opcode; 288 wrb->tag0 = opcode;
289 be_dws_cpu_to_le(wrb, 20); 289 be_dws_cpu_to_le(wrb, 8);
290} 290}
291 291
292/* Don't touch the hdr after it's prepared */ 292/* Don't touch the hdr after it's prepared */
@@ -296,6 +296,7 @@ static void be_cmd_hdr_prepare(struct be_cmd_req_hdr *req_hdr,
296 req_hdr->opcode = opcode; 296 req_hdr->opcode = opcode;
297 req_hdr->subsystem = subsystem; 297 req_hdr->subsystem = subsystem;
298 req_hdr->request_length = cpu_to_le32(cmd_len - sizeof(*req_hdr)); 298 req_hdr->request_length = cpu_to_le32(cmd_len - sizeof(*req_hdr));
299 req_hdr->version = 0;
299} 300}
300 301
301static void be_cmd_page_addrs_prepare(struct phys_addr *pages, u32 max_pages, 302static void be_cmd_page_addrs_prepare(struct phys_addr *pages, u32 max_pages,
@@ -1479,6 +1480,41 @@ err:
1479 return status; 1480 return status;
1480} 1481}
1481 1482
1483int be_cmd_set_loopback(struct be_adapter *adapter, u8 port_num,
1484 u8 loopback_type, u8 enable)
1485{
1486 struct be_mcc_wrb *wrb;
1487 struct be_cmd_req_set_lmode *req;
1488 int status;
1489
1490 spin_lock_bh(&adapter->mcc_lock);
1491
1492 wrb = wrb_from_mccq(adapter);
1493 if (!wrb) {
1494 status = -EBUSY;
1495 goto err;
1496 }
1497
1498 req = embedded_payload(wrb);
1499
1500 be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0,
1501 OPCODE_LOWLEVEL_SET_LOOPBACK_MODE);
1502
1503 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_LOWLEVEL,
1504 OPCODE_LOWLEVEL_SET_LOOPBACK_MODE,
1505 sizeof(*req));
1506
1507 req->src_port = port_num;
1508 req->dest_port = port_num;
1509 req->loopback_type = loopback_type;
1510 req->loopback_state = enable;
1511
1512 status = be_mcc_notify_wait(adapter);
1513err:
1514 spin_unlock_bh(&adapter->mcc_lock);
1515 return status;
1516}
1517
1482int be_cmd_loopback_test(struct be_adapter *adapter, u32 port_num, 1518int be_cmd_loopback_test(struct be_adapter *adapter, u32 port_num,
1483 u32 loopback_type, u32 pkt_size, u32 num_pkts, u64 pattern) 1519 u32 loopback_type, u32 pkt_size, u32 num_pkts, u64 pattern)
1484{ 1520{
@@ -1501,6 +1537,7 @@ int be_cmd_loopback_test(struct be_adapter *adapter, u32 port_num,
1501 1537
1502 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_LOWLEVEL, 1538 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_LOWLEVEL,
1503 OPCODE_LOWLEVEL_LOOPBACK_TEST, sizeof(*req)); 1539 OPCODE_LOWLEVEL_LOOPBACK_TEST, sizeof(*req));
1540 req->hdr.timeout = 4;
1504 1541
1505 req->pattern = cpu_to_le64(pattern); 1542 req->pattern = cpu_to_le64(pattern);
1506 req->src_port = cpu_to_le32(port_num); 1543 req->src_port = cpu_to_le32(port_num);
diff --git a/drivers/net/benet/be_cmds.h b/drivers/net/benet/be_cmds.h
index 92b87ef156ed..13b33c841083 100644
--- a/drivers/net/benet/be_cmds.h
+++ b/drivers/net/benet/be_cmds.h
@@ -155,6 +155,7 @@ struct be_mcc_mailbox {
155 155
156#define OPCODE_LOWLEVEL_HOST_DDR_DMA 17 156#define OPCODE_LOWLEVEL_HOST_DDR_DMA 17
157#define OPCODE_LOWLEVEL_LOOPBACK_TEST 18 157#define OPCODE_LOWLEVEL_LOOPBACK_TEST 18
158#define OPCODE_LOWLEVEL_SET_LOOPBACK_MODE 19
158 159
159struct be_cmd_req_hdr { 160struct be_cmd_req_hdr {
160 u8 opcode; /* dword 0 */ 161 u8 opcode; /* dword 0 */
@@ -163,7 +164,8 @@ struct be_cmd_req_hdr {
163 u8 domain; /* dword 0 */ 164 u8 domain; /* dword 0 */
164 u32 timeout; /* dword 1 */ 165 u32 timeout; /* dword 1 */
165 u32 request_length; /* dword 2 */ 166 u32 request_length; /* dword 2 */
166 u32 rsvd; /* dword 3 */ 167 u8 version; /* dword 3 */
168 u8 rsvd[3]; /* dword 3 */
167}; 169};
168 170
169#define RESP_HDR_INFO_OPCODE_SHIFT 0 /* bits 0 - 7 */ 171#define RESP_HDR_INFO_OPCODE_SHIFT 0 /* bits 0 - 7 */
@@ -821,6 +823,19 @@ struct be_cmd_resp_loopback_test {
821 u32 ticks_compl; 823 u32 ticks_compl;
822}; 824};
823 825
826struct be_cmd_req_set_lmode {
827 struct be_cmd_req_hdr hdr;
828 u8 src_port;
829 u8 dest_port;
830 u8 loopback_type;
831 u8 loopback_state;
832};
833
834struct be_cmd_resp_set_lmode {
835 struct be_cmd_resp_hdr resp_hdr;
836 u8 rsvd0[4];
837};
838
824/********************** DDR DMA test *********************/ 839/********************** DDR DMA test *********************/
825struct be_cmd_req_ddrdma_test { 840struct be_cmd_req_ddrdma_test {
826 struct be_cmd_req_hdr hdr; 841 struct be_cmd_req_hdr hdr;
@@ -912,3 +927,5 @@ extern int be_cmd_loopback_test(struct be_adapter *adapter, u32 port_num,
912 u32 num_pkts, u64 pattern); 927 u32 num_pkts, u64 pattern);
913extern int be_cmd_ddr_dma_test(struct be_adapter *adapter, u64 pattern, 928extern int be_cmd_ddr_dma_test(struct be_adapter *adapter, u64 pattern,
914 u32 byte_cnt, struct be_dma_mem *cmd); 929 u32 byte_cnt, struct be_dma_mem *cmd);
930extern int be_cmd_set_loopback(struct be_adapter *adapter, u8 port_num,
931 u8 loopback_type, u8 enable);
diff --git a/drivers/net/benet/be_ethtool.c b/drivers/net/benet/be_ethtool.c
index 298b92cbd689..5d001c4deac1 100644
--- a/drivers/net/benet/be_ethtool.c
+++ b/drivers/net/benet/be_ethtool.c
@@ -118,6 +118,7 @@ static const char et_self_tests[][ETH_GSTRING_LEN] = {
118#define BE_MAC_LOOPBACK 0x0 118#define BE_MAC_LOOPBACK 0x0
119#define BE_PHY_LOOPBACK 0x1 119#define BE_PHY_LOOPBACK 0x1
120#define BE_ONE_PORT_EXT_LOOPBACK 0x2 120#define BE_ONE_PORT_EXT_LOOPBACK 0x2
121#define BE_NO_LOOPBACK 0xff
121 122
122static void 123static void
123be_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *drvinfo) 124be_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *drvinfo)
@@ -339,28 +340,50 @@ static int be_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
339 340
340 status = be_cmd_read_port_type(adapter, adapter->port_num, 341 status = be_cmd_read_port_type(adapter, adapter->port_num,
341 &connector); 342 &connector);
342 switch (connector) { 343 if (!status) {
343 case 7: 344 switch (connector) {
344 ecmd->port = PORT_FIBRE; 345 case 7:
345 break; 346 ecmd->port = PORT_FIBRE;
346 default: 347 ecmd->transceiver = XCVR_EXTERNAL;
347 ecmd->port = PORT_TP; 348 break;
348 break; 349 case 0:
350 ecmd->port = PORT_TP;
351 ecmd->transceiver = XCVR_EXTERNAL;
352 break;
353 default:
354 ecmd->port = PORT_TP;
355 ecmd->transceiver = XCVR_INTERNAL;
356 break;
357 }
358 } else {
359 ecmd->port = PORT_AUI;
360 ecmd->transceiver = XCVR_INTERNAL;
349 } 361 }
350 362
351 /* Save for future use */ 363 /* Save for future use */
352 adapter->link_speed = ecmd->speed; 364 adapter->link_speed = ecmd->speed;
353 adapter->port_type = ecmd->port; 365 adapter->port_type = ecmd->port;
366 adapter->transceiver = ecmd->transceiver;
354 } else { 367 } else {
355 ecmd->speed = adapter->link_speed; 368 ecmd->speed = adapter->link_speed;
356 ecmd->port = adapter->port_type; 369 ecmd->port = adapter->port_type;
370 ecmd->transceiver = adapter->transceiver;
357 } 371 }
358 372
359 ecmd->duplex = DUPLEX_FULL; 373 ecmd->duplex = DUPLEX_FULL;
360 ecmd->autoneg = AUTONEG_DISABLE; 374 ecmd->autoneg = AUTONEG_DISABLE;
361 ecmd->supported = (SUPPORTED_10000baseT_Full | SUPPORTED_TP);
362 ecmd->phy_address = adapter->port_num; 375 ecmd->phy_address = adapter->port_num;
363 ecmd->transceiver = XCVR_INTERNAL; 376 switch (ecmd->port) {
377 case PORT_FIBRE:
378 ecmd->supported = (SUPPORTED_10000baseT_Full | SUPPORTED_FIBRE);
379 break;
380 case PORT_TP:
381 ecmd->supported = (SUPPORTED_10000baseT_Full | SUPPORTED_TP);
382 break;
383 case PORT_AUI:
384 ecmd->supported = (SUPPORTED_10000baseT_Full | SUPPORTED_AUI);
385 break;
386 }
364 387
365 return 0; 388 return 0;
366} 389}
@@ -489,6 +512,19 @@ err:
489 return ret; 512 return ret;
490} 513}
491 514
515static u64 be_loopback_test(struct be_adapter *adapter, u8 loopback_type,
516 u64 *status)
517{
518 be_cmd_set_loopback(adapter, adapter->port_num,
519 loopback_type, 1);
520 *status = be_cmd_loopback_test(adapter, adapter->port_num,
521 loopback_type, 1500,
522 2, 0xabc);
523 be_cmd_set_loopback(adapter, adapter->port_num,
524 BE_NO_LOOPBACK, 1);
525 return *status;
526}
527
492static void 528static void
493be_self_test(struct net_device *netdev, struct ethtool_test *test, u64 *data) 529be_self_test(struct net_device *netdev, struct ethtool_test *test, u64 *data)
494{ 530{
@@ -497,23 +533,18 @@ be_self_test(struct net_device *netdev, struct ethtool_test *test, u64 *data)
497 memset(data, 0, sizeof(u64) * ETHTOOL_TESTS_NUM); 533 memset(data, 0, sizeof(u64) * ETHTOOL_TESTS_NUM);
498 534
499 if (test->flags & ETH_TEST_FL_OFFLINE) { 535 if (test->flags & ETH_TEST_FL_OFFLINE) {
500 data[0] = be_cmd_loopback_test(adapter, adapter->port_num, 536 if (be_loopback_test(adapter, BE_MAC_LOOPBACK,
501 BE_MAC_LOOPBACK, 1500, 537 &data[0]) != 0) {
502 2, 0xabc);
503 if (data[0] != 0)
504 test->flags |= ETH_TEST_FL_FAILED; 538 test->flags |= ETH_TEST_FL_FAILED;
505 539 }
506 data[1] = be_cmd_loopback_test(adapter, adapter->port_num, 540 if (be_loopback_test(adapter, BE_PHY_LOOPBACK,
507 BE_PHY_LOOPBACK, 1500, 541 &data[1]) != 0) {
508 2, 0xabc);
509 if (data[1] != 0)
510 test->flags |= ETH_TEST_FL_FAILED; 542 test->flags |= ETH_TEST_FL_FAILED;
511 543 }
512 data[2] = be_cmd_loopback_test(adapter, adapter->port_num, 544 if (be_loopback_test(adapter, BE_ONE_PORT_EXT_LOOPBACK,
513 BE_ONE_PORT_EXT_LOOPBACK, 545 &data[2]) != 0) {
514 1500, 2, 0xabc);
515 if (data[2] != 0)
516 test->flags |= ETH_TEST_FL_FAILED; 546 test->flags |= ETH_TEST_FL_FAILED;
547 }
517 548
518 data[3] = be_test_ddr_dma(adapter); 549 data[3] = be_test_ddr_dma(adapter);
519 if (data[3] != 0) 550 if (data[3] != 0)
diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c
index 3a1f7902c16d..626b76c0ebc7 100644
--- a/drivers/net/benet/be_main.c
+++ b/drivers/net/benet/be_main.c
@@ -910,7 +910,7 @@ static inline struct page *be_alloc_pages(u32 size)
910static void be_post_rx_frags(struct be_adapter *adapter) 910static void be_post_rx_frags(struct be_adapter *adapter)
911{ 911{
912 struct be_rx_page_info *page_info_tbl = adapter->rx_obj.page_info_tbl; 912 struct be_rx_page_info *page_info_tbl = adapter->rx_obj.page_info_tbl;
913 struct be_rx_page_info *page_info = NULL; 913 struct be_rx_page_info *page_info = NULL, *prev_page_info = NULL;
914 struct be_queue_info *rxq = &adapter->rx_obj.q; 914 struct be_queue_info *rxq = &adapter->rx_obj.q;
915 struct page *pagep = NULL; 915 struct page *pagep = NULL;
916 struct be_eth_rx_d *rxd; 916 struct be_eth_rx_d *rxd;
@@ -941,7 +941,6 @@ static void be_post_rx_frags(struct be_adapter *adapter)
941 rxd = queue_head_node(rxq); 941 rxd = queue_head_node(rxq);
942 rxd->fragpa_lo = cpu_to_le32(frag_dmaaddr & 0xFFFFFFFF); 942 rxd->fragpa_lo = cpu_to_le32(frag_dmaaddr & 0xFFFFFFFF);
943 rxd->fragpa_hi = cpu_to_le32(upper_32_bits(frag_dmaaddr)); 943 rxd->fragpa_hi = cpu_to_le32(upper_32_bits(frag_dmaaddr));
944 queue_head_inc(rxq);
945 944
946 /* Any space left in the current big page for another frag? */ 945 /* Any space left in the current big page for another frag? */
947 if ((page_offset + rx_frag_size + rx_frag_size) > 946 if ((page_offset + rx_frag_size + rx_frag_size) >
@@ -949,10 +948,13 @@ static void be_post_rx_frags(struct be_adapter *adapter)
949 pagep = NULL; 948 pagep = NULL;
950 page_info->last_page_user = true; 949 page_info->last_page_user = true;
951 } 950 }
951
952 prev_page_info = page_info;
953 queue_head_inc(rxq);
952 page_info = &page_info_tbl[rxq->head]; 954 page_info = &page_info_tbl[rxq->head];
953 } 955 }
954 if (pagep) 956 if (pagep)
955 page_info->last_page_user = true; 957 prev_page_info->last_page_user = true;
956 958
957 if (posted) { 959 if (posted) {
958 atomic_add(posted, &rxq->used); 960 atomic_add(posted, &rxq->used);
@@ -1348,7 +1350,7 @@ static irqreturn_t be_intx(int irq, void *dev)
1348 int isr; 1350 int isr;
1349 1351
1350 isr = ioread32(adapter->csr + CEV_ISR0_OFFSET + 1352 isr = ioread32(adapter->csr + CEV_ISR0_OFFSET +
1351 be_pci_func(adapter) * CEV_ISR_SIZE); 1353 (adapter->tx_eq.q.id/ 8) * CEV_ISR_SIZE);
1352 if (!isr) 1354 if (!isr)
1353 return IRQ_NONE; 1355 return IRQ_NONE;
1354 1356
@@ -2049,6 +2051,7 @@ static void be_unmap_pci_bars(struct be_adapter *adapter)
2049static int be_map_pci_bars(struct be_adapter *adapter) 2051static int be_map_pci_bars(struct be_adapter *adapter)
2050{ 2052{
2051 u8 __iomem *addr; 2053 u8 __iomem *addr;
2054 int pcicfg_reg;
2052 2055
2053 addr = ioremap_nocache(pci_resource_start(adapter->pdev, 2), 2056 addr = ioremap_nocache(pci_resource_start(adapter->pdev, 2),
2054 pci_resource_len(adapter->pdev, 2)); 2057 pci_resource_len(adapter->pdev, 2));
@@ -2062,8 +2065,13 @@ static int be_map_pci_bars(struct be_adapter *adapter)
2062 goto pci_map_err; 2065 goto pci_map_err;
2063 adapter->db = addr; 2066 adapter->db = addr;
2064 2067
2065 addr = ioremap_nocache(pci_resource_start(adapter->pdev, 1), 2068 if (adapter->generation == BE_GEN2)
2066 pci_resource_len(adapter->pdev, 1)); 2069 pcicfg_reg = 1;
2070 else
2071 pcicfg_reg = 0;
2072
2073 addr = ioremap_nocache(pci_resource_start(adapter->pdev, pcicfg_reg),
2074 pci_resource_len(adapter->pdev, pcicfg_reg));
2067 if (addr == NULL) 2075 if (addr == NULL)
2068 goto pci_map_err; 2076 goto pci_map_err;
2069 adapter->pcicfg = addr; 2077 adapter->pcicfg = addr;
@@ -2160,6 +2168,7 @@ static int be_stats_init(struct be_adapter *adapter)
2160 cmd->va = pci_alloc_consistent(adapter->pdev, cmd->size, &cmd->dma); 2168 cmd->va = pci_alloc_consistent(adapter->pdev, cmd->size, &cmd->dma);
2161 if (cmd->va == NULL) 2169 if (cmd->va == NULL)
2162 return -1; 2170 return -1;
2171 memset(cmd->va, 0, cmd->size);
2163 return 0; 2172 return 0;
2164} 2173}
2165 2174
@@ -2238,6 +2247,20 @@ static int __devinit be_probe(struct pci_dev *pdev,
2238 goto rel_reg; 2247 goto rel_reg;
2239 } 2248 }
2240 adapter = netdev_priv(netdev); 2249 adapter = netdev_priv(netdev);
2250
2251 switch (pdev->device) {
2252 case BE_DEVICE_ID1:
2253 case OC_DEVICE_ID1:
2254 adapter->generation = BE_GEN2;
2255 break;
2256 case BE_DEVICE_ID2:
2257 case OC_DEVICE_ID2:
2258 adapter->generation = BE_GEN3;
2259 break;
2260 default:
2261 adapter->generation = 0;
2262 }
2263
2241 adapter->pdev = pdev; 2264 adapter->pdev = pdev;
2242 pci_set_drvdata(pdev, adapter); 2265 pci_set_drvdata(pdev, adapter);
2243 adapter->netdev = netdev; 2266 adapter->netdev = netdev;
diff --git a/drivers/net/bfin_mac.c b/drivers/net/bfin_mac.c
index 8ffea3990d07..0b23bc4f56c6 100644
--- a/drivers/net/bfin_mac.c
+++ b/drivers/net/bfin_mac.c
@@ -33,6 +33,7 @@
33#include <asm/dma.h> 33#include <asm/dma.h>
34#include <linux/dma-mapping.h> 34#include <linux/dma-mapping.h>
35 35
36#include <asm/dpmc.h>
36#include <asm/blackfin.h> 37#include <asm/blackfin.h>
37#include <asm/cacheflush.h> 38#include <asm/cacheflush.h>
38#include <asm/portmux.h> 39#include <asm/portmux.h>
@@ -386,8 +387,8 @@ static int mii_probe(struct net_device *dev)
386 u32 sclk, mdc_div; 387 u32 sclk, mdc_div;
387 388
388 /* Enable PHY output early */ 389 /* Enable PHY output early */
389 if (!(bfin_read_VR_CTL() & PHYCLKOE)) 390 if (!(bfin_read_VR_CTL() & CLKBUFOE))
390 bfin_write_VR_CTL(bfin_read_VR_CTL() | PHYCLKOE); 391 bfin_write_VR_CTL(bfin_read_VR_CTL() | CLKBUFOE);
391 392
392 sclk = get_sclk(); 393 sclk = get_sclk();
393 mdc_div = ((sclk / MDC_CLK) / 2) - 1; 394 mdc_div = ((sclk / MDC_CLK) / 2) - 1;
diff --git a/drivers/net/bnx2x_main.c b/drivers/net/bnx2x_main.c
index 77ba13520d87..306c2b8165e2 100644
--- a/drivers/net/bnx2x_main.c
+++ b/drivers/net/bnx2x_main.c
@@ -7593,6 +7593,8 @@ static int bnx2x_nic_load(struct bnx2x *bp, int load_mode)
7593 if (bp->cnic_eth_dev.drv_state & CNIC_DRV_STATE_REGD) { 7593 if (bp->cnic_eth_dev.drv_state & CNIC_DRV_STATE_REGD) {
7594 bnx2x_set_iscsi_eth_mac_addr(bp, 1); 7594 bnx2x_set_iscsi_eth_mac_addr(bp, 1);
7595 bp->cnic_flags |= BNX2X_CNIC_FLAG_MAC_SET; 7595 bp->cnic_flags |= BNX2X_CNIC_FLAG_MAC_SET;
7596 bnx2x_init_sb(bp, bp->cnic_sb, bp->cnic_sb_mapping,
7597 CNIC_SB_ID(bp));
7596 } 7598 }
7597 mutex_unlock(&bp->cnic_mutex); 7599 mutex_unlock(&bp->cnic_mutex);
7598#endif 7600#endif
diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c
index 0fb7a4964e75..822f586d72af 100644
--- a/drivers/net/bonding/bond_3ad.c
+++ b/drivers/net/bonding/bond_3ad.c
@@ -1580,7 +1580,7 @@ static void ad_agg_selection_logic(struct aggregator *agg)
1580 // check if any partner replys 1580 // check if any partner replys
1581 if (best->is_individual) { 1581 if (best->is_individual) {
1582 pr_warning("%s: Warning: No 802.3ad response from the link partner for any adapters in the bond\n", 1582 pr_warning("%s: Warning: No 802.3ad response from the link partner for any adapters in the bond\n",
1583 best->slave->dev->master->name); 1583 best->slave ? best->slave->dev->master->name : "NULL");
1584 } 1584 }
1585 1585
1586 best->is_active = 1; 1586 best->is_active = 1;
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 3f0071cfe56b..efa0e41bf3ec 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -3639,7 +3639,7 @@ static int bond_open(struct net_device *bond_dev)
3639 */ 3639 */
3640 if (bond_alb_initialize(bond, (bond->params.mode == BOND_MODE_ALB))) { 3640 if (bond_alb_initialize(bond, (bond->params.mode == BOND_MODE_ALB))) {
3641 /* something went wrong - fail the open operation */ 3641 /* something went wrong - fail the open operation */
3642 return -1; 3642 return -ENOMEM;
3643 } 3643 }
3644 3644
3645 INIT_DELAYED_WORK(&bond->alb_work, bond_alb_monitor); 3645 INIT_DELAYED_WORK(&bond->alb_work, bond_alb_monitor);
diff --git a/drivers/net/can/mcp251x.c b/drivers/net/can/mcp251x.c
index 9c5a1537939c..1a72ca066a17 100644
--- a/drivers/net/can/mcp251x.c
+++ b/drivers/net/can/mcp251x.c
@@ -990,7 +990,7 @@ static int __devinit mcp251x_can_probe(struct spi_device *spi)
990 goto error_tx_buf; 990 goto error_tx_buf;
991 } 991 }
992 priv->spi_rx_buf = kmalloc(SPI_TRANSFER_BUF_LEN, GFP_KERNEL); 992 priv->spi_rx_buf = kmalloc(SPI_TRANSFER_BUF_LEN, GFP_KERNEL);
993 if (!priv->spi_tx_buf) { 993 if (!priv->spi_rx_buf) {
994 ret = -ENOMEM; 994 ret = -ENOMEM;
995 goto error_rx_buf; 995 goto error_rx_buf;
996 } 996 }
diff --git a/drivers/net/cs89x0.c b/drivers/net/cs89x0.c
index af9321617ce4..0e79cef95c0a 100644
--- a/drivers/net/cs89x0.c
+++ b/drivers/net/cs89x0.c
@@ -1325,8 +1325,7 @@ net_open(struct net_device *dev)
1325 write_irq(dev, lp->chip_type, dev->irq); 1325 write_irq(dev, lp->chip_type, dev->irq);
1326 ret = request_irq(dev->irq, net_interrupt, 0, dev->name, dev); 1326 ret = request_irq(dev->irq, net_interrupt, 0, dev->name, dev);
1327 if (ret) { 1327 if (ret) {
1328 if (net_debug) 1328 printk(KERN_ERR "cs89x0: request_irq(%d) failed\n", dev->irq);
1329 printk(KERN_DEBUG "cs89x0: request_irq(%d) failed\n", dev->irq);
1330 goto bad_out; 1329 goto bad_out;
1331 } 1330 }
1332 } 1331 }
diff --git a/drivers/net/cxgb3/sge.c b/drivers/net/cxgb3/sge.c
index bdbd14727e4b..318a018ca7c5 100644
--- a/drivers/net/cxgb3/sge.c
+++ b/drivers/net/cxgb3/sge.c
@@ -2079,6 +2079,7 @@ static void lro_add_page(struct adapter *adap, struct sge_qset *qs,
2079 struct sge_fl *fl, int len, int complete) 2079 struct sge_fl *fl, int len, int complete)
2080{ 2080{
2081 struct rx_sw_desc *sd = &fl->sdesc[fl->cidx]; 2081 struct rx_sw_desc *sd = &fl->sdesc[fl->cidx];
2082 struct port_info *pi = netdev_priv(qs->netdev);
2082 struct sk_buff *skb = NULL; 2083 struct sk_buff *skb = NULL;
2083 struct cpl_rx_pkt *cpl; 2084 struct cpl_rx_pkt *cpl;
2084 struct skb_frag_struct *rx_frag; 2085 struct skb_frag_struct *rx_frag;
@@ -2116,11 +2117,18 @@ static void lro_add_page(struct adapter *adap, struct sge_qset *qs,
2116 2117
2117 if (!nr_frags) { 2118 if (!nr_frags) {
2118 offset = 2 + sizeof(struct cpl_rx_pkt); 2119 offset = 2 + sizeof(struct cpl_rx_pkt);
2119 qs->lro_va = sd->pg_chunk.va + 2; 2120 cpl = qs->lro_va = sd->pg_chunk.va + 2;
2120 }
2121 len -= offset;
2122 2121
2123 prefetch(qs->lro_va); 2122 if ((pi->rx_offload & T3_RX_CSUM) &&
2123 cpl->csum_valid && cpl->csum == htons(0xffff)) {
2124 skb->ip_summed = CHECKSUM_UNNECESSARY;
2125 qs->port_stats[SGE_PSTAT_RX_CSUM_GOOD]++;
2126 } else
2127 skb->ip_summed = CHECKSUM_NONE;
2128 } else
2129 cpl = qs->lro_va;
2130
2131 len -= offset;
2124 2132
2125 rx_frag += nr_frags; 2133 rx_frag += nr_frags;
2126 rx_frag->page = sd->pg_chunk.page; 2134 rx_frag->page = sd->pg_chunk.page;
@@ -2136,12 +2144,8 @@ static void lro_add_page(struct adapter *adap, struct sge_qset *qs,
2136 return; 2144 return;
2137 2145
2138 skb_record_rx_queue(skb, qs - &adap->sge.qs[0]); 2146 skb_record_rx_queue(skb, qs - &adap->sge.qs[0]);
2139 skb->ip_summed = CHECKSUM_UNNECESSARY;
2140 cpl = qs->lro_va;
2141 2147
2142 if (unlikely(cpl->vlan_valid)) { 2148 if (unlikely(cpl->vlan_valid)) {
2143 struct net_device *dev = qs->netdev;
2144 struct port_info *pi = netdev_priv(dev);
2145 struct vlan_group *grp = pi->vlan_grp; 2149 struct vlan_group *grp = pi->vlan_grp;
2146 2150
2147 if (likely(grp != NULL)) { 2151 if (likely(grp != NULL)) {
diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c
index 34e03104c3c1..33c4fe26178c 100644
--- a/drivers/net/davinci_emac.c
+++ b/drivers/net/davinci_emac.c
@@ -2711,6 +2711,8 @@ static int __devinit davinci_emac_probe(struct platform_device *pdev)
2711 SET_ETHTOOL_OPS(ndev, &ethtool_ops); 2711 SET_ETHTOOL_OPS(ndev, &ethtool_ops);
2712 netif_napi_add(ndev, &priv->napi, emac_poll, EMAC_POLL_WEIGHT); 2712 netif_napi_add(ndev, &priv->napi, emac_poll, EMAC_POLL_WEIGHT);
2713 2713
2714 clk_enable(emac_clk);
2715
2714 /* register the network device */ 2716 /* register the network device */
2715 SET_NETDEV_DEV(ndev, &pdev->dev); 2717 SET_NETDEV_DEV(ndev, &pdev->dev);
2716 rc = register_netdev(ndev); 2718 rc = register_netdev(ndev);
@@ -2720,7 +2722,6 @@ static int __devinit davinci_emac_probe(struct platform_device *pdev)
2720 goto netdev_reg_err; 2722 goto netdev_reg_err;
2721 } 2723 }
2722 2724
2723 clk_enable(emac_clk);
2724 2725
2725 /* MII/Phy intialisation, mdio bus registration */ 2726 /* MII/Phy intialisation, mdio bus registration */
2726 emac_mii = mdiobus_alloc(); 2727 emac_mii = mdiobus_alloc();
@@ -2760,6 +2761,7 @@ mdiobus_quit:
2760 2761
2761netdev_reg_err: 2762netdev_reg_err:
2762mdio_alloc_err: 2763mdio_alloc_err:
2764 clk_disable(emac_clk);
2763no_irq_res: 2765no_irq_res:
2764 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 2766 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
2765 release_mem_region(res->start, res->end - res->start + 1); 2767 release_mem_region(res->start, res->end - res->start + 1);
diff --git a/drivers/net/e1000/e1000.h b/drivers/net/e1000/e1000.h
index 2a567df3ea71..e8932db7ee77 100644
--- a/drivers/net/e1000/e1000.h
+++ b/drivers/net/e1000/e1000.h
@@ -326,6 +326,8 @@ struct e1000_adapter {
326 /* for ioport free */ 326 /* for ioport free */
327 int bars; 327 int bars;
328 int need_ioport; 328 int need_ioport;
329
330 bool discarding;
329}; 331};
330 332
331enum e1000_state_t { 333enum e1000_state_t {
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 7e855f9bbd97..765543663a4f 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -1698,18 +1698,6 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter)
1698 rctl &= ~E1000_RCTL_SZ_4096; 1698 rctl &= ~E1000_RCTL_SZ_4096;
1699 rctl |= E1000_RCTL_BSEX; 1699 rctl |= E1000_RCTL_BSEX;
1700 switch (adapter->rx_buffer_len) { 1700 switch (adapter->rx_buffer_len) {
1701 case E1000_RXBUFFER_256:
1702 rctl |= E1000_RCTL_SZ_256;
1703 rctl &= ~E1000_RCTL_BSEX;
1704 break;
1705 case E1000_RXBUFFER_512:
1706 rctl |= E1000_RCTL_SZ_512;
1707 rctl &= ~E1000_RCTL_BSEX;
1708 break;
1709 case E1000_RXBUFFER_1024:
1710 rctl |= E1000_RCTL_SZ_1024;
1711 rctl &= ~E1000_RCTL_BSEX;
1712 break;
1713 case E1000_RXBUFFER_2048: 1701 case E1000_RXBUFFER_2048:
1714 default: 1702 default:
1715 rctl |= E1000_RCTL_SZ_2048; 1703 rctl |= E1000_RCTL_SZ_2048;
@@ -2802,13 +2790,13 @@ static int e1000_tx_map(struct e1000_adapter *adapter,
2802dma_error: 2790dma_error:
2803 dev_err(&pdev->dev, "TX DMA map failed\n"); 2791 dev_err(&pdev->dev, "TX DMA map failed\n");
2804 buffer_info->dma = 0; 2792 buffer_info->dma = 0;
2805 count--; 2793 if (count)
2806
2807 while (count >= 0) {
2808 count--; 2794 count--;
2809 i--; 2795
2810 if (i < 0) 2796 while (count--) {
2797 if (i==0)
2811 i += tx_ring->count; 2798 i += tx_ring->count;
2799 i--;
2812 buffer_info = &tx_ring->buffer_info[i]; 2800 buffer_info = &tx_ring->buffer_info[i];
2813 e1000_unmap_and_free_tx_resource(adapter, buffer_info); 2801 e1000_unmap_and_free_tx_resource(adapter, buffer_info);
2814 } 2802 }
@@ -3176,13 +3164,7 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu)
3176 * however with the new *_jumbo_rx* routines, jumbo receives will use 3164 * however with the new *_jumbo_rx* routines, jumbo receives will use
3177 * fragmented skbs */ 3165 * fragmented skbs */
3178 3166
3179 if (max_frame <= E1000_RXBUFFER_256) 3167 if (max_frame <= E1000_RXBUFFER_2048)
3180 adapter->rx_buffer_len = E1000_RXBUFFER_256;
3181 else if (max_frame <= E1000_RXBUFFER_512)
3182 adapter->rx_buffer_len = E1000_RXBUFFER_512;
3183 else if (max_frame <= E1000_RXBUFFER_1024)
3184 adapter->rx_buffer_len = E1000_RXBUFFER_1024;
3185 else if (max_frame <= E1000_RXBUFFER_2048)
3186 adapter->rx_buffer_len = E1000_RXBUFFER_2048; 3168 adapter->rx_buffer_len = E1000_RXBUFFER_2048;
3187 else 3169 else
3188#if (PAGE_SIZE >= E1000_RXBUFFER_16384) 3170#if (PAGE_SIZE >= E1000_RXBUFFER_16384)
@@ -3850,13 +3832,22 @@ static bool e1000_clean_rx_irq(struct e1000_adapter *adapter,
3850 3832
3851 length = le16_to_cpu(rx_desc->length); 3833 length = le16_to_cpu(rx_desc->length);
3852 /* !EOP means multiple descriptors were used to store a single 3834 /* !EOP means multiple descriptors were used to store a single
3853 * packet, also make sure the frame isn't just CRC only */ 3835 * packet, if thats the case we need to toss it. In fact, we
3854 if (unlikely(!(status & E1000_RXD_STAT_EOP) || (length <= 4))) { 3836 * to toss every packet with the EOP bit clear and the next
3837 * frame that _does_ have the EOP bit set, as it is by
3838 * definition only a frame fragment
3839 */
3840 if (unlikely(!(status & E1000_RXD_STAT_EOP)))
3841 adapter->discarding = true;
3842
3843 if (adapter->discarding) {
3855 /* All receives must fit into a single buffer */ 3844 /* All receives must fit into a single buffer */
3856 E1000_DBG("%s: Receive packet consumed multiple" 3845 E1000_DBG("%s: Receive packet consumed multiple"
3857 " buffers\n", netdev->name); 3846 " buffers\n", netdev->name);
3858 /* recycle */ 3847 /* recycle */
3859 buffer_info->skb = skb; 3848 buffer_info->skb = skb;
3849 if (status & E1000_RXD_STAT_EOP)
3850 adapter->discarding = false;
3860 goto next_desc; 3851 goto next_desc;
3861 } 3852 }
3862 3853
@@ -4015,11 +4006,21 @@ check_page:
4015 } 4006 }
4016 } 4007 }
4017 4008
4018 if (!buffer_info->dma) 4009 if (!buffer_info->dma) {
4019 buffer_info->dma = pci_map_page(pdev, 4010 buffer_info->dma = pci_map_page(pdev,
4020 buffer_info->page, 0, 4011 buffer_info->page, 0,
4021 buffer_info->length, 4012 buffer_info->length,
4022 PCI_DMA_FROMDEVICE); 4013 PCI_DMA_FROMDEVICE);
4014 if (pci_dma_mapping_error(pdev, buffer_info->dma)) {
4015 put_page(buffer_info->page);
4016 dev_kfree_skb(skb);
4017 buffer_info->page = NULL;
4018 buffer_info->skb = NULL;
4019 buffer_info->dma = 0;
4020 adapter->alloc_rx_buff_failed++;
4021 break; /* while !buffer_info->skb */
4022 }
4023 }
4023 4024
4024 rx_desc = E1000_RX_DESC(*rx_ring, i); 4025 rx_desc = E1000_RX_DESC(*rx_ring, i);
4025 rx_desc->buffer_addr = cpu_to_le64(buffer_info->dma); 4026 rx_desc->buffer_addr = cpu_to_le64(buffer_info->dma);
@@ -4110,6 +4111,13 @@ map_skb:
4110 skb->data, 4111 skb->data,
4111 buffer_info->length, 4112 buffer_info->length,
4112 PCI_DMA_FROMDEVICE); 4113 PCI_DMA_FROMDEVICE);
4114 if (pci_dma_mapping_error(pdev, buffer_info->dma)) {
4115 dev_kfree_skb(skb);
4116 buffer_info->skb = NULL;
4117 buffer_info->dma = 0;
4118 adapter->alloc_rx_buff_failed++;
4119 break; /* while !buffer_info->skb */
4120 }
4113 4121
4114 /* 4122 /*
4115 * XXX if it was allocated cleanly it will never map to a 4123 * XXX if it was allocated cleanly it will never map to a
diff --git a/drivers/net/e1000e/82571.c b/drivers/net/e1000e/82571.c
index b979464091bb..02d67d047d96 100644
--- a/drivers/net/e1000e/82571.c
+++ b/drivers/net/e1000e/82571.c
@@ -237,6 +237,8 @@ static s32 e1000_init_mac_params_82571(struct e1000_adapter *adapter)
237 /* Set if manageability features are enabled. */ 237 /* Set if manageability features are enabled. */
238 mac->arc_subsystem_valid = (er32(FWSM) & E1000_FWSM_MODE_MASK) 238 mac->arc_subsystem_valid = (er32(FWSM) & E1000_FWSM_MODE_MASK)
239 ? true : false; 239 ? true : false;
240 /* Adaptive IFS supported */
241 mac->adaptive_ifs = true;
240 242
241 /* check for link */ 243 /* check for link */
242 switch (hw->phy.media_type) { 244 switch (hw->phy.media_type) {
diff --git a/drivers/net/e1000e/e1000.h b/drivers/net/e1000e/e1000.h
index cebbd9079d53..d236efaf7478 100644
--- a/drivers/net/e1000e/e1000.h
+++ b/drivers/net/e1000e/e1000.h
@@ -421,6 +421,7 @@ struct e1000_info {
421/* CRC Stripping defines */ 421/* CRC Stripping defines */
422#define FLAG2_CRC_STRIPPING (1 << 0) 422#define FLAG2_CRC_STRIPPING (1 << 0)
423#define FLAG2_HAS_PHY_WAKEUP (1 << 1) 423#define FLAG2_HAS_PHY_WAKEUP (1 << 1)
424#define FLAG2_IS_DISCARDING (1 << 2)
424 425
425#define E1000_RX_DESC_PS(R, i) \ 426#define E1000_RX_DESC_PS(R, i) \
426 (&(((union e1000_rx_desc_packet_split *)((R).desc))[i])) 427 (&(((union e1000_rx_desc_packet_split *)((R).desc))[i]))
@@ -582,7 +583,6 @@ extern s32 e1000_read_phy_reg_hv_locked(struct e1000_hw *hw, u32 offset,
582extern s32 e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data); 583extern s32 e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data);
583extern s32 e1000_write_phy_reg_hv_locked(struct e1000_hw *hw, u32 offset, 584extern s32 e1000_write_phy_reg_hv_locked(struct e1000_hw *hw, u32 offset,
584 u16 data); 585 u16 data);
585extern s32 e1000_set_mdio_slow_mode_hv(struct e1000_hw *hw, bool slow);
586extern s32 e1000_link_stall_workaround_hv(struct e1000_hw *hw); 586extern s32 e1000_link_stall_workaround_hv(struct e1000_hw *hw);
587extern s32 e1000_copper_link_setup_82577(struct e1000_hw *hw); 587extern s32 e1000_copper_link_setup_82577(struct e1000_hw *hw);
588extern s32 e1000_check_polarity_82577(struct e1000_hw *hw); 588extern s32 e1000_check_polarity_82577(struct e1000_hw *hw);
diff --git a/drivers/net/e1000e/es2lan.c b/drivers/net/e1000e/es2lan.c
index 3028f23da891..e2aa3b788564 100644
--- a/drivers/net/e1000e/es2lan.c
+++ b/drivers/net/e1000e/es2lan.c
@@ -224,6 +224,8 @@ static s32 e1000_init_mac_params_80003es2lan(struct e1000_adapter *adapter)
224 /* Set if manageability features are enabled. */ 224 /* Set if manageability features are enabled. */
225 mac->arc_subsystem_valid = (er32(FWSM) & E1000_FWSM_MODE_MASK) 225 mac->arc_subsystem_valid = (er32(FWSM) & E1000_FWSM_MODE_MASK)
226 ? true : false; 226 ? true : false;
227 /* Adaptive IFS not supported */
228 mac->adaptive_ifs = false;
227 229
228 /* check for link */ 230 /* check for link */
229 switch (hw->phy.media_type) { 231 switch (hw->phy.media_type) {
diff --git a/drivers/net/e1000e/hw.h b/drivers/net/e1000e/hw.h
index 2784cf44a6f3..eccf29b75c41 100644
--- a/drivers/net/e1000e/hw.h
+++ b/drivers/net/e1000e/hw.h
@@ -818,6 +818,7 @@ struct e1000_mac_info {
818 818
819 u8 forced_speed_duplex; 819 u8 forced_speed_duplex;
820 820
821 bool adaptive_ifs;
821 bool arc_subsystem_valid; 822 bool arc_subsystem_valid;
822 bool autoneg; 823 bool autoneg;
823 bool autoneg_failed; 824 bool autoneg_failed;
diff --git a/drivers/net/e1000e/ich8lan.c b/drivers/net/e1000e/ich8lan.c
index 9b09246af064..8b6ecd127889 100644
--- a/drivers/net/e1000e/ich8lan.c
+++ b/drivers/net/e1000e/ich8lan.c
@@ -138,6 +138,10 @@
138#define E1000_NVM_K1_CONFIG 0x1B /* NVM K1 Config Word */ 138#define E1000_NVM_K1_CONFIG 0x1B /* NVM K1 Config Word */
139#define E1000_NVM_K1_ENABLE 0x1 /* NVM Enable K1 bit */ 139#define E1000_NVM_K1_ENABLE 0x1 /* NVM Enable K1 bit */
140 140
141/* KMRN Mode Control */
142#define HV_KMRN_MODE_CTRL PHY_REG(769, 16)
143#define HV_KMRN_MDIO_SLOW 0x0400
144
141/* ICH GbE Flash Hardware Sequencing Flash Status Register bit breakdown */ 145/* ICH GbE Flash Hardware Sequencing Flash Status Register bit breakdown */
142/* Offset 04h HSFSTS */ 146/* Offset 04h HSFSTS */
143union ich8_hws_flash_status { 147union ich8_hws_flash_status {
@@ -219,6 +223,7 @@ static s32 e1000_set_lplu_state_pchlan(struct e1000_hw *hw, bool active);
219static void e1000_power_down_phy_copper_ich8lan(struct e1000_hw *hw); 223static void e1000_power_down_phy_copper_ich8lan(struct e1000_hw *hw);
220static void e1000_lan_init_done_ich8lan(struct e1000_hw *hw); 224static void e1000_lan_init_done_ich8lan(struct e1000_hw *hw);
221static s32 e1000_k1_gig_workaround_hv(struct e1000_hw *hw, bool link); 225static s32 e1000_k1_gig_workaround_hv(struct e1000_hw *hw, bool link);
226static s32 e1000_set_mdio_slow_mode_hv(struct e1000_hw *hw);
222 227
223static inline u16 __er16flash(struct e1000_hw *hw, unsigned long reg) 228static inline u16 __er16flash(struct e1000_hw *hw, unsigned long reg)
224{ 229{
@@ -270,7 +275,21 @@ static s32 e1000_init_phy_params_pchlan(struct e1000_hw *hw)
270 phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT; 275 phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT;
271 276
272 phy->id = e1000_phy_unknown; 277 phy->id = e1000_phy_unknown;
273 e1000e_get_phy_id(hw); 278 ret_val = e1000e_get_phy_id(hw);
279 if (ret_val)
280 goto out;
281 if ((phy->id == 0) || (phy->id == PHY_REVISION_MASK)) {
282 /*
283 * In case the PHY needs to be in mdio slow mode (eg. 82577),
284 * set slow mode and try to get the PHY id again.
285 */
286 ret_val = e1000_set_mdio_slow_mode_hv(hw);
287 if (ret_val)
288 goto out;
289 ret_val = e1000e_get_phy_id(hw);
290 if (ret_val)
291 goto out;
292 }
274 phy->type = e1000e_get_phy_type_from_id(phy->id); 293 phy->type = e1000e_get_phy_type_from_id(phy->id);
275 294
276 switch (phy->type) { 295 switch (phy->type) {
@@ -292,6 +311,7 @@ static s32 e1000_init_phy_params_pchlan(struct e1000_hw *hw)
292 break; 311 break;
293 } 312 }
294 313
314out:
295 return ret_val; 315 return ret_val;
296} 316}
297 317
@@ -454,6 +474,8 @@ static s32 e1000_init_mac_params_ich8lan(struct e1000_adapter *adapter)
454 mac->rar_entry_count--; 474 mac->rar_entry_count--;
455 /* Set if manageability features are enabled. */ 475 /* Set if manageability features are enabled. */
456 mac->arc_subsystem_valid = true; 476 mac->arc_subsystem_valid = true;
477 /* Adaptive IFS supported */
478 mac->adaptive_ifs = true;
457 479
458 /* LED operations */ 480 /* LED operations */
459 switch (mac->type) { 481 switch (mac->type) {
@@ -1074,16 +1096,44 @@ out:
1074 1096
1075 1097
1076/** 1098/**
1099 * e1000_set_mdio_slow_mode_hv - Set slow MDIO access mode
1100 * @hw: pointer to the HW structure
1101 **/
1102static s32 e1000_set_mdio_slow_mode_hv(struct e1000_hw *hw)
1103{
1104 s32 ret_val;
1105 u16 data;
1106
1107 ret_val = e1e_rphy(hw, HV_KMRN_MODE_CTRL, &data);
1108 if (ret_val)
1109 return ret_val;
1110
1111 data |= HV_KMRN_MDIO_SLOW;
1112
1113 ret_val = e1e_wphy(hw, HV_KMRN_MODE_CTRL, data);
1114
1115 return ret_val;
1116}
1117
1118/**
1077 * e1000_hv_phy_workarounds_ich8lan - A series of Phy workarounds to be 1119 * e1000_hv_phy_workarounds_ich8lan - A series of Phy workarounds to be
1078 * done after every PHY reset. 1120 * done after every PHY reset.
1079 **/ 1121 **/
1080static s32 e1000_hv_phy_workarounds_ich8lan(struct e1000_hw *hw) 1122static s32 e1000_hv_phy_workarounds_ich8lan(struct e1000_hw *hw)
1081{ 1123{
1082 s32 ret_val = 0; 1124 s32 ret_val = 0;
1125 u16 phy_data;
1083 1126
1084 if (hw->mac.type != e1000_pchlan) 1127 if (hw->mac.type != e1000_pchlan)
1085 return ret_val; 1128 return ret_val;
1086 1129
1130 /* Set MDIO slow mode before any other MDIO access */
1131 if (hw->phy.type == e1000_phy_82577) {
1132 ret_val = e1000_set_mdio_slow_mode_hv(hw);
1133 if (ret_val)
1134 goto out;
1135 }
1136
1087 if (((hw->phy.type == e1000_phy_82577) && 1137 if (((hw->phy.type == e1000_phy_82577) &&
1088 ((hw->phy.revision == 1) || (hw->phy.revision == 2))) || 1138 ((hw->phy.revision == 1) || (hw->phy.revision == 2))) ||
1089 ((hw->phy.type == e1000_phy_82578) && (hw->phy.revision == 1))) { 1139 ((hw->phy.type == e1000_phy_82578) && (hw->phy.revision == 1))) {
@@ -1116,16 +1166,32 @@ static s32 e1000_hv_phy_workarounds_ich8lan(struct e1000_hw *hw)
1116 1166
1117 hw->phy.addr = 1; 1167 hw->phy.addr = 1;
1118 ret_val = e1000e_write_phy_reg_mdic(hw, IGP01E1000_PHY_PAGE_SELECT, 0); 1168 ret_val = e1000e_write_phy_reg_mdic(hw, IGP01E1000_PHY_PAGE_SELECT, 0);
1169 hw->phy.ops.release(hw);
1119 if (ret_val) 1170 if (ret_val)
1120 goto out; 1171 goto out;
1121 hw->phy.ops.release(hw);
1122 1172
1123 /* 1173 /*
1124 * Configure the K1 Si workaround during phy reset assuming there is 1174 * Configure the K1 Si workaround during phy reset assuming there is
1125 * link so that it disables K1 if link is in 1Gbps. 1175 * link so that it disables K1 if link is in 1Gbps.
1126 */ 1176 */
1127 ret_val = e1000_k1_gig_workaround_hv(hw, true); 1177 ret_val = e1000_k1_gig_workaround_hv(hw, true);
1178 if (ret_val)
1179 goto out;
1128 1180
1181 /* Workaround for link disconnects on a busy hub in half duplex */
1182 ret_val = hw->phy.ops.acquire(hw);
1183 if (ret_val)
1184 goto out;
1185 ret_val = hw->phy.ops.read_reg_locked(hw,
1186 PHY_REG(BM_PORT_CTRL_PAGE, 17),
1187 &phy_data);
1188 if (ret_val)
1189 goto release;
1190 ret_val = hw->phy.ops.write_reg_locked(hw,
1191 PHY_REG(BM_PORT_CTRL_PAGE, 17),
1192 phy_data & 0x00FF);
1193release:
1194 hw->phy.ops.release(hw);
1129out: 1195out:
1130 return ret_val; 1196 return ret_val;
1131} 1197}
@@ -1182,6 +1248,7 @@ static s32 e1000_phy_hw_reset_ich8lan(struct e1000_hw *hw)
1182 /* Allow time for h/w to get to a quiescent state after reset */ 1248 /* Allow time for h/w to get to a quiescent state after reset */
1183 mdelay(10); 1249 mdelay(10);
1184 1250
1251 /* Perform any necessary post-reset workarounds */
1185 if (hw->mac.type == e1000_pchlan) { 1252 if (hw->mac.type == e1000_pchlan) {
1186 ret_val = e1000_hv_phy_workarounds_ich8lan(hw); 1253 ret_val = e1000_hv_phy_workarounds_ich8lan(hw);
1187 if (ret_val) 1254 if (ret_val)
@@ -2482,6 +2549,10 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw)
2482 if (!ret_val) 2549 if (!ret_val)
2483 e1000_release_swflag_ich8lan(hw); 2550 e1000_release_swflag_ich8lan(hw);
2484 2551
2552 /* Perform any necessary post-reset workarounds */
2553 if (hw->mac.type == e1000_pchlan)
2554 ret_val = e1000_hv_phy_workarounds_ich8lan(hw);
2555
2485 if (ctrl & E1000_CTRL_PHY_RST) 2556 if (ctrl & E1000_CTRL_PHY_RST)
2486 ret_val = hw->phy.ops.get_cfg_done(hw); 2557 ret_val = hw->phy.ops.get_cfg_done(hw);
2487 2558
@@ -2526,9 +2597,6 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw)
2526 kab |= E1000_KABGTXD_BGSQLBIAS; 2597 kab |= E1000_KABGTXD_BGSQLBIAS;
2527 ew32(KABGTXD, kab); 2598 ew32(KABGTXD, kab);
2528 2599
2529 if (hw->mac.type == e1000_pchlan)
2530 ret_val = e1000_hv_phy_workarounds_ich8lan(hw);
2531
2532out: 2600out:
2533 return ret_val; 2601 return ret_val;
2534} 2602}
diff --git a/drivers/net/e1000e/lib.c b/drivers/net/e1000e/lib.c
index a86c17548c1e..2fa9b36a2c5a 100644
--- a/drivers/net/e1000e/lib.c
+++ b/drivers/net/e1000e/lib.c
@@ -125,6 +125,7 @@ void e1000_write_vfta_generic(struct e1000_hw *hw, u32 offset, u32 value)
125void e1000e_init_rx_addrs(struct e1000_hw *hw, u16 rar_count) 125void e1000e_init_rx_addrs(struct e1000_hw *hw, u16 rar_count)
126{ 126{
127 u32 i; 127 u32 i;
128 u8 mac_addr[ETH_ALEN] = {0};
128 129
129 /* Setup the receive address */ 130 /* Setup the receive address */
130 e_dbg("Programming MAC Address into RAR[0]\n"); 131 e_dbg("Programming MAC Address into RAR[0]\n");
@@ -133,12 +134,8 @@ void e1000e_init_rx_addrs(struct e1000_hw *hw, u16 rar_count)
133 134
134 /* Zero out the other (rar_entry_count - 1) receive addresses */ 135 /* Zero out the other (rar_entry_count - 1) receive addresses */
135 e_dbg("Clearing RAR[1-%u]\n", rar_count-1); 136 e_dbg("Clearing RAR[1-%u]\n", rar_count-1);
136 for (i = 1; i < rar_count; i++) { 137 for (i = 1; i < rar_count; i++)
137 E1000_WRITE_REG_ARRAY(hw, E1000_RA, (i << 1), 0); 138 e1000e_rar_set(hw, mac_addr, i);
138 e1e_flush();
139 E1000_WRITE_REG_ARRAY(hw, E1000_RA, ((i << 1) + 1), 0);
140 e1e_flush();
141 }
142} 139}
143 140
144/** 141/**
@@ -164,10 +161,19 @@ void e1000e_rar_set(struct e1000_hw *hw, u8 *addr, u32 index)
164 161
165 rar_high = ((u32) addr[4] | ((u32) addr[5] << 8)); 162 rar_high = ((u32) addr[4] | ((u32) addr[5] << 8));
166 163
167 rar_high |= E1000_RAH_AV; 164 /* If MAC address zero, no need to set the AV bit */
165 if (rar_low || rar_high)
166 rar_high |= E1000_RAH_AV;
168 167
169 E1000_WRITE_REG_ARRAY(hw, E1000_RA, (index << 1), rar_low); 168 /*
170 E1000_WRITE_REG_ARRAY(hw, E1000_RA, ((index << 1) + 1), rar_high); 169 * Some bridges will combine consecutive 32-bit writes into
170 * a single burst write, which will malfunction on some parts.
171 * The flushes avoid this.
172 */
173 ew32(RAL(index), rar_low);
174 e1e_flush();
175 ew32(RAH(index), rar_high);
176 e1e_flush();
171} 177}
172 178
173/** 179/**
@@ -1609,6 +1615,11 @@ void e1000e_reset_adaptive(struct e1000_hw *hw)
1609{ 1615{
1610 struct e1000_mac_info *mac = &hw->mac; 1616 struct e1000_mac_info *mac = &hw->mac;
1611 1617
1618 if (!mac->adaptive_ifs) {
1619 e_dbg("Not in Adaptive IFS mode!\n");
1620 goto out;
1621 }
1622
1612 mac->current_ifs_val = 0; 1623 mac->current_ifs_val = 0;
1613 mac->ifs_min_val = IFS_MIN; 1624 mac->ifs_min_val = IFS_MIN;
1614 mac->ifs_max_val = IFS_MAX; 1625 mac->ifs_max_val = IFS_MAX;
@@ -1617,6 +1628,8 @@ void e1000e_reset_adaptive(struct e1000_hw *hw)
1617 1628
1618 mac->in_ifs_mode = false; 1629 mac->in_ifs_mode = false;
1619 ew32(AIT, 0); 1630 ew32(AIT, 0);
1631out:
1632 return;
1620} 1633}
1621 1634
1622/** 1635/**
@@ -1630,6 +1643,11 @@ void e1000e_update_adaptive(struct e1000_hw *hw)
1630{ 1643{
1631 struct e1000_mac_info *mac = &hw->mac; 1644 struct e1000_mac_info *mac = &hw->mac;
1632 1645
1646 if (!mac->adaptive_ifs) {
1647 e_dbg("Not in Adaptive IFS mode!\n");
1648 goto out;
1649 }
1650
1633 if ((mac->collision_delta * mac->ifs_ratio) > mac->tx_packet_delta) { 1651 if ((mac->collision_delta * mac->ifs_ratio) > mac->tx_packet_delta) {
1634 if (mac->tx_packet_delta > MIN_NUM_XMITS) { 1652 if (mac->tx_packet_delta > MIN_NUM_XMITS) {
1635 mac->in_ifs_mode = true; 1653 mac->in_ifs_mode = true;
@@ -1650,6 +1668,8 @@ void e1000e_update_adaptive(struct e1000_hw *hw)
1650 ew32(AIT, 0); 1668 ew32(AIT, 0);
1651 } 1669 }
1652 } 1670 }
1671out:
1672 return;
1653} 1673}
1654 1674
1655/** 1675/**
@@ -2287,10 +2307,12 @@ bool e1000e_enable_tx_pkt_filtering(struct e1000_hw *hw)
2287 s32 ret_val, hdr_csum, csum; 2307 s32 ret_val, hdr_csum, csum;
2288 u8 i, len; 2308 u8 i, len;
2289 2309
2310 hw->mac.tx_pkt_filtering = true;
2311
2290 /* No manageability, no filtering */ 2312 /* No manageability, no filtering */
2291 if (!e1000e_check_mng_mode(hw)) { 2313 if (!e1000e_check_mng_mode(hw)) {
2292 hw->mac.tx_pkt_filtering = false; 2314 hw->mac.tx_pkt_filtering = false;
2293 return 0; 2315 goto out;
2294 } 2316 }
2295 2317
2296 /* 2318 /*
@@ -2298,9 +2320,9 @@ bool e1000e_enable_tx_pkt_filtering(struct e1000_hw *hw)
2298 * reason, disable filtering. 2320 * reason, disable filtering.
2299 */ 2321 */
2300 ret_val = e1000_mng_enable_host_if(hw); 2322 ret_val = e1000_mng_enable_host_if(hw);
2301 if (ret_val != 0) { 2323 if (ret_val) {
2302 hw->mac.tx_pkt_filtering = false; 2324 hw->mac.tx_pkt_filtering = false;
2303 return ret_val; 2325 goto out;
2304 } 2326 }
2305 2327
2306 /* Read in the header. Length and offset are in dwords. */ 2328 /* Read in the header. Length and offset are in dwords. */
@@ -2319,17 +2341,17 @@ bool e1000e_enable_tx_pkt_filtering(struct e1000_hw *hw)
2319 */ 2341 */
2320 if ((hdr_csum != csum) || (hdr->signature != E1000_IAMT_SIGNATURE)) { 2342 if ((hdr_csum != csum) || (hdr->signature != E1000_IAMT_SIGNATURE)) {
2321 hw->mac.tx_pkt_filtering = true; 2343 hw->mac.tx_pkt_filtering = true;
2322 return 1; 2344 goto out;
2323 } 2345 }
2324 2346
2325 /* Cookie area is valid, make the final check for filtering. */ 2347 /* Cookie area is valid, make the final check for filtering. */
2326 if (!(hdr->status & E1000_MNG_DHCP_COOKIE_STATUS_PARSING)) { 2348 if (!(hdr->status & E1000_MNG_DHCP_COOKIE_STATUS_PARSING)) {
2327 hw->mac.tx_pkt_filtering = false; 2349 hw->mac.tx_pkt_filtering = false;
2328 return 0; 2350 goto out;
2329 } 2351 }
2330 2352
2331 hw->mac.tx_pkt_filtering = true; 2353out:
2332 return 1; 2354 return hw->mac.tx_pkt_filtering;
2333} 2355}
2334 2356
2335/** 2357/**
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
index 762b697ce731..57f149b75fbe 100644
--- a/drivers/net/e1000e/netdev.c
+++ b/drivers/net/e1000e/netdev.c
@@ -450,13 +450,23 @@ static bool e1000_clean_rx_irq(struct e1000_adapter *adapter,
450 450
451 length = le16_to_cpu(rx_desc->length); 451 length = le16_to_cpu(rx_desc->length);
452 452
453 /* !EOP means multiple descriptors were used to store a single 453 /*
454 * packet, also make sure the frame isn't just CRC only */ 454 * !EOP means multiple descriptors were used to store a single
455 if (!(status & E1000_RXD_STAT_EOP) || (length <= 4)) { 455 * packet, if that's the case we need to toss it. In fact, we
456 * need to toss every packet with the EOP bit clear and the
457 * next frame that _does_ have the EOP bit set, as it is by
458 * definition only a frame fragment
459 */
460 if (unlikely(!(status & E1000_RXD_STAT_EOP)))
461 adapter->flags2 |= FLAG2_IS_DISCARDING;
462
463 if (adapter->flags2 & FLAG2_IS_DISCARDING) {
456 /* All receives must fit into a single buffer */ 464 /* All receives must fit into a single buffer */
457 e_dbg("Receive packet consumed multiple buffers\n"); 465 e_dbg("Receive packet consumed multiple buffers\n");
458 /* recycle */ 466 /* recycle */
459 buffer_info->skb = skb; 467 buffer_info->skb = skb;
468 if (status & E1000_RXD_STAT_EOP)
469 adapter->flags2 &= ~FLAG2_IS_DISCARDING;
460 goto next_desc; 470 goto next_desc;
461 } 471 }
462 472
@@ -745,10 +755,16 @@ static bool e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
745 PCI_DMA_FROMDEVICE); 755 PCI_DMA_FROMDEVICE);
746 buffer_info->dma = 0; 756 buffer_info->dma = 0;
747 757
748 if (!(staterr & E1000_RXD_STAT_EOP)) { 758 /* see !EOP comment in other rx routine */
759 if (!(staterr & E1000_RXD_STAT_EOP))
760 adapter->flags2 |= FLAG2_IS_DISCARDING;
761
762 if (adapter->flags2 & FLAG2_IS_DISCARDING) {
749 e_dbg("Packet Split buffers didn't pick up the full " 763 e_dbg("Packet Split buffers didn't pick up the full "
750 "packet\n"); 764 "packet\n");
751 dev_kfree_skb_irq(skb); 765 dev_kfree_skb_irq(skb);
766 if (staterr & E1000_RXD_STAT_EOP)
767 adapter->flags2 &= ~FLAG2_IS_DISCARDING;
752 goto next_desc; 768 goto next_desc;
753 } 769 }
754 770
@@ -1118,6 +1134,7 @@ static void e1000_clean_rx_ring(struct e1000_adapter *adapter)
1118 1134
1119 rx_ring->next_to_clean = 0; 1135 rx_ring->next_to_clean = 0;
1120 rx_ring->next_to_use = 0; 1136 rx_ring->next_to_use = 0;
1137 adapter->flags2 &= ~FLAG2_IS_DISCARDING;
1121 1138
1122 writel(0, adapter->hw.hw_addr + rx_ring->head); 1139 writel(0, adapter->hw.hw_addr + rx_ring->head);
1123 writel(0, adapter->hw.hw_addr + rx_ring->tail); 1140 writel(0, adapter->hw.hw_addr + rx_ring->tail);
@@ -2333,18 +2350,6 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter)
2333 rctl &= ~E1000_RCTL_SZ_4096; 2350 rctl &= ~E1000_RCTL_SZ_4096;
2334 rctl |= E1000_RCTL_BSEX; 2351 rctl |= E1000_RCTL_BSEX;
2335 switch (adapter->rx_buffer_len) { 2352 switch (adapter->rx_buffer_len) {
2336 case 256:
2337 rctl |= E1000_RCTL_SZ_256;
2338 rctl &= ~E1000_RCTL_BSEX;
2339 break;
2340 case 512:
2341 rctl |= E1000_RCTL_SZ_512;
2342 rctl &= ~E1000_RCTL_BSEX;
2343 break;
2344 case 1024:
2345 rctl |= E1000_RCTL_SZ_1024;
2346 rctl &= ~E1000_RCTL_BSEX;
2347 break;
2348 case 2048: 2353 case 2048:
2349 default: 2354 default:
2350 rctl |= E1000_RCTL_SZ_2048; 2355 rctl |= E1000_RCTL_SZ_2048;
@@ -3315,24 +3320,24 @@ void e1000e_update_stats(struct e1000_adapter *adapter)
3315 if ((hw->phy.type == e1000_phy_82578) || 3320 if ((hw->phy.type == e1000_phy_82578) ||
3316 (hw->phy.type == e1000_phy_82577)) { 3321 (hw->phy.type == e1000_phy_82577)) {
3317 e1e_rphy(hw, HV_SCC_UPPER, &phy_data); 3322 e1e_rphy(hw, HV_SCC_UPPER, &phy_data);
3318 e1e_rphy(hw, HV_SCC_LOWER, &phy_data); 3323 if (!e1e_rphy(hw, HV_SCC_LOWER, &phy_data))
3319 adapter->stats.scc += phy_data; 3324 adapter->stats.scc += phy_data;
3320 3325
3321 e1e_rphy(hw, HV_ECOL_UPPER, &phy_data); 3326 e1e_rphy(hw, HV_ECOL_UPPER, &phy_data);
3322 e1e_rphy(hw, HV_ECOL_LOWER, &phy_data); 3327 if (!e1e_rphy(hw, HV_ECOL_LOWER, &phy_data))
3323 adapter->stats.ecol += phy_data; 3328 adapter->stats.ecol += phy_data;
3324 3329
3325 e1e_rphy(hw, HV_MCC_UPPER, &phy_data); 3330 e1e_rphy(hw, HV_MCC_UPPER, &phy_data);
3326 e1e_rphy(hw, HV_MCC_LOWER, &phy_data); 3331 if (!e1e_rphy(hw, HV_MCC_LOWER, &phy_data))
3327 adapter->stats.mcc += phy_data; 3332 adapter->stats.mcc += phy_data;
3328 3333
3329 e1e_rphy(hw, HV_LATECOL_UPPER, &phy_data); 3334 e1e_rphy(hw, HV_LATECOL_UPPER, &phy_data);
3330 e1e_rphy(hw, HV_LATECOL_LOWER, &phy_data); 3335 if (!e1e_rphy(hw, HV_LATECOL_LOWER, &phy_data))
3331 adapter->stats.latecol += phy_data; 3336 adapter->stats.latecol += phy_data;
3332 3337
3333 e1e_rphy(hw, HV_DC_UPPER, &phy_data); 3338 e1e_rphy(hw, HV_DC_UPPER, &phy_data);
3334 e1e_rphy(hw, HV_DC_LOWER, &phy_data); 3339 if (!e1e_rphy(hw, HV_DC_LOWER, &phy_data))
3335 adapter->stats.dc += phy_data; 3340 adapter->stats.dc += phy_data;
3336 } else { 3341 } else {
3337 adapter->stats.scc += er32(SCC); 3342 adapter->stats.scc += er32(SCC);
3338 adapter->stats.ecol += er32(ECOL); 3343 adapter->stats.ecol += er32(ECOL);
@@ -3360,8 +3365,8 @@ void e1000e_update_stats(struct e1000_adapter *adapter)
3360 if ((hw->phy.type == e1000_phy_82578) || 3365 if ((hw->phy.type == e1000_phy_82578) ||
3361 (hw->phy.type == e1000_phy_82577)) { 3366 (hw->phy.type == e1000_phy_82577)) {
3362 e1e_rphy(hw, HV_COLC_UPPER, &phy_data); 3367 e1e_rphy(hw, HV_COLC_UPPER, &phy_data);
3363 e1e_rphy(hw, HV_COLC_LOWER, &phy_data); 3368 if (!e1e_rphy(hw, HV_COLC_LOWER, &phy_data))
3364 hw->mac.collision_delta = phy_data; 3369 hw->mac.collision_delta = phy_data;
3365 } else { 3370 } else {
3366 hw->mac.collision_delta = er32(COLC); 3371 hw->mac.collision_delta = er32(COLC);
3367 } 3372 }
@@ -3372,8 +3377,8 @@ void e1000e_update_stats(struct e1000_adapter *adapter)
3372 if ((hw->phy.type == e1000_phy_82578) || 3377 if ((hw->phy.type == e1000_phy_82578) ||
3373 (hw->phy.type == e1000_phy_82577)) { 3378 (hw->phy.type == e1000_phy_82577)) {
3374 e1e_rphy(hw, HV_TNCRS_UPPER, &phy_data); 3379 e1e_rphy(hw, HV_TNCRS_UPPER, &phy_data);
3375 e1e_rphy(hw, HV_TNCRS_LOWER, &phy_data); 3380 if (!e1e_rphy(hw, HV_TNCRS_LOWER, &phy_data))
3376 adapter->stats.tncrs += phy_data; 3381 adapter->stats.tncrs += phy_data;
3377 } else { 3382 } else {
3378 if ((hw->mac.type != e1000_82574) && 3383 if ((hw->mac.type != e1000_82574) &&
3379 (hw->mac.type != e1000_82583)) 3384 (hw->mac.type != e1000_82583))
@@ -3781,7 +3786,7 @@ static int e1000_tso(struct e1000_adapter *adapter,
3781 0, IPPROTO_TCP, 0); 3786 0, IPPROTO_TCP, 0);
3782 cmd_length = E1000_TXD_CMD_IP; 3787 cmd_length = E1000_TXD_CMD_IP;
3783 ipcse = skb_transport_offset(skb) - 1; 3788 ipcse = skb_transport_offset(skb) - 1;
3784 } else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) { 3789 } else if (skb_is_gso_v6(skb)) {
3785 ipv6_hdr(skb)->payload_len = 0; 3790 ipv6_hdr(skb)->payload_len = 0;
3786 tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, 3791 tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
3787 &ipv6_hdr(skb)->daddr, 3792 &ipv6_hdr(skb)->daddr,
@@ -3962,13 +3967,13 @@ static int e1000_tx_map(struct e1000_adapter *adapter,
3962dma_error: 3967dma_error:
3963 dev_err(&pdev->dev, "TX DMA map failed\n"); 3968 dev_err(&pdev->dev, "TX DMA map failed\n");
3964 buffer_info->dma = 0; 3969 buffer_info->dma = 0;
3965 count--; 3970 if (count)
3966
3967 while (count >= 0) {
3968 count--; 3971 count--;
3969 i--; 3972
3970 if (i < 0) 3973 while (count--) {
3974 if (i==0)
3971 i += tx_ring->count; 3975 i += tx_ring->count;
3976 i--;
3972 buffer_info = &tx_ring->buffer_info[i]; 3977 buffer_info = &tx_ring->buffer_info[i];
3973 e1000_put_txbuf(adapter, buffer_info);; 3978 e1000_put_txbuf(adapter, buffer_info);;
3974 } 3979 }
@@ -4317,13 +4322,7 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu)
4317 * fragmented skbs 4322 * fragmented skbs
4318 */ 4323 */
4319 4324
4320 if (max_frame <= 256) 4325 if (max_frame <= 2048)
4321 adapter->rx_buffer_len = 256;
4322 else if (max_frame <= 512)
4323 adapter->rx_buffer_len = 512;
4324 else if (max_frame <= 1024)
4325 adapter->rx_buffer_len = 1024;
4326 else if (max_frame <= 2048)
4327 adapter->rx_buffer_len = 2048; 4326 adapter->rx_buffer_len = 2048;
4328 else 4327 else
4329 adapter->rx_buffer_len = 4096; 4328 adapter->rx_buffer_len = 4096;
@@ -4674,6 +4673,7 @@ static int e1000_resume(struct pci_dev *pdev)
4674 4673
4675 pci_set_power_state(pdev, PCI_D0); 4674 pci_set_power_state(pdev, PCI_D0);
4676 pci_restore_state(pdev); 4675 pci_restore_state(pdev);
4676 pci_save_state(pdev);
4677 e1000e_disable_l1aspm(pdev); 4677 e1000e_disable_l1aspm(pdev);
4678 4678
4679 err = pci_enable_device_mem(pdev); 4679 err = pci_enable_device_mem(pdev);
@@ -4825,6 +4825,7 @@ static pci_ers_result_t e1000_io_slot_reset(struct pci_dev *pdev)
4825 } else { 4825 } else {
4826 pci_set_master(pdev); 4826 pci_set_master(pdev);
4827 pci_restore_state(pdev); 4827 pci_restore_state(pdev);
4828 pci_save_state(pdev);
4828 4829
4829 pci_enable_wake(pdev, PCI_D3hot, 0); 4830 pci_enable_wake(pdev, PCI_D3hot, 0);
4830 pci_enable_wake(pdev, PCI_D3cold, 0); 4831 pci_enable_wake(pdev, PCI_D3cold, 0);
diff --git a/drivers/net/e1000e/phy.c b/drivers/net/e1000e/phy.c
index 55a2c0acfee7..7f3ceb9dad6a 100644
--- a/drivers/net/e1000e/phy.c
+++ b/drivers/net/e1000e/phy.c
@@ -152,32 +152,9 @@ s32 e1000e_get_phy_id(struct e1000_hw *hw)
152 if (phy->id != 0 && phy->id != PHY_REVISION_MASK) 152 if (phy->id != 0 && phy->id != PHY_REVISION_MASK)
153 goto out; 153 goto out;
154 154
155 /*
156 * If the PHY ID is still unknown, we may have an 82577
157 * without link. We will try again after setting Slow MDIC
158 * mode. No harm in trying again in this case since the PHY
159 * ID is unknown at this point anyway.
160 */
161 ret_val = phy->ops.acquire(hw);
162 if (ret_val)
163 goto out;
164 ret_val = e1000_set_mdio_slow_mode_hv(hw, true);
165 if (ret_val)
166 goto out;
167 phy->ops.release(hw);
168
169 retry_count++; 155 retry_count++;
170 } 156 }
171out: 157out:
172 /* Revert to MDIO fast mode, if applicable */
173 if (retry_count) {
174 ret_val = phy->ops.acquire(hw);
175 if (ret_val)
176 return ret_val;
177 ret_val = e1000_set_mdio_slow_mode_hv(hw, false);
178 phy->ops.release(hw);
179 }
180
181 return ret_val; 158 return ret_val;
182} 159}
183 160
@@ -2791,38 +2768,6 @@ static s32 e1000_set_d0_lplu_state(struct e1000_hw *hw, bool active)
2791} 2768}
2792 2769
2793/** 2770/**
2794 * e1000_set_mdio_slow_mode_hv - Set slow MDIO access mode
2795 * @hw: pointer to the HW structure
2796 * @slow: true for slow mode, false for normal mode
2797 *
2798 * Assumes semaphore already acquired.
2799 **/
2800s32 e1000_set_mdio_slow_mode_hv(struct e1000_hw *hw, bool slow)
2801{
2802 s32 ret_val = 0;
2803 u16 data = 0;
2804
2805 /* Set MDIO mode - page 769, register 16: 0x2580==slow, 0x2180==fast */
2806 hw->phy.addr = 1;
2807 ret_val = e1000e_write_phy_reg_mdic(hw, IGP01E1000_PHY_PAGE_SELECT,
2808 (BM_PORT_CTRL_PAGE << IGP_PAGE_SHIFT));
2809 if (ret_val)
2810 goto out;
2811
2812 ret_val = e1000e_write_phy_reg_mdic(hw, BM_CS_CTRL1,
2813 (0x2180 | (slow << 10)));
2814 if (ret_val)
2815 goto out;
2816
2817 /* dummy read when reverting to fast mode - throw away result */
2818 if (!slow)
2819 ret_val = e1000e_read_phy_reg_mdic(hw, BM_CS_CTRL1, &data);
2820
2821out:
2822 return ret_val;
2823}
2824
2825/**
2826 * __e1000_read_phy_reg_hv - Read HV PHY register 2771 * __e1000_read_phy_reg_hv - Read HV PHY register
2827 * @hw: pointer to the HW structure 2772 * @hw: pointer to the HW structure
2828 * @offset: register offset to be read 2773 * @offset: register offset to be read
@@ -2839,7 +2784,6 @@ static s32 __e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data,
2839 s32 ret_val; 2784 s32 ret_val;
2840 u16 page = BM_PHY_REG_PAGE(offset); 2785 u16 page = BM_PHY_REG_PAGE(offset);
2841 u16 reg = BM_PHY_REG_NUM(offset); 2786 u16 reg = BM_PHY_REG_NUM(offset);
2842 bool in_slow_mode = false;
2843 2787
2844 if (!locked) { 2788 if (!locked) {
2845 ret_val = hw->phy.ops.acquire(hw); 2789 ret_val = hw->phy.ops.acquire(hw);
@@ -2847,16 +2791,6 @@ static s32 __e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data,
2847 return ret_val; 2791 return ret_val;
2848 } 2792 }
2849 2793
2850 /* Workaround failure in MDIO access while cable is disconnected */
2851 if ((hw->phy.type == e1000_phy_82577) &&
2852 !(er32(STATUS) & E1000_STATUS_LU)) {
2853 ret_val = e1000_set_mdio_slow_mode_hv(hw, true);
2854 if (ret_val)
2855 goto out;
2856
2857 in_slow_mode = true;
2858 }
2859
2860 /* Page 800 works differently than the rest so it has its own func */ 2794 /* Page 800 works differently than the rest so it has its own func */
2861 if (page == BM_WUC_PAGE) { 2795 if (page == BM_WUC_PAGE) {
2862 ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, 2796 ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset,
@@ -2893,10 +2827,6 @@ static s32 __e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data,
2893 ret_val = e1000e_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & reg, 2827 ret_val = e1000e_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & reg,
2894 data); 2828 data);
2895out: 2829out:
2896 /* Revert to MDIO fast mode, if applicable */
2897 if ((hw->phy.type == e1000_phy_82577) && in_slow_mode)
2898 ret_val |= e1000_set_mdio_slow_mode_hv(hw, false);
2899
2900 if (!locked) 2830 if (!locked)
2901 hw->phy.ops.release(hw); 2831 hw->phy.ops.release(hw);
2902 2832
@@ -2948,7 +2878,6 @@ static s32 __e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data,
2948 s32 ret_val; 2878 s32 ret_val;
2949 u16 page = BM_PHY_REG_PAGE(offset); 2879 u16 page = BM_PHY_REG_PAGE(offset);
2950 u16 reg = BM_PHY_REG_NUM(offset); 2880 u16 reg = BM_PHY_REG_NUM(offset);
2951 bool in_slow_mode = false;
2952 2881
2953 if (!locked) { 2882 if (!locked) {
2954 ret_val = hw->phy.ops.acquire(hw); 2883 ret_val = hw->phy.ops.acquire(hw);
@@ -2956,16 +2885,6 @@ static s32 __e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data,
2956 return ret_val; 2885 return ret_val;
2957 } 2886 }
2958 2887
2959 /* Workaround failure in MDIO access while cable is disconnected */
2960 if ((hw->phy.type == e1000_phy_82577) &&
2961 !(er32(STATUS) & E1000_STATUS_LU)) {
2962 ret_val = e1000_set_mdio_slow_mode_hv(hw, true);
2963 if (ret_val)
2964 goto out;
2965
2966 in_slow_mode = true;
2967 }
2968
2969 /* Page 800 works differently than the rest so it has its own func */ 2888 /* Page 800 works differently than the rest so it has its own func */
2970 if (page == BM_WUC_PAGE) { 2889 if (page == BM_WUC_PAGE) {
2971 ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, 2890 ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset,
@@ -3019,10 +2938,6 @@ static s32 __e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data,
3019 data); 2938 data);
3020 2939
3021out: 2940out:
3022 /* Revert to MDIO fast mode, if applicable */
3023 if ((hw->phy.type == e1000_phy_82577) && in_slow_mode)
3024 ret_val |= e1000_set_mdio_slow_mode_hv(hw, false);
3025
3026 if (!locked) 2941 if (!locked)
3027 hw->phy.ops.release(hw); 2942 hw->phy.ops.release(hw);
3028 2943
diff --git a/drivers/net/fsl_pq_mdio.c b/drivers/net/fsl_pq_mdio.c
index 25fabb3eedc5..d5160edf2fcf 100644
--- a/drivers/net/fsl_pq_mdio.c
+++ b/drivers/net/fsl_pq_mdio.c
@@ -46,6 +46,11 @@
46#include "gianfar.h" 46#include "gianfar.h"
47#include "fsl_pq_mdio.h" 47#include "fsl_pq_mdio.h"
48 48
49struct fsl_pq_mdio_priv {
50 void __iomem *map;
51 struct fsl_pq_mdio __iomem *regs;
52};
53
49/* 54/*
50 * Write value to the PHY at mii_id at register regnum, 55 * Write value to the PHY at mii_id at register regnum,
51 * on the bus attached to the local interface, which may be different from the 56 * on the bus attached to the local interface, which may be different from the
@@ -105,7 +110,9 @@ int fsl_pq_local_mdio_read(struct fsl_pq_mdio __iomem *regs,
105 110
106static struct fsl_pq_mdio __iomem *fsl_pq_mdio_get_regs(struct mii_bus *bus) 111static struct fsl_pq_mdio __iomem *fsl_pq_mdio_get_regs(struct mii_bus *bus)
107{ 112{
108 return (void __iomem __force *)bus->priv; 113 struct fsl_pq_mdio_priv *priv = bus->priv;
114
115 return priv->regs;
109} 116}
110 117
111/* 118/*
@@ -266,6 +273,7 @@ static int fsl_pq_mdio_probe(struct of_device *ofdev,
266{ 273{
267 struct device_node *np = ofdev->node; 274 struct device_node *np = ofdev->node;
268 struct device_node *tbi; 275 struct device_node *tbi;
276 struct fsl_pq_mdio_priv *priv;
269 struct fsl_pq_mdio __iomem *regs = NULL; 277 struct fsl_pq_mdio __iomem *regs = NULL;
270 void __iomem *map; 278 void __iomem *map;
271 u32 __iomem *tbipa; 279 u32 __iomem *tbipa;
@@ -274,14 +282,19 @@ static int fsl_pq_mdio_probe(struct of_device *ofdev,
274 u64 addr = 0, size = 0; 282 u64 addr = 0, size = 0;
275 int err = 0; 283 int err = 0;
276 284
285 priv = kzalloc(sizeof(*priv), GFP_KERNEL);
286 if (!priv)
287 return -ENOMEM;
288
277 new_bus = mdiobus_alloc(); 289 new_bus = mdiobus_alloc();
278 if (NULL == new_bus) 290 if (NULL == new_bus)
279 return -ENOMEM; 291 goto err_free_priv;
280 292
281 new_bus->name = "Freescale PowerQUICC MII Bus", 293 new_bus->name = "Freescale PowerQUICC MII Bus",
282 new_bus->read = &fsl_pq_mdio_read, 294 new_bus->read = &fsl_pq_mdio_read,
283 new_bus->write = &fsl_pq_mdio_write, 295 new_bus->write = &fsl_pq_mdio_write,
284 new_bus->reset = &fsl_pq_mdio_reset, 296 new_bus->reset = &fsl_pq_mdio_reset,
297 new_bus->priv = priv;
285 fsl_pq_mdio_bus_name(new_bus->id, np); 298 fsl_pq_mdio_bus_name(new_bus->id, np);
286 299
287 /* Set the PHY base address */ 300 /* Set the PHY base address */
@@ -291,6 +304,7 @@ static int fsl_pq_mdio_probe(struct of_device *ofdev,
291 err = -ENOMEM; 304 err = -ENOMEM;
292 goto err_free_bus; 305 goto err_free_bus;
293 } 306 }
307 priv->map = map;
294 308
295 if (of_device_is_compatible(np, "fsl,gianfar-mdio") || 309 if (of_device_is_compatible(np, "fsl,gianfar-mdio") ||
296 of_device_is_compatible(np, "fsl,gianfar-tbi") || 310 of_device_is_compatible(np, "fsl,gianfar-tbi") ||
@@ -298,8 +312,7 @@ static int fsl_pq_mdio_probe(struct of_device *ofdev,
298 of_device_is_compatible(np, "ucc_geth_phy")) 312 of_device_is_compatible(np, "ucc_geth_phy"))
299 map -= offsetof(struct fsl_pq_mdio, miimcfg); 313 map -= offsetof(struct fsl_pq_mdio, miimcfg);
300 regs = map; 314 regs = map;
301 315 priv->regs = regs;
302 new_bus->priv = (void __force *)regs;
303 316
304 new_bus->irq = kcalloc(PHY_MAX_ADDR, sizeof(int), GFP_KERNEL); 317 new_bus->irq = kcalloc(PHY_MAX_ADDR, sizeof(int), GFP_KERNEL);
305 318
@@ -392,10 +405,11 @@ static int fsl_pq_mdio_probe(struct of_device *ofdev,
392err_free_irqs: 405err_free_irqs:
393 kfree(new_bus->irq); 406 kfree(new_bus->irq);
394err_unmap_regs: 407err_unmap_regs:
395 iounmap(regs); 408 iounmap(priv->map);
396err_free_bus: 409err_free_bus:
397 kfree(new_bus); 410 kfree(new_bus);
398 411err_free_priv:
412 kfree(priv);
399 return err; 413 return err;
400} 414}
401 415
@@ -404,14 +418,16 @@ static int fsl_pq_mdio_remove(struct of_device *ofdev)
404{ 418{
405 struct device *device = &ofdev->dev; 419 struct device *device = &ofdev->dev;
406 struct mii_bus *bus = dev_get_drvdata(device); 420 struct mii_bus *bus = dev_get_drvdata(device);
421 struct fsl_pq_mdio_priv *priv = bus->priv;
407 422
408 mdiobus_unregister(bus); 423 mdiobus_unregister(bus);
409 424
410 dev_set_drvdata(device, NULL); 425 dev_set_drvdata(device, NULL);
411 426
412 iounmap(fsl_pq_mdio_get_regs(bus)); 427 iounmap(priv->map);
413 bus->priv = NULL; 428 bus->priv = NULL;
414 mdiobus_free(bus); 429 mdiobus_free(bus);
430 kfree(priv);
415 431
416 return 0; 432 return 0;
417} 433}
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c
index e0620d084644..8bd3c9f17532 100644
--- a/drivers/net/gianfar.c
+++ b/drivers/net/gianfar.c
@@ -143,7 +143,6 @@ void gfar_start(struct net_device *dev);
143static void gfar_clear_exact_match(struct net_device *dev); 143static void gfar_clear_exact_match(struct net_device *dev);
144static void gfar_set_mac_for_addr(struct net_device *dev, int num, u8 *addr); 144static void gfar_set_mac_for_addr(struct net_device *dev, int num, u8 *addr);
145static int gfar_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); 145static int gfar_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
146u16 gfar_select_queue(struct net_device *dev, struct sk_buff *skb);
147 146
148MODULE_AUTHOR("Freescale Semiconductor, Inc"); 147MODULE_AUTHOR("Freescale Semiconductor, Inc");
149MODULE_DESCRIPTION("Gianfar Ethernet Driver"); 148MODULE_DESCRIPTION("Gianfar Ethernet Driver");
@@ -455,7 +454,6 @@ static const struct net_device_ops gfar_netdev_ops = {
455 .ndo_set_multicast_list = gfar_set_multi, 454 .ndo_set_multicast_list = gfar_set_multi,
456 .ndo_tx_timeout = gfar_timeout, 455 .ndo_tx_timeout = gfar_timeout,
457 .ndo_do_ioctl = gfar_ioctl, 456 .ndo_do_ioctl = gfar_ioctl,
458 .ndo_select_queue = gfar_select_queue,
459 .ndo_get_stats = gfar_get_stats, 457 .ndo_get_stats = gfar_get_stats,
460 .ndo_vlan_rx_register = gfar_vlan_rx_register, 458 .ndo_vlan_rx_register = gfar_vlan_rx_register,
461 .ndo_set_mac_address = eth_mac_addr, 459 .ndo_set_mac_address = eth_mac_addr,
@@ -506,10 +504,6 @@ static inline int gfar_uses_fcb(struct gfar_private *priv)
506 return priv->vlgrp || priv->rx_csum_enable; 504 return priv->vlgrp || priv->rx_csum_enable;
507} 505}
508 506
509u16 gfar_select_queue(struct net_device *dev, struct sk_buff *skb)
510{
511 return skb_get_queue_mapping(skb);
512}
513static void free_tx_pointers(struct gfar_private *priv) 507static void free_tx_pointers(struct gfar_private *priv)
514{ 508{
515 int i = 0; 509 int i = 0;
@@ -2470,10 +2464,11 @@ static int gfar_process_frame(struct net_device *dev, struct sk_buff *skb,
2470 fcb = (struct rxfcb *)skb->data; 2464 fcb = (struct rxfcb *)skb->data;
2471 2465
2472 /* Remove the FCB from the skb */ 2466 /* Remove the FCB from the skb */
2473 skb_set_queue_mapping(skb, fcb->rq);
2474 /* Remove the padded bytes, if there are any */ 2467 /* Remove the padded bytes, if there are any */
2475 if (amount_pull) 2468 if (amount_pull) {
2469 skb_record_rx_queue(skb, fcb->rq);
2476 skb_pull(skb, amount_pull); 2470 skb_pull(skb, amount_pull);
2471 }
2477 2472
2478 if (priv->rx_csum_enable) 2473 if (priv->rx_csum_enable)
2479 gfar_rx_checksum(skb, fcb); 2474 gfar_rx_checksum(skb, fcb);
@@ -2554,7 +2549,7 @@ int gfar_clean_rx_ring(struct gfar_priv_rx_q *rx_queue, int rx_work_limit)
2554 /* Remove the FCS from the packet length */ 2549 /* Remove the FCS from the packet length */
2555 skb_put(skb, pkt_len); 2550 skb_put(skb, pkt_len);
2556 rx_queue->stats.rx_bytes += pkt_len; 2551 rx_queue->stats.rx_bytes += pkt_len;
2557 2552 skb_record_rx_queue(skb, rx_queue->qindex);
2558 gfar_process_frame(dev, skb, amount_pull); 2553 gfar_process_frame(dev, skb, amount_pull);
2559 2554
2560 } else { 2555 } else {
diff --git a/drivers/net/hamradio/bpqether.c b/drivers/net/hamradio/bpqether.c
index ae5f11c8fc13..bdadf3e23c94 100644
--- a/drivers/net/hamradio/bpqether.c
+++ b/drivers/net/hamradio/bpqether.c
@@ -248,6 +248,7 @@ static netdev_tx_t bpq_xmit(struct sk_buff *skb, struct net_device *dev)
248{ 248{
249 unsigned char *ptr; 249 unsigned char *ptr;
250 struct bpqdev *bpq; 250 struct bpqdev *bpq;
251 struct net_device *orig_dev;
251 int size; 252 int size;
252 253
253 /* 254 /*
@@ -282,8 +283,9 @@ static netdev_tx_t bpq_xmit(struct sk_buff *skb, struct net_device *dev)
282 283
283 bpq = netdev_priv(dev); 284 bpq = netdev_priv(dev);
284 285
286 orig_dev = dev;
285 if ((dev = bpq_get_ether_dev(dev)) == NULL) { 287 if ((dev = bpq_get_ether_dev(dev)) == NULL) {
286 dev->stats.tx_dropped++; 288 orig_dev->stats.tx_dropped++;
287 kfree_skb(skb); 289 kfree_skb(skb);
288 return NETDEV_TX_OK; 290 return NETDEV_TX_OK;
289 } 291 }
diff --git a/drivers/net/ibmlana.c b/drivers/net/ibmlana.c
index 090a6d3af112..052c74091d91 100644
--- a/drivers/net/ibmlana.c
+++ b/drivers/net/ibmlana.c
@@ -87,6 +87,7 @@ History:
87#include <linux/module.h> 87#include <linux/module.h>
88#include <linux/netdevice.h> 88#include <linux/netdevice.h>
89#include <linux/etherdevice.h> 89#include <linux/etherdevice.h>
90#include <linux/if_ether.h>
90#include <linux/skbuff.h> 91#include <linux/skbuff.h>
91#include <linux/bitops.h> 92#include <linux/bitops.h>
92 93
@@ -988,7 +989,7 @@ static int __devinit ibmlana_init_one(struct device *kdev)
988 989
989 /* copy out MAC address */ 990 /* copy out MAC address */
990 991
991 for (z = 0; z < sizeof(dev->dev_addr); z++) 992 for (z = 0; z < ETH_ALEN; z++)
992 dev->dev_addr[z] = inb(dev->base_addr + MACADDRPROM + z); 993 dev->dev_addr[z] = inb(dev->base_addr + MACADDRPROM + z);
993 994
994 /* print config */ 995 /* print config */
diff --git a/drivers/net/igb/e1000_82575.c b/drivers/net/igb/e1000_82575.c
index e8e9e9194a88..c505b50d1fa3 100644
--- a/drivers/net/igb/e1000_82575.c
+++ b/drivers/net/igb/e1000_82575.c
@@ -1096,9 +1096,7 @@ static s32 igb_setup_serdes_link_82575(struct e1000_hw *hw)
1096 hw_dbg("Configuring Autoneg:PCS_LCTL=0x%08X\n", reg); 1096 hw_dbg("Configuring Autoneg:PCS_LCTL=0x%08X\n", reg);
1097 } else { 1097 } else {
1098 /* Set PCS register for forced link */ 1098 /* Set PCS register for forced link */
1099 reg |= E1000_PCS_LCTL_FSD | /* Force Speed */ 1099 reg |= E1000_PCS_LCTL_FSD; /* Force Speed */
1100 E1000_PCS_LCTL_FORCE_LINK | /* Force Link */
1101 E1000_PCS_LCTL_FLV_LINK_UP; /* Force link value up */
1102 1100
1103 hw_dbg("Configuring Forced Link:PCS_LCTL=0x%08X\n", reg); 1101 hw_dbg("Configuring Forced Link:PCS_LCTL=0x%08X\n", reg);
1104 } 1102 }
diff --git a/drivers/net/igb/e1000_phy.c b/drivers/net/igb/e1000_phy.c
index 5c9d73e9bb8d..3670a66401b8 100644
--- a/drivers/net/igb/e1000_phy.c
+++ b/drivers/net/igb/e1000_phy.c
@@ -457,15 +457,6 @@ s32 igb_copper_link_setup_82580(struct e1000_hw *hw)
457 phy_data |= I82580_CFG_ENABLE_DOWNSHIFT; 457 phy_data |= I82580_CFG_ENABLE_DOWNSHIFT;
458 458
459 ret_val = phy->ops.write_reg(hw, I82580_CFG_REG, phy_data); 459 ret_val = phy->ops.write_reg(hw, I82580_CFG_REG, phy_data);
460 if (ret_val)
461 goto out;
462
463 /* Set number of link attempts before downshift */
464 ret_val = phy->ops.read_reg(hw, I82580_CTRL_REG, &phy_data);
465 if (ret_val)
466 goto out;
467 phy_data &= ~I82580_CTRL_DOWNSHIFT_MASK;
468 ret_val = phy->ops.write_reg(hw, I82580_CTRL_REG, phy_data);
469 460
470out: 461out:
471 return ret_val; 462 return ret_val;
diff --git a/drivers/net/igb/igb_ethtool.c b/drivers/net/igb/igb_ethtool.c
index ac9d5272650d..f771a6c08777 100644
--- a/drivers/net/igb/igb_ethtool.c
+++ b/drivers/net/igb/igb_ethtool.c
@@ -1795,7 +1795,7 @@ static int igb_wol_exclusion(struct igb_adapter *adapter,
1795 /* dual port cards only support WoL on port A from now on 1795 /* dual port cards only support WoL on port A from now on
1796 * unless it was enabled in the eeprom for port B 1796 * unless it was enabled in the eeprom for port B
1797 * so exclude FUNC_1 ports from having WoL enabled */ 1797 * so exclude FUNC_1 ports from having WoL enabled */
1798 if (rd32(E1000_STATUS) & E1000_STATUS_FUNC_1 && 1798 if ((rd32(E1000_STATUS) & E1000_STATUS_FUNC_MASK) &&
1799 !adapter->eeprom_wol) { 1799 !adapter->eeprom_wol) {
1800 wol->supported = 0; 1800 wol->supported = 0;
1801 break; 1801 break;
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c
index 78963a0e128d..c881347cb26d 100644
--- a/drivers/net/igb/igb_main.c
+++ b/drivers/net/igb/igb_main.c
@@ -421,6 +421,8 @@ static void igb_assign_vector(struct igb_q_vector *q_vector, int msix_vector)
421 msixbm = E1000_EICR_RX_QUEUE0 << rx_queue; 421 msixbm = E1000_EICR_RX_QUEUE0 << rx_queue;
422 if (tx_queue > IGB_N0_QUEUE) 422 if (tx_queue > IGB_N0_QUEUE)
423 msixbm |= E1000_EICR_TX_QUEUE0 << tx_queue; 423 msixbm |= E1000_EICR_TX_QUEUE0 << tx_queue;
424 if (!adapter->msix_entries && msix_vector == 0)
425 msixbm |= E1000_EIMS_OTHER;
424 array_wr32(E1000_MSIXBM(0), msix_vector, msixbm); 426 array_wr32(E1000_MSIXBM(0), msix_vector, msixbm);
425 q_vector->eims_value = msixbm; 427 q_vector->eims_value = msixbm;
426 break; 428 break;
@@ -877,7 +879,6 @@ static int igb_request_irq(struct igb_adapter *adapter)
877{ 879{
878 struct net_device *netdev = adapter->netdev; 880 struct net_device *netdev = adapter->netdev;
879 struct pci_dev *pdev = adapter->pdev; 881 struct pci_dev *pdev = adapter->pdev;
880 struct e1000_hw *hw = &adapter->hw;
881 int err = 0; 882 int err = 0;
882 883
883 if (adapter->msix_entries) { 884 if (adapter->msix_entries) {
@@ -909,20 +910,7 @@ static int igb_request_irq(struct igb_adapter *adapter)
909 igb_setup_all_tx_resources(adapter); 910 igb_setup_all_tx_resources(adapter);
910 igb_setup_all_rx_resources(adapter); 911 igb_setup_all_rx_resources(adapter);
911 } else { 912 } else {
912 switch (hw->mac.type) { 913 igb_assign_vector(adapter->q_vector[0], 0);
913 case e1000_82575:
914 wr32(E1000_MSIXBM(0),
915 (E1000_EICR_RX_QUEUE0 |
916 E1000_EICR_TX_QUEUE0 |
917 E1000_EIMS_OTHER));
918 break;
919 case e1000_82580:
920 case e1000_82576:
921 wr32(E1000_IVAR0, E1000_IVAR_VALID);
922 break;
923 default:
924 break;
925 }
926 } 914 }
927 915
928 if (adapter->flags & IGB_FLAG_HAS_MSI) { 916 if (adapter->flags & IGB_FLAG_HAS_MSI) {
@@ -1140,6 +1128,8 @@ int igb_up(struct igb_adapter *adapter)
1140 } 1128 }
1141 if (adapter->msix_entries) 1129 if (adapter->msix_entries)
1142 igb_configure_msix(adapter); 1130 igb_configure_msix(adapter);
1131 else
1132 igb_assign_vector(adapter->q_vector[0], 0);
1143 1133
1144 /* Clear any pending interrupts. */ 1134 /* Clear any pending interrupts. */
1145 rd32(E1000_ICR); 1135 rd32(E1000_ICR);
@@ -1306,13 +1296,8 @@ void igb_reset(struct igb_adapter *adapter)
1306 hwm = min(((pba << 10) * 9 / 10), 1296 hwm = min(((pba << 10) * 9 / 10),
1307 ((pba << 10) - 2 * adapter->max_frame_size)); 1297 ((pba << 10) - 2 * adapter->max_frame_size));
1308 1298
1309 if (mac->type < e1000_82576) { 1299 fc->high_water = hwm & 0xFFF0; /* 16-byte granularity */
1310 fc->high_water = hwm & 0xFFF8; /* 8-byte granularity */ 1300 fc->low_water = fc->high_water - 16;
1311 fc->low_water = fc->high_water - 8;
1312 } else {
1313 fc->high_water = hwm & 0xFFF0; /* 16-byte granularity */
1314 fc->low_water = fc->high_water - 16;
1315 }
1316 fc->pause_time = 0xFFFF; 1301 fc->pause_time = 0xFFFF;
1317 fc->send_xon = 1; 1302 fc->send_xon = 1;
1318 fc->current_mode = fc->requested_mode; 1303 fc->current_mode = fc->requested_mode;
@@ -3427,7 +3412,7 @@ static inline int igb_tso_adv(struct igb_ring *tx_ring,
3427 iph->daddr, 0, 3412 iph->daddr, 0,
3428 IPPROTO_TCP, 3413 IPPROTO_TCP,
3429 0); 3414 0);
3430 } else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) { 3415 } else if (skb_is_gso_v6(skb)) {
3431 ipv6_hdr(skb)->payload_len = 0; 3416 ipv6_hdr(skb)->payload_len = 0;
3432 tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, 3417 tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
3433 &ipv6_hdr(skb)->daddr, 3418 &ipv6_hdr(skb)->daddr,
@@ -3589,6 +3574,7 @@ static inline int igb_tx_map_adv(struct igb_ring *tx_ring, struct sk_buff *skb,
3589 for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) { 3574 for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) {
3590 struct skb_frag_struct *frag; 3575 struct skb_frag_struct *frag;
3591 3576
3577 count++;
3592 i++; 3578 i++;
3593 if (i == tx_ring->count) 3579 if (i == tx_ring->count)
3594 i = 0; 3580 i = 0;
@@ -3610,7 +3596,6 @@ static inline int igb_tx_map_adv(struct igb_ring *tx_ring, struct sk_buff *skb,
3610 if (pci_dma_mapping_error(pdev, buffer_info->dma)) 3596 if (pci_dma_mapping_error(pdev, buffer_info->dma))
3611 goto dma_error; 3597 goto dma_error;
3612 3598
3613 count++;
3614 } 3599 }
3615 3600
3616 tx_ring->buffer_info[i].skb = skb; 3601 tx_ring->buffer_info[i].skb = skb;
diff --git a/drivers/net/igbvf/netdev.c b/drivers/net/igbvf/netdev.c
index e9dd95f136aa..2aa71a766c35 100644
--- a/drivers/net/igbvf/netdev.c
+++ b/drivers/net/igbvf/netdev.c
@@ -1963,7 +1963,7 @@ static int igbvf_tso(struct igbvf_adapter *adapter,
1963 iph->daddr, 0, 1963 iph->daddr, 0,
1964 IPPROTO_TCP, 1964 IPPROTO_TCP,
1965 0); 1965 0);
1966 } else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) { 1966 } else if (skb_is_gso_v6(skb)) {
1967 ipv6_hdr(skb)->payload_len = 0; 1967 ipv6_hdr(skb)->payload_len = 0;
1968 tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, 1968 tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
1969 &ipv6_hdr(skb)->daddr, 1969 &ipv6_hdr(skb)->daddr,
@@ -2117,6 +2117,7 @@ static inline int igbvf_tx_map_adv(struct igbvf_adapter *adapter,
2117 /* set time_stamp *before* dma to help avoid a possible race */ 2117 /* set time_stamp *before* dma to help avoid a possible race */
2118 buffer_info->time_stamp = jiffies; 2118 buffer_info->time_stamp = jiffies;
2119 buffer_info->next_to_watch = i; 2119 buffer_info->next_to_watch = i;
2120 buffer_info->mapped_as_page = false;
2120 buffer_info->dma = pci_map_single(pdev, skb->data, len, 2121 buffer_info->dma = pci_map_single(pdev, skb->data, len,
2121 PCI_DMA_TODEVICE); 2122 PCI_DMA_TODEVICE);
2122 if (pci_dma_mapping_error(pdev, buffer_info->dma)) 2123 if (pci_dma_mapping_error(pdev, buffer_info->dma))
@@ -2126,6 +2127,7 @@ static inline int igbvf_tx_map_adv(struct igbvf_adapter *adapter,
2126 for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) { 2127 for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) {
2127 struct skb_frag_struct *frag; 2128 struct skb_frag_struct *frag;
2128 2129
2130 count++;
2129 i++; 2131 i++;
2130 if (i == tx_ring->count) 2132 if (i == tx_ring->count)
2131 i = 0; 2133 i = 0;
@@ -2146,7 +2148,6 @@ static inline int igbvf_tx_map_adv(struct igbvf_adapter *adapter,
2146 PCI_DMA_TODEVICE); 2148 PCI_DMA_TODEVICE);
2147 if (pci_dma_mapping_error(pdev, buffer_info->dma)) 2149 if (pci_dma_mapping_error(pdev, buffer_info->dma))
2148 goto dma_error; 2150 goto dma_error;
2149 count++;
2150 } 2151 }
2151 2152
2152 tx_ring->buffer_info[i].skb = skb; 2153 tx_ring->buffer_info[i].skb = skb;
@@ -2163,14 +2164,14 @@ dma_error:
2163 buffer_info->length = 0; 2164 buffer_info->length = 0;
2164 buffer_info->next_to_watch = 0; 2165 buffer_info->next_to_watch = 0;
2165 buffer_info->mapped_as_page = false; 2166 buffer_info->mapped_as_page = false;
2166 count--; 2167 if (count)
2168 count--;
2167 2169
2168 /* clear timestamp and dma mappings for remaining portion of packet */ 2170 /* clear timestamp and dma mappings for remaining portion of packet */
2169 while (count >= 0) { 2171 while (count--) {
2170 count--; 2172 if (i==0)
2171 i--;
2172 if (i < 0)
2173 i += tx_ring->count; 2173 i += tx_ring->count;
2174 i--;
2174 buffer_info = &tx_ring->buffer_info[i]; 2175 buffer_info = &tx_ring->buffer_info[i];
2175 igbvf_put_txbuf(adapter, buffer_info); 2176 igbvf_put_txbuf(adapter, buffer_info);
2176 } 2177 }
@@ -2763,7 +2764,8 @@ static int __devinit igbvf_probe(struct pci_dev *pdev,
2763 err = hw->mac.ops.reset_hw(hw); 2764 err = hw->mac.ops.reset_hw(hw);
2764 if (err) { 2765 if (err) {
2765 dev_info(&pdev->dev, 2766 dev_info(&pdev->dev,
2766 "PF still in reset state, assigning new address\n"); 2767 "PF still in reset state, assigning new address."
2768 " Is the PF interface up?\n");
2767 random_ether_addr(hw->mac.addr); 2769 random_ether_addr(hw->mac.addr);
2768 } else { 2770 } else {
2769 err = hw->mac.ops.read_mac_addr(hw); 2771 err = hw->mac.ops.read_mac_addr(hw);
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
index bcd0f01d5feb..593d1a4f217c 100644
--- a/drivers/net/ixgb/ixgb_main.c
+++ b/drivers/net/ixgb/ixgb_main.c
@@ -1363,13 +1363,13 @@ ixgb_tx_map(struct ixgb_adapter *adapter, struct sk_buff *skb,
1363dma_error: 1363dma_error:
1364 dev_err(&pdev->dev, "TX DMA map failed\n"); 1364 dev_err(&pdev->dev, "TX DMA map failed\n");
1365 buffer_info->dma = 0; 1365 buffer_info->dma = 0;
1366 count--; 1366 if (count)
1367
1368 while (count >= 0) {
1369 count--; 1367 count--;
1370 i--; 1368
1371 if (i < 0) 1369 while (count--) {
1370 if (i==0)
1372 i += tx_ring->count; 1371 i += tx_ring->count;
1372 i--;
1373 buffer_info = &tx_ring->buffer_info[i]; 1373 buffer_info = &tx_ring->buffer_info[i];
1374 ixgb_unmap_and_free_tx_resource(adapter, buffer_info); 1374 ixgb_unmap_and_free_tx_resource(adapter, buffer_info);
1375 } 1375 }
diff --git a/drivers/net/ixgbe/Makefile b/drivers/net/ixgbe/Makefile
index 21b41f42b61c..bfef0ebcba9a 100644
--- a/drivers/net/ixgbe/Makefile
+++ b/drivers/net/ixgbe/Makefile
@@ -1,7 +1,7 @@
1################################################################################ 1################################################################################
2# 2#
3# Intel 10 Gigabit PCI Express Linux driver 3# Intel 10 Gigabit PCI Express Linux driver
4# Copyright(c) 1999 - 2009 Intel Corporation. 4# Copyright(c) 1999 - 2010 Intel Corporation.
5# 5#
6# This program is free software; you can redistribute it and/or modify it 6# This program is free software; you can redistribute it and/or modify it
7# under the terms and conditions of the GNU General Public License, 7# under the terms and conditions of the GNU General Public License,
diff --git a/drivers/net/ixgbe/ixgbe.h b/drivers/net/ixgbe/ixgbe.h
index 8da8eb535084..303e7bd39b67 100644
--- a/drivers/net/ixgbe/ixgbe.h
+++ b/drivers/net/ixgbe/ixgbe.h
@@ -1,7 +1,7 @@
1/******************************************************************************* 1/*******************************************************************************
2 2
3 Intel 10 Gigabit PCI Express Linux driver 3 Intel 10 Gigabit PCI Express Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation. 4 Copyright(c) 1999 - 2010 Intel Corporation.
5 5
6 This program is free software; you can redistribute it and/or modify it 6 This program is free software; you can redistribute it and/or modify it
7 under the terms and conditions of the GNU General Public License, 7 under the terms and conditions of the GNU General Public License,
diff --git a/drivers/net/ixgbe/ixgbe_82598.c b/drivers/net/ixgbe/ixgbe_82598.c
index 204177d78cec..35a06b47587b 100644
--- a/drivers/net/ixgbe/ixgbe_82598.c
+++ b/drivers/net/ixgbe/ixgbe_82598.c
@@ -1,7 +1,7 @@
1/******************************************************************************* 1/*******************************************************************************
2 2
3 Intel 10 Gigabit PCI Express Linux driver 3 Intel 10 Gigabit PCI Express Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation. 4 Copyright(c) 1999 - 2010 Intel Corporation.
5 5
6 This program is free software; you can redistribute it and/or modify it 6 This program is free software; you can redistribute it and/or modify it
7 under the terms and conditions of the GNU General Public License, 7 under the terms and conditions of the GNU General Public License,
@@ -357,12 +357,34 @@ static s32 ixgbe_fc_enable_82598(struct ixgbe_hw *hw, s32 packetbuf_num)
357 u32 fctrl_reg; 357 u32 fctrl_reg;
358 u32 rmcs_reg; 358 u32 rmcs_reg;
359 u32 reg; 359 u32 reg;
360 u32 link_speed = 0;
361 bool link_up;
360 362
361#ifdef CONFIG_DCB 363#ifdef CONFIG_DCB
362 if (hw->fc.requested_mode == ixgbe_fc_pfc) 364 if (hw->fc.requested_mode == ixgbe_fc_pfc)
363 goto out; 365 goto out;
364 366
365#endif /* CONFIG_DCB */ 367#endif /* CONFIG_DCB */
368 /*
369 * On 82598 having Rx FC on causes resets while doing 1G
370 * so if it's on turn it off once we know link_speed. For
371 * more details see 82598 Specification update.
372 */
373 hw->mac.ops.check_link(hw, &link_speed, &link_up, false);
374 if (link_up && link_speed == IXGBE_LINK_SPEED_1GB_FULL) {
375 switch (hw->fc.requested_mode) {
376 case ixgbe_fc_full:
377 hw->fc.requested_mode = ixgbe_fc_tx_pause;
378 break;
379 case ixgbe_fc_rx_pause:
380 hw->fc.requested_mode = ixgbe_fc_none;
381 break;
382 default:
383 /* no change */
384 break;
385 }
386 }
387
366 /* Negotiate the fc mode to use */ 388 /* Negotiate the fc mode to use */
367 ret_val = ixgbe_fc_autoneg(hw); 389 ret_val = ixgbe_fc_autoneg(hw);
368 if (ret_val) 390 if (ret_val)
diff --git a/drivers/net/ixgbe/ixgbe_82599.c b/drivers/net/ixgbe/ixgbe_82599.c
index 538340527aa6..b49bd6b9feb7 100644
--- a/drivers/net/ixgbe/ixgbe_82599.c
+++ b/drivers/net/ixgbe/ixgbe_82599.c
@@ -1,7 +1,7 @@
1/******************************************************************************* 1/*******************************************************************************
2 2
3 Intel 10 Gigabit PCI Express Linux driver 3 Intel 10 Gigabit PCI Express Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation. 4 Copyright(c) 1999 - 2010 Intel Corporation.
5 5
6 This program is free software; you can redistribute it and/or modify it 6 This program is free software; you can redistribute it and/or modify it
7 under the terms and conditions of the GNU General Public License, 7 under the terms and conditions of the GNU General Public License,
diff --git a/drivers/net/ixgbe/ixgbe_common.c b/drivers/net/ixgbe/ixgbe_common.c
index 688b8ca5da32..21f158f79dd0 100644
--- a/drivers/net/ixgbe/ixgbe_common.c
+++ b/drivers/net/ixgbe/ixgbe_common.c
@@ -1,7 +1,7 @@
1/******************************************************************************* 1/*******************************************************************************
2 2
3 Intel 10 Gigabit PCI Express Linux driver 3 Intel 10 Gigabit PCI Express Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation. 4 Copyright(c) 1999 - 2010 Intel Corporation.
5 5
6 This program is free software; you can redistribute it and/or modify it 6 This program is free software; you can redistribute it and/or modify it
7 under the terms and conditions of the GNU General Public License, 7 under the terms and conditions of the GNU General Public License,
diff --git a/drivers/net/ixgbe/ixgbe_common.h b/drivers/net/ixgbe/ixgbe_common.h
index 27f3214bed2e..dfff0ffaa502 100644
--- a/drivers/net/ixgbe/ixgbe_common.h
+++ b/drivers/net/ixgbe/ixgbe_common.h
@@ -1,7 +1,7 @@
1/******************************************************************************* 1/*******************************************************************************
2 2
3 Intel 10 Gigabit PCI Express Linux driver 3 Intel 10 Gigabit PCI Express Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation. 4 Copyright(c) 1999 - 2010 Intel Corporation.
5 5
6 This program is free software; you can redistribute it and/or modify it 6 This program is free software; you can redistribute it and/or modify it
7 under the terms and conditions of the GNU General Public License, 7 under the terms and conditions of the GNU General Public License,
diff --git a/drivers/net/ixgbe/ixgbe_dcb.c b/drivers/net/ixgbe/ixgbe_dcb.c
index a1562287342f..9aea4f04bbd2 100644
--- a/drivers/net/ixgbe/ixgbe_dcb.c
+++ b/drivers/net/ixgbe/ixgbe_dcb.c
@@ -1,7 +1,7 @@
1/******************************************************************************* 1/*******************************************************************************
2 2
3 Intel 10 Gigabit PCI Express Linux driver 3 Intel 10 Gigabit PCI Express Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation. 4 Copyright(c) 1999 - 2010 Intel Corporation.
5 5
6 This program is free software; you can redistribute it and/or modify it 6 This program is free software; you can redistribute it and/or modify it
7 under the terms and conditions of the GNU General Public License, 7 under the terms and conditions of the GNU General Public License,
diff --git a/drivers/net/ixgbe/ixgbe_dcb.h b/drivers/net/ixgbe/ixgbe_dcb.h
index 64a9fa15c059..5caafd4afbc3 100644
--- a/drivers/net/ixgbe/ixgbe_dcb.h
+++ b/drivers/net/ixgbe/ixgbe_dcb.h
@@ -1,7 +1,7 @@
1/******************************************************************************* 1/*******************************************************************************
2 2
3 Intel 10 Gigabit PCI Express Linux driver 3 Intel 10 Gigabit PCI Express Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation. 4 Copyright(c) 1999 - 2010 Intel Corporation.
5 5
6 This program is free software; you can redistribute it and/or modify it 6 This program is free software; you can redistribute it and/or modify it
7 under the terms and conditions of the GNU General Public License, 7 under the terms and conditions of the GNU General Public License,
diff --git a/drivers/net/ixgbe/ixgbe_dcb_82598.c b/drivers/net/ixgbe/ixgbe_dcb_82598.c
index f30263898ebc..f0e9279d4669 100644
--- a/drivers/net/ixgbe/ixgbe_dcb_82598.c
+++ b/drivers/net/ixgbe/ixgbe_dcb_82598.c
@@ -1,7 +1,7 @@
1/******************************************************************************* 1/*******************************************************************************
2 2
3 Intel 10 Gigabit PCI Express Linux driver 3 Intel 10 Gigabit PCI Express Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation. 4 Copyright(c) 1999 - 2010 Intel Corporation.
5 5
6 This program is free software; you can redistribute it and/or modify it 6 This program is free software; you can redistribute it and/or modify it
7 under the terms and conditions of the GNU General Public License, 7 under the terms and conditions of the GNU General Public License,
diff --git a/drivers/net/ixgbe/ixgbe_dcb_82598.h b/drivers/net/ixgbe/ixgbe_dcb_82598.h
index ebbe53c352a7..cc728fa092e2 100644
--- a/drivers/net/ixgbe/ixgbe_dcb_82598.h
+++ b/drivers/net/ixgbe/ixgbe_dcb_82598.h
@@ -1,7 +1,7 @@
1/******************************************************************************* 1/*******************************************************************************
2 2
3 Intel 10 Gigabit PCI Express Linux driver 3 Intel 10 Gigabit PCI Express Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation. 4 Copyright(c) 1999 - 2010 Intel Corporation.
5 5
6 This program is free software; you can redistribute it and/or modify it 6 This program is free software; you can redistribute it and/or modify it
7 under the terms and conditions of the GNU General Public License, 7 under the terms and conditions of the GNU General Public License,
diff --git a/drivers/net/ixgbe/ixgbe_dcb_82599.c b/drivers/net/ixgbe/ixgbe_dcb_82599.c
index ec8a252636d3..4f7a26ab411e 100644
--- a/drivers/net/ixgbe/ixgbe_dcb_82599.c
+++ b/drivers/net/ixgbe/ixgbe_dcb_82599.c
@@ -1,7 +1,7 @@
1/******************************************************************************* 1/*******************************************************************************
2 2
3 Intel 10 Gigabit PCI Express Linux driver 3 Intel 10 Gigabit PCI Express Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation. 4 Copyright(c) 1999 - 2010 Intel Corporation.
5 5
6 This program is free software; you can redistribute it and/or modify it 6 This program is free software; you can redistribute it and/or modify it
7 under the terms and conditions of the GNU General Public License, 7 under the terms and conditions of the GNU General Public License,
diff --git a/drivers/net/ixgbe/ixgbe_dcb_82599.h b/drivers/net/ixgbe/ixgbe_dcb_82599.h
index 9e5e2827e4af..0f3f791e1e1d 100644
--- a/drivers/net/ixgbe/ixgbe_dcb_82599.h
+++ b/drivers/net/ixgbe/ixgbe_dcb_82599.h
@@ -1,7 +1,7 @@
1/******************************************************************************* 1/*******************************************************************************
2 2
3 Intel 10 Gigabit PCI Express Linux driver 3 Intel 10 Gigabit PCI Express Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation. 4 Copyright(c) 1999 - 2010 Intel Corporation.
5 5
6 This program is free software; you can redistribute it and/or modify it 6 This program is free software; you can redistribute it and/or modify it
7 under the terms and conditions of the GNU General Public License, 7 under the terms and conditions of the GNU General Public License,
diff --git a/drivers/net/ixgbe/ixgbe_dcb_nl.c b/drivers/net/ixgbe/ixgbe_dcb_nl.c
index 3c7a79a7d7c6..dd4883f642be 100644
--- a/drivers/net/ixgbe/ixgbe_dcb_nl.c
+++ b/drivers/net/ixgbe/ixgbe_dcb_nl.c
@@ -1,7 +1,7 @@
1/******************************************************************************* 1/*******************************************************************************
2 2
3 Intel 10 Gigabit PCI Express Linux driver 3 Intel 10 Gigabit PCI Express Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation. 4 Copyright(c) 1999 - 2010 Intel Corporation.
5 5
6 This program is free software; you can redistribute it and/or modify it 6 This program is free software; you can redistribute it and/or modify it
7 under the terms and conditions of the GNU General Public License, 7 under the terms and conditions of the GNU General Public License,
@@ -223,7 +223,7 @@ static void ixgbe_dcbnl_set_pg_bwg_cfg_tx(struct net_device *netdev, int bwg_id,
223 223
224 if (adapter->temp_dcb_cfg.bw_percentage[0][bwg_id] != 224 if (adapter->temp_dcb_cfg.bw_percentage[0][bwg_id] !=
225 adapter->dcb_cfg.bw_percentage[0][bwg_id]) { 225 adapter->dcb_cfg.bw_percentage[0][bwg_id]) {
226 adapter->dcb_set_bitmap |= BIT_PG_RX; 226 adapter->dcb_set_bitmap |= BIT_PG_TX;
227 adapter->dcb_set_bitmap |= BIT_RESETLINK; 227 adapter->dcb_set_bitmap |= BIT_RESETLINK;
228 } 228 }
229} 229}
@@ -341,6 +341,12 @@ static u8 ixgbe_dcbnl_set_all(struct net_device *netdev)
341 if (!adapter->dcb_set_bitmap) 341 if (!adapter->dcb_set_bitmap)
342 return DCB_NO_HW_CHG; 342 return DCB_NO_HW_CHG;
343 343
344 ret = ixgbe_copy_dcb_cfg(&adapter->temp_dcb_cfg, &adapter->dcb_cfg,
345 adapter->ring_feature[RING_F_DCB].indices);
346
347 if (ret)
348 return DCB_NO_HW_CHG;
349
344 /* 350 /*
345 * Only take down the adapter if the configuration change 351 * Only take down the adapter if the configuration change
346 * requires a reset. 352 * requires a reset.
@@ -359,14 +365,6 @@ static u8 ixgbe_dcbnl_set_all(struct net_device *netdev)
359 } 365 }
360 } 366 }
361 367
362 ret = ixgbe_copy_dcb_cfg(&adapter->temp_dcb_cfg, &adapter->dcb_cfg,
363 adapter->ring_feature[RING_F_DCB].indices);
364 if (ret) {
365 if (adapter->dcb_set_bitmap & BIT_RESETLINK)
366 clear_bit(__IXGBE_RESETTING, &adapter->state);
367 return DCB_NO_HW_CHG;
368 }
369
370 if (adapter->dcb_cfg.pfc_mode_enable) { 368 if (adapter->dcb_cfg.pfc_mode_enable) {
371 if ((adapter->hw.mac.type != ixgbe_mac_82598EB) && 369 if ((adapter->hw.mac.type != ixgbe_mac_82598EB) &&
372 (adapter->hw.fc.current_mode != ixgbe_fc_pfc)) 370 (adapter->hw.fc.current_mode != ixgbe_fc_pfc))
diff --git a/drivers/net/ixgbe/ixgbe_ethtool.c b/drivers/net/ixgbe/ixgbe_ethtool.c
index 0bd49d3b9f65..d77961fc75f9 100644
--- a/drivers/net/ixgbe/ixgbe_ethtool.c
+++ b/drivers/net/ixgbe/ixgbe_ethtool.c
@@ -1,7 +1,7 @@
1/******************************************************************************* 1/*******************************************************************************
2 2
3 Intel 10 Gigabit PCI Express Linux driver 3 Intel 10 Gigabit PCI Express Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation. 4 Copyright(c) 1999 - 2010 Intel Corporation.
5 5
6 This program is free software; you can redistribute it and/or modify it 6 This program is free software; you can redistribute it and/or modify it
7 under the terms and conditions of the GNU General Public License, 7 under the terms and conditions of the GNU General Public License,
diff --git a/drivers/net/ixgbe/ixgbe_fcoe.c b/drivers/net/ixgbe/ixgbe_fcoe.c
index da32a108a7b4..e9a20c88c155 100644
--- a/drivers/net/ixgbe/ixgbe_fcoe.c
+++ b/drivers/net/ixgbe/ixgbe_fcoe.c
@@ -1,7 +1,7 @@
1/******************************************************************************* 1/*******************************************************************************
2 2
3 Intel 10 Gigabit PCI Express Linux driver 3 Intel 10 Gigabit PCI Express Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation. 4 Copyright(c) 1999 - 2010 Intel Corporation.
5 5
6 This program is free software; you can redistribute it and/or modify it 6 This program is free software; you can redistribute it and/or modify it
7 under the terms and conditions of the GNU General Public License, 7 under the terms and conditions of the GNU General Public License,
diff --git a/drivers/net/ixgbe/ixgbe_fcoe.h b/drivers/net/ixgbe/ixgbe_fcoe.h
index de8ff53187da..abf4b2b3f252 100644
--- a/drivers/net/ixgbe/ixgbe_fcoe.h
+++ b/drivers/net/ixgbe/ixgbe_fcoe.h
@@ -1,7 +1,7 @@
1/******************************************************************************* 1/*******************************************************************************
2 2
3 Intel 10 Gigabit PCI Express Linux driver 3 Intel 10 Gigabit PCI Express Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation. 4 Copyright(c) 1999 - 2010 Intel Corporation.
5 5
6 This program is free software; you can redistribute it and/or modify it 6 This program is free software; you can redistribute it and/or modify it
7 under the terms and conditions of the GNU General Public License, 7 under the terms and conditions of the GNU General Public License,
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
index bd64387563f0..951b73cf5ca2 100644
--- a/drivers/net/ixgbe/ixgbe_main.c
+++ b/drivers/net/ixgbe/ixgbe_main.c
@@ -1,7 +1,7 @@
1/******************************************************************************* 1/*******************************************************************************
2 2
3 Intel 10 Gigabit PCI Express Linux driver 3 Intel 10 Gigabit PCI Express Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation. 4 Copyright(c) 1999 - 2010 Intel Corporation.
5 5
6 This program is free software; you can redistribute it and/or modify it 6 This program is free software; you can redistribute it and/or modify it
7 under the terms and conditions of the GNU General Public License, 7 under the terms and conditions of the GNU General Public License,
@@ -52,7 +52,7 @@ static const char ixgbe_driver_string[] =
52 52
53#define DRV_VERSION "2.0.44-k2" 53#define DRV_VERSION "2.0.44-k2"
54const char ixgbe_driver_version[] = DRV_VERSION; 54const char ixgbe_driver_version[] = DRV_VERSION;
55static char ixgbe_copyright[] = "Copyright (c) 1999-2009 Intel Corporation."; 55static char ixgbe_copyright[] = "Copyright (c) 1999-2010 Intel Corporation.";
56 56
57static const struct ixgbe_info *ixgbe_info_tbl[] = { 57static const struct ixgbe_info *ixgbe_info_tbl[] = {
58 [board_82598] = &ixgbe_82598_info, 58 [board_82598] = &ixgbe_82598_info,
@@ -262,10 +262,12 @@ static inline bool ixgbe_tx_is_paused(struct ixgbe_adapter *adapter,
262 int reg_idx = tx_ring->reg_idx; 262 int reg_idx = tx_ring->reg_idx;
263 int dcb_i = adapter->ring_feature[RING_F_DCB].indices; 263 int dcb_i = adapter->ring_feature[RING_F_DCB].indices;
264 264
265 if (adapter->hw.mac.type == ixgbe_mac_82598EB) { 265 switch (adapter->hw.mac.type) {
266 case ixgbe_mac_82598EB:
266 tc = reg_idx >> 2; 267 tc = reg_idx >> 2;
267 txoff = IXGBE_TFCS_TXOFF0; 268 txoff = IXGBE_TFCS_TXOFF0;
268 } else if (adapter->hw.mac.type == ixgbe_mac_82599EB) { 269 break;
270 case ixgbe_mac_82599EB:
269 tc = 0; 271 tc = 0;
270 txoff = IXGBE_TFCS_TXOFF; 272 txoff = IXGBE_TFCS_TXOFF;
271 if (dcb_i == 8) { 273 if (dcb_i == 8) {
@@ -284,6 +286,9 @@ static inline bool ixgbe_tx_is_paused(struct ixgbe_adapter *adapter,
284 tc += (reg_idx - 96) >> 4; 286 tc += (reg_idx - 96) >> 4;
285 } 287 }
286 } 288 }
289 break;
290 default:
291 tc = 0;
287 } 292 }
288 txoff <<= tc; 293 txoff <<= tc;
289 } 294 }
@@ -4373,6 +4378,11 @@ static int ixgbe_resume(struct pci_dev *pdev)
4373 4378
4374 pci_set_power_state(pdev, PCI_D0); 4379 pci_set_power_state(pdev, PCI_D0);
4375 pci_restore_state(pdev); 4380 pci_restore_state(pdev);
4381 /*
4382 * pci_restore_state clears dev->state_saved so call
4383 * pci_save_state to restore it.
4384 */
4385 pci_save_state(pdev);
4376 4386
4377 err = pci_enable_device_mem(pdev); 4387 err = pci_enable_device_mem(pdev);
4378 if (err) { 4388 if (err) {
@@ -4918,7 +4928,7 @@ static int ixgbe_tso(struct ixgbe_adapter *adapter,
4918 iph->daddr, 0, 4928 iph->daddr, 0,
4919 IPPROTO_TCP, 4929 IPPROTO_TCP,
4920 0); 4930 0);
4921 } else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) { 4931 } else if (skb_is_gso_v6(skb)) {
4922 ipv6_hdr(skb)->payload_len = 0; 4932 ipv6_hdr(skb)->payload_len = 0;
4923 tcp_hdr(skb)->check = 4933 tcp_hdr(skb)->check =
4924 ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, 4934 ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
@@ -5157,19 +5167,19 @@ dma_error:
5157 tx_buffer_info->dma = 0; 5167 tx_buffer_info->dma = 0;
5158 tx_buffer_info->time_stamp = 0; 5168 tx_buffer_info->time_stamp = 0;
5159 tx_buffer_info->next_to_watch = 0; 5169 tx_buffer_info->next_to_watch = 0;
5160 count--; 5170 if (count)
5171 count--;
5161 5172
5162 /* clear timestamp and dma mappings for remaining portion of packet */ 5173 /* clear timestamp and dma mappings for remaining portion of packet */
5163 while (count >= 0) { 5174 while (count--) {
5164 count--; 5175 if (i==0)
5165 i--;
5166 if (i < 0)
5167 i += tx_ring->count; 5176 i += tx_ring->count;
5177 i--;
5168 tx_buffer_info = &tx_ring->tx_buffer_info[i]; 5178 tx_buffer_info = &tx_ring->tx_buffer_info[i];
5169 ixgbe_unmap_and_free_tx_resource(adapter, tx_buffer_info); 5179 ixgbe_unmap_and_free_tx_resource(adapter, tx_buffer_info);
5170 } 5180 }
5171 5181
5172 return count; 5182 return 0;
5173} 5183}
5174 5184
5175static void ixgbe_tx_queue(struct ixgbe_adapter *adapter, 5185static void ixgbe_tx_queue(struct ixgbe_adapter *adapter,
@@ -5319,8 +5329,11 @@ static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb)
5319 struct ixgbe_adapter *adapter = netdev_priv(dev); 5329 struct ixgbe_adapter *adapter = netdev_priv(dev);
5320 int txq = smp_processor_id(); 5330 int txq = smp_processor_id();
5321 5331
5322 if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) 5332 if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) {
5333 while (unlikely(txq >= dev->real_num_tx_queues))
5334 txq -= dev->real_num_tx_queues;
5323 return txq; 5335 return txq;
5336 }
5324 5337
5325#ifdef IXGBE_FCOE 5338#ifdef IXGBE_FCOE
5326 if ((adapter->flags & IXGBE_FLAG_FCOE_ENABLED) && 5339 if ((adapter->flags & IXGBE_FLAG_FCOE_ENABLED) &&
@@ -5566,6 +5579,10 @@ static void ixgbe_netpoll(struct net_device *netdev)
5566 struct ixgbe_adapter *adapter = netdev_priv(netdev); 5579 struct ixgbe_adapter *adapter = netdev_priv(netdev);
5567 int i; 5580 int i;
5568 5581
5582 /* if interface is down do nothing */
5583 if (test_bit(__IXGBE_DOWN, &adapter->state))
5584 return;
5585
5569 adapter->flags |= IXGBE_FLAG_IN_NETPOLL; 5586 adapter->flags |= IXGBE_FLAG_IN_NETPOLL;
5570 if (adapter->flags & IXGBE_FLAG_MSIX_ENABLED) { 5587 if (adapter->flags & IXGBE_FLAG_MSIX_ENABLED) {
5571 int num_q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS; 5588 int num_q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
@@ -5746,6 +5763,10 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
5746 if (err) 5763 if (err)
5747 goto err_sw_init; 5764 goto err_sw_init;
5748 5765
5766 /* Make it possible the adapter to be woken up via WOL */
5767 if (adapter->hw.mac.type == ixgbe_mac_82599EB)
5768 IXGBE_WRITE_REG(&adapter->hw, IXGBE_WUS, ~0);
5769
5749 /* 5770 /*
5750 * If there is a fan on this device and it has failed log the 5771 * If there is a fan on this device and it has failed log the
5751 * failure. 5772 * failure.
diff --git a/drivers/net/ixgbe/ixgbe_phy.c b/drivers/net/ixgbe/ixgbe_phy.c
index 9ecad17522c3..1c1efd386956 100644
--- a/drivers/net/ixgbe/ixgbe_phy.c
+++ b/drivers/net/ixgbe/ixgbe_phy.c
@@ -1,7 +1,7 @@
1/******************************************************************************* 1/*******************************************************************************
2 2
3 Intel 10 Gigabit PCI Express Linux driver 3 Intel 10 Gigabit PCI Express Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation. 4 Copyright(c) 1999 - 2010 Intel Corporation.
5 5
6 This program is free software; you can redistribute it and/or modify it 6 This program is free software; you can redistribute it and/or modify it
7 under the terms and conditions of the GNU General Public License, 7 under the terms and conditions of the GNU General Public License,
diff --git a/drivers/net/ixgbe/ixgbe_phy.h b/drivers/net/ixgbe/ixgbe_phy.h
index 9b700f5bf1ed..9cf5f3b4cc5d 100644
--- a/drivers/net/ixgbe/ixgbe_phy.h
+++ b/drivers/net/ixgbe/ixgbe_phy.h
@@ -1,7 +1,7 @@
1/******************************************************************************* 1/*******************************************************************************
2 2
3 Intel 10 Gigabit PCI Express Linux driver 3 Intel 10 Gigabit PCI Express Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation. 4 Copyright(c) 1999 - 2010 Intel Corporation.
5 5
6 This program is free software; you can redistribute it and/or modify it 6 This program is free software; you can redistribute it and/or modify it
7 under the terms and conditions of the GNU General Public License, 7 under the terms and conditions of the GNU General Public License,
diff --git a/drivers/net/ixgbe/ixgbe_type.h b/drivers/net/ixgbe/ixgbe_type.h
index 84650c6ebe03..9eafddfa1b97 100644
--- a/drivers/net/ixgbe/ixgbe_type.h
+++ b/drivers/net/ixgbe/ixgbe_type.h
@@ -1,7 +1,7 @@
1/******************************************************************************* 1/*******************************************************************************
2 2
3 Intel 10 Gigabit PCI Express Linux driver 3 Intel 10 Gigabit PCI Express Linux driver
4 Copyright(c) 1999 - 2009 Intel Corporation. 4 Copyright(c) 1999 - 2010 Intel Corporation.
5 5
6 This program is free software; you can redistribute it and/or modify it 6 This program is free software; you can redistribute it and/or modify it
7 under the terms and conditions of the GNU General Public License, 7 under the terms and conditions of the GNU General Public License,
diff --git a/drivers/net/ks8851_mll.c b/drivers/net/ks8851_mll.c
index c146304d8d6c..c0ceebccaa49 100644
--- a/drivers/net/ks8851_mll.c
+++ b/drivers/net/ks8851_mll.c
@@ -854,8 +854,8 @@ static void ks_update_link_status(struct net_device *netdev, struct ks_net *ks)
854 854
855static irqreturn_t ks_irq(int irq, void *pw) 855static irqreturn_t ks_irq(int irq, void *pw)
856{ 856{
857 struct ks_net *ks = pw; 857 struct net_device *netdev = pw;
858 struct net_device *netdev = ks->netdev; 858 struct ks_net *ks = netdev_priv(netdev);
859 u16 status; 859 u16 status;
860 860
861 /*this should be the first in IRQ handler */ 861 /*this should be the first in IRQ handler */
diff --git a/drivers/net/ll_temac_main.c b/drivers/net/ll_temac_main.c
index 336e7c7a9275..a8522bd73ae7 100644
--- a/drivers/net/ll_temac_main.c
+++ b/drivers/net/ll_temac_main.c
@@ -134,7 +134,7 @@ static int temac_dma_bd_init(struct net_device *ndev)
134 struct sk_buff *skb; 134 struct sk_buff *skb;
135 int i; 135 int i;
136 136
137 lp->rx_skb = kzalloc(sizeof(struct sk_buff)*RX_BD_NUM, GFP_KERNEL); 137 lp->rx_skb = kzalloc(sizeof(*lp->rx_skb) * RX_BD_NUM, GFP_KERNEL);
138 /* allocate the tx and rx ring buffer descriptors. */ 138 /* allocate the tx and rx ring buffer descriptors. */
139 /* returns a virtual addres and a physical address. */ 139 /* returns a virtual addres and a physical address. */
140 lp->tx_bd_v = dma_alloc_coherent(ndev->dev.parent, 140 lp->tx_bd_v = dma_alloc_coherent(ndev->dev.parent,
diff --git a/drivers/net/mlx4/main.c b/drivers/net/mlx4/main.c
index 291a505fd4fc..3cf56d90d859 100644
--- a/drivers/net/mlx4/main.c
+++ b/drivers/net/mlx4/main.c
@@ -1174,7 +1174,7 @@ static int __mlx4_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
1174 return 0; 1174 return 0;
1175 1175
1176err_port: 1176err_port:
1177 for (port = 1; port <= dev->caps.num_ports; port++) 1177 for (--port; port >= 1; --port)
1178 mlx4_cleanup_port_info(&priv->port[port]); 1178 mlx4_cleanup_port_info(&priv->port[port]);
1179 1179
1180 mlx4_cleanup_mcg_table(dev); 1180 mlx4_cleanup_mcg_table(dev);
diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c
index 1405a170bb43..af67af55efe7 100644
--- a/drivers/net/mv643xx_eth.c
+++ b/drivers/net/mv643xx_eth.c
@@ -656,6 +656,7 @@ static int rxq_refill(struct rx_queue *rxq, int budget)
656 struct sk_buff *skb; 656 struct sk_buff *skb;
657 int rx; 657 int rx;
658 struct rx_desc *rx_desc; 658 struct rx_desc *rx_desc;
659 int size;
659 660
660 skb = __skb_dequeue(&mp->rx_recycle); 661 skb = __skb_dequeue(&mp->rx_recycle);
661 if (skb == NULL) 662 if (skb == NULL)
@@ -678,10 +679,11 @@ static int rxq_refill(struct rx_queue *rxq, int budget)
678 679
679 rx_desc = rxq->rx_desc_area + rx; 680 rx_desc = rxq->rx_desc_area + rx;
680 681
682 size = skb->end - skb->data;
681 rx_desc->buf_ptr = dma_map_single(mp->dev->dev.parent, 683 rx_desc->buf_ptr = dma_map_single(mp->dev->dev.parent,
682 skb->data, mp->skb_size, 684 skb->data, size,
683 DMA_FROM_DEVICE); 685 DMA_FROM_DEVICE);
684 rx_desc->buf_size = mp->skb_size; 686 rx_desc->buf_size = size;
685 rxq->rx_skb[rx] = skb; 687 rxq->rx_skb[rx] = skb;
686 wmb(); 688 wmb();
687 rx_desc->cmd_sts = BUFFER_OWNED_BY_DMA | RX_ENABLE_INTERRUPT; 689 rx_desc->cmd_sts = BUFFER_OWNED_BY_DMA | RX_ENABLE_INTERRUPT;
diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h
index 76cd1f3e9fc8..9bc5bd1d538a 100644
--- a/drivers/net/netxen/netxen_nic.h
+++ b/drivers/net/netxen/netxen_nic.h
@@ -53,8 +53,8 @@
53 53
54#define _NETXEN_NIC_LINUX_MAJOR 4 54#define _NETXEN_NIC_LINUX_MAJOR 4
55#define _NETXEN_NIC_LINUX_MINOR 0 55#define _NETXEN_NIC_LINUX_MINOR 0
56#define _NETXEN_NIC_LINUX_SUBVERSION 65 56#define _NETXEN_NIC_LINUX_SUBVERSION 72
57#define NETXEN_NIC_LINUX_VERSIONID "4.0.65" 57#define NETXEN_NIC_LINUX_VERSIONID "4.0.72"
58 58
59#define NETXEN_VERSION_CODE(a, b, c) (((a) << 24) + ((b) << 16) + (c)) 59#define NETXEN_VERSION_CODE(a, b, c) (((a) << 24) + ((b) << 16) + (c))
60#define _major(v) (((v) >> 24) & 0xff) 60#define _major(v) (((v) >> 24) & 0xff)
diff --git a/drivers/net/netxen/netxen_nic_ethtool.c b/drivers/net/netxen/netxen_nic_ethtool.c
index ddd704ae0188..542f408333ff 100644
--- a/drivers/net/netxen/netxen_nic_ethtool.c
+++ b/drivers/net/netxen/netxen_nic_ethtool.c
@@ -66,7 +66,7 @@ static const char netxen_nic_gstrings_test[][ETH_GSTRING_LEN] = {
66 66
67#define NETXEN_NIC_TEST_LEN ARRAY_SIZE(netxen_nic_gstrings_test) 67#define NETXEN_NIC_TEST_LEN ARRAY_SIZE(netxen_nic_gstrings_test)
68 68
69#define NETXEN_NIC_REGS_COUNT 42 69#define NETXEN_NIC_REGS_COUNT 30
70#define NETXEN_NIC_REGS_LEN (NETXEN_NIC_REGS_COUNT * sizeof(__le32)) 70#define NETXEN_NIC_REGS_LEN (NETXEN_NIC_REGS_COUNT * sizeof(__le32))
71#define NETXEN_MAX_EEPROM_LEN 1024 71#define NETXEN_MAX_EEPROM_LEN 1024
72 72
@@ -312,150 +312,91 @@ static int netxen_nic_get_regs_len(struct net_device *dev)
312 return NETXEN_NIC_REGS_LEN; 312 return NETXEN_NIC_REGS_LEN;
313} 313}
314 314
315struct netxen_niu_regs {
316 __u32 reg[NETXEN_NIC_REGS_COUNT];
317};
318
319static struct netxen_niu_regs niu_registers[] = {
320 {
321 /* GB Mode */
322 {
323 NETXEN_NIU_GB_SERDES_RESET,
324 NETXEN_NIU_GB0_MII_MODE,
325 NETXEN_NIU_GB1_MII_MODE,
326 NETXEN_NIU_GB2_MII_MODE,
327 NETXEN_NIU_GB3_MII_MODE,
328 NETXEN_NIU_GB0_GMII_MODE,
329 NETXEN_NIU_GB1_GMII_MODE,
330 NETXEN_NIU_GB2_GMII_MODE,
331 NETXEN_NIU_GB3_GMII_MODE,
332 NETXEN_NIU_REMOTE_LOOPBACK,
333 NETXEN_NIU_GB0_HALF_DUPLEX,
334 NETXEN_NIU_GB1_HALF_DUPLEX,
335 NETXEN_NIU_RESET_SYS_FIFOS,
336 NETXEN_NIU_GB_CRC_DROP,
337 NETXEN_NIU_GB_DROP_WRONGADDR,
338 NETXEN_NIU_TEST_MUX_CTL,
339
340 NETXEN_NIU_GB_MAC_CONFIG_0(0),
341 NETXEN_NIU_GB_MAC_CONFIG_1(0),
342 NETXEN_NIU_GB_HALF_DUPLEX_CTRL(0),
343 NETXEN_NIU_GB_MAX_FRAME_SIZE(0),
344 NETXEN_NIU_GB_TEST_REG(0),
345 NETXEN_NIU_GB_MII_MGMT_CONFIG(0),
346 NETXEN_NIU_GB_MII_MGMT_COMMAND(0),
347 NETXEN_NIU_GB_MII_MGMT_ADDR(0),
348 NETXEN_NIU_GB_MII_MGMT_CTRL(0),
349 NETXEN_NIU_GB_MII_MGMT_STATUS(0),
350 NETXEN_NIU_GB_MII_MGMT_INDICATE(0),
351 NETXEN_NIU_GB_INTERFACE_CTRL(0),
352 NETXEN_NIU_GB_INTERFACE_STATUS(0),
353 NETXEN_NIU_GB_STATION_ADDR_0(0),
354 NETXEN_NIU_GB_STATION_ADDR_1(0),
355 -1,
356 }
357 },
358 {
359 /* XG Mode */
360 {
361 NETXEN_NIU_XG_SINGLE_TERM,
362 NETXEN_NIU_XG_DRIVE_HI,
363 NETXEN_NIU_XG_DRIVE_LO,
364 NETXEN_NIU_XG_DTX,
365 NETXEN_NIU_XG_DEQ,
366 NETXEN_NIU_XG_WORD_ALIGN,
367 NETXEN_NIU_XG_RESET,
368 NETXEN_NIU_XG_POWER_DOWN,
369 NETXEN_NIU_XG_RESET_PLL,
370 NETXEN_NIU_XG_SERDES_LOOPBACK,
371 NETXEN_NIU_XG_DO_BYTE_ALIGN,
372 NETXEN_NIU_XG_TX_ENABLE,
373 NETXEN_NIU_XG_RX_ENABLE,
374 NETXEN_NIU_XG_STATUS,
375 NETXEN_NIU_XG_PAUSE_THRESHOLD,
376 NETXEN_NIU_XGE_CONFIG_0,
377 NETXEN_NIU_XGE_CONFIG_1,
378 NETXEN_NIU_XGE_IPG,
379 NETXEN_NIU_XGE_STATION_ADDR_0_HI,
380 NETXEN_NIU_XGE_STATION_ADDR_0_1,
381 NETXEN_NIU_XGE_STATION_ADDR_1_LO,
382 NETXEN_NIU_XGE_STATUS,
383 NETXEN_NIU_XGE_MAX_FRAME_SIZE,
384 NETXEN_NIU_XGE_PAUSE_FRAME_VALUE,
385 NETXEN_NIU_XGE_TX_BYTE_CNT,
386 NETXEN_NIU_XGE_TX_FRAME_CNT,
387 NETXEN_NIU_XGE_RX_BYTE_CNT,
388 NETXEN_NIU_XGE_RX_FRAME_CNT,
389 NETXEN_NIU_XGE_AGGR_ERROR_CNT,
390 NETXEN_NIU_XGE_MULTICAST_FRAME_CNT,
391 NETXEN_NIU_XGE_UNICAST_FRAME_CNT,
392 NETXEN_NIU_XGE_CRC_ERROR_CNT,
393 NETXEN_NIU_XGE_OVERSIZE_FRAME_ERR,
394 NETXEN_NIU_XGE_UNDERSIZE_FRAME_ERR,
395 NETXEN_NIU_XGE_LOCAL_ERROR_CNT,
396 NETXEN_NIU_XGE_REMOTE_ERROR_CNT,
397 NETXEN_NIU_XGE_CONTROL_CHAR_CNT,
398 NETXEN_NIU_XGE_PAUSE_FRAME_CNT,
399 -1,
400 }
401 }
402};
403
404static void 315static void
405netxen_nic_get_regs(struct net_device *dev, struct ethtool_regs *regs, void *p) 316netxen_nic_get_regs(struct net_device *dev, struct ethtool_regs *regs, void *p)
406{ 317{
407 struct netxen_adapter *adapter = netdev_priv(dev); 318 struct netxen_adapter *adapter = netdev_priv(dev);
408 __u32 mode, *regs_buff = p; 319 struct netxen_recv_context *recv_ctx = &adapter->recv_ctx;
409 int i, window; 320 struct nx_host_sds_ring *sds_ring;
321 u32 *regs_buff = p;
322 int ring, i = 0;
323 int port = adapter->physical_port;
410 324
411 memset(p, 0, NETXEN_NIC_REGS_LEN); 325 memset(p, 0, NETXEN_NIC_REGS_LEN);
326
412 regs->version = (1 << 24) | (adapter->ahw.revision_id << 16) | 327 regs->version = (1 << 24) | (adapter->ahw.revision_id << 16) |
413 (adapter->pdev)->device; 328 (adapter->pdev)->device;
414 /* which mode */
415 regs_buff[0] = NXRD32(adapter, NETXEN_NIU_MODE);
416 mode = regs_buff[0];
417
418 /* Common registers to all the modes */
419 regs_buff[2] = NXRD32(adapter, NETXEN_NIU_STRAP_VALUE_SAVE_HIGHER);
420 /* GB/XGB Mode */
421 mode = (mode / 2) - 1;
422 window = 0;
423 if (mode <= 1) {
424 for (i = 3; niu_registers[mode].reg[i - 3] != -1; i++) {
425 /* GB: port specific registers */
426 if (mode == 0 && i >= 19)
427 window = adapter->physical_port *
428 NETXEN_NIC_PORT_WINDOW;
429
430 regs_buff[i] = NXRD32(adapter,
431 niu_registers[mode].reg[i - 3] + window);
432 }
433 329
330 if (adapter->is_up != NETXEN_ADAPTER_UP_MAGIC)
331 return;
332
333 regs_buff[i++] = NXRD32(adapter, CRB_CMDPEG_STATE);
334 regs_buff[i++] = NXRD32(adapter, CRB_RCVPEG_STATE);
335 regs_buff[i++] = NXRD32(adapter, CRB_FW_CAPABILITIES_1);
336 regs_buff[i++] = NXRDIO(adapter, adapter->crb_int_state_reg);
337 regs_buff[i++] = NXRD32(adapter, NX_CRB_DEV_REF_COUNT);
338 regs_buff[i++] = NXRD32(adapter, NX_CRB_DEV_STATE);
339 regs_buff[i++] = NXRD32(adapter, NETXEN_PEG_ALIVE_COUNTER);
340 regs_buff[i++] = NXRD32(adapter, NETXEN_PEG_HALT_STATUS1);
341 regs_buff[i++] = NXRD32(adapter, NETXEN_PEG_HALT_STATUS2);
342
343 regs_buff[i++] = NXRD32(adapter, NETXEN_CRB_PEG_NET_0+0x3c);
344 regs_buff[i++] = NXRD32(adapter, NETXEN_CRB_PEG_NET_1+0x3c);
345 regs_buff[i++] = NXRD32(adapter, NETXEN_CRB_PEG_NET_2+0x3c);
346 regs_buff[i++] = NXRD32(adapter, NETXEN_CRB_PEG_NET_3+0x3c);
347
348 if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) {
349
350 regs_buff[i++] = NXRD32(adapter, NETXEN_CRB_PEG_NET_4+0x3c);
351 i += 2;
352
353 regs_buff[i++] = NXRD32(adapter, CRB_XG_STATE_P3);
354 regs_buff[i++] = le32_to_cpu(*(adapter->tx_ring->hw_consumer));
355
356 } else {
357 i++;
358
359 regs_buff[i++] = NXRD32(adapter,
360 NETXEN_NIU_XGE_CONFIG_0+(0x10000*port));
361 regs_buff[i++] = NXRD32(adapter,
362 NETXEN_NIU_XGE_CONFIG_1+(0x10000*port));
363
364 regs_buff[i++] = NXRD32(adapter, CRB_XG_STATE);
365 regs_buff[i++] = NXRDIO(adapter,
366 adapter->tx_ring->crb_cmd_consumer);
367 }
368
369 regs_buff[i++] = NXRDIO(adapter, adapter->tx_ring->crb_cmd_producer);
370
371 regs_buff[i++] = NXRDIO(adapter,
372 recv_ctx->rds_rings[0].crb_rcv_producer);
373 regs_buff[i++] = NXRDIO(adapter,
374 recv_ctx->rds_rings[1].crb_rcv_producer);
375
376 regs_buff[i++] = adapter->max_sds_rings;
377
378 for (ring = 0; ring < adapter->max_sds_rings; ring++) {
379 sds_ring = &(recv_ctx->sds_rings[ring]);
380 regs_buff[i++] = NXRDIO(adapter,
381 sds_ring->crb_sts_consumer);
434 } 382 }
435} 383}
436 384
437static u32 netxen_nic_test_link(struct net_device *dev) 385static u32 netxen_nic_test_link(struct net_device *dev)
438{ 386{
439 struct netxen_adapter *adapter = netdev_priv(dev); 387 struct netxen_adapter *adapter = netdev_priv(dev);
440 __u32 status; 388 u32 val, port;
441 int val;
442 389
443 /* read which mode */ 390 port = adapter->physical_port;
444 if (adapter->ahw.port_type == NETXEN_NIC_GBE) { 391 if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) {
445 if (adapter->phy_read && 392 val = NXRD32(adapter, CRB_XG_STATE_P3);
446 adapter->phy_read(adapter, 393 val = XG_LINK_STATE_P3(adapter->ahw.pci_func, val);
447 NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS, 394 return (val == XG_LINK_UP_P3) ? 0 : 1;
448 &status) != 0) 395 } else {
449 return -EIO;
450 else {
451 val = netxen_get_phy_link(status);
452 return !val;
453 }
454 } else if (adapter->ahw.port_type == NETXEN_NIC_XGBE) {
455 val = NXRD32(adapter, CRB_XG_STATE); 396 val = NXRD32(adapter, CRB_XG_STATE);
397 val = (val >> port*8) & 0xff;
456 return (val == XG_LINK_UP) ? 0 : 1; 398 return (val == XG_LINK_UP) ? 0 : 1;
457 } 399 }
458 return -EIO;
459} 400}
460 401
461static int 402static int
diff --git a/drivers/net/netxen/netxen_nic_hw.c b/drivers/net/netxen/netxen_nic_hw.c
index 2e364fee3cbb..85e28e60ecf1 100644
--- a/drivers/net/netxen/netxen_nic_hw.c
+++ b/drivers/net/netxen/netxen_nic_hw.c
@@ -345,8 +345,7 @@ netxen_pcie_sem_lock(struct netxen_adapter *adapter, int sem, u32 id_reg)
345void 345void
346netxen_pcie_sem_unlock(struct netxen_adapter *adapter, int sem) 346netxen_pcie_sem_unlock(struct netxen_adapter *adapter, int sem)
347{ 347{
348 int val; 348 NXRD32(adapter, NETXEN_PCIE_REG(PCIE_SEM_UNLOCK(sem)));
349 val = NXRD32(adapter, NETXEN_PCIE_REG(PCIE_SEM_UNLOCK(sem)));
350} 349}
351 350
352int netxen_niu_xg_init_port(struct netxen_adapter *adapter, int port) 351int netxen_niu_xg_init_port(struct netxen_adapter *adapter, int port)
@@ -691,6 +690,9 @@ void netxen_p3_nic_set_multi(struct net_device *netdev)
691 struct list_head *head; 690 struct list_head *head;
692 nx_mac_list_t *cur; 691 nx_mac_list_t *cur;
693 692
693 if (adapter->is_up != NETXEN_ADAPTER_UP_MAGIC)
694 return;
695
694 list_splice_tail_init(&adapter->mac_list, &del_list); 696 list_splice_tail_init(&adapter->mac_list, &del_list);
695 697
696 nx_p3_nic_add_mac(adapter, adapter->mac_addr, &del_list); 698 nx_p3_nic_add_mac(adapter, adapter->mac_addr, &del_list);
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c
index 02f8d4b4db63..64cff68d372c 100644
--- a/drivers/net/netxen/netxen_nic_init.c
+++ b/drivers/net/netxen/netxen_nic_init.c
@@ -184,6 +184,8 @@ skip_rds:
184 184
185 tx_ring = adapter->tx_ring; 185 tx_ring = adapter->tx_ring;
186 vfree(tx_ring->cmd_buf_arr); 186 vfree(tx_ring->cmd_buf_arr);
187 kfree(tx_ring);
188 adapter->tx_ring = NULL;
187} 189}
188 190
189int netxen_alloc_sw_resources(struct netxen_adapter *adapter) 191int netxen_alloc_sw_resources(struct netxen_adapter *adapter)
@@ -782,7 +784,7 @@ netxen_need_fw_reset(struct netxen_adapter *adapter)
782 if (NXRD32(adapter, CRB_CMDPEG_STATE) == PHAN_INITIALIZE_FAILED) 784 if (NXRD32(adapter, CRB_CMDPEG_STATE) == PHAN_INITIALIZE_FAILED)
783 return 1; 785 return 1;
784 786
785 old_count = count = NXRD32(adapter, NETXEN_PEG_ALIVE_COUNTER); 787 old_count = NXRD32(adapter, NETXEN_PEG_ALIVE_COUNTER);
786 788
787 for (i = 0; i < 10; i++) { 789 for (i = 0; i < 10; i++) {
788 790
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c
index 6cae26a5bd67..24279e6e55f5 100644
--- a/drivers/net/netxen/netxen_nic_main.c
+++ b/drivers/net/netxen/netxen_nic_main.c
@@ -340,7 +340,7 @@ netxen_check_hw_init(struct netxen_adapter *adapter, int first_boot)
340 if (!(first_boot & 0x4)) { 340 if (!(first_boot & 0x4)) {
341 first_boot |= 0x4; 341 first_boot |= 0x4;
342 NXWR32(adapter, NETXEN_PCIE_REG(0x4), first_boot); 342 NXWR32(adapter, NETXEN_PCIE_REG(0x4), first_boot);
343 first_boot = NXRD32(adapter, NETXEN_PCIE_REG(0x4)); 343 NXRD32(adapter, NETXEN_PCIE_REG(0x4));
344 } 344 }
345 345
346 /* This is the first boot after power up */ 346 /* This is the first boot after power up */
@@ -1898,12 +1898,8 @@ static void netxen_nic_handle_phy_intr(struct netxen_adapter *adapter)
1898 linkup = (val == XG_LINK_UP_P3); 1898 linkup = (val == XG_LINK_UP_P3);
1899 } else { 1899 } else {
1900 val = NXRD32(adapter, CRB_XG_STATE); 1900 val = NXRD32(adapter, CRB_XG_STATE);
1901 if (adapter->ahw.port_type == NETXEN_NIC_GBE) 1901 val = (val >> port*8) & 0xff;
1902 linkup = (val >> port) & 1; 1902 linkup = (val == XG_LINK_UP);
1903 else {
1904 val = (val >> port*8) & 0xff;
1905 linkup = (val == XG_LINK_UP);
1906 }
1907 } 1903 }
1908 1904
1909 netxen_advert_link_change(adapter, linkup); 1905 netxen_advert_link_change(adapter, linkup);
@@ -1945,7 +1941,7 @@ static void netxen_tx_timeout_task(struct work_struct *work)
1945 netif_wake_queue(adapter->netdev); 1941 netif_wake_queue(adapter->netdev);
1946 1942
1947 clear_bit(__NX_RESETTING, &adapter->state); 1943 clear_bit(__NX_RESETTING, &adapter->state);
1948 1944 return;
1949 } else { 1945 } else {
1950 clear_bit(__NX_RESETTING, &adapter->state); 1946 clear_bit(__NX_RESETTING, &adapter->state);
1951 if (!netxen_nic_reset_context(adapter)) { 1947 if (!netxen_nic_reset_context(adapter)) {
@@ -2244,7 +2240,9 @@ netxen_detach_work(struct work_struct *work)
2244 2240
2245 netxen_nic_down(adapter, netdev); 2241 netxen_nic_down(adapter, netdev);
2246 2242
2243 rtnl_lock();
2247 netxen_nic_detach(adapter); 2244 netxen_nic_detach(adapter);
2245 rtnl_unlock();
2248 2246
2249 status = NXRD32(adapter, NETXEN_PEG_HALT_STATUS1); 2247 status = NXRD32(adapter, NETXEN_PEG_HALT_STATUS1);
2250 2248
diff --git a/drivers/net/niu.c b/drivers/net/niu.c
index 8ce58c4c7dd3..2aed2b382c40 100644
--- a/drivers/net/niu.c
+++ b/drivers/net/niu.c
@@ -2844,7 +2844,7 @@ static int tcam_wait_bit(struct niu *np, u64 bit)
2844 break; 2844 break;
2845 udelay(1); 2845 udelay(1);
2846 } 2846 }
2847 if (limit < 0) 2847 if (limit <= 0)
2848 return -ENODEV; 2848 return -ENODEV;
2849 2849
2850 return 0; 2850 return 0;
diff --git a/drivers/net/pcmcia/fmvj18x_cs.c b/drivers/net/pcmcia/fmvj18x_cs.c
index 813aca3fc433..7b17404d0858 100644
--- a/drivers/net/pcmcia/fmvj18x_cs.c
+++ b/drivers/net/pcmcia/fmvj18x_cs.c
@@ -717,6 +717,7 @@ static struct pcmcia_device_id fmvj18x_ids[] = {
717 PCMCIA_PFC_DEVICE_PROD_ID12(0, "NEC", "PK-UG-J001" ,0x18df0ba0 ,0x831b1064), 717 PCMCIA_PFC_DEVICE_PROD_ID12(0, "NEC", "PK-UG-J001" ,0x18df0ba0 ,0x831b1064),
718 PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0105, 0x0d0a), 718 PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0105, 0x0d0a),
719 PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0105, 0x0e0a), 719 PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0105, 0x0e0a),
720 PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0032, 0x0e01),
720 PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0032, 0x0a05), 721 PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0032, 0x0a05),
721 PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0032, 0x1101), 722 PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x0032, 0x1101),
722 PCMCIA_DEVICE_NULL, 723 PCMCIA_DEVICE_NULL,
diff --git a/drivers/net/pcmcia/nmclan_cs.c b/drivers/net/pcmcia/nmclan_cs.c
index 8a5ae3b182ed..12e3233868e9 100644
--- a/drivers/net/pcmcia/nmclan_cs.c
+++ b/drivers/net/pcmcia/nmclan_cs.c
@@ -1402,7 +1402,6 @@ static void BuildLAF(int *ladrf, int *adr)
1402 for (i = 0; i < 8; i++) 1402 for (i = 0; i < 8; i++)
1403 printk(KERN_CONT " %02X", ladrf[i]); 1403 printk(KERN_CONT " %02X", ladrf[i]);
1404 printk(KERN_CONT "\n"); 1404 printk(KERN_CONT "\n");
1405 }
1406#endif 1405#endif
1407} /* BuildLAF */ 1406} /* BuildLAF */
1408 1407
diff --git a/drivers/net/pcmcia/pcnet_cs.c b/drivers/net/pcmcia/pcnet_cs.c
index 92ed3fbf89a5..776cad2f5715 100644
--- a/drivers/net/pcmcia/pcnet_cs.c
+++ b/drivers/net/pcmcia/pcnet_cs.c
@@ -1741,7 +1741,7 @@ static struct pcmcia_device_id pcnet_ids[] = {
1741 PCMCIA_MFC_DEVICE_CIS_PROD_ID4(0, "NSC MF LAN/Modem", 0x58fc6056, "cis/DP83903.cis"), 1741 PCMCIA_MFC_DEVICE_CIS_PROD_ID4(0, "NSC MF LAN/Modem", 0x58fc6056, "cis/DP83903.cis"),
1742 PCMCIA_MFC_DEVICE_CIS_MANF_CARD(0, 0x0175, 0x0000, "cis/DP83903.cis"), 1742 PCMCIA_MFC_DEVICE_CIS_MANF_CARD(0, 0x0175, 0x0000, "cis/DP83903.cis"),
1743 PCMCIA_DEVICE_CIS_MANF_CARD(0xc00f, 0x0002, "cis/LA-PCM.cis"), 1743 PCMCIA_DEVICE_CIS_MANF_CARD(0xc00f, 0x0002, "cis/LA-PCM.cis"),
1744 PCMCIA_DEVICE_CIS_PROD_ID12("KTI", "PE520 PLUS", 0xad180345, 0x9d58d392, "PE520.cis"), 1744 PCMCIA_DEVICE_CIS_PROD_ID12("KTI", "PE520 PLUS", 0xad180345, 0x9d58d392, "cis/PE520.cis"),
1745 PCMCIA_DEVICE_CIS_PROD_ID12("NDC", "Ethernet", 0x01c43ae1, 0x00b2e941, "cis/NE2K.cis"), 1745 PCMCIA_DEVICE_CIS_PROD_ID12("NDC", "Ethernet", 0x01c43ae1, 0x00b2e941, "cis/NE2K.cis"),
1746 PCMCIA_DEVICE_CIS_PROD_ID12("PMX ", "PE-200", 0x34f3f1c8, 0x10b59f8c, "cis/PE-200.cis"), 1746 PCMCIA_DEVICE_CIS_PROD_ID12("PMX ", "PE-200", 0x34f3f1c8, 0x10b59f8c, "cis/PE-200.cis"),
1747 PCMCIA_DEVICE_CIS_PROD_ID12("TAMARACK", "Ethernet", 0xcf434fba, 0x00b2e941, "cis/tamarack.cis"), 1747 PCMCIA_DEVICE_CIS_PROD_ID12("TAMARACK", "Ethernet", 0xcf434fba, 0x00b2e941, "cis/tamarack.cis"),
@@ -1754,7 +1754,7 @@ MODULE_DEVICE_TABLE(pcmcia, pcnet_ids);
1754MODULE_FIRMWARE("cis/PCMLM28.cis"); 1754MODULE_FIRMWARE("cis/PCMLM28.cis");
1755MODULE_FIRMWARE("cis/DP83903.cis"); 1755MODULE_FIRMWARE("cis/DP83903.cis");
1756MODULE_FIRMWARE("cis/LA-PCM.cis"); 1756MODULE_FIRMWARE("cis/LA-PCM.cis");
1757MODULE_FIRMWARE("PE520.cis"); 1757MODULE_FIRMWARE("cis/PE520.cis");
1758MODULE_FIRMWARE("cis/NE2K.cis"); 1758MODULE_FIRMWARE("cis/NE2K.cis");
1759MODULE_FIRMWARE("cis/PE-200.cis"); 1759MODULE_FIRMWARE("cis/PE-200.cis");
1760MODULE_FIRMWARE("cis/tamarack.cis"); 1760MODULE_FIRMWARE("cis/tamarack.cis");
diff --git a/drivers/net/pcnet32.c b/drivers/net/pcnet32.c
index dcc67a35e8f2..e154677ff706 100644
--- a/drivers/net/pcnet32.c
+++ b/drivers/net/pcnet32.c
@@ -45,6 +45,7 @@ static const char *const version =
45#include <linux/crc32.h> 45#include <linux/crc32.h>
46#include <linux/netdevice.h> 46#include <linux/netdevice.h>
47#include <linux/etherdevice.h> 47#include <linux/etherdevice.h>
48#include <linux/if_ether.h>
48#include <linux/skbuff.h> 49#include <linux/skbuff.h>
49#include <linux/spinlock.h> 50#include <linux/spinlock.h>
50#include <linux/moduleparam.h> 51#include <linux/moduleparam.h>
@@ -1765,7 +1766,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
1765 1766
1766 /* if the ethernet address is not valid, force to 00:00:00:00:00:00 */ 1767 /* if the ethernet address is not valid, force to 00:00:00:00:00:00 */
1767 if (!is_valid_ether_addr(dev->perm_addr)) 1768 if (!is_valid_ether_addr(dev->perm_addr))
1768 memset(dev->dev_addr, 0, sizeof(dev->dev_addr)); 1769 memset(dev->dev_addr, 0, ETH_ALEN);
1769 1770
1770 if (pcnet32_debug & NETIF_MSG_PROBE) { 1771 if (pcnet32_debug & NETIF_MSG_PROBE) {
1771 printk(" %pM", dev->dev_addr); 1772 printk(" %pM", dev->dev_addr);
diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
index c13cf64095b6..33c4b12a63ba 100644
--- a/drivers/net/phy/broadcom.c
+++ b/drivers/net/phy/broadcom.c
@@ -331,8 +331,8 @@ static void bcm54xx_adjust_rxrefclk(struct phy_device *phydev)
331 bool clk125en = true; 331 bool clk125en = true;
332 332
333 /* Abort if we are using an untested phy. */ 333 /* Abort if we are using an untested phy. */
334 if (BRCM_PHY_MODEL(phydev) != PHY_ID_BCM57780 || 334 if (BRCM_PHY_MODEL(phydev) != PHY_ID_BCM57780 &&
335 BRCM_PHY_MODEL(phydev) != PHY_ID_BCM50610 || 335 BRCM_PHY_MODEL(phydev) != PHY_ID_BCM50610 &&
336 BRCM_PHY_MODEL(phydev) != PHY_ID_BCM50610M) 336 BRCM_PHY_MODEL(phydev) != PHY_ID_BCM50610M)
337 return; 337 return;
338 338
diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c
index bd4e8d72dc08..e17b70291bbc 100644
--- a/drivers/net/phy/mdio_bus.c
+++ b/drivers/net/phy/mdio_bus.c
@@ -264,6 +264,8 @@ static int mdio_bus_match(struct device *dev, struct device_driver *drv)
264 (phydev->phy_id & phydrv->phy_id_mask)); 264 (phydev->phy_id & phydrv->phy_id_mask));
265} 265}
266 266
267#ifdef CONFIG_PM
268
267static bool mdio_bus_phy_may_suspend(struct phy_device *phydev) 269static bool mdio_bus_phy_may_suspend(struct phy_device *phydev)
268{ 270{
269 struct device_driver *drv = phydev->dev.driver; 271 struct device_driver *drv = phydev->dev.driver;
@@ -295,34 +297,88 @@ static bool mdio_bus_phy_may_suspend(struct phy_device *phydev)
295 return true; 297 return true;
296} 298}
297 299
298/* Suspend and resume. Copied from platform_suspend and 300static int mdio_bus_suspend(struct device *dev)
299 * platform_resume
300 */
301static int mdio_bus_suspend(struct device * dev, pm_message_t state)
302{ 301{
303 struct phy_driver *phydrv = to_phy_driver(dev->driver); 302 struct phy_driver *phydrv = to_phy_driver(dev->driver);
304 struct phy_device *phydev = to_phy_device(dev); 303 struct phy_device *phydev = to_phy_device(dev);
305 304
305 /*
306 * We must stop the state machine manually, otherwise it stops out of
307 * control, possibly with the phydev->lock held. Upon resume, netdev
308 * may call phy routines that try to grab the same lock, and that may
309 * lead to a deadlock.
310 */
311 if (phydev->attached_dev)
312 phy_stop_machine(phydev);
313
306 if (!mdio_bus_phy_may_suspend(phydev)) 314 if (!mdio_bus_phy_may_suspend(phydev))
307 return 0; 315 return 0;
316
308 return phydrv->suspend(phydev); 317 return phydrv->suspend(phydev);
309} 318}
310 319
311static int mdio_bus_resume(struct device * dev) 320static int mdio_bus_resume(struct device *dev)
312{ 321{
313 struct phy_driver *phydrv = to_phy_driver(dev->driver); 322 struct phy_driver *phydrv = to_phy_driver(dev->driver);
314 struct phy_device *phydev = to_phy_device(dev); 323 struct phy_device *phydev = to_phy_device(dev);
324 int ret;
315 325
316 if (!mdio_bus_phy_may_suspend(phydev)) 326 if (!mdio_bus_phy_may_suspend(phydev))
327 goto no_resume;
328
329 ret = phydrv->resume(phydev);
330 if (ret < 0)
331 return ret;
332
333no_resume:
334 if (phydev->attached_dev)
335 phy_start_machine(phydev, NULL);
336
337 return 0;
338}
339
340static int mdio_bus_restore(struct device *dev)
341{
342 struct phy_device *phydev = to_phy_device(dev);
343 struct net_device *netdev = phydev->attached_dev;
344 int ret;
345
346 if (!netdev)
317 return 0; 347 return 0;
318 return phydrv->resume(phydev); 348
349 ret = phy_init_hw(phydev);
350 if (ret < 0)
351 return ret;
352
353 /* The PHY needs to renegotiate. */
354 phydev->link = 0;
355 phydev->state = PHY_UP;
356
357 phy_start_machine(phydev, NULL);
358
359 return 0;
319} 360}
320 361
362static struct dev_pm_ops mdio_bus_pm_ops = {
363 .suspend = mdio_bus_suspend,
364 .resume = mdio_bus_resume,
365 .freeze = mdio_bus_suspend,
366 .thaw = mdio_bus_resume,
367 .restore = mdio_bus_restore,
368};
369
370#define MDIO_BUS_PM_OPS (&mdio_bus_pm_ops)
371
372#else
373
374#define MDIO_BUS_PM_OPS NULL
375
376#endif /* CONFIG_PM */
377
321struct bus_type mdio_bus_type = { 378struct bus_type mdio_bus_type = {
322 .name = "mdio_bus", 379 .name = "mdio_bus",
323 .match = mdio_bus_match, 380 .match = mdio_bus_match,
324 .suspend = mdio_bus_suspend, 381 .pm = MDIO_BUS_PM_OPS,
325 .resume = mdio_bus_resume,
326}; 382};
327EXPORT_SYMBOL(mdio_bus_type); 383EXPORT_SYMBOL(mdio_bus_type);
328 384
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index b0e9f9c51721..0295097d6c44 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -410,7 +410,6 @@ EXPORT_SYMBOL(phy_start_aneg);
410 410
411 411
412static void phy_change(struct work_struct *work); 412static void phy_change(struct work_struct *work);
413static void phy_state_machine(struct work_struct *work);
414 413
415/** 414/**
416 * phy_start_machine - start PHY state machine tracking 415 * phy_start_machine - start PHY state machine tracking
@@ -430,7 +429,6 @@ void phy_start_machine(struct phy_device *phydev,
430{ 429{
431 phydev->adjust_state = handler; 430 phydev->adjust_state = handler;
432 431
433 INIT_DELAYED_WORK(&phydev->state_queue, phy_state_machine);
434 schedule_delayed_work(&phydev->state_queue, HZ); 432 schedule_delayed_work(&phydev->state_queue, HZ);
435} 433}
436 434
@@ -761,7 +759,7 @@ EXPORT_SYMBOL(phy_start);
761 * phy_state_machine - Handle the state machine 759 * phy_state_machine - Handle the state machine
762 * @work: work_struct that describes the work to be done 760 * @work: work_struct that describes the work to be done
763 */ 761 */
764static void phy_state_machine(struct work_struct *work) 762void phy_state_machine(struct work_struct *work)
765{ 763{
766 struct delayed_work *dwork = to_delayed_work(work); 764 struct delayed_work *dwork = to_delayed_work(work);
767 struct phy_device *phydev = 765 struct phy_device *phydev =
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index b10fedd82143..adbc0fded130 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -177,6 +177,7 @@ struct phy_device* phy_device_create(struct mii_bus *bus, int addr, int phy_id)
177 dev->state = PHY_DOWN; 177 dev->state = PHY_DOWN;
178 178
179 mutex_init(&dev->lock); 179 mutex_init(&dev->lock);
180 INIT_DELAYED_WORK(&dev->state_queue, phy_state_machine);
180 181
181 return dev; 182 return dev;
182} 183}
@@ -378,6 +379,20 @@ void phy_disconnect(struct phy_device *phydev)
378} 379}
379EXPORT_SYMBOL(phy_disconnect); 380EXPORT_SYMBOL(phy_disconnect);
380 381
382int phy_init_hw(struct phy_device *phydev)
383{
384 int ret;
385
386 if (!phydev->drv || !phydev->drv->config_init)
387 return 0;
388
389 ret = phy_scan_fixups(phydev);
390 if (ret < 0)
391 return ret;
392
393 return phydev->drv->config_init(phydev);
394}
395
381/** 396/**
382 * phy_attach_direct - attach a network device to a given PHY device pointer 397 * phy_attach_direct - attach a network device to a given PHY device pointer
383 * @dev: network device to attach 398 * @dev: network device to attach
@@ -425,21 +440,7 @@ int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,
425 /* Do initial configuration here, now that 440 /* Do initial configuration here, now that
426 * we have certain key parameters 441 * we have certain key parameters
427 * (dev_flags and interface) */ 442 * (dev_flags and interface) */
428 if (phydev->drv->config_init) { 443 return phy_init_hw(phydev);
429 int err;
430
431 err = phy_scan_fixups(phydev);
432
433 if (err < 0)
434 return err;
435
436 err = phydev->drv->config_init(phydev);
437
438 if (err < 0)
439 return err;
440 }
441
442 return 0;
443} 444}
444EXPORT_SYMBOL(phy_attach_direct); 445EXPORT_SYMBOL(phy_attach_direct);
445 446
diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c
index 707b391afa02..894a7c84faef 100644
--- a/drivers/net/qlge/qlge_main.c
+++ b/drivers/net/qlge/qlge_main.c
@@ -4119,7 +4119,7 @@ static int __devinit ql_init_device(struct pci_dev *pdev,
4119 err = pcie_set_readrq(pdev, 4096); 4119 err = pcie_set_readrq(pdev, 4096);
4120 if (err) { 4120 if (err) {
4121 dev_err(&pdev->dev, "Set readrq failed.\n"); 4121 dev_err(&pdev->dev, "Set readrq failed.\n");
4122 goto err_out; 4122 goto err_out1;
4123 } 4123 }
4124 4124
4125 err = pci_request_regions(pdev, DRV_NAME); 4125 err = pci_request_regions(pdev, DRV_NAME);
@@ -4140,7 +4140,7 @@ static int __devinit ql_init_device(struct pci_dev *pdev,
4140 4140
4141 if (err) { 4141 if (err) {
4142 dev_err(&pdev->dev, "No usable DMA configuration.\n"); 4142 dev_err(&pdev->dev, "No usable DMA configuration.\n");
4143 goto err_out; 4143 goto err_out2;
4144 } 4144 }
4145 4145
4146 /* Set PCIe reset type for EEH to fundamental. */ 4146 /* Set PCIe reset type for EEH to fundamental. */
@@ -4152,7 +4152,7 @@ static int __devinit ql_init_device(struct pci_dev *pdev,
4152 if (!qdev->reg_base) { 4152 if (!qdev->reg_base) {
4153 dev_err(&pdev->dev, "Register mapping failed.\n"); 4153 dev_err(&pdev->dev, "Register mapping failed.\n");
4154 err = -ENOMEM; 4154 err = -ENOMEM;
4155 goto err_out; 4155 goto err_out2;
4156 } 4156 }
4157 4157
4158 qdev->doorbell_area_size = pci_resource_len(pdev, 3); 4158 qdev->doorbell_area_size = pci_resource_len(pdev, 3);
@@ -4162,14 +4162,14 @@ static int __devinit ql_init_device(struct pci_dev *pdev,
4162 if (!qdev->doorbell_area) { 4162 if (!qdev->doorbell_area) {
4163 dev_err(&pdev->dev, "Doorbell register mapping failed.\n"); 4163 dev_err(&pdev->dev, "Doorbell register mapping failed.\n");
4164 err = -ENOMEM; 4164 err = -ENOMEM;
4165 goto err_out; 4165 goto err_out2;
4166 } 4166 }
4167 4167
4168 err = ql_get_board_info(qdev); 4168 err = ql_get_board_info(qdev);
4169 if (err) { 4169 if (err) {
4170 dev_err(&pdev->dev, "Register access failed.\n"); 4170 dev_err(&pdev->dev, "Register access failed.\n");
4171 err = -EIO; 4171 err = -EIO;
4172 goto err_out; 4172 goto err_out2;
4173 } 4173 }
4174 qdev->msg_enable = netif_msg_init(debug, default_msg); 4174 qdev->msg_enable = netif_msg_init(debug, default_msg);
4175 spin_lock_init(&qdev->hw_lock); 4175 spin_lock_init(&qdev->hw_lock);
@@ -4179,7 +4179,7 @@ static int __devinit ql_init_device(struct pci_dev *pdev,
4179 err = qdev->nic_ops->get_flash(qdev); 4179 err = qdev->nic_ops->get_flash(qdev);
4180 if (err) { 4180 if (err) {
4181 dev_err(&pdev->dev, "Invalid FLASH.\n"); 4181 dev_err(&pdev->dev, "Invalid FLASH.\n");
4182 goto err_out; 4182 goto err_out2;
4183 } 4183 }
4184 4184
4185 memcpy(ndev->perm_addr, ndev->dev_addr, ndev->addr_len); 4185 memcpy(ndev->perm_addr, ndev->dev_addr, ndev->addr_len);
@@ -4212,8 +4212,9 @@ static int __devinit ql_init_device(struct pci_dev *pdev,
4212 DRV_NAME, DRV_VERSION); 4212 DRV_NAME, DRV_VERSION);
4213 } 4213 }
4214 return 0; 4214 return 0;
4215err_out: 4215err_out2:
4216 ql_release_all(pdev); 4216 ql_release_all(pdev);
4217err_out1:
4217 pci_disable_device(pdev); 4218 pci_disable_device(pdev);
4218 return err; 4219 return err;
4219} 4220}
diff --git a/drivers/net/rrunner.c b/drivers/net/rrunner.c
index 20a71749154a..1c257098d0a6 100644
--- a/drivers/net/rrunner.c
+++ b/drivers/net/rrunner.c
@@ -1293,7 +1293,7 @@ static void rr_dump(struct net_device *dev)
1293 1293
1294 printk("Error code 0x%x\n", readl(&regs->Fail1)); 1294 printk("Error code 0x%x\n", readl(&regs->Fail1));
1295 1295
1296 index = (((readl(&regs->EvtPrd) >> 8) & 0xff ) - 1) % EVT_RING_ENTRIES; 1296 index = (((readl(&regs->EvtPrd) >> 8) & 0xff) - 1) % TX_RING_ENTRIES;
1297 cons = rrpriv->dirty_tx; 1297 cons = rrpriv->dirty_tx;
1298 printk("TX ring index %i, TX consumer %i\n", 1298 printk("TX ring index %i, TX consumer %i\n",
1299 index, cons); 1299 index, cons);
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c
index cc4218667cba..3c4836d0898f 100644
--- a/drivers/net/s2io.c
+++ b/drivers/net/s2io.c
@@ -3421,7 +3421,7 @@ static int wait_for_cmd_complete(void __iomem *addr, u64 busy_bit,
3421 break; 3421 break;
3422 } 3422 }
3423 } else { 3423 } else {
3424 if (!(val64 & busy_bit)) { 3424 if (val64 & busy_bit) {
3425 ret = SUCCESS; 3425 ret = SUCCESS;
3426 break; 3426 break;
3427 } 3427 }
diff --git a/drivers/net/sfc/efx.c b/drivers/net/sfc/efx.c
index f983e3b507cc..46997e177ee3 100644
--- a/drivers/net/sfc/efx.c
+++ b/drivers/net/sfc/efx.c
@@ -741,14 +741,14 @@ static int efx_probe_port(struct efx_nic *efx)
741 741
742 EFX_LOG(efx, "create port\n"); 742 EFX_LOG(efx, "create port\n");
743 743
744 if (phy_flash_cfg)
745 efx->phy_mode = PHY_MODE_SPECIAL;
746
744 /* Connect up MAC/PHY operations table */ 747 /* Connect up MAC/PHY operations table */
745 rc = efx->type->probe_port(efx); 748 rc = efx->type->probe_port(efx);
746 if (rc) 749 if (rc)
747 goto err; 750 goto err;
748 751
749 if (phy_flash_cfg)
750 efx->phy_mode = PHY_MODE_SPECIAL;
751
752 /* Sanity check MAC address */ 752 /* Sanity check MAC address */
753 if (is_valid_ether_addr(efx->mac_address)) { 753 if (is_valid_ether_addr(efx->mac_address)) {
754 memcpy(efx->net_dev->dev_addr, efx->mac_address, ETH_ALEN); 754 memcpy(efx->net_dev->dev_addr, efx->mac_address, ETH_ALEN);
@@ -2284,6 +2284,7 @@ static int __devinit efx_pci_probe(struct pci_dev *pci_dev,
2284 fail2: 2284 fail2:
2285 efx_fini_struct(efx); 2285 efx_fini_struct(efx);
2286 fail1: 2286 fail1:
2287 WARN_ON(rc > 0);
2287 EFX_LOG(efx, "initialisation failed. rc=%d\n", rc); 2288 EFX_LOG(efx, "initialisation failed. rc=%d\n", rc);
2288 free_netdev(net_dev); 2289 free_netdev(net_dev);
2289 return rc; 2290 return rc;
diff --git a/drivers/net/sfc/falcon.c b/drivers/net/sfc/falcon.c
index 17afcd26e870..9d009c46e962 100644
--- a/drivers/net/sfc/falcon.c
+++ b/drivers/net/sfc/falcon.c
@@ -925,6 +925,7 @@ static int falcon_probe_port(struct efx_nic *efx)
925 925
926static void falcon_remove_port(struct efx_nic *efx) 926static void falcon_remove_port(struct efx_nic *efx)
927{ 927{
928 efx->phy_op->remove(efx);
928 efx_nic_free_buffer(efx, &efx->stats_buffer); 929 efx_nic_free_buffer(efx, &efx->stats_buffer);
929} 930}
930 931
diff --git a/drivers/net/sfc/falcon_boards.c b/drivers/net/sfc/falcon_boards.c
index bf0b96af5334..5712fddd72f2 100644
--- a/drivers/net/sfc/falcon_boards.c
+++ b/drivers/net/sfc/falcon_boards.c
@@ -29,6 +29,15 @@
29#define FALCON_BOARD_SFN4111T 0x51 29#define FALCON_BOARD_SFN4111T 0x51
30#define FALCON_BOARD_SFN4112F 0x52 30#define FALCON_BOARD_SFN4112F 0x52
31 31
32/* Board temperature is about 15°C above ambient when air flow is
33 * limited. */
34#define FALCON_BOARD_TEMP_BIAS 15
35
36/* SFC4000 datasheet says: 'The maximum permitted junction temperature
37 * is 125°C; the thermal design of the environment for the SFC4000
38 * should aim to keep this well below 100°C.' */
39#define FALCON_JUNC_TEMP_MAX 90
40
32/***************************************************************************** 41/*****************************************************************************
33 * Support for LM87 sensor chip used on several boards 42 * Support for LM87 sensor chip used on several boards
34 */ 43 */
@@ -548,16 +557,16 @@ fail_hwmon:
548static u8 sfe4002_lm87_channel = 0x03; /* use AIN not FAN inputs */ 557static u8 sfe4002_lm87_channel = 0x03; /* use AIN not FAN inputs */
549 558
550static const u8 sfe4002_lm87_regs[] = { 559static const u8 sfe4002_lm87_regs[] = {
551 LM87_IN_LIMITS(0, 0x83, 0x91), /* 2.5V: 1.8V +/- 5% */ 560 LM87_IN_LIMITS(0, 0x7c, 0x99), /* 2.5V: 1.8V +/- 10% */
552 LM87_IN_LIMITS(1, 0x51, 0x5a), /* Vccp1: 1.2V +/- 5% */ 561 LM87_IN_LIMITS(1, 0x4c, 0x5e), /* Vccp1: 1.2V +/- 10% */
553 LM87_IN_LIMITS(2, 0xb6, 0xca), /* 3.3V: 3.3V +/- 5% */ 562 LM87_IN_LIMITS(2, 0xac, 0xd4), /* 3.3V: 3.3V +/- 10% */
554 LM87_IN_LIMITS(3, 0xb0, 0xc9), /* 5V: 4.6-5.2V */ 563 LM87_IN_LIMITS(3, 0xac, 0xd4), /* 5V: 5.0V +/- 10% */
555 LM87_IN_LIMITS(4, 0xb0, 0xe0), /* 12V: 11-14V */ 564 LM87_IN_LIMITS(4, 0xac, 0xe0), /* 12V: 10.8-14V */
556 LM87_IN_LIMITS(5, 0x44, 0x4b), /* Vccp2: 1.0V +/- 5% */ 565 LM87_IN_LIMITS(5, 0x3f, 0x4f), /* Vccp2: 1.0V +/- 10% */
557 LM87_AIN_LIMITS(0, 0xa0, 0xb2), /* AIN1: 1.66V +/- 5% */ 566 LM87_AIN_LIMITS(0, 0x98, 0xbb), /* AIN1: 1.66V +/- 10% */
558 LM87_AIN_LIMITS(1, 0x91, 0xa1), /* AIN2: 1.5V +/- 5% */ 567 LM87_AIN_LIMITS(1, 0x8a, 0xa9), /* AIN2: 1.5V +/- 10% */
559 LM87_TEMP_INT_LIMITS(10, 60), /* board */ 568 LM87_TEMP_INT_LIMITS(0, 80 + FALCON_BOARD_TEMP_BIAS),
560 LM87_TEMP_EXT1_LIMITS(10, 70), /* Falcon */ 569 LM87_TEMP_EXT1_LIMITS(0, FALCON_JUNC_TEMP_MAX),
561 0 570 0
562}; 571};
563 572
@@ -619,14 +628,14 @@ static int sfe4002_init(struct efx_nic *efx)
619static u8 sfn4112f_lm87_channel = 0x03; /* use AIN not FAN inputs */ 628static u8 sfn4112f_lm87_channel = 0x03; /* use AIN not FAN inputs */
620 629
621static const u8 sfn4112f_lm87_regs[] = { 630static const u8 sfn4112f_lm87_regs[] = {
622 LM87_IN_LIMITS(0, 0x83, 0x91), /* 2.5V: 1.8V +/- 5% */ 631 LM87_IN_LIMITS(0, 0x7c, 0x99), /* 2.5V: 1.8V +/- 10% */
623 LM87_IN_LIMITS(1, 0x51, 0x5a), /* Vccp1: 1.2V +/- 5% */ 632 LM87_IN_LIMITS(1, 0x4c, 0x5e), /* Vccp1: 1.2V +/- 10% */
624 LM87_IN_LIMITS(2, 0xb6, 0xca), /* 3.3V: 3.3V +/- 5% */ 633 LM87_IN_LIMITS(2, 0xac, 0xd4), /* 3.3V: 3.3V +/- 10% */
625 LM87_IN_LIMITS(4, 0xb0, 0xe0), /* 12V: 11-14V */ 634 LM87_IN_LIMITS(4, 0xac, 0xe0), /* 12V: 10.8-14V */
626 LM87_IN_LIMITS(5, 0x44, 0x4b), /* Vccp2: 1.0V +/- 5% */ 635 LM87_IN_LIMITS(5, 0x3f, 0x4f), /* Vccp2: 1.0V +/- 10% */
627 LM87_AIN_LIMITS(1, 0x91, 0xa1), /* AIN2: 1.5V +/- 5% */ 636 LM87_AIN_LIMITS(1, 0x8a, 0xa9), /* AIN2: 1.5V +/- 10% */
628 LM87_TEMP_INT_LIMITS(10, 60), /* board */ 637 LM87_TEMP_INT_LIMITS(0, 60 + FALCON_BOARD_TEMP_BIAS),
629 LM87_TEMP_EXT1_LIMITS(10, 70), /* Falcon */ 638 LM87_TEMP_EXT1_LIMITS(0, FALCON_JUNC_TEMP_MAX),
630 0 639 0
631}; 640};
632 641
diff --git a/drivers/net/sfc/falcon_xmac.c b/drivers/net/sfc/falcon_xmac.c
index 3da933f8f079..8ccab2c67a20 100644
--- a/drivers/net/sfc/falcon_xmac.c
+++ b/drivers/net/sfc/falcon_xmac.c
@@ -111,16 +111,12 @@ static void falcon_mask_status_intr(struct efx_nic *efx, bool enable)
111 efx_writeo(efx, &reg, FR_AB_XM_MGT_INT_MASK); 111 efx_writeo(efx, &reg, FR_AB_XM_MGT_INT_MASK);
112} 112}
113 113
114/* Get status of XAUI link */ 114static bool falcon_xgxs_link_ok(struct efx_nic *efx)
115static bool falcon_xaui_link_ok(struct efx_nic *efx)
116{ 115{
117 efx_oword_t reg; 116 efx_oword_t reg;
118 bool align_done, link_ok = false; 117 bool align_done, link_ok = false;
119 int sync_status; 118 int sync_status;
120 119
121 if (LOOPBACK_INTERNAL(efx))
122 return true;
123
124 /* Read link status */ 120 /* Read link status */
125 efx_reado(efx, &reg, FR_AB_XX_CORE_STAT); 121 efx_reado(efx, &reg, FR_AB_XX_CORE_STAT);
126 122
@@ -135,14 +131,24 @@ static bool falcon_xaui_link_ok(struct efx_nic *efx)
135 EFX_SET_OWORD_FIELD(reg, FRF_AB_XX_DISPERR, FFE_AB_XX_STAT_ALL_LANES); 131 EFX_SET_OWORD_FIELD(reg, FRF_AB_XX_DISPERR, FFE_AB_XX_STAT_ALL_LANES);
136 efx_writeo(efx, &reg, FR_AB_XX_CORE_STAT); 132 efx_writeo(efx, &reg, FR_AB_XX_CORE_STAT);
137 133
138 /* If the link is up, then check the phy side of the xaui link */
139 if (efx->link_state.up && link_ok)
140 if (efx->mdio.mmds & (1 << MDIO_MMD_PHYXS))
141 link_ok = efx_mdio_phyxgxs_lane_sync(efx);
142
143 return link_ok; 134 return link_ok;
144} 135}
145 136
137static bool falcon_xmac_link_ok(struct efx_nic *efx)
138{
139 /*
140 * Check MAC's XGXS link status except when using XGMII loopback
141 * which bypasses the XGXS block.
142 * If possible, check PHY's XGXS link status except when using
143 * MAC loopback.
144 */
145 return (efx->loopback_mode == LOOPBACK_XGMII ||
146 falcon_xgxs_link_ok(efx)) &&
147 (!(efx->mdio.mmds & (1 << MDIO_MMD_PHYXS)) ||
148 LOOPBACK_INTERNAL(efx) ||
149 efx_mdio_phyxgxs_lane_sync(efx));
150}
151
146void falcon_reconfigure_xmac_core(struct efx_nic *efx) 152void falcon_reconfigure_xmac_core(struct efx_nic *efx)
147{ 153{
148 unsigned int max_frame_len; 154 unsigned int max_frame_len;
@@ -245,9 +251,9 @@ static void falcon_reconfigure_xgxs_core(struct efx_nic *efx)
245 251
246 252
247/* Try to bring up the Falcon side of the Falcon-Phy XAUI link */ 253/* Try to bring up the Falcon side of the Falcon-Phy XAUI link */
248static bool falcon_check_xaui_link_up(struct efx_nic *efx, int tries) 254static bool falcon_xmac_link_ok_retry(struct efx_nic *efx, int tries)
249{ 255{
250 bool mac_up = falcon_xaui_link_ok(efx); 256 bool mac_up = falcon_xmac_link_ok(efx);
251 257
252 if (LOOPBACK_MASK(efx) & LOOPBACKS_EXTERNAL(efx) & LOOPBACKS_WS || 258 if (LOOPBACK_MASK(efx) & LOOPBACKS_EXTERNAL(efx) & LOOPBACKS_WS ||
253 efx_phy_mode_disabled(efx->phy_mode)) 259 efx_phy_mode_disabled(efx->phy_mode))
@@ -261,7 +267,7 @@ static bool falcon_check_xaui_link_up(struct efx_nic *efx, int tries)
261 falcon_reset_xaui(efx); 267 falcon_reset_xaui(efx);
262 udelay(200); 268 udelay(200);
263 269
264 mac_up = falcon_xaui_link_ok(efx); 270 mac_up = falcon_xmac_link_ok(efx);
265 --tries; 271 --tries;
266 } 272 }
267 273
@@ -272,7 +278,7 @@ static bool falcon_check_xaui_link_up(struct efx_nic *efx, int tries)
272 278
273static bool falcon_xmac_check_fault(struct efx_nic *efx) 279static bool falcon_xmac_check_fault(struct efx_nic *efx)
274{ 280{
275 return !falcon_check_xaui_link_up(efx, 5); 281 return !falcon_xmac_link_ok_retry(efx, 5);
276} 282}
277 283
278static int falcon_reconfigure_xmac(struct efx_nic *efx) 284static int falcon_reconfigure_xmac(struct efx_nic *efx)
@@ -284,7 +290,7 @@ static int falcon_reconfigure_xmac(struct efx_nic *efx)
284 290
285 falcon_reconfigure_mac_wrapper(efx); 291 falcon_reconfigure_mac_wrapper(efx);
286 292
287 efx->xmac_poll_required = !falcon_check_xaui_link_up(efx, 5); 293 efx->xmac_poll_required = !falcon_xmac_link_ok_retry(efx, 5);
288 falcon_mask_status_intr(efx, true); 294 falcon_mask_status_intr(efx, true);
289 295
290 return 0; 296 return 0;
@@ -357,7 +363,7 @@ void falcon_poll_xmac(struct efx_nic *efx)
357 return; 363 return;
358 364
359 falcon_mask_status_intr(efx, false); 365 falcon_mask_status_intr(efx, false);
360 efx->xmac_poll_required = !falcon_check_xaui_link_up(efx, 1); 366 efx->xmac_poll_required = !falcon_xmac_link_ok_retry(efx, 1);
361 falcon_mask_status_intr(efx, true); 367 falcon_mask_status_intr(efx, true);
362} 368}
363 369
diff --git a/drivers/net/sfc/mcdi.c b/drivers/net/sfc/mcdi.c
index 683353b904c7..f66b3da6ddff 100644
--- a/drivers/net/sfc/mcdi.c
+++ b/drivers/net/sfc/mcdi.c
@@ -127,7 +127,7 @@ static int efx_mcdi_poll(struct efx_nic *efx)
127 efx_dword_t reg; 127 efx_dword_t reg;
128 128
129 /* Check for a reboot atomically with respect to efx_mcdi_copyout() */ 129 /* Check for a reboot atomically with respect to efx_mcdi_copyout() */
130 rc = efx_mcdi_poll_reboot(efx); 130 rc = -efx_mcdi_poll_reboot(efx);
131 if (rc) 131 if (rc)
132 goto out; 132 goto out;
133 133
@@ -142,8 +142,9 @@ static int efx_mcdi_poll(struct efx_nic *efx)
142 if (spins != 0) { 142 if (spins != 0) {
143 --spins; 143 --spins;
144 udelay(1); 144 udelay(1);
145 } else 145 } else {
146 schedule(); 146 schedule_timeout_uninterruptible(1);
147 }
147 148
148 time = get_seconds(); 149 time = get_seconds();
149 150
@@ -803,7 +804,7 @@ int efx_mcdi_nvram_read(struct efx_nic *efx, unsigned int type,
803 loff_t offset, u8 *buffer, size_t length) 804 loff_t offset, u8 *buffer, size_t length)
804{ 805{
805 u8 inbuf[MC_CMD_NVRAM_READ_IN_LEN]; 806 u8 inbuf[MC_CMD_NVRAM_READ_IN_LEN];
806 u8 outbuf[MC_CMD_NVRAM_READ_OUT_LEN(length)]; 807 u8 outbuf[MC_CMD_NVRAM_READ_OUT_LEN(EFX_MCDI_NVRAM_LEN_MAX)];
807 size_t outlen; 808 size_t outlen;
808 int rc; 809 int rc;
809 810
@@ -827,7 +828,7 @@ fail:
827int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type, 828int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type,
828 loff_t offset, const u8 *buffer, size_t length) 829 loff_t offset, const u8 *buffer, size_t length)
829{ 830{
830 u8 inbuf[MC_CMD_NVRAM_WRITE_IN_LEN(length)]; 831 u8 inbuf[MC_CMD_NVRAM_WRITE_IN_LEN(EFX_MCDI_NVRAM_LEN_MAX)];
831 int rc; 832 int rc;
832 833
833 MCDI_SET_DWORD(inbuf, NVRAM_WRITE_IN_TYPE, type); 834 MCDI_SET_DWORD(inbuf, NVRAM_WRITE_IN_TYPE, type);
@@ -837,7 +838,8 @@ int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type,
837 838
838 BUILD_BUG_ON(MC_CMD_NVRAM_WRITE_OUT_LEN != 0); 839 BUILD_BUG_ON(MC_CMD_NVRAM_WRITE_OUT_LEN != 0);
839 840
840 rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_WRITE, inbuf, sizeof(inbuf), 841 rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_WRITE, inbuf,
842 ALIGN(MC_CMD_NVRAM_WRITE_IN_LEN(length), 4),
841 NULL, 0, NULL); 843 NULL, 0, NULL);
842 if (rc) 844 if (rc)
843 goto fail; 845 goto fail;
diff --git a/drivers/net/sfc/mcdi.h b/drivers/net/sfc/mcdi.h
index de916728c2e3..10ce98f4c0fb 100644
--- a/drivers/net/sfc/mcdi.h
+++ b/drivers/net/sfc/mcdi.h
@@ -111,6 +111,7 @@ extern int efx_mcdi_nvram_read(struct efx_nic *efx, unsigned int type,
111extern int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type, 111extern int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type,
112 loff_t offset, const u8 *buffer, 112 loff_t offset, const u8 *buffer,
113 size_t length); 113 size_t length);
114#define EFX_MCDI_NVRAM_LEN_MAX 128
114extern int efx_mcdi_nvram_erase(struct efx_nic *efx, unsigned int type, 115extern int efx_mcdi_nvram_erase(struct efx_nic *efx, unsigned int type,
115 loff_t offset, size_t length); 116 loff_t offset, size_t length);
116extern int efx_mcdi_nvram_update_finish(struct efx_nic *efx, 117extern int efx_mcdi_nvram_update_finish(struct efx_nic *efx,
diff --git a/drivers/net/sfc/mcdi_pcol.h b/drivers/net/sfc/mcdi_pcol.h
index 2a85360a46f0..73e71f420624 100644
--- a/drivers/net/sfc/mcdi_pcol.h
+++ b/drivers/net/sfc/mcdi_pcol.h
@@ -1090,8 +1090,10 @@
1090#define MC_CMD_MAC_RX_LANES01_DISP_ERR 57 1090#define MC_CMD_MAC_RX_LANES01_DISP_ERR 57
1091#define MC_CMD_MAC_RX_LANES23_DISP_ERR 58 1091#define MC_CMD_MAC_RX_LANES23_DISP_ERR 58
1092#define MC_CMD_MAC_RX_MATCH_FAULT 59 1092#define MC_CMD_MAC_RX_MATCH_FAULT 59
1093#define MC_CMD_GMAC_DMABUF_START 64
1094#define MC_CMD_GMAC_DMABUF_END 95
1093/* Insert new members here. */ 1095/* Insert new members here. */
1094#define MC_CMD_MAC_GENERATION_END 60 1096#define MC_CMD_MAC_GENERATION_END 96
1095#define MC_CMD_MAC_NSTATS (MC_CMD_MAC_GENERATION_END+1) 1097#define MC_CMD_MAC_NSTATS (MC_CMD_MAC_GENERATION_END+1)
1096 1098
1097/* MC_CMD_MAC_STATS: 1099/* MC_CMD_MAC_STATS:
diff --git a/drivers/net/sfc/mcdi_phy.c b/drivers/net/sfc/mcdi_phy.c
index 0e1bcc5a0d52..eb694af7a473 100644
--- a/drivers/net/sfc/mcdi_phy.c
+++ b/drivers/net/sfc/mcdi_phy.c
@@ -304,31 +304,47 @@ static u32 mcdi_to_ethtool_media(u32 media)
304 304
305static int efx_mcdi_phy_probe(struct efx_nic *efx) 305static int efx_mcdi_phy_probe(struct efx_nic *efx)
306{ 306{
307 struct efx_mcdi_phy_cfg *phy_cfg; 307 struct efx_mcdi_phy_cfg *phy_data;
308 u8 outbuf[MC_CMD_GET_LINK_OUT_LEN];
309 u32 caps;
308 int rc; 310 int rc;
309 311
310 /* TODO: Move phy_data initialisation to 312 /* Initialise and populate phy_data */
311 * phy_op->probe/remove, rather than init/fini */ 313 phy_data = kzalloc(sizeof(*phy_data), GFP_KERNEL);
312 phy_cfg = kzalloc(sizeof(*phy_cfg), GFP_KERNEL); 314 if (phy_data == NULL)
313 if (phy_cfg == NULL) { 315 return -ENOMEM;
314 rc = -ENOMEM; 316
315 goto fail_alloc; 317 rc = efx_mcdi_get_phy_cfg(efx, phy_data);
316 }
317 rc = efx_mcdi_get_phy_cfg(efx, phy_cfg);
318 if (rc != 0) 318 if (rc != 0)
319 goto fail; 319 goto fail;
320 320
321 efx->phy_type = phy_cfg->type; 321 /* Read initial link advertisement */
322 BUILD_BUG_ON(MC_CMD_GET_LINK_IN_LEN != 0);
323 rc = efx_mcdi_rpc(efx, MC_CMD_GET_LINK, NULL, 0,
324 outbuf, sizeof(outbuf), NULL);
325 if (rc)
326 goto fail;
327
328 /* Fill out nic state */
329 efx->phy_data = phy_data;
330 efx->phy_type = phy_data->type;
322 331
323 efx->mdio_bus = phy_cfg->channel; 332 efx->mdio_bus = phy_data->channel;
324 efx->mdio.prtad = phy_cfg->port; 333 efx->mdio.prtad = phy_data->port;
325 efx->mdio.mmds = phy_cfg->mmd_mask & ~(1 << MC_CMD_MMD_CLAUSE22); 334 efx->mdio.mmds = phy_data->mmd_mask & ~(1 << MC_CMD_MMD_CLAUSE22);
326 efx->mdio.mode_support = 0; 335 efx->mdio.mode_support = 0;
327 if (phy_cfg->mmd_mask & (1 << MC_CMD_MMD_CLAUSE22)) 336 if (phy_data->mmd_mask & (1 << MC_CMD_MMD_CLAUSE22))
328 efx->mdio.mode_support |= MDIO_SUPPORTS_C22; 337 efx->mdio.mode_support |= MDIO_SUPPORTS_C22;
329 if (phy_cfg->mmd_mask & ~(1 << MC_CMD_MMD_CLAUSE22)) 338 if (phy_data->mmd_mask & ~(1 << MC_CMD_MMD_CLAUSE22))
330 efx->mdio.mode_support |= MDIO_SUPPORTS_C45 | MDIO_EMULATE_C22; 339 efx->mdio.mode_support |= MDIO_SUPPORTS_C45 | MDIO_EMULATE_C22;
331 340
341 caps = MCDI_DWORD(outbuf, GET_LINK_OUT_CAP);
342 if (caps & (1 << MC_CMD_PHY_CAP_AN_LBN))
343 efx->link_advertising =
344 mcdi_to_ethtool_cap(phy_data->media, caps);
345 else
346 phy_data->forced_cap = caps;
347
332 /* Assert that we can map efx -> mcdi loopback modes */ 348 /* Assert that we can map efx -> mcdi loopback modes */
333 BUILD_BUG_ON(LOOPBACK_NONE != MC_CMD_LOOPBACK_NONE); 349 BUILD_BUG_ON(LOOPBACK_NONE != MC_CMD_LOOPBACK_NONE);
334 BUILD_BUG_ON(LOOPBACK_DATA != MC_CMD_LOOPBACK_DATA); 350 BUILD_BUG_ON(LOOPBACK_DATA != MC_CMD_LOOPBACK_DATA);
@@ -365,46 +381,6 @@ static int efx_mcdi_phy_probe(struct efx_nic *efx)
365 * but by convention we don't */ 381 * but by convention we don't */
366 efx->loopback_modes &= ~(1 << LOOPBACK_NONE); 382 efx->loopback_modes &= ~(1 << LOOPBACK_NONE);
367 383
368 kfree(phy_cfg);
369
370 return 0;
371
372fail:
373 kfree(phy_cfg);
374fail_alloc:
375 return rc;
376}
377
378static int efx_mcdi_phy_init(struct efx_nic *efx)
379{
380 struct efx_mcdi_phy_cfg *phy_data;
381 u8 outbuf[MC_CMD_GET_LINK_OUT_LEN];
382 u32 caps;
383 int rc;
384
385 phy_data = kzalloc(sizeof(*phy_data), GFP_KERNEL);
386 if (phy_data == NULL)
387 return -ENOMEM;
388
389 rc = efx_mcdi_get_phy_cfg(efx, phy_data);
390 if (rc != 0)
391 goto fail;
392
393 efx->phy_data = phy_data;
394
395 BUILD_BUG_ON(MC_CMD_GET_LINK_IN_LEN != 0);
396 rc = efx_mcdi_rpc(efx, MC_CMD_GET_LINK, NULL, 0,
397 outbuf, sizeof(outbuf), NULL);
398 if (rc)
399 goto fail;
400
401 caps = MCDI_DWORD(outbuf, GET_LINK_OUT_CAP);
402 if (caps & (1 << MC_CMD_PHY_CAP_AN_LBN))
403 efx->link_advertising =
404 mcdi_to_ethtool_cap(phy_data->media, caps);
405 else
406 phy_data->forced_cap = caps;
407
408 return 0; 384 return 0;
409 385
410fail: 386fail:
@@ -504,7 +480,7 @@ static bool efx_mcdi_phy_poll(struct efx_nic *efx)
504 return !efx_link_state_equal(&efx->link_state, &old_state); 480 return !efx_link_state_equal(&efx->link_state, &old_state);
505} 481}
506 482
507static void efx_mcdi_phy_fini(struct efx_nic *efx) 483static void efx_mcdi_phy_remove(struct efx_nic *efx)
508{ 484{
509 struct efx_mcdi_phy_data *phy_data = efx->phy_data; 485 struct efx_mcdi_phy_data *phy_data = efx->phy_data;
510 486
@@ -586,10 +562,11 @@ static int efx_mcdi_phy_set_settings(struct efx_nic *efx, struct ethtool_cmd *ec
586 562
587struct efx_phy_operations efx_mcdi_phy_ops = { 563struct efx_phy_operations efx_mcdi_phy_ops = {
588 .probe = efx_mcdi_phy_probe, 564 .probe = efx_mcdi_phy_probe,
589 .init = efx_mcdi_phy_init, 565 .init = efx_port_dummy_op_int,
590 .reconfigure = efx_mcdi_phy_reconfigure, 566 .reconfigure = efx_mcdi_phy_reconfigure,
591 .poll = efx_mcdi_phy_poll, 567 .poll = efx_mcdi_phy_poll,
592 .fini = efx_mcdi_phy_fini, 568 .fini = efx_port_dummy_op_void,
569 .remove = efx_mcdi_phy_remove,
593 .get_settings = efx_mcdi_phy_get_settings, 570 .get_settings = efx_mcdi_phy_get_settings,
594 .set_settings = efx_mcdi_phy_set_settings, 571 .set_settings = efx_mcdi_phy_set_settings,
595 .run_tests = NULL, 572 .run_tests = NULL,
diff --git a/drivers/net/sfc/mtd.c b/drivers/net/sfc/mtd.c
index 3a464529a46b..407bbaddfea6 100644
--- a/drivers/net/sfc/mtd.c
+++ b/drivers/net/sfc/mtd.c
@@ -23,7 +23,6 @@
23#include "mcdi_pcol.h" 23#include "mcdi_pcol.h"
24 24
25#define EFX_SPI_VERIFY_BUF_LEN 16 25#define EFX_SPI_VERIFY_BUF_LEN 16
26#define EFX_MCDI_CHUNK_LEN 128
27 26
28struct efx_mtd_partition { 27struct efx_mtd_partition {
29 struct mtd_info mtd; 28 struct mtd_info mtd;
@@ -428,7 +427,7 @@ static int siena_mtd_read(struct mtd_info *mtd, loff_t start,
428 int rc = 0; 427 int rc = 0;
429 428
430 while (offset < end) { 429 while (offset < end) {
431 chunk = min_t(size_t, end - offset, EFX_MCDI_CHUNK_LEN); 430 chunk = min_t(size_t, end - offset, EFX_MCDI_NVRAM_LEN_MAX);
432 rc = efx_mcdi_nvram_read(efx, part->mcdi.nvram_type, offset, 431 rc = efx_mcdi_nvram_read(efx, part->mcdi.nvram_type, offset,
433 buffer, chunk); 432 buffer, chunk);
434 if (rc) 433 if (rc)
@@ -491,7 +490,7 @@ static int siena_mtd_write(struct mtd_info *mtd, loff_t start,
491 } 490 }
492 491
493 while (offset < end) { 492 while (offset < end) {
494 chunk = min_t(size_t, end - offset, EFX_MCDI_CHUNK_LEN); 493 chunk = min_t(size_t, end - offset, EFX_MCDI_NVRAM_LEN_MAX);
495 rc = efx_mcdi_nvram_write(efx, part->mcdi.nvram_type, offset, 494 rc = efx_mcdi_nvram_write(efx, part->mcdi.nvram_type, offset,
496 buffer, chunk); 495 buffer, chunk);
497 if (rc) 496 if (rc)
diff --git a/drivers/net/sfc/net_driver.h b/drivers/net/sfc/net_driver.h
index 34c381f009b7..d5aab5b3fa06 100644
--- a/drivers/net/sfc/net_driver.h
+++ b/drivers/net/sfc/net_driver.h
@@ -524,6 +524,7 @@ struct efx_phy_operations {
524 int (*probe) (struct efx_nic *efx); 524 int (*probe) (struct efx_nic *efx);
525 int (*init) (struct efx_nic *efx); 525 int (*init) (struct efx_nic *efx);
526 void (*fini) (struct efx_nic *efx); 526 void (*fini) (struct efx_nic *efx);
527 void (*remove) (struct efx_nic *efx);
527 int (*reconfigure) (struct efx_nic *efx); 528 int (*reconfigure) (struct efx_nic *efx);
528 bool (*poll) (struct efx_nic *efx); 529 bool (*poll) (struct efx_nic *efx);
529 void (*get_settings) (struct efx_nic *efx, 530 void (*get_settings) (struct efx_nic *efx,
diff --git a/drivers/net/sfc/nic.c b/drivers/net/sfc/nic.c
index a577be227862..db44224ed2ca 100644
--- a/drivers/net/sfc/nic.c
+++ b/drivers/net/sfc/nic.c
@@ -1576,6 +1576,8 @@ void efx_nic_init_common(struct efx_nic *efx)
1576 EFX_SET_OWORD_FIELD(temp, FRF_AZ_TX_SOFT_EVT_EN, 1); 1576 EFX_SET_OWORD_FIELD(temp, FRF_AZ_TX_SOFT_EVT_EN, 1);
1577 /* Prefetch threshold 2 => fetch when descriptor cache half empty */ 1577 /* Prefetch threshold 2 => fetch when descriptor cache half empty */
1578 EFX_SET_OWORD_FIELD(temp, FRF_AZ_TX_PREF_THRESHOLD, 2); 1578 EFX_SET_OWORD_FIELD(temp, FRF_AZ_TX_PREF_THRESHOLD, 2);
1579 /* Disable hardware watchdog which can misfire */
1580 EFX_SET_OWORD_FIELD(temp, FRF_AZ_TX_PREF_WD_TMR, 0x3fffff);
1579 /* Squash TX of packets of 16 bytes or less */ 1581 /* Squash TX of packets of 16 bytes or less */
1580 if (efx_nic_rev(efx) >= EFX_REV_FALCON_B0) 1582 if (efx_nic_rev(efx) >= EFX_REV_FALCON_B0)
1581 EFX_SET_OWORD_FIELD(temp, FRF_BZ_TX_FLUSH_MIN_LEN_EN, 1); 1583 EFX_SET_OWORD_FIELD(temp, FRF_BZ_TX_FLUSH_MIN_LEN_EN, 1);
diff --git a/drivers/net/sfc/qt202x_phy.c b/drivers/net/sfc/qt202x_phy.c
index 3800fc791b2f..67eec7a6e487 100644
--- a/drivers/net/sfc/qt202x_phy.c
+++ b/drivers/net/sfc/qt202x_phy.c
@@ -33,6 +33,9 @@
33#define PCS_FW_HEARTBEAT_REG 0xd7ee 33#define PCS_FW_HEARTBEAT_REG 0xd7ee
34#define PCS_FW_HEARTB_LBN 0 34#define PCS_FW_HEARTB_LBN 0
35#define PCS_FW_HEARTB_WIDTH 8 35#define PCS_FW_HEARTB_WIDTH 8
36#define PCS_FW_PRODUCT_CODE_1 0xd7f0
37#define PCS_FW_VERSION_1 0xd7f3
38#define PCS_FW_BUILD_1 0xd7f6
36#define PCS_UC8051_STATUS_REG 0xd7fd 39#define PCS_UC8051_STATUS_REG 0xd7fd
37#define PCS_UC_STATUS_LBN 0 40#define PCS_UC_STATUS_LBN 0
38#define PCS_UC_STATUS_WIDTH 8 41#define PCS_UC_STATUS_WIDTH 8
@@ -52,14 +55,24 @@ void falcon_qt202x_set_led(struct efx_nic *p, int led, int mode)
52 55
53struct qt202x_phy_data { 56struct qt202x_phy_data {
54 enum efx_phy_mode phy_mode; 57 enum efx_phy_mode phy_mode;
58 bool bug17190_in_bad_state;
59 unsigned long bug17190_timer;
60 u32 firmware_ver;
55}; 61};
56 62
57#define QT2022C2_MAX_RESET_TIME 500 63#define QT2022C2_MAX_RESET_TIME 500
58#define QT2022C2_RESET_WAIT 10 64#define QT2022C2_RESET_WAIT 10
59 65
60static int qt2025c_wait_reset(struct efx_nic *efx) 66#define QT2025C_MAX_HEARTB_TIME (5 * HZ)
67#define QT2025C_HEARTB_WAIT 100
68#define QT2025C_MAX_FWSTART_TIME (25 * HZ / 10)
69#define QT2025C_FWSTART_WAIT 100
70
71#define BUG17190_INTERVAL (2 * HZ)
72
73static int qt2025c_wait_heartbeat(struct efx_nic *efx)
61{ 74{
62 unsigned long timeout = jiffies + 10 * HZ; 75 unsigned long timeout = jiffies + QT2025C_MAX_HEARTB_TIME;
63 int reg, old_counter = 0; 76 int reg, old_counter = 0;
64 77
65 /* Wait for firmware heartbeat to start */ 78 /* Wait for firmware heartbeat to start */
@@ -74,11 +87,25 @@ static int qt2025c_wait_reset(struct efx_nic *efx)
74 old_counter = counter; 87 old_counter = counter;
75 else if (counter != old_counter) 88 else if (counter != old_counter)
76 break; 89 break;
77 if (time_after(jiffies, timeout)) 90 if (time_after(jiffies, timeout)) {
91 /* Some cables have EEPROMs that conflict with the
92 * PHY's on-board EEPROM so it cannot load firmware */
93 EFX_ERR(efx, "If an SFP+ direct attach cable is"
94 " connected, please check that it complies"
95 " with the SFP+ specification\n");
78 return -ETIMEDOUT; 96 return -ETIMEDOUT;
79 msleep(10); 97 }
98 msleep(QT2025C_HEARTB_WAIT);
80 } 99 }
81 100
101 return 0;
102}
103
104static int qt2025c_wait_fw_status_good(struct efx_nic *efx)
105{
106 unsigned long timeout = jiffies + QT2025C_MAX_FWSTART_TIME;
107 int reg;
108
82 /* Wait for firmware status to look good */ 109 /* Wait for firmware status to look good */
83 for (;;) { 110 for (;;) {
84 reg = efx_mdio_read(efx, MDIO_MMD_PCS, PCS_UC8051_STATUS_REG); 111 reg = efx_mdio_read(efx, MDIO_MMD_PCS, PCS_UC8051_STATUS_REG);
@@ -90,7 +117,178 @@ static int qt2025c_wait_reset(struct efx_nic *efx)
90 break; 117 break;
91 if (time_after(jiffies, timeout)) 118 if (time_after(jiffies, timeout))
92 return -ETIMEDOUT; 119 return -ETIMEDOUT;
120 msleep(QT2025C_FWSTART_WAIT);
121 }
122
123 return 0;
124}
125
126static void qt2025c_restart_firmware(struct efx_nic *efx)
127{
128 /* Restart microcontroller execution of firmware from RAM */
129 efx_mdio_write(efx, 3, 0xe854, 0x00c0);
130 efx_mdio_write(efx, 3, 0xe854, 0x0040);
131 msleep(50);
132}
133
134static int qt2025c_wait_reset(struct efx_nic *efx)
135{
136 int rc;
137
138 rc = qt2025c_wait_heartbeat(efx);
139 if (rc != 0)
140 return rc;
141
142 rc = qt2025c_wait_fw_status_good(efx);
143 if (rc == -ETIMEDOUT) {
144 /* Bug 17689: occasionally heartbeat starts but firmware status
145 * code never progresses beyond 0x00. Try again, once, after
146 * restarting execution of the firmware image. */
147 EFX_LOG(efx, "bashing QT2025C microcontroller\n");
148 qt2025c_restart_firmware(efx);
149 rc = qt2025c_wait_heartbeat(efx);
150 if (rc != 0)
151 return rc;
152 rc = qt2025c_wait_fw_status_good(efx);
153 }
154
155 return rc;
156}
157
158static void qt2025c_firmware_id(struct efx_nic *efx)
159{
160 struct qt202x_phy_data *phy_data = efx->phy_data;
161 u8 firmware_id[9];
162 size_t i;
163
164 for (i = 0; i < sizeof(firmware_id); i++)
165 firmware_id[i] = efx_mdio_read(efx, MDIO_MMD_PCS,
166 PCS_FW_PRODUCT_CODE_1 + i);
167 EFX_INFO(efx, "QT2025C firmware %xr%d v%d.%d.%d.%d [20%02d-%02d-%02d]\n",
168 (firmware_id[0] << 8) | firmware_id[1], firmware_id[2],
169 firmware_id[3] >> 4, firmware_id[3] & 0xf,
170 firmware_id[4], firmware_id[5],
171 firmware_id[6], firmware_id[7], firmware_id[8]);
172 phy_data->firmware_ver = ((firmware_id[3] & 0xf0) << 20) |
173 ((firmware_id[3] & 0x0f) << 16) |
174 (firmware_id[4] << 8) | firmware_id[5];
175}
176
177static void qt2025c_bug17190_workaround(struct efx_nic *efx)
178{
179 struct qt202x_phy_data *phy_data = efx->phy_data;
180
181 /* The PHY can get stuck in a state where it reports PHY_XS and PMA/PMD
182 * layers up, but PCS down (no block_lock). If we notice this state
183 * persisting for a couple of seconds, we switch PMA/PMD loopback
184 * briefly on and then off again, which is normally sufficient to
185 * recover it.
186 */
187 if (efx->link_state.up ||
188 !efx_mdio_links_ok(efx, MDIO_DEVS_PMAPMD | MDIO_DEVS_PHYXS)) {
189 phy_data->bug17190_in_bad_state = false;
190 return;
191 }
192
193 if (!phy_data->bug17190_in_bad_state) {
194 phy_data->bug17190_in_bad_state = true;
195 phy_data->bug17190_timer = jiffies + BUG17190_INTERVAL;
196 return;
197 }
198
199 if (time_after_eq(jiffies, phy_data->bug17190_timer)) {
200 EFX_LOG(efx, "bashing QT2025C PMA/PMD\n");
201 efx_mdio_set_flag(efx, MDIO_MMD_PMAPMD, MDIO_CTRL1,
202 MDIO_PMA_CTRL1_LOOPBACK, true);
93 msleep(100); 203 msleep(100);
204 efx_mdio_set_flag(efx, MDIO_MMD_PMAPMD, MDIO_CTRL1,
205 MDIO_PMA_CTRL1_LOOPBACK, false);
206 phy_data->bug17190_timer = jiffies + BUG17190_INTERVAL;
207 }
208}
209
210static int qt2025c_select_phy_mode(struct efx_nic *efx)
211{
212 struct qt202x_phy_data *phy_data = efx->phy_data;
213 struct falcon_board *board = falcon_board(efx);
214 int reg, rc, i;
215 uint16_t phy_op_mode;
216
217 /* Only 2.0.1.0+ PHY firmware supports the more optimal SFP+
218 * Self-Configure mode. Don't attempt any switching if we encounter
219 * older firmware. */
220 if (phy_data->firmware_ver < 0x02000100)
221 return 0;
222
223 /* In general we will get optimal behaviour in "SFP+ Self-Configure"
224 * mode; however, that powers down most of the PHY when no module is
225 * present, so we must use a different mode (any fixed mode will do)
226 * to be sure that loopbacks will work. */
227 phy_op_mode = (efx->loopback_mode == LOOPBACK_NONE) ? 0x0038 : 0x0020;
228
229 /* Only change mode if really necessary */
230 reg = efx_mdio_read(efx, 1, 0xc319);
231 if ((reg & 0x0038) == phy_op_mode)
232 return 0;
233 EFX_LOG(efx, "Switching PHY to mode 0x%04x\n", phy_op_mode);
234
235 /* This sequence replicates the register writes configured in the boot
236 * EEPROM (including the differences between board revisions), except
237 * that the operating mode is changed, and the PHY is prevented from
238 * unnecessarily reloading the main firmware image again. */
239 efx_mdio_write(efx, 1, 0xc300, 0x0000);
240 /* (Note: this portion of the boot EEPROM sequence, which bit-bashes 9
241 * STOPs onto the firmware/module I2C bus to reset it, varies across
242 * board revisions, as the bus is connected to different GPIO/LED
243 * outputs on the PHY.) */
244 if (board->major == 0 && board->minor < 2) {
245 efx_mdio_write(efx, 1, 0xc303, 0x4498);
246 for (i = 0; i < 9; i++) {
247 efx_mdio_write(efx, 1, 0xc303, 0x4488);
248 efx_mdio_write(efx, 1, 0xc303, 0x4480);
249 efx_mdio_write(efx, 1, 0xc303, 0x4490);
250 efx_mdio_write(efx, 1, 0xc303, 0x4498);
251 }
252 } else {
253 efx_mdio_write(efx, 1, 0xc303, 0x0920);
254 efx_mdio_write(efx, 1, 0xd008, 0x0004);
255 for (i = 0; i < 9; i++) {
256 efx_mdio_write(efx, 1, 0xc303, 0x0900);
257 efx_mdio_write(efx, 1, 0xd008, 0x0005);
258 efx_mdio_write(efx, 1, 0xc303, 0x0920);
259 efx_mdio_write(efx, 1, 0xd008, 0x0004);
260 }
261 efx_mdio_write(efx, 1, 0xc303, 0x4900);
262 }
263 efx_mdio_write(efx, 1, 0xc303, 0x4900);
264 efx_mdio_write(efx, 1, 0xc302, 0x0004);
265 efx_mdio_write(efx, 1, 0xc316, 0x0013);
266 efx_mdio_write(efx, 1, 0xc318, 0x0054);
267 efx_mdio_write(efx, 1, 0xc319, phy_op_mode);
268 efx_mdio_write(efx, 1, 0xc31a, 0x0098);
269 efx_mdio_write(efx, 3, 0x0026, 0x0e00);
270 efx_mdio_write(efx, 3, 0x0027, 0x0013);
271 efx_mdio_write(efx, 3, 0x0028, 0xa528);
272 efx_mdio_write(efx, 1, 0xd006, 0x000a);
273 efx_mdio_write(efx, 1, 0xd007, 0x0009);
274 efx_mdio_write(efx, 1, 0xd008, 0x0004);
275 /* This additional write is not present in the boot EEPROM. It
276 * prevents the PHY's internal boot ROM doing another pointless (and
277 * slow) reload of the firmware image (the microcontroller's code
278 * memory is not affected by the microcontroller reset). */
279 efx_mdio_write(efx, 1, 0xc317, 0x00ff);
280 efx_mdio_write(efx, 1, 0xc300, 0x0002);
281 msleep(20);
282
283 /* Restart microcontroller execution of firmware from RAM */
284 qt2025c_restart_firmware(efx);
285
286 /* Wait for the microcontroller to be ready again */
287 rc = qt2025c_wait_reset(efx);
288 if (rc < 0) {
289 EFX_ERR(efx, "PHY microcontroller reset during mode switch "
290 "timed out\n");
291 return rc;
94 } 292 }
95 293
96 return 0; 294 return 0;
@@ -120,15 +318,9 @@ static int qt202x_reset_phy(struct efx_nic *efx)
120 /* Wait 250ms for the PHY to complete bootup */ 318 /* Wait 250ms for the PHY to complete bootup */
121 msleep(250); 319 msleep(250);
122 320
123 /* Check that all the MMDs we expect are present and responding. We
124 * expect faults on some if the link is down, but not on the PHY XS */
125 rc = efx_mdio_check_mmds(efx, QT202X_REQUIRED_DEVS, MDIO_DEVS_PHYXS);
126 if (rc < 0)
127 goto fail;
128
129 falcon_board(efx)->type->init_phy(efx); 321 falcon_board(efx)->type->init_phy(efx);
130 322
131 return rc; 323 return 0;
132 324
133 fail: 325 fail:
134 EFX_ERR(efx, "PHY reset timed out\n"); 326 EFX_ERR(efx, "PHY reset timed out\n");
@@ -137,6 +329,16 @@ static int qt202x_reset_phy(struct efx_nic *efx)
137 329
138static int qt202x_phy_probe(struct efx_nic *efx) 330static int qt202x_phy_probe(struct efx_nic *efx)
139{ 331{
332 struct qt202x_phy_data *phy_data;
333
334 phy_data = kzalloc(sizeof(struct qt202x_phy_data), GFP_KERNEL);
335 if (!phy_data)
336 return -ENOMEM;
337 efx->phy_data = phy_data;
338 phy_data->phy_mode = efx->phy_mode;
339 phy_data->bug17190_in_bad_state = false;
340 phy_data->bug17190_timer = 0;
341
140 efx->mdio.mmds = QT202X_REQUIRED_DEVS; 342 efx->mdio.mmds = QT202X_REQUIRED_DEVS;
141 efx->mdio.mode_support = MDIO_SUPPORTS_C45 | MDIO_EMULATE_C22; 343 efx->mdio.mode_support = MDIO_SUPPORTS_C45 | MDIO_EMULATE_C22;
142 efx->loopback_modes = QT202X_LOOPBACKS | FALCON_XMAC_LOOPBACKS; 344 efx->loopback_modes = QT202X_LOOPBACKS | FALCON_XMAC_LOOPBACKS;
@@ -145,7 +347,6 @@ static int qt202x_phy_probe(struct efx_nic *efx)
145 347
146static int qt202x_phy_init(struct efx_nic *efx) 348static int qt202x_phy_init(struct efx_nic *efx)
147{ 349{
148 struct qt202x_phy_data *phy_data;
149 u32 devid; 350 u32 devid;
150 int rc; 351 int rc;
151 352
@@ -155,17 +356,14 @@ static int qt202x_phy_init(struct efx_nic *efx)
155 return rc; 356 return rc;
156 } 357 }
157 358
158 phy_data = kzalloc(sizeof(struct qt202x_phy_data), GFP_KERNEL);
159 if (!phy_data)
160 return -ENOMEM;
161 efx->phy_data = phy_data;
162
163 devid = efx_mdio_read_id(efx, MDIO_MMD_PHYXS); 359 devid = efx_mdio_read_id(efx, MDIO_MMD_PHYXS);
164 EFX_INFO(efx, "PHY ID reg %x (OUI %06x model %02x revision %x)\n", 360 EFX_INFO(efx, "PHY ID reg %x (OUI %06x model %02x revision %x)\n",
165 devid, efx_mdio_id_oui(devid), efx_mdio_id_model(devid), 361 devid, efx_mdio_id_oui(devid), efx_mdio_id_model(devid),
166 efx_mdio_id_rev(devid)); 362 efx_mdio_id_rev(devid));
167 363
168 phy_data->phy_mode = efx->phy_mode; 364 if (efx->phy_type == PHY_TYPE_QT2025C)
365 qt2025c_firmware_id(efx);
366
169 return 0; 367 return 0;
170} 368}
171 369
@@ -183,6 +381,9 @@ static bool qt202x_phy_poll(struct efx_nic *efx)
183 efx->link_state.fd = true; 381 efx->link_state.fd = true;
184 efx->link_state.fc = efx->wanted_fc; 382 efx->link_state.fc = efx->wanted_fc;
185 383
384 if (efx->phy_type == PHY_TYPE_QT2025C)
385 qt2025c_bug17190_workaround(efx);
386
186 return efx->link_state.up != was_up; 387 return efx->link_state.up != was_up;
187} 388}
188 389
@@ -191,6 +392,10 @@ static int qt202x_phy_reconfigure(struct efx_nic *efx)
191 struct qt202x_phy_data *phy_data = efx->phy_data; 392 struct qt202x_phy_data *phy_data = efx->phy_data;
192 393
193 if (efx->phy_type == PHY_TYPE_QT2025C) { 394 if (efx->phy_type == PHY_TYPE_QT2025C) {
395 int rc = qt2025c_select_phy_mode(efx);
396 if (rc)
397 return rc;
398
194 /* There are several different register bits which can 399 /* There are several different register bits which can
195 * disable TX (and save power) on direct-attach cables 400 * disable TX (and save power) on direct-attach cables
196 * or optical transceivers, varying somewhat between 401 * or optical transceivers, varying somewhat between
@@ -224,7 +429,7 @@ static void qt202x_phy_get_settings(struct efx_nic *efx, struct ethtool_cmd *ecm
224 mdio45_ethtool_gset(&efx->mdio, ecmd); 429 mdio45_ethtool_gset(&efx->mdio, ecmd);
225} 430}
226 431
227static void qt202x_phy_fini(struct efx_nic *efx) 432static void qt202x_phy_remove(struct efx_nic *efx)
228{ 433{
229 /* Free the context block */ 434 /* Free the context block */
230 kfree(efx->phy_data); 435 kfree(efx->phy_data);
@@ -236,7 +441,8 @@ struct efx_phy_operations falcon_qt202x_phy_ops = {
236 .init = qt202x_phy_init, 441 .init = qt202x_phy_init,
237 .reconfigure = qt202x_phy_reconfigure, 442 .reconfigure = qt202x_phy_reconfigure,
238 .poll = qt202x_phy_poll, 443 .poll = qt202x_phy_poll,
239 .fini = qt202x_phy_fini, 444 .fini = efx_port_dummy_op_void,
445 .remove = qt202x_phy_remove,
240 .get_settings = qt202x_phy_get_settings, 446 .get_settings = qt202x_phy_get_settings,
241 .set_settings = efx_mdio_set_settings, 447 .set_settings = efx_mdio_set_settings,
242}; 448};
diff --git a/drivers/net/sfc/selftest.c b/drivers/net/sfc/selftest.c
index af3933579790..250c8827b842 100644
--- a/drivers/net/sfc/selftest.c
+++ b/drivers/net/sfc/selftest.c
@@ -79,10 +79,14 @@ struct efx_loopback_state {
79static int efx_test_mdio(struct efx_nic *efx, struct efx_self_tests *tests) 79static int efx_test_mdio(struct efx_nic *efx, struct efx_self_tests *tests)
80{ 80{
81 int rc = 0; 81 int rc = 0;
82 int devad = __ffs(efx->mdio.mmds); 82 int devad;
83 u16 physid1, physid2; 83 u16 physid1, physid2;
84 84
85 if (efx->phy_type == PHY_TYPE_NONE) 85 if (efx->mdio.mode_support & MDIO_SUPPORTS_C45)
86 devad = __ffs(efx->mdio.mmds);
87 else if (efx->mdio.mode_support & MDIO_SUPPORTS_C22)
88 devad = MDIO_DEVAD_NONE;
89 else
86 return 0; 90 return 0;
87 91
88 mutex_lock(&efx->mac_lock); 92 mutex_lock(&efx->mac_lock);
diff --git a/drivers/net/sfc/siena.c b/drivers/net/sfc/siena.c
index de07a4f031b2..f8c6771e66d8 100644
--- a/drivers/net/sfc/siena.c
+++ b/drivers/net/sfc/siena.c
@@ -133,6 +133,7 @@ static int siena_probe_port(struct efx_nic *efx)
133 133
134void siena_remove_port(struct efx_nic *efx) 134void siena_remove_port(struct efx_nic *efx)
135{ 135{
136 efx->phy_op->remove(efx);
136 efx_nic_free_buffer(efx, &efx->stats_buffer); 137 efx_nic_free_buffer(efx, &efx->stats_buffer);
137} 138}
138 139
diff --git a/drivers/net/sfc/tenxpress.c b/drivers/net/sfc/tenxpress.c
index ca11572a49a9..3009c297c135 100644
--- a/drivers/net/sfc/tenxpress.c
+++ b/drivers/net/sfc/tenxpress.c
@@ -202,10 +202,14 @@ static ssize_t set_phy_short_reach(struct device *dev,
202 int rc; 202 int rc;
203 203
204 rtnl_lock(); 204 rtnl_lock();
205 efx_mdio_set_flag(efx, MDIO_MMD_PMAPMD, MDIO_PMA_10GBT_TXPWR, 205 if (efx->state != STATE_RUNNING) {
206 MDIO_PMA_10GBT_TXPWR_SHORT, 206 rc = -EBUSY;
207 count != 0 && *buf != '0'); 207 } else {
208 rc = efx_reconfigure_port(efx); 208 efx_mdio_set_flag(efx, MDIO_MMD_PMAPMD, MDIO_PMA_10GBT_TXPWR,
209 MDIO_PMA_10GBT_TXPWR_SHORT,
210 count != 0 && *buf != '0');
211 rc = efx_reconfigure_port(efx);
212 }
209 rtnl_unlock(); 213 rtnl_unlock();
210 214
211 return rc < 0 ? rc : (ssize_t)count; 215 return rc < 0 ? rc : (ssize_t)count;
@@ -298,36 +302,62 @@ static int tenxpress_init(struct efx_nic *efx)
298 return 0; 302 return 0;
299} 303}
300 304
301static int sfx7101_phy_probe(struct efx_nic *efx) 305static int tenxpress_phy_probe(struct efx_nic *efx)
302{ 306{
303 efx->mdio.mmds = TENXPRESS_REQUIRED_DEVS; 307 struct tenxpress_phy_data *phy_data;
304 efx->mdio.mode_support = MDIO_SUPPORTS_C45 | MDIO_EMULATE_C22; 308 int rc;
305 efx->loopback_modes = SFX7101_LOOPBACKS | FALCON_XMAC_LOOPBACKS; 309
306 return 0; 310 /* Allocate phy private storage */
307} 311 phy_data = kzalloc(sizeof(*phy_data), GFP_KERNEL);
312 if (!phy_data)
313 return -ENOMEM;
314 efx->phy_data = phy_data;
315 phy_data->phy_mode = efx->phy_mode;
316
317 /* Create any special files */
318 if (efx->phy_type == PHY_TYPE_SFT9001B) {
319 rc = device_create_file(&efx->pci_dev->dev,
320 &dev_attr_phy_short_reach);
321 if (rc)
322 goto fail;
323 }
324
325 if (efx->phy_type == PHY_TYPE_SFX7101) {
326 efx->mdio.mmds = TENXPRESS_REQUIRED_DEVS;
327 efx->mdio.mode_support = MDIO_SUPPORTS_C45;
328
329 efx->loopback_modes = SFX7101_LOOPBACKS | FALCON_XMAC_LOOPBACKS;
330
331 efx->link_advertising = (ADVERTISED_TP | ADVERTISED_Autoneg |
332 ADVERTISED_10000baseT_Full);
333 } else {
334 efx->mdio.mmds = TENXPRESS_REQUIRED_DEVS;
335 efx->mdio.mode_support = MDIO_SUPPORTS_C45 | MDIO_EMULATE_C22;
336
337 efx->loopback_modes = (SFT9001_LOOPBACKS |
338 FALCON_XMAC_LOOPBACKS |
339 FALCON_GMAC_LOOPBACKS);
340
341 efx->link_advertising = (ADVERTISED_TP | ADVERTISED_Autoneg |
342 ADVERTISED_10000baseT_Full |
343 ADVERTISED_1000baseT_Full |
344 ADVERTISED_100baseT_Full);
345 }
308 346
309static int sft9001_phy_probe(struct efx_nic *efx)
310{
311 efx->mdio.mmds = TENXPRESS_REQUIRED_DEVS;
312 efx->mdio.mode_support = MDIO_SUPPORTS_C45 | MDIO_EMULATE_C22;
313 efx->loopback_modes = (SFT9001_LOOPBACKS | FALCON_XMAC_LOOPBACKS |
314 FALCON_GMAC_LOOPBACKS);
315 return 0; 347 return 0;
348
349fail:
350 kfree(efx->phy_data);
351 efx->phy_data = NULL;
352 return rc;
316} 353}
317 354
318static int tenxpress_phy_init(struct efx_nic *efx) 355static int tenxpress_phy_init(struct efx_nic *efx)
319{ 356{
320 struct tenxpress_phy_data *phy_data; 357 int rc;
321 int rc = 0;
322 358
323 falcon_board(efx)->type->init_phy(efx); 359 falcon_board(efx)->type->init_phy(efx);
324 360
325 phy_data = kzalloc(sizeof(*phy_data), GFP_KERNEL);
326 if (!phy_data)
327 return -ENOMEM;
328 efx->phy_data = phy_data;
329 phy_data->phy_mode = efx->phy_mode;
330
331 if (!(efx->phy_mode & PHY_MODE_SPECIAL)) { 361 if (!(efx->phy_mode & PHY_MODE_SPECIAL)) {
332 if (efx->phy_type == PHY_TYPE_SFT9001A) { 362 if (efx->phy_type == PHY_TYPE_SFT9001A) {
333 int reg; 363 int reg;
@@ -341,44 +371,27 @@ static int tenxpress_phy_init(struct efx_nic *efx)
341 371
342 rc = efx_mdio_wait_reset_mmds(efx, TENXPRESS_REQUIRED_DEVS); 372 rc = efx_mdio_wait_reset_mmds(efx, TENXPRESS_REQUIRED_DEVS);
343 if (rc < 0) 373 if (rc < 0)
344 goto fail; 374 return rc;
345 375
346 rc = efx_mdio_check_mmds(efx, TENXPRESS_REQUIRED_DEVS, 0); 376 rc = efx_mdio_check_mmds(efx, TENXPRESS_REQUIRED_DEVS, 0);
347 if (rc < 0) 377 if (rc < 0)
348 goto fail; 378 return rc;
349 } 379 }
350 380
351 rc = tenxpress_init(efx); 381 rc = tenxpress_init(efx);
352 if (rc < 0) 382 if (rc < 0)
353 goto fail; 383 return rc;
354 384
355 /* Initialise advertising flags */ 385 /* Reinitialise flow control settings */
356 efx->link_advertising = (ADVERTISED_TP | ADVERTISED_Autoneg |
357 ADVERTISED_10000baseT_Full);
358 if (efx->phy_type != PHY_TYPE_SFX7101)
359 efx->link_advertising |= (ADVERTISED_1000baseT_Full |
360 ADVERTISED_100baseT_Full);
361 efx_link_set_wanted_fc(efx, efx->wanted_fc); 386 efx_link_set_wanted_fc(efx, efx->wanted_fc);
362 efx_mdio_an_reconfigure(efx); 387 efx_mdio_an_reconfigure(efx);
363 388
364 if (efx->phy_type == PHY_TYPE_SFT9001B) {
365 rc = device_create_file(&efx->pci_dev->dev,
366 &dev_attr_phy_short_reach);
367 if (rc)
368 goto fail;
369 }
370
371 schedule_timeout_uninterruptible(HZ / 5); /* 200ms */ 389 schedule_timeout_uninterruptible(HZ / 5); /* 200ms */
372 390
373 /* Let XGXS and SerDes out of reset */ 391 /* Let XGXS and SerDes out of reset */
374 falcon_reset_xaui(efx); 392 falcon_reset_xaui(efx);
375 393
376 return 0; 394 return 0;
377
378 fail:
379 kfree(efx->phy_data);
380 efx->phy_data = NULL;
381 return rc;
382} 395}
383 396
384/* Perform a "special software reset" on the PHY. The caller is 397/* Perform a "special software reset" on the PHY. The caller is
@@ -589,25 +602,26 @@ static bool tenxpress_phy_poll(struct efx_nic *efx)
589 return !efx_link_state_equal(&efx->link_state, &old_state); 602 return !efx_link_state_equal(&efx->link_state, &old_state);
590} 603}
591 604
592static void tenxpress_phy_fini(struct efx_nic *efx) 605static void sfx7101_phy_fini(struct efx_nic *efx)
593{ 606{
594 int reg; 607 int reg;
595 608
609 /* Power down the LNPGA */
610 reg = (1 << PMA_PMD_LNPGA_POWERDOWN_LBN);
611 efx_mdio_write(efx, MDIO_MMD_PMAPMD, PMA_PMD_XCONTROL_REG, reg);
612
613 /* Waiting here ensures that the board fini, which can turn
614 * off the power to the PHY, won't get run until the LNPGA
615 * powerdown has been given long enough to complete. */
616 schedule_timeout_uninterruptible(LNPGA_PDOWN_WAIT); /* 200 ms */
617}
618
619static void tenxpress_phy_remove(struct efx_nic *efx)
620{
596 if (efx->phy_type == PHY_TYPE_SFT9001B) 621 if (efx->phy_type == PHY_TYPE_SFT9001B)
597 device_remove_file(&efx->pci_dev->dev, 622 device_remove_file(&efx->pci_dev->dev,
598 &dev_attr_phy_short_reach); 623 &dev_attr_phy_short_reach);
599 624
600 if (efx->phy_type == PHY_TYPE_SFX7101) {
601 /* Power down the LNPGA */
602 reg = (1 << PMA_PMD_LNPGA_POWERDOWN_LBN);
603 efx_mdio_write(efx, MDIO_MMD_PMAPMD, PMA_PMD_XCONTROL_REG, reg);
604
605 /* Waiting here ensures that the board fini, which can turn
606 * off the power to the PHY, won't get run until the LNPGA
607 * powerdown has been given long enough to complete. */
608 schedule_timeout_uninterruptible(LNPGA_PDOWN_WAIT); /* 200 ms */
609 }
610
611 kfree(efx->phy_data); 625 kfree(efx->phy_data);
612 efx->phy_data = NULL; 626 efx->phy_data = NULL;
613} 627}
@@ -819,11 +833,12 @@ static void sft9001_set_npage_adv(struct efx_nic *efx, u32 advertising)
819} 833}
820 834
821struct efx_phy_operations falcon_sfx7101_phy_ops = { 835struct efx_phy_operations falcon_sfx7101_phy_ops = {
822 .probe = sfx7101_phy_probe, 836 .probe = tenxpress_phy_probe,
823 .init = tenxpress_phy_init, 837 .init = tenxpress_phy_init,
824 .reconfigure = tenxpress_phy_reconfigure, 838 .reconfigure = tenxpress_phy_reconfigure,
825 .poll = tenxpress_phy_poll, 839 .poll = tenxpress_phy_poll,
826 .fini = tenxpress_phy_fini, 840 .fini = sfx7101_phy_fini,
841 .remove = tenxpress_phy_remove,
827 .get_settings = tenxpress_get_settings, 842 .get_settings = tenxpress_get_settings,
828 .set_settings = tenxpress_set_settings, 843 .set_settings = tenxpress_set_settings,
829 .set_npage_adv = sfx7101_set_npage_adv, 844 .set_npage_adv = sfx7101_set_npage_adv,
@@ -832,11 +847,12 @@ struct efx_phy_operations falcon_sfx7101_phy_ops = {
832}; 847};
833 848
834struct efx_phy_operations falcon_sft9001_phy_ops = { 849struct efx_phy_operations falcon_sft9001_phy_ops = {
835 .probe = sft9001_phy_probe, 850 .probe = tenxpress_phy_probe,
836 .init = tenxpress_phy_init, 851 .init = tenxpress_phy_init,
837 .reconfigure = tenxpress_phy_reconfigure, 852 .reconfigure = tenxpress_phy_reconfigure,
838 .poll = tenxpress_phy_poll, 853 .poll = tenxpress_phy_poll,
839 .fini = tenxpress_phy_fini, 854 .fini = efx_port_dummy_op_void,
855 .remove = tenxpress_phy_remove,
840 .get_settings = tenxpress_get_settings, 856 .get_settings = tenxpress_get_settings,
841 .set_settings = tenxpress_set_settings, 857 .set_settings = tenxpress_set_settings,
842 .set_npage_adv = sft9001_set_npage_adv, 858 .set_npage_adv = sft9001_set_npage_adv,
diff --git a/drivers/net/sfc/tx.c b/drivers/net/sfc/tx.c
index e669f94e821b..a8b70ef6d817 100644
--- a/drivers/net/sfc/tx.c
+++ b/drivers/net/sfc/tx.c
@@ -821,8 +821,6 @@ static void efx_enqueue_unwind(struct efx_tx_queue *tx_queue)
821 EFX_TXQ_MASK]; 821 EFX_TXQ_MASK];
822 efx_tsoh_free(tx_queue, buffer); 822 efx_tsoh_free(tx_queue, buffer);
823 EFX_BUG_ON_PARANOID(buffer->skb); 823 EFX_BUG_ON_PARANOID(buffer->skb);
824 buffer->len = 0;
825 buffer->continuation = true;
826 if (buffer->unmap_len) { 824 if (buffer->unmap_len) {
827 unmap_addr = (buffer->dma_addr + buffer->len - 825 unmap_addr = (buffer->dma_addr + buffer->len -
828 buffer->unmap_len); 826 buffer->unmap_len);
@@ -836,6 +834,8 @@ static void efx_enqueue_unwind(struct efx_tx_queue *tx_queue)
836 PCI_DMA_TODEVICE); 834 PCI_DMA_TODEVICE);
837 buffer->unmap_len = 0; 835 buffer->unmap_len = 0;
838 } 836 }
837 buffer->len = 0;
838 buffer->continuation = true;
839 } 839 }
840} 840}
841 841
diff --git a/drivers/net/sh_eth.c b/drivers/net/sh_eth.c
index ca6285016dfd..7402b858cab7 100644
--- a/drivers/net/sh_eth.c
+++ b/drivers/net/sh_eth.c
@@ -110,7 +110,7 @@ static void sh_eth_reset(struct net_device *ndev)
110 mdelay(1); 110 mdelay(1);
111 cnt--; 111 cnt--;
112 } 112 }
113 if (cnt < 0) 113 if (cnt == 0)
114 printk(KERN_ERR "Device reset fail\n"); 114 printk(KERN_ERR "Device reset fail\n");
115 115
116 /* Table Init */ 116 /* Table Init */
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index 1c01b96c9611..67249c3c9f50 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -644,6 +644,7 @@ static void sky2_phy_power_up(struct sky2_hw *hw, unsigned port)
644{ 644{
645 u32 reg1; 645 u32 reg1;
646 646
647 sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON);
647 reg1 = sky2_pci_read32(hw, PCI_DEV_REG1); 648 reg1 = sky2_pci_read32(hw, PCI_DEV_REG1);
648 reg1 &= ~phy_power[port]; 649 reg1 &= ~phy_power[port];
649 650
@@ -651,6 +652,7 @@ static void sky2_phy_power_up(struct sky2_hw *hw, unsigned port)
651 reg1 |= coma_mode[port]; 652 reg1 |= coma_mode[port];
652 653
653 sky2_pci_write32(hw, PCI_DEV_REG1, reg1); 654 sky2_pci_write32(hw, PCI_DEV_REG1, reg1);
655 sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
654 sky2_pci_read32(hw, PCI_DEV_REG1); 656 sky2_pci_read32(hw, PCI_DEV_REG1);
655 657
656 if (hw->chip_id == CHIP_ID_YUKON_FE) 658 if (hw->chip_id == CHIP_ID_YUKON_FE)
@@ -707,9 +709,11 @@ static void sky2_phy_power_down(struct sky2_hw *hw, unsigned port)
707 gm_phy_write(hw, port, PHY_MARV_CTRL, PHY_CT_PDOWN); 709 gm_phy_write(hw, port, PHY_MARV_CTRL, PHY_CT_PDOWN);
708 } 710 }
709 711
712 sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON);
710 reg1 = sky2_pci_read32(hw, PCI_DEV_REG1); 713 reg1 = sky2_pci_read32(hw, PCI_DEV_REG1);
711 reg1 |= phy_power[port]; /* set PHY to PowerDown/COMA Mode */ 714 reg1 |= phy_power[port]; /* set PHY to PowerDown/COMA Mode */
712 sky2_pci_write32(hw, PCI_DEV_REG1, reg1); 715 sky2_pci_write32(hw, PCI_DEV_REG1, reg1);
716 sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
713} 717}
714 718
715/* Force a renegotiation */ 719/* Force a renegotiation */
@@ -1021,11 +1025,8 @@ static void sky2_prefetch_init(struct sky2_hw *hw, u32 qaddr,
1021static inline struct sky2_tx_le *get_tx_le(struct sky2_port *sky2, u16 *slot) 1025static inline struct sky2_tx_le *get_tx_le(struct sky2_port *sky2, u16 *slot)
1022{ 1026{
1023 struct sky2_tx_le *le = sky2->tx_le + *slot; 1027 struct sky2_tx_le *le = sky2->tx_le + *slot;
1024 struct tx_ring_info *re = sky2->tx_ring + *slot;
1025 1028
1026 *slot = RING_NEXT(*slot, sky2->tx_ring_size); 1029 *slot = RING_NEXT(*slot, sky2->tx_ring_size);
1027 re->flags = 0;
1028 re->skb = NULL;
1029 le->ctrl = 0; 1030 le->ctrl = 0;
1030 return le; 1031 return le;
1031} 1032}
@@ -1618,8 +1619,7 @@ static unsigned tx_le_req(const struct sk_buff *skb)
1618 return count; 1619 return count;
1619} 1620}
1620 1621
1621static void sky2_tx_unmap(struct pci_dev *pdev, 1622static void sky2_tx_unmap(struct pci_dev *pdev, struct tx_ring_info *re)
1622 const struct tx_ring_info *re)
1623{ 1623{
1624 if (re->flags & TX_MAP_SINGLE) 1624 if (re->flags & TX_MAP_SINGLE)
1625 pci_unmap_single(pdev, pci_unmap_addr(re, mapaddr), 1625 pci_unmap_single(pdev, pci_unmap_addr(re, mapaddr),
@@ -1629,6 +1629,7 @@ static void sky2_tx_unmap(struct pci_dev *pdev,
1629 pci_unmap_page(pdev, pci_unmap_addr(re, mapaddr), 1629 pci_unmap_page(pdev, pci_unmap_addr(re, mapaddr),
1630 pci_unmap_len(re, maplen), 1630 pci_unmap_len(re, maplen),
1631 PCI_DMA_TODEVICE); 1631 PCI_DMA_TODEVICE);
1632 re->flags = 0;
1632} 1633}
1633 1634
1634/* 1635/*
@@ -1835,6 +1836,7 @@ static void sky2_tx_complete(struct sky2_port *sky2, u16 done)
1835 dev->stats.tx_packets++; 1836 dev->stats.tx_packets++;
1836 dev->stats.tx_bytes += skb->len; 1837 dev->stats.tx_bytes += skb->len;
1837 1838
1839 re->skb = NULL;
1838 dev_kfree_skb_any(skb); 1840 dev_kfree_skb_any(skb);
1839 1841
1840 sky2->tx_next = RING_NEXT(idx, sky2->tx_ring_size); 1842 sky2->tx_next = RING_NEXT(idx, sky2->tx_ring_size);
@@ -1844,7 +1846,8 @@ static void sky2_tx_complete(struct sky2_port *sky2, u16 done)
1844 sky2->tx_cons = idx; 1846 sky2->tx_cons = idx;
1845 smp_mb(); 1847 smp_mb();
1846 1848
1847 if (tx_avail(sky2) > MAX_SKB_TX_LE + 4) 1849 /* Wake unless it's detached, and called e.g. from sky2_down() */
1850 if (tx_avail(sky2) > MAX_SKB_TX_LE + 4 && netif_device_present(dev))
1848 netif_wake_queue(dev); 1851 netif_wake_queue(dev);
1849} 1852}
1850 1853
@@ -2148,7 +2151,9 @@ static void sky2_qlink_intr(struct sky2_hw *hw)
2148 2151
2149 /* reset PHY Link Detect */ 2152 /* reset PHY Link Detect */
2150 phy = sky2_pci_read16(hw, PSM_CONFIG_REG4); 2153 phy = sky2_pci_read16(hw, PSM_CONFIG_REG4);
2154 sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON);
2151 sky2_pci_write16(hw, PSM_CONFIG_REG4, phy | 1); 2155 sky2_pci_write16(hw, PSM_CONFIG_REG4, phy | 1);
2156 sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
2152 2157
2153 sky2_link_up(sky2); 2158 sky2_link_up(sky2);
2154} 2159}
@@ -2639,6 +2644,7 @@ static void sky2_hw_intr(struct sky2_hw *hw)
2639 if (status & (Y2_IS_MST_ERR | Y2_IS_IRQ_STAT)) { 2644 if (status & (Y2_IS_MST_ERR | Y2_IS_IRQ_STAT)) {
2640 u16 pci_err; 2645 u16 pci_err;
2641 2646
2647 sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON);
2642 pci_err = sky2_pci_read16(hw, PCI_STATUS); 2648 pci_err = sky2_pci_read16(hw, PCI_STATUS);
2643 if (net_ratelimit()) 2649 if (net_ratelimit())
2644 dev_err(&pdev->dev, "PCI hardware error (0x%x)\n", 2650 dev_err(&pdev->dev, "PCI hardware error (0x%x)\n",
@@ -2646,12 +2652,14 @@ static void sky2_hw_intr(struct sky2_hw *hw)
2646 2652
2647 sky2_pci_write16(hw, PCI_STATUS, 2653 sky2_pci_write16(hw, PCI_STATUS,
2648 pci_err | PCI_STATUS_ERROR_BITS); 2654 pci_err | PCI_STATUS_ERROR_BITS);
2655 sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
2649 } 2656 }
2650 2657
2651 if (status & Y2_IS_PCI_EXP) { 2658 if (status & Y2_IS_PCI_EXP) {
2652 /* PCI-Express uncorrectable Error occurred */ 2659 /* PCI-Express uncorrectable Error occurred */
2653 u32 err; 2660 u32 err;
2654 2661
2662 sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON);
2655 err = sky2_read32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS); 2663 err = sky2_read32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS);
2656 sky2_write32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS, 2664 sky2_write32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS,
2657 0xfffffffful); 2665 0xfffffffful);
@@ -2659,6 +2667,7 @@ static void sky2_hw_intr(struct sky2_hw *hw)
2659 dev_err(&pdev->dev, "PCI Express error (0x%x)\n", err); 2667 dev_err(&pdev->dev, "PCI Express error (0x%x)\n", err);
2660 2668
2661 sky2_read32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS); 2669 sky2_read32(hw, Y2_CFG_AER + PCI_ERR_UNCOR_STATUS);
2670 sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
2662 } 2671 }
2663 2672
2664 if (status & Y2_HWE_L1_MASK) 2673 if (status & Y2_HWE_L1_MASK)
@@ -3037,6 +3046,7 @@ static void sky2_reset(struct sky2_hw *hw)
3037 } 3046 }
3038 3047
3039 sky2_power_on(hw); 3048 sky2_power_on(hw);
3049 sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
3040 3050
3041 for (i = 0; i < hw->ports; i++) { 3051 for (i = 0; i < hw->ports; i++) {
3042 sky2_write8(hw, SK_REG(i, GMAC_LINK_CTRL), GMLC_RST_SET); 3052 sky2_write8(hw, SK_REG(i, GMAC_LINK_CTRL), GMLC_RST_SET);
@@ -3073,6 +3083,7 @@ static void sky2_reset(struct sky2_hw *hw)
3073 reg <<= PSM_CONFIG_REG4_TIMER_PHY_LINK_DETECT_BASE; 3083 reg <<= PSM_CONFIG_REG4_TIMER_PHY_LINK_DETECT_BASE;
3074 3084
3075 /* reset PHY Link Detect */ 3085 /* reset PHY Link Detect */
3086 sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON);
3076 sky2_pci_write16(hw, PSM_CONFIG_REG4, 3087 sky2_pci_write16(hw, PSM_CONFIG_REG4,
3077 reg | PSM_CONFIG_REG4_RST_PHY_LINK_DETECT); 3088 reg | PSM_CONFIG_REG4_RST_PHY_LINK_DETECT);
3078 sky2_pci_write16(hw, PSM_CONFIG_REG4, reg); 3089 sky2_pci_write16(hw, PSM_CONFIG_REG4, reg);
@@ -3090,6 +3101,7 @@ static void sky2_reset(struct sky2_hw *hw)
3090 /* restore the PCIe Link Control register */ 3101 /* restore the PCIe Link Control register */
3091 sky2_pci_write16(hw, cap + PCI_EXP_LNKCTL, reg); 3102 sky2_pci_write16(hw, cap + PCI_EXP_LNKCTL, reg);
3092 } 3103 }
3104 sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
3093 3105
3094 /* re-enable PEX PM in PEX PHY debug reg. 8 (clear bit 12) */ 3106 /* re-enable PEX PM in PEX PHY debug reg. 8 (clear bit 12) */
3095 sky2_write32(hw, Y2_PEX_PHY_DATA, PEX_DB_ACCESS | (0x08UL << 16)); 3107 sky2_write32(hw, Y2_PEX_PHY_DATA, PEX_DB_ACCESS | (0x08UL << 16));
@@ -3227,6 +3239,27 @@ static inline u8 sky2_wol_supported(const struct sky2_hw *hw)
3227 return sky2_is_copper(hw) ? (WAKE_PHY | WAKE_MAGIC) : 0; 3239 return sky2_is_copper(hw) ? (WAKE_PHY | WAKE_MAGIC) : 0;
3228} 3240}
3229 3241
3242static void sky2_hw_set_wol(struct sky2_hw *hw)
3243{
3244 int wol = 0;
3245 int i;
3246
3247 for (i = 0; i < hw->ports; i++) {
3248 struct net_device *dev = hw->dev[i];
3249 struct sky2_port *sky2 = netdev_priv(dev);
3250
3251 if (sky2->wol)
3252 wol = 1;
3253 }
3254
3255 if (hw->chip_id == CHIP_ID_YUKON_EC_U ||
3256 hw->chip_id == CHIP_ID_YUKON_EX ||
3257 hw->chip_id == CHIP_ID_YUKON_FE_P)
3258 sky2_write32(hw, B0_CTST, wol ? Y2_HW_WOL_ON : Y2_HW_WOL_OFF);
3259
3260 device_set_wakeup_enable(&hw->pdev->dev, wol);
3261}
3262
3230static void sky2_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol) 3263static void sky2_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
3231{ 3264{
3232 const struct sky2_port *sky2 = netdev_priv(dev); 3265 const struct sky2_port *sky2 = netdev_priv(dev);
@@ -3246,13 +3279,7 @@ static int sky2_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
3246 3279
3247 sky2->wol = wol->wolopts; 3280 sky2->wol = wol->wolopts;
3248 3281
3249 if (hw->chip_id == CHIP_ID_YUKON_EC_U || 3282 sky2_hw_set_wol(hw);
3250 hw->chip_id == CHIP_ID_YUKON_EX ||
3251 hw->chip_id == CHIP_ID_YUKON_FE_P)
3252 sky2_write32(hw, B0_CTST, sky2->wol
3253 ? Y2_HW_WOL_ON : Y2_HW_WOL_OFF);
3254
3255 device_set_wakeup_enable(&hw->pdev->dev, sky2->wol);
3256 3283
3257 if (!netif_running(dev)) 3284 if (!netif_running(dev))
3258 sky2_wol_init(sky2); 3285 sky2_wol_init(sky2);
@@ -4684,6 +4711,7 @@ static int __devinit sky2_probe(struct pci_dev *pdev,
4684 INIT_WORK(&hw->restart_work, sky2_restart); 4711 INIT_WORK(&hw->restart_work, sky2_restart);
4685 4712
4686 pci_set_drvdata(pdev, hw); 4713 pci_set_drvdata(pdev, hw);
4714 pdev->d3_delay = 150;
4687 4715
4688 return 0; 4716 return 0;
4689 4717
diff --git a/drivers/net/starfire.c b/drivers/net/starfire.c
index 95db60adde41..f9521136a869 100644
--- a/drivers/net/starfire.c
+++ b/drivers/net/starfire.c
@@ -1063,7 +1063,7 @@ static int netdev_open(struct net_device *dev)
1063 if (retval) { 1063 if (retval) {
1064 printk(KERN_ERR "starfire: Failed to load firmware \"%s\"\n", 1064 printk(KERN_ERR "starfire: Failed to load firmware \"%s\"\n",
1065 FIRMWARE_RX); 1065 FIRMWARE_RX);
1066 return retval; 1066 goto out_init;
1067 } 1067 }
1068 if (fw_rx->size % 4) { 1068 if (fw_rx->size % 4) {
1069 printk(KERN_ERR "starfire: bogus length %zu in \"%s\"\n", 1069 printk(KERN_ERR "starfire: bogus length %zu in \"%s\"\n",
@@ -1108,6 +1108,9 @@ out_tx:
1108 release_firmware(fw_tx); 1108 release_firmware(fw_tx);
1109out_rx: 1109out_rx:
1110 release_firmware(fw_rx); 1110 release_firmware(fw_rx);
1111out_init:
1112 if (retval)
1113 netdev_close(dev);
1111 return retval; 1114 return retval;
1112} 1115}
1113 1116
diff --git a/drivers/net/tc35815.c b/drivers/net/tc35815.c
index 75a669d48e5e..d71c1976072e 100644
--- a/drivers/net/tc35815.c
+++ b/drivers/net/tc35815.c
@@ -1437,7 +1437,6 @@ static int tc35815_do_interrupt(struct net_device *dev, u32 status, int limit)
1437 /* Transmit complete. */ 1437 /* Transmit complete. */
1438 lp->lstats.tx_ints++; 1438 lp->lstats.tx_ints++;
1439 tc35815_txdone(dev); 1439 tc35815_txdone(dev);
1440 netif_wake_queue(dev);
1441 if (ret < 0) 1440 if (ret < 0)
1442 ret = 0; 1441 ret = 0;
1443 } 1442 }
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index 3a74d2168598..7f82b0238e08 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -4,7 +4,7 @@
4 * Copyright (C) 2001, 2002, 2003, 2004 David S. Miller (davem@redhat.com) 4 * Copyright (C) 2001, 2002, 2003, 2004 David S. Miller (davem@redhat.com)
5 * Copyright (C) 2001, 2002, 2003 Jeff Garzik (jgarzik@pobox.com) 5 * Copyright (C) 2001, 2002, 2003 Jeff Garzik (jgarzik@pobox.com)
6 * Copyright (C) 2004 Sun Microsystems Inc. 6 * Copyright (C) 2004 Sun Microsystems Inc.
7 * Copyright (C) 2005-2009 Broadcom Corporation. 7 * Copyright (C) 2005-2010 Broadcom Corporation.
8 * 8 *
9 * Firmware is: 9 * Firmware is:
10 * Derived from proprietary unpublished source code, 10 * Derived from proprietary unpublished source code,
@@ -68,8 +68,8 @@
68 68
69#define DRV_MODULE_NAME "tg3" 69#define DRV_MODULE_NAME "tg3"
70#define PFX DRV_MODULE_NAME ": " 70#define PFX DRV_MODULE_NAME ": "
71#define DRV_MODULE_VERSION "3.105" 71#define DRV_MODULE_VERSION "3.106"
72#define DRV_MODULE_RELDATE "December 2, 2009" 72#define DRV_MODULE_RELDATE "January 12, 2010"
73 73
74#define TG3_DEF_MAC_MODE 0 74#define TG3_DEF_MAC_MODE 0
75#define TG3_DEF_RX_MODE 0 75#define TG3_DEF_RX_MODE 0
@@ -1037,7 +1037,11 @@ static void tg3_mdio_start(struct tg3 *tp)
1037 else 1037 else
1038 tp->phy_addr = 1; 1038 tp->phy_addr = 1;
1039 1039
1040 is_serdes = tr32(SG_DIG_STATUS) & SG_DIG_IS_SERDES; 1040 if (tp->pci_chip_rev_id != CHIPREV_ID_5717_A0)
1041 is_serdes = tr32(SG_DIG_STATUS) & SG_DIG_IS_SERDES;
1042 else
1043 is_serdes = tr32(TG3_CPMU_PHY_STRAP) &
1044 TG3_CPMU_PHY_STRAP_IS_SERDES;
1041 if (is_serdes) 1045 if (is_serdes)
1042 tp->phy_addr += 7; 1046 tp->phy_addr += 7;
1043 } else 1047 } else
@@ -4693,8 +4697,9 @@ next_pkt:
4693 (*post_ptr)++; 4697 (*post_ptr)++;
4694 4698
4695 if (unlikely(rx_std_posted >= tp->rx_std_max_post)) { 4699 if (unlikely(rx_std_posted >= tp->rx_std_max_post)) {
4696 u32 idx = *post_ptr % TG3_RX_RING_SIZE; 4700 tpr->rx_std_prod_idx = std_prod_idx % TG3_RX_RING_SIZE;
4697 tw32_rx_mbox(TG3_RX_STD_PROD_IDX_REG, idx); 4701 tw32_rx_mbox(TG3_RX_STD_PROD_IDX_REG,
4702 tpr->rx_std_prod_idx);
4698 work_mask &= ~RXD_OPAQUE_RING_STD; 4703 work_mask &= ~RXD_OPAQUE_RING_STD;
4699 rx_std_posted = 0; 4704 rx_std_posted = 0;
4700 } 4705 }
@@ -7742,7 +7747,7 @@ static int tg3_reset_hw(struct tg3 *tp, int reset_phy)
7742 ((u64) tpr->rx_std_mapping >> 32)); 7747 ((u64) tpr->rx_std_mapping >> 32));
7743 tw32(RCVDBDI_STD_BD + TG3_BDINFO_HOST_ADDR + TG3_64BIT_REG_LOW, 7748 tw32(RCVDBDI_STD_BD + TG3_BDINFO_HOST_ADDR + TG3_64BIT_REG_LOW,
7744 ((u64) tpr->rx_std_mapping & 0xffffffff)); 7749 ((u64) tpr->rx_std_mapping & 0xffffffff));
7745 if (!(tp->tg3_flags3 & TG3_FLG3_5755_PLUS)) 7750 if (GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5717)
7746 tw32(RCVDBDI_STD_BD + TG3_BDINFO_NIC_ADDR, 7751 tw32(RCVDBDI_STD_BD + TG3_BDINFO_NIC_ADDR,
7747 NIC_SRAM_RX_BUFFER_DESC); 7752 NIC_SRAM_RX_BUFFER_DESC);
7748 7753
@@ -12122,7 +12127,8 @@ static void __devinit tg3_get_eeprom_hw_cfg(struct tg3 *tp)
12122 12127
12123 tp->phy_id = eeprom_phy_id; 12128 tp->phy_id = eeprom_phy_id;
12124 if (eeprom_phy_serdes) { 12129 if (eeprom_phy_serdes) {
12125 if (tp->tg3_flags2 & TG3_FLG2_5780_CLASS) 12130 if ((tp->tg3_flags2 & TG3_FLG2_5780_CLASS) ||
12131 GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717)
12126 tp->tg3_flags2 |= TG3_FLG2_MII_SERDES; 12132 tp->tg3_flags2 |= TG3_FLG2_MII_SERDES;
12127 else 12133 else
12128 tp->tg3_flags2 |= TG3_FLG2_PHY_SERDES; 12134 tp->tg3_flags2 |= TG3_FLG2_PHY_SERDES;
@@ -13384,6 +13390,11 @@ static int __devinit tg3_get_invariants(struct tg3 *tp)
13384 if (err) 13390 if (err)
13385 return err; 13391 return err;
13386 13392
13393 if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 &&
13394 (tp->pci_chip_rev_id != CHIPREV_ID_5717_A0 ||
13395 (tp->tg3_flags2 & TG3_FLG2_MII_SERDES)))
13396 return -ENOTSUPP;
13397
13387 /* Initialize data/descriptor byte/word swapping. */ 13398 /* Initialize data/descriptor byte/word swapping. */
13388 val = tr32(GRC_MODE); 13399 val = tr32(GRC_MODE);
13389 val &= GRC_MODE_HOST_STACKUP; 13400 val &= GRC_MODE_HOST_STACKUP;
diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h
index cd30889650f8..8a167912902b 100644
--- a/drivers/net/tg3.h
+++ b/drivers/net/tg3.h
@@ -4,6 +4,7 @@
4 * Copyright (C) 2001, 2002, 2003, 2004 David S. Miller (davem@redhat.com) 4 * Copyright (C) 2001, 2002, 2003, 2004 David S. Miller (davem@redhat.com)
5 * Copyright (C) 2001 Jeff Garzik (jgarzik@pobox.com) 5 * Copyright (C) 2001 Jeff Garzik (jgarzik@pobox.com)
6 * Copyright (C) 2004 Sun Microsystems Inc. 6 * Copyright (C) 2004 Sun Microsystems Inc.
7 * Copyright (C) 2007-2010 Broadcom Corporation.
7 */ 8 */
8 9
9#ifndef _T3_H 10#ifndef _T3_H
@@ -1054,6 +1055,8 @@
1054#define CPMU_MUTEX_REQ_DRIVER 0x00001000 1055#define CPMU_MUTEX_REQ_DRIVER 0x00001000
1055#define TG3_CPMU_MUTEX_GNT 0x00003660 1056#define TG3_CPMU_MUTEX_GNT 0x00003660
1056#define CPMU_MUTEX_GNT_DRIVER 0x00001000 1057#define CPMU_MUTEX_GNT_DRIVER 0x00001000
1058#define TG3_CPMU_PHY_STRAP 0x00003664
1059#define TG3_CPMU_PHY_STRAP_IS_SERDES 0x00000020
1057/* 0x3664 --> 0x3800 unused */ 1060/* 0x3664 --> 0x3800 unused */
1058 1061
1059/* Mbuf cluster free registers */ 1062/* Mbuf cluster free registers */
diff --git a/drivers/net/tulip/Kconfig b/drivers/net/tulip/Kconfig
index 1cc8cf4425d1..516713fa0a05 100644
--- a/drivers/net/tulip/Kconfig
+++ b/drivers/net/tulip/Kconfig
@@ -101,6 +101,10 @@ config TULIP_NAPI_HW_MITIGATION
101 101
102 If in doubt, say Y. 102 If in doubt, say Y.
103 103
104config TULIP_DM910X
105 def_bool y
106 depends on TULIP && SPARC
107
104config DE4X5 108config DE4X5
105 tristate "Generic DECchip & DIGITAL EtherWORKS PCI/EISA" 109 tristate "Generic DECchip & DIGITAL EtherWORKS PCI/EISA"
106 depends on PCI || EISA 110 depends on PCI || EISA
diff --git a/drivers/net/tulip/dmfe.c b/drivers/net/tulip/dmfe.c
index ad63621913c3..6f44ebf58910 100644
--- a/drivers/net/tulip/dmfe.c
+++ b/drivers/net/tulip/dmfe.c
@@ -92,6 +92,10 @@
92#include <asm/uaccess.h> 92#include <asm/uaccess.h>
93#include <asm/irq.h> 93#include <asm/irq.h>
94 94
95#ifdef CONFIG_TULIP_DM910X
96#include <linux/of.h>
97#endif
98
95 99
96/* Board/System/Debug information/definition ---------------- */ 100/* Board/System/Debug information/definition ---------------- */
97#define PCI_DM9132_ID 0x91321282 /* Davicom DM9132 ID */ 101#define PCI_DM9132_ID 0x91321282 /* Davicom DM9132 ID */
@@ -377,6 +381,23 @@ static int __devinit dmfe_init_one (struct pci_dev *pdev,
377 if (!printed_version++) 381 if (!printed_version++)
378 printk(version); 382 printk(version);
379 383
384 /*
385 * SPARC on-board DM910x chips should be handled by the main
386 * tulip driver, except for early DM9100s.
387 */
388#ifdef CONFIG_TULIP_DM910X
389 if ((ent->driver_data == PCI_DM9100_ID && pdev->revision >= 0x30) ||
390 ent->driver_data == PCI_DM9102_ID) {
391 struct device_node *dp = pci_device_to_OF_node(pdev);
392
393 if (dp && of_get_property(dp, "local-mac-address", NULL)) {
394 printk(KERN_INFO DRV_NAME
395 ": skipping on-board DM910x (use tulip)\n");
396 return -ENODEV;
397 }
398 }
399#endif
400
380 /* Init network device */ 401 /* Init network device */
381 dev = alloc_etherdev(sizeof(*db)); 402 dev = alloc_etherdev(sizeof(*db));
382 if (dev == NULL) 403 if (dev == NULL)
diff --git a/drivers/net/tulip/tulip_core.c b/drivers/net/tulip/tulip_core.c
index 0fa3140d65bf..20696b5d60a5 100644
--- a/drivers/net/tulip/tulip_core.c
+++ b/drivers/net/tulip/tulip_core.c
@@ -196,9 +196,13 @@ struct tulip_chip_table tulip_tbl[] = {
196 | HAS_NWAY | HAS_PCI_MWI, tulip_timer, tulip_media_task }, 196 | HAS_NWAY | HAS_PCI_MWI, tulip_timer, tulip_media_task },
197 197
198 /* DM910X */ 198 /* DM910X */
199#ifdef CONFIG_TULIP_DM910X
199 { "Davicom DM9102/DM9102A", 128, 0x0001ebef, 200 { "Davicom DM9102/DM9102A", 128, 0x0001ebef,
200 HAS_MII | HAS_MEDIA_TABLE | CSR12_IN_SROM | HAS_ACPI, 201 HAS_MII | HAS_MEDIA_TABLE | CSR12_IN_SROM | HAS_ACPI,
201 tulip_timer, tulip_media_task }, 202 tulip_timer, tulip_media_task },
203#else
204 { NULL },
205#endif
202 206
203 /* RS7112 */ 207 /* RS7112 */
204 { "Conexant LANfinity", 256, 0x0001ebef, 208 { "Conexant LANfinity", 256, 0x0001ebef,
@@ -228,8 +232,10 @@ static struct pci_device_id tulip_pci_tbl[] = {
228 { 0x1259, 0xa120, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, 232 { 0x1259, 0xa120, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET },
229 { 0x11F6, 0x9881, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMPEX9881 }, 233 { 0x11F6, 0x9881, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMPEX9881 },
230 { 0x8086, 0x0039, PCI_ANY_ID, PCI_ANY_ID, 0, 0, I21145 }, 234 { 0x8086, 0x0039, PCI_ANY_ID, PCI_ANY_ID, 0, 0, I21145 },
235#ifdef CONFIG_TULIP_DM910X
231 { 0x1282, 0x9100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DM910X }, 236 { 0x1282, 0x9100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DM910X },
232 { 0x1282, 0x9102, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DM910X }, 237 { 0x1282, 0x9102, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DM910X },
238#endif
233 { 0x1113, 0x1216, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, 239 { 0x1113, 0x1216, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET },
234 { 0x1113, 0x1217, PCI_ANY_ID, PCI_ANY_ID, 0, 0, MX98715 }, 240 { 0x1113, 0x1217, PCI_ANY_ID, PCI_ANY_ID, 0, 0, MX98715 },
235 { 0x1113, 0x9511, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, 241 { 0x1113, 0x9511, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET },
@@ -243,6 +249,7 @@ static struct pci_device_id tulip_pci_tbl[] = {
243 { 0x17B3, 0xAB08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, 249 { 0x17B3, 0xAB08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET },
244 { 0x10b7, 0x9300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* 3Com 3CSOHO100B-TX */ 250 { 0x10b7, 0x9300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* 3Com 3CSOHO100B-TX */
245 { 0x14ea, 0xab08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* Planex FNW-3602-TX */ 251 { 0x14ea, 0xab08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* Planex FNW-3602-TX */
252 { 0x1414, 0x0001, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* Microsoft MN-120 */
246 { 0x1414, 0x0002, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, 253 { 0x1414, 0x0002, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET },
247 { } /* terminate list */ 254 { } /* terminate list */
248}; 255};
@@ -1299,18 +1306,30 @@ static int __devinit tulip_init_one (struct pci_dev *pdev,
1299 } 1306 }
1300 1307
1301 /* 1308 /*
1302 * Early DM9100's need software CRC and the DMFE driver 1309 * DM910x chips should be handled by the dmfe driver, except
1310 * on-board chips on SPARC systems. Also, early DM9100s need
1311 * software CRC which only the dmfe driver supports.
1303 */ 1312 */
1304 1313
1305 if (pdev->vendor == 0x1282 && pdev->device == 0x9100) 1314#ifdef CONFIG_TULIP_DM910X
1306 { 1315 if (chip_idx == DM910X) {
1307 /* Read Chip revision */ 1316 struct device_node *dp;
1308 if (pdev->revision < 0x30) 1317
1309 { 1318 if (pdev->vendor == 0x1282 && pdev->device == 0x9100 &&
1310 printk(KERN_ERR PFX "skipping early DM9100 with Crc bug (use dmfe)\n"); 1319 pdev->revision < 0x30) {
1320 printk(KERN_INFO PFX
1321 "skipping early DM9100 with Crc bug (use dmfe)\n");
1322 return -ENODEV;
1323 }
1324
1325 dp = pci_device_to_OF_node(pdev);
1326 if (!(dp && of_get_property(dp, "local-mac-address", NULL))) {
1327 printk(KERN_INFO PFX
1328 "skipping DM910x expansion card (use dmfe)\n");
1311 return -ENODEV; 1329 return -ENODEV;
1312 } 1330 }
1313 } 1331 }
1332#endif
1314 1333
1315 /* 1334 /*
1316 * Looks for early PCI chipsets where people report hangs 1335 * Looks for early PCI chipsets where people report hangs
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 01e99f22210e..2834a01bae24 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -849,13 +849,13 @@ static void tun_sock_write_space(struct sock *sk)
849 if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) 849 if (sk->sk_sleep && waitqueue_active(sk->sk_sleep))
850 wake_up_interruptible_sync(sk->sk_sleep); 850 wake_up_interruptible_sync(sk->sk_sleep);
851 851
852 tun = container_of(sk, struct tun_sock, sk)->tun; 852 tun = tun_sk(sk)->tun;
853 kill_fasync(&tun->fasync, SIGIO, POLL_OUT); 853 kill_fasync(&tun->fasync, SIGIO, POLL_OUT);
854} 854}
855 855
856static void tun_sock_destruct(struct sock *sk) 856static void tun_sock_destruct(struct sock *sk)
857{ 857{
858 free_netdev(container_of(sk, struct tun_sock, sk)->tun->dev); 858 free_netdev(tun_sk(sk)->tun->dev);
859} 859}
860 860
861static struct proto tun_proto = { 861static struct proto tun_proto = {
@@ -990,7 +990,7 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)
990 sk->sk_write_space = tun_sock_write_space; 990 sk->sk_write_space = tun_sock_write_space;
991 sk->sk_sndbuf = INT_MAX; 991 sk->sk_sndbuf = INT_MAX;
992 992
993 container_of(sk, struct tun_sock, sk)->tun = tun; 993 tun_sk(sk)->tun = tun;
994 994
995 security_tun_dev_post_create(sk); 995 security_tun_dev_post_create(sk);
996 996
diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c
index afaf088b72ea..eb8fe7e16c6c 100644
--- a/drivers/net/ucc_geth.c
+++ b/drivers/net/ucc_geth.c
@@ -1563,7 +1563,10 @@ static int ugeth_disable(struct ucc_geth_private *ugeth, enum comm_dir mode)
1563 1563
1564static void ugeth_quiesce(struct ucc_geth_private *ugeth) 1564static void ugeth_quiesce(struct ucc_geth_private *ugeth)
1565{ 1565{
1566 /* Wait for and prevent any further xmits. */ 1566 /* Prevent any further xmits, plus detach the device. */
1567 netif_device_detach(ugeth->ndev);
1568
1569 /* Wait for any current xmits to finish. */
1567 netif_tx_disable(ugeth->ndev); 1570 netif_tx_disable(ugeth->ndev);
1568 1571
1569 /* Disable the interrupt to avoid NAPI rescheduling. */ 1572 /* Disable the interrupt to avoid NAPI rescheduling. */
@@ -1577,7 +1580,7 @@ static void ugeth_activate(struct ucc_geth_private *ugeth)
1577{ 1580{
1578 napi_enable(&ugeth->napi); 1581 napi_enable(&ugeth->napi);
1579 enable_irq(ugeth->ug_info->uf_info.irq); 1582 enable_irq(ugeth->ug_info->uf_info.irq);
1580 netif_tx_wake_all_queues(ugeth->ndev); 1583 netif_device_attach(ugeth->ndev);
1581} 1584}
1582 1585
1583/* Called every time the controller might need to be made 1586/* Called every time the controller might need to be made
@@ -1648,25 +1651,28 @@ static void adjust_link(struct net_device *dev)
1648 ugeth->oldspeed = phydev->speed; 1651 ugeth->oldspeed = phydev->speed;
1649 } 1652 }
1650 1653
1651 /*
1652 * To change the MAC configuration we need to disable the
1653 * controller. To do so, we have to either grab ugeth->lock,
1654 * which is a bad idea since 'graceful stop' commands might
1655 * take quite a while, or we can quiesce driver's activity.
1656 */
1657 ugeth_quiesce(ugeth);
1658 ugeth_disable(ugeth, COMM_DIR_RX_AND_TX);
1659
1660 out_be32(&ug_regs->maccfg2, tempval);
1661 out_be32(&uf_regs->upsmr, upsmr);
1662
1663 ugeth_enable(ugeth, COMM_DIR_RX_AND_TX);
1664 ugeth_activate(ugeth);
1665
1666 if (!ugeth->oldlink) { 1654 if (!ugeth->oldlink) {
1667 new_state = 1; 1655 new_state = 1;
1668 ugeth->oldlink = 1; 1656 ugeth->oldlink = 1;
1669 } 1657 }
1658
1659 if (new_state) {
1660 /*
1661 * To change the MAC configuration we need to disable
1662 * the controller. To do so, we have to either grab
1663 * ugeth->lock, which is a bad idea since 'graceful
1664 * stop' commands might take quite a while, or we can
1665 * quiesce driver's activity.
1666 */
1667 ugeth_quiesce(ugeth);
1668 ugeth_disable(ugeth, COMM_DIR_RX_AND_TX);
1669
1670 out_be32(&ug_regs->maccfg2, tempval);
1671 out_be32(&uf_regs->upsmr, upsmr);
1672
1673 ugeth_enable(ugeth, COMM_DIR_RX_AND_TX);
1674 ugeth_activate(ugeth);
1675 }
1670 } else if (ugeth->oldlink) { 1676 } else if (ugeth->oldlink) {
1671 new_state = 1; 1677 new_state = 1;
1672 ugeth->oldlink = 0; 1678 ugeth->oldlink = 0;
@@ -3273,13 +3279,12 @@ static int ucc_geth_tx(struct net_device *dev, u8 txQ)
3273 /* Handle the transmitted buffer and release */ 3279 /* Handle the transmitted buffer and release */
3274 /* the BD to be used with the current frame */ 3280 /* the BD to be used with the current frame */
3275 3281
3276 if ((bd == ugeth->txBd[txQ]) && (netif_queue_stopped(dev) == 0)) 3282 skb = ugeth->tx_skbuff[txQ][ugeth->skb_dirtytx[txQ]];
3283 if (!skb)
3277 break; 3284 break;
3278 3285
3279 dev->stats.tx_packets++; 3286 dev->stats.tx_packets++;
3280 3287
3281 skb = ugeth->tx_skbuff[txQ][ugeth->skb_dirtytx[txQ]];
3282
3283 if (skb_queue_len(&ugeth->rx_recycle) < RX_BD_RING_LEN && 3288 if (skb_queue_len(&ugeth->rx_recycle) < RX_BD_RING_LEN &&
3284 skb_recycle_check(skb, 3289 skb_recycle_check(skb,
3285 ugeth->ug_info->uf_info.max_rx_buf_length + 3290 ugeth->ug_info->uf_info.max_rx_buf_length +
@@ -3601,6 +3606,7 @@ static int ucc_geth_suspend(struct of_device *ofdev, pm_message_t state)
3601 if (!netif_running(ndev)) 3606 if (!netif_running(ndev))
3602 return 0; 3607 return 0;
3603 3608
3609 netif_device_detach(ndev);
3604 napi_disable(&ugeth->napi); 3610 napi_disable(&ugeth->napi);
3605 3611
3606 /* 3612 /*
@@ -3659,7 +3665,7 @@ static int ucc_geth_resume(struct of_device *ofdev)
3659 phy_start(ugeth->phydev); 3665 phy_start(ugeth->phydev);
3660 3666
3661 napi_enable(&ugeth->napi); 3667 napi_enable(&ugeth->napi);
3662 netif_start_queue(ndev); 3668 netif_device_attach(ndev);
3663 3669
3664 return 0; 3670 return 0;
3665} 3671}
diff --git a/drivers/net/ucc_geth.h b/drivers/net/ucc_geth.h
index a007e2acf651..ef1fbeb11c6e 100644
--- a/drivers/net/ucc_geth.h
+++ b/drivers/net/ucc_geth.h
@@ -838,13 +838,13 @@ struct ucc_geth_hardware_statistics {
838 using the maximum is 838 using the maximum is
839 easier */ 839 easier */
840#define UCC_GETH_SEND_QUEUE_QUEUE_DESCRIPTOR_ALIGNMENT 32 840#define UCC_GETH_SEND_QUEUE_QUEUE_DESCRIPTOR_ALIGNMENT 32
841#define UCC_GETH_SCHEDULER_ALIGNMENT 4 /* This is a guess */ 841#define UCC_GETH_SCHEDULER_ALIGNMENT 8 /* This is a guess */
842#define UCC_GETH_TX_STATISTICS_ALIGNMENT 4 /* This is a guess */ 842#define UCC_GETH_TX_STATISTICS_ALIGNMENT 4 /* This is a guess */
843#define UCC_GETH_RX_STATISTICS_ALIGNMENT 4 /* This is a guess */ 843#define UCC_GETH_RX_STATISTICS_ALIGNMENT 4 /* This is a guess */
844#define UCC_GETH_RX_INTERRUPT_COALESCING_ALIGNMENT 64 844#define UCC_GETH_RX_INTERRUPT_COALESCING_ALIGNMENT 64
845#define UCC_GETH_RX_BD_QUEUES_ALIGNMENT 8 /* This is a guess */ 845#define UCC_GETH_RX_BD_QUEUES_ALIGNMENT 8 /* This is a guess */
846#define UCC_GETH_RX_PREFETCHED_BDS_ALIGNMENT 128 /* This is a guess */ 846#define UCC_GETH_RX_PREFETCHED_BDS_ALIGNMENT 128 /* This is a guess */
847#define UCC_GETH_RX_EXTENDED_FILTERING_GLOBAL_PARAMETERS_ALIGNMENT 4 /* This 847#define UCC_GETH_RX_EXTENDED_FILTERING_GLOBAL_PARAMETERS_ALIGNMENT 8 /* This
848 is a 848 is a
849 guess 849 guess
850 */ 850 */
@@ -899,16 +899,17 @@ struct ucc_geth_hardware_statistics {
899#define UCC_GETH_UTFS_INIT 512 /* Tx virtual FIFO size 899#define UCC_GETH_UTFS_INIT 512 /* Tx virtual FIFO size
900 */ 900 */
901#define UCC_GETH_UTFET_INIT 256 /* 1/2 utfs */ 901#define UCC_GETH_UTFET_INIT 256 /* 1/2 utfs */
902#define UCC_GETH_UTFTT_INIT 128 902#define UCC_GETH_UTFTT_INIT 512
903/* Gigabit Ethernet (1000 Mbps) */ 903/* Gigabit Ethernet (1000 Mbps) */
904#define UCC_GETH_URFS_GIGA_INIT 4096/*2048*/ /* Rx virtual 904#define UCC_GETH_URFS_GIGA_INIT 4096/*2048*/ /* Rx virtual
905 FIFO size */ 905 FIFO size */
906#define UCC_GETH_URFET_GIGA_INIT 2048/*1024*/ /* 1/2 urfs */ 906#define UCC_GETH_URFET_GIGA_INIT 2048/*1024*/ /* 1/2 urfs */
907#define UCC_GETH_URFSET_GIGA_INIT 3072/*1536*/ /* 3/4 urfs */ 907#define UCC_GETH_URFSET_GIGA_INIT 3072/*1536*/ /* 3/4 urfs */
908#define UCC_GETH_UTFS_GIGA_INIT 8192/*2048*/ /* Tx virtual 908#define UCC_GETH_UTFS_GIGA_INIT 4096/*2048*/ /* Tx virtual
909 FIFO size */
910#define UCC_GETH_UTFET_GIGA_INIT 2048/*1024*/ /* 1/2 utfs */
911#define UCC_GETH_UTFTT_GIGA_INIT 4096/*0x40*/ /* Tx virtual
909 FIFO size */ 912 FIFO size */
910#define UCC_GETH_UTFET_GIGA_INIT 4096/*1024*/ /* 1/2 utfs */
911#define UCC_GETH_UTFTT_GIGA_INIT 0x400/*0x40*/ /* */
912 913
913#define UCC_GETH_REMODER_INIT 0 /* bits that must be 914#define UCC_GETH_REMODER_INIT 0 /* bits that must be
914 set */ 915 set */
diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
index 21e183a83b99..5f3b9eaeb04f 100644
--- a/drivers/net/usb/cdc_ether.c
+++ b/drivers/net/usb/cdc_ether.c
@@ -419,7 +419,7 @@ static int cdc_manage_power(struct usbnet *dev, int on)
419 419
420static const struct driver_info cdc_info = { 420static const struct driver_info cdc_info = {
421 .description = "CDC Ethernet Device", 421 .description = "CDC Ethernet Device",
422 .flags = FLAG_ETHER | FLAG_LINK_INTR, 422 .flags = FLAG_ETHER,
423 // .check_connect = cdc_check_connect, 423 // .check_connect = cdc_check_connect,
424 .bind = cdc_bind, 424 .bind = cdc_bind,
425 .unbind = usbnet_cdc_unbind, 425 .unbind = usbnet_cdc_unbind,
@@ -584,6 +584,11 @@ static const struct usb_device_id products [] = {
584 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE), 584 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
585 .driver_info = (unsigned long) &mbm_info, 585 .driver_info = (unsigned long) &mbm_info,
586}, { 586}, {
587 /* Ericsson C3607w ver 2 */
588 USB_DEVICE_AND_INTERFACE_INFO(0x0bdb, 0x190b, USB_CLASS_COMM,
589 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
590 .driver_info = (unsigned long) &mbm_info,
591}, {
587 /* Toshiba F3507g */ 592 /* Toshiba F3507g */
588 USB_DEVICE_AND_INTERFACE_INFO(0x0930, 0x130b, USB_CLASS_COMM, 593 USB_DEVICE_AND_INTERFACE_INFO(0x0930, 0x130b, USB_CLASS_COMM,
589 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE), 594 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
index f78f0903b073..6895f1531238 100644
--- a/drivers/net/usb/hso.c
+++ b/drivers/net/usb/hso.c
@@ -286,6 +286,7 @@ struct hso_device {
286 u8 usb_gone; 286 u8 usb_gone;
287 struct work_struct async_get_intf; 287 struct work_struct async_get_intf;
288 struct work_struct async_put_intf; 288 struct work_struct async_put_intf;
289 struct work_struct reset_device;
289 290
290 struct usb_device *usb; 291 struct usb_device *usb;
291 struct usb_interface *interface; 292 struct usb_interface *interface;
@@ -332,7 +333,8 @@ static void hso_kick_transmit(struct hso_serial *serial);
332/* Helper functions */ 333/* Helper functions */
333static int hso_mux_submit_intr_urb(struct hso_shared_int *mux_int, 334static int hso_mux_submit_intr_urb(struct hso_shared_int *mux_int,
334 struct usb_device *usb, gfp_t gfp); 335 struct usb_device *usb, gfp_t gfp);
335static void log_usb_status(int status, const char *function); 336static void handle_usb_error(int status, const char *function,
337 struct hso_device *hso_dev);
336static struct usb_endpoint_descriptor *hso_get_ep(struct usb_interface *intf, 338static struct usb_endpoint_descriptor *hso_get_ep(struct usb_interface *intf,
337 int type, int dir); 339 int type, int dir);
338static int hso_get_mux_ports(struct usb_interface *intf, unsigned char *ports); 340static int hso_get_mux_ports(struct usb_interface *intf, unsigned char *ports);
@@ -350,6 +352,7 @@ static void async_put_intf(struct work_struct *data);
350static int hso_put_activity(struct hso_device *hso_dev); 352static int hso_put_activity(struct hso_device *hso_dev);
351static int hso_get_activity(struct hso_device *hso_dev); 353static int hso_get_activity(struct hso_device *hso_dev);
352static void tiocmget_intr_callback(struct urb *urb); 354static void tiocmget_intr_callback(struct urb *urb);
355static void reset_device(struct work_struct *data);
353/*****************************************************************************/ 356/*****************************************************************************/
354/* Helping functions */ 357/* Helping functions */
355/*****************************************************************************/ 358/*****************************************************************************/
@@ -461,10 +464,17 @@ static const struct usb_device_id hso_ids[] = {
461 {USB_DEVICE(0x0af0, 0x7501)}, /* GTM 382 */ 464 {USB_DEVICE(0x0af0, 0x7501)}, /* GTM 382 */
462 {USB_DEVICE(0x0af0, 0x7601)}, /* GE40x */ 465 {USB_DEVICE(0x0af0, 0x7601)}, /* GE40x */
463 {USB_DEVICE(0x0af0, 0x7701)}, 466 {USB_DEVICE(0x0af0, 0x7701)},
467 {USB_DEVICE(0x0af0, 0x7706)},
464 {USB_DEVICE(0x0af0, 0x7801)}, 468 {USB_DEVICE(0x0af0, 0x7801)},
465 {USB_DEVICE(0x0af0, 0x7901)}, 469 {USB_DEVICE(0x0af0, 0x7901)},
470 {USB_DEVICE(0x0af0, 0x7A01)},
471 {USB_DEVICE(0x0af0, 0x7A05)},
466 {USB_DEVICE(0x0af0, 0x8200)}, 472 {USB_DEVICE(0x0af0, 0x8200)},
467 {USB_DEVICE(0x0af0, 0x8201)}, 473 {USB_DEVICE(0x0af0, 0x8201)},
474 {USB_DEVICE(0x0af0, 0x8300)},
475 {USB_DEVICE(0x0af0, 0x8302)},
476 {USB_DEVICE(0x0af0, 0x8304)},
477 {USB_DEVICE(0x0af0, 0x8400)},
468 {USB_DEVICE(0x0af0, 0xd035)}, 478 {USB_DEVICE(0x0af0, 0xd035)},
469 {USB_DEVICE(0x0af0, 0xd055)}, 479 {USB_DEVICE(0x0af0, 0xd055)},
470 {USB_DEVICE(0x0af0, 0xd155)}, 480 {USB_DEVICE(0x0af0, 0xd155)},
@@ -473,6 +483,8 @@ static const struct usb_device_id hso_ids[] = {
473 {USB_DEVICE(0x0af0, 0xd157)}, 483 {USB_DEVICE(0x0af0, 0xd157)},
474 {USB_DEVICE(0x0af0, 0xd257)}, 484 {USB_DEVICE(0x0af0, 0xd257)},
475 {USB_DEVICE(0x0af0, 0xd357)}, 485 {USB_DEVICE(0x0af0, 0xd357)},
486 {USB_DEVICE(0x0af0, 0xd058)},
487 {USB_DEVICE(0x0af0, 0xc100)},
476 {} 488 {}
477}; 489};
478MODULE_DEVICE_TABLE(usb, hso_ids); 490MODULE_DEVICE_TABLE(usb, hso_ids);
@@ -655,8 +667,8 @@ static void set_serial_by_index(unsigned index, struct hso_serial *serial)
655 spin_unlock_irqrestore(&serial_table_lock, flags); 667 spin_unlock_irqrestore(&serial_table_lock, flags);
656} 668}
657 669
658/* log a meaningful explanation of an USB status */ 670static void handle_usb_error(int status, const char *function,
659static void log_usb_status(int status, const char *function) 671 struct hso_device *hso_dev)
660{ 672{
661 char *explanation; 673 char *explanation;
662 674
@@ -685,10 +697,20 @@ static void log_usb_status(int status, const char *function)
685 case -EMSGSIZE: 697 case -EMSGSIZE:
686 explanation = "internal error"; 698 explanation = "internal error";
687 break; 699 break;
700 case -EILSEQ:
701 case -EPROTO:
702 case -ETIME:
703 case -ETIMEDOUT:
704 explanation = "protocol error";
705 if (hso_dev)
706 schedule_work(&hso_dev->reset_device);
707 break;
688 default: 708 default:
689 explanation = "unknown status"; 709 explanation = "unknown status";
690 break; 710 break;
691 } 711 }
712
713 /* log a meaningful explanation of an USB status */
692 D1("%s: received USB status - %s (%d)", function, explanation, status); 714 D1("%s: received USB status - %s (%d)", function, explanation, status);
693} 715}
694 716
@@ -762,7 +784,7 @@ static void write_bulk_callback(struct urb *urb)
762 /* log status, but don't act on it, we don't need to resubmit anything 784 /* log status, but don't act on it, we don't need to resubmit anything
763 * anyhow */ 785 * anyhow */
764 if (status) 786 if (status)
765 log_usb_status(status, __func__); 787 handle_usb_error(status, __func__, odev->parent);
766 788
767 hso_put_activity(odev->parent); 789 hso_put_activity(odev->parent);
768 790
@@ -806,7 +828,7 @@ static netdev_tx_t hso_net_start_xmit(struct sk_buff *skb,
806 result = usb_submit_urb(odev->mux_bulk_tx_urb, GFP_ATOMIC); 828 result = usb_submit_urb(odev->mux_bulk_tx_urb, GFP_ATOMIC);
807 if (result) { 829 if (result) {
808 dev_warn(&odev->parent->interface->dev, 830 dev_warn(&odev->parent->interface->dev,
809 "failed mux_bulk_tx_urb %d", result); 831 "failed mux_bulk_tx_urb %d\n", result);
810 net->stats.tx_errors++; 832 net->stats.tx_errors++;
811 netif_start_queue(net); 833 netif_start_queue(net);
812 } else { 834 } else {
@@ -998,7 +1020,7 @@ static void read_bulk_callback(struct urb *urb)
998 1020
999 /* is al ok? (Filip: Who's Al ?) */ 1021 /* is al ok? (Filip: Who's Al ?) */
1000 if (status) { 1022 if (status) {
1001 log_usb_status(status, __func__); 1023 handle_usb_error(status, __func__, odev->parent);
1002 return; 1024 return;
1003 } 1025 }
1004 1026
@@ -1019,7 +1041,8 @@ static void read_bulk_callback(struct urb *urb)
1019 if (odev->parent->port_spec & HSO_INFO_CRC_BUG) { 1041 if (odev->parent->port_spec & HSO_INFO_CRC_BUG) {
1020 u32 rest; 1042 u32 rest;
1021 u8 crc_check[4] = { 0xDE, 0xAD, 0xBE, 0xEF }; 1043 u8 crc_check[4] = { 0xDE, 0xAD, 0xBE, 0xEF };
1022 rest = urb->actual_length % odev->in_endp->wMaxPacketSize; 1044 rest = urb->actual_length %
1045 le16_to_cpu(odev->in_endp->wMaxPacketSize);
1023 if (((rest == 5) || (rest == 6)) && 1046 if (((rest == 5) || (rest == 6)) &&
1024 !memcmp(((u8 *) urb->transfer_buffer) + 1047 !memcmp(((u8 *) urb->transfer_buffer) +
1025 urb->actual_length - 4, crc_check, 4)) { 1048 urb->actual_length - 4, crc_check, 4)) {
@@ -1053,7 +1076,7 @@ static void read_bulk_callback(struct urb *urb)
1053 result = usb_submit_urb(urb, GFP_ATOMIC); 1076 result = usb_submit_urb(urb, GFP_ATOMIC);
1054 if (result) 1077 if (result)
1055 dev_warn(&odev->parent->interface->dev, 1078 dev_warn(&odev->parent->interface->dev,
1056 "%s failed submit mux_bulk_rx_urb %d", __func__, 1079 "%s failed submit mux_bulk_rx_urb %d\n", __func__,
1057 result); 1080 result);
1058} 1081}
1059 1082
@@ -1207,7 +1230,7 @@ static void hso_std_serial_read_bulk_callback(struct urb *urb)
1207 D1("serial == NULL"); 1230 D1("serial == NULL");
1208 return; 1231 return;
1209 } else if (status) { 1232 } else if (status) {
1210 log_usb_status(status, __func__); 1233 handle_usb_error(status, __func__, serial->parent);
1211 return; 1234 return;
1212 } 1235 }
1213 1236
@@ -1225,7 +1248,7 @@ static void hso_std_serial_read_bulk_callback(struct urb *urb)
1225 u8 crc_check[4] = { 0xDE, 0xAD, 0xBE, 0xEF }; 1248 u8 crc_check[4] = { 0xDE, 0xAD, 0xBE, 0xEF };
1226 rest = 1249 rest =
1227 urb->actual_length % 1250 urb->actual_length %
1228 serial->in_endp->wMaxPacketSize; 1251 le16_to_cpu(serial->in_endp->wMaxPacketSize);
1229 if (((rest == 5) || (rest == 6)) && 1252 if (((rest == 5) || (rest == 6)) &&
1230 !memcmp(((u8 *) urb->transfer_buffer) + 1253 !memcmp(((u8 *) urb->transfer_buffer) +
1231 urb->actual_length - 4, crc_check, 4)) { 1254 urb->actual_length - 4, crc_check, 4)) {
@@ -1513,7 +1536,7 @@ static void tiocmget_intr_callback(struct urb *urb)
1513 if (!serial) 1536 if (!serial)
1514 return; 1537 return;
1515 if (status) { 1538 if (status) {
1516 log_usb_status(status, __func__); 1539 handle_usb_error(status, __func__, serial->parent);
1517 return; 1540 return;
1518 } 1541 }
1519 tiocmget = serial->tiocmget; 1542 tiocmget = serial->tiocmget;
@@ -1700,6 +1723,10 @@ static int hso_serial_tiocmset(struct tty_struct *tty, struct file *file,
1700 D1("no tty structures"); 1723 D1("no tty structures");
1701 return -EINVAL; 1724 return -EINVAL;
1702 } 1725 }
1726
1727 if ((serial->parent->port_spec & HSO_PORT_MASK) != HSO_PORT_MODEM)
1728 return -EINVAL;
1729
1703 if_num = serial->parent->interface->altsetting->desc.bInterfaceNumber; 1730 if_num = serial->parent->interface->altsetting->desc.bInterfaceNumber;
1704 1731
1705 spin_lock_irqsave(&serial->serial_lock, flags); 1732 spin_lock_irqsave(&serial->serial_lock, flags);
@@ -1838,7 +1865,7 @@ static int mux_device_request(struct hso_serial *serial, u8 type, u16 port,
1838 result = usb_submit_urb(ctrl_urb, GFP_ATOMIC); 1865 result = usb_submit_urb(ctrl_urb, GFP_ATOMIC);
1839 if (result) { 1866 if (result) {
1840 dev_err(&ctrl_urb->dev->dev, 1867 dev_err(&ctrl_urb->dev->dev,
1841 "%s failed submit ctrl_urb %d type %d", __func__, 1868 "%s failed submit ctrl_urb %d type %d\n", __func__,
1842 result, type); 1869 result, type);
1843 return result; 1870 return result;
1844 } 1871 }
@@ -1888,7 +1915,7 @@ static void intr_callback(struct urb *urb)
1888 1915
1889 /* status check */ 1916 /* status check */
1890 if (status) { 1917 if (status) {
1891 log_usb_status(status, __func__); 1918 handle_usb_error(status, __func__, NULL);
1892 return; 1919 return;
1893 } 1920 }
1894 D4("\n--- Got intr callback 0x%02X ---", status); 1921 D4("\n--- Got intr callback 0x%02X ---", status);
@@ -1905,18 +1932,18 @@ static void intr_callback(struct urb *urb)
1905 if (serial != NULL) { 1932 if (serial != NULL) {
1906 D1("Pending read interrupt on port %d\n", i); 1933 D1("Pending read interrupt on port %d\n", i);
1907 spin_lock(&serial->serial_lock); 1934 spin_lock(&serial->serial_lock);
1908 if (serial->rx_state == RX_IDLE) { 1935 if (serial->rx_state == RX_IDLE &&
1936 serial->open_count > 0) {
1909 /* Setup and send a ctrl req read on 1937 /* Setup and send a ctrl req read on
1910 * port i */ 1938 * port i */
1911 if (!serial->rx_urb_filled[0]) { 1939 if (!serial->rx_urb_filled[0]) {
1912 serial->rx_state = RX_SENT; 1940 serial->rx_state = RX_SENT;
1913 hso_mux_serial_read(serial); 1941 hso_mux_serial_read(serial);
1914 } else 1942 } else
1915 serial->rx_state = RX_PENDING; 1943 serial->rx_state = RX_PENDING;
1916
1917 } else { 1944 } else {
1918 D1("Already pending a read on " 1945 D1("Already a read pending on "
1919 "port %d\n", i); 1946 "port %d or port not open\n", i);
1920 } 1947 }
1921 spin_unlock(&serial->serial_lock); 1948 spin_unlock(&serial->serial_lock);
1922 } 1949 }
@@ -1958,7 +1985,7 @@ static void hso_std_serial_write_bulk_callback(struct urb *urb)
1958 tty = tty_kref_get(serial->tty); 1985 tty = tty_kref_get(serial->tty);
1959 spin_unlock(&serial->serial_lock); 1986 spin_unlock(&serial->serial_lock);
1960 if (status) { 1987 if (status) {
1961 log_usb_status(status, __func__); 1988 handle_usb_error(status, __func__, serial->parent);
1962 tty_kref_put(tty); 1989 tty_kref_put(tty);
1963 return; 1990 return;
1964 } 1991 }
@@ -2014,7 +2041,7 @@ static void ctrl_callback(struct urb *urb)
2014 tty = tty_kref_get(serial->tty); 2041 tty = tty_kref_get(serial->tty);
2015 spin_unlock(&serial->serial_lock); 2042 spin_unlock(&serial->serial_lock);
2016 if (status) { 2043 if (status) {
2017 log_usb_status(status, __func__); 2044 handle_usb_error(status, __func__, serial->parent);
2018 tty_kref_put(tty); 2045 tty_kref_put(tty);
2019 return; 2046 return;
2020 } 2047 }
@@ -2358,12 +2385,12 @@ static int hso_serial_common_create(struct hso_serial *serial, int num_urbs,
2358 serial->tx_data_length = tx_size; 2385 serial->tx_data_length = tx_size;
2359 serial->tx_data = kzalloc(serial->tx_data_length, GFP_KERNEL); 2386 serial->tx_data = kzalloc(serial->tx_data_length, GFP_KERNEL);
2360 if (!serial->tx_data) { 2387 if (!serial->tx_data) {
2361 dev_err(dev, "%s - Out of memory", __func__); 2388 dev_err(dev, "%s - Out of memory\n", __func__);
2362 goto exit; 2389 goto exit;
2363 } 2390 }
2364 serial->tx_buffer = kzalloc(serial->tx_data_length, GFP_KERNEL); 2391 serial->tx_buffer = kzalloc(serial->tx_data_length, GFP_KERNEL);
2365 if (!serial->tx_buffer) { 2392 if (!serial->tx_buffer) {
2366 dev_err(dev, "%s - Out of memory", __func__); 2393 dev_err(dev, "%s - Out of memory\n", __func__);
2367 goto exit; 2394 goto exit;
2368 } 2395 }
2369 2396
@@ -2391,6 +2418,7 @@ static struct hso_device *hso_create_device(struct usb_interface *intf,
2391 2418
2392 INIT_WORK(&hso_dev->async_get_intf, async_get_intf); 2419 INIT_WORK(&hso_dev->async_get_intf, async_get_intf);
2393 INIT_WORK(&hso_dev->async_put_intf, async_put_intf); 2420 INIT_WORK(&hso_dev->async_put_intf, async_put_intf);
2421 INIT_WORK(&hso_dev->reset_device, reset_device);
2394 2422
2395 return hso_dev; 2423 return hso_dev;
2396} 2424}
@@ -2831,13 +2859,14 @@ struct hso_shared_int *hso_create_shared_int(struct usb_interface *interface)
2831 2859
2832 mux->shared_intr_urb = usb_alloc_urb(0, GFP_KERNEL); 2860 mux->shared_intr_urb = usb_alloc_urb(0, GFP_KERNEL);
2833 if (!mux->shared_intr_urb) { 2861 if (!mux->shared_intr_urb) {
2834 dev_err(&interface->dev, "Could not allocate intr urb?"); 2862 dev_err(&interface->dev, "Could not allocate intr urb?\n");
2835 goto exit; 2863 goto exit;
2836 } 2864 }
2837 mux->shared_intr_buf = kzalloc(mux->intr_endp->wMaxPacketSize, 2865 mux->shared_intr_buf =
2838 GFP_KERNEL); 2866 kzalloc(le16_to_cpu(mux->intr_endp->wMaxPacketSize),
2867 GFP_KERNEL);
2839 if (!mux->shared_intr_buf) { 2868 if (!mux->shared_intr_buf) {
2840 dev_err(&interface->dev, "Could not allocate intr buf?"); 2869 dev_err(&interface->dev, "Could not allocate intr buf?\n");
2841 goto exit; 2870 goto exit;
2842 } 2871 }
2843 2872
@@ -3132,6 +3161,26 @@ out:
3132 return result; 3161 return result;
3133} 3162}
3134 3163
3164static void reset_device(struct work_struct *data)
3165{
3166 struct hso_device *hso_dev =
3167 container_of(data, struct hso_device, reset_device);
3168 struct usb_device *usb = hso_dev->usb;
3169 int result;
3170
3171 if (hso_dev->usb_gone) {
3172 D1("No reset during disconnect\n");
3173 } else {
3174 result = usb_lock_device_for_reset(usb, hso_dev->interface);
3175 if (result < 0)
3176 D1("unable to lock device for reset: %d\n", result);
3177 else {
3178 usb_reset_device(usb);
3179 usb_unlock_device(usb);
3180 }
3181 }
3182}
3183
3135static void hso_serial_ref_free(struct kref *ref) 3184static void hso_serial_ref_free(struct kref *ref)
3136{ 3185{
3137 struct hso_device *hso_dev = container_of(ref, struct hso_device, ref); 3186 struct hso_device *hso_dev = container_of(ref, struct hso_device, ref);
@@ -3232,13 +3281,13 @@ static int hso_mux_submit_intr_urb(struct hso_shared_int *shared_int,
3232 usb_rcvintpipe(usb, 3281 usb_rcvintpipe(usb,
3233 shared_int->intr_endp->bEndpointAddress & 0x7F), 3282 shared_int->intr_endp->bEndpointAddress & 0x7F),
3234 shared_int->shared_intr_buf, 3283 shared_int->shared_intr_buf,
3235 shared_int->intr_endp->wMaxPacketSize, 3284 1,
3236 intr_callback, shared_int, 3285 intr_callback, shared_int,
3237 shared_int->intr_endp->bInterval); 3286 shared_int->intr_endp->bInterval);
3238 3287
3239 result = usb_submit_urb(shared_int->shared_intr_urb, gfp); 3288 result = usb_submit_urb(shared_int->shared_intr_urb, gfp);
3240 if (result) 3289 if (result)
3241 dev_warn(&usb->dev, "%s failed mux_intr_urb %d", __func__, 3290 dev_warn(&usb->dev, "%s failed mux_intr_urb %d\n", __func__,
3242 result); 3291 result);
3243 3292
3244 return result; 3293 return result;
diff --git a/drivers/net/usb/rtl8150.c b/drivers/net/usb/rtl8150.c
index f14d225404da..fd19db0d2504 100644
--- a/drivers/net/usb/rtl8150.c
+++ b/drivers/net/usb/rtl8150.c
@@ -270,7 +270,7 @@ static int read_mii_word(rtl8150_t * dev, u8 phy, __u8 indx, u16 * reg)
270 get_registers(dev, PHYCNT, 1, data); 270 get_registers(dev, PHYCNT, 1, data);
271 } while ((data[0] & PHY_GO) && (i++ < MII_TIMEOUT)); 271 } while ((data[0] & PHY_GO) && (i++ < MII_TIMEOUT));
272 272
273 if (i < MII_TIMEOUT) { 273 if (i <= MII_TIMEOUT) {
274 get_registers(dev, PHYDAT, 2, data); 274 get_registers(dev, PHYDAT, 2, data);
275 *reg = data[0] | (data[1] << 8); 275 *reg = data[0] | (data[1] << 8);
276 return 0; 276 return 0;
@@ -295,7 +295,7 @@ static int write_mii_word(rtl8150_t * dev, u8 phy, __u8 indx, u16 reg)
295 get_registers(dev, PHYCNT, 1, data); 295 get_registers(dev, PHYCNT, 1, data);
296 } while ((data[0] & PHY_GO) && (i++ < MII_TIMEOUT)); 296 } while ((data[0] & PHY_GO) && (i++ < MII_TIMEOUT));
297 297
298 if (i < MII_TIMEOUT) 298 if (i <= MII_TIMEOUT)
299 return 0; 299 return 0;
300 else 300 else
301 return 1; 301 return 1;
diff --git a/drivers/net/via-rhine.c b/drivers/net/via-rhine.c
index 593e01f64e9b..611b80435955 100644
--- a/drivers/net/via-rhine.c
+++ b/drivers/net/via-rhine.c
@@ -102,6 +102,7 @@ static const int multicast_filter_limit = 32;
102#include <linux/ethtool.h> 102#include <linux/ethtool.h>
103#include <linux/crc32.h> 103#include <linux/crc32.h>
104#include <linux/bitops.h> 104#include <linux/bitops.h>
105#include <linux/workqueue.h>
105#include <asm/processor.h> /* Processor type for cache alignment. */ 106#include <asm/processor.h> /* Processor type for cache alignment. */
106#include <asm/io.h> 107#include <asm/io.h>
107#include <asm/irq.h> 108#include <asm/irq.h>
@@ -389,6 +390,7 @@ struct rhine_private {
389 struct net_device *dev; 390 struct net_device *dev;
390 struct napi_struct napi; 391 struct napi_struct napi;
391 spinlock_t lock; 392 spinlock_t lock;
393 struct work_struct reset_task;
392 394
393 /* Frequently used values: keep some adjacent for cache effect. */ 395 /* Frequently used values: keep some adjacent for cache effect. */
394 u32 quirks; 396 u32 quirks;
@@ -407,6 +409,7 @@ struct rhine_private {
407static int mdio_read(struct net_device *dev, int phy_id, int location); 409static int mdio_read(struct net_device *dev, int phy_id, int location);
408static void mdio_write(struct net_device *dev, int phy_id, int location, int value); 410static void mdio_write(struct net_device *dev, int phy_id, int location, int value);
409static int rhine_open(struct net_device *dev); 411static int rhine_open(struct net_device *dev);
412static void rhine_reset_task(struct work_struct *work);
410static void rhine_tx_timeout(struct net_device *dev); 413static void rhine_tx_timeout(struct net_device *dev);
411static netdev_tx_t rhine_start_tx(struct sk_buff *skb, 414static netdev_tx_t rhine_start_tx(struct sk_buff *skb,
412 struct net_device *dev); 415 struct net_device *dev);
@@ -775,6 +778,8 @@ static int __devinit rhine_init_one(struct pci_dev *pdev,
775 dev->irq = pdev->irq; 778 dev->irq = pdev->irq;
776 779
777 spin_lock_init(&rp->lock); 780 spin_lock_init(&rp->lock);
781 INIT_WORK(&rp->reset_task, rhine_reset_task);
782
778 rp->mii_if.dev = dev; 783 rp->mii_if.dev = dev;
779 rp->mii_if.mdio_read = mdio_read; 784 rp->mii_if.mdio_read = mdio_read;
780 rp->mii_if.mdio_write = mdio_write; 785 rp->mii_if.mdio_write = mdio_write;
@@ -1179,22 +1184,18 @@ static int rhine_open(struct net_device *dev)
1179 return 0; 1184 return 0;
1180} 1185}
1181 1186
1182static void rhine_tx_timeout(struct net_device *dev) 1187static void rhine_reset_task(struct work_struct *work)
1183{ 1188{
1184 struct rhine_private *rp = netdev_priv(dev); 1189 struct rhine_private *rp = container_of(work, struct rhine_private,
1185 void __iomem *ioaddr = rp->base; 1190 reset_task);
1186 1191 struct net_device *dev = rp->dev;
1187 printk(KERN_WARNING "%s: Transmit timed out, status %4.4x, PHY status "
1188 "%4.4x, resetting...\n",
1189 dev->name, ioread16(ioaddr + IntrStatus),
1190 mdio_read(dev, rp->mii_if.phy_id, MII_BMSR));
1191 1192
1192 /* protect against concurrent rx interrupts */ 1193 /* protect against concurrent rx interrupts */
1193 disable_irq(rp->pdev->irq); 1194 disable_irq(rp->pdev->irq);
1194 1195
1195 napi_disable(&rp->napi); 1196 napi_disable(&rp->napi);
1196 1197
1197 spin_lock(&rp->lock); 1198 spin_lock_bh(&rp->lock);
1198 1199
1199 /* clear all descriptors */ 1200 /* clear all descriptors */
1200 free_tbufs(dev); 1201 free_tbufs(dev);
@@ -1206,7 +1207,7 @@ static void rhine_tx_timeout(struct net_device *dev)
1206 rhine_chip_reset(dev); 1207 rhine_chip_reset(dev);
1207 init_registers(dev); 1208 init_registers(dev);
1208 1209
1209 spin_unlock(&rp->lock); 1210 spin_unlock_bh(&rp->lock);
1210 enable_irq(rp->pdev->irq); 1211 enable_irq(rp->pdev->irq);
1211 1212
1212 dev->trans_start = jiffies; 1213 dev->trans_start = jiffies;
@@ -1214,6 +1215,19 @@ static void rhine_tx_timeout(struct net_device *dev)
1214 netif_wake_queue(dev); 1215 netif_wake_queue(dev);
1215} 1216}
1216 1217
1218static void rhine_tx_timeout(struct net_device *dev)
1219{
1220 struct rhine_private *rp = netdev_priv(dev);
1221 void __iomem *ioaddr = rp->base;
1222
1223 printk(KERN_WARNING "%s: Transmit timed out, status %4.4x, PHY status "
1224 "%4.4x, resetting...\n",
1225 dev->name, ioread16(ioaddr + IntrStatus),
1226 mdio_read(dev, rp->mii_if.phy_id, MII_BMSR));
1227
1228 schedule_work(&rp->reset_task);
1229}
1230
1217static netdev_tx_t rhine_start_tx(struct sk_buff *skb, 1231static netdev_tx_t rhine_start_tx(struct sk_buff *skb,
1218 struct net_device *dev) 1232 struct net_device *dev)
1219{ 1233{
@@ -1830,10 +1844,11 @@ static int rhine_close(struct net_device *dev)
1830 struct rhine_private *rp = netdev_priv(dev); 1844 struct rhine_private *rp = netdev_priv(dev);
1831 void __iomem *ioaddr = rp->base; 1845 void __iomem *ioaddr = rp->base;
1832 1846
1833 spin_lock_irq(&rp->lock);
1834
1835 netif_stop_queue(dev);
1836 napi_disable(&rp->napi); 1847 napi_disable(&rp->napi);
1848 cancel_work_sync(&rp->reset_task);
1849 netif_stop_queue(dev);
1850
1851 spin_lock_irq(&rp->lock);
1837 1852
1838 if (debug > 1) 1853 if (debug > 1)
1839 printk(KERN_DEBUG "%s: Shutting down ethercard, " 1854 printk(KERN_DEBUG "%s: Shutting down ethercard, "
diff --git a/drivers/net/via-velocity.c b/drivers/net/via-velocity.c
index 4ceb441f2687..317aa34b21cf 100644
--- a/drivers/net/via-velocity.c
+++ b/drivers/net/via-velocity.c
@@ -1877,13 +1877,12 @@ static void velocity_error(struct velocity_info *vptr, int status)
1877/** 1877/**
1878 * tx_srv - transmit interrupt service 1878 * tx_srv - transmit interrupt service
1879 * @vptr; Velocity 1879 * @vptr; Velocity
1880 * @status:
1881 * 1880 *
1882 * Scan the queues looking for transmitted packets that 1881 * Scan the queues looking for transmitted packets that
1883 * we can complete and clean up. Update any statistics as 1882 * we can complete and clean up. Update any statistics as
1884 * necessary/ 1883 * necessary/
1885 */ 1884 */
1886static int velocity_tx_srv(struct velocity_info *vptr, u32 status) 1885static int velocity_tx_srv(struct velocity_info *vptr)
1887{ 1886{
1888 struct tx_desc *td; 1887 struct tx_desc *td;
1889 int qnum; 1888 int qnum;
@@ -2090,14 +2089,12 @@ static int velocity_receive_frame(struct velocity_info *vptr, int idx)
2090/** 2089/**
2091 * velocity_rx_srv - service RX interrupt 2090 * velocity_rx_srv - service RX interrupt
2092 * @vptr: velocity 2091 * @vptr: velocity
2093 * @status: adapter status (unused)
2094 * 2092 *
2095 * Walk the receive ring of the velocity adapter and remove 2093 * Walk the receive ring of the velocity adapter and remove
2096 * any received packets from the receive queue. Hand the ring 2094 * any received packets from the receive queue. Hand the ring
2097 * slots back to the adapter for reuse. 2095 * slots back to the adapter for reuse.
2098 */ 2096 */
2099static int velocity_rx_srv(struct velocity_info *vptr, int status, 2097static int velocity_rx_srv(struct velocity_info *vptr, int budget_left)
2100 int budget_left)
2101{ 2098{
2102 struct net_device_stats *stats = &vptr->dev->stats; 2099 struct net_device_stats *stats = &vptr->dev->stats;
2103 int rd_curr = vptr->rx.curr; 2100 int rd_curr = vptr->rx.curr;
@@ -2151,32 +2148,24 @@ static int velocity_poll(struct napi_struct *napi, int budget)
2151 struct velocity_info *vptr = container_of(napi, 2148 struct velocity_info *vptr = container_of(napi,
2152 struct velocity_info, napi); 2149 struct velocity_info, napi);
2153 unsigned int rx_done; 2150 unsigned int rx_done;
2154 u32 isr_status; 2151 unsigned long flags;
2155
2156 spin_lock(&vptr->lock);
2157 isr_status = mac_read_isr(vptr->mac_regs);
2158
2159 /* Ack the interrupt */
2160 mac_write_isr(vptr->mac_regs, isr_status);
2161 if (isr_status & (~(ISR_PRXI | ISR_PPRXI | ISR_PTXI | ISR_PPTXI)))
2162 velocity_error(vptr, isr_status);
2163 2152
2153 spin_lock_irqsave(&vptr->lock, flags);
2164 /* 2154 /*
2165 * Do rx and tx twice for performance (taken from the VIA 2155 * Do rx and tx twice for performance (taken from the VIA
2166 * out-of-tree driver). 2156 * out-of-tree driver).
2167 */ 2157 */
2168 rx_done = velocity_rx_srv(vptr, isr_status, budget / 2); 2158 rx_done = velocity_rx_srv(vptr, budget / 2);
2169 velocity_tx_srv(vptr, isr_status); 2159 velocity_tx_srv(vptr);
2170 rx_done += velocity_rx_srv(vptr, isr_status, budget - rx_done); 2160 rx_done += velocity_rx_srv(vptr, budget - rx_done);
2171 velocity_tx_srv(vptr, isr_status); 2161 velocity_tx_srv(vptr);
2172
2173 spin_unlock(&vptr->lock);
2174 2162
2175 /* If budget not fully consumed, exit the polling mode */ 2163 /* If budget not fully consumed, exit the polling mode */
2176 if (rx_done < budget) { 2164 if (rx_done < budget) {
2177 napi_complete(napi); 2165 napi_complete(napi);
2178 mac_enable_int(vptr->mac_regs); 2166 mac_enable_int(vptr->mac_regs);
2179 } 2167 }
2168 spin_unlock_irqrestore(&vptr->lock, flags);
2180 2169
2181 return rx_done; 2170 return rx_done;
2182} 2171}
@@ -2206,10 +2195,17 @@ static irqreturn_t velocity_intr(int irq, void *dev_instance)
2206 return IRQ_NONE; 2195 return IRQ_NONE;
2207 } 2196 }
2208 2197
2198 /* Ack the interrupt */
2199 mac_write_isr(vptr->mac_regs, isr_status);
2200
2209 if (likely(napi_schedule_prep(&vptr->napi))) { 2201 if (likely(napi_schedule_prep(&vptr->napi))) {
2210 mac_disable_int(vptr->mac_regs); 2202 mac_disable_int(vptr->mac_regs);
2211 __napi_schedule(&vptr->napi); 2203 __napi_schedule(&vptr->napi);
2212 } 2204 }
2205
2206 if (isr_status & (~(ISR_PRXI | ISR_PPRXI | ISR_PTXI | ISR_PPTXI)))
2207 velocity_error(vptr, isr_status);
2208
2213 spin_unlock(&vptr->lock); 2209 spin_unlock(&vptr->lock);
2214 2210
2215 return IRQ_HANDLED; 2211 return IRQ_HANDLED;
@@ -2237,8 +2233,6 @@ static int velocity_open(struct net_device *dev)
2237 /* Ensure chip is running */ 2233 /* Ensure chip is running */
2238 pci_set_power_state(vptr->pdev, PCI_D0); 2234 pci_set_power_state(vptr->pdev, PCI_D0);
2239 2235
2240 velocity_give_many_rx_descs(vptr);
2241
2242 velocity_init_registers(vptr, VELOCITY_INIT_COLD); 2236 velocity_init_registers(vptr, VELOCITY_INIT_COLD);
2243 2237
2244 ret = request_irq(vptr->pdev->irq, velocity_intr, IRQF_SHARED, 2238 ret = request_irq(vptr->pdev->irq, velocity_intr, IRQF_SHARED,
@@ -2250,6 +2244,8 @@ static int velocity_open(struct net_device *dev)
2250 goto out; 2244 goto out;
2251 } 2245 }
2252 2246
2247 velocity_give_many_rx_descs(vptr);
2248
2253 mac_enable_int(vptr->mac_regs); 2249 mac_enable_int(vptr->mac_regs);
2254 netif_start_queue(dev); 2250 netif_start_queue(dev);
2255 napi_enable(&vptr->napi); 2251 napi_enable(&vptr->napi);
@@ -2339,10 +2335,10 @@ static int velocity_change_mtu(struct net_device *dev, int new_mtu)
2339 2335
2340 dev->mtu = new_mtu; 2336 dev->mtu = new_mtu;
2341 2337
2342 velocity_give_many_rx_descs(vptr);
2343
2344 velocity_init_registers(vptr, VELOCITY_INIT_COLD); 2338 velocity_init_registers(vptr, VELOCITY_INIT_COLD);
2345 2339
2340 velocity_give_many_rx_descs(vptr);
2341
2346 mac_enable_int(vptr->mac_regs); 2342 mac_enable_int(vptr->mac_regs);
2347 netif_start_queue(dev); 2343 netif_start_queue(dev);
2348 2344
@@ -3100,7 +3096,7 @@ static int velocity_resume(struct pci_dev *pdev)
3100 velocity_init_registers(vptr, VELOCITY_INIT_WOL); 3096 velocity_init_registers(vptr, VELOCITY_INIT_WOL);
3101 mac_disable_int(vptr->mac_regs); 3097 mac_disable_int(vptr->mac_regs);
3102 3098
3103 velocity_tx_srv(vptr, 0); 3099 velocity_tx_srv(vptr);
3104 3100
3105 for (i = 0; i < vptr->tx.numq; i++) { 3101 for (i = 0; i < vptr->tx.numq; i++) {
3106 if (vptr->tx.used[i]) 3102 if (vptr->tx.used[i])
@@ -3344,6 +3340,7 @@ static int velocity_set_coalesce(struct net_device *dev,
3344{ 3340{
3345 struct velocity_info *vptr = netdev_priv(dev); 3341 struct velocity_info *vptr = netdev_priv(dev);
3346 int max_us = 0x3f * 64; 3342 int max_us = 0x3f * 64;
3343 unsigned long flags;
3347 3344
3348 /* 6 bits of */ 3345 /* 6 bits of */
3349 if (ecmd->tx_coalesce_usecs > max_us) 3346 if (ecmd->tx_coalesce_usecs > max_us)
@@ -3365,6 +3362,7 @@ static int velocity_set_coalesce(struct net_device *dev,
3365 ecmd->tx_coalesce_usecs); 3362 ecmd->tx_coalesce_usecs);
3366 3363
3367 /* Setup the interrupt suppression and queue timers */ 3364 /* Setup the interrupt suppression and queue timers */
3365 spin_lock_irqsave(&vptr->lock, flags);
3368 mac_disable_int(vptr->mac_regs); 3366 mac_disable_int(vptr->mac_regs);
3369 setup_adaptive_interrupts(vptr); 3367 setup_adaptive_interrupts(vptr);
3370 setup_queue_timers(vptr); 3368 setup_queue_timers(vptr);
@@ -3372,6 +3370,7 @@ static int velocity_set_coalesce(struct net_device *dev,
3372 mac_write_int_mask(vptr->int_mask, vptr->mac_regs); 3370 mac_write_int_mask(vptr->int_mask, vptr->mac_regs);
3373 mac_clear_isr(vptr->mac_regs); 3371 mac_clear_isr(vptr->mac_regs);
3374 mac_enable_int(vptr->mac_regs); 3372 mac_enable_int(vptr->mac_regs);
3373 spin_unlock_irqrestore(&vptr->lock, flags);
3375 3374
3376 return 0; 3375 return 0;
3377} 3376}
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index c708ecc3cb2e..9ead30bd00c4 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -395,8 +395,7 @@ static void refill_work(struct work_struct *work)
395 395
396 vi = container_of(work, struct virtnet_info, refill.work); 396 vi = container_of(work, struct virtnet_info, refill.work);
397 napi_disable(&vi->napi); 397 napi_disable(&vi->napi);
398 try_fill_recv(vi, GFP_KERNEL); 398 still_empty = !try_fill_recv(vi, GFP_KERNEL);
399 still_empty = (vi->num == 0);
400 napi_enable(&vi->napi); 399 napi_enable(&vi->napi);
401 400
402 /* In theory, this can happen: if we don't get any buffers in 401 /* In theory, this can happen: if we don't get any buffers in
diff --git a/drivers/net/vxge/vxge-main.c b/drivers/net/vxge/vxge-main.c
index f1c4b2a1e867..b9685e82f7b6 100644
--- a/drivers/net/vxge/vxge-main.c
+++ b/drivers/net/vxge/vxge-main.c
@@ -310,7 +310,7 @@ static int vxge_rx_map(void *dtrh, struct vxge_ring *ring)
310 dma_addr = pci_map_single(ring->pdev, rx_priv->skb_data, 310 dma_addr = pci_map_single(ring->pdev, rx_priv->skb_data,
311 rx_priv->data_size, PCI_DMA_FROMDEVICE); 311 rx_priv->data_size, PCI_DMA_FROMDEVICE);
312 312
313 if (dma_addr == 0) { 313 if (unlikely(pci_dma_mapping_error(ring->pdev, dma_addr))) {
314 ring->stats.pci_map_fail++; 314 ring->stats.pci_map_fail++;
315 return -EIO; 315 return -EIO;
316 } 316 }
@@ -4087,21 +4087,21 @@ vxge_probe(struct pci_dev *pdev, const struct pci_device_id *pre)
4087 goto _exit0; 4087 goto _exit0;
4088 } 4088 }
4089 4089
4090 if (!pci_set_dma_mask(pdev, 0xffffffffffffffffULL)) { 4090 if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) {
4091 vxge_debug_ll_config(VXGE_TRACE, 4091 vxge_debug_ll_config(VXGE_TRACE,
4092 "%s : using 64bit DMA", __func__); 4092 "%s : using 64bit DMA", __func__);
4093 4093
4094 high_dma = 1; 4094 high_dma = 1;
4095 4095
4096 if (pci_set_consistent_dma_mask(pdev, 4096 if (pci_set_consistent_dma_mask(pdev,
4097 0xffffffffffffffffULL)) { 4097 DMA_BIT_MASK(64))) {
4098 vxge_debug_init(VXGE_ERR, 4098 vxge_debug_init(VXGE_ERR,
4099 "%s : unable to obtain 64bit DMA for " 4099 "%s : unable to obtain 64bit DMA for "
4100 "consistent allocations", __func__); 4100 "consistent allocations", __func__);
4101 ret = -ENOMEM; 4101 ret = -ENOMEM;
4102 goto _exit1; 4102 goto _exit1;
4103 } 4103 }
4104 } else if (!pci_set_dma_mask(pdev, 0xffffffffUL)) { 4104 } else if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) {
4105 vxge_debug_ll_config(VXGE_TRACE, 4105 vxge_debug_ll_config(VXGE_TRACE,
4106 "%s : using 32bit DMA", __func__); 4106 "%s : using 32bit DMA", __func__);
4107 } else { 4107 } else {
diff --git a/drivers/net/wimax/i2400m/i2400m-usb.h b/drivers/net/wimax/i2400m/i2400m-usb.h
index 5cc0f279417e..2d7c96d7e865 100644
--- a/drivers/net/wimax/i2400m/i2400m-usb.h
+++ b/drivers/net/wimax/i2400m/i2400m-usb.h
@@ -151,6 +151,7 @@ enum {
151 151
152 /* Device IDs */ 152 /* Device IDs */
153 USB_DEVICE_ID_I6050 = 0x0186, 153 USB_DEVICE_ID_I6050 = 0x0186,
154 USB_DEVICE_ID_I6050_2 = 0x0188,
154}; 155};
155 156
156 157
@@ -234,6 +235,7 @@ struct i2400mu {
234 u8 rx_size_auto_shrink; 235 u8 rx_size_auto_shrink;
235 236
236 struct dentry *debugfs_dentry; 237 struct dentry *debugfs_dentry;
238 unsigned i6050:1; /* 1 if this is a 6050 based SKU */
237}; 239};
238 240
239 241
diff --git a/drivers/net/wimax/i2400m/usb.c b/drivers/net/wimax/i2400m/usb.c
index 3b48681f8a0d..98f4f8c5fb68 100644
--- a/drivers/net/wimax/i2400m/usb.c
+++ b/drivers/net/wimax/i2400m/usb.c
@@ -478,7 +478,16 @@ int i2400mu_probe(struct usb_interface *iface,
478 i2400m->bus_bm_wait_for_ack = i2400mu_bus_bm_wait_for_ack; 478 i2400m->bus_bm_wait_for_ack = i2400mu_bus_bm_wait_for_ack;
479 i2400m->bus_bm_mac_addr_impaired = 0; 479 i2400m->bus_bm_mac_addr_impaired = 0;
480 480
481 if (id->idProduct == USB_DEVICE_ID_I6050) { 481 switch (id->idProduct) {
482 case USB_DEVICE_ID_I6050:
483 case USB_DEVICE_ID_I6050_2:
484 i2400mu->i6050 = 1;
485 break;
486 default:
487 break;
488 }
489
490 if (i2400mu->i6050) {
482 i2400m->bus_fw_names = i2400mu_bus_fw_names_6050; 491 i2400m->bus_fw_names = i2400mu_bus_fw_names_6050;
483 i2400mu->endpoint_cfg.bulk_out = 0; 492 i2400mu->endpoint_cfg.bulk_out = 0;
484 i2400mu->endpoint_cfg.notification = 3; 493 i2400mu->endpoint_cfg.notification = 3;
@@ -719,6 +728,7 @@ int i2400mu_post_reset(struct usb_interface *iface)
719static 728static
720struct usb_device_id i2400mu_id_table[] = { 729struct usb_device_id i2400mu_id_table[] = {
721 { USB_DEVICE(0x8086, USB_DEVICE_ID_I6050) }, 730 { USB_DEVICE(0x8086, USB_DEVICE_ID_I6050) },
731 { USB_DEVICE(0x8086, USB_DEVICE_ID_I6050_2) },
722 { USB_DEVICE(0x8086, 0x0181) }, 732 { USB_DEVICE(0x8086, 0x0181) },
723 { USB_DEVICE(0x8086, 0x1403) }, 733 { USB_DEVICE(0x8086, 0x1403) },
724 { USB_DEVICE(0x8086, 0x1405) }, 734 { USB_DEVICE(0x8086, 0x1405) },
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
index a4c086f069b1..e63b7c40d0ee 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -1903,17 +1903,6 @@ accept:
1903 rxs->noise = sc->ah->ah_noise_floor; 1903 rxs->noise = sc->ah->ah_noise_floor;
1904 rxs->signal = rxs->noise + rs.rs_rssi; 1904 rxs->signal = rxs->noise + rs.rs_rssi;
1905 1905
1906 /* An rssi of 35 indicates you should be able use
1907 * 54 Mbps reliably. A more elaborate scheme can be used
1908 * here but it requires a map of SNR/throughput for each
1909 * possible mode used */
1910 rxs->qual = rs.rs_rssi * 100 / 35;
1911
1912 /* rssi can be more than 35 though, anything above that
1913 * should be considered at 100% */
1914 if (rxs->qual > 100)
1915 rxs->qual = 100;
1916
1917 rxs->antenna = rs.rs_antenna; 1906 rxs->antenna = rs.rs_antenna;
1918 rxs->rate_idx = ath5k_hw_to_driver_rix(sc, rs.rs_rate); 1907 rxs->rate_idx = ath5k_hw_to_driver_rix(sc, rs.rs_rate);
1919 rxs->flag |= ath5k_rx_decrypted(sc, ds, skb, &rs); 1908 rxs->flag |= ath5k_rx_decrypted(sc, ds, skb, &rs);
@@ -2381,6 +2370,9 @@ ath5k_init(struct ath5k_softc *sc)
2381 */ 2370 */
2382 ath5k_stop_locked(sc); 2371 ath5k_stop_locked(sc);
2383 2372
2373 /* Set PHY calibration interval */
2374 ah->ah_cal_intval = ath5k_calinterval;
2375
2384 /* 2376 /*
2385 * The basic interface to setting the hardware in a good 2377 * The basic interface to setting the hardware in a good
2386 * state is ``reset''. On return the hardware is known to 2378 * state is ``reset''. On return the hardware is known to
@@ -2408,10 +2400,6 @@ ath5k_init(struct ath5k_softc *sc)
2408 2400
2409 /* Set ack to be sent at low bit-rates */ 2401 /* Set ack to be sent at low bit-rates */
2410 ath5k_hw_set_ack_bitrate_high(ah, false); 2402 ath5k_hw_set_ack_bitrate_high(ah, false);
2411
2412 /* Set PHY calibration inteval */
2413 ah->ah_cal_intval = ath5k_calinterval;
2414
2415 ret = 0; 2403 ret = 0;
2416done: 2404done:
2417 mmiowb(); 2405 mmiowb();
diff --git a/drivers/net/wireless/ath/ath5k/eeprom.c b/drivers/net/wireless/ath/ath5k/eeprom.c
index 5d1c8677f180..6a3f4da7fb48 100644
--- a/drivers/net/wireless/ath/ath5k/eeprom.c
+++ b/drivers/net/wireless/ath/ath5k/eeprom.c
@@ -97,7 +97,7 @@ ath5k_eeprom_init_header(struct ath5k_hw *ah)
97 struct ath5k_eeprom_info *ee = &ah->ah_capabilities.cap_eeprom; 97 struct ath5k_eeprom_info *ee = &ah->ah_capabilities.cap_eeprom;
98 int ret; 98 int ret;
99 u16 val; 99 u16 val;
100 u32 cksum, offset; 100 u32 cksum, offset, eep_max = AR5K_EEPROM_INFO_MAX;
101 101
102 /* 102 /*
103 * Read values from EEPROM and store them in the capability structure 103 * Read values from EEPROM and store them in the capability structure
@@ -116,12 +116,38 @@ ath5k_eeprom_init_header(struct ath5k_hw *ah)
116 * Validate the checksum of the EEPROM date. There are some 116 * Validate the checksum of the EEPROM date. There are some
117 * devices with invalid EEPROMs. 117 * devices with invalid EEPROMs.
118 */ 118 */
119 for (cksum = 0, offset = 0; offset < AR5K_EEPROM_INFO_MAX; offset++) { 119 AR5K_EEPROM_READ(AR5K_EEPROM_SIZE_UPPER, val);
120 if (val) {
121 eep_max = (val & AR5K_EEPROM_SIZE_UPPER_MASK) <<
122 AR5K_EEPROM_SIZE_ENDLOC_SHIFT;
123 AR5K_EEPROM_READ(AR5K_EEPROM_SIZE_LOWER, val);
124 eep_max = (eep_max | val) - AR5K_EEPROM_INFO_BASE;
125
126 /*
127 * Fail safe check to prevent stupid loops due
128 * to busted EEPROMs. XXX: This value is likely too
129 * big still, waiting on a better value.
130 */
131 if (eep_max > (3 * AR5K_EEPROM_INFO_MAX)) {
132 ATH5K_ERR(ah->ah_sc, "Invalid max custom EEPROM size: "
133 "%d (0x%04x) max expected: %d (0x%04x)\n",
134 eep_max, eep_max,
135 3 * AR5K_EEPROM_INFO_MAX,
136 3 * AR5K_EEPROM_INFO_MAX);
137 return -EIO;
138 }
139 }
140
141 for (cksum = 0, offset = 0; offset < eep_max; offset++) {
120 AR5K_EEPROM_READ(AR5K_EEPROM_INFO(offset), val); 142 AR5K_EEPROM_READ(AR5K_EEPROM_INFO(offset), val);
121 cksum ^= val; 143 cksum ^= val;
122 } 144 }
123 if (cksum != AR5K_EEPROM_INFO_CKSUM) { 145 if (cksum != AR5K_EEPROM_INFO_CKSUM) {
124 ATH5K_ERR(ah->ah_sc, "Invalid EEPROM checksum 0x%04x\n", cksum); 146 ATH5K_ERR(ah->ah_sc, "Invalid EEPROM "
147 "checksum: 0x%04x eep_max: 0x%04x (%s)\n",
148 cksum, eep_max,
149 eep_max == AR5K_EEPROM_INFO_MAX ?
150 "default size" : "custom size");
125 return -EIO; 151 return -EIO;
126 } 152 }
127 153
diff --git a/drivers/net/wireless/ath/ath5k/eeprom.h b/drivers/net/wireless/ath/ath5k/eeprom.h
index 0123f3521a0b..473a483bb9c3 100644
--- a/drivers/net/wireless/ath/ath5k/eeprom.h
+++ b/drivers/net/wireless/ath/ath5k/eeprom.h
@@ -37,6 +37,14 @@
37#define AR5K_EEPROM_RFKILL_POLARITY_S 1 37#define AR5K_EEPROM_RFKILL_POLARITY_S 1
38 38
39#define AR5K_EEPROM_REG_DOMAIN 0x00bf /* EEPROM regdom */ 39#define AR5K_EEPROM_REG_DOMAIN 0x00bf /* EEPROM regdom */
40
41/* FLASH(EEPROM) Defines for AR531X chips */
42#define AR5K_EEPROM_SIZE_LOWER 0x1b /* size info -- lower */
43#define AR5K_EEPROM_SIZE_UPPER 0x1c /* size info -- upper */
44#define AR5K_EEPROM_SIZE_UPPER_MASK 0xfff0
45#define AR5K_EEPROM_SIZE_UPPER_SHIFT 4
46#define AR5K_EEPROM_SIZE_ENDLOC_SHIFT 12
47
40#define AR5K_EEPROM_CHECKSUM 0x00c0 /* EEPROM checksum */ 48#define AR5K_EEPROM_CHECKSUM 0x00c0 /* EEPROM checksum */
41#define AR5K_EEPROM_INFO_BASE 0x00c0 /* EEPROM header */ 49#define AR5K_EEPROM_INFO_BASE 0x00c0 /* EEPROM header */
42#define AR5K_EEPROM_INFO_MAX (0x400 - AR5K_EEPROM_INFO_BASE) 50#define AR5K_EEPROM_INFO_MAX (0x400 - AR5K_EEPROM_INFO_BASE)
diff --git a/drivers/net/wireless/ath/ath9k/Kconfig b/drivers/net/wireless/ath/ath9k/Kconfig
index 03a1106ad725..5774cea23a3b 100644
--- a/drivers/net/wireless/ath/ath9k/Kconfig
+++ b/drivers/net/wireless/ath/ath9k/Kconfig
@@ -25,7 +25,7 @@ config ATH9K
25 25
26config ATH9K_DEBUGFS 26config ATH9K_DEBUGFS
27 bool "Atheros ath9k debugging" 27 bool "Atheros ath9k debugging"
28 depends on ATH9K 28 depends on ATH9K && DEBUG_FS
29 ---help--- 29 ---help---
30 Say Y, if you need access to ath9k's statistics for 30 Say Y, if you need access to ath9k's statistics for
31 interrupts, rate control, etc. 31 interrupts, rate control, etc.
diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index e2cef2ff5d8f..1597a42731ed 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -33,11 +33,11 @@ struct ath_node;
33 33
34/* Macro to expand scalars to 64-bit objects */ 34/* Macro to expand scalars to 64-bit objects */
35 35
36#define ito64(x) (sizeof(x) == 8) ? \ 36#define ito64(x) (sizeof(x) == 1) ? \
37 (((unsigned long long int)(x)) & (0xff)) : \ 37 (((unsigned long long int)(x)) & (0xff)) : \
38 (sizeof(x) == 16) ? \ 38 (sizeof(x) == 2) ? \
39 (((unsigned long long int)(x)) & 0xffff) : \ 39 (((unsigned long long int)(x)) & 0xffff) : \
40 ((sizeof(x) == 32) ? \ 40 ((sizeof(x) == 4) ? \
41 (((unsigned long long int)(x)) & 0xffffffff) : \ 41 (((unsigned long long int)(x)) & 0xffffffff) : \
42 (unsigned long long int)(x)) 42 (unsigned long long int)(x))
43 43
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index 2ec61f08cfdb..ae371448b5a0 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -855,12 +855,11 @@ static void ath9k_hw_init_mode_gain_regs(struct ath_hw *ah)
855 } 855 }
856} 856}
857 857
858static void ath9k_hw_init_11a_eeprom_fix(struct ath_hw *ah) 858static void ath9k_hw_init_eeprom_fix(struct ath_hw *ah)
859{ 859{
860 u32 i, j; 860 u32 i, j;
861 861
862 if ((ah->hw_version.devid == AR9280_DEVID_PCI) && 862 if (ah->hw_version.devid == AR9280_DEVID_PCI) {
863 test_bit(ATH9K_MODE_11A, ah->caps.wireless_modes)) {
864 863
865 /* EEPROM Fixup */ 864 /* EEPROM Fixup */
866 for (i = 0; i < ah->iniModes.ia_rows; i++) { 865 for (i = 0; i < ah->iniModes.ia_rows; i++) {
@@ -980,7 +979,7 @@ int ath9k_hw_init(struct ath_hw *ah)
980 if (r) 979 if (r)
981 return r; 980 return r;
982 981
983 ath9k_hw_init_11a_eeprom_fix(ah); 982 ath9k_hw_init_eeprom_fix(ah);
984 983
985 r = ath9k_hw_init_macaddr(ah); 984 r = ath9k_hw_init_macaddr(ah);
986 if (r) { 985 if (r) {
diff --git a/drivers/net/wireless/ath/ath9k/mac.c b/drivers/net/wireless/ath/ath9k/mac.c
index 71b84d91dcff..efc420cd42bf 100644
--- a/drivers/net/wireless/ath/ath9k/mac.c
+++ b/drivers/net/wireless/ath/ath9k/mac.c
@@ -186,7 +186,7 @@ bool ath9k_hw_stoptxdma(struct ath_hw *ah, u32 q)
186 wait = wait_time; 186 wait = wait_time;
187 while (ath9k_hw_numtxpending(ah, q)) { 187 while (ath9k_hw_numtxpending(ah, q)) {
188 if ((--wait) == 0) { 188 if ((--wait) == 0) {
189 ath_print(common, ATH_DBG_QUEUE, 189 ath_print(common, ATH_DBG_FATAL,
190 "Failed to stop TX DMA in 100 " 190 "Failed to stop TX DMA in 100 "
191 "msec after killing last frame\n"); 191 "msec after killing last frame\n");
192 break; 192 break;
diff --git a/drivers/net/wireless/ath/ath9k/mac.h b/drivers/net/wireless/ath/ath9k/mac.h
index 0c87771383f0..e185479e295e 100644
--- a/drivers/net/wireless/ath/ath9k/mac.h
+++ b/drivers/net/wireless/ath/ath9k/mac.h
@@ -77,6 +77,9 @@
77#define ATH9K_TXERR_XTXOP 0x08 77#define ATH9K_TXERR_XTXOP 0x08
78#define ATH9K_TXERR_TIMER_EXPIRED 0x10 78#define ATH9K_TXERR_TIMER_EXPIRED 0x10
79#define ATH9K_TX_ACKED 0x20 79#define ATH9K_TX_ACKED 0x20
80#define ATH9K_TXERR_MASK \
81 (ATH9K_TXERR_XRETRY | ATH9K_TXERR_FILT | ATH9K_TXERR_FIFO | \
82 ATH9K_TXERR_XTXOP | ATH9K_TXERR_TIMER_EXPIRED)
80 83
81#define ATH9K_TX_BA 0x01 84#define ATH9K_TX_BA 0x01
82#define ATH9K_TX_PWRMGMT 0x02 85#define ATH9K_TX_PWRMGMT 0x02
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index c48743452515..643bea35686f 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1973,6 +1973,9 @@ int ath_reset(struct ath_softc *sc, bool retry_tx)
1973 struct ieee80211_hw *hw = sc->hw; 1973 struct ieee80211_hw *hw = sc->hw;
1974 int r; 1974 int r;
1975 1975
1976 /* Stop ANI */
1977 del_timer_sync(&common->ani.timer);
1978
1976 ath9k_hw_set_interrupts(ah, 0); 1979 ath9k_hw_set_interrupts(ah, 0);
1977 ath_drain_all_txq(sc, retry_tx); 1980 ath_drain_all_txq(sc, retry_tx);
1978 ath_stoprecv(sc); 1981 ath_stoprecv(sc);
@@ -2014,6 +2017,9 @@ int ath_reset(struct ath_softc *sc, bool retry_tx)
2014 } 2017 }
2015 } 2018 }
2016 2019
2020 /* Start ANI */
2021 ath_start_ani(common);
2022
2017 return r; 2023 return r;
2018} 2024}
2019 2025
@@ -2508,6 +2514,9 @@ static void ath9k_stop(struct ieee80211_hw *hw)
2508 return; /* another wiphy still in use */ 2514 return; /* another wiphy still in use */
2509 } 2515 }
2510 2516
2517 /* Ensure HW is awake when we try to shut it down. */
2518 ath9k_ps_wakeup(sc);
2519
2511 if (ah->btcoex_hw.enabled) { 2520 if (ah->btcoex_hw.enabled) {
2512 ath9k_hw_btcoex_disable(ah); 2521 ath9k_hw_btcoex_disable(ah);
2513 if (ah->btcoex_hw.scheme == ATH_BTCOEX_CFG_3WIRE) 2522 if (ah->btcoex_hw.scheme == ATH_BTCOEX_CFG_3WIRE)
@@ -2528,6 +2537,9 @@ static void ath9k_stop(struct ieee80211_hw *hw)
2528 /* disable HAL and put h/w to sleep */ 2537 /* disable HAL and put h/w to sleep */
2529 ath9k_hw_disable(ah); 2538 ath9k_hw_disable(ah);
2530 ath9k_hw_configpcipowersave(ah, 1, 1); 2539 ath9k_hw_configpcipowersave(ah, 1, 1);
2540 ath9k_ps_restore(sc);
2541
2542 /* Finally, put the chip in FULL SLEEP mode */
2531 ath9k_setpower(sc, ATH9K_PM_FULL_SLEEP); 2543 ath9k_setpower(sc, ATH9K_PM_FULL_SLEEP);
2532 2544
2533 sc->sc_flags |= SC_OP_INVALID; 2545 sc->sc_flags |= SC_OP_INVALID;
@@ -2641,10 +2653,12 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
2641 if ((sc->sc_ah->opmode == NL80211_IFTYPE_AP) || 2653 if ((sc->sc_ah->opmode == NL80211_IFTYPE_AP) ||
2642 (sc->sc_ah->opmode == NL80211_IFTYPE_ADHOC) || 2654 (sc->sc_ah->opmode == NL80211_IFTYPE_ADHOC) ||
2643 (sc->sc_ah->opmode == NL80211_IFTYPE_MESH_POINT)) { 2655 (sc->sc_ah->opmode == NL80211_IFTYPE_MESH_POINT)) {
2656 ath9k_ps_wakeup(sc);
2644 ath9k_hw_stoptxdma(sc->sc_ah, sc->beacon.beaconq); 2657 ath9k_hw_stoptxdma(sc->sc_ah, sc->beacon.beaconq);
2645 ath_beacon_return(sc, avp); 2658 ath9k_ps_restore(sc);
2646 } 2659 }
2647 2660
2661 ath_beacon_return(sc, avp);
2648 sc->sc_flags &= ~SC_OP_BEACONS; 2662 sc->sc_flags &= ~SC_OP_BEACONS;
2649 2663
2650 for (i = 0; i < ARRAY_SIZE(sc->beacon.bslot); i++) { 2664 for (i = 0; i < ARRAY_SIZE(sc->beacon.bslot); i++) {
@@ -3091,15 +3105,21 @@ static int ath9k_ampdu_action(struct ieee80211_hw *hw,
3091 case IEEE80211_AMPDU_RX_STOP: 3105 case IEEE80211_AMPDU_RX_STOP:
3092 break; 3106 break;
3093 case IEEE80211_AMPDU_TX_START: 3107 case IEEE80211_AMPDU_TX_START:
3108 ath9k_ps_wakeup(sc);
3094 ath_tx_aggr_start(sc, sta, tid, ssn); 3109 ath_tx_aggr_start(sc, sta, tid, ssn);
3095 ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid); 3110 ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid);
3111 ath9k_ps_restore(sc);
3096 break; 3112 break;
3097 case IEEE80211_AMPDU_TX_STOP: 3113 case IEEE80211_AMPDU_TX_STOP:
3114 ath9k_ps_wakeup(sc);
3098 ath_tx_aggr_stop(sc, sta, tid); 3115 ath_tx_aggr_stop(sc, sta, tid);
3099 ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid); 3116 ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid);
3117 ath9k_ps_restore(sc);
3100 break; 3118 break;
3101 case IEEE80211_AMPDU_TX_OPERATIONAL: 3119 case IEEE80211_AMPDU_TX_OPERATIONAL:
3120 ath9k_ps_wakeup(sc);
3102 ath_tx_aggr_resume(sc, sta, tid); 3121 ath_tx_aggr_resume(sc, sta, tid);
3122 ath9k_ps_restore(sc);
3103 break; 3123 break;
3104 default: 3124 default:
3105 ath_print(ath9k_hw_common(sc->sc_ah), ATH_DBG_FATAL, 3125 ath_print(ath9k_hw_common(sc->sc_ah), ATH_DBG_FATAL,
diff --git a/drivers/net/wireless/ath/ath9k/pci.c b/drivers/net/wireless/ath/ath9k/pci.c
index 5321f735e5a0..f7af5ea54753 100644
--- a/drivers/net/wireless/ath/ath9k/pci.c
+++ b/drivers/net/wireless/ath/ath9k/pci.c
@@ -96,7 +96,7 @@ static void ath_pci_bt_coex_prep(struct ath_common *common)
96 pci_write_config_byte(pdev, ATH_PCIE_CAP_LINK_CTRL, aspm); 96 pci_write_config_byte(pdev, ATH_PCIE_CAP_LINK_CTRL, aspm);
97} 97}
98 98
99const static struct ath_bus_ops ath_pci_bus_ops = { 99static const struct ath_bus_ops ath_pci_bus_ops = {
100 .read_cachesize = ath_pci_read_cachesize, 100 .read_cachesize = ath_pci_read_cachesize,
101 .cleanup = ath_pci_cleanup, 101 .cleanup = ath_pci_cleanup,
102 .eeprom_read = ath_pci_eeprom_read, 102 .eeprom_read = ath_pci_eeprom_read,
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index 2a11cc57ceea..29bf33692f71 100644
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -1108,11 +1108,11 @@ void ath_drain_all_txq(struct ath_softc *sc, bool retry_tx)
1108 if (npend) { 1108 if (npend) {
1109 int r; 1109 int r;
1110 1110
1111 ath_print(common, ATH_DBG_XMIT, 1111 ath_print(common, ATH_DBG_FATAL,
1112 "Unable to stop TxDMA. Reset HAL!\n"); 1112 "Unable to stop TxDMA. Reset HAL!\n");
1113 1113
1114 spin_lock_bh(&sc->sc_resetlock); 1114 spin_lock_bh(&sc->sc_resetlock);
1115 r = ath9k_hw_reset(ah, sc->sc_ah->curchan, true); 1115 r = ath9k_hw_reset(ah, sc->sc_ah->curchan, false);
1116 if (r) 1116 if (r)
1117 ath_print(common, ATH_DBG_FATAL, 1117 ath_print(common, ATH_DBG_FATAL,
1118 "Unable to reset hardware; reset status %d\n", 1118 "Unable to reset hardware; reset status %d\n",
@@ -1414,17 +1414,9 @@ static void assign_aggr_tid_seqno(struct sk_buff *skb,
1414 * For HT capable stations, we save tidno for later use. 1414 * For HT capable stations, we save tidno for later use.
1415 * We also override seqno set by upper layer with the one 1415 * We also override seqno set by upper layer with the one
1416 * in tx aggregation state. 1416 * in tx aggregation state.
1417 *
1418 * If fragmentation is on, the sequence number is
1419 * not overridden, since it has been
1420 * incremented by the fragmentation routine.
1421 *
1422 * FIXME: check if the fragmentation threshold exceeds
1423 * IEEE80211 max.
1424 */ 1417 */
1425 tid = ATH_AN_2_TID(an, bf->bf_tidno); 1418 tid = ATH_AN_2_TID(an, bf->bf_tidno);
1426 hdr->seq_ctrl = cpu_to_le16(tid->seq_next << 1419 hdr->seq_ctrl = cpu_to_le16(tid->seq_next << IEEE80211_SEQ_SEQ_SHIFT);
1427 IEEE80211_SEQ_SEQ_SHIFT);
1428 bf->bf_seqno = tid->seq_next; 1420 bf->bf_seqno = tid->seq_next;
1429 INCR(tid->seq_next, IEEE80211_SEQ_MAX); 1421 INCR(tid->seq_next, IEEE80211_SEQ_MAX);
1430} 1422}
@@ -1623,7 +1615,7 @@ static int ath_tx_setup_buffer(struct ieee80211_hw *hw, struct ath_buf *bf,
1623 bf->bf_frmlen -= padsize; 1615 bf->bf_frmlen -= padsize;
1624 } 1616 }
1625 1617
1626 if (conf_is_ht(&hw->conf) && !is_pae(skb)) 1618 if (conf_is_ht(&hw->conf))
1627 bf->bf_state.bf_type |= BUF_HT; 1619 bf->bf_state.bf_type |= BUF_HT;
1628 1620
1629 bf->bf_flags = setup_tx_flags(sc, skb, txctl->txq); 1621 bf->bf_flags = setup_tx_flags(sc, skb, txctl->txq);
@@ -1636,7 +1628,8 @@ static int ath_tx_setup_buffer(struct ieee80211_hw *hw, struct ath_buf *bf,
1636 bf->bf_keyix = ATH9K_TXKEYIX_INVALID; 1628 bf->bf_keyix = ATH9K_TXKEYIX_INVALID;
1637 } 1629 }
1638 1630
1639 if (ieee80211_is_data_qos(fc) && (sc->sc_flags & SC_OP_TXAGGR)) 1631 if (ieee80211_is_data_qos(fc) && bf_isht(bf) &&
1632 (sc->sc_flags & SC_OP_TXAGGR))
1640 assign_aggr_tid_seqno(skb, bf); 1633 assign_aggr_tid_seqno(skb, bf);
1641 1634
1642 bf->bf_mpdu = skb; 1635 bf->bf_mpdu = skb;
@@ -1708,7 +1701,7 @@ static void ath_tx_start_dma(struct ath_softc *sc, struct ath_buf *bf,
1708 goto tx_done; 1701 goto tx_done;
1709 } 1702 }
1710 1703
1711 if (tx_info->flags & IEEE80211_TX_CTL_AMPDU) { 1704 if ((tx_info->flags & IEEE80211_TX_CTL_AMPDU) && !is_pae(skb)) {
1712 /* 1705 /*
1713 * Try aggregation if it's a unicast data frame 1706 * Try aggregation if it's a unicast data frame
1714 * and the destination is HT capable. 1707 * and the destination is HT capable.
@@ -1780,7 +1773,8 @@ void ath_tx_cabq(struct ieee80211_hw *hw, struct sk_buff *skb)
1780 struct ath_wiphy *aphy = hw->priv; 1773 struct ath_wiphy *aphy = hw->priv;
1781 struct ath_softc *sc = aphy->sc; 1774 struct ath_softc *sc = aphy->sc;
1782 struct ath_common *common = ath9k_hw_common(sc->sc_ah); 1775 struct ath_common *common = ath9k_hw_common(sc->sc_ah);
1783 int hdrlen, padsize; 1776 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
1777 int padpos, padsize;
1784 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); 1778 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
1785 struct ath_tx_control txctl; 1779 struct ath_tx_control txctl;
1786 1780
@@ -1792,7 +1786,6 @@ void ath_tx_cabq(struct ieee80211_hw *hw, struct sk_buff *skb)
1792 * BSSes. 1786 * BSSes.
1793 */ 1787 */
1794 if (info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ) { 1788 if (info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ) {
1795 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
1796 if (info->flags & IEEE80211_TX_CTL_FIRST_FRAGMENT) 1789 if (info->flags & IEEE80211_TX_CTL_FIRST_FRAGMENT)
1797 sc->tx.seq_no += 0x10; 1790 sc->tx.seq_no += 0x10;
1798 hdr->seq_ctrl &= cpu_to_le16(IEEE80211_SCTL_FRAG); 1791 hdr->seq_ctrl &= cpu_to_le16(IEEE80211_SCTL_FRAG);
@@ -1800,9 +1793,9 @@ void ath_tx_cabq(struct ieee80211_hw *hw, struct sk_buff *skb)
1800 } 1793 }
1801 1794
1802 /* Add the padding after the header if this is not already done */ 1795 /* Add the padding after the header if this is not already done */
1803 hdrlen = ieee80211_get_hdrlen_from_skb(skb); 1796 padpos = ath9k_cmn_padpos(hdr->frame_control);
1804 if (hdrlen & 3) { 1797 padsize = padpos & 3;
1805 padsize = hdrlen % 4; 1798 if (padsize && skb->len>padpos) {
1806 if (skb_headroom(skb) < padsize) { 1799 if (skb_headroom(skb) < padsize) {
1807 ath_print(common, ATH_DBG_XMIT, 1800 ath_print(common, ATH_DBG_XMIT,
1808 "TX CABQ padding failed\n"); 1801 "TX CABQ padding failed\n");
@@ -1810,7 +1803,7 @@ void ath_tx_cabq(struct ieee80211_hw *hw, struct sk_buff *skb)
1810 return; 1803 return;
1811 } 1804 }
1812 skb_push(skb, padsize); 1805 skb_push(skb, padsize);
1813 memmove(skb->data, skb->data + padsize, hdrlen); 1806 memmove(skb->data, skb->data + padsize, padpos);
1814 } 1807 }
1815 1808
1816 txctl.txq = sc->beacon.cabq; 1809 txctl.txq = sc->beacon.cabq;
@@ -1838,7 +1831,8 @@ static void ath_tx_complete(struct ath_softc *sc, struct sk_buff *skb,
1838 struct ieee80211_hw *hw = sc->hw; 1831 struct ieee80211_hw *hw = sc->hw;
1839 struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); 1832 struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
1840 struct ath_common *common = ath9k_hw_common(sc->sc_ah); 1833 struct ath_common *common = ath9k_hw_common(sc->sc_ah);
1841 int hdrlen, padsize; 1834 struct ieee80211_hdr * hdr = (struct ieee80211_hdr *)skb->data;
1835 int padpos, padsize;
1842 1836
1843 ath_print(common, ATH_DBG_XMIT, "TX complete: skb: %p\n", skb); 1837 ath_print(common, ATH_DBG_XMIT, "TX complete: skb: %p\n", skb);
1844 1838
@@ -1853,14 +1847,14 @@ static void ath_tx_complete(struct ath_softc *sc, struct sk_buff *skb,
1853 tx_info->flags |= IEEE80211_TX_STAT_ACK; 1847 tx_info->flags |= IEEE80211_TX_STAT_ACK;
1854 } 1848 }
1855 1849
1856 hdrlen = ieee80211_get_hdrlen_from_skb(skb); 1850 padpos = ath9k_cmn_padpos(hdr->frame_control);
1857 padsize = hdrlen & 3; 1851 padsize = padpos & 3;
1858 if (padsize && hdrlen >= 24) { 1852 if (padsize && skb->len>padpos+padsize) {
1859 /* 1853 /*
1860 * Remove MAC header padding before giving the frame back to 1854 * Remove MAC header padding before giving the frame back to
1861 * mac80211. 1855 * mac80211.
1862 */ 1856 */
1863 memmove(skb->data + padsize, skb->data, hdrlen); 1857 memmove(skb->data + padsize, skb->data, padpos);
1864 skb_pull(skb, padsize); 1858 skb_pull(skb, padsize);
1865 } 1859 }
1866 1860
@@ -2078,7 +2072,7 @@ static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
2078 &txq->axq_q, lastbf->list.prev); 2072 &txq->axq_q, lastbf->list.prev);
2079 2073
2080 txq->axq_depth--; 2074 txq->axq_depth--;
2081 txok = !(ds->ds_txstat.ts_status & ATH9K_TXERR_FILT); 2075 txok = !(ds->ds_txstat.ts_status & ATH9K_TXERR_MASK);
2082 txq->axq_tx_inprogress = false; 2076 txq->axq_tx_inprogress = false;
2083 spin_unlock_bh(&txq->axq_lock); 2077 spin_unlock_bh(&txq->axq_lock);
2084 2078
diff --git a/drivers/net/wireless/b43/b43.h b/drivers/net/wireless/b43/b43.h
index fe3bf9491997..c484cc253892 100644
--- a/drivers/net/wireless/b43/b43.h
+++ b/drivers/net/wireless/b43/b43.h
@@ -115,6 +115,7 @@
115#define B43_MMIO_TSF_2 0x636 /* core rev < 3 only */ 115#define B43_MMIO_TSF_2 0x636 /* core rev < 3 only */
116#define B43_MMIO_TSF_3 0x638 /* core rev < 3 only */ 116#define B43_MMIO_TSF_3 0x638 /* core rev < 3 only */
117#define B43_MMIO_RNG 0x65A 117#define B43_MMIO_RNG 0x65A
118#define B43_MMIO_IFSSLOT 0x684 /* Interframe slot time */
118#define B43_MMIO_IFSCTL 0x688 /* Interframe space control */ 119#define B43_MMIO_IFSCTL 0x688 /* Interframe space control */
119#define B43_MMIO_IFSCTL_USE_EDCF 0x0004 120#define B43_MMIO_IFSCTL_USE_EDCF 0x0004
120#define B43_MMIO_POWERUP_DELAY 0x6A8 121#define B43_MMIO_POWERUP_DELAY 0x6A8
diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c
index 027be275e035..88d1fd02d40a 100644
--- a/drivers/net/wireless/b43/dma.c
+++ b/drivers/net/wireless/b43/dma.c
@@ -383,160 +383,44 @@ static inline
383 } 383 }
384} 384}
385 385
386/* Check if a DMA region fits the device constraints.
387 * Returns true, if the region is OK for usage with this device. */
388static inline bool b43_dma_address_ok(struct b43_dmaring *ring,
389 dma_addr_t addr, size_t size)
390{
391 switch (ring->type) {
392 case B43_DMA_30BIT:
393 if ((u64)addr + size > (1ULL << 30))
394 return 0;
395 break;
396 case B43_DMA_32BIT:
397 if ((u64)addr + size > (1ULL << 32))
398 return 0;
399 break;
400 case B43_DMA_64BIT:
401 /* Currently we can't have addresses beyond
402 * 64bit in the kernel. */
403 break;
404 }
405 return 1;
406}
407
408#define is_4k_aligned(addr) (((u64)(addr) & 0x0FFFull) == 0)
409#define is_8k_aligned(addr) (((u64)(addr) & 0x1FFFull) == 0)
410
411static void b43_unmap_and_free_ringmem(struct b43_dmaring *ring, void *base,
412 dma_addr_t dmaaddr, size_t size)
413{
414 ssb_dma_unmap_single(ring->dev->dev, dmaaddr, size, DMA_TO_DEVICE);
415 free_pages((unsigned long)base, get_order(size));
416}
417
418static void * __b43_get_and_map_ringmem(struct b43_dmaring *ring,
419 dma_addr_t *dmaaddr, size_t size,
420 gfp_t gfp_flags)
421{
422 void *base;
423
424 base = (void *)__get_free_pages(gfp_flags, get_order(size));
425 if (!base)
426 return NULL;
427 memset(base, 0, size);
428 *dmaaddr = ssb_dma_map_single(ring->dev->dev, base, size,
429 DMA_TO_DEVICE);
430 if (ssb_dma_mapping_error(ring->dev->dev, *dmaaddr)) {
431 free_pages((unsigned long)base, get_order(size));
432 return NULL;
433 }
434
435 return base;
436}
437
438static void * b43_get_and_map_ringmem(struct b43_dmaring *ring,
439 dma_addr_t *dmaaddr, size_t size)
440{
441 void *base;
442
443 base = __b43_get_and_map_ringmem(ring, dmaaddr, size,
444 GFP_KERNEL);
445 if (!base) {
446 b43err(ring->dev->wl, "Failed to allocate or map pages "
447 "for DMA ringmemory\n");
448 return NULL;
449 }
450 if (!b43_dma_address_ok(ring, *dmaaddr, size)) {
451 /* The memory does not fit our device constraints.
452 * Retry with GFP_DMA set to get lower memory. */
453 b43_unmap_and_free_ringmem(ring, base, *dmaaddr, size);
454 base = __b43_get_and_map_ringmem(ring, dmaaddr, size,
455 GFP_KERNEL | GFP_DMA);
456 if (!base) {
457 b43err(ring->dev->wl, "Failed to allocate or map pages "
458 "in the GFP_DMA region for DMA ringmemory\n");
459 return NULL;
460 }
461 if (!b43_dma_address_ok(ring, *dmaaddr, size)) {
462 b43_unmap_and_free_ringmem(ring, base, *dmaaddr, size);
463 b43err(ring->dev->wl, "Failed to allocate DMA "
464 "ringmemory that fits device constraints\n");
465 return NULL;
466 }
467 }
468 /* We expect the memory to be 4k aligned, at least. */
469 if (B43_WARN_ON(!is_4k_aligned(*dmaaddr))) {
470 b43_unmap_and_free_ringmem(ring, base, *dmaaddr, size);
471 return NULL;
472 }
473
474 return base;
475}
476
477static int alloc_ringmemory(struct b43_dmaring *ring) 386static int alloc_ringmemory(struct b43_dmaring *ring)
478{ 387{
479 unsigned int required; 388 gfp_t flags = GFP_KERNEL;
480 void *base; 389
481 dma_addr_t dmaaddr; 390 /* The specs call for 4K buffers for 30- and 32-bit DMA with 4K
482 391 * alignment and 8K buffers for 64-bit DMA with 8K alignment. Testing
483 /* There are several requirements to the descriptor ring memory: 392 * has shown that 4K is sufficient for the latter as long as the buffer
484 * - The memory region needs to fit the address constraints for the 393 * does not cross an 8K boundary.
485 * device (same as for frame buffers). 394 *
486 * - For 30/32bit DMA devices, the descriptor ring must be 4k aligned. 395 * For unknown reasons - possibly a hardware error - the BCM4311 rev
487 * - For 64bit DMA devices, the descriptor ring must be 8k aligned. 396 * 02, which uses 64-bit DMA, needs the ring buffer in very low memory,
397 * which accounts for the GFP_DMA flag below.
398 *
399 * The flags here must match the flags in free_ringmemory below!
488 */ 400 */
489
490 if (ring->type == B43_DMA_64BIT) 401 if (ring->type == B43_DMA_64BIT)
491 required = ring->nr_slots * sizeof(struct b43_dmadesc64); 402 flags |= GFP_DMA;
492 else 403 ring->descbase = ssb_dma_alloc_consistent(ring->dev->dev,
493 required = ring->nr_slots * sizeof(struct b43_dmadesc32); 404 B43_DMA_RINGMEMSIZE,
494 if (B43_WARN_ON(required > 0x1000)) 405 &(ring->dmabase), flags);
406 if (!ring->descbase) {
407 b43err(ring->dev->wl, "DMA ringmemory allocation failed\n");
495 return -ENOMEM; 408 return -ENOMEM;
496
497 ring->alloc_descsize = 0x1000;
498 base = b43_get_and_map_ringmem(ring, &dmaaddr, ring->alloc_descsize);
499 if (!base)
500 return -ENOMEM;
501 ring->alloc_descbase = base;
502 ring->alloc_dmabase = dmaaddr;
503
504 if ((ring->type != B43_DMA_64BIT) || is_8k_aligned(dmaaddr)) {
505 /* We're on <=32bit DMA, or we already got 8k aligned memory.
506 * That's all we need, so we're fine. */
507 ring->descbase = base;
508 ring->dmabase = dmaaddr;
509 return 0;
510 }
511 b43_unmap_and_free_ringmem(ring, base, dmaaddr, ring->alloc_descsize);
512
513 /* Ok, we failed at the 8k alignment requirement.
514 * Try to force-align the memory region now. */
515 ring->alloc_descsize = 0x2000;
516 base = b43_get_and_map_ringmem(ring, &dmaaddr, ring->alloc_descsize);
517 if (!base)
518 return -ENOMEM;
519 ring->alloc_descbase = base;
520 ring->alloc_dmabase = dmaaddr;
521
522 if (is_8k_aligned(dmaaddr)) {
523 /* We're already 8k aligned. That Ok, too. */
524 ring->descbase = base;
525 ring->dmabase = dmaaddr;
526 return 0;
527 } 409 }
528 /* Force-align it to 8k */ 410 memset(ring->descbase, 0, B43_DMA_RINGMEMSIZE);
529 ring->descbase = (void *)((u8 *)base + 0x1000);
530 ring->dmabase = dmaaddr + 0x1000;
531 B43_WARN_ON(!is_8k_aligned(ring->dmabase));
532 411
533 return 0; 412 return 0;
534} 413}
535 414
536static void free_ringmemory(struct b43_dmaring *ring) 415static void free_ringmemory(struct b43_dmaring *ring)
537{ 416{
538 b43_unmap_and_free_ringmem(ring, ring->alloc_descbase, 417 gfp_t flags = GFP_KERNEL;
539 ring->alloc_dmabase, ring->alloc_descsize); 418
419 if (ring->type == B43_DMA_64BIT)
420 flags |= GFP_DMA;
421
422 ssb_dma_free_consistent(ring->dev->dev, B43_DMA_RINGMEMSIZE,
423 ring->descbase, ring->dmabase, flags);
540} 424}
541 425
542/* Reset the RX DMA channel */ 426/* Reset the RX DMA channel */
@@ -646,14 +530,29 @@ static bool b43_dma_mapping_error(struct b43_dmaring *ring,
646 if (unlikely(ssb_dma_mapping_error(ring->dev->dev, addr))) 530 if (unlikely(ssb_dma_mapping_error(ring->dev->dev, addr)))
647 return 1; 531 return 1;
648 532
649 if (!b43_dma_address_ok(ring, addr, buffersize)) { 533 switch (ring->type) {
650 /* We can't support this address. Unmap it again. */ 534 case B43_DMA_30BIT:
651 unmap_descbuffer(ring, addr, buffersize, dma_to_device); 535 if ((u64)addr + buffersize > (1ULL << 30))
652 return 1; 536 goto address_error;
537 break;
538 case B43_DMA_32BIT:
539 if ((u64)addr + buffersize > (1ULL << 32))
540 goto address_error;
541 break;
542 case B43_DMA_64BIT:
543 /* Currently we can't have addresses beyond
544 * 64bit in the kernel. */
545 break;
653 } 546 }
654 547
655 /* The address is OK. */ 548 /* The address is OK. */
656 return 0; 549 return 0;
550
551address_error:
552 /* We can't support this address. Unmap it again. */
553 unmap_descbuffer(ring, addr, buffersize, dma_to_device);
554
555 return 1;
657} 556}
658 557
659static bool b43_rx_buffer_is_poisoned(struct b43_dmaring *ring, struct sk_buff *skb) 558static bool b43_rx_buffer_is_poisoned(struct b43_dmaring *ring, struct sk_buff *skb)
@@ -715,9 +614,6 @@ static int setup_rx_descbuffer(struct b43_dmaring *ring,
715 meta->dmaaddr = dmaaddr; 614 meta->dmaaddr = dmaaddr;
716 ring->ops->fill_descriptor(ring, desc, dmaaddr, 615 ring->ops->fill_descriptor(ring, desc, dmaaddr,
717 ring->rx_buffersize, 0, 0, 0); 616 ring->rx_buffersize, 0, 0, 0);
718 ssb_dma_sync_single_for_device(ring->dev->dev,
719 ring->alloc_dmabase,
720 ring->alloc_descsize, DMA_TO_DEVICE);
721 617
722 return 0; 618 return 0;
723} 619}
@@ -1354,9 +1250,6 @@ static int dma_tx_fragment(struct b43_dmaring *ring,
1354 } 1250 }
1355 /* Now transfer the whole frame. */ 1251 /* Now transfer the whole frame. */
1356 wmb(); 1252 wmb();
1357 ssb_dma_sync_single_for_device(ring->dev->dev,
1358 ring->alloc_dmabase,
1359 ring->alloc_descsize, DMA_TO_DEVICE);
1360 ops->poke_tx(ring, next_slot(ring, slot)); 1253 ops->poke_tx(ring, next_slot(ring, slot));
1361 return 0; 1254 return 0;
1362 1255
diff --git a/drivers/net/wireless/b43/dma.h b/drivers/net/wireless/b43/dma.h
index e607b392314c..f7ab37c4cdbc 100644
--- a/drivers/net/wireless/b43/dma.h
+++ b/drivers/net/wireless/b43/dma.h
@@ -157,6 +157,7 @@ struct b43_dmadesc_generic {
157} __attribute__ ((__packed__)); 157} __attribute__ ((__packed__));
158 158
159/* Misc DMA constants */ 159/* Misc DMA constants */
160#define B43_DMA_RINGMEMSIZE PAGE_SIZE
160#define B43_DMA0_RX_FRAMEOFFSET 30 161#define B43_DMA0_RX_FRAMEOFFSET 30
161 162
162/* DMA engine tuning knobs */ 163/* DMA engine tuning knobs */
@@ -246,12 +247,6 @@ struct b43_dmaring {
246 /* The QOS priority assigned to this ring. Only used for TX rings. 247 /* The QOS priority assigned to this ring. Only used for TX rings.
247 * This is the mac80211 "queue" value. */ 248 * This is the mac80211 "queue" value. */
248 u8 queue_prio; 249 u8 queue_prio;
249 /* Pointers and size of the originally allocated and mapped memory
250 * region for the descriptor ring. */
251 void *alloc_descbase;
252 dma_addr_t alloc_dmabase;
253 unsigned int alloc_descsize;
254 /* Pointer to our wireless device. */
255 struct b43_wldev *dev; 250 struct b43_wldev *dev;
256#ifdef CONFIG_B43_DEBUG 251#ifdef CONFIG_B43_DEBUG
257 /* Maximum number of used slots. */ 252 /* Maximum number of used slots. */
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index 4c41cfe44f26..490fb45d1d05 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -628,10 +628,17 @@ static void b43_upload_card_macaddress(struct b43_wldev *dev)
628static void b43_set_slot_time(struct b43_wldev *dev, u16 slot_time) 628static void b43_set_slot_time(struct b43_wldev *dev, u16 slot_time)
629{ 629{
630 /* slot_time is in usec. */ 630 /* slot_time is in usec. */
631 if (dev->phy.type != B43_PHYTYPE_G) 631 /* This test used to exit for all but a G PHY. */
632 if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ)
632 return; 633 return;
633 b43_write16(dev, 0x684, 510 + slot_time); 634 b43_write16(dev, B43_MMIO_IFSSLOT, 510 + slot_time);
634 b43_shm_write16(dev, B43_SHM_SHARED, 0x0010, slot_time); 635 /* Shared memory location 0x0010 is the slot time and should be
636 * set to slot_time; however, this register is initially 0 and changing
637 * the value adversely affects the transmit rate for BCM4311
638 * devices. Until this behavior is unterstood, delete this step
639 *
640 * b43_shm_write16(dev, B43_SHM_SHARED, 0x0010, slot_time);
641 */
635} 642}
636 643
637static void b43_short_slot_timing_enable(struct b43_wldev *dev) 644static void b43_short_slot_timing_enable(struct b43_wldev *dev)
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.c b/drivers/net/wireless/iwlwifi/iwl-3945.c
index 7da1dab933d9..234891d8cc10 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945.c
+++ b/drivers/net/wireless/iwlwifi/iwl-3945.c
@@ -681,19 +681,13 @@ static void iwl3945_rx_reply_rx(struct iwl_priv *priv,
681 snr = rx_stats_sig_avg / rx_stats_noise_diff; 681 snr = rx_stats_sig_avg / rx_stats_noise_diff;
682 rx_status.noise = rx_status.signal - 682 rx_status.noise = rx_status.signal -
683 iwl3945_calc_db_from_ratio(snr); 683 iwl3945_calc_db_from_ratio(snr);
684 rx_status.qual = iwl3945_calc_sig_qual(rx_status.signal,
685 rx_status.noise);
686
687 /* If noise info not available, calculate signal quality indicator (%)
688 * using just the dBm signal level. */
689 } else { 684 } else {
690 rx_status.noise = priv->last_rx_noise; 685 rx_status.noise = priv->last_rx_noise;
691 rx_status.qual = iwl3945_calc_sig_qual(rx_status.signal, 0);
692 } 686 }
693 687
694 688
695 IWL_DEBUG_STATS(priv, "Rssi %d noise %d qual %d sig_avg %d noise_diff %d\n", 689 IWL_DEBUG_STATS(priv, "Rssi %d noise %d sig_avg %d noise_diff %d\n",
696 rx_status.signal, rx_status.noise, rx_status.qual, 690 rx_status.signal, rx_status.noise,
697 rx_stats_sig_avg, rx_stats_noise_diff); 691 rx_stats_sig_avg, rx_stats_noise_diff);
698 692
699 header = (struct ieee80211_hdr *)IWL_RX_DATA(pkt); 693 header = (struct ieee80211_hdr *)IWL_RX_DATA(pkt);
@@ -1835,8 +1829,7 @@ static int iwl3945_send_rxon_assoc(struct iwl_priv *priv)
1835 rc = -EIO; 1829 rc = -EIO;
1836 } 1830 }
1837 1831
1838 priv->alloc_rxb_page--; 1832 iwl_free_pages(priv, cmd.reply_page);
1839 free_pages(cmd.reply_page, priv->hw_params.rx_page_order);
1840 1833
1841 return rc; 1834 return rc;
1842} 1835}
@@ -2836,6 +2829,7 @@ static struct iwl_cfg iwl3945_bg_cfg = {
2836 .use_isr_legacy = true, 2829 .use_isr_legacy = true,
2837 .ht_greenfield_support = false, 2830 .ht_greenfield_support = false,
2838 .led_compensation = 64, 2831 .led_compensation = 64,
2832 .broken_powersave = true,
2839}; 2833};
2840 2834
2841static struct iwl_cfg iwl3945_abg_cfg = { 2835static struct iwl_cfg iwl3945_abg_cfg = {
@@ -2852,6 +2846,7 @@ static struct iwl_cfg iwl3945_abg_cfg = {
2852 .use_isr_legacy = true, 2846 .use_isr_legacy = true,
2853 .ht_greenfield_support = false, 2847 .ht_greenfield_support = false,
2854 .led_compensation = 64, 2848 .led_compensation = 64,
2849 .broken_powersave = true,
2855}; 2850};
2856 2851
2857struct pci_device_id iwl3945_hw_card_ids[] = { 2852struct pci_device_id iwl3945_hw_card_ids[] = {
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.h b/drivers/net/wireless/iwlwifi/iwl-3945.h
index ecc23ec1f6a4..531fa125f5a6 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945.h
+++ b/drivers/net/wireless/iwlwifi/iwl-3945.h
@@ -222,7 +222,6 @@ struct iwl3945_ibss_seq {
222 * 222 *
223 *****************************************************************************/ 223 *****************************************************************************/
224extern int iwl3945_calc_db_from_ratio(int sig_ratio); 224extern int iwl3945_calc_db_from_ratio(int sig_ratio);
225extern int iwl3945_calc_sig_qual(int rssi_dbm, int noise_dbm);
226extern void iwl3945_rx_replenish(void *data); 225extern void iwl3945_rx_replenish(void *data);
227extern void iwl3945_rx_queue_reset(struct iwl_priv *priv, struct iwl_rx_queue *rxq); 226extern void iwl3945_rx_queue_reset(struct iwl_priv *priv, struct iwl_rx_queue *rxq);
228extern unsigned int iwl3945_fill_beacon_frame(struct iwl_priv *priv, 227extern unsigned int iwl3945_fill_beacon_frame(struct iwl_priv *priv,
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c
index 386513b601f5..31462813bac0 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.c
@@ -1204,7 +1204,7 @@ static int iwl4965_fill_txpower_tbl(struct iwl_priv *priv, u8 band, u16 channel,
1204 iwl4965_interpolate_chan(priv, channel, &ch_eeprom_info); 1204 iwl4965_interpolate_chan(priv, channel, &ch_eeprom_info);
1205 1205
1206 /* calculate tx gain adjustment based on power supply voltage */ 1206 /* calculate tx gain adjustment based on power supply voltage */
1207 voltage = priv->calib_info->voltage; 1207 voltage = le16_to_cpu(priv->calib_info->voltage);
1208 init_voltage = (s32)le32_to_cpu(priv->card_alive_init.voltage); 1208 init_voltage = (s32)le32_to_cpu(priv->card_alive_init.voltage);
1209 voltage_compensation = 1209 voltage_compensation =
1210 iwl4965_get_voltage_compensation(voltage, init_voltage); 1210 iwl4965_get_voltage_compensation(voltage, init_voltage);
@@ -1961,7 +1961,7 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv,
1961 struct ieee80211_tx_info *info; 1961 struct ieee80211_tx_info *info;
1962 struct iwl4965_tx_resp *tx_resp = (void *)&pkt->u.raw[0]; 1962 struct iwl4965_tx_resp *tx_resp = (void *)&pkt->u.raw[0];
1963 u32 status = le32_to_cpu(tx_resp->u.status); 1963 u32 status = le32_to_cpu(tx_resp->u.status);
1964 int tid = MAX_TID_COUNT; 1964 int uninitialized_var(tid);
1965 int sta_id; 1965 int sta_id;
1966 int freed; 1966 int freed;
1967 u8 *qc = NULL; 1967 u8 *qc = NULL;
@@ -2008,7 +2008,7 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv,
2008 IWL_DEBUG_TX_REPLY(priv, "Retry scheduler reclaim scd_ssn " 2008 IWL_DEBUG_TX_REPLY(priv, "Retry scheduler reclaim scd_ssn "
2009 "%d index %d\n", scd_ssn , index); 2009 "%d index %d\n", scd_ssn , index);
2010 freed = iwl_tx_queue_reclaim(priv, txq_id, index); 2010 freed = iwl_tx_queue_reclaim(priv, txq_id, index);
2011 priv->stations[sta_id].tid[tid].tfds_in_queue -= freed; 2011 iwl_free_tfds_in_queue(priv, sta_id, tid, freed);
2012 2012
2013 if (priv->mac80211_registered && 2013 if (priv->mac80211_registered &&
2014 (iwl_queue_space(&txq->q) > txq->q.low_mark) && 2014 (iwl_queue_space(&txq->q) > txq->q.low_mark) &&
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000-hw.h b/drivers/net/wireless/iwlwifi/iwl-5000-hw.h
index 4ef6804a455a..bc056e9ab85f 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000-hw.h
+++ b/drivers/net/wireless/iwlwifi/iwl-5000-hw.h
@@ -92,11 +92,15 @@
92 92
93static inline s32 iwl_temp_calib_to_offset(struct iwl_priv *priv) 93static inline s32 iwl_temp_calib_to_offset(struct iwl_priv *priv)
94{ 94{
95 u16 *temp_calib = (u16 *)iwl_eeprom_query_addr(priv, 95 u16 temperature, voltage;
96 EEPROM_5000_TEMPERATURE); 96 __le16 *temp_calib =
97 /* offset = temperature - voltage / coef */ 97 (__le16 *)iwl_eeprom_query_addr(priv, EEPROM_5000_TEMPERATURE);
98 s32 offset = (s32)(temp_calib[0] - temp_calib[1] / IWL_5150_VOLTAGE_TO_TEMPERATURE_COEFF); 98
99 return offset; 99 temperature = le16_to_cpu(temp_calib[0]);
100 voltage = le16_to_cpu(temp_calib[1]);
101
102 /* offset = temp - volt / coeff */
103 return (s32)(temperature - voltage / IWL_5150_VOLTAGE_TO_TEMPERATURE_COEFF);
100} 104}
101 105
102/* Fixed (non-configurable) rx data from phy */ 106/* Fixed (non-configurable) rx data from phy */
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index e2f8615c8c9b..cffaae772d51 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -333,14 +333,15 @@ static void iwl5000_set_ct_threshold(struct iwl_priv *priv)
333static int iwl5000_set_Xtal_calib(struct iwl_priv *priv) 333static int iwl5000_set_Xtal_calib(struct iwl_priv *priv)
334{ 334{
335 struct iwl_calib_xtal_freq_cmd cmd; 335 struct iwl_calib_xtal_freq_cmd cmd;
336 u16 *xtal_calib = (u16 *)iwl_eeprom_query_addr(priv, EEPROM_5000_XTAL); 336 __le16 *xtal_calib =
337 (__le16 *)iwl_eeprom_query_addr(priv, EEPROM_5000_XTAL);
337 338
338 cmd.hdr.op_code = IWL_PHY_CALIBRATE_CRYSTAL_FRQ_CMD; 339 cmd.hdr.op_code = IWL_PHY_CALIBRATE_CRYSTAL_FRQ_CMD;
339 cmd.hdr.first_group = 0; 340 cmd.hdr.first_group = 0;
340 cmd.hdr.groups_num = 1; 341 cmd.hdr.groups_num = 1;
341 cmd.hdr.data_valid = 1; 342 cmd.hdr.data_valid = 1;
342 cmd.cap_pin1 = (u8)xtal_calib[0]; 343 cmd.cap_pin1 = le16_to_cpu(xtal_calib[0]);
343 cmd.cap_pin2 = (u8)xtal_calib[1]; 344 cmd.cap_pin2 = le16_to_cpu(xtal_calib[1]);
344 return iwl_calib_set(&priv->calib_results[IWL_CALIB_XTAL], 345 return iwl_calib_set(&priv->calib_results[IWL_CALIB_XTAL],
345 (u8 *)&cmd, sizeof(cmd)); 346 (u8 *)&cmd, sizeof(cmd));
346} 347}
@@ -1124,7 +1125,7 @@ static void iwl5000_rx_reply_tx(struct iwl_priv *priv,
1124 scd_ssn , index, txq_id, txq->swq_id); 1125 scd_ssn , index, txq_id, txq->swq_id);
1125 1126
1126 freed = iwl_tx_queue_reclaim(priv, txq_id, index); 1127 freed = iwl_tx_queue_reclaim(priv, txq_id, index);
1127 priv->stations[sta_id].tid[tid].tfds_in_queue -= freed; 1128 iwl_free_tfds_in_queue(priv, sta_id, tid, freed);
1128 1129
1129 if (priv->mac80211_registered && 1130 if (priv->mac80211_registered &&
1130 (iwl_queue_space(&txq->q) > txq->q.low_mark) && 1131 (iwl_queue_space(&txq->q) > txq->q.low_mark) &&
@@ -1152,16 +1153,14 @@ static void iwl5000_rx_reply_tx(struct iwl_priv *priv,
1152 tx_resp->failure_frame); 1153 tx_resp->failure_frame);
1153 1154
1154 freed = iwl_tx_queue_reclaim(priv, txq_id, index); 1155 freed = iwl_tx_queue_reclaim(priv, txq_id, index);
1155 if (ieee80211_is_data_qos(tx_resp->frame_ctrl)) 1156 iwl_free_tfds_in_queue(priv, sta_id, tid, freed);
1156 priv->stations[sta_id].tid[tid].tfds_in_queue -= freed;
1157 1157
1158 if (priv->mac80211_registered && 1158 if (priv->mac80211_registered &&
1159 (iwl_queue_space(&txq->q) > txq->q.low_mark)) 1159 (iwl_queue_space(&txq->q) > txq->q.low_mark))
1160 iwl_wake_queue(priv, txq_id); 1160 iwl_wake_queue(priv, txq_id);
1161 } 1161 }
1162 1162
1163 if (ieee80211_is_data_qos(tx_resp->frame_ctrl)) 1163 iwl_txq_check_empty(priv, sta_id, tid, txq_id);
1164 iwl_txq_check_empty(priv, sta_id, tid, txq_id);
1165 1164
1166 if (iwl_check_bits(status, TX_ABORT_REQUIRED_MSK)) 1165 if (iwl_check_bits(status, TX_ABORT_REQUIRED_MSK))
1167 IWL_ERR(priv, "TODO: Implement Tx ABORT REQUIRED!!!\n"); 1166 IWL_ERR(priv, "TODO: Implement Tx ABORT REQUIRED!!!\n");
@@ -1597,6 +1596,7 @@ struct iwl_cfg iwl5300_agn_cfg = {
1597 .use_bsm = false, 1596 .use_bsm = false,
1598 .ht_greenfield_support = true, 1597 .ht_greenfield_support = true,
1599 .led_compensation = 51, 1598 .led_compensation = 51,
1599 .use_rts_for_ht = true, /* use rts/cts protection */
1600 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, 1600 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
1601 .sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED, 1601 .sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
1602}; 1602};
@@ -1621,6 +1621,7 @@ struct iwl_cfg iwl5100_bgn_cfg = {
1621 .use_bsm = false, 1621 .use_bsm = false,
1622 .ht_greenfield_support = true, 1622 .ht_greenfield_support = true,
1623 .led_compensation = 51, 1623 .led_compensation = 51,
1624 .use_rts_for_ht = true, /* use rts/cts protection */
1624 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, 1625 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
1625}; 1626};
1626 1627
@@ -1666,6 +1667,7 @@ struct iwl_cfg iwl5100_agn_cfg = {
1666 .use_bsm = false, 1667 .use_bsm = false,
1667 .ht_greenfield_support = true, 1668 .ht_greenfield_support = true,
1668 .led_compensation = 51, 1669 .led_compensation = 51,
1670 .use_rts_for_ht = true, /* use rts/cts protection */
1669 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, 1671 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
1670 .sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED, 1672 .sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
1671}; 1673};
@@ -1690,6 +1692,7 @@ struct iwl_cfg iwl5350_agn_cfg = {
1690 .use_bsm = false, 1692 .use_bsm = false,
1691 .ht_greenfield_support = true, 1693 .ht_greenfield_support = true,
1692 .led_compensation = 51, 1694 .led_compensation = 51,
1695 .use_rts_for_ht = true, /* use rts/cts protection */
1693 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, 1696 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
1694 .sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED, 1697 .sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
1695}; 1698};
@@ -1714,6 +1717,7 @@ struct iwl_cfg iwl5150_agn_cfg = {
1714 .use_bsm = false, 1717 .use_bsm = false,
1715 .ht_greenfield_support = true, 1718 .ht_greenfield_support = true,
1716 .led_compensation = 51, 1719 .led_compensation = 51,
1720 .use_rts_for_ht = true, /* use rts/cts protection */
1717 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS, 1721 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
1718 .sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED, 1722 .sm_ps_mode = WLAN_HT_CAP_SM_PS_DISABLED,
1719}; 1723};
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
index fe511cbf012e..b93e49158196 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
@@ -150,7 +150,7 @@ static s32 expected_tpt_mimo3_40MHz[4][IWL_RATE_COUNT] = {
150}; 150};
151 151
152/* mbps, mcs */ 152/* mbps, mcs */
153const static struct iwl_rate_mcs_info iwl_rate_mcs[IWL_RATE_COUNT] = { 153static const struct iwl_rate_mcs_info iwl_rate_mcs[IWL_RATE_COUNT] = {
154 { "1", "BPSK DSSS"}, 154 { "1", "BPSK DSSS"},
155 { "2", "QPSK DSSS"}, 155 { "2", "QPSK DSSS"},
156 {"5.5", "BPSK CCK"}, 156 {"5.5", "BPSK CCK"},
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index b8377efb3ba7..1c9866daf815 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -1842,7 +1842,7 @@ void iwl_dump_nic_event_log(struct iwl_priv *priv, bool full_log)
1842 } 1842 }
1843 1843
1844#ifdef CONFIG_IWLWIFI_DEBUG 1844#ifdef CONFIG_IWLWIFI_DEBUG
1845 if (!(iwl_get_debug_level(priv) & IWL_DL_FW_ERRORS)) 1845 if (!(iwl_get_debug_level(priv) & IWL_DL_FW_ERRORS) && !full_log)
1846 size = (size > DEFAULT_DUMP_EVENT_LOG_ENTRIES) 1846 size = (size > DEFAULT_DUMP_EVENT_LOG_ENTRIES)
1847 ? DEFAULT_DUMP_EVENT_LOG_ENTRIES : size; 1847 ? DEFAULT_DUMP_EVENT_LOG_ENTRIES : size;
1848#else 1848#else
@@ -3173,7 +3173,6 @@ static int iwl_init_drv(struct iwl_priv *priv)
3173 3173
3174 priv->ibss_beacon = NULL; 3174 priv->ibss_beacon = NULL;
3175 3175
3176 spin_lock_init(&priv->lock);
3177 spin_lock_init(&priv->sta_lock); 3176 spin_lock_init(&priv->sta_lock);
3178 spin_lock_init(&priv->hcmd_lock); 3177 spin_lock_init(&priv->hcmd_lock);
3179 3178
@@ -3361,10 +3360,11 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
3361 (unsigned long long) pci_resource_len(pdev, 0)); 3360 (unsigned long long) pci_resource_len(pdev, 0));
3362 IWL_DEBUG_INFO(priv, "pci_resource_base = %p\n", priv->hw_base); 3361 IWL_DEBUG_INFO(priv, "pci_resource_base = %p\n", priv->hw_base);
3363 3362
3364 /* this spin lock will be used in apm_ops.init and EEPROM access 3363 /* these spin locks will be used in apm_ops.init and EEPROM access
3365 * we should init now 3364 * we should init now
3366 */ 3365 */
3367 spin_lock_init(&priv->reg_lock); 3366 spin_lock_init(&priv->reg_lock);
3367 spin_lock_init(&priv->lock);
3368 iwl_hw_detect(priv); 3368 iwl_hw_detect(priv);
3369 IWL_INFO(priv, "Detected Intel Wireless WiFi Link %s REV=0x%X\n", 3369 IWL_INFO(priv, "Detected Intel Wireless WiFi Link %s REV=0x%X\n",
3370 priv->cfg->name, priv->hw_rev); 3370 priv->cfg->name, priv->hw_rev);
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index 574d36658702..f36f804804fc 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -2344,6 +2344,21 @@ static void iwl_ht_conf(struct iwl_priv *priv,
2344 IWL_DEBUG_MAC80211(priv, "leave\n"); 2344 IWL_DEBUG_MAC80211(priv, "leave\n");
2345} 2345}
2346 2346
2347static inline void iwl_set_no_assoc(struct iwl_priv *priv)
2348{
2349 priv->assoc_id = 0;
2350 iwl_led_disassociate(priv);
2351 /*
2352 * inform the ucode that there is no longer an
2353 * association and that no more packets should be
2354 * sent
2355 */
2356 priv->staging_rxon.filter_flags &=
2357 ~RXON_FILTER_ASSOC_MSK;
2358 priv->staging_rxon.assoc_id = 0;
2359 iwlcore_commit_rxon(priv);
2360}
2361
2347#define IWL_DELAY_NEXT_SCAN_AFTER_ASSOC (HZ*6) 2362#define IWL_DELAY_NEXT_SCAN_AFTER_ASSOC (HZ*6)
2348void iwl_bss_info_changed(struct ieee80211_hw *hw, 2363void iwl_bss_info_changed(struct ieee80211_hw *hw,
2349 struct ieee80211_vif *vif, 2364 struct ieee80211_vif *vif,
@@ -2475,20 +2490,8 @@ void iwl_bss_info_changed(struct ieee80211_hw *hw,
2475 IWL_DELAY_NEXT_SCAN_AFTER_ASSOC; 2490 IWL_DELAY_NEXT_SCAN_AFTER_ASSOC;
2476 if (!iwl_is_rfkill(priv)) 2491 if (!iwl_is_rfkill(priv))
2477 priv->cfg->ops->lib->post_associate(priv); 2492 priv->cfg->ops->lib->post_associate(priv);
2478 } else { 2493 } else
2479 priv->assoc_id = 0; 2494 iwl_set_no_assoc(priv);
2480 iwl_led_disassociate(priv);
2481
2482 /*
2483 * inform the ucode that there is no longer an
2484 * association and that no more packets should be
2485 * send
2486 */
2487 priv->staging_rxon.filter_flags &=
2488 ~RXON_FILTER_ASSOC_MSK;
2489 priv->staging_rxon.assoc_id = 0;
2490 iwlcore_commit_rxon(priv);
2491 }
2492 } 2495 }
2493 2496
2494 if (changes && iwl_is_associated(priv) && priv->assoc_id) { 2497 if (changes && iwl_is_associated(priv) && priv->assoc_id) {
@@ -2503,12 +2506,14 @@ void iwl_bss_info_changed(struct ieee80211_hw *hw,
2503 } 2506 }
2504 } 2507 }
2505 2508
2506 if ((changes & BSS_CHANGED_BEACON_ENABLED) && 2509 if (changes & BSS_CHANGED_BEACON_ENABLED) {
2507 vif->bss_conf.enable_beacon) { 2510 if (vif->bss_conf.enable_beacon) {
2508 memcpy(priv->staging_rxon.bssid_addr, 2511 memcpy(priv->staging_rxon.bssid_addr,
2509 bss_conf->bssid, ETH_ALEN); 2512 bss_conf->bssid, ETH_ALEN);
2510 memcpy(priv->bssid, bss_conf->bssid, ETH_ALEN); 2513 memcpy(priv->bssid, bss_conf->bssid, ETH_ALEN);
2511 iwlcore_config_ap(priv); 2514 iwlcore_config_ap(priv);
2515 } else
2516 iwl_set_no_assoc(priv);
2512 } 2517 }
2513 2518
2514 mutex_unlock(&priv->mutex); 2519 mutex_unlock(&priv->mutex);
@@ -2740,6 +2745,7 @@ int iwl_mac_config(struct ieee80211_hw *hw, u32 changed)
2740 priv->staging_rxon.flags = 0; 2745 priv->staging_rxon.flags = 0;
2741 2746
2742 iwl_set_rxon_channel(priv, conf->channel); 2747 iwl_set_rxon_channel(priv, conf->channel);
2748 iwl_set_rxon_ht(priv, ht_conf);
2743 2749
2744 iwl_set_flags_for_band(priv, conf->channel->band); 2750 iwl_set_flags_for_band(priv, conf->channel->band);
2745 spin_unlock_irqrestore(&priv->lock, flags); 2751 spin_unlock_irqrestore(&priv->lock, flags);
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
index 27ca859e7453..b69e972671b2 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
@@ -446,6 +446,8 @@ void iwl_hw_txq_ctx_free(struct iwl_priv *priv);
446int iwl_hw_tx_queue_init(struct iwl_priv *priv, 446int iwl_hw_tx_queue_init(struct iwl_priv *priv,
447 struct iwl_tx_queue *txq); 447 struct iwl_tx_queue *txq);
448int iwl_txq_update_write_ptr(struct iwl_priv *priv, struct iwl_tx_queue *txq); 448int iwl_txq_update_write_ptr(struct iwl_priv *priv, struct iwl_tx_queue *txq);
449void iwl_free_tfds_in_queue(struct iwl_priv *priv,
450 int sta_id, int tid, int freed);
449int iwl_tx_queue_init(struct iwl_priv *priv, struct iwl_tx_queue *txq, 451int iwl_tx_queue_init(struct iwl_priv *priv, struct iwl_tx_queue *txq,
450 int slots_num, u32 txq_id); 452 int slots_num, u32 txq_id);
451void iwl_tx_queue_free(struct iwl_priv *priv, int txq_id); 453void iwl_tx_queue_free(struct iwl_priv *priv, int txq_id);
diff --git a/drivers/net/wireless/iwlwifi/iwl-csr.h b/drivers/net/wireless/iwlwifi/iwl-csr.h
index a7bfae01f19b..1ec8cb4d5eae 100644
--- a/drivers/net/wireless/iwlwifi/iwl-csr.h
+++ b/drivers/net/wireless/iwlwifi/iwl-csr.h
@@ -77,8 +77,7 @@
77 * The MAC (uCode processor, etc.) does not need to be powered up for accessing 77 * The MAC (uCode processor, etc.) does not need to be powered up for accessing
78 * the CSR registers. 78 * the CSR registers.
79 * 79 *
80 * NOTE: Newer devices using one-time-programmable (OTP) memory 80 * NOTE: Device does need to be awake in order to read this memory
81 * require device to be awake in order to read this memory
82 * via CSR_EEPROM and CSR_OTP registers 81 * via CSR_EEPROM and CSR_OTP registers
83 */ 82 */
84#define CSR_BASE (0x000) 83#define CSR_BASE (0x000)
@@ -111,9 +110,8 @@
111/* 110/*
112 * EEPROM and OTP (one-time-programmable) memory reads 111 * EEPROM and OTP (one-time-programmable) memory reads
113 * 112 *
114 * NOTE: For (newer) devices using OTP, device must be awake, initialized via 113 * NOTE: Device must be awake, initialized via apm_ops.init(),
115 * apm_ops.init() in order to read. Older devices (3945/4965/5000) 114 * in order to read.
116 * use EEPROM and do not require this.
117 */ 115 */
118#define CSR_EEPROM_REG (CSR_BASE+0x02c) 116#define CSR_EEPROM_REG (CSR_BASE+0x02c)
119#define CSR_EEPROM_GP (CSR_BASE+0x030) 117#define CSR_EEPROM_GP (CSR_BASE+0x030)
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index 2673e9a4db92..3822cf53e368 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -711,7 +711,7 @@ extern void iwl_txq_ctx_stop(struct iwl_priv *priv);
711extern int iwl_queue_space(const struct iwl_queue *q); 711extern int iwl_queue_space(const struct iwl_queue *q);
712static inline int iwl_queue_used(const struct iwl_queue *q, int i) 712static inline int iwl_queue_used(const struct iwl_queue *q, int i)
713{ 713{
714 return q->write_ptr > q->read_ptr ? 714 return q->write_ptr >= q->read_ptr ?
715 (i >= q->read_ptr && i < q->write_ptr) : 715 (i >= q->read_ptr && i < q->write_ptr) :
716 !(i < q->read_ptr && i >= q->write_ptr); 716 !(i < q->read_ptr && i >= q->write_ptr);
717} 717}
@@ -1168,7 +1168,7 @@ struct iwl_priv {
1168 u32 last_beacon_time; 1168 u32 last_beacon_time;
1169 u64 last_tsf; 1169 u64 last_tsf;
1170 1170
1171 /* eeprom */ 1171 /* eeprom -- this is in the card's little endian byte order */
1172 u8 *eeprom; 1172 u8 *eeprom;
1173 int nvm_device_type; 1173 int nvm_device_type;
1174 struct iwl_eeprom_calib_info *calib_info; 1174 struct iwl_eeprom_calib_info *calib_info;
@@ -1353,4 +1353,15 @@ static inline int is_channel_ibss(const struct iwl_channel_info *ch)
1353 return ((ch->flags & EEPROM_CHANNEL_IBSS)) ? 1 : 0; 1353 return ((ch->flags & EEPROM_CHANNEL_IBSS)) ? 1 : 0;
1354} 1354}
1355 1355
1356static inline void __iwl_free_pages(struct iwl_priv *priv, struct page *page)
1357{
1358 __free_pages(page, priv->hw_params.rx_page_order);
1359 priv->alloc_rxb_page--;
1360}
1361
1362static inline void iwl_free_pages(struct iwl_priv *priv, unsigned long page)
1363{
1364 free_pages(page, priv->hw_params.rx_page_order);
1365 priv->alloc_rxb_page--;
1366}
1356#endif /* __iwl_dev_h__ */ 1367#endif /* __iwl_dev_h__ */
diff --git a/drivers/net/wireless/iwlwifi/iwl-devtrace.c b/drivers/net/wireless/iwlwifi/iwl-devtrace.c
index e7d88d1da15d..83cc4e500a96 100644
--- a/drivers/net/wireless/iwlwifi/iwl-devtrace.c
+++ b/drivers/net/wireless/iwlwifi/iwl-devtrace.c
@@ -1,3 +1,29 @@
1/******************************************************************************
2 *
3 * Copyright(c) 2009 - 2010 Intel Corporation. All rights reserved.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of version 2 of the GNU General Public License as
7 * published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along with
15 * this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
17 *
18 * The full GNU General Public License is included in this distribution in the
19 * file called LICENSE.
20 *
21 * Contact Information:
22 * Intel Linux Wireless <ilw@linux.intel.com>
23 * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
24 *
25 *****************************************************************************/
26
1#include <linux/module.h> 27#include <linux/module.h>
2 28
3/* sparse doesn't like tracepoint macros */ 29/* sparse doesn't like tracepoint macros */
diff --git a/drivers/net/wireless/iwlwifi/iwl-devtrace.h b/drivers/net/wireless/iwlwifi/iwl-devtrace.h
index 21361968ab7e..d9c7363b1bbb 100644
--- a/drivers/net/wireless/iwlwifi/iwl-devtrace.h
+++ b/drivers/net/wireless/iwlwifi/iwl-devtrace.h
@@ -1,3 +1,29 @@
1/******************************************************************************
2 *
3 * Copyright(c) 2009 - 2010 Intel Corporation. All rights reserved.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of version 2 of the GNU General Public License as
7 * published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along with
15 * this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
17 *
18 * The full GNU General Public License is included in this distribution in the
19 * file called LICENSE.
20 *
21 * Contact Information:
22 * Intel Linux Wireless <ilw@linux.intel.com>
23 * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
24 *
25 *****************************************************************************/
26
1#if !defined(__IWLWIFI_DEVICE_TRACE) || defined(TRACE_HEADER_MULTI_READ) 27#if !defined(__IWLWIFI_DEVICE_TRACE) || defined(TRACE_HEADER_MULTI_READ)
2#define __IWLWIFI_DEVICE_TRACE 28#define __IWLWIFI_DEVICE_TRACE
3 29
diff --git a/drivers/net/wireless/iwlwifi/iwl-eeprom.c b/drivers/net/wireless/iwlwifi/iwl-eeprom.c
index 3946e5c03f81..4a30969689ff 100644
--- a/drivers/net/wireless/iwlwifi/iwl-eeprom.c
+++ b/drivers/net/wireless/iwlwifi/iwl-eeprom.c
@@ -370,7 +370,7 @@ static int iwl_init_otp_access(struct iwl_priv *priv)
370 return ret; 370 return ret;
371} 371}
372 372
373static int iwl_read_otp_word(struct iwl_priv *priv, u16 addr, u16 *eeprom_data) 373static int iwl_read_otp_word(struct iwl_priv *priv, u16 addr, __le16 *eeprom_data)
374{ 374{
375 int ret = 0; 375 int ret = 0;
376 u32 r; 376 u32 r;
@@ -404,7 +404,7 @@ static int iwl_read_otp_word(struct iwl_priv *priv, u16 addr, u16 *eeprom_data)
404 CSR_OTP_GP_REG_ECC_CORR_STATUS_MSK); 404 CSR_OTP_GP_REG_ECC_CORR_STATUS_MSK);
405 IWL_ERR(priv, "Correctable OTP ECC error, continue read\n"); 405 IWL_ERR(priv, "Correctable OTP ECC error, continue read\n");
406 } 406 }
407 *eeprom_data = le16_to_cpu((__force __le16)(r >> 16)); 407 *eeprom_data = cpu_to_le16(r >> 16);
408 return 0; 408 return 0;
409} 409}
410 410
@@ -413,7 +413,8 @@ static int iwl_read_otp_word(struct iwl_priv *priv, u16 addr, u16 *eeprom_data)
413 */ 413 */
414static bool iwl_is_otp_empty(struct iwl_priv *priv) 414static bool iwl_is_otp_empty(struct iwl_priv *priv)
415{ 415{
416 u16 next_link_addr = 0, link_value; 416 u16 next_link_addr = 0;
417 __le16 link_value;
417 bool is_empty = false; 418 bool is_empty = false;
418 419
419 /* locate the beginning of OTP link list */ 420 /* locate the beginning of OTP link list */
@@ -443,7 +444,8 @@ static bool iwl_is_otp_empty(struct iwl_priv *priv)
443static int iwl_find_otp_image(struct iwl_priv *priv, 444static int iwl_find_otp_image(struct iwl_priv *priv,
444 u16 *validblockaddr) 445 u16 *validblockaddr)
445{ 446{
446 u16 next_link_addr = 0, link_value = 0, valid_addr; 447 u16 next_link_addr = 0, valid_addr;
448 __le16 link_value = 0;
447 int usedblocks = 0; 449 int usedblocks = 0;
448 450
449 /* set addressing mode to absolute to traverse the link list */ 451 /* set addressing mode to absolute to traverse the link list */
@@ -463,7 +465,7 @@ static int iwl_find_otp_image(struct iwl_priv *priv,
463 * check for more block on the link list 465 * check for more block on the link list
464 */ 466 */
465 valid_addr = next_link_addr; 467 valid_addr = next_link_addr;
466 next_link_addr = link_value * sizeof(u16); 468 next_link_addr = le16_to_cpu(link_value) * sizeof(u16);
467 IWL_DEBUG_INFO(priv, "OTP blocks %d addr 0x%x\n", 469 IWL_DEBUG_INFO(priv, "OTP blocks %d addr 0x%x\n",
468 usedblocks, next_link_addr); 470 usedblocks, next_link_addr);
469 if (iwl_read_otp_word(priv, next_link_addr, &link_value)) 471 if (iwl_read_otp_word(priv, next_link_addr, &link_value))
@@ -497,7 +499,7 @@ static int iwl_find_otp_image(struct iwl_priv *priv,
497 */ 499 */
498int iwl_eeprom_init(struct iwl_priv *priv) 500int iwl_eeprom_init(struct iwl_priv *priv)
499{ 501{
500 u16 *e; 502 __le16 *e;
501 u32 gp = iwl_read32(priv, CSR_EEPROM_GP); 503 u32 gp = iwl_read32(priv, CSR_EEPROM_GP);
502 int sz; 504 int sz;
503 int ret; 505 int ret;
@@ -516,12 +518,9 @@ int iwl_eeprom_init(struct iwl_priv *priv)
516 ret = -ENOMEM; 518 ret = -ENOMEM;
517 goto alloc_err; 519 goto alloc_err;
518 } 520 }
519 e = (u16 *)priv->eeprom; 521 e = (__le16 *)priv->eeprom;
520 522
521 if (priv->nvm_device_type == NVM_DEVICE_TYPE_OTP) { 523 priv->cfg->ops->lib->apm_ops.init(priv);
522 /* OTP reads require powered-up chip */
523 priv->cfg->ops->lib->apm_ops.init(priv);
524 }
525 524
526 ret = priv->cfg->ops->lib->eeprom_ops.verify_signature(priv); 525 ret = priv->cfg->ops->lib->eeprom_ops.verify_signature(priv);
527 if (ret < 0) { 526 if (ret < 0) {
@@ -562,7 +561,7 @@ int iwl_eeprom_init(struct iwl_priv *priv)
562 } 561 }
563 for (addr = validblockaddr; addr < validblockaddr + sz; 562 for (addr = validblockaddr; addr < validblockaddr + sz;
564 addr += sizeof(u16)) { 563 addr += sizeof(u16)) {
565 u16 eeprom_data; 564 __le16 eeprom_data;
566 565
567 ret = iwl_read_otp_word(priv, addr, &eeprom_data); 566 ret = iwl_read_otp_word(priv, addr, &eeprom_data);
568 if (ret) 567 if (ret)
@@ -570,13 +569,6 @@ int iwl_eeprom_init(struct iwl_priv *priv)
570 e[cache_addr / 2] = eeprom_data; 569 e[cache_addr / 2] = eeprom_data;
571 cache_addr += sizeof(u16); 570 cache_addr += sizeof(u16);
572 } 571 }
573
574 /*
575 * Now that OTP reads are complete, reset chip to save
576 * power until we load uCode during "up".
577 */
578 priv->cfg->ops->lib->apm_ops.stop(priv);
579
580 } else { 572 } else {
581 /* eeprom is an array of 16bit values */ 573 /* eeprom is an array of 16bit values */
582 for (addr = 0; addr < sz; addr += sizeof(u16)) { 574 for (addr = 0; addr < sz; addr += sizeof(u16)) {
@@ -594,7 +586,7 @@ int iwl_eeprom_init(struct iwl_priv *priv)
594 goto done; 586 goto done;
595 } 587 }
596 r = _iwl_read_direct32(priv, CSR_EEPROM_REG); 588 r = _iwl_read_direct32(priv, CSR_EEPROM_REG);
597 e[addr / 2] = le16_to_cpu((__force __le16)(r >> 16)); 589 e[addr / 2] = cpu_to_le16(r >> 16);
598 } 590 }
599 } 591 }
600 ret = 0; 592 ret = 0;
@@ -603,6 +595,8 @@ done:
603err: 595err:
604 if (ret) 596 if (ret)
605 iwl_eeprom_free(priv); 597 iwl_eeprom_free(priv);
598 /* Reset chip to save power until we load uCode during "up". */
599 priv->cfg->ops->lib->apm_ops.stop(priv);
606alloc_err: 600alloc_err:
607 return ret; 601 return ret;
608} 602}
@@ -755,7 +749,8 @@ static int iwl_mod_ht40_chan_info(struct iwl_priv *priv,
755 ch_info->ht40_eeprom = *eeprom_ch; 749 ch_info->ht40_eeprom = *eeprom_ch;
756 ch_info->ht40_max_power_avg = eeprom_ch->max_power_avg; 750 ch_info->ht40_max_power_avg = eeprom_ch->max_power_avg;
757 ch_info->ht40_flags = eeprom_ch->flags; 751 ch_info->ht40_flags = eeprom_ch->flags;
758 ch_info->ht40_extension_channel &= ~clear_ht40_extension_channel; 752 if (eeprom_ch->flags & EEPROM_CHANNEL_VALID)
753 ch_info->ht40_extension_channel &= ~clear_ht40_extension_channel;
759 754
760 return 0; 755 return 0;
761} 756}
diff --git a/drivers/net/wireless/iwlwifi/iwl-eeprom.h b/drivers/net/wireless/iwlwifi/iwl-eeprom.h
index 5cd2b66bbe45..0cd9c02ee044 100644
--- a/drivers/net/wireless/iwlwifi/iwl-eeprom.h
+++ b/drivers/net/wireless/iwlwifi/iwl-eeprom.h
@@ -137,7 +137,7 @@ struct iwl_eeprom_channel {
137 * 137 *
138 */ 138 */
139struct iwl_eeprom_enhanced_txpwr { 139struct iwl_eeprom_enhanced_txpwr {
140 u16 common; 140 __le16 common;
141 s8 chain_a_max; 141 s8 chain_a_max;
142 s8 chain_b_max; 142 s8 chain_b_max;
143 s8 chain_c_max; 143 s8 chain_c_max;
@@ -360,7 +360,7 @@ struct iwl_eeprom_calib_subband_info {
360struct iwl_eeprom_calib_info { 360struct iwl_eeprom_calib_info {
361 u8 saturation_power24; /* half-dBm (e.g. "34" = 17 dBm) */ 361 u8 saturation_power24; /* half-dBm (e.g. "34" = 17 dBm) */
362 u8 saturation_power52; /* half-dBm */ 362 u8 saturation_power52; /* half-dBm */
363 s16 voltage; /* signed */ 363 __le16 voltage; /* signed */
364 struct iwl_eeprom_calib_subband_info 364 struct iwl_eeprom_calib_subband_info
365 band_info[EEPROM_TX_POWER_BANDS]; 365 band_info[EEPROM_TX_POWER_BANDS];
366} __attribute__ ((packed)); 366} __attribute__ ((packed));
diff --git a/drivers/net/wireless/iwlwifi/iwl-hcmd.c b/drivers/net/wireless/iwlwifi/iwl-hcmd.c
index a23165948202..30e9ea6d54ec 100644
--- a/drivers/net/wireless/iwlwifi/iwl-hcmd.c
+++ b/drivers/net/wireless/iwlwifi/iwl-hcmd.c
@@ -234,7 +234,7 @@ cancel:
234 } 234 }
235fail: 235fail:
236 if (cmd->reply_page) { 236 if (cmd->reply_page) {
237 free_pages(cmd->reply_page, priv->hw_params.rx_page_order); 237 iwl_free_pages(priv, cmd->reply_page);
238 cmd->reply_page = 0; 238 cmd->reply_page = 0;
239 } 239 }
240out: 240out:
diff --git a/drivers/net/wireless/iwlwifi/iwl-rx.c b/drivers/net/wireless/iwlwifi/iwl-rx.c
index 6090bc15a6d5..2dbce85404aa 100644
--- a/drivers/net/wireless/iwlwifi/iwl-rx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-rx.c
@@ -345,10 +345,8 @@ void iwl_rx_queue_free(struct iwl_priv *priv, struct iwl_rx_queue *rxq)
345 pci_unmap_page(priv->pci_dev, rxq->pool[i].page_dma, 345 pci_unmap_page(priv->pci_dev, rxq->pool[i].page_dma,
346 PAGE_SIZE << priv->hw_params.rx_page_order, 346 PAGE_SIZE << priv->hw_params.rx_page_order,
347 PCI_DMA_FROMDEVICE); 347 PCI_DMA_FROMDEVICE);
348 __free_pages(rxq->pool[i].page, 348 __iwl_free_pages(priv, rxq->pool[i].page);
349 priv->hw_params.rx_page_order);
350 rxq->pool[i].page = NULL; 349 rxq->pool[i].page = NULL;
351 priv->alloc_rxb_page--;
352 } 350 }
353 } 351 }
354 352
@@ -416,9 +414,7 @@ void iwl_rx_queue_reset(struct iwl_priv *priv, struct iwl_rx_queue *rxq)
416 pci_unmap_page(priv->pci_dev, rxq->pool[i].page_dma, 414 pci_unmap_page(priv->pci_dev, rxq->pool[i].page_dma,
417 PAGE_SIZE << priv->hw_params.rx_page_order, 415 PAGE_SIZE << priv->hw_params.rx_page_order,
418 PCI_DMA_FROMDEVICE); 416 PCI_DMA_FROMDEVICE);
419 priv->alloc_rxb_page--; 417 __iwl_free_pages(priv, rxq->pool[i].page);
420 __free_pages(rxq->pool[i].page,
421 priv->hw_params.rx_page_order);
422 rxq->pool[i].page = NULL; 418 rxq->pool[i].page = NULL;
423 } 419 }
424 list_add_tail(&rxq->pool[i].list, &rxq->rx_used); 420 list_add_tail(&rxq->pool[i].list, &rxq->rx_used);
@@ -654,47 +650,6 @@ void iwl_reply_statistics(struct iwl_priv *priv,
654} 650}
655EXPORT_SYMBOL(iwl_reply_statistics); 651EXPORT_SYMBOL(iwl_reply_statistics);
656 652
657#define PERFECT_RSSI (-20) /* dBm */
658#define WORST_RSSI (-95) /* dBm */
659#define RSSI_RANGE (PERFECT_RSSI - WORST_RSSI)
660
661/* Calculate an indication of rx signal quality (a percentage, not dBm!).
662 * See http://www.ces.clemson.edu/linux/signal_quality.shtml for info
663 * about formulas used below. */
664static int iwl_calc_sig_qual(int rssi_dbm, int noise_dbm)
665{
666 int sig_qual;
667 int degradation = PERFECT_RSSI - rssi_dbm;
668
669 /* If we get a noise measurement, use signal-to-noise ratio (SNR)
670 * as indicator; formula is (signal dbm - noise dbm).
671 * SNR at or above 40 is a great signal (100%).
672 * Below that, scale to fit SNR of 0 - 40 dB within 0 - 100% indicator.
673 * Weakest usable signal is usually 10 - 15 dB SNR. */
674 if (noise_dbm) {
675 if (rssi_dbm - noise_dbm >= 40)
676 return 100;
677 else if (rssi_dbm < noise_dbm)
678 return 0;
679 sig_qual = ((rssi_dbm - noise_dbm) * 5) / 2;
680
681 /* Else use just the signal level.
682 * This formula is a least squares fit of data points collected and
683 * compared with a reference system that had a percentage (%) display
684 * for signal quality. */
685 } else
686 sig_qual = (100 * (RSSI_RANGE * RSSI_RANGE) - degradation *
687 (15 * RSSI_RANGE + 62 * degradation)) /
688 (RSSI_RANGE * RSSI_RANGE);
689
690 if (sig_qual > 100)
691 sig_qual = 100;
692 else if (sig_qual < 1)
693 sig_qual = 0;
694
695 return sig_qual;
696}
697
698/* Calc max signal level (dBm) among 3 possible receivers */ 653/* Calc max signal level (dBm) among 3 possible receivers */
699static inline int iwl_calc_rssi(struct iwl_priv *priv, 654static inline int iwl_calc_rssi(struct iwl_priv *priv,
700 struct iwl_rx_phy_res *rx_resp) 655 struct iwl_rx_phy_res *rx_resp)
@@ -973,7 +928,10 @@ static void iwl_pass_packet_to_mac80211(struct iwl_priv *priv,
973 if (ieee80211_is_mgmt(fc) || 928 if (ieee80211_is_mgmt(fc) ||
974 ieee80211_has_protected(fc) || 929 ieee80211_has_protected(fc) ||
975 ieee80211_has_morefrags(fc) || 930 ieee80211_has_morefrags(fc) ||
976 le16_to_cpu(hdr->seq_ctrl) & IEEE80211_SCTL_FRAG) 931 le16_to_cpu(hdr->seq_ctrl) & IEEE80211_SCTL_FRAG ||
932 (ieee80211_is_data_qos(fc) &&
933 *ieee80211_get_qos_ctl(hdr) &
934 IEEE80211_QOS_CONTROL_A_MSDU_PRESENT))
977 ret = skb_linearize(skb); 935 ret = skb_linearize(skb);
978 else 936 else
979 ret = __pskb_pull_tail(skb, min_t(u16, IWL_LINK_HDR_MAX, len)) ? 937 ret = __pskb_pull_tail(skb, min_t(u16, IWL_LINK_HDR_MAX, len)) ?
@@ -1105,11 +1063,8 @@ void iwl_rx_reply_rx(struct iwl_priv *priv,
1105 if (iwl_is_associated(priv) && 1063 if (iwl_is_associated(priv) &&
1106 !test_bit(STATUS_SCANNING, &priv->status)) { 1064 !test_bit(STATUS_SCANNING, &priv->status)) {
1107 rx_status.noise = priv->last_rx_noise; 1065 rx_status.noise = priv->last_rx_noise;
1108 rx_status.qual = iwl_calc_sig_qual(rx_status.signal,
1109 rx_status.noise);
1110 } else { 1066 } else {
1111 rx_status.noise = IWL_NOISE_MEAS_NOT_AVAILABLE; 1067 rx_status.noise = IWL_NOISE_MEAS_NOT_AVAILABLE;
1112 rx_status.qual = iwl_calc_sig_qual(rx_status.signal, 0);
1113 } 1068 }
1114 1069
1115 /* Reset beacon noise level if not associated. */ 1070 /* Reset beacon noise level if not associated. */
@@ -1122,8 +1077,8 @@ void iwl_rx_reply_rx(struct iwl_priv *priv,
1122 iwl_dbg_report_frame(priv, phy_res, len, header, 1); 1077 iwl_dbg_report_frame(priv, phy_res, len, header, 1);
1123#endif 1078#endif
1124 iwl_dbg_log_rx_data_frame(priv, len, header); 1079 iwl_dbg_log_rx_data_frame(priv, len, header);
1125 IWL_DEBUG_STATS_LIMIT(priv, "Rssi %d, noise %d, qual %d, TSF %llu\n", 1080 IWL_DEBUG_STATS_LIMIT(priv, "Rssi %d, noise %d, TSF %llu\n",
1126 rx_status.signal, rx_status.noise, rx_status.qual, 1081 rx_status.signal, rx_status.noise,
1127 (unsigned long long)rx_status.mactime); 1082 (unsigned long long)rx_status.mactime);
1128 1083
1129 /* 1084 /*
diff --git a/drivers/net/wireless/iwlwifi/iwl-scan.c b/drivers/net/wireless/iwlwifi/iwl-scan.c
index a2b2b8315ff9..fa1c89ba6459 100644
--- a/drivers/net/wireless/iwlwifi/iwl-scan.c
+++ b/drivers/net/wireless/iwlwifi/iwl-scan.c
@@ -144,8 +144,7 @@ static int iwl_send_scan_abort(struct iwl_priv *priv)
144 clear_bit(STATUS_SCAN_HW, &priv->status); 144 clear_bit(STATUS_SCAN_HW, &priv->status);
145 } 145 }
146 146
147 priv->alloc_rxb_page--; 147 iwl_free_pages(priv, cmd.reply_page);
148 free_pages(cmd.reply_page, priv->hw_params.rx_page_order);
149 148
150 return ret; 149 return ret;
151} 150}
diff --git a/drivers/net/wireless/iwlwifi/iwl-sta.c b/drivers/net/wireless/iwlwifi/iwl-sta.c
index cd6a6901216e..90fbdb25399e 100644
--- a/drivers/net/wireless/iwlwifi/iwl-sta.c
+++ b/drivers/net/wireless/iwlwifi/iwl-sta.c
@@ -164,9 +164,7 @@ int iwl_send_add_sta(struct iwl_priv *priv,
164 break; 164 break;
165 } 165 }
166 } 166 }
167 167 iwl_free_pages(priv, cmd.reply_page);
168 priv->alloc_rxb_page--;
169 free_pages(cmd.reply_page, priv->hw_params.rx_page_order);
170 168
171 return ret; 169 return ret;
172} 170}
@@ -299,7 +297,7 @@ u8 iwl_add_station(struct iwl_priv *priv, const u8 *addr, bool is_ap, u8 flags,
299} 297}
300EXPORT_SYMBOL(iwl_add_station); 298EXPORT_SYMBOL(iwl_add_station);
301 299
302static void iwl_sta_ucode_deactivate(struct iwl_priv *priv, const char *addr) 300static void iwl_sta_ucode_deactivate(struct iwl_priv *priv, const u8 *addr)
303{ 301{
304 unsigned long flags; 302 unsigned long flags;
305 u8 sta_id = iwl_find_station(priv, addr); 303 u8 sta_id = iwl_find_station(priv, addr);
@@ -326,7 +324,7 @@ static void iwl_remove_sta_callback(struct iwl_priv *priv,
326{ 324{
327 struct iwl_rem_sta_cmd *rm_sta = 325 struct iwl_rem_sta_cmd *rm_sta =
328 (struct iwl_rem_sta_cmd *)cmd->cmd.payload; 326 (struct iwl_rem_sta_cmd *)cmd->cmd.payload;
329 const char *addr = rm_sta->addr; 327 const u8 *addr = rm_sta->addr;
330 328
331 if (pkt->hdr.flags & IWL_CMD_FAILED_MSK) { 329 if (pkt->hdr.flags & IWL_CMD_FAILED_MSK) {
332 IWL_ERR(priv, "Bad return from REPLY_REMOVE_STA (0x%08X)\n", 330 IWL_ERR(priv, "Bad return from REPLY_REMOVE_STA (0x%08X)\n",
@@ -391,9 +389,7 @@ static int iwl_send_remove_station(struct iwl_priv *priv, const u8 *addr,
391 break; 389 break;
392 } 390 }
393 } 391 }
394 392 iwl_free_pages(priv, cmd.reply_page);
395 priv->alloc_rxb_page--;
396 free_pages(cmd.reply_page, priv->hw_params.rx_page_order);
397 393
398 return ret; 394 return ret;
399} 395}
diff --git a/drivers/net/wireless/iwlwifi/iwl-tx.c b/drivers/net/wireless/iwlwifi/iwl-tx.c
index 00da5e152d46..8f4071562857 100644
--- a/drivers/net/wireless/iwlwifi/iwl-tx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-tx.c
@@ -120,6 +120,20 @@ int iwl_txq_update_write_ptr(struct iwl_priv *priv, struct iwl_tx_queue *txq)
120EXPORT_SYMBOL(iwl_txq_update_write_ptr); 120EXPORT_SYMBOL(iwl_txq_update_write_ptr);
121 121
122 122
123void iwl_free_tfds_in_queue(struct iwl_priv *priv,
124 int sta_id, int tid, int freed)
125{
126 if (priv->stations[sta_id].tid[tid].tfds_in_queue >= freed)
127 priv->stations[sta_id].tid[tid].tfds_in_queue -= freed;
128 else {
129 IWL_ERR(priv, "free more than tfds_in_queue (%u:%d)\n",
130 priv->stations[sta_id].tid[tid].tfds_in_queue,
131 freed);
132 priv->stations[sta_id].tid[tid].tfds_in_queue = 0;
133 }
134}
135EXPORT_SYMBOL(iwl_free_tfds_in_queue);
136
123/** 137/**
124 * iwl_tx_queue_free - Deallocate DMA queue. 138 * iwl_tx_queue_free - Deallocate DMA queue.
125 * @txq: Transmit queue to deallocate. 139 * @txq: Transmit queue to deallocate.
@@ -407,13 +421,14 @@ void iwl_hw_txq_ctx_free(struct iwl_priv *priv)
407 int txq_id; 421 int txq_id;
408 422
409 /* Tx queues */ 423 /* Tx queues */
410 if (priv->txq) 424 if (priv->txq) {
411 for (txq_id = 0; txq_id < priv->hw_params.max_txq_num; 425 for (txq_id = 0; txq_id < priv->hw_params.max_txq_num;
412 txq_id++) 426 txq_id++)
413 if (txq_id == IWL_CMD_QUEUE_NUM) 427 if (txq_id == IWL_CMD_QUEUE_NUM)
414 iwl_cmd_queue_free(priv); 428 iwl_cmd_queue_free(priv);
415 else 429 else
416 iwl_tx_queue_free(priv, txq_id); 430 iwl_tx_queue_free(priv, txq_id);
431 }
417 iwl_free_dma_ptr(priv, &priv->kw); 432 iwl_free_dma_ptr(priv, &priv->kw);
418 433
419 iwl_free_dma_ptr(priv, &priv->scd_bc_tbls); 434 iwl_free_dma_ptr(priv, &priv->scd_bc_tbls);
@@ -1130,6 +1145,7 @@ int iwl_tx_queue_reclaim(struct iwl_priv *priv, int txq_id, int index)
1130 struct iwl_queue *q = &txq->q; 1145 struct iwl_queue *q = &txq->q;
1131 struct iwl_tx_info *tx_info; 1146 struct iwl_tx_info *tx_info;
1132 int nfreed = 0; 1147 int nfreed = 0;
1148 struct ieee80211_hdr *hdr;
1133 1149
1134 if ((index >= q->n_bd) || (iwl_queue_used(q, index) == 0)) { 1150 if ((index >= q->n_bd) || (iwl_queue_used(q, index) == 0)) {
1135 IWL_ERR(priv, "Read index for DMA queue txq id (%d), index %d, " 1151 IWL_ERR(priv, "Read index for DMA queue txq id (%d), index %d, "
@@ -1144,13 +1160,16 @@ int iwl_tx_queue_reclaim(struct iwl_priv *priv, int txq_id, int index)
1144 1160
1145 tx_info = &txq->txb[txq->q.read_ptr]; 1161 tx_info = &txq->txb[txq->q.read_ptr];
1146 iwl_tx_status(priv, tx_info->skb[0]); 1162 iwl_tx_status(priv, tx_info->skb[0]);
1163
1164 hdr = (struct ieee80211_hdr *)tx_info->skb[0]->data;
1165 if (hdr && ieee80211_is_data_qos(hdr->frame_control))
1166 nfreed++;
1147 tx_info->skb[0] = NULL; 1167 tx_info->skb[0] = NULL;
1148 1168
1149 if (priv->cfg->ops->lib->txq_inval_byte_cnt_tbl) 1169 if (priv->cfg->ops->lib->txq_inval_byte_cnt_tbl)
1150 priv->cfg->ops->lib->txq_inval_byte_cnt_tbl(priv, txq); 1170 priv->cfg->ops->lib->txq_inval_byte_cnt_tbl(priv, txq);
1151 1171
1152 priv->cfg->ops->lib->txq_free_tfd(priv, txq); 1172 priv->cfg->ops->lib->txq_free_tfd(priv, txq);
1153 nfreed++;
1154 } 1173 }
1155 return nfreed; 1174 return nfreed;
1156} 1175}
@@ -1558,7 +1577,7 @@ void iwl_rx_reply_compressed_ba(struct iwl_priv *priv,
1558 if (txq->q.read_ptr != (ba_resp_scd_ssn & 0xff)) { 1577 if (txq->q.read_ptr != (ba_resp_scd_ssn & 0xff)) {
1559 /* calculate mac80211 ampdu sw queue to wake */ 1578 /* calculate mac80211 ampdu sw queue to wake */
1560 int freed = iwl_tx_queue_reclaim(priv, scd_flow, index); 1579 int freed = iwl_tx_queue_reclaim(priv, scd_flow, index);
1561 priv->stations[sta_id].tid[tid].tfds_in_queue -= freed; 1580 iwl_free_tfds_in_queue(priv, sta_id, tid, freed);
1562 1581
1563 if ((iwl_queue_space(&txq->q) > txq->q.low_mark) && 1582 if ((iwl_queue_space(&txq->q) > txq->q.low_mark) &&
1564 priv->mac80211_registered && 1583 priv->mac80211_registered &&
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index 2a28a1f8b1fe..f8e4e4b18d02 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -548,6 +548,9 @@ static int iwl3945_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
548 txq = &priv->txq[txq_id]; 548 txq = &priv->txq[txq_id];
549 q = &txq->q; 549 q = &txq->q;
550 550
551 if ((iwl_queue_space(q) < q->high_mark))
552 goto drop;
553
551 spin_lock_irqsave(&priv->lock, flags); 554 spin_lock_irqsave(&priv->lock, flags);
552 555
553 idx = get_cmd_index(q, q->write_ptr, 0); 556 idx = get_cmd_index(q, q->write_ptr, 0);
@@ -812,7 +815,7 @@ static int iwl3945_get_measurement(struct iwl_priv *priv,
812 break; 815 break;
813 } 816 }
814 817
815 free_pages(cmd.reply_page, priv->hw_params.rx_page_order); 818 iwl_free_pages(priv, cmd.reply_page);
816 819
817 return rc; 820 return rc;
818} 821}
@@ -1198,9 +1201,7 @@ void iwl3945_rx_queue_reset(struct iwl_priv *priv, struct iwl_rx_queue *rxq)
1198 pci_unmap_page(priv->pci_dev, rxq->pool[i].page_dma, 1201 pci_unmap_page(priv->pci_dev, rxq->pool[i].page_dma,
1199 PAGE_SIZE << priv->hw_params.rx_page_order, 1202 PAGE_SIZE << priv->hw_params.rx_page_order,
1200 PCI_DMA_FROMDEVICE); 1203 PCI_DMA_FROMDEVICE);
1201 priv->alloc_rxb_page--; 1204 __iwl_free_pages(priv, rxq->pool[i].page);
1202 __free_pages(rxq->pool[i].page,
1203 priv->hw_params.rx_page_order);
1204 rxq->pool[i].page = NULL; 1205 rxq->pool[i].page = NULL;
1205 } 1206 }
1206 list_add_tail(&rxq->pool[i].list, &rxq->rx_used); 1207 list_add_tail(&rxq->pool[i].list, &rxq->rx_used);
@@ -1247,10 +1248,8 @@ static void iwl3945_rx_queue_free(struct iwl_priv *priv, struct iwl_rx_queue *rx
1247 pci_unmap_page(priv->pci_dev, rxq->pool[i].page_dma, 1248 pci_unmap_page(priv->pci_dev, rxq->pool[i].page_dma,
1248 PAGE_SIZE << priv->hw_params.rx_page_order, 1249 PAGE_SIZE << priv->hw_params.rx_page_order,
1249 PCI_DMA_FROMDEVICE); 1250 PCI_DMA_FROMDEVICE);
1250 __free_pages(rxq->pool[i].page, 1251 __iwl_free_pages(priv, rxq->pool[i].page);
1251 priv->hw_params.rx_page_order);
1252 rxq->pool[i].page = NULL; 1252 rxq->pool[i].page = NULL;
1253 priv->alloc_rxb_page--;
1254 } 1253 }
1255 } 1254 }
1256 1255
@@ -1300,47 +1299,6 @@ int iwl3945_calc_db_from_ratio(int sig_ratio)
1300 return (int)ratio2dB[sig_ratio]; 1299 return (int)ratio2dB[sig_ratio];
1301} 1300}
1302 1301
1303#define PERFECT_RSSI (-20) /* dBm */
1304#define WORST_RSSI (-95) /* dBm */
1305#define RSSI_RANGE (PERFECT_RSSI - WORST_RSSI)
1306
1307/* Calculate an indication of rx signal quality (a percentage, not dBm!).
1308 * See http://www.ces.clemson.edu/linux/signal_quality.shtml for info
1309 * about formulas used below. */
1310int iwl3945_calc_sig_qual(int rssi_dbm, int noise_dbm)
1311{
1312 int sig_qual;
1313 int degradation = PERFECT_RSSI - rssi_dbm;
1314
1315 /* If we get a noise measurement, use signal-to-noise ratio (SNR)
1316 * as indicator; formula is (signal dbm - noise dbm).
1317 * SNR at or above 40 is a great signal (100%).
1318 * Below that, scale to fit SNR of 0 - 40 dB within 0 - 100% indicator.
1319 * Weakest usable signal is usually 10 - 15 dB SNR. */
1320 if (noise_dbm) {
1321 if (rssi_dbm - noise_dbm >= 40)
1322 return 100;
1323 else if (rssi_dbm < noise_dbm)
1324 return 0;
1325 sig_qual = ((rssi_dbm - noise_dbm) * 5) / 2;
1326
1327 /* Else use just the signal level.
1328 * This formula is a least squares fit of data points collected and
1329 * compared with a reference system that had a percentage (%) display
1330 * for signal quality. */
1331 } else
1332 sig_qual = (100 * (RSSI_RANGE * RSSI_RANGE) - degradation *
1333 (15 * RSSI_RANGE + 62 * degradation)) /
1334 (RSSI_RANGE * RSSI_RANGE);
1335
1336 if (sig_qual > 100)
1337 sig_qual = 100;
1338 else if (sig_qual < 1)
1339 sig_qual = 0;
1340
1341 return sig_qual;
1342}
1343
1344/** 1302/**
1345 * iwl3945_rx_handle - Main entry function for receiving responses from uCode 1303 * iwl3945_rx_handle - Main entry function for receiving responses from uCode
1346 * 1304 *
@@ -1688,7 +1646,7 @@ void iwl3945_dump_nic_event_log(struct iwl_priv *priv, bool full_log)
1688 } 1646 }
1689 1647
1690#ifdef CONFIG_IWLWIFI_DEBUG 1648#ifdef CONFIG_IWLWIFI_DEBUG
1691 if (!(iwl_get_debug_level(priv) & IWL_DL_FW_ERRORS)) 1649 if (!(iwl_get_debug_level(priv) & IWL_DL_FW_ERRORS) && !full_log)
1692 size = (size > DEFAULT_IWL3945_DUMP_EVENT_LOG_ENTRIES) 1650 size = (size > DEFAULT_IWL3945_DUMP_EVENT_LOG_ENTRIES)
1693 ? DEFAULT_IWL3945_DUMP_EVENT_LOG_ENTRIES : size; 1651 ? DEFAULT_IWL3945_DUMP_EVENT_LOG_ENTRIES : size;
1694#else 1652#else
@@ -3867,7 +3825,6 @@ static int iwl3945_init_drv(struct iwl_priv *priv)
3867 priv->retry_rate = 1; 3825 priv->retry_rate = 1;
3868 priv->ibss_beacon = NULL; 3826 priv->ibss_beacon = NULL;
3869 3827
3870 spin_lock_init(&priv->lock);
3871 spin_lock_init(&priv->sta_lock); 3828 spin_lock_init(&priv->sta_lock);
3872 spin_lock_init(&priv->hcmd_lock); 3829 spin_lock_init(&priv->hcmd_lock);
3873 3830
@@ -3936,9 +3893,11 @@ static int iwl3945_setup_mac(struct iwl_priv *priv)
3936 /* Tell mac80211 our characteristics */ 3893 /* Tell mac80211 our characteristics */
3937 hw->flags = IEEE80211_HW_SIGNAL_DBM | 3894 hw->flags = IEEE80211_HW_SIGNAL_DBM |
3938 IEEE80211_HW_NOISE_DBM | 3895 IEEE80211_HW_NOISE_DBM |
3939 IEEE80211_HW_SPECTRUM_MGMT | 3896 IEEE80211_HW_SPECTRUM_MGMT;
3940 IEEE80211_HW_SUPPORTS_PS | 3897
3941 IEEE80211_HW_SUPPORTS_DYNAMIC_PS; 3898 if (!priv->cfg->broken_powersave)
3899 hw->flags |= IEEE80211_HW_SUPPORTS_PS |
3900 IEEE80211_HW_SUPPORTS_DYNAMIC_PS;
3942 3901
3943 hw->wiphy->interface_modes = 3902 hw->wiphy->interface_modes =
3944 BIT(NL80211_IFTYPE_STATION) | 3903 BIT(NL80211_IFTYPE_STATION) |
@@ -4057,10 +4016,11 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e
4057 * PCI Tx retries from interfering with C3 CPU state */ 4016 * PCI Tx retries from interfering with C3 CPU state */
4058 pci_write_config_byte(pdev, 0x41, 0x00); 4017 pci_write_config_byte(pdev, 0x41, 0x00);
4059 4018
4060 /* this spin lock will be used in apm_ops.init and EEPROM access 4019 /* these spin locks will be used in apm_ops.init and EEPROM access
4061 * we should init now 4020 * we should init now
4062 */ 4021 */
4063 spin_lock_init(&priv->reg_lock); 4022 spin_lock_init(&priv->reg_lock);
4023 spin_lock_init(&priv->lock);
4064 4024
4065 /*********************** 4025 /***********************
4066 * 4. Read EEPROM 4026 * 4. Read EEPROM
diff --git a/drivers/net/wireless/iwmc3200wifi/commands.c b/drivers/net/wireless/iwmc3200wifi/commands.c
index 777584d76a88..1e41ad0fcad5 100644
--- a/drivers/net/wireless/iwmc3200wifi/commands.c
+++ b/drivers/net/wireless/iwmc3200wifi/commands.c
@@ -973,6 +973,10 @@ int iwm_send_pmkid_update(struct iwm_priv *iwm,
973 973
974 memset(&update, 0, sizeof(struct iwm_umac_pmkid_update)); 974 memset(&update, 0, sizeof(struct iwm_umac_pmkid_update));
975 975
976 update.hdr.oid = UMAC_WIFI_IF_CMD_PMKID_UPDATE;
977 update.hdr.buf_size = cpu_to_le16(sizeof(struct iwm_umac_pmkid_update) -
978 sizeof(struct iwm_umac_wifi_if));
979
976 update.command = cpu_to_le32(command); 980 update.command = cpu_to_le32(command);
977 if (pmksa->bssid) 981 if (pmksa->bssid)
978 memcpy(&update.bssid, pmksa->bssid, ETH_ALEN); 982 memcpy(&update.bssid, pmksa->bssid, ETH_ALEN);
diff --git a/drivers/net/wireless/iwmc3200wifi/commands.h b/drivers/net/wireless/iwmc3200wifi/commands.h
index 06af0552cd75..3dfd9f0e9003 100644
--- a/drivers/net/wireless/iwmc3200wifi/commands.h
+++ b/drivers/net/wireless/iwmc3200wifi/commands.h
@@ -463,6 +463,7 @@ struct iwm_umac_cmd_stop_resume_tx {
463#define IWM_CMD_PMKID_FLUSH 3 463#define IWM_CMD_PMKID_FLUSH 3
464 464
465struct iwm_umac_pmkid_update { 465struct iwm_umac_pmkid_update {
466 struct iwm_umac_wifi_if hdr;
466 __le32 command; 467 __le32 command;
467 u8 bssid[ETH_ALEN]; 468 u8 bssid[ETH_ALEN];
468 __le16 reserved; 469 __le16 reserved;
diff --git a/drivers/net/wireless/iwmc3200wifi/iwm.h b/drivers/net/wireless/iwmc3200wifi/iwm.h
index 5a26bb05a33a..842811142bef 100644
--- a/drivers/net/wireless/iwmc3200wifi/iwm.h
+++ b/drivers/net/wireless/iwmc3200wifi/iwm.h
@@ -268,7 +268,7 @@ struct iwm_priv {
268 268
269 struct sk_buff_head rx_list; 269 struct sk_buff_head rx_list;
270 struct list_head rx_tickets; 270 struct list_head rx_tickets;
271 struct list_head rx_packets[IWM_RX_ID_HASH]; 271 struct list_head rx_packets[IWM_RX_ID_HASH + 1];
272 struct workqueue_struct *rx_wq; 272 struct workqueue_struct *rx_wq;
273 struct work_struct rx_worker; 273 struct work_struct rx_worker;
274 274
@@ -349,7 +349,7 @@ int iwm_up(struct iwm_priv *iwm);
349int iwm_down(struct iwm_priv *iwm); 349int iwm_down(struct iwm_priv *iwm);
350 350
351/* TX API */ 351/* TX API */
352u16 iwm_tid_to_queue(u16 tid); 352int iwm_tid_to_queue(u16 tid);
353void iwm_tx_credit_inc(struct iwm_priv *iwm, int id, int total_freed_pages); 353void iwm_tx_credit_inc(struct iwm_priv *iwm, int id, int total_freed_pages);
354void iwm_tx_worker(struct work_struct *work); 354void iwm_tx_worker(struct work_struct *work);
355int iwm_xmit_frame(struct sk_buff *skb, struct net_device *netdev); 355int iwm_xmit_frame(struct sk_buff *skb, struct net_device *netdev);
diff --git a/drivers/net/wireless/iwmc3200wifi/netdev.c b/drivers/net/wireless/iwmc3200wifi/netdev.c
index e4f0f8705f65..c4c0d23c63ec 100644
--- a/drivers/net/wireless/iwmc3200wifi/netdev.c
+++ b/drivers/net/wireless/iwmc3200wifi/netdev.c
@@ -76,7 +76,7 @@ static int iwm_stop(struct net_device *ndev)
76 */ 76 */
77static const u16 iwm_1d_to_queue[8] = { 1, 0, 0, 1, 2, 2, 3, 3 }; 77static const u16 iwm_1d_to_queue[8] = { 1, 0, 0, 1, 2, 2, 3, 3 };
78 78
79u16 iwm_tid_to_queue(u16 tid) 79int iwm_tid_to_queue(u16 tid)
80{ 80{
81 if (tid > IWM_UMAC_TID_NR - 2) 81 if (tid > IWM_UMAC_TID_NR - 2)
82 return -EINVAL; 82 return -EINVAL;
diff --git a/drivers/net/wireless/iwmc3200wifi/rx.c b/drivers/net/wireless/iwmc3200wifi/rx.c
index 1c57c1f72cba..f727b4a83196 100644
--- a/drivers/net/wireless/iwmc3200wifi/rx.c
+++ b/drivers/net/wireless/iwmc3200wifi/rx.c
@@ -794,7 +794,7 @@ static int iwm_mlme_update_bss_table(struct iwm_priv *iwm, u8 *buf,
794 } 794 }
795 795
796 bss->bss = kzalloc(bss_len, GFP_KERNEL); 796 bss->bss = kzalloc(bss_len, GFP_KERNEL);
797 if (!bss) { 797 if (!bss->bss) {
798 kfree(bss); 798 kfree(bss);
799 IWM_ERR(iwm, "Couldn't allocate bss\n"); 799 IWM_ERR(iwm, "Couldn't allocate bss\n");
800 return -ENOMEM; 800 return -ENOMEM;
@@ -1126,7 +1126,7 @@ static int iwm_ntf_stop_resume_tx(struct iwm_priv *iwm, u8 *buf,
1126 1126
1127 if (!stop) { 1127 if (!stop) {
1128 struct iwm_tx_queue *txq; 1128 struct iwm_tx_queue *txq;
1129 u16 queue = iwm_tid_to_queue(bit); 1129 int queue = iwm_tid_to_queue(bit);
1130 1130
1131 if (queue < 0) 1131 if (queue < 0)
1132 continue; 1132 continue;
diff --git a/drivers/net/wireless/libertas/mesh.c b/drivers/net/wireless/libertas/mesh.c
index 2f91c9b808af..92b7a357a5e4 100644
--- a/drivers/net/wireless/libertas/mesh.c
+++ b/drivers/net/wireless/libertas/mesh.c
@@ -2,6 +2,7 @@
2#include <linux/delay.h> 2#include <linux/delay.h>
3#include <linux/etherdevice.h> 3#include <linux/etherdevice.h>
4#include <linux/netdevice.h> 4#include <linux/netdevice.h>
5#include <linux/if_ether.h>
5#include <linux/if_arp.h> 6#include <linux/if_arp.h>
6#include <linux/kthread.h> 7#include <linux/kthread.h>
7#include <linux/kfifo.h> 8#include <linux/kfifo.h>
@@ -351,8 +352,7 @@ int lbs_add_mesh(struct lbs_private *priv)
351 352
352 mesh_dev->netdev_ops = &mesh_netdev_ops; 353 mesh_dev->netdev_ops = &mesh_netdev_ops;
353 mesh_dev->ethtool_ops = &lbs_ethtool_ops; 354 mesh_dev->ethtool_ops = &lbs_ethtool_ops;
354 memcpy(mesh_dev->dev_addr, priv->dev->dev_addr, 355 memcpy(mesh_dev->dev_addr, priv->dev->dev_addr, ETH_ALEN);
355 sizeof(priv->dev->dev_addr));
356 356
357 SET_NETDEV_DEV(priv->mesh_dev, priv->dev->dev.parent); 357 SET_NETDEV_DEV(priv->mesh_dev, priv->dev->dev.parent);
358 358
diff --git a/drivers/net/wireless/libertas/scan.c b/drivers/net/wireless/libertas/scan.c
index c6a6c042b82f..b0b1c7841500 100644
--- a/drivers/net/wireless/libertas/scan.c
+++ b/drivers/net/wireless/libertas/scan.c
@@ -567,11 +567,8 @@ int lbs_scan_networks(struct lbs_private *priv, int full_scan)
567 chan_count = lbs_scan_create_channel_list(priv, chan_list); 567 chan_count = lbs_scan_create_channel_list(priv, chan_list);
568 568
569 netif_stop_queue(priv->dev); 569 netif_stop_queue(priv->dev);
570 netif_carrier_off(priv->dev); 570 if (priv->mesh_dev)
571 if (priv->mesh_dev) {
572 netif_stop_queue(priv->mesh_dev); 571 netif_stop_queue(priv->mesh_dev);
573 netif_carrier_off(priv->mesh_dev);
574 }
575 572
576 /* Prepare to continue an interrupted scan */ 573 /* Prepare to continue an interrupted scan */
577 lbs_deb_scan("chan_count %d, scan_channel %d\n", 574 lbs_deb_scan("chan_count %d, scan_channel %d\n",
@@ -635,16 +632,13 @@ out2:
635 priv->scan_channel = 0; 632 priv->scan_channel = 0;
636 633
637out: 634out:
638 if (priv->connect_status == LBS_CONNECTED) { 635 if (priv->connect_status == LBS_CONNECTED && !priv->tx_pending_len)
639 netif_carrier_on(priv->dev); 636 netif_wake_queue(priv->dev);
640 if (!priv->tx_pending_len) 637
641 netif_wake_queue(priv->dev); 638 if (priv->mesh_dev && (priv->mesh_connect_status == LBS_CONNECTED) &&
642 } 639 !priv->tx_pending_len)
643 if (priv->mesh_dev && (priv->mesh_connect_status == LBS_CONNECTED)) { 640 netif_wake_queue(priv->mesh_dev);
644 netif_carrier_on(priv->mesh_dev); 641
645 if (!priv->tx_pending_len)
646 netif_wake_queue(priv->mesh_dev);
647 }
648 kfree(chan_list); 642 kfree(chan_list);
649 643
650 lbs_deb_leave_args(LBS_DEB_SCAN, "ret %d", ret); 644 lbs_deb_leave_args(LBS_DEB_SCAN, "ret %d", ret);
diff --git a/drivers/net/wireless/libertas/wext.c b/drivers/net/wireless/libertas/wext.c
index a8eb9e1fcf36..4b1aab593a84 100644
--- a/drivers/net/wireless/libertas/wext.c
+++ b/drivers/net/wireless/libertas/wext.c
@@ -2025,10 +2025,8 @@ static int lbs_get_essid(struct net_device *dev, struct iw_request_info *info,
2025 if (priv->connect_status == LBS_CONNECTED) { 2025 if (priv->connect_status == LBS_CONNECTED) {
2026 memcpy(extra, priv->curbssparams.ssid, 2026 memcpy(extra, priv->curbssparams.ssid,
2027 priv->curbssparams.ssid_len); 2027 priv->curbssparams.ssid_len);
2028 extra[priv->curbssparams.ssid_len] = '\0';
2029 } else { 2028 } else {
2030 memset(extra, 0, 32); 2029 memset(extra, 0, 32);
2031 extra[priv->curbssparams.ssid_len] = '\0';
2032 } 2030 }
2033 /* 2031 /*
2034 * If none, we may want to get the one that was set 2032 * If none, we may want to get the one that was set
diff --git a/drivers/net/wireless/libertas_tf/main.c b/drivers/net/wireless/libertas_tf/main.c
index 019431d2f8a9..26a1abd5bb03 100644
--- a/drivers/net/wireless/libertas_tf/main.c
+++ b/drivers/net/wireless/libertas_tf/main.c
@@ -495,7 +495,6 @@ int lbtf_rx(struct lbtf_private *priv, struct sk_buff *skb)
495 stats.band = IEEE80211_BAND_2GHZ; 495 stats.band = IEEE80211_BAND_2GHZ;
496 stats.signal = prxpd->snr; 496 stats.signal = prxpd->snr;
497 stats.noise = prxpd->nf; 497 stats.noise = prxpd->nf;
498 stats.qual = prxpd->snr - prxpd->nf;
499 /* Marvell rate index has a hole at value 4 */ 498 /* Marvell rate index has a hole at value 4 */
500 if (prxpd->rx_rate > 4) 499 if (prxpd->rx_rate > 4)
501 --prxpd->rx_rate; 500 --prxpd->rx_rate;
diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c
index 59d49159cf2a..59f92105b0c2 100644
--- a/drivers/net/wireless/mwl8k.c
+++ b/drivers/net/wireless/mwl8k.c
@@ -3157,8 +3157,10 @@ static void mwl8k_configure_filter(struct ieee80211_hw *hw,
3157 /* Clear unsupported feature flags */ 3157 /* Clear unsupported feature flags */
3158 *total_flags &= FIF_ALLMULTI | FIF_BCN_PRBRESP_PROMISC; 3158 *total_flags &= FIF_ALLMULTI | FIF_BCN_PRBRESP_PROMISC;
3159 3159
3160 if (mwl8k_fw_lock(hw)) 3160 if (mwl8k_fw_lock(hw)) {
3161 kfree(cmd);
3161 return; 3162 return;
3163 }
3162 3164
3163 if (priv->sniffer_enabled) { 3165 if (priv->sniffer_enabled) {
3164 mwl8k_enable_sniffer(hw, 0); 3166 mwl8k_enable_sniffer(hw, 0);
diff --git a/drivers/net/wireless/orinoco/wext.c b/drivers/net/wireless/orinoco/wext.c
index 7698fdd6a3a2..31ca241f7753 100644
--- a/drivers/net/wireless/orinoco/wext.c
+++ b/drivers/net/wireless/orinoco/wext.c
@@ -23,7 +23,7 @@
23#define MAX_RID_LEN 1024 23#define MAX_RID_LEN 1024
24 24
25/* Helper routine to record keys 25/* Helper routine to record keys
26 * Do not call from interrupt context */ 26 * It is called under orinoco_lock so it may not sleep */
27static int orinoco_set_key(struct orinoco_private *priv, int index, 27static int orinoco_set_key(struct orinoco_private *priv, int index,
28 enum orinoco_alg alg, const u8 *key, int key_len, 28 enum orinoco_alg alg, const u8 *key, int key_len,
29 const u8 *seq, int seq_len) 29 const u8 *seq, int seq_len)
@@ -32,14 +32,14 @@ static int orinoco_set_key(struct orinoco_private *priv, int index,
32 kzfree(priv->keys[index].seq); 32 kzfree(priv->keys[index].seq);
33 33
34 if (key_len) { 34 if (key_len) {
35 priv->keys[index].key = kzalloc(key_len, GFP_KERNEL); 35 priv->keys[index].key = kzalloc(key_len, GFP_ATOMIC);
36 if (!priv->keys[index].key) 36 if (!priv->keys[index].key)
37 goto nomem; 37 goto nomem;
38 } else 38 } else
39 priv->keys[index].key = NULL; 39 priv->keys[index].key = NULL;
40 40
41 if (seq_len) { 41 if (seq_len) {
42 priv->keys[index].seq = kzalloc(seq_len, GFP_KERNEL); 42 priv->keys[index].seq = kzalloc(seq_len, GFP_ATOMIC);
43 if (!priv->keys[index].seq) 43 if (!priv->keys[index].seq)
44 goto free_key; 44 goto free_key;
45 } else 45 } else
diff --git a/drivers/net/wireless/p54/p54pci.c b/drivers/net/wireless/p54/p54pci.c
index a15962a19b2a..a72f7c2577de 100644
--- a/drivers/net/wireless/p54/p54pci.c
+++ b/drivers/net/wireless/p54/p54pci.c
@@ -197,6 +197,14 @@ static void p54p_check_rx_ring(struct ieee80211_hw *dev, u32 *index,
197 i %= ring_limit; 197 i %= ring_limit;
198 continue; 198 continue;
199 } 199 }
200
201 if (unlikely(len > priv->common.rx_mtu)) {
202 if (net_ratelimit())
203 dev_err(&priv->pdev->dev, "rx'd frame size "
204 "exceeds length threshold.\n");
205
206 len = priv->common.rx_mtu;
207 }
200 skb_put(skb, len); 208 skb_put(skb, len);
201 209
202 if (p54_rx(dev, skb)) { 210 if (p54_rx(dev, skb)) {
diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h
index c5fe867665e6..1a7eae357fef 100644
--- a/drivers/net/wireless/rt2x00/rt2800.h
+++ b/drivers/net/wireless/rt2x00/rt2800.h
@@ -1323,7 +1323,7 @@
1323#define PAIRWISE_KEY_ENTRY(__idx) \ 1323#define PAIRWISE_KEY_ENTRY(__idx) \
1324 ( PAIRWISE_KEY_TABLE_BASE + ((__idx) * sizeof(struct hw_key_entry)) ) 1324 ( PAIRWISE_KEY_TABLE_BASE + ((__idx) * sizeof(struct hw_key_entry)) )
1325#define MAC_IVEIV_ENTRY(__idx) \ 1325#define MAC_IVEIV_ENTRY(__idx) \
1326 ( MAC_IVEIV_TABLE_BASE + ((__idx) & sizeof(struct mac_iveiv_entry)) ) 1326 ( MAC_IVEIV_TABLE_BASE + ((__idx) * sizeof(struct mac_iveiv_entry)) )
1327#define MAC_WCID_ATTR_ENTRY(__idx) \ 1327#define MAC_WCID_ATTR_ENTRY(__idx) \
1328 ( MAC_WCID_ATTRIBUTE_BASE + ((__idx) * sizeof(u32)) ) 1328 ( MAC_WCID_ATTRIBUTE_BASE + ((__idx) * sizeof(u32)) )
1329#define SHARED_KEY_ENTRY(__idx) \ 1329#define SHARED_KEY_ENTRY(__idx) \
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
index eb1e1d00bec3..9deae41cb784 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -37,7 +37,7 @@
37#include <linux/module.h> 37#include <linux/module.h>
38 38
39#include "rt2x00.h" 39#include "rt2x00.h"
40#ifdef CONFIG_RT2800USB 40#if defined(CONFIG_RT2800USB) || defined(CONFIG_RT2800USB_MODULE)
41#include "rt2x00usb.h" 41#include "rt2x00usb.h"
42#endif 42#endif
43#include "rt2800lib.h" 43#include "rt2800lib.h"
@@ -340,7 +340,7 @@ static int rt2800_blink_set(struct led_classdev *led_cdev,
340 rt2x00_set_field32(&reg, LED_CFG_OFF_PERIOD, *delay_off); 340 rt2x00_set_field32(&reg, LED_CFG_OFF_PERIOD, *delay_off);
341 rt2x00_set_field32(&reg, LED_CFG_SLOW_BLINK_PERIOD, 3); 341 rt2x00_set_field32(&reg, LED_CFG_SLOW_BLINK_PERIOD, 3);
342 rt2x00_set_field32(&reg, LED_CFG_R_LED_MODE, 3); 342 rt2x00_set_field32(&reg, LED_CFG_R_LED_MODE, 3);
343 rt2x00_set_field32(&reg, LED_CFG_G_LED_MODE, 12); 343 rt2x00_set_field32(&reg, LED_CFG_G_LED_MODE, 3);
344 rt2x00_set_field32(&reg, LED_CFG_Y_LED_MODE, 3); 344 rt2x00_set_field32(&reg, LED_CFG_Y_LED_MODE, 3);
345 rt2x00_set_field32(&reg, LED_CFG_LED_POLAR, 1); 345 rt2x00_set_field32(&reg, LED_CFG_LED_POLAR, 1);
346 rt2800_register_write(led->rt2x00dev, LED_CFG, reg); 346 rt2800_register_write(led->rt2x00dev, LED_CFG, reg);
@@ -1121,7 +1121,7 @@ int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
1121 1121
1122 if (rt2x00_intf_is_usb(rt2x00dev)) { 1122 if (rt2x00_intf_is_usb(rt2x00dev)) {
1123 rt2800_register_write(rt2x00dev, USB_DMA_CFG, 0x00000000); 1123 rt2800_register_write(rt2x00dev, USB_DMA_CFG, 0x00000000);
1124#ifdef CONFIG_RT2800USB 1124#if defined(CONFIG_RT2800USB) || defined(CONFIG_RT2800USB_MODULE)
1125 rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, 0, 1125 rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, 0,
1126 USB_MODE_RESET, REGISTER_TIMEOUT); 1126 USB_MODE_RESET, REGISTER_TIMEOUT);
1127#endif 1127#endif
@@ -2022,6 +2022,12 @@ int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
2022 u16 eeprom; 2022 u16 eeprom;
2023 2023
2024 /* 2024 /*
2025 * Disable powersaving as default on PCI devices.
2026 */
2027 if (rt2x00_intf_is_pci(rt2x00dev))
2028 rt2x00dev->hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT;
2029
2030 /*
2025 * Initialize all hw fields. 2031 * Initialize all hw fields.
2026 */ 2032 */
2027 rt2x00dev->hw->flags = 2033 rt2x00dev->hw->flags =
@@ -2074,8 +2080,7 @@ int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
2074 IEEE80211_HT_CAP_SGI_20 | 2080 IEEE80211_HT_CAP_SGI_20 |
2075 IEEE80211_HT_CAP_SGI_40 | 2081 IEEE80211_HT_CAP_SGI_40 |
2076 IEEE80211_HT_CAP_TX_STBC | 2082 IEEE80211_HT_CAP_TX_STBC |
2077 IEEE80211_HT_CAP_RX_STBC | 2083 IEEE80211_HT_CAP_RX_STBC;
2078 IEEE80211_HT_CAP_PSMP_SUPPORT;
2079 spec->ht.ampdu_factor = 3; 2084 spec->ht.ampdu_factor = 3;
2080 spec->ht.ampdu_density = 4; 2085 spec->ht.ampdu_density = 4;
2081 spec->ht.mcs.tx_params = 2086 spec->ht.mcs.tx_params =
@@ -2140,8 +2145,8 @@ static void rt2800_get_tkip_seq(struct ieee80211_hw *hw, u8 hw_key_idx,
2140 rt2800_register_multiread(rt2x00dev, offset, 2145 rt2800_register_multiread(rt2x00dev, offset,
2141 &iveiv_entry, sizeof(iveiv_entry)); 2146 &iveiv_entry, sizeof(iveiv_entry));
2142 2147
2143 memcpy(&iveiv_entry.iv[0], iv16, sizeof(iv16)); 2148 memcpy(iv16, &iveiv_entry.iv[0], sizeof(*iv16));
2144 memcpy(&iveiv_entry.iv[4], iv32, sizeof(iv32)); 2149 memcpy(iv32, &iveiv_entry.iv[4], sizeof(*iv32));
2145} 2150}
2146 2151
2147static int rt2800_set_rts_threshold(struct ieee80211_hw *hw, u32 value) 2152static int rt2800_set_rts_threshold(struct ieee80211_hw *hw, u32 value)
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index af85d18cdbe7..ab95346cf6a3 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -922,6 +922,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
922 { USB_DEVICE(0x1737, 0x0070), USB_DEVICE_DATA(&rt2800usb_ops) }, 922 { USB_DEVICE(0x1737, 0x0070), USB_DEVICE_DATA(&rt2800usb_ops) },
923 { USB_DEVICE(0x1737, 0x0071), USB_DEVICE_DATA(&rt2800usb_ops) }, 923 { USB_DEVICE(0x1737, 0x0071), USB_DEVICE_DATA(&rt2800usb_ops) },
924 { USB_DEVICE(0x1737, 0x0077), USB_DEVICE_DATA(&rt2800usb_ops) }, 924 { USB_DEVICE(0x1737, 0x0077), USB_DEVICE_DATA(&rt2800usb_ops) },
925 { USB_DEVICE(0x1737, 0x0079), USB_DEVICE_DATA(&rt2800usb_ops) },
925 /* Logitec */ 926 /* Logitec */
926 { USB_DEVICE(0x0789, 0x0162), USB_DEVICE_DATA(&rt2800usb_ops) }, 927 { USB_DEVICE(0x0789, 0x0162), USB_DEVICE_DATA(&rt2800usb_ops) },
927 { USB_DEVICE(0x0789, 0x0163), USB_DEVICE_DATA(&rt2800usb_ops) }, 928 { USB_DEVICE(0x0789, 0x0163), USB_DEVICE_DATA(&rt2800usb_ops) },
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
index 4d841c07c970..dcfc8c25d1a7 100644
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -113,6 +113,12 @@
113 ( ((unsigned long)((__skb)->data + (__header))) & 3 ) 113 ( ((unsigned long)((__skb)->data + (__header))) & 3 )
114 114
115/* 115/*
116 * Constants for extra TX headroom for alignment purposes.
117 */
118#define RT2X00_ALIGN_SIZE 4 /* Only whole frame needs alignment */
119#define RT2X00_L2PAD_SIZE 8 /* Both header & payload need alignment */
120
121/*
116 * Standard timing and size defines. 122 * Standard timing and size defines.
117 * These values should follow the ieee80211 specifications. 123 * These values should follow the ieee80211 specifications.
118 */ 124 */
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index 06c43ca39bf8..265e66dba552 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -686,7 +686,17 @@ static int rt2x00lib_probe_hw(struct rt2x00_dev *rt2x00dev)
686 /* 686 /*
687 * Initialize extra TX headroom required. 687 * Initialize extra TX headroom required.
688 */ 688 */
689 rt2x00dev->hw->extra_tx_headroom = rt2x00dev->ops->extra_tx_headroom; 689 rt2x00dev->hw->extra_tx_headroom =
690 max_t(unsigned int, IEEE80211_TX_STATUS_HEADROOM,
691 rt2x00dev->ops->extra_tx_headroom);
692
693 /*
694 * Take TX headroom required for alignment into account.
695 */
696 if (test_bit(DRIVER_REQUIRE_L2PAD, &rt2x00dev->flags))
697 rt2x00dev->hw->extra_tx_headroom += RT2X00_L2PAD_SIZE;
698 else if (test_bit(DRIVER_REQUIRE_DMA, &rt2x00dev->flags))
699 rt2x00dev->hw->extra_tx_headroom += RT2X00_ALIGN_SIZE;
690 700
691 /* 701 /*
692 * Register HW. 702 * Register HW.
diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c
index 239afc7a9c0b..9915a09141ef 100644
--- a/drivers/net/wireless/rt2x00/rt2x00queue.c
+++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
@@ -104,7 +104,7 @@ void rt2x00queue_map_txskb(struct rt2x00_dev *rt2x00dev, struct sk_buff *skb)
104 * is also mapped to the DMA so it can be used for transfering 104 * is also mapped to the DMA so it can be used for transfering
105 * additional descriptor information to the hardware. 105 * additional descriptor information to the hardware.
106 */ 106 */
107 skb_push(skb, rt2x00dev->hw->extra_tx_headroom); 107 skb_push(skb, rt2x00dev->ops->extra_tx_headroom);
108 108
109 skbdesc->skb_dma = 109 skbdesc->skb_dma =
110 dma_map_single(rt2x00dev->dev, skb->data, skb->len, DMA_TO_DEVICE); 110 dma_map_single(rt2x00dev->dev, skb->data, skb->len, DMA_TO_DEVICE);
@@ -112,7 +112,7 @@ void rt2x00queue_map_txskb(struct rt2x00_dev *rt2x00dev, struct sk_buff *skb)
112 /* 112 /*
113 * Restore data pointer to original location again. 113 * Restore data pointer to original location again.
114 */ 114 */
115 skb_pull(skb, rt2x00dev->hw->extra_tx_headroom); 115 skb_pull(skb, rt2x00dev->ops->extra_tx_headroom);
116 116
117 skbdesc->flags |= SKBDESC_DMA_MAPPED_TX; 117 skbdesc->flags |= SKBDESC_DMA_MAPPED_TX;
118} 118}
@@ -134,7 +134,7 @@ void rt2x00queue_unmap_skb(struct rt2x00_dev *rt2x00dev, struct sk_buff *skb)
134 * by the driver, but it was actually mapped to DMA. 134 * by the driver, but it was actually mapped to DMA.
135 */ 135 */
136 dma_unmap_single(rt2x00dev->dev, skbdesc->skb_dma, 136 dma_unmap_single(rt2x00dev->dev, skbdesc->skb_dma,
137 skb->len + rt2x00dev->hw->extra_tx_headroom, 137 skb->len + rt2x00dev->ops->extra_tx_headroom,
138 DMA_TO_DEVICE); 138 DMA_TO_DEVICE);
139 skbdesc->flags &= ~SKBDESC_DMA_MAPPED_TX; 139 skbdesc->flags &= ~SKBDESC_DMA_MAPPED_TX;
140 } 140 }
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
index 687e17dc2e9f..0ca589306d71 100644
--- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
@@ -2539,6 +2539,11 @@ static int rt61pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
2539 unsigned int i; 2539 unsigned int i;
2540 2540
2541 /* 2541 /*
2542 * Disable powersaving as default.
2543 */
2544 rt2x00dev->hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT;
2545
2546 /*
2542 * Initialize all hw fields. 2547 * Initialize all hw fields.
2543 */ 2548 */
2544 rt2x00dev->hw->flags = 2549 rt2x00dev->hw->flags =
diff --git a/drivers/net/wireless/rtl818x/rtl8180_dev.c b/drivers/net/wireless/rtl818x/rtl8180_dev.c
index a1a3dd15c664..8a40a1439984 100644
--- a/drivers/net/wireless/rtl818x/rtl8180_dev.c
+++ b/drivers/net/wireless/rtl818x/rtl8180_dev.c
@@ -132,7 +132,6 @@ static void rtl8180_handle_rx(struct ieee80211_hw *dev)
132 132
133 rx_status.antenna = (flags2 >> 15) & 1; 133 rx_status.antenna = (flags2 >> 15) & 1;
134 /* TODO: improve signal/rssi reporting */ 134 /* TODO: improve signal/rssi reporting */
135 rx_status.qual = flags2 & 0xFF;
136 rx_status.signal = (flags2 >> 8) & 0x7F; 135 rx_status.signal = (flags2 >> 8) & 0x7F;
137 /* XXX: is this correct? */ 136 /* XXX: is this correct? */
138 rx_status.rate_idx = (flags >> 20) & 0xF; 137 rx_status.rate_idx = (flags >> 20) & 0xF;
diff --git a/drivers/net/wireless/rtl818x/rtl8187_dev.c b/drivers/net/wireless/rtl818x/rtl8187_dev.c
index bc5726dd5fe4..7ba3052b0708 100644
--- a/drivers/net/wireless/rtl818x/rtl8187_dev.c
+++ b/drivers/net/wireless/rtl818x/rtl8187_dev.c
@@ -65,6 +65,7 @@ static struct usb_device_id rtl8187_table[] __devinitdata = {
65 /* Sitecom */ 65 /* Sitecom */
66 {USB_DEVICE(0x0df6, 0x000d), .driver_info = DEVICE_RTL8187}, 66 {USB_DEVICE(0x0df6, 0x000d), .driver_info = DEVICE_RTL8187},
67 {USB_DEVICE(0x0df6, 0x0028), .driver_info = DEVICE_RTL8187B}, 67 {USB_DEVICE(0x0df6, 0x0028), .driver_info = DEVICE_RTL8187B},
68 {USB_DEVICE(0x0df6, 0x0029), .driver_info = DEVICE_RTL8187B},
68 /* Sphairon Access Systems GmbH */ 69 /* Sphairon Access Systems GmbH */
69 {USB_DEVICE(0x114B, 0x0150), .driver_info = DEVICE_RTL8187}, 70 {USB_DEVICE(0x114B, 0x0150), .driver_info = DEVICE_RTL8187},
70 /* Dick Smith Electronics */ 71 /* Dick Smith Electronics */
diff --git a/drivers/net/wireless/wl12xx/wl1251_boot.c b/drivers/net/wireless/wl12xx/wl1251_boot.c
index 2e733e7bdfd4..28a808674080 100644
--- a/drivers/net/wireless/wl12xx/wl1251_boot.c
+++ b/drivers/net/wireless/wl12xx/wl1251_boot.c
@@ -256,7 +256,7 @@ int wl1251_boot_run_firmware(struct wl1251 *wl)
256 } 256 }
257 } 257 }
258 258
259 if (loop >= INIT_LOOP) { 259 if (loop > INIT_LOOP) {
260 wl1251_error("timeout waiting for the hardware to " 260 wl1251_error("timeout waiting for the hardware to "
261 "complete initialization"); 261 "complete initialization");
262 return -EIO; 262 return -EIO;
diff --git a/drivers/net/wireless/wl12xx/wl1271_cmd.c b/drivers/net/wireless/wl12xx/wl1271_cmd.c
index 886a9bc39cc1..c3385b3d246c 100644
--- a/drivers/net/wireless/wl12xx/wl1271_cmd.c
+++ b/drivers/net/wireless/wl12xx/wl1271_cmd.c
@@ -777,7 +777,7 @@ out:
777 return ret; 777 return ret;
778} 778}
779 779
780static int wl1271_build_basic_rates(char *rates, u8 band) 780static int wl1271_build_basic_rates(u8 *rates, u8 band)
781{ 781{
782 u8 index = 0; 782 u8 index = 0;
783 783
@@ -804,7 +804,7 @@ static int wl1271_build_basic_rates(char *rates, u8 band)
804 return index; 804 return index;
805} 805}
806 806
807static int wl1271_build_extended_rates(char *rates, u8 band) 807static int wl1271_build_extended_rates(u8 *rates, u8 band)
808{ 808{
809 u8 index = 0; 809 u8 index = 0;
810 810
diff --git a/drivers/net/wireless/zd1211rw/zd_chip.c b/drivers/net/wireless/zd1211rw/zd_chip.c
index dfa1b9bc22c8..7ca95c414fa8 100644
--- a/drivers/net/wireless/zd1211rw/zd_chip.c
+++ b/drivers/net/wireless/zd1211rw/zd_chip.c
@@ -1325,151 +1325,11 @@ int zd_chip_set_basic_rates(struct zd_chip *chip, u16 cr_rates)
1325 return r; 1325 return r;
1326} 1326}
1327 1327
1328static int ofdm_qual_db(u8 status_quality, u8 zd_rate, unsigned int size)
1329{
1330 static const u16 constants[] = {
1331 715, 655, 585, 540, 470, 410, 360, 315,
1332 270, 235, 205, 175, 150, 125, 105, 85,
1333 65, 50, 40, 25, 15
1334 };
1335
1336 int i;
1337 u32 x;
1338
1339 /* It seems that their quality parameter is somehow per signal
1340 * and is now transferred per bit.
1341 */
1342 switch (zd_rate) {
1343 case ZD_OFDM_RATE_6M:
1344 case ZD_OFDM_RATE_12M:
1345 case ZD_OFDM_RATE_24M:
1346 size *= 2;
1347 break;
1348 case ZD_OFDM_RATE_9M:
1349 case ZD_OFDM_RATE_18M:
1350 case ZD_OFDM_RATE_36M:
1351 case ZD_OFDM_RATE_54M:
1352 size *= 4;
1353 size /= 3;
1354 break;
1355 case ZD_OFDM_RATE_48M:
1356 size *= 3;
1357 size /= 2;
1358 break;
1359 default:
1360 return -EINVAL;
1361 }
1362
1363 x = (10000 * status_quality)/size;
1364 for (i = 0; i < ARRAY_SIZE(constants); i++) {
1365 if (x > constants[i])
1366 break;
1367 }
1368
1369 switch (zd_rate) {
1370 case ZD_OFDM_RATE_6M:
1371 case ZD_OFDM_RATE_9M:
1372 i += 3;
1373 break;
1374 case ZD_OFDM_RATE_12M:
1375 case ZD_OFDM_RATE_18M:
1376 i += 5;
1377 break;
1378 case ZD_OFDM_RATE_24M:
1379 case ZD_OFDM_RATE_36M:
1380 i += 9;
1381 break;
1382 case ZD_OFDM_RATE_48M:
1383 case ZD_OFDM_RATE_54M:
1384 i += 15;
1385 break;
1386 default:
1387 return -EINVAL;
1388 }
1389
1390 return i;
1391}
1392
1393static int ofdm_qual_percent(u8 status_quality, u8 zd_rate, unsigned int size)
1394{
1395 int r;
1396
1397 r = ofdm_qual_db(status_quality, zd_rate, size);
1398 ZD_ASSERT(r >= 0);
1399 if (r < 0)
1400 r = 0;
1401
1402 r = (r * 100)/29;
1403 return r <= 100 ? r : 100;
1404}
1405
1406static unsigned int log10times100(unsigned int x)
1407{
1408 static const u8 log10[] = {
1409 0,
1410 0, 30, 47, 60, 69, 77, 84, 90, 95, 100,
1411 104, 107, 111, 114, 117, 120, 123, 125, 127, 130,
1412 132, 134, 136, 138, 139, 141, 143, 144, 146, 147,
1413 149, 150, 151, 153, 154, 155, 156, 157, 159, 160,
1414 161, 162, 163, 164, 165, 166, 167, 168, 169, 169,
1415 170, 171, 172, 173, 174, 174, 175, 176, 177, 177,
1416 178, 179, 179, 180, 181, 181, 182, 183, 183, 184,
1417 185, 185, 186, 186, 187, 188, 188, 189, 189, 190,
1418 190, 191, 191, 192, 192, 193, 193, 194, 194, 195,
1419 195, 196, 196, 197, 197, 198, 198, 199, 199, 200,
1420 200, 200, 201, 201, 202, 202, 202, 203, 203, 204,
1421 204, 204, 205, 205, 206, 206, 206, 207, 207, 207,
1422 208, 208, 208, 209, 209, 210, 210, 210, 211, 211,
1423 211, 212, 212, 212, 213, 213, 213, 213, 214, 214,
1424 214, 215, 215, 215, 216, 216, 216, 217, 217, 217,
1425 217, 218, 218, 218, 219, 219, 219, 219, 220, 220,
1426 220, 220, 221, 221, 221, 222, 222, 222, 222, 223,
1427 223, 223, 223, 224, 224, 224, 224,
1428 };
1429
1430 return x < ARRAY_SIZE(log10) ? log10[x] : 225;
1431}
1432
1433enum {
1434 MAX_CCK_EVM_DB = 45,
1435};
1436
1437static int cck_evm_db(u8 status_quality)
1438{
1439 return (20 * log10times100(status_quality)) / 100;
1440}
1441
1442static int cck_snr_db(u8 status_quality)
1443{
1444 int r = MAX_CCK_EVM_DB - cck_evm_db(status_quality);
1445 ZD_ASSERT(r >= 0);
1446 return r;
1447}
1448
1449static int cck_qual_percent(u8 status_quality)
1450{
1451 int r;
1452
1453 r = cck_snr_db(status_quality);
1454 r = (100*r)/17;
1455 return r <= 100 ? r : 100;
1456}
1457
1458static inline u8 zd_rate_from_ofdm_plcp_header(const void *rx_frame) 1328static inline u8 zd_rate_from_ofdm_plcp_header(const void *rx_frame)
1459{ 1329{
1460 return ZD_OFDM | zd_ofdm_plcp_header_rate(rx_frame); 1330 return ZD_OFDM | zd_ofdm_plcp_header_rate(rx_frame);
1461} 1331}
1462 1332
1463u8 zd_rx_qual_percent(const void *rx_frame, unsigned int size,
1464 const struct rx_status *status)
1465{
1466 return (status->frame_status&ZD_RX_OFDM) ?
1467 ofdm_qual_percent(status->signal_quality_ofdm,
1468 zd_rate_from_ofdm_plcp_header(rx_frame),
1469 size) :
1470 cck_qual_percent(status->signal_quality_cck);
1471}
1472
1473/** 1333/**
1474 * zd_rx_rate - report zd-rate 1334 * zd_rx_rate - report zd-rate
1475 * @rx_frame - received frame 1335 * @rx_frame - received frame
diff --git a/drivers/net/wireless/zd1211rw/zd_chip.h b/drivers/net/wireless/zd1211rw/zd_chip.h
index 9fd8f3508d66..f8bbf7d302ae 100644
--- a/drivers/net/wireless/zd1211rw/zd_chip.h
+++ b/drivers/net/wireless/zd1211rw/zd_chip.h
@@ -929,9 +929,6 @@ static inline int zd_get_beacon_interval(struct zd_chip *chip, u32 *interval)
929 929
930struct rx_status; 930struct rx_status;
931 931
932u8 zd_rx_qual_percent(const void *rx_frame, unsigned int size,
933 const struct rx_status *status);
934
935u8 zd_rx_rate(const void *rx_frame, const struct rx_status *status); 932u8 zd_rx_rate(const void *rx_frame, const struct rx_status *status);
936 933
937struct zd_mc_hash { 934struct zd_mc_hash {
diff --git a/drivers/net/wireless/zd1211rw/zd_mac.c b/drivers/net/wireless/zd1211rw/zd_mac.c
index cf51e8f8174b..f14deb0c8514 100644
--- a/drivers/net/wireless/zd1211rw/zd_mac.c
+++ b/drivers/net/wireless/zd1211rw/zd_mac.c
@@ -828,9 +828,6 @@ int zd_mac_rx(struct ieee80211_hw *hw, const u8 *buffer, unsigned int length)
828 stats.freq = zd_channels[_zd_chip_get_channel(&mac->chip) - 1].center_freq; 828 stats.freq = zd_channels[_zd_chip_get_channel(&mac->chip) - 1].center_freq;
829 stats.band = IEEE80211_BAND_2GHZ; 829 stats.band = IEEE80211_BAND_2GHZ;
830 stats.signal = status->signal_strength; 830 stats.signal = status->signal_strength;
831 stats.qual = zd_rx_qual_percent(buffer,
832 length - sizeof(struct rx_status),
833 status);
834 831
835 rate = zd_rx_rate(buffer, status); 832 rate = zd_rx_rate(buffer, status);
836 833
@@ -990,12 +987,13 @@ static void zd_op_configure_filter(struct ieee80211_hw *hw,
990 changed_flags &= SUPPORTED_FIF_FLAGS; 987 changed_flags &= SUPPORTED_FIF_FLAGS;
991 *new_flags &= SUPPORTED_FIF_FLAGS; 988 *new_flags &= SUPPORTED_FIF_FLAGS;
992 989
993 /* changed_flags is always populated but this driver 990 /*
994 * doesn't support all FIF flags so its possible we don't 991 * If multicast parameter (as returned by zd_op_prepare_multicast)
995 * need to do anything */ 992 * has changed, no bit in changed_flags is set. To handle this
996 if (!changed_flags) 993 * situation, we do not return if changed_flags is 0. If we do so,
997 return; 994 * we will have some issue with IPv6 which uses multicast for link
998 995 * layer address resolution.
996 */
999 if (*new_flags & (FIF_PROMISC_IN_BSS | FIF_ALLMULTI)) 997 if (*new_flags & (FIF_PROMISC_IN_BSS | FIF_ALLMULTI))
1000 zd_mc_add_all(&hash); 998 zd_mc_add_all(&hash);
1001 999
diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c
index ac19ecd19cfe..72d3e437e190 100644
--- a/drivers/net/wireless/zd1211rw/zd_usb.c
+++ b/drivers/net/wireless/zd1211rw/zd_usb.c
@@ -62,6 +62,7 @@ static struct usb_device_id usb_ids[] = {
62 { USB_DEVICE(0x6891, 0xa727), .driver_info = DEVICE_ZD1211 }, 62 { USB_DEVICE(0x6891, 0xa727), .driver_info = DEVICE_ZD1211 },
63 /* ZD1211B */ 63 /* ZD1211B */
64 { USB_DEVICE(0x0053, 0x5301), .driver_info = DEVICE_ZD1211B }, 64 { USB_DEVICE(0x0053, 0x5301), .driver_info = DEVICE_ZD1211B },
65 { USB_DEVICE(0x0409, 0x0248), .driver_info = DEVICE_ZD1211B },
65 { USB_DEVICE(0x0411, 0x00da), .driver_info = DEVICE_ZD1211B }, 66 { USB_DEVICE(0x0411, 0x00da), .driver_info = DEVICE_ZD1211B },
66 { USB_DEVICE(0x0471, 0x1236), .driver_info = DEVICE_ZD1211B }, 67 { USB_DEVICE(0x0471, 0x1236), .driver_info = DEVICE_ZD1211B },
67 { USB_DEVICE(0x0471, 0x1237), .driver_info = DEVICE_ZD1211B }, 68 { USB_DEVICE(0x0471, 0x1237), .driver_info = DEVICE_ZD1211B },
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
index 8e952fdab764..cb2fd01eddae 100644
--- a/drivers/pci/hotplug/acpiphp_glue.c
+++ b/drivers/pci/hotplug/acpiphp_glue.c
@@ -720,12 +720,6 @@ static int acpiphp_bus_add(struct acpiphp_func *func)
720 -ret_val); 720 -ret_val);
721 goto acpiphp_bus_add_out; 721 goto acpiphp_bus_add_out;
722 } 722 }
723 /*
724 * try to start anyway. We could have failed to add
725 * simply because this bus had previously been added
726 * on another add. Don't bother with the return value
727 * we just keep going.
728 */
729 ret_val = acpi_bus_start(device); 723 ret_val = acpi_bus_start(device);
730 724
731acpiphp_bus_add_out: 725acpiphp_bus_add_out:
diff --git a/drivers/pci/hotplug/shpchp.h b/drivers/pci/hotplug/shpchp.h
index bd588eb8e922..8e210cd76e55 100644
--- a/drivers/pci/hotplug/shpchp.h
+++ b/drivers/pci/hotplug/shpchp.h
@@ -121,7 +121,7 @@ struct controller {
121#define PCI_DEVICE_ID_AMD_GOLAM_7450 0x7450 121#define PCI_DEVICE_ID_AMD_GOLAM_7450 0x7450
122#define PCI_DEVICE_ID_AMD_POGO_7458 0x7458 122#define PCI_DEVICE_ID_AMD_POGO_7458 0x7458
123 123
124/* AMD PCIX bridge registers */ 124/* AMD PCI-X bridge registers */
125#define PCIX_MEM_BASE_LIMIT_OFFSET 0x1C 125#define PCIX_MEM_BASE_LIMIT_OFFSET 0x1C
126#define PCIX_MISCII_OFFSET 0x48 126#define PCIX_MISCII_OFFSET 0x48
127#define PCIX_MISC_BRIDGE_ERRORS_OFFSET 0x80 127#define PCIX_MISC_BRIDGE_ERRORS_OFFSET 0x80
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
index e56f9bed6f2b..417312528ddf 100644
--- a/drivers/pci/intel-iommu.c
+++ b/drivers/pci/intel-iommu.c
@@ -305,7 +305,7 @@ struct device_domain_info {
305 int segment; /* PCI domain */ 305 int segment; /* PCI domain */
306 u8 bus; /* PCI bus number */ 306 u8 bus; /* PCI bus number */
307 u8 devfn; /* PCI devfn number */ 307 u8 devfn; /* PCI devfn number */
308 struct pci_dev *dev; /* it's NULL for PCIE-to-PCI bridge */ 308 struct pci_dev *dev; /* it's NULL for PCIe-to-PCI bridge */
309 struct intel_iommu *iommu; /* IOMMU used by this device */ 309 struct intel_iommu *iommu; /* IOMMU used by this device */
310 struct dmar_domain *domain; /* pointer to domain */ 310 struct dmar_domain *domain; /* pointer to domain */
311}; 311};
@@ -1604,7 +1604,7 @@ domain_context_mapping(struct dmar_domain *domain, struct pci_dev *pdev,
1604 return ret; 1604 return ret;
1605 parent = parent->bus->self; 1605 parent = parent->bus->self;
1606 } 1606 }
1607 if (pci_is_pcie(tmp)) /* this is a PCIE-to-PCI bridge */ 1607 if (pci_is_pcie(tmp)) /* this is a PCIe-to-PCI bridge */
1608 return domain_context_mapping_one(domain, 1608 return domain_context_mapping_one(domain,
1609 pci_domain_nr(tmp->subordinate), 1609 pci_domain_nr(tmp->subordinate),
1610 tmp->subordinate->number, 0, 1610 tmp->subordinate->number, 0,
@@ -3325,7 +3325,7 @@ static void iommu_detach_dependent_devices(struct intel_iommu *iommu,
3325 parent->devfn); 3325 parent->devfn);
3326 parent = parent->bus->self; 3326 parent = parent->bus->self;
3327 } 3327 }
3328 if (pci_is_pcie(tmp)) /* this is a PCIE-to-PCI bridge */ 3328 if (pci_is_pcie(tmp)) /* this is a PCIe-to-PCI bridge */
3329 iommu_detach_dev(iommu, 3329 iommu_detach_dev(iommu,
3330 tmp->subordinate->number, 0); 3330 tmp->subordinate->number, 0);
3331 else /* this is a legacy PCI bridge */ 3331 else /* this is a legacy PCI bridge */
diff --git a/drivers/pci/intr_remapping.c b/drivers/pci/intr_remapping.c
index 8b65a489581b..95b849130ad4 100644
--- a/drivers/pci/intr_remapping.c
+++ b/drivers/pci/intr_remapping.c
@@ -528,7 +528,7 @@ int set_msi_sid(struct irte *irte, struct pci_dev *dev)
528 528
529 bridge = pci_find_upstream_pcie_bridge(dev); 529 bridge = pci_find_upstream_pcie_bridge(dev);
530 if (bridge) { 530 if (bridge) {
531 if (pci_is_pcie(bridge))/* this is a PCIE-to-PCI/PCIX bridge */ 531 if (pci_is_pcie(bridge))/* this is a PCIe-to-PCI/PCIX bridge */
532 set_irte_sid(irte, SVT_VERIFY_BUS, SQ_ALL_16, 532 set_irte_sid(irte, SVT_VERIFY_BUS, SQ_ALL_16,
533 (bridge->bus->number << 8) | dev->bus->number); 533 (bridge->bus->number << 8) | dev->bus->number);
534 else /* this is a legacy PCI bridge */ 534 else /* this is a legacy PCI bridge */
diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c
index cc617ddd33d0..7e2829538a4c 100644
--- a/drivers/pci/pci-acpi.c
+++ b/drivers/pci/pci-acpi.c
@@ -112,11 +112,7 @@ static bool acpi_pci_can_wakeup(struct pci_dev *dev)
112static void acpi_pci_propagate_wakeup_enable(struct pci_bus *bus, bool enable) 112static void acpi_pci_propagate_wakeup_enable(struct pci_bus *bus, bool enable)
113{ 113{
114 while (bus->parent) { 114 while (bus->parent) {
115 struct pci_dev *bridge = bus->self; 115 if (!acpi_pm_device_sleep_wake(&bus->self->dev, enable))
116 int ret;
117
118 ret = acpi_pm_device_sleep_wake(&bridge->dev, enable);
119 if (!ret || pci_is_pcie(bridge))
120 return; 116 return;
121 bus = bus->parent; 117 bus = bus->parent;
122 } 118 }
@@ -131,9 +127,7 @@ static int acpi_pci_sleep_wake(struct pci_dev *dev, bool enable)
131 if (acpi_pci_can_wakeup(dev)) 127 if (acpi_pci_can_wakeup(dev))
132 return acpi_pm_device_sleep_wake(&dev->dev, enable); 128 return acpi_pm_device_sleep_wake(&dev->dev, enable);
133 129
134 if (!pci_is_pcie(dev)) 130 acpi_pci_propagate_wakeup_enable(dev->bus, enable);
135 acpi_pci_propagate_wakeup_enable(dev->bus, enable);
136
137 return 0; 131 return 0;
138} 132}
139 133
diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
index c5df94e86678..807224ec8351 100644
--- a/drivers/pci/pci-sysfs.c
+++ b/drivers/pci/pci-sysfs.c
@@ -75,7 +75,8 @@ static ssize_t local_cpus_show(struct device *dev,
75 int len; 75 int len;
76 76
77#ifdef CONFIG_NUMA 77#ifdef CONFIG_NUMA
78 mask = cpumask_of_node(dev_to_node(dev)); 78 mask = (dev_to_node(dev) == -1) ? cpu_online_mask :
79 cpumask_of_node(dev_to_node(dev));
79#else 80#else
80 mask = cpumask_of_pcibus(to_pci_dev(dev)->bus); 81 mask = cpumask_of_pcibus(to_pci_dev(dev)->bus);
81#endif 82#endif
@@ -93,7 +94,8 @@ static ssize_t local_cpulist_show(struct device *dev,
93 int len; 94 int len;
94 95
95#ifdef CONFIG_NUMA 96#ifdef CONFIG_NUMA
96 mask = cpumask_of_node(dev_to_node(dev)); 97 mask = (dev_to_node(dev) == -1) ? cpu_online_mask :
98 cpumask_of_node(dev_to_node(dev));
97#else 99#else
98 mask = cpumask_of_pcibus(to_pci_dev(dev)->bus); 100 mask = cpumask_of_pcibus(to_pci_dev(dev)->bus);
99#endif 101#endif
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 0bc27e059019..315fea47e784 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -29,7 +29,17 @@ const char *pci_power_names[] = {
29}; 29};
30EXPORT_SYMBOL_GPL(pci_power_names); 30EXPORT_SYMBOL_GPL(pci_power_names);
31 31
32unsigned int pci_pm_d3_delay = PCI_PM_D3_WAIT; 32unsigned int pci_pm_d3_delay;
33
34static void pci_dev_d3_sleep(struct pci_dev *dev)
35{
36 unsigned int delay = dev->d3_delay;
37
38 if (delay < pci_pm_d3_delay)
39 delay = pci_pm_d3_delay;
40
41 msleep(delay);
42}
33 43
34#ifdef CONFIG_PCI_DOMAINS 44#ifdef CONFIG_PCI_DOMAINS
35int pci_domains_supported = 1; 45int pci_domains_supported = 1;
@@ -522,7 +532,7 @@ static int pci_raw_set_power_state(struct pci_dev *dev, pci_power_t state)
522 /* Mandatory power management transition delays */ 532 /* Mandatory power management transition delays */
523 /* see PCI PM 1.1 5.6.1 table 18 */ 533 /* see PCI PM 1.1 5.6.1 table 18 */
524 if (state == PCI_D3hot || dev->current_state == PCI_D3hot) 534 if (state == PCI_D3hot || dev->current_state == PCI_D3hot)
525 msleep(pci_pm_d3_delay); 535 pci_dev_d3_sleep(dev);
526 else if (state == PCI_D2 || dev->current_state == PCI_D2) 536 else if (state == PCI_D2 || dev->current_state == PCI_D2)
527 udelay(PCI_PM_D2_DELAY); 537 udelay(PCI_PM_D2_DELAY);
528 538
@@ -1153,11 +1163,11 @@ pci_disable_device(struct pci_dev *dev)
1153 1163
1154/** 1164/**
1155 * pcibios_set_pcie_reset_state - set reset state for device dev 1165 * pcibios_set_pcie_reset_state - set reset state for device dev
1156 * @dev: the PCI-E device reset 1166 * @dev: the PCIe device reset
1157 * @state: Reset state to enter into 1167 * @state: Reset state to enter into
1158 * 1168 *
1159 * 1169 *
1160 * Sets the PCI-E reset state for the device. This is the default 1170 * Sets the PCIe reset state for the device. This is the default
1161 * implementation. Architecture implementations can override this. 1171 * implementation. Architecture implementations can override this.
1162 */ 1172 */
1163int __attribute__ ((weak)) pcibios_set_pcie_reset_state(struct pci_dev *dev, 1173int __attribute__ ((weak)) pcibios_set_pcie_reset_state(struct pci_dev *dev,
@@ -1168,7 +1178,7 @@ int __attribute__ ((weak)) pcibios_set_pcie_reset_state(struct pci_dev *dev,
1168 1178
1169/** 1179/**
1170 * pci_set_pcie_reset_state - set reset state for device dev 1180 * pci_set_pcie_reset_state - set reset state for device dev
1171 * @dev: the PCI-E device reset 1181 * @dev: the PCIe device reset
1172 * @state: Reset state to enter into 1182 * @state: Reset state to enter into
1173 * 1183 *
1174 * 1184 *
@@ -1409,6 +1419,7 @@ void pci_pm_init(struct pci_dev *dev)
1409 } 1419 }
1410 1420
1411 dev->pm_cap = pm; 1421 dev->pm_cap = pm;
1422 dev->d3_delay = PCI_PM_D3_WAIT;
1412 1423
1413 dev->d1_support = false; 1424 dev->d1_support = false;
1414 dev->d2_support = false; 1425 dev->d2_support = false;
@@ -2247,12 +2258,12 @@ static int pci_pm_reset(struct pci_dev *dev, int probe)
2247 csr &= ~PCI_PM_CTRL_STATE_MASK; 2258 csr &= ~PCI_PM_CTRL_STATE_MASK;
2248 csr |= PCI_D3hot; 2259 csr |= PCI_D3hot;
2249 pci_write_config_word(dev, dev->pm_cap + PCI_PM_CTRL, csr); 2260 pci_write_config_word(dev, dev->pm_cap + PCI_PM_CTRL, csr);
2250 msleep(pci_pm_d3_delay); 2261 pci_dev_d3_sleep(dev);
2251 2262
2252 csr &= ~PCI_PM_CTRL_STATE_MASK; 2263 csr &= ~PCI_PM_CTRL_STATE_MASK;
2253 csr |= PCI_D0; 2264 csr |= PCI_D0;
2254 pci_write_config_word(dev, dev->pm_cap + PCI_PM_CTRL, csr); 2265 pci_write_config_word(dev, dev->pm_cap + PCI_PM_CTRL, csr);
2255 msleep(pci_pm_d3_delay); 2266 pci_dev_d3_sleep(dev);
2256 2267
2257 return 0; 2268 return 0;
2258} 2269}
@@ -2296,6 +2307,10 @@ static int pci_dev_reset(struct pci_dev *dev, int probe)
2296 down(&dev->dev.sem); 2307 down(&dev->dev.sem);
2297 } 2308 }
2298 2309
2310 rc = pci_dev_specific_reset(dev, probe);
2311 if (rc != -ENOTTY)
2312 goto done;
2313
2299 rc = pcie_flr(dev, probe); 2314 rc = pcie_flr(dev, probe);
2300 if (rc != -ENOTTY) 2315 if (rc != -ENOTTY)
2301 goto done; 2316 goto done;
@@ -2779,6 +2794,11 @@ int __attribute__ ((weak)) pci_ext_cfg_avail(struct pci_dev *dev)
2779 return 1; 2794 return 1;
2780} 2795}
2781 2796
2797void __weak pci_fixup_cardbus(struct pci_bus *bus)
2798{
2799}
2800EXPORT_SYMBOL(pci_fixup_cardbus);
2801
2782static int __init pci_setup(char *str) 2802static int __init pci_setup(char *str)
2783{ 2803{
2784 while (str) { 2804 while (str) {
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
index 33ed8e0aba1e..fbd0e3adbca3 100644
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -313,4 +313,12 @@ static inline int pci_resource_alignment(struct pci_dev *dev,
313 313
314extern void pci_enable_acs(struct pci_dev *dev); 314extern void pci_enable_acs(struct pci_dev *dev);
315 315
316struct pci_dev_reset_methods {
317 u16 vendor;
318 u16 device;
319 int (*reset)(struct pci_dev *dev, int probe);
320};
321
322extern int pci_dev_specific_reset(struct pci_dev *dev, int probe);
323
316#endif /* DRIVERS_PCI_H */ 324#endif /* DRIVERS_PCI_H */
diff --git a/drivers/pci/pcie/aer/Kconfig.debug b/drivers/pci/pcie/aer/Kconfig.debug
index b8c925c1f6aa..9142949734f5 100644
--- a/drivers/pci/pcie/aer/Kconfig.debug
+++ b/drivers/pci/pcie/aer/Kconfig.debug
@@ -3,14 +3,14 @@
3# 3#
4 4
5config PCIEAER_INJECT 5config PCIEAER_INJECT
6 tristate "PCIE AER error injector support" 6 tristate "PCIe AER error injector support"
7 depends on PCIEAER 7 depends on PCIEAER
8 default n 8 default n
9 help 9 help
10 This enables PCI Express Root Port Advanced Error Reporting 10 This enables PCI Express Root Port Advanced Error Reporting
11 (AER) software error injector. 11 (AER) software error injector.
12 12
13 Debuging PCIE AER code is quite difficult because it is hard 13 Debugging PCIe AER code is quite difficult because it is hard
14 to trigger various real hardware errors. Software based 14 to trigger various real hardware errors. Software based
15 error injection can fake almost all kinds of errors with the 15 error injection can fake almost all kinds of errors with the
16 help of a user space helper tool aer-inject, which can be 16 help of a user space helper tool aer-inject, which can be
diff --git a/drivers/pci/pcie/aer/aer_inject.c b/drivers/pci/pcie/aer/aer_inject.c
index 7fcd5331b14c..223052b73563 100644
--- a/drivers/pci/pcie/aer/aer_inject.c
+++ b/drivers/pci/pcie/aer/aer_inject.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * PCIE AER software error injection support. 2 * PCIe AER software error injection support.
3 * 3 *
4 * Debuging PCIE AER code is quite difficult because it is hard to 4 * Debuging PCIe AER code is quite difficult because it is hard to
5 * trigger various real hardware errors. Software based error 5 * trigger various real hardware errors. Software based error
6 * injection can fake almost all kinds of errors with the help of a 6 * injection can fake almost all kinds of errors with the help of a
7 * user space helper tool aer-inject, which can be gotten from: 7 * user space helper tool aer-inject, which can be gotten from:
@@ -321,7 +321,7 @@ static int aer_inject(struct aer_error_inj *einj)
321 unsigned long flags; 321 unsigned long flags;
322 unsigned int devfn = PCI_DEVFN(einj->dev, einj->fn); 322 unsigned int devfn = PCI_DEVFN(einj->dev, einj->fn);
323 int pos_cap_err, rp_pos_cap_err; 323 int pos_cap_err, rp_pos_cap_err;
324 u32 sever; 324 u32 sever, cor_mask, uncor_mask;
325 int ret = 0; 325 int ret = 0;
326 326
327 dev = pci_get_domain_bus_and_slot((int)einj->domain, einj->bus, devfn); 327 dev = pci_get_domain_bus_and_slot((int)einj->domain, einj->bus, devfn);
@@ -339,6 +339,9 @@ static int aer_inject(struct aer_error_inj *einj)
339 goto out_put; 339 goto out_put;
340 } 340 }
341 pci_read_config_dword(dev, pos_cap_err + PCI_ERR_UNCOR_SEVER, &sever); 341 pci_read_config_dword(dev, pos_cap_err + PCI_ERR_UNCOR_SEVER, &sever);
342 pci_read_config_dword(dev, pos_cap_err + PCI_ERR_COR_MASK, &cor_mask);
343 pci_read_config_dword(dev, pos_cap_err + PCI_ERR_UNCOR_MASK,
344 &uncor_mask);
342 345
343 rp_pos_cap_err = pci_find_ext_capability(rpdev, PCI_EXT_CAP_ID_ERR); 346 rp_pos_cap_err = pci_find_ext_capability(rpdev, PCI_EXT_CAP_ID_ERR);
344 if (!rp_pos_cap_err) { 347 if (!rp_pos_cap_err) {
@@ -374,6 +377,21 @@ static int aer_inject(struct aer_error_inj *einj)
374 err->header_log2 = einj->header_log2; 377 err->header_log2 = einj->header_log2;
375 err->header_log3 = einj->header_log3; 378 err->header_log3 = einj->header_log3;
376 379
380 if (einj->cor_status && !(einj->cor_status & ~cor_mask)) {
381 ret = -EINVAL;
382 printk(KERN_WARNING "The correctable error(s) is masked "
383 "by device\n");
384 spin_unlock_irqrestore(&inject_lock, flags);
385 goto out_put;
386 }
387 if (einj->uncor_status && !(einj->uncor_status & ~uncor_mask)) {
388 ret = -EINVAL;
389 printk(KERN_WARNING "The uncorrectable error(s) is masked "
390 "by device\n");
391 spin_unlock_irqrestore(&inject_lock, flags);
392 goto out_put;
393 }
394
377 rperr = __find_aer_error_by_dev(rpdev); 395 rperr = __find_aer_error_by_dev(rpdev);
378 if (!rperr) { 396 if (!rperr) {
379 rperr = rperr_alloc; 397 rperr = rperr_alloc;
@@ -413,8 +431,14 @@ static int aer_inject(struct aer_error_inj *einj)
413 if (ret) 431 if (ret)
414 goto out_put; 432 goto out_put;
415 433
416 if (find_aer_device(rpdev, &edev)) 434 if (find_aer_device(rpdev, &edev)) {
435 if (!get_service_data(edev)) {
436 printk(KERN_WARNING "AER service is not initialized\n");
437 ret = -EINVAL;
438 goto out_put;
439 }
417 aer_irq(-1, edev); 440 aer_irq(-1, edev);
441 }
418 else 442 else
419 ret = -EINVAL; 443 ret = -EINVAL;
420out_put: 444out_put:
@@ -484,5 +508,5 @@ static void __exit aer_inject_exit(void)
484module_init(aer_inject_init); 508module_init(aer_inject_init);
485module_exit(aer_inject_exit); 509module_exit(aer_inject_exit);
486 510
487MODULE_DESCRIPTION("PCIE AER software error injector"); 511MODULE_DESCRIPTION("PCIe AER software error injector");
488MODULE_LICENSE("GPL"); 512MODULE_LICENSE("GPL");
diff --git a/drivers/pci/pcie/aer/aerdrv.c b/drivers/pci/pcie/aer/aerdrv.c
index 97a345927b55..21f215f4daa3 100644
--- a/drivers/pci/pcie/aer/aerdrv.c
+++ b/drivers/pci/pcie/aer/aerdrv.c
@@ -155,7 +155,7 @@ static struct aer_rpc *aer_alloc_rpc(struct pcie_device *dev)
155 mutex_init(&rpc->rpc_mutex); 155 mutex_init(&rpc->rpc_mutex);
156 init_waitqueue_head(&rpc->wait_release); 156 init_waitqueue_head(&rpc->wait_release);
157 157
158 /* Use PCIE bus function to store rpc into PCIE device */ 158 /* Use PCIe bus function to store rpc into PCIe device */
159 set_service_data(dev, rpc); 159 set_service_data(dev, rpc);
160 160
161 return rpc; 161 return rpc;
diff --git a/drivers/pci/pcie/aer/aerdrv_acpi.c b/drivers/pci/pcie/aer/aerdrv_acpi.c
index 8edb2f300e8f..04814087658d 100644
--- a/drivers/pci/pcie/aer/aerdrv_acpi.c
+++ b/drivers/pci/pcie/aer/aerdrv_acpi.c
@@ -24,7 +24,7 @@
24 * 24 *
25 * @return: Zero on success. Nonzero otherwise. 25 * @return: Zero on success. Nonzero otherwise.
26 * 26 *
27 * Invoked when PCIE bus loads AER service driver. To avoid conflict with 27 * Invoked when PCIe bus loads AER service driver. To avoid conflict with
28 * BIOS AER support requires BIOS to yield AER control to OS native driver. 28 * BIOS AER support requires BIOS to yield AER control to OS native driver.
29 **/ 29 **/
30int aer_osc_setup(struct pcie_device *pciedev) 30int aer_osc_setup(struct pcie_device *pciedev)
diff --git a/drivers/pci/pcie/aer/aerdrv_core.c b/drivers/pci/pcie/aer/aerdrv_core.c
index ae672ca80333..c843a799814d 100644
--- a/drivers/pci/pcie/aer/aerdrv_core.c
+++ b/drivers/pci/pcie/aer/aerdrv_core.c
@@ -587,7 +587,7 @@ static void handle_error_source(struct pcie_device *aerdev,
587 * aer_enable_rootport - enable Root Port's interrupts when receiving messages 587 * aer_enable_rootport - enable Root Port's interrupts when receiving messages
588 * @rpc: pointer to a Root Port data structure 588 * @rpc: pointer to a Root Port data structure
589 * 589 *
590 * Invoked when PCIE bus loads AER service driver. 590 * Invoked when PCIe bus loads AER service driver.
591 */ 591 */
592void aer_enable_rootport(struct aer_rpc *rpc) 592void aer_enable_rootport(struct aer_rpc *rpc)
593{ 593{
@@ -597,7 +597,7 @@ void aer_enable_rootport(struct aer_rpc *rpc)
597 u32 reg32; 597 u32 reg32;
598 598
599 pos = pci_pcie_cap(pdev); 599 pos = pci_pcie_cap(pdev);
600 /* Clear PCIE Capability's Device Status */ 600 /* Clear PCIe Capability's Device Status */
601 pci_read_config_word(pdev, pos+PCI_EXP_DEVSTA, &reg16); 601 pci_read_config_word(pdev, pos+PCI_EXP_DEVSTA, &reg16);
602 pci_write_config_word(pdev, pos+PCI_EXP_DEVSTA, reg16); 602 pci_write_config_word(pdev, pos+PCI_EXP_DEVSTA, reg16);
603 603
@@ -631,7 +631,7 @@ void aer_enable_rootport(struct aer_rpc *rpc)
631 * disable_root_aer - disable Root Port's interrupts when receiving messages 631 * disable_root_aer - disable Root Port's interrupts when receiving messages
632 * @rpc: pointer to a Root Port data structure 632 * @rpc: pointer to a Root Port data structure
633 * 633 *
634 * Invoked when PCIE bus unloads AER service driver. 634 * Invoked when PCIe bus unloads AER service driver.
635 */ 635 */
636static void disable_root_aer(struct aer_rpc *rpc) 636static void disable_root_aer(struct aer_rpc *rpc)
637{ 637{
diff --git a/drivers/pci/pcie/aer/aerdrv_errprint.c b/drivers/pci/pcie/aer/aerdrv_errprint.c
index 44acde72294f..9d3e4c8d0184 100644
--- a/drivers/pci/pcie/aer/aerdrv_errprint.c
+++ b/drivers/pci/pcie/aer/aerdrv_errprint.c
@@ -184,7 +184,7 @@ void aer_print_error(struct pci_dev *dev, struct aer_err_info *info)
184 184
185 if (info->status == 0) { 185 if (info->status == 0) {
186 AER_PR(info, dev, 186 AER_PR(info, dev,
187 "PCIE Bus Error: severity=%s, type=Unaccessible, " 187 "PCIe Bus Error: severity=%s, type=Unaccessible, "
188 "id=%04x(Unregistered Agent ID)\n", 188 "id=%04x(Unregistered Agent ID)\n",
189 aer_error_severity_string[info->severity], id); 189 aer_error_severity_string[info->severity], id);
190 } else { 190 } else {
@@ -194,7 +194,7 @@ void aer_print_error(struct pci_dev *dev, struct aer_err_info *info)
194 agent = AER_GET_AGENT(info->severity, info->status); 194 agent = AER_GET_AGENT(info->severity, info->status);
195 195
196 AER_PR(info, dev, 196 AER_PR(info, dev,
197 "PCIE Bus Error: severity=%s, type=%s, id=%04x(%s)\n", 197 "PCIe Bus Error: severity=%s, type=%s, id=%04x(%s)\n",
198 aer_error_severity_string[info->severity], 198 aer_error_severity_string[info->severity],
199 aer_error_layer[layer], id, aer_agent_string[agent]); 199 aer_error_layer[layer], id, aer_agent_string[agent]);
200 200
diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
index 5a01fc7fbf05..be53d98fa384 100644
--- a/drivers/pci/pcie/aspm.c
+++ b/drivers/pci/pcie/aspm.c
@@ -1,6 +1,6 @@
1/* 1/*
2 * File: drivers/pci/pcie/aspm.c 2 * File: drivers/pci/pcie/aspm.c
3 * Enabling PCIE link L0s/L1 state and Clock Power Management 3 * Enabling PCIe link L0s/L1 state and Clock Power Management
4 * 4 *
5 * Copyright (C) 2007 Intel 5 * Copyright (C) 2007 Intel
6 * Copyright (C) Zhang Yanmin (yanmin.zhang@intel.com) 6 * Copyright (C) Zhang Yanmin (yanmin.zhang@intel.com)
@@ -499,7 +499,7 @@ static int pcie_aspm_sanity_check(struct pci_dev *pdev)
499 int pos; 499 int pos;
500 u32 reg32; 500 u32 reg32;
501 /* 501 /*
502 * Some functions in a slot might not all be PCIE functions, 502 * Some functions in a slot might not all be PCIe functions,
503 * very strange. Disable ASPM for the whole slot 503 * very strange. Disable ASPM for the whole slot
504 */ 504 */
505 list_for_each_entry(child, &pdev->subordinate->devices, bus_list) { 505 list_for_each_entry(child, &pdev->subordinate->devices, bus_list) {
diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c
index 413262eb95b7..b174188ac121 100644
--- a/drivers/pci/pcie/portdrv_core.c
+++ b/drivers/pci/pcie/portdrv_core.c
@@ -27,7 +27,7 @@
27 */ 27 */
28static void release_pcie_device(struct device *dev) 28static void release_pcie_device(struct device *dev)
29{ 29{
30 kfree(to_pcie_device(dev)); 30 kfree(to_pcie_device(dev));
31} 31}
32 32
33/** 33/**
@@ -346,12 +346,11 @@ static int suspend_iter(struct device *dev, void *data)
346{ 346{
347 struct pcie_port_service_driver *service_driver; 347 struct pcie_port_service_driver *service_driver;
348 348
349 if ((dev->bus == &pcie_port_bus_type) && 349 if ((dev->bus == &pcie_port_bus_type) && dev->driver) {
350 (dev->driver)) { 350 service_driver = to_service_driver(dev->driver);
351 service_driver = to_service_driver(dev->driver); 351 if (service_driver->suspend)
352 if (service_driver->suspend) 352 service_driver->suspend(to_pcie_device(dev));
353 service_driver->suspend(to_pcie_device(dev)); 353 }
354 }
355 return 0; 354 return 0;
356} 355}
357 356
@@ -494,6 +493,7 @@ int pcie_port_service_register(struct pcie_port_service_driver *new)
494 493
495 return driver_register(&new->driver); 494 return driver_register(&new->driver);
496} 495}
496EXPORT_SYMBOL(pcie_port_service_register);
497 497
498/** 498/**
499 * pcie_port_service_unregister - unregister PCI Express port service driver 499 * pcie_port_service_unregister - unregister PCI Express port service driver
@@ -503,6 +503,4 @@ void pcie_port_service_unregister(struct pcie_port_service_driver *drv)
503{ 503{
504 driver_unregister(&drv->driver); 504 driver_unregister(&drv->driver);
505} 505}
506
507EXPORT_SYMBOL(pcie_port_service_register);
508EXPORT_SYMBOL(pcie_port_service_unregister); 506EXPORT_SYMBOL(pcie_port_service_unregister);
diff --git a/drivers/pci/pcie/portdrv_pci.c b/drivers/pci/pcie/portdrv_pci.c
index a49452e2aed9..13c8972886e6 100644
--- a/drivers/pci/pcie/portdrv_pci.c
+++ b/drivers/pci/pcie/portdrv_pci.c
@@ -24,7 +24,7 @@
24 */ 24 */
25#define DRIVER_VERSION "v1.0" 25#define DRIVER_VERSION "v1.0"
26#define DRIVER_AUTHOR "tom.l.nguyen@intel.com" 26#define DRIVER_AUTHOR "tom.l.nguyen@intel.com"
27#define DRIVER_DESC "PCIE Port Bus Driver" 27#define DRIVER_DESC "PCIe Port Bus Driver"
28MODULE_AUTHOR(DRIVER_AUTHOR); 28MODULE_AUTHOR(DRIVER_AUTHOR);
29MODULE_DESCRIPTION(DRIVER_DESC); 29MODULE_DESCRIPTION(DRIVER_DESC);
30MODULE_LICENSE("GPL"); 30MODULE_LICENSE("GPL");
@@ -63,7 +63,7 @@ static const struct dev_pm_ops pcie_portdrv_pm_ops = {
63 * pcie_portdrv_probe - Probe PCI-Express port devices 63 * pcie_portdrv_probe - Probe PCI-Express port devices
64 * @dev: PCI-Express port device being probed 64 * @dev: PCI-Express port device being probed
65 * 65 *
66 * If detected invokes the pcie_port_device_register() method for 66 * If detected invokes the pcie_port_device_register() method for
67 * this port device. 67 * this port device.
68 * 68 *
69 */ 69 */
@@ -78,7 +78,7 @@ static int __devinit pcie_portdrv_probe(struct pci_dev *dev,
78 (dev->pcie_type != PCI_EXP_TYPE_DOWNSTREAM))) 78 (dev->pcie_type != PCI_EXP_TYPE_DOWNSTREAM)))
79 return -ENODEV; 79 return -ENODEV;
80 80
81 if (!dev->irq && dev->pin) { 81 if (!dev->irq && dev->pin) {
82 dev_warn(&dev->dev, "device [%04x:%04x] has invalid IRQ; " 82 dev_warn(&dev->dev, "device [%04x:%04x] has invalid IRQ; "
83 "check vendor BIOS\n", dev->vendor, dev->device); 83 "check vendor BIOS\n", dev->vendor, dev->device);
84 } 84 }
@@ -91,7 +91,7 @@ static int __devinit pcie_portdrv_probe(struct pci_dev *dev,
91 return 0; 91 return 0;
92} 92}
93 93
94static void pcie_portdrv_remove (struct pci_dev *dev) 94static void pcie_portdrv_remove(struct pci_dev *dev)
95{ 95{
96 pcie_port_device_remove(dev); 96 pcie_port_device_remove(dev);
97 pci_disable_device(dev); 97 pci_disable_device(dev);
@@ -129,14 +129,13 @@ static int error_detected_iter(struct device *device, void *data)
129static pci_ers_result_t pcie_portdrv_error_detected(struct pci_dev *dev, 129static pci_ers_result_t pcie_portdrv_error_detected(struct pci_dev *dev,
130 enum pci_channel_state error) 130 enum pci_channel_state error)
131{ 131{
132 struct aer_broadcast_data result_data = 132 struct aer_broadcast_data data = {error, PCI_ERS_RESULT_CAN_RECOVER};
133 {error, PCI_ERS_RESULT_CAN_RECOVER}; 133 int ret;
134 int retval;
135 134
136 /* can not fail */ 135 /* can not fail */
137 retval = device_for_each_child(&dev->dev, &result_data, error_detected_iter); 136 ret = device_for_each_child(&dev->dev, &data, error_detected_iter);
138 137
139 return result_data.result; 138 return data.result;
140} 139}
141 140
142static int mmio_enabled_iter(struct device *device, void *data) 141static int mmio_enabled_iter(struct device *device, void *data)
@@ -290,7 +289,7 @@ static int __init pcie_portdrv_init(void)
290 return retval; 289 return retval;
291} 290}
292 291
293static void __exit pcie_portdrv_exit(void) 292static void __exit pcie_portdrv_exit(void)
294{ 293{
295 pci_unregister_driver(&pcie_portdriver); 294 pci_unregister_driver(&pcie_portdriver);
296 pcie_port_bus_unregister(); 295 pcie_port_bus_unregister();
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 98ffb2de22e9..446e4a94d7d3 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -681,7 +681,7 @@ static void pci_read_irq(struct pci_dev *dev)
681 dev->irq = irq; 681 dev->irq = irq;
682} 682}
683 683
684static void set_pcie_port_type(struct pci_dev *pdev) 684void set_pcie_port_type(struct pci_dev *pdev)
685{ 685{
686 int pos; 686 int pos;
687 u16 reg16; 687 u16 reg16;
@@ -695,7 +695,7 @@ static void set_pcie_port_type(struct pci_dev *pdev)
695 pdev->pcie_type = (reg16 & PCI_EXP_FLAGS_TYPE) >> 4; 695 pdev->pcie_type = (reg16 & PCI_EXP_FLAGS_TYPE) >> 4;
696} 696}
697 697
698static void set_pcie_hotplug_bridge(struct pci_dev *pdev) 698void set_pcie_hotplug_bridge(struct pci_dev *pdev)
699{ 699{
700 int pos; 700 int pos;
701 u16 reg16; 701 u16 reg16;
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 7cfa7c38d318..d58b94030ef3 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -338,6 +338,23 @@ static void __devinit quirk_s3_64M(struct pci_dev *dev)
338DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_868, quirk_s3_64M); 338DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_868, quirk_s3_64M);
339DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_968, quirk_s3_64M); 339DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_968, quirk_s3_64M);
340 340
341/*
342 * Some CS5536 BIOSes (for example, the Soekris NET5501 board w/ comBIOS
343 * ver. 1.33 20070103) don't set the correct ISA PCI region header info.
344 * BAR0 should be 8 bytes; instead, it may be set to something like 8k
345 * (which conflicts w/ BAR1's memory range).
346 */
347static void __devinit quirk_cs5536_vsa(struct pci_dev *dev)
348{
349 if (pci_resource_len(dev, 0) != 8) {
350 struct resource *res = &dev->resource[0];
351 res->end = res->start + 8 - 1;
352 dev_info(&dev->dev, "CS5536 ISA bridge bug detected "
353 "(incorrect header); workaround applied.\n");
354 }
355}
356DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_ISA, quirk_cs5536_vsa);
357
341static void __devinit quirk_io_region(struct pci_dev *dev, unsigned region, 358static void __devinit quirk_io_region(struct pci_dev *dev, unsigned region,
342 unsigned size, int nr, const char *name) 359 unsigned size, int nr, const char *name)
343{ 360{
@@ -2629,14 +2646,86 @@ static int __init pci_apply_final_quirks(void)
2629 if (!pci_cache_line_size) { 2646 if (!pci_cache_line_size) {
2630 printk(KERN_DEBUG "PCI: CLS %u bytes, default %u\n", 2647 printk(KERN_DEBUG "PCI: CLS %u bytes, default %u\n",
2631 cls << 2, pci_dfl_cache_line_size << 2); 2648 cls << 2, pci_dfl_cache_line_size << 2);
2632 pci_cache_line_size = cls; 2649 pci_cache_line_size = cls ? cls : pci_dfl_cache_line_size;
2633 } 2650 }
2634 2651
2635 return 0; 2652 return 0;
2636} 2653}
2637 2654
2638fs_initcall_sync(pci_apply_final_quirks); 2655fs_initcall_sync(pci_apply_final_quirks);
2656
2657/*
2658 * Followings are device-specific reset methods which can be used to
2659 * reset a single function if other methods (e.g. FLR, PM D0->D3) are
2660 * not available.
2661 */
2662static int reset_intel_generic_dev(struct pci_dev *dev, int probe)
2663{
2664 int pos;
2665
2666 /* only implement PCI_CLASS_SERIAL_USB at present */
2667 if (dev->class == PCI_CLASS_SERIAL_USB) {
2668 pos = pci_find_capability(dev, PCI_CAP_ID_VNDR);
2669 if (!pos)
2670 return -ENOTTY;
2671
2672 if (probe)
2673 return 0;
2674
2675 pci_write_config_byte(dev, pos + 0x4, 1);
2676 msleep(100);
2677
2678 return 0;
2679 } else {
2680 return -ENOTTY;
2681 }
2682}
2683
2684static int reset_intel_82599_sfp_virtfn(struct pci_dev *dev, int probe)
2685{
2686 int pos;
2687
2688 pos = pci_find_capability(dev, PCI_CAP_ID_EXP);
2689 if (!pos)
2690 return -ENOTTY;
2691
2692 if (probe)
2693 return 0;
2694
2695 pci_write_config_word(dev, pos + PCI_EXP_DEVCTL,
2696 PCI_EXP_DEVCTL_BCR_FLR);
2697 msleep(100);
2698
2699 return 0;
2700}
2701
2702#define PCI_DEVICE_ID_INTEL_82599_SFP_VF 0x10ed
2703
2704static const struct pci_dev_reset_methods pci_dev_reset_methods[] = {
2705 { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82599_SFP_VF,
2706 reset_intel_82599_sfp_virtfn },
2707 { PCI_VENDOR_ID_INTEL, PCI_ANY_ID,
2708 reset_intel_generic_dev },
2709 { 0 }
2710};
2711
2712int pci_dev_specific_reset(struct pci_dev *dev, int probe)
2713{
2714 const struct pci_dev_reset_methods *i;
2715
2716 for (i = pci_dev_reset_methods; i->reset; i++) {
2717 if ((i->vendor == dev->vendor ||
2718 i->vendor == (u16)PCI_ANY_ID) &&
2719 (i->device == dev->device ||
2720 i->device == (u16)PCI_ANY_ID))
2721 return i->reset(dev, probe);
2722 }
2723
2724 return -ENOTTY;
2725}
2726
2639#else 2727#else
2640void pci_fixup_device(enum pci_fixup_pass pass, struct pci_dev *dev) {} 2728void pci_fixup_device(enum pci_fixup_pass pass, struct pci_dev *dev) {}
2729int pci_dev_specific_reset(struct pci_dev *dev, int probe) { return -ENOTTY; }
2641#endif 2730#endif
2642EXPORT_SYMBOL(pci_fixup_device); 2731EXPORT_SYMBOL(pci_fixup_device);
diff --git a/drivers/pci/search.c b/drivers/pci/search.c
index 6dae87143258..4a471dc4f4b9 100644
--- a/drivers/pci/search.c
+++ b/drivers/pci/search.c
@@ -15,9 +15,9 @@
15 15
16DECLARE_RWSEM(pci_bus_sem); 16DECLARE_RWSEM(pci_bus_sem);
17/* 17/*
18 * find the upstream PCIE-to-PCI bridge of a PCI device 18 * find the upstream PCIe-to-PCI bridge of a PCI device
19 * if the device is PCIE, return NULL 19 * if the device is PCIE, return NULL
20 * if the device isn't connected to a PCIE bridge (that is its parent is a 20 * if the device isn't connected to a PCIe bridge (that is its parent is a
21 * legacy PCI bridge and the bridge is directly connected to bus 0), return its 21 * legacy PCI bridge and the bridge is directly connected to bus 0), return its
22 * parent 22 * parent
23 */ 23 */
@@ -37,7 +37,7 @@ pci_find_upstream_pcie_bridge(struct pci_dev *pdev)
37 tmp = pdev; 37 tmp = pdev;
38 continue; 38 continue;
39 } 39 }
40 /* PCI device should connect to a PCIE bridge */ 40 /* PCI device should connect to a PCIe bridge */
41 if (pdev->pcie_type != PCI_EXP_TYPE_PCI_BRIDGE) { 41 if (pdev->pcie_type != PCI_EXP_TYPE_PCI_BRIDGE) {
42 /* Busted hardware? */ 42 /* Busted hardware? */
43 WARN_ON_ONCE(1); 43 WARN_ON_ONCE(1);
diff --git a/drivers/pcmcia/cardbus.c b/drivers/pcmcia/cardbus.c
index cdf50f3bc2df..d99f846451a3 100644
--- a/drivers/pcmcia/cardbus.c
+++ b/drivers/pcmcia/cardbus.c
@@ -222,7 +222,7 @@ int __ref cb_alloc(struct pcmcia_socket *s)
222 unsigned int max, pass; 222 unsigned int max, pass;
223 223
224 s->functions = pci_scan_slot(bus, PCI_DEVFN(0, 0)); 224 s->functions = pci_scan_slot(bus, PCI_DEVFN(0, 0));
225/* pcibios_fixup_bus(bus); */ 225 pci_fixup_cardbus(bus);
226 226
227 max = bus->secondary; 227 max = bus->secondary;
228 for (pass = 0; pass < 2; pass++) 228 for (pass = 0; pass < 2; pass++)
diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
index ec4faffe6b05..f526e735c5ab 100644
--- a/drivers/platform/x86/Kconfig
+++ b/drivers/platform/x86/Kconfig
@@ -231,8 +231,36 @@ config THINKPAD_ACPI
231 231
232 This driver was formerly known as ibm-acpi. 232 This driver was formerly known as ibm-acpi.
233 233
234 Extra functionality will be available if the rfkill (CONFIG_RFKILL)
235 and/or ALSA (CONFIG_SND) subsystems are available in the kernel.
236 Note that if you want ThinkPad-ACPI to be built-in instead of
237 modular, ALSA and rfkill will also have to be built-in.
238
234 If you have an IBM or Lenovo ThinkPad laptop, say Y or M here. 239 If you have an IBM or Lenovo ThinkPad laptop, say Y or M here.
235 240
241config THINKPAD_ACPI_ALSA_SUPPORT
242 bool "Console audio control ALSA interface"
243 depends on THINKPAD_ACPI
244 depends on SND
245 depends on SND = y || THINKPAD_ACPI = SND
246 default y
247 ---help---
248 Enables monitoring of the built-in console audio output control
249 (headphone and speakers), which is operated by the mute and (in
250 some ThinkPad models) volume hotkeys.
251
252 If this option is enabled, ThinkPad-ACPI will export an ALSA card
253 with a single read-only mixer control, which should be used for
254 on-screen-display feedback purposes by the Desktop Environment.
255
256 Optionally, the driver will also allow software control (the
257 ALSA mixer will be made read-write). Please refer to the driver
258 documentation for details.
259
260 All IBM models have both volume and mute control. Newer Lenovo
261 models only have mute control (the volume hotkeys are just normal
262 keys and volume control is done through the main HDA mixer).
263
236config THINKPAD_ACPI_DEBUGFACILITIES 264config THINKPAD_ACPI_DEBUGFACILITIES
237 bool "Maintainer debug facilities" 265 bool "Maintainer debug facilities"
238 depends on THINKPAD_ACPI 266 depends on THINKPAD_ACPI
@@ -336,6 +364,7 @@ config EEEPC_LAPTOP
336 select HWMON 364 select HWMON
337 select LEDS_CLASS 365 select LEDS_CLASS
338 select NEW_LEDS 366 select NEW_LEDS
367 select INPUT_SPARSEKMAP
339 ---help--- 368 ---help---
340 This driver supports the Fn-Fx keys on Eee PC laptops. 369 This driver supports the Fn-Fx keys on Eee PC laptops.
341 370
diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c
index 07d14dfdf0b4..226b3e93498c 100644
--- a/drivers/platform/x86/acer-wmi.c
+++ b/drivers/platform/x86/acer-wmi.c
@@ -934,7 +934,7 @@ static int __devinit acer_backlight_init(struct device *dev)
934 acer_backlight_device = bd; 934 acer_backlight_device = bd;
935 935
936 bd->props.power = FB_BLANK_UNBLANK; 936 bd->props.power = FB_BLANK_UNBLANK;
937 bd->props.brightness = max_brightness; 937 bd->props.brightness = read_brightness(bd);
938 bd->props.max_brightness = max_brightness; 938 bd->props.max_brightness = max_brightness;
939 backlight_update_status(bd); 939 backlight_update_status(bd);
940 return 0; 940 return 0;
diff --git a/drivers/platform/x86/dell-wmi.c b/drivers/platform/x86/dell-wmi.c
index 916ccb2b316c..1b1dddbd5744 100644
--- a/drivers/platform/x86/dell-wmi.c
+++ b/drivers/platform/x86/dell-wmi.c
@@ -202,8 +202,13 @@ static void dell_wmi_notify(u32 value, void *context)
202 struct acpi_buffer response = { ACPI_ALLOCATE_BUFFER, NULL }; 202 struct acpi_buffer response = { ACPI_ALLOCATE_BUFFER, NULL };
203 static struct key_entry *key; 203 static struct key_entry *key;
204 union acpi_object *obj; 204 union acpi_object *obj;
205 acpi_status status;
205 206
206 wmi_get_event_data(value, &response); 207 status = wmi_get_event_data(value, &response);
208 if (status != AE_OK) {
209 printk(KERN_INFO "dell-wmi: bad event status 0x%x\n", status);
210 return;
211 }
207 212
208 obj = (union acpi_object *)response.pointer; 213 obj = (union acpi_object *)response.pointer;
209 214
@@ -323,8 +328,9 @@ static int __init dell_wmi_input_setup(void)
323static int __init dell_wmi_init(void) 328static int __init dell_wmi_init(void)
324{ 329{
325 int err; 330 int err;
331 acpi_status status;
326 332
327 if (wmi_has_guid(DELL_EVENT_GUID)) { 333 if (!wmi_has_guid(DELL_EVENT_GUID)) {
328 printk(KERN_WARNING "dell-wmi: No known WMI GUID found\n"); 334 printk(KERN_WARNING "dell-wmi: No known WMI GUID found\n");
329 return -ENODEV; 335 return -ENODEV;
330 } 336 }
@@ -336,14 +342,14 @@ static int __init dell_wmi_init(void)
336 if (err) 342 if (err)
337 return err; 343 return err;
338 344
339 err = wmi_install_notify_handler(DELL_EVENT_GUID, 345 status = wmi_install_notify_handler(DELL_EVENT_GUID,
340 dell_wmi_notify, NULL); 346 dell_wmi_notify, NULL);
341 if (err) { 347 if (ACPI_FAILURE(status)) {
342 input_unregister_device(dell_wmi_input_dev); 348 input_unregister_device(dell_wmi_input_dev);
343 printk(KERN_ERR 349 printk(KERN_ERR
344 "dell-wmi: Unable to register notify handler - %d\n", 350 "dell-wmi: Unable to register notify handler - %d\n",
345 err); 351 status);
346 return err; 352 return -ENODEV;
347 } 353 }
348 354
349 return 0; 355 return 0;
diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c
index 5838c69b2fb3..e2be6bb33d92 100644
--- a/drivers/platform/x86/eeepc-laptop.c
+++ b/drivers/platform/x86/eeepc-laptop.c
@@ -31,10 +31,12 @@
31#include <acpi/acpi_bus.h> 31#include <acpi/acpi_bus.h>
32#include <linux/uaccess.h> 32#include <linux/uaccess.h>
33#include <linux/input.h> 33#include <linux/input.h>
34#include <linux/input/sparse-keymap.h>
34#include <linux/rfkill.h> 35#include <linux/rfkill.h>
35#include <linux/pci.h> 36#include <linux/pci.h>
36#include <linux/pci_hotplug.h> 37#include <linux/pci_hotplug.h>
37#include <linux/leds.h> 38#include <linux/leds.h>
39#include <linux/dmi.h>
38 40
39#define EEEPC_LAPTOP_VERSION "0.1" 41#define EEEPC_LAPTOP_VERSION "0.1"
40#define EEEPC_LAPTOP_NAME "Eee PC Hotkey Driver" 42#define EEEPC_LAPTOP_NAME "Eee PC Hotkey Driver"
@@ -48,6 +50,14 @@ MODULE_AUTHOR("Corentin Chary, Eric Cooper");
48MODULE_DESCRIPTION(EEEPC_LAPTOP_NAME); 50MODULE_DESCRIPTION(EEEPC_LAPTOP_NAME);
49MODULE_LICENSE("GPL"); 51MODULE_LICENSE("GPL");
50 52
53static bool hotplug_disabled;
54
55module_param(hotplug_disabled, bool, 0644);
56MODULE_PARM_DESC(hotplug_disabled,
57 "Disable hotplug for wireless device. "
58 "If your laptop need that, please report to "
59 "acpi4asus-user@lists.sourceforge.net.");
60
51/* 61/*
52 * Definitions for Asus EeePC 62 * Definitions for Asus EeePC
53 */ 63 */
@@ -120,38 +130,28 @@ static const char *cm_setv[] = {
120 NULL, NULL, "PBPS", "TPDS" 130 NULL, NULL, "PBPS", "TPDS"
121}; 131};
122 132
123struct key_entry {
124 char type;
125 u8 code;
126 u16 keycode;
127};
128
129enum { KE_KEY, KE_END };
130
131static const struct key_entry eeepc_keymap[] = { 133static const struct key_entry eeepc_keymap[] = {
132 /* Sleep already handled via generic ACPI code */ 134 { KE_KEY, 0x10, { KEY_WLAN } },
133 {KE_KEY, 0x10, KEY_WLAN }, 135 { KE_KEY, 0x11, { KEY_WLAN } },
134 {KE_KEY, 0x11, KEY_WLAN }, 136 { KE_KEY, 0x12, { KEY_PROG1 } },
135 {KE_KEY, 0x12, KEY_PROG1 }, 137 { KE_KEY, 0x13, { KEY_MUTE } },
136 {KE_KEY, 0x13, KEY_MUTE }, 138 { KE_KEY, 0x14, { KEY_VOLUMEDOWN } },
137 {KE_KEY, 0x14, KEY_VOLUMEDOWN }, 139 { KE_KEY, 0x15, { KEY_VOLUMEUP } },
138 {KE_KEY, 0x15, KEY_VOLUMEUP }, 140 { KE_KEY, 0x16, { KEY_DISPLAY_OFF } },
139 {KE_KEY, 0x16, KEY_DISPLAY_OFF }, 141 { KE_KEY, 0x1a, { KEY_COFFEE } },
140 {KE_KEY, 0x1a, KEY_COFFEE }, 142 { KE_KEY, 0x1b, { KEY_ZOOM } },
141 {KE_KEY, 0x1b, KEY_ZOOM }, 143 { KE_KEY, 0x1c, { KEY_PROG2 } },
142 {KE_KEY, 0x1c, KEY_PROG2 }, 144 { KE_KEY, 0x1d, { KEY_PROG3 } },
143 {KE_KEY, 0x1d, KEY_PROG3 }, 145 { KE_KEY, NOTIFY_BRN_MIN, { KEY_BRIGHTNESSDOWN } },
144 {KE_KEY, NOTIFY_BRN_MIN, KEY_BRIGHTNESSDOWN }, 146 { KE_KEY, NOTIFY_BRN_MAX, { KEY_BRIGHTNESSUP } },
145 {KE_KEY, NOTIFY_BRN_MAX, KEY_BRIGHTNESSUP }, 147 { KE_KEY, 0x30, { KEY_SWITCHVIDEOMODE } },
146 {KE_KEY, 0x30, KEY_SWITCHVIDEOMODE }, 148 { KE_KEY, 0x31, { KEY_SWITCHVIDEOMODE } },
147 {KE_KEY, 0x31, KEY_SWITCHVIDEOMODE }, 149 { KE_KEY, 0x32, { KEY_SWITCHVIDEOMODE } },
148 {KE_KEY, 0x32, KEY_SWITCHVIDEOMODE }, 150 { KE_KEY, 0x37, { KEY_F13 } }, /* Disable Touchpad */
149 {KE_KEY, 0x37, KEY_F13 }, /* Disable Touchpad */ 151 { KE_KEY, 0x38, { KEY_F14 } },
150 {KE_KEY, 0x38, KEY_F14 }, 152 { KE_END, 0 },
151 {KE_END, 0},
152}; 153};
153 154
154
155/* 155/*
156 * This is the main structure, we can use it to store useful information 156 * This is the main structure, we can use it to store useful information
157 */ 157 */
@@ -159,6 +159,8 @@ struct eeepc_laptop {
159 acpi_handle handle; /* the handle of the acpi device */ 159 acpi_handle handle; /* the handle of the acpi device */
160 u32 cm_supported; /* the control methods supported 160 u32 cm_supported; /* the control methods supported
161 by this BIOS */ 161 by this BIOS */
162 bool cpufv_disabled;
163 bool hotplug_disabled;
162 u16 event_count[128]; /* count for each event */ 164 u16 event_count[128]; /* count for each event */
163 165
164 struct platform_device *platform_device; 166 struct platform_device *platform_device;
@@ -378,6 +380,8 @@ static ssize_t store_cpufv(struct device *dev,
378 struct eeepc_cpufv c; 380 struct eeepc_cpufv c;
379 int rv, value; 381 int rv, value;
380 382
383 if (eeepc->cpufv_disabled)
384 return -EPERM;
381 if (get_cpufv(eeepc, &c)) 385 if (get_cpufv(eeepc, &c))
382 return -ENODEV; 386 return -ENODEV;
383 rv = parse_arg(buf, count, &value); 387 rv = parse_arg(buf, count, &value);
@@ -389,6 +393,41 @@ static ssize_t store_cpufv(struct device *dev,
389 return rv; 393 return rv;
390} 394}
391 395
396static ssize_t show_cpufv_disabled(struct device *dev,
397 struct device_attribute *attr,
398 char *buf)
399{
400 struct eeepc_laptop *eeepc = dev_get_drvdata(dev);
401
402 return sprintf(buf, "%d\n", eeepc->cpufv_disabled);
403}
404
405static ssize_t store_cpufv_disabled(struct device *dev,
406 struct device_attribute *attr,
407 const char *buf, size_t count)
408{
409 struct eeepc_laptop *eeepc = dev_get_drvdata(dev);
410 int rv, value;
411
412 rv = parse_arg(buf, count, &value);
413 if (rv < 0)
414 return rv;
415
416 switch (value) {
417 case 0:
418 if (eeepc->cpufv_disabled)
419 pr_warning("cpufv enabled (not officially supported "
420 "on this model)\n");
421 eeepc->cpufv_disabled = false;
422 return rv;
423 case 1:
424 return -EPERM;
425 default:
426 return -EINVAL;
427 }
428}
429
430
392static struct device_attribute dev_attr_cpufv = { 431static struct device_attribute dev_attr_cpufv = {
393 .attr = { 432 .attr = {
394 .name = "cpufv", 433 .name = "cpufv",
@@ -404,12 +443,22 @@ static struct device_attribute dev_attr_available_cpufv = {
404 .show = show_available_cpufv 443 .show = show_available_cpufv
405}; 444};
406 445
446static struct device_attribute dev_attr_cpufv_disabled = {
447 .attr = {
448 .name = "cpufv_disabled",
449 .mode = 0644 },
450 .show = show_cpufv_disabled,
451 .store = store_cpufv_disabled
452};
453
454
407static struct attribute *platform_attributes[] = { 455static struct attribute *platform_attributes[] = {
408 &dev_attr_camera.attr, 456 &dev_attr_camera.attr,
409 &dev_attr_cardr.attr, 457 &dev_attr_cardr.attr,
410 &dev_attr_disp.attr, 458 &dev_attr_disp.attr,
411 &dev_attr_cpufv.attr, 459 &dev_attr_cpufv.attr,
412 &dev_attr_available_cpufv.attr, 460 &dev_attr_available_cpufv.attr,
461 &dev_attr_cpufv_disabled.attr,
413 NULL 462 NULL
414}; 463};
415 464
@@ -796,6 +845,9 @@ static int eeepc_rfkill_init(struct eeepc_laptop *eeepc)
796 if (result && result != -ENODEV) 845 if (result && result != -ENODEV)
797 goto exit; 846 goto exit;
798 847
848 if (eeepc->hotplug_disabled)
849 return 0;
850
799 result = eeepc_setup_pci_hotplug(eeepc); 851 result = eeepc_setup_pci_hotplug(eeepc);
800 /* 852 /*
801 * If we get -EBUSY then something else is handling the PCI hotplug - 853 * If we get -EBUSY then something else is handling the PCI hotplug -
@@ -1090,120 +1142,42 @@ static void eeepc_backlight_exit(struct eeepc_laptop *eeepc)
1090/* 1142/*
1091 * Input device (i.e. hotkeys) 1143 * Input device (i.e. hotkeys)
1092 */ 1144 */
1093static struct key_entry *eeepc_get_entry_by_scancode( 1145static int eeepc_input_init(struct eeepc_laptop *eeepc)
1094 struct eeepc_laptop *eeepc,
1095 int code)
1096{ 1146{
1097 struct key_entry *key; 1147 struct input_dev *input;
1148 int error;
1098 1149
1099 for (key = eeepc->keymap; key->type != KE_END; key++) 1150 input = input_allocate_device();
1100 if (code == key->code) 1151 if (!input) {
1101 return key; 1152 pr_info("Unable to allocate input device\n");
1102 1153 return -ENOMEM;
1103 return NULL;
1104}
1105
1106static void eeepc_input_notify(struct eeepc_laptop *eeepc, int event)
1107{
1108 static struct key_entry *key;
1109
1110 key = eeepc_get_entry_by_scancode(eeepc, event);
1111 if (key) {
1112 switch (key->type) {
1113 case KE_KEY:
1114 input_report_key(eeepc->inputdev, key->keycode,
1115 1);
1116 input_sync(eeepc->inputdev);
1117 input_report_key(eeepc->inputdev, key->keycode,
1118 0);
1119 input_sync(eeepc->inputdev);
1120 break;
1121 }
1122 } 1154 }
1123}
1124
1125static struct key_entry *eeepc_get_entry_by_keycode(
1126 struct eeepc_laptop *eeepc, int code)
1127{
1128 struct key_entry *key;
1129
1130 for (key = eeepc->keymap; key->type != KE_END; key++)
1131 if (code == key->keycode && key->type == KE_KEY)
1132 return key;
1133 1155
1134 return NULL; 1156 input->name = "Asus EeePC extra buttons";
1135} 1157 input->phys = EEEPC_LAPTOP_FILE "/input0";
1158 input->id.bustype = BUS_HOST;
1159 input->dev.parent = &eeepc->platform_device->dev;
1136 1160
1137static int eeepc_getkeycode(struct input_dev *dev, int scancode, int *keycode) 1161 error = sparse_keymap_setup(input, eeepc_keymap, NULL);
1138{ 1162 if (error) {
1139 struct eeepc_laptop *eeepc = input_get_drvdata(dev); 1163 pr_err("Unable to setup input device keymap\n");
1140 struct key_entry *key = eeepc_get_entry_by_scancode(eeepc, scancode); 1164 goto err_free_dev;
1141
1142 if (key && key->type == KE_KEY) {
1143 *keycode = key->keycode;
1144 return 0;
1145 } 1165 }
1146 1166
1147 return -EINVAL; 1167 error = input_register_device(input);
1148} 1168 if (error) {
1149 1169 pr_err("Unable to register input device\n");
1150static int eeepc_setkeycode(struct input_dev *dev, int scancode, int keycode) 1170 goto err_free_keymap;
1151{
1152 struct eeepc_laptop *eeepc = input_get_drvdata(dev);
1153 struct key_entry *key;
1154 int old_keycode;
1155
1156 if (keycode < 0 || keycode > KEY_MAX)
1157 return -EINVAL;
1158
1159 key = eeepc_get_entry_by_scancode(eeepc, scancode);
1160 if (key && key->type == KE_KEY) {
1161 old_keycode = key->keycode;
1162 key->keycode = keycode;
1163 set_bit(keycode, dev->keybit);
1164 if (!eeepc_get_entry_by_keycode(eeepc, old_keycode))
1165 clear_bit(old_keycode, dev->keybit);
1166 return 0;
1167 } 1171 }
1168 1172
1169 return -EINVAL; 1173 eeepc->inputdev = input;
1170}
1171
1172static int eeepc_input_init(struct eeepc_laptop *eeepc)
1173{
1174 const struct key_entry *key;
1175 int result;
1176
1177 eeepc->inputdev = input_allocate_device();
1178 if (!eeepc->inputdev) {
1179 pr_info("Unable to allocate input device\n");
1180 return -ENOMEM;
1181 }
1182 eeepc->inputdev->name = "Asus EeePC extra buttons";
1183 eeepc->inputdev->dev.parent = &eeepc->platform_device->dev;
1184 eeepc->inputdev->phys = EEEPC_LAPTOP_FILE "/input0";
1185 eeepc->inputdev->id.bustype = BUS_HOST;
1186 eeepc->inputdev->getkeycode = eeepc_getkeycode;
1187 eeepc->inputdev->setkeycode = eeepc_setkeycode;
1188 input_set_drvdata(eeepc->inputdev, eeepc);
1189
1190 eeepc->keymap = kmemdup(eeepc_keymap, sizeof(eeepc_keymap),
1191 GFP_KERNEL);
1192 for (key = eeepc_keymap; key->type != KE_END; key++) {
1193 switch (key->type) {
1194 case KE_KEY:
1195 set_bit(EV_KEY, eeepc->inputdev->evbit);
1196 set_bit(key->keycode, eeepc->inputdev->keybit);
1197 break;
1198 }
1199 }
1200 result = input_register_device(eeepc->inputdev);
1201 if (result) {
1202 pr_info("Unable to register input device\n");
1203 input_free_device(eeepc->inputdev);
1204 return result;
1205 }
1206 return 0; 1174 return 0;
1175
1176 err_free_keymap:
1177 sparse_keymap_free(input);
1178 err_free_dev:
1179 input_free_device(input);
1180 return error;
1207} 1181}
1208 1182
1209static void eeepc_input_exit(struct eeepc_laptop *eeepc) 1183static void eeepc_input_exit(struct eeepc_laptop *eeepc)
@@ -1253,11 +1227,59 @@ static void eeepc_acpi_notify(struct acpi_device *device, u32 event)
1253 * event will be desired value (or else ignored) 1227 * event will be desired value (or else ignored)
1254 */ 1228 */
1255 } 1229 }
1256 eeepc_input_notify(eeepc, event); 1230 sparse_keymap_report_event(eeepc->inputdev, event,
1231 1, true);
1257 } 1232 }
1258 } else { 1233 } else {
1259 /* Everything else is a bona-fide keypress event */ 1234 /* Everything else is a bona-fide keypress event */
1260 eeepc_input_notify(eeepc, event); 1235 sparse_keymap_report_event(eeepc->inputdev, event, 1, true);
1236 }
1237}
1238
1239static void eeepc_dmi_check(struct eeepc_laptop *eeepc)
1240{
1241 const char *model;
1242
1243 model = dmi_get_system_info(DMI_PRODUCT_NAME);
1244 if (!model)
1245 return;
1246
1247 /*
1248 * Blacklist for setting cpufv (cpu speed).
1249 *
1250 * EeePC 4G ("701") implements CFVS, but it is not supported
1251 * by the pre-installed OS, and the original option to change it
1252 * in the BIOS setup screen was removed in later versions.
1253 *
1254 * Judging by the lack of "Super Hybrid Engine" on Asus product pages,
1255 * this applies to all "701" models (4G/4G Surf/2G Surf).
1256 *
1257 * So Asus made a deliberate decision not to support it on this model.
1258 * We have several reports that using it can cause the system to hang
1259 *
1260 * The hang has also been reported on a "702" (Model name "8G"?).
1261 *
1262 * We avoid dmi_check_system() / dmi_match(), because they use
1263 * substring matching. We don't want to affect the "701SD"
1264 * and "701SDX" models, because they do support S.H.E.
1265 */
1266 if (strcmp(model, "701") == 0 || strcmp(model, "702") == 0) {
1267 eeepc->cpufv_disabled = true;
1268 pr_info("model %s does not officially support setting cpu "
1269 "speed\n", model);
1270 pr_info("cpufv disabled to avoid instability\n");
1271 }
1272
1273 /*
1274 * Blacklist for wlan hotplug
1275 *
1276 * Eeepc 1005HA doesn't work like others models and don't need the
1277 * hotplug code. In fact, current hotplug code seems to unplug another
1278 * device...
1279 */
1280 if (strcmp(model, "1005HA") == 0 || strcmp(model, "1201N") == 0) {
1281 eeepc->hotplug_disabled = true;
1282 pr_info("wlan hotplug disabled\n");
1261 } 1283 }
1262} 1284}
1263 1285
@@ -1342,6 +1364,10 @@ static int __devinit eeepc_acpi_add(struct acpi_device *device)
1342 strcpy(acpi_device_class(device), EEEPC_ACPI_CLASS); 1364 strcpy(acpi_device_class(device), EEEPC_ACPI_CLASS);
1343 device->driver_data = eeepc; 1365 device->driver_data = eeepc;
1344 1366
1367 eeepc->hotplug_disabled = hotplug_disabled;
1368
1369 eeepc_dmi_check(eeepc);
1370
1345 result = eeepc_acpi_init(eeepc, device); 1371 result = eeepc_acpi_init(eeepc, device);
1346 if (result) 1372 if (result)
1347 goto fail_platform; 1373 goto fail_platform;
@@ -1452,10 +1478,12 @@ static int __init eeepc_laptop_init(void)
1452 result = acpi_bus_register_driver(&eeepc_acpi_driver); 1478 result = acpi_bus_register_driver(&eeepc_acpi_driver);
1453 if (result < 0) 1479 if (result < 0)
1454 goto fail_acpi_driver; 1480 goto fail_acpi_driver;
1481
1455 if (!eeepc_device_present) { 1482 if (!eeepc_device_present) {
1456 result = -ENODEV; 1483 result = -ENODEV;
1457 goto fail_no_device; 1484 goto fail_no_device;
1458 } 1485 }
1486
1459 return 0; 1487 return 0;
1460 1488
1461fail_no_device: 1489fail_no_device:
diff --git a/drivers/platform/x86/hp-wmi.c b/drivers/platform/x86/hp-wmi.c
index 8781d8fa7a57..ad4c414dbfbc 100644
--- a/drivers/platform/x86/hp-wmi.c
+++ b/drivers/platform/x86/hp-wmi.c
@@ -338,8 +338,13 @@ static void hp_wmi_notify(u32 value, void *context)
338 static struct key_entry *key; 338 static struct key_entry *key;
339 union acpi_object *obj; 339 union acpi_object *obj;
340 int eventcode; 340 int eventcode;
341 acpi_status status;
341 342
342 wmi_get_event_data(value, &response); 343 status = wmi_get_event_data(value, &response);
344 if (status != AE_OK) {
345 printk(KERN_INFO "hp-wmi: bad event status 0x%x\n", status);
346 return;
347 }
343 348
344 obj = (union acpi_object *)response.pointer; 349 obj = (union acpi_object *)response.pointer;
345 350
@@ -388,8 +393,6 @@ static void hp_wmi_notify(u32 value, void *context)
388 } else 393 } else
389 printk(KERN_INFO "HP WMI: Unknown key pressed - %x\n", 394 printk(KERN_INFO "HP WMI: Unknown key pressed - %x\n",
390 eventcode); 395 eventcode);
391
392 kfree(obj);
393} 396}
394 397
395static int __init hp_wmi_input_setup(void) 398static int __init hp_wmi_input_setup(void)
@@ -581,7 +584,7 @@ static int __init hp_wmi_init(void)
581 if (wmi_has_guid(HPWMI_EVENT_GUID)) { 584 if (wmi_has_guid(HPWMI_EVENT_GUID)) {
582 err = wmi_install_notify_handler(HPWMI_EVENT_GUID, 585 err = wmi_install_notify_handler(HPWMI_EVENT_GUID,
583 hp_wmi_notify, NULL); 586 hp_wmi_notify, NULL);
584 if (!err) 587 if (ACPI_SUCCESS(err))
585 hp_wmi_input_setup(); 588 hp_wmi_input_setup();
586 } 589 }
587 590
diff --git a/drivers/platform/x86/msi-wmi.c b/drivers/platform/x86/msi-wmi.c
index 7f77f908bb01..f5f70d4c6913 100644
--- a/drivers/platform/x86/msi-wmi.c
+++ b/drivers/platform/x86/msi-wmi.c
@@ -149,8 +149,13 @@ static void msi_wmi_notify(u32 value, void *context)
149 static struct key_entry *key; 149 static struct key_entry *key;
150 union acpi_object *obj; 150 union acpi_object *obj;
151 ktime_t cur; 151 ktime_t cur;
152 acpi_status status;
152 153
153 wmi_get_event_data(value, &response); 154 status = wmi_get_event_data(value, &response);
155 if (status != AE_OK) {
156 printk(KERN_INFO DRV_PFX "bad event status 0x%x\n", status);
157 return;
158 }
154 159
155 obj = (union acpi_object *)response.pointer; 160 obj = (union acpi_object *)response.pointer;
156 161
@@ -236,7 +241,7 @@ static int __init msi_wmi_init(void)
236 } 241 }
237 err = wmi_install_notify_handler(MSIWMI_EVENT_GUID, 242 err = wmi_install_notify_handler(MSIWMI_EVENT_GUID,
238 msi_wmi_notify, NULL); 243 msi_wmi_notify, NULL);
239 if (err) 244 if (ACPI_FAILURE(err))
240 return -EINVAL; 245 return -EINVAL;
241 246
242 err = msi_wmi_input_setup(); 247 err = msi_wmi_input_setup();
diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c
index 5af53340da6f..3f71a605a492 100644
--- a/drivers/platform/x86/sony-laptop.c
+++ b/drivers/platform/x86/sony-laptop.c
@@ -1201,9 +1201,12 @@ static void sony_nc_rfkill_setup(struct acpi_device *device)
1201 /* the buffer is filled with magic numbers describing the devices 1201 /* the buffer is filled with magic numbers describing the devices
1202 * available, 0xff terminates the enumeration 1202 * available, 0xff terminates the enumeration
1203 */ 1203 */
1204 while ((dev_code = *(device_enum->buffer.pointer + i)) != 0xff && 1204 for (i = 0; i < device_enum->buffer.length; i++) {
1205 i < device_enum->buffer.length) { 1205
1206 i++; 1206 dev_code = *(device_enum->buffer.pointer + i);
1207 if (dev_code == 0xff)
1208 break;
1209
1207 dprintk("Radio devices, looking at 0x%.2x\n", dev_code); 1210 dprintk("Radio devices, looking at 0x%.2x\n", dev_code);
1208 1211
1209 if (dev_code == 0 && !sony_rfkill_devices[SONY_WIFI]) 1212 if (dev_code == 0 && !sony_rfkill_devices[SONY_WIFI])
diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
index 448c8aeb166b..eb603f1d55ca 100644
--- a/drivers/platform/x86/thinkpad_acpi.c
+++ b/drivers/platform/x86/thinkpad_acpi.c
@@ -5771,7 +5771,7 @@ static void thermal_exit(void)
5771 case TPACPI_THERMAL_ACPI_TMP07: 5771 case TPACPI_THERMAL_ACPI_TMP07:
5772 case TPACPI_THERMAL_ACPI_UPDT: 5772 case TPACPI_THERMAL_ACPI_UPDT:
5773 sysfs_remove_group(&tpacpi_sensors_pdev->dev.kobj, 5773 sysfs_remove_group(&tpacpi_sensors_pdev->dev.kobj,
5774 &thermal_temp_input16_group); 5774 &thermal_temp_input8_group);
5775 break; 5775 break;
5776 case TPACPI_THERMAL_NONE: 5776 case TPACPI_THERMAL_NONE:
5777 default: 5777 default:
@@ -6384,11 +6384,13 @@ static struct ibm_struct brightness_driver_data = {
6384 * and we leave them unchanged. 6384 * and we leave them unchanged.
6385 */ 6385 */
6386 6386
6387#ifdef CONFIG_THINKPAD_ACPI_ALSA_SUPPORT
6388
6387#define TPACPI_ALSA_DRVNAME "ThinkPad EC" 6389#define TPACPI_ALSA_DRVNAME "ThinkPad EC"
6388#define TPACPI_ALSA_SHRTNAME "ThinkPad Console Audio Control" 6390#define TPACPI_ALSA_SHRTNAME "ThinkPad Console Audio Control"
6389#define TPACPI_ALSA_MIXERNAME TPACPI_ALSA_SHRTNAME 6391#define TPACPI_ALSA_MIXERNAME TPACPI_ALSA_SHRTNAME
6390 6392
6391static int alsa_index = SNDRV_DEFAULT_IDX1; 6393static int alsa_index = ~((1 << (SNDRV_CARDS - 3)) - 1); /* last three slots */
6392static char *alsa_id = "ThinkPadEC"; 6394static char *alsa_id = "ThinkPadEC";
6393static int alsa_enable = SNDRV_DEFAULT_ENABLE1; 6395static int alsa_enable = SNDRV_DEFAULT_ENABLE1;
6394 6396
@@ -6705,10 +6707,11 @@ static int __init volume_create_alsa_mixer(void)
6705 6707
6706 rc = snd_card_create(alsa_index, alsa_id, THIS_MODULE, 6708 rc = snd_card_create(alsa_index, alsa_id, THIS_MODULE,
6707 sizeof(struct tpacpi_alsa_data), &card); 6709 sizeof(struct tpacpi_alsa_data), &card);
6708 if (rc < 0) 6710 if (rc < 0 || !card) {
6709 return rc; 6711 printk(TPACPI_ERR
6710 if (!card) 6712 "Failed to create ALSA card structures: %d\n", rc);
6711 return -ENOMEM; 6713 return 1;
6714 }
6712 6715
6713 BUG_ON(!card->private_data); 6716 BUG_ON(!card->private_data);
6714 data = card->private_data; 6717 data = card->private_data;
@@ -6741,8 +6744,9 @@ static int __init volume_create_alsa_mixer(void)
6741 rc = snd_ctl_add(card, ctl_vol); 6744 rc = snd_ctl_add(card, ctl_vol);
6742 if (rc < 0) { 6745 if (rc < 0) {
6743 printk(TPACPI_ERR 6746 printk(TPACPI_ERR
6744 "Failed to create ALSA volume control\n"); 6747 "Failed to create ALSA volume control: %d\n",
6745 goto err_out; 6748 rc);
6749 goto err_exit;
6746 } 6750 }
6747 data->ctl_vol_id = &ctl_vol->id; 6751 data->ctl_vol_id = &ctl_vol->id;
6748 } 6752 }
@@ -6750,22 +6754,25 @@ static int __init volume_create_alsa_mixer(void)
6750 ctl_mute = snd_ctl_new1(&volume_alsa_control_mute, NULL); 6754 ctl_mute = snd_ctl_new1(&volume_alsa_control_mute, NULL);
6751 rc = snd_ctl_add(card, ctl_mute); 6755 rc = snd_ctl_add(card, ctl_mute);
6752 if (rc < 0) { 6756 if (rc < 0) {
6753 printk(TPACPI_ERR "Failed to create ALSA mute control\n"); 6757 printk(TPACPI_ERR "Failed to create ALSA mute control: %d\n",
6754 goto err_out; 6758 rc);
6759 goto err_exit;
6755 } 6760 }
6756 data->ctl_mute_id = &ctl_mute->id; 6761 data->ctl_mute_id = &ctl_mute->id;
6757 6762
6758 snd_card_set_dev(card, &tpacpi_pdev->dev); 6763 snd_card_set_dev(card, &tpacpi_pdev->dev);
6759 rc = snd_card_register(card); 6764 rc = snd_card_register(card);
6760
6761err_out:
6762 if (rc < 0) { 6765 if (rc < 0) {
6763 snd_card_free(card); 6766 printk(TPACPI_ERR "Failed to register ALSA card: %d\n", rc);
6764 card = NULL; 6767 goto err_exit;
6765 } 6768 }
6766 6769
6767 alsa_card = card; 6770 alsa_card = card;
6768 return rc; 6771 return 0;
6772
6773err_exit:
6774 snd_card_free(card);
6775 return 1;
6769} 6776}
6770 6777
6771#define TPACPI_VOL_Q_MUTEONLY 0x0001 /* Mute-only control available */ 6778#define TPACPI_VOL_Q_MUTEONLY 0x0001 /* Mute-only control available */
@@ -7016,6 +7023,28 @@ static struct ibm_struct volume_driver_data = {
7016 .shutdown = volume_shutdown, 7023 .shutdown = volume_shutdown,
7017}; 7024};
7018 7025
7026#else /* !CONFIG_THINKPAD_ACPI_ALSA_SUPPORT */
7027
7028#define alsa_card NULL
7029
7030static void inline volume_alsa_notify_change(void)
7031{
7032}
7033
7034static int __init volume_init(struct ibm_init_struct *iibm)
7035{
7036 printk(TPACPI_INFO
7037 "volume: disabled as there is no ALSA support in this kernel\n");
7038
7039 return 1;
7040}
7041
7042static struct ibm_struct volume_driver_data = {
7043 .name = "volume",
7044};
7045
7046#endif /* CONFIG_THINKPAD_ACPI_ALSA_SUPPORT */
7047
7019/************************************************************************* 7048/*************************************************************************
7020 * Fan subdriver 7049 * Fan subdriver
7021 */ 7050 */
@@ -8738,6 +8767,7 @@ MODULE_PARM_DESC(hotkey_report_mode,
8738 "used for backwards compatibility with userspace, " 8767 "used for backwards compatibility with userspace, "
8739 "see documentation"); 8768 "see documentation");
8740 8769
8770#ifdef CONFIG_THINKPAD_ACPI_ALSA_SUPPORT
8741module_param_named(volume_mode, volume_mode, uint, 0444); 8771module_param_named(volume_mode, volume_mode, uint, 0444);
8742MODULE_PARM_DESC(volume_mode, 8772MODULE_PARM_DESC(volume_mode,
8743 "Selects volume control strategy: " 8773 "Selects volume control strategy: "
@@ -8760,6 +8790,7 @@ module_param_named(id, alsa_id, charp, 0444);
8760MODULE_PARM_DESC(id, "ALSA id for the ACPI EC Mixer"); 8790MODULE_PARM_DESC(id, "ALSA id for the ACPI EC Mixer");
8761module_param_named(enable, alsa_enable, bool, 0444); 8791module_param_named(enable, alsa_enable, bool, 0444);
8762MODULE_PARM_DESC(enable, "Enable the ALSA interface for the ACPI EC Mixer"); 8792MODULE_PARM_DESC(enable, "Enable the ALSA interface for the ACPI EC Mixer");
8793#endif /* CONFIG_THINKPAD_ACPI_ALSA_SUPPORT */
8763 8794
8764#define TPACPI_PARAM(feature) \ 8795#define TPACPI_PARAM(feature) \
8765 module_param_call(feature, set_ibm_param, NULL, NULL, 0); \ 8796 module_param_call(feature, set_ibm_param, NULL, NULL, 0); \
diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c
index 9f93d6c0f510..b104302fea0a 100644
--- a/drivers/platform/x86/wmi.c
+++ b/drivers/platform/x86/wmi.c
@@ -492,8 +492,7 @@ wmi_notify_handler handler, void *data)
492 if (!guid || !handler) 492 if (!guid || !handler)
493 return AE_BAD_PARAMETER; 493 return AE_BAD_PARAMETER;
494 494
495 find_guid(guid, &block); 495 if (!find_guid(guid, &block))
496 if (!block)
497 return AE_NOT_EXIST; 496 return AE_NOT_EXIST;
498 497
499 if (block->handler) 498 if (block->handler)
@@ -521,8 +520,7 @@ acpi_status wmi_remove_notify_handler(const char *guid)
521 if (!guid) 520 if (!guid)
522 return AE_BAD_PARAMETER; 521 return AE_BAD_PARAMETER;
523 522
524 find_guid(guid, &block); 523 if (!find_guid(guid, &block))
525 if (!block)
526 return AE_NOT_EXIST; 524 return AE_NOT_EXIST;
527 525
528 if (!block->handler) 526 if (!block->handler)
@@ -716,6 +714,22 @@ static int wmi_class_init(void)
716 return ret; 714 return ret;
717} 715}
718 716
717static bool guid_already_parsed(const char *guid_string)
718{
719 struct guid_block *gblock;
720 struct wmi_block *wblock;
721 struct list_head *p;
722
723 list_for_each(p, &wmi_blocks.list) {
724 wblock = list_entry(p, struct wmi_block, list);
725 gblock = &wblock->gblock;
726
727 if (strncmp(gblock->guid, guid_string, 16) == 0)
728 return true;
729 }
730 return false;
731}
732
719/* 733/*
720 * Parse the _WDG method for the GUID data blocks 734 * Parse the _WDG method for the GUID data blocks
721 */ 735 */
@@ -725,6 +739,7 @@ static __init acpi_status parse_wdg(acpi_handle handle)
725 union acpi_object *obj; 739 union acpi_object *obj;
726 struct guid_block *gblock; 740 struct guid_block *gblock;
727 struct wmi_block *wblock; 741 struct wmi_block *wblock;
742 char guid_string[37];
728 acpi_status status; 743 acpi_status status;
729 u32 i, total; 744 u32 i, total;
730 745
@@ -747,6 +762,19 @@ static __init acpi_status parse_wdg(acpi_handle handle)
747 memcpy(gblock, obj->buffer.pointer, obj->buffer.length); 762 memcpy(gblock, obj->buffer.pointer, obj->buffer.length);
748 763
749 for (i = 0; i < total; i++) { 764 for (i = 0; i < total; i++) {
765 /*
766 Some WMI devices, like those for nVidia hooks, have a
767 duplicate GUID. It's not clear what we should do in this
768 case yet, so for now, we'll just ignore the duplicate.
769 Anyone who wants to add support for that device can come
770 up with a better workaround for the mess then.
771 */
772 if (guid_already_parsed(gblock[i].guid) == true) {
773 wmi_gtoa(gblock[i].guid, guid_string);
774 printk(KERN_INFO PREFIX "Skipping duplicate GUID %s\n",
775 guid_string);
776 continue;
777 }
750 wblock = kzalloc(sizeof(struct wmi_block), GFP_KERNEL); 778 wblock = kzalloc(sizeof(struct wmi_block), GFP_KERNEL);
751 if (!wblock) 779 if (!wblock)
752 return AE_NO_MEMORY; 780 return AE_NO_MEMORY;
diff --git a/drivers/power/pmu_battery.c b/drivers/power/pmu_battery.c
index 9346a862f1f2..9c87ad564803 100644
--- a/drivers/power/pmu_battery.c
+++ b/drivers/power/pmu_battery.c
@@ -89,6 +89,8 @@ static int pmu_bat_get_property(struct power_supply *psy,
89 case POWER_SUPPLY_PROP_STATUS: 89 case POWER_SUPPLY_PROP_STATUS:
90 if (pbi->flags & PMU_BATT_CHARGING) 90 if (pbi->flags & PMU_BATT_CHARGING)
91 val->intval = POWER_SUPPLY_STATUS_CHARGING; 91 val->intval = POWER_SUPPLY_STATUS_CHARGING;
92 else if (pmu_power_flags & PMU_PWR_AC_PRESENT)
93 val->intval = POWER_SUPPLY_STATUS_FULL;
92 else 94 else
93 val->intval = POWER_SUPPLY_STATUS_DISCHARGING; 95 val->intval = POWER_SUPPLY_STATUS_DISCHARGING;
94 break; 96 break;
diff --git a/drivers/power/wm97xx_battery.c b/drivers/power/wm97xx_battery.c
index fa39e759a275..6ea3cb5837c7 100644
--- a/drivers/power/wm97xx_battery.c
+++ b/drivers/power/wm97xx_battery.c
@@ -175,8 +175,14 @@ static int __devinit wm97xx_bat_probe(struct platform_device *dev)
175 dev_err(&dev->dev, "Do not pass platform_data through " 175 dev_err(&dev->dev, "Do not pass platform_data through "
176 "wm97xx_bat_set_pdata!\n"); 176 "wm97xx_bat_set_pdata!\n");
177 return -EINVAL; 177 return -EINVAL;
178 } else 178 }
179 pdata = wmdata->batt_pdata; 179
180 if (!wmdata) {
181 dev_err(&dev->dev, "No platform data supplied\n");
182 return -EINVAL;
183 }
184
185 pdata = wmdata->batt_pdata;
180 186
181 if (dev->id != -1) 187 if (dev->id != -1)
182 return -EINVAL; 188 return -EINVAL;
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 686ef270ecf7..b60a4c9f8f16 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -661,7 +661,7 @@ static int suspend_prepare(struct regulator_dev *rdev, suspend_state_t state)
661static void print_constraints(struct regulator_dev *rdev) 661static void print_constraints(struct regulator_dev *rdev)
662{ 662{
663 struct regulation_constraints *constraints = rdev->constraints; 663 struct regulation_constraints *constraints = rdev->constraints;
664 char buf[80]; 664 char buf[80] = "";
665 int count = 0; 665 int count = 0;
666 int ret; 666 int ret;
667 667
diff --git a/drivers/regulator/lp3971.c b/drivers/regulator/lp3971.c
index 76d08c282f9c..4f33a0f4a179 100644
--- a/drivers/regulator/lp3971.c
+++ b/drivers/regulator/lp3971.c
@@ -183,7 +183,7 @@ static int lp3971_ldo_set_voltage(struct regulator_dev *dev,
183 if (vol_map[val] >= min_vol) 183 if (vol_map[val] >= min_vol)
184 break; 184 break;
185 185
186 if (vol_map[val] > max_vol) 186 if (val > LDO_VOL_MAX_IDX || vol_map[val] > max_vol)
187 return -EINVAL; 187 return -EINVAL;
188 188
189 return lp3971_set_bits(lp3971, LP3971_LDO_VOL_CONTR_REG(ldo), 189 return lp3971_set_bits(lp3971, LP3971_LDO_VOL_CONTR_REG(ldo),
@@ -272,7 +272,7 @@ static int lp3971_dcdc_set_voltage(struct regulator_dev *dev,
272 if (vol_map[val] >= min_vol) 272 if (vol_map[val] >= min_vol)
273 break; 273 break;
274 274
275 if (vol_map[val] > max_vol) 275 if (val > BUCK_TARGET_VOL_MAX_IDX || vol_map[val] > max_vol)
276 return -EINVAL; 276 return -EINVAL;
277 277
278 ret = lp3971_set_bits(lp3971, LP3971_BUCK_TARGET_VOL1_REG(buck), 278 ret = lp3971_set_bits(lp3971, LP3971_BUCK_TARGET_VOL1_REG(buck),
diff --git a/drivers/regulator/wm8350-regulator.c b/drivers/regulator/wm8350-regulator.c
index 1bbff099a546..e7b89e704af6 100644
--- a/drivers/regulator/wm8350-regulator.c
+++ b/drivers/regulator/wm8350-regulator.c
@@ -1504,7 +1504,8 @@ int wm8350_register_led(struct wm8350 *wm8350, int lednum, int dcdc, int isink,
1504 led->isink_init.consumer_supplies = &led->isink_consumer; 1504 led->isink_init.consumer_supplies = &led->isink_consumer;
1505 led->isink_init.constraints.min_uA = 0; 1505 led->isink_init.constraints.min_uA = 0;
1506 led->isink_init.constraints.max_uA = pdata->max_uA; 1506 led->isink_init.constraints.max_uA = pdata->max_uA;
1507 led->isink_init.constraints.valid_ops_mask = REGULATOR_CHANGE_CURRENT; 1507 led->isink_init.constraints.valid_ops_mask
1508 = REGULATOR_CHANGE_CURRENT | REGULATOR_CHANGE_STATUS;
1508 led->isink_init.constraints.valid_modes_mask = REGULATOR_MODE_NORMAL; 1509 led->isink_init.constraints.valid_modes_mask = REGULATOR_MODE_NORMAL;
1509 ret = wm8350_register_regulator(wm8350, isink, &led->isink_init); 1510 ret = wm8350_register_regulator(wm8350, isink, &led->isink_init);
1510 if (ret != 0) { 1511 if (ret != 0) {
@@ -1517,6 +1518,7 @@ int wm8350_register_led(struct wm8350 *wm8350, int lednum, int dcdc, int isink,
1517 led->dcdc_init.num_consumer_supplies = 1; 1518 led->dcdc_init.num_consumer_supplies = 1;
1518 led->dcdc_init.consumer_supplies = &led->dcdc_consumer; 1519 led->dcdc_init.consumer_supplies = &led->dcdc_consumer;
1519 led->dcdc_init.constraints.valid_modes_mask = REGULATOR_MODE_NORMAL; 1520 led->dcdc_init.constraints.valid_modes_mask = REGULATOR_MODE_NORMAL;
1521 led->dcdc_init.constraints.valid_ops_mask = REGULATOR_CHANGE_STATUS;
1520 ret = wm8350_register_regulator(wm8350, dcdc, &led->dcdc_init); 1522 ret = wm8350_register_regulator(wm8350, dcdc, &led->dcdc_init);
1521 if (ret != 0) { 1523 if (ret != 0) {
1522 platform_device_put(pdev); 1524 platform_device_put(pdev);
diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c
index c8c12325e69b..e9aa814ddd23 100644
--- a/drivers/rtc/rtc-cmos.c
+++ b/drivers/rtc/rtc-cmos.c
@@ -1096,9 +1096,9 @@ static int cmos_pnp_resume(struct pnp_dev *pnp)
1096#define cmos_pnp_resume NULL 1096#define cmos_pnp_resume NULL
1097#endif 1097#endif
1098 1098
1099static void cmos_pnp_shutdown(struct device *pdev) 1099static void cmos_pnp_shutdown(struct pnp_dev *pnp)
1100{ 1100{
1101 if (system_state == SYSTEM_POWER_OFF && !cmos_poweroff(pdev)) 1101 if (system_state == SYSTEM_POWER_OFF && !cmos_poweroff(&pnp->dev))
1102 return; 1102 return;
1103 1103
1104 cmos_do_shutdown(); 1104 cmos_do_shutdown();
@@ -1117,15 +1117,12 @@ static struct pnp_driver cmos_pnp_driver = {
1117 .id_table = rtc_ids, 1117 .id_table = rtc_ids,
1118 .probe = cmos_pnp_probe, 1118 .probe = cmos_pnp_probe,
1119 .remove = __exit_p(cmos_pnp_remove), 1119 .remove = __exit_p(cmos_pnp_remove),
1120 .shutdown = cmos_pnp_shutdown,
1120 1121
1121 /* flag ensures resume() gets called, and stops syslog spam */ 1122 /* flag ensures resume() gets called, and stops syslog spam */
1122 .flags = PNP_DRIVER_RES_DO_NOT_CHANGE, 1123 .flags = PNP_DRIVER_RES_DO_NOT_CHANGE,
1123 .suspend = cmos_pnp_suspend, 1124 .suspend = cmos_pnp_suspend,
1124 .resume = cmos_pnp_resume, 1125 .resume = cmos_pnp_resume,
1125 .driver = {
1126 .name = (char *)driver_name,
1127 .shutdown = cmos_pnp_shutdown,
1128 }
1129}; 1126};
1130 1127
1131#endif /* CONFIG_PNP */ 1128#endif /* CONFIG_PNP */
diff --git a/drivers/rtc/rtc-fm3130.c b/drivers/rtc/rtc-fm3130.c
index 3a7be11cc6b9..812c66755083 100644
--- a/drivers/rtc/rtc-fm3130.c
+++ b/drivers/rtc/rtc-fm3130.c
@@ -376,20 +376,22 @@ static int __devinit fm3130_probe(struct i2c_client *client,
376 } 376 }
377 377
378 /* Disabling calibration mode */ 378 /* Disabling calibration mode */
379 if (fm3130->regs[FM3130_RTC_CONTROL] & FM3130_RTC_CONTROL_BIT_CAL) 379 if (fm3130->regs[FM3130_RTC_CONTROL] & FM3130_RTC_CONTROL_BIT_CAL) {
380 i2c_smbus_write_byte_data(client, FM3130_RTC_CONTROL, 380 i2c_smbus_write_byte_data(client, FM3130_RTC_CONTROL,
381 fm3130->regs[FM3130_RTC_CONTROL] & 381 fm3130->regs[FM3130_RTC_CONTROL] &
382 ~(FM3130_RTC_CONTROL_BIT_CAL)); 382 ~(FM3130_RTC_CONTROL_BIT_CAL));
383 dev_warn(&client->dev, "Disabling calibration mode!\n"); 383 dev_warn(&client->dev, "Disabling calibration mode!\n");
384 }
384 385
385 /* Disabling read and write modes */ 386 /* Disabling read and write modes */
386 if (fm3130->regs[FM3130_RTC_CONTROL] & FM3130_RTC_CONTROL_BIT_WRITE || 387 if (fm3130->regs[FM3130_RTC_CONTROL] & FM3130_RTC_CONTROL_BIT_WRITE ||
387 fm3130->regs[FM3130_RTC_CONTROL] & FM3130_RTC_CONTROL_BIT_READ) 388 fm3130->regs[FM3130_RTC_CONTROL] & FM3130_RTC_CONTROL_BIT_READ) {
388 i2c_smbus_write_byte_data(client, FM3130_RTC_CONTROL, 389 i2c_smbus_write_byte_data(client, FM3130_RTC_CONTROL,
389 fm3130->regs[FM3130_RTC_CONTROL] & 390 fm3130->regs[FM3130_RTC_CONTROL] &
390 ~(FM3130_RTC_CONTROL_BIT_READ | 391 ~(FM3130_RTC_CONTROL_BIT_READ |
391 FM3130_RTC_CONTROL_BIT_WRITE)); 392 FM3130_RTC_CONTROL_BIT_WRITE));
392 dev_warn(&client->dev, "Disabling READ or WRITE mode!\n"); 393 dev_warn(&client->dev, "Disabling READ or WRITE mode!\n");
394 }
393 395
394 /* oscillator off? turn it on, so clock can tick. */ 396 /* oscillator off? turn it on, so clock can tick. */
395 if (fm3130->regs[FM3130_CAL_CONTROL] & FM3130_CAL_CONTROL_BIT_nOSCEN) 397 if (fm3130->regs[FM3130_CAL_CONTROL] & FM3130_CAL_CONTROL_BIT_nOSCEN)
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index fdb2e7c14506..5905936c7c60 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -1004,8 +1004,8 @@ static void dasd_handle_killed_request(struct ccw_device *cdev,
1004 if (device == NULL || 1004 if (device == NULL ||
1005 device != dasd_device_from_cdev_locked(cdev) || 1005 device != dasd_device_from_cdev_locked(cdev) ||
1006 strncmp(device->discipline->ebcname, (char *) &cqr->magic, 4)) { 1006 strncmp(device->discipline->ebcname, (char *) &cqr->magic, 4)) {
1007 DBF_DEV_EVENT(DBF_DEBUG, device, "invalid device in request: " 1007 DBF_EVENT_DEVID(DBF_DEBUG, cdev, "%s",
1008 "bus_id %s", dev_name(&cdev->dev)); 1008 "invalid device in request");
1009 return; 1009 return;
1010 } 1010 }
1011 1011
@@ -1078,8 +1078,8 @@ void dasd_int_handler(struct ccw_device *cdev, unsigned long intparm,
1078 device = (struct dasd_device *) cqr->startdev; 1078 device = (struct dasd_device *) cqr->startdev;
1079 if (!device || 1079 if (!device ||
1080 strncmp(device->discipline->ebcname, (char *) &cqr->magic, 4)) { 1080 strncmp(device->discipline->ebcname, (char *) &cqr->magic, 4)) {
1081 DBF_DEV_EVENT(DBF_DEBUG, device, "invalid device in request: " 1081 DBF_EVENT_DEVID(DBF_DEBUG, cdev, "%s",
1082 "bus_id %s", dev_name(&cdev->dev)); 1082 "invalid device in request");
1083 return; 1083 return;
1084 } 1084 }
1085 1085
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c
index 5819dc02a143..1cca21aafaba 100644
--- a/drivers/s390/block/dasd_eckd.c
+++ b/drivers/s390/block/dasd_eckd.c
@@ -23,6 +23,7 @@
23#include <asm/debug.h> 23#include <asm/debug.h>
24#include <asm/idals.h> 24#include <asm/idals.h>
25#include <asm/ebcdic.h> 25#include <asm/ebcdic.h>
26#include <asm/compat.h>
26#include <asm/io.h> 27#include <asm/io.h>
27#include <asm/uaccess.h> 28#include <asm/uaccess.h>
28#include <asm/cio.h> 29#include <asm/cio.h>
@@ -2844,13 +2845,16 @@ static int dasd_symm_io(struct dasd_device *device, void __user *argp)
2844 rc = -EFAULT; 2845 rc = -EFAULT;
2845 if (copy_from_user(&usrparm, argp, sizeof(usrparm))) 2846 if (copy_from_user(&usrparm, argp, sizeof(usrparm)))
2846 goto out; 2847 goto out;
2847#ifndef CONFIG_64BIT 2848 if (is_compat_task() || sizeof(long) == 4) {
2848 /* Make sure pointers are sane even on 31 bit. */ 2849 /* Make sure pointers are sane even on 31 bit. */
2849 if ((usrparm.psf_data >> 32) != 0 || (usrparm.rssd_result >> 32) != 0) {
2850 rc = -EINVAL; 2850 rc = -EINVAL;
2851 goto out; 2851 if ((usrparm.psf_data >> 32) != 0)
2852 goto out;
2853 if ((usrparm.rssd_result >> 32) != 0)
2854 goto out;
2855 usrparm.psf_data &= 0x7fffffffULL;
2856 usrparm.rssd_result &= 0x7fffffffULL;
2852 } 2857 }
2853#endif
2854 /* alloc I/O data area */ 2858 /* alloc I/O data area */
2855 psf_data = kzalloc(usrparm.psf_data_len, GFP_KERNEL | GFP_DMA); 2859 psf_data = kzalloc(usrparm.psf_data_len, GFP_KERNEL | GFP_DMA);
2856 rssd_result = kzalloc(usrparm.rssd_result_len, GFP_KERNEL | GFP_DMA); 2860 rssd_result = kzalloc(usrparm.rssd_result_len, GFP_KERNEL | GFP_DMA);
@@ -3029,7 +3033,7 @@ static void dasd_eckd_dump_sense_ccw(struct dasd_device *device,
3029 len += sprintf(page + len, KERN_ERR PRINTK_HEADER 3033 len += sprintf(page + len, KERN_ERR PRINTK_HEADER
3030 " in req: %p CS: 0x%02X DS: 0x%02X CC: 0x%02X RC: %d\n", 3034 " in req: %p CS: 0x%02X DS: 0x%02X CC: 0x%02X RC: %d\n",
3031 req, scsw_cstat(&irb->scsw), scsw_dstat(&irb->scsw), 3035 req, scsw_cstat(&irb->scsw), scsw_dstat(&irb->scsw),
3032 scsw_cc(&irb->scsw), req->intrc); 3036 scsw_cc(&irb->scsw), req ? req->intrc : 0);
3033 len += sprintf(page + len, KERN_ERR PRINTK_HEADER 3037 len += sprintf(page + len, KERN_ERR PRINTK_HEADER
3034 " device %s: Failing CCW: %p\n", 3038 " device %s: Failing CCW: %p\n",
3035 dev_name(&device->cdev->dev), 3039 dev_name(&device->cdev->dev),
diff --git a/drivers/s390/block/dasd_ioctl.c b/drivers/s390/block/dasd_ioctl.c
index 478bcdb90b6f..7039d9cf0fb4 100644
--- a/drivers/s390/block/dasd_ioctl.c
+++ b/drivers/s390/block/dasd_ioctl.c
@@ -17,7 +17,7 @@
17#include <linux/fs.h> 17#include <linux/fs.h>
18#include <linux/blkpg.h> 18#include <linux/blkpg.h>
19#include <linux/smp_lock.h> 19#include <linux/smp_lock.h>
20 20#include <asm/compat.h>
21#include <asm/ccwdev.h> 21#include <asm/ccwdev.h>
22#include <asm/cmb.h> 22#include <asm/cmb.h>
23#include <asm/uaccess.h> 23#include <asm/uaccess.h>
@@ -260,7 +260,7 @@ static int dasd_ioctl_information(struct dasd_block *block,
260 struct ccw_dev_id dev_id; 260 struct ccw_dev_id dev_id;
261 261
262 base = block->base; 262 base = block->base;
263 if (!base->discipline->fill_info) 263 if (!base->discipline || !base->discipline->fill_info)
264 return -EINVAL; 264 return -EINVAL;
265 265
266 dasd_info = kzalloc(sizeof(struct dasd_information2_t), GFP_KERNEL); 266 dasd_info = kzalloc(sizeof(struct dasd_information2_t), GFP_KERNEL);
@@ -303,10 +303,7 @@ static int dasd_ioctl_information(struct dasd_block *block,
303 dasd_info->features |= 303 dasd_info->features |=
304 ((base->features & DASD_FEATURE_READONLY) != 0); 304 ((base->features & DASD_FEATURE_READONLY) != 0);
305 305
306 if (base->discipline) 306 memcpy(dasd_info->type, base->discipline->name, 4);
307 memcpy(dasd_info->type, base->discipline->name, 4);
308 else
309 memcpy(dasd_info->type, "none", 4);
310 307
311 if (block->request_queue->request_fn) { 308 if (block->request_queue->request_fn) {
312 struct list_head *l; 309 struct list_head *l;
@@ -358,9 +355,8 @@ dasd_ioctl_set_ro(struct block_device *bdev, void __user *argp)
358} 355}
359 356
360static int dasd_ioctl_readall_cmb(struct dasd_block *block, unsigned int cmd, 357static int dasd_ioctl_readall_cmb(struct dasd_block *block, unsigned int cmd,
361 unsigned long arg) 358 struct cmbdata __user *argp)
362{ 359{
363 struct cmbdata __user *argp = (void __user *) arg;
364 size_t size = _IOC_SIZE(cmd); 360 size_t size = _IOC_SIZE(cmd);
365 struct cmbdata data; 361 struct cmbdata data;
366 int ret; 362 int ret;
@@ -376,7 +372,12 @@ dasd_do_ioctl(struct block_device *bdev, fmode_t mode,
376 unsigned int cmd, unsigned long arg) 372 unsigned int cmd, unsigned long arg)
377{ 373{
378 struct dasd_block *block = bdev->bd_disk->private_data; 374 struct dasd_block *block = bdev->bd_disk->private_data;
379 void __user *argp = (void __user *)arg; 375 void __user *argp;
376
377 if (is_compat_task())
378 argp = compat_ptr(arg);
379 else
380 argp = (void __user *)arg;
380 381
381 if (!block) 382 if (!block)
382 return -ENODEV; 383 return -ENODEV;
@@ -414,7 +415,7 @@ dasd_do_ioctl(struct block_device *bdev, fmode_t mode,
414 case BIODASDCMFDISABLE: 415 case BIODASDCMFDISABLE:
415 return disable_cmf(block->base->cdev); 416 return disable_cmf(block->base->cdev);
416 case BIODASDREADALLCMB: 417 case BIODASDREADALLCMB:
417 return dasd_ioctl_readall_cmb(block, cmd, arg); 418 return dasd_ioctl_readall_cmb(block, cmd, argp);
418 default: 419 default:
419 /* if the discipline has an ioctl method try it. */ 420 /* if the discipline has an ioctl method try it. */
420 if (block->base->discipline->ioctl) { 421 if (block->base->discipline->ioctl) {
diff --git a/drivers/s390/block/dasd_proc.c b/drivers/s390/block/dasd_proc.c
index 6315fbd8e68b..71f95f54866f 100644
--- a/drivers/s390/block/dasd_proc.c
+++ b/drivers/s390/block/dasd_proc.c
@@ -72,7 +72,7 @@ dasd_devices_show(struct seq_file *m, void *v)
72 /* Print device number. */ 72 /* Print device number. */
73 seq_printf(m, "%s", dev_name(&device->cdev->dev)); 73 seq_printf(m, "%s", dev_name(&device->cdev->dev));
74 /* Print discipline string. */ 74 /* Print discipline string. */
75 if (device != NULL && device->discipline != NULL) 75 if (device->discipline != NULL)
76 seq_printf(m, "(%s)", device->discipline->name); 76 seq_printf(m, "(%s)", device->discipline->name);
77 else 77 else
78 seq_printf(m, "(none)"); 78 seq_printf(m, "(none)");
@@ -92,10 +92,7 @@ dasd_devices_show(struct seq_file *m, void *v)
92 substr = (device->features & DASD_FEATURE_READONLY) ? "(ro)" : " "; 92 substr = (device->features & DASD_FEATURE_READONLY) ? "(ro)" : " ";
93 seq_printf(m, "%4s: ", substr); 93 seq_printf(m, "%4s: ", substr);
94 /* Print device status information. */ 94 /* Print device status information. */
95 switch ((device != NULL) ? device->state : -1) { 95 switch (device->state) {
96 case -1:
97 seq_printf(m, "unknown");
98 break;
99 case DASD_STATE_NEW: 96 case DASD_STATE_NEW:
100 seq_printf(m, "new"); 97 seq_printf(m, "new");
101 break; 98 break;
diff --git a/drivers/s390/char/con3215.c b/drivers/s390/char/con3215.c
index 9d61683b5633..59ec073724bf 100644
--- a/drivers/s390/char/con3215.c
+++ b/drivers/s390/char/con3215.c
@@ -1037,22 +1037,6 @@ static void tty3215_flush_buffer(struct tty_struct *tty)
1037} 1037}
1038 1038
1039/* 1039/*
1040 * Currently we don't have any io controls for 3215 ttys
1041 */
1042static int tty3215_ioctl(struct tty_struct *tty, struct file * file,
1043 unsigned int cmd, unsigned long arg)
1044{
1045 if (tty->flags & (1 << TTY_IO_ERROR))
1046 return -EIO;
1047
1048 switch (cmd) {
1049 default:
1050 return -ENOIOCTLCMD;
1051 }
1052 return 0;
1053}
1054
1055/*
1056 * Disable reading from a 3215 tty 1040 * Disable reading from a 3215 tty
1057 */ 1041 */
1058static void tty3215_throttle(struct tty_struct * tty) 1042static void tty3215_throttle(struct tty_struct * tty)
@@ -1117,7 +1101,6 @@ static const struct tty_operations tty3215_ops = {
1117 .write_room = tty3215_write_room, 1101 .write_room = tty3215_write_room,
1118 .chars_in_buffer = tty3215_chars_in_buffer, 1102 .chars_in_buffer = tty3215_chars_in_buffer,
1119 .flush_buffer = tty3215_flush_buffer, 1103 .flush_buffer = tty3215_flush_buffer,
1120 .ioctl = tty3215_ioctl,
1121 .throttle = tty3215_throttle, 1104 .throttle = tty3215_throttle,
1122 .unthrottle = tty3215_unthrottle, 1105 .unthrottle = tty3215_unthrottle,
1123 .stop = tty3215_stop, 1106 .stop = tty3215_stop,
diff --git a/drivers/s390/char/fs3270.c b/drivers/s390/char/fs3270.c
index 247b2b934728..31c59b0d6df0 100644
--- a/drivers/s390/char/fs3270.c
+++ b/drivers/s390/char/fs3270.c
@@ -15,6 +15,7 @@
15#include <linux/types.h> 15#include <linux/types.h>
16#include <linux/smp_lock.h> 16#include <linux/smp_lock.h>
17 17
18#include <asm/compat.h>
18#include <asm/ccwdev.h> 19#include <asm/ccwdev.h>
19#include <asm/cio.h> 20#include <asm/cio.h>
20#include <asm/ebcdic.h> 21#include <asm/ebcdic.h>
@@ -322,6 +323,7 @@ fs3270_write(struct file *filp, const char __user *data, size_t count, loff_t *o
322static long 323static long
323fs3270_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) 324fs3270_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
324{ 325{
326 char __user *argp;
325 struct fs3270 *fp; 327 struct fs3270 *fp;
326 struct raw3270_iocb iocb; 328 struct raw3270_iocb iocb;
327 int rc; 329 int rc;
@@ -329,6 +331,10 @@ fs3270_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
329 fp = filp->private_data; 331 fp = filp->private_data;
330 if (!fp) 332 if (!fp)
331 return -ENODEV; 333 return -ENODEV;
334 if (is_compat_task())
335 argp = compat_ptr(arg);
336 else
337 argp = (char __user *)arg;
332 rc = 0; 338 rc = 0;
333 mutex_lock(&fs3270_mutex); 339 mutex_lock(&fs3270_mutex);
334 switch (cmd) { 340 switch (cmd) {
@@ -339,10 +345,10 @@ fs3270_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
339 fp->write_command = arg; 345 fp->write_command = arg;
340 break; 346 break;
341 case TUBGETI: 347 case TUBGETI:
342 rc = put_user(fp->read_command, (char __user *) arg); 348 rc = put_user(fp->read_command, argp);
343 break; 349 break;
344 case TUBGETO: 350 case TUBGETO:
345 rc = put_user(fp->write_command,(char __user *) arg); 351 rc = put_user(fp->write_command, argp);
346 break; 352 break;
347 case TUBGETMOD: 353 case TUBGETMOD:
348 iocb.model = fp->view.model; 354 iocb.model = fp->view.model;
@@ -351,8 +357,7 @@ fs3270_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
351 iocb.pf_cnt = 24; 357 iocb.pf_cnt = 24;
352 iocb.re_cnt = 20; 358 iocb.re_cnt = 20;
353 iocb.map = 0; 359 iocb.map = 0;
354 if (copy_to_user((char __user *) arg, &iocb, 360 if (copy_to_user(argp, &iocb, sizeof(struct raw3270_iocb)))
355 sizeof(struct raw3270_iocb)))
356 rc = -EFAULT; 361 rc = -EFAULT;
357 break; 362 break;
358 } 363 }
@@ -511,8 +516,8 @@ static const struct file_operations fs3270_fops = {
511 .write = fs3270_write, /* write */ 516 .write = fs3270_write, /* write */
512 .unlocked_ioctl = fs3270_ioctl, /* ioctl */ 517 .unlocked_ioctl = fs3270_ioctl, /* ioctl */
513 .compat_ioctl = fs3270_ioctl, /* ioctl */ 518 .compat_ioctl = fs3270_ioctl, /* ioctl */
514 .open = fs3270_open, /* open */ 519 .open = fs3270_open, /* open */
515 .release = fs3270_close, /* release */ 520 .release = fs3270_close, /* release */
516}; 521};
517 522
518/* 523/*
diff --git a/drivers/s390/char/sclp_vt220.c b/drivers/s390/char/sclp_vt220.c
index b9d2a007e93b..3796ffdb8479 100644
--- a/drivers/s390/char/sclp_vt220.c
+++ b/drivers/s390/char/sclp_vt220.c
@@ -495,6 +495,10 @@ sclp_vt220_open(struct tty_struct *tty, struct file *filp)
495 if (tty->driver_data == NULL) 495 if (tty->driver_data == NULL)
496 return -ENOMEM; 496 return -ENOMEM;
497 tty->low_latency = 0; 497 tty->low_latency = 0;
498 if (!tty->winsize.ws_row && !tty->winsize.ws_col) {
499 tty->winsize.ws_row = 24;
500 tty->winsize.ws_col = 80;
501 }
498 } 502 }
499 return 0; 503 return 0;
500} 504}
diff --git a/drivers/s390/char/tape_block.c b/drivers/s390/char/tape_block.c
index 96816149368a..8d3d720737da 100644
--- a/drivers/s390/char/tape_block.c
+++ b/drivers/s390/char/tape_block.c
@@ -46,8 +46,6 @@
46 */ 46 */
47static int tapeblock_open(struct block_device *, fmode_t); 47static int tapeblock_open(struct block_device *, fmode_t);
48static int tapeblock_release(struct gendisk *, fmode_t); 48static int tapeblock_release(struct gendisk *, fmode_t);
49static int tapeblock_ioctl(struct block_device *, fmode_t, unsigned int,
50 unsigned long);
51static int tapeblock_medium_changed(struct gendisk *); 49static int tapeblock_medium_changed(struct gendisk *);
52static int tapeblock_revalidate_disk(struct gendisk *); 50static int tapeblock_revalidate_disk(struct gendisk *);
53 51
@@ -55,7 +53,6 @@ static const struct block_device_operations tapeblock_fops = {
55 .owner = THIS_MODULE, 53 .owner = THIS_MODULE,
56 .open = tapeblock_open, 54 .open = tapeblock_open,
57 .release = tapeblock_release, 55 .release = tapeblock_release,
58 .ioctl = tapeblock_ioctl,
59 .media_changed = tapeblock_medium_changed, 56 .media_changed = tapeblock_medium_changed,
60 .revalidate_disk = tapeblock_revalidate_disk, 57 .revalidate_disk = tapeblock_revalidate_disk,
61}; 58};
@@ -416,42 +413,6 @@ tapeblock_release(struct gendisk *disk, fmode_t mode)
416} 413}
417 414
418/* 415/*
419 * Support of some generic block device IOCTLs.
420 */
421static int
422tapeblock_ioctl(
423 struct block_device * bdev,
424 fmode_t mode,
425 unsigned int command,
426 unsigned long arg
427) {
428 int rc;
429 int minor;
430 struct gendisk *disk = bdev->bd_disk;
431 struct tape_device *device;
432
433 rc = 0;
434 BUG_ON(!disk);
435 device = disk->private_data;
436 BUG_ON(!device);
437 minor = MINOR(bdev->bd_dev);
438
439 DBF_LH(6, "tapeblock_ioctl(0x%0x)\n", command);
440 DBF_LH(6, "device = %d:%d\n", tapeblock_major, minor);
441
442 switch (command) {
443 /* Refuse some IOCTL calls without complaining (mount). */
444 case 0x5310: /* CDROMMULTISESSION */
445 rc = -EINVAL;
446 break;
447 default:
448 rc = -EINVAL;
449 }
450
451 return rc;
452}
453
454/*
455 * Initialize block device frontend. 416 * Initialize block device frontend.
456 */ 417 */
457int 418int
diff --git a/drivers/s390/char/tape_char.c b/drivers/s390/char/tape_char.c
index 2125ec7d95f0..539045acaad4 100644
--- a/drivers/s390/char/tape_char.c
+++ b/drivers/s390/char/tape_char.c
@@ -18,6 +18,7 @@
18#include <linux/proc_fs.h> 18#include <linux/proc_fs.h>
19#include <linux/mtio.h> 19#include <linux/mtio.h>
20#include <linux/smp_lock.h> 20#include <linux/smp_lock.h>
21#include <linux/compat.h>
21 22
22#include <asm/uaccess.h> 23#include <asm/uaccess.h>
23 24
@@ -37,8 +38,9 @@ static ssize_t tapechar_write(struct file *, const char __user *, size_t, loff_t
37static int tapechar_open(struct inode *,struct file *); 38static int tapechar_open(struct inode *,struct file *);
38static int tapechar_release(struct inode *,struct file *); 39static int tapechar_release(struct inode *,struct file *);
39static long tapechar_ioctl(struct file *, unsigned int, unsigned long); 40static long tapechar_ioctl(struct file *, unsigned int, unsigned long);
40static long tapechar_compat_ioctl(struct file *, unsigned int, 41#ifdef CONFIG_COMPAT
41 unsigned long); 42static long tapechar_compat_ioctl(struct file *, unsigned int, unsigned long);
43#endif
42 44
43static const struct file_operations tape_fops = 45static const struct file_operations tape_fops =
44{ 46{
@@ -46,7 +48,9 @@ static const struct file_operations tape_fops =
46 .read = tapechar_read, 48 .read = tapechar_read,
47 .write = tapechar_write, 49 .write = tapechar_write,
48 .unlocked_ioctl = tapechar_ioctl, 50 .unlocked_ioctl = tapechar_ioctl,
51#ifdef CONFIG_COMPAT
49 .compat_ioctl = tapechar_compat_ioctl, 52 .compat_ioctl = tapechar_compat_ioctl,
53#endif
50 .open = tapechar_open, 54 .open = tapechar_open,
51 .release = tapechar_release, 55 .release = tapechar_release,
52}; 56};
@@ -457,15 +461,22 @@ tapechar_ioctl(struct file *filp, unsigned int no, unsigned long data)
457 return rc; 461 return rc;
458} 462}
459 463
464#ifdef CONFIG_COMPAT
460static long 465static long
461tapechar_compat_ioctl(struct file *filp, unsigned int no, unsigned long data) 466tapechar_compat_ioctl(struct file *filp, unsigned int no, unsigned long data)
462{ 467{
463 struct tape_device *device = filp->private_data; 468 struct tape_device *device = filp->private_data;
464 int rval = -ENOIOCTLCMD; 469 int rval = -ENOIOCTLCMD;
470 unsigned long argp;
465 471
472 /* The 'arg' argument of any ioctl function may only be used for
473 * pointers because of the compat pointer conversion.
474 * Consider this when adding new ioctls.
475 */
476 argp = (unsigned long) compat_ptr(data);
466 if (device->discipline->ioctl_fn) { 477 if (device->discipline->ioctl_fn) {
467 mutex_lock(&device->mutex); 478 mutex_lock(&device->mutex);
468 rval = device->discipline->ioctl_fn(device, no, data); 479 rval = device->discipline->ioctl_fn(device, no, argp);
469 mutex_unlock(&device->mutex); 480 mutex_unlock(&device->mutex);
470 if (rval == -EINVAL) 481 if (rval == -EINVAL)
471 rval = -ENOIOCTLCMD; 482 rval = -ENOIOCTLCMD;
@@ -473,6 +484,7 @@ tapechar_compat_ioctl(struct file *filp, unsigned int no, unsigned long data)
473 484
474 return rval; 485 return rval;
475} 486}
487#endif /* CONFIG_COMPAT */
476 488
477/* 489/*
478 * Initialize character device frontend. 490 * Initialize character device frontend.
diff --git a/drivers/s390/char/vmcp.c b/drivers/s390/char/vmcp.c
index a6087cec55b4..921dcda77676 100644
--- a/drivers/s390/char/vmcp.c
+++ b/drivers/s390/char/vmcp.c
@@ -19,6 +19,7 @@
19#include <linux/kernel.h> 19#include <linux/kernel.h>
20#include <linux/miscdevice.h> 20#include <linux/miscdevice.h>
21#include <linux/module.h> 21#include <linux/module.h>
22#include <asm/compat.h>
22#include <asm/cpcmd.h> 23#include <asm/cpcmd.h>
23#include <asm/debug.h> 24#include <asm/debug.h>
24#include <asm/uaccess.h> 25#include <asm/uaccess.h>
@@ -139,21 +140,26 @@ vmcp_write(struct file *file, const char __user *buff, size_t count,
139static long vmcp_ioctl(struct file *file, unsigned int cmd, unsigned long arg) 140static long vmcp_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
140{ 141{
141 struct vmcp_session *session; 142 struct vmcp_session *session;
143 int __user *argp;
142 int temp; 144 int temp;
143 145
144 session = (struct vmcp_session *)file->private_data; 146 session = (struct vmcp_session *)file->private_data;
147 if (is_compat_task())
148 argp = compat_ptr(arg);
149 else
150 argp = (int __user *)arg;
145 if (mutex_lock_interruptible(&session->mutex)) 151 if (mutex_lock_interruptible(&session->mutex))
146 return -ERESTARTSYS; 152 return -ERESTARTSYS;
147 switch (cmd) { 153 switch (cmd) {
148 case VMCP_GETCODE: 154 case VMCP_GETCODE:
149 temp = session->resp_code; 155 temp = session->resp_code;
150 mutex_unlock(&session->mutex); 156 mutex_unlock(&session->mutex);
151 return put_user(temp, (int __user *)arg); 157 return put_user(temp, argp);
152 case VMCP_SETBUF: 158 case VMCP_SETBUF:
153 free_pages((unsigned long)session->response, 159 free_pages((unsigned long)session->response,
154 get_order(session->bufsize)); 160 get_order(session->bufsize));
155 session->response=NULL; 161 session->response=NULL;
156 temp = get_user(session->bufsize, (int __user *)arg); 162 temp = get_user(session->bufsize, argp);
157 if (get_order(session->bufsize) > 8) { 163 if (get_order(session->bufsize) > 8) {
158 session->bufsize = PAGE_SIZE; 164 session->bufsize = PAGE_SIZE;
159 temp = -EINVAL; 165 temp = -EINVAL;
@@ -163,7 +169,7 @@ static long vmcp_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
163 case VMCP_GETSIZE: 169 case VMCP_GETSIZE:
164 temp = session->resp_size; 170 temp = session->resp_size;
165 mutex_unlock(&session->mutex); 171 mutex_unlock(&session->mutex);
166 return put_user(temp, (int __user *)arg); 172 return put_user(temp, argp);
167 default: 173 default:
168 mutex_unlock(&session->mutex); 174 mutex_unlock(&session->mutex);
169 return -ENOIOCTLCMD; 175 return -ENOIOCTLCMD;
diff --git a/drivers/s390/cio/Makefile b/drivers/s390/cio/Makefile
index d033414f7599..e1b700a19648 100644
--- a/drivers/s390/cio/Makefile
+++ b/drivers/s390/cio/Makefile
@@ -10,5 +10,5 @@ obj-y += ccw_device.o cmf.o
10obj-$(CONFIG_CHSC_SCH) += chsc_sch.o 10obj-$(CONFIG_CHSC_SCH) += chsc_sch.o
11obj-$(CONFIG_CCWGROUP) += ccwgroup.o 11obj-$(CONFIG_CCWGROUP) += ccwgroup.o
12 12
13qdio-objs := qdio_main.o qdio_thinint.o qdio_debug.o qdio_perf.o qdio_setup.o 13qdio-objs := qdio_main.o qdio_thinint.o qdio_debug.o qdio_setup.o
14obj-$(CONFIG_QDIO) += qdio.o 14obj-$(CONFIG_QDIO) += qdio.o
diff --git a/drivers/s390/cio/chsc_sch.c b/drivers/s390/cio/chsc_sch.c
index cc5144b6f9d9..c84ac9443079 100644
--- a/drivers/s390/cio/chsc_sch.c
+++ b/drivers/s390/cio/chsc_sch.c
@@ -12,6 +12,7 @@
12#include <linux/uaccess.h> 12#include <linux/uaccess.h>
13#include <linux/miscdevice.h> 13#include <linux/miscdevice.h>
14 14
15#include <asm/compat.h>
15#include <asm/cio.h> 16#include <asm/cio.h>
16#include <asm/chsc.h> 17#include <asm/chsc.h>
17#include <asm/isc.h> 18#include <asm/isc.h>
@@ -770,24 +771,30 @@ out_free:
770static long chsc_ioctl(struct file *filp, unsigned int cmd, 771static long chsc_ioctl(struct file *filp, unsigned int cmd,
771 unsigned long arg) 772 unsigned long arg)
772{ 773{
774 void __user *argp;
775
773 CHSC_MSG(2, "chsc_ioctl called, cmd=%x\n", cmd); 776 CHSC_MSG(2, "chsc_ioctl called, cmd=%x\n", cmd);
777 if (is_compat_task())
778 argp = compat_ptr(arg);
779 else
780 argp = (void __user *)arg;
774 switch (cmd) { 781 switch (cmd) {
775 case CHSC_START: 782 case CHSC_START:
776 return chsc_ioctl_start((void __user *)arg); 783 return chsc_ioctl_start(argp);
777 case CHSC_INFO_CHANNEL_PATH: 784 case CHSC_INFO_CHANNEL_PATH:
778 return chsc_ioctl_info_channel_path((void __user *)arg); 785 return chsc_ioctl_info_channel_path(argp);
779 case CHSC_INFO_CU: 786 case CHSC_INFO_CU:
780 return chsc_ioctl_info_cu((void __user *)arg); 787 return chsc_ioctl_info_cu(argp);
781 case CHSC_INFO_SCH_CU: 788 case CHSC_INFO_SCH_CU:
782 return chsc_ioctl_info_sch_cu((void __user *)arg); 789 return chsc_ioctl_info_sch_cu(argp);
783 case CHSC_INFO_CI: 790 case CHSC_INFO_CI:
784 return chsc_ioctl_conf_info((void __user *)arg); 791 return chsc_ioctl_conf_info(argp);
785 case CHSC_INFO_CCL: 792 case CHSC_INFO_CCL:
786 return chsc_ioctl_conf_comp_list((void __user *)arg); 793 return chsc_ioctl_conf_comp_list(argp);
787 case CHSC_INFO_CPD: 794 case CHSC_INFO_CPD:
788 return chsc_ioctl_chpd((void __user *)arg); 795 return chsc_ioctl_chpd(argp);
789 case CHSC_INFO_DCAL: 796 case CHSC_INFO_DCAL:
790 return chsc_ioctl_dcal((void __user *)arg); 797 return chsc_ioctl_dcal(argp);
791 default: /* unknown ioctl number */ 798 default: /* unknown ioctl number */
792 return -ENOIOCTLCMD; 799 return -ENOIOCTLCMD;
793 } 800 }
diff --git a/drivers/s390/cio/qdio.h b/drivers/s390/cio/qdio.h
index ff7748a9199d..44f2f6a97f33 100644
--- a/drivers/s390/cio/qdio.h
+++ b/drivers/s390/cio/qdio.h
@@ -182,6 +182,34 @@ struct scssc_area {
182 u32:32; 182 u32:32;
183} __attribute__ ((packed)); 183} __attribute__ ((packed));
184 184
185struct qdio_dev_perf_stat {
186 unsigned int adapter_int;
187 unsigned int qdio_int;
188 unsigned int pci_request_int;
189
190 unsigned int tasklet_inbound;
191 unsigned int tasklet_inbound_resched;
192 unsigned int tasklet_inbound_resched2;
193 unsigned int tasklet_outbound;
194
195 unsigned int siga_read;
196 unsigned int siga_write;
197 unsigned int siga_sync;
198
199 unsigned int inbound_call;
200 unsigned int inbound_handler;
201 unsigned int stop_polling;
202 unsigned int inbound_queue_full;
203 unsigned int outbound_call;
204 unsigned int outbound_handler;
205 unsigned int fast_requeue;
206 unsigned int target_full;
207 unsigned int eqbs;
208 unsigned int eqbs_partial;
209 unsigned int sqbs;
210 unsigned int sqbs_partial;
211};
212
185struct qdio_input_q { 213struct qdio_input_q {
186 /* input buffer acknowledgement flag */ 214 /* input buffer acknowledgement flag */
187 int polling; 215 int polling;
@@ -269,6 +297,7 @@ struct qdio_irq {
269 u32 *dsci; /* address of device state change indicator */ 297 u32 *dsci; /* address of device state change indicator */
270 struct ccw_device *cdev; 298 struct ccw_device *cdev;
271 struct dentry *debugfs_dev; 299 struct dentry *debugfs_dev;
300 struct dentry *debugfs_perf;
272 301
273 unsigned long int_parm; 302 unsigned long int_parm;
274 struct subchannel_id schid; 303 struct subchannel_id schid;
@@ -286,9 +315,10 @@ struct qdio_irq {
286 struct ciw aqueue; 315 struct ciw aqueue;
287 316
288 struct qdio_ssqd_desc ssqd_desc; 317 struct qdio_ssqd_desc ssqd_desc;
289
290 void (*orig_handler) (struct ccw_device *, unsigned long, struct irb *); 318 void (*orig_handler) (struct ccw_device *, unsigned long, struct irb *);
291 319
320 struct qdio_dev_perf_stat perf_stat;
321 int perf_stat_enabled;
292 /* 322 /*
293 * Warning: Leave these members together at the end so they won't be 323 * Warning: Leave these members together at the end so they won't be
294 * cleared in qdio_setup_irq. 324 * cleared in qdio_setup_irq.
@@ -311,6 +341,10 @@ struct qdio_irq {
311 (irq->qib.qfmt == QDIO_IQDIO_QFMT || \ 341 (irq->qib.qfmt == QDIO_IQDIO_QFMT || \
312 css_general_characteristics.aif_osa) 342 css_general_characteristics.aif_osa)
313 343
344#define qperf(qdev,attr) qdev->perf_stat.attr
345#define qperf_inc(q,attr) if (q->irq_ptr->perf_stat_enabled) \
346 q->irq_ptr->perf_stat.attr++
347
314/* the highest iqdio queue is used for multicast */ 348/* the highest iqdio queue is used for multicast */
315static inline int multicast_outbound(struct qdio_q *q) 349static inline int multicast_outbound(struct qdio_q *q)
316{ 350{
diff --git a/drivers/s390/cio/qdio_debug.c b/drivers/s390/cio/qdio_debug.c
index 76769978285f..f49761ff9a00 100644
--- a/drivers/s390/cio/qdio_debug.c
+++ b/drivers/s390/cio/qdio_debug.c
@@ -55,13 +55,11 @@ static int qstat_show(struct seq_file *m, void *v)
55 if (!q) 55 if (!q)
56 return 0; 56 return 0;
57 57
58 seq_printf(m, "device state indicator: %d\n", *(u32 *)q->irq_ptr->dsci); 58 seq_printf(m, "DSCI: %d nr_used: %d\n",
59 seq_printf(m, "nr_used: %d\n", atomic_read(&q->nr_buf_used)); 59 *(u32 *)q->irq_ptr->dsci, atomic_read(&q->nr_buf_used));
60 seq_printf(m, "ftc: %d\n", q->first_to_check); 60 seq_printf(m, "ftc: %d last_move: %d\n", q->first_to_check, q->last_move);
61 seq_printf(m, "last_move: %d\n", q->last_move); 61 seq_printf(m, "polling: %d ack start: %d ack count: %d\n",
62 seq_printf(m, "polling: %d\n", q->u.in.polling); 62 q->u.in.polling, q->u.in.ack_start, q->u.in.ack_count);
63 seq_printf(m, "ack start: %d\n", q->u.in.ack_start);
64 seq_printf(m, "ack count: %d\n", q->u.in.ack_count);
65 seq_printf(m, "slsb buffer states:\n"); 63 seq_printf(m, "slsb buffer states:\n");
66 seq_printf(m, "|0 |8 |16 |24 |32 |40 |48 |56 63|\n"); 64 seq_printf(m, "|0 |8 |16 |24 |32 |40 |48 |56 63|\n");
67 65
@@ -110,7 +108,6 @@ static ssize_t qstat_seq_write(struct file *file, const char __user *buf,
110 108
111 if (!q) 109 if (!q)
112 return 0; 110 return 0;
113
114 if (q->is_input_q) 111 if (q->is_input_q)
115 xchg(q->irq_ptr->dsci, 1); 112 xchg(q->irq_ptr->dsci, 1);
116 local_bh_disable(); 113 local_bh_disable();
@@ -134,6 +131,98 @@ static const struct file_operations debugfs_fops = {
134 .release = single_release, 131 .release = single_release,
135}; 132};
136 133
134static char *qperf_names[] = {
135 "Assumed adapter interrupts",
136 "QDIO interrupts",
137 "Requested PCIs",
138 "Inbound tasklet runs",
139 "Inbound tasklet resched",
140 "Inbound tasklet resched2",
141 "Outbound tasklet runs",
142 "SIGA read",
143 "SIGA write",
144 "SIGA sync",
145 "Inbound calls",
146 "Inbound handler",
147 "Inbound stop_polling",
148 "Inbound queue full",
149 "Outbound calls",
150 "Outbound handler",
151 "Outbound fast_requeue",
152 "Outbound target_full",
153 "QEBSM eqbs",
154 "QEBSM eqbs partial",
155 "QEBSM sqbs",
156 "QEBSM sqbs partial"
157};
158
159static int qperf_show(struct seq_file *m, void *v)
160{
161 struct qdio_irq *irq_ptr = m->private;
162 unsigned int *stat;
163 int i;
164
165 if (!irq_ptr)
166 return 0;
167 if (!irq_ptr->perf_stat_enabled) {
168 seq_printf(m, "disabled\n");
169 return 0;
170 }
171 stat = (unsigned int *)&irq_ptr->perf_stat;
172
173 for (i = 0; i < ARRAY_SIZE(qperf_names); i++)
174 seq_printf(m, "%26s:\t%u\n",
175 qperf_names[i], *(stat + i));
176 return 0;
177}
178
179static ssize_t qperf_seq_write(struct file *file, const char __user *ubuf,
180 size_t count, loff_t *off)
181{
182 struct seq_file *seq = file->private_data;
183 struct qdio_irq *irq_ptr = seq->private;
184 unsigned long val;
185 char buf[8];
186 int ret;
187
188 if (!irq_ptr)
189 return 0;
190 if (count >= sizeof(buf))
191 return -EINVAL;
192 if (copy_from_user(&buf, ubuf, count))
193 return -EFAULT;
194 buf[count] = 0;
195
196 ret = strict_strtoul(buf, 10, &val);
197 if (ret < 0)
198 return ret;
199
200 switch (val) {
201 case 0:
202 irq_ptr->perf_stat_enabled = 0;
203 memset(&irq_ptr->perf_stat, 0, sizeof(irq_ptr->perf_stat));
204 break;
205 case 1:
206 irq_ptr->perf_stat_enabled = 1;
207 break;
208 }
209 return count;
210}
211
212static int qperf_seq_open(struct inode *inode, struct file *filp)
213{
214 return single_open(filp, qperf_show,
215 filp->f_path.dentry->d_inode->i_private);
216}
217
218static struct file_operations debugfs_perf_fops = {
219 .owner = THIS_MODULE,
220 .open = qperf_seq_open,
221 .read = seq_read,
222 .write = qperf_seq_write,
223 .llseek = seq_lseek,
224 .release = single_release,
225};
137static void setup_debugfs_entry(struct qdio_q *q, struct ccw_device *cdev) 226static void setup_debugfs_entry(struct qdio_q *q, struct ccw_device *cdev)
138{ 227{
139 char name[QDIO_DEBUGFS_NAME_LEN]; 228 char name[QDIO_DEBUGFS_NAME_LEN];
@@ -156,6 +245,14 @@ void qdio_setup_debug_entries(struct qdio_irq *irq_ptr, struct ccw_device *cdev)
156 debugfs_root); 245 debugfs_root);
157 if (IS_ERR(irq_ptr->debugfs_dev)) 246 if (IS_ERR(irq_ptr->debugfs_dev))
158 irq_ptr->debugfs_dev = NULL; 247 irq_ptr->debugfs_dev = NULL;
248
249 irq_ptr->debugfs_perf = debugfs_create_file("statistics",
250 S_IFREG | S_IRUGO | S_IWUSR,
251 irq_ptr->debugfs_dev, irq_ptr,
252 &debugfs_perf_fops);
253 if (IS_ERR(irq_ptr->debugfs_perf))
254 irq_ptr->debugfs_perf = NULL;
255
159 for_each_input_queue(irq_ptr, q, i) 256 for_each_input_queue(irq_ptr, q, i)
160 setup_debugfs_entry(q, cdev); 257 setup_debugfs_entry(q, cdev);
161 for_each_output_queue(irq_ptr, q, i) 258 for_each_output_queue(irq_ptr, q, i)
@@ -171,6 +268,7 @@ void qdio_shutdown_debug_entries(struct qdio_irq *irq_ptr, struct ccw_device *cd
171 debugfs_remove(q->debugfs_q); 268 debugfs_remove(q->debugfs_q);
172 for_each_output_queue(irq_ptr, q, i) 269 for_each_output_queue(irq_ptr, q, i)
173 debugfs_remove(q->debugfs_q); 270 debugfs_remove(q->debugfs_q);
271 debugfs_remove(irq_ptr->debugfs_perf);
174 debugfs_remove(irq_ptr->debugfs_dev); 272 debugfs_remove(irq_ptr->debugfs_dev);
175} 273}
176 274
diff --git a/drivers/s390/cio/qdio_main.c b/drivers/s390/cio/qdio_main.c
index b2275c5000e7..62b654af9237 100644
--- a/drivers/s390/cio/qdio_main.c
+++ b/drivers/s390/cio/qdio_main.c
@@ -22,7 +22,6 @@
22#include "device.h" 22#include "device.h"
23#include "qdio.h" 23#include "qdio.h"
24#include "qdio_debug.h" 24#include "qdio_debug.h"
25#include "qdio_perf.h"
26 25
27MODULE_AUTHOR("Utz Bacher <utz.bacher@de.ibm.com>,"\ 26MODULE_AUTHOR("Utz Bacher <utz.bacher@de.ibm.com>,"\
28 "Jan Glauber <jang@linux.vnet.ibm.com>"); 27 "Jan Glauber <jang@linux.vnet.ibm.com>");
@@ -126,7 +125,7 @@ static int qdio_do_eqbs(struct qdio_q *q, unsigned char *state,
126 int rc; 125 int rc;
127 126
128 BUG_ON(!q->irq_ptr->sch_token); 127 BUG_ON(!q->irq_ptr->sch_token);
129 qdio_perf_stat_inc(&perf_stats.debug_eqbs_all); 128 qperf_inc(q, eqbs);
130 129
131 if (!q->is_input_q) 130 if (!q->is_input_q)
132 nr += q->irq_ptr->nr_input_qs; 131 nr += q->irq_ptr->nr_input_qs;
@@ -139,7 +138,7 @@ again:
139 * buffers later. 138 * buffers later.
140 */ 139 */
141 if ((ccq == 96) && (count != tmp_count)) { 140 if ((ccq == 96) && (count != tmp_count)) {
142 qdio_perf_stat_inc(&perf_stats.debug_eqbs_incomplete); 141 qperf_inc(q, eqbs_partial);
143 return (count - tmp_count); 142 return (count - tmp_count);
144 } 143 }
145 144
@@ -182,7 +181,7 @@ static int qdio_do_sqbs(struct qdio_q *q, unsigned char state, int start,
182 return 0; 181 return 0;
183 182
184 BUG_ON(!q->irq_ptr->sch_token); 183 BUG_ON(!q->irq_ptr->sch_token);
185 qdio_perf_stat_inc(&perf_stats.debug_sqbs_all); 184 qperf_inc(q, sqbs);
186 185
187 if (!q->is_input_q) 186 if (!q->is_input_q)
188 nr += q->irq_ptr->nr_input_qs; 187 nr += q->irq_ptr->nr_input_qs;
@@ -191,7 +190,7 @@ again:
191 rc = qdio_check_ccq(q, ccq); 190 rc = qdio_check_ccq(q, ccq);
192 if (rc == 1) { 191 if (rc == 1) {
193 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "SQBS again:%2d", ccq); 192 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "SQBS again:%2d", ccq);
194 qdio_perf_stat_inc(&perf_stats.debug_sqbs_incomplete); 193 qperf_inc(q, sqbs_partial);
195 goto again; 194 goto again;
196 } 195 }
197 if (rc < 0) { 196 if (rc < 0) {
@@ -285,7 +284,7 @@ static inline int qdio_siga_sync(struct qdio_q *q, unsigned int output,
285 return 0; 284 return 0;
286 285
287 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "siga-s:%1d", q->nr); 286 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "siga-s:%1d", q->nr);
288 qdio_perf_stat_inc(&perf_stats.siga_sync); 287 qperf_inc(q, siga_sync);
289 288
290 cc = do_siga_sync(q->irq_ptr->schid, output, input); 289 cc = do_siga_sync(q->irq_ptr->schid, output, input);
291 if (cc) 290 if (cc)
@@ -350,7 +349,7 @@ static inline int qdio_siga_input(struct qdio_q *q)
350 int cc; 349 int cc;
351 350
352 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "siga-r:%1d", q->nr); 351 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "siga-r:%1d", q->nr);
353 qdio_perf_stat_inc(&perf_stats.siga_in); 352 qperf_inc(q, siga_read);
354 353
355 cc = do_siga_input(q->irq_ptr->schid, q->mask); 354 cc = do_siga_input(q->irq_ptr->schid, q->mask);
356 if (cc) 355 if (cc)
@@ -382,7 +381,7 @@ static inline void qdio_stop_polling(struct qdio_q *q)
382 return; 381 return;
383 382
384 q->u.in.polling = 0; 383 q->u.in.polling = 0;
385 qdio_perf_stat_inc(&perf_stats.debug_stop_polling); 384 qperf_inc(q, stop_polling);
386 385
387 /* show the card that we are not polling anymore */ 386 /* show the card that we are not polling anymore */
388 if (is_qebsm(q)) { 387 if (is_qebsm(q)) {
@@ -400,7 +399,7 @@ static void announce_buffer_error(struct qdio_q *q, int count)
400 /* special handling for no target buffer empty */ 399 /* special handling for no target buffer empty */
401 if ((!q->is_input_q && 400 if ((!q->is_input_q &&
402 (q->sbal[q->first_to_check]->element[15].flags & 0xff) == 0x10)) { 401 (q->sbal[q->first_to_check]->element[15].flags & 0xff) == 0x10)) {
403 qdio_perf_stat_inc(&perf_stats.outbound_target_full); 402 qperf_inc(q, target_full);
404 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "OUTFULL FTC:%02x", 403 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "OUTFULL FTC:%02x",
405 q->first_to_check); 404 q->first_to_check);
406 return; 405 return;
@@ -487,7 +486,7 @@ static int get_inbound_buffer_frontier(struct qdio_q *q)
487 inbound_primed(q, count); 486 inbound_primed(q, count);
488 q->first_to_check = add_buf(q->first_to_check, count); 487 q->first_to_check = add_buf(q->first_to_check, count);
489 if (atomic_sub(count, &q->nr_buf_used) == 0) 488 if (atomic_sub(count, &q->nr_buf_used) == 0)
490 qdio_perf_stat_inc(&perf_stats.inbound_queue_full); 489 qperf_inc(q, inbound_queue_full);
491 break; 490 break;
492 case SLSB_P_INPUT_ERROR: 491 case SLSB_P_INPUT_ERROR:
493 announce_buffer_error(q, count); 492 announce_buffer_error(q, count);
@@ -532,7 +531,7 @@ static inline int qdio_inbound_q_done(struct qdio_q *q)
532 qdio_siga_sync_q(q); 531 qdio_siga_sync_q(q);
533 get_buf_state(q, q->first_to_check, &state, 0); 532 get_buf_state(q, q->first_to_check, &state, 0);
534 533
535 if (state == SLSB_P_INPUT_PRIMED) 534 if (state == SLSB_P_INPUT_PRIMED || state == SLSB_P_INPUT_ERROR)
536 /* more work coming */ 535 /* more work coming */
537 return 0; 536 return 0;
538 537
@@ -567,9 +566,10 @@ static void qdio_kick_handler(struct qdio_q *q)
567 count = sub_buf(end, start); 566 count = sub_buf(end, start);
568 567
569 if (q->is_input_q) { 568 if (q->is_input_q) {
570 qdio_perf_stat_inc(&perf_stats.inbound_handler); 569 qperf_inc(q, inbound_handler);
571 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "kih s:%02x c:%02x", start, count); 570 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "kih s:%02x c:%02x", start, count);
572 } else 571 } else
572 qperf_inc(q, outbound_handler);
573 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "koh: s:%02x c:%02x", 573 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "koh: s:%02x c:%02x",
574 start, count); 574 start, count);
575 575
@@ -583,24 +583,28 @@ static void qdio_kick_handler(struct qdio_q *q)
583 583
584static void __qdio_inbound_processing(struct qdio_q *q) 584static void __qdio_inbound_processing(struct qdio_q *q)
585{ 585{
586 qdio_perf_stat_inc(&perf_stats.tasklet_inbound); 586 qperf_inc(q, tasklet_inbound);
587again: 587again:
588 if (!qdio_inbound_q_moved(q)) 588 if (!qdio_inbound_q_moved(q))
589 return; 589 return;
590 590
591 qdio_kick_handler(q); 591 qdio_kick_handler(q);
592 592
593 if (!qdio_inbound_q_done(q)) 593 if (!qdio_inbound_q_done(q)) {
594 /* means poll time is not yet over */ 594 /* means poll time is not yet over */
595 qperf_inc(q, tasklet_inbound_resched);
595 goto again; 596 goto again;
597 }
596 598
597 qdio_stop_polling(q); 599 qdio_stop_polling(q);
598 /* 600 /*
599 * We need to check again to not lose initiative after 601 * We need to check again to not lose initiative after
600 * resetting the ACK state. 602 * resetting the ACK state.
601 */ 603 */
602 if (!qdio_inbound_q_done(q)) 604 if (!qdio_inbound_q_done(q)) {
605 qperf_inc(q, tasklet_inbound_resched2);
603 goto again; 606 goto again;
607 }
604} 608}
605 609
606void qdio_inbound_processing(unsigned long data) 610void qdio_inbound_processing(unsigned long data)
@@ -688,7 +692,7 @@ static int qdio_kick_outbound_q(struct qdio_q *q)
688 return 0; 692 return 0;
689 693
690 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "siga-w:%1d", q->nr); 694 DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "siga-w:%1d", q->nr);
691 qdio_perf_stat_inc(&perf_stats.siga_out); 695 qperf_inc(q, siga_write);
692 696
693 cc = qdio_siga_output(q, &busy_bit); 697 cc = qdio_siga_output(q, &busy_bit);
694 switch (cc) { 698 switch (cc) {
@@ -711,7 +715,7 @@ static int qdio_kick_outbound_q(struct qdio_q *q)
711 715
712static void __qdio_outbound_processing(struct qdio_q *q) 716static void __qdio_outbound_processing(struct qdio_q *q)
713{ 717{
714 qdio_perf_stat_inc(&perf_stats.tasklet_outbound); 718 qperf_inc(q, tasklet_outbound);
715 BUG_ON(atomic_read(&q->nr_buf_used) < 0); 719 BUG_ON(atomic_read(&q->nr_buf_used) < 0);
716 720
717 if (qdio_outbound_q_moved(q)) 721 if (qdio_outbound_q_moved(q))
@@ -739,12 +743,9 @@ static void __qdio_outbound_processing(struct qdio_q *q)
739 */ 743 */
740 if (qdio_outbound_q_done(q)) 744 if (qdio_outbound_q_done(q))
741 del_timer(&q->u.out.timer); 745 del_timer(&q->u.out.timer);
742 else { 746 else
743 if (!timer_pending(&q->u.out.timer)) { 747 if (!timer_pending(&q->u.out.timer))
744 mod_timer(&q->u.out.timer, jiffies + 10 * HZ); 748 mod_timer(&q->u.out.timer, jiffies + 10 * HZ);
745 qdio_perf_stat_inc(&perf_stats.debug_tl_out_timer);
746 }
747 }
748 return; 749 return;
749 750
750sched: 751sched:
@@ -784,7 +785,7 @@ static inline void qdio_check_outbound_after_thinint(struct qdio_q *q)
784 785
785static void __tiqdio_inbound_processing(struct qdio_q *q) 786static void __tiqdio_inbound_processing(struct qdio_q *q)
786{ 787{
787 qdio_perf_stat_inc(&perf_stats.thinint_inbound); 788 qperf_inc(q, tasklet_inbound);
788 qdio_sync_after_thinint(q); 789 qdio_sync_after_thinint(q);
789 790
790 /* 791 /*
@@ -799,7 +800,7 @@ static void __tiqdio_inbound_processing(struct qdio_q *q)
799 qdio_kick_handler(q); 800 qdio_kick_handler(q);
800 801
801 if (!qdio_inbound_q_done(q)) { 802 if (!qdio_inbound_q_done(q)) {
802 qdio_perf_stat_inc(&perf_stats.thinint_inbound_loop); 803 qperf_inc(q, tasklet_inbound_resched);
803 if (likely(q->irq_ptr->state != QDIO_IRQ_STATE_STOPPED)) { 804 if (likely(q->irq_ptr->state != QDIO_IRQ_STATE_STOPPED)) {
804 tasklet_schedule(&q->tasklet); 805 tasklet_schedule(&q->tasklet);
805 return; 806 return;
@@ -812,7 +813,7 @@ static void __tiqdio_inbound_processing(struct qdio_q *q)
812 * resetting the ACK state. 813 * resetting the ACK state.
813 */ 814 */
814 if (!qdio_inbound_q_done(q)) { 815 if (!qdio_inbound_q_done(q)) {
815 qdio_perf_stat_inc(&perf_stats.thinint_inbound_loop2); 816 qperf_inc(q, tasklet_inbound_resched2);
816 if (likely(q->irq_ptr->state != QDIO_IRQ_STATE_STOPPED)) 817 if (likely(q->irq_ptr->state != QDIO_IRQ_STATE_STOPPED))
817 tasklet_schedule(&q->tasklet); 818 tasklet_schedule(&q->tasklet);
818 } 819 }
@@ -851,8 +852,6 @@ static void qdio_int_handler_pci(struct qdio_irq *irq_ptr)
851 if (unlikely(irq_ptr->state == QDIO_IRQ_STATE_STOPPED)) 852 if (unlikely(irq_ptr->state == QDIO_IRQ_STATE_STOPPED))
852 return; 853 return;
853 854
854 qdio_perf_stat_inc(&perf_stats.pci_int);
855
856 for_each_input_queue(irq_ptr, q, i) 855 for_each_input_queue(irq_ptr, q, i)
857 tasklet_schedule(&q->tasklet); 856 tasklet_schedule(&q->tasklet);
858 857
@@ -923,8 +922,6 @@ void qdio_int_handler(struct ccw_device *cdev, unsigned long intparm,
923 struct qdio_irq *irq_ptr = cdev->private->qdio_data; 922 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
924 int cstat, dstat; 923 int cstat, dstat;
925 924
926 qdio_perf_stat_inc(&perf_stats.qdio_int);
927
928 if (!intparm || !irq_ptr) { 925 if (!intparm || !irq_ptr) {
929 DBF_ERROR("qint:%4x", cdev->private->schid.sch_no); 926 DBF_ERROR("qint:%4x", cdev->private->schid.sch_no);
930 return; 927 return;
@@ -963,6 +960,8 @@ void qdio_int_handler(struct ccw_device *cdev, unsigned long intparm,
963 qdio_handle_activate_check(cdev, intparm, cstat, 960 qdio_handle_activate_check(cdev, intparm, cstat,
964 dstat); 961 dstat);
965 break; 962 break;
963 case QDIO_IRQ_STATE_STOPPED:
964 break;
966 default: 965 default:
967 WARN_ON(1); 966 WARN_ON(1);
968 } 967 }
@@ -1383,6 +1382,8 @@ static int handle_inbound(struct qdio_q *q, unsigned int callflags,
1383{ 1382{
1384 int used, diff; 1383 int used, diff;
1385 1384
1385 qperf_inc(q, inbound_call);
1386
1386 if (!q->u.in.polling) 1387 if (!q->u.in.polling)
1387 goto set; 1388 goto set;
1388 1389
@@ -1438,14 +1439,16 @@ static int handle_outbound(struct qdio_q *q, unsigned int callflags,
1438 unsigned char state; 1439 unsigned char state;
1439 int used, rc = 0; 1440 int used, rc = 0;
1440 1441
1441 qdio_perf_stat_inc(&perf_stats.outbound_handler); 1442 qperf_inc(q, outbound_call);
1442 1443
1443 count = set_buf_states(q, bufnr, SLSB_CU_OUTPUT_PRIMED, count); 1444 count = set_buf_states(q, bufnr, SLSB_CU_OUTPUT_PRIMED, count);
1444 used = atomic_add_return(count, &q->nr_buf_used); 1445 used = atomic_add_return(count, &q->nr_buf_used);
1445 BUG_ON(used > QDIO_MAX_BUFFERS_PER_Q); 1446 BUG_ON(used > QDIO_MAX_BUFFERS_PER_Q);
1446 1447
1447 if (callflags & QDIO_FLAG_PCI_OUT) 1448 if (callflags & QDIO_FLAG_PCI_OUT) {
1448 q->u.out.pci_out_enabled = 1; 1449 q->u.out.pci_out_enabled = 1;
1450 qperf_inc(q, pci_request_int);
1451 }
1449 else 1452 else
1450 q->u.out.pci_out_enabled = 0; 1453 q->u.out.pci_out_enabled = 0;
1451 1454
@@ -1484,7 +1487,7 @@ static int handle_outbound(struct qdio_q *q, unsigned int callflags,
1484 if (state != SLSB_CU_OUTPUT_PRIMED) 1487 if (state != SLSB_CU_OUTPUT_PRIMED)
1485 rc = qdio_kick_outbound_q(q); 1488 rc = qdio_kick_outbound_q(q);
1486 else 1489 else
1487 qdio_perf_stat_inc(&perf_stats.fast_requeue); 1490 qperf_inc(q, fast_requeue);
1488 1491
1489out: 1492out:
1490 tasklet_schedule(&q->tasklet); 1493 tasklet_schedule(&q->tasklet);
@@ -1540,16 +1543,11 @@ static int __init init_QDIO(void)
1540 rc = qdio_debug_init(); 1543 rc = qdio_debug_init();
1541 if (rc) 1544 if (rc)
1542 goto out_ti; 1545 goto out_ti;
1543 rc = qdio_setup_perf_stats();
1544 if (rc)
1545 goto out_debug;
1546 rc = tiqdio_register_thinints(); 1546 rc = tiqdio_register_thinints();
1547 if (rc) 1547 if (rc)
1548 goto out_perf; 1548 goto out_debug;
1549 return 0; 1549 return 0;
1550 1550
1551out_perf:
1552 qdio_remove_perf_stats();
1553out_debug: 1551out_debug:
1554 qdio_debug_exit(); 1552 qdio_debug_exit();
1555out_ti: 1553out_ti:
@@ -1563,7 +1561,6 @@ static void __exit exit_QDIO(void)
1563{ 1561{
1564 tiqdio_unregister_thinints(); 1562 tiqdio_unregister_thinints();
1565 tiqdio_free_memory(); 1563 tiqdio_free_memory();
1566 qdio_remove_perf_stats();
1567 qdio_debug_exit(); 1564 qdio_debug_exit();
1568 qdio_setup_exit(); 1565 qdio_setup_exit();
1569} 1566}
diff --git a/drivers/s390/cio/qdio_perf.c b/drivers/s390/cio/qdio_perf.c
deleted file mode 100644
index 54f7c325a3e6..000000000000
--- a/drivers/s390/cio/qdio_perf.c
+++ /dev/null
@@ -1,149 +0,0 @@
1/*
2 * drivers/s390/cio/qdio_perf.c
3 *
4 * Copyright IBM Corp. 2008
5 *
6 * Author: Jan Glauber (jang@linux.vnet.ibm.com)
7 */
8#include <linux/kernel.h>
9#include <linux/proc_fs.h>
10#include <linux/seq_file.h>
11#include <asm/ccwdev.h>
12
13#include "cio.h"
14#include "css.h"
15#include "device.h"
16#include "ioasm.h"
17#include "chsc.h"
18#include "qdio_debug.h"
19#include "qdio_perf.h"
20
21int qdio_performance_stats;
22struct qdio_perf_stats perf_stats;
23
24#ifdef CONFIG_PROC_FS
25static struct proc_dir_entry *qdio_perf_pde;
26#endif
27
28/*
29 * procfs functions
30 */
31static int qdio_perf_proc_show(struct seq_file *m, void *v)
32{
33 seq_printf(m, "Number of qdio interrupts\t\t\t: %li\n",
34 (long)atomic_long_read(&perf_stats.qdio_int));
35 seq_printf(m, "Number of PCI interrupts\t\t\t: %li\n",
36 (long)atomic_long_read(&perf_stats.pci_int));
37 seq_printf(m, "Number of adapter interrupts\t\t\t: %li\n",
38 (long)atomic_long_read(&perf_stats.thin_int));
39 seq_printf(m, "\n");
40 seq_printf(m, "Inbound tasklet runs\t\t\t\t: %li\n",
41 (long)atomic_long_read(&perf_stats.tasklet_inbound));
42 seq_printf(m, "Outbound tasklet runs\t\t\t\t: %li\n",
43 (long)atomic_long_read(&perf_stats.tasklet_outbound));
44 seq_printf(m, "Adapter interrupt tasklet runs/loops\t\t: %li/%li\n",
45 (long)atomic_long_read(&perf_stats.tasklet_thinint),
46 (long)atomic_long_read(&perf_stats.tasklet_thinint_loop));
47 seq_printf(m, "Adapter interrupt inbound tasklet runs/loops\t: %li/%li\n",
48 (long)atomic_long_read(&perf_stats.thinint_inbound),
49 (long)atomic_long_read(&perf_stats.thinint_inbound_loop));
50 seq_printf(m, "\n");
51 seq_printf(m, "Number of SIGA In issued\t\t\t: %li\n",
52 (long)atomic_long_read(&perf_stats.siga_in));
53 seq_printf(m, "Number of SIGA Out issued\t\t\t: %li\n",
54 (long)atomic_long_read(&perf_stats.siga_out));
55 seq_printf(m, "Number of SIGA Sync issued\t\t\t: %li\n",
56 (long)atomic_long_read(&perf_stats.siga_sync));
57 seq_printf(m, "\n");
58 seq_printf(m, "Number of inbound transfers\t\t\t: %li\n",
59 (long)atomic_long_read(&perf_stats.inbound_handler));
60 seq_printf(m, "Number of outbound transfers\t\t\t: %li\n",
61 (long)atomic_long_read(&perf_stats.outbound_handler));
62 seq_printf(m, "\n");
63 seq_printf(m, "Number of fast requeues (outg. SBAL w/o SIGA)\t: %li\n",
64 (long)atomic_long_read(&perf_stats.fast_requeue));
65 seq_printf(m, "Number of outbound target full condition\t: %li\n",
66 (long)atomic_long_read(&perf_stats.outbound_target_full));
67 seq_printf(m, "Number of inbound queue full condition\t\t: %li\n",
68 (long)atomic_long_read(&perf_stats.inbound_queue_full));
69 seq_printf(m, "Number of outbound tasklet mod_timer calls\t: %li\n",
70 (long)atomic_long_read(&perf_stats.debug_tl_out_timer));
71 seq_printf(m, "Number of stop polling calls\t\t\t: %li\n",
72 (long)atomic_long_read(&perf_stats.debug_stop_polling));
73 seq_printf(m, "AI inbound tasklet loops after stop polling\t: %li\n",
74 (long)atomic_long_read(&perf_stats.thinint_inbound_loop2));
75 seq_printf(m, "QEBSM EQBS total/incomplete\t\t\t: %li/%li\n",
76 (long)atomic_long_read(&perf_stats.debug_eqbs_all),
77 (long)atomic_long_read(&perf_stats.debug_eqbs_incomplete));
78 seq_printf(m, "QEBSM SQBS total/incomplete\t\t\t: %li/%li\n",
79 (long)atomic_long_read(&perf_stats.debug_sqbs_all),
80 (long)atomic_long_read(&perf_stats.debug_sqbs_incomplete));
81 seq_printf(m, "\n");
82 return 0;
83}
84static int qdio_perf_seq_open(struct inode *inode, struct file *filp)
85{
86 return single_open(filp, qdio_perf_proc_show, NULL);
87}
88
89static const struct file_operations qdio_perf_proc_fops = {
90 .owner = THIS_MODULE,
91 .open = qdio_perf_seq_open,
92 .read = seq_read,
93 .llseek = seq_lseek,
94 .release = single_release,
95};
96
97/*
98 * sysfs functions
99 */
100static ssize_t qdio_perf_stats_show(struct bus_type *bus, char *buf)
101{
102 return sprintf(buf, "%i\n", qdio_performance_stats ? 1 : 0);
103}
104
105static ssize_t qdio_perf_stats_store(struct bus_type *bus,
106 const char *buf, size_t count)
107{
108 unsigned long i;
109
110 if (strict_strtoul(buf, 16, &i) != 0)
111 return -EINVAL;
112 if ((i != 0) && (i != 1))
113 return -EINVAL;
114 if (i == qdio_performance_stats)
115 return count;
116
117 qdio_performance_stats = i;
118 /* reset performance statistics */
119 if (i == 0)
120 memset(&perf_stats, 0, sizeof(struct qdio_perf_stats));
121 return count;
122}
123
124static BUS_ATTR(qdio_performance_stats, 0644, qdio_perf_stats_show,
125 qdio_perf_stats_store);
126
127int __init qdio_setup_perf_stats(void)
128{
129 int rc;
130
131 rc = bus_create_file(&ccw_bus_type, &bus_attr_qdio_performance_stats);
132 if (rc)
133 return rc;
134
135#ifdef CONFIG_PROC_FS
136 memset(&perf_stats, 0, sizeof(struct qdio_perf_stats));
137 qdio_perf_pde = proc_create("qdio_perf", S_IFREG | S_IRUGO,
138 NULL, &qdio_perf_proc_fops);
139#endif
140 return 0;
141}
142
143void qdio_remove_perf_stats(void)
144{
145#ifdef CONFIG_PROC_FS
146 remove_proc_entry("qdio_perf", NULL);
147#endif
148 bus_remove_file(&ccw_bus_type, &bus_attr_qdio_performance_stats);
149}
diff --git a/drivers/s390/cio/qdio_perf.h b/drivers/s390/cio/qdio_perf.h
deleted file mode 100644
index 12454231dc8b..000000000000
--- a/drivers/s390/cio/qdio_perf.h
+++ /dev/null
@@ -1,62 +0,0 @@
1/*
2 * drivers/s390/cio/qdio_perf.h
3 *
4 * Copyright IBM Corp. 2008
5 *
6 * Author: Jan Glauber (jang@linux.vnet.ibm.com)
7 */
8#ifndef QDIO_PERF_H
9#define QDIO_PERF_H
10
11#include <linux/types.h>
12#include <asm/atomic.h>
13
14struct qdio_perf_stats {
15 /* interrupt handler calls */
16 atomic_long_t qdio_int;
17 atomic_long_t pci_int;
18 atomic_long_t thin_int;
19
20 /* tasklet runs */
21 atomic_long_t tasklet_inbound;
22 atomic_long_t tasklet_outbound;
23 atomic_long_t tasklet_thinint;
24 atomic_long_t tasklet_thinint_loop;
25 atomic_long_t thinint_inbound;
26 atomic_long_t thinint_inbound_loop;
27 atomic_long_t thinint_inbound_loop2;
28
29 /* signal adapter calls */
30 atomic_long_t siga_out;
31 atomic_long_t siga_in;
32 atomic_long_t siga_sync;
33
34 /* misc */
35 atomic_long_t inbound_handler;
36 atomic_long_t outbound_handler;
37 atomic_long_t fast_requeue;
38 atomic_long_t outbound_target_full;
39 atomic_long_t inbound_queue_full;
40
41 /* for debugging */
42 atomic_long_t debug_tl_out_timer;
43 atomic_long_t debug_stop_polling;
44 atomic_long_t debug_eqbs_all;
45 atomic_long_t debug_eqbs_incomplete;
46 atomic_long_t debug_sqbs_all;
47 atomic_long_t debug_sqbs_incomplete;
48};
49
50extern struct qdio_perf_stats perf_stats;
51extern int qdio_performance_stats;
52
53static inline void qdio_perf_stat_inc(atomic_long_t *count)
54{
55 if (qdio_performance_stats)
56 atomic_long_inc(count);
57}
58
59int qdio_setup_perf_stats(void);
60void qdio_remove_perf_stats(void);
61
62#endif
diff --git a/drivers/s390/cio/qdio_thinint.c b/drivers/s390/cio/qdio_thinint.c
index 981a77ea7ee2..091d904d3182 100644
--- a/drivers/s390/cio/qdio_thinint.c
+++ b/drivers/s390/cio/qdio_thinint.c
@@ -1,9 +1,7 @@
1/* 1/*
2 * linux/drivers/s390/cio/thinint_qdio.c 2 * linux/drivers/s390/cio/thinint_qdio.c
3 * 3 *
4 * thin interrupt support for qdio 4 * Copyright 2000,2009 IBM Corp.
5 *
6 * Copyright 2000-2008 IBM Corp.
7 * Author(s): Utz Bacher <utz.bacher@de.ibm.com> 5 * Author(s): Utz Bacher <utz.bacher@de.ibm.com>
8 * Cornelia Huck <cornelia.huck@de.ibm.com> 6 * Cornelia Huck <cornelia.huck@de.ibm.com>
9 * Jan Glauber <jang@linux.vnet.ibm.com> 7 * Jan Glauber <jang@linux.vnet.ibm.com>
@@ -19,7 +17,6 @@
19#include "ioasm.h" 17#include "ioasm.h"
20#include "qdio.h" 18#include "qdio.h"
21#include "qdio_debug.h" 19#include "qdio_debug.h"
22#include "qdio_perf.h"
23 20
24/* 21/*
25 * Restriction: only 63 iqdio subchannels would have its own indicator, 22 * Restriction: only 63 iqdio subchannels would have its own indicator,
@@ -132,8 +129,6 @@ static void tiqdio_thinint_handler(void *ind, void *drv_data)
132{ 129{
133 struct qdio_q *q; 130 struct qdio_q *q;
134 131
135 qdio_perf_stat_inc(&perf_stats.thin_int);
136
137 /* 132 /*
138 * SVS only when needed: issue SVS to benefit from iqdio interrupt 133 * SVS only when needed: issue SVS to benefit from iqdio interrupt
139 * avoidance (SVS clears adapter interrupt suppression overwrite) 134 * avoidance (SVS clears adapter interrupt suppression overwrite)
@@ -154,6 +149,7 @@ static void tiqdio_thinint_handler(void *ind, void *drv_data)
154 list_for_each_entry_rcu(q, &tiq_list, entry) 149 list_for_each_entry_rcu(q, &tiq_list, entry)
155 /* only process queues from changed sets */ 150 /* only process queues from changed sets */
156 if (*q->irq_ptr->dsci) { 151 if (*q->irq_ptr->dsci) {
152 qperf_inc(q, adapter_int);
157 153
158 /* only clear it if the indicator is non-shared */ 154 /* only clear it if the indicator is non-shared */
159 if (!shared_ind(q->irq_ptr)) 155 if (!shared_ind(q->irq_ptr))
diff --git a/drivers/s390/crypto/zcrypt_api.c b/drivers/s390/crypto/zcrypt_api.c
index 0d4d18bdd45c..c68be24e27d9 100644
--- a/drivers/s390/crypto/zcrypt_api.c
+++ b/drivers/s390/crypto/zcrypt_api.c
@@ -393,10 +393,12 @@ static long zcrypt_rsa_crt(struct ica_rsa_modexpo_crt *crt)
393 * u_mult_inv > 128 bytes. 393 * u_mult_inv > 128 bytes.
394 */ 394 */
395 if (copied == 0) { 395 if (copied == 0) {
396 int len; 396 unsigned int len;
397 spin_unlock_bh(&zcrypt_device_lock); 397 spin_unlock_bh(&zcrypt_device_lock);
398 /* len is max 256 / 2 - 120 = 8 */ 398 /* len is max 256 / 2 - 120 = 8 */
399 len = crt->inputdatalength / 2 - 120; 399 len = crt->inputdatalength / 2 - 120;
400 if (len > sizeof(z1))
401 return -EFAULT;
400 z1 = z2 = z3 = 0; 402 z1 = z2 = z3 = 0;
401 if (copy_from_user(&z1, crt->np_prime, len) || 403 if (copy_from_user(&z1, crt->np_prime, len) ||
402 copy_from_user(&z2, crt->bp_key, len) || 404 copy_from_user(&z2, crt->bp_key, len) ||
diff --git a/drivers/s390/crypto/zcrypt_pcicc.c b/drivers/s390/crypto/zcrypt_pcicc.c
index a23726a0735c..142f72a2ca5a 100644
--- a/drivers/s390/crypto/zcrypt_pcicc.c
+++ b/drivers/s390/crypto/zcrypt_pcicc.c
@@ -373,6 +373,8 @@ static int convert_type86(struct zcrypt_device *zdev,
373 zdev->max_mod_size = PCICC_MAX_MOD_SIZE_OLD; 373 zdev->max_mod_size = PCICC_MAX_MOD_SIZE_OLD;
374 return -EAGAIN; 374 return -EAGAIN;
375 } 375 }
376 if (service_rc == 8 && service_rs == 72)
377 return -EINVAL;
376 zdev->online = 0; 378 zdev->online = 0;
377 return -EAGAIN; /* repeat the request on a different device. */ 379 return -EAGAIN; /* repeat the request on a different device. */
378 } 380 }
diff --git a/drivers/s390/crypto/zcrypt_pcixcc.c b/drivers/s390/crypto/zcrypt_pcixcc.c
index 79c120578e61..68f3e6204db8 100644
--- a/drivers/s390/crypto/zcrypt_pcixcc.c
+++ b/drivers/s390/crypto/zcrypt_pcixcc.c
@@ -470,6 +470,8 @@ static int convert_type86_ica(struct zcrypt_device *zdev,
470 } 470 }
471 if (service_rc == 12 && service_rs == 769) 471 if (service_rc == 12 && service_rs == 769)
472 return -EINVAL; 472 return -EINVAL;
473 if (service_rc == 8 && service_rs == 72)
474 return -EINVAL;
473 zdev->online = 0; 475 zdev->online = 0;
474 return -EAGAIN; /* repeat the request on a different device. */ 476 return -EAGAIN; /* repeat the request on a different device. */
475 } 477 }
diff --git a/drivers/s390/net/claw.c b/drivers/s390/net/claw.c
index 3c77bfe0764c..147bb1a69aba 100644
--- a/drivers/s390/net/claw.c
+++ b/drivers/s390/net/claw.c
@@ -3398,7 +3398,7 @@ claw_init(void)
3398 goto out_err; 3398 goto out_err;
3399 } 3399 }
3400 CLAW_DBF_TEXT(2, setup, "init_mod"); 3400 CLAW_DBF_TEXT(2, setup, "init_mod");
3401 claw_root_dev = root_device_register("qeth"); 3401 claw_root_dev = root_device_register("claw");
3402 ret = IS_ERR(claw_root_dev) ? PTR_ERR(claw_root_dev) : 0; 3402 ret = IS_ERR(claw_root_dev) ? PTR_ERR(claw_root_dev) : 0;
3403 if (ret) 3403 if (ret)
3404 goto register_err; 3404 goto register_err;
diff --git a/drivers/s390/scsi/zfcp_cfdc.c b/drivers/s390/scsi/zfcp_cfdc.c
index f932400e980a..0eb6eefd2c1a 100644
--- a/drivers/s390/scsi/zfcp_cfdc.c
+++ b/drivers/s390/scsi/zfcp_cfdc.c
@@ -12,6 +12,7 @@
12 12
13#include <linux/types.h> 13#include <linux/types.h>
14#include <linux/miscdevice.h> 14#include <linux/miscdevice.h>
15#include <asm/compat.h>
15#include <asm/ccwdev.h> 16#include <asm/ccwdev.h>
16#include "zfcp_def.h" 17#include "zfcp_def.h"
17#include "zfcp_ext.h" 18#include "zfcp_ext.h"
@@ -163,7 +164,7 @@ static void zfcp_cfdc_req_to_sense(struct zfcp_cfdc_data *data,
163} 164}
164 165
165static long zfcp_cfdc_dev_ioctl(struct file *file, unsigned int command, 166static long zfcp_cfdc_dev_ioctl(struct file *file, unsigned int command,
166 unsigned long buffer) 167 unsigned long arg)
167{ 168{
168 struct zfcp_cfdc_data *data; 169 struct zfcp_cfdc_data *data;
169 struct zfcp_cfdc_data __user *data_user; 170 struct zfcp_cfdc_data __user *data_user;
@@ -175,7 +176,11 @@ static long zfcp_cfdc_dev_ioctl(struct file *file, unsigned int command,
175 if (command != ZFCP_CFDC_IOC) 176 if (command != ZFCP_CFDC_IOC)
176 return -ENOTTY; 177 return -ENOTTY;
177 178
178 data_user = (void __user *) buffer; 179 if (is_compat_task())
180 data_user = compat_ptr(arg);
181 else
182 data_user = (void __user *)arg;
183
179 if (!data_user) 184 if (!data_user)
180 return -EINVAL; 185 return -EINVAL;
181 186
diff --git a/drivers/s390/scsi/zfcp_dbf.c b/drivers/s390/scsi/zfcp_dbf.c
index 84450955ae11..7369c8911bcf 100644
--- a/drivers/s390/scsi/zfcp_dbf.c
+++ b/drivers/s390/scsi/zfcp_dbf.c
@@ -327,7 +327,7 @@ static void zfcp_dbf_hba_view_response(char **p,
327 break; 327 break;
328 zfcp_dbf_out(p, "scsi_cmnd", "0x%0Lx", r->u.fcp.cmnd); 328 zfcp_dbf_out(p, "scsi_cmnd", "0x%0Lx", r->u.fcp.cmnd);
329 zfcp_dbf_out(p, "scsi_serial", "0x%016Lx", r->u.fcp.serial); 329 zfcp_dbf_out(p, "scsi_serial", "0x%016Lx", r->u.fcp.serial);
330 p += sprintf(*p, "\n"); 330 *p += sprintf(*p, "\n");
331 break; 331 break;
332 332
333 case FSF_QTCB_OPEN_PORT_WITH_DID: 333 case FSF_QTCB_OPEN_PORT_WITH_DID:
diff --git a/drivers/s390/scsi/zfcp_ext.h b/drivers/s390/scsi/zfcp_ext.h
index 03dec832b465..66bdb34143cb 100644
--- a/drivers/s390/scsi/zfcp_ext.h
+++ b/drivers/s390/scsi/zfcp_ext.h
@@ -108,6 +108,7 @@ extern void zfcp_fc_wka_ports_force_offline(struct zfcp_fc_wka_ports *);
108extern int zfcp_fc_gs_setup(struct zfcp_adapter *); 108extern int zfcp_fc_gs_setup(struct zfcp_adapter *);
109extern void zfcp_fc_gs_destroy(struct zfcp_adapter *); 109extern void zfcp_fc_gs_destroy(struct zfcp_adapter *);
110extern int zfcp_fc_exec_bsg_job(struct fc_bsg_job *); 110extern int zfcp_fc_exec_bsg_job(struct fc_bsg_job *);
111extern int zfcp_fc_timeout_bsg_job(struct fc_bsg_job *);
111 112
112/* zfcp_fsf.c */ 113/* zfcp_fsf.c */
113extern int zfcp_fsf_open_port(struct zfcp_erp_action *); 114extern int zfcp_fsf_open_port(struct zfcp_erp_action *);
@@ -129,9 +130,9 @@ extern void zfcp_fsf_req_dismiss_all(struct zfcp_adapter *);
129extern int zfcp_fsf_status_read(struct zfcp_qdio *); 130extern int zfcp_fsf_status_read(struct zfcp_qdio *);
130extern int zfcp_status_read_refill(struct zfcp_adapter *adapter); 131extern int zfcp_status_read_refill(struct zfcp_adapter *adapter);
131extern int zfcp_fsf_send_ct(struct zfcp_fc_wka_port *, struct zfcp_fsf_ct_els *, 132extern int zfcp_fsf_send_ct(struct zfcp_fc_wka_port *, struct zfcp_fsf_ct_els *,
132 mempool_t *); 133 mempool_t *, unsigned int);
133extern int zfcp_fsf_send_els(struct zfcp_adapter *, u32, 134extern int zfcp_fsf_send_els(struct zfcp_adapter *, u32,
134 struct zfcp_fsf_ct_els *); 135 struct zfcp_fsf_ct_els *, unsigned int);
135extern int zfcp_fsf_send_fcp_command_task(struct zfcp_unit *, 136extern int zfcp_fsf_send_fcp_command_task(struct zfcp_unit *,
136 struct scsi_cmnd *); 137 struct scsi_cmnd *);
137extern void zfcp_fsf_req_free(struct zfcp_fsf_req *); 138extern void zfcp_fsf_req_free(struct zfcp_fsf_req *);
diff --git a/drivers/s390/scsi/zfcp_fc.c b/drivers/s390/scsi/zfcp_fc.c
index ac5e3b7a3576..271399f62f1b 100644
--- a/drivers/s390/scsi/zfcp_fc.c
+++ b/drivers/s390/scsi/zfcp_fc.c
@@ -258,7 +258,8 @@ static int zfcp_fc_ns_gid_pn_request(struct zfcp_port *port,
258 gid_pn->gid_pn_req.gid_pn.fn_wwpn = port->wwpn; 258 gid_pn->gid_pn_req.gid_pn.fn_wwpn = port->wwpn;
259 259
260 ret = zfcp_fsf_send_ct(&adapter->gs->ds, &gid_pn->ct, 260 ret = zfcp_fsf_send_ct(&adapter->gs->ds, &gid_pn->ct,
261 adapter->pool.gid_pn_req); 261 adapter->pool.gid_pn_req,
262 ZFCP_FC_CTELS_TMO);
262 if (!ret) { 263 if (!ret) {
263 wait_for_completion(&completion); 264 wait_for_completion(&completion);
264 zfcp_fc_ns_gid_pn_eval(gid_pn); 265 zfcp_fc_ns_gid_pn_eval(gid_pn);
@@ -421,7 +422,8 @@ static int zfcp_fc_adisc(struct zfcp_port *port)
421 hton24(adisc->adisc_req.adisc_port_id, 422 hton24(adisc->adisc_req.adisc_port_id,
422 fc_host_port_id(adapter->scsi_host)); 423 fc_host_port_id(adapter->scsi_host));
423 424
424 ret = zfcp_fsf_send_els(adapter, port->d_id, &adisc->els); 425 ret = zfcp_fsf_send_els(adapter, port->d_id, &adisc->els,
426 ZFCP_FC_CTELS_TMO);
425 if (ret) 427 if (ret)
426 kmem_cache_free(zfcp_data.adisc_cache, adisc); 428 kmem_cache_free(zfcp_data.adisc_cache, adisc);
427 429
@@ -532,7 +534,8 @@ static int zfcp_fc_send_gpn_ft(struct zfcp_fc_gpn_ft *gpn_ft,
532 ct->req = &gpn_ft->sg_req; 534 ct->req = &gpn_ft->sg_req;
533 ct->resp = gpn_ft->sg_resp; 535 ct->resp = gpn_ft->sg_resp;
534 536
535 ret = zfcp_fsf_send_ct(&adapter->gs->ds, ct, NULL); 537 ret = zfcp_fsf_send_ct(&adapter->gs->ds, ct, NULL,
538 ZFCP_FC_CTELS_TMO);
536 if (!ret) 539 if (!ret)
537 wait_for_completion(&completion); 540 wait_for_completion(&completion);
538 return ret; 541 return ret;
@@ -668,15 +671,52 @@ static void zfcp_fc_ct_els_job_handler(void *data)
668{ 671{
669 struct fc_bsg_job *job = data; 672 struct fc_bsg_job *job = data;
670 struct zfcp_fsf_ct_els *zfcp_ct_els = job->dd_data; 673 struct zfcp_fsf_ct_els *zfcp_ct_els = job->dd_data;
671 int status = zfcp_ct_els->status; 674 struct fc_bsg_reply *jr = job->reply;
672 int reply_status;
673 675
674 reply_status = status ? FC_CTELS_STATUS_REJECT : FC_CTELS_STATUS_OK; 676 jr->reply_payload_rcv_len = job->reply_payload.payload_len;
675 job->reply->reply_data.ctels_reply.status = reply_status; 677 jr->reply_data.ctels_reply.status = FC_CTELS_STATUS_OK;
676 job->reply->reply_payload_rcv_len = job->reply_payload.payload_len; 678 jr->result = zfcp_ct_els->status ? -EIO : 0;
677 job->job_done(job); 679 job->job_done(job);
678} 680}
679 681
682static struct zfcp_fc_wka_port *zfcp_fc_job_wka_port(struct fc_bsg_job *job)
683{
684 u32 preamble_word1;
685 u8 gs_type;
686 struct zfcp_adapter *adapter;
687
688 preamble_word1 = job->request->rqst_data.r_ct.preamble_word1;
689 gs_type = (preamble_word1 & 0xff000000) >> 24;
690
691 adapter = (struct zfcp_adapter *) job->shost->hostdata[0];
692
693 switch (gs_type) {
694 case FC_FST_ALIAS:
695 return &adapter->gs->as;
696 case FC_FST_MGMT:
697 return &adapter->gs->ms;
698 case FC_FST_TIME:
699 return &adapter->gs->ts;
700 break;
701 case FC_FST_DIR:
702 return &adapter->gs->ds;
703 break;
704 default:
705 return NULL;
706 }
707}
708
709static void zfcp_fc_ct_job_handler(void *data)
710{
711 struct fc_bsg_job *job = data;
712 struct zfcp_fc_wka_port *wka_port;
713
714 wka_port = zfcp_fc_job_wka_port(job);
715 zfcp_fc_wka_port_put(wka_port);
716
717 zfcp_fc_ct_els_job_handler(data);
718}
719
680static int zfcp_fc_exec_els_job(struct fc_bsg_job *job, 720static int zfcp_fc_exec_els_job(struct fc_bsg_job *job,
681 struct zfcp_adapter *adapter) 721 struct zfcp_adapter *adapter)
682{ 722{
@@ -695,43 +735,27 @@ static int zfcp_fc_exec_els_job(struct fc_bsg_job *job,
695 } else 735 } else
696 d_id = ntoh24(job->request->rqst_data.h_els.port_id); 736 d_id = ntoh24(job->request->rqst_data.h_els.port_id);
697 737
698 return zfcp_fsf_send_els(adapter, d_id, els); 738 els->handler = zfcp_fc_ct_els_job_handler;
739 return zfcp_fsf_send_els(adapter, d_id, els, job->req->timeout / HZ);
699} 740}
700 741
701static int zfcp_fc_exec_ct_job(struct fc_bsg_job *job, 742static int zfcp_fc_exec_ct_job(struct fc_bsg_job *job,
702 struct zfcp_adapter *adapter) 743 struct zfcp_adapter *adapter)
703{ 744{
704 int ret; 745 int ret;
705 u8 gs_type;
706 struct zfcp_fsf_ct_els *ct = job->dd_data; 746 struct zfcp_fsf_ct_els *ct = job->dd_data;
707 struct zfcp_fc_wka_port *wka_port; 747 struct zfcp_fc_wka_port *wka_port;
708 u32 preamble_word1;
709 748
710 preamble_word1 = job->request->rqst_data.r_ct.preamble_word1; 749 wka_port = zfcp_fc_job_wka_port(job);
711 gs_type = (preamble_word1 & 0xff000000) >> 24; 750 if (!wka_port)
712 751 return -EINVAL;
713 switch (gs_type) {
714 case FC_FST_ALIAS:
715 wka_port = &adapter->gs->as;
716 break;
717 case FC_FST_MGMT:
718 wka_port = &adapter->gs->ms;
719 break;
720 case FC_FST_TIME:
721 wka_port = &adapter->gs->ts;
722 break;
723 case FC_FST_DIR:
724 wka_port = &adapter->gs->ds;
725 break;
726 default:
727 return -EINVAL; /* no such service */
728 }
729 752
730 ret = zfcp_fc_wka_port_get(wka_port); 753 ret = zfcp_fc_wka_port_get(wka_port);
731 if (ret) 754 if (ret)
732 return ret; 755 return ret;
733 756
734 ret = zfcp_fsf_send_ct(wka_port, ct, NULL); 757 ct->handler = zfcp_fc_ct_job_handler;
758 ret = zfcp_fsf_send_ct(wka_port, ct, NULL, job->req->timeout / HZ);
735 if (ret) 759 if (ret)
736 zfcp_fc_wka_port_put(wka_port); 760 zfcp_fc_wka_port_put(wka_port);
737 761
@@ -752,7 +776,6 @@ int zfcp_fc_exec_bsg_job(struct fc_bsg_job *job)
752 776
753 ct_els->req = job->request_payload.sg_list; 777 ct_els->req = job->request_payload.sg_list;
754 ct_els->resp = job->reply_payload.sg_list; 778 ct_els->resp = job->reply_payload.sg_list;
755 ct_els->handler = zfcp_fc_ct_els_job_handler;
756 ct_els->handler_data = job; 779 ct_els->handler_data = job;
757 780
758 switch (job->request->msgcode) { 781 switch (job->request->msgcode) {
@@ -767,6 +790,12 @@ int zfcp_fc_exec_bsg_job(struct fc_bsg_job *job)
767 } 790 }
768} 791}
769 792
793int zfcp_fc_timeout_bsg_job(struct fc_bsg_job *job)
794{
795 /* hardware tracks timeout, reset bsg timeout to not interfere */
796 return -EAGAIN;
797}
798
770int zfcp_fc_gs_setup(struct zfcp_adapter *adapter) 799int zfcp_fc_gs_setup(struct zfcp_adapter *adapter)
771{ 800{
772 struct zfcp_fc_wka_ports *wka_ports; 801 struct zfcp_fc_wka_ports *wka_ports;
diff --git a/drivers/s390/scsi/zfcp_fc.h b/drivers/s390/scsi/zfcp_fc.h
index cb2a3669a384..0747b087390d 100644
--- a/drivers/s390/scsi/zfcp_fc.h
+++ b/drivers/s390/scsi/zfcp_fc.h
@@ -27,6 +27,8 @@
27#define ZFCP_FC_GPN_FT_MAX_ENT (ZFCP_FC_GPN_FT_NUM_BUFS * \ 27#define ZFCP_FC_GPN_FT_MAX_ENT (ZFCP_FC_GPN_FT_NUM_BUFS * \
28 (ZFCP_FC_GPN_FT_ENT_PAGE + 1)) 28 (ZFCP_FC_GPN_FT_ENT_PAGE + 1))
29 29
30#define ZFCP_FC_CTELS_TMO (2 * FC_DEF_R_A_TOV / 1000)
31
30/** 32/**
31 * struct zfcp_fc_gid_pn_req - container for ct header plus gid_pn request 33 * struct zfcp_fc_gid_pn_req - container for ct header plus gid_pn request
32 * @ct_hdr: FC GS common transport header 34 * @ct_hdr: FC GS common transport header
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c
index 482dcd97aa5d..e8fb4d9baa8b 100644
--- a/drivers/s390/scsi/zfcp_fsf.c
+++ b/drivers/s390/scsi/zfcp_fsf.c
@@ -1068,20 +1068,20 @@ static int zfcp_fsf_setup_ct_els_sbals(struct zfcp_fsf_req *req,
1068static int zfcp_fsf_setup_ct_els(struct zfcp_fsf_req *req, 1068static int zfcp_fsf_setup_ct_els(struct zfcp_fsf_req *req,
1069 struct scatterlist *sg_req, 1069 struct scatterlist *sg_req,
1070 struct scatterlist *sg_resp, 1070 struct scatterlist *sg_resp,
1071 int max_sbals) 1071 int max_sbals, unsigned int timeout)
1072{ 1072{
1073 int ret; 1073 int ret;
1074 unsigned int fcp_chan_timeout;
1075 1074
1076 ret = zfcp_fsf_setup_ct_els_sbals(req, sg_req, sg_resp, max_sbals); 1075 ret = zfcp_fsf_setup_ct_els_sbals(req, sg_req, sg_resp, max_sbals);
1077 if (ret) 1076 if (ret)
1078 return ret; 1077 return ret;
1079 1078
1080 /* common settings for ct/gs and els requests */ 1079 /* common settings for ct/gs and els requests */
1081 fcp_chan_timeout = 2 * FC_DEF_R_A_TOV / 1000; 1080 if (timeout > 255)
1081 timeout = 255; /* max value accepted by hardware */
1082 req->qtcb->bottom.support.service_class = FSF_CLASS_3; 1082 req->qtcb->bottom.support.service_class = FSF_CLASS_3;
1083 req->qtcb->bottom.support.timeout = fcp_chan_timeout; 1083 req->qtcb->bottom.support.timeout = timeout;
1084 zfcp_fsf_start_timer(req, (fcp_chan_timeout + 10) * HZ); 1084 zfcp_fsf_start_timer(req, (timeout + 10) * HZ);
1085 1085
1086 return 0; 1086 return 0;
1087} 1087}
@@ -1092,7 +1092,8 @@ static int zfcp_fsf_setup_ct_els(struct zfcp_fsf_req *req,
1092 * @pool: if non-null this mempool is used to allocate struct zfcp_fsf_req 1092 * @pool: if non-null this mempool is used to allocate struct zfcp_fsf_req
1093 */ 1093 */
1094int zfcp_fsf_send_ct(struct zfcp_fc_wka_port *wka_port, 1094int zfcp_fsf_send_ct(struct zfcp_fc_wka_port *wka_port,
1095 struct zfcp_fsf_ct_els *ct, mempool_t *pool) 1095 struct zfcp_fsf_ct_els *ct, mempool_t *pool,
1096 unsigned int timeout)
1096{ 1097{
1097 struct zfcp_qdio *qdio = wka_port->adapter->qdio; 1098 struct zfcp_qdio *qdio = wka_port->adapter->qdio;
1098 struct zfcp_fsf_req *req; 1099 struct zfcp_fsf_req *req;
@@ -1111,7 +1112,7 @@ int zfcp_fsf_send_ct(struct zfcp_fc_wka_port *wka_port,
1111 1112
1112 req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; 1113 req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
1113 ret = zfcp_fsf_setup_ct_els(req, ct->req, ct->resp, 1114 ret = zfcp_fsf_setup_ct_els(req, ct->req, ct->resp,
1114 FSF_MAX_SBALS_PER_REQ); 1115 FSF_MAX_SBALS_PER_REQ, timeout);
1115 if (ret) 1116 if (ret)
1116 goto failed_send; 1117 goto failed_send;
1117 1118
@@ -1188,7 +1189,7 @@ skip_fsfstatus:
1188 * @els: pointer to struct zfcp_send_els with data for the command 1189 * @els: pointer to struct zfcp_send_els with data for the command
1189 */ 1190 */
1190int zfcp_fsf_send_els(struct zfcp_adapter *adapter, u32 d_id, 1191int zfcp_fsf_send_els(struct zfcp_adapter *adapter, u32 d_id,
1191 struct zfcp_fsf_ct_els *els) 1192 struct zfcp_fsf_ct_els *els, unsigned int timeout)
1192{ 1193{
1193 struct zfcp_fsf_req *req; 1194 struct zfcp_fsf_req *req;
1194 struct zfcp_qdio *qdio = adapter->qdio; 1195 struct zfcp_qdio *qdio = adapter->qdio;
@@ -1206,7 +1207,7 @@ int zfcp_fsf_send_els(struct zfcp_adapter *adapter, u32 d_id,
1206 } 1207 }
1207 1208
1208 req->status |= ZFCP_STATUS_FSFREQ_CLEANUP; 1209 req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;
1209 ret = zfcp_fsf_setup_ct_els(req, els->req, els->resp, 2); 1210 ret = zfcp_fsf_setup_ct_els(req, els->req, els->resp, 2, timeout);
1210 1211
1211 if (ret) 1212 if (ret)
1212 goto failed_send; 1213 goto failed_send;
diff --git a/drivers/s390/scsi/zfcp_scsi.c b/drivers/s390/scsi/zfcp_scsi.c
index 771cc536a989..8e6fc68d6bd4 100644
--- a/drivers/s390/scsi/zfcp_scsi.c
+++ b/drivers/s390/scsi/zfcp_scsi.c
@@ -652,6 +652,7 @@ struct fc_function_template zfcp_transport_functions = {
652 .show_host_port_state = 1, 652 .show_host_port_state = 1,
653 .show_host_active_fc4s = 1, 653 .show_host_active_fc4s = 1,
654 .bsg_request = zfcp_fc_exec_bsg_job, 654 .bsg_request = zfcp_fc_exec_bsg_job,
655 .bsg_timeout = zfcp_fc_timeout_bsg_job,
655 /* no functions registered for following dynamic attributes but 656 /* no functions registered for following dynamic attributes but
656 directly set by LLDD */ 657 directly set by LLDD */
657 .show_host_port_type = 1, 658 .show_host_port_type = 1,
diff --git a/drivers/sbus/char/bbc_envctrl.c b/drivers/sbus/char/bbc_envctrl.c
index 7c815d3327f7..28d86f9df83c 100644
--- a/drivers/sbus/char/bbc_envctrl.c
+++ b/drivers/sbus/char/bbc_envctrl.c
@@ -522,6 +522,40 @@ static void attach_one_fan(struct bbc_i2c_bus *bp, struct of_device *op,
522 set_fan_speeds(fp); 522 set_fan_speeds(fp);
523} 523}
524 524
525static void destroy_one_temp(struct bbc_cpu_temperature *tp)
526{
527 bbc_i2c_detach(tp->client);
528 kfree(tp);
529}
530
531static void destroy_all_temps(struct bbc_i2c_bus *bp)
532{
533 struct bbc_cpu_temperature *tp, *tpos;
534
535 list_for_each_entry_safe(tp, tpos, &bp->temps, bp_list) {
536 list_del(&tp->bp_list);
537 list_del(&tp->glob_list);
538 destroy_one_temp(tp);
539 }
540}
541
542static void destroy_one_fan(struct bbc_fan_control *fp)
543{
544 bbc_i2c_detach(fp->client);
545 kfree(fp);
546}
547
548static void destroy_all_fans(struct bbc_i2c_bus *bp)
549{
550 struct bbc_fan_control *fp, *fpos;
551
552 list_for_each_entry_safe(fp, fpos, &bp->fans, bp_list) {
553 list_del(&fp->bp_list);
554 list_del(&fp->glob_list);
555 destroy_one_fan(fp);
556 }
557}
558
525int bbc_envctrl_init(struct bbc_i2c_bus *bp) 559int bbc_envctrl_init(struct bbc_i2c_bus *bp)
526{ 560{
527 struct of_device *op; 561 struct of_device *op;
@@ -541,6 +575,8 @@ int bbc_envctrl_init(struct bbc_i2c_bus *bp)
541 int err = PTR_ERR(kenvctrld_task); 575 int err = PTR_ERR(kenvctrld_task);
542 576
543 kenvctrld_task = NULL; 577 kenvctrld_task = NULL;
578 destroy_all_temps(bp);
579 destroy_all_fans(bp);
544 return err; 580 return err;
545 } 581 }
546 } 582 }
@@ -548,35 +584,11 @@ int bbc_envctrl_init(struct bbc_i2c_bus *bp)
548 return 0; 584 return 0;
549} 585}
550 586
551static void destroy_one_temp(struct bbc_cpu_temperature *tp)
552{
553 bbc_i2c_detach(tp->client);
554 kfree(tp);
555}
556
557static void destroy_one_fan(struct bbc_fan_control *fp)
558{
559 bbc_i2c_detach(fp->client);
560 kfree(fp);
561}
562
563void bbc_envctrl_cleanup(struct bbc_i2c_bus *bp) 587void bbc_envctrl_cleanup(struct bbc_i2c_bus *bp)
564{ 588{
565 struct bbc_cpu_temperature *tp, *tpos;
566 struct bbc_fan_control *fp, *fpos;
567
568 if (kenvctrld_task) 589 if (kenvctrld_task)
569 kthread_stop(kenvctrld_task); 590 kthread_stop(kenvctrld_task);
570 591
571 list_for_each_entry_safe(tp, tpos, &bp->temps, bp_list) { 592 destroy_all_temps(bp);
572 list_del(&tp->bp_list); 593 destroy_all_fans(bp);
573 list_del(&tp->glob_list);
574 destroy_one_temp(tp);
575 }
576
577 list_for_each_entry_safe(fp, fpos, &bp->fans, bp_list) {
578 list_del(&fp->bp_list);
579 list_del(&fp->glob_list);
580 destroy_one_fan(fp);
581 }
582} 594}
diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c
index 2a889853a106..7e26ebc26661 100644
--- a/drivers/scsi/aacraid/aachba.c
+++ b/drivers/scsi/aacraid/aachba.c
@@ -293,7 +293,10 @@ int aac_get_config_status(struct aac_dev *dev, int commit_flag)
293 status = -EINVAL; 293 status = -EINVAL;
294 } 294 }
295 } 295 }
296 aac_fib_complete(fibptr); 296 /* Do not set XferState to zero unless receives a response from F/W */
297 if (status >= 0)
298 aac_fib_complete(fibptr);
299
297 /* Send a CT_COMMIT_CONFIG to enable discovery of devices */ 300 /* Send a CT_COMMIT_CONFIG to enable discovery of devices */
298 if (status >= 0) { 301 if (status >= 0) {
299 if ((aac_commit == 1) || commit_flag) { 302 if ((aac_commit == 1) || commit_flag) {
@@ -310,13 +313,18 @@ int aac_get_config_status(struct aac_dev *dev, int commit_flag)
310 FsaNormal, 313 FsaNormal,
311 1, 1, 314 1, 1,
312 NULL, NULL); 315 NULL, NULL);
313 aac_fib_complete(fibptr); 316 /* Do not set XferState to zero unless
317 * receives a response from F/W */
318 if (status >= 0)
319 aac_fib_complete(fibptr);
314 } else if (aac_commit == 0) { 320 } else if (aac_commit == 0) {
315 printk(KERN_WARNING 321 printk(KERN_WARNING
316 "aac_get_config_status: Foreign device configurations are being ignored\n"); 322 "aac_get_config_status: Foreign device configurations are being ignored\n");
317 } 323 }
318 } 324 }
319 aac_fib_free(fibptr); 325 /* FIB should be freed only after getting the response from the F/W */
326 if (status != -ERESTARTSYS)
327 aac_fib_free(fibptr);
320 return status; 328 return status;
321} 329}
322 330
@@ -355,7 +363,9 @@ int aac_get_containers(struct aac_dev *dev)
355 maximum_num_containers = le32_to_cpu(dresp->ContainerSwitchEntries); 363 maximum_num_containers = le32_to_cpu(dresp->ContainerSwitchEntries);
356 aac_fib_complete(fibptr); 364 aac_fib_complete(fibptr);
357 } 365 }
358 aac_fib_free(fibptr); 366 /* FIB should be freed only after getting the response from the F/W */
367 if (status != -ERESTARTSYS)
368 aac_fib_free(fibptr);
359 369
360 if (maximum_num_containers < MAXIMUM_NUM_CONTAINERS) 370 if (maximum_num_containers < MAXIMUM_NUM_CONTAINERS)
361 maximum_num_containers = MAXIMUM_NUM_CONTAINERS; 371 maximum_num_containers = MAXIMUM_NUM_CONTAINERS;
@@ -1245,8 +1255,12 @@ int aac_get_adapter_info(struct aac_dev* dev)
1245 NULL); 1255 NULL);
1246 1256
1247 if (rcode < 0) { 1257 if (rcode < 0) {
1248 aac_fib_complete(fibptr); 1258 /* FIB should be freed only after
1249 aac_fib_free(fibptr); 1259 * getting the response from the F/W */
1260 if (rcode != -ERESTARTSYS) {
1261 aac_fib_complete(fibptr);
1262 aac_fib_free(fibptr);
1263 }
1250 return rcode; 1264 return rcode;
1251 } 1265 }
1252 memcpy(&dev->adapter_info, info, sizeof(*info)); 1266 memcpy(&dev->adapter_info, info, sizeof(*info));
@@ -1270,6 +1284,12 @@ int aac_get_adapter_info(struct aac_dev* dev)
1270 1284
1271 if (rcode >= 0) 1285 if (rcode >= 0)
1272 memcpy(&dev->supplement_adapter_info, sinfo, sizeof(*sinfo)); 1286 memcpy(&dev->supplement_adapter_info, sinfo, sizeof(*sinfo));
1287 if (rcode == -ERESTARTSYS) {
1288 fibptr = aac_fib_alloc(dev);
1289 if (!fibptr)
1290 return -ENOMEM;
1291 }
1292
1273 } 1293 }
1274 1294
1275 1295
@@ -1470,9 +1490,11 @@ int aac_get_adapter_info(struct aac_dev* dev)
1470 (dev->scsi_host_ptr->sg_tablesize * 8) + 112; 1490 (dev->scsi_host_ptr->sg_tablesize * 8) + 112;
1471 } 1491 }
1472 } 1492 }
1473 1493 /* FIB should be freed only after getting the response from the F/W */
1474 aac_fib_complete(fibptr); 1494 if (rcode != -ERESTARTSYS) {
1475 aac_fib_free(fibptr); 1495 aac_fib_complete(fibptr);
1496 aac_fib_free(fibptr);
1497 }
1476 1498
1477 return rcode; 1499 return rcode;
1478} 1500}
@@ -1633,6 +1655,7 @@ static int aac_read(struct scsi_cmnd * scsicmd)
1633 * Alocate and initialize a Fib 1655 * Alocate and initialize a Fib
1634 */ 1656 */
1635 if (!(cmd_fibcontext = aac_fib_alloc(dev))) { 1657 if (!(cmd_fibcontext = aac_fib_alloc(dev))) {
1658 printk(KERN_WARNING "aac_read: fib allocation failed\n");
1636 return -1; 1659 return -1;
1637 } 1660 }
1638 1661
@@ -1712,9 +1735,14 @@ static int aac_write(struct scsi_cmnd * scsicmd)
1712 * Allocate and initialize a Fib then setup a BlockWrite command 1735 * Allocate and initialize a Fib then setup a BlockWrite command
1713 */ 1736 */
1714 if (!(cmd_fibcontext = aac_fib_alloc(dev))) { 1737 if (!(cmd_fibcontext = aac_fib_alloc(dev))) {
1715 scsicmd->result = DID_ERROR << 16; 1738 /* FIB temporarily unavailable,not catastrophic failure */
1716 scsicmd->scsi_done(scsicmd); 1739
1717 return 0; 1740 /* scsicmd->result = DID_ERROR << 16;
1741 * scsicmd->scsi_done(scsicmd);
1742 * return 0;
1743 */
1744 printk(KERN_WARNING "aac_write: fib allocation failed\n");
1745 return -1;
1718 } 1746 }
1719 1747
1720 status = aac_adapter_write(cmd_fibcontext, scsicmd, lba, count, fua); 1748 status = aac_adapter_write(cmd_fibcontext, scsicmd, lba, count, fua);
diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
index 83986ed86556..619c02d9c862 100644
--- a/drivers/scsi/aacraid/aacraid.h
+++ b/drivers/scsi/aacraid/aacraid.h
@@ -12,7 +12,7 @@
12 *----------------------------------------------------------------------------*/ 12 *----------------------------------------------------------------------------*/
13 13
14#ifndef AAC_DRIVER_BUILD 14#ifndef AAC_DRIVER_BUILD
15# define AAC_DRIVER_BUILD 2461 15# define AAC_DRIVER_BUILD 24702
16# define AAC_DRIVER_BRANCH "-ms" 16# define AAC_DRIVER_BRANCH "-ms"
17#endif 17#endif
18#define MAXIMUM_NUM_CONTAINERS 32 18#define MAXIMUM_NUM_CONTAINERS 32
@@ -1036,6 +1036,9 @@ struct aac_dev
1036 u8 printf_enabled; 1036 u8 printf_enabled;
1037 u8 in_reset; 1037 u8 in_reset;
1038 u8 msi; 1038 u8 msi;
1039 int management_fib_count;
1040 spinlock_t manage_lock;
1041
1039}; 1042};
1040 1043
1041#define aac_adapter_interrupt(dev) \ 1044#define aac_adapter_interrupt(dev) \
diff --git a/drivers/scsi/aacraid/commctrl.c b/drivers/scsi/aacraid/commctrl.c
index 0391d759dfdb..9c0c91178538 100644
--- a/drivers/scsi/aacraid/commctrl.c
+++ b/drivers/scsi/aacraid/commctrl.c
@@ -153,7 +153,7 @@ cleanup:
153 fibptr->hw_fib_pa = hw_fib_pa; 153 fibptr->hw_fib_pa = hw_fib_pa;
154 fibptr->hw_fib_va = hw_fib; 154 fibptr->hw_fib_va = hw_fib;
155 } 155 }
156 if (retval != -EINTR) 156 if (retval != -ERESTARTSYS)
157 aac_fib_free(fibptr); 157 aac_fib_free(fibptr);
158 return retval; 158 return retval;
159} 159}
@@ -322,7 +322,7 @@ return_fib:
322 } 322 }
323 if (f.wait) { 323 if (f.wait) {
324 if(down_interruptible(&fibctx->wait_sem) < 0) { 324 if(down_interruptible(&fibctx->wait_sem) < 0) {
325 status = -EINTR; 325 status = -ERESTARTSYS;
326 } else { 326 } else {
327 /* Lock again and retry */ 327 /* Lock again and retry */
328 spin_lock_irqsave(&dev->fib_lock, flags); 328 spin_lock_irqsave(&dev->fib_lock, flags);
@@ -593,10 +593,10 @@ static int aac_send_raw_srb(struct aac_dev* dev, void __user * arg)
593 u64 addr; 593 u64 addr;
594 void* p; 594 void* p;
595 if (upsg->sg[i].count > 595 if (upsg->sg[i].count >
596 (dev->adapter_info.options & 596 ((dev->adapter_info.options &
597 AAC_OPT_NEW_COMM) ? 597 AAC_OPT_NEW_COMM) ?
598 (dev->scsi_host_ptr->max_sectors << 9) : 598 (dev->scsi_host_ptr->max_sectors << 9) :
599 65536) { 599 65536)) {
600 rcode = -EINVAL; 600 rcode = -EINVAL;
601 goto cleanup; 601 goto cleanup;
602 } 602 }
@@ -645,10 +645,10 @@ static int aac_send_raw_srb(struct aac_dev* dev, void __user * arg)
645 u64 addr; 645 u64 addr;
646 void* p; 646 void* p;
647 if (usg->sg[i].count > 647 if (usg->sg[i].count >
648 (dev->adapter_info.options & 648 ((dev->adapter_info.options &
649 AAC_OPT_NEW_COMM) ? 649 AAC_OPT_NEW_COMM) ?
650 (dev->scsi_host_ptr->max_sectors << 9) : 650 (dev->scsi_host_ptr->max_sectors << 9) :
651 65536) { 651 65536)) {
652 rcode = -EINVAL; 652 rcode = -EINVAL;
653 goto cleanup; 653 goto cleanup;
654 } 654 }
@@ -695,10 +695,10 @@ static int aac_send_raw_srb(struct aac_dev* dev, void __user * arg)
695 uintptr_t addr; 695 uintptr_t addr;
696 void* p; 696 void* p;
697 if (usg->sg[i].count > 697 if (usg->sg[i].count >
698 (dev->adapter_info.options & 698 ((dev->adapter_info.options &
699 AAC_OPT_NEW_COMM) ? 699 AAC_OPT_NEW_COMM) ?
700 (dev->scsi_host_ptr->max_sectors << 9) : 700 (dev->scsi_host_ptr->max_sectors << 9) :
701 65536) { 701 65536)) {
702 rcode = -EINVAL; 702 rcode = -EINVAL;
703 goto cleanup; 703 goto cleanup;
704 } 704 }
@@ -734,10 +734,10 @@ static int aac_send_raw_srb(struct aac_dev* dev, void __user * arg)
734 dma_addr_t addr; 734 dma_addr_t addr;
735 void* p; 735 void* p;
736 if (upsg->sg[i].count > 736 if (upsg->sg[i].count >
737 (dev->adapter_info.options & 737 ((dev->adapter_info.options &
738 AAC_OPT_NEW_COMM) ? 738 AAC_OPT_NEW_COMM) ?
739 (dev->scsi_host_ptr->max_sectors << 9) : 739 (dev->scsi_host_ptr->max_sectors << 9) :
740 65536) { 740 65536)) {
741 rcode = -EINVAL; 741 rcode = -EINVAL;
742 goto cleanup; 742 goto cleanup;
743 } 743 }
@@ -772,8 +772,8 @@ static int aac_send_raw_srb(struct aac_dev* dev, void __user * arg)
772 psg->count = cpu_to_le32(sg_indx+1); 772 psg->count = cpu_to_le32(sg_indx+1);
773 status = aac_fib_send(ScsiPortCommand, srbfib, actual_fibsize, FsaNormal, 1, 1, NULL, NULL); 773 status = aac_fib_send(ScsiPortCommand, srbfib, actual_fibsize, FsaNormal, 1, 1, NULL, NULL);
774 } 774 }
775 if (status == -EINTR) { 775 if (status == -ERESTARTSYS) {
776 rcode = -EINTR; 776 rcode = -ERESTARTSYS;
777 goto cleanup; 777 goto cleanup;
778 } 778 }
779 779
@@ -810,7 +810,7 @@ cleanup:
810 for(i=0; i <= sg_indx; i++){ 810 for(i=0; i <= sg_indx; i++){
811 kfree(sg_list[i]); 811 kfree(sg_list[i]);
812 } 812 }
813 if (rcode != -EINTR) { 813 if (rcode != -ERESTARTSYS) {
814 aac_fib_complete(srbfib); 814 aac_fib_complete(srbfib);
815 aac_fib_free(srbfib); 815 aac_fib_free(srbfib);
816 } 816 }
@@ -848,7 +848,7 @@ int aac_do_ioctl(struct aac_dev * dev, int cmd, void __user *arg)
848 */ 848 */
849 849
850 status = aac_dev_ioctl(dev, cmd, arg); 850 status = aac_dev_ioctl(dev, cmd, arg);
851 if(status != -ENOTTY) 851 if (status != -ENOTTY)
852 return status; 852 return status;
853 853
854 switch (cmd) { 854 switch (cmd) {
diff --git a/drivers/scsi/aacraid/comminit.c b/drivers/scsi/aacraid/comminit.c
index 666d5151d628..a7261486ccd4 100644
--- a/drivers/scsi/aacraid/comminit.c
+++ b/drivers/scsi/aacraid/comminit.c
@@ -194,7 +194,9 @@ int aac_send_shutdown(struct aac_dev * dev)
194 194
195 if (status >= 0) 195 if (status >= 0)
196 aac_fib_complete(fibctx); 196 aac_fib_complete(fibctx);
197 aac_fib_free(fibctx); 197 /* FIB should be freed only after getting the response from the F/W */
198 if (status != -ERESTARTSYS)
199 aac_fib_free(fibctx);
198 return status; 200 return status;
199} 201}
200 202
@@ -304,6 +306,8 @@ struct aac_dev *aac_init_adapter(struct aac_dev *dev)
304 /* 306 /*
305 * Check the preferred comm settings, defaults from template. 307 * Check the preferred comm settings, defaults from template.
306 */ 308 */
309 dev->management_fib_count = 0;
310 spin_lock_init(&dev->manage_lock);
307 dev->max_fib_size = sizeof(struct hw_fib); 311 dev->max_fib_size = sizeof(struct hw_fib);
308 dev->sg_tablesize = host->sg_tablesize = (dev->max_fib_size 312 dev->sg_tablesize = host->sg_tablesize = (dev->max_fib_size
309 - sizeof(struct aac_fibhdr) 313 - sizeof(struct aac_fibhdr)
diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c
index 956261f25181..94d2954d79ae 100644
--- a/drivers/scsi/aacraid/commsup.c
+++ b/drivers/scsi/aacraid/commsup.c
@@ -189,7 +189,14 @@ struct fib *aac_fib_alloc(struct aac_dev *dev)
189 189
190void aac_fib_free(struct fib *fibptr) 190void aac_fib_free(struct fib *fibptr)
191{ 191{
192 unsigned long flags; 192 unsigned long flags, flagsv;
193
194 spin_lock_irqsave(&fibptr->event_lock, flagsv);
195 if (fibptr->done == 2) {
196 spin_unlock_irqrestore(&fibptr->event_lock, flagsv);
197 return;
198 }
199 spin_unlock_irqrestore(&fibptr->event_lock, flagsv);
193 200
194 spin_lock_irqsave(&fibptr->dev->fib_lock, flags); 201 spin_lock_irqsave(&fibptr->dev->fib_lock, flags);
195 if (unlikely(fibptr->flags & FIB_CONTEXT_FLAG_TIMED_OUT)) 202 if (unlikely(fibptr->flags & FIB_CONTEXT_FLAG_TIMED_OUT))
@@ -390,6 +397,8 @@ int aac_fib_send(u16 command, struct fib *fibptr, unsigned long size,
390 struct hw_fib * hw_fib = fibptr->hw_fib_va; 397 struct hw_fib * hw_fib = fibptr->hw_fib_va;
391 unsigned long flags = 0; 398 unsigned long flags = 0;
392 unsigned long qflags; 399 unsigned long qflags;
400 unsigned long mflags = 0;
401
393 402
394 if (!(hw_fib->header.XferState & cpu_to_le32(HostOwned))) 403 if (!(hw_fib->header.XferState & cpu_to_le32(HostOwned)))
395 return -EBUSY; 404 return -EBUSY;
@@ -471,9 +480,31 @@ int aac_fib_send(u16 command, struct fib *fibptr, unsigned long size,
471 if (!dev->queues) 480 if (!dev->queues)
472 return -EBUSY; 481 return -EBUSY;
473 482
474 if(wait) 483 if (wait) {
484
485 spin_lock_irqsave(&dev->manage_lock, mflags);
486 if (dev->management_fib_count >= AAC_NUM_MGT_FIB) {
487 printk(KERN_INFO "No management Fibs Available:%d\n",
488 dev->management_fib_count);
489 spin_unlock_irqrestore(&dev->manage_lock, mflags);
490 return -EBUSY;
491 }
492 dev->management_fib_count++;
493 spin_unlock_irqrestore(&dev->manage_lock, mflags);
475 spin_lock_irqsave(&fibptr->event_lock, flags); 494 spin_lock_irqsave(&fibptr->event_lock, flags);
476 aac_adapter_deliver(fibptr); 495 }
496
497 if (aac_adapter_deliver(fibptr) != 0) {
498 printk(KERN_ERR "aac_fib_send: returned -EBUSY\n");
499 if (wait) {
500 spin_unlock_irqrestore(&fibptr->event_lock, flags);
501 spin_lock_irqsave(&dev->manage_lock, mflags);
502 dev->management_fib_count--;
503 spin_unlock_irqrestore(&dev->manage_lock, mflags);
504 }
505 return -EBUSY;
506 }
507
477 508
478 /* 509 /*
479 * If the caller wanted us to wait for response wait now. 510 * If the caller wanted us to wait for response wait now.
@@ -516,14 +547,15 @@ int aac_fib_send(u16 command, struct fib *fibptr, unsigned long size,
516 udelay(5); 547 udelay(5);
517 } 548 }
518 } else if (down_interruptible(&fibptr->event_wait)) { 549 } else if (down_interruptible(&fibptr->event_wait)) {
519 fibptr->done = 2; 550 /* Do nothing ... satisfy
520 up(&fibptr->event_wait); 551 * down_interruptible must_check */
521 } 552 }
553
522 spin_lock_irqsave(&fibptr->event_lock, flags); 554 spin_lock_irqsave(&fibptr->event_lock, flags);
523 if ((fibptr->done == 0) || (fibptr->done == 2)) { 555 if (fibptr->done == 0) {
524 fibptr->done = 2; /* Tell interrupt we aborted */ 556 fibptr->done = 2; /* Tell interrupt we aborted */
525 spin_unlock_irqrestore(&fibptr->event_lock, flags); 557 spin_unlock_irqrestore(&fibptr->event_lock, flags);
526 return -EINTR; 558 return -ERESTARTSYS;
527 } 559 }
528 spin_unlock_irqrestore(&fibptr->event_lock, flags); 560 spin_unlock_irqrestore(&fibptr->event_lock, flags);
529 BUG_ON(fibptr->done == 0); 561 BUG_ON(fibptr->done == 0);
@@ -689,6 +721,7 @@ int aac_fib_adapter_complete(struct fib *fibptr, unsigned short size)
689 721
690int aac_fib_complete(struct fib *fibptr) 722int aac_fib_complete(struct fib *fibptr)
691{ 723{
724 unsigned long flags;
692 struct hw_fib * hw_fib = fibptr->hw_fib_va; 725 struct hw_fib * hw_fib = fibptr->hw_fib_va;
693 726
694 /* 727 /*
@@ -709,6 +742,13 @@ int aac_fib_complete(struct fib *fibptr)
709 * command is complete that we had sent to the adapter and this 742 * command is complete that we had sent to the adapter and this
710 * cdb could be reused. 743 * cdb could be reused.
711 */ 744 */
745 spin_lock_irqsave(&fibptr->event_lock, flags);
746 if (fibptr->done == 2) {
747 spin_unlock_irqrestore(&fibptr->event_lock, flags);
748 return 0;
749 }
750 spin_unlock_irqrestore(&fibptr->event_lock, flags);
751
712 if((hw_fib->header.XferState & cpu_to_le32(SentFromHost)) && 752 if((hw_fib->header.XferState & cpu_to_le32(SentFromHost)) &&
713 (hw_fib->header.XferState & cpu_to_le32(AdapterProcessed))) 753 (hw_fib->header.XferState & cpu_to_le32(AdapterProcessed)))
714 { 754 {
@@ -1355,7 +1395,10 @@ int aac_reset_adapter(struct aac_dev * aac, int forced)
1355 1395
1356 if (status >= 0) 1396 if (status >= 0)
1357 aac_fib_complete(fibctx); 1397 aac_fib_complete(fibctx);
1358 aac_fib_free(fibctx); 1398 /* FIB should be freed only after getting
1399 * the response from the F/W */
1400 if (status != -ERESTARTSYS)
1401 aac_fib_free(fibctx);
1359 } 1402 }
1360 } 1403 }
1361 1404
@@ -1759,6 +1802,7 @@ int aac_command_thread(void *data)
1759 struct fib *fibptr; 1802 struct fib *fibptr;
1760 1803
1761 if ((fibptr = aac_fib_alloc(dev))) { 1804 if ((fibptr = aac_fib_alloc(dev))) {
1805 int status;
1762 __le32 *info; 1806 __le32 *info;
1763 1807
1764 aac_fib_init(fibptr); 1808 aac_fib_init(fibptr);
@@ -1769,15 +1813,21 @@ int aac_command_thread(void *data)
1769 1813
1770 *info = cpu_to_le32(now.tv_sec); 1814 *info = cpu_to_le32(now.tv_sec);
1771 1815
1772 (void)aac_fib_send(SendHostTime, 1816 status = aac_fib_send(SendHostTime,
1773 fibptr, 1817 fibptr,
1774 sizeof(*info), 1818 sizeof(*info),
1775 FsaNormal, 1819 FsaNormal,
1776 1, 1, 1820 1, 1,
1777 NULL, 1821 NULL,
1778 NULL); 1822 NULL);
1779 aac_fib_complete(fibptr); 1823 /* Do not set XferState to zero unless
1780 aac_fib_free(fibptr); 1824 * receives a response from F/W */
1825 if (status >= 0)
1826 aac_fib_complete(fibptr);
1827 /* FIB should be freed only after
1828 * getting the response from the F/W */
1829 if (status != -ERESTARTSYS)
1830 aac_fib_free(fibptr);
1781 } 1831 }
1782 difference = (long)(unsigned)update_interval*HZ; 1832 difference = (long)(unsigned)update_interval*HZ;
1783 } else { 1833 } else {
diff --git a/drivers/scsi/aacraid/dpcsup.c b/drivers/scsi/aacraid/dpcsup.c
index abc9ef5d1b10..9c7408fe8c7d 100644
--- a/drivers/scsi/aacraid/dpcsup.c
+++ b/drivers/scsi/aacraid/dpcsup.c
@@ -57,9 +57,9 @@ unsigned int aac_response_normal(struct aac_queue * q)
57 struct hw_fib * hwfib; 57 struct hw_fib * hwfib;
58 struct fib * fib; 58 struct fib * fib;
59 int consumed = 0; 59 int consumed = 0;
60 unsigned long flags; 60 unsigned long flags, mflags;
61 61
62 spin_lock_irqsave(q->lock, flags); 62 spin_lock_irqsave(q->lock, flags);
63 /* 63 /*
64 * Keep pulling response QEs off the response queue and waking 64 * Keep pulling response QEs off the response queue and waking
65 * up the waiters until there are no more QEs. We then return 65 * up the waiters until there are no more QEs. We then return
@@ -125,12 +125,21 @@ unsigned int aac_response_normal(struct aac_queue * q)
125 } else { 125 } else {
126 unsigned long flagv; 126 unsigned long flagv;
127 spin_lock_irqsave(&fib->event_lock, flagv); 127 spin_lock_irqsave(&fib->event_lock, flagv);
128 if (!fib->done) 128 if (!fib->done) {
129 fib->done = 1; 129 fib->done = 1;
130 up(&fib->event_wait); 130 up(&fib->event_wait);
131 }
131 spin_unlock_irqrestore(&fib->event_lock, flagv); 132 spin_unlock_irqrestore(&fib->event_lock, flagv);
133
134 spin_lock_irqsave(&dev->manage_lock, mflags);
135 dev->management_fib_count--;
136 spin_unlock_irqrestore(&dev->manage_lock, mflags);
137
132 FIB_COUNTER_INCREMENT(aac_config.NormalRecved); 138 FIB_COUNTER_INCREMENT(aac_config.NormalRecved);
133 if (fib->done == 2) { 139 if (fib->done == 2) {
140 spin_lock_irqsave(&fib->event_lock, flagv);
141 fib->done = 0;
142 spin_unlock_irqrestore(&fib->event_lock, flagv);
134 aac_fib_complete(fib); 143 aac_fib_complete(fib);
135 aac_fib_free(fib); 144 aac_fib_free(fib);
136 } 145 }
@@ -232,6 +241,7 @@ unsigned int aac_command_normal(struct aac_queue *q)
232 241
233unsigned int aac_intr_normal(struct aac_dev * dev, u32 index) 242unsigned int aac_intr_normal(struct aac_dev * dev, u32 index)
234{ 243{
244 unsigned long mflags;
235 dprintk((KERN_INFO "aac_intr_normal(%p,%x)\n", dev, index)); 245 dprintk((KERN_INFO "aac_intr_normal(%p,%x)\n", dev, index));
236 if ((index & 0x00000002L)) { 246 if ((index & 0x00000002L)) {
237 struct hw_fib * hw_fib; 247 struct hw_fib * hw_fib;
@@ -320,11 +330,25 @@ unsigned int aac_intr_normal(struct aac_dev * dev, u32 index)
320 unsigned long flagv; 330 unsigned long flagv;
321 dprintk((KERN_INFO "event_wait up\n")); 331 dprintk((KERN_INFO "event_wait up\n"));
322 spin_lock_irqsave(&fib->event_lock, flagv); 332 spin_lock_irqsave(&fib->event_lock, flagv);
323 if (!fib->done) 333 if (!fib->done) {
324 fib->done = 1; 334 fib->done = 1;
325 up(&fib->event_wait); 335 up(&fib->event_wait);
336 }
326 spin_unlock_irqrestore(&fib->event_lock, flagv); 337 spin_unlock_irqrestore(&fib->event_lock, flagv);
338
339 spin_lock_irqsave(&dev->manage_lock, mflags);
340 dev->management_fib_count--;
341 spin_unlock_irqrestore(&dev->manage_lock, mflags);
342
327 FIB_COUNTER_INCREMENT(aac_config.NormalRecved); 343 FIB_COUNTER_INCREMENT(aac_config.NormalRecved);
344 if (fib->done == 2) {
345 spin_lock_irqsave(&fib->event_lock, flagv);
346 fib->done = 0;
347 spin_unlock_irqrestore(&fib->event_lock, flagv);
348 aac_fib_complete(fib);
349 aac_fib_free(fib);
350 }
351
328 } 352 }
329 return 0; 353 return 0;
330 } 354 }
diff --git a/drivers/scsi/aic7xxx/aic79xx_core.c b/drivers/scsi/aic7xxx/aic79xx_core.c
index 4d419c155ce9..78971db5b60e 100644
--- a/drivers/scsi/aic7xxx/aic79xx_core.c
+++ b/drivers/scsi/aic7xxx/aic79xx_core.c
@@ -3171,13 +3171,16 @@ ahd_handle_nonpkt_busfree(struct ahd_softc *ahd)
3171 tinfo->curr.transport_version = 2; 3171 tinfo->curr.transport_version = 2;
3172 tinfo->goal.transport_version = 2; 3172 tinfo->goal.transport_version = 2;
3173 tinfo->goal.ppr_options = 0; 3173 tinfo->goal.ppr_options = 0;
3174 /* 3174 if (scb != NULL) {
3175 * Remove any SCBs in the waiting for selection 3175 /*
3176 * queue that may also be for this target so 3176 * Remove any SCBs in the waiting
3177 * that command ordering is preserved. 3177 * for selection queue that may
3178 */ 3178 * also be for this target so that
3179 ahd_freeze_devq(ahd, scb); 3179 * command ordering is preserved.
3180 ahd_qinfifo_requeue_tail(ahd, scb); 3180 */
3181 ahd_freeze_devq(ahd, scb);
3182 ahd_qinfifo_requeue_tail(ahd, scb);
3183 }
3181 printerror = 0; 3184 printerror = 0;
3182 } 3185 }
3183 } else if (ahd_sent_msg(ahd, AHDMSG_EXT, MSG_EXT_WDTR, FALSE) 3186 } else if (ahd_sent_msg(ahd, AHDMSG_EXT, MSG_EXT_WDTR, FALSE)
@@ -3194,13 +3197,16 @@ ahd_handle_nonpkt_busfree(struct ahd_softc *ahd)
3194 MSG_EXT_WDTR_BUS_8_BIT, 3197 MSG_EXT_WDTR_BUS_8_BIT,
3195 AHD_TRANS_CUR|AHD_TRANS_GOAL, 3198 AHD_TRANS_CUR|AHD_TRANS_GOAL,
3196 /*paused*/TRUE); 3199 /*paused*/TRUE);
3197 /* 3200 if (scb != NULL) {
3198 * Remove any SCBs in the waiting for selection 3201 /*
3199 * queue that may also be for this target so that 3202 * Remove any SCBs in the waiting for
3200 * command ordering is preserved. 3203 * selection queue that may also be for
3201 */ 3204 * this target so that command ordering
3202 ahd_freeze_devq(ahd, scb); 3205 * is preserved.
3203 ahd_qinfifo_requeue_tail(ahd, scb); 3206 */
3207 ahd_freeze_devq(ahd, scb);
3208 ahd_qinfifo_requeue_tail(ahd, scb);
3209 }
3204 printerror = 0; 3210 printerror = 0;
3205 } else if (ahd_sent_msg(ahd, AHDMSG_EXT, MSG_EXT_SDTR, FALSE) 3211 } else if (ahd_sent_msg(ahd, AHDMSG_EXT, MSG_EXT_SDTR, FALSE)
3206 && ppr_busfree == 0) { 3212 && ppr_busfree == 0) {
@@ -3217,13 +3223,16 @@ ahd_handle_nonpkt_busfree(struct ahd_softc *ahd)
3217 /*ppr_options*/0, 3223 /*ppr_options*/0,
3218 AHD_TRANS_CUR|AHD_TRANS_GOAL, 3224 AHD_TRANS_CUR|AHD_TRANS_GOAL,
3219 /*paused*/TRUE); 3225 /*paused*/TRUE);
3220 /* 3226 if (scb != NULL) {
3221 * Remove any SCBs in the waiting for selection 3227 /*
3222 * queue that may also be for this target so that 3228 * Remove any SCBs in the waiting for
3223 * command ordering is preserved. 3229 * selection queue that may also be for
3224 */ 3230 * this target so that command ordering
3225 ahd_freeze_devq(ahd, scb); 3231 * is preserved.
3226 ahd_qinfifo_requeue_tail(ahd, scb); 3232 */
3233 ahd_freeze_devq(ahd, scb);
3234 ahd_qinfifo_requeue_tail(ahd, scb);
3235 }
3227 printerror = 0; 3236 printerror = 0;
3228 } else if ((ahd->msg_flags & MSG_FLAG_EXPECT_IDE_BUSFREE) != 0 3237 } else if ((ahd->msg_flags & MSG_FLAG_EXPECT_IDE_BUSFREE) != 0
3229 && ahd_sent_msg(ahd, AHDMSG_1B, 3238 && ahd_sent_msg(ahd, AHDMSG_1B,
@@ -3251,7 +3260,7 @@ ahd_handle_nonpkt_busfree(struct ahd_softc *ahd)
3251 * the message phases. We check it last in case we 3260 * the message phases. We check it last in case we
3252 * had to send some other message that caused a busfree. 3261 * had to send some other message that caused a busfree.
3253 */ 3262 */
3254 if (printerror != 0 3263 if (scb != NULL && printerror != 0
3255 && (lastphase == P_MESGIN || lastphase == P_MESGOUT) 3264 && (lastphase == P_MESGIN || lastphase == P_MESGOUT)
3256 && ((ahd->msg_flags & MSG_FLAG_EXPECT_PPR_BUSFREE) != 0)) { 3265 && ((ahd->msg_flags & MSG_FLAG_EXPECT_PPR_BUSFREE) != 0)) {
3257 3266
diff --git a/drivers/scsi/arm/fas216.c b/drivers/scsi/arm/fas216.c
index 477542602284..9e71ac611146 100644
--- a/drivers/scsi/arm/fas216.c
+++ b/drivers/scsi/arm/fas216.c
@@ -2516,7 +2516,7 @@ int fas216_eh_device_reset(struct scsi_cmnd *SCpnt)
2516 if (info->scsi.phase == PHASE_IDLE) 2516 if (info->scsi.phase == PHASE_IDLE)
2517 fas216_kick(info); 2517 fas216_kick(info);
2518 2518
2519 mod_timer(&info->eh_timer, 30 * HZ); 2519 mod_timer(&info->eh_timer, jiffies + 30 * HZ);
2520 spin_unlock_irqrestore(&info->host_lock, flags); 2520 spin_unlock_irqrestore(&info->host_lock, flags);
2521 2521
2522 /* 2522 /*
diff --git a/drivers/scsi/cxgb3i/cxgb3i_offload.c b/drivers/scsi/cxgb3i/cxgb3i_offload.c
index 26ffdcd5a437..15a00e8b7122 100644
--- a/drivers/scsi/cxgb3i/cxgb3i_offload.c
+++ b/drivers/scsi/cxgb3i/cxgb3i_offload.c
@@ -1440,6 +1440,10 @@ void cxgb3i_c3cn_release(struct s3_conn *c3cn)
1440static int is_cxgb3_dev(struct net_device *dev) 1440static int is_cxgb3_dev(struct net_device *dev)
1441{ 1441{
1442 struct cxgb3i_sdev_data *cdata; 1442 struct cxgb3i_sdev_data *cdata;
1443 struct net_device *ndev = dev;
1444
1445 if (dev->priv_flags & IFF_802_1Q_VLAN)
1446 ndev = vlan_dev_real_dev(dev);
1443 1447
1444 write_lock(&cdata_rwlock); 1448 write_lock(&cdata_rwlock);
1445 list_for_each_entry(cdata, &cdata_list, list) { 1449 list_for_each_entry(cdata, &cdata_list, list) {
@@ -1447,7 +1451,7 @@ static int is_cxgb3_dev(struct net_device *dev)
1447 int i; 1451 int i;
1448 1452
1449 for (i = 0; i < ports->nports; i++) 1453 for (i = 0; i < ports->nports; i++)
1450 if (dev == ports->lldevs[i]) { 1454 if (ndev == ports->lldevs[i]) {
1451 write_unlock(&cdata_rwlock); 1455 write_unlock(&cdata_rwlock);
1452 return 1; 1456 return 1;
1453 } 1457 }
@@ -1566,6 +1570,26 @@ out_err:
1566 return -EINVAL; 1570 return -EINVAL;
1567} 1571}
1568 1572
1573/**
1574 * cxgb3i_find_dev - find the interface associated with the given address
1575 * @ipaddr: ip address
1576 */
1577static struct net_device *
1578cxgb3i_find_dev(struct net_device *dev, __be32 ipaddr)
1579{
1580 struct flowi fl;
1581 int err;
1582 struct rtable *rt;
1583
1584 memset(&fl, 0, sizeof(fl));
1585 fl.nl_u.ip4_u.daddr = ipaddr;
1586
1587 err = ip_route_output_key(dev ? dev_net(dev) : &init_net, &rt, &fl);
1588 if (!err)
1589 return (&rt->u.dst)->dev;
1590
1591 return NULL;
1592}
1569 1593
1570/** 1594/**
1571 * cxgb3i_c3cn_connect - initiates an iscsi tcp connection to a given address 1595 * cxgb3i_c3cn_connect - initiates an iscsi tcp connection to a given address
@@ -1581,6 +1605,7 @@ int cxgb3i_c3cn_connect(struct net_device *dev, struct s3_conn *c3cn,
1581 struct cxgb3i_sdev_data *cdata; 1605 struct cxgb3i_sdev_data *cdata;
1582 struct t3cdev *cdev; 1606 struct t3cdev *cdev;
1583 __be32 sipv4; 1607 __be32 sipv4;
1608 struct net_device *dstdev;
1584 int err; 1609 int err;
1585 1610
1586 c3cn_conn_debug("c3cn 0x%p, dev 0x%p.\n", c3cn, dev); 1611 c3cn_conn_debug("c3cn 0x%p, dev 0x%p.\n", c3cn, dev);
@@ -1591,6 +1616,13 @@ int cxgb3i_c3cn_connect(struct net_device *dev, struct s3_conn *c3cn,
1591 c3cn->daddr.sin_port = usin->sin_port; 1616 c3cn->daddr.sin_port = usin->sin_port;
1592 c3cn->daddr.sin_addr.s_addr = usin->sin_addr.s_addr; 1617 c3cn->daddr.sin_addr.s_addr = usin->sin_addr.s_addr;
1593 1618
1619 dstdev = cxgb3i_find_dev(dev, usin->sin_addr.s_addr);
1620 if (!dstdev || !is_cxgb3_dev(dstdev))
1621 return -ENETUNREACH;
1622
1623 if (dstdev->priv_flags & IFF_802_1Q_VLAN)
1624 dev = dstdev;
1625
1594 rt = find_route(dev, c3cn->saddr.sin_addr.s_addr, 1626 rt = find_route(dev, c3cn->saddr.sin_addr.s_addr,
1595 c3cn->daddr.sin_addr.s_addr, 1627 c3cn->daddr.sin_addr.s_addr,
1596 c3cn->saddr.sin_port, 1628 c3cn->saddr.sin_port,
diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c
index 10be9f36a4cc..2f47ae7cce91 100644
--- a/drivers/scsi/fcoe/fcoe.c
+++ b/drivers/scsi/fcoe/fcoe.c
@@ -2009,6 +2009,8 @@ static int fcoe_destroy(const char *buffer, struct kernel_param *kp)
2009 fcoe_interface_cleanup(fcoe); 2009 fcoe_interface_cleanup(fcoe);
2010 rtnl_unlock(); 2010 rtnl_unlock();
2011 fcoe_if_destroy(fcoe->ctlr.lp); 2011 fcoe_if_destroy(fcoe->ctlr.lp);
2012 module_put(THIS_MODULE);
2013
2012out_putdev: 2014out_putdev:
2013 dev_put(netdev); 2015 dev_put(netdev);
2014out_nodev: 2016out_nodev:
@@ -2059,6 +2061,11 @@ static int fcoe_create(const char *buffer, struct kernel_param *kp)
2059 } 2061 }
2060#endif 2062#endif
2061 2063
2064 if (!try_module_get(THIS_MODULE)) {
2065 rc = -EINVAL;
2066 goto out_nomod;
2067 }
2068
2062 rtnl_lock(); 2069 rtnl_lock();
2063 netdev = fcoe_if_to_netdev(buffer); 2070 netdev = fcoe_if_to_netdev(buffer);
2064 if (!netdev) { 2071 if (!netdev) {
@@ -2099,17 +2106,24 @@ static int fcoe_create(const char *buffer, struct kernel_param *kp)
2099 if (!fcoe_link_ok(lport)) 2106 if (!fcoe_link_ok(lport))
2100 fcoe_ctlr_link_up(&fcoe->ctlr); 2107 fcoe_ctlr_link_up(&fcoe->ctlr);
2101 2108
2102 rc = 0;
2103out_free:
2104 /* 2109 /*
2105 * Release from init in fcoe_interface_create(), on success lport 2110 * Release from init in fcoe_interface_create(), on success lport
2106 * should be holding a reference taken in fcoe_if_create(). 2111 * should be holding a reference taken in fcoe_if_create().
2107 */ 2112 */
2108 fcoe_interface_put(fcoe); 2113 fcoe_interface_put(fcoe);
2114 dev_put(netdev);
2115 rtnl_unlock();
2116 mutex_unlock(&fcoe_config_mutex);
2117
2118 return 0;
2119out_free:
2120 fcoe_interface_put(fcoe);
2109out_putdev: 2121out_putdev:
2110 dev_put(netdev); 2122 dev_put(netdev);
2111out_nodev: 2123out_nodev:
2112 rtnl_unlock(); 2124 rtnl_unlock();
2125 module_put(THIS_MODULE);
2126out_nomod:
2113 mutex_unlock(&fcoe_config_mutex); 2127 mutex_unlock(&fcoe_config_mutex);
2114 return rc; 2128 return rc;
2115} 2129}
diff --git a/drivers/scsi/fcoe/libfcoe.c b/drivers/scsi/fcoe/libfcoe.c
index 9823291395ad..511cb6b371ee 100644
--- a/drivers/scsi/fcoe/libfcoe.c
+++ b/drivers/scsi/fcoe/libfcoe.c
@@ -1187,7 +1187,7 @@ static void fcoe_ctlr_timeout(unsigned long arg)
1187 next_timer = fip->ctlr_ka_time; 1187 next_timer = fip->ctlr_ka_time;
1188 1188
1189 if (time_after_eq(jiffies, fip->port_ka_time)) { 1189 if (time_after_eq(jiffies, fip->port_ka_time)) {
1190 fip->port_ka_time += jiffies + 1190 fip->port_ka_time = jiffies +
1191 msecs_to_jiffies(FIP_VN_KA_PERIOD); 1191 msecs_to_jiffies(FIP_VN_KA_PERIOD);
1192 fip->send_port_ka = 1; 1192 fip->send_port_ka = 1;
1193 } 1193 }
diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c
index 19d711cb938c..7f4364770e4a 100644
--- a/drivers/scsi/libfc/fc_exch.c
+++ b/drivers/scsi/libfc/fc_exch.c
@@ -1890,7 +1890,7 @@ static struct fc_seq *fc_exch_seq_send(struct fc_lport *lport,
1890 fc_exch_setup_hdr(ep, fp, ep->f_ctl); 1890 fc_exch_setup_hdr(ep, fp, ep->f_ctl);
1891 sp->cnt++; 1891 sp->cnt++;
1892 1892
1893 if (ep->xid <= lport->lro_xid) 1893 if (ep->xid <= lport->lro_xid && fh->fh_r_ctl == FC_RCTL_DD_UNSOL_CMD)
1894 fc_fcp_ddp_setup(fr_fsp(fp), ep->xid); 1894 fc_fcp_ddp_setup(fr_fsp(fp), ep->xid);
1895 1895
1896 if (unlikely(lport->tt.frame_send(lport, fp))) 1896 if (unlikely(lport->tt.frame_send(lport, fp)))
diff --git a/drivers/scsi/libfc/fc_fcp.c b/drivers/scsi/libfc/fc_fcp.c
index 881d5dfe8c74..6fde2fabfd9b 100644
--- a/drivers/scsi/libfc/fc_fcp.c
+++ b/drivers/scsi/libfc/fc_fcp.c
@@ -298,9 +298,6 @@ void fc_fcp_ddp_setup(struct fc_fcp_pkt *fsp, u16 xid)
298{ 298{
299 struct fc_lport *lport; 299 struct fc_lport *lport;
300 300
301 if (!fsp)
302 return;
303
304 lport = fsp->lp; 301 lport = fsp->lp;
305 if ((fsp->req_flags & FC_SRB_READ) && 302 if ((fsp->req_flags & FC_SRB_READ) &&
306 (lport->lro_enabled) && (lport->tt.ddp_setup)) { 303 (lport->lro_enabled) && (lport->tt.ddp_setup)) {
diff --git a/drivers/scsi/libfc/fc_lport.c b/drivers/scsi/libfc/fc_lport.c
index 0b165024a219..7ec8ce75007c 100644
--- a/drivers/scsi/libfc/fc_lport.c
+++ b/drivers/scsi/libfc/fc_lport.c
@@ -1800,7 +1800,8 @@ int fc_lport_bsg_request(struct fc_bsg_job *job)
1800 u32 did; 1800 u32 did;
1801 1801
1802 job->reply->reply_payload_rcv_len = 0; 1802 job->reply->reply_payload_rcv_len = 0;
1803 rsp->resid_len = job->reply_payload.payload_len; 1803 if (rsp)
1804 rsp->resid_len = job->reply_payload.payload_len;
1804 1805
1805 mutex_lock(&lport->lp_mutex); 1806 mutex_lock(&lport->lp_mutex);
1806 1807
diff --git a/drivers/scsi/libfc/fc_rport.c b/drivers/scsi/libfc/fc_rport.c
index 02300523b234..97923bb07765 100644
--- a/drivers/scsi/libfc/fc_rport.c
+++ b/drivers/scsi/libfc/fc_rport.c
@@ -623,7 +623,7 @@ static void fc_rport_plogi_resp(struct fc_seq *sp, struct fc_frame *fp,
623 623
624 tov = ntohl(plp->fl_csp.sp_e_d_tov); 624 tov = ntohl(plp->fl_csp.sp_e_d_tov);
625 if (ntohs(plp->fl_csp.sp_features) & FC_SP_FT_EDTR) 625 if (ntohs(plp->fl_csp.sp_features) & FC_SP_FT_EDTR)
626 tov /= 1000; 626 tov /= 1000000;
627 if (tov > rdata->e_d_tov) 627 if (tov > rdata->e_d_tov)
628 rdata->e_d_tov = tov; 628 rdata->e_d_tov = tov;
629 csp_seq = ntohs(plp->fl_csp.sp_tot_seq); 629 csp_seq = ntohs(plp->fl_csp.sp_tot_seq);
diff --git a/drivers/scsi/libiscsi_tcp.c b/drivers/scsi/libiscsi_tcp.c
index db6856c138fc..4ad87fd74ddd 100644
--- a/drivers/scsi/libiscsi_tcp.c
+++ b/drivers/scsi/libiscsi_tcp.c
@@ -992,12 +992,10 @@ static struct iscsi_r2t_info *iscsi_tcp_get_curr_r2t(struct iscsi_task *task)
992 if (r2t == NULL) { 992 if (r2t == NULL) {
993 if (kfifo_out(&tcp_task->r2tqueue, 993 if (kfifo_out(&tcp_task->r2tqueue,
994 (void *)&tcp_task->r2t, sizeof(void *)) != 994 (void *)&tcp_task->r2t, sizeof(void *)) !=
995 sizeof(void *)) { 995 sizeof(void *))
996 WARN_ONCE(1, "unexpected fifo state");
997 r2t = NULL; 996 r2t = NULL;
998 } 997 else
999 998 r2t = tcp_task->r2t;
1000 r2t = tcp_task->r2t;
1001 } 999 }
1002 spin_unlock_bh(&session->lock); 1000 spin_unlock_bh(&session->lock);
1003 } 1001 }
diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c
index ce522702a6c1..2cc39684ce97 100644
--- a/drivers/scsi/lpfc/lpfc_els.c
+++ b/drivers/scsi/lpfc/lpfc_els.c
@@ -4142,8 +4142,8 @@ lpfc_els_rcv_rscn(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb,
4142 spin_lock_irq(shost->host_lock); 4142 spin_lock_irq(shost->host_lock);
4143 if (vport->fc_rscn_flush) { 4143 if (vport->fc_rscn_flush) {
4144 /* Another thread is walking fc_rscn_id_list on this vport */ 4144 /* Another thread is walking fc_rscn_id_list on this vport */
4145 spin_unlock_irq(shost->host_lock);
4146 vport->fc_flag |= FC_RSCN_DISCOVERY; 4145 vport->fc_flag |= FC_RSCN_DISCOVERY;
4146 spin_unlock_irq(shost->host_lock);
4147 /* Send back ACC */ 4147 /* Send back ACC */
4148 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); 4148 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL);
4149 return 0; 4149 return 0;
@@ -5948,8 +5948,8 @@ lpfc_cmpl_reg_new_vport(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
5948 lpfc_initial_fdisc(vport); 5948 lpfc_initial_fdisc(vport);
5949 break; 5949 break;
5950 } 5950 }
5951
5952 } else { 5951 } else {
5952 vport->vpi_state |= LPFC_VPI_REGISTERED;
5953 if (vport == phba->pport) 5953 if (vport == phba->pport)
5954 if (phba->sli_rev < LPFC_SLI_REV4) 5954 if (phba->sli_rev < LPFC_SLI_REV4)
5955 lpfc_issue_fabric_reglogin(vport); 5955 lpfc_issue_fabric_reglogin(vport);
diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c
index 3b9424427652..2445e399fd60 100755..100644
--- a/drivers/scsi/lpfc/lpfc_hbadisc.c
+++ b/drivers/scsi/lpfc/lpfc_hbadisc.c
@@ -747,6 +747,10 @@ lpfc_linkdown(struct lpfc_hba *phba)
747 747
748 if (phba->link_state == LPFC_LINK_DOWN) 748 if (phba->link_state == LPFC_LINK_DOWN)
749 return 0; 749 return 0;
750
751 /* Block all SCSI stack I/Os */
752 lpfc_scsi_dev_block(phba);
753
750 spin_lock_irq(&phba->hbalock); 754 spin_lock_irq(&phba->hbalock);
751 phba->fcf.fcf_flag &= ~(FCF_AVAILABLE | FCF_DISCOVERED); 755 phba->fcf.fcf_flag &= ~(FCF_AVAILABLE | FCF_DISCOVERED);
752 if (phba->link_state > LPFC_LINK_DOWN) { 756 if (phba->link_state > LPFC_LINK_DOWN) {
@@ -1555,10 +1559,16 @@ lpfc_mbx_cmpl_read_fcf_record(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq)
1555 * to book keeping the FCFIs can be used. 1559 * to book keeping the FCFIs can be used.
1556 */ 1560 */
1557 if (shdr_status || shdr_add_status) { 1561 if (shdr_status || shdr_add_status) {
1558 lpfc_printf_log(phba, KERN_ERR, LOG_INIT, 1562 if (shdr_status == STATUS_FCF_TABLE_EMPTY) {
1559 "2521 READ_FCF_RECORD mailbox failed " 1563 lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
1560 "with status x%x add_status x%x, mbx\n", 1564 "2726 READ_FCF_RECORD Indicates empty "
1561 shdr_status, shdr_add_status); 1565 "FCF table.\n");
1566 } else {
1567 lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
1568 "2521 READ_FCF_RECORD mailbox failed "
1569 "with status x%x add_status x%x, mbx\n",
1570 shdr_status, shdr_add_status);
1571 }
1562 goto out; 1572 goto out;
1563 } 1573 }
1564 /* Interpreting the returned information of FCF records */ 1574 /* Interpreting the returned information of FCF records */
@@ -1698,7 +1708,9 @@ lpfc_init_vpi_cmpl(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq)
1698 lpfc_vport_set_state(vport, FC_VPORT_FAILED); 1708 lpfc_vport_set_state(vport, FC_VPORT_FAILED);
1699 return; 1709 return;
1700 } 1710 }
1711 spin_lock_irq(&phba->hbalock);
1701 vport->fc_flag &= ~FC_VPORT_NEEDS_INIT_VPI; 1712 vport->fc_flag &= ~FC_VPORT_NEEDS_INIT_VPI;
1713 spin_unlock_irq(&phba->hbalock);
1702 1714
1703 if (phba->link_flag & LS_NPIV_FAB_SUPPORTED) 1715 if (phba->link_flag & LS_NPIV_FAB_SUPPORTED)
1704 lpfc_initial_fdisc(vport); 1716 lpfc_initial_fdisc(vport);
@@ -2259,7 +2271,10 @@ lpfc_mbx_cmpl_unreg_vpi(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
2259 mb->mbxStatus); 2271 mb->mbxStatus);
2260 break; 2272 break;
2261 } 2273 }
2274 spin_lock_irq(&phba->hbalock);
2262 vport->vpi_state &= ~LPFC_VPI_REGISTERED; 2275 vport->vpi_state &= ~LPFC_VPI_REGISTERED;
2276 vport->fc_flag |= FC_VPORT_NEEDS_REG_VPI;
2277 spin_unlock_irq(&phba->hbalock);
2263 vport->unreg_vpi_cmpl = VPORT_OK; 2278 vport->unreg_vpi_cmpl = VPORT_OK;
2264 mempool_free(pmb, phba->mbox_mem_pool); 2279 mempool_free(pmb, phba->mbox_mem_pool);
2265 /* 2280 /*
@@ -4475,8 +4490,10 @@ lpfc_unregister_unused_fcf(struct lpfc_hba *phba)
4475 (phba->sli3_options & LPFC_SLI3_NPIV_ENABLED)) 4490 (phba->sli3_options & LPFC_SLI3_NPIV_ENABLED))
4476 for (i = 0; i <= phba->max_vports && vports[i] != NULL; i++) { 4491 for (i = 0; i <= phba->max_vports && vports[i] != NULL; i++) {
4477 lpfc_mbx_unreg_vpi(vports[i]); 4492 lpfc_mbx_unreg_vpi(vports[i]);
4493 spin_lock_irq(&phba->hbalock);
4478 vports[i]->fc_flag |= FC_VPORT_NEEDS_INIT_VPI; 4494 vports[i]->fc_flag |= FC_VPORT_NEEDS_INIT_VPI;
4479 vports[i]->vpi_state &= ~LPFC_VPI_REGISTERED; 4495 vports[i]->vpi_state &= ~LPFC_VPI_REGISTERED;
4496 spin_unlock_irq(&phba->hbalock);
4480 } 4497 }
4481 lpfc_destroy_vport_work_array(phba, vports); 4498 lpfc_destroy_vport_work_array(phba, vports);
4482 4499
diff --git a/drivers/scsi/lpfc/lpfc_hw4.h b/drivers/scsi/lpfc/lpfc_hw4.h
index 1585148a17e5..8a2a1c5935c6 100644
--- a/drivers/scsi/lpfc/lpfc_hw4.h
+++ b/drivers/scsi/lpfc/lpfc_hw4.h
@@ -1013,7 +1013,7 @@ struct lpfc_mbx_wq_destroy {
1013}; 1013};
1014 1014
1015#define LPFC_HDR_BUF_SIZE 128 1015#define LPFC_HDR_BUF_SIZE 128
1016#define LPFC_DATA_BUF_SIZE 4096 1016#define LPFC_DATA_BUF_SIZE 2048
1017struct rq_context { 1017struct rq_context {
1018 uint32_t word0; 1018 uint32_t word0;
1019#define lpfc_rq_context_rq_size_SHIFT 16 1019#define lpfc_rq_context_rq_size_SHIFT 16
@@ -1371,6 +1371,7 @@ struct lpfc_mbx_query_fw_cfg {
1371#define STATUS_ERROR_ACITMAIN 0x2a 1371#define STATUS_ERROR_ACITMAIN 0x2a
1372#define STATUS_REBOOT_REQUIRED 0x2c 1372#define STATUS_REBOOT_REQUIRED 0x2c
1373#define STATUS_FCF_IN_USE 0x3a 1373#define STATUS_FCF_IN_USE 0x3a
1374#define STATUS_FCF_TABLE_EMPTY 0x43
1374 1375
1375struct lpfc_mbx_sli4_config { 1376struct lpfc_mbx_sli4_config {
1376 struct mbox_header header; 1377 struct mbox_header header;
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
index d4da6bdd0e73..b8eb1b6e5e77 100644
--- a/drivers/scsi/lpfc/lpfc_init.c
+++ b/drivers/scsi/lpfc/lpfc_init.c
@@ -3006,6 +3006,7 @@ lpfc_sli4_async_fcoe_evt(struct lpfc_hba *phba,
3006 struct lpfc_vport *vport; 3006 struct lpfc_vport *vport;
3007 struct lpfc_nodelist *ndlp; 3007 struct lpfc_nodelist *ndlp;
3008 struct Scsi_Host *shost; 3008 struct Scsi_Host *shost;
3009 uint32_t link_state;
3009 3010
3010 phba->fc_eventTag = acqe_fcoe->event_tag; 3011 phba->fc_eventTag = acqe_fcoe->event_tag;
3011 phba->fcoe_eventtag = acqe_fcoe->event_tag; 3012 phba->fcoe_eventtag = acqe_fcoe->event_tag;
@@ -3052,9 +3053,12 @@ lpfc_sli4_async_fcoe_evt(struct lpfc_hba *phba,
3052 break; 3053 break;
3053 /* 3054 /*
3054 * Currently, driver support only one FCF - so treat this as 3055 * Currently, driver support only one FCF - so treat this as
3055 * a link down. 3056 * a link down, but save the link state because we don't want
3057 * it to be changed to Link Down unless it is already down.
3056 */ 3058 */
3059 link_state = phba->link_state;
3057 lpfc_linkdown(phba); 3060 lpfc_linkdown(phba);
3061 phba->link_state = link_state;
3058 /* Unregister FCF if no devices connected to it */ 3062 /* Unregister FCF if no devices connected to it */
3059 lpfc_unregister_unused_fcf(phba); 3063 lpfc_unregister_unused_fcf(phba);
3060 break; 3064 break;
@@ -7226,8 +7230,6 @@ lpfc_prep_dev_for_perm_failure(struct lpfc_hba *phba)
7226{ 7230{
7227 lpfc_printf_log(phba, KERN_ERR, LOG_INIT, 7231 lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
7228 "2711 PCI channel permanent disable for failure\n"); 7232 "2711 PCI channel permanent disable for failure\n");
7229 /* Block all SCSI devices' I/Os on the host */
7230 lpfc_scsi_dev_block(phba);
7231 /* Clean up all driver's outstanding SCSI I/Os */ 7233 /* Clean up all driver's outstanding SCSI I/Os */
7232 lpfc_sli_flush_fcp_rings(phba); 7234 lpfc_sli_flush_fcp_rings(phba);
7233} 7235}
@@ -7256,6 +7258,9 @@ lpfc_io_error_detected_s3(struct pci_dev *pdev, pci_channel_state_t state)
7256 struct Scsi_Host *shost = pci_get_drvdata(pdev); 7258 struct Scsi_Host *shost = pci_get_drvdata(pdev);
7257 struct lpfc_hba *phba = ((struct lpfc_vport *)shost->hostdata)->phba; 7259 struct lpfc_hba *phba = ((struct lpfc_vport *)shost->hostdata)->phba;
7258 7260
7261 /* Block all SCSI devices' I/Os on the host */
7262 lpfc_scsi_dev_block(phba);
7263
7259 switch (state) { 7264 switch (state) {
7260 case pci_channel_io_normal: 7265 case pci_channel_io_normal:
7261 /* Non-fatal error, prepare for recovery */ 7266 /* Non-fatal error, prepare for recovery */
@@ -7507,6 +7512,9 @@ lpfc_pci_probe_one_s4(struct pci_dev *pdev, const struct pci_device_id *pid)
7507 error = -ENODEV; 7512 error = -ENODEV;
7508 goto out_free_sysfs_attr; 7513 goto out_free_sysfs_attr;
7509 } 7514 }
7515 /* Default to single FCP EQ for non-MSI-X */
7516 if (phba->intr_type != MSIX)
7517 phba->cfg_fcp_eq_count = 1;
7510 /* Set up SLI-4 HBA */ 7518 /* Set up SLI-4 HBA */
7511 if (lpfc_sli4_hba_setup(phba)) { 7519 if (lpfc_sli4_hba_setup(phba)) {
7512 lpfc_printf_log(phba, KERN_ERR, LOG_INIT, 7520 lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
index 7935667b81a5..589549b2bf0e 100644
--- a/drivers/scsi/lpfc/lpfc_sli.c
+++ b/drivers/scsi/lpfc/lpfc_sli.c
@@ -1383,7 +1383,7 @@ lpfc_sli_hbq_to_firmware_s4(struct lpfc_hba *phba, uint32_t hbqno,
1383/* HBQ for ELS and CT traffic. */ 1383/* HBQ for ELS and CT traffic. */
1384static struct lpfc_hbq_init lpfc_els_hbq = { 1384static struct lpfc_hbq_init lpfc_els_hbq = {
1385 .rn = 1, 1385 .rn = 1,
1386 .entry_count = 200, 1386 .entry_count = 256,
1387 .mask_count = 0, 1387 .mask_count = 0,
1388 .profile = 0, 1388 .profile = 0,
1389 .ring_mask = (1 << LPFC_ELS_RING), 1389 .ring_mask = (1 << LPFC_ELS_RING),
@@ -1482,8 +1482,11 @@ err:
1482int 1482int
1483lpfc_sli_hbqbuf_add_hbqs(struct lpfc_hba *phba, uint32_t qno) 1483lpfc_sli_hbqbuf_add_hbqs(struct lpfc_hba *phba, uint32_t qno)
1484{ 1484{
1485 return(lpfc_sli_hbqbuf_fill_hbqs(phba, qno, 1485 if (phba->sli_rev == LPFC_SLI_REV4)
1486 lpfc_hbq_defs[qno]->add_count)); 1486 return 0;
1487 else
1488 return lpfc_sli_hbqbuf_fill_hbqs(phba, qno,
1489 lpfc_hbq_defs[qno]->add_count);
1487} 1490}
1488 1491
1489/** 1492/**
@@ -1498,8 +1501,12 @@ lpfc_sli_hbqbuf_add_hbqs(struct lpfc_hba *phba, uint32_t qno)
1498static int 1501static int
1499lpfc_sli_hbqbuf_init_hbqs(struct lpfc_hba *phba, uint32_t qno) 1502lpfc_sli_hbqbuf_init_hbqs(struct lpfc_hba *phba, uint32_t qno)
1500{ 1503{
1501 return(lpfc_sli_hbqbuf_fill_hbqs(phba, qno, 1504 if (phba->sli_rev == LPFC_SLI_REV4)
1502 lpfc_hbq_defs[qno]->init_count)); 1505 return lpfc_sli_hbqbuf_fill_hbqs(phba, qno,
1506 lpfc_hbq_defs[qno]->entry_count);
1507 else
1508 return lpfc_sli_hbqbuf_fill_hbqs(phba, qno,
1509 lpfc_hbq_defs[qno]->init_count);
1503} 1510}
1504 1511
1505/** 1512/**
@@ -4110,6 +4117,7 @@ lpfc_sli4_read_rev(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq,
4110 if (rc) { 4117 if (rc) {
4111 dma_free_coherent(&phba->pcidev->dev, dma_size, 4118 dma_free_coherent(&phba->pcidev->dev, dma_size,
4112 dmabuf->virt, dmabuf->phys); 4119 dmabuf->virt, dmabuf->phys);
4120 kfree(dmabuf);
4113 return -EIO; 4121 return -EIO;
4114 } 4122 }
4115 4123
@@ -5848,7 +5856,6 @@ lpfc_sli4_iocb2wqe(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq,
5848 iocbq->iocb.un.ulpWord[3]); 5856 iocbq->iocb.un.ulpWord[3]);
5849 wqe->generic.word3 = 0; 5857 wqe->generic.word3 = 0;
5850 bf_set(wqe_rcvoxid, &wqe->generic, iocbq->iocb.ulpContext); 5858 bf_set(wqe_rcvoxid, &wqe->generic, iocbq->iocb.ulpContext);
5851 bf_set(wqe_xc, &wqe->generic, 1);
5852 /* The entire sequence is transmitted for this IOCB */ 5859 /* The entire sequence is transmitted for this IOCB */
5853 xmit_len = total_len; 5860 xmit_len = total_len;
5854 cmnd = CMD_XMIT_SEQUENCE64_CR; 5861 cmnd = CMD_XMIT_SEQUENCE64_CR;
@@ -10944,7 +10951,8 @@ lpfc_fc_frame_add(struct lpfc_vport *vport, struct hbq_dmabuf *dmabuf)
10944 return dmabuf; 10951 return dmabuf;
10945 } 10952 }
10946 temp_hdr = seq_dmabuf->hbuf.virt; 10953 temp_hdr = seq_dmabuf->hbuf.virt;
10947 if (new_hdr->fh_seq_cnt < temp_hdr->fh_seq_cnt) { 10954 if (be16_to_cpu(new_hdr->fh_seq_cnt) <
10955 be16_to_cpu(temp_hdr->fh_seq_cnt)) {
10948 list_del_init(&seq_dmabuf->hbuf.list); 10956 list_del_init(&seq_dmabuf->hbuf.list);
10949 list_add_tail(&dmabuf->hbuf.list, &vport->rcv_buffer_list); 10957 list_add_tail(&dmabuf->hbuf.list, &vport->rcv_buffer_list);
10950 list_add_tail(&dmabuf->dbuf.list, &seq_dmabuf->dbuf.list); 10958 list_add_tail(&dmabuf->dbuf.list, &seq_dmabuf->dbuf.list);
@@ -10955,6 +10963,11 @@ lpfc_fc_frame_add(struct lpfc_vport *vport, struct hbq_dmabuf *dmabuf)
10955 list_move_tail(&seq_dmabuf->hbuf.list, &vport->rcv_buffer_list); 10963 list_move_tail(&seq_dmabuf->hbuf.list, &vport->rcv_buffer_list);
10956 seq_dmabuf->time_stamp = jiffies; 10964 seq_dmabuf->time_stamp = jiffies;
10957 lpfc_update_rcv_time_stamp(vport); 10965 lpfc_update_rcv_time_stamp(vport);
10966 if (list_empty(&seq_dmabuf->dbuf.list)) {
10967 temp_hdr = dmabuf->hbuf.virt;
10968 list_add_tail(&dmabuf->dbuf.list, &seq_dmabuf->dbuf.list);
10969 return seq_dmabuf;
10970 }
10958 /* find the correct place in the sequence to insert this frame */ 10971 /* find the correct place in the sequence to insert this frame */
10959 list_for_each_entry_reverse(d_buf, &seq_dmabuf->dbuf.list, list) { 10972 list_for_each_entry_reverse(d_buf, &seq_dmabuf->dbuf.list, list) {
10960 temp_dmabuf = container_of(d_buf, struct hbq_dmabuf, dbuf); 10973 temp_dmabuf = container_of(d_buf, struct hbq_dmabuf, dbuf);
@@ -10963,7 +10976,8 @@ lpfc_fc_frame_add(struct lpfc_vport *vport, struct hbq_dmabuf *dmabuf)
10963 * If the frame's sequence count is greater than the frame on 10976 * If the frame's sequence count is greater than the frame on
10964 * the list then insert the frame right after this frame 10977 * the list then insert the frame right after this frame
10965 */ 10978 */
10966 if (new_hdr->fh_seq_cnt > temp_hdr->fh_seq_cnt) { 10979 if (be16_to_cpu(new_hdr->fh_seq_cnt) >
10980 be16_to_cpu(temp_hdr->fh_seq_cnt)) {
10967 list_add(&dmabuf->dbuf.list, &temp_dmabuf->dbuf.list); 10981 list_add(&dmabuf->dbuf.list, &temp_dmabuf->dbuf.list);
10968 return seq_dmabuf; 10982 return seq_dmabuf;
10969 } 10983 }
@@ -11210,7 +11224,7 @@ lpfc_seq_complete(struct hbq_dmabuf *dmabuf)
11210 seq_dmabuf = container_of(d_buf, struct hbq_dmabuf, dbuf); 11224 seq_dmabuf = container_of(d_buf, struct hbq_dmabuf, dbuf);
11211 hdr = (struct fc_frame_header *)seq_dmabuf->hbuf.virt; 11225 hdr = (struct fc_frame_header *)seq_dmabuf->hbuf.virt;
11212 /* If there is a hole in the sequence count then fail. */ 11226 /* If there is a hole in the sequence count then fail. */
11213 if (++seq_count != hdr->fh_seq_cnt) 11227 if (++seq_count != be16_to_cpu(hdr->fh_seq_cnt))
11214 return 0; 11228 return 0;
11215 fctl = (hdr->fh_f_ctl[0] << 16 | 11229 fctl = (hdr->fh_f_ctl[0] << 16 |
11216 hdr->fh_f_ctl[1] << 8 | 11230 hdr->fh_f_ctl[1] << 8 |
@@ -11242,6 +11256,7 @@ lpfc_prep_seq(struct lpfc_vport *vport, struct hbq_dmabuf *seq_dmabuf)
11242 struct lpfc_iocbq *first_iocbq, *iocbq; 11256 struct lpfc_iocbq *first_iocbq, *iocbq;
11243 struct fc_frame_header *fc_hdr; 11257 struct fc_frame_header *fc_hdr;
11244 uint32_t sid; 11258 uint32_t sid;
11259 struct ulp_bde64 *pbde;
11245 11260
11246 fc_hdr = (struct fc_frame_header *)seq_dmabuf->hbuf.virt; 11261 fc_hdr = (struct fc_frame_header *)seq_dmabuf->hbuf.virt;
11247 /* remove from receive buffer list */ 11262 /* remove from receive buffer list */
@@ -11283,8 +11298,9 @@ lpfc_prep_seq(struct lpfc_vport *vport, struct hbq_dmabuf *seq_dmabuf)
11283 if (!iocbq->context3) { 11298 if (!iocbq->context3) {
11284 iocbq->context3 = d_buf; 11299 iocbq->context3 = d_buf;
11285 iocbq->iocb.ulpBdeCount++; 11300 iocbq->iocb.ulpBdeCount++;
11286 iocbq->iocb.unsli3.rcvsli3.bde2.tus.f.bdeSize = 11301 pbde = (struct ulp_bde64 *)
11287 LPFC_DATA_BUF_SIZE; 11302 &iocbq->iocb.unsli3.sli3Words[4];
11303 pbde->tus.f.bdeSize = LPFC_DATA_BUF_SIZE;
11288 first_iocbq->iocb.unsli3.rcvsli3.acc_len += 11304 first_iocbq->iocb.unsli3.rcvsli3.acc_len +=
11289 bf_get(lpfc_rcqe_length, 11305 bf_get(lpfc_rcqe_length,
11290 &seq_dmabuf->cq_event.cqe.rcqe_cmpl); 11306 &seq_dmabuf->cq_event.cqe.rcqe_cmpl);
@@ -11401,15 +11417,9 @@ lpfc_sli4_handle_received_buffer(struct lpfc_hba *phba,
11401 return; 11417 return;
11402 } 11418 }
11403 /* If not last frame in sequence continue processing frames. */ 11419 /* If not last frame in sequence continue processing frames. */
11404 if (!lpfc_seq_complete(seq_dmabuf)) { 11420 if (!lpfc_seq_complete(seq_dmabuf))
11405 /*
11406 * When saving off frames post a new one and mark this
11407 * frame to be freed when it is finished.
11408 **/
11409 lpfc_sli_hbqbuf_fill_hbqs(phba, LPFC_ELS_HBQ, 1);
11410 dmabuf->tag = -1;
11411 return; 11421 return;
11412 } 11422
11413 /* Send the complete sequence to the upper layer protocol */ 11423 /* Send the complete sequence to the upper layer protocol */
11414 lpfc_sli4_send_seq_to_ulp(vport, seq_dmabuf); 11424 lpfc_sli4_send_seq_to_ulp(vport, seq_dmabuf);
11415} 11425}
diff --git a/drivers/scsi/lpfc/lpfc_sli4.h b/drivers/scsi/lpfc/lpfc_sli4.h
index 25d66d070cf8..44e5f574236b 100644
--- a/drivers/scsi/lpfc/lpfc_sli4.h
+++ b/drivers/scsi/lpfc/lpfc_sli4.h
@@ -28,7 +28,7 @@
28/* Multi-queue arrangement for fast-path FCP work queues */ 28/* Multi-queue arrangement for fast-path FCP work queues */
29#define LPFC_FN_EQN_MAX 8 29#define LPFC_FN_EQN_MAX 8
30#define LPFC_SP_EQN_DEF 1 30#define LPFC_SP_EQN_DEF 1
31#define LPFC_FP_EQN_DEF 1 31#define LPFC_FP_EQN_DEF 4
32#define LPFC_FP_EQN_MIN 1 32#define LPFC_FP_EQN_MIN 1
33#define LPFC_FP_EQN_MAX (LPFC_FN_EQN_MAX - LPFC_SP_EQN_DEF) 33#define LPFC_FP_EQN_MAX (LPFC_FN_EQN_MAX - LPFC_SP_EQN_DEF)
34 34
diff --git a/drivers/scsi/lpfc/lpfc_version.h b/drivers/scsi/lpfc/lpfc_version.h
index c7f3aed2aab8..792f72263f1a 100644
--- a/drivers/scsi/lpfc/lpfc_version.h
+++ b/drivers/scsi/lpfc/lpfc_version.h
@@ -18,7 +18,7 @@
18 * included with this package. * 18 * included with this package. *
19 *******************************************************************/ 19 *******************************************************************/
20 20
21#define LPFC_DRIVER_VERSION "8.3.6" 21#define LPFC_DRIVER_VERSION "8.3.7"
22#define LPFC_DRIVER_NAME "lpfc" 22#define LPFC_DRIVER_NAME "lpfc"
23#define LPFC_SP_DRIVER_HANDLER_NAME "lpfc:sp" 23#define LPFC_SP_DRIVER_HANDLER_NAME "lpfc:sp"
24#define LPFC_FP_DRIVER_HANDLER_NAME "lpfc:fp" 24#define LPFC_FP_DRIVER_HANDLER_NAME "lpfc:fp"
diff --git a/drivers/scsi/lpfc/lpfc_vport.c b/drivers/scsi/lpfc/lpfc_vport.c
index 7d6dd83d3592..e3c7fa642306 100644
--- a/drivers/scsi/lpfc/lpfc_vport.c
+++ b/drivers/scsi/lpfc/lpfc_vport.c
@@ -512,8 +512,10 @@ enable_vport(struct fc_vport *fc_vport)
512 return VPORT_OK; 512 return VPORT_OK;
513 } 513 }
514 514
515 spin_lock_irq(&phba->hbalock);
515 vport->load_flag |= FC_LOADING; 516 vport->load_flag |= FC_LOADING;
516 vport->fc_flag |= FC_VPORT_NEEDS_REG_VPI; 517 vport->fc_flag |= FC_VPORT_NEEDS_REG_VPI;
518 spin_unlock_irq(&phba->hbalock);
517 519
518 /* Use the Physical nodes Fabric NDLP to determine if the link is 520 /* Use the Physical nodes Fabric NDLP to determine if the link is
519 * up and ready to FDISC. 521 * up and ready to FDISC.
@@ -700,7 +702,7 @@ lpfc_vport_delete(struct fc_vport *fc_vport)
700 } 702 }
701 spin_unlock_irq(&phba->ndlp_lock); 703 spin_unlock_irq(&phba->ndlp_lock);
702 } 704 }
703 if (vport->vpi_state != LPFC_VPI_REGISTERED) 705 if (!(vport->vpi_state & LPFC_VPI_REGISTERED))
704 goto skip_logo; 706 goto skip_logo;
705 vport->unreg_vpi_cmpl = VPORT_INVAL; 707 vport->unreg_vpi_cmpl = VPORT_INVAL;
706 timeout = msecs_to_jiffies(phba->fc_ratov * 2000); 708 timeout = msecs_to_jiffies(phba->fc_ratov * 2000);
diff --git a/drivers/scsi/megaraid/megaraid_sas.c b/drivers/scsi/megaraid/megaraid_sas.c
index 99ff99e45bee..d9b8ca5116bc 100644
--- a/drivers/scsi/megaraid/megaraid_sas.c
+++ b/drivers/scsi/megaraid/megaraid_sas.c
@@ -3781,6 +3781,7 @@ static int megasas_mgmt_compat_ioctl_fw(struct file *file, unsigned long arg)
3781 compat_alloc_user_space(sizeof(struct megasas_iocpacket)); 3781 compat_alloc_user_space(sizeof(struct megasas_iocpacket));
3782 int i; 3782 int i;
3783 int error = 0; 3783 int error = 0;
3784 compat_uptr_t ptr;
3784 3785
3785 if (clear_user(ioc, sizeof(*ioc))) 3786 if (clear_user(ioc, sizeof(*ioc)))
3786 return -EFAULT; 3787 return -EFAULT;
@@ -3793,9 +3794,22 @@ static int megasas_mgmt_compat_ioctl_fw(struct file *file, unsigned long arg)
3793 copy_in_user(&ioc->sge_count, &cioc->sge_count, sizeof(u32))) 3794 copy_in_user(&ioc->sge_count, &cioc->sge_count, sizeof(u32)))
3794 return -EFAULT; 3795 return -EFAULT;
3795 3796
3796 for (i = 0; i < MAX_IOCTL_SGE; i++) { 3797 /*
3797 compat_uptr_t ptr; 3798 * The sense_ptr is used in megasas_mgmt_fw_ioctl only when
3799 * sense_len is not null, so prepare the 64bit value under
3800 * the same condition.
3801 */
3802 if (ioc->sense_len) {
3803 void __user **sense_ioc_ptr =
3804 (void __user **)(ioc->frame.raw + ioc->sense_off);
3805 compat_uptr_t *sense_cioc_ptr =
3806 (compat_uptr_t *)(cioc->frame.raw + cioc->sense_off);
3807 if (get_user(ptr, sense_cioc_ptr) ||
3808 put_user(compat_ptr(ptr), sense_ioc_ptr))
3809 return -EFAULT;
3810 }
3798 3811
3812 for (i = 0; i < MAX_IOCTL_SGE; i++) {
3799 if (get_user(ptr, &cioc->sgl[i].iov_base) || 3813 if (get_user(ptr, &cioc->sgl[i].iov_base) ||
3800 put_user(compat_ptr(ptr), &ioc->sgl[i].iov_base) || 3814 put_user(compat_ptr(ptr), &ioc->sgl[i].iov_base) ||
3801 copy_in_user(&ioc->sgl[i].iov_len, 3815 copy_in_user(&ioc->sgl[i].iov_len,
@@ -4046,7 +4060,7 @@ megasas_aen_polling(struct work_struct *work)
4046} 4060}
4047 4061
4048 4062
4049static DRIVER_ATTR(poll_mode_io, S_IRUGO|S_IWUGO, 4063static DRIVER_ATTR(poll_mode_io, S_IRUGO|S_IWUSR,
4050 megasas_sysfs_show_poll_mode_io, 4064 megasas_sysfs_show_poll_mode_io,
4051 megasas_sysfs_set_poll_mode_io); 4065 megasas_sysfs_set_poll_mode_io);
4052 4066
diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c
index e7d2688fbeba..b6f1ef954af1 100644
--- a/drivers/scsi/pmcraid.c
+++ b/drivers/scsi/pmcraid.c
@@ -2483,14 +2483,12 @@ static int pmcraid_error_handler(struct pmcraid_cmd *cmd)
2483 sense_copied = 1; 2483 sense_copied = 1;
2484 } 2484 }
2485 2485
2486 if (RES_IS_GSCSI(res->cfg_entry)) { 2486 if (RES_IS_GSCSI(res->cfg_entry))
2487 pmcraid_cancel_all(cmd, sense_copied); 2487 pmcraid_cancel_all(cmd, sense_copied);
2488 } else if (sense_copied) { 2488 else if (sense_copied)
2489 pmcraid_erp_done(cmd); 2489 pmcraid_erp_done(cmd);
2490 return 0; 2490 else
2491 } else {
2492 pmcraid_request_sense(cmd); 2491 pmcraid_request_sense(cmd);
2493 }
2494 2492
2495 return 1; 2493 return 1;
2496 2494
diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
index 21e2bc4d7401..3a9f5b288aee 100644
--- a/drivers/scsi/qla2xxx/qla_attr.c
+++ b/drivers/scsi/qla2xxx/qla_attr.c
@@ -232,6 +232,9 @@ qla2x00_sysfs_write_optrom_ctl(struct kobject *kobj,
232 if (off) 232 if (off)
233 return 0; 233 return 0;
234 234
235 if (unlikely(pci_channel_offline(ha->pdev)))
236 return 0;
237
235 if (sscanf(buf, "%d:%x:%x", &val, &start, &size) < 1) 238 if (sscanf(buf, "%d:%x:%x", &val, &start, &size) < 1)
236 return -EINVAL; 239 return -EINVAL;
237 if (start > ha->optrom_size) 240 if (start > ha->optrom_size)
@@ -379,6 +382,9 @@ qla2x00_sysfs_read_vpd(struct kobject *kobj,
379 struct device, kobj))); 382 struct device, kobj)));
380 struct qla_hw_data *ha = vha->hw; 383 struct qla_hw_data *ha = vha->hw;
381 384
385 if (unlikely(pci_channel_offline(ha->pdev)))
386 return 0;
387
382 if (!capable(CAP_SYS_ADMIN)) 388 if (!capable(CAP_SYS_ADMIN))
383 return 0; 389 return 0;
384 390
@@ -398,6 +404,9 @@ qla2x00_sysfs_write_vpd(struct kobject *kobj,
398 struct qla_hw_data *ha = vha->hw; 404 struct qla_hw_data *ha = vha->hw;
399 uint8_t *tmp_data; 405 uint8_t *tmp_data;
400 406
407 if (unlikely(pci_channel_offline(ha->pdev)))
408 return 0;
409
401 if (!capable(CAP_SYS_ADMIN) || off != 0 || count != ha->vpd_size || 410 if (!capable(CAP_SYS_ADMIN) || off != 0 || count != ha->vpd_size ||
402 !ha->isp_ops->write_nvram) 411 !ha->isp_ops->write_nvram)
403 return 0; 412 return 0;
@@ -1238,10 +1247,11 @@ qla2x00_fw_state_show(struct device *dev, struct device_attribute *attr,
1238 char *buf) 1247 char *buf)
1239{ 1248{
1240 scsi_qla_host_t *vha = shost_priv(class_to_shost(dev)); 1249 scsi_qla_host_t *vha = shost_priv(class_to_shost(dev));
1241 int rval; 1250 int rval = QLA_FUNCTION_FAILED;
1242 uint16_t state[5]; 1251 uint16_t state[5];
1243 1252
1244 rval = qla2x00_get_firmware_state(vha, state); 1253 if (!vha->hw->flags.eeh_busy)
1254 rval = qla2x00_get_firmware_state(vha, state);
1245 if (rval != QLA_SUCCESS) 1255 if (rval != QLA_SUCCESS)
1246 memset(state, -1, sizeof(state)); 1256 memset(state, -1, sizeof(state));
1247 1257
@@ -1452,10 +1462,13 @@ qla2x00_dev_loss_tmo_callbk(struct fc_rport *rport)
1452 if (!fcport) 1462 if (!fcport)
1453 return; 1463 return;
1454 1464
1455 if (unlikely(pci_channel_offline(fcport->vha->hw->pdev))) 1465 if (test_bit(ABORT_ISP_ACTIVE, &fcport->vha->dpc_flags))
1466 return;
1467
1468 if (unlikely(pci_channel_offline(fcport->vha->hw->pdev))) {
1456 qla2x00_abort_all_cmds(fcport->vha, DID_NO_CONNECT << 16); 1469 qla2x00_abort_all_cmds(fcport->vha, DID_NO_CONNECT << 16);
1457 else 1470 return;
1458 qla2x00_abort_fcport_cmds(fcport); 1471 }
1459 1472
1460 /* 1473 /*
1461 * Transport has effectively 'deleted' the rport, clear 1474 * Transport has effectively 'deleted' the rport, clear
@@ -1475,6 +1488,9 @@ qla2x00_terminate_rport_io(struct fc_rport *rport)
1475 if (!fcport) 1488 if (!fcport)
1476 return; 1489 return;
1477 1490
1491 if (test_bit(ABORT_ISP_ACTIVE, &fcport->vha->dpc_flags))
1492 return;
1493
1478 if (unlikely(pci_channel_offline(fcport->vha->hw->pdev))) { 1494 if (unlikely(pci_channel_offline(fcport->vha->hw->pdev))) {
1479 qla2x00_abort_all_cmds(fcport->vha, DID_NO_CONNECT << 16); 1495 qla2x00_abort_all_cmds(fcport->vha, DID_NO_CONNECT << 16);
1480 return; 1496 return;
@@ -1515,6 +1531,12 @@ qla2x00_get_fc_host_stats(struct Scsi_Host *shost)
1515 pfc_host_stat = &ha->fc_host_stat; 1531 pfc_host_stat = &ha->fc_host_stat;
1516 memset(pfc_host_stat, -1, sizeof(struct fc_host_statistics)); 1532 memset(pfc_host_stat, -1, sizeof(struct fc_host_statistics));
1517 1533
1534 if (test_bit(UNLOADING, &vha->dpc_flags))
1535 goto done;
1536
1537 if (unlikely(pci_channel_offline(ha->pdev)))
1538 goto done;
1539
1518 stats = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &stats_dma); 1540 stats = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &stats_dma);
1519 if (stats == NULL) { 1541 if (stats == NULL) {
1520 DEBUG2_3_11(printk("%s(%ld): Failed to allocate memory.\n", 1542 DEBUG2_3_11(printk("%s(%ld): Failed to allocate memory.\n",
diff --git a/drivers/scsi/qla2xxx/qla_dbg.h b/drivers/scsi/qla2xxx/qla_dbg.h
index f660dd70b72e..d6d9c86cb058 100644
--- a/drivers/scsi/qla2xxx/qla_dbg.h
+++ b/drivers/scsi/qla2xxx/qla_dbg.h
@@ -26,7 +26,7 @@
26/* #define QL_DEBUG_LEVEL_14 */ /* Output RSCN trace msgs */ 26/* #define QL_DEBUG_LEVEL_14 */ /* Output RSCN trace msgs */
27/* #define QL_DEBUG_LEVEL_15 */ /* Output NPIV trace msgs */ 27/* #define QL_DEBUG_LEVEL_15 */ /* Output NPIV trace msgs */
28/* #define QL_DEBUG_LEVEL_16 */ /* Output ISP84XX trace msgs */ 28/* #define QL_DEBUG_LEVEL_16 */ /* Output ISP84XX trace msgs */
29/* #define QL_DEBUG_LEVEL_17 */ /* Output MULTI-Q trace messages */ 29/* #define QL_DEBUG_LEVEL_17 */ /* Output EEH trace messages */
30 30
31/* 31/*
32* Macros use for debugging the driver. 32* Macros use for debugging the driver.
@@ -132,6 +132,13 @@
132#else 132#else
133#define DEBUG16(x) do {} while (0) 133#define DEBUG16(x) do {} while (0)
134#endif 134#endif
135
136#if defined(QL_DEBUG_LEVEL_17)
137#define DEBUG17(x) do {x;} while (0)
138#else
139#define DEBUG17(x) do {} while (0)
140#endif
141
135/* 142/*
136 * Firmware Dump structure definition 143 * Firmware Dump structure definition
137 */ 144 */
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
index 384afda7dbe9..1263d9796e89 100644
--- a/drivers/scsi/qla2xxx/qla_def.h
+++ b/drivers/scsi/qla2xxx/qla_def.h
@@ -1586,8 +1586,7 @@ typedef struct fc_port {
1586 */ 1586 */
1587#define FCF_FABRIC_DEVICE BIT_0 1587#define FCF_FABRIC_DEVICE BIT_0
1588#define FCF_LOGIN_NEEDED BIT_1 1588#define FCF_LOGIN_NEEDED BIT_1
1589#define FCF_TAPE_PRESENT BIT_2 1589#define FCF_FCP2_DEVICE BIT_2
1590#define FCF_FCP2_DEVICE BIT_3
1591 1590
1592/* No loop ID flag. */ 1591/* No loop ID flag. */
1593#define FC_NO_LOOP_ID 0x1000 1592#define FC_NO_LOOP_ID 0x1000
@@ -2256,11 +2255,13 @@ struct qla_hw_data {
2256 uint32_t disable_serdes :1; 2255 uint32_t disable_serdes :1;
2257 uint32_t gpsc_supported :1; 2256 uint32_t gpsc_supported :1;
2258 uint32_t npiv_supported :1; 2257 uint32_t npiv_supported :1;
2258 uint32_t pci_channel_io_perm_failure :1;
2259 uint32_t fce_enabled :1; 2259 uint32_t fce_enabled :1;
2260 uint32_t fac_supported :1; 2260 uint32_t fac_supported :1;
2261 uint32_t chip_reset_done :1; 2261 uint32_t chip_reset_done :1;
2262 uint32_t port0 :1; 2262 uint32_t port0 :1;
2263 uint32_t running_gold_fw :1; 2263 uint32_t running_gold_fw :1;
2264 uint32_t eeh_busy :1;
2264 uint32_t cpu_affinity_enabled :1; 2265 uint32_t cpu_affinity_enabled :1;
2265 uint32_t disable_msix_handshake :1; 2266 uint32_t disable_msix_handshake :1;
2266 } flags; 2267 } flags;
diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h
index 0b6801fc6389..8bc6f53691e9 100644
--- a/drivers/scsi/qla2xxx/qla_gbl.h
+++ b/drivers/scsi/qla2xxx/qla_gbl.h
@@ -324,6 +324,7 @@ qla2x00_read_ram_word(scsi_qla_host_t *, uint32_t, uint32_t *);
324extern int 324extern int
325qla2x00_write_ram_word(scsi_qla_host_t *, uint32_t, uint32_t); 325qla2x00_write_ram_word(scsi_qla_host_t *, uint32_t, uint32_t);
326 326
327extern int qla2x00_get_data_rate(scsi_qla_host_t *);
327/* 328/*
328 * Global Function Prototypes in qla_isr.c source file. 329 * Global Function Prototypes in qla_isr.c source file.
329 */ 330 */
@@ -452,6 +453,5 @@ extern void qla24xx_wrt_req_reg(struct qla_hw_data *, uint16_t, uint16_t);
452extern void qla25xx_wrt_req_reg(struct qla_hw_data *, uint16_t, uint16_t); 453extern void qla25xx_wrt_req_reg(struct qla_hw_data *, uint16_t, uint16_t);
453extern void qla25xx_wrt_rsp_reg(struct qla_hw_data *, uint16_t, uint16_t); 454extern void qla25xx_wrt_rsp_reg(struct qla_hw_data *, uint16_t, uint16_t);
454extern void qla24xx_wrt_rsp_reg(struct qla_hw_data *, uint16_t, uint16_t); 455extern void qla24xx_wrt_rsp_reg(struct qla_hw_data *, uint16_t, uint16_t);
455extern struct scsi_qla_host * qla25xx_get_host(struct rsp_que *);
456 456
457#endif /* _QLA_GBL_H */ 457#endif /* _QLA_GBL_H */
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index 73a793539d45..3f8e8495b743 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -205,7 +205,7 @@ qla2x00_async_login_done(struct scsi_qla_host *vha, fc_port_t *fcport,
205 205
206 switch (data[0]) { 206 switch (data[0]) {
207 case MBS_COMMAND_COMPLETE: 207 case MBS_COMMAND_COMPLETE:
208 if (fcport->flags & FCF_TAPE_PRESENT) 208 if (fcport->flags & FCF_FCP2_DEVICE)
209 opts |= BIT_1; 209 opts |= BIT_1;
210 rval = qla2x00_get_port_database(vha, fcport, opts); 210 rval = qla2x00_get_port_database(vha, fcport, opts);
211 if (rval != QLA_SUCCESS) 211 if (rval != QLA_SUCCESS)
@@ -269,6 +269,8 @@ qla2x00_initialize_adapter(scsi_qla_host_t *vha)
269 vha->flags.online = 0; 269 vha->flags.online = 0;
270 ha->flags.chip_reset_done = 0; 270 ha->flags.chip_reset_done = 0;
271 vha->flags.reset_active = 0; 271 vha->flags.reset_active = 0;
272 ha->flags.pci_channel_io_perm_failure = 0;
273 ha->flags.eeh_busy = 0;
272 atomic_set(&vha->loop_down_timer, LOOP_DOWN_TIME); 274 atomic_set(&vha->loop_down_timer, LOOP_DOWN_TIME);
273 atomic_set(&vha->loop_state, LOOP_DOWN); 275 atomic_set(&vha->loop_state, LOOP_DOWN);
274 vha->device_flags = DFLG_NO_CABLE; 276 vha->device_flags = DFLG_NO_CABLE;
@@ -581,6 +583,9 @@ qla2x00_reset_chip(scsi_qla_host_t *vha)
581 uint32_t cnt; 583 uint32_t cnt;
582 uint16_t cmd; 584 uint16_t cmd;
583 585
586 if (unlikely(pci_channel_offline(ha->pdev)))
587 return;
588
584 ha->isp_ops->disable_intrs(ha); 589 ha->isp_ops->disable_intrs(ha);
585 590
586 spin_lock_irqsave(&ha->hardware_lock, flags); 591 spin_lock_irqsave(&ha->hardware_lock, flags);
@@ -786,6 +791,12 @@ void
786qla24xx_reset_chip(scsi_qla_host_t *vha) 791qla24xx_reset_chip(scsi_qla_host_t *vha)
787{ 792{
788 struct qla_hw_data *ha = vha->hw; 793 struct qla_hw_data *ha = vha->hw;
794
795 if (pci_channel_offline(ha->pdev) &&
796 ha->flags.pci_channel_io_perm_failure) {
797 return;
798 }
799
789 ha->isp_ops->disable_intrs(ha); 800 ha->isp_ops->disable_intrs(ha);
790 801
791 /* Perform RISC reset. */ 802 /* Perform RISC reset. */
@@ -2266,6 +2277,8 @@ qla2x00_configure_loop(scsi_qla_host_t *vha)
2266 clear_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags); 2277 clear_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags);
2267 clear_bit(RSCN_UPDATE, &vha->dpc_flags); 2278 clear_bit(RSCN_UPDATE, &vha->dpc_flags);
2268 2279
2280 qla2x00_get_data_rate(vha);
2281
2269 /* Determine what we need to do */ 2282 /* Determine what we need to do */
2270 if (ha->current_topology == ISP_CFG_FL && 2283 if (ha->current_topology == ISP_CFG_FL &&
2271 (test_bit(LOCAL_LOOP_UPDATE, &flags))) { 2284 (test_bit(LOCAL_LOOP_UPDATE, &flags))) {
@@ -2713,7 +2726,7 @@ qla2x00_configure_fabric(scsi_qla_host_t *vha)
2713 2726
2714 /* 2727 /*
2715 * Logout all previous fabric devices marked lost, except 2728 * Logout all previous fabric devices marked lost, except
2716 * tape devices. 2729 * FCP2 devices.
2717 */ 2730 */
2718 list_for_each_entry(fcport, &vha->vp_fcports, list) { 2731 list_for_each_entry(fcport, &vha->vp_fcports, list) {
2719 if (test_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags)) 2732 if (test_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags))
@@ -2726,7 +2739,7 @@ qla2x00_configure_fabric(scsi_qla_host_t *vha)
2726 qla2x00_mark_device_lost(vha, fcport, 2739 qla2x00_mark_device_lost(vha, fcport,
2727 ql2xplogiabsentdevice, 0); 2740 ql2xplogiabsentdevice, 0);
2728 if (fcport->loop_id != FC_NO_LOOP_ID && 2741 if (fcport->loop_id != FC_NO_LOOP_ID &&
2729 (fcport->flags & FCF_TAPE_PRESENT) == 0 && 2742 (fcport->flags & FCF_FCP2_DEVICE) == 0 &&
2730 fcport->port_type != FCT_INITIATOR && 2743 fcport->port_type != FCT_INITIATOR &&
2731 fcport->port_type != FCT_BROADCAST) { 2744 fcport->port_type != FCT_BROADCAST) {
2732 ha->isp_ops->fabric_logout(vha, 2745 ha->isp_ops->fabric_logout(vha,
@@ -3005,7 +3018,7 @@ qla2x00_find_all_fabric_devs(scsi_qla_host_t *vha,
3005 fcport->d_id.b24 = new_fcport->d_id.b24; 3018 fcport->d_id.b24 = new_fcport->d_id.b24;
3006 fcport->flags |= FCF_LOGIN_NEEDED; 3019 fcport->flags |= FCF_LOGIN_NEEDED;
3007 if (fcport->loop_id != FC_NO_LOOP_ID && 3020 if (fcport->loop_id != FC_NO_LOOP_ID &&
3008 (fcport->flags & FCF_TAPE_PRESENT) == 0 && 3021 (fcport->flags & FCF_FCP2_DEVICE) == 0 &&
3009 fcport->port_type != FCT_INITIATOR && 3022 fcport->port_type != FCT_INITIATOR &&
3010 fcport->port_type != FCT_BROADCAST) { 3023 fcport->port_type != FCT_BROADCAST) {
3011 ha->isp_ops->fabric_logout(vha, fcport->loop_id, 3024 ha->isp_ops->fabric_logout(vha, fcport->loop_id,
@@ -3259,9 +3272,9 @@ qla2x00_fabric_dev_login(scsi_qla_host_t *vha, fc_port_t *fcport,
3259 3272
3260 rval = qla2x00_fabric_login(vha, fcport, next_loopid); 3273 rval = qla2x00_fabric_login(vha, fcport, next_loopid);
3261 if (rval == QLA_SUCCESS) { 3274 if (rval == QLA_SUCCESS) {
3262 /* Send an ADISC to tape devices.*/ 3275 /* Send an ADISC to FCP2 devices.*/
3263 opts = 0; 3276 opts = 0;
3264 if (fcport->flags & FCF_TAPE_PRESENT) 3277 if (fcport->flags & FCF_FCP2_DEVICE)
3265 opts |= BIT_1; 3278 opts |= BIT_1;
3266 rval = qla2x00_get_port_database(vha, fcport, opts); 3279 rval = qla2x00_get_port_database(vha, fcport, opts);
3267 if (rval != QLA_SUCCESS) { 3280 if (rval != QLA_SUCCESS) {
@@ -3560,6 +3573,13 @@ qla2x00_abort_isp(scsi_qla_host_t *vha)
3560 /* Requeue all commands in outstanding command list. */ 3573 /* Requeue all commands in outstanding command list. */
3561 qla2x00_abort_all_cmds(vha, DID_RESET << 16); 3574 qla2x00_abort_all_cmds(vha, DID_RESET << 16);
3562 3575
3576 if (unlikely(pci_channel_offline(ha->pdev) &&
3577 ha->flags.pci_channel_io_perm_failure)) {
3578 clear_bit(ISP_ABORT_RETRY, &vha->dpc_flags);
3579 status = 0;
3580 return status;
3581 }
3582
3563 ha->isp_ops->get_flash_version(vha, req->ring); 3583 ha->isp_ops->get_flash_version(vha, req->ring);
3564 3584
3565 ha->isp_ops->nvram_config(vha); 3585 ha->isp_ops->nvram_config(vha);
@@ -4458,6 +4478,8 @@ qla2x00_try_to_stop_firmware(scsi_qla_host_t *vha)
4458 int ret, retries; 4478 int ret, retries;
4459 struct qla_hw_data *ha = vha->hw; 4479 struct qla_hw_data *ha = vha->hw;
4460 4480
4481 if (ha->flags.pci_channel_io_perm_failure)
4482 return;
4461 if (!IS_FWI2_CAPABLE(ha)) 4483 if (!IS_FWI2_CAPABLE(ha))
4462 return; 4484 return;
4463 if (!ha->fw_major_version) 4485 if (!ha->fw_major_version)
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 1692a883f4de..6fc63b98818c 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -152,7 +152,7 @@ qla2300_intr_handler(int irq, void *dev_id)
152 for (iter = 50; iter--; ) { 152 for (iter = 50; iter--; ) {
153 stat = RD_REG_DWORD(&reg->u.isp2300.host_status); 153 stat = RD_REG_DWORD(&reg->u.isp2300.host_status);
154 if (stat & HSR_RISC_PAUSED) { 154 if (stat & HSR_RISC_PAUSED) {
155 if (pci_channel_offline(ha->pdev)) 155 if (unlikely(pci_channel_offline(ha->pdev)))
156 break; 156 break;
157 157
158 hccr = RD_REG_WORD(&reg->hccr); 158 hccr = RD_REG_WORD(&reg->hccr);
@@ -1846,12 +1846,15 @@ qla24xx_intr_handler(int irq, void *dev_id)
1846 reg = &ha->iobase->isp24; 1846 reg = &ha->iobase->isp24;
1847 status = 0; 1847 status = 0;
1848 1848
1849 if (unlikely(pci_channel_offline(ha->pdev)))
1850 return IRQ_HANDLED;
1851
1849 spin_lock_irqsave(&ha->hardware_lock, flags); 1852 spin_lock_irqsave(&ha->hardware_lock, flags);
1850 vha = pci_get_drvdata(ha->pdev); 1853 vha = pci_get_drvdata(ha->pdev);
1851 for (iter = 50; iter--; ) { 1854 for (iter = 50; iter--; ) {
1852 stat = RD_REG_DWORD(&reg->host_status); 1855 stat = RD_REG_DWORD(&reg->host_status);
1853 if (stat & HSRX_RISC_PAUSED) { 1856 if (stat & HSRX_RISC_PAUSED) {
1854 if (pci_channel_offline(ha->pdev)) 1857 if (unlikely(pci_channel_offline(ha->pdev)))
1855 break; 1858 break;
1856 1859
1857 hccr = RD_REG_DWORD(&reg->hccr); 1860 hccr = RD_REG_DWORD(&reg->hccr);
@@ -1914,6 +1917,7 @@ qla24xx_msix_rsp_q(int irq, void *dev_id)
1914 struct rsp_que *rsp; 1917 struct rsp_que *rsp;
1915 struct device_reg_24xx __iomem *reg; 1918 struct device_reg_24xx __iomem *reg;
1916 struct scsi_qla_host *vha; 1919 struct scsi_qla_host *vha;
1920 unsigned long flags;
1917 1921
1918 rsp = (struct rsp_que *) dev_id; 1922 rsp = (struct rsp_que *) dev_id;
1919 if (!rsp) { 1923 if (!rsp) {
@@ -1924,15 +1928,15 @@ qla24xx_msix_rsp_q(int irq, void *dev_id)
1924 ha = rsp->hw; 1928 ha = rsp->hw;
1925 reg = &ha->iobase->isp24; 1929 reg = &ha->iobase->isp24;
1926 1930
1927 spin_lock_irq(&ha->hardware_lock); 1931 spin_lock_irqsave(&ha->hardware_lock, flags);
1928 1932
1929 vha = qla25xx_get_host(rsp); 1933 vha = pci_get_drvdata(ha->pdev);
1930 qla24xx_process_response_queue(vha, rsp); 1934 qla24xx_process_response_queue(vha, rsp);
1931 if (!ha->flags.disable_msix_handshake) { 1935 if (!ha->flags.disable_msix_handshake) {
1932 WRT_REG_DWORD(&reg->hccr, HCCRX_CLR_RISC_INT); 1936 WRT_REG_DWORD(&reg->hccr, HCCRX_CLR_RISC_INT);
1933 RD_REG_DWORD_RELAXED(&reg->hccr); 1937 RD_REG_DWORD_RELAXED(&reg->hccr);
1934 } 1938 }
1935 spin_unlock_irq(&ha->hardware_lock); 1939 spin_unlock_irqrestore(&ha->hardware_lock, flags);
1936 1940
1937 return IRQ_HANDLED; 1941 return IRQ_HANDLED;
1938} 1942}
@@ -1943,6 +1947,7 @@ qla25xx_msix_rsp_q(int irq, void *dev_id)
1943 struct qla_hw_data *ha; 1947 struct qla_hw_data *ha;
1944 struct rsp_que *rsp; 1948 struct rsp_que *rsp;
1945 struct device_reg_24xx __iomem *reg; 1949 struct device_reg_24xx __iomem *reg;
1950 unsigned long flags;
1946 1951
1947 rsp = (struct rsp_que *) dev_id; 1952 rsp = (struct rsp_que *) dev_id;
1948 if (!rsp) { 1953 if (!rsp) {
@@ -1955,10 +1960,10 @@ qla25xx_msix_rsp_q(int irq, void *dev_id)
1955 /* Clear the interrupt, if enabled, for this response queue */ 1960 /* Clear the interrupt, if enabled, for this response queue */
1956 if (rsp->options & ~BIT_6) { 1961 if (rsp->options & ~BIT_6) {
1957 reg = &ha->iobase->isp24; 1962 reg = &ha->iobase->isp24;
1958 spin_lock_irq(&ha->hardware_lock); 1963 spin_lock_irqsave(&ha->hardware_lock, flags);
1959 WRT_REG_DWORD(&reg->hccr, HCCRX_CLR_RISC_INT); 1964 WRT_REG_DWORD(&reg->hccr, HCCRX_CLR_RISC_INT);
1960 RD_REG_DWORD_RELAXED(&reg->hccr); 1965 RD_REG_DWORD_RELAXED(&reg->hccr);
1961 spin_unlock_irq(&ha->hardware_lock); 1966 spin_unlock_irqrestore(&ha->hardware_lock, flags);
1962 } 1967 }
1963 queue_work_on((int) (rsp->id - 1), ha->wq, &rsp->q_work); 1968 queue_work_on((int) (rsp->id - 1), ha->wq, &rsp->q_work);
1964 1969
@@ -1976,6 +1981,7 @@ qla24xx_msix_default(int irq, void *dev_id)
1976 uint32_t stat; 1981 uint32_t stat;
1977 uint32_t hccr; 1982 uint32_t hccr;
1978 uint16_t mb[4]; 1983 uint16_t mb[4];
1984 unsigned long flags;
1979 1985
1980 rsp = (struct rsp_que *) dev_id; 1986 rsp = (struct rsp_que *) dev_id;
1981 if (!rsp) { 1987 if (!rsp) {
@@ -1987,12 +1993,12 @@ qla24xx_msix_default(int irq, void *dev_id)
1987 reg = &ha->iobase->isp24; 1993 reg = &ha->iobase->isp24;
1988 status = 0; 1994 status = 0;
1989 1995
1990 spin_lock_irq(&ha->hardware_lock); 1996 spin_lock_irqsave(&ha->hardware_lock, flags);
1991 vha = pci_get_drvdata(ha->pdev); 1997 vha = pci_get_drvdata(ha->pdev);
1992 do { 1998 do {
1993 stat = RD_REG_DWORD(&reg->host_status); 1999 stat = RD_REG_DWORD(&reg->host_status);
1994 if (stat & HSRX_RISC_PAUSED) { 2000 if (stat & HSRX_RISC_PAUSED) {
1995 if (pci_channel_offline(ha->pdev)) 2001 if (unlikely(pci_channel_offline(ha->pdev)))
1996 break; 2002 break;
1997 2003
1998 hccr = RD_REG_DWORD(&reg->hccr); 2004 hccr = RD_REG_DWORD(&reg->hccr);
@@ -2036,7 +2042,7 @@ qla24xx_msix_default(int irq, void *dev_id)
2036 } 2042 }
2037 WRT_REG_DWORD(&reg->hccr, HCCRX_CLR_RISC_INT); 2043 WRT_REG_DWORD(&reg->hccr, HCCRX_CLR_RISC_INT);
2038 } while (0); 2044 } while (0);
2039 spin_unlock_irq(&ha->hardware_lock); 2045 spin_unlock_irqrestore(&ha->hardware_lock, flags);
2040 2046
2041 if (test_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags) && 2047 if (test_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags) &&
2042 (status & MBX_INTERRUPT) && ha->flags.mbox_int) { 2048 (status & MBX_INTERRUPT) && ha->flags.mbox_int) {
@@ -2274,30 +2280,3 @@ int qla25xx_request_irq(struct rsp_que *rsp)
2274 msix->rsp = rsp; 2280 msix->rsp = rsp;
2275 return ret; 2281 return ret;
2276} 2282}
2277
2278struct scsi_qla_host *
2279qla25xx_get_host(struct rsp_que *rsp)
2280{
2281 srb_t *sp;
2282 struct qla_hw_data *ha = rsp->hw;
2283 struct scsi_qla_host *vha = NULL;
2284 struct sts_entry_24xx *pkt;
2285 struct req_que *req;
2286 uint16_t que;
2287 uint32_t handle;
2288
2289 pkt = (struct sts_entry_24xx *) rsp->ring_ptr;
2290 que = MSW(pkt->handle);
2291 handle = (uint32_t) LSW(pkt->handle);
2292 req = ha->req_q_map[que];
2293 if (handle < MAX_OUTSTANDING_COMMANDS) {
2294 sp = req->outstanding_cmds[handle];
2295 if (sp)
2296 return sp->fcport->vha;
2297 else
2298 goto base_que;
2299 }
2300base_que:
2301 vha = pci_get_drvdata(ha->pdev);
2302 return vha;
2303}
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
index 05d595d9a7ef..056e4d4505f3 100644
--- a/drivers/scsi/qla2xxx/qla_mbx.c
+++ b/drivers/scsi/qla2xxx/qla_mbx.c
@@ -56,6 +56,12 @@ qla2x00_mailbox_command(scsi_qla_host_t *vha, mbx_cmd_t *mcp)
56 56
57 DEBUG11(printk("%s(%ld): entered.\n", __func__, base_vha->host_no)); 57 DEBUG11(printk("%s(%ld): entered.\n", __func__, base_vha->host_no));
58 58
59 if (ha->flags.pci_channel_io_perm_failure) {
60 DEBUG(printk("%s(%ld): Perm failure on EEH, timeout MBX "
61 "Exiting.\n", __func__, vha->host_no));
62 return QLA_FUNCTION_TIMEOUT;
63 }
64
59 /* 65 /*
60 * Wait for active mailbox commands to finish by waiting at most tov 66 * Wait for active mailbox commands to finish by waiting at most tov
61 * seconds. This is to serialize actual issuing of mailbox cmds during 67 * seconds. This is to serialize actual issuing of mailbox cmds during
@@ -154,10 +160,14 @@ qla2x00_mailbox_command(scsi_qla_host_t *vha, mbx_cmd_t *mcp)
154 /* Check for pending interrupts. */ 160 /* Check for pending interrupts. */
155 qla2x00_poll(ha->rsp_q_map[0]); 161 qla2x00_poll(ha->rsp_q_map[0]);
156 162
157 if (command != MBC_LOAD_RISC_RAM_EXTENDED && 163 if (!ha->flags.mbox_int &&
158 !ha->flags.mbox_int) 164 !(IS_QLA2200(ha) &&
165 command == MBC_LOAD_RISC_RAM_EXTENDED))
159 msleep(10); 166 msleep(10);
160 } /* while */ 167 } /* while */
168 DEBUG17(qla_printk(KERN_WARNING, ha,
169 "Waited %d sec\n",
170 (uint)((jiffies - (wait_time - (mcp->tov * HZ)))/HZ)));
161 } 171 }
162 172
163 /* Check whether we timed out */ 173 /* Check whether we timed out */
@@ -227,7 +237,8 @@ qla2x00_mailbox_command(scsi_qla_host_t *vha, mbx_cmd_t *mcp)
227 237
228 if (rval == QLA_FUNCTION_TIMEOUT && 238 if (rval == QLA_FUNCTION_TIMEOUT &&
229 mcp->mb[0] != MBC_GEN_SYSTEM_ERROR) { 239 mcp->mb[0] != MBC_GEN_SYSTEM_ERROR) {
230 if (!io_lock_on || (mcp->flags & IOCTL_CMD)) { 240 if (!io_lock_on || (mcp->flags & IOCTL_CMD) ||
241 ha->flags.eeh_busy) {
231 /* not in dpc. schedule it for dpc to take over. */ 242 /* not in dpc. schedule it for dpc to take over. */
232 DEBUG(printk("%s(%ld): timeout schedule " 243 DEBUG(printk("%s(%ld): timeout schedule "
233 "isp_abort_needed.\n", __func__, 244 "isp_abort_needed.\n", __func__,
@@ -237,7 +248,7 @@ qla2x00_mailbox_command(scsi_qla_host_t *vha, mbx_cmd_t *mcp)
237 base_vha->host_no)); 248 base_vha->host_no));
238 qla_printk(KERN_WARNING, ha, 249 qla_printk(KERN_WARNING, ha,
239 "Mailbox command timeout occurred. Scheduling ISP " 250 "Mailbox command timeout occurred. Scheduling ISP "
240 "abort.\n"); 251 "abort. eeh_busy: 0x%x\n", ha->flags.eeh_busy);
241 set_bit(ISP_ABORT_NEEDED, &base_vha->dpc_flags); 252 set_bit(ISP_ABORT_NEEDED, &base_vha->dpc_flags);
242 qla2xxx_wake_dpc(vha); 253 qla2xxx_wake_dpc(vha);
243 } else if (!abort_active) { 254 } else if (!abort_active) {
@@ -2530,6 +2541,9 @@ qla2x00_enable_eft_trace(scsi_qla_host_t *vha, dma_addr_t eft_dma,
2530 if (!IS_FWI2_CAPABLE(vha->hw)) 2541 if (!IS_FWI2_CAPABLE(vha->hw))
2531 return QLA_FUNCTION_FAILED; 2542 return QLA_FUNCTION_FAILED;
2532 2543
2544 if (unlikely(pci_channel_offline(vha->hw->pdev)))
2545 return QLA_FUNCTION_FAILED;
2546
2533 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no)); 2547 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
2534 2548
2535 mcp->mb[0] = MBC_TRACE_CONTROL; 2549 mcp->mb[0] = MBC_TRACE_CONTROL;
@@ -2565,6 +2579,9 @@ qla2x00_disable_eft_trace(scsi_qla_host_t *vha)
2565 if (!IS_FWI2_CAPABLE(vha->hw)) 2579 if (!IS_FWI2_CAPABLE(vha->hw))
2566 return QLA_FUNCTION_FAILED; 2580 return QLA_FUNCTION_FAILED;
2567 2581
2582 if (unlikely(pci_channel_offline(vha->hw->pdev)))
2583 return QLA_FUNCTION_FAILED;
2584
2568 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no)); 2585 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
2569 2586
2570 mcp->mb[0] = MBC_TRACE_CONTROL; 2587 mcp->mb[0] = MBC_TRACE_CONTROL;
@@ -2595,6 +2612,9 @@ qla2x00_enable_fce_trace(scsi_qla_host_t *vha, dma_addr_t fce_dma,
2595 if (!IS_QLA25XX(vha->hw) && !IS_QLA81XX(vha->hw)) 2612 if (!IS_QLA25XX(vha->hw) && !IS_QLA81XX(vha->hw))
2596 return QLA_FUNCTION_FAILED; 2613 return QLA_FUNCTION_FAILED;
2597 2614
2615 if (unlikely(pci_channel_offline(vha->hw->pdev)))
2616 return QLA_FUNCTION_FAILED;
2617
2598 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no)); 2618 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
2599 2619
2600 mcp->mb[0] = MBC_TRACE_CONTROL; 2620 mcp->mb[0] = MBC_TRACE_CONTROL;
@@ -2639,6 +2659,9 @@ qla2x00_disable_fce_trace(scsi_qla_host_t *vha, uint64_t *wr, uint64_t *rd)
2639 if (!IS_FWI2_CAPABLE(vha->hw)) 2659 if (!IS_FWI2_CAPABLE(vha->hw))
2640 return QLA_FUNCTION_FAILED; 2660 return QLA_FUNCTION_FAILED;
2641 2661
2662 if (unlikely(pci_channel_offline(vha->hw->pdev)))
2663 return QLA_FUNCTION_FAILED;
2664
2642 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no)); 2665 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
2643 2666
2644 mcp->mb[0] = MBC_TRACE_CONTROL; 2667 mcp->mb[0] = MBC_TRACE_CONTROL;
@@ -3643,3 +3666,36 @@ qla2x00_write_ram_word(scsi_qla_host_t *vha, uint32_t risc_addr, uint32_t data)
3643 3666
3644 return rval; 3667 return rval;
3645} 3668}
3669
3670int
3671qla2x00_get_data_rate(scsi_qla_host_t *vha)
3672{
3673 int rval;
3674 mbx_cmd_t mc;
3675 mbx_cmd_t *mcp = &mc;
3676 struct qla_hw_data *ha = vha->hw;
3677
3678 if (!IS_FWI2_CAPABLE(ha))
3679 return QLA_FUNCTION_FAILED;
3680
3681 DEBUG11(printk(KERN_INFO "%s(%ld): entered.\n", __func__, vha->host_no));
3682
3683 mcp->mb[0] = MBC_DATA_RATE;
3684 mcp->mb[1] = 0;
3685 mcp->out_mb = MBX_1|MBX_0;
3686 mcp->in_mb = MBX_2|MBX_1|MBX_0;
3687 mcp->tov = MBX_TOV_SECONDS;
3688 mcp->flags = 0;
3689 rval = qla2x00_mailbox_command(vha, mcp);
3690 if (rval != QLA_SUCCESS) {
3691 DEBUG2_3_11(printk(KERN_INFO "%s(%ld): failed=%x mb[0]=%x.\n",
3692 __func__, vha->host_no, rval, mcp->mb[0]));
3693 } else {
3694 DEBUG11(printk(KERN_INFO
3695 "%s(%ld): done.\n", __func__, vha->host_no));
3696 if (mcp->mb[1] != 0x7)
3697 ha->link_data_rate = mcp->mb[1];
3698 }
3699
3700 return rval;
3701}
diff --git a/drivers/scsi/qla2xxx/qla_mid.c b/drivers/scsi/qla2xxx/qla_mid.c
index 2a4c7f4e7b69..ff17dee28613 100644
--- a/drivers/scsi/qla2xxx/qla_mid.c
+++ b/drivers/scsi/qla2xxx/qla_mid.c
@@ -636,11 +636,15 @@ failed:
636 636
637static void qla_do_work(struct work_struct *work) 637static void qla_do_work(struct work_struct *work)
638{ 638{
639 unsigned long flags;
639 struct rsp_que *rsp = container_of(work, struct rsp_que, q_work); 640 struct rsp_que *rsp = container_of(work, struct rsp_que, q_work);
640 struct scsi_qla_host *vha; 641 struct scsi_qla_host *vha;
642 struct qla_hw_data *ha = rsp->hw;
641 643
642 vha = qla25xx_get_host(rsp); 644 spin_lock_irqsave(&rsp->hw->hardware_lock, flags);
645 vha = pci_get_drvdata(ha->pdev);
643 qla24xx_process_response_queue(vha, rsp); 646 qla24xx_process_response_queue(vha, rsp);
647 spin_unlock_irqrestore(&rsp->hw->hardware_lock, flags);
644} 648}
645 649
646/* create response queue */ 650/* create response queue */
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 2f873d237325..8529eb1f3cd4 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -475,11 +475,11 @@ qla2xxx_queuecommand(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
475 srb_t *sp; 475 srb_t *sp;
476 int rval; 476 int rval;
477 477
478 if (unlikely(pci_channel_offline(ha->pdev))) { 478 if (ha->flags.eeh_busy) {
479 if (ha->pdev->error_state == pci_channel_io_frozen) 479 if (ha->flags.pci_channel_io_perm_failure)
480 cmd->result = DID_REQUEUE << 16;
481 else
482 cmd->result = DID_NO_CONNECT << 16; 480 cmd->result = DID_NO_CONNECT << 16;
481 else
482 cmd->result = DID_REQUEUE << 16;
483 goto qc24_fail_command; 483 goto qc24_fail_command;
484 } 484 }
485 485
@@ -552,8 +552,15 @@ qla2x00_eh_wait_on_command(struct scsi_cmnd *cmd)
552#define ABORT_POLLING_PERIOD 1000 552#define ABORT_POLLING_PERIOD 1000
553#define ABORT_WAIT_ITER ((10 * 1000) / (ABORT_POLLING_PERIOD)) 553#define ABORT_WAIT_ITER ((10 * 1000) / (ABORT_POLLING_PERIOD))
554 unsigned long wait_iter = ABORT_WAIT_ITER; 554 unsigned long wait_iter = ABORT_WAIT_ITER;
555 scsi_qla_host_t *vha = shost_priv(cmd->device->host);
556 struct qla_hw_data *ha = vha->hw;
555 int ret = QLA_SUCCESS; 557 int ret = QLA_SUCCESS;
556 558
559 if (unlikely(pci_channel_offline(ha->pdev)) || ha->flags.eeh_busy) {
560 DEBUG17(qla_printk(KERN_WARNING, ha, "return:eh_wait\n"));
561 return ret;
562 }
563
557 while (CMD_SP(cmd) && wait_iter--) { 564 while (CMD_SP(cmd) && wait_iter--) {
558 msleep(ABORT_POLLING_PERIOD); 565 msleep(ABORT_POLLING_PERIOD);
559 } 566 }
@@ -1181,7 +1188,6 @@ qla2xxx_slave_configure(struct scsi_device *sdev)
1181 scsi_qla_host_t *vha = shost_priv(sdev->host); 1188 scsi_qla_host_t *vha = shost_priv(sdev->host);
1182 struct qla_hw_data *ha = vha->hw; 1189 struct qla_hw_data *ha = vha->hw;
1183 struct fc_rport *rport = starget_to_rport(sdev->sdev_target); 1190 struct fc_rport *rport = starget_to_rport(sdev->sdev_target);
1184 fc_port_t *fcport = *(fc_port_t **)rport->dd_data;
1185 struct req_que *req = vha->req; 1191 struct req_que *req = vha->req;
1186 1192
1187 if (sdev->tagged_supported) 1193 if (sdev->tagged_supported)
@@ -1190,8 +1196,6 @@ qla2xxx_slave_configure(struct scsi_device *sdev)
1190 scsi_deactivate_tcq(sdev, req->max_q_depth); 1196 scsi_deactivate_tcq(sdev, req->max_q_depth);
1191 1197
1192 rport->dev_loss_tmo = ha->port_down_retry_count; 1198 rport->dev_loss_tmo = ha->port_down_retry_count;
1193 if (sdev->type == TYPE_TAPE)
1194 fcport->flags |= FCF_TAPE_PRESENT;
1195 1199
1196 return 0; 1200 return 0;
1197} 1201}
@@ -1810,6 +1814,13 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
1810 1814
1811 /* Set ISP-type information. */ 1815 /* Set ISP-type information. */
1812 qla2x00_set_isp_flags(ha); 1816 qla2x00_set_isp_flags(ha);
1817
1818 /* Set EEH reset type to fundamental if required by hba */
1819 if ( IS_QLA24XX(ha) || IS_QLA25XX(ha) || IS_QLA81XX(ha)) {
1820 pdev->needs_freset = 1;
1821 pci_save_state(pdev);
1822 }
1823
1813 /* Configure PCI I/O space */ 1824 /* Configure PCI I/O space */
1814 ret = qla2x00_iospace_config(ha); 1825 ret = qla2x00_iospace_config(ha);
1815 if (ret) 1826 if (ret)
@@ -2174,6 +2185,24 @@ qla2x00_free_device(scsi_qla_host_t *vha)
2174{ 2185{
2175 struct qla_hw_data *ha = vha->hw; 2186 struct qla_hw_data *ha = vha->hw;
2176 2187
2188 qla2x00_abort_all_cmds(vha, DID_NO_CONNECT << 16);
2189
2190 /* Disable timer */
2191 if (vha->timer_active)
2192 qla2x00_stop_timer(vha);
2193
2194 /* Kill the kernel thread for this host */
2195 if (ha->dpc_thread) {
2196 struct task_struct *t = ha->dpc_thread;
2197
2198 /*
2199 * qla2xxx_wake_dpc checks for ->dpc_thread
2200 * so we need to zero it out.
2201 */
2202 ha->dpc_thread = NULL;
2203 kthread_stop(t);
2204 }
2205
2177 qla25xx_delete_queues(vha); 2206 qla25xx_delete_queues(vha);
2178 2207
2179 if (ha->flags.fce_enabled) 2208 if (ha->flags.fce_enabled)
@@ -2185,6 +2214,8 @@ qla2x00_free_device(scsi_qla_host_t *vha)
2185 /* Stop currently executing firmware. */ 2214 /* Stop currently executing firmware. */
2186 qla2x00_try_to_stop_firmware(vha); 2215 qla2x00_try_to_stop_firmware(vha);
2187 2216
2217 vha->flags.online = 0;
2218
2188 /* turn-off interrupts on the card */ 2219 /* turn-off interrupts on the card */
2189 if (ha->interrupts_on) 2220 if (ha->interrupts_on)
2190 ha->isp_ops->disable_intrs(ha); 2221 ha->isp_ops->disable_intrs(ha);
@@ -2771,7 +2802,7 @@ void qla2x00_relogin(struct scsi_qla_host *vha)
2771 2802
2772 fcport->login_retry--; 2803 fcport->login_retry--;
2773 if (fcport->flags & FCF_FABRIC_DEVICE) { 2804 if (fcport->flags & FCF_FABRIC_DEVICE) {
2774 if (fcport->flags & FCF_TAPE_PRESENT) 2805 if (fcport->flags & FCF_FCP2_DEVICE)
2775 ha->isp_ops->fabric_logout(vha, 2806 ha->isp_ops->fabric_logout(vha,
2776 fcport->loop_id, 2807 fcport->loop_id,
2777 fcport->d_id.b.domain, 2808 fcport->d_id.b.domain,
@@ -2859,6 +2890,13 @@ qla2x00_do_dpc(void *data)
2859 if (!base_vha->flags.init_done) 2890 if (!base_vha->flags.init_done)
2860 continue; 2891 continue;
2861 2892
2893 if (ha->flags.eeh_busy) {
2894 DEBUG17(qla_printk(KERN_WARNING, ha,
2895 "qla2x00_do_dpc: dpc_flags: %lx\n",
2896 base_vha->dpc_flags));
2897 continue;
2898 }
2899
2862 DEBUG3(printk("scsi(%ld): DPC handler\n", base_vha->host_no)); 2900 DEBUG3(printk("scsi(%ld): DPC handler\n", base_vha->host_no));
2863 2901
2864 ha->dpc_active = 1; 2902 ha->dpc_active = 1;
@@ -3049,8 +3087,13 @@ qla2x00_timer(scsi_qla_host_t *vha)
3049 int index; 3087 int index;
3050 srb_t *sp; 3088 srb_t *sp;
3051 int t; 3089 int t;
3090 uint16_t w;
3052 struct qla_hw_data *ha = vha->hw; 3091 struct qla_hw_data *ha = vha->hw;
3053 struct req_que *req; 3092 struct req_que *req;
3093
3094 /* Hardware read to raise pending EEH errors during mailbox waits. */
3095 if (!pci_channel_offline(ha->pdev))
3096 pci_read_config_word(ha->pdev, PCI_VENDOR_ID, &w);
3054 /* 3097 /*
3055 * Ports - Port down timer. 3098 * Ports - Port down timer.
3056 * 3099 *
@@ -3095,7 +3138,10 @@ qla2x00_timer(scsi_qla_host_t *vha)
3095 if (!IS_QLA2100(ha) && vha->link_down_timeout) 3138 if (!IS_QLA2100(ha) && vha->link_down_timeout)
3096 atomic_set(&vha->loop_state, LOOP_DEAD); 3139 atomic_set(&vha->loop_state, LOOP_DEAD);
3097 3140
3098 /* Schedule an ISP abort to return any tape commands. */ 3141 /*
3142 * Schedule an ISP abort to return any FCP2-device
3143 * commands.
3144 */
3099 /* NPIV - scan physical port only */ 3145 /* NPIV - scan physical port only */
3100 if (!vha->vp_idx) { 3146 if (!vha->vp_idx) {
3101 spin_lock_irqsave(&ha->hardware_lock, 3147 spin_lock_irqsave(&ha->hardware_lock,
@@ -3112,7 +3158,7 @@ qla2x00_timer(scsi_qla_host_t *vha)
3112 if (sp->ctx) 3158 if (sp->ctx)
3113 continue; 3159 continue;
3114 sfcp = sp->fcport; 3160 sfcp = sp->fcport;
3115 if (!(sfcp->flags & FCF_TAPE_PRESENT)) 3161 if (!(sfcp->flags & FCF_FCP2_DEVICE))
3116 continue; 3162 continue;
3117 3163
3118 set_bit(ISP_ABORT_NEEDED, 3164 set_bit(ISP_ABORT_NEEDED,
@@ -3252,16 +3298,23 @@ qla2x00_release_firmware(void)
3252static pci_ers_result_t 3298static pci_ers_result_t
3253qla2xxx_pci_error_detected(struct pci_dev *pdev, pci_channel_state_t state) 3299qla2xxx_pci_error_detected(struct pci_dev *pdev, pci_channel_state_t state)
3254{ 3300{
3255 scsi_qla_host_t *base_vha = pci_get_drvdata(pdev); 3301 scsi_qla_host_t *vha = pci_get_drvdata(pdev);
3302 struct qla_hw_data *ha = vha->hw;
3303
3304 DEBUG2(qla_printk(KERN_WARNING, ha, "error_detected:state %x\n",
3305 state));
3256 3306
3257 switch (state) { 3307 switch (state) {
3258 case pci_channel_io_normal: 3308 case pci_channel_io_normal:
3309 ha->flags.eeh_busy = 0;
3259 return PCI_ERS_RESULT_CAN_RECOVER; 3310 return PCI_ERS_RESULT_CAN_RECOVER;
3260 case pci_channel_io_frozen: 3311 case pci_channel_io_frozen:
3312 ha->flags.eeh_busy = 1;
3261 pci_disable_device(pdev); 3313 pci_disable_device(pdev);
3262 return PCI_ERS_RESULT_NEED_RESET; 3314 return PCI_ERS_RESULT_NEED_RESET;
3263 case pci_channel_io_perm_failure: 3315 case pci_channel_io_perm_failure:
3264 qla2x00_abort_all_cmds(base_vha, DID_NO_CONNECT << 16); 3316 ha->flags.pci_channel_io_perm_failure = 1;
3317 qla2x00_abort_all_cmds(vha, DID_NO_CONNECT << 16);
3265 return PCI_ERS_RESULT_DISCONNECT; 3318 return PCI_ERS_RESULT_DISCONNECT;
3266 } 3319 }
3267 return PCI_ERS_RESULT_NEED_RESET; 3320 return PCI_ERS_RESULT_NEED_RESET;
@@ -3312,6 +3365,8 @@ qla2xxx_pci_slot_reset(struct pci_dev *pdev)
3312 struct qla_hw_data *ha = base_vha->hw; 3365 struct qla_hw_data *ha = base_vha->hw;
3313 int rc; 3366 int rc;
3314 3367
3368 DEBUG17(qla_printk(KERN_WARNING, ha, "slot_reset\n"));
3369
3315 if (ha->mem_only) 3370 if (ha->mem_only)
3316 rc = pci_enable_device_mem(pdev); 3371 rc = pci_enable_device_mem(pdev);
3317 else 3372 else
@@ -3320,19 +3375,33 @@ qla2xxx_pci_slot_reset(struct pci_dev *pdev)
3320 if (rc) { 3375 if (rc) {
3321 qla_printk(KERN_WARNING, ha, 3376 qla_printk(KERN_WARNING, ha,
3322 "Can't re-enable PCI device after reset.\n"); 3377 "Can't re-enable PCI device after reset.\n");
3323
3324 return ret; 3378 return ret;
3325 } 3379 }
3326 pci_set_master(pdev);
3327 3380
3328 if (ha->isp_ops->pci_config(base_vha)) 3381 if (ha->isp_ops->pci_config(base_vha))
3329 return ret; 3382 return ret;
3330 3383
3384#ifdef QL_DEBUG_LEVEL_17
3385 {
3386 uint8_t b;
3387 uint32_t i;
3388
3389 printk("slot_reset_1: ");
3390 for (i = 0; i < 256; i++) {
3391 pci_read_config_byte(ha->pdev, i, &b);
3392 printk("%s%02x", (i%16) ? " " : "\n", b);
3393 }
3394 printk("\n");
3395 }
3396#endif
3331 set_bit(ABORT_ISP_ACTIVE, &base_vha->dpc_flags); 3397 set_bit(ABORT_ISP_ACTIVE, &base_vha->dpc_flags);
3332 if (qla2x00_abort_isp(base_vha) == QLA_SUCCESS) 3398 if (qla2x00_abort_isp(base_vha) == QLA_SUCCESS)
3333 ret = PCI_ERS_RESULT_RECOVERED; 3399 ret = PCI_ERS_RESULT_RECOVERED;
3334 clear_bit(ABORT_ISP_ACTIVE, &base_vha->dpc_flags); 3400 clear_bit(ABORT_ISP_ACTIVE, &base_vha->dpc_flags);
3335 3401
3402 DEBUG17(qla_printk(KERN_WARNING, ha,
3403 "slot_reset-return:ret=%x\n", ret));
3404
3336 return ret; 3405 return ret;
3337} 3406}
3338 3407
@@ -3343,12 +3412,17 @@ qla2xxx_pci_resume(struct pci_dev *pdev)
3343 struct qla_hw_data *ha = base_vha->hw; 3412 struct qla_hw_data *ha = base_vha->hw;
3344 int ret; 3413 int ret;
3345 3414
3415 DEBUG17(qla_printk(KERN_WARNING, ha, "pci_resume\n"));
3416
3346 ret = qla2x00_wait_for_hba_online(base_vha); 3417 ret = qla2x00_wait_for_hba_online(base_vha);
3347 if (ret != QLA_SUCCESS) { 3418 if (ret != QLA_SUCCESS) {
3348 qla_printk(KERN_ERR, ha, 3419 qla_printk(KERN_ERR, ha,
3349 "the device failed to resume I/O " 3420 "the device failed to resume I/O "
3350 "from slot/link_reset"); 3421 "from slot/link_reset");
3351 } 3422 }
3423
3424 ha->flags.eeh_busy = 0;
3425
3352 pci_cleanup_aer_uncorrect_error_status(pdev); 3426 pci_cleanup_aer_uncorrect_error_status(pdev);
3353} 3427}
3354 3428
diff --git a/drivers/scsi/qla2xxx/qla_sup.c b/drivers/scsi/qla2xxx/qla_sup.c
index 010e69b29afe..371dc895972a 100644
--- a/drivers/scsi/qla2xxx/qla_sup.c
+++ b/drivers/scsi/qla2xxx/qla_sup.c
@@ -2292,11 +2292,14 @@ qla25xx_read_optrom_data(struct scsi_qla_host *vha, uint8_t *buf,
2292 uint32_t faddr, left, burst; 2292 uint32_t faddr, left, burst;
2293 struct qla_hw_data *ha = vha->hw; 2293 struct qla_hw_data *ha = vha->hw;
2294 2294
2295 if (IS_QLA25XX(ha) || IS_QLA81XX(ha))
2296 goto try_fast;
2295 if (offset & 0xfff) 2297 if (offset & 0xfff)
2296 goto slow_read; 2298 goto slow_read;
2297 if (length < OPTROM_BURST_SIZE) 2299 if (length < OPTROM_BURST_SIZE)
2298 goto slow_read; 2300 goto slow_read;
2299 2301
2302try_fast:
2300 optrom = dma_alloc_coherent(&ha->pdev->dev, OPTROM_BURST_SIZE, 2303 optrom = dma_alloc_coherent(&ha->pdev->dev, OPTROM_BURST_SIZE,
2301 &optrom_dma, GFP_KERNEL); 2304 &optrom_dma, GFP_KERNEL);
2302 if (!optrom) { 2305 if (!optrom) {
diff --git a/drivers/scsi/qla2xxx/qla_version.h b/drivers/scsi/qla2xxx/qla_version.h
index c482220f7eed..ed36279a33c1 100644
--- a/drivers/scsi/qla2xxx/qla_version.h
+++ b/drivers/scsi/qla2xxx/qla_version.h
@@ -7,7 +7,7 @@
7/* 7/*
8 * Driver version 8 * Driver version
9 */ 9 */
10#define QLA2XXX_VERSION "8.03.01-k8" 10#define QLA2XXX_VERSION "8.03.01-k10"
11 11
12#define QLA_DRIVER_MAJOR_VER 8 12#define QLA_DRIVER_MAJOR_VER 8
13#define QLA_DRIVER_MINOR_VER 3 13#define QLA_DRIVER_MINOR_VER 3
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index d8927681ec88..c6642423cc67 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -749,9 +749,9 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes)
749 */ 749 */
750 req->next_rq->resid_len = scsi_in(cmd)->resid; 750 req->next_rq->resid_len = scsi_in(cmd)->resid;
751 751
752 scsi_release_buffers(cmd);
752 blk_end_request_all(req, 0); 753 blk_end_request_all(req, 0);
753 754
754 scsi_release_buffers(cmd);
755 scsi_next_command(cmd); 755 scsi_next_command(cmd);
756 return; 756 return;
757 } 757 }
diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c
index ddfcecd5099f..653f22a8deb9 100644
--- a/drivers/scsi/scsi_transport_fc.c
+++ b/drivers/scsi/scsi_transport_fc.c
@@ -3527,7 +3527,10 @@ fc_bsg_job_timeout(struct request *req)
3527 if (!done && i->f->bsg_timeout) { 3527 if (!done && i->f->bsg_timeout) {
3528 /* call LLDD to abort the i/o as it has timed out */ 3528 /* call LLDD to abort the i/o as it has timed out */
3529 err = i->f->bsg_timeout(job); 3529 err = i->f->bsg_timeout(job);
3530 if (err) 3530 if (err == -EAGAIN) {
3531 job->ref_cnt--;
3532 return BLK_EH_RESET_TIMER;
3533 } else if (err)
3531 printk(KERN_ERR "ERROR: FC BSG request timeout - LLD " 3534 printk(KERN_ERR "ERROR: FC BSG request timeout - LLD "
3532 "abort failed with status %d\n", err); 3535 "abort failed with status %d\n", err);
3533 } 3536 }
diff --git a/drivers/scsi/stex.c b/drivers/scsi/stex.c
index 3058bb1aff95..fd7b15be7640 100644
--- a/drivers/scsi/stex.c
+++ b/drivers/scsi/stex.c
@@ -623,6 +623,11 @@ stex_queuecommand(struct scsi_cmnd *cmd, void (* done)(struct scsi_cmnd *))
623 } 623 }
624 break; 624 break;
625 case INQUIRY: 625 case INQUIRY:
626 if (lun >= host->max_lun) {
627 cmd->result = DID_NO_CONNECT << 16;
628 done(cmd);
629 return 0;
630 }
626 if (id != host->max_id - 1) 631 if (id != host->max_id - 1)
627 break; 632 break;
628 if (!lun && !cmd->device->channel && 633 if (!lun && !cmd->device->channel &&
diff --git a/drivers/serial/21285.c b/drivers/serial/21285.c
index 1e3d19397a59..8681f1345056 100644
--- a/drivers/serial/21285.c
+++ b/drivers/serial/21285.c
@@ -58,7 +58,7 @@ static const char serial21285_name[] = "Footbridge UART";
58static void serial21285_stop_tx(struct uart_port *port) 58static void serial21285_stop_tx(struct uart_port *port)
59{ 59{
60 if (tx_enabled(port)) { 60 if (tx_enabled(port)) {
61 disable_irq(IRQ_CONTX); 61 disable_irq_nosync(IRQ_CONTX);
62 tx_enabled(port) = 0; 62 tx_enabled(port) = 0;
63 } 63 }
64} 64}
@@ -74,7 +74,7 @@ static void serial21285_start_tx(struct uart_port *port)
74static void serial21285_stop_rx(struct uart_port *port) 74static void serial21285_stop_rx(struct uart_port *port)
75{ 75{
76 if (rx_enabled(port)) { 76 if (rx_enabled(port)) {
77 disable_irq(IRQ_CONRX); 77 disable_irq_nosync(IRQ_CONRX);
78 rx_enabled(port) = 0; 78 rx_enabled(port) = 0;
79 } 79 }
80} 80}
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index c3e37c8e7e26..e9b15c3746fa 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -83,6 +83,9 @@ static unsigned int skip_txen_test; /* force skip of txen test at init time */
83 83
84#define PASS_LIMIT 256 84#define PASS_LIMIT 256
85 85
86#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE)
87
88
86/* 89/*
87 * We default to IRQ0 for the "no irq" hack. Some 90 * We default to IRQ0 for the "no irq" hack. Some
88 * machine types want others as well - they're free 91 * machine types want others as well - they're free
@@ -1792,7 +1795,7 @@ static unsigned int serial8250_tx_empty(struct uart_port *port)
1792 up->lsr_saved_flags |= lsr & LSR_SAVE_FLAGS; 1795 up->lsr_saved_flags |= lsr & LSR_SAVE_FLAGS;
1793 spin_unlock_irqrestore(&up->port.lock, flags); 1796 spin_unlock_irqrestore(&up->port.lock, flags);
1794 1797
1795 return lsr & UART_LSR_TEMT ? TIOCSER_TEMT : 0; 1798 return (lsr & BOTH_EMPTY) == BOTH_EMPTY ? TIOCSER_TEMT : 0;
1796} 1799}
1797 1800
1798static unsigned int serial8250_get_mctrl(struct uart_port *port) 1801static unsigned int serial8250_get_mctrl(struct uart_port *port)
@@ -1850,8 +1853,6 @@ static void serial8250_break_ctl(struct uart_port *port, int break_state)
1850 spin_unlock_irqrestore(&up->port.lock, flags); 1853 spin_unlock_irqrestore(&up->port.lock, flags);
1851} 1854}
1852 1855
1853#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE)
1854
1855/* 1856/*
1856 * Wait for transmitter & holding register to empty 1857 * Wait for transmitter & holding register to empty
1857 */ 1858 */
diff --git a/drivers/serial/8250_pnp.c b/drivers/serial/8250_pnp.c
index 36ede02ceacf..24485cc62ff8 100644
--- a/drivers/serial/8250_pnp.c
+++ b/drivers/serial/8250_pnp.c
@@ -328,15 +328,7 @@ static const struct pnp_device_id pnp_dev_table[] = {
328 /* U.S. Robotics 56K Voice INT PnP*/ 328 /* U.S. Robotics 56K Voice INT PnP*/
329 { "USR9190", 0 }, 329 { "USR9190", 0 },
330 /* Wacom tablets */ 330 /* Wacom tablets */
331 { "WACF004", 0 }, 331 { "WACFXXX", 0 },
332 { "WACF005", 0 },
333 { "WACF006", 0 },
334 { "WACF007", 0 },
335 { "WACF008", 0 },
336 { "WACF009", 0 },
337 { "WACF00A", 0 },
338 { "WACF00B", 0 },
339 { "WACF00C", 0 },
340 /* Compaq touchscreen */ 332 /* Compaq touchscreen */
341 { "FPI2002", 0 }, 333 { "FPI2002", 0 },
342 /* Fujitsu Stylistic touchscreens */ 334 /* Fujitsu Stylistic touchscreens */
@@ -354,6 +346,8 @@ static const struct pnp_device_id pnp_dev_table[] = {
354 { "FUJ02E5", 0 }, 346 { "FUJ02E5", 0 },
355 /* Fujitsu P-series tablet PC device */ 347 /* Fujitsu P-series tablet PC device */
356 { "FUJ02E6", 0 }, 348 { "FUJ02E6", 0 },
349 /* Fujitsu Wacom 2FGT Tablet PC device */
350 { "FUJ02E7", 0 },
357 /* 351 /*
358 * LG C1 EXPRESS DUAL (C1-PB11A3) touch screen (actually a FUJ02E6 in 352 * LG C1 EXPRESS DUAL (C1-PB11A3) touch screen (actually a FUJ02E6 in
359 * disguise) 353 * disguise)
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c
index 18130f11238e..60d665a17a88 100644
--- a/drivers/serial/imx.c
+++ b/drivers/serial/imx.c
@@ -1088,7 +1088,7 @@ imx_console_get_options(struct imx_port *sport, int *baud,
1088 int *parity, int *bits) 1088 int *parity, int *bits)
1089{ 1089{
1090 1090
1091 if ( readl(sport->port.membase + UCR1) | UCR1_UARTEN ) { 1091 if (readl(sport->port.membase + UCR1) & UCR1_UARTEN) {
1092 /* ok, the port was enabled */ 1092 /* ok, the port was enabled */
1093 unsigned int ucr2, ubir,ubmr, uartclk; 1093 unsigned int ucr2, ubir,ubmr, uartclk;
1094 unsigned int baud_raw; 1094 unsigned int baud_raw;
diff --git a/drivers/serial/pmac_zilog.c b/drivers/serial/pmac_zilog.c
index 0700cd10b97c..683e66f18e8c 100644
--- a/drivers/serial/pmac_zilog.c
+++ b/drivers/serial/pmac_zilog.c
@@ -411,6 +411,17 @@ static void pmz_transmit_chars(struct uart_pmac_port *uap)
411 goto ack_tx_int; 411 goto ack_tx_int;
412 } 412 }
413 413
414 /* Under some circumstances, we see interrupts reported for
415 * a closed channel. The interrupt mask in R1 is clear, but
416 * R3 still signals the interrupts and we see them when taking
417 * an interrupt for the other channel (this could be a qemu
418 * bug but since the ESCC doc doesn't specify precsiely whether
419 * R3 interrup status bits are masked by R1 interrupt enable
420 * bits, better safe than sorry). --BenH.
421 */
422 if (!ZS_IS_OPEN(uap))
423 goto ack_tx_int;
424
414 if (uap->port.x_char) { 425 if (uap->port.x_char) {
415 uap->flags |= PMACZILOG_FLAG_TX_ACTIVE; 426 uap->flags |= PMACZILOG_FLAG_TX_ACTIVE;
416 write_zsdata(uap, uap->port.x_char); 427 write_zsdata(uap, uap->port.x_char);
diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c
index 047530b285bb..7f2830709512 100644
--- a/drivers/serial/serial_core.c
+++ b/drivers/serial/serial_core.c
@@ -385,13 +385,20 @@ uart_get_baud_rate(struct uart_port *port, struct ktermios *termios,
385 } 385 }
386 386
387 /* 387 /*
388 * As a last resort, if the quotient is zero, 388 * As a last resort, if the range cannot be met then clip to
389 * default to 9600 bps 389 * the nearest chip supported rate.
390 */ 390 */
391 if (!hung_up) 391 if (!hung_up) {
392 tty_termios_encode_baud_rate(termios, 9600, 9600); 392 if (baud <= min)
393 tty_termios_encode_baud_rate(termios,
394 min + 1, min + 1);
395 else
396 tty_termios_encode_baud_rate(termios,
397 max - 1, max - 1);
398 }
393 } 399 }
394 400 /* Should never happen */
401 WARN_ON(1);
395 return 0; 402 return 0;
396} 403}
397 404
@@ -2006,12 +2013,6 @@ int uart_suspend_port(struct uart_driver *drv, struct uart_port *uport)
2006 2013
2007 mutex_lock(&port->mutex); 2014 mutex_lock(&port->mutex);
2008 2015
2009 if (!console_suspend_enabled && uart_console(uport)) {
2010 /* we're going to avoid suspending serial console */
2011 mutex_unlock(&port->mutex);
2012 return 0;
2013 }
2014
2015 tty_dev = device_find_child(uport->dev, &match, serial_match_port); 2016 tty_dev = device_find_child(uport->dev, &match, serial_match_port);
2016 if (device_may_wakeup(tty_dev)) { 2017 if (device_may_wakeup(tty_dev)) {
2017 enable_irq_wake(uport->irq); 2018 enable_irq_wake(uport->irq);
@@ -2019,20 +2020,23 @@ int uart_suspend_port(struct uart_driver *drv, struct uart_port *uport)
2019 mutex_unlock(&port->mutex); 2020 mutex_unlock(&port->mutex);
2020 return 0; 2021 return 0;
2021 } 2022 }
2022 uport->suspended = 1; 2023 if (console_suspend_enabled || !uart_console(uport))
2024 uport->suspended = 1;
2023 2025
2024 if (port->flags & ASYNC_INITIALIZED) { 2026 if (port->flags & ASYNC_INITIALIZED) {
2025 const struct uart_ops *ops = uport->ops; 2027 const struct uart_ops *ops = uport->ops;
2026 int tries; 2028 int tries;
2027 2029
2028 set_bit(ASYNCB_SUSPENDED, &port->flags); 2030 if (console_suspend_enabled || !uart_console(uport)) {
2029 clear_bit(ASYNCB_INITIALIZED, &port->flags); 2031 set_bit(ASYNCB_SUSPENDED, &port->flags);
2032 clear_bit(ASYNCB_INITIALIZED, &port->flags);
2030 2033
2031 spin_lock_irq(&uport->lock); 2034 spin_lock_irq(&uport->lock);
2032 ops->stop_tx(uport); 2035 ops->stop_tx(uport);
2033 ops->set_mctrl(uport, 0); 2036 ops->set_mctrl(uport, 0);
2034 ops->stop_rx(uport); 2037 ops->stop_rx(uport);
2035 spin_unlock_irq(&uport->lock); 2038 spin_unlock_irq(&uport->lock);
2039 }
2036 2040
2037 /* 2041 /*
2038 * Wait for the transmitter to empty. 2042 * Wait for the transmitter to empty.
@@ -2047,16 +2051,18 @@ int uart_suspend_port(struct uart_driver *drv, struct uart_port *uport)
2047 drv->dev_name, 2051 drv->dev_name,
2048 drv->tty_driver->name_base + uport->line); 2052 drv->tty_driver->name_base + uport->line);
2049 2053
2050 ops->shutdown(uport); 2054 if (console_suspend_enabled || !uart_console(uport))
2055 ops->shutdown(uport);
2051 } 2056 }
2052 2057
2053 /* 2058 /*
2054 * Disable the console device before suspending. 2059 * Disable the console device before suspending.
2055 */ 2060 */
2056 if (uart_console(uport)) 2061 if (console_suspend_enabled && uart_console(uport))
2057 console_stop(uport->cons); 2062 console_stop(uport->cons);
2058 2063
2059 uart_change_pm(state, 3); 2064 if (console_suspend_enabled || !uart_console(uport))
2065 uart_change_pm(state, 3);
2060 2066
2061 mutex_unlock(&port->mutex); 2067 mutex_unlock(&port->mutex);
2062 2068
@@ -2073,29 +2079,6 @@ int uart_resume_port(struct uart_driver *drv, struct uart_port *uport)
2073 2079
2074 mutex_lock(&port->mutex); 2080 mutex_lock(&port->mutex);
2075 2081
2076 if (!console_suspend_enabled && uart_console(uport)) {
2077 /* no need to resume serial console, it wasn't suspended */
2078 /*
2079 * First try to use the console cflag setting.
2080 */
2081 memset(&termios, 0, sizeof(struct ktermios));
2082 termios.c_cflag = uport->cons->cflag;
2083 /*
2084 * If that's unset, use the tty termios setting.
2085 */
2086 if (termios.c_cflag == 0)
2087 termios = *state->port.tty->termios;
2088 else {
2089 termios.c_ispeed = termios.c_ospeed =
2090 tty_termios_input_baud_rate(&termios);
2091 termios.c_ispeed = termios.c_ospeed =
2092 tty_termios_baud_rate(&termios);
2093 }
2094 uport->ops->set_termios(uport, &termios, NULL);
2095 mutex_unlock(&port->mutex);
2096 return 0;
2097 }
2098
2099 tty_dev = device_find_child(uport->dev, &match, serial_match_port); 2082 tty_dev = device_find_child(uport->dev, &match, serial_match_port);
2100 if (!uport->suspended && device_may_wakeup(tty_dev)) { 2083 if (!uport->suspended && device_may_wakeup(tty_dev)) {
2101 disable_irq_wake(uport->irq); 2084 disable_irq_wake(uport->irq);
@@ -2121,21 +2104,23 @@ int uart_resume_port(struct uart_driver *drv, struct uart_port *uport)
2121 spin_lock_irq(&uport->lock); 2104 spin_lock_irq(&uport->lock);
2122 ops->set_mctrl(uport, 0); 2105 ops->set_mctrl(uport, 0);
2123 spin_unlock_irq(&uport->lock); 2106 spin_unlock_irq(&uport->lock);
2124 ret = ops->startup(uport); 2107 if (console_suspend_enabled || !uart_console(uport)) {
2125 if (ret == 0) { 2108 ret = ops->startup(uport);
2126 uart_change_speed(state, NULL); 2109 if (ret == 0) {
2127 spin_lock_irq(&uport->lock); 2110 uart_change_speed(state, NULL);
2128 ops->set_mctrl(uport, uport->mctrl); 2111 spin_lock_irq(&uport->lock);
2129 ops->start_tx(uport); 2112 ops->set_mctrl(uport, uport->mctrl);
2130 spin_unlock_irq(&uport->lock); 2113 ops->start_tx(uport);
2131 set_bit(ASYNCB_INITIALIZED, &port->flags); 2114 spin_unlock_irq(&uport->lock);
2132 } else { 2115 set_bit(ASYNCB_INITIALIZED, &port->flags);
2133 /* 2116 } else {
2134 * Failed to resume - maybe hardware went away? 2117 /*
2135 * Clear the "initialized" flag so we won't try 2118 * Failed to resume - maybe hardware went away?
2136 * to call the low level drivers shutdown method. 2119 * Clear the "initialized" flag so we won't try
2137 */ 2120 * to call the low level drivers shutdown method.
2138 uart_shutdown(state); 2121 */
2122 uart_shutdown(state);
2123 }
2139 } 2124 }
2140 2125
2141 clear_bit(ASYNCB_SUSPENDED, &port->flags); 2126 clear_bit(ASYNCB_SUSPENDED, &port->flags);
diff --git a/drivers/serial/serial_cs.c b/drivers/serial/serial_cs.c
index fc413f0f8dd2..95421fa3b304 100644
--- a/drivers/serial/serial_cs.c
+++ b/drivers/serial/serial_cs.c
@@ -146,7 +146,8 @@ static void quirk_wakeup_oxsemi(struct pcmcia_device *link)
146{ 146{
147 struct serial_info *info = link->priv; 147 struct serial_info *info = link->priv;
148 148
149 outb(12, info->c950ctrl + 1); 149 if (info->c950ctrl)
150 outb(12, info->c950ctrl + 1);
150} 151}
151 152
152/* request_region? oxsemi branch does no request_region too... */ 153/* request_region? oxsemi branch does no request_region too... */
@@ -757,6 +758,7 @@ static struct pcmcia_device_id serial_ids[] = {
757 PCMCIA_PFC_DEVICE_PROD_ID12(1, "PCMCIAs", "LanModem", 0xdcfe12d3, 0xc67c648f), 758 PCMCIA_PFC_DEVICE_PROD_ID12(1, "PCMCIAs", "LanModem", 0xdcfe12d3, 0xc67c648f),
758 PCMCIA_PFC_DEVICE_PROD_ID12(1, "TDK", "GlobalNetworker 3410/3412", 0x1eae9475, 0xd9a93bed), 759 PCMCIA_PFC_DEVICE_PROD_ID12(1, "TDK", "GlobalNetworker 3410/3412", 0x1eae9475, 0xd9a93bed),
759 PCMCIA_PFC_DEVICE_PROD_ID12(1, "Xircom", "CreditCard Ethernet+Modem II", 0x2e3ee845, 0xeca401bf), 760 PCMCIA_PFC_DEVICE_PROD_ID12(1, "Xircom", "CreditCard Ethernet+Modem II", 0x2e3ee845, 0xeca401bf),
761 PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0032, 0x0e01),
760 PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0032, 0x0a05), 762 PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0032, 0x0a05),
761 PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0032, 0x1101), 763 PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0032, 0x1101),
762 PCMCIA_MFC_DEVICE_MANF_CARD(0, 0x0104, 0x0070), 764 PCMCIA_MFC_DEVICE_MANF_CARD(0, 0x0104, 0x0070),
@@ -819,6 +821,7 @@ static struct pcmcia_device_id serial_ids[] = {
819 PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x0035, "cis/3CXEM556.cis"), 821 PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x0035, "cis/3CXEM556.cis"),
820 PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x003d, "cis/3CXEM556.cis"), 822 PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x003d, "cis/3CXEM556.cis"),
821 PCMCIA_DEVICE_CIS_PROD_ID12("Sierra Wireless", "AC850", 0xd85f6206, 0x42a2c018, "cis/SW_8xx_SER.cis"), /* Sierra Wireless AC850 3G Network Adapter R1 */ 823 PCMCIA_DEVICE_CIS_PROD_ID12("Sierra Wireless", "AC850", 0xd85f6206, 0x42a2c018, "cis/SW_8xx_SER.cis"), /* Sierra Wireless AC850 3G Network Adapter R1 */
824 PCMCIA_DEVICE_CIS_PROD_ID12("Sierra Wireless", "AC860", 0xd85f6206, 0x698f93db, "cis/SW_8xx_SER.cis"), /* Sierra Wireless AC860 3G Network Adapter R1 */
822 PCMCIA_DEVICE_CIS_PROD_ID12("Sierra Wireless", "AC710/AC750", 0xd85f6206, 0x761b11e0, "cis/SW_7xx_SER.cis"), /* Sierra Wireless AC710/AC750 GPRS Network Adapter R1 */ 825 PCMCIA_DEVICE_CIS_PROD_ID12("Sierra Wireless", "AC710/AC750", 0xd85f6206, 0x761b11e0, "cis/SW_7xx_SER.cis"), /* Sierra Wireless AC710/AC750 GPRS Network Adapter R1 */
823 PCMCIA_DEVICE_CIS_MANF_CARD(0x0192, 0xa555, "cis/SW_555_SER.cis"), /* Sierra Aircard 555 CDMA 1xrtt Modem -- pre update */ 826 PCMCIA_DEVICE_CIS_MANF_CARD(0x0192, 0xa555, "cis/SW_555_SER.cis"), /* Sierra Aircard 555 CDMA 1xrtt Modem -- pre update */
824 PCMCIA_DEVICE_CIS_MANF_CARD(0x013f, 0xa555, "cis/SW_555_SER.cis"), /* Sierra Aircard 555 CDMA 1xrtt Modem -- post update */ 827 PCMCIA_DEVICE_CIS_MANF_CARD(0x013f, 0xa555, "cis/SW_555_SER.cis"), /* Sierra Aircard 555 CDMA 1xrtt Modem -- post update */
@@ -827,7 +830,7 @@ static struct pcmcia_device_id serial_ids[] = {
827 PCMCIA_DEVICE_CIS_PROD_ID12("ADVANTECH", "COMpad-32/85B-4", 0x96913a85, 0xcec8f102, "cis/COMpad4.cis"), 830 PCMCIA_DEVICE_CIS_PROD_ID12("ADVANTECH", "COMpad-32/85B-4", 0x96913a85, 0xcec8f102, "cis/COMpad4.cis"),
828 PCMCIA_DEVICE_CIS_PROD_ID123("ADVANTECH", "COMpad-32/85", "1.0", 0x96913a85, 0x8fbe92ae, 0x0877b627, "cis/COMpad2.cis"), 831 PCMCIA_DEVICE_CIS_PROD_ID123("ADVANTECH", "COMpad-32/85", "1.0", 0x96913a85, 0x8fbe92ae, 0x0877b627, "cis/COMpad2.cis"),
829 PCMCIA_DEVICE_CIS_PROD_ID2("RS-COM 2P", 0xad20b156, "cis/RS-COM-2P.cis"), 832 PCMCIA_DEVICE_CIS_PROD_ID2("RS-COM 2P", 0xad20b156, "cis/RS-COM-2P.cis"),
830 PCMCIA_DEVICE_CIS_MANF_CARD(0x0013, 0x0000, "GLOBETROTTER.cis"), 833 PCMCIA_DEVICE_CIS_MANF_CARD(0x0013, 0x0000, "cis/GLOBETROTTER.cis"),
831 PCMCIA_DEVICE_PROD_ID12("ELAN DIGITAL SYSTEMS LTD, c1997.","SERIAL CARD: SL100 1.00.",0x19ca78af,0xf964f42b), 834 PCMCIA_DEVICE_PROD_ID12("ELAN DIGITAL SYSTEMS LTD, c1997.","SERIAL CARD: SL100 1.00.",0x19ca78af,0xf964f42b),
832 PCMCIA_DEVICE_PROD_ID12("ELAN DIGITAL SYSTEMS LTD, c1997.","SERIAL CARD: SL100",0x19ca78af,0x71d98e83), 835 PCMCIA_DEVICE_PROD_ID12("ELAN DIGITAL SYSTEMS LTD, c1997.","SERIAL CARD: SL100",0x19ca78af,0x71d98e83),
833 PCMCIA_DEVICE_PROD_ID12("ELAN DIGITAL SYSTEMS LTD, c1997.","SERIAL CARD: SL232 1.00.",0x19ca78af,0x69fb7490), 836 PCMCIA_DEVICE_PROD_ID12("ELAN DIGITAL SYSTEMS LTD, c1997.","SERIAL CARD: SL232 1.00.",0x19ca78af,0x69fb7490),
@@ -861,6 +864,18 @@ static struct pcmcia_device_id serial_ids[] = {
861}; 864};
862MODULE_DEVICE_TABLE(pcmcia, serial_ids); 865MODULE_DEVICE_TABLE(pcmcia, serial_ids);
863 866
867MODULE_FIRMWARE("cis/PCMLM28.cis");
868MODULE_FIRMWARE("cis/DP83903.cis");
869MODULE_FIRMWARE("cis/3CCFEM556.cis");
870MODULE_FIRMWARE("cis/3CXEM556.cis");
871MODULE_FIRMWARE("cis/SW_8xx_SER.cis");
872MODULE_FIRMWARE("cis/SW_7xx_SER.cis");
873MODULE_FIRMWARE("cis/SW_555_SER.cis");
874MODULE_FIRMWARE("cis/MT5634ZLX.cis");
875MODULE_FIRMWARE("cis/COMpad2.cis");
876MODULE_FIRMWARE("cis/COMpad4.cis");
877MODULE_FIRMWARE("cis/RS-COM-2P.cis");
878
864static struct pcmcia_driver serial_cs_driver = { 879static struct pcmcia_driver serial_cs_driver = {
865 .owner = THIS_MODULE, 880 .owner = THIS_MODULE,
866 .drv = { 881 .drv = {
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c
index 37f0de9dd9ce..42f3333c4ad0 100644
--- a/drivers/serial/sh-sci.c
+++ b/drivers/serial/sh-sci.c
@@ -1052,7 +1052,18 @@ static void __devinit sci_init_single(struct platform_device *dev,
1052 sci_port->port.ops = &sci_uart_ops; 1052 sci_port->port.ops = &sci_uart_ops;
1053 sci_port->port.iotype = UPIO_MEM; 1053 sci_port->port.iotype = UPIO_MEM;
1054 sci_port->port.line = index; 1054 sci_port->port.line = index;
1055 sci_port->port.fifosize = 1; 1055
1056 switch (p->type) {
1057 case PORT_SCIFA:
1058 sci_port->port.fifosize = 64;
1059 break;
1060 case PORT_SCIF:
1061 sci_port->port.fifosize = 16;
1062 break;
1063 default:
1064 sci_port->port.fifosize = 1;
1065 break;
1066 }
1056 1067
1057 if (dev) { 1068 if (dev) {
1058 sci_port->iclk = p->clk ? clk_get(&dev->dev, p->clk) : NULL; 1069 sci_port->iclk = p->clk ? clk_get(&dev->dev, p->clk) : NULL;
diff --git a/drivers/serial/uartlite.c b/drivers/serial/uartlite.c
index 377f2712289e..ab2ab3c81834 100644
--- a/drivers/serial/uartlite.c
+++ b/drivers/serial/uartlite.c
@@ -394,7 +394,7 @@ static void ulite_console_write(struct console *co, const char *s,
394 spin_unlock_irqrestore(&port->lock, flags); 394 spin_unlock_irqrestore(&port->lock, flags);
395} 395}
396 396
397static int __init ulite_console_setup(struct console *co, char *options) 397static int __devinit ulite_console_setup(struct console *co, char *options)
398{ 398{
399 struct uart_port *port; 399 struct uart_port *port;
400 int baud = 9600; 400 int baud = 9600;
diff --git a/drivers/spi/spi_sh_msiof.c b/drivers/spi/spi_sh_msiof.c
index 51e5e1dfa6e5..30973ec16a93 100644
--- a/drivers/spi/spi_sh_msiof.c
+++ b/drivers/spi/spi_sh_msiof.c
@@ -173,15 +173,12 @@ static void sh_msiof_spi_set_pin_regs(struct sh_msiof_spi_priv *p,
173 int edge; 173 int edge;
174 174
175 /* 175 /*
176 * CPOL CPHA TSCKIZ RSCKIZ TEDG REDG(!) 176 * CPOL CPHA TSCKIZ RSCKIZ TEDG REDG
177 * 0 0 10 10 1 0 177 * 0 0 10 10 1 1
178 * 0 1 10 10 0 1 178 * 0 1 10 10 0 0
179 * 1 0 11 11 0 1 179 * 1 0 11 11 0 0
180 * 1 1 11 11 1 0 180 * 1 1 11 11 1 1
181 *
182 * (!) Note: REDG is inverted recommended data sheet setting
183 */ 181 */
184
185 sh_msiof_write(p, FCTR, 0); 182 sh_msiof_write(p, FCTR, 0);
186 sh_msiof_write(p, TMDR1, 0xe2000005 | (lsb_first << 24)); 183 sh_msiof_write(p, TMDR1, 0xe2000005 | (lsb_first << 24));
187 sh_msiof_write(p, RMDR1, 0x22000005 | (lsb_first << 24)); 184 sh_msiof_write(p, RMDR1, 0x22000005 | (lsb_first << 24));
@@ -193,7 +190,7 @@ static void sh_msiof_spi_set_pin_regs(struct sh_msiof_spi_priv *p,
193 edge = cpol ? cpha : !cpha; 190 edge = cpol ? cpha : !cpha;
194 191
195 tmp |= edge << 27; /* TEDG */ 192 tmp |= edge << 27; /* TEDG */
196 tmp |= !edge << 26; /* REDG */ 193 tmp |= edge << 26; /* REDG */
197 tmp |= (tx_hi_z ? 2 : 0) << 22; /* TXDIZ */ 194 tmp |= (tx_hi_z ? 2 : 0) << 22; /* TXDIZ */
198 sh_msiof_write(p, CTR, tmp); 195 sh_msiof_write(p, CTR, tmp);
199} 196}
diff --git a/drivers/ssb/main.c b/drivers/ssb/main.c
index 5681ebed9c65..03dfd27c4bfb 100644
--- a/drivers/ssb/main.c
+++ b/drivers/ssb/main.c
@@ -494,8 +494,7 @@ static int ssb_devices_register(struct ssb_bus *bus)
494#endif 494#endif
495 break; 495 break;
496 case SSB_BUSTYPE_SDIO: 496 case SSB_BUSTYPE_SDIO:
497#ifdef CONFIG_SSB_SDIO 497#ifdef CONFIG_SSB_SDIOHOST
498 sdev->irq = bus->host_sdio->dev.irq;
499 dev->parent = &bus->host_sdio->dev; 498 dev->parent = &bus->host_sdio->dev;
500#endif 499#endif
501 break; 500 break;
diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
index 94eb86319ff3..fc2e963e65e9 100644
--- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig
@@ -99,8 +99,6 @@ source "drivers/staging/line6/Kconfig"
99 99
100source "drivers/gpu/drm/vmwgfx/Kconfig" 100source "drivers/gpu/drm/vmwgfx/Kconfig"
101 101
102source "drivers/gpu/drm/radeon/Kconfig"
103
104source "drivers/gpu/drm/nouveau/Kconfig" 102source "drivers/gpu/drm/nouveau/Kconfig"
105 103
106source "drivers/staging/octeon/Kconfig" 104source "drivers/staging/octeon/Kconfig"
diff --git a/drivers/staging/asus_oled/asus_oled.c b/drivers/staging/asus_oled/asus_oled.c
index f4c26572c7df..43c57b7688ab 100644
--- a/drivers/staging/asus_oled/asus_oled.c
+++ b/drivers/staging/asus_oled/asus_oled.c
@@ -194,9 +194,11 @@ static ssize_t set_enabled(struct device *dev, struct device_attribute *attr,
194{ 194{
195 struct usb_interface *intf = to_usb_interface(dev); 195 struct usb_interface *intf = to_usb_interface(dev);
196 struct asus_oled_dev *odev = usb_get_intfdata(intf); 196 struct asus_oled_dev *odev = usb_get_intfdata(intf);
197 int temp = strict_strtoul(buf, 10, NULL); 197 unsigned long value;
198 if (strict_strtoul(buf, 10, &value))
199 return -EINVAL;
198 200
199 enable_oled(odev, temp); 201 enable_oled(odev, value);
200 202
201 return count; 203 return count;
202} 204}
@@ -207,10 +209,12 @@ static ssize_t class_set_enabled(struct device *device,
207{ 209{
208 struct asus_oled_dev *odev = 210 struct asus_oled_dev *odev =
209 (struct asus_oled_dev *) dev_get_drvdata(device); 211 (struct asus_oled_dev *) dev_get_drvdata(device);
212 unsigned long value;
210 213
211 int temp = strict_strtoul(buf, 10, NULL); 214 if (strict_strtoul(buf, 10, &value))
215 return -EINVAL;
212 216
213 enable_oled(odev, temp); 217 enable_oled(odev, value);
214 218
215 return count; 219 return count;
216} 220}
diff --git a/drivers/staging/cx25821/cx25821-medusa-video.c b/drivers/staging/cx25821/cx25821-medusa-video.c
index e4df8134f059..1eb079b3d429 100644
--- a/drivers/staging/cx25821/cx25821-medusa-video.c
+++ b/drivers/staging/cx25821/cx25821-medusa-video.c
@@ -860,10 +860,8 @@ int medusa_video_init(struct cx25821_dev *dev)
860 860
861 ret_val = medusa_set_videostandard(dev); 861 ret_val = medusa_set_videostandard(dev);
862 862
863 if (ret_val < 0) { 863 if (ret_val < 0)
864 mutex_unlock(&dev->lock);
865 return -EINVAL; 864 return -EINVAL;
866 }
867 865
868 return 1; 866 return 1;
869} 867}
diff --git a/drivers/staging/et131x/et1310_address_map.h b/drivers/staging/et131x/et1310_address_map.h
index 6da843cc343c..e715e4dcb523 100644
--- a/drivers/staging/et131x/et1310_address_map.h
+++ b/drivers/staging/et131x/et1310_address_map.h
@@ -203,11 +203,14 @@ typedef struct _GLOBAL_t { /* Location: */
203 * 9-0: pr ndes 203 * 9-0: pr ndes
204 */ 204 */
205 205
206#define ET_DMA10_MASK 0x3FF /* 10 bit mask for DMA10W types */ 206#define ET_DMA12_MASK 0x0FFF /* 12 bit mask for DMA12W types */
207#define ET_DMA10_WRAP 0x400 207#define ET_DMA12_WRAP 0x1000
208#define ET_DMA4_MASK 0x00F /* 4 bit mask for DMA4W types */ 208#define ET_DMA10_MASK 0x03FF /* 10 bit mask for DMA10W types */
209#define ET_DMA4_WRAP 0x010 209#define ET_DMA10_WRAP 0x0400
210 210#define ET_DMA4_MASK 0x000F /* 4 bit mask for DMA4W types */
211#define ET_DMA4_WRAP 0x0010
212
213#define INDEX12(x) ((x) & ET_DMA12_MASK)
211#define INDEX10(x) ((x) & ET_DMA10_MASK) 214#define INDEX10(x) ((x) & ET_DMA10_MASK)
212#define INDEX4(x) ((x) & ET_DMA4_MASK) 215#define INDEX4(x) ((x) & ET_DMA4_MASK)
213 216
@@ -216,6 +219,11 @@ extern inline void add_10bit(u32 *v, int n)
216 *v = INDEX10(*v + n) | (*v & ET_DMA10_WRAP); 219 *v = INDEX10(*v + n) | (*v & ET_DMA10_WRAP);
217} 220}
218 221
222extern inline void add_12bit(u32 *v, int n)
223{
224 *v = INDEX12(*v + n) | (*v & ET_DMA12_WRAP);
225}
226
219/* 227/*
220 * 10bit DMA with wrap 228 * 10bit DMA with wrap
221 * txdma tx queue write address reg in txdma address map at 0x1010 229 * txdma tx queue write address reg in txdma address map at 0x1010
diff --git a/drivers/staging/et131x/et1310_rx.c b/drivers/staging/et131x/et1310_rx.c
index 3ddc9b12b8db..81c1a7478ad6 100644
--- a/drivers/staging/et131x/et1310_rx.c
+++ b/drivers/staging/et131x/et1310_rx.c
@@ -831,10 +831,10 @@ PMP_RFD nic_rx_pkts(struct et131x_adapter *etdev)
831 831
832 /* Indicate that we have used this PSR entry. */ 832 /* Indicate that we have used this PSR entry. */
833 /* FIXME wrap 12 */ 833 /* FIXME wrap 12 */
834 rx_local->local_psr_full = (rx_local->local_psr_full + 1) & 0xFFF; 834 add_12bit(&rx_local->local_psr_full, 1);
835 if (rx_local->local_psr_full > rx_local->PsrNumEntries - 1) { 835 if ((rx_local->local_psr_full & 0xFFF) > rx_local->PsrNumEntries - 1) {
836 /* Clear psr full and toggle the wrap bit */ 836 /* Clear psr full and toggle the wrap bit */
837 rx_local->local_psr_full &= 0xFFF; 837 rx_local->local_psr_full &= ~0xFFF;
838 rx_local->local_psr_full ^= 0x1000; 838 rx_local->local_psr_full ^= 0x1000;
839 } 839 }
840 840
diff --git a/drivers/staging/hv/Hv.c b/drivers/staging/hv/Hv.c
index c5b6613f2f2f..c2809f2a2ce0 100644
--- a/drivers/staging/hv/Hv.c
+++ b/drivers/staging/hv/Hv.c
@@ -386,7 +386,7 @@ u16 HvSignalEvent(void)
386 * retrieve the initialized message and event pages. Otherwise, we create and 386 * retrieve the initialized message and event pages. Otherwise, we create and
387 * initialize the message and event pages. 387 * initialize the message and event pages.
388 */ 388 */
389int HvSynicInit(u32 irqVector) 389void HvSynicInit(void *irqarg)
390{ 390{
391 u64 version; 391 u64 version;
392 union hv_synic_simp simp; 392 union hv_synic_simp simp;
@@ -394,13 +394,14 @@ int HvSynicInit(u32 irqVector)
394 union hv_synic_sint sharedSint; 394 union hv_synic_sint sharedSint;
395 union hv_synic_scontrol sctrl; 395 union hv_synic_scontrol sctrl;
396 u64 guestID; 396 u64 guestID;
397 int ret = 0; 397 u32 irqVector = *((u32 *)(irqarg));
398 int cpu = smp_processor_id();
398 399
399 DPRINT_ENTER(VMBUS); 400 DPRINT_ENTER(VMBUS);
400 401
401 if (!gHvContext.HypercallPage) { 402 if (!gHvContext.HypercallPage) {
402 DPRINT_EXIT(VMBUS); 403 DPRINT_EXIT(VMBUS);
403 return ret; 404 return;
404 } 405 }
405 406
406 /* Check the version */ 407 /* Check the version */
@@ -425,27 +426,27 @@ int HvSynicInit(u32 irqVector)
425 */ 426 */
426 rdmsrl(HV_X64_MSR_GUEST_OS_ID, guestID); 427 rdmsrl(HV_X64_MSR_GUEST_OS_ID, guestID);
427 if (guestID == HV_LINUX_GUEST_ID) { 428 if (guestID == HV_LINUX_GUEST_ID) {
428 gHvContext.synICMessagePage[0] = 429 gHvContext.synICMessagePage[cpu] =
429 phys_to_virt(simp.BaseSimpGpa << PAGE_SHIFT); 430 phys_to_virt(simp.BaseSimpGpa << PAGE_SHIFT);
430 gHvContext.synICEventPage[0] = 431 gHvContext.synICEventPage[cpu] =
431 phys_to_virt(siefp.BaseSiefpGpa << PAGE_SHIFT); 432 phys_to_virt(siefp.BaseSiefpGpa << PAGE_SHIFT);
432 } else { 433 } else {
433 DPRINT_ERR(VMBUS, "unknown guest id!!"); 434 DPRINT_ERR(VMBUS, "unknown guest id!!");
434 goto Cleanup; 435 goto Cleanup;
435 } 436 }
436 DPRINT_DBG(VMBUS, "MAPPED: Simp: %p, Sifep: %p", 437 DPRINT_DBG(VMBUS, "MAPPED: Simp: %p, Sifep: %p",
437 gHvContext.synICMessagePage[0], 438 gHvContext.synICMessagePage[cpu],
438 gHvContext.synICEventPage[0]); 439 gHvContext.synICEventPage[cpu]);
439 } else { 440 } else {
440 gHvContext.synICMessagePage[0] = osd_PageAlloc(1); 441 gHvContext.synICMessagePage[cpu] = (void *)get_zeroed_page(GFP_ATOMIC);
441 if (gHvContext.synICMessagePage[0] == NULL) { 442 if (gHvContext.synICMessagePage[cpu] == NULL) {
442 DPRINT_ERR(VMBUS, 443 DPRINT_ERR(VMBUS,
443 "unable to allocate SYNIC message page!!"); 444 "unable to allocate SYNIC message page!!");
444 goto Cleanup; 445 goto Cleanup;
445 } 446 }
446 447
447 gHvContext.synICEventPage[0] = osd_PageAlloc(1); 448 gHvContext.synICEventPage[cpu] = (void *)get_zeroed_page(GFP_ATOMIC);
448 if (gHvContext.synICEventPage[0] == NULL) { 449 if (gHvContext.synICEventPage[cpu] == NULL) {
449 DPRINT_ERR(VMBUS, 450 DPRINT_ERR(VMBUS,
450 "unable to allocate SYNIC event page!!"); 451 "unable to allocate SYNIC event page!!");
451 goto Cleanup; 452 goto Cleanup;
@@ -454,7 +455,7 @@ int HvSynicInit(u32 irqVector)
454 /* Setup the Synic's message page */ 455 /* Setup the Synic's message page */
455 rdmsrl(HV_X64_MSR_SIMP, simp.AsUINT64); 456 rdmsrl(HV_X64_MSR_SIMP, simp.AsUINT64);
456 simp.SimpEnabled = 1; 457 simp.SimpEnabled = 1;
457 simp.BaseSimpGpa = virt_to_phys(gHvContext.synICMessagePage[0]) 458 simp.BaseSimpGpa = virt_to_phys(gHvContext.synICMessagePage[cpu])
458 >> PAGE_SHIFT; 459 >> PAGE_SHIFT;
459 460
460 DPRINT_DBG(VMBUS, "HV_X64_MSR_SIMP msr set to: %llx", 461 DPRINT_DBG(VMBUS, "HV_X64_MSR_SIMP msr set to: %llx",
@@ -465,7 +466,7 @@ int HvSynicInit(u32 irqVector)
465 /* Setup the Synic's event page */ 466 /* Setup the Synic's event page */
466 rdmsrl(HV_X64_MSR_SIEFP, siefp.AsUINT64); 467 rdmsrl(HV_X64_MSR_SIEFP, siefp.AsUINT64);
467 siefp.SiefpEnabled = 1; 468 siefp.SiefpEnabled = 1;
468 siefp.BaseSiefpGpa = virt_to_phys(gHvContext.synICEventPage[0]) 469 siefp.BaseSiefpGpa = virt_to_phys(gHvContext.synICEventPage[cpu])
469 >> PAGE_SHIFT; 470 >> PAGE_SHIFT;
470 471
471 DPRINT_DBG(VMBUS, "HV_X64_MSR_SIEFP msr set to: %llx", 472 DPRINT_DBG(VMBUS, "HV_X64_MSR_SIEFP msr set to: %llx",
@@ -501,32 +502,30 @@ int HvSynicInit(u32 irqVector)
501 502
502 DPRINT_EXIT(VMBUS); 503 DPRINT_EXIT(VMBUS);
503 504
504 return ret; 505 return;
505 506
506Cleanup: 507Cleanup:
507 ret = -1;
508
509 if (gHvContext.GuestId == HV_LINUX_GUEST_ID) { 508 if (gHvContext.GuestId == HV_LINUX_GUEST_ID) {
510 if (gHvContext.synICEventPage[0]) 509 if (gHvContext.synICEventPage[cpu])
511 osd_PageFree(gHvContext.synICEventPage[0], 1); 510 osd_PageFree(gHvContext.synICEventPage[cpu], 1);
512 511
513 if (gHvContext.synICMessagePage[0]) 512 if (gHvContext.synICMessagePage[cpu])
514 osd_PageFree(gHvContext.synICMessagePage[0], 1); 513 osd_PageFree(gHvContext.synICMessagePage[cpu], 1);
515 } 514 }
516 515
517 DPRINT_EXIT(VMBUS); 516 DPRINT_EXIT(VMBUS);
518 517 return;
519 return ret;
520} 518}
521 519
522/** 520/**
523 * HvSynicCleanup - Cleanup routine for HvSynicInit(). 521 * HvSynicCleanup - Cleanup routine for HvSynicInit().
524 */ 522 */
525void HvSynicCleanup(void) 523void HvSynicCleanup(void *arg)
526{ 524{
527 union hv_synic_sint sharedSint; 525 union hv_synic_sint sharedSint;
528 union hv_synic_simp simp; 526 union hv_synic_simp simp;
529 union hv_synic_siefp siefp; 527 union hv_synic_siefp siefp;
528 int cpu = smp_processor_id();
530 529
531 DPRINT_ENTER(VMBUS); 530 DPRINT_ENTER(VMBUS);
532 531
@@ -539,6 +538,7 @@ void HvSynicCleanup(void)
539 538
540 sharedSint.Masked = 1; 539 sharedSint.Masked = 1;
541 540
541 /* Need to correctly cleanup in the case of SMP!!! */
542 /* Disable the interrupt */ 542 /* Disable the interrupt */
543 wrmsrl(HV_X64_MSR_SINT0 + VMBUS_MESSAGE_SINT, sharedSint.AsUINT64); 543 wrmsrl(HV_X64_MSR_SINT0 + VMBUS_MESSAGE_SINT, sharedSint.AsUINT64);
544 544
@@ -560,8 +560,8 @@ void HvSynicCleanup(void)
560 560
561 wrmsrl(HV_X64_MSR_SIEFP, siefp.AsUINT64); 561 wrmsrl(HV_X64_MSR_SIEFP, siefp.AsUINT64);
562 562
563 osd_PageFree(gHvContext.synICMessagePage[0], 1); 563 osd_PageFree(gHvContext.synICMessagePage[cpu], 1);
564 osd_PageFree(gHvContext.synICEventPage[0], 1); 564 osd_PageFree(gHvContext.synICEventPage[cpu], 1);
565 } 565 }
566 566
567 DPRINT_EXIT(VMBUS); 567 DPRINT_EXIT(VMBUS);
diff --git a/drivers/staging/hv/Hv.h b/drivers/staging/hv/Hv.h
index 5379e4bfc56e..fce4b5cdac30 100644
--- a/drivers/staging/hv/Hv.h
+++ b/drivers/staging/hv/Hv.h
@@ -93,7 +93,7 @@ static const struct hv_guid VMBUS_SERVICE_ID = {
93 }, 93 },
94}; 94};
95 95
96#define MAX_NUM_CPUS 1 96#define MAX_NUM_CPUS 32
97 97
98 98
99struct hv_input_signal_event_buffer { 99struct hv_input_signal_event_buffer {
@@ -137,8 +137,8 @@ extern u16 HvPostMessage(union hv_connection_id connectionId,
137 137
138extern u16 HvSignalEvent(void); 138extern u16 HvSignalEvent(void);
139 139
140extern int HvSynicInit(u32 irqVector); 140extern void HvSynicInit(void *irqarg);
141 141
142extern void HvSynicCleanup(void); 142extern void HvSynicCleanup(void *arg);
143 143
144#endif /* __HV_H__ */ 144#endif /* __HV_H__ */
diff --git a/drivers/staging/hv/Vmbus.c b/drivers/staging/hv/Vmbus.c
index a4dd06f6d459..35a023e9f9d1 100644
--- a/drivers/staging/hv/Vmbus.c
+++ b/drivers/staging/hv/Vmbus.c
@@ -129,7 +129,7 @@ static int VmbusOnDeviceAdd(struct hv_device *dev, void *AdditionalInfo)
129 129
130 /* strcpy(dev->name, "vmbus"); */ 130 /* strcpy(dev->name, "vmbus"); */
131 /* SynIC setup... */ 131 /* SynIC setup... */
132 ret = HvSynicInit(*irqvector); 132 on_each_cpu(HvSynicInit, (void *)irqvector, 1);
133 133
134 /* Connect to VMBus in the root partition */ 134 /* Connect to VMBus in the root partition */
135 ret = VmbusConnect(); 135 ret = VmbusConnect();
@@ -150,7 +150,7 @@ static int VmbusOnDeviceRemove(struct hv_device *dev)
150 DPRINT_ENTER(VMBUS); 150 DPRINT_ENTER(VMBUS);
151 VmbusChannelReleaseUnattachedChannels(); 151 VmbusChannelReleaseUnattachedChannels();
152 VmbusDisconnect(); 152 VmbusDisconnect();
153 HvSynicCleanup(); 153 on_each_cpu(HvSynicCleanup, NULL, 1);
154 DPRINT_EXIT(VMBUS); 154 DPRINT_EXIT(VMBUS);
155 155
156 return ret; 156 return ret;
@@ -173,7 +173,8 @@ static void VmbusOnCleanup(struct hv_driver *drv)
173 */ 173 */
174static void VmbusOnMsgDPC(struct hv_driver *drv) 174static void VmbusOnMsgDPC(struct hv_driver *drv)
175{ 175{
176 void *page_addr = gHvContext.synICMessagePage[0]; 176 int cpu = smp_processor_id();
177 void *page_addr = gHvContext.synICMessagePage[cpu];
177 struct hv_message *msg = (struct hv_message *)page_addr + 178 struct hv_message *msg = (struct hv_message *)page_addr +
178 VMBUS_MESSAGE_SINT; 179 VMBUS_MESSAGE_SINT;
179 struct hv_message *copied; 180 struct hv_message *copied;
@@ -230,11 +231,12 @@ static void VmbusOnEventDPC(struct hv_driver *drv)
230static int VmbusOnISR(struct hv_driver *drv) 231static int VmbusOnISR(struct hv_driver *drv)
231{ 232{
232 int ret = 0; 233 int ret = 0;
234 int cpu = smp_processor_id();
233 void *page_addr; 235 void *page_addr;
234 struct hv_message *msg; 236 struct hv_message *msg;
235 union hv_synic_event_flags *event; 237 union hv_synic_event_flags *event;
236 238
237 page_addr = gHvContext.synICMessagePage[0]; 239 page_addr = gHvContext.synICMessagePage[cpu];
238 msg = (struct hv_message *)page_addr + VMBUS_MESSAGE_SINT; 240 msg = (struct hv_message *)page_addr + VMBUS_MESSAGE_SINT;
239 241
240 DPRINT_ENTER(VMBUS); 242 DPRINT_ENTER(VMBUS);
@@ -248,7 +250,7 @@ static int VmbusOnISR(struct hv_driver *drv)
248 } 250 }
249 251
250 /* TODO: Check if there are events to be process */ 252 /* TODO: Check if there are events to be process */
251 page_addr = gHvContext.synICEventPage[0]; 253 page_addr = gHvContext.synICEventPage[cpu];
252 event = (union hv_synic_event_flags *)page_addr + VMBUS_MESSAGE_SINT; 254 event = (union hv_synic_event_flags *)page_addr + VMBUS_MESSAGE_SINT;
253 255
254 /* Since we are a child, we only need to check bit 0 */ 256 /* Since we are a child, we only need to check bit 0 */
diff --git a/drivers/usb/core/devices.c b/drivers/usb/core/devices.c
index 96f11715cd26..355dffcc23b0 100644
--- a/drivers/usb/core/devices.c
+++ b/drivers/usb/core/devices.c
@@ -494,7 +494,7 @@ static ssize_t usb_device_dump(char __user **buffer, size_t *nbytes,
494 return 0; 494 return 0;
495 /* allocate 2^1 pages = 8K (on i386); 495 /* allocate 2^1 pages = 8K (on i386);
496 * should be more than enough for one device */ 496 * should be more than enough for one device */
497 pages_start = (char *)__get_free_pages(GFP_KERNEL, 1); 497 pages_start = (char *)__get_free_pages(GFP_NOIO, 1);
498 if (!pages_start) 498 if (!pages_start)
499 return -ENOMEM; 499 return -ENOMEM;
500 500
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
index 6e8bcdfd23b4..a678186f218f 100644
--- a/drivers/usb/core/devio.c
+++ b/drivers/usb/core/devio.c
@@ -1312,9 +1312,9 @@ static int processcompl(struct async *as, void __user * __user *arg)
1312 void __user *addr = as->userurb; 1312 void __user *addr = as->userurb;
1313 unsigned int i; 1313 unsigned int i;
1314 1314
1315 if (as->userbuffer) 1315 if (as->userbuffer && urb->actual_length)
1316 if (copy_to_user(as->userbuffer, urb->transfer_buffer, 1316 if (copy_to_user(as->userbuffer, urb->transfer_buffer,
1317 urb->transfer_buffer_length)) 1317 urb->actual_length))
1318 goto err_out; 1318 goto err_out;
1319 if (put_user(as->status, &userurb->status)) 1319 if (put_user(as->status, &userurb->status))
1320 goto err_out; 1320 goto err_out;
@@ -1334,14 +1334,11 @@ static int processcompl(struct async *as, void __user * __user *arg)
1334 } 1334 }
1335 } 1335 }
1336 1336
1337 free_async(as);
1338
1339 if (put_user(addr, (void __user * __user *)arg)) 1337 if (put_user(addr, (void __user * __user *)arg))
1340 return -EFAULT; 1338 return -EFAULT;
1341 return 0; 1339 return 0;
1342 1340
1343err_out: 1341err_out:
1344 free_async(as);
1345 return -EFAULT; 1342 return -EFAULT;
1346} 1343}
1347 1344
@@ -1371,8 +1368,11 @@ static struct async *reap_as(struct dev_state *ps)
1371static int proc_reapurb(struct dev_state *ps, void __user *arg) 1368static int proc_reapurb(struct dev_state *ps, void __user *arg)
1372{ 1369{
1373 struct async *as = reap_as(ps); 1370 struct async *as = reap_as(ps);
1374 if (as) 1371 if (as) {
1375 return processcompl(as, (void __user * __user *)arg); 1372 int retval = processcompl(as, (void __user * __user *)arg);
1373 free_async(as);
1374 return retval;
1375 }
1376 if (signal_pending(current)) 1376 if (signal_pending(current))
1377 return -EINTR; 1377 return -EINTR;
1378 return -EIO; 1378 return -EIO;
@@ -1380,11 +1380,16 @@ static int proc_reapurb(struct dev_state *ps, void __user *arg)
1380 1380
1381static int proc_reapurbnonblock(struct dev_state *ps, void __user *arg) 1381static int proc_reapurbnonblock(struct dev_state *ps, void __user *arg)
1382{ 1382{
1383 int retval;
1383 struct async *as; 1384 struct async *as;
1384 1385
1385 if (!(as = async_getcompleted(ps))) 1386 as = async_getcompleted(ps);
1386 return -EAGAIN; 1387 retval = -EAGAIN;
1387 return processcompl(as, (void __user * __user *)arg); 1388 if (as) {
1389 retval = processcompl(as, (void __user * __user *)arg);
1390 free_async(as);
1391 }
1392 return retval;
1388} 1393}
1389 1394
1390#ifdef CONFIG_COMPAT 1395#ifdef CONFIG_COMPAT
@@ -1475,9 +1480,9 @@ static int processcompl_compat(struct async *as, void __user * __user *arg)
1475 void __user *addr = as->userurb; 1480 void __user *addr = as->userurb;
1476 unsigned int i; 1481 unsigned int i;
1477 1482
1478 if (as->userbuffer) 1483 if (as->userbuffer && urb->actual_length)
1479 if (copy_to_user(as->userbuffer, urb->transfer_buffer, 1484 if (copy_to_user(as->userbuffer, urb->transfer_buffer,
1480 urb->transfer_buffer_length)) 1485 urb->actual_length))
1481 return -EFAULT; 1486 return -EFAULT;
1482 if (put_user(as->status, &userurb->status)) 1487 if (put_user(as->status, &userurb->status))
1483 return -EFAULT; 1488 return -EFAULT;
@@ -1497,7 +1502,6 @@ static int processcompl_compat(struct async *as, void __user * __user *arg)
1497 } 1502 }
1498 } 1503 }
1499 1504
1500 free_async(as);
1501 if (put_user(ptr_to_compat(addr), (u32 __user *)arg)) 1505 if (put_user(ptr_to_compat(addr), (u32 __user *)arg))
1502 return -EFAULT; 1506 return -EFAULT;
1503 return 0; 1507 return 0;
@@ -1506,8 +1510,11 @@ static int processcompl_compat(struct async *as, void __user * __user *arg)
1506static int proc_reapurb_compat(struct dev_state *ps, void __user *arg) 1510static int proc_reapurb_compat(struct dev_state *ps, void __user *arg)
1507{ 1511{
1508 struct async *as = reap_as(ps); 1512 struct async *as = reap_as(ps);
1509 if (as) 1513 if (as) {
1510 return processcompl_compat(as, (void __user * __user *)arg); 1514 int retval = processcompl_compat(as, (void __user * __user *)arg);
1515 free_async(as);
1516 return retval;
1517 }
1511 if (signal_pending(current)) 1518 if (signal_pending(current))
1512 return -EINTR; 1519 return -EINTR;
1513 return -EIO; 1520 return -EIO;
@@ -1515,11 +1522,16 @@ static int proc_reapurb_compat(struct dev_state *ps, void __user *arg)
1515 1522
1516static int proc_reapurbnonblock_compat(struct dev_state *ps, void __user *arg) 1523static int proc_reapurbnonblock_compat(struct dev_state *ps, void __user *arg)
1517{ 1524{
1525 int retval;
1518 struct async *as; 1526 struct async *as;
1519 1527
1520 if (!(as = async_getcompleted(ps))) 1528 retval = -EAGAIN;
1521 return -EAGAIN; 1529 as = async_getcompleted(ps);
1522 return processcompl_compat(as, (void __user * __user *)arg); 1530 if (as) {
1531 retval = processcompl_compat(as, (void __user * __user *)arg);
1532 free_async(as);
1533 }
1534 return retval;
1523} 1535}
1524 1536
1525 1537
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
index 0495fa651225..80995ef0868c 100644
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
@@ -1684,6 +1684,24 @@ int usb_hcd_alloc_bandwidth(struct usb_device *udev,
1684 } 1684 }
1685 } 1685 }
1686 if (cur_alt && new_alt) { 1686 if (cur_alt && new_alt) {
1687 struct usb_interface *iface = usb_ifnum_to_if(udev,
1688 cur_alt->desc.bInterfaceNumber);
1689
1690 if (iface->resetting_device) {
1691 /*
1692 * The USB core just reset the device, so the xHCI host
1693 * and the device will think alt setting 0 is installed.
1694 * However, the USB core will pass in the alternate
1695 * setting installed before the reset as cur_alt. Dig
1696 * out the alternate setting 0 structure, or the first
1697 * alternate setting if a broken device doesn't have alt
1698 * setting 0.
1699 */
1700 cur_alt = usb_altnum_to_altsetting(iface, 0);
1701 if (!cur_alt)
1702 cur_alt = &iface->altsetting[0];
1703 }
1704
1687 /* Drop all the endpoints in the current alt setting */ 1705 /* Drop all the endpoints in the current alt setting */
1688 for (i = 0; i < cur_alt->desc.bNumEndpoints; i++) { 1706 for (i = 0; i < cur_alt->desc.bNumEndpoints; i++) {
1689 ret = hcd->driver->drop_endpoint(hcd, udev, 1707 ret = hcd->driver->drop_endpoint(hcd, udev,
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 0cec6caf6e9b..35cc8b9ba1f5 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -3347,6 +3347,9 @@ static void hub_events(void)
3347 USB_PORT_FEAT_C_SUSPEND); 3347 USB_PORT_FEAT_C_SUSPEND);
3348 udev = hdev->children[i-1]; 3348 udev = hdev->children[i-1];
3349 if (udev) { 3349 if (udev) {
3350 /* TRSMRCY = 10 msec */
3351 msleep(10);
3352
3350 usb_lock_device(udev); 3353 usb_lock_device(udev);
3351 ret = remote_wakeup(hdev-> 3354 ret = remote_wakeup(hdev->
3352 children[i-1]); 3355 children[i-1]);
@@ -3692,19 +3695,14 @@ static int usb_reset_and_verify_device(struct usb_device *udev)
3692 usb_enable_interface(udev, intf, true); 3695 usb_enable_interface(udev, intf, true);
3693 ret = 0; 3696 ret = 0;
3694 } else { 3697 } else {
3695 /* We've just reset the device, so it will think alt 3698 /* Let the bandwidth allocation function know that this
3696 * setting 0 is installed. For usb_set_interface() to 3699 * device has been reset, and it will have to use
3697 * work properly, we need to set the current alternate 3700 * alternate setting 0 as the current alternate setting.
3698 * interface setting to 0 (or the first alt setting, if
3699 * the device doesn't have alt setting 0).
3700 */ 3701 */
3701 intf->cur_altsetting = 3702 intf->resetting_device = 1;
3702 usb_find_alt_setting(config, i, 0);
3703 if (!intf->cur_altsetting)
3704 intf->cur_altsetting =
3705 &config->intf_cache[i]->altsetting[0];
3706 ret = usb_set_interface(udev, desc->bInterfaceNumber, 3703 ret = usb_set_interface(udev, desc->bInterfaceNumber,
3707 desc->bAlternateSetting); 3704 desc->bAlternateSetting);
3705 intf->resetting_device = 0;
3708 } 3706 }
3709 if (ret < 0) { 3707 if (ret < 0) {
3710 dev_err(&udev->dev, "failed to restore interface %d " 3708 dev_err(&udev->dev, "failed to restore interface %d "
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
index 1b994846e8e0..9bc95fec793f 100644
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
@@ -906,11 +906,11 @@ char *usb_cache_string(struct usb_device *udev, int index)
906 if (index <= 0) 906 if (index <= 0)
907 return NULL; 907 return NULL;
908 908
909 buf = kmalloc(MAX_USB_STRING_SIZE, GFP_KERNEL); 909 buf = kmalloc(MAX_USB_STRING_SIZE, GFP_NOIO);
910 if (buf) { 910 if (buf) {
911 len = usb_string(udev, index, buf, MAX_USB_STRING_SIZE); 911 len = usb_string(udev, index, buf, MAX_USB_STRING_SIZE);
912 if (len > 0) { 912 if (len > 0) {
913 smallbuf = kmalloc(++len, GFP_KERNEL); 913 smallbuf = kmalloc(++len, GFP_NOIO);
914 if (!smallbuf) 914 if (!smallbuf)
915 return buf; 915 return buf;
916 memcpy(smallbuf, buf, len); 916 memcpy(smallbuf, buf, len);
@@ -1731,7 +1731,7 @@ int usb_set_configuration(struct usb_device *dev, int configuration)
1731 if (cp) { 1731 if (cp) {
1732 nintf = cp->desc.bNumInterfaces; 1732 nintf = cp->desc.bNumInterfaces;
1733 new_interfaces = kmalloc(nintf * sizeof(*new_interfaces), 1733 new_interfaces = kmalloc(nintf * sizeof(*new_interfaces),
1734 GFP_KERNEL); 1734 GFP_NOIO);
1735 if (!new_interfaces) { 1735 if (!new_interfaces) {
1736 dev_err(&dev->dev, "Out of memory\n"); 1736 dev_err(&dev->dev, "Out of memory\n");
1737 return -ENOMEM; 1737 return -ENOMEM;
@@ -1740,7 +1740,7 @@ int usb_set_configuration(struct usb_device *dev, int configuration)
1740 for (; n < nintf; ++n) { 1740 for (; n < nintf; ++n) {
1741 new_interfaces[n] = kzalloc( 1741 new_interfaces[n] = kzalloc(
1742 sizeof(struct usb_interface), 1742 sizeof(struct usb_interface),
1743 GFP_KERNEL); 1743 GFP_NOIO);
1744 if (!new_interfaces[n]) { 1744 if (!new_interfaces[n]) {
1745 dev_err(&dev->dev, "Out of memory\n"); 1745 dev_err(&dev->dev, "Out of memory\n");
1746 ret = -ENOMEM; 1746 ret = -ENOMEM;
diff --git a/drivers/usb/core/sysfs.c b/drivers/usb/core/sysfs.c
index 485edf937f25..5f3908f6e2dc 100644
--- a/drivers/usb/core/sysfs.c
+++ b/drivers/usb/core/sysfs.c
@@ -115,6 +115,12 @@ show_speed(struct device *dev, struct device_attribute *attr, char *buf)
115 case USB_SPEED_HIGH: 115 case USB_SPEED_HIGH:
116 speed = "480"; 116 speed = "480";
117 break; 117 break;
118 case USB_SPEED_VARIABLE:
119 speed = "480";
120 break;
121 case USB_SPEED_SUPER:
122 speed = "5000";
123 break;
118 default: 124 default:
119 speed = "unknown"; 125 speed = "unknown";
120 } 126 }
diff --git a/drivers/usb/gadget/f_eem.c b/drivers/usb/gadget/f_eem.c
index 0a577d5694fd..d4f0db58a8ad 100644
--- a/drivers/usb/gadget/f_eem.c
+++ b/drivers/usb/gadget/f_eem.c
@@ -358,7 +358,7 @@ done:
358 * b15: bmType (0 == data) 358 * b15: bmType (0 == data)
359 */ 359 */
360 len = skb->len; 360 len = skb->len;
361 put_unaligned_le16((len & 0x3FFF) | BIT(14), skb_push(skb, 2)); 361 put_unaligned_le16(len & 0x3FFF, skb_push(skb, 2));
362 362
363 /* add a zero-length EEM packet, if needed */ 363 /* add a zero-length EEM packet, if needed */
364 if (padlen) 364 if (padlen)
@@ -464,7 +464,6 @@ static int eem_unwrap(struct gether *port,
464 } 464 }
465 465
466 /* validate CRC */ 466 /* validate CRC */
467 crc = get_unaligned_le32(skb->data + len - ETH_FCS_LEN);
468 if (header & BIT(14)) { 467 if (header & BIT(14)) {
469 crc = get_unaligned_le32(skb->data + len 468 crc = get_unaligned_le32(skb->data + len
470 - ETH_FCS_LEN); 469 - ETH_FCS_LEN);
diff --git a/drivers/usb/gadget/multi.c b/drivers/usb/gadget/multi.c
index 429560100b10..76496f5d272c 100644
--- a/drivers/usb/gadget/multi.c
+++ b/drivers/usb/gadget/multi.c
@@ -29,7 +29,7 @@
29#if defined USB_ETH_RNDIS 29#if defined USB_ETH_RNDIS
30# undef USB_ETH_RNDIS 30# undef USB_ETH_RNDIS
31#endif 31#endif
32#ifdef CONFIG_USB_ETH_RNDIS 32#ifdef CONFIG_USB_G_MULTI_RNDIS
33# define USB_ETH_RNDIS y 33# define USB_ETH_RNDIS y
34#endif 34#endif
35 35
diff --git a/drivers/usb/gadget/r8a66597-udc.c b/drivers/usb/gadget/r8a66597-udc.c
index e220fb8091a3..8b45145b9136 100644
--- a/drivers/usb/gadget/r8a66597-udc.c
+++ b/drivers/usb/gadget/r8a66597-udc.c
@@ -26,6 +26,7 @@
26#include <linux/io.h> 26#include <linux/io.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/err.h>
29 30
30#include <linux/usb/ch9.h> 31#include <linux/usb/ch9.h>
31#include <linux/usb/gadget.h> 32#include <linux/usb/gadget.h>
diff --git a/drivers/usb/gadget/s3c-hsotg.c b/drivers/usb/gadget/s3c-hsotg.c
index 4b5dbd0127f5..5fc80a104150 100644
--- a/drivers/usb/gadget/s3c-hsotg.c
+++ b/drivers/usb/gadget/s3c-hsotg.c
@@ -2582,6 +2582,7 @@ err:
2582 hsotg->gadget.dev.driver = NULL; 2582 hsotg->gadget.dev.driver = NULL;
2583 return ret; 2583 return ret;
2584} 2584}
2585EXPORT_SYMBOL(usb_gadget_register_driver);
2585 2586
2586int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) 2587int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
2587{ 2588{
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index 5859522d6edd..1ec3857f22e6 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -787,9 +787,10 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd)
787 787
788 /* start 20 msec resume signaling from this port, 788 /* start 20 msec resume signaling from this port,
789 * and make khubd collect PORT_STAT_C_SUSPEND to 789 * and make khubd collect PORT_STAT_C_SUSPEND to
790 * stop that signaling. 790 * stop that signaling. Use 5 ms extra for safety,
791 * like usb_port_resume() does.
791 */ 792 */
792 ehci->reset_done [i] = jiffies + msecs_to_jiffies (20); 793 ehci->reset_done[i] = jiffies + msecs_to_jiffies(25);
793 ehci_dbg (ehci, "port %d remote wakeup\n", i + 1); 794 ehci_dbg (ehci, "port %d remote wakeup\n", i + 1);
794 mod_timer(&hcd->rh_timer, ehci->reset_done[i]); 795 mod_timer(&hcd->rh_timer, ehci->reset_done[i]);
795 } 796 }
diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
index 2c6571c05f35..19372673bf09 100644
--- a/drivers/usb/host/ehci-hub.c
+++ b/drivers/usb/host/ehci-hub.c
@@ -120,9 +120,26 @@ static int ehci_bus_suspend (struct usb_hcd *hcd)
120 del_timer_sync(&ehci->watchdog); 120 del_timer_sync(&ehci->watchdog);
121 del_timer_sync(&ehci->iaa_watchdog); 121 del_timer_sync(&ehci->iaa_watchdog);
122 122
123 port = HCS_N_PORTS (ehci->hcs_params);
124 spin_lock_irq (&ehci->lock); 123 spin_lock_irq (&ehci->lock);
125 124
125 /* Once the controller is stopped, port resumes that are already
126 * in progress won't complete. Hence if remote wakeup is enabled
127 * for the root hub and any ports are in the middle of a resume or
128 * remote wakeup, we must fail the suspend.
129 */
130 if (hcd->self.root_hub->do_remote_wakeup) {
131 port = HCS_N_PORTS(ehci->hcs_params);
132 while (port--) {
133 if (ehci->reset_done[port] != 0) {
134 spin_unlock_irq(&ehci->lock);
135 ehci_dbg(ehci, "suspend failed because "
136 "port %d is resuming\n",
137 port + 1);
138 return -EBUSY;
139 }
140 }
141 }
142
126 /* stop schedules, clean any completed work */ 143 /* stop schedules, clean any completed work */
127 if (HC_IS_RUNNING(hcd->state)) { 144 if (HC_IS_RUNNING(hcd->state)) {
128 ehci_quiesce (ehci); 145 ehci_quiesce (ehci);
@@ -138,6 +155,7 @@ static int ehci_bus_suspend (struct usb_hcd *hcd)
138 */ 155 */
139 ehci->bus_suspended = 0; 156 ehci->bus_suspended = 0;
140 ehci->owned_ports = 0; 157 ehci->owned_ports = 0;
158 port = HCS_N_PORTS(ehci->hcs_params);
141 while (port--) { 159 while (port--) {
142 u32 __iomem *reg = &ehci->regs->port_status [port]; 160 u32 __iomem *reg = &ehci->regs->port_status [port];
143 u32 t1 = ehci_readl(ehci, reg) & ~PORT_RWC_BITS; 161 u32 t1 = ehci_readl(ehci, reg) & ~PORT_RWC_BITS;
@@ -178,7 +196,9 @@ static int ehci_bus_suspend (struct usb_hcd *hcd)
178 if (hostpc_reg) { 196 if (hostpc_reg) {
179 u32 t3; 197 u32 t3;
180 198
199 spin_unlock_irq(&ehci->lock);
181 msleep(5);/* 5ms for HCD enter low pwr mode */ 200 msleep(5);/* 5ms for HCD enter low pwr mode */
201 spin_lock_irq(&ehci->lock);
182 t3 = ehci_readl(ehci, hostpc_reg); 202 t3 = ehci_readl(ehci, hostpc_reg);
183 ehci_writel(ehci, t3 | HOSTPC_PHCD, hostpc_reg); 203 ehci_writel(ehci, t3 | HOSTPC_PHCD, hostpc_reg);
184 t3 = ehci_readl(ehci, hostpc_reg); 204 t3 = ehci_readl(ehci, hostpc_reg);
@@ -886,17 +906,18 @@ static int ehci_hub_control (
886 if ((temp & PORT_PE) == 0 906 if ((temp & PORT_PE) == 0
887 || (temp & PORT_RESET) != 0) 907 || (temp & PORT_RESET) != 0)
888 goto error; 908 goto error;
889 ehci_writel(ehci, temp | PORT_SUSPEND, status_reg); 909
890 /* After above check the port must be connected. 910 /* After above check the port must be connected.
891 * Set appropriate bit thus could put phy into low power 911 * Set appropriate bit thus could put phy into low power
892 * mode if we have hostpc feature 912 * mode if we have hostpc feature
893 */ 913 */
914 temp &= ~PORT_WKCONN_E;
915 temp |= PORT_WKDISC_E | PORT_WKOC_E;
916 ehci_writel(ehci, temp | PORT_SUSPEND, status_reg);
894 if (hostpc_reg) { 917 if (hostpc_reg) {
895 temp &= ~PORT_WKCONN_E; 918 spin_unlock_irqrestore(&ehci->lock, flags);
896 temp |= (PORT_WKDISC_E | PORT_WKOC_E);
897 ehci_writel(ehci, temp | PORT_SUSPEND,
898 status_reg);
899 msleep(5);/* 5ms for HCD enter low pwr mode */ 919 msleep(5);/* 5ms for HCD enter low pwr mode */
920 spin_lock_irqsave(&ehci->lock, flags);
900 temp1 = ehci_readl(ehci, hostpc_reg); 921 temp1 = ehci_readl(ehci, hostpc_reg);
901 ehci_writel(ehci, temp1 | HOSTPC_PHCD, 922 ehci_writel(ehci, temp1 | HOSTPC_PHCD,
902 hostpc_reg); 923 hostpc_reg);
diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
index a427d3b00634..89521775c567 100644
--- a/drivers/usb/host/ehci-q.c
+++ b/drivers/usb/host/ehci-q.c
@@ -849,9 +849,10 @@ qh_make (
849 * But interval 1 scheduling is simpler, and 849 * But interval 1 scheduling is simpler, and
850 * includes high bandwidth. 850 * includes high bandwidth.
851 */ 851 */
852 dbg ("intr period %d uframes, NYET!", 852 urb->interval = 1;
853 urb->interval); 853 } else if (qh->period > ehci->periodic_size) {
854 goto done; 854 qh->period = ehci->periodic_size;
855 urb->interval = qh->period << 3;
855 } 856 }
856 } else { 857 } else {
857 int think_time; 858 int think_time;
@@ -874,6 +875,10 @@ qh_make (
874 usb_calc_bus_time (urb->dev->speed, 875 usb_calc_bus_time (urb->dev->speed,
875 is_input, 0, max_packet (maxp))); 876 is_input, 0, max_packet (maxp)));
876 qh->period = urb->interval; 877 qh->period = urb->interval;
878 if (qh->period > ehci->periodic_size) {
879 qh->period = ehci->periodic_size;
880 urb->interval = qh->period;
881 }
877 } 882 }
878 } 883 }
879 884
diff --git a/drivers/usb/host/fhci-hcd.c b/drivers/usb/host/fhci-hcd.c
index 0951818ef93b..78e7c3cfcb72 100644
--- a/drivers/usb/host/fhci-hcd.c
+++ b/drivers/usb/host/fhci-hcd.c
@@ -242,9 +242,10 @@ err:
242static void fhci_usb_free(void *lld) 242static void fhci_usb_free(void *lld)
243{ 243{
244 struct fhci_usb *usb = lld; 244 struct fhci_usb *usb = lld;
245 struct fhci_hcd *fhci = usb->fhci; 245 struct fhci_hcd *fhci;
246 246
247 if (usb) { 247 if (usb) {
248 fhci = usb->fhci;
248 fhci_config_transceiver(fhci, FHCI_PORT_POWER_OFF); 249 fhci_config_transceiver(fhci, FHCI_PORT_POWER_OFF);
249 fhci_ep0_free(usb); 250 fhci_ep0_free(usb);
250 kfree(usb->actual_frame); 251 kfree(usb->actual_frame);
diff --git a/drivers/usb/host/fhci-tds.c b/drivers/usb/host/fhci-tds.c
index d224ab467a40..e1232890c78b 100644
--- a/drivers/usb/host/fhci-tds.c
+++ b/drivers/usb/host/fhci-tds.c
@@ -105,7 +105,7 @@ void fhci_ep0_free(struct fhci_usb *usb)
105 if (ep->td_base) 105 if (ep->td_base)
106 cpm_muram_free(cpm_muram_offset(ep->td_base)); 106 cpm_muram_free(cpm_muram_offset(ep->td_base));
107 107
108 if (ep->conf_frame_Q) { 108 if (kfifo_initialized(&ep->conf_frame_Q)) {
109 size = cq_howmany(&ep->conf_frame_Q); 109 size = cq_howmany(&ep->conf_frame_Q);
110 for (; size; size--) { 110 for (; size; size--) {
111 struct packet *pkt = cq_get(&ep->conf_frame_Q); 111 struct packet *pkt = cq_get(&ep->conf_frame_Q);
@@ -115,7 +115,7 @@ void fhci_ep0_free(struct fhci_usb *usb)
115 cq_delete(&ep->conf_frame_Q); 115 cq_delete(&ep->conf_frame_Q);
116 } 116 }
117 117
118 if (ep->empty_frame_Q) { 118 if (kfifo_initialized(&ep->empty_frame_Q)) {
119 size = cq_howmany(&ep->empty_frame_Q); 119 size = cq_howmany(&ep->empty_frame_Q);
120 for (; size; size--) { 120 for (; size; size--) {
121 struct packet *pkt = cq_get(&ep->empty_frame_Q); 121 struct packet *pkt = cq_get(&ep->empty_frame_Q);
@@ -125,7 +125,7 @@ void fhci_ep0_free(struct fhci_usb *usb)
125 cq_delete(&ep->empty_frame_Q); 125 cq_delete(&ep->empty_frame_Q);
126 } 126 }
127 127
128 if (ep->dummy_packets_Q) { 128 if (kfifo_initialized(&ep->dummy_packets_Q)) {
129 size = cq_howmany(&ep->dummy_packets_Q); 129 size = cq_howmany(&ep->dummy_packets_Q);
130 for (; size; size--) { 130 for (; size; size--) {
131 u8 *buff = cq_get(&ep->dummy_packets_Q); 131 u8 *buff = cq_get(&ep->dummy_packets_Q);
diff --git a/drivers/usb/host/isp1362-hcd.c b/drivers/usb/host/isp1362-hcd.c
index 73352f3739b5..42971657fde2 100644
--- a/drivers/usb/host/isp1362-hcd.c
+++ b/drivers/usb/host/isp1362-hcd.c
@@ -2270,10 +2270,10 @@ static int isp1362_mem_config(struct usb_hcd *hcd)
2270 dev_info(hcd->self.controller, "ISP1362 Memory usage:\n"); 2270 dev_info(hcd->self.controller, "ISP1362 Memory usage:\n");
2271 dev_info(hcd->self.controller, " ISTL: 2 * %4d: %4d @ $%04x:$%04x\n", 2271 dev_info(hcd->self.controller, " ISTL: 2 * %4d: %4d @ $%04x:$%04x\n",
2272 istl_size / 2, istl_size, 0, istl_size / 2); 2272 istl_size / 2, istl_size, 0, istl_size / 2);
2273 dev_info(hcd->self.controller, " INTL: %4d * (%3lu+8): %4d @ $%04x\n", 2273 dev_info(hcd->self.controller, " INTL: %4d * (%3zu+8): %4d @ $%04x\n",
2274 ISP1362_INTL_BUFFERS, intl_blksize - PTD_HEADER_SIZE, 2274 ISP1362_INTL_BUFFERS, intl_blksize - PTD_HEADER_SIZE,
2275 intl_size, istl_size); 2275 intl_size, istl_size);
2276 dev_info(hcd->self.controller, " ATL : %4d * (%3lu+8): %4d @ $%04x\n", 2276 dev_info(hcd->self.controller, " ATL : %4d * (%3zu+8): %4d @ $%04x\n",
2277 atl_buffers, atl_blksize - PTD_HEADER_SIZE, 2277 atl_buffers, atl_blksize - PTD_HEADER_SIZE,
2278 atl_size, istl_size + intl_size); 2278 atl_size, istl_size + intl_size);
2279 dev_info(hcd->self.controller, " USED/FREE: %4d %4d\n", total, 2279 dev_info(hcd->self.controller, " USED/FREE: %4d %4d\n", total,
@@ -2697,6 +2697,8 @@ static int __init isp1362_probe(struct platform_device *pdev)
2697 void __iomem *data_reg; 2697 void __iomem *data_reg;
2698 int irq; 2698 int irq;
2699 int retval = 0; 2699 int retval = 0;
2700 struct resource *irq_res;
2701 unsigned int irq_flags = 0;
2700 2702
2701 /* basic sanity checks first. board-specific init logic should 2703 /* basic sanity checks first. board-specific init logic should
2702 * have initialized this the three resources and probably board 2704 * have initialized this the three resources and probably board
@@ -2710,11 +2712,12 @@ static int __init isp1362_probe(struct platform_device *pdev)
2710 2712
2711 data = platform_get_resource(pdev, IORESOURCE_MEM, 0); 2713 data = platform_get_resource(pdev, IORESOURCE_MEM, 0);
2712 addr = platform_get_resource(pdev, IORESOURCE_MEM, 1); 2714 addr = platform_get_resource(pdev, IORESOURCE_MEM, 1);
2713 irq = platform_get_irq(pdev, 0); 2715 irq_res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
2714 if (!addr || !data || irq < 0) { 2716 if (!addr || !data || !irq_res) {
2715 retval = -ENODEV; 2717 retval = -ENODEV;
2716 goto err1; 2718 goto err1;
2717 } 2719 }
2720 irq = irq_res->start;
2718 2721
2719#ifdef CONFIG_USB_HCD_DMA 2722#ifdef CONFIG_USB_HCD_DMA
2720 if (pdev->dev.dma_mask) { 2723 if (pdev->dev.dma_mask) {
@@ -2781,12 +2784,16 @@ static int __init isp1362_probe(struct platform_device *pdev)
2781 } 2784 }
2782#endif 2785#endif
2783 2786
2784#ifdef CONFIG_ARM 2787 if (irq_res->flags & IORESOURCE_IRQ_HIGHEDGE)
2785 if (isp1362_hcd->board) 2788 irq_flags |= IRQF_TRIGGER_RISING;
2786 set_irq_type(irq, isp1362_hcd->board->int_act_high ? IRQT_RISING : IRQT_FALLING); 2789 if (irq_res->flags & IORESOURCE_IRQ_LOWEDGE)
2787#endif 2790 irq_flags |= IRQF_TRIGGER_FALLING;
2791 if (irq_res->flags & IORESOURCE_IRQ_HIGHLEVEL)
2792 irq_flags |= IRQF_TRIGGER_HIGH;
2793 if (irq_res->flags & IORESOURCE_IRQ_LOWLEVEL)
2794 irq_flags |= IRQF_TRIGGER_LOW;
2788 2795
2789 retval = usb_add_hcd(hcd, irq, IRQF_TRIGGER_LOW | IRQF_DISABLED | IRQF_SHARED); 2796 retval = usb_add_hcd(hcd, irq, irq_flags | IRQF_DISABLED | IRQF_SHARED);
2790 if (retval != 0) 2797 if (retval != 0)
2791 goto err6; 2798 goto err6;
2792 pr_info("%s, irq %d\n", hcd->product_desc, irq); 2799 pr_info("%s, irq %d\n", hcd->product_desc, irq);
diff --git a/drivers/usb/host/isp1760-hcd.c b/drivers/usb/host/isp1760-hcd.c
index 9600a58299db..27b8f7cb4471 100644
--- a/drivers/usb/host/isp1760-hcd.c
+++ b/drivers/usb/host/isp1760-hcd.c
@@ -1039,12 +1039,12 @@ static void do_atl_int(struct usb_hcd *usb_hcd)
1039 if (!nakcount && (dw3 & DW3_QTD_ACTIVE)) { 1039 if (!nakcount && (dw3 & DW3_QTD_ACTIVE)) {
1040 u32 buffstatus; 1040 u32 buffstatus;
1041 1041
1042 /* XXX 1042 /*
1043 * NAKs are handled in HW by the chip. Usually if the 1043 * NAKs are handled in HW by the chip. Usually if the
1044 * device is not able to send data fast enough. 1044 * device is not able to send data fast enough.
1045 * This did not trigger for a long time now. 1045 * This happens mostly on slower hardware.
1046 */ 1046 */
1047 printk(KERN_ERR "Reloading ptd %p/%p... qh %p readed: " 1047 printk(KERN_NOTICE "Reloading ptd %p/%p... qh %p read: "
1048 "%d of %zu done: %08x cur: %08x\n", qtd, 1048 "%d of %zu done: %08x cur: %08x\n", qtd,
1049 urb, qh, PTD_XFERRED_LENGTH(dw3), 1049 urb, qh, PTD_XFERRED_LENGTH(dw3),
1050 qtd->length, done_map, 1050 qtd->length, done_map,
diff --git a/drivers/usb/host/r8a66597-hcd.c b/drivers/usb/host/r8a66597-hcd.c
index b7a661c02bcd..bee558aed427 100644
--- a/drivers/usb/host/r8a66597-hcd.c
+++ b/drivers/usb/host/r8a66597-hcd.c
@@ -35,7 +35,9 @@
35#include <linux/usb.h> 35#include <linux/usb.h>
36#include <linux/platform_device.h> 36#include <linux/platform_device.h>
37#include <linux/io.h> 37#include <linux/io.h>
38#include <linux/mm.h>
38#include <linux/irq.h> 39#include <linux/irq.h>
40#include <asm/cacheflush.h>
39 41
40#include "../core/hcd.h" 42#include "../core/hcd.h"
41#include "r8a66597.h" 43#include "r8a66597.h"
@@ -216,8 +218,17 @@ static void disable_controller(struct r8a66597 *r8a66597)
216{ 218{
217 int port; 219 int port;
218 220
221 /* disable interrupts */
219 r8a66597_write(r8a66597, 0, INTENB0); 222 r8a66597_write(r8a66597, 0, INTENB0);
220 r8a66597_write(r8a66597, 0, INTSTS0); 223 r8a66597_write(r8a66597, 0, INTENB1);
224 r8a66597_write(r8a66597, 0, BRDYENB);
225 r8a66597_write(r8a66597, 0, BEMPENB);
226 r8a66597_write(r8a66597, 0, NRDYENB);
227
228 /* clear status */
229 r8a66597_write(r8a66597, 0, BRDYSTS);
230 r8a66597_write(r8a66597, 0, NRDYSTS);
231 r8a66597_write(r8a66597, 0, BEMPSTS);
221 232
222 for (port = 0; port < r8a66597->max_root_hub; port++) 233 for (port = 0; port < r8a66597->max_root_hub; port++)
223 r8a66597_disable_port(r8a66597, port); 234 r8a66597_disable_port(r8a66597, port);
@@ -811,6 +822,26 @@ static void enable_r8a66597_pipe(struct r8a66597 *r8a66597, struct urb *urb,
811 enable_r8a66597_pipe_dma(r8a66597, dev, pipe, urb); 822 enable_r8a66597_pipe_dma(r8a66597, dev, pipe, urb);
812} 823}
813 824
825static void r8a66597_urb_done(struct r8a66597 *r8a66597, struct urb *urb,
826 int status)
827__releases(r8a66597->lock)
828__acquires(r8a66597->lock)
829{
830 if (usb_pipein(urb->pipe) && usb_pipetype(urb->pipe) != PIPE_CONTROL) {
831 void *ptr;
832
833 for (ptr = urb->transfer_buffer;
834 ptr < urb->transfer_buffer + urb->transfer_buffer_length;
835 ptr += PAGE_SIZE)
836 flush_dcache_page(virt_to_page(ptr));
837 }
838
839 usb_hcd_unlink_urb_from_ep(r8a66597_to_hcd(r8a66597), urb);
840 spin_unlock(&r8a66597->lock);
841 usb_hcd_giveback_urb(r8a66597_to_hcd(r8a66597), urb, status);
842 spin_lock(&r8a66597->lock);
843}
844
814/* this function must be called with interrupt disabled */ 845/* this function must be called with interrupt disabled */
815static void force_dequeue(struct r8a66597 *r8a66597, u16 pipenum, u16 address) 846static void force_dequeue(struct r8a66597 *r8a66597, u16 pipenum, u16 address)
816{ 847{
@@ -829,15 +860,9 @@ static void force_dequeue(struct r8a66597 *r8a66597, u16 pipenum, u16 address)
829 list_del(&td->queue); 860 list_del(&td->queue);
830 kfree(td); 861 kfree(td);
831 862
832 if (urb) { 863 if (urb)
833 usb_hcd_unlink_urb_from_ep(r8a66597_to_hcd(r8a66597), 864 r8a66597_urb_done(r8a66597, urb, -ENODEV);
834 urb);
835 865
836 spin_unlock(&r8a66597->lock);
837 usb_hcd_giveback_urb(r8a66597_to_hcd(r8a66597), urb,
838 -ENODEV);
839 spin_lock(&r8a66597->lock);
840 }
841 break; 866 break;
842 } 867 }
843} 868}
@@ -997,6 +1022,8 @@ static void start_root_hub_sampling(struct r8a66597 *r8a66597, int port,
997/* this function must be called with interrupt disabled */ 1022/* this function must be called with interrupt disabled */
998static void r8a66597_check_syssts(struct r8a66597 *r8a66597, int port, 1023static void r8a66597_check_syssts(struct r8a66597 *r8a66597, int port,
999 u16 syssts) 1024 u16 syssts)
1025__releases(r8a66597->lock)
1026__acquires(r8a66597->lock)
1000{ 1027{
1001 if (syssts == SE0) { 1028 if (syssts == SE0) {
1002 r8a66597_write(r8a66597, ~ATTCH, get_intsts_reg(port)); 1029 r8a66597_write(r8a66597, ~ATTCH, get_intsts_reg(port));
@@ -1014,7 +1041,9 @@ static void r8a66597_check_syssts(struct r8a66597 *r8a66597, int port,
1014 usb_hcd_resume_root_hub(r8a66597_to_hcd(r8a66597)); 1041 usb_hcd_resume_root_hub(r8a66597_to_hcd(r8a66597));
1015 } 1042 }
1016 1043
1044 spin_unlock(&r8a66597->lock);
1017 usb_hcd_poll_rh_status(r8a66597_to_hcd(r8a66597)); 1045 usb_hcd_poll_rh_status(r8a66597_to_hcd(r8a66597));
1046 spin_lock(&r8a66597->lock);
1018} 1047}
1019 1048
1020/* this function must be called with interrupt disabled */ 1049/* this function must be called with interrupt disabled */
@@ -1274,10 +1303,7 @@ __releases(r8a66597->lock) __acquires(r8a66597->lock)
1274 if (usb_pipeisoc(urb->pipe)) 1303 if (usb_pipeisoc(urb->pipe))
1275 urb->start_frame = r8a66597_get_frame(hcd); 1304 urb->start_frame = r8a66597_get_frame(hcd);
1276 1305
1277 usb_hcd_unlink_urb_from_ep(r8a66597_to_hcd(r8a66597), urb); 1306 r8a66597_urb_done(r8a66597, urb, status);
1278 spin_unlock(&r8a66597->lock);
1279 usb_hcd_giveback_urb(hcd, urb, status);
1280 spin_lock(&r8a66597->lock);
1281 } 1307 }
1282 1308
1283 if (restart) { 1309 if (restart) {
@@ -2466,6 +2492,12 @@ static int __devinit r8a66597_probe(struct platform_device *pdev)
2466 r8a66597->rh_timer.data = (unsigned long)r8a66597; 2492 r8a66597->rh_timer.data = (unsigned long)r8a66597;
2467 r8a66597->reg = (unsigned long)reg; 2493 r8a66597->reg = (unsigned long)reg;
2468 2494
2495 /* make sure no interrupts are pending */
2496 ret = r8a66597_clock_enable(r8a66597);
2497 if (ret < 0)
2498 goto clean_up3;
2499 disable_controller(r8a66597);
2500
2469 for (i = 0; i < R8A66597_MAX_NUM_PIPE; i++) { 2501 for (i = 0; i < R8A66597_MAX_NUM_PIPE; i++) {
2470 INIT_LIST_HEAD(&r8a66597->pipe_queue[i]); 2502 INIT_LIST_HEAD(&r8a66597->pipe_queue[i]);
2471 init_timer(&r8a66597->td_timer[i]); 2503 init_timer(&r8a66597->td_timer[i]);
diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c
index 5cd0e48f67fb..99cd00fd3514 100644
--- a/drivers/usb/host/uhci-hcd.c
+++ b/drivers/usb/host/uhci-hcd.c
@@ -749,7 +749,20 @@ static int uhci_rh_suspend(struct usb_hcd *hcd)
749 spin_lock_irq(&uhci->lock); 749 spin_lock_irq(&uhci->lock);
750 if (!test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags)) 750 if (!test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags))
751 rc = -ESHUTDOWN; 751 rc = -ESHUTDOWN;
752 else if (!uhci->dead) 752 else if (uhci->dead)
753 ; /* Dead controllers tell no tales */
754
755 /* Once the controller is stopped, port resumes that are already
756 * in progress won't complete. Hence if remote wakeup is enabled
757 * for the root hub and any ports are in the middle of a resume or
758 * remote wakeup, we must fail the suspend.
759 */
760 else if (hcd->self.root_hub->do_remote_wakeup &&
761 uhci->resuming_ports) {
762 dev_dbg(uhci_dev(uhci), "suspend failed because a port "
763 "is resuming\n");
764 rc = -EBUSY;
765 } else
753 suspend_rh(uhci, UHCI_RH_SUSPENDED); 766 suspend_rh(uhci, UHCI_RH_SUSPENDED);
754 spin_unlock_irq(&uhci->lock); 767 spin_unlock_irq(&uhci->lock);
755 return rc; 768 return rc;
diff --git a/drivers/usb/host/uhci-hub.c b/drivers/usb/host/uhci-hub.c
index 885b585360b9..8270055848ca 100644
--- a/drivers/usb/host/uhci-hub.c
+++ b/drivers/usb/host/uhci-hub.c
@@ -167,7 +167,7 @@ static void uhci_check_ports(struct uhci_hcd *uhci)
167 /* Port received a wakeup request */ 167 /* Port received a wakeup request */
168 set_bit(port, &uhci->resuming_ports); 168 set_bit(port, &uhci->resuming_ports);
169 uhci->ports_timeout = jiffies + 169 uhci->ports_timeout = jiffies +
170 msecs_to_jiffies(20); 170 msecs_to_jiffies(25);
171 171
172 /* Make sure we see the port again 172 /* Make sure we see the port again
173 * after the resuming period is over. */ 173 * after the resuming period is over. */
diff --git a/drivers/usb/misc/sisusbvga/sisusb.c b/drivers/usb/misc/sisusbvga/sisusb.c
index 0025847743f3..8b37a4b9839e 100644
--- a/drivers/usb/misc/sisusbvga/sisusb.c
+++ b/drivers/usb/misc/sisusbvga/sisusb.c
@@ -3245,6 +3245,7 @@ static struct usb_device_id sisusb_table [] = {
3245 { USB_DEVICE(0x0711, 0x0902) }, 3245 { USB_DEVICE(0x0711, 0x0902) },
3246 { USB_DEVICE(0x0711, 0x0903) }, 3246 { USB_DEVICE(0x0711, 0x0903) },
3247 { USB_DEVICE(0x0711, 0x0918) }, 3247 { USB_DEVICE(0x0711, 0x0918) },
3248 { USB_DEVICE(0x0711, 0x0920) },
3248 { USB_DEVICE(0x182d, 0x021c) }, 3249 { USB_DEVICE(0x182d, 0x021c) },
3249 { USB_DEVICE(0x182d, 0x0269) }, 3250 { USB_DEVICE(0x182d, 0x0269) },
3250 { } 3251 { }
diff --git a/drivers/usb/otg/Kconfig b/drivers/usb/otg/Kconfig
index de56b3d743d7..3d2d3e549bd1 100644
--- a/drivers/usb/otg/Kconfig
+++ b/drivers/usb/otg/Kconfig
@@ -44,6 +44,7 @@ config ISP1301_OMAP
44config USB_ULPI 44config USB_ULPI
45 bool "Generic ULPI Transceiver Driver" 45 bool "Generic ULPI Transceiver Driver"
46 depends on ARM 46 depends on ARM
47 select USB_OTG_UTILS
47 help 48 help
48 Enable this to support ULPI connected USB OTG transceivers which 49 Enable this to support ULPI connected USB OTG transceivers which
49 are likely found on embedded boards. 50 are likely found on embedded boards.
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index 216f187582ab..7638828e7317 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -50,7 +50,7 @@
50 * Version Information 50 * Version Information
51 */ 51 */
52#define DRIVER_VERSION "v1.5.0" 52#define DRIVER_VERSION "v1.5.0"
53#define DRIVER_AUTHOR "Greg Kroah-Hartman <greg@kroah.com>, Bill Ryder <bryder@sgi.com>, Kuba Ober <kuba@mareimbrium.org>" 53#define DRIVER_AUTHOR "Greg Kroah-Hartman <greg@kroah.com>, Bill Ryder <bryder@sgi.com>, Kuba Ober <kuba@mareimbrium.org>, Andreas Mohr"
54#define DRIVER_DESC "USB FTDI Serial Converters Driver" 54#define DRIVER_DESC "USB FTDI Serial Converters Driver"
55 55
56static int debug; 56static int debug;
@@ -145,10 +145,15 @@ static struct ftdi_sio_quirk ftdi_HE_TIRA1_quirk = {
145 145
146 146
147 147
148/*
149 * Device ID not listed? Test via module params product/vendor or
150 * /sys/bus/usb/ftdi_sio/new_id, then send patch/report!
151 */
148static struct usb_device_id id_table_combined [] = { 152static struct usb_device_id id_table_combined [] = {
149 { USB_DEVICE(FTDI_VID, FTDI_AMC232_PID) }, 153 { USB_DEVICE(FTDI_VID, FTDI_AMC232_PID) },
150 { USB_DEVICE(FTDI_VID, FTDI_CANUSB_PID) }, 154 { USB_DEVICE(FTDI_VID, FTDI_CANUSB_PID) },
151 { USB_DEVICE(FTDI_VID, FTDI_CANDAPTER_PID) }, 155 { USB_DEVICE(FTDI_VID, FTDI_CANDAPTER_PID) },
156 { USB_DEVICE(FTDI_VID, FTDI_NXTCAM_PID) },
152 { USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_0_PID) }, 157 { USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_0_PID) },
153 { USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_1_PID) }, 158 { USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_1_PID) },
154 { USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_2_PID) }, 159 { USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_2_PID) },
@@ -552,9 +557,16 @@ static struct usb_device_id id_table_combined [] = {
552 { USB_DEVICE(FTDI_VID, FTDI_IBS_PEDO_PID) }, 557 { USB_DEVICE(FTDI_VID, FTDI_IBS_PEDO_PID) },
553 { USB_DEVICE(FTDI_VID, FTDI_IBS_PROD_PID) }, 558 { USB_DEVICE(FTDI_VID, FTDI_IBS_PROD_PID) },
554 /* 559 /*
555 * Due to many user requests for multiple ELV devices we enable 560 * ELV devices:
556 * them by default.
557 */ 561 */
562 { USB_DEVICE(FTDI_VID, FTDI_ELV_USR_PID) },
563 { USB_DEVICE(FTDI_VID, FTDI_ELV_MSM1_PID) },
564 { USB_DEVICE(FTDI_VID, FTDI_ELV_KL100_PID) },
565 { USB_DEVICE(FTDI_VID, FTDI_ELV_WS550_PID) },
566 { USB_DEVICE(FTDI_VID, FTDI_ELV_EC3000_PID) },
567 { USB_DEVICE(FTDI_VID, FTDI_ELV_WS888_PID) },
568 { USB_DEVICE(FTDI_VID, FTDI_ELV_TWS550_PID) },
569 { USB_DEVICE(FTDI_VID, FTDI_ELV_FEM_PID) },
558 { USB_DEVICE(FTDI_VID, FTDI_ELV_CLI7000_PID) }, 570 { USB_DEVICE(FTDI_VID, FTDI_ELV_CLI7000_PID) },
559 { USB_DEVICE(FTDI_VID, FTDI_ELV_PPS7330_PID) }, 571 { USB_DEVICE(FTDI_VID, FTDI_ELV_PPS7330_PID) },
560 { USB_DEVICE(FTDI_VID, FTDI_ELV_TFM100_PID) }, 572 { USB_DEVICE(FTDI_VID, FTDI_ELV_TFM100_PID) },
@@ -571,11 +583,17 @@ static struct usb_device_id id_table_combined [] = {
571 { USB_DEVICE(FTDI_VID, FTDI_ELV_PCK100_PID) }, 583 { USB_DEVICE(FTDI_VID, FTDI_ELV_PCK100_PID) },
572 { USB_DEVICE(FTDI_VID, FTDI_ELV_RFP500_PID) }, 584 { USB_DEVICE(FTDI_VID, FTDI_ELV_RFP500_PID) },
573 { USB_DEVICE(FTDI_VID, FTDI_ELV_FS20SIG_PID) }, 585 { USB_DEVICE(FTDI_VID, FTDI_ELV_FS20SIG_PID) },
586 { USB_DEVICE(FTDI_VID, FTDI_ELV_UTP8_PID) },
574 { USB_DEVICE(FTDI_VID, FTDI_ELV_WS300PC_PID) }, 587 { USB_DEVICE(FTDI_VID, FTDI_ELV_WS300PC_PID) },
588 { USB_DEVICE(FTDI_VID, FTDI_ELV_WS444PC_PID) },
575 { USB_DEVICE(FTDI_VID, FTDI_ELV_FHZ1300PC_PID) }, 589 { USB_DEVICE(FTDI_VID, FTDI_ELV_FHZ1300PC_PID) },
576 { USB_DEVICE(FTDI_VID, FTDI_ELV_EM1010PC_PID) }, 590 { USB_DEVICE(FTDI_VID, FTDI_ELV_EM1010PC_PID) },
577 { USB_DEVICE(FTDI_VID, FTDI_ELV_WS500_PID) }, 591 { USB_DEVICE(FTDI_VID, FTDI_ELV_WS500_PID) },
578 { USB_DEVICE(FTDI_VID, FTDI_ELV_HS485_PID) }, 592 { USB_DEVICE(FTDI_VID, FTDI_ELV_HS485_PID) },
593 { USB_DEVICE(FTDI_VID, FTDI_ELV_UMS100_PID) },
594 { USB_DEVICE(FTDI_VID, FTDI_ELV_TFD128_PID) },
595 { USB_DEVICE(FTDI_VID, FTDI_ELV_FM3RX_PID) },
596 { USB_DEVICE(FTDI_VID, FTDI_ELV_WS777_PID) },
579 { USB_DEVICE(FTDI_VID, LINX_SDMUSBQSS_PID) }, 597 { USB_DEVICE(FTDI_VID, LINX_SDMUSBQSS_PID) },
580 { USB_DEVICE(FTDI_VID, LINX_MASTERDEVEL2_PID) }, 598 { USB_DEVICE(FTDI_VID, LINX_MASTERDEVEL2_PID) },
581 { USB_DEVICE(FTDI_VID, LINX_FUTURE_0_PID) }, 599 { USB_DEVICE(FTDI_VID, LINX_FUTURE_0_PID) },
@@ -697,6 +715,7 @@ static struct usb_device_id id_table_combined [] = {
697 { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_USB60F) }, 715 { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_USB60F) },
698 { USB_DEVICE(FTDI_VID, FTDI_REU_TINY_PID) }, 716 { USB_DEVICE(FTDI_VID, FTDI_REU_TINY_PID) },
699 { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO4x4_PID) }, 717 { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO4x4_PID) },
718 { USB_DEVICE(PAPOUCH_VID, PAPOUCH_AD4USB_PID) },
700 { USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DGQG_PID) }, 719 { USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DGQG_PID) },
701 { USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DUSB_PID) }, 720 { USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DUSB_PID) },
702 { USB_DEVICE(ALTI2_VID, ALTI2_N3_PID) }, 721 { USB_DEVICE(ALTI2_VID, ALTI2_N3_PID) },
diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
index da92b4952ffb..c8951aeed983 100644
--- a/drivers/usb/serial/ftdi_sio_ids.h
+++ b/drivers/usb/serial/ftdi_sio_ids.h
@@ -38,6 +38,8 @@
38/* www.candapter.com Ewert Energy Systems CANdapter device */ 38/* www.candapter.com Ewert Energy Systems CANdapter device */
39#define FTDI_CANDAPTER_PID 0x9F80 /* Product Id */ 39#define FTDI_CANDAPTER_PID 0x9F80 /* Product Id */
40 40
41#define FTDI_NXTCAM_PID 0xABB8 /* NXTCam for Mindstorms NXT */
42
41/* OOCDlink by Joern Kaipf <joernk@web.de> 43/* OOCDlink by Joern Kaipf <joernk@web.de>
42 * (http://www.joernonline.de/dw/doku.php?id=start&idx=projects:oocdlink) */ 44 * (http://www.joernonline.de/dw/doku.php?id=start&idx=projects:oocdlink) */
43#define FTDI_OOCDLINK_PID 0xbaf8 /* Amontec JTAGkey */ 45#define FTDI_OOCDLINK_PID 0xbaf8 /* Amontec JTAGkey */
@@ -161,22 +163,37 @@
161/* 163/*
162 * ELV USB devices submitted by Christian Abt of ELV (www.elv.de). 164 * ELV USB devices submitted by Christian Abt of ELV (www.elv.de).
163 * All of these devices use FTDI's vendor ID (0x0403). 165 * All of these devices use FTDI's vendor ID (0x0403).
166 * Further IDs taken from ELV Windows .inf file.
164 * 167 *
165 * The previously included PID for the UO 100 module was incorrect. 168 * The previously included PID for the UO 100 module was incorrect.
166 * In fact, that PID was for ELV's UR 100 USB-RS232 converter (0xFB58). 169 * In fact, that PID was for ELV's UR 100 USB-RS232 converter (0xFB58).
167 * 170 *
168 * Armin Laeuger originally sent the PID for the UM 100 module. 171 * Armin Laeuger originally sent the PID for the UM 100 module.
169 */ 172 */
173#define FTDI_ELV_USR_PID 0xE000 /* ELV Universal-Sound-Recorder */
174#define FTDI_ELV_MSM1_PID 0xE001 /* ELV Mini-Sound-Modul */
175#define FTDI_ELV_KL100_PID 0xE002 /* ELV Kfz-Leistungsmesser KL 100 */
176#define FTDI_ELV_WS550_PID 0xE004 /* WS 550 */
177#define FTDI_ELV_EC3000_PID 0xE006 /* ENERGY CONTROL 3000 USB */
178#define FTDI_ELV_WS888_PID 0xE008 /* WS 888 */
179#define FTDI_ELV_TWS550_PID 0xE009 /* Technoline WS 550 */
180#define FTDI_ELV_FEM_PID 0xE00A /* Funk Energie Monitor */
170#define FTDI_ELV_FHZ1300PC_PID 0xE0E8 /* FHZ 1300 PC */ 181#define FTDI_ELV_FHZ1300PC_PID 0xE0E8 /* FHZ 1300 PC */
171#define FTDI_ELV_WS500_PID 0xE0E9 /* PC-Wetterstation (WS 500) */ 182#define FTDI_ELV_WS500_PID 0xE0E9 /* PC-Wetterstation (WS 500) */
172#define FTDI_ELV_HS485_PID 0xE0EA /* USB to RS-485 adapter */ 183#define FTDI_ELV_HS485_PID 0xE0EA /* USB to RS-485 adapter */
184#define FTDI_ELV_UMS100_PID 0xE0EB /* ELV USB Master-Slave Schaltsteckdose UMS 100 */
185#define FTDI_ELV_TFD128_PID 0xE0EC /* ELV Temperatur-Feuchte-Datenlogger TFD 128 */
186#define FTDI_ELV_FM3RX_PID 0xE0ED /* ELV Messwertuebertragung FM3 RX */
187#define FTDI_ELV_WS777_PID 0xE0EE /* Conrad WS 777 */
173#define FTDI_ELV_EM1010PC_PID 0xE0EF /* Engery monitor EM 1010 PC */ 188#define FTDI_ELV_EM1010PC_PID 0xE0EF /* Engery monitor EM 1010 PC */
174#define FTDI_ELV_CSI8_PID 0xE0F0 /* Computer-Schalt-Interface (CSI 8) */ 189#define FTDI_ELV_CSI8_PID 0xE0F0 /* Computer-Schalt-Interface (CSI 8) */
175#define FTDI_ELV_EM1000DL_PID 0xE0F1 /* PC-Datenlogger fuer Energiemonitor (EM 1000 DL) */ 190#define FTDI_ELV_EM1000DL_PID 0xE0F1 /* PC-Datenlogger fuer Energiemonitor (EM 1000 DL) */
176#define FTDI_ELV_PCK100_PID 0xE0F2 /* PC-Kabeltester (PCK 100) */ 191#define FTDI_ELV_PCK100_PID 0xE0F2 /* PC-Kabeltester (PCK 100) */
177#define FTDI_ELV_RFP500_PID 0xE0F3 /* HF-Leistungsmesser (RFP 500) */ 192#define FTDI_ELV_RFP500_PID 0xE0F3 /* HF-Leistungsmesser (RFP 500) */
178#define FTDI_ELV_FS20SIG_PID 0xE0F4 /* Signalgeber (FS 20 SIG) */ 193#define FTDI_ELV_FS20SIG_PID 0xE0F4 /* Signalgeber (FS 20 SIG) */
194#define FTDI_ELV_UTP8_PID 0xE0F5 /* ELV UTP 8 */
179#define FTDI_ELV_WS300PC_PID 0xE0F6 /* PC-Wetterstation (WS 300 PC) */ 195#define FTDI_ELV_WS300PC_PID 0xE0F6 /* PC-Wetterstation (WS 300 PC) */
196#define FTDI_ELV_WS444PC_PID 0xE0F7 /* Conrad WS 444 PC */
180#define FTDI_PHI_FISCO_PID 0xE40B /* PHI Fisco USB to Serial cable */ 197#define FTDI_PHI_FISCO_PID 0xE40B /* PHI Fisco USB to Serial cable */
181#define FTDI_ELV_UAD8_PID 0xF068 /* USB-AD-Wandler (UAD 8) */ 198#define FTDI_ELV_UAD8_PID 0xF068 /* USB-AD-Wandler (UAD 8) */
182#define FTDI_ELV_UDA7_PID 0xF069 /* USB-DA-Wandler (UDA 7) */ 199#define FTDI_ELV_UDA7_PID 0xF069 /* USB-DA-Wandler (UDA 7) */
@@ -968,6 +985,7 @@
968#define PAPOUCH_VID 0x5050 /* Vendor ID */ 985#define PAPOUCH_VID 0x5050 /* Vendor ID */
969#define PAPOUCH_TMU_PID 0x0400 /* TMU USB Thermometer */ 986#define PAPOUCH_TMU_PID 0x0400 /* TMU USB Thermometer */
970#define PAPOUCH_QUIDO4x4_PID 0x0900 /* Quido 4/4 Module */ 987#define PAPOUCH_QUIDO4x4_PID 0x0900 /* Quido 4/4 Module */
988#define PAPOUCH_AD4USB_PID 0x8003 /* AD4USB Measurement Module */
971 989
972/* 990/*
973 * Marvell SheevaPlug 991 * Marvell SheevaPlug
diff --git a/drivers/usb/serial/generic.c b/drivers/usb/serial/generic.c
index f1ea3a33b6e6..83443d6306d6 100644
--- a/drivers/usb/serial/generic.c
+++ b/drivers/usb/serial/generic.c
@@ -386,12 +386,12 @@ int usb_serial_generic_chars_in_buffer(struct tty_struct *tty)
386 386
387 dbg("%s - port %d", __func__, port->number); 387 dbg("%s - port %d", __func__, port->number);
388 388
389 if (serial->type->max_in_flight_urbs) { 389 spin_lock_irqsave(&port->lock, flags);
390 spin_lock_irqsave(&port->lock, flags); 390 if (serial->type->max_in_flight_urbs)
391 chars = port->tx_bytes_flight; 391 chars = port->tx_bytes_flight;
392 spin_unlock_irqrestore(&port->lock, flags); 392 else if (serial->num_bulk_out)
393 } else if (serial->num_bulk_out)
394 chars = kfifo_len(&port->write_fifo); 393 chars = kfifo_len(&port->write_fifo);
394 spin_unlock_irqrestore(&port->lock, flags);
395 395
396 dbg("%s - returns %d", __func__, chars); 396 dbg("%s - returns %d", __func__, chars);
397 return chars; 397 return chars;
@@ -489,6 +489,8 @@ void usb_serial_generic_write_bulk_callback(struct urb *urb)
489 dbg("%s - port %d", __func__, port->number); 489 dbg("%s - port %d", __func__, port->number);
490 490
491 if (port->serial->type->max_in_flight_urbs) { 491 if (port->serial->type->max_in_flight_urbs) {
492 kfree(urb->transfer_buffer);
493
492 spin_lock_irqsave(&port->lock, flags); 494 spin_lock_irqsave(&port->lock, flags);
493 --port->urbs_in_flight; 495 --port->urbs_in_flight;
494 port->tx_bytes_flight -= urb->transfer_buffer_length; 496 port->tx_bytes_flight -= urb->transfer_buffer_length;
diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c
index ac1b6449fb6a..3eb6143bb646 100644
--- a/drivers/usb/serial/sierra.c
+++ b/drivers/usb/serial/sierra.c
@@ -298,6 +298,7 @@ static struct usb_device_id id_table [] = {
298 { USB_DEVICE(0x1199, 0x68A3), /* Sierra Wireless Direct IP modems */ 298 { USB_DEVICE(0x1199, 0x68A3), /* Sierra Wireless Direct IP modems */
299 .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist 299 .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist
300 }, 300 },
301 { USB_DEVICE(0x413C, 0x08133) }, /* Dell Computer Corp. Wireless 5720 VZW Mobile Broadband (EVDO Rev-A) Minicard GPS Port */
301 302
302 { } 303 { }
303}; 304};
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
index 64a0a2c27e12..49575fba3756 100644
--- a/drivers/usb/storage/unusual_devs.h
+++ b/drivers/usb/storage/unusual_devs.h
@@ -941,7 +941,7 @@ UNUSUAL_DEV( 0x07ab, 0xfccd, 0x0000, 0x9999,
941UNUSUAL_DEV( 0x07af, 0x0004, 0x0100, 0x0133, 941UNUSUAL_DEV( 0x07af, 0x0004, 0x0100, 0x0133,
942 "Microtech", 942 "Microtech",
943 "USB-SCSI-DB25", 943 "USB-SCSI-DB25",
944 US_SC_SCSI, US_PR_BULK, usb_stor_euscsi_init, 944 US_SC_DEVICE, US_PR_DEVICE, usb_stor_euscsi_init,
945 US_FL_SCM_MULT_TARG ), 945 US_FL_SCM_MULT_TARG ),
946 946
947UNUSUAL_DEV( 0x07af, 0x0005, 0x0100, 0x0100, 947UNUSUAL_DEV( 0x07af, 0x0005, 0x0100, 0x0100,
@@ -1807,13 +1807,6 @@ UNUSUAL_DEV( 0x2735, 0x100b, 0x0000, 0x9999,
1807 US_SC_DEVICE, US_PR_DEVICE, NULL, 1807 US_SC_DEVICE, US_PR_DEVICE, NULL,
1808 US_FL_GO_SLOW ), 1808 US_FL_GO_SLOW ),
1809 1809
1810/* Reported by Rohan Hart <rohan.hart17@gmail.com> */
1811UNUSUAL_DEV( 0x2770, 0x915d, 0x0010, 0x0010,
1812 "INTOVA",
1813 "Pixtreme",
1814 US_SC_DEVICE, US_PR_DEVICE, NULL,
1815 US_FL_FIX_CAPACITY ),
1816
1817/* Reported by Frederic Marchal <frederic.marchal@wowcompany.com> 1810/* Reported by Frederic Marchal <frederic.marchal@wowcompany.com>
1818 * Mio Moov 330 1811 * Mio Moov 330
1819 */ 1812 */
diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
index 5a53d4f0dd11..e9f995486ec1 100644
--- a/drivers/usb/storage/usb.c
+++ b/drivers/usb/storage/usb.c
@@ -434,7 +434,8 @@ static void adjust_quirks(struct us_data *us)
434 u16 vid = le16_to_cpu(us->pusb_dev->descriptor.idVendor); 434 u16 vid = le16_to_cpu(us->pusb_dev->descriptor.idVendor);
435 u16 pid = le16_to_cpu(us->pusb_dev->descriptor.idProduct); 435 u16 pid = le16_to_cpu(us->pusb_dev->descriptor.idProduct);
436 unsigned f = 0; 436 unsigned f = 0;
437 unsigned int mask = (US_FL_SANE_SENSE | US_FL_FIX_CAPACITY | 437 unsigned int mask = (US_FL_SANE_SENSE | US_FL_BAD_SENSE |
438 US_FL_FIX_CAPACITY |
438 US_FL_CAPACITY_HEURISTICS | US_FL_IGNORE_DEVICE | 439 US_FL_CAPACITY_HEURISTICS | US_FL_IGNORE_DEVICE |
439 US_FL_NOT_LOCKABLE | US_FL_MAX_SECTORS_64 | 440 US_FL_NOT_LOCKABLE | US_FL_MAX_SECTORS_64 |
440 US_FL_CAPACITY_OK | US_FL_IGNORE_RESIDUE | 441 US_FL_CAPACITY_OK | US_FL_IGNORE_RESIDUE |
diff --git a/drivers/video/backlight/omap1_bl.c b/drivers/video/backlight/omap1_bl.c
index 409ca9643528..a3a7f8938175 100644
--- a/drivers/video/backlight/omap1_bl.c
+++ b/drivers/video/backlight/omap1_bl.c
@@ -139,8 +139,6 @@ static int omapbl_probe(struct platform_device *pdev)
139 if (!pdata) 139 if (!pdata)
140 return -ENXIO; 140 return -ENXIO;
141 141
142 omapbl_ops.check_fb = pdata->check_fb;
143
144 bl = kzalloc(sizeof(struct omap_backlight), GFP_KERNEL); 142 bl = kzalloc(sizeof(struct omap_backlight), GFP_KERNEL);
145 if (unlikely(!bl)) 143 if (unlikely(!bl))
146 return -ENOMEM; 144 return -ENOMEM;
diff --git a/drivers/video/efifb.c b/drivers/video/efifb.c
index eb12182b2059..d25df51bb0d2 100644
--- a/drivers/video/efifb.c
+++ b/drivers/video/efifb.c
@@ -161,8 +161,17 @@ static int efifb_setcolreg(unsigned regno, unsigned red, unsigned green,
161 return 0; 161 return 0;
162} 162}
163 163
164static void efifb_destroy(struct fb_info *info)
165{
166 if (info->screen_base)
167 iounmap(info->screen_base);
168 release_mem_region(info->aperture_base, info->aperture_size);
169 framebuffer_release(info);
170}
171
164static struct fb_ops efifb_ops = { 172static struct fb_ops efifb_ops = {
165 .owner = THIS_MODULE, 173 .owner = THIS_MODULE,
174 .fb_destroy = efifb_destroy,
166 .fb_setcolreg = efifb_setcolreg, 175 .fb_setcolreg = efifb_setcolreg,
167 .fb_fillrect = cfb_fillrect, 176 .fb_fillrect = cfb_fillrect,
168 .fb_copyarea = cfb_copyarea, 177 .fb_copyarea = cfb_copyarea,
@@ -281,7 +290,7 @@ static int __init efifb_probe(struct platform_device *dev)
281 info->par = NULL; 290 info->par = NULL;
282 291
283 info->aperture_base = efifb_fix.smem_start; 292 info->aperture_base = efifb_fix.smem_start;
284 info->aperture_size = size_total; 293 info->aperture_size = size_remap;
285 294
286 info->screen_base = ioremap(efifb_fix.smem_start, efifb_fix.smem_len); 295 info->screen_base = ioremap(efifb_fix.smem_start, efifb_fix.smem_len);
287 if (!info->screen_base) { 296 if (!info->screen_base) {
diff --git a/drivers/video/imxfb.c b/drivers/video/imxfb.c
index 66358fa825f3..b4b6deceed15 100644
--- a/drivers/video/imxfb.c
+++ b/drivers/video/imxfb.c
@@ -593,7 +593,8 @@ static int imxfb_activate_var(struct fb_var_screeninfo *var, struct fb_info *inf
593 */ 593 */
594static int imxfb_suspend(struct platform_device *dev, pm_message_t state) 594static int imxfb_suspend(struct platform_device *dev, pm_message_t state)
595{ 595{
596 struct imxfb_info *fbi = platform_get_drvdata(dev); 596 struct fb_info *info = platform_get_drvdata(dev);
597 struct imxfb_info *fbi = info->par;
597 598
598 pr_debug("%s\n", __func__); 599 pr_debug("%s\n", __func__);
599 600
@@ -603,7 +604,8 @@ static int imxfb_suspend(struct platform_device *dev, pm_message_t state)
603 604
604static int imxfb_resume(struct platform_device *dev) 605static int imxfb_resume(struct platform_device *dev)
605{ 606{
606 struct imxfb_info *fbi = platform_get_drvdata(dev); 607 struct fb_info *info = platform_get_drvdata(dev);
608 struct imxfb_info *fbi = info->par;
607 609
608 pr_debug("%s\n", __func__); 610 pr_debug("%s\n", __func__);
609 611
diff --git a/drivers/video/mx3fb.c b/drivers/video/mx3fb.c
index 054ef29be479..772ba3f45e6f 100644
--- a/drivers/video/mx3fb.c
+++ b/drivers/video/mx3fb.c
@@ -324,8 +324,11 @@ static void sdc_enable_channel(struct mx3fb_info *mx3_fbi)
324 unsigned long flags; 324 unsigned long flags;
325 dma_cookie_t cookie; 325 dma_cookie_t cookie;
326 326
327 dev_dbg(mx3fb->dev, "mx3fbi %p, desc %p, sg %p\n", mx3_fbi, 327 if (mx3_fbi->txd)
328 to_tx_desc(mx3_fbi->txd), to_tx_desc(mx3_fbi->txd)->sg); 328 dev_dbg(mx3fb->dev, "mx3fbi %p, desc %p, sg %p\n", mx3_fbi,
329 to_tx_desc(mx3_fbi->txd), to_tx_desc(mx3_fbi->txd)->sg);
330 else
331 dev_dbg(mx3fb->dev, "mx3fbi %p, txd = NULL\n", mx3_fbi);
329 332
330 /* This enables the channel */ 333 /* This enables the channel */
331 if (mx3_fbi->cookie < 0) { 334 if (mx3_fbi->cookie < 0) {
@@ -646,6 +649,7 @@ static int sdc_set_global_alpha(struct mx3fb_data *mx3fb, bool enable, uint8_t a
646 649
647static void sdc_set_brightness(struct mx3fb_data *mx3fb, uint8_t value) 650static void sdc_set_brightness(struct mx3fb_data *mx3fb, uint8_t value)
648{ 651{
652 dev_dbg(mx3fb->dev, "%s: value = %d\n", __func__, value);
649 /* This might be board-specific */ 653 /* This might be board-specific */
650 mx3fb_write_reg(mx3fb, 0x03000000UL | value << 16, SDC_PWM_CTRL); 654 mx3fb_write_reg(mx3fb, 0x03000000UL | value << 16, SDC_PWM_CTRL);
651 return; 655 return;
@@ -1486,12 +1490,12 @@ static int mx3fb_probe(struct platform_device *pdev)
1486 goto ersdc0; 1490 goto ersdc0;
1487 } 1491 }
1488 1492
1493 mx3fb->backlight_level = 255;
1494
1489 ret = init_fb_chan(mx3fb, to_idmac_chan(chan)); 1495 ret = init_fb_chan(mx3fb, to_idmac_chan(chan));
1490 if (ret < 0) 1496 if (ret < 0)
1491 goto eisdc0; 1497 goto eisdc0;
1492 1498
1493 mx3fb->backlight_level = 255;
1494
1495 return 0; 1499 return 0;
1496 1500
1497eisdc0: 1501eisdc0:
diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
index c7c6455f1fa8..e192b058a688 100644
--- a/drivers/video/omap/dispc.c
+++ b/drivers/video/omap/dispc.c
@@ -189,11 +189,6 @@ static struct {
189 struct omapfb_color_key color_key; 189 struct omapfb_color_key color_key;
190} dispc; 190} dispc;
191 191
192static struct platform_device omapdss_device = {
193 .name = "omapdss",
194 .id = -1,
195};
196
197static void enable_lcd_clocks(int enable); 192static void enable_lcd_clocks(int enable);
198 193
199static void inline dispc_write_reg(int idx, u32 val) 194static void inline dispc_write_reg(int idx, u32 val)
@@ -920,20 +915,20 @@ static irqreturn_t omap_dispc_irq_handler(int irq, void *dev)
920 915
921static int get_dss_clocks(void) 916static int get_dss_clocks(void)
922{ 917{
923 dispc.dss_ick = clk_get(&omapdss_device.dev, "ick"); 918 dispc.dss_ick = clk_get(&dispc.fbdev->dssdev->dev, "ick");
924 if (IS_ERR(dispc.dss_ick)) { 919 if (IS_ERR(dispc.dss_ick)) {
925 dev_err(dispc.fbdev->dev, "can't get ick\n"); 920 dev_err(dispc.fbdev->dev, "can't get ick\n");
926 return PTR_ERR(dispc.dss_ick); 921 return PTR_ERR(dispc.dss_ick);
927 } 922 }
928 923
929 dispc.dss1_fck = clk_get(&omapdss_device.dev, "dss1_fck"); 924 dispc.dss1_fck = clk_get(&dispc.fbdev->dssdev->dev, "dss1_fck");
930 if (IS_ERR(dispc.dss1_fck)) { 925 if (IS_ERR(dispc.dss1_fck)) {
931 dev_err(dispc.fbdev->dev, "can't get dss1_fck\n"); 926 dev_err(dispc.fbdev->dev, "can't get dss1_fck\n");
932 clk_put(dispc.dss_ick); 927 clk_put(dispc.dss_ick);
933 return PTR_ERR(dispc.dss1_fck); 928 return PTR_ERR(dispc.dss1_fck);
934 } 929 }
935 930
936 dispc.dss_54m_fck = clk_get(&omapdss_device.dev, "tv_fck"); 931 dispc.dss_54m_fck = clk_get(&dispc.fbdev->dssdev->dev, "tv_fck");
937 if (IS_ERR(dispc.dss_54m_fck)) { 932 if (IS_ERR(dispc.dss_54m_fck)) {
938 dev_err(dispc.fbdev->dev, "can't get tv_fck\n"); 933 dev_err(dispc.fbdev->dev, "can't get tv_fck\n");
939 clk_put(dispc.dss_ick); 934 clk_put(dispc.dss_ick);
@@ -1385,12 +1380,6 @@ static int omap_dispc_init(struct omapfb_device *fbdev, int ext_mode,
1385 int skip_init = 0; 1380 int skip_init = 0;
1386 int i; 1381 int i;
1387 1382
1388 r = platform_device_register(&omapdss_device);
1389 if (r) {
1390 dev_err(fbdev->dev, "can't register omapdss device\n");
1391 return r;
1392 }
1393
1394 memset(&dispc, 0, sizeof(dispc)); 1383 memset(&dispc, 0, sizeof(dispc));
1395 1384
1396 dispc.base = ioremap(DISPC_BASE, SZ_1K); 1385 dispc.base = ioremap(DISPC_BASE, SZ_1K);
@@ -1534,7 +1523,6 @@ static void omap_dispc_cleanup(void)
1534 free_irq(INT_24XX_DSS_IRQ, dispc.fbdev); 1523 free_irq(INT_24XX_DSS_IRQ, dispc.fbdev);
1535 put_dss_clocks(); 1524 put_dss_clocks();
1536 iounmap(dispc.base); 1525 iounmap(dispc.base);
1537 platform_device_unregister(&omapdss_device);
1538} 1526}
1539 1527
1540const struct lcd_ctrl omap2_int_ctrl = { 1528const struct lcd_ctrl omap2_int_ctrl = {
diff --git a/drivers/video/omap/lcd_htcherald.c b/drivers/video/omap/lcd_htcherald.c
index a9007c5d1fad..4802419da83b 100644
--- a/drivers/video/omap/lcd_htcherald.c
+++ b/drivers/video/omap/lcd_htcherald.c
@@ -115,12 +115,12 @@ struct platform_driver htcherald_panel_driver = {
115 }, 115 },
116}; 116};
117 117
118static int htcherald_panel_drv_init(void) 118static int __init htcherald_panel_drv_init(void)
119{ 119{
120 return platform_driver_register(&htcherald_panel_driver); 120 return platform_driver_register(&htcherald_panel_driver);
121} 121}
122 122
123static void htcherald_panel_drv_cleanup(void) 123static void __exit htcherald_panel_drv_cleanup(void)
124{ 124{
125 platform_driver_unregister(&htcherald_panel_driver); 125 platform_driver_unregister(&htcherald_panel_driver);
126} 126}
diff --git a/drivers/video/omap/omapfb.h b/drivers/video/omap/omapfb.h
index 46e4714014e8..af3c9e571ec3 100644
--- a/drivers/video/omap/omapfb.h
+++ b/drivers/video/omap/omapfb.h
@@ -203,6 +203,8 @@ struct omapfb_device {
203 203
204 struct omapfb_mem_desc mem_desc; 204 struct omapfb_mem_desc mem_desc;
205 struct fb_info *fb_info[OMAPFB_PLANE_NUM]; 205 struct fb_info *fb_info[OMAPFB_PLANE_NUM];
206
207 struct platform_device *dssdev; /* dummy dev for clocks */
206}; 208};
207 209
208#ifdef CONFIG_ARCH_OMAP1 210#ifdef CONFIG_ARCH_OMAP1
diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c
index c7f59a5ccdbc..2c4f470fa086 100644
--- a/drivers/video/omap/omapfb_main.c
+++ b/drivers/video/omap/omapfb_main.c
@@ -83,6 +83,19 @@ static struct caps_table_struct color_caps[] = {
83 { 1 << OMAPFB_COLOR_YUY422, "YUY422", }, 83 { 1 << OMAPFB_COLOR_YUY422, "YUY422", },
84}; 84};
85 85
86static void omapdss_release(struct device *dev)
87{
88}
89
90/* dummy device for clocks */
91static struct platform_device omapdss_device = {
92 .name = "omapdss",
93 .id = -1,
94 .dev = {
95 .release = omapdss_release,
96 },
97};
98
86/* 99/*
87 * --------------------------------------------------------------------------- 100 * ---------------------------------------------------------------------------
88 * LCD panel 101 * LCD panel
@@ -1700,6 +1713,7 @@ static int omapfb_do_probe(struct platform_device *pdev,
1700 1713
1701 fbdev->dev = &pdev->dev; 1714 fbdev->dev = &pdev->dev;
1702 fbdev->panel = panel; 1715 fbdev->panel = panel;
1716 fbdev->dssdev = &omapdss_device;
1703 platform_set_drvdata(pdev, fbdev); 1717 platform_set_drvdata(pdev, fbdev);
1704 1718
1705 mutex_init(&fbdev->rqueue_mutex); 1719 mutex_init(&fbdev->rqueue_mutex);
@@ -1814,8 +1828,16 @@ cleanup:
1814 1828
1815static int omapfb_probe(struct platform_device *pdev) 1829static int omapfb_probe(struct platform_device *pdev)
1816{ 1830{
1831 int r;
1832
1817 BUG_ON(fbdev_pdev != NULL); 1833 BUG_ON(fbdev_pdev != NULL);
1818 1834
1835 r = platform_device_register(&omapdss_device);
1836 if (r) {
1837 dev_err(&pdev->dev, "can't register omapdss device\n");
1838 return r;
1839 }
1840
1819 /* Delay actual initialization until the LCD is registered */ 1841 /* Delay actual initialization until the LCD is registered */
1820 fbdev_pdev = pdev; 1842 fbdev_pdev = pdev;
1821 if (fbdev_panel != NULL) 1843 if (fbdev_panel != NULL)
@@ -1843,6 +1865,9 @@ static int omapfb_remove(struct platform_device *pdev)
1843 fbdev->state = OMAPFB_DISABLED; 1865 fbdev->state = OMAPFB_DISABLED;
1844 omapfb_free_resources(fbdev, saved_state); 1866 omapfb_free_resources(fbdev, saved_state);
1845 1867
1868 platform_device_unregister(&omapdss_device);
1869 fbdev->dssdev = NULL;
1870
1846 return 0; 1871 return 0;
1847} 1872}
1848 1873
diff --git a/drivers/video/omap/rfbi.c b/drivers/video/omap/rfbi.c
index fed7b1bda19c..1162603c72e5 100644
--- a/drivers/video/omap/rfbi.c
+++ b/drivers/video/omap/rfbi.c
@@ -83,13 +83,13 @@ static inline u32 rfbi_read_reg(int idx)
83 83
84static int rfbi_get_clocks(void) 84static int rfbi_get_clocks(void)
85{ 85{
86 rfbi.dss_ick = clk_get(rfbi.fbdev->dev, "ick"); 86 rfbi.dss_ick = clk_get(&dispc.fbdev->dssdev->dev, "ick");
87 if (IS_ERR(rfbi.dss_ick)) { 87 if (IS_ERR(rfbi.dss_ick)) {
88 dev_err(rfbi.fbdev->dev, "can't get ick\n"); 88 dev_err(rfbi.fbdev->dev, "can't get ick\n");
89 return PTR_ERR(rfbi.dss_ick); 89 return PTR_ERR(rfbi.dss_ick);
90 } 90 }
91 91
92 rfbi.dss1_fck = clk_get(rfbi.fbdev->dev, "dss1_fck"); 92 rfbi.dss1_fck = clk_get(&dispc.fbdev->dssdev->dev, "dss1_fck");
93 if (IS_ERR(rfbi.dss1_fck)) { 93 if (IS_ERR(rfbi.dss1_fck)) {
94 dev_err(rfbi.fbdev->dev, "can't get dss1_fck\n"); 94 dev_err(rfbi.fbdev->dev, "can't get dss1_fck\n");
95 clk_put(rfbi.dss_ick); 95 clk_put(rfbi.dss_ick);
diff --git a/drivers/video/omap2/dss/Kconfig b/drivers/video/omap2/dss/Kconfig
index 71d8dec30635..c63ce767b277 100644
--- a/drivers/video/omap2/dss/Kconfig
+++ b/drivers/video/omap2/dss/Kconfig
@@ -25,6 +25,13 @@ config OMAP2_DSS_DEBUG_SUPPORT
25 This enables debug messages. You need to enable printing 25 This enables debug messages. You need to enable printing
26 with 'debug' module parameter. 26 with 'debug' module parameter.
27 27
28config OMAP2_DSS_COLLECT_IRQ_STATS
29 bool "Collect DSS IRQ statistics"
30 depends on OMAP2_DSS_DEBUG_SUPPORT
31 default n
32 help
33 Collect DSS IRQ statistics, printable via debugfs
34
28config OMAP2_DSS_RFBI 35config OMAP2_DSS_RFBI
29 bool "RFBI support" 36 bool "RFBI support"
30 default n 37 default n
diff --git a/drivers/video/omap2/dss/core.c b/drivers/video/omap2/dss/core.c
index 29497a0c9a91..82918eec6d2e 100644
--- a/drivers/video/omap2/dss/core.c
+++ b/drivers/video/omap2/dss/core.c
@@ -124,6 +124,7 @@ static void restore_all_ctx(void)
124 dss_clk_disable_all_no_ctx(); 124 dss_clk_disable_all_no_ctx();
125} 125}
126 126
127#if defined(CONFIG_DEBUG_FS) && defined(CONFIG_OMAP2_DSS_DEBUG_SUPPORT)
127/* CLOCKS */ 128/* CLOCKS */
128static void core_dump_clocks(struct seq_file *s) 129static void core_dump_clocks(struct seq_file *s)
129{ 130{
@@ -149,6 +150,7 @@ static void core_dump_clocks(struct seq_file *s)
149 clocks[i]->usecount); 150 clocks[i]->usecount);
150 } 151 }
151} 152}
153#endif /* defined(CONFIG_DEBUG_FS) && defined(CONFIG_OMAP2_DSS_DEBUG_SUPPORT) */
152 154
153static int dss_get_clock(struct clk **clock, const char *clk_name) 155static int dss_get_clock(struct clk **clock, const char *clk_name)
154{ 156{
@@ -395,6 +397,14 @@ static int dss_initialize_debugfs(void)
395 debugfs_create_file("clk", S_IRUGO, dss_debugfs_dir, 397 debugfs_create_file("clk", S_IRUGO, dss_debugfs_dir,
396 &dss_debug_dump_clocks, &dss_debug_fops); 398 &dss_debug_dump_clocks, &dss_debug_fops);
397 399
400 debugfs_create_file("dispc_irq", S_IRUGO, dss_debugfs_dir,
401 &dispc_dump_irqs, &dss_debug_fops);
402
403#ifdef CONFIG_OMAP2_DSS_DSI
404 debugfs_create_file("dsi_irq", S_IRUGO, dss_debugfs_dir,
405 &dsi_dump_irqs, &dss_debug_fops);
406#endif
407
398 debugfs_create_file("dss", S_IRUGO, dss_debugfs_dir, 408 debugfs_create_file("dss", S_IRUGO, dss_debugfs_dir,
399 &dss_dump_regs, &dss_debug_fops); 409 &dss_dump_regs, &dss_debug_fops);
400 debugfs_create_file("dispc", S_IRUGO, dss_debugfs_dir, 410 debugfs_create_file("dispc", S_IRUGO, dss_debugfs_dir,
diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c
index 6dabf4b2f005..de8bfbac9e26 100644
--- a/drivers/video/omap2/dss/dispc.c
+++ b/drivers/video/omap2/dss/dispc.c
@@ -148,6 +148,12 @@ static const struct dispc_reg dispc_reg_att[] = { DISPC_GFX_ATTRIBUTES,
148 DISPC_VID_ATTRIBUTES(0), 148 DISPC_VID_ATTRIBUTES(0),
149 DISPC_VID_ATTRIBUTES(1) }; 149 DISPC_VID_ATTRIBUTES(1) };
150 150
151struct dispc_irq_stats {
152 unsigned long last_reset;
153 unsigned irq_count;
154 unsigned irqs[32];
155};
156
151static struct { 157static struct {
152 void __iomem *base; 158 void __iomem *base;
153 159
@@ -160,6 +166,11 @@ static struct {
160 struct work_struct error_work; 166 struct work_struct error_work;
161 167
162 u32 ctx[DISPC_SZ_REGS / sizeof(u32)]; 168 u32 ctx[DISPC_SZ_REGS / sizeof(u32)];
169
170#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
171 spinlock_t irq_stats_lock;
172 struct dispc_irq_stats irq_stats;
173#endif
163} dispc; 174} dispc;
164 175
165static void _omap_dispc_set_irqs(void); 176static void _omap_dispc_set_irqs(void);
@@ -1443,7 +1454,10 @@ static unsigned long calc_fclk_five_taps(u16 width, u16 height,
1443 do_div(tmp, 2 * out_height * ppl); 1454 do_div(tmp, 2 * out_height * ppl);
1444 fclk = tmp; 1455 fclk = tmp;
1445 1456
1446 if (height > 2 * out_height && ppl != out_width) { 1457 if (height > 2 * out_height) {
1458 if (ppl == out_width)
1459 return 0;
1460
1447 tmp = pclk * (height - 2 * out_height) * out_width; 1461 tmp = pclk * (height - 2 * out_height) * out_width;
1448 do_div(tmp, 2 * out_height * (ppl - out_width)); 1462 do_div(tmp, 2 * out_height * (ppl - out_width));
1449 fclk = max(fclk, (u32) tmp); 1463 fclk = max(fclk, (u32) tmp);
@@ -1623,7 +1637,7 @@ static int _dispc_setup_plane(enum omap_plane plane,
1623 DSSDBG("required fclk rate = %lu Hz\n", fclk); 1637 DSSDBG("required fclk rate = %lu Hz\n", fclk);
1624 DSSDBG("current fclk rate = %lu Hz\n", dispc_fclk_rate()); 1638 DSSDBG("current fclk rate = %lu Hz\n", dispc_fclk_rate());
1625 1639
1626 if (fclk > dispc_fclk_rate()) { 1640 if (!fclk || fclk > dispc_fclk_rate()) {
1627 DSSERR("failed to set up scaling, " 1641 DSSERR("failed to set up scaling, "
1628 "required fclk rate = %lu Hz, " 1642 "required fclk rate = %lu Hz, "
1629 "current fclk rate = %lu Hz\n", 1643 "current fclk rate = %lu Hz\n",
@@ -2247,6 +2261,50 @@ void dispc_dump_clocks(struct seq_file *s)
2247 enable_clocks(0); 2261 enable_clocks(0);
2248} 2262}
2249 2263
2264#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
2265void dispc_dump_irqs(struct seq_file *s)
2266{
2267 unsigned long flags;
2268 struct dispc_irq_stats stats;
2269
2270 spin_lock_irqsave(&dispc.irq_stats_lock, flags);
2271
2272 stats = dispc.irq_stats;
2273 memset(&dispc.irq_stats, 0, sizeof(dispc.irq_stats));
2274 dispc.irq_stats.last_reset = jiffies;
2275
2276 spin_unlock_irqrestore(&dispc.irq_stats_lock, flags);
2277
2278 seq_printf(s, "period %u ms\n",
2279 jiffies_to_msecs(jiffies - stats.last_reset));
2280
2281 seq_printf(s, "irqs %d\n", stats.irq_count);
2282#define PIS(x) \
2283 seq_printf(s, "%-20s %10d\n", #x, stats.irqs[ffs(DISPC_IRQ_##x)-1]);
2284
2285 PIS(FRAMEDONE);
2286 PIS(VSYNC);
2287 PIS(EVSYNC_EVEN);
2288 PIS(EVSYNC_ODD);
2289 PIS(ACBIAS_COUNT_STAT);
2290 PIS(PROG_LINE_NUM);
2291 PIS(GFX_FIFO_UNDERFLOW);
2292 PIS(GFX_END_WIN);
2293 PIS(PAL_GAMMA_MASK);
2294 PIS(OCP_ERR);
2295 PIS(VID1_FIFO_UNDERFLOW);
2296 PIS(VID1_END_WIN);
2297 PIS(VID2_FIFO_UNDERFLOW);
2298 PIS(VID2_END_WIN);
2299 PIS(SYNC_LOST);
2300 PIS(SYNC_LOST_DIGIT);
2301 PIS(WAKEUP);
2302#undef PIS
2303}
2304#else
2305void dispc_dump_irqs(struct seq_file *s) { }
2306#endif
2307
2250void dispc_dump_regs(struct seq_file *s) 2308void dispc_dump_regs(struct seq_file *s)
2251{ 2309{
2252#define DUMPREG(r) seq_printf(s, "%-35s %08x\n", #r, dispc_read_reg(r)) 2310#define DUMPREG(r) seq_printf(s, "%-35s %08x\n", #r, dispc_read_reg(r))
@@ -2665,6 +2723,13 @@ void dispc_irq_handler(void)
2665 2723
2666 irqstatus = dispc_read_reg(DISPC_IRQSTATUS); 2724 irqstatus = dispc_read_reg(DISPC_IRQSTATUS);
2667 2725
2726#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
2727 spin_lock(&dispc.irq_stats_lock);
2728 dispc.irq_stats.irq_count++;
2729 dss_collect_irq_stats(irqstatus, dispc.irq_stats.irqs);
2730 spin_unlock(&dispc.irq_stats_lock);
2731#endif
2732
2668#ifdef DEBUG 2733#ifdef DEBUG
2669 if (dss_debug) 2734 if (dss_debug)
2670 print_irq_status(irqstatus); 2735 print_irq_status(irqstatus);
@@ -3012,6 +3077,11 @@ int dispc_init(void)
3012 3077
3013 spin_lock_init(&dispc.irq_lock); 3078 spin_lock_init(&dispc.irq_lock);
3014 3079
3080#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
3081 spin_lock_init(&dispc.irq_stats_lock);
3082 dispc.irq_stats.last_reset = jiffies;
3083#endif
3084
3015 INIT_WORK(&dispc.error_work, dispc_error_worker); 3085 INIT_WORK(&dispc.error_work, dispc_error_worker);
3016 3086
3017 dispc.base = ioremap(DISPC_BASE, DISPC_SZ_REGS); 3087 dispc.base = ioremap(DISPC_BASE, DISPC_SZ_REGS);
diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c
index 5936487b5def..6122178f5f85 100644
--- a/drivers/video/omap2/dss/dsi.c
+++ b/drivers/video/omap2/dss/dsi.c
@@ -204,6 +204,14 @@ struct dsi_update_region {
204 struct omap_dss_device *device; 204 struct omap_dss_device *device;
205}; 205};
206 206
207struct dsi_irq_stats {
208 unsigned long last_reset;
209 unsigned irq_count;
210 unsigned dsi_irqs[32];
211 unsigned vc_irqs[4][32];
212 unsigned cio_irqs[32];
213};
214
207static struct 215static struct
208{ 216{
209 void __iomem *base; 217 void __iomem *base;
@@ -258,6 +266,11 @@ static struct
258#endif 266#endif
259 int debug_read; 267 int debug_read;
260 int debug_write; 268 int debug_write;
269
270#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
271 spinlock_t irq_stats_lock;
272 struct dsi_irq_stats irq_stats;
273#endif
261} dsi; 274} dsi;
262 275
263#ifdef DEBUG 276#ifdef DEBUG
@@ -528,6 +541,12 @@ void dsi_irq_handler(void)
528 541
529 irqstatus = dsi_read_reg(DSI_IRQSTATUS); 542 irqstatus = dsi_read_reg(DSI_IRQSTATUS);
530 543
544#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
545 spin_lock(&dsi.irq_stats_lock);
546 dsi.irq_stats.irq_count++;
547 dss_collect_irq_stats(irqstatus, dsi.irq_stats.dsi_irqs);
548#endif
549
531 if (irqstatus & DSI_IRQ_ERROR_MASK) { 550 if (irqstatus & DSI_IRQ_ERROR_MASK) {
532 DSSERR("DSI error, irqstatus %x\n", irqstatus); 551 DSSERR("DSI error, irqstatus %x\n", irqstatus);
533 print_irq_status(irqstatus); 552 print_irq_status(irqstatus);
@@ -549,6 +568,10 @@ void dsi_irq_handler(void)
549 568
550 vcstatus = dsi_read_reg(DSI_VC_IRQSTATUS(i)); 569 vcstatus = dsi_read_reg(DSI_VC_IRQSTATUS(i));
551 570
571#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
572 dss_collect_irq_stats(vcstatus, dsi.irq_stats.vc_irqs[i]);
573#endif
574
552 if (vcstatus & DSI_VC_IRQ_BTA) 575 if (vcstatus & DSI_VC_IRQ_BTA)
553 complete(&dsi.bta_completion); 576 complete(&dsi.bta_completion);
554 577
@@ -568,6 +591,10 @@ void dsi_irq_handler(void)
568 if (irqstatus & DSI_IRQ_COMPLEXIO_ERR) { 591 if (irqstatus & DSI_IRQ_COMPLEXIO_ERR) {
569 ciostatus = dsi_read_reg(DSI_COMPLEXIO_IRQ_STATUS); 592 ciostatus = dsi_read_reg(DSI_COMPLEXIO_IRQ_STATUS);
570 593
594#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
595 dss_collect_irq_stats(ciostatus, dsi.irq_stats.cio_irqs);
596#endif
597
571 dsi_write_reg(DSI_COMPLEXIO_IRQ_STATUS, ciostatus); 598 dsi_write_reg(DSI_COMPLEXIO_IRQ_STATUS, ciostatus);
572 /* flush posted write */ 599 /* flush posted write */
573 dsi_read_reg(DSI_COMPLEXIO_IRQ_STATUS); 600 dsi_read_reg(DSI_COMPLEXIO_IRQ_STATUS);
@@ -579,6 +606,10 @@ void dsi_irq_handler(void)
579 dsi_write_reg(DSI_IRQSTATUS, irqstatus & ~DSI_IRQ_CHANNEL_MASK); 606 dsi_write_reg(DSI_IRQSTATUS, irqstatus & ~DSI_IRQ_CHANNEL_MASK);
580 /* flush posted write */ 607 /* flush posted write */
581 dsi_read_reg(DSI_IRQSTATUS); 608 dsi_read_reg(DSI_IRQSTATUS);
609
610#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
611 spin_unlock(&dsi.irq_stats_lock);
612#endif
582} 613}
583 614
584 615
@@ -797,12 +828,12 @@ static int dsi_pll_power(enum dsi_pll_power_state state)
797 828
798 /* PLL_PWR_STATUS */ 829 /* PLL_PWR_STATUS */
799 while (FLD_GET(dsi_read_reg(DSI_CLK_CTRL), 29, 28) != state) { 830 while (FLD_GET(dsi_read_reg(DSI_CLK_CTRL), 29, 28) != state) {
800 udelay(1); 831 if (++t > 1000) {
801 if (t++ > 1000) {
802 DSSERR("Failed to set DSI PLL power mode to %d\n", 832 DSSERR("Failed to set DSI PLL power mode to %d\n",
803 state); 833 state);
804 return -ENODEV; 834 return -ENODEV;
805 } 835 }
836 udelay(1);
806 } 837 }
807 838
808 return 0; 839 return 0;
@@ -1226,6 +1257,95 @@ void dsi_dump_clocks(struct seq_file *s)
1226 enable_clocks(0); 1257 enable_clocks(0);
1227} 1258}
1228 1259
1260#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
1261void dsi_dump_irqs(struct seq_file *s)
1262{
1263 unsigned long flags;
1264 struct dsi_irq_stats stats;
1265
1266 spin_lock_irqsave(&dsi.irq_stats_lock, flags);
1267
1268 stats = dsi.irq_stats;
1269 memset(&dsi.irq_stats, 0, sizeof(dsi.irq_stats));
1270 dsi.irq_stats.last_reset = jiffies;
1271
1272 spin_unlock_irqrestore(&dsi.irq_stats_lock, flags);
1273
1274 seq_printf(s, "period %u ms\n",
1275 jiffies_to_msecs(jiffies - stats.last_reset));
1276
1277 seq_printf(s, "irqs %d\n", stats.irq_count);
1278#define PIS(x) \
1279 seq_printf(s, "%-20s %10d\n", #x, stats.dsi_irqs[ffs(DSI_IRQ_##x)-1]);
1280
1281 seq_printf(s, "-- DSI interrupts --\n");
1282 PIS(VC0);
1283 PIS(VC1);
1284 PIS(VC2);
1285 PIS(VC3);
1286 PIS(WAKEUP);
1287 PIS(RESYNC);
1288 PIS(PLL_LOCK);
1289 PIS(PLL_UNLOCK);
1290 PIS(PLL_RECALL);
1291 PIS(COMPLEXIO_ERR);
1292 PIS(HS_TX_TIMEOUT);
1293 PIS(LP_RX_TIMEOUT);
1294 PIS(TE_TRIGGER);
1295 PIS(ACK_TRIGGER);
1296 PIS(SYNC_LOST);
1297 PIS(LDO_POWER_GOOD);
1298 PIS(TA_TIMEOUT);
1299#undef PIS
1300
1301#define PIS(x) \
1302 seq_printf(s, "%-20s %10d %10d %10d %10d\n", #x, \
1303 stats.vc_irqs[0][ffs(DSI_VC_IRQ_##x)-1], \
1304 stats.vc_irqs[1][ffs(DSI_VC_IRQ_##x)-1], \
1305 stats.vc_irqs[2][ffs(DSI_VC_IRQ_##x)-1], \
1306 stats.vc_irqs[3][ffs(DSI_VC_IRQ_##x)-1]);
1307
1308 seq_printf(s, "-- VC interrupts --\n");
1309 PIS(CS);
1310 PIS(ECC_CORR);
1311 PIS(PACKET_SENT);
1312 PIS(FIFO_TX_OVF);
1313 PIS(FIFO_RX_OVF);
1314 PIS(BTA);
1315 PIS(ECC_NO_CORR);
1316 PIS(FIFO_TX_UDF);
1317 PIS(PP_BUSY_CHANGE);
1318#undef PIS
1319
1320#define PIS(x) \
1321 seq_printf(s, "%-20s %10d\n", #x, \
1322 stats.cio_irqs[ffs(DSI_CIO_IRQ_##x)-1]);
1323
1324 seq_printf(s, "-- CIO interrupts --\n");
1325 PIS(ERRSYNCESC1);
1326 PIS(ERRSYNCESC2);
1327 PIS(ERRSYNCESC3);
1328 PIS(ERRESC1);
1329 PIS(ERRESC2);
1330 PIS(ERRESC3);
1331 PIS(ERRCONTROL1);
1332 PIS(ERRCONTROL2);
1333 PIS(ERRCONTROL3);
1334 PIS(STATEULPS1);
1335 PIS(STATEULPS2);
1336 PIS(STATEULPS3);
1337 PIS(ERRCONTENTIONLP0_1);
1338 PIS(ERRCONTENTIONLP1_1);
1339 PIS(ERRCONTENTIONLP0_2);
1340 PIS(ERRCONTENTIONLP1_2);
1341 PIS(ERRCONTENTIONLP0_3);
1342 PIS(ERRCONTENTIONLP1_3);
1343 PIS(ULPSACTIVENOT_ALL0);
1344 PIS(ULPSACTIVENOT_ALL1);
1345#undef PIS
1346}
1347#endif
1348
1229void dsi_dump_regs(struct seq_file *s) 1349void dsi_dump_regs(struct seq_file *s)
1230{ 1350{
1231#define DUMPREG(r) seq_printf(s, "%-35s %08x\n", #r, dsi_read_reg(r)) 1351#define DUMPREG(r) seq_printf(s, "%-35s %08x\n", #r, dsi_read_reg(r))
@@ -1321,12 +1441,12 @@ static int dsi_complexio_power(enum dsi_complexio_power_state state)
1321 1441
1322 /* PWR_STATUS */ 1442 /* PWR_STATUS */
1323 while (FLD_GET(dsi_read_reg(DSI_COMPLEXIO_CFG1), 26, 25) != state) { 1443 while (FLD_GET(dsi_read_reg(DSI_COMPLEXIO_CFG1), 26, 25) != state) {
1324 udelay(1); 1444 if (++t > 1000) {
1325 if (t++ > 1000) {
1326 DSSERR("failed to set complexio power state to " 1445 DSSERR("failed to set complexio power state to "
1327 "%d\n", state); 1446 "%d\n", state);
1328 return -ENODEV; 1447 return -ENODEV;
1329 } 1448 }
1449 udelay(1);
1330 } 1450 }
1331 1451
1332 return 0; 1452 return 0;
@@ -1526,10 +1646,10 @@ static void dsi_complexio_uninit(void)
1526 1646
1527static int _dsi_wait_reset(void) 1647static int _dsi_wait_reset(void)
1528{ 1648{
1529 int i = 0; 1649 int t = 0;
1530 1650
1531 while (REG_GET(DSI_SYSSTATUS, 0, 0) == 0) { 1651 while (REG_GET(DSI_SYSSTATUS, 0, 0) == 0) {
1532 if (i++ > 5) { 1652 if (++t > 5) {
1533 DSSERR("soft reset failed\n"); 1653 DSSERR("soft reset failed\n");
1534 return -ENODEV; 1654 return -ENODEV;
1535 } 1655 }
@@ -1999,7 +2119,7 @@ static int dsi_vc_send_short(int channel, u8 data_type, u16 data, u8 ecc)
1999 return -EINVAL; 2119 return -EINVAL;
2000 } 2120 }
2001 2121
2002 data_id = data_type | channel << 6; 2122 data_id = data_type | dsi.vc[channel].dest_per << 6;
2003 2123
2004 r = (data_id << 0) | (data << 8) | (ecc << 24); 2124 r = (data_id << 0) | (data << 8) | (ecc << 24);
2005 2125
@@ -2011,7 +2131,7 @@ static int dsi_vc_send_short(int channel, u8 data_type, u16 data, u8 ecc)
2011int dsi_vc_send_null(int channel) 2131int dsi_vc_send_null(int channel)
2012{ 2132{
2013 u8 nullpkg[] = {0, 0, 0, 0}; 2133 u8 nullpkg[] = {0, 0, 0, 0};
2014 return dsi_vc_send_long(0, DSI_DT_NULL_PACKET, nullpkg, 4, 0); 2134 return dsi_vc_send_long(channel, DSI_DT_NULL_PACKET, nullpkg, 4, 0);
2015} 2135}
2016EXPORT_SYMBOL(dsi_vc_send_null); 2136EXPORT_SYMBOL(dsi_vc_send_null);
2017 2137
@@ -2058,7 +2178,7 @@ int dsi_vc_dcs_read(int channel, u8 dcs_cmd, u8 *buf, int buflen)
2058 int r; 2178 int r;
2059 2179
2060 if (dsi.debug_read) 2180 if (dsi.debug_read)
2061 DSSDBG("dsi_vc_dcs_read(ch%d, dcs_cmd %u)\n", channel, dcs_cmd); 2181 DSSDBG("dsi_vc_dcs_read(ch%d, dcs_cmd %x)\n", channel, dcs_cmd);
2062 2182
2063 r = dsi_vc_send_short(channel, DSI_DT_DCS_READ, dcs_cmd, 0); 2183 r = dsi_vc_send_short(channel, DSI_DT_DCS_READ, dcs_cmd, 0);
2064 if (r) 2184 if (r)
@@ -2586,7 +2706,6 @@ static int dsi_update_screen_l4(struct omap_dss_device *dssdev,
2586 /* using fifo not empty */ 2706 /* using fifo not empty */
2587 /* TX_FIFO_NOT_EMPTY */ 2707 /* TX_FIFO_NOT_EMPTY */
2588 while (FLD_GET(dsi_read_reg(DSI_VC_CTRL(0)), 5, 5)) { 2708 while (FLD_GET(dsi_read_reg(DSI_VC_CTRL(0)), 5, 5)) {
2589 udelay(1);
2590 fifo_stalls++; 2709 fifo_stalls++;
2591 if (fifo_stalls > 0xfffff) { 2710 if (fifo_stalls > 0xfffff) {
2592 DSSERR("fifo stalls overflow, pixels left %d\n", 2711 DSSERR("fifo stalls overflow, pixels left %d\n",
@@ -2594,6 +2713,7 @@ static int dsi_update_screen_l4(struct omap_dss_device *dssdev,
2594 dsi_if_enable(0); 2713 dsi_if_enable(0);
2595 return -EIO; 2714 return -EIO;
2596 } 2715 }
2716 udelay(1);
2597 } 2717 }
2598#elif 1 2718#elif 1
2599 /* using fifo emptiness */ 2719 /* using fifo emptiness */
@@ -2812,11 +2932,15 @@ static int dsi_set_update_mode(struct omap_dss_device *dssdev,
2812 2932
2813static int dsi_set_te(struct omap_dss_device *dssdev, bool enable) 2933static int dsi_set_te(struct omap_dss_device *dssdev, bool enable)
2814{ 2934{
2815 int r; 2935 int r = 0;
2816 r = dssdev->driver->enable_te(dssdev, enable); 2936
2817 /* XXX for some reason, DSI TE breaks if we don't wait here. 2937 if (dssdev->driver->enable_te) {
2818 * Panel bug? Needs more studying */ 2938 r = dssdev->driver->enable_te(dssdev, enable);
2819 msleep(100); 2939 /* XXX for some reason, DSI TE breaks if we don't wait here.
2940 * Panel bug? Needs more studying */
2941 msleep(100);
2942 }
2943
2820 return r; 2944 return r;
2821} 2945}
2822 2946
@@ -3637,6 +3761,11 @@ int dsi_init(struct platform_device *pdev)
3637 spin_lock_init(&dsi.errors_lock); 3761 spin_lock_init(&dsi.errors_lock);
3638 dsi.errors = 0; 3762 dsi.errors = 0;
3639 3763
3764#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
3765 spin_lock_init(&dsi.irq_stats_lock);
3766 dsi.irq_stats.last_reset = jiffies;
3767#endif
3768
3640 init_completion(&dsi.bta_completion); 3769 init_completion(&dsi.bta_completion);
3641 init_completion(&dsi.update_completion); 3770 init_completion(&dsi.update_completion);
3642 3771
diff --git a/drivers/video/omap2/dss/dss.c b/drivers/video/omap2/dss/dss.c
index 9b05ee65a15d..0a26b7d84d41 100644
--- a/drivers/video/omap2/dss/dss.c
+++ b/drivers/video/omap2/dss/dss.c
@@ -467,14 +467,14 @@ static irqreturn_t dss_irq_handler_omap3(int irq, void *arg)
467 467
468static int _omap_dss_wait_reset(void) 468static int _omap_dss_wait_reset(void)
469{ 469{
470 unsigned timeout = 1000; 470 int t = 0;
471 471
472 while (REG_GET(DSS_SYSSTATUS, 0, 0) == 0) { 472 while (REG_GET(DSS_SYSSTATUS, 0, 0) == 0) {
473 udelay(1); 473 if (++t > 1000) {
474 if (!--timeout) {
475 DSSERR("soft reset failed\n"); 474 DSSERR("soft reset failed\n");
476 return -ENODEV; 475 return -ENODEV;
477 } 476 }
477 udelay(1);
478 } 478 }
479 479
480 return 0; 480 return 0;
diff --git a/drivers/video/omap2/dss/dss.h b/drivers/video/omap2/dss/dss.h
index 8da5ac42151b..2bcb1245d6c2 100644
--- a/drivers/video/omap2/dss/dss.h
+++ b/drivers/video/omap2/dss/dss.h
@@ -240,6 +240,7 @@ int dsi_init(struct platform_device *pdev);
240void dsi_exit(void); 240void dsi_exit(void);
241 241
242void dsi_dump_clocks(struct seq_file *s); 242void dsi_dump_clocks(struct seq_file *s);
243void dsi_dump_irqs(struct seq_file *s);
243void dsi_dump_regs(struct seq_file *s); 244void dsi_dump_regs(struct seq_file *s);
244 245
245void dsi_save_context(void); 246void dsi_save_context(void);
@@ -268,6 +269,7 @@ int dpi_init_display(struct omap_dss_device *dssdev);
268int dispc_init(void); 269int dispc_init(void);
269void dispc_exit(void); 270void dispc_exit(void);
270void dispc_dump_clocks(struct seq_file *s); 271void dispc_dump_clocks(struct seq_file *s);
272void dispc_dump_irqs(struct seq_file *s);
271void dispc_dump_regs(struct seq_file *s); 273void dispc_dump_regs(struct seq_file *s);
272void dispc_irq_handler(void); 274void dispc_irq_handler(void);
273void dispc_fake_vsync_irq(void); 275void dispc_fake_vsync_irq(void);
@@ -367,4 +369,16 @@ void rfbi_set_timings(int rfbi_module, struct rfbi_timings *t);
367unsigned long rfbi_get_max_tx_rate(void); 369unsigned long rfbi_get_max_tx_rate(void);
368int rfbi_init_display(struct omap_dss_device *display); 370int rfbi_init_display(struct omap_dss_device *display);
369 371
372
373#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
374static inline void dss_collect_irq_stats(u32 irqstatus, unsigned *irq_arr)
375{
376 int b;
377 for (b = 0; b < 32; ++b) {
378 if (irqstatus & (1 << b))
379 irq_arr[b]++;
380 }
381}
382#endif
383
370#endif 384#endif
diff --git a/drivers/video/omap2/dss/rfbi.c b/drivers/video/omap2/dss/rfbi.c
index d0b3006ad8a5..b936495c065d 100644
--- a/drivers/video/omap2/dss/rfbi.c
+++ b/drivers/video/omap2/dss/rfbi.c
@@ -120,7 +120,7 @@ static struct {
120 120
121 struct omap_dss_device *dssdev[2]; 121 struct omap_dss_device *dssdev[2];
122 122
123 struct kfifo *cmd_fifo; 123 struct kfifo cmd_fifo;
124 spinlock_t cmd_lock; 124 spinlock_t cmd_lock;
125 struct completion cmd_done; 125 struct completion cmd_done;
126 atomic_t cmd_fifo_full; 126 atomic_t cmd_fifo_full;
@@ -1011,20 +1011,20 @@ static void process_cmd_fifo(void)
1011 return; 1011 return;
1012 1012
1013 while (true) { 1013 while (true) {
1014 spin_lock_irqsave(rfbi.cmd_fifo->lock, flags); 1014 spin_lock_irqsave(&rfbi.cmd_lock, flags);
1015 1015
1016 len = __kfifo_get(rfbi.cmd_fifo, (unsigned char *)&p, 1016 len = kfifo_out(&rfbi.cmd_fifo, (unsigned char *)&p,
1017 sizeof(struct update_param)); 1017 sizeof(struct update_param));
1018 if (len == 0) { 1018 if (len == 0) {
1019 DSSDBG("nothing more in fifo\n"); 1019 DSSDBG("nothing more in fifo\n");
1020 atomic_set(&rfbi.cmd_pending, 0); 1020 atomic_set(&rfbi.cmd_pending, 0);
1021 spin_unlock_irqrestore(rfbi.cmd_fifo->lock, flags); 1021 spin_unlock_irqrestore(&rfbi.cmd_lock, flags);
1022 break; 1022 break;
1023 } 1023 }
1024 1024
1025 /* DSSDBG("fifo full %d\n", rfbi.cmd_fifo_full.counter);*/ 1025 /* DSSDBG("fifo full %d\n", rfbi.cmd_fifo_full.counter);*/
1026 1026
1027 spin_unlock_irqrestore(rfbi.cmd_fifo->lock, flags); 1027 spin_unlock_irqrestore(&rfbi.cmd_lock, flags);
1028 1028
1029 BUG_ON(len != sizeof(struct update_param)); 1029 BUG_ON(len != sizeof(struct update_param));
1030 BUG_ON(p.rfbi_module > 1); 1030 BUG_ON(p.rfbi_module > 1);
@@ -1052,25 +1052,25 @@ static void rfbi_push_cmd(struct update_param *p)
1052 unsigned long flags; 1052 unsigned long flags;
1053 int available; 1053 int available;
1054 1054
1055 spin_lock_irqsave(rfbi.cmd_fifo->lock, flags); 1055 spin_lock_irqsave(&rfbi.cmd_lock, flags);
1056 available = RFBI_CMD_FIFO_LEN_BYTES - 1056 available = RFBI_CMD_FIFO_LEN_BYTES -
1057 __kfifo_len(rfbi.cmd_fifo); 1057 kfifo_len(&rfbi.cmd_fifo);
1058 1058
1059/* DSSDBG("%d bytes left in fifo\n", available); */ 1059/* DSSDBG("%d bytes left in fifo\n", available); */
1060 if (available < sizeof(struct update_param)) { 1060 if (available < sizeof(struct update_param)) {
1061 DSSDBG("Going to wait because FIFO FULL..\n"); 1061 DSSDBG("Going to wait because FIFO FULL..\n");
1062 spin_unlock_irqrestore(rfbi.cmd_fifo->lock, flags); 1062 spin_unlock_irqrestore(&rfbi.cmd_lock, flags);
1063 atomic_inc(&rfbi.cmd_fifo_full); 1063 atomic_inc(&rfbi.cmd_fifo_full);
1064 wait_for_completion(&rfbi.cmd_done); 1064 wait_for_completion(&rfbi.cmd_done);
1065 /*DSSDBG("Woke up because fifo not full anymore\n");*/ 1065 /*DSSDBG("Woke up because fifo not full anymore\n");*/
1066 continue; 1066 continue;
1067 } 1067 }
1068 1068
1069 ret = __kfifo_put(rfbi.cmd_fifo, (unsigned char *)p, 1069 ret = kfifo_in(&rfbi.cmd_fifo, (unsigned char *)p,
1070 sizeof(struct update_param)); 1070 sizeof(struct update_param));
1071/* DSSDBG("pushed %d bytes\n", ret);*/ 1071/* DSSDBG("pushed %d bytes\n", ret);*/
1072 1072
1073 spin_unlock_irqrestore(rfbi.cmd_fifo->lock, flags); 1073 spin_unlock_irqrestore(&rfbi.cmd_lock, flags);
1074 1074
1075 BUG_ON(ret != sizeof(struct update_param)); 1075 BUG_ON(ret != sizeof(struct update_param));
1076 1076
@@ -1155,12 +1155,12 @@ int rfbi_init(void)
1155{ 1155{
1156 u32 rev; 1156 u32 rev;
1157 u32 l; 1157 u32 l;
1158 int r;
1158 1159
1159 spin_lock_init(&rfbi.cmd_lock); 1160 spin_lock_init(&rfbi.cmd_lock);
1160 rfbi.cmd_fifo = kfifo_alloc(RFBI_CMD_FIFO_LEN_BYTES, GFP_KERNEL, 1161 r = kfifo_alloc(&rfbi.cmd_fifo, RFBI_CMD_FIFO_LEN_BYTES, GFP_KERNEL);
1161 &rfbi.cmd_lock); 1162 if (r)
1162 if (IS_ERR(rfbi.cmd_fifo)) 1163 return r;
1163 return -ENOMEM;
1164 1164
1165 init_completion(&rfbi.cmd_done); 1165 init_completion(&rfbi.cmd_done);
1166 atomic_set(&rfbi.cmd_fifo_full, 0); 1166 atomic_set(&rfbi.cmd_fifo_full, 0);
@@ -1196,7 +1196,7 @@ void rfbi_exit(void)
1196{ 1196{
1197 DSSDBG("rfbi_exit\n"); 1197 DSSDBG("rfbi_exit\n");
1198 1198
1199 kfifo_free(rfbi.cmd_fifo); 1199 kfifo_free(&rfbi.cmd_fifo);
1200 1200
1201 iounmap(rfbi.base); 1201 iounmap(rfbi.base);
1202} 1202}
diff --git a/drivers/video/omap2/omapfb/omapfb-main.c b/drivers/video/omap2/omapfb/omapfb-main.c
index ef299839858a..d17caef6915a 100644
--- a/drivers/video/omap2/omapfb/omapfb-main.c
+++ b/drivers/video/omap2/omapfb/omapfb-main.c
@@ -1311,6 +1311,7 @@ static void omapfb_free_fbmem(struct fb_info *fbi)
1311 if (rg->vrfb.vaddr[0]) { 1311 if (rg->vrfb.vaddr[0]) {
1312 iounmap(rg->vrfb.vaddr[0]); 1312 iounmap(rg->vrfb.vaddr[0]);
1313 omap_vrfb_release_ctx(&rg->vrfb); 1313 omap_vrfb_release_ctx(&rg->vrfb);
1314 rg->vrfb.vaddr[0] = NULL;
1314 } 1315 }
1315 } 1316 }
1316 1317
@@ -2114,6 +2115,11 @@ static int omapfb_probe(struct platform_device *pdev)
2114 dssdev = NULL; 2115 dssdev = NULL;
2115 for_each_dss_dev(dssdev) { 2116 for_each_dss_dev(dssdev) {
2116 omap_dss_get_device(dssdev); 2117 omap_dss_get_device(dssdev);
2118 if (!dssdev->driver) {
2119 dev_err(&pdev->dev, "no driver for display\n");
2120 r = -EINVAL;
2121 goto cleanup;
2122 }
2117 fbdev->displays[fbdev->num_displays++] = dssdev; 2123 fbdev->displays[fbdev->num_displays++] = dssdev;
2118 } 2124 }
2119 2125
diff --git a/drivers/video/pxafb.c b/drivers/video/pxafb.c
index 415858b421b3..825b665245bb 100644
--- a/drivers/video/pxafb.c
+++ b/drivers/video/pxafb.c
@@ -1221,9 +1221,9 @@ static void setup_smart_timing(struct pxafb_info *fbi,
1221static int pxafb_smart_thread(void *arg) 1221static int pxafb_smart_thread(void *arg)
1222{ 1222{
1223 struct pxafb_info *fbi = arg; 1223 struct pxafb_info *fbi = arg;
1224 struct pxafb_mach_info *inf; 1224 struct pxafb_mach_info *inf = fbi->dev->platform_data;
1225 1225
1226 if (!fbi || !fbi->dev->platform_data->smart_update) { 1226 if (!inf->smart_update) {
1227 pr_err("%s: not properly initialized, thread terminated\n", 1227 pr_err("%s: not properly initialized, thread terminated\n",
1228 __func__); 1228 __func__);
1229 return -EINVAL; 1229 return -EINVAL;
diff --git a/drivers/video/s3c-fb.c b/drivers/video/s3c-fb.c
index adf9632c6b1f..53cb722c45a0 100644
--- a/drivers/video/s3c-fb.c
+++ b/drivers/video/s3c-fb.c
@@ -211,21 +211,23 @@ static int s3c_fb_check_var(struct fb_var_screeninfo *var,
211 211
212/** 212/**
213 * s3c_fb_calc_pixclk() - calculate the divider to create the pixel clock. 213 * s3c_fb_calc_pixclk() - calculate the divider to create the pixel clock.
214 * @id: window id.
215 * @sfb: The hardware state. 214 * @sfb: The hardware state.
216 * @pixclock: The pixel clock wanted, in picoseconds. 215 * @pixclock: The pixel clock wanted, in picoseconds.
217 * 216 *
218 * Given the specified pixel clock, work out the necessary divider to get 217 * Given the specified pixel clock, work out the necessary divider to get
219 * close to the output frequency. 218 * close to the output frequency.
220 */ 219 */
221static int s3c_fb_calc_pixclk(unsigned char id, struct s3c_fb *sfb, unsigned int pixclk) 220static int s3c_fb_calc_pixclk(struct s3c_fb *sfb, unsigned int pixclk)
222{ 221{
223 struct s3c_fb_pd_win *win = sfb->pdata->win[id];
224 unsigned long clk = clk_get_rate(sfb->bus_clk); 222 unsigned long clk = clk_get_rate(sfb->bus_clk);
223 unsigned long long tmp;
225 unsigned int result; 224 unsigned int result;
226 225
227 pixclk *= win->win_mode.refresh; 226 tmp = (unsigned long long)clk;
228 result = clk / pixclk; 227 tmp *= pixclk;
228
229 do_div(tmp, 1000000000UL);
230 result = (unsigned int)tmp / 1000;
229 231
230 dev_dbg(sfb->dev, "pixclk=%u, clk=%lu, div=%d (%lu)\n", 232 dev_dbg(sfb->dev, "pixclk=%u, clk=%lu, div=%d (%lu)\n",
231 pixclk, clk, result, clk / result); 233 pixclk, clk, result, clk / result);
@@ -301,7 +303,7 @@ static int s3c_fb_set_par(struct fb_info *info)
301 /* use window 0 as the basis for the lcd output timings */ 303 /* use window 0 as the basis for the lcd output timings */
302 304
303 if (win_no == 0) { 305 if (win_no == 0) {
304 clkdiv = s3c_fb_calc_pixclk(win_no, sfb, var->pixclock); 306 clkdiv = s3c_fb_calc_pixclk(sfb, var->pixclock);
305 307
306 data = sfb->pdata->vidcon0; 308 data = sfb->pdata->vidcon0;
307 data &= ~(VIDCON0_CLKVAL_F_MASK | VIDCON0_CLKDIR); 309 data &= ~(VIDCON0_CLKVAL_F_MASK | VIDCON0_CLKDIR);
diff --git a/drivers/video/via/accel.c b/drivers/video/via/accel.c
index 9d4f3a49ba4a..d5077dfa9e00 100644
--- a/drivers/video/via/accel.c
+++ b/drivers/video/via/accel.c
@@ -137,7 +137,7 @@ static int hw_bitblt_1(void __iomem *engine, u8 op, u32 width, u32 height,
137 tmp, dst_pitch); 137 tmp, dst_pitch);
138 return -EINVAL; 138 return -EINVAL;
139 } 139 }
140 tmp = (tmp >> 3) | (dst_pitch << (16 - 3)); 140 tmp = VIA_PITCH_ENABLE | (tmp >> 3) | (dst_pitch << (16 - 3));
141 writel(tmp, engine + 0x38); 141 writel(tmp, engine + 0x38);
142 142
143 if (op == VIA_BITBLT_FILL) 143 if (op == VIA_BITBLT_FILL)
@@ -352,6 +352,9 @@ int viafb_init_engine(struct fb_info *info)
352 viapar->shared->vq_vram_addr = viapar->fbmem_free; 352 viapar->shared->vq_vram_addr = viapar->fbmem_free;
353 viapar->fbmem_used += VQ_SIZE; 353 viapar->fbmem_used += VQ_SIZE;
354 354
355 /* Init 2D engine reg to reset 2D engine */
356 writel(0x0, engine + VIA_REG_KEYCONTROL);
357
355 /* Init AGP and VQ regs */ 358 /* Init AGP and VQ regs */
356 switch (chip_name) { 359 switch (chip_name) {
357 case UNICHROME_K8M890: 360 case UNICHROME_K8M890:
diff --git a/drivers/video/via/viafbdev.c b/drivers/video/via/viafbdev.c
index d8df17a7d5fc..3028e7ddc3b5 100644
--- a/drivers/video/via/viafbdev.c
+++ b/drivers/video/via/viafbdev.c
@@ -177,16 +177,15 @@ static int viafb_set_par(struct fb_info *info)
177 } 177 }
178 178
179 if (vmode_index != VIA_RES_INVALID) { 179 if (vmode_index != VIA_RES_INVALID) {
180 viafb_setmode(vmode_index, info->var.xres, info->var.yres,
181 info->var.bits_per_pixel, vmode_index1,
182 viafb_second_xres, viafb_second_yres, viafb_bpp1);
183
184 viafb_update_fix(info); 180 viafb_update_fix(info);
185 viafb_bpp = info->var.bits_per_pixel; 181 viafb_bpp = info->var.bits_per_pixel;
186 if (info->var.accel_flags & FB_ACCELF_TEXT) 182 if (info->var.accel_flags & FB_ACCELF_TEXT)
187 info->flags &= ~FBINFO_HWACCEL_DISABLED; 183 info->flags &= ~FBINFO_HWACCEL_DISABLED;
188 else 184 else
189 info->flags |= FBINFO_HWACCEL_DISABLED; 185 info->flags |= FBINFO_HWACCEL_DISABLED;
186 viafb_setmode(vmode_index, info->var.xres, info->var.yres,
187 info->var.bits_per_pixel, vmode_index1,
188 viafb_second_xres, viafb_second_yres, viafb_bpp1);
190 } 189 }
191 190
192 return 0; 191 return 0;
@@ -872,7 +871,9 @@ static int viafb_cursor(struct fb_info *info, struct fb_cursor *cursor)
872 if (info->flags & FBINFO_HWACCEL_DISABLED || info != viafbinfo) 871 if (info->flags & FBINFO_HWACCEL_DISABLED || info != viafbinfo)
873 return -ENODEV; 872 return -ENODEV;
874 873
875 if (chip_name == UNICHROME_CLE266 && viapar->iga_path == IGA2) 874 /* LCD ouput does not support hw cursors (at least on VN896) */
875 if ((chip_name == UNICHROME_CLE266 && viapar->iga_path == IGA2) ||
876 viafb_LCD_ON)
876 return -ENODEV; 877 return -ENODEV;
877 878
878 viafb_show_hw_cursor(info, HW_Cursor_OFF); 879 viafb_show_hw_cursor(info, HW_Cursor_OFF);
diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
index 9dd588042880..505be88c82ae 100644
--- a/drivers/virtio/virtio_balloon.c
+++ b/drivers/virtio/virtio_balloon.c
@@ -266,7 +266,7 @@ static void __devexit virtballoon_remove(struct virtio_device *vdev)
266 266
267static unsigned int features[] = { VIRTIO_BALLOON_F_MUST_TELL_HOST }; 267static unsigned int features[] = { VIRTIO_BALLOON_F_MUST_TELL_HOST };
268 268
269static struct virtio_driver virtio_balloon = { 269static struct virtio_driver virtio_balloon_driver = {
270 .feature_table = features, 270 .feature_table = features,
271 .feature_table_size = ARRAY_SIZE(features), 271 .feature_table_size = ARRAY_SIZE(features),
272 .driver.name = KBUILD_MODNAME, 272 .driver.name = KBUILD_MODNAME,
@@ -279,12 +279,12 @@ static struct virtio_driver virtio_balloon = {
279 279
280static int __init init(void) 280static int __init init(void)
281{ 281{
282 return register_virtio_driver(&virtio_balloon); 282 return register_virtio_driver(&virtio_balloon_driver);
283} 283}
284 284
285static void __exit fini(void) 285static void __exit fini(void)
286{ 286{
287 unregister_virtio_driver(&virtio_balloon); 287 unregister_virtio_driver(&virtio_balloon_driver);
288} 288}
289module_init(init); 289module_init(init);
290module_exit(fini); 290module_exit(fini);
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index 088f32f29a6e..050ee147592f 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -396,8 +396,8 @@ config SBC_FITPC2_WATCHDOG
396 tristate "Compulab SBC-FITPC2 watchdog" 396 tristate "Compulab SBC-FITPC2 watchdog"
397 depends on X86 397 depends on X86
398 ---help--- 398 ---help---
399 This is the driver for the built-in watchdog timer on the fit-PC2 399 This is the driver for the built-in watchdog timer on the fit-PC2,
400 Single-board computer made by Compulab. 400 fit-PC2i, CM-iAM single-board computers made by Compulab.
401 401
402 It`s possible to enable watchdog timer either from BIOS (F2) or from booted Linux. 402 It`s possible to enable watchdog timer either from BIOS (F2) or from booted Linux.
403 When "Watchdog Timer Value" enabled one can set 31-255 s operational range. 403 When "Watchdog Timer Value" enabled one can set 31-255 s operational range.
diff --git a/drivers/watchdog/bfin_wdt.c b/drivers/watchdog/bfin_wdt.c
index c7b3f9df2317..2159e668751c 100644
--- a/drivers/watchdog/bfin_wdt.c
+++ b/drivers/watchdog/bfin_wdt.c
@@ -1,9 +1,8 @@
1/* 1/*
2 * Blackfin On-Chip Watchdog Driver 2 * Blackfin On-Chip Watchdog Driver
3 * Supports BF53[123]/BF53[467]/BF54[2489]/BF561
4 * 3 *
5 * Originally based on softdog.c 4 * Originally based on softdog.c
6 * Copyright 2006-2007 Analog Devices Inc. 5 * Copyright 2006-2010 Analog Devices Inc.
7 * Copyright 2006-2007 Michele d'Amico 6 * Copyright 2006-2007 Michele d'Amico
8 * Copyright 1996 Alan Cox <alan@lxorguk.ukuu.org.uk> 7 * Copyright 1996 Alan Cox <alan@lxorguk.ukuu.org.uk>
9 * 8 *
@@ -137,13 +136,15 @@ static int bfin_wdt_running(void)
137 */ 136 */
138static int bfin_wdt_set_timeout(unsigned long t) 137static int bfin_wdt_set_timeout(unsigned long t)
139{ 138{
140 u32 cnt; 139 u32 cnt, max_t, sclk;
141 unsigned long flags; 140 unsigned long flags;
142 141
143 stampit(); 142 sclk = get_sclk();
143 max_t = -1 / sclk;
144 cnt = t * sclk;
145 stamp("maxtimeout=%us newtimeout=%lus (cnt=%#x)", max_t, t, cnt);
144 146
145 cnt = t * get_sclk(); 147 if (t > max_t) {
146 if (cnt < get_sclk()) {
147 printk(KERN_WARNING PFX "timeout value is too large\n"); 148 printk(KERN_WARNING PFX "timeout value is too large\n");
148 return -EINVAL; 149 return -EINVAL;
149 } 150 }
diff --git a/drivers/watchdog/iTCO_wdt.c b/drivers/watchdog/iTCO_wdt.c
index c8a3bec26830..4bdb7f1a9077 100644
--- a/drivers/watchdog/iTCO_wdt.c
+++ b/drivers/watchdog/iTCO_wdt.c
@@ -29,8 +29,9 @@
29 * document number 313056-003, 313057-017: 82801H (ICH8) 29 * document number 313056-003, 313057-017: 82801H (ICH8)
30 * document number 316972-004, 316973-012: 82801I (ICH9) 30 * document number 316972-004, 316973-012: 82801I (ICH9)
31 * document number 319973-002, 319974-002: 82801J (ICH10) 31 * document number 319973-002, 319974-002: 82801J (ICH10)
32 * document number 322169-001, 322170-001: 5 Series, 3400 Series (PCH) 32 * document number 322169-001, 322170-003: 5 Series, 3400 Series (PCH)
33 * document number 320066-003, 320257-008: EP80597 (IICH) 33 * document number 320066-003, 320257-008: EP80597 (IICH)
34 * document number TBD : Cougar Point (CPT)
34 */ 35 */
35 36
36/* 37/*
@@ -100,8 +101,22 @@ enum iTCO_chipsets {
100 TCO_ICH10DO, /* ICH10DO */ 101 TCO_ICH10DO, /* ICH10DO */
101 TCO_PCH, /* PCH Desktop Full Featured */ 102 TCO_PCH, /* PCH Desktop Full Featured */
102 TCO_PCHM, /* PCH Mobile Full Featured */ 103 TCO_PCHM, /* PCH Mobile Full Featured */
104 TCO_P55, /* P55 */
105 TCO_PM55, /* PM55 */
106 TCO_H55, /* H55 */
107 TCO_QM57, /* QM57 */
108 TCO_H57, /* H57 */
109 TCO_HM55, /* HM55 */
110 TCO_Q57, /* Q57 */
111 TCO_HM57, /* HM57 */
103 TCO_PCHMSFF, /* PCH Mobile SFF Full Featured */ 112 TCO_PCHMSFF, /* PCH Mobile SFF Full Featured */
113 TCO_QS57, /* QS57 */
114 TCO_3400, /* 3400 */
115 TCO_3420, /* 3420 */
116 TCO_3450, /* 3450 */
104 TCO_EP80579, /* EP80579 */ 117 TCO_EP80579, /* EP80579 */
118 TCO_CPTD, /* CPT Desktop */
119 TCO_CPTM, /* CPT Mobile */
105}; 120};
106 121
107static struct { 122static struct {
@@ -144,8 +159,22 @@ static struct {
144 {"ICH10DO", 2}, 159 {"ICH10DO", 2},
145 {"PCH Desktop Full Featured", 2}, 160 {"PCH Desktop Full Featured", 2},
146 {"PCH Mobile Full Featured", 2}, 161 {"PCH Mobile Full Featured", 2},
162 {"P55", 2},
163 {"PM55", 2},
164 {"H55", 2},
165 {"QM57", 2},
166 {"H57", 2},
167 {"HM55", 2},
168 {"Q57", 2},
169 {"HM57", 2},
147 {"PCH Mobile SFF Full Featured", 2}, 170 {"PCH Mobile SFF Full Featured", 2},
171 {"QS57", 2},
172 {"3400", 2},
173 {"3420", 2},
174 {"3450", 2},
148 {"EP80579", 2}, 175 {"EP80579", 2},
176 {"CPT Desktop", 2},
177 {"CPT Mobile", 2},
149 {NULL, 0} 178 {NULL, 0}
150}; 179};
151 180
@@ -216,8 +245,22 @@ static struct pci_device_id iTCO_wdt_pci_tbl[] = {
216 { ITCO_PCI_DEVICE(0x3a14, TCO_ICH10DO)}, 245 { ITCO_PCI_DEVICE(0x3a14, TCO_ICH10DO)},
217 { ITCO_PCI_DEVICE(0x3b00, TCO_PCH)}, 246 { ITCO_PCI_DEVICE(0x3b00, TCO_PCH)},
218 { ITCO_PCI_DEVICE(0x3b01, TCO_PCHM)}, 247 { ITCO_PCI_DEVICE(0x3b01, TCO_PCHM)},
248 { ITCO_PCI_DEVICE(0x3b02, TCO_P55)},
249 { ITCO_PCI_DEVICE(0x3b03, TCO_PM55)},
250 { ITCO_PCI_DEVICE(0x3b06, TCO_H55)},
251 { ITCO_PCI_DEVICE(0x3b07, TCO_QM57)},
252 { ITCO_PCI_DEVICE(0x3b08, TCO_H57)},
253 { ITCO_PCI_DEVICE(0x3b09, TCO_HM55)},
254 { ITCO_PCI_DEVICE(0x3b0a, TCO_Q57)},
255 { ITCO_PCI_DEVICE(0x3b0b, TCO_HM57)},
219 { ITCO_PCI_DEVICE(0x3b0d, TCO_PCHMSFF)}, 256 { ITCO_PCI_DEVICE(0x3b0d, TCO_PCHMSFF)},
257 { ITCO_PCI_DEVICE(0x3b0f, TCO_QS57)},
258 { ITCO_PCI_DEVICE(0x3b12, TCO_3400)},
259 { ITCO_PCI_DEVICE(0x3b14, TCO_3420)},
260 { ITCO_PCI_DEVICE(0x3b16, TCO_3450)},
220 { ITCO_PCI_DEVICE(0x5031, TCO_EP80579)}, 261 { ITCO_PCI_DEVICE(0x5031, TCO_EP80579)},
262 { ITCO_PCI_DEVICE(0x1c42, TCO_CPTD)},
263 { ITCO_PCI_DEVICE(0x1c43, TCO_CPTM)},
221 { 0, }, /* End of list */ 264 { 0, }, /* End of list */
222}; 265};
223MODULE_DEVICE_TABLE(pci, iTCO_wdt_pci_tbl); 266MODULE_DEVICE_TABLE(pci, iTCO_wdt_pci_tbl);
diff --git a/drivers/watchdog/ixp2000_wdt.c b/drivers/watchdog/ixp2000_wdt.c
index 4f4b35a20d84..3c79dc587958 100644
--- a/drivers/watchdog/ixp2000_wdt.c
+++ b/drivers/watchdog/ixp2000_wdt.c
@@ -19,6 +19,7 @@
19#include <linux/module.h> 19#include <linux/module.h>
20#include <linux/moduleparam.h> 20#include <linux/moduleparam.h>
21#include <linux/types.h> 21#include <linux/types.h>
22#include <linux/timer.h>
22#include <linux/kernel.h> 23#include <linux/kernel.h>
23#include <linux/fs.h> 24#include <linux/fs.h>
24#include <linux/miscdevice.h> 25#include <linux/miscdevice.h>
diff --git a/drivers/watchdog/sbc_fitpc2_wdt.c b/drivers/watchdog/sbc_fitpc2_wdt.c
index 91430a89107c..e6763d2a567b 100644
--- a/drivers/watchdog/sbc_fitpc2_wdt.c
+++ b/drivers/watchdog/sbc_fitpc2_wdt.c
@@ -46,9 +46,9 @@ static DEFINE_SPINLOCK(wdt_lock);
46static void wdt_send_data(unsigned char command, unsigned char data) 46static void wdt_send_data(unsigned char command, unsigned char data)
47{ 47{
48 outb(command, COMMAND_PORT); 48 outb(command, COMMAND_PORT);
49 mdelay(100); 49 msleep(100);
50 outb(data, DATA_PORT); 50 outb(data, DATA_PORT);
51 mdelay(200); 51 msleep(200);
52} 52}
53 53
54static void wdt_enable(void) 54static void wdt_enable(void)
@@ -202,11 +202,10 @@ static int __init fitpc2_wdt_init(void)
202{ 202{
203 int err; 203 int err;
204 204
205 if (strcmp("SBC-FITPC2", dmi_get_system_info(DMI_BOARD_NAME))) { 205 if (!strstr(dmi_get_system_info(DMI_BOARD_NAME), "SBC-FITPC2"))
206 pr_info("board name is: %s. Should be SBC-FITPC2\n",
207 dmi_get_system_info(DMI_BOARD_NAME));
208 return -ENODEV; 206 return -ENODEV;
209 } 207
208 pr_info("%s found\n", dmi_get_system_info(DMI_BOARD_NAME));
210 209
211 if (!request_region(COMMAND_PORT, 1, WATCHDOG_NAME)) { 210 if (!request_region(COMMAND_PORT, 1, WATCHDOG_NAME)) {
212 pr_err("I/O address 0x%04x already in use\n", COMMAND_PORT); 211 pr_err("I/O address 0x%04x already in use\n", COMMAND_PORT);
diff --git a/drivers/xen/manage.c b/drivers/xen/manage.c
index c4997930afc7..5d42d55e299b 100644
--- a/drivers/xen/manage.c
+++ b/drivers/xen/manage.c
@@ -102,15 +102,15 @@ static void do_suspend(void)
102 goto out_thaw; 102 goto out_thaw;
103 } 103 }
104 104
105 printk(KERN_DEBUG "suspending xenstore...\n");
106 xs_suspend();
107
105 err = dpm_suspend_noirq(PMSG_SUSPEND); 108 err = dpm_suspend_noirq(PMSG_SUSPEND);
106 if (err) { 109 if (err) {
107 printk(KERN_ERR "dpm_suspend_noirq failed: %d\n", err); 110 printk(KERN_ERR "dpm_suspend_noirq failed: %d\n", err);
108 goto out_resume; 111 goto out_resume;
109 } 112 }
110 113
111 printk(KERN_DEBUG "suspending xenstore...\n");
112 xs_suspend();
113
114 err = stop_machine(xen_suspend, &cancelled, cpumask_of(0)); 114 err = stop_machine(xen_suspend, &cancelled, cpumask_of(0));
115 115
116 dpm_resume_noirq(PMSG_RESUME); 116 dpm_resume_noirq(PMSG_RESUME);
@@ -120,13 +120,13 @@ static void do_suspend(void)
120 cancelled = 1; 120 cancelled = 1;
121 } 121 }
122 122
123out_resume:
123 if (!cancelled) { 124 if (!cancelled) {
124 xen_arch_resume(); 125 xen_arch_resume();
125 xs_resume(); 126 xs_resume();
126 } else 127 } else
127 xs_suspend_cancel(); 128 xs_suspend_cancel();
128 129
129out_resume:
130 dpm_resume_end(PMSG_RESUME); 130 dpm_resume_end(PMSG_RESUME);
131 131
132 /* Make sure timer events get retriggered on all CPUs */ 132 /* Make sure timer events get retriggered on all CPUs */
diff --git a/firmware/Makefile b/firmware/Makefile
index 6d5c3abd06be..1c00d05578f7 100644
--- a/firmware/Makefile
+++ b/firmware/Makefile
@@ -69,7 +69,8 @@ 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 cis/PE-200.cis 72 cis/tamarack.cis cis/PE-200.cis \
73 cis/PE520.cis
73fw-shipped-$(CONFIG_PCMCIA_3C589) += cis/3CXEM556.cis 74fw-shipped-$(CONFIG_PCMCIA_3C589) += cis/3CXEM556.cis
74fw-shipped-$(CONFIG_PCMCIA_3C574) += cis/3CCFEM556.cis 75fw-shipped-$(CONFIG_PCMCIA_3C574) += cis/3CCFEM556.cis
75fw-shipped-$(CONFIG_SERIAL_8250_CS) += cis/MT5634ZLX.cis cis/RS-COM-2P.cis \ 76fw-shipped-$(CONFIG_SERIAL_8250_CS) += cis/MT5634ZLX.cis cis/RS-COM-2P.cis \
diff --git a/firmware/WHENCE b/firmware/WHENCE
index 34b5d0a036db..ac174feda7cb 100644
--- a/firmware/WHENCE
+++ b/firmware/WHENCE
@@ -601,6 +601,7 @@ File: cis/LA-PCM.cis
601 cis/NE2K.cis 601 cis/NE2K.cis
602 cis/tamarack.cis 602 cis/tamarack.cis
603 cis/PE-200.cis 603 cis/PE-200.cis
604 cis/PE520.cis
604 605
605Licence: GPL 606Licence: GPL
606 607
diff --git a/firmware/cis/PE520.cis.ihex b/firmware/cis/PE520.cis.ihex
new file mode 100644
index 000000000000..97a745b5496e
--- /dev/null
+++ b/firmware/cis/PE520.cis.ihex
@@ -0,0 +1,9 @@
1:1000000001030000FF152304014B544900504535FE
2:10001000323020504C55530050434D434941204508
3:10002000746865726E65740000FF20046101100041
4:10003000210206001A050101D00F0B1B09C101198D
5:0A00400001556530FFFF1400FF00BA
6:00000001FF
7#
8# Replacement CIS for PE520 ethernet card
9#
diff --git a/fs/9p/v9fs.c b/fs/9p/v9fs.c
index cf62b05e296a..7d6c2139891d 100644
--- a/fs/9p/v9fs.c
+++ b/fs/9p/v9fs.c
@@ -84,7 +84,7 @@ static const match_table_t tokens = {
84 84
85static int v9fs_parse_options(struct v9fs_session_info *v9ses, char *opts) 85static int v9fs_parse_options(struct v9fs_session_info *v9ses, char *opts)
86{ 86{
87 char *options; 87 char *options, *tmp_options;
88 substring_t args[MAX_OPT_ARGS]; 88 substring_t args[MAX_OPT_ARGS];
89 char *p; 89 char *p;
90 int option = 0; 90 int option = 0;
@@ -102,9 +102,12 @@ static int v9fs_parse_options(struct v9fs_session_info *v9ses, char *opts)
102 if (!opts) 102 if (!opts)
103 return 0; 103 return 0;
104 104
105 options = kstrdup(opts, GFP_KERNEL); 105 tmp_options = kstrdup(opts, GFP_KERNEL);
106 if (!options) 106 if (!tmp_options) {
107 ret = -ENOMEM;
107 goto fail_option_alloc; 108 goto fail_option_alloc;
109 }
110 options = tmp_options;
108 111
109 while ((p = strsep(&options, ",")) != NULL) { 112 while ((p = strsep(&options, ",")) != NULL) {
110 int token; 113 int token;
@@ -159,8 +162,12 @@ static int v9fs_parse_options(struct v9fs_session_info *v9ses, char *opts)
159 break; 162 break;
160 case Opt_cache: 163 case Opt_cache:
161 s = match_strdup(&args[0]); 164 s = match_strdup(&args[0]);
162 if (!s) 165 if (!s) {
163 goto fail_option_alloc; 166 ret = -ENOMEM;
167 P9_DPRINTK(P9_DEBUG_ERROR,
168 "problem allocating copy of cache arg\n");
169 goto free_and_return;
170 }
164 171
165 if (strcmp(s, "loose") == 0) 172 if (strcmp(s, "loose") == 0)
166 v9ses->cache = CACHE_LOOSE; 173 v9ses->cache = CACHE_LOOSE;
@@ -173,8 +180,12 @@ static int v9fs_parse_options(struct v9fs_session_info *v9ses, char *opts)
173 180
174 case Opt_access: 181 case Opt_access:
175 s = match_strdup(&args[0]); 182 s = match_strdup(&args[0]);
176 if (!s) 183 if (!s) {
177 goto fail_option_alloc; 184 ret = -ENOMEM;
185 P9_DPRINTK(P9_DEBUG_ERROR,
186 "problem allocating copy of access arg\n");
187 goto free_and_return;
188 }
178 189
179 v9ses->flags &= ~V9FS_ACCESS_MASK; 190 v9ses->flags &= ~V9FS_ACCESS_MASK;
180 if (strcmp(s, "user") == 0) 191 if (strcmp(s, "user") == 0)
@@ -194,13 +205,11 @@ static int v9fs_parse_options(struct v9fs_session_info *v9ses, char *opts)
194 continue; 205 continue;
195 } 206 }
196 } 207 }
197 kfree(options);
198 return ret;
199 208
209free_and_return:
210 kfree(tmp_options);
200fail_option_alloc: 211fail_option_alloc:
201 P9_DPRINTK(P9_DEBUG_ERROR, 212 return ret;
202 "failed to allocate copy of option argument\n");
203 return -ENOMEM;
204} 213}
205 214
206/** 215/**
diff --git a/fs/9p/v9fs_vfs.h b/fs/9p/v9fs_vfs.h
index 3a7560e35865..ed835836e0dc 100644
--- a/fs/9p/v9fs_vfs.h
+++ b/fs/9p/v9fs_vfs.h
@@ -60,3 +60,4 @@ void v9fs_dentry_release(struct dentry *);
60int v9fs_uflags2omode(int uflags, int extended); 60int v9fs_uflags2omode(int uflags, int extended);
61 61
62ssize_t v9fs_file_readn(struct file *, char *, char __user *, u32, u64); 62ssize_t v9fs_file_readn(struct file *, char *, char __user *, u32, u64);
63void v9fs_blank_wstat(struct p9_wstat *wstat);
diff --git a/fs/9p/vfs_file.c b/fs/9p/vfs_file.c
index 3902bf43a088..74a0461a9ac0 100644
--- a/fs/9p/vfs_file.c
+++ b/fs/9p/vfs_file.c
@@ -257,6 +257,23 @@ v9fs_file_write(struct file *filp, const char __user * data,
257 return total; 257 return total;
258} 258}
259 259
260static int v9fs_file_fsync(struct file *filp, struct dentry *dentry,
261 int datasync)
262{
263 struct p9_fid *fid;
264 struct p9_wstat wstat;
265 int retval;
266
267 P9_DPRINTK(P9_DEBUG_VFS, "filp %p dentry %p datasync %x\n", filp,
268 dentry, datasync);
269
270 fid = filp->private_data;
271 v9fs_blank_wstat(&wstat);
272
273 retval = p9_client_wstat(fid, &wstat);
274 return retval;
275}
276
260static const struct file_operations v9fs_cached_file_operations = { 277static const struct file_operations v9fs_cached_file_operations = {
261 .llseek = generic_file_llseek, 278 .llseek = generic_file_llseek,
262 .read = do_sync_read, 279 .read = do_sync_read,
@@ -266,6 +283,7 @@ static const struct file_operations v9fs_cached_file_operations = {
266 .release = v9fs_dir_release, 283 .release = v9fs_dir_release,
267 .lock = v9fs_file_lock, 284 .lock = v9fs_file_lock,
268 .mmap = generic_file_readonly_mmap, 285 .mmap = generic_file_readonly_mmap,
286 .fsync = v9fs_file_fsync,
269}; 287};
270 288
271const struct file_operations v9fs_file_operations = { 289const struct file_operations v9fs_file_operations = {
@@ -276,4 +294,5 @@ const struct file_operations v9fs_file_operations = {
276 .release = v9fs_dir_release, 294 .release = v9fs_dir_release,
277 .lock = v9fs_file_lock, 295 .lock = v9fs_file_lock,
278 .mmap = generic_file_readonly_mmap, 296 .mmap = generic_file_readonly_mmap,
297 .fsync = v9fs_file_fsync,
279}; 298};
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
index 18f74ec4dce9..a407fa3388c0 100644
--- a/fs/9p/vfs_inode.c
+++ b/fs/9p/vfs_inode.c
@@ -176,7 +176,7 @@ int v9fs_uflags2omode(int uflags, int extended)
176 * 176 *
177 */ 177 */
178 178
179static void 179void
180v9fs_blank_wstat(struct p9_wstat *wstat) 180v9fs_blank_wstat(struct p9_wstat *wstat)
181{ 181{
182 wstat->type = ~0; 182 wstat->type = ~0;
@@ -1001,44 +1001,6 @@ done:
1001} 1001}
1002 1002
1003/** 1003/**
1004 * v9fs_vfs_readlink - read a symlink's location
1005 * @dentry: dentry for symlink
1006 * @buffer: buffer to load symlink location into
1007 * @buflen: length of buffer
1008 *
1009 */
1010
1011static int v9fs_vfs_readlink(struct dentry *dentry, char __user * buffer,
1012 int buflen)
1013{
1014 int retval;
1015 int ret;
1016 char *link = __getname();
1017
1018 if (unlikely(!link))
1019 return -ENOMEM;
1020
1021 if (buflen > PATH_MAX)
1022 buflen = PATH_MAX;
1023
1024 P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_name.name,
1025 dentry);
1026
1027 retval = v9fs_readlink(dentry, link, buflen);
1028
1029 if (retval > 0) {
1030 if ((ret = copy_to_user(buffer, link, retval)) != 0) {
1031 P9_DPRINTK(P9_DEBUG_ERROR,
1032 "problem copying to user: %d\n", ret);
1033 retval = ret;
1034 }
1035 }
1036
1037 __putname(link);
1038 return retval;
1039}
1040
1041/**
1042 * v9fs_vfs_follow_link - follow a symlink path 1004 * v9fs_vfs_follow_link - follow a symlink path
1043 * @dentry: dentry for symlink 1005 * @dentry: dentry for symlink
1044 * @nd: nameidata 1006 * @nd: nameidata
@@ -1230,7 +1192,6 @@ static const struct inode_operations v9fs_dir_inode_operations_ext = {
1230 .rmdir = v9fs_vfs_rmdir, 1192 .rmdir = v9fs_vfs_rmdir,
1231 .mknod = v9fs_vfs_mknod, 1193 .mknod = v9fs_vfs_mknod,
1232 .rename = v9fs_vfs_rename, 1194 .rename = v9fs_vfs_rename,
1233 .readlink = v9fs_vfs_readlink,
1234 .getattr = v9fs_vfs_getattr, 1195 .getattr = v9fs_vfs_getattr,
1235 .setattr = v9fs_vfs_setattr, 1196 .setattr = v9fs_vfs_setattr,
1236}; 1197};
@@ -1253,7 +1214,7 @@ static const struct inode_operations v9fs_file_inode_operations = {
1253}; 1214};
1254 1215
1255static const struct inode_operations v9fs_symlink_inode_operations = { 1216static const struct inode_operations v9fs_symlink_inode_operations = {
1256 .readlink = v9fs_vfs_readlink, 1217 .readlink = generic_readlink,
1257 .follow_link = v9fs_vfs_follow_link, 1218 .follow_link = v9fs_vfs_follow_link,
1258 .put_link = v9fs_vfs_put_link, 1219 .put_link = v9fs_vfs_put_link,
1259 .getattr = v9fs_vfs_getattr, 1220 .getattr = v9fs_vfs_getattr,
diff --git a/fs/9p/vfs_super.c b/fs/9p/vfs_super.c
index 14a86448572c..69357c0d9899 100644
--- a/fs/9p/vfs_super.c
+++ b/fs/9p/vfs_super.c
@@ -188,7 +188,8 @@ static void v9fs_kill_super(struct super_block *s)
188 188
189 P9_DPRINTK(P9_DEBUG_VFS, " %p\n", s); 189 P9_DPRINTK(P9_DEBUG_VFS, " %p\n", s);
190 190
191 v9fs_dentry_release(s->s_root); /* clunk root */ 191 if (s->s_root)
192 v9fs_dentry_release(s->s_root); /* clunk root */
192 193
193 kill_anon_super(s); 194 kill_anon_super(s);
194 195
diff --git a/fs/affs/affs.h b/fs/affs/affs.h
index e511dc621a2e..0e40caaba456 100644
--- a/fs/affs/affs.h
+++ b/fs/affs/affs.h
@@ -106,8 +106,8 @@ struct affs_sb_info {
106 u32 s_last_bmap; 106 u32 s_last_bmap;
107 struct buffer_head *s_bmap_bh; 107 struct buffer_head *s_bmap_bh;
108 char *s_prefix; /* Prefix for volumes and assigns. */ 108 char *s_prefix; /* Prefix for volumes and assigns. */
109 int s_prefix_len; /* Length of prefix. */
110 char s_volume[32]; /* Volume prefix for absolute symlinks. */ 109 char s_volume[32]; /* Volume prefix for absolute symlinks. */
110 spinlock_t symlink_lock; /* protects the previous two */
111}; 111};
112 112
113#define SF_INTL 0x0001 /* International filesystem. */ 113#define SF_INTL 0x0001 /* International filesystem. */
diff --git a/fs/affs/namei.c b/fs/affs/namei.c
index 960d336ec694..d70bbbac6b7b 100644
--- a/fs/affs/namei.c
+++ b/fs/affs/namei.c
@@ -341,10 +341,13 @@ affs_symlink(struct inode *dir, struct dentry *dentry, const char *symname)
341 p = (char *)AFFS_HEAD(bh)->table; 341 p = (char *)AFFS_HEAD(bh)->table;
342 lc = '/'; 342 lc = '/';
343 if (*symname == '/') { 343 if (*symname == '/') {
344 struct affs_sb_info *sbi = AFFS_SB(sb);
344 while (*symname == '/') 345 while (*symname == '/')
345 symname++; 346 symname++;
346 while (AFFS_SB(sb)->s_volume[i]) /* Cannot overflow */ 347 spin_lock(&sbi->symlink_lock);
347 *p++ = AFFS_SB(sb)->s_volume[i++]; 348 while (sbi->s_volume[i]) /* Cannot overflow */
349 *p++ = sbi->s_volume[i++];
350 spin_unlock(&sbi->symlink_lock);
348 } 351 }
349 while (i < maxlen && (c = *symname++)) { 352 while (i < maxlen && (c = *symname++)) {
350 if (c == '.' && lc == '/' && *symname == '.' && symname[1] == '/') { 353 if (c == '.' && lc == '/' && *symname == '.' && symname[1] == '/') {
diff --git a/fs/affs/super.c b/fs/affs/super.c
index 104fdcb3a7fc..d41e9673cd97 100644
--- a/fs/affs/super.c
+++ b/fs/affs/super.c
@@ -203,7 +203,7 @@ parse_options(char *options, uid_t *uid, gid_t *gid, int *mode, int *reserved, s
203 switch (token) { 203 switch (token) {
204 case Opt_bs: 204 case Opt_bs:
205 if (match_int(&args[0], &n)) 205 if (match_int(&args[0], &n))
206 return -EINVAL; 206 return 0;
207 if (n != 512 && n != 1024 && n != 2048 207 if (n != 512 && n != 1024 && n != 2048
208 && n != 4096) { 208 && n != 4096) {
209 printk ("AFFS: Invalid blocksize (512, 1024, 2048, 4096 allowed)\n"); 209 printk ("AFFS: Invalid blocksize (512, 1024, 2048, 4096 allowed)\n");
@@ -213,7 +213,7 @@ parse_options(char *options, uid_t *uid, gid_t *gid, int *mode, int *reserved, s
213 break; 213 break;
214 case Opt_mode: 214 case Opt_mode:
215 if (match_octal(&args[0], &option)) 215 if (match_octal(&args[0], &option))
216 return 1; 216 return 0;
217 *mode = option & 0777; 217 *mode = option & 0777;
218 *mount_opts |= SF_SETMODE; 218 *mount_opts |= SF_SETMODE;
219 break; 219 break;
@@ -221,8 +221,6 @@ parse_options(char *options, uid_t *uid, gid_t *gid, int *mode, int *reserved, s
221 *mount_opts |= SF_MUFS; 221 *mount_opts |= SF_MUFS;
222 break; 222 break;
223 case Opt_prefix: 223 case Opt_prefix:
224 /* Free any previous prefix */
225 kfree(*prefix);
226 *prefix = match_strdup(&args[0]); 224 *prefix = match_strdup(&args[0]);
227 if (!*prefix) 225 if (!*prefix)
228 return 0; 226 return 0;
@@ -233,21 +231,21 @@ parse_options(char *options, uid_t *uid, gid_t *gid, int *mode, int *reserved, s
233 break; 231 break;
234 case Opt_reserved: 232 case Opt_reserved:
235 if (match_int(&args[0], reserved)) 233 if (match_int(&args[0], reserved))
236 return 1; 234 return 0;
237 break; 235 break;
238 case Opt_root: 236 case Opt_root:
239 if (match_int(&args[0], root)) 237 if (match_int(&args[0], root))
240 return 1; 238 return 0;
241 break; 239 break;
242 case Opt_setgid: 240 case Opt_setgid:
243 if (match_int(&args[0], &option)) 241 if (match_int(&args[0], &option))
244 return 1; 242 return 0;
245 *gid = option; 243 *gid = option;
246 *mount_opts |= SF_SETGID; 244 *mount_opts |= SF_SETGID;
247 break; 245 break;
248 case Opt_setuid: 246 case Opt_setuid:
249 if (match_int(&args[0], &option)) 247 if (match_int(&args[0], &option))
250 return -EINVAL; 248 return 0;
251 *uid = option; 249 *uid = option;
252 *mount_opts |= SF_SETUID; 250 *mount_opts |= SF_SETUID;
253 break; 251 break;
@@ -311,11 +309,14 @@ static int affs_fill_super(struct super_block *sb, void *data, int silent)
311 return -ENOMEM; 309 return -ENOMEM;
312 sb->s_fs_info = sbi; 310 sb->s_fs_info = sbi;
313 mutex_init(&sbi->s_bmlock); 311 mutex_init(&sbi->s_bmlock);
312 spin_lock_init(&sbi->symlink_lock);
314 313
315 if (!parse_options(data,&uid,&gid,&i,&reserved,&root_block, 314 if (!parse_options(data,&uid,&gid,&i,&reserved,&root_block,
316 &blocksize,&sbi->s_prefix, 315 &blocksize,&sbi->s_prefix,
317 sbi->s_volume, &mount_flags)) { 316 sbi->s_volume, &mount_flags)) {
318 printk(KERN_ERR "AFFS: Error parsing options\n"); 317 printk(KERN_ERR "AFFS: Error parsing options\n");
318 kfree(sbi->s_prefix);
319 kfree(sbi);
319 return -EINVAL; 320 return -EINVAL;
320 } 321 }
321 /* N.B. after this point s_prefix must be released */ 322 /* N.B. after this point s_prefix must be released */
@@ -516,14 +517,18 @@ affs_remount(struct super_block *sb, int *flags, char *data)
516 unsigned long mount_flags; 517 unsigned long mount_flags;
517 int res = 0; 518 int res = 0;
518 char *new_opts = kstrdup(data, GFP_KERNEL); 519 char *new_opts = kstrdup(data, GFP_KERNEL);
520 char volume[32];
521 char *prefix = NULL;
519 522
520 pr_debug("AFFS: remount(flags=0x%x,opts=\"%s\")\n",*flags,data); 523 pr_debug("AFFS: remount(flags=0x%x,opts=\"%s\")\n",*flags,data);
521 524
522 *flags |= MS_NODIRATIME; 525 *flags |= MS_NODIRATIME;
523 526
527 memcpy(volume, sbi->s_volume, 32);
524 if (!parse_options(data, &uid, &gid, &mode, &reserved, &root_block, 528 if (!parse_options(data, &uid, &gid, &mode, &reserved, &root_block,
525 &blocksize, &sbi->s_prefix, sbi->s_volume, 529 &blocksize, &prefix, volume,
526 &mount_flags)) { 530 &mount_flags)) {
531 kfree(prefix);
527 kfree(new_opts); 532 kfree(new_opts);
528 return -EINVAL; 533 return -EINVAL;
529 } 534 }
@@ -534,6 +539,14 @@ affs_remount(struct super_block *sb, int *flags, char *data)
534 sbi->s_mode = mode; 539 sbi->s_mode = mode;
535 sbi->s_uid = uid; 540 sbi->s_uid = uid;
536 sbi->s_gid = gid; 541 sbi->s_gid = gid;
542 /* protect against readers */
543 spin_lock(&sbi->symlink_lock);
544 if (prefix) {
545 kfree(sbi->s_prefix);
546 sbi->s_prefix = prefix;
547 }
548 memcpy(sbi->s_volume, volume, 32);
549 spin_unlock(&sbi->symlink_lock);
537 550
538 if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY)) { 551 if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY)) {
539 unlock_kernel(); 552 unlock_kernel();
diff --git a/fs/affs/symlink.c b/fs/affs/symlink.c
index 41782539c907..ee00f08c4f53 100644
--- a/fs/affs/symlink.c
+++ b/fs/affs/symlink.c
@@ -20,7 +20,6 @@ static int affs_symlink_readpage(struct file *file, struct page *page)
20 int i, j; 20 int i, j;
21 char c; 21 char c;
22 char lc; 22 char lc;
23 char *pf;
24 23
25 pr_debug("AFFS: follow_link(ino=%lu)\n",inode->i_ino); 24 pr_debug("AFFS: follow_link(ino=%lu)\n",inode->i_ino);
26 25
@@ -32,11 +31,15 @@ static int affs_symlink_readpage(struct file *file, struct page *page)
32 j = 0; 31 j = 0;
33 lf = (struct slink_front *)bh->b_data; 32 lf = (struct slink_front *)bh->b_data;
34 lc = 0; 33 lc = 0;
35 pf = AFFS_SB(inode->i_sb)->s_prefix ? AFFS_SB(inode->i_sb)->s_prefix : "/";
36 34
37 if (strchr(lf->symname,':')) { /* Handle assign or volume name */ 35 if (strchr(lf->symname,':')) { /* Handle assign or volume name */
36 struct affs_sb_info *sbi = AFFS_SB(inode->i_sb);
37 char *pf;
38 spin_lock(&sbi->symlink_lock);
39 pf = sbi->s_prefix ? sbi->s_prefix : "/";
38 while (i < 1023 && (c = pf[i])) 40 while (i < 1023 && (c = pf[i]))
39 link[i++] = c; 41 link[i++] = c;
42 spin_unlock(&sbi->symlink_lock);
40 while (i < 1023 && lf->symname[j] != ':') 43 while (i < 1023 && lf->symname[j] != ':')
41 link[i++] = lf->symname[j++]; 44 link[i++] = lf->symname[j++];
42 if (i < 1023) 45 if (i < 1023)
diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c
index 33baf27fac78..34ddda888e63 100644
--- a/fs/befs/linuxvfs.c
+++ b/fs/befs/linuxvfs.c
@@ -873,6 +873,7 @@ befs_fill_super(struct super_block *sb, void *data, int silent)
873 brelse(bh); 873 brelse(bh);
874 874
875 unacquire_priv_sbp: 875 unacquire_priv_sbp:
876 kfree(befs_sb->mount_opts.iocharset);
876 kfree(sb->s_fs_info); 877 kfree(sb->s_fs_info);
877 878
878 unacquire_none: 879 unacquire_none:
diff --git a/fs/bfs/inode.c b/fs/bfs/inode.c
index 6f60336c6628..8f3d9fd89604 100644
--- a/fs/bfs/inode.c
+++ b/fs/bfs/inode.c
@@ -353,35 +353,35 @@ static int bfs_fill_super(struct super_block *s, void *data, int silent)
353 struct inode *inode; 353 struct inode *inode;
354 unsigned i, imap_len; 354 unsigned i, imap_len;
355 struct bfs_sb_info *info; 355 struct bfs_sb_info *info;
356 long ret = -EINVAL; 356 int ret = -EINVAL;
357 unsigned long i_sblock, i_eblock, i_eoff, s_size; 357 unsigned long i_sblock, i_eblock, i_eoff, s_size;
358 358
359 info = kzalloc(sizeof(*info), GFP_KERNEL); 359 info = kzalloc(sizeof(*info), GFP_KERNEL);
360 if (!info) 360 if (!info)
361 return -ENOMEM; 361 return -ENOMEM;
362 mutex_init(&info->bfs_lock);
362 s->s_fs_info = info; 363 s->s_fs_info = info;
363 364
364 sb_set_blocksize(s, BFS_BSIZE); 365 sb_set_blocksize(s, BFS_BSIZE);
365 366
366 bh = sb_bread(s, 0); 367 info->si_sbh = sb_bread(s, 0);
367 if(!bh) 368 if (!info->si_sbh)
368 goto out; 369 goto out;
369 bfs_sb = (struct bfs_super_block *)bh->b_data; 370 bfs_sb = (struct bfs_super_block *)info->si_sbh->b_data;
370 if (le32_to_cpu(bfs_sb->s_magic) != BFS_MAGIC) { 371 if (le32_to_cpu(bfs_sb->s_magic) != BFS_MAGIC) {
371 if (!silent) 372 if (!silent)
372 printf("No BFS filesystem on %s (magic=%08x)\n", 373 printf("No BFS filesystem on %s (magic=%08x)\n",
373 s->s_id, le32_to_cpu(bfs_sb->s_magic)); 374 s->s_id, le32_to_cpu(bfs_sb->s_magic));
374 goto out; 375 goto out1;
375 } 376 }
376 if (BFS_UNCLEAN(bfs_sb, s) && !silent) 377 if (BFS_UNCLEAN(bfs_sb, s) && !silent)
377 printf("%s is unclean, continuing\n", s->s_id); 378 printf("%s is unclean, continuing\n", s->s_id);
378 379
379 s->s_magic = BFS_MAGIC; 380 s->s_magic = BFS_MAGIC;
380 info->si_sbh = bh;
381 381
382 if (le32_to_cpu(bfs_sb->s_start) > le32_to_cpu(bfs_sb->s_end)) { 382 if (le32_to_cpu(bfs_sb->s_start) > le32_to_cpu(bfs_sb->s_end)) {
383 printf("Superblock is corrupted\n"); 383 printf("Superblock is corrupted\n");
384 goto out; 384 goto out1;
385 } 385 }
386 386
387 info->si_lasti = (le32_to_cpu(bfs_sb->s_start) - BFS_BSIZE) / 387 info->si_lasti = (le32_to_cpu(bfs_sb->s_start) - BFS_BSIZE) /
@@ -390,7 +390,7 @@ static int bfs_fill_super(struct super_block *s, void *data, int silent)
390 imap_len = (info->si_lasti / 8) + 1; 390 imap_len = (info->si_lasti / 8) + 1;
391 info->si_imap = kzalloc(imap_len, GFP_KERNEL); 391 info->si_imap = kzalloc(imap_len, GFP_KERNEL);
392 if (!info->si_imap) 392 if (!info->si_imap)
393 goto out; 393 goto out1;
394 for (i = 0; i < BFS_ROOT_INO; i++) 394 for (i = 0; i < BFS_ROOT_INO; i++)
395 set_bit(i, info->si_imap); 395 set_bit(i, info->si_imap);
396 396
@@ -398,15 +398,13 @@ static int bfs_fill_super(struct super_block *s, void *data, int silent)
398 inode = bfs_iget(s, BFS_ROOT_INO); 398 inode = bfs_iget(s, BFS_ROOT_INO);
399 if (IS_ERR(inode)) { 399 if (IS_ERR(inode)) {
400 ret = PTR_ERR(inode); 400 ret = PTR_ERR(inode);
401 kfree(info->si_imap); 401 goto out2;
402 goto out;
403 } 402 }
404 s->s_root = d_alloc_root(inode); 403 s->s_root = d_alloc_root(inode);
405 if (!s->s_root) { 404 if (!s->s_root) {
406 iput(inode); 405 iput(inode);
407 ret = -ENOMEM; 406 ret = -ENOMEM;
408 kfree(info->si_imap); 407 goto out2;
409 goto out;
410 } 408 }
411 409
412 info->si_blocks = (le32_to_cpu(bfs_sb->s_end) + 1) >> BFS_BSIZE_BITS; 410 info->si_blocks = (le32_to_cpu(bfs_sb->s_end) + 1) >> BFS_BSIZE_BITS;
@@ -419,10 +417,8 @@ static int bfs_fill_super(struct super_block *s, void *data, int silent)
419 bh = sb_bread(s, info->si_blocks - 1); 417 bh = sb_bread(s, info->si_blocks - 1);
420 if (!bh) { 418 if (!bh) {
421 printf("Last block not available: %lu\n", info->si_blocks - 1); 419 printf("Last block not available: %lu\n", info->si_blocks - 1);
422 iput(inode);
423 ret = -EIO; 420 ret = -EIO;
424 kfree(info->si_imap); 421 goto out3;
425 goto out;
426 } 422 }
427 brelse(bh); 423 brelse(bh);
428 424
@@ -459,11 +455,8 @@ static int bfs_fill_super(struct super_block *s, void *data, int silent)
459 printf("Inode 0x%08x corrupted\n", i); 455 printf("Inode 0x%08x corrupted\n", i);
460 456
461 brelse(bh); 457 brelse(bh);
462 s->s_root = NULL; 458 ret = -EIO;
463 kfree(info->si_imap); 459 goto out3;
464 kfree(info);
465 s->s_fs_info = NULL;
466 return -EIO;
467 } 460 }
468 461
469 if (!di->i_ino) { 462 if (!di->i_ino) {
@@ -483,11 +476,17 @@ static int bfs_fill_super(struct super_block *s, void *data, int silent)
483 s->s_dirt = 1; 476 s->s_dirt = 1;
484 } 477 }
485 dump_imap("read_super", s); 478 dump_imap("read_super", s);
486 mutex_init(&info->bfs_lock);
487 return 0; 479 return 0;
488 480
481out3:
482 dput(s->s_root);
483 s->s_root = NULL;
484out2:
485 kfree(info->si_imap);
486out1:
487 brelse(info->si_sbh);
489out: 488out:
490 brelse(bh); 489 mutex_destroy(&info->bfs_lock);
491 kfree(info); 490 kfree(info);
492 s->s_fs_info = NULL; 491 s->s_fs_info = NULL;
493 return ret; 492 return ret;
diff --git a/fs/binfmt_aout.c b/fs/binfmt_aout.c
index 346b69405363..fdd397099172 100644
--- a/fs/binfmt_aout.c
+++ b/fs/binfmt_aout.c
@@ -264,6 +264,7 @@ static int load_aout_binary(struct linux_binprm * bprm, struct pt_regs * regs)
264#else 264#else
265 set_personality(PER_LINUX); 265 set_personality(PER_LINUX);
266#endif 266#endif
267 setup_new_exec(bprm);
267 268
268 current->mm->end_code = ex.a_text + 269 current->mm->end_code = ex.a_text +
269 (current->mm->start_code = N_TXTADDR(ex)); 270 (current->mm->start_code = N_TXTADDR(ex));
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index edd90c49003c..fd5b2ea5d299 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -662,27 +662,6 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
662 if (elf_interpreter[elf_ppnt->p_filesz - 1] != '\0') 662 if (elf_interpreter[elf_ppnt->p_filesz - 1] != '\0')
663 goto out_free_interp; 663 goto out_free_interp;
664 664
665 /*
666 * The early SET_PERSONALITY here is so that the lookup
667 * for the interpreter happens in the namespace of the
668 * to-be-execed image. SET_PERSONALITY can select an
669 * alternate root.
670 *
671 * However, SET_PERSONALITY is NOT allowed to switch
672 * this task into the new images's memory mapping
673 * policy - that is, TASK_SIZE must still evaluate to
674 * that which is appropriate to the execing application.
675 * This is because exit_mmap() needs to have TASK_SIZE
676 * evaluate to the size of the old image.
677 *
678 * So if (say) a 64-bit application is execing a 32-bit
679 * application it is the architecture's responsibility
680 * to defer changing the value of TASK_SIZE until the
681 * switch really is going to happen - do this in
682 * flush_thread(). - akpm
683 */
684 SET_PERSONALITY(loc->elf_ex);
685
686 interpreter = open_exec(elf_interpreter); 665 interpreter = open_exec(elf_interpreter);
687 retval = PTR_ERR(interpreter); 666 retval = PTR_ERR(interpreter);
688 if (IS_ERR(interpreter)) 667 if (IS_ERR(interpreter))
@@ -730,9 +709,6 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
730 /* Verify the interpreter has a valid arch */ 709 /* Verify the interpreter has a valid arch */
731 if (!elf_check_arch(&loc->interp_elf_ex)) 710 if (!elf_check_arch(&loc->interp_elf_ex))
732 goto out_free_dentry; 711 goto out_free_dentry;
733 } else {
734 /* Executables without an interpreter also need a personality */
735 SET_PERSONALITY(loc->elf_ex);
736 } 712 }
737 713
738 /* Flush all traces of the currently running executable */ 714 /* Flush all traces of the currently running executable */
@@ -752,7 +728,8 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
752 728
753 if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space) 729 if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space)
754 current->flags |= PF_RANDOMIZE; 730 current->flags |= PF_RANDOMIZE;
755 arch_pick_mmap_layout(current->mm); 731
732 setup_new_exec(bprm);
756 733
757 /* Do this so that we can load the interpreter, if need be. We will 734 /* Do this so that we can load the interpreter, if need be. We will
758 change some of these later */ 735 change some of these later */
diff --git a/fs/binfmt_elf_fdpic.c b/fs/binfmt_elf_fdpic.c
index c25256a5c5b0..18d77297ccc8 100644
--- a/fs/binfmt_elf_fdpic.c
+++ b/fs/binfmt_elf_fdpic.c
@@ -171,6 +171,9 @@ static int load_elf_fdpic_binary(struct linux_binprm *bprm,
171#ifdef ELF_FDPIC_PLAT_INIT 171#ifdef ELF_FDPIC_PLAT_INIT
172 unsigned long dynaddr; 172 unsigned long dynaddr;
173#endif 173#endif
174#ifndef CONFIG_MMU
175 unsigned long stack_prot;
176#endif
174 struct file *interpreter = NULL; /* to shut gcc up */ 177 struct file *interpreter = NULL; /* to shut gcc up */
175 char *interpreter_name = NULL; 178 char *interpreter_name = NULL;
176 int executable_stack; 179 int executable_stack;
@@ -316,6 +319,11 @@ static int load_elf_fdpic_binary(struct linux_binprm *bprm,
316 * defunct, deceased, etc. after this point we have to exit via 319 * defunct, deceased, etc. after this point we have to exit via
317 * error_kill */ 320 * error_kill */
318 set_personality(PER_LINUX_FDPIC); 321 set_personality(PER_LINUX_FDPIC);
322 if (elf_read_implies_exec(&exec_params.hdr, executable_stack))
323 current->personality |= READ_IMPLIES_EXEC;
324
325 setup_new_exec(bprm);
326
319 set_binfmt(&elf_fdpic_format); 327 set_binfmt(&elf_fdpic_format);
320 328
321 current->mm->start_code = 0; 329 current->mm->start_code = 0;
@@ -377,9 +385,13 @@ static int load_elf_fdpic_binary(struct linux_binprm *bprm,
377 if (stack_size < PAGE_SIZE * 2) 385 if (stack_size < PAGE_SIZE * 2)
378 stack_size = PAGE_SIZE * 2; 386 stack_size = PAGE_SIZE * 2;
379 387
388 stack_prot = PROT_READ | PROT_WRITE;
389 if (executable_stack == EXSTACK_ENABLE_X ||
390 (executable_stack == EXSTACK_DEFAULT && VM_STACK_FLAGS & VM_EXEC))
391 stack_prot |= PROT_EXEC;
392
380 down_write(&current->mm->mmap_sem); 393 down_write(&current->mm->mmap_sem);
381 current->mm->start_brk = do_mmap(NULL, 0, stack_size, 394 current->mm->start_brk = do_mmap(NULL, 0, stack_size, stack_prot,
382 PROT_READ | PROT_WRITE | PROT_EXEC,
383 MAP_PRIVATE | MAP_ANONYMOUS | 395 MAP_PRIVATE | MAP_ANONYMOUS |
384 MAP_UNINITIALIZED | MAP_GROWSDOWN, 396 MAP_UNINITIALIZED | MAP_GROWSDOWN,
385 0); 397 0);
@@ -1798,11 +1810,11 @@ static int elf_fdpic_core_dump(struct coredump_params *cprm)
1798 ELF_CORE_WRITE_EXTRA_DATA; 1810 ELF_CORE_WRITE_EXTRA_DATA;
1799#endif 1811#endif
1800 1812
1801 if (file->f_pos != offset) { 1813 if (cprm->file->f_pos != offset) {
1802 /* Sanity check */ 1814 /* Sanity check */
1803 printk(KERN_WARNING 1815 printk(KERN_WARNING
1804 "elf_core_dump: file->f_pos (%lld) != offset (%lld)\n", 1816 "elf_core_dump: file->f_pos (%lld) != offset (%lld)\n",
1805 file->f_pos, offset); 1817 cprm->file->f_pos, offset);
1806 } 1818 }
1807 1819
1808end_coredump: 1820end_coredump:
diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c
index d4a00ea1054c..42c6b4a54445 100644
--- a/fs/binfmt_flat.c
+++ b/fs/binfmt_flat.c
@@ -519,6 +519,7 @@ static int load_flat_file(struct linux_binprm * bprm,
519 519
520 /* OK, This is the point of no return */ 520 /* OK, This is the point of no return */
521 set_personality(PER_LINUX_32BIT); 521 set_personality(PER_LINUX_32BIT);
522 setup_new_exec(bprm);
522 } 523 }
523 524
524 /* 525 /*
diff --git a/fs/binfmt_som.c b/fs/binfmt_som.c
index 2a9b5330cc5e..cc8560f6c9b0 100644
--- a/fs/binfmt_som.c
+++ b/fs/binfmt_som.c
@@ -227,6 +227,7 @@ load_som_binary(struct linux_binprm * bprm, struct pt_regs * regs)
227 /* OK, This is the point of no return */ 227 /* OK, This is the point of no return */
228 current->flags &= ~PF_FORKNOEXEC; 228 current->flags &= ~PF_FORKNOEXEC;
229 current->personality = PER_HPUX; 229 current->personality = PER_HPUX;
230 setup_new_exec(bprm);
230 231
231 /* Set the task size for HP-UX processes such that 232 /* Set the task size for HP-UX processes such that
232 * the gateway page is outside the address space. 233 * the gateway page is outside the address space.
diff --git a/fs/bio-integrity.c b/fs/bio-integrity.c
index 49a34e7f7306..a16f29e888cd 100644
--- a/fs/bio-integrity.c
+++ b/fs/bio-integrity.c
@@ -61,7 +61,7 @@ static inline unsigned int vecs_to_idx(unsigned int nr)
61 61
62static inline int use_bip_pool(unsigned int idx) 62static inline int use_bip_pool(unsigned int idx)
63{ 63{
64 if (idx == BIOVEC_NR_POOLS) 64 if (idx == BIOVEC_MAX_IDX)
65 return 1; 65 return 1;
66 66
67 return 0; 67 return 0;
@@ -95,6 +95,7 @@ struct bio_integrity_payload *bio_integrity_alloc_bioset(struct bio *bio,
95 95
96 /* Use mempool if lower order alloc failed or max vecs were requested */ 96 /* Use mempool if lower order alloc failed or max vecs were requested */
97 if (bip == NULL) { 97 if (bip == NULL) {
98 idx = BIOVEC_MAX_IDX; /* so we free the payload properly later */
98 bip = mempool_alloc(bs->bio_integrity_pool, gfp_mask); 99 bip = mempool_alloc(bs->bio_integrity_pool, gfp_mask);
99 100
100 if (unlikely(bip == NULL)) { 101 if (unlikely(bip == NULL)) {
diff --git a/fs/bio.c b/fs/bio.c
index 76e6713abf94..88094afc29ea 100644
--- a/fs/bio.c
+++ b/fs/bio.c
@@ -78,7 +78,7 @@ static struct kmem_cache *bio_find_or_create_slab(unsigned int extra_size)
78 78
79 i = 0; 79 i = 0;
80 while (i < bio_slab_nr) { 80 while (i < bio_slab_nr) {
81 struct bio_slab *bslab = &bio_slabs[i]; 81 bslab = &bio_slabs[i];
82 82
83 if (!bslab->slab && entry == -1) 83 if (!bslab->slab && entry == -1)
84 entry = i; 84 entry = i;
@@ -542,13 +542,18 @@ static int __bio_add_page(struct request_queue *q, struct bio *bio, struct page
542 542
543 if (page == prev->bv_page && 543 if (page == prev->bv_page &&
544 offset == prev->bv_offset + prev->bv_len) { 544 offset == prev->bv_offset + prev->bv_len) {
545 unsigned int prev_bv_len = prev->bv_len;
545 prev->bv_len += len; 546 prev->bv_len += len;
546 547
547 if (q->merge_bvec_fn) { 548 if (q->merge_bvec_fn) {
548 struct bvec_merge_data bvm = { 549 struct bvec_merge_data bvm = {
550 /* prev_bvec is already charged in
551 bi_size, discharge it in order to
552 simulate merging updated prev_bvec
553 as new bvec. */
549 .bi_bdev = bio->bi_bdev, 554 .bi_bdev = bio->bi_bdev,
550 .bi_sector = bio->bi_sector, 555 .bi_sector = bio->bi_sector,
551 .bi_size = bio->bi_size, 556 .bi_size = bio->bi_size - prev_bv_len,
552 .bi_rw = bio->bi_rw, 557 .bi_rw = bio->bi_rw,
553 }; 558 };
554 559
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 73d6a735b8f3..d11d0289f3d2 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -246,7 +246,8 @@ struct super_block *freeze_bdev(struct block_device *bdev)
246 if (!sb) 246 if (!sb)
247 goto out; 247 goto out;
248 if (sb->s_flags & MS_RDONLY) { 248 if (sb->s_flags & MS_RDONLY) {
249 deactivate_locked_super(sb); 249 sb->s_frozen = SB_FREEZE_TRANS;
250 up_write(&sb->s_umount);
250 mutex_unlock(&bdev->bd_fsfreeze_mutex); 251 mutex_unlock(&bdev->bd_fsfreeze_mutex);
251 return sb; 252 return sb;
252 } 253 }
@@ -307,7 +308,7 @@ int thaw_bdev(struct block_device *bdev, struct super_block *sb)
307 BUG_ON(sb->s_bdev != bdev); 308 BUG_ON(sb->s_bdev != bdev);
308 down_write(&sb->s_umount); 309 down_write(&sb->s_umount);
309 if (sb->s_flags & MS_RDONLY) 310 if (sb->s_flags & MS_RDONLY)
310 goto out_deactivate; 311 goto out_unfrozen;
311 312
312 if (sb->s_op->unfreeze_fs) { 313 if (sb->s_op->unfreeze_fs) {
313 error = sb->s_op->unfreeze_fs(sb); 314 error = sb->s_op->unfreeze_fs(sb);
@@ -321,11 +322,11 @@ int thaw_bdev(struct block_device *bdev, struct super_block *sb)
321 } 322 }
322 } 323 }
323 324
325out_unfrozen:
324 sb->s_frozen = SB_UNFROZEN; 326 sb->s_frozen = SB_UNFROZEN;
325 smp_wmb(); 327 smp_wmb();
326 wake_up(&sb->s_wait_unfrozen); 328 wake_up(&sb->s_wait_unfrozen);
327 329
328out_deactivate:
329 if (sb) 330 if (sb)
330 deactivate_locked_super(sb); 331 deactivate_locked_super(sb);
331out_unlock: 332out_unlock:
diff --git a/fs/btrfs/acl.c b/fs/btrfs/acl.c
index 2e9e69987a82..6df6d6ed74fd 100644
--- a/fs/btrfs/acl.c
+++ b/fs/btrfs/acl.c
@@ -112,12 +112,14 @@ static int btrfs_set_acl(struct btrfs_trans_handle *trans,
112 switch (type) { 112 switch (type) {
113 case ACL_TYPE_ACCESS: 113 case ACL_TYPE_ACCESS:
114 mode = inode->i_mode; 114 mode = inode->i_mode;
115 ret = posix_acl_equiv_mode(acl, &mode);
116 if (ret < 0)
117 return ret;
118 ret = 0;
119 inode->i_mode = mode;
120 name = POSIX_ACL_XATTR_ACCESS; 115 name = POSIX_ACL_XATTR_ACCESS;
116 if (acl) {
117 ret = posix_acl_equiv_mode(acl, &mode);
118 if (ret < 0)
119 return ret;
120 inode->i_mode = mode;
121 }
122 ret = 0;
121 break; 123 break;
122 case ACL_TYPE_DEFAULT: 124 case ACL_TYPE_DEFAULT:
123 if (!S_ISDIR(inode->i_mode)) 125 if (!S_ISDIR(inode->i_mode))
@@ -242,6 +244,7 @@ int btrfs_init_acl(struct btrfs_trans_handle *trans,
242 ACL_TYPE_ACCESS); 244 ACL_TYPE_ACCESS);
243 } 245 }
244 } 246 }
247 posix_acl_release(clone);
245 } 248 }
246failed: 249failed:
247 posix_acl_release(acl); 250 posix_acl_release(acl);
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index 9f806dd04c27..2aa8ec6a0981 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -1161,6 +1161,7 @@ struct btrfs_root {
1161#define BTRFS_MOUNT_SSD_SPREAD (1 << 8) 1161#define BTRFS_MOUNT_SSD_SPREAD (1 << 8)
1162#define BTRFS_MOUNT_NOSSD (1 << 9) 1162#define BTRFS_MOUNT_NOSSD (1 << 9)
1163#define BTRFS_MOUNT_DISCARD (1 << 10) 1163#define BTRFS_MOUNT_DISCARD (1 << 10)
1164#define BTRFS_MOUNT_FORCE_COMPRESS (1 << 11)
1164 1165
1165#define btrfs_clear_opt(o, opt) ((o) &= ~BTRFS_MOUNT_##opt) 1166#define btrfs_clear_opt(o, opt) ((o) &= ~BTRFS_MOUNT_##opt)
1166#define btrfs_set_opt(o, opt) ((o) |= BTRFS_MOUNT_##opt) 1167#define btrfs_set_opt(o, opt) ((o) |= BTRFS_MOUNT_##opt)
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 009e3bd18f23..2b59201b955c 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -1982,7 +1982,12 @@ struct btrfs_root *open_ctree(struct super_block *sb,
1982 1982
1983 if (!(sb->s_flags & MS_RDONLY)) { 1983 if (!(sb->s_flags & MS_RDONLY)) {
1984 ret = btrfs_recover_relocation(tree_root); 1984 ret = btrfs_recover_relocation(tree_root);
1985 BUG_ON(ret); 1985 if (ret < 0) {
1986 printk(KERN_WARNING
1987 "btrfs: failed to recover relocation\n");
1988 err = -EINVAL;
1989 goto fail_trans_kthread;
1990 }
1986 } 1991 }
1987 1992
1988 location.objectid = BTRFS_FS_TREE_OBJECTID; 1993 location.objectid = BTRFS_FS_TREE_OBJECTID;
@@ -1993,6 +1998,12 @@ struct btrfs_root *open_ctree(struct super_block *sb,
1993 if (!fs_info->fs_root) 1998 if (!fs_info->fs_root)
1994 goto fail_trans_kthread; 1999 goto fail_trans_kthread;
1995 2000
2001 if (!(sb->s_flags & MS_RDONLY)) {
2002 down_read(&fs_info->cleanup_work_sem);
2003 btrfs_orphan_cleanup(fs_info->fs_root);
2004 up_read(&fs_info->cleanup_work_sem);
2005 }
2006
1996 return tree_root; 2007 return tree_root;
1997 2008
1998fail_trans_kthread: 2009fail_trans_kthread:
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 56e50137d0e6..559f72489b3b 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -83,6 +83,17 @@ static int block_group_bits(struct btrfs_block_group_cache *cache, u64 bits)
83 return (cache->flags & bits) == bits; 83 return (cache->flags & bits) == bits;
84} 84}
85 85
86void btrfs_get_block_group(struct btrfs_block_group_cache *cache)
87{
88 atomic_inc(&cache->count);
89}
90
91void btrfs_put_block_group(struct btrfs_block_group_cache *cache)
92{
93 if (atomic_dec_and_test(&cache->count))
94 kfree(cache);
95}
96
86/* 97/*
87 * this adds the block group to the fs_info rb tree for the block group 98 * this adds the block group to the fs_info rb tree for the block group
88 * cache 99 * cache
@@ -156,7 +167,7 @@ block_group_cache_tree_search(struct btrfs_fs_info *info, u64 bytenr,
156 } 167 }
157 } 168 }
158 if (ret) 169 if (ret)
159 atomic_inc(&ret->count); 170 btrfs_get_block_group(ret);
160 spin_unlock(&info->block_group_cache_lock); 171 spin_unlock(&info->block_group_cache_lock);
161 172
162 return ret; 173 return ret;
@@ -407,6 +418,8 @@ err:
407 418
408 put_caching_control(caching_ctl); 419 put_caching_control(caching_ctl);
409 atomic_dec(&block_group->space_info->caching_threads); 420 atomic_dec(&block_group->space_info->caching_threads);
421 btrfs_put_block_group(block_group);
422
410 return 0; 423 return 0;
411} 424}
412 425
@@ -447,6 +460,7 @@ static int cache_block_group(struct btrfs_block_group_cache *cache)
447 up_write(&fs_info->extent_commit_sem); 460 up_write(&fs_info->extent_commit_sem);
448 461
449 atomic_inc(&cache->space_info->caching_threads); 462 atomic_inc(&cache->space_info->caching_threads);
463 btrfs_get_block_group(cache);
450 464
451 tsk = kthread_run(caching_kthread, cache, "btrfs-cache-%llu\n", 465 tsk = kthread_run(caching_kthread, cache, "btrfs-cache-%llu\n",
452 cache->key.objectid); 466 cache->key.objectid);
@@ -486,12 +500,6 @@ struct btrfs_block_group_cache *btrfs_lookup_block_group(
486 return cache; 500 return cache;
487} 501}
488 502
489void btrfs_put_block_group(struct btrfs_block_group_cache *cache)
490{
491 if (atomic_dec_and_test(&cache->count))
492 kfree(cache);
493}
494
495static struct btrfs_space_info *__find_space_info(struct btrfs_fs_info *info, 503static struct btrfs_space_info *__find_space_info(struct btrfs_fs_info *info,
496 u64 flags) 504 u64 flags)
497{ 505{
@@ -2582,7 +2590,7 @@ next_block_group(struct btrfs_root *root,
2582 if (node) { 2590 if (node) {
2583 cache = rb_entry(node, struct btrfs_block_group_cache, 2591 cache = rb_entry(node, struct btrfs_block_group_cache,
2584 cache_node); 2592 cache_node);
2585 atomic_inc(&cache->count); 2593 btrfs_get_block_group(cache);
2586 } else 2594 } else
2587 cache = NULL; 2595 cache = NULL;
2588 spin_unlock(&root->fs_info->block_group_cache_lock); 2596 spin_unlock(&root->fs_info->block_group_cache_lock);
@@ -4227,7 +4235,7 @@ search:
4227 u64 offset; 4235 u64 offset;
4228 int cached; 4236 int cached;
4229 4237
4230 atomic_inc(&block_group->count); 4238 btrfs_get_block_group(block_group);
4231 search_start = block_group->key.objectid; 4239 search_start = block_group->key.objectid;
4232 4240
4233have_block_group: 4241have_block_group:
@@ -4315,7 +4323,7 @@ have_block_group:
4315 4323
4316 btrfs_put_block_group(block_group); 4324 btrfs_put_block_group(block_group);
4317 block_group = last_ptr->block_group; 4325 block_group = last_ptr->block_group;
4318 atomic_inc(&block_group->count); 4326 btrfs_get_block_group(block_group);
4319 spin_unlock(&last_ptr->lock); 4327 spin_unlock(&last_ptr->lock);
4320 spin_unlock(&last_ptr->refill_lock); 4328 spin_unlock(&last_ptr->refill_lock);
4321 4329
@@ -5394,10 +5402,6 @@ static noinline int walk_down_tree(struct btrfs_trans_handle *trans,
5394 int ret; 5402 int ret;
5395 5403
5396 while (level >= 0) { 5404 while (level >= 0) {
5397 if (path->slots[level] >=
5398 btrfs_header_nritems(path->nodes[level]))
5399 break;
5400
5401 ret = walk_down_proc(trans, root, path, wc, lookup_info); 5405 ret = walk_down_proc(trans, root, path, wc, lookup_info);
5402 if (ret > 0) 5406 if (ret > 0)
5403 break; 5407 break;
@@ -5405,6 +5409,10 @@ static noinline int walk_down_tree(struct btrfs_trans_handle *trans,
5405 if (level == 0) 5409 if (level == 0)
5406 break; 5410 break;
5407 5411
5412 if (path->slots[level] >=
5413 btrfs_header_nritems(path->nodes[level]))
5414 break;
5415
5408 ret = do_walk_down(trans, root, path, wc, &lookup_info); 5416 ret = do_walk_down(trans, root, path, wc, &lookup_info);
5409 if (ret > 0) { 5417 if (ret > 0) {
5410 path->slots[level]++; 5418 path->slots[level]++;
@@ -7395,9 +7403,7 @@ int btrfs_free_block_groups(struct btrfs_fs_info *info)
7395 wait_block_group_cache_done(block_group); 7403 wait_block_group_cache_done(block_group);
7396 7404
7397 btrfs_remove_free_space_cache(block_group); 7405 btrfs_remove_free_space_cache(block_group);
7398 7406 btrfs_put_block_group(block_group);
7399 WARN_ON(atomic_read(&block_group->count) != 1);
7400 kfree(block_group);
7401 7407
7402 spin_lock(&info->block_group_cache_lock); 7408 spin_lock(&info->block_group_cache_lock);
7403 } 7409 }
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 96577e8bf9fd..b177ed319612 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -3165,10 +3165,9 @@ struct extent_buffer *alloc_extent_buffer(struct extent_io_tree *tree,
3165 spin_unlock(&tree->buffer_lock); 3165 spin_unlock(&tree->buffer_lock);
3166 goto free_eb; 3166 goto free_eb;
3167 } 3167 }
3168 spin_unlock(&tree->buffer_lock);
3169
3170 /* add one reference for the tree */ 3168 /* add one reference for the tree */
3171 atomic_inc(&eb->refs); 3169 atomic_inc(&eb->refs);
3170 spin_unlock(&tree->buffer_lock);
3172 return eb; 3171 return eb;
3173 3172
3174free_eb: 3173free_eb:
diff --git a/fs/btrfs/extent_map.c b/fs/btrfs/extent_map.c
index 46bea0f4dc7b..428fcac45f90 100644
--- a/fs/btrfs/extent_map.c
+++ b/fs/btrfs/extent_map.c
@@ -155,20 +155,6 @@ static struct rb_node *__tree_search(struct rb_root *root, u64 offset,
155 return NULL; 155 return NULL;
156} 156}
157 157
158/*
159 * look for an offset in the tree, and if it can't be found, return
160 * the first offset we can find smaller than 'offset'.
161 */
162static inline struct rb_node *tree_search(struct rb_root *root, u64 offset)
163{
164 struct rb_node *prev;
165 struct rb_node *ret;
166 ret = __tree_search(root, offset, &prev, NULL);
167 if (!ret)
168 return prev;
169 return ret;
170}
171
172/* check to see if two extent_map structs are adjacent and safe to merge */ 158/* check to see if two extent_map structs are adjacent and safe to merge */
173static int mergable_maps(struct extent_map *prev, struct extent_map *next) 159static int mergable_maps(struct extent_map *prev, struct extent_map *next)
174{ 160{
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index feaa13b105d9..6ed434ac037f 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -506,7 +506,8 @@ next_slot:
506} 506}
507 507
508static int extent_mergeable(struct extent_buffer *leaf, int slot, 508static int extent_mergeable(struct extent_buffer *leaf, int slot,
509 u64 objectid, u64 bytenr, u64 *start, u64 *end) 509 u64 objectid, u64 bytenr, u64 orig_offset,
510 u64 *start, u64 *end)
510{ 511{
511 struct btrfs_file_extent_item *fi; 512 struct btrfs_file_extent_item *fi;
512 struct btrfs_key key; 513 struct btrfs_key key;
@@ -522,6 +523,7 @@ static int extent_mergeable(struct extent_buffer *leaf, int slot,
522 fi = btrfs_item_ptr(leaf, slot, struct btrfs_file_extent_item); 523 fi = btrfs_item_ptr(leaf, slot, struct btrfs_file_extent_item);
523 if (btrfs_file_extent_type(leaf, fi) != BTRFS_FILE_EXTENT_REG || 524 if (btrfs_file_extent_type(leaf, fi) != BTRFS_FILE_EXTENT_REG ||
524 btrfs_file_extent_disk_bytenr(leaf, fi) != bytenr || 525 btrfs_file_extent_disk_bytenr(leaf, fi) != bytenr ||
526 btrfs_file_extent_offset(leaf, fi) != key.offset - orig_offset ||
525 btrfs_file_extent_compression(leaf, fi) || 527 btrfs_file_extent_compression(leaf, fi) ||
526 btrfs_file_extent_encryption(leaf, fi) || 528 btrfs_file_extent_encryption(leaf, fi) ||
527 btrfs_file_extent_other_encoding(leaf, fi)) 529 btrfs_file_extent_other_encoding(leaf, fi))
@@ -561,6 +563,7 @@ int btrfs_mark_extent_written(struct btrfs_trans_handle *trans,
561 u64 split; 563 u64 split;
562 int del_nr = 0; 564 int del_nr = 0;
563 int del_slot = 0; 565 int del_slot = 0;
566 int recow;
564 int ret; 567 int ret;
565 568
566 btrfs_drop_extent_cache(inode, start, end - 1, 0); 569 btrfs_drop_extent_cache(inode, start, end - 1, 0);
@@ -568,6 +571,7 @@ int btrfs_mark_extent_written(struct btrfs_trans_handle *trans,
568 path = btrfs_alloc_path(); 571 path = btrfs_alloc_path();
569 BUG_ON(!path); 572 BUG_ON(!path);
570again: 573again:
574 recow = 0;
571 split = start; 575 split = start;
572 key.objectid = inode->i_ino; 576 key.objectid = inode->i_ino;
573 key.type = BTRFS_EXTENT_DATA_KEY; 577 key.type = BTRFS_EXTENT_DATA_KEY;
@@ -591,12 +595,60 @@ again:
591 bytenr = btrfs_file_extent_disk_bytenr(leaf, fi); 595 bytenr = btrfs_file_extent_disk_bytenr(leaf, fi);
592 num_bytes = btrfs_file_extent_disk_num_bytes(leaf, fi); 596 num_bytes = btrfs_file_extent_disk_num_bytes(leaf, fi);
593 orig_offset = key.offset - btrfs_file_extent_offset(leaf, fi); 597 orig_offset = key.offset - btrfs_file_extent_offset(leaf, fi);
598 memcpy(&new_key, &key, sizeof(new_key));
599
600 if (start == key.offset && end < extent_end) {
601 other_start = 0;
602 other_end = start;
603 if (extent_mergeable(leaf, path->slots[0] - 1,
604 inode->i_ino, bytenr, orig_offset,
605 &other_start, &other_end)) {
606 new_key.offset = end;
607 btrfs_set_item_key_safe(trans, root, path, &new_key);
608 fi = btrfs_item_ptr(leaf, path->slots[0],
609 struct btrfs_file_extent_item);
610 btrfs_set_file_extent_num_bytes(leaf, fi,
611 extent_end - end);
612 btrfs_set_file_extent_offset(leaf, fi,
613 end - orig_offset);
614 fi = btrfs_item_ptr(leaf, path->slots[0] - 1,
615 struct btrfs_file_extent_item);
616 btrfs_set_file_extent_num_bytes(leaf, fi,
617 end - other_start);
618 btrfs_mark_buffer_dirty(leaf);
619 goto out;
620 }
621 }
622
623 if (start > key.offset && end == extent_end) {
624 other_start = end;
625 other_end = 0;
626 if (extent_mergeable(leaf, path->slots[0] + 1,
627 inode->i_ino, bytenr, orig_offset,
628 &other_start, &other_end)) {
629 fi = btrfs_item_ptr(leaf, path->slots[0],
630 struct btrfs_file_extent_item);
631 btrfs_set_file_extent_num_bytes(leaf, fi,
632 start - key.offset);
633 path->slots[0]++;
634 new_key.offset = start;
635 btrfs_set_item_key_safe(trans, root, path, &new_key);
636
637 fi = btrfs_item_ptr(leaf, path->slots[0],
638 struct btrfs_file_extent_item);
639 btrfs_set_file_extent_num_bytes(leaf, fi,
640 other_end - start);
641 btrfs_set_file_extent_offset(leaf, fi,
642 start - orig_offset);
643 btrfs_mark_buffer_dirty(leaf);
644 goto out;
645 }
646 }
594 647
595 while (start > key.offset || end < extent_end) { 648 while (start > key.offset || end < extent_end) {
596 if (key.offset == start) 649 if (key.offset == start)
597 split = end; 650 split = end;
598 651
599 memcpy(&new_key, &key, sizeof(new_key));
600 new_key.offset = split; 652 new_key.offset = split;
601 ret = btrfs_duplicate_item(trans, root, path, &new_key); 653 ret = btrfs_duplicate_item(trans, root, path, &new_key);
602 if (ret == -EAGAIN) { 654 if (ret == -EAGAIN) {
@@ -631,15 +683,18 @@ again:
631 path->slots[0]--; 683 path->slots[0]--;
632 extent_end = end; 684 extent_end = end;
633 } 685 }
686 recow = 1;
634 } 687 }
635 688
636 fi = btrfs_item_ptr(leaf, path->slots[0],
637 struct btrfs_file_extent_item);
638
639 other_start = end; 689 other_start = end;
640 other_end = 0; 690 other_end = 0;
641 if (extent_mergeable(leaf, path->slots[0] + 1, inode->i_ino, 691 if (extent_mergeable(leaf, path->slots[0] + 1,
642 bytenr, &other_start, &other_end)) { 692 inode->i_ino, bytenr, orig_offset,
693 &other_start, &other_end)) {
694 if (recow) {
695 btrfs_release_path(root, path);
696 goto again;
697 }
643 extent_end = other_end; 698 extent_end = other_end;
644 del_slot = path->slots[0] + 1; 699 del_slot = path->slots[0] + 1;
645 del_nr++; 700 del_nr++;
@@ -650,8 +705,13 @@ again:
650 } 705 }
651 other_start = 0; 706 other_start = 0;
652 other_end = start; 707 other_end = start;
653 if (extent_mergeable(leaf, path->slots[0] - 1, inode->i_ino, 708 if (extent_mergeable(leaf, path->slots[0] - 1,
654 bytenr, &other_start, &other_end)) { 709 inode->i_ino, bytenr, orig_offset,
710 &other_start, &other_end)) {
711 if (recow) {
712 btrfs_release_path(root, path);
713 goto again;
714 }
655 key.offset = other_start; 715 key.offset = other_start;
656 del_slot = path->slots[0]; 716 del_slot = path->slots[0];
657 del_nr++; 717 del_nr++;
@@ -661,21 +721,23 @@ again:
661 BUG_ON(ret); 721 BUG_ON(ret);
662 } 722 }
663 if (del_nr == 0) { 723 if (del_nr == 0) {
724 fi = btrfs_item_ptr(leaf, path->slots[0],
725 struct btrfs_file_extent_item);
664 btrfs_set_file_extent_type(leaf, fi, 726 btrfs_set_file_extent_type(leaf, fi,
665 BTRFS_FILE_EXTENT_REG); 727 BTRFS_FILE_EXTENT_REG);
666 btrfs_mark_buffer_dirty(leaf); 728 btrfs_mark_buffer_dirty(leaf);
667 goto out; 729 } else {
668 } 730 fi = btrfs_item_ptr(leaf, del_slot - 1,
669 731 struct btrfs_file_extent_item);
670 fi = btrfs_item_ptr(leaf, del_slot - 1, 732 btrfs_set_file_extent_type(leaf, fi,
671 struct btrfs_file_extent_item); 733 BTRFS_FILE_EXTENT_REG);
672 btrfs_set_file_extent_type(leaf, fi, BTRFS_FILE_EXTENT_REG); 734 btrfs_set_file_extent_num_bytes(leaf, fi,
673 btrfs_set_file_extent_num_bytes(leaf, fi, 735 extent_end - key.offset);
674 extent_end - key.offset); 736 btrfs_mark_buffer_dirty(leaf);
675 btrfs_mark_buffer_dirty(leaf);
676 737
677 ret = btrfs_del_items(trans, root, path, del_slot, del_nr); 738 ret = btrfs_del_items(trans, root, path, del_slot, del_nr);
678 BUG_ON(ret); 739 BUG_ON(ret);
740 }
679out: 741out:
680 btrfs_free_path(path); 742 btrfs_free_path(path);
681 return 0; 743 return 0;
@@ -1073,7 +1135,7 @@ int btrfs_sync_file(struct file *file, struct dentry *dentry, int datasync)
1073 } 1135 }
1074 mutex_lock(&dentry->d_inode->i_mutex); 1136 mutex_lock(&dentry->d_inode->i_mutex);
1075out: 1137out:
1076 return ret > 0 ? EIO : ret; 1138 return ret > 0 ? -EIO : ret;
1077} 1139}
1078 1140
1079static const struct vm_operations_struct btrfs_file_vm_ops = { 1141static const struct vm_operations_struct btrfs_file_vm_ops = {
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 5440bab23635..4deb280f8969 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -483,7 +483,8 @@ again:
483 nr_pages_ret = 0; 483 nr_pages_ret = 0;
484 484
485 /* flag the file so we don't compress in the future */ 485 /* flag the file so we don't compress in the future */
486 BTRFS_I(inode)->flags |= BTRFS_INODE_NOCOMPRESS; 486 if (!btrfs_test_opt(root, FORCE_COMPRESS))
487 BTRFS_I(inode)->flags |= BTRFS_INODE_NOCOMPRESS;
487 } 488 }
488 if (will_compress) { 489 if (will_compress) {
489 *num_added += 1; 490 *num_added += 1;
@@ -1680,24 +1681,6 @@ static int insert_reserved_file_extent(struct btrfs_trans_handle *trans,
1680 * before we start the transaction. It limits the amount of btree 1681 * before we start the transaction. It limits the amount of btree
1681 * reads required while inside the transaction. 1682 * reads required while inside the transaction.
1682 */ 1683 */
1683static noinline void reada_csum(struct btrfs_root *root,
1684 struct btrfs_path *path,
1685 struct btrfs_ordered_extent *ordered_extent)
1686{
1687 struct btrfs_ordered_sum *sum;
1688 u64 bytenr;
1689
1690 sum = list_entry(ordered_extent->list.next, struct btrfs_ordered_sum,
1691 list);
1692 bytenr = sum->sums[0].bytenr;
1693
1694 /*
1695 * we don't care about the results, the point of this search is
1696 * just to get the btree leaves into ram
1697 */
1698 btrfs_lookup_csum(NULL, root->fs_info->csum_root, path, bytenr, 0);
1699}
1700
1701/* as ordered data IO finishes, this gets called so we can finish 1684/* as ordered data IO finishes, this gets called so we can finish
1702 * an ordered extent if the range of bytes in the file it covers are 1685 * an ordered extent if the range of bytes in the file it covers are
1703 * fully written. 1686 * fully written.
@@ -1708,7 +1691,6 @@ static int btrfs_finish_ordered_io(struct inode *inode, u64 start, u64 end)
1708 struct btrfs_trans_handle *trans; 1691 struct btrfs_trans_handle *trans;
1709 struct btrfs_ordered_extent *ordered_extent = NULL; 1692 struct btrfs_ordered_extent *ordered_extent = NULL;
1710 struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree; 1693 struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree;
1711 struct btrfs_path *path;
1712 int compressed = 0; 1694 int compressed = 0;
1713 int ret; 1695 int ret;
1714 1696
@@ -1716,32 +1698,9 @@ static int btrfs_finish_ordered_io(struct inode *inode, u64 start, u64 end)
1716 if (!ret) 1698 if (!ret)
1717 return 0; 1699 return 0;
1718 1700
1719 /* 1701 ordered_extent = btrfs_lookup_ordered_extent(inode, start);
1720 * before we join the transaction, try to do some of our IO.
1721 * This will limit the amount of IO that we have to do with
1722 * the transaction running. We're unlikely to need to do any
1723 * IO if the file extents are new, the disk_i_size checks
1724 * covers the most common case.
1725 */
1726 if (start < BTRFS_I(inode)->disk_i_size) {
1727 path = btrfs_alloc_path();
1728 if (path) {
1729 ret = btrfs_lookup_file_extent(NULL, root, path,
1730 inode->i_ino,
1731 start, 0);
1732 ordered_extent = btrfs_lookup_ordered_extent(inode,
1733 start);
1734 if (!list_empty(&ordered_extent->list)) {
1735 btrfs_release_path(root, path);
1736 reada_csum(root, path, ordered_extent);
1737 }
1738 btrfs_free_path(path);
1739 }
1740 }
1741
1742 if (!ordered_extent)
1743 ordered_extent = btrfs_lookup_ordered_extent(inode, start);
1744 BUG_ON(!ordered_extent); 1702 BUG_ON(!ordered_extent);
1703
1745 if (test_bit(BTRFS_ORDERED_NOCOW, &ordered_extent->flags)) { 1704 if (test_bit(BTRFS_ORDERED_NOCOW, &ordered_extent->flags)) {
1746 BUG_ON(!list_empty(&ordered_extent->list)); 1705 BUG_ON(!list_empty(&ordered_extent->list));
1747 ret = btrfs_ordered_update_i_size(inode, 0, ordered_extent); 1706 ret = btrfs_ordered_update_i_size(inode, 0, ordered_extent);
@@ -3995,7 +3954,11 @@ skip:
3995 3954
3996 /* Reached end of directory/root. Bump pos past the last item. */ 3955 /* Reached end of directory/root. Bump pos past the last item. */
3997 if (key_type == BTRFS_DIR_INDEX_KEY) 3956 if (key_type == BTRFS_DIR_INDEX_KEY)
3998 filp->f_pos = INT_LIMIT(off_t); 3957 /*
3958 * 32-bit glibc will use getdents64, but then strtol -
3959 * so the last number we can serve is this.
3960 */
3961 filp->f_pos = 0x7fffffff;
3999 else 3962 else
4000 filp->f_pos++; 3963 filp->f_pos++;
4001nopos: 3964nopos:
@@ -5789,7 +5752,7 @@ out_fail:
5789} 5752}
5790 5753
5791static int prealloc_file_range(struct inode *inode, u64 start, u64 end, 5754static int prealloc_file_range(struct inode *inode, u64 start, u64 end,
5792 u64 alloc_hint, int mode) 5755 u64 alloc_hint, int mode, loff_t actual_len)
5793{ 5756{
5794 struct btrfs_trans_handle *trans; 5757 struct btrfs_trans_handle *trans;
5795 struct btrfs_root *root = BTRFS_I(inode)->root; 5758 struct btrfs_root *root = BTRFS_I(inode)->root;
@@ -5798,6 +5761,7 @@ static int prealloc_file_range(struct inode *inode, u64 start, u64 end,
5798 u64 cur_offset = start; 5761 u64 cur_offset = start;
5799 u64 num_bytes = end - start; 5762 u64 num_bytes = end - start;
5800 int ret = 0; 5763 int ret = 0;
5764 u64 i_size;
5801 5765
5802 while (num_bytes > 0) { 5766 while (num_bytes > 0) {
5803 alloc_size = min(num_bytes, root->fs_info->max_extent); 5767 alloc_size = min(num_bytes, root->fs_info->max_extent);
@@ -5835,9 +5799,15 @@ static int prealloc_file_range(struct inode *inode, u64 start, u64 end,
5835 inode->i_ctime = CURRENT_TIME; 5799 inode->i_ctime = CURRENT_TIME;
5836 BTRFS_I(inode)->flags |= BTRFS_INODE_PREALLOC; 5800 BTRFS_I(inode)->flags |= BTRFS_INODE_PREALLOC;
5837 if (!(mode & FALLOC_FL_KEEP_SIZE) && 5801 if (!(mode & FALLOC_FL_KEEP_SIZE) &&
5838 cur_offset > inode->i_size) { 5802 (actual_len > inode->i_size) &&
5839 i_size_write(inode, cur_offset); 5803 (cur_offset > inode->i_size)) {
5840 btrfs_ordered_update_i_size(inode, cur_offset, NULL); 5804
5805 if (cur_offset > actual_len)
5806 i_size = actual_len;
5807 else
5808 i_size = cur_offset;
5809 i_size_write(inode, i_size);
5810 btrfs_ordered_update_i_size(inode, i_size, NULL);
5841 } 5811 }
5842 5812
5843 ret = btrfs_update_inode(trans, root, inode); 5813 ret = btrfs_update_inode(trans, root, inode);
@@ -5930,7 +5900,7 @@ static long btrfs_fallocate(struct inode *inode, int mode,
5930 !test_bit(EXTENT_FLAG_PREALLOC, &em->flags))) { 5900 !test_bit(EXTENT_FLAG_PREALLOC, &em->flags))) {
5931 ret = prealloc_file_range(inode, 5901 ret = prealloc_file_range(inode,
5932 cur_offset, last_byte, 5902 cur_offset, last_byte,
5933 alloc_hint, mode); 5903 alloc_hint, mode, offset+len);
5934 if (ret < 0) { 5904 if (ret < 0) {
5935 free_extent_map(em); 5905 free_extent_map(em);
5936 break; 5906 break;
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
index b10a49d4bc6a..5c2a9e78a949 100644
--- a/fs/btrfs/ordered-data.c
+++ b/fs/btrfs/ordered-data.c
@@ -626,6 +626,8 @@ int btrfs_ordered_update_i_size(struct inode *inode, u64 offset,
626 626
627 if (ordered) 627 if (ordered)
628 offset = entry_end(ordered); 628 offset = entry_end(ordered);
629 else
630 offset = ALIGN(offset, BTRFS_I(inode)->root->sectorsize);
629 631
630 mutex_lock(&tree->mutex); 632 mutex_lock(&tree->mutex);
631 disk_i_size = BTRFS_I(inode)->disk_i_size; 633 disk_i_size = BTRFS_I(inode)->disk_i_size;
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
index a9728680eca8..ab7ab5318745 100644
--- a/fs/btrfs/relocation.c
+++ b/fs/btrfs/relocation.c
@@ -3281,8 +3281,10 @@ static noinline_for_stack int relocate_block_group(struct reloc_control *rc)
3281 return -ENOMEM; 3281 return -ENOMEM;
3282 3282
3283 path = btrfs_alloc_path(); 3283 path = btrfs_alloc_path();
3284 if (!path) 3284 if (!path) {
3285 kfree(cluster);
3285 return -ENOMEM; 3286 return -ENOMEM;
3287 }
3286 3288
3287 rc->extents_found = 0; 3289 rc->extents_found = 0;
3288 rc->extents_skipped = 0; 3290 rc->extents_skipped = 0;
@@ -3762,7 +3764,8 @@ out:
3762 BTRFS_DATA_RELOC_TREE_OBJECTID); 3764 BTRFS_DATA_RELOC_TREE_OBJECTID);
3763 if (IS_ERR(fs_root)) 3765 if (IS_ERR(fs_root))
3764 err = PTR_ERR(fs_root); 3766 err = PTR_ERR(fs_root);
3765 btrfs_orphan_cleanup(fs_root); 3767 else
3768 btrfs_orphan_cleanup(fs_root);
3766 } 3769 }
3767 return err; 3770 return err;
3768} 3771}
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 3f9b45704fcd..8a1ea6e64575 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -66,7 +66,8 @@ enum {
66 Opt_degraded, Opt_subvol, Opt_device, Opt_nodatasum, Opt_nodatacow, 66 Opt_degraded, Opt_subvol, Opt_device, Opt_nodatasum, Opt_nodatacow,
67 Opt_max_extent, Opt_max_inline, Opt_alloc_start, Opt_nobarrier, 67 Opt_max_extent, Opt_max_inline, Opt_alloc_start, Opt_nobarrier,
68 Opt_ssd, Opt_nossd, Opt_ssd_spread, Opt_thread_pool, Opt_noacl, 68 Opt_ssd, Opt_nossd, Opt_ssd_spread, Opt_thread_pool, Opt_noacl,
69 Opt_compress, Opt_notreelog, Opt_ratio, Opt_flushoncommit, 69 Opt_compress, Opt_compress_force, Opt_notreelog, Opt_ratio,
70 Opt_flushoncommit,
70 Opt_discard, Opt_err, 71 Opt_discard, Opt_err,
71}; 72};
72 73
@@ -82,6 +83,7 @@ static match_table_t tokens = {
82 {Opt_alloc_start, "alloc_start=%s"}, 83 {Opt_alloc_start, "alloc_start=%s"},
83 {Opt_thread_pool, "thread_pool=%d"}, 84 {Opt_thread_pool, "thread_pool=%d"},
84 {Opt_compress, "compress"}, 85 {Opt_compress, "compress"},
86 {Opt_compress_force, "compress-force"},
85 {Opt_ssd, "ssd"}, 87 {Opt_ssd, "ssd"},
86 {Opt_ssd_spread, "ssd_spread"}, 88 {Opt_ssd_spread, "ssd_spread"},
87 {Opt_nossd, "nossd"}, 89 {Opt_nossd, "nossd"},
@@ -173,6 +175,11 @@ int btrfs_parse_options(struct btrfs_root *root, char *options)
173 printk(KERN_INFO "btrfs: use compression\n"); 175 printk(KERN_INFO "btrfs: use compression\n");
174 btrfs_set_opt(info->mount_opt, COMPRESS); 176 btrfs_set_opt(info->mount_opt, COMPRESS);
175 break; 177 break;
178 case Opt_compress_force:
179 printk(KERN_INFO "btrfs: forcing compression\n");
180 btrfs_set_opt(info->mount_opt, FORCE_COMPRESS);
181 btrfs_set_opt(info->mount_opt, COMPRESS);
182 break;
176 case Opt_ssd: 183 case Opt_ssd:
177 printk(KERN_INFO "btrfs: use ssd allocation scheme\n"); 184 printk(KERN_INFO "btrfs: use ssd allocation scheme\n");
178 btrfs_set_opt(info->mount_opt, SSD); 185 btrfs_set_opt(info->mount_opt, SSD);
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index 198cff28766d..41ecbb2347f2 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -1135,7 +1135,7 @@ int btrfs_rm_device(struct btrfs_root *root, char *device_path)
1135 root->fs_info->avail_metadata_alloc_bits; 1135 root->fs_info->avail_metadata_alloc_bits;
1136 1136
1137 if ((all_avail & BTRFS_BLOCK_GROUP_RAID10) && 1137 if ((all_avail & BTRFS_BLOCK_GROUP_RAID10) &&
1138 root->fs_info->fs_devices->rw_devices <= 4) { 1138 root->fs_info->fs_devices->num_devices <= 4) {
1139 printk(KERN_ERR "btrfs: unable to go below four devices " 1139 printk(KERN_ERR "btrfs: unable to go below four devices "
1140 "on raid10\n"); 1140 "on raid10\n");
1141 ret = -EINVAL; 1141 ret = -EINVAL;
@@ -1143,7 +1143,7 @@ int btrfs_rm_device(struct btrfs_root *root, char *device_path)
1143 } 1143 }
1144 1144
1145 if ((all_avail & BTRFS_BLOCK_GROUP_RAID1) && 1145 if ((all_avail & BTRFS_BLOCK_GROUP_RAID1) &&
1146 root->fs_info->fs_devices->rw_devices <= 2) { 1146 root->fs_info->fs_devices->num_devices <= 2) {
1147 printk(KERN_ERR "btrfs: unable to go below two " 1147 printk(KERN_ERR "btrfs: unable to go below two "
1148 "devices on raid1\n"); 1148 "devices on raid1\n");
1149 ret = -EINVAL; 1149 ret = -EINVAL;
@@ -1434,8 +1434,8 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path)
1434 return -EINVAL; 1434 return -EINVAL;
1435 1435
1436 bdev = open_bdev_exclusive(device_path, 0, root->fs_info->bdev_holder); 1436 bdev = open_bdev_exclusive(device_path, 0, root->fs_info->bdev_holder);
1437 if (!bdev) 1437 if (IS_ERR(bdev))
1438 return -EIO; 1438 return PTR_ERR(bdev);
1439 1439
1440 if (root->fs_info->fs_devices->seeding) { 1440 if (root->fs_info->fs_devices->seeding) {
1441 seeding_dev = 1; 1441 seeding_dev = 1;
@@ -2538,6 +2538,11 @@ int btrfs_chunk_readonly(struct btrfs_root *root, u64 chunk_offset)
2538 if (!em) 2538 if (!em)
2539 return 1; 2539 return 1;
2540 2540
2541 if (btrfs_test_opt(root, DEGRADED)) {
2542 free_extent_map(em);
2543 return 0;
2544 }
2545
2541 map = (struct map_lookup *)em->bdev; 2546 map = (struct map_lookup *)em->bdev;
2542 for (i = 0; i < map->num_stripes; i++) { 2547 for (i = 0; i < map->num_stripes; i++) {
2543 if (!map->stripes[i].dev->writeable) { 2548 if (!map->stripes[i].dev->writeable) {
@@ -2649,8 +2654,10 @@ again:
2649 em = lookup_extent_mapping(em_tree, logical, *length); 2654 em = lookup_extent_mapping(em_tree, logical, *length);
2650 read_unlock(&em_tree->lock); 2655 read_unlock(&em_tree->lock);
2651 2656
2652 if (!em && unplug_page) 2657 if (!em && unplug_page) {
2658 kfree(multi);
2653 return 0; 2659 return 0;
2660 }
2654 2661
2655 if (!em) { 2662 if (!em) {
2656 printk(KERN_CRIT "unable to find logical %llu len %llu\n", 2663 printk(KERN_CRIT "unable to find logical %llu len %llu\n",
diff --git a/fs/cachefiles/namei.c b/fs/cachefiles/namei.c
index 14ac4806e291..eeb4986ea7db 100644
--- a/fs/cachefiles/namei.c
+++ b/fs/cachefiles/namei.c
@@ -348,7 +348,17 @@ int cachefiles_delete_object(struct cachefiles_cache *cache,
348 dir = dget_parent(object->dentry); 348 dir = dget_parent(object->dentry);
349 349
350 mutex_lock_nested(&dir->d_inode->i_mutex, I_MUTEX_PARENT); 350 mutex_lock_nested(&dir->d_inode->i_mutex, I_MUTEX_PARENT);
351 ret = cachefiles_bury_object(cache, dir, object->dentry); 351
352 /* we need to check that our parent is _still_ our parent - it may have
353 * been renamed */
354 if (dir == object->dentry->d_parent) {
355 ret = cachefiles_bury_object(cache, dir, object->dentry);
356 } else {
357 /* it got moved, presumably by cachefilesd culling it, so it's
358 * no longer in the key path and we can ignore it */
359 mutex_unlock(&dir->d_inode->i_mutex);
360 ret = 0;
361 }
352 362
353 dput(dir); 363 dput(dir);
354 _leave(" = %d", ret); 364 _leave(" = %d", ret);
diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES
index 094ea65afc85..49503d2edc7e 100644
--- a/fs/cifs/CHANGES
+++ b/fs/cifs/CHANGES
@@ -1,3 +1,7 @@
1Version 1.62
2------------
3Add sockopt=TCP_NODELAY mount option.
4
1Version 1.61 5Version 1.61
2------------ 6------------
3Fix append problem to Samba servers (files opened with O_APPEND could 7Fix append problem to Samba servers (files opened with O_APPEND could
@@ -5,7 +9,9 @@ have duplicated data). Fix oops in cifs_lookup. Workaround problem
5mounting to OS/400 Netserve. Fix oops in cifs_get_tcp_session. 9mounting to OS/400 Netserve. Fix oops in cifs_get_tcp_session.
6Disable use of server inode numbers when server only 10Disable use of server inode numbers when server only
7partially supports them (e.g. for one server querying inode numbers on 11partially supports them (e.g. for one server querying inode numbers on
8FindFirst fails but QPathInfo queries works). 12FindFirst fails but QPathInfo queries works). Fix oops with dfs in
13cifs_put_smb_ses. Fix mmap to work on directio mounts (needed
14for OpenOffice when on forcedirectio mount e.g.)
9 15
10Version 1.60 16Version 1.60
11------------- 17-------------
diff --git a/fs/cifs/cifs_dfs_ref.c b/fs/cifs/cifs_dfs_ref.c
index fea9e898c4ba..b44ce0a0711c 100644
--- a/fs/cifs/cifs_dfs_ref.c
+++ b/fs/cifs/cifs_dfs_ref.c
@@ -269,7 +269,7 @@ static int add_mount_helper(struct vfsmount *newmnt, struct nameidata *nd,
269 int err; 269 int err;
270 270
271 mntget(newmnt); 271 mntget(newmnt);
272 err = do_add_mount(newmnt, &nd->path, nd->path.mnt->mnt_flags, mntlist); 272 err = do_add_mount(newmnt, &nd->path, nd->path.mnt->mnt_flags | MNT_SHRINKABLE, mntlist);
273 switch (err) { 273 switch (err) {
274 case 0: 274 case 0:
275 path_put(&nd->path); 275 path_put(&nd->path);
@@ -371,7 +371,6 @@ cifs_dfs_follow_mountpoint(struct dentry *dentry, struct nameidata *nd)
371 if (IS_ERR(mnt)) 371 if (IS_ERR(mnt))
372 goto out_err; 372 goto out_err;
373 373
374 nd->path.mnt->mnt_flags |= MNT_SHRINKABLE;
375 rc = add_mount_helper(mnt, nd, &cifs_dfs_automount_list); 374 rc = add_mount_helper(mnt, nd, &cifs_dfs_automount_list);
376 375
377out: 376out:
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
index 29f1da761bbf..8c6a03627176 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -758,7 +758,7 @@ const struct file_operations cifs_file_ops = {
758}; 758};
759 759
760const struct file_operations cifs_file_direct_ops = { 760const struct file_operations cifs_file_direct_ops = {
761 /* no mmap, no aio, no readv - 761 /* no aio, no readv -
762 BB reevaluate whether they can be done with directio, no cache */ 762 BB reevaluate whether they can be done with directio, no cache */
763 .read = cifs_user_read, 763 .read = cifs_user_read,
764 .write = cifs_user_write, 764 .write = cifs_user_write,
@@ -767,6 +767,7 @@ const struct file_operations cifs_file_direct_ops = {
767 .lock = cifs_lock, 767 .lock = cifs_lock,
768 .fsync = cifs_fsync, 768 .fsync = cifs_fsync,
769 .flush = cifs_flush, 769 .flush = cifs_flush,
770 .mmap = cifs_file_mmap,
770 .splice_read = generic_file_splice_read, 771 .splice_read = generic_file_splice_read,
771#ifdef CONFIG_CIFS_POSIX 772#ifdef CONFIG_CIFS_POSIX
772 .unlocked_ioctl = cifs_ioctl, 773 .unlocked_ioctl = cifs_ioctl,
diff --git a/fs/cifs/cifsfs.h b/fs/cifs/cifsfs.h
index ac2b24c192f8..78c1b86d55f6 100644
--- a/fs/cifs/cifsfs.h
+++ b/fs/cifs/cifsfs.h
@@ -113,5 +113,5 @@ extern long cifs_ioctl(struct file *filep, unsigned int cmd, unsigned long arg);
113extern const struct export_operations cifs_export_ops; 113extern const struct export_operations cifs_export_ops;
114#endif /* EXPERIMENTAL */ 114#endif /* EXPERIMENTAL */
115 115
116#define CIFS_VERSION "1.61" 116#define CIFS_VERSION "1.62"
117#endif /* _CIFSFS_H */ 117#endif /* _CIFSFS_H */
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
index 4b35f7ec0583..ed751bb657db 100644
--- a/fs/cifs/cifsglob.h
+++ b/fs/cifs/cifsglob.h
@@ -149,6 +149,7 @@ struct TCP_Server_Info {
149 bool svlocal:1; /* local server or remote */ 149 bool svlocal:1; /* local server or remote */
150 bool noblocksnd; /* use blocking sendmsg */ 150 bool noblocksnd; /* use blocking sendmsg */
151 bool noautotune; /* do not autotune send buf sizes */ 151 bool noautotune; /* do not autotune send buf sizes */
152 bool tcp_nodelay;
152 atomic_t inFlight; /* number of requests on the wire to server */ 153 atomic_t inFlight; /* number of requests on the wire to server */
153#ifdef CONFIG_CIFS_STATS2 154#ifdef CONFIG_CIFS_STATS2
154 atomic_t inSend; /* requests trying to send */ 155 atomic_t inSend; /* requests trying to send */
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 63ea83ff687f..2e9e09ca0e30 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -98,7 +98,7 @@ struct smb_vol {
98 bool nostrictsync:1; /* do not force expensive SMBflush on every sync */ 98 bool nostrictsync:1; /* do not force expensive SMBflush on every sync */
99 unsigned int rsize; 99 unsigned int rsize;
100 unsigned int wsize; 100 unsigned int wsize;
101 unsigned int sockopt; 101 bool sockopt_tcp_nodelay:1;
102 unsigned short int port; 102 unsigned short int port;
103 char *prepath; 103 char *prepath;
104}; 104};
@@ -1142,9 +1142,11 @@ cifs_parse_mount_options(char *options, const char *devname,
1142 simple_strtoul(value, &value, 0); 1142 simple_strtoul(value, &value, 0);
1143 } 1143 }
1144 } else if (strnicmp(data, "sockopt", 5) == 0) { 1144 } else if (strnicmp(data, "sockopt", 5) == 0) {
1145 if (value && *value) { 1145 if (!value || !*value) {
1146 vol->sockopt = 1146 cERROR(1, ("no socket option specified"));
1147 simple_strtoul(value, &value, 0); 1147 continue;
1148 } else if (strnicmp(value, "TCP_NODELAY", 11) == 0) {
1149 vol->sockopt_tcp_nodelay = 1;
1148 } 1150 }
1149 } else if (strnicmp(data, "netbiosname", 4) == 0) { 1151 } else if (strnicmp(data, "netbiosname", 4) == 0) {
1150 if (!value || !*value || (*value == ' ')) { 1152 if (!value || !*value || (*value == ' ')) {
@@ -1514,6 +1516,7 @@ cifs_get_tcp_session(struct smb_vol *volume_info)
1514 1516
1515 tcp_ses->noblocksnd = volume_info->noblocksnd; 1517 tcp_ses->noblocksnd = volume_info->noblocksnd;
1516 tcp_ses->noautotune = volume_info->noautotune; 1518 tcp_ses->noautotune = volume_info->noautotune;
1519 tcp_ses->tcp_nodelay = volume_info->sockopt_tcp_nodelay;
1517 atomic_set(&tcp_ses->inFlight, 0); 1520 atomic_set(&tcp_ses->inFlight, 0);
1518 init_waitqueue_head(&tcp_ses->response_q); 1521 init_waitqueue_head(&tcp_ses->response_q);
1519 init_waitqueue_head(&tcp_ses->request_q); 1522 init_waitqueue_head(&tcp_ses->request_q);
@@ -1764,6 +1767,7 @@ static int
1764ipv4_connect(struct TCP_Server_Info *server) 1767ipv4_connect(struct TCP_Server_Info *server)
1765{ 1768{
1766 int rc = 0; 1769 int rc = 0;
1770 int val;
1767 bool connected = false; 1771 bool connected = false;
1768 __be16 orig_port = 0; 1772 __be16 orig_port = 0;
1769 struct socket *socket = server->ssocket; 1773 struct socket *socket = server->ssocket;
@@ -1845,6 +1849,14 @@ ipv4_connect(struct TCP_Server_Info *server)
1845 socket->sk->sk_rcvbuf = 140 * 1024; 1849 socket->sk->sk_rcvbuf = 140 * 1024;
1846 } 1850 }
1847 1851
1852 if (server->tcp_nodelay) {
1853 val = 1;
1854 rc = kernel_setsockopt(socket, SOL_TCP, TCP_NODELAY,
1855 (char *)&val, sizeof(val));
1856 if (rc)
1857 cFYI(1, ("set TCP_NODELAY socket option error %d", rc));
1858 }
1859
1848 cFYI(1, ("sndbuf %d rcvbuf %d rcvtimeo 0x%lx", 1860 cFYI(1, ("sndbuf %d rcvbuf %d rcvtimeo 0x%lx",
1849 socket->sk->sk_sndbuf, 1861 socket->sk->sk_sndbuf,
1850 socket->sk->sk_rcvbuf, socket->sk->sk_rcvtimeo)); 1862 socket->sk->sk_rcvbuf, socket->sk->sk_rcvtimeo));
@@ -1916,6 +1928,7 @@ static int
1916ipv6_connect(struct TCP_Server_Info *server) 1928ipv6_connect(struct TCP_Server_Info *server)
1917{ 1929{
1918 int rc = 0; 1930 int rc = 0;
1931 int val;
1919 bool connected = false; 1932 bool connected = false;
1920 __be16 orig_port = 0; 1933 __be16 orig_port = 0;
1921 struct socket *socket = server->ssocket; 1934 struct socket *socket = server->ssocket;
@@ -1987,6 +2000,15 @@ ipv6_connect(struct TCP_Server_Info *server)
1987 */ 2000 */
1988 socket->sk->sk_rcvtimeo = 7 * HZ; 2001 socket->sk->sk_rcvtimeo = 7 * HZ;
1989 socket->sk->sk_sndtimeo = 5 * HZ; 2002 socket->sk->sk_sndtimeo = 5 * HZ;
2003
2004 if (server->tcp_nodelay) {
2005 val = 1;
2006 rc = kernel_setsockopt(socket, SOL_TCP, TCP_NODELAY,
2007 (char *)&val, sizeof(val));
2008 if (rc)
2009 cFYI(1, ("set TCP_NODELAY socket option error %d", rc));
2010 }
2011
1990 server->ssocket = socket; 2012 server->ssocket = socket;
1991 2013
1992 return rc; 2014 return rc;
@@ -2287,12 +2309,12 @@ int
2287cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb, 2309cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
2288 char *mount_data_global, const char *devname) 2310 char *mount_data_global, const char *devname)
2289{ 2311{
2290 int rc = 0; 2312 int rc;
2291 int xid; 2313 int xid;
2292 struct smb_vol *volume_info; 2314 struct smb_vol *volume_info;
2293 struct cifsSesInfo *pSesInfo = NULL; 2315 struct cifsSesInfo *pSesInfo;
2294 struct cifsTconInfo *tcon = NULL; 2316 struct cifsTconInfo *tcon;
2295 struct TCP_Server_Info *srvTcp = NULL; 2317 struct TCP_Server_Info *srvTcp;
2296 char *full_path; 2318 char *full_path;
2297 char *mount_data = mount_data_global; 2319 char *mount_data = mount_data_global;
2298#ifdef CONFIG_CIFS_DFS_UPCALL 2320#ifdef CONFIG_CIFS_DFS_UPCALL
@@ -2301,6 +2323,10 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
2301 int referral_walks_count = 0; 2323 int referral_walks_count = 0;
2302try_mount_again: 2324try_mount_again:
2303#endif 2325#endif
2326 rc = 0;
2327 tcon = NULL;
2328 pSesInfo = NULL;
2329 srvTcp = NULL;
2304 full_path = NULL; 2330 full_path = NULL;
2305 2331
2306 xid = GetXid(); 2332 xid = GetXid();
@@ -2597,6 +2623,7 @@ remote_path_check:
2597 2623
2598 cleanup_volume_info(&volume_info); 2624 cleanup_volume_info(&volume_info);
2599 referral_walks_count++; 2625 referral_walks_count++;
2626 FreeXid(xid);
2600 goto try_mount_again; 2627 goto try_mount_again;
2601 } 2628 }
2602#else /* No DFS support, return error on mount */ 2629#else /* No DFS support, return error on mount */
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index cf18ee765590..e3fda978f481 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -1762,8 +1762,18 @@ cifs_setattr_unix(struct dentry *direntry, struct iattr *attrs)
1762 CIFS_MOUNT_MAP_SPECIAL_CHR); 1762 CIFS_MOUNT_MAP_SPECIAL_CHR);
1763 } 1763 }
1764 1764
1765 if (!rc) 1765 if (!rc) {
1766 rc = inode_setattr(inode, attrs); 1766 rc = inode_setattr(inode, attrs);
1767
1768 /* force revalidate when any of these times are set since some
1769 of the fs types (eg ext3, fat) do not have fine enough
1770 time granularity to match protocol, and we do not have a
1771 a way (yet) to query the server fs's time granularity (and
1772 whether it rounds times down).
1773 */
1774 if (!rc && (attrs->ia_valid & (ATTR_MTIME | ATTR_CTIME)))
1775 cifsInode->time = 0;
1776 }
1767out: 1777out:
1768 kfree(args); 1778 kfree(args);
1769 kfree(full_path); 1779 kfree(full_path);
diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c
index f84062f9a985..c343b14ba2d3 100644
--- a/fs/cifs/readdir.c
+++ b/fs/cifs/readdir.c
@@ -77,6 +77,11 @@ cifs_readdir_lookup(struct dentry *parent, struct qstr *name,
77 77
78 cFYI(1, ("For %s", name->name)); 78 cFYI(1, ("For %s", name->name));
79 79
80 if (parent->d_op && parent->d_op->d_hash)
81 parent->d_op->d_hash(parent, name);
82 else
83 name->hash = full_name_hash(name->name, name->len);
84
80 dentry = d_lookup(parent, name); 85 dentry = d_lookup(parent, name);
81 if (dentry) { 86 if (dentry) {
82 /* FIXME: check for inode number changes? */ 87 /* FIXME: check for inode number changes? */
@@ -666,12 +671,11 @@ static int cifs_get_name_from_search_buf(struct qstr *pqst,
666 min(len, max_len), nlt, 671 min(len, max_len), nlt,
667 cifs_sb->mnt_cifs_flags & 672 cifs_sb->mnt_cifs_flags &
668 CIFS_MOUNT_MAP_SPECIAL_CHR); 673 CIFS_MOUNT_MAP_SPECIAL_CHR);
674 pqst->len -= nls_nullsize(nlt);
669 } else { 675 } else {
670 pqst->name = filename; 676 pqst->name = filename;
671 pqst->len = len; 677 pqst->len = len;
672 } 678 }
673 pqst->hash = full_name_hash(pqst->name, pqst->len);
674/* cFYI(1, ("filldir on %s",pqst->name)); */
675 return rc; 679 return rc;
676} 680}
677 681
diff --git a/fs/cifs/sess.c b/fs/cifs/sess.c
index 7085a6275c4c..aaa9c1c5a5bd 100644
--- a/fs/cifs/sess.c
+++ b/fs/cifs/sess.c
@@ -223,9 +223,9 @@ static void unicode_ssetup_strings(char **pbcc_area, struct cifsSesInfo *ses,
223 /* null user mount */ 223 /* null user mount */
224 *bcc_ptr = 0; 224 *bcc_ptr = 0;
225 *(bcc_ptr+1) = 0; 225 *(bcc_ptr+1) = 0;
226 } else { /* 300 should be long enough for any conceivable user name */ 226 } else {
227 bytes_ret = cifs_strtoUCS((__le16 *) bcc_ptr, ses->userName, 227 bytes_ret = cifs_strtoUCS((__le16 *) bcc_ptr, ses->userName,
228 300, nls_cp); 228 MAX_USERNAME_SIZE, nls_cp);
229 } 229 }
230 bcc_ptr += 2 * bytes_ret; 230 bcc_ptr += 2 * bytes_ret;
231 bcc_ptr += 2; /* account for null termination */ 231 bcc_ptr += 2; /* account for null termination */
@@ -246,11 +246,10 @@ static void ascii_ssetup_strings(char **pbcc_area, struct cifsSesInfo *ses,
246 /* copy user */ 246 /* copy user */
247 if (ses->userName == NULL) { 247 if (ses->userName == NULL) {
248 /* BB what about null user mounts - check that we do this BB */ 248 /* BB what about null user mounts - check that we do this BB */
249 } else { /* 300 should be long enough for any conceivable user name */ 249 } else {
250 strncpy(bcc_ptr, ses->userName, 300); 250 strncpy(bcc_ptr, ses->userName, MAX_USERNAME_SIZE);
251 } 251 }
252 /* BB improve check for overflow */ 252 bcc_ptr += strnlen(ses->userName, MAX_USERNAME_SIZE);
253 bcc_ptr += strnlen(ses->userName, 300);
254 *bcc_ptr = 0; 253 *bcc_ptr = 0;
255 bcc_ptr++; /* account for null termination */ 254 bcc_ptr++; /* account for null termination */
256 255
diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
index 332dd00f0894..0ca9ec4a79c3 100644
--- a/fs/compat_ioctl.c
+++ b/fs/compat_ioctl.c
@@ -301,6 +301,12 @@ static int sg_ioctl_trans(unsigned int fd, unsigned int cmd,
301 u32 data; 301 u32 data;
302 void __user *dxferp; 302 void __user *dxferp;
303 int err; 303 int err;
304 int interface_id;
305
306 if (get_user(interface_id, &sgio32->interface_id))
307 return -EFAULT;
308 if (interface_id != 'S')
309 return sys_ioctl(fd, cmd, (unsigned long)sgio32);
304 310
305 if (get_user(iovec_count, &sgio32->iovec_count)) 311 if (get_user(iovec_count, &sgio32->iovec_count))
306 return -EFAULT; 312 return -EFAULT;
@@ -936,6 +942,7 @@ COMPATIBLE_IOCTL(TCSETSF)
936COMPATIBLE_IOCTL(TIOCLINUX) 942COMPATIBLE_IOCTL(TIOCLINUX)
937COMPATIBLE_IOCTL(TIOCSBRK) 943COMPATIBLE_IOCTL(TIOCSBRK)
938COMPATIBLE_IOCTL(TIOCCBRK) 944COMPATIBLE_IOCTL(TIOCCBRK)
945COMPATIBLE_IOCTL(TIOCGSID)
939COMPATIBLE_IOCTL(TIOCGICOUNT) 946COMPATIBLE_IOCTL(TIOCGICOUNT)
940/* Little t */ 947/* Little t */
941COMPATIBLE_IOCTL(TIOCGETD) 948COMPATIBLE_IOCTL(TIOCGETD)
@@ -1005,6 +1012,9 @@ COMPATIBLE_IOCTL(SCSI_IOCTL_SEND_COMMAND)
1005COMPATIBLE_IOCTL(SCSI_IOCTL_PROBE_HOST) 1012COMPATIBLE_IOCTL(SCSI_IOCTL_PROBE_HOST)
1006COMPATIBLE_IOCTL(SCSI_IOCTL_GET_PCI) 1013COMPATIBLE_IOCTL(SCSI_IOCTL_GET_PCI)
1007#endif 1014#endif
1015/* Big V (don't complain on serial console) */
1016IGNORE_IOCTL(VT_OPENQRY)
1017IGNORE_IOCTL(VT_GETMODE)
1008/* Little p (/dev/rtc, /dev/envctrl, etc.) */ 1018/* Little p (/dev/rtc, /dev/envctrl, etc.) */
1009COMPATIBLE_IOCTL(RTC_AIE_ON) 1019COMPATIBLE_IOCTL(RTC_AIE_ON)
1010COMPATIBLE_IOCTL(RTC_AIE_OFF) 1020COMPATIBLE_IOCTL(RTC_AIE_OFF)
@@ -1035,6 +1045,8 @@ COMPATIBLE_IOCTL(FIOQSIZE)
1035#ifdef CONFIG_BLOCK 1045#ifdef CONFIG_BLOCK
1036/* loop */ 1046/* loop */
1037IGNORE_IOCTL(LOOP_CLR_FD) 1047IGNORE_IOCTL(LOOP_CLR_FD)
1048/* md calls this on random blockdevs */
1049IGNORE_IOCTL(RAID_VERSION)
1038/* SG stuff */ 1050/* SG stuff */
1039COMPATIBLE_IOCTL(SG_SET_TIMEOUT) 1051COMPATIBLE_IOCTL(SG_SET_TIMEOUT)
1040COMPATIBLE_IOCTL(SG_GET_TIMEOUT) 1052COMPATIBLE_IOCTL(SG_GET_TIMEOUT)
diff --git a/fs/configfs/symlink.c b/fs/configfs/symlink.c
index c8afa6b1d91d..32a5f46b1157 100644
--- a/fs/configfs/symlink.c
+++ b/fs/configfs/symlink.c
@@ -121,8 +121,10 @@ static int get_target(const char *symname, struct path *path,
121 ret = -ENOENT; 121 ret = -ENOENT;
122 path_put(path); 122 path_put(path);
123 } 123 }
124 } else 124 } else {
125 ret = -EPERM; 125 ret = -EPERM;
126 path_put(path);
127 }
126 } 128 }
127 129
128 return ret; 130 return ret;
diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c
index b486169f42bf..274ac865bae8 100644
--- a/fs/debugfs/inode.c
+++ b/fs/debugfs/inode.c
@@ -160,15 +160,8 @@ static int debugfs_create_by_name(const char *name, mode_t mode,
160 * block. A pointer to that is in the struct vfsmount that we 160 * block. A pointer to that is in the struct vfsmount that we
161 * have around. 161 * have around.
162 */ 162 */
163 if (!parent) { 163 if (!parent)
164 if (debugfs_mount && debugfs_mount->mnt_sb) { 164 parent = debugfs_mount->mnt_sb->s_root;
165 parent = debugfs_mount->mnt_sb->s_root;
166 }
167 }
168 if (!parent) {
169 pr_debug("debugfs: Ah! can not find a parent!\n");
170 return -EFAULT;
171 }
172 165
173 *dentry = NULL; 166 *dentry = NULL;
174 mutex_lock(&parent->d_inode->i_mutex); 167 mutex_lock(&parent->d_inode->i_mutex);
diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c
index fbb6e5eed697..7cb0a59f4b9d 100644
--- a/fs/ecryptfs/crypto.c
+++ b/fs/ecryptfs/crypto.c
@@ -1748,7 +1748,7 @@ ecryptfs_process_key_cipher(struct crypto_blkcipher **key_tfm,
1748 char *cipher_name, size_t *key_size) 1748 char *cipher_name, size_t *key_size)
1749{ 1749{
1750 char dummy_key[ECRYPTFS_MAX_KEY_BYTES]; 1750 char dummy_key[ECRYPTFS_MAX_KEY_BYTES];
1751 char *full_alg_name; 1751 char *full_alg_name = NULL;
1752 int rc; 1752 int rc;
1753 1753
1754 *key_tfm = NULL; 1754 *key_tfm = NULL;
@@ -1763,7 +1763,6 @@ ecryptfs_process_key_cipher(struct crypto_blkcipher **key_tfm,
1763 if (rc) 1763 if (rc)
1764 goto out; 1764 goto out;
1765 *key_tfm = crypto_alloc_blkcipher(full_alg_name, 0, CRYPTO_ALG_ASYNC); 1765 *key_tfm = crypto_alloc_blkcipher(full_alg_name, 0, CRYPTO_ALG_ASYNC);
1766 kfree(full_alg_name);
1767 if (IS_ERR(*key_tfm)) { 1766 if (IS_ERR(*key_tfm)) {
1768 rc = PTR_ERR(*key_tfm); 1767 rc = PTR_ERR(*key_tfm);
1769 printk(KERN_ERR "Unable to allocate crypto cipher with name " 1768 printk(KERN_ERR "Unable to allocate crypto cipher with name "
@@ -1786,6 +1785,7 @@ ecryptfs_process_key_cipher(struct crypto_blkcipher **key_tfm,
1786 goto out; 1785 goto out;
1787 } 1786 }
1788out: 1787out:
1788 kfree(full_alg_name);
1789 return rc; 1789 return rc;
1790} 1790}
1791 1791
diff --git a/fs/ecryptfs/file.c b/fs/ecryptfs/file.c
index 9e944057001b..678172b61be2 100644
--- a/fs/ecryptfs/file.c
+++ b/fs/ecryptfs/file.c
@@ -158,7 +158,7 @@ static int ecryptfs_open(struct inode *inode, struct file *file)
158 struct dentry *ecryptfs_dentry = file->f_path.dentry; 158 struct dentry *ecryptfs_dentry = file->f_path.dentry;
159 /* Private value of ecryptfs_dentry allocated in 159 /* Private value of ecryptfs_dentry allocated in
160 * ecryptfs_lookup() */ 160 * ecryptfs_lookup() */
161 struct dentry *lower_dentry = ecryptfs_dentry_to_lower(ecryptfs_dentry); 161 struct dentry *lower_dentry;
162 struct ecryptfs_file_info *file_info; 162 struct ecryptfs_file_info *file_info;
163 163
164 mount_crypt_stat = &ecryptfs_superblock_to_private( 164 mount_crypt_stat = &ecryptfs_superblock_to_private(
@@ -191,13 +191,6 @@ static int ecryptfs_open(struct inode *inode, struct file *file)
191 | ECRYPTFS_ENCRYPTED); 191 | ECRYPTFS_ENCRYPTED);
192 } 192 }
193 mutex_unlock(&crypt_stat->cs_mutex); 193 mutex_unlock(&crypt_stat->cs_mutex);
194 if ((ecryptfs_inode_to_private(inode)->lower_file->f_flags & O_RDONLY)
195 && !(file->f_flags & O_RDONLY)) {
196 rc = -EPERM;
197 printk(KERN_WARNING "%s: Lower persistent file is RO; eCryptfs "
198 "file must hence be opened RO\n", __func__);
199 goto out;
200 }
201 if (!ecryptfs_inode_to_private(inode)->lower_file) { 194 if (!ecryptfs_inode_to_private(inode)->lower_file) {
202 rc = ecryptfs_init_persistent_file(ecryptfs_dentry); 195 rc = ecryptfs_init_persistent_file(ecryptfs_dentry);
203 if (rc) { 196 if (rc) {
@@ -208,6 +201,13 @@ static int ecryptfs_open(struct inode *inode, struct file *file)
208 goto out; 201 goto out;
209 } 202 }
210 } 203 }
204 if ((ecryptfs_inode_to_private(inode)->lower_file->f_flags & O_RDONLY)
205 && !(file->f_flags & O_RDONLY)) {
206 rc = -EPERM;
207 printk(KERN_WARNING "%s: Lower persistent file is RO; eCryptfs "
208 "file must hence be opened RO\n", __func__);
209 goto out;
210 }
211 ecryptfs_set_file_lower( 211 ecryptfs_set_file_lower(
212 file, ecryptfs_inode_to_private(inode)->lower_file); 212 file, ecryptfs_inode_to_private(inode)->lower_file);
213 if (S_ISDIR(ecryptfs_dentry->d_inode->i_mode)) { 213 if (S_ISDIR(ecryptfs_dentry->d_inode->i_mode)) {
@@ -299,7 +299,6 @@ static int ecryptfs_ioctl(struct inode *inode, struct file *file,
299const struct file_operations ecryptfs_dir_fops = { 299const struct file_operations ecryptfs_dir_fops = {
300 .readdir = ecryptfs_readdir, 300 .readdir = ecryptfs_readdir,
301 .ioctl = ecryptfs_ioctl, 301 .ioctl = ecryptfs_ioctl,
302 .mmap = generic_file_mmap,
303 .open = ecryptfs_open, 302 .open = ecryptfs_open,
304 .flush = ecryptfs_flush, 303 .flush = ecryptfs_flush,
305 .release = ecryptfs_release, 304 .release = ecryptfs_release,
diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
index 429ca0b3ba08..4a430ab4115c 100644
--- a/fs/ecryptfs/inode.c
+++ b/fs/ecryptfs/inode.c
@@ -282,7 +282,8 @@ int ecryptfs_lookup_and_interpose_lower(struct dentry *ecryptfs_dentry,
282 goto out; 282 goto out;
283 } 283 }
284 rc = ecryptfs_interpose(lower_dentry, ecryptfs_dentry, 284 rc = ecryptfs_interpose(lower_dentry, ecryptfs_dentry,
285 ecryptfs_dir_inode->i_sb, 1); 285 ecryptfs_dir_inode->i_sb,
286 ECRYPTFS_INTERPOSE_FLAG_D_ADD);
286 if (rc) { 287 if (rc) {
287 printk(KERN_ERR "%s: Error interposing; rc = [%d]\n", 288 printk(KERN_ERR "%s: Error interposing; rc = [%d]\n",
288 __func__, rc); 289 __func__, rc);
@@ -463,9 +464,6 @@ out_lock:
463 unlock_dir(lower_dir_dentry); 464 unlock_dir(lower_dir_dentry);
464 dput(lower_new_dentry); 465 dput(lower_new_dentry);
465 dput(lower_old_dentry); 466 dput(lower_old_dentry);
466 d_drop(lower_old_dentry);
467 d_drop(new_dentry);
468 d_drop(old_dentry);
469 return rc; 467 return rc;
470} 468}
471 469
@@ -614,6 +612,7 @@ ecryptfs_rename(struct inode *old_dir, struct dentry *old_dentry,
614 struct dentry *lower_new_dentry; 612 struct dentry *lower_new_dentry;
615 struct dentry *lower_old_dir_dentry; 613 struct dentry *lower_old_dir_dentry;
616 struct dentry *lower_new_dir_dentry; 614 struct dentry *lower_new_dir_dentry;
615 struct dentry *trap = NULL;
617 616
618 lower_old_dentry = ecryptfs_dentry_to_lower(old_dentry); 617 lower_old_dentry = ecryptfs_dentry_to_lower(old_dentry);
619 lower_new_dentry = ecryptfs_dentry_to_lower(new_dentry); 618 lower_new_dentry = ecryptfs_dentry_to_lower(new_dentry);
@@ -621,7 +620,17 @@ ecryptfs_rename(struct inode *old_dir, struct dentry *old_dentry,
621 dget(lower_new_dentry); 620 dget(lower_new_dentry);
622 lower_old_dir_dentry = dget_parent(lower_old_dentry); 621 lower_old_dir_dentry = dget_parent(lower_old_dentry);
623 lower_new_dir_dentry = dget_parent(lower_new_dentry); 622 lower_new_dir_dentry = dget_parent(lower_new_dentry);
624 lock_rename(lower_old_dir_dentry, lower_new_dir_dentry); 623 trap = lock_rename(lower_old_dir_dentry, lower_new_dir_dentry);
624 /* source should not be ancestor of target */
625 if (trap == lower_old_dentry) {
626 rc = -EINVAL;
627 goto out_lock;
628 }
629 /* target should not be ancestor of source */
630 if (trap == lower_new_dentry) {
631 rc = -ENOTEMPTY;
632 goto out_lock;
633 }
625 rc = vfs_rename(lower_old_dir_dentry->d_inode, lower_old_dentry, 634 rc = vfs_rename(lower_old_dir_dentry->d_inode, lower_old_dentry,
626 lower_new_dir_dentry->d_inode, lower_new_dentry); 635 lower_new_dir_dentry->d_inode, lower_new_dentry);
627 if (rc) 636 if (rc)
@@ -715,31 +724,31 @@ static void *ecryptfs_follow_link(struct dentry *dentry, struct nameidata *nd)
715 /* Released in ecryptfs_put_link(); only release here on error */ 724 /* Released in ecryptfs_put_link(); only release here on error */
716 buf = kmalloc(len, GFP_KERNEL); 725 buf = kmalloc(len, GFP_KERNEL);
717 if (!buf) { 726 if (!buf) {
718 rc = -ENOMEM; 727 buf = ERR_PTR(-ENOMEM);
719 goto out; 728 goto out;
720 } 729 }
721 old_fs = get_fs(); 730 old_fs = get_fs();
722 set_fs(get_ds()); 731 set_fs(get_ds());
723 rc = dentry->d_inode->i_op->readlink(dentry, (char __user *)buf, len); 732 rc = dentry->d_inode->i_op->readlink(dentry, (char __user *)buf, len);
724 set_fs(old_fs); 733 set_fs(old_fs);
725 if (rc < 0) 734 if (rc < 0) {
726 goto out_free; 735 kfree(buf);
727 else 736 buf = ERR_PTR(rc);
737 } else
728 buf[rc] = '\0'; 738 buf[rc] = '\0';
729 rc = 0;
730 nd_set_link(nd, buf);
731 goto out;
732out_free:
733 kfree(buf);
734out: 739out:
735 return ERR_PTR(rc); 740 nd_set_link(nd, buf);
741 return NULL;
736} 742}
737 743
738static void 744static void
739ecryptfs_put_link(struct dentry *dentry, struct nameidata *nd, void *ptr) 745ecryptfs_put_link(struct dentry *dentry, struct nameidata *nd, void *ptr)
740{ 746{
741 /* Free the char* */ 747 char *buf = nd_get_link(nd);
742 kfree(nd_get_link(nd)); 748 if (!IS_ERR(buf)) {
749 /* Free the char* */
750 kfree(buf);
751 }
743} 752}
744 753
745/** 754/**
@@ -772,18 +781,23 @@ upper_size_to_lower_size(struct ecryptfs_crypt_stat *crypt_stat,
772} 781}
773 782
774/** 783/**
775 * ecryptfs_truncate 784 * truncate_upper
776 * @dentry: The ecryptfs layer dentry 785 * @dentry: The ecryptfs layer dentry
777 * @new_length: The length to expand the file to 786 * @ia: Address of the ecryptfs inode's attributes
787 * @lower_ia: Address of the lower inode's attributes
778 * 788 *
779 * Function to handle truncations modifying the size of the file. Note 789 * Function to handle truncations modifying the size of the file. Note
780 * that the file sizes are interpolated. When expanding, we are simply 790 * that the file sizes are interpolated. When expanding, we are simply
781 * writing strings of 0's out. When truncating, we need to modify the 791 * writing strings of 0's out. When truncating, we truncate the upper
782 * underlying file size according to the page index interpolations. 792 * inode and update the lower_ia according to the page index
793 * interpolations. If ATTR_SIZE is set in lower_ia->ia_valid upon return,
794 * the caller must use lower_ia in a call to notify_change() to perform
795 * the truncation of the lower inode.
783 * 796 *
784 * Returns zero on success; non-zero otherwise 797 * Returns zero on success; non-zero otherwise
785 */ 798 */
786int ecryptfs_truncate(struct dentry *dentry, loff_t new_length) 799static int truncate_upper(struct dentry *dentry, struct iattr *ia,
800 struct iattr *lower_ia)
787{ 801{
788 int rc = 0; 802 int rc = 0;
789 struct inode *inode = dentry->d_inode; 803 struct inode *inode = dentry->d_inode;
@@ -794,8 +808,10 @@ int ecryptfs_truncate(struct dentry *dentry, loff_t new_length)
794 loff_t lower_size_before_truncate; 808 loff_t lower_size_before_truncate;
795 loff_t lower_size_after_truncate; 809 loff_t lower_size_after_truncate;
796 810
797 if (unlikely((new_length == i_size))) 811 if (unlikely((ia->ia_size == i_size))) {
812 lower_ia->ia_valid &= ~ATTR_SIZE;
798 goto out; 813 goto out;
814 }
799 crypt_stat = &ecryptfs_inode_to_private(dentry->d_inode)->crypt_stat; 815 crypt_stat = &ecryptfs_inode_to_private(dentry->d_inode)->crypt_stat;
800 /* Set up a fake ecryptfs file, this is used to interface with 816 /* Set up a fake ecryptfs file, this is used to interface with
801 * the file in the underlying filesystem so that the 817 * the file in the underlying filesystem so that the
@@ -815,28 +831,30 @@ int ecryptfs_truncate(struct dentry *dentry, loff_t new_length)
815 &fake_ecryptfs_file, 831 &fake_ecryptfs_file,
816 ecryptfs_inode_to_private(dentry->d_inode)->lower_file); 832 ecryptfs_inode_to_private(dentry->d_inode)->lower_file);
817 /* Switch on growing or shrinking file */ 833 /* Switch on growing or shrinking file */
818 if (new_length > i_size) { 834 if (ia->ia_size > i_size) {
819 char zero[] = { 0x00 }; 835 char zero[] = { 0x00 };
820 836
837 lower_ia->ia_valid &= ~ATTR_SIZE;
821 /* Write a single 0 at the last position of the file; 838 /* Write a single 0 at the last position of the file;
822 * this triggers code that will fill in 0's throughout 839 * this triggers code that will fill in 0's throughout
823 * the intermediate portion of the previous end of the 840 * the intermediate portion of the previous end of the
824 * file and the new and of the file */ 841 * file and the new and of the file */
825 rc = ecryptfs_write(&fake_ecryptfs_file, zero, 842 rc = ecryptfs_write(&fake_ecryptfs_file, zero,
826 (new_length - 1), 1); 843 (ia->ia_size - 1), 1);
827 } else { /* new_length < i_size_read(inode) */ 844 } else { /* ia->ia_size < i_size_read(inode) */
828 /* We're chopping off all the pages down do the page 845 /* We're chopping off all the pages down to the page
829 * in which new_length is located. Fill in the end of 846 * in which ia->ia_size is located. Fill in the end of
830 * that page from (new_length & ~PAGE_CACHE_MASK) to 847 * that page from (ia->ia_size & ~PAGE_CACHE_MASK) to
831 * PAGE_CACHE_SIZE with zeros. */ 848 * PAGE_CACHE_SIZE with zeros. */
832 size_t num_zeros = (PAGE_CACHE_SIZE 849 size_t num_zeros = (PAGE_CACHE_SIZE
833 - (new_length & ~PAGE_CACHE_MASK)); 850 - (ia->ia_size & ~PAGE_CACHE_MASK));
834 851
835 if (!(crypt_stat->flags & ECRYPTFS_ENCRYPTED)) { 852 if (!(crypt_stat->flags & ECRYPTFS_ENCRYPTED)) {
836 rc = vmtruncate(inode, new_length); 853 rc = vmtruncate(inode, ia->ia_size);
837 if (rc) 854 if (rc)
838 goto out_free; 855 goto out_free;
839 rc = vmtruncate(lower_dentry->d_inode, new_length); 856 lower_ia->ia_size = ia->ia_size;
857 lower_ia->ia_valid |= ATTR_SIZE;
840 goto out_free; 858 goto out_free;
841 } 859 }
842 if (num_zeros) { 860 if (num_zeros) {
@@ -848,7 +866,7 @@ int ecryptfs_truncate(struct dentry *dentry, loff_t new_length)
848 goto out_free; 866 goto out_free;
849 } 867 }
850 rc = ecryptfs_write(&fake_ecryptfs_file, zeros_virt, 868 rc = ecryptfs_write(&fake_ecryptfs_file, zeros_virt,
851 new_length, num_zeros); 869 ia->ia_size, num_zeros);
852 kfree(zeros_virt); 870 kfree(zeros_virt);
853 if (rc) { 871 if (rc) {
854 printk(KERN_ERR "Error attempting to zero out " 872 printk(KERN_ERR "Error attempting to zero out "
@@ -857,7 +875,7 @@ int ecryptfs_truncate(struct dentry *dentry, loff_t new_length)
857 goto out_free; 875 goto out_free;
858 } 876 }
859 } 877 }
860 vmtruncate(inode, new_length); 878 vmtruncate(inode, ia->ia_size);
861 rc = ecryptfs_write_inode_size_to_metadata(inode); 879 rc = ecryptfs_write_inode_size_to_metadata(inode);
862 if (rc) { 880 if (rc) {
863 printk(KERN_ERR "Problem with " 881 printk(KERN_ERR "Problem with "
@@ -870,10 +888,12 @@ int ecryptfs_truncate(struct dentry *dentry, loff_t new_length)
870 lower_size_before_truncate = 888 lower_size_before_truncate =
871 upper_size_to_lower_size(crypt_stat, i_size); 889 upper_size_to_lower_size(crypt_stat, i_size);
872 lower_size_after_truncate = 890 lower_size_after_truncate =
873 upper_size_to_lower_size(crypt_stat, new_length); 891 upper_size_to_lower_size(crypt_stat, ia->ia_size);
874 if (lower_size_after_truncate < lower_size_before_truncate) 892 if (lower_size_after_truncate < lower_size_before_truncate) {
875 vmtruncate(lower_dentry->d_inode, 893 lower_ia->ia_size = lower_size_after_truncate;
876 lower_size_after_truncate); 894 lower_ia->ia_valid |= ATTR_SIZE;
895 } else
896 lower_ia->ia_valid &= ~ATTR_SIZE;
877 } 897 }
878out_free: 898out_free:
879 if (ecryptfs_file_to_private(&fake_ecryptfs_file)) 899 if (ecryptfs_file_to_private(&fake_ecryptfs_file))
@@ -883,6 +903,33 @@ out:
883 return rc; 903 return rc;
884} 904}
885 905
906/**
907 * ecryptfs_truncate
908 * @dentry: The ecryptfs layer dentry
909 * @new_length: The length to expand the file to
910 *
911 * Simple function that handles the truncation of an eCryptfs inode and
912 * its corresponding lower inode.
913 *
914 * Returns zero on success; non-zero otherwise
915 */
916int ecryptfs_truncate(struct dentry *dentry, loff_t new_length)
917{
918 struct iattr ia = { .ia_valid = ATTR_SIZE, .ia_size = new_length };
919 struct iattr lower_ia = { .ia_valid = 0 };
920 int rc;
921
922 rc = truncate_upper(dentry, &ia, &lower_ia);
923 if (!rc && lower_ia.ia_valid & ATTR_SIZE) {
924 struct dentry *lower_dentry = ecryptfs_dentry_to_lower(dentry);
925
926 mutex_lock(&lower_dentry->d_inode->i_mutex);
927 rc = notify_change(lower_dentry, &lower_ia);
928 mutex_unlock(&lower_dentry->d_inode->i_mutex);
929 }
930 return rc;
931}
932
886static int 933static int
887ecryptfs_permission(struct inode *inode, int mask) 934ecryptfs_permission(struct inode *inode, int mask)
888{ 935{
@@ -905,6 +952,7 @@ static int ecryptfs_setattr(struct dentry *dentry, struct iattr *ia)
905{ 952{
906 int rc = 0; 953 int rc = 0;
907 struct dentry *lower_dentry; 954 struct dentry *lower_dentry;
955 struct iattr lower_ia;
908 struct inode *inode; 956 struct inode *inode;
909 struct inode *lower_inode; 957 struct inode *lower_inode;
910 struct ecryptfs_crypt_stat *crypt_stat; 958 struct ecryptfs_crypt_stat *crypt_stat;
@@ -943,15 +991,11 @@ static int ecryptfs_setattr(struct dentry *dentry, struct iattr *ia)
943 } 991 }
944 } 992 }
945 mutex_unlock(&crypt_stat->cs_mutex); 993 mutex_unlock(&crypt_stat->cs_mutex);
994 memcpy(&lower_ia, ia, sizeof(lower_ia));
995 if (ia->ia_valid & ATTR_FILE)
996 lower_ia.ia_file = ecryptfs_file_to_lower(ia->ia_file);
946 if (ia->ia_valid & ATTR_SIZE) { 997 if (ia->ia_valid & ATTR_SIZE) {
947 ecryptfs_printk(KERN_DEBUG, 998 rc = truncate_upper(dentry, ia, &lower_ia);
948 "ia->ia_valid = [0x%x] ATTR_SIZE" " = [0x%x]\n",
949 ia->ia_valid, ATTR_SIZE);
950 rc = ecryptfs_truncate(dentry, ia->ia_size);
951 /* ecryptfs_truncate handles resizing of the lower file */
952 ia->ia_valid &= ~ATTR_SIZE;
953 ecryptfs_printk(KERN_DEBUG, "ia->ia_valid = [%x]\n",
954 ia->ia_valid);
955 if (rc < 0) 999 if (rc < 0)
956 goto out; 1000 goto out;
957 } 1001 }
@@ -960,17 +1004,32 @@ static int ecryptfs_setattr(struct dentry *dentry, struct iattr *ia)
960 * mode change is for clearing setuid/setgid bits. Allow lower fs 1004 * mode change is for clearing setuid/setgid bits. Allow lower fs
961 * to interpret this in its own way. 1005 * to interpret this in its own way.
962 */ 1006 */
963 if (ia->ia_valid & (ATTR_KILL_SUID | ATTR_KILL_SGID)) 1007 if (lower_ia.ia_valid & (ATTR_KILL_SUID | ATTR_KILL_SGID))
964 ia->ia_valid &= ~ATTR_MODE; 1008 lower_ia.ia_valid &= ~ATTR_MODE;
965 1009
966 mutex_lock(&lower_dentry->d_inode->i_mutex); 1010 mutex_lock(&lower_dentry->d_inode->i_mutex);
967 rc = notify_change(lower_dentry, ia); 1011 rc = notify_change(lower_dentry, &lower_ia);
968 mutex_unlock(&lower_dentry->d_inode->i_mutex); 1012 mutex_unlock(&lower_dentry->d_inode->i_mutex);
969out: 1013out:
970 fsstack_copy_attr_all(inode, lower_inode); 1014 fsstack_copy_attr_all(inode, lower_inode);
971 return rc; 1015 return rc;
972} 1016}
973 1017
1018int ecryptfs_getattr(struct vfsmount *mnt, struct dentry *dentry,
1019 struct kstat *stat)
1020{
1021 struct kstat lower_stat;
1022 int rc;
1023
1024 rc = vfs_getattr(ecryptfs_dentry_to_lower_mnt(dentry),
1025 ecryptfs_dentry_to_lower(dentry), &lower_stat);
1026 if (!rc) {
1027 generic_fillattr(dentry->d_inode, stat);
1028 stat->blocks = lower_stat.blocks;
1029 }
1030 return rc;
1031}
1032
974int 1033int
975ecryptfs_setxattr(struct dentry *dentry, const char *name, const void *value, 1034ecryptfs_setxattr(struct dentry *dentry, const char *name, const void *value,
976 size_t size, int flags) 1035 size_t size, int flags)
@@ -1100,6 +1159,7 @@ const struct inode_operations ecryptfs_dir_iops = {
1100const struct inode_operations ecryptfs_main_iops = { 1159const struct inode_operations ecryptfs_main_iops = {
1101 .permission = ecryptfs_permission, 1160 .permission = ecryptfs_permission,
1102 .setattr = ecryptfs_setattr, 1161 .setattr = ecryptfs_setattr,
1162 .getattr = ecryptfs_getattr,
1103 .setxattr = ecryptfs_setxattr, 1163 .setxattr = ecryptfs_setxattr,
1104 .getxattr = ecryptfs_getxattr, 1164 .getxattr = ecryptfs_getxattr,
1105 .listxattr = ecryptfs_listxattr, 1165 .listxattr = ecryptfs_listxattr,
diff --git a/fs/ecryptfs/main.c b/fs/ecryptfs/main.c
index 567bc4b9f70a..ea2f92101dfe 100644
--- a/fs/ecryptfs/main.c
+++ b/fs/ecryptfs/main.c
@@ -585,8 +585,8 @@ out:
585 * with as much information as it can before needing 585 * with as much information as it can before needing
586 * the lower filesystem. 586 * the lower filesystem.
587 * ecryptfs_read_super(): this accesses the lower filesystem and uses 587 * ecryptfs_read_super(): this accesses the lower filesystem and uses
588 * ecryptfs_interpolate to perform most of the linking 588 * ecryptfs_interpose to perform most of the linking
589 * ecryptfs_interpolate(): links the lower filesystem into ecryptfs 589 * ecryptfs_interpose(): links the lower filesystem into ecryptfs (inode.c)
590 */ 590 */
591static int ecryptfs_get_sb(struct file_system_type *fs_type, int flags, 591static int ecryptfs_get_sb(struct file_system_type *fs_type, int flags,
592 const char *dev_name, void *raw_data, 592 const char *dev_name, void *raw_data,
diff --git a/fs/eventfd.c b/fs/eventfd.c
index d26402ff06ea..7758cc382ef0 100644
--- a/fs/eventfd.c
+++ b/fs/eventfd.c
@@ -135,26 +135,71 @@ static unsigned int eventfd_poll(struct file *file, poll_table *wait)
135 return events; 135 return events;
136} 136}
137 137
138static ssize_t eventfd_read(struct file *file, char __user *buf, size_t count, 138static void eventfd_ctx_do_read(struct eventfd_ctx *ctx, __u64 *cnt)
139 loff_t *ppos) 139{
140 *cnt = (ctx->flags & EFD_SEMAPHORE) ? 1 : ctx->count;
141 ctx->count -= *cnt;
142}
143
144/**
145 * eventfd_ctx_remove_wait_queue - Read the current counter and removes wait queue.
146 * @ctx: [in] Pointer to eventfd context.
147 * @wait: [in] Wait queue to be removed.
148 * @cnt: [out] Pointer to the 64bit conter value.
149 *
150 * Returns zero if successful, or the following error codes:
151 *
152 * -EAGAIN : The operation would have blocked.
153 *
154 * This is used to atomically remove a wait queue entry from the eventfd wait
155 * queue head, and read/reset the counter value.
156 */
157int eventfd_ctx_remove_wait_queue(struct eventfd_ctx *ctx, wait_queue_t *wait,
158 __u64 *cnt)
159{
160 unsigned long flags;
161
162 spin_lock_irqsave(&ctx->wqh.lock, flags);
163 eventfd_ctx_do_read(ctx, cnt);
164 __remove_wait_queue(&ctx->wqh, wait);
165 if (*cnt != 0 && waitqueue_active(&ctx->wqh))
166 wake_up_locked_poll(&ctx->wqh, POLLOUT);
167 spin_unlock_irqrestore(&ctx->wqh.lock, flags);
168
169 return *cnt != 0 ? 0 : -EAGAIN;
170}
171EXPORT_SYMBOL_GPL(eventfd_ctx_remove_wait_queue);
172
173/**
174 * eventfd_ctx_read - Reads the eventfd counter or wait if it is zero.
175 * @ctx: [in] Pointer to eventfd context.
176 * @no_wait: [in] Different from zero if the operation should not block.
177 * @cnt: [out] Pointer to the 64bit conter value.
178 *
179 * Returns zero if successful, or the following error codes:
180 *
181 * -EAGAIN : The operation would have blocked but @no_wait was nonzero.
182 * -ERESTARTSYS : A signal interrupted the wait operation.
183 *
184 * If @no_wait is zero, the function might sleep until the eventfd internal
185 * counter becomes greater than zero.
186 */
187ssize_t eventfd_ctx_read(struct eventfd_ctx *ctx, int no_wait, __u64 *cnt)
140{ 188{
141 struct eventfd_ctx *ctx = file->private_data;
142 ssize_t res; 189 ssize_t res;
143 __u64 ucnt = 0;
144 DECLARE_WAITQUEUE(wait, current); 190 DECLARE_WAITQUEUE(wait, current);
145 191
146 if (count < sizeof(ucnt))
147 return -EINVAL;
148 spin_lock_irq(&ctx->wqh.lock); 192 spin_lock_irq(&ctx->wqh.lock);
193 *cnt = 0;
149 res = -EAGAIN; 194 res = -EAGAIN;
150 if (ctx->count > 0) 195 if (ctx->count > 0)
151 res = sizeof(ucnt); 196 res = 0;
152 else if (!(file->f_flags & O_NONBLOCK)) { 197 else if (!no_wait) {
153 __add_wait_queue(&ctx->wqh, &wait); 198 __add_wait_queue(&ctx->wqh, &wait);
154 for (res = 0;;) { 199 for (;;) {
155 set_current_state(TASK_INTERRUPTIBLE); 200 set_current_state(TASK_INTERRUPTIBLE);
156 if (ctx->count > 0) { 201 if (ctx->count > 0) {
157 res = sizeof(ucnt); 202 res = 0;
158 break; 203 break;
159 } 204 }
160 if (signal_pending(current)) { 205 if (signal_pending(current)) {
@@ -168,18 +213,32 @@ static ssize_t eventfd_read(struct file *file, char __user *buf, size_t count,
168 __remove_wait_queue(&ctx->wqh, &wait); 213 __remove_wait_queue(&ctx->wqh, &wait);
169 __set_current_state(TASK_RUNNING); 214 __set_current_state(TASK_RUNNING);
170 } 215 }
171 if (likely(res > 0)) { 216 if (likely(res == 0)) {
172 ucnt = (ctx->flags & EFD_SEMAPHORE) ? 1 : ctx->count; 217 eventfd_ctx_do_read(ctx, cnt);
173 ctx->count -= ucnt;
174 if (waitqueue_active(&ctx->wqh)) 218 if (waitqueue_active(&ctx->wqh))
175 wake_up_locked_poll(&ctx->wqh, POLLOUT); 219 wake_up_locked_poll(&ctx->wqh, POLLOUT);
176 } 220 }
177 spin_unlock_irq(&ctx->wqh.lock); 221 spin_unlock_irq(&ctx->wqh.lock);
178 if (res > 0 && put_user(ucnt, (__u64 __user *) buf))
179 return -EFAULT;
180 222
181 return res; 223 return res;
182} 224}
225EXPORT_SYMBOL_GPL(eventfd_ctx_read);
226
227static ssize_t eventfd_read(struct file *file, char __user *buf, size_t count,
228 loff_t *ppos)
229{
230 struct eventfd_ctx *ctx = file->private_data;
231 ssize_t res;
232 __u64 cnt;
233
234 if (count < sizeof(cnt))
235 return -EINVAL;
236 res = eventfd_ctx_read(ctx, file->f_flags & O_NONBLOCK, &cnt);
237 if (res < 0)
238 return res;
239
240 return put_user(cnt, (__u64 __user *) buf) ? -EFAULT : sizeof(cnt);
241}
183 242
184static ssize_t eventfd_write(struct file *file, const char __user *buf, size_t count, 243static ssize_t eventfd_write(struct file *file, const char __user *buf, size_t count,
185 loff_t *ppos) 244 loff_t *ppos)
diff --git a/fs/exec.c b/fs/exec.c
index 632b02e34ec7..cce6bbdbdbb1 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -571,6 +571,9 @@ int setup_arg_pages(struct linux_binprm *bprm,
571 struct vm_area_struct *prev = NULL; 571 struct vm_area_struct *prev = NULL;
572 unsigned long vm_flags; 572 unsigned long vm_flags;
573 unsigned long stack_base; 573 unsigned long stack_base;
574 unsigned long stack_size;
575 unsigned long stack_expand;
576 unsigned long rlim_stack;
574 577
575#ifdef CONFIG_STACK_GROWSUP 578#ifdef CONFIG_STACK_GROWSUP
576 /* Limit stack size to 1GB */ 579 /* Limit stack size to 1GB */
@@ -627,10 +630,23 @@ int setup_arg_pages(struct linux_binprm *bprm,
627 goto out_unlock; 630 goto out_unlock;
628 } 631 }
629 632
633 stack_expand = EXTRA_STACK_VM_PAGES * PAGE_SIZE;
634 stack_size = vma->vm_end - vma->vm_start;
635 /*
636 * Align this down to a page boundary as expand_stack
637 * will align it up.
638 */
639 rlim_stack = rlimit(RLIMIT_STACK) & PAGE_MASK;
630#ifdef CONFIG_STACK_GROWSUP 640#ifdef CONFIG_STACK_GROWSUP
631 stack_base = vma->vm_end + EXTRA_STACK_VM_PAGES * PAGE_SIZE; 641 if (stack_size + stack_expand > rlim_stack)
642 stack_base = vma->vm_start + rlim_stack;
643 else
644 stack_base = vma->vm_end + stack_expand;
632#else 645#else
633 stack_base = vma->vm_start - EXTRA_STACK_VM_PAGES * PAGE_SIZE; 646 if (stack_size + stack_expand > rlim_stack)
647 stack_base = vma->vm_end - rlim_stack;
648 else
649 stack_base = vma->vm_start - stack_expand;
634#endif 650#endif
635 ret = expand_stack(vma, stack_base); 651 ret = expand_stack(vma, stack_base);
636 if (ret) 652 if (ret)
@@ -941,9 +957,7 @@ void set_task_comm(struct task_struct *tsk, char *buf)
941 957
942int flush_old_exec(struct linux_binprm * bprm) 958int flush_old_exec(struct linux_binprm * bprm)
943{ 959{
944 char * name; 960 int retval;
945 int i, ch, retval;
946 char tcomm[sizeof(current->comm)];
947 961
948 /* 962 /*
949 * Make sure we have a private signal table and that 963 * Make sure we have a private signal table and that
@@ -964,6 +978,25 @@ int flush_old_exec(struct linux_binprm * bprm)
964 978
965 bprm->mm = NULL; /* We're using it now */ 979 bprm->mm = NULL; /* We're using it now */
966 980
981 current->flags &= ~PF_RANDOMIZE;
982 flush_thread();
983 current->personality &= ~bprm->per_clear;
984
985 return 0;
986
987out:
988 return retval;
989}
990EXPORT_SYMBOL(flush_old_exec);
991
992void setup_new_exec(struct linux_binprm * bprm)
993{
994 int i, ch;
995 char * name;
996 char tcomm[sizeof(current->comm)];
997
998 arch_pick_mmap_layout(current->mm);
999
967 /* This is the point of no return */ 1000 /* This is the point of no return */
968 current->sas_ss_sp = current->sas_ss_size = 0; 1001 current->sas_ss_sp = current->sas_ss_size = 0;
969 1002
@@ -985,9 +1018,6 @@ int flush_old_exec(struct linux_binprm * bprm)
985 tcomm[i] = '\0'; 1018 tcomm[i] = '\0';
986 set_task_comm(current, tcomm); 1019 set_task_comm(current, tcomm);
987 1020
988 current->flags &= ~PF_RANDOMIZE;
989 flush_thread();
990
991 /* Set the new mm task size. We have to do that late because it may 1021 /* Set the new mm task size. We have to do that late because it may
992 * depend on TIF_32BIT which is only updated in flush_thread() on 1022 * depend on TIF_32BIT which is only updated in flush_thread() on
993 * some architectures like powerpc 1023 * some architectures like powerpc
@@ -1003,8 +1033,6 @@ int flush_old_exec(struct linux_binprm * bprm)
1003 set_dumpable(current->mm, suid_dumpable); 1033 set_dumpable(current->mm, suid_dumpable);
1004 } 1034 }
1005 1035
1006 current->personality &= ~bprm->per_clear;
1007
1008 /* 1036 /*
1009 * Flush performance counters when crossing a 1037 * Flush performance counters when crossing a
1010 * security domain: 1038 * security domain:
@@ -1019,14 +1047,8 @@ int flush_old_exec(struct linux_binprm * bprm)
1019 1047
1020 flush_signal_handlers(current, 0); 1048 flush_signal_handlers(current, 0);
1021 flush_old_files(current->files); 1049 flush_old_files(current->files);
1022
1023 return 0;
1024
1025out:
1026 return retval;
1027} 1050}
1028 1051EXPORT_SYMBOL(setup_new_exec);
1029EXPORT_SYMBOL(flush_old_exec);
1030 1052
1031/* 1053/*
1032 * Prepare credentials and lock ->cred_guard_mutex. 1054 * Prepare credentials and lock ->cred_guard_mutex.
diff --git a/fs/exofs/inode.c b/fs/exofs/inode.c
index 698a8636d39c..2afbcebeda71 100644
--- a/fs/exofs/inode.c
+++ b/fs/exofs/inode.c
@@ -738,13 +738,28 @@ static int exofs_write_begin_export(struct file *file,
738 fsdata); 738 fsdata);
739} 739}
740 740
741static int exofs_write_end(struct file *file, struct address_space *mapping,
742 loff_t pos, unsigned len, unsigned copied,
743 struct page *page, void *fsdata)
744{
745 struct inode *inode = mapping->host;
746 /* According to comment in simple_write_end i_mutex is held */
747 loff_t i_size = inode->i_size;
748 int ret;
749
750 ret = simple_write_end(file, mapping,pos, len, copied, page, fsdata);
751 if (i_size != inode->i_size)
752 mark_inode_dirty(inode);
753 return ret;
754}
755
741const struct address_space_operations exofs_aops = { 756const struct address_space_operations exofs_aops = {
742 .readpage = exofs_readpage, 757 .readpage = exofs_readpage,
743 .readpages = exofs_readpages, 758 .readpages = exofs_readpages,
744 .writepage = exofs_writepage, 759 .writepage = exofs_writepage,
745 .writepages = exofs_writepages, 760 .writepages = exofs_writepages,
746 .write_begin = exofs_write_begin_export, 761 .write_begin = exofs_write_begin_export,
747 .write_end = simple_write_end, 762 .write_end = exofs_write_end,
748}; 763};
749 764
750/****************************************************************************** 765/******************************************************************************
diff --git a/fs/exofs/pnfs.h b/fs/exofs/pnfs.h
index 423033addd1f..c52e9888b8ab 100644
--- a/fs/exofs/pnfs.h
+++ b/fs/exofs/pnfs.h
@@ -15,13 +15,7 @@
15#ifndef __EXOFS_PNFS_H__ 15#ifndef __EXOFS_PNFS_H__
16#define __EXOFS_PNFS_H__ 16#define __EXOFS_PNFS_H__
17 17
18#if defined(CONFIG_PNFS) 18#if ! defined(__PNFS_OSD_XDR_H__)
19
20
21/* FIXME: move this file to: linux/exportfs/pnfs_osd_xdr.h */
22#include "../nfs/objlayout/pnfs_osd_xdr.h"
23
24#else /* defined(CONFIG_PNFS) */
25 19
26enum pnfs_iomode { 20enum pnfs_iomode {
27 IOMODE_READ = 1, 21 IOMODE_READ = 1,
@@ -46,6 +40,6 @@ struct pnfs_osd_data_map {
46 u32 odm_raid_algorithm; 40 u32 odm_raid_algorithm;
47}; 41};
48 42
49#endif /* else defined(CONFIG_PNFS) */ 43#endif /* ! defined(__PNFS_OSD_XDR_H__) */
50 44
51#endif /* __EXOFS_PNFS_H__ */ 45#endif /* __EXOFS_PNFS_H__ */
diff --git a/fs/ext4/Kconfig b/fs/ext4/Kconfig
index 9acf7e808139..9ed1bb1f319f 100644
--- a/fs/ext4/Kconfig
+++ b/fs/ext4/Kconfig
@@ -28,6 +28,7 @@ config EXT4_FS
28 28
29config EXT4_USE_FOR_EXT23 29config EXT4_USE_FOR_EXT23
30 bool "Use ext4 for ext2/ext3 file systems" 30 bool "Use ext4 for ext2/ext3 file systems"
31 depends on EXT4_FS
31 depends on EXT3_FS=n || EXT2_FS=n 32 depends on EXT3_FS=n || EXT2_FS=n
32 default y 33 default y
33 help 34 help
diff --git a/fs/ext4/block_validity.c b/fs/ext4/block_validity.c
index 4df8621ec31c..a60ab9aad57d 100644
--- a/fs/ext4/block_validity.c
+++ b/fs/ext4/block_validity.c
@@ -16,7 +16,6 @@
16#include <linux/module.h> 16#include <linux/module.h>
17#include <linux/swap.h> 17#include <linux/swap.h>
18#include <linux/pagemap.h> 18#include <linux/pagemap.h>
19#include <linux/version.h>
20#include <linux/blkdev.h> 19#include <linux/blkdev.h>
21#include <linux/mutex.h> 20#include <linux/mutex.h>
22#include "ext4.h" 21#include "ext4.h"
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index 56f9271ee8cc..874d169a193e 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -361,14 +361,11 @@ struct ext4_new_group_data {
361 so set the magic i_delalloc_reserve_flag after taking the 361 so set the magic i_delalloc_reserve_flag after taking the
362 inode allocation semaphore for */ 362 inode allocation semaphore for */
363#define EXT4_GET_BLOCKS_DELALLOC_RESERVE 0x0004 363#define EXT4_GET_BLOCKS_DELALLOC_RESERVE 0x0004
364 /* Call ext4_da_update_reserve_space() after successfully
365 allocating the blocks */
366#define EXT4_GET_BLOCKS_UPDATE_RESERVE_SPACE 0x0008
367 /* caller is from the direct IO path, request to creation of an 364 /* caller is from the direct IO path, request to creation of an
368 unitialized extents if not allocated, split the uninitialized 365 unitialized extents if not allocated, split the uninitialized
369 extent if blocks has been preallocated already*/ 366 extent if blocks has been preallocated already*/
370#define EXT4_GET_BLOCKS_DIO 0x0010 367#define EXT4_GET_BLOCKS_DIO 0x0008
371#define EXT4_GET_BLOCKS_CONVERT 0x0020 368#define EXT4_GET_BLOCKS_CONVERT 0x0010
372#define EXT4_GET_BLOCKS_DIO_CREATE_EXT (EXT4_GET_BLOCKS_DIO|\ 369#define EXT4_GET_BLOCKS_DIO_CREATE_EXT (EXT4_GET_BLOCKS_DIO|\
373 EXT4_GET_BLOCKS_CREATE_UNINIT_EXT) 370 EXT4_GET_BLOCKS_CREATE_UNINIT_EXT)
374 /* Convert extent to initialized after direct IO complete */ 371 /* Convert extent to initialized after direct IO complete */
@@ -699,6 +696,8 @@ struct ext4_inode_info {
699 unsigned int i_reserved_meta_blocks; 696 unsigned int i_reserved_meta_blocks;
700 unsigned int i_allocated_meta_blocks; 697 unsigned int i_allocated_meta_blocks;
701 unsigned short i_delalloc_reserved_flag; 698 unsigned short i_delalloc_reserved_flag;
699 sector_t i_da_metadata_calc_last_lblock;
700 int i_da_metadata_calc_len;
702 701
703 /* on-disk additional length */ 702 /* on-disk additional length */
704 __u16 i_extra_isize; 703 __u16 i_extra_isize;
@@ -1441,6 +1440,8 @@ extern int ext4_block_truncate_page(handle_t *handle,
1441extern int ext4_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf); 1440extern int ext4_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf);
1442extern qsize_t *ext4_get_reserved_space(struct inode *inode); 1441extern qsize_t *ext4_get_reserved_space(struct inode *inode);
1443extern int flush_aio_dio_completed_IO(struct inode *inode); 1442extern int flush_aio_dio_completed_IO(struct inode *inode);
1443extern void ext4_da_update_reserve_space(struct inode *inode,
1444 int used, int quota_claim);
1444/* ioctl.c */ 1445/* ioctl.c */
1445extern long ext4_ioctl(struct file *, unsigned int, unsigned long); 1446extern long ext4_ioctl(struct file *, unsigned int, unsigned long);
1446extern long ext4_compat_ioctl(struct file *, unsigned int, unsigned long); 1447extern long ext4_compat_ioctl(struct file *, unsigned int, unsigned long);
diff --git a/fs/ext4/ext4_extents.h b/fs/ext4/ext4_extents.h
index 2ca686454e87..bdb6ce7e2eb4 100644
--- a/fs/ext4/ext4_extents.h
+++ b/fs/ext4/ext4_extents.h
@@ -225,7 +225,8 @@ static inline void ext4_ext_mark_initialized(struct ext4_extent *ext)
225 ext->ee_len = cpu_to_le16(ext4_ext_get_actual_len(ext)); 225 ext->ee_len = cpu_to_le16(ext4_ext_get_actual_len(ext));
226} 226}
227 227
228extern int ext4_ext_calc_metadata_amount(struct inode *inode, int blocks); 228extern int ext4_ext_calc_metadata_amount(struct inode *inode,
229 sector_t lblocks);
229extern ext4_fsblk_t ext_pblock(struct ext4_extent *ex); 230extern ext4_fsblk_t ext_pblock(struct ext4_extent *ex);
230extern ext4_fsblk_t idx_pblock(struct ext4_extent_idx *); 231extern ext4_fsblk_t idx_pblock(struct ext4_extent_idx *);
231extern void ext4_ext_store_pblock(struct ext4_extent *, ext4_fsblk_t); 232extern void ext4_ext_store_pblock(struct ext4_extent *, ext4_fsblk_t);
diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
index 3a7928f825e4..765a4826b118 100644
--- a/fs/ext4/extents.c
+++ b/fs/ext4/extents.c
@@ -296,29 +296,44 @@ static inline int ext4_ext_space_root_idx(struct inode *inode, int check)
296 * to allocate @blocks 296 * to allocate @blocks
297 * Worse case is one block per extent 297 * Worse case is one block per extent
298 */ 298 */
299int ext4_ext_calc_metadata_amount(struct inode *inode, int blocks) 299int ext4_ext_calc_metadata_amount(struct inode *inode, sector_t lblock)
300{ 300{
301 int lcap, icap, rcap, leafs, idxs, num; 301 struct ext4_inode_info *ei = EXT4_I(inode);
302 int newextents = blocks; 302 int idxs, num = 0;
303
304 rcap = ext4_ext_space_root_idx(inode, 0);
305 lcap = ext4_ext_space_block(inode, 0);
306 icap = ext4_ext_space_block_idx(inode, 0);
307 303
308 /* number of new leaf blocks needed */ 304 idxs = ((inode->i_sb->s_blocksize - sizeof(struct ext4_extent_header))
309 num = leafs = (newextents + lcap - 1) / lcap; 305 / sizeof(struct ext4_extent_idx));
310 306
311 /* 307 /*
312 * Worse case, we need separate index block(s) 308 * If the new delayed allocation block is contiguous with the
313 * to link all new leaf blocks 309 * previous da block, it can share index blocks with the
310 * previous block, so we only need to allocate a new index
311 * block every idxs leaf blocks. At ldxs**2 blocks, we need
312 * an additional index block, and at ldxs**3 blocks, yet
313 * another index blocks.
314 */ 314 */
315 idxs = (leafs + icap - 1) / icap; 315 if (ei->i_da_metadata_calc_len &&
316 do { 316 ei->i_da_metadata_calc_last_lblock+1 == lblock) {
317 num += idxs; 317 if ((ei->i_da_metadata_calc_len % idxs) == 0)
318 idxs = (idxs + icap - 1) / icap; 318 num++;
319 } while (idxs > rcap); 319 if ((ei->i_da_metadata_calc_len % (idxs*idxs)) == 0)
320 num++;
321 if ((ei->i_da_metadata_calc_len % (idxs*idxs*idxs)) == 0) {
322 num++;
323 ei->i_da_metadata_calc_len = 0;
324 } else
325 ei->i_da_metadata_calc_len++;
326 ei->i_da_metadata_calc_last_lblock++;
327 return num;
328 }
320 329
321 return num; 330 /*
331 * In the worst case we need a new set of index blocks at
332 * every level of the inode's extent tree.
333 */
334 ei->i_da_metadata_calc_len = 1;
335 ei->i_da_metadata_calc_last_lblock = lblock;
336 return ext_depth(inode) + 1;
322} 337}
323 338
324static int 339static int
@@ -3023,6 +3038,14 @@ out:
3023 return err; 3038 return err;
3024} 3039}
3025 3040
3041static void unmap_underlying_metadata_blocks(struct block_device *bdev,
3042 sector_t block, int count)
3043{
3044 int i;
3045 for (i = 0; i < count; i++)
3046 unmap_underlying_metadata(bdev, block + i);
3047}
3048
3026static int 3049static int
3027ext4_ext_handle_uninitialized_extents(handle_t *handle, struct inode *inode, 3050ext4_ext_handle_uninitialized_extents(handle_t *handle, struct inode *inode,
3028 ext4_lblk_t iblock, unsigned int max_blocks, 3051 ext4_lblk_t iblock, unsigned int max_blocks,
@@ -3098,6 +3121,30 @@ out:
3098 } else 3121 } else
3099 allocated = ret; 3122 allocated = ret;
3100 set_buffer_new(bh_result); 3123 set_buffer_new(bh_result);
3124 /*
3125 * if we allocated more blocks than requested
3126 * we need to make sure we unmap the extra block
3127 * allocated. The actual needed block will get
3128 * unmapped later when we find the buffer_head marked
3129 * new.
3130 */
3131 if (allocated > max_blocks) {
3132 unmap_underlying_metadata_blocks(inode->i_sb->s_bdev,
3133 newblock + max_blocks,
3134 allocated - max_blocks);
3135 allocated = max_blocks;
3136 }
3137
3138 /*
3139 * If we have done fallocate with the offset that is already
3140 * delayed allocated, we would have block reservation
3141 * and quota reservation done in the delayed write path.
3142 * But fallocate would have already updated quota and block
3143 * count for this offset. So cancel these reservation
3144 */
3145 if (flags & EXT4_GET_BLOCKS_DELALLOC_RESERVE)
3146 ext4_da_update_reserve_space(inode, allocated, 0);
3147
3101map_out: 3148map_out:
3102 set_buffer_mapped(bh_result); 3149 set_buffer_mapped(bh_result);
3103out1: 3150out1:
@@ -3190,7 +3237,13 @@ int ext4_ext_get_blocks(handle_t *handle, struct inode *inode,
3190 * this situation is possible, though, _during_ tree modification; 3237 * this situation is possible, though, _during_ tree modification;
3191 * this is why assert can't be put in ext4_ext_find_extent() 3238 * this is why assert can't be put in ext4_ext_find_extent()
3192 */ 3239 */
3193 BUG_ON(path[depth].p_ext == NULL && depth != 0); 3240 if (path[depth].p_ext == NULL && depth != 0) {
3241 ext4_error(inode->i_sb, __func__, "bad extent address "
3242 "inode: %lu, iblock: %d, depth: %d",
3243 inode->i_ino, iblock, depth);
3244 err = -EIO;
3245 goto out2;
3246 }
3194 eh = path[depth].p_hdr; 3247 eh = path[depth].p_hdr;
3195 3248
3196 ex = path[depth].p_ext; 3249 ex = path[depth].p_ext;
@@ -3327,9 +3380,18 @@ int ext4_ext_get_blocks(handle_t *handle, struct inode *inode,
3327 /* previous routine could use block we allocated */ 3380 /* previous routine could use block we allocated */
3328 newblock = ext_pblock(&newex); 3381 newblock = ext_pblock(&newex);
3329 allocated = ext4_ext_get_actual_len(&newex); 3382 allocated = ext4_ext_get_actual_len(&newex);
3383 if (allocated > max_blocks)
3384 allocated = max_blocks;
3330 set_buffer_new(bh_result); 3385 set_buffer_new(bh_result);
3331 3386
3332 /* 3387 /*
3388 * Update reserved blocks/metadata blocks after successful
3389 * block allocation which had been deferred till now.
3390 */
3391 if (flags & EXT4_GET_BLOCKS_DELALLOC_RESERVE)
3392 ext4_da_update_reserve_space(inode, allocated, 1);
3393
3394 /*
3333 * Cache the extent and update transaction to commit on fdatasync only 3395 * Cache the extent and update transaction to commit on fdatasync only
3334 * when it is _not_ an uninitialized extent. 3396 * when it is _not_ an uninitialized extent.
3335 */ 3397 */
diff --git a/fs/ext4/fsync.c b/fs/ext4/fsync.c
index 0b22497d92e1..98bd140aad01 100644
--- a/fs/ext4/fsync.c
+++ b/fs/ext4/fsync.c
@@ -88,9 +88,21 @@ int ext4_sync_file(struct file *file, struct dentry *dentry, int datasync)
88 return ext4_force_commit(inode->i_sb); 88 return ext4_force_commit(inode->i_sb);
89 89
90 commit_tid = datasync ? ei->i_datasync_tid : ei->i_sync_tid; 90 commit_tid = datasync ? ei->i_datasync_tid : ei->i_sync_tid;
91 if (jbd2_log_start_commit(journal, commit_tid)) 91 if (jbd2_log_start_commit(journal, commit_tid)) {
92 /*
93 * When the journal is on a different device than the
94 * fs data disk, we need to issue the barrier in
95 * writeback mode. (In ordered mode, the jbd2 layer
96 * will take care of issuing the barrier. In
97 * data=journal, all of the data blocks are written to
98 * the journal device.)
99 */
100 if (ext4_should_writeback_data(inode) &&
101 (journal->j_fs_dev != journal->j_dev) &&
102 (journal->j_flags & JBD2_BARRIER))
103 blkdev_issue_flush(inode->i_sb->s_bdev, NULL);
92 jbd2_log_wait_commit(journal, commit_tid); 104 jbd2_log_wait_commit(journal, commit_tid);
93 else if (journal->j_flags & JBD2_BARRIER) 105 } else if (journal->j_flags & JBD2_BARRIER)
94 blkdev_issue_flush(inode->i_sb->s_bdev, NULL); 106 blkdev_issue_flush(inode->i_sb->s_bdev, NULL);
95 return ret; 107 return ret;
96} 108}
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index ab807963a614..e11952404e02 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -1009,86 +1009,114 @@ qsize_t *ext4_get_reserved_space(struct inode *inode)
1009 return &EXT4_I(inode)->i_reserved_quota; 1009 return &EXT4_I(inode)->i_reserved_quota;
1010} 1010}
1011#endif 1011#endif
1012
1012/* 1013/*
1013 * Calculate the number of metadata blocks need to reserve 1014 * Calculate the number of metadata blocks need to reserve
1014 * to allocate @blocks for non extent file based file 1015 * to allocate a new block at @lblocks for non extent file based file
1015 */ 1016 */
1016static int ext4_indirect_calc_metadata_amount(struct inode *inode, int blocks) 1017static int ext4_indirect_calc_metadata_amount(struct inode *inode,
1018 sector_t lblock)
1017{ 1019{
1018 int icap = EXT4_ADDR_PER_BLOCK(inode->i_sb); 1020 struct ext4_inode_info *ei = EXT4_I(inode);
1019 int ind_blks, dind_blks, tind_blks; 1021 int dind_mask = EXT4_ADDR_PER_BLOCK(inode->i_sb) - 1;
1020 1022 int blk_bits;
1021 /* number of new indirect blocks needed */
1022 ind_blks = (blocks + icap - 1) / icap;
1023 1023
1024 dind_blks = (ind_blks + icap - 1) / icap; 1024 if (lblock < EXT4_NDIR_BLOCKS)
1025 return 0;
1025 1026
1026 tind_blks = 1; 1027 lblock -= EXT4_NDIR_BLOCKS;
1027 1028
1028 return ind_blks + dind_blks + tind_blks; 1029 if (ei->i_da_metadata_calc_len &&
1030 (lblock & dind_mask) == ei->i_da_metadata_calc_last_lblock) {
1031 ei->i_da_metadata_calc_len++;
1032 return 0;
1033 }
1034 ei->i_da_metadata_calc_last_lblock = lblock & dind_mask;
1035 ei->i_da_metadata_calc_len = 1;
1036 blk_bits = roundup_pow_of_two(lblock + 1);
1037 return (blk_bits / EXT4_ADDR_PER_BLOCK_BITS(inode->i_sb)) + 1;
1029} 1038}
1030 1039
1031/* 1040/*
1032 * Calculate the number of metadata blocks need to reserve 1041 * Calculate the number of metadata blocks need to reserve
1033 * to allocate given number of blocks 1042 * to allocate a block located at @lblock
1034 */ 1043 */
1035static int ext4_calc_metadata_amount(struct inode *inode, int blocks) 1044static int ext4_calc_metadata_amount(struct inode *inode, sector_t lblock)
1036{ 1045{
1037 if (!blocks)
1038 return 0;
1039
1040 if (EXT4_I(inode)->i_flags & EXT4_EXTENTS_FL) 1046 if (EXT4_I(inode)->i_flags & EXT4_EXTENTS_FL)
1041 return ext4_ext_calc_metadata_amount(inode, blocks); 1047 return ext4_ext_calc_metadata_amount(inode, lblock);
1042 1048
1043 return ext4_indirect_calc_metadata_amount(inode, blocks); 1049 return ext4_indirect_calc_metadata_amount(inode, lblock);
1044} 1050}
1045 1051
1046static void ext4_da_update_reserve_space(struct inode *inode, int used) 1052/*
1053 * Called with i_data_sem down, which is important since we can call
1054 * ext4_discard_preallocations() from here.
1055 */
1056void ext4_da_update_reserve_space(struct inode *inode,
1057 int used, int quota_claim)
1047{ 1058{
1048 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); 1059 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
1049 int total, mdb, mdb_free, mdb_claim = 0; 1060 struct ext4_inode_info *ei = EXT4_I(inode);
1050 1061 int mdb_free = 0, allocated_meta_blocks = 0;
1051 spin_lock(&EXT4_I(inode)->i_block_reservation_lock); 1062
1052 /* recalculate the number of metablocks still need to be reserved */ 1063 spin_lock(&ei->i_block_reservation_lock);
1053 total = EXT4_I(inode)->i_reserved_data_blocks - used; 1064 if (unlikely(used > ei->i_reserved_data_blocks)) {
1054 mdb = ext4_calc_metadata_amount(inode, total); 1065 ext4_msg(inode->i_sb, KERN_NOTICE, "%s: ino %lu, used %d "
1055 1066 "with only %d reserved data blocks\n",
1056 /* figure out how many metablocks to release */ 1067 __func__, inode->i_ino, used,
1057 BUG_ON(mdb > EXT4_I(inode)->i_reserved_meta_blocks); 1068 ei->i_reserved_data_blocks);
1058 mdb_free = EXT4_I(inode)->i_reserved_meta_blocks - mdb; 1069 WARN_ON(1);
1059 1070 used = ei->i_reserved_data_blocks;
1060 if (mdb_free) { 1071 }
1061 /* Account for allocated meta_blocks */ 1072
1062 mdb_claim = EXT4_I(inode)->i_allocated_meta_blocks; 1073 /* Update per-inode reservations */
1063 BUG_ON(mdb_free < mdb_claim); 1074 ei->i_reserved_data_blocks -= used;
1064 mdb_free -= mdb_claim; 1075 used += ei->i_allocated_meta_blocks;
1065 1076 ei->i_reserved_meta_blocks -= ei->i_allocated_meta_blocks;
1066 /* update fs dirty blocks counter */ 1077 allocated_meta_blocks = ei->i_allocated_meta_blocks;
1078 ei->i_allocated_meta_blocks = 0;
1079 percpu_counter_sub(&sbi->s_dirtyblocks_counter, used);
1080
1081 if (ei->i_reserved_data_blocks == 0) {
1082 /*
1083 * We can release all of the reserved metadata blocks
1084 * only when we have written all of the delayed
1085 * allocation blocks.
1086 */
1087 mdb_free = ei->i_reserved_meta_blocks;
1088 ei->i_reserved_meta_blocks = 0;
1089 ei->i_da_metadata_calc_len = 0;
1067 percpu_counter_sub(&sbi->s_dirtyblocks_counter, mdb_free); 1090 percpu_counter_sub(&sbi->s_dirtyblocks_counter, mdb_free);
1068 EXT4_I(inode)->i_allocated_meta_blocks = 0;
1069 EXT4_I(inode)->i_reserved_meta_blocks = mdb;
1070 } 1091 }
1071
1072 /* update per-inode reservations */
1073 BUG_ON(used > EXT4_I(inode)->i_reserved_data_blocks);
1074 EXT4_I(inode)->i_reserved_data_blocks -= used;
1075 percpu_counter_sub(&sbi->s_dirtyblocks_counter, used + mdb_claim);
1076 spin_unlock(&EXT4_I(inode)->i_block_reservation_lock); 1092 spin_unlock(&EXT4_I(inode)->i_block_reservation_lock);
1077 1093
1078 vfs_dq_claim_block(inode, used + mdb_claim); 1094 /* Update quota subsystem */
1079 1095 if (quota_claim) {
1080 /* 1096 vfs_dq_claim_block(inode, used);
1081 * free those over-booking quota for metadata blocks 1097 if (mdb_free)
1082 */ 1098 vfs_dq_release_reservation_block(inode, mdb_free);
1083 if (mdb_free) 1099 } else {
1084 vfs_dq_release_reservation_block(inode, mdb_free); 1100 /*
1101 * We did fallocate with an offset that is already delayed
1102 * allocated. So on delayed allocated writeback we should
1103 * not update the quota for allocated blocks. But then
1104 * converting an fallocate region to initialized region would
1105 * have caused a metadata allocation. So claim quota for
1106 * that
1107 */
1108 if (allocated_meta_blocks)
1109 vfs_dq_claim_block(inode, allocated_meta_blocks);
1110 vfs_dq_release_reservation_block(inode, mdb_free + used);
1111 }
1085 1112
1086 /* 1113 /*
1087 * If we have done all the pending block allocations and if 1114 * If we have done all the pending block allocations and if
1088 * there aren't any writers on the inode, we can discard the 1115 * there aren't any writers on the inode, we can discard the
1089 * inode's preallocations. 1116 * inode's preallocations.
1090 */ 1117 */
1091 if (!total && (atomic_read(&inode->i_writecount) == 0)) 1118 if ((ei->i_reserved_data_blocks == 0) &&
1119 (atomic_read(&inode->i_writecount) == 0))
1092 ext4_discard_preallocations(inode); 1120 ext4_discard_preallocations(inode);
1093} 1121}
1094 1122
@@ -1280,18 +1308,20 @@ int ext4_get_blocks(handle_t *handle, struct inode *inode, sector_t block,
1280 */ 1308 */
1281 EXT4_I(inode)->i_state &= ~EXT4_STATE_EXT_MIGRATE; 1309 EXT4_I(inode)->i_state &= ~EXT4_STATE_EXT_MIGRATE;
1282 } 1310 }
1283 }
1284 1311
1312 /*
1313 * Update reserved blocks/metadata blocks after successful
1314 * block allocation which had been deferred till now. We don't
1315 * support fallocate for non extent files. So we can update
1316 * reserve space here.
1317 */
1318 if ((retval > 0) &&
1319 (flags & EXT4_GET_BLOCKS_DELALLOC_RESERVE))
1320 ext4_da_update_reserve_space(inode, retval, 1);
1321 }
1285 if (flags & EXT4_GET_BLOCKS_DELALLOC_RESERVE) 1322 if (flags & EXT4_GET_BLOCKS_DELALLOC_RESERVE)
1286 EXT4_I(inode)->i_delalloc_reserved_flag = 0; 1323 EXT4_I(inode)->i_delalloc_reserved_flag = 0;
1287 1324
1288 /*
1289 * Update reserved blocks/metadata blocks after successful
1290 * block allocation which had been deferred till now.
1291 */
1292 if ((retval > 0) && (flags & EXT4_GET_BLOCKS_UPDATE_RESERVE_SPACE))
1293 ext4_da_update_reserve_space(inode, retval);
1294
1295 up_write((&EXT4_I(inode)->i_data_sem)); 1325 up_write((&EXT4_I(inode)->i_data_sem));
1296 if (retval > 0 && buffer_mapped(bh)) { 1326 if (retval > 0 && buffer_mapped(bh)) {
1297 int ret = check_block_validity(inode, "file system " 1327 int ret = check_block_validity(inode, "file system "
@@ -1797,11 +1827,15 @@ static int ext4_journalled_write_end(struct file *file,
1797 return ret ? ret : copied; 1827 return ret ? ret : copied;
1798} 1828}
1799 1829
1800static int ext4_da_reserve_space(struct inode *inode, int nrblocks) 1830/*
1831 * Reserve a single block located at lblock
1832 */
1833static int ext4_da_reserve_space(struct inode *inode, sector_t lblock)
1801{ 1834{
1802 int retries = 0; 1835 int retries = 0;
1803 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); 1836 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
1804 unsigned long md_needed, mdblocks, total = 0; 1837 struct ext4_inode_info *ei = EXT4_I(inode);
1838 unsigned long md_needed, md_reserved;
1805 1839
1806 /* 1840 /*
1807 * recalculate the amount of metadata blocks to reserve 1841 * recalculate the amount of metadata blocks to reserve
@@ -1809,35 +1843,31 @@ static int ext4_da_reserve_space(struct inode *inode, int nrblocks)
1809 * worse case is one extent per block 1843 * worse case is one extent per block
1810 */ 1844 */
1811repeat: 1845repeat:
1812 spin_lock(&EXT4_I(inode)->i_block_reservation_lock); 1846 spin_lock(&ei->i_block_reservation_lock);
1813 total = EXT4_I(inode)->i_reserved_data_blocks + nrblocks; 1847 md_reserved = ei->i_reserved_meta_blocks;
1814 mdblocks = ext4_calc_metadata_amount(inode, total); 1848 md_needed = ext4_calc_metadata_amount(inode, lblock);
1815 BUG_ON(mdblocks < EXT4_I(inode)->i_reserved_meta_blocks); 1849 spin_unlock(&ei->i_block_reservation_lock);
1816
1817 md_needed = mdblocks - EXT4_I(inode)->i_reserved_meta_blocks;
1818 total = md_needed + nrblocks;
1819 spin_unlock(&EXT4_I(inode)->i_block_reservation_lock);
1820 1850
1821 /* 1851 /*
1822 * Make quota reservation here to prevent quota overflow 1852 * Make quota reservation here to prevent quota overflow
1823 * later. Real quota accounting is done at pages writeout 1853 * later. Real quota accounting is done at pages writeout
1824 * time. 1854 * time.
1825 */ 1855 */
1826 if (vfs_dq_reserve_block(inode, total)) 1856 if (vfs_dq_reserve_block(inode, md_needed + 1))
1827 return -EDQUOT; 1857 return -EDQUOT;
1828 1858
1829 if (ext4_claim_free_blocks(sbi, total)) { 1859 if (ext4_claim_free_blocks(sbi, md_needed + 1)) {
1830 vfs_dq_release_reservation_block(inode, total); 1860 vfs_dq_release_reservation_block(inode, md_needed + 1);
1831 if (ext4_should_retry_alloc(inode->i_sb, &retries)) { 1861 if (ext4_should_retry_alloc(inode->i_sb, &retries)) {
1832 yield(); 1862 yield();
1833 goto repeat; 1863 goto repeat;
1834 } 1864 }
1835 return -ENOSPC; 1865 return -ENOSPC;
1836 } 1866 }
1837 spin_lock(&EXT4_I(inode)->i_block_reservation_lock); 1867 spin_lock(&ei->i_block_reservation_lock);
1838 EXT4_I(inode)->i_reserved_data_blocks += nrblocks; 1868 ei->i_reserved_data_blocks++;
1839 EXT4_I(inode)->i_reserved_meta_blocks += md_needed; 1869 ei->i_reserved_meta_blocks += md_needed;
1840 spin_unlock(&EXT4_I(inode)->i_block_reservation_lock); 1870 spin_unlock(&ei->i_block_reservation_lock);
1841 1871
1842 return 0; /* success */ 1872 return 0; /* success */
1843} 1873}
@@ -1845,49 +1875,46 @@ repeat:
1845static void ext4_da_release_space(struct inode *inode, int to_free) 1875static void ext4_da_release_space(struct inode *inode, int to_free)
1846{ 1876{
1847 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); 1877 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
1848 int total, mdb, mdb_free, release; 1878 struct ext4_inode_info *ei = EXT4_I(inode);
1849 1879
1850 if (!to_free) 1880 if (!to_free)
1851 return; /* Nothing to release, exit */ 1881 return; /* Nothing to release, exit */
1852 1882
1853 spin_lock(&EXT4_I(inode)->i_block_reservation_lock); 1883 spin_lock(&EXT4_I(inode)->i_block_reservation_lock);
1854 1884
1855 if (!EXT4_I(inode)->i_reserved_data_blocks) { 1885 if (unlikely(to_free > ei->i_reserved_data_blocks)) {
1856 /* 1886 /*
1857 * if there is no reserved blocks, but we try to free some 1887 * if there aren't enough reserved blocks, then the
1858 * then the counter is messed up somewhere. 1888 * counter is messed up somewhere. Since this
1859 * but since this function is called from invalidate 1889 * function is called from invalidate page, it's
1860 * page, it's harmless to return without any action 1890 * harmless to return without any action.
1861 */ 1891 */
1862 printk(KERN_INFO "ext4 delalloc try to release %d reserved " 1892 ext4_msg(inode->i_sb, KERN_NOTICE, "ext4_da_release_space: "
1863 "blocks for inode %lu, but there is no reserved " 1893 "ino %lu, to_free %d with only %d reserved "
1864 "data blocks\n", to_free, inode->i_ino); 1894 "data blocks\n", inode->i_ino, to_free,
1865 spin_unlock(&EXT4_I(inode)->i_block_reservation_lock); 1895 ei->i_reserved_data_blocks);
1866 return; 1896 WARN_ON(1);
1897 to_free = ei->i_reserved_data_blocks;
1867 } 1898 }
1899 ei->i_reserved_data_blocks -= to_free;
1868 1900
1869 /* recalculate the number of metablocks still need to be reserved */ 1901 if (ei->i_reserved_data_blocks == 0) {
1870 total = EXT4_I(inode)->i_reserved_data_blocks - to_free; 1902 /*
1871 mdb = ext4_calc_metadata_amount(inode, total); 1903 * We can release all of the reserved metadata blocks
1872 1904 * only when we have written all of the delayed
1873 /* figure out how many metablocks to release */ 1905 * allocation blocks.
1874 BUG_ON(mdb > EXT4_I(inode)->i_reserved_meta_blocks); 1906 */
1875 mdb_free = EXT4_I(inode)->i_reserved_meta_blocks - mdb; 1907 to_free += ei->i_reserved_meta_blocks;
1876 1908 ei->i_reserved_meta_blocks = 0;
1877 release = to_free + mdb_free; 1909 ei->i_da_metadata_calc_len = 0;
1878 1910 }
1879 /* update fs dirty blocks counter for truncate case */
1880 percpu_counter_sub(&sbi->s_dirtyblocks_counter, release);
1881 1911
1882 /* update per-inode reservations */ 1912 /* update fs dirty blocks counter */
1883 BUG_ON(to_free > EXT4_I(inode)->i_reserved_data_blocks); 1913 percpu_counter_sub(&sbi->s_dirtyblocks_counter, to_free);
1884 EXT4_I(inode)->i_reserved_data_blocks -= to_free;
1885 1914
1886 BUG_ON(mdb > EXT4_I(inode)->i_reserved_meta_blocks);
1887 EXT4_I(inode)->i_reserved_meta_blocks = mdb;
1888 spin_unlock(&EXT4_I(inode)->i_block_reservation_lock); 1915 spin_unlock(&EXT4_I(inode)->i_block_reservation_lock);
1889 1916
1890 vfs_dq_release_reservation_block(inode, release); 1917 vfs_dq_release_reservation_block(inode, to_free);
1891} 1918}
1892 1919
1893static void ext4_da_page_release_reservation(struct page *page, 1920static void ext4_da_page_release_reservation(struct page *page,
@@ -2192,10 +2219,10 @@ static int mpage_da_map_blocks(struct mpage_da_data *mpd)
2192 * variables are updated after the blocks have been allocated. 2219 * variables are updated after the blocks have been allocated.
2193 */ 2220 */
2194 new.b_state = 0; 2221 new.b_state = 0;
2195 get_blocks_flags = (EXT4_GET_BLOCKS_CREATE | 2222 get_blocks_flags = EXT4_GET_BLOCKS_CREATE;
2196 EXT4_GET_BLOCKS_DELALLOC_RESERVE);
2197 if (mpd->b_state & (1 << BH_Delay)) 2223 if (mpd->b_state & (1 << BH_Delay))
2198 get_blocks_flags |= EXT4_GET_BLOCKS_UPDATE_RESERVE_SPACE; 2224 get_blocks_flags |= EXT4_GET_BLOCKS_DELALLOC_RESERVE;
2225
2199 blks = ext4_get_blocks(handle, mpd->inode, next, max_blocks, 2226 blks = ext4_get_blocks(handle, mpd->inode, next, max_blocks,
2200 &new, get_blocks_flags); 2227 &new, get_blocks_flags);
2201 if (blks < 0) { 2228 if (blks < 0) {
@@ -2493,7 +2520,7 @@ static int ext4_da_get_block_prep(struct inode *inode, sector_t iblock,
2493 * XXX: __block_prepare_write() unmaps passed block, 2520 * XXX: __block_prepare_write() unmaps passed block,
2494 * is it OK? 2521 * is it OK?
2495 */ 2522 */
2496 ret = ext4_da_reserve_space(inode, 1); 2523 ret = ext4_da_reserve_space(inode, iblock);
2497 if (ret) 2524 if (ret)
2498 /* not enough space to reserve */ 2525 /* not enough space to reserve */
2499 return ret; 2526 return ret;
@@ -2967,8 +2994,7 @@ retry:
2967out_writepages: 2994out_writepages:
2968 if (!no_nrwrite_index_update) 2995 if (!no_nrwrite_index_update)
2969 wbc->no_nrwrite_index_update = 0; 2996 wbc->no_nrwrite_index_update = 0;
2970 if (wbc->nr_to_write > nr_to_writebump) 2997 wbc->nr_to_write -= nr_to_writebump;
2971 wbc->nr_to_write -= nr_to_writebump;
2972 wbc->range_start = range_start; 2998 wbc->range_start = range_start;
2973 trace_ext4_da_writepages_result(inode, wbc, ret, pages_written); 2999 trace_ext4_da_writepages_result(inode, wbc, ret, pages_written);
2974 return ret; 3000 return ret;
@@ -2993,11 +3019,18 @@ static int ext4_nonda_switch(struct super_block *sb)
2993 if (2 * free_blocks < 3 * dirty_blocks || 3019 if (2 * free_blocks < 3 * dirty_blocks ||
2994 free_blocks < (dirty_blocks + EXT4_FREEBLOCKS_WATERMARK)) { 3020 free_blocks < (dirty_blocks + EXT4_FREEBLOCKS_WATERMARK)) {
2995 /* 3021 /*
2996 * free block count is less that 150% of dirty blocks 3022 * free block count is less than 150% of dirty blocks
2997 * or free blocks is less that watermark 3023 * or free blocks is less than watermark
2998 */ 3024 */
2999 return 1; 3025 return 1;
3000 } 3026 }
3027 /*
3028 * Even if we don't switch but are nearing capacity,
3029 * start pushing delalloc when 1/2 of free blocks are dirty.
3030 */
3031 if (free_blocks < 2 * dirty_blocks)
3032 writeback_inodes_sb_if_idle(sb);
3033
3001 return 0; 3034 return 0;
3002} 3035}
3003 3036
@@ -3005,7 +3038,7 @@ static int ext4_da_write_begin(struct file *file, struct address_space *mapping,
3005 loff_t pos, unsigned len, unsigned flags, 3038 loff_t pos, unsigned len, unsigned flags,
3006 struct page **pagep, void **fsdata) 3039 struct page **pagep, void **fsdata)
3007{ 3040{
3008 int ret, retries = 0; 3041 int ret, retries = 0, quota_retries = 0;
3009 struct page *page; 3042 struct page *page;
3010 pgoff_t index; 3043 pgoff_t index;
3011 unsigned from, to; 3044 unsigned from, to;
@@ -3064,6 +3097,22 @@ retry:
3064 3097
3065 if (ret == -ENOSPC && ext4_should_retry_alloc(inode->i_sb, &retries)) 3098 if (ret == -ENOSPC && ext4_should_retry_alloc(inode->i_sb, &retries))
3066 goto retry; 3099 goto retry;
3100
3101 if ((ret == -EDQUOT) &&
3102 EXT4_I(inode)->i_reserved_meta_blocks &&
3103 (quota_retries++ < 3)) {
3104 /*
3105 * Since we often over-estimate the number of meta
3106 * data blocks required, we may sometimes get a
3107 * spurios out of quota error even though there would
3108 * be enough space once we write the data blocks and
3109 * find out how many meta data blocks were _really_
3110 * required. So try forcing the inode write to see if
3111 * that helps.
3112 */
3113 write_inode_now(inode, (quota_retries == 3));
3114 goto retry;
3115 }
3067out: 3116out:
3068 return ret; 3117 return ret;
3069} 3118}
diff --git a/fs/ext4/mballoc.h b/fs/ext4/mballoc.h
index 0ca811061bc7..436521cae456 100644
--- a/fs/ext4/mballoc.h
+++ b/fs/ext4/mballoc.h
@@ -17,7 +17,6 @@
17#include <linux/proc_fs.h> 17#include <linux/proc_fs.h>
18#include <linux/pagemap.h> 18#include <linux/pagemap.h>
19#include <linux/seq_file.h> 19#include <linux/seq_file.h>
20#include <linux/version.h>
21#include <linux/blkdev.h> 20#include <linux/blkdev.h>
22#include <linux/mutex.h> 21#include <linux/mutex.h>
23#include "ext4_jbd2.h" 22#include "ext4_jbd2.h"
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 6ed9aa91f27d..735c20d5fd56 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -702,6 +702,7 @@ static struct inode *ext4_alloc_inode(struct super_block *sb)
702 ei->i_reserved_data_blocks = 0; 702 ei->i_reserved_data_blocks = 0;
703 ei->i_reserved_meta_blocks = 0; 703 ei->i_reserved_meta_blocks = 0;
704 ei->i_allocated_meta_blocks = 0; 704 ei->i_allocated_meta_blocks = 0;
705 ei->i_da_metadata_calc_len = 0;
705 ei->i_delalloc_reserved_flag = 0; 706 ei->i_delalloc_reserved_flag = 0;
706 spin_lock_init(&(ei->i_block_reservation_lock)); 707 spin_lock_init(&(ei->i_block_reservation_lock));
707#ifdef CONFIG_QUOTA 708#ifdef CONFIG_QUOTA
@@ -2174,9 +2175,9 @@ static ssize_t lifetime_write_kbytes_show(struct ext4_attr *a,
2174 struct super_block *sb = sbi->s_buddy_cache->i_sb; 2175 struct super_block *sb = sbi->s_buddy_cache->i_sb;
2175 2176
2176 return snprintf(buf, PAGE_SIZE, "%llu\n", 2177 return snprintf(buf, PAGE_SIZE, "%llu\n",
2177 sbi->s_kbytes_written + 2178 (unsigned long long)(sbi->s_kbytes_written +
2178 ((part_stat_read(sb->s_bdev->bd_part, sectors[1]) - 2179 ((part_stat_read(sb->s_bdev->bd_part, sectors[1]) -
2179 EXT4_SB(sb)->s_sectors_written_start) >> 1)); 2180 EXT4_SB(sb)->s_sectors_written_start) >> 1)));
2180} 2181}
2181 2182
2182static ssize_t inode_readahead_blks_store(struct ext4_attr *a, 2183static ssize_t inode_readahead_blks_store(struct ext4_attr *a,
@@ -4005,6 +4006,7 @@ static inline void unregister_as_ext2(void)
4005{ 4006{
4006 unregister_filesystem(&ext2_fs_type); 4007 unregister_filesystem(&ext2_fs_type);
4007} 4008}
4009MODULE_ALIAS("ext2");
4008#else 4010#else
4009static inline void register_as_ext2(void) { } 4011static inline void register_as_ext2(void) { }
4010static inline void unregister_as_ext2(void) { } 4012static inline void unregister_as_ext2(void) { }
@@ -4031,6 +4033,7 @@ static inline void unregister_as_ext3(void)
4031{ 4033{
4032 unregister_filesystem(&ext3_fs_type); 4034 unregister_filesystem(&ext3_fs_type);
4033} 4035}
4036MODULE_ALIAS("ext3");
4034#else 4037#else
4035static inline void register_as_ext3(void) { } 4038static inline void register_as_ext3(void) { }
4036static inline void unregister_as_ext3(void) { } 4039static inline void unregister_as_ext3(void) { }
diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c
index 83218bebbc7c..f3a2f7ed45aa 100644
--- a/fs/ext4/xattr.c
+++ b/fs/ext4/xattr.c
@@ -1332,6 +1332,8 @@ retry:
1332 goto cleanup; 1332 goto cleanup;
1333 kfree(b_entry_name); 1333 kfree(b_entry_name);
1334 kfree(buffer); 1334 kfree(buffer);
1335 b_entry_name = NULL;
1336 buffer = NULL;
1335 brelse(is->iloc.bh); 1337 brelse(is->iloc.bh);
1336 kfree(is); 1338 kfree(is);
1337 kfree(bs); 1339 kfree(bs);
diff --git a/fs/fcntl.c b/fs/fcntl.c
index 2cf93ec40a67..97e01dc0d95f 100644
--- a/fs/fcntl.c
+++ b/fs/fcntl.c
@@ -618,60 +618,90 @@ static DEFINE_RWLOCK(fasync_lock);
618static struct kmem_cache *fasync_cache __read_mostly; 618static struct kmem_cache *fasync_cache __read_mostly;
619 619
620/* 620/*
621 * fasync_helper() is used by almost all character device drivers 621 * Remove a fasync entry. If successfully removed, return
622 * to set up the fasync queue. It returns negative on error, 0 if it did 622 * positive and clear the FASYNC flag. If no entry exists,
623 * no changes and positive if it added/deleted the entry. 623 * do nothing and return 0.
624 *
625 * NOTE! It is very important that the FASYNC flag always
626 * match the state "is the filp on a fasync list".
627 *
628 * We always take the 'filp->f_lock', in since fasync_lock
629 * needs to be irq-safe.
624 */ 630 */
625int fasync_helper(int fd, struct file * filp, int on, struct fasync_struct **fapp) 631static int fasync_remove_entry(struct file *filp, struct fasync_struct **fapp)
626{ 632{
627 struct fasync_struct *fa, **fp; 633 struct fasync_struct *fa, **fp;
628 struct fasync_struct *new = NULL;
629 int result = 0; 634 int result = 0;
630 635
631 if (on) { 636 spin_lock(&filp->f_lock);
632 new = kmem_cache_alloc(fasync_cache, GFP_KERNEL); 637 write_lock_irq(&fasync_lock);
633 if (!new) 638 for (fp = fapp; (fa = *fp) != NULL; fp = &fa->fa_next) {
634 return -ENOMEM; 639 if (fa->fa_file != filp)
640 continue;
641 *fp = fa->fa_next;
642 kmem_cache_free(fasync_cache, fa);
643 filp->f_flags &= ~FASYNC;
644 result = 1;
645 break;
635 } 646 }
647 write_unlock_irq(&fasync_lock);
648 spin_unlock(&filp->f_lock);
649 return result;
650}
651
652/*
653 * Add a fasync entry. Return negative on error, positive if
654 * added, and zero if did nothing but change an existing one.
655 *
656 * NOTE! It is very important that the FASYNC flag always
657 * match the state "is the filp on a fasync list".
658 */
659static int fasync_add_entry(int fd, struct file *filp, struct fasync_struct **fapp)
660{
661 struct fasync_struct *new, *fa, **fp;
662 int result = 0;
663
664 new = kmem_cache_alloc(fasync_cache, GFP_KERNEL);
665 if (!new)
666 return -ENOMEM;
636 667
637 /*
638 * We need to take f_lock first since it's not an IRQ-safe
639 * lock.
640 */
641 spin_lock(&filp->f_lock); 668 spin_lock(&filp->f_lock);
642 write_lock_irq(&fasync_lock); 669 write_lock_irq(&fasync_lock);
643 for (fp = fapp; (fa = *fp) != NULL; fp = &fa->fa_next) { 670 for (fp = fapp; (fa = *fp) != NULL; fp = &fa->fa_next) {
644 if (fa->fa_file == filp) { 671 if (fa->fa_file != filp)
645 if(on) { 672 continue;
646 fa->fa_fd = fd; 673 fa->fa_fd = fd;
647 kmem_cache_free(fasync_cache, new); 674 kmem_cache_free(fasync_cache, new);
648 } else { 675 goto out;
649 *fp = fa->fa_next;
650 kmem_cache_free(fasync_cache, fa);
651 result = 1;
652 }
653 goto out;
654 }
655 } 676 }
656 677
657 if (on) { 678 new->magic = FASYNC_MAGIC;
658 new->magic = FASYNC_MAGIC; 679 new->fa_file = filp;
659 new->fa_file = filp; 680 new->fa_fd = fd;
660 new->fa_fd = fd; 681 new->fa_next = *fapp;
661 new->fa_next = *fapp; 682 *fapp = new;
662 *fapp = new; 683 result = 1;
663 result = 1; 684 filp->f_flags |= FASYNC;
664 } 685
665out: 686out:
666 if (on)
667 filp->f_flags |= FASYNC;
668 else
669 filp->f_flags &= ~FASYNC;
670 write_unlock_irq(&fasync_lock); 687 write_unlock_irq(&fasync_lock);
671 spin_unlock(&filp->f_lock); 688 spin_unlock(&filp->f_lock);
672 return result; 689 return result;
673} 690}
674 691
692/*
693 * fasync_helper() is used by almost all character device drivers
694 * to set up the fasync queue, and for regular files by the file
695 * lease code. It returns negative on error, 0 if it did no changes
696 * and positive if it added/deleted the entry.
697 */
698int fasync_helper(int fd, struct file * filp, int on, struct fasync_struct **fapp)
699{
700 if (!on)
701 return fasync_remove_entry(filp, fapp);
702 return fasync_add_entry(fd, filp, fapp);
703}
704
675EXPORT_SYMBOL(fasync_helper); 705EXPORT_SYMBOL(fasync_helper);
676 706
677void __kill_fasync(struct fasync_struct *fa, int sig, int band) 707void __kill_fasync(struct fasync_struct *fa, int sig, int band)
diff --git a/fs/file_table.c b/fs/file_table.c
index 69652c5bd5f0..b98404b54383 100644
--- a/fs/file_table.c
+++ b/fs/file_table.c
@@ -253,6 +253,7 @@ void __fput(struct file *file)
253 if (file->f_op && file->f_op->release) 253 if (file->f_op && file->f_op->release)
254 file->f_op->release(inode, file); 254 file->f_op->release(inode, file);
255 security_file_free(file); 255 security_file_free(file);
256 ima_file_free(file);
256 if (unlikely(S_ISCHR(inode->i_mode) && inode->i_cdev != NULL)) 257 if (unlikely(S_ISCHR(inode->i_mode) && inode->i_cdev != NULL))
257 cdev_put(inode->i_cdev); 258 cdev_put(inode->i_cdev);
258 fops_put(file->f_op); 259 fops_put(file->f_op);
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
index 49bc1b8e8f19..1a7c42c64ff4 100644
--- a/fs/fs-writeback.c
+++ b/fs/fs-writeback.c
@@ -242,6 +242,7 @@ static void bdi_sync_writeback(struct backing_dev_info *bdi,
242/** 242/**
243 * bdi_start_writeback - start writeback 243 * bdi_start_writeback - start writeback
244 * @bdi: the backing device to write from 244 * @bdi: the backing device to write from
245 * @sb: write inodes from this super_block
245 * @nr_pages: the number of pages to write 246 * @nr_pages: the number of pages to write
246 * 247 *
247 * Description: 248 * Description:
@@ -1187,6 +1188,23 @@ void writeback_inodes_sb(struct super_block *sb)
1187EXPORT_SYMBOL(writeback_inodes_sb); 1188EXPORT_SYMBOL(writeback_inodes_sb);
1188 1189
1189/** 1190/**
1191 * writeback_inodes_sb_if_idle - start writeback if none underway
1192 * @sb: the superblock
1193 *
1194 * Invoke writeback_inodes_sb if no writeback is currently underway.
1195 * Returns 1 if writeback was started, 0 if not.
1196 */
1197int writeback_inodes_sb_if_idle(struct super_block *sb)
1198{
1199 if (!writeback_in_progress(sb->s_bdi)) {
1200 writeback_inodes_sb(sb);
1201 return 1;
1202 } else
1203 return 0;
1204}
1205EXPORT_SYMBOL(writeback_inodes_sb_if_idle);
1206
1207/**
1190 * sync_inodes_sb - sync sb inode pages 1208 * sync_inodes_sb - sync sb inode pages
1191 * @sb: the superblock 1209 * @sb: the superblock
1192 * 1210 *
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index c18913a777ae..a9f5e137f1d3 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -828,6 +828,9 @@ static ssize_t fuse_fill_write_pages(struct fuse_req *req,
828 if (!page) 828 if (!page)
829 break; 829 break;
830 830
831 if (mapping_writably_mapped(mapping))
832 flush_dcache_page(page);
833
831 pagefault_disable(); 834 pagefault_disable();
832 tmp = iov_iter_copy_from_user_atomic(page, ii, offset, bytes); 835 tmp = iov_iter_copy_from_user_atomic(page, ii, offset, bytes);
833 pagefault_enable(); 836 pagefault_enable();
diff --git a/fs/gfs2/bmap.c b/fs/gfs2/bmap.c
index 6d47379e794b..583e823307ae 100644
--- a/fs/gfs2/bmap.c
+++ b/fs/gfs2/bmap.c
@@ -541,7 +541,7 @@ static int gfs2_bmap_alloc(struct inode *inode, const sector_t lblock,
541 *ptr++ = cpu_to_be64(bn++); 541 *ptr++ = cpu_to_be64(bn++);
542 break; 542 break;
543 } 543 }
544 } while (state != ALLOC_DATA); 544 } while ((state != ALLOC_DATA) || !dblock);
545 545
546 ip->i_height = height; 546 ip->i_height = height;
547 gfs2_add_inode_blocks(&ip->i_inode, alloced); 547 gfs2_add_inode_blocks(&ip->i_inode, alloced);
diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c
index 4eb308aa3234..a6abbae8a278 100644
--- a/fs/gfs2/file.c
+++ b/fs/gfs2/file.c
@@ -569,6 +569,40 @@ static int gfs2_fsync(struct file *file, struct dentry *dentry, int datasync)
569 return ret; 569 return ret;
570} 570}
571 571
572/**
573 * gfs2_file_aio_write - Perform a write to a file
574 * @iocb: The io context
575 * @iov: The data to write
576 * @nr_segs: Number of @iov segments
577 * @pos: The file position
578 *
579 * We have to do a lock/unlock here to refresh the inode size for
580 * O_APPEND writes, otherwise we can land up writing at the wrong
581 * offset. There is still a race, but provided the app is using its
582 * own file locking, this will make O_APPEND work as expected.
583 *
584 */
585
586static ssize_t gfs2_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
587 unsigned long nr_segs, loff_t pos)
588{
589 struct file *file = iocb->ki_filp;
590
591 if (file->f_flags & O_APPEND) {
592 struct dentry *dentry = file->f_dentry;
593 struct gfs2_inode *ip = GFS2_I(dentry->d_inode);
594 struct gfs2_holder gh;
595 int ret;
596
597 ret = gfs2_glock_nq_init(ip->i_gl, LM_ST_SHARED, 0, &gh);
598 if (ret)
599 return ret;
600 gfs2_glock_dq_uninit(&gh);
601 }
602
603 return generic_file_aio_write(iocb, iov, nr_segs, pos);
604}
605
572#ifdef CONFIG_GFS2_FS_LOCKING_DLM 606#ifdef CONFIG_GFS2_FS_LOCKING_DLM
573 607
574/** 608/**
@@ -711,7 +745,7 @@ const struct file_operations gfs2_file_fops = {
711 .read = do_sync_read, 745 .read = do_sync_read,
712 .aio_read = generic_file_aio_read, 746 .aio_read = generic_file_aio_read,
713 .write = do_sync_write, 747 .write = do_sync_write,
714 .aio_write = generic_file_aio_write, 748 .aio_write = gfs2_file_aio_write,
715 .unlocked_ioctl = gfs2_ioctl, 749 .unlocked_ioctl = gfs2_ioctl,
716 .mmap = gfs2_mmap, 750 .mmap = gfs2_mmap,
717 .open = gfs2_open, 751 .open = gfs2_open,
@@ -741,7 +775,7 @@ const struct file_operations gfs2_file_fops_nolock = {
741 .read = do_sync_read, 775 .read = do_sync_read,
742 .aio_read = generic_file_aio_read, 776 .aio_read = generic_file_aio_read,
743 .write = do_sync_write, 777 .write = do_sync_write,
744 .aio_write = generic_file_aio_write, 778 .aio_write = gfs2_file_aio_write,
745 .unlocked_ioctl = gfs2_ioctl, 779 .unlocked_ioctl = gfs2_ioctl,
746 .mmap = gfs2_mmap, 780 .mmap = gfs2_mmap,
747 .open = gfs2_open, 781 .open = gfs2_open,
diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
index f455a03a09e2..f42663325931 100644
--- a/fs/gfs2/glock.c
+++ b/fs/gfs2/glock.c
@@ -769,6 +769,7 @@ int gfs2_glock_get(struct gfs2_sbd *sdp, u64 number,
769 if (!gl) 769 if (!gl)
770 return -ENOMEM; 770 return -ENOMEM;
771 771
772 atomic_inc(&sdp->sd_glock_disposal);
772 gl->gl_flags = 0; 773 gl->gl_flags = 0;
773 gl->gl_name = name; 774 gl->gl_name = name;
774 atomic_set(&gl->gl_ref, 1); 775 atomic_set(&gl->gl_ref, 1);
@@ -1538,6 +1539,9 @@ void gfs2_gl_hash_clear(struct gfs2_sbd *sdp)
1538 up_write(&gfs2_umount_flush_sem); 1539 up_write(&gfs2_umount_flush_sem);
1539 msleep(10); 1540 msleep(10);
1540 } 1541 }
1542 flush_workqueue(glock_workqueue);
1543 wait_event(sdp->sd_glock_wait, atomic_read(&sdp->sd_glock_disposal) == 0);
1544 gfs2_dump_lockstate(sdp);
1541} 1545}
1542 1546
1543void gfs2_glock_finish_truncate(struct gfs2_inode *ip) 1547void gfs2_glock_finish_truncate(struct gfs2_inode *ip)
diff --git a/fs/gfs2/glock.h b/fs/gfs2/glock.h
index 13f0bd228132..c0262faf4725 100644
--- a/fs/gfs2/glock.h
+++ b/fs/gfs2/glock.h
@@ -123,7 +123,7 @@ struct lm_lockops {
123 int (*lm_mount) (struct gfs2_sbd *sdp, const char *fsname); 123 int (*lm_mount) (struct gfs2_sbd *sdp, const char *fsname);
124 void (*lm_unmount) (struct gfs2_sbd *sdp); 124 void (*lm_unmount) (struct gfs2_sbd *sdp);
125 void (*lm_withdraw) (struct gfs2_sbd *sdp); 125 void (*lm_withdraw) (struct gfs2_sbd *sdp);
126 void (*lm_put_lock) (struct kmem_cache *cachep, void *gl); 126 void (*lm_put_lock) (struct kmem_cache *cachep, struct gfs2_glock *gl);
127 unsigned int (*lm_lock) (struct gfs2_glock *gl, 127 unsigned int (*lm_lock) (struct gfs2_glock *gl,
128 unsigned int req_state, unsigned int flags); 128 unsigned int req_state, unsigned int flags);
129 void (*lm_cancel) (struct gfs2_glock *gl); 129 void (*lm_cancel) (struct gfs2_glock *gl);
diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h
index 4792200978c8..bc0ad158e6b4 100644
--- a/fs/gfs2/incore.h
+++ b/fs/gfs2/incore.h
@@ -544,6 +544,8 @@ struct gfs2_sbd {
544 struct gfs2_holder sd_live_gh; 544 struct gfs2_holder sd_live_gh;
545 struct gfs2_glock *sd_rename_gl; 545 struct gfs2_glock *sd_rename_gl;
546 struct gfs2_glock *sd_trans_gl; 546 struct gfs2_glock *sd_trans_gl;
547 wait_queue_head_t sd_glock_wait;
548 atomic_t sd_glock_disposal;
547 549
548 /* Inode Stuff */ 550 /* Inode Stuff */
549 551
diff --git a/fs/gfs2/lock_dlm.c b/fs/gfs2/lock_dlm.c
index 46df988323bc..0e5e0e7022e5 100644
--- a/fs/gfs2/lock_dlm.c
+++ b/fs/gfs2/lock_dlm.c
@@ -21,6 +21,7 @@ static void gdlm_ast(void *arg)
21{ 21{
22 struct gfs2_glock *gl = arg; 22 struct gfs2_glock *gl = arg;
23 unsigned ret = gl->gl_state; 23 unsigned ret = gl->gl_state;
24 struct gfs2_sbd *sdp = gl->gl_sbd;
24 25
25 BUG_ON(gl->gl_lksb.sb_flags & DLM_SBF_DEMOTED); 26 BUG_ON(gl->gl_lksb.sb_flags & DLM_SBF_DEMOTED);
26 27
@@ -30,6 +31,8 @@ static void gdlm_ast(void *arg)
30 switch (gl->gl_lksb.sb_status) { 31 switch (gl->gl_lksb.sb_status) {
31 case -DLM_EUNLOCK: /* Unlocked, so glock can be freed */ 32 case -DLM_EUNLOCK: /* Unlocked, so glock can be freed */
32 kmem_cache_free(gfs2_glock_cachep, gl); 33 kmem_cache_free(gfs2_glock_cachep, gl);
34 if (atomic_dec_and_test(&sdp->sd_glock_disposal))
35 wake_up(&sdp->sd_glock_wait);
33 return; 36 return;
34 case -DLM_ECANCEL: /* Cancel while getting lock */ 37 case -DLM_ECANCEL: /* Cancel while getting lock */
35 ret |= LM_OUT_CANCELED; 38 ret |= LM_OUT_CANCELED;
@@ -164,14 +167,16 @@ static unsigned int gdlm_lock(struct gfs2_glock *gl,
164 return LM_OUT_ASYNC; 167 return LM_OUT_ASYNC;
165} 168}
166 169
167static void gdlm_put_lock(struct kmem_cache *cachep, void *ptr) 170static void gdlm_put_lock(struct kmem_cache *cachep, struct gfs2_glock *gl)
168{ 171{
169 struct gfs2_glock *gl = ptr; 172 struct gfs2_sbd *sdp = gl->gl_sbd;
170 struct lm_lockstruct *ls = &gl->gl_sbd->sd_lockstruct; 173 struct lm_lockstruct *ls = &sdp->sd_lockstruct;
171 int error; 174 int error;
172 175
173 if (gl->gl_lksb.sb_lkid == 0) { 176 if (gl->gl_lksb.sb_lkid == 0) {
174 kmem_cache_free(cachep, gl); 177 kmem_cache_free(cachep, gl);
178 if (atomic_dec_and_test(&sdp->sd_glock_disposal))
179 wake_up(&sdp->sd_glock_wait);
175 return; 180 return;
176 } 181 }
177 182
diff --git a/fs/gfs2/meta_io.c b/fs/gfs2/meta_io.c
index cb8d7a93d5ec..6f68a5f18eb8 100644
--- a/fs/gfs2/meta_io.c
+++ b/fs/gfs2/meta_io.c
@@ -121,7 +121,7 @@ struct inode *gfs2_aspace_get(struct gfs2_sbd *sdp)
121 if (aspace) { 121 if (aspace) {
122 mapping_set_gfp_mask(aspace->i_mapping, GFP_NOFS); 122 mapping_set_gfp_mask(aspace->i_mapping, GFP_NOFS);
123 aspace->i_mapping->a_ops = &aspace_aops; 123 aspace->i_mapping->a_ops = &aspace_aops;
124 aspace->i_size = ~0ULL; 124 aspace->i_size = MAX_LFS_FILESIZE;
125 ip = GFS2_I(aspace); 125 ip = GFS2_I(aspace);
126 clear_bit(GIF_USER, &ip->i_flags); 126 clear_bit(GIF_USER, &ip->i_flags);
127 insert_inode_hash(aspace); 127 insert_inode_hash(aspace);
diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c
index edfee24f3636..a86ed6381566 100644
--- a/fs/gfs2/ops_fstype.c
+++ b/fs/gfs2/ops_fstype.c
@@ -82,6 +82,8 @@ static struct gfs2_sbd *init_sbd(struct super_block *sb)
82 82
83 gfs2_tune_init(&sdp->sd_tune); 83 gfs2_tune_init(&sdp->sd_tune);
84 84
85 init_waitqueue_head(&sdp->sd_glock_wait);
86 atomic_set(&sdp->sd_glock_disposal, 0);
85 spin_lock_init(&sdp->sd_statfs_spin); 87 spin_lock_init(&sdp->sd_statfs_spin);
86 88
87 spin_lock_init(&sdp->sd_rindex_spin); 89 spin_lock_init(&sdp->sd_rindex_spin);
@@ -723,7 +725,7 @@ static int init_journal(struct gfs2_sbd *sdp, int undo)
723 goto fail; 725 goto fail;
724 } 726 }
725 727
726 error = -EINVAL; 728 error = -EUSERS;
727 if (!gfs2_jindex_size(sdp)) { 729 if (!gfs2_jindex_size(sdp)) {
728 fs_err(sdp, "no journals!\n"); 730 fs_err(sdp, "no journals!\n");
729 goto fail_jindex; 731 goto fail_jindex;
@@ -983,9 +985,17 @@ static const match_table_t nolock_tokens = {
983 { Opt_err, NULL }, 985 { Opt_err, NULL },
984}; 986};
985 987
988static void nolock_put_lock(struct kmem_cache *cachep, struct gfs2_glock *gl)
989{
990 struct gfs2_sbd *sdp = gl->gl_sbd;
991 kmem_cache_free(cachep, gl);
992 if (atomic_dec_and_test(&sdp->sd_glock_disposal))
993 wake_up(&sdp->sd_glock_wait);
994}
995
986static const struct lm_lockops nolock_ops = { 996static const struct lm_lockops nolock_ops = {
987 .lm_proto_name = "lock_nolock", 997 .lm_proto_name = "lock_nolock",
988 .lm_put_lock = kmem_cache_free, 998 .lm_put_lock = nolock_put_lock,
989 .lm_tokens = &nolock_tokens, 999 .lm_tokens = &nolock_tokens,
990}; 1000};
991 1001
diff --git a/fs/gfs2/ops_inode.c b/fs/gfs2/ops_inode.c
index 247436c10deb..84350e1be66d 100644
--- a/fs/gfs2/ops_inode.c
+++ b/fs/gfs2/ops_inode.c
@@ -748,7 +748,7 @@ static int gfs2_rename(struct inode *odir, struct dentry *odentry,
748 struct gfs2_rgrpd *nrgd; 748 struct gfs2_rgrpd *nrgd;
749 unsigned int num_gh; 749 unsigned int num_gh;
750 int dir_rename = 0; 750 int dir_rename = 0;
751 int alloc_required; 751 int alloc_required = 0;
752 unsigned int x; 752 unsigned int x;
753 int error; 753 int error;
754 754
@@ -867,7 +867,9 @@ static int gfs2_rename(struct inode *odir, struct dentry *odentry,
867 goto out_gunlock; 867 goto out_gunlock;
868 } 868 }
869 869
870 alloc_required = error = gfs2_diradd_alloc_required(ndir, &ndentry->d_name); 870 if (nip == NULL)
871 alloc_required = gfs2_diradd_alloc_required(ndir, &ndentry->d_name);
872 error = alloc_required;
871 if (error < 0) 873 if (error < 0)
872 goto out_gunlock; 874 goto out_gunlock;
873 error = 0; 875 error = 0;
@@ -1086,7 +1088,8 @@ static void *gfs2_follow_link(struct dentry *dentry, struct nameidata *nd)
1086 error = vfs_follow_link(nd, buf); 1088 error = vfs_follow_link(nd, buf);
1087 if (buf != array) 1089 if (buf != array)
1088 kfree(buf); 1090 kfree(buf);
1089 } 1091 } else
1092 path_put(&nd->path);
1090 1093
1091 return ERR_PTR(error); 1094 return ERR_PTR(error);
1092} 1095}
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index 0608f490c295..503b842f3ba2 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -591,11 +591,7 @@ static int gfs2_ri_update(struct gfs2_inode *ip)
591 u64 rgrp_count = ip->i_disksize; 591 u64 rgrp_count = ip->i_disksize;
592 int error; 592 int error;
593 593
594 if (do_div(rgrp_count, sizeof(struct gfs2_rindex))) { 594 do_div(rgrp_count, sizeof(struct gfs2_rindex));
595 gfs2_consist_inode(ip);
596 return -EIO;
597 }
598
599 clear_rgrpdi(sdp); 595 clear_rgrpdi(sdp);
600 596
601 file_ra_state_init(&ra_state, inode->i_mapping); 597 file_ra_state_init(&ra_state, inode->i_mapping);
@@ -915,7 +911,7 @@ void gfs2_rgrp_repolish_clones(struct gfs2_rgrpd *rgd)
915struct gfs2_alloc *gfs2_alloc_get(struct gfs2_inode *ip) 911struct gfs2_alloc *gfs2_alloc_get(struct gfs2_inode *ip)
916{ 912{
917 BUG_ON(ip->i_alloc != NULL); 913 BUG_ON(ip->i_alloc != NULL);
918 ip->i_alloc = kzalloc(sizeof(struct gfs2_alloc), GFP_KERNEL); 914 ip->i_alloc = kzalloc(sizeof(struct gfs2_alloc), GFP_NOFS);
919 return ip->i_alloc; 915 return ip->i_alloc;
920} 916}
921 917
diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c
index c282ad41f3d1..b9dd3da22c0a 100644
--- a/fs/gfs2/super.c
+++ b/fs/gfs2/super.c
@@ -21,6 +21,7 @@
21#include <linux/gfs2_ondisk.h> 21#include <linux/gfs2_ondisk.h>
22#include <linux/crc32.h> 22#include <linux/crc32.h>
23#include <linux/time.h> 23#include <linux/time.h>
24#include <linux/wait.h>
24 25
25#include "gfs2.h" 26#include "gfs2.h"
26#include "incore.h" 27#include "incore.h"
diff --git a/fs/gfs2/xattr.c b/fs/gfs2/xattr.c
index 8a04108e0c22..c2ebdf2c01d4 100644
--- a/fs/gfs2/xattr.c
+++ b/fs/gfs2/xattr.c
@@ -1296,6 +1296,7 @@ fail:
1296 1296
1297int gfs2_xattr_acl_chmod(struct gfs2_inode *ip, struct iattr *attr, char *data) 1297int gfs2_xattr_acl_chmod(struct gfs2_inode *ip, struct iattr *attr, char *data)
1298{ 1298{
1299 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode);
1299 struct gfs2_ea_location el; 1300 struct gfs2_ea_location el;
1300 struct buffer_head *dibh; 1301 struct buffer_head *dibh;
1301 int error; 1302 int error;
@@ -1305,16 +1306,17 @@ int gfs2_xattr_acl_chmod(struct gfs2_inode *ip, struct iattr *attr, char *data)
1305 return error; 1306 return error;
1306 1307
1307 if (GFS2_EA_IS_STUFFED(el.el_ea)) { 1308 if (GFS2_EA_IS_STUFFED(el.el_ea)) {
1308 error = gfs2_trans_begin(GFS2_SB(&ip->i_inode), RES_DINODE + RES_EATTR, 0); 1309 error = gfs2_trans_begin(sdp, RES_DINODE + RES_EATTR, 0);
1309 if (error) 1310 if (error == 0) {
1310 return error; 1311 gfs2_trans_add_bh(ip->i_gl, el.el_bh, 1);
1311 1312 memcpy(GFS2_EA2DATA(el.el_ea), data,
1312 gfs2_trans_add_bh(ip->i_gl, el.el_bh, 1); 1313 GFS2_EA_DATA_LEN(el.el_ea));
1313 memcpy(GFS2_EA2DATA(el.el_ea), data, 1314 }
1314 GFS2_EA_DATA_LEN(el.el_ea)); 1315 } else {
1315 } else
1316 error = ea_acl_chmod_unstuffed(ip, el.el_ea, data); 1316 error = ea_acl_chmod_unstuffed(ip, el.el_ea, data);
1317 }
1317 1318
1319 brelse(el.el_bh);
1318 if (error) 1320 if (error)
1319 return error; 1321 return error;
1320 1322
@@ -1327,8 +1329,7 @@ int gfs2_xattr_acl_chmod(struct gfs2_inode *ip, struct iattr *attr, char *data)
1327 brelse(dibh); 1329 brelse(dibh);
1328 } 1330 }
1329 1331
1330 gfs2_trans_end(GFS2_SB(&ip->i_inode)); 1332 gfs2_trans_end(sdp);
1331
1332 return error; 1333 return error;
1333} 1334}
1334 1335
diff --git a/fs/hppfs/hppfs.c b/fs/hppfs/hppfs.c
index a5089a6dd67a..7239efc690d8 100644
--- a/fs/hppfs/hppfs.c
+++ b/fs/hppfs/hppfs.c
@@ -646,22 +646,27 @@ static const struct super_operations hppfs_sbops = {
646static int hppfs_readlink(struct dentry *dentry, char __user *buffer, 646static int hppfs_readlink(struct dentry *dentry, char __user *buffer,
647 int buflen) 647 int buflen)
648{ 648{
649 struct dentry *proc_dentry; 649 struct dentry *proc_dentry = HPPFS_I(dentry->d_inode)->proc_dentry;
650
651 proc_dentry = HPPFS_I(dentry->d_inode)->proc_dentry;
652 return proc_dentry->d_inode->i_op->readlink(proc_dentry, buffer, 650 return proc_dentry->d_inode->i_op->readlink(proc_dentry, buffer,
653 buflen); 651 buflen);
654} 652}
655 653
656static void *hppfs_follow_link(struct dentry *dentry, struct nameidata *nd) 654static void *hppfs_follow_link(struct dentry *dentry, struct nameidata *nd)
657{ 655{
658 struct dentry *proc_dentry; 656 struct dentry *proc_dentry = HPPFS_I(dentry->d_inode)->proc_dentry;
659
660 proc_dentry = HPPFS_I(dentry->d_inode)->proc_dentry;
661 657
662 return proc_dentry->d_inode->i_op->follow_link(proc_dentry, nd); 658 return proc_dentry->d_inode->i_op->follow_link(proc_dentry, nd);
663} 659}
664 660
661static void hppfs_put_link(struct dentry *dentry, struct nameidata *nd,
662 void *cookie)
663{
664 struct dentry *proc_dentry = HPPFS_I(dentry->d_inode)->proc_dentry;
665
666 if (proc_dentry->d_inode->i_op->put_link)
667 proc_dentry->d_inode->i_op->put_link(proc_dentry, nd, cookie);
668}
669
665static const struct inode_operations hppfs_dir_iops = { 670static const struct inode_operations hppfs_dir_iops = {
666 .lookup = hppfs_lookup, 671 .lookup = hppfs_lookup,
667}; 672};
@@ -669,6 +674,7 @@ static const struct inode_operations hppfs_dir_iops = {
669static const struct inode_operations hppfs_link_iops = { 674static const struct inode_operations hppfs_link_iops = {
670 .readlink = hppfs_readlink, 675 .readlink = hppfs_readlink,
671 .follow_link = hppfs_follow_link, 676 .follow_link = hppfs_follow_link,
677 .put_link = hppfs_put_link,
672}; 678};
673 679
674static struct inode *get_inode(struct super_block *sb, struct dentry *dentry) 680static struct inode *get_inode(struct super_block *sb, struct dentry *dentry)
diff --git a/fs/jbd2/checkpoint.c b/fs/jbd2/checkpoint.c
index ca0f5eb62b20..886849370950 100644
--- a/fs/jbd2/checkpoint.c
+++ b/fs/jbd2/checkpoint.c
@@ -22,6 +22,7 @@
22#include <linux/jbd2.h> 22#include <linux/jbd2.h>
23#include <linux/errno.h> 23#include <linux/errno.h>
24#include <linux/slab.h> 24#include <linux/slab.h>
25#include <linux/blkdev.h>
25#include <trace/events/jbd2.h> 26#include <trace/events/jbd2.h>
26 27
27/* 28/*
@@ -515,6 +516,20 @@ int jbd2_cleanup_journal_tail(journal_t *journal)
515 journal->j_tail_sequence = first_tid; 516 journal->j_tail_sequence = first_tid;
516 journal->j_tail = blocknr; 517 journal->j_tail = blocknr;
517 spin_unlock(&journal->j_state_lock); 518 spin_unlock(&journal->j_state_lock);
519
520 /*
521 * If there is an external journal, we need to make sure that
522 * any data blocks that were recently written out --- perhaps
523 * by jbd2_log_do_checkpoint() --- are flushed out before we
524 * drop the transactions from the external journal. It's
525 * unlikely this will be necessary, especially with a
526 * appropriately sized journal, but we need this to guarantee
527 * correctness. Fortunately jbd2_cleanup_journal_tail()
528 * doesn't get called all that often.
529 */
530 if ((journal->j_fs_dev != journal->j_dev) &&
531 (journal->j_flags & JBD2_BARRIER))
532 blkdev_issue_flush(journal->j_fs_dev, NULL);
518 if (!(journal->j_flags & JBD2_ABORT)) 533 if (!(journal->j_flags & JBD2_ABORT))
519 jbd2_journal_update_superblock(journal, 1); 534 jbd2_journal_update_superblock(journal, 1);
520 return 0; 535 return 0;
diff --git a/fs/jbd2/commit.c b/fs/jbd2/commit.c
index 6a10238d2c63..1bc74b6f26d2 100644
--- a/fs/jbd2/commit.c
+++ b/fs/jbd2/commit.c
@@ -259,6 +259,7 @@ static int journal_submit_data_buffers(journal_t *journal,
259 ret = err; 259 ret = err;
260 spin_lock(&journal->j_list_lock); 260 spin_lock(&journal->j_list_lock);
261 J_ASSERT(jinode->i_transaction == commit_transaction); 261 J_ASSERT(jinode->i_transaction == commit_transaction);
262 commit_transaction->t_flushed_data_blocks = 1;
262 jinode->i_flags &= ~JI_COMMIT_RUNNING; 263 jinode->i_flags &= ~JI_COMMIT_RUNNING;
263 wake_up_bit(&jinode->i_flags, __JI_COMMIT_RUNNING); 264 wake_up_bit(&jinode->i_flags, __JI_COMMIT_RUNNING);
264 } 265 }
@@ -708,8 +709,17 @@ start_journal_io:
708 } 709 }
709 } 710 }
710 711
711 /* Done it all: now write the commit record asynchronously. */ 712 /*
713 * If the journal is not located on the file system device,
714 * then we must flush the file system device before we issue
715 * the commit record
716 */
717 if (commit_transaction->t_flushed_data_blocks &&
718 (journal->j_fs_dev != journal->j_dev) &&
719 (journal->j_flags & JBD2_BARRIER))
720 blkdev_issue_flush(journal->j_fs_dev, NULL);
712 721
722 /* Done it all: now write the commit record asynchronously. */
713 if (JBD2_HAS_INCOMPAT_FEATURE(journal, 723 if (JBD2_HAS_INCOMPAT_FEATURE(journal,
714 JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT)) { 724 JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT)) {
715 err = journal_submit_commit_record(journal, commit_transaction, 725 err = journal_submit_commit_record(journal, commit_transaction,
@@ -720,13 +730,6 @@ start_journal_io:
720 blkdev_issue_flush(journal->j_dev, NULL); 730 blkdev_issue_flush(journal->j_dev, NULL);
721 } 731 }
722 732
723 /*
724 * This is the right place to wait for data buffers both for ASYNC
725 * and !ASYNC commit. If commit is ASYNC, we need to wait only after
726 * the commit block went to disk (which happens above). If commit is
727 * SYNC, we need to wait for data buffers before we start writing
728 * commit block, which happens below in such setting.
729 */
730 err = journal_finish_inode_data_buffers(journal, commit_transaction); 733 err = journal_finish_inode_data_buffers(journal, commit_transaction);
731 if (err) { 734 if (err) {
732 printk(KERN_WARNING 735 printk(KERN_WARNING
diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c
index 17af879e6e9e..ac0d027595d0 100644
--- a/fs/jbd2/journal.c
+++ b/fs/jbd2/journal.c
@@ -814,7 +814,7 @@ static journal_t * journal_init_common (void)
814 journal_t *journal; 814 journal_t *journal;
815 int err; 815 int err;
816 816
817 journal = kzalloc(sizeof(*journal), GFP_KERNEL|__GFP_NOFAIL); 817 journal = kzalloc(sizeof(*journal), GFP_KERNEL);
818 if (!journal) 818 if (!journal)
819 goto fail; 819 goto fail;
820 820
diff --git a/fs/namei.c b/fs/namei.c
index 68921d9b5302..a4855af776a8 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -232,6 +232,7 @@ int generic_permission(struct inode *inode, int mask,
232 /* 232 /*
233 * Searching includes executable on directories, else just read. 233 * Searching includes executable on directories, else just read.
234 */ 234 */
235 mask &= MAY_READ | MAY_WRITE | MAY_EXEC;
235 if (mask == MAY_READ || (S_ISDIR(inode->i_mode) && !(mask & MAY_WRITE))) 236 if (mask == MAY_READ || (S_ISDIR(inode->i_mode) && !(mask & MAY_WRITE)))
236 if (capable(CAP_DAC_READ_SEARCH)) 237 if (capable(CAP_DAC_READ_SEARCH))
237 return 0; 238 return 0;
@@ -560,6 +561,7 @@ static __always_inline int __do_follow_link(struct path *path, struct nameidata
560 dget(dentry); 561 dget(dentry);
561 } 562 }
562 mntget(path->mnt); 563 mntget(path->mnt);
564 nd->last_type = LAST_BIND;
563 cookie = dentry->d_inode->i_op->follow_link(dentry, nd); 565 cookie = dentry->d_inode->i_op->follow_link(dentry, nd);
564 error = PTR_ERR(cookie); 566 error = PTR_ERR(cookie);
565 if (!IS_ERR(cookie)) { 567 if (!IS_ERR(cookie)) {
@@ -821,6 +823,17 @@ fail:
821} 823}
822 824
823/* 825/*
826 * This is a temporary kludge to deal with "automount" symlinks; proper
827 * solution is to trigger them on follow_mount(), so that do_lookup()
828 * would DTRT. To be killed before 2.6.34-final.
829 */
830static inline int follow_on_final(struct inode *inode, unsigned lookup_flags)
831{
832 return inode && unlikely(inode->i_op->follow_link) &&
833 ((lookup_flags & LOOKUP_FOLLOW) || S_ISDIR(inode->i_mode));
834}
835
836/*
824 * Name resolution. 837 * Name resolution.
825 * This is the basic name resolution function, turning a pathname into 838 * This is the basic name resolution function, turning a pathname into
826 * the final dentry. We expect 'base' to be positive and a directory. 839 * the final dentry. We expect 'base' to be positive and a directory.
@@ -940,8 +953,7 @@ last_component:
940 if (err) 953 if (err)
941 break; 954 break;
942 inode = next.dentry->d_inode; 955 inode = next.dentry->d_inode;
943 if ((lookup_flags & LOOKUP_FOLLOW) 956 if (follow_on_final(inode, lookup_flags)) {
944 && inode && inode->i_op->follow_link) {
945 err = do_follow_link(&next, nd); 957 err = do_follow_link(&next, nd);
946 if (err) 958 if (err)
947 goto return_err; 959 goto return_err;
@@ -1602,11 +1614,12 @@ struct file *do_filp_open(int dfd, const char *pathname,
1602 struct file *filp; 1614 struct file *filp;
1603 struct nameidata nd; 1615 struct nameidata nd;
1604 int error; 1616 int error;
1605 struct path path, save; 1617 struct path path;
1606 struct dentry *dir; 1618 struct dentry *dir;
1607 int count = 0; 1619 int count = 0;
1608 int will_truncate; 1620 int will_truncate;
1609 int flag = open_to_namei_flags(open_flag); 1621 int flag = open_to_namei_flags(open_flag);
1622 int force_reval = 0;
1610 1623
1611 /* 1624 /*
1612 * O_SYNC is implemented as __O_SYNC|O_DSYNC. As many places only 1625 * O_SYNC is implemented as __O_SYNC|O_DSYNC. As many places only
@@ -1618,7 +1631,7 @@ struct file *do_filp_open(int dfd, const char *pathname,
1618 open_flag |= O_DSYNC; 1631 open_flag |= O_DSYNC;
1619 1632
1620 if (!acc_mode) 1633 if (!acc_mode)
1621 acc_mode = MAY_OPEN | ACC_MODE(flag); 1634 acc_mode = MAY_OPEN | ACC_MODE(open_flag);
1622 1635
1623 /* O_TRUNC implies we need access checks for write permissions */ 1636 /* O_TRUNC implies we need access checks for write permissions */
1624 if (flag & O_TRUNC) 1637 if (flag & O_TRUNC)
@@ -1658,9 +1671,12 @@ struct file *do_filp_open(int dfd, const char *pathname,
1658 /* 1671 /*
1659 * Create - we need to know the parent. 1672 * Create - we need to know the parent.
1660 */ 1673 */
1674reval:
1661 error = path_init(dfd, pathname, LOOKUP_PARENT, &nd); 1675 error = path_init(dfd, pathname, LOOKUP_PARENT, &nd);
1662 if (error) 1676 if (error)
1663 return ERR_PTR(error); 1677 return ERR_PTR(error);
1678 if (force_reval)
1679 nd.flags |= LOOKUP_REVAL;
1664 error = path_walk(pathname, &nd); 1680 error = path_walk(pathname, &nd);
1665 if (error) { 1681 if (error) {
1666 if (nd.root.mnt) 1682 if (nd.root.mnt)
@@ -1730,8 +1746,7 @@ do_last:
1730 if (nd.root.mnt) 1746 if (nd.root.mnt)
1731 path_put(&nd.root); 1747 path_put(&nd.root);
1732 if (!IS_ERR(filp)) { 1748 if (!IS_ERR(filp)) {
1733 error = ima_path_check(&filp->f_path, filp->f_mode & 1749 error = ima_file_check(filp, acc_mode);
1734 (MAY_READ | MAY_WRITE | MAY_EXEC));
1735 if (error) { 1750 if (error) {
1736 fput(filp); 1751 fput(filp);
1737 filp = ERR_PTR(error); 1752 filp = ERR_PTR(error);
@@ -1791,8 +1806,7 @@ ok:
1791 } 1806 }
1792 filp = nameidata_to_filp(&nd); 1807 filp = nameidata_to_filp(&nd);
1793 if (!IS_ERR(filp)) { 1808 if (!IS_ERR(filp)) {
1794 error = ima_path_check(&filp->f_path, filp->f_mode & 1809 error = ima_file_check(filp, acc_mode);
1795 (MAY_READ | MAY_WRITE | MAY_EXEC));
1796 if (error) { 1810 if (error) {
1797 fput(filp); 1811 fput(filp);
1798 filp = ERR_PTR(error); 1812 filp = ERR_PTR(error);
@@ -1852,17 +1866,7 @@ do_link:
1852 error = security_inode_follow_link(path.dentry, &nd); 1866 error = security_inode_follow_link(path.dentry, &nd);
1853 if (error) 1867 if (error)
1854 goto exit_dput; 1868 goto exit_dput;
1855 save = nd.path;
1856 path_get(&save);
1857 error = __do_follow_link(&path, &nd); 1869 error = __do_follow_link(&path, &nd);
1858 if (error == -ESTALE) {
1859 /* nd.path had been dropped */
1860 nd.path = save;
1861 path_get(&nd.path);
1862 nd.flags |= LOOKUP_REVAL;
1863 error = __do_follow_link(&path, &nd);
1864 }
1865 path_put(&save);
1866 path_put(&path); 1870 path_put(&path);
1867 if (error) { 1871 if (error) {
1868 /* Does someone understand code flow here? Or it is only 1872 /* Does someone understand code flow here? Or it is only
@@ -1872,6 +1876,10 @@ do_link:
1872 release_open_intent(&nd); 1876 release_open_intent(&nd);
1873 if (nd.root.mnt) 1877 if (nd.root.mnt)
1874 path_put(&nd.root); 1878 path_put(&nd.root);
1879 if (error == -ESTALE && !force_reval) {
1880 force_reval = 1;
1881 goto reval;
1882 }
1875 return ERR_PTR(error); 1883 return ERR_PTR(error);
1876 } 1884 }
1877 nd.flags &= ~LOOKUP_PARENT; 1885 nd.flags &= ~LOOKUP_PARENT;
diff --git a/fs/namespace.c b/fs/namespace.c
index 7d70d63ceb29..c768f733c8d6 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -965,10 +965,12 @@ EXPORT_SYMBOL(may_umount_tree);
965int may_umount(struct vfsmount *mnt) 965int may_umount(struct vfsmount *mnt)
966{ 966{
967 int ret = 1; 967 int ret = 1;
968 down_read(&namespace_sem);
968 spin_lock(&vfsmount_lock); 969 spin_lock(&vfsmount_lock);
969 if (propagate_mount_busy(mnt, 2)) 970 if (propagate_mount_busy(mnt, 2))
970 ret = 0; 971 ret = 0;
971 spin_unlock(&vfsmount_lock); 972 spin_unlock(&vfsmount_lock);
973 up_read(&namespace_sem);
972 return ret; 974 return ret;
973} 975}
974 976
@@ -1352,12 +1354,12 @@ static int attach_recursive_mnt(struct vfsmount *source_mnt,
1352 if (err) 1354 if (err)
1353 goto out_cleanup_ids; 1355 goto out_cleanup_ids;
1354 1356
1357 spin_lock(&vfsmount_lock);
1358
1355 if (IS_MNT_SHARED(dest_mnt)) { 1359 if (IS_MNT_SHARED(dest_mnt)) {
1356 for (p = source_mnt; p; p = next_mnt(p, source_mnt)) 1360 for (p = source_mnt; p; p = next_mnt(p, source_mnt))
1357 set_mnt_shared(p); 1361 set_mnt_shared(p);
1358 } 1362 }
1359
1360 spin_lock(&vfsmount_lock);
1361 if (parent_path) { 1363 if (parent_path) {
1362 detach_mnt(source_mnt, parent_path); 1364 detach_mnt(source_mnt, parent_path);
1363 attach_mnt(source_mnt, path); 1365 attach_mnt(source_mnt, path);
@@ -1534,8 +1536,12 @@ static int do_remount(struct path *path, int flags, int mnt_flags,
1534 err = change_mount_flags(path->mnt, flags); 1536 err = change_mount_flags(path->mnt, flags);
1535 else 1537 else
1536 err = do_remount_sb(sb, flags, data, 0); 1538 err = do_remount_sb(sb, flags, data, 0);
1537 if (!err) 1539 if (!err) {
1540 spin_lock(&vfsmount_lock);
1541 mnt_flags |= path->mnt->mnt_flags & MNT_PNODE_MASK;
1538 path->mnt->mnt_flags = mnt_flags; 1542 path->mnt->mnt_flags = mnt_flags;
1543 spin_unlock(&vfsmount_lock);
1544 }
1539 up_write(&sb->s_umount); 1545 up_write(&sb->s_umount);
1540 if (!err) { 1546 if (!err) {
1541 security_sb_post_remount(path->mnt, flags, data); 1547 security_sb_post_remount(path->mnt, flags, data);
@@ -1665,6 +1671,8 @@ int do_add_mount(struct vfsmount *newmnt, struct path *path,
1665{ 1671{
1666 int err; 1672 int err;
1667 1673
1674 mnt_flags &= ~(MNT_SHARED | MNT_WRITE_HOLD);
1675
1668 down_write(&namespace_sem); 1676 down_write(&namespace_sem);
1669 /* Something was mounted here while we slept */ 1677 /* Something was mounted here while we slept */
1670 while (d_mountpoint(path->dentry) && 1678 while (d_mountpoint(path->dentry) &&
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 2c5ace4f00a7..3c7f03b669fb 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -1615,6 +1615,7 @@ static int nfs_rename(struct inode *old_dir, struct dentry *old_dentry,
1615 goto out; 1615 goto out;
1616 1616
1617 new_dentry = dentry; 1617 new_dentry = dentry;
1618 rehash = NULL;
1618 new_inode = NULL; 1619 new_inode = NULL;
1619 } 1620 }
1620 } 1621 }
diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c
index e1d415e97849..0d289823e856 100644
--- a/fs/nfs/direct.c
+++ b/fs/nfs/direct.c
@@ -342,6 +342,7 @@ static ssize_t nfs_direct_read_schedule_segment(struct nfs_direct_req *dreq,
342 data->res.fattr = &data->fattr; 342 data->res.fattr = &data->fattr;
343 data->res.eof = 0; 343 data->res.eof = 0;
344 data->res.count = bytes; 344 data->res.count = bytes;
345 nfs_fattr_init(&data->fattr);
345 msg.rpc_argp = &data->args; 346 msg.rpc_argp = &data->args;
346 msg.rpc_resp = &data->res; 347 msg.rpc_resp = &data->res;
347 348
@@ -575,6 +576,7 @@ static void nfs_direct_commit_schedule(struct nfs_direct_req *dreq)
575 data->res.count = 0; 576 data->res.count = 0;
576 data->res.fattr = &data->fattr; 577 data->res.fattr = &data->fattr;
577 data->res.verf = &data->verf; 578 data->res.verf = &data->verf;
579 nfs_fattr_init(&data->fattr);
578 580
579 NFS_PROTO(data->inode)->commit_setup(data, &msg); 581 NFS_PROTO(data->inode)->commit_setup(data, &msg);
580 582
@@ -766,6 +768,7 @@ static ssize_t nfs_direct_write_schedule_segment(struct nfs_direct_req *dreq,
766 data->res.fattr = &data->fattr; 768 data->res.fattr = &data->fattr;
767 data->res.count = bytes; 769 data->res.count = bytes;
768 data->res.verf = &data->verf; 770 data->res.verf = &data->verf;
771 nfs_fattr_init(&data->fattr);
769 772
770 task_setup_data.task = &data->task; 773 task_setup_data.task = &data->task;
771 task_setup_data.callback_data = data; 774 task_setup_data.callback_data = data;
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index 6b891328f332..63f2071d6445 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -486,6 +486,8 @@ static int nfs_release_page(struct page *page, gfp_t gfp)
486{ 486{
487 dfprintk(PAGECACHE, "NFS: release_page(%p)\n", page); 487 dfprintk(PAGECACHE, "NFS: release_page(%p)\n", page);
488 488
489 if (gfp & __GFP_WAIT)
490 nfs_wb_page(page->mapping->host, page);
489 /* If PagePrivate() is set, then the page is not freeable */ 491 /* If PagePrivate() is set, then the page is not freeable */
490 if (PagePrivate(page)) 492 if (PagePrivate(page))
491 return 0; 493 return 0;
diff --git a/fs/nfs/fscache.c b/fs/nfs/fscache.c
index fa588006588d..237874f1af23 100644
--- a/fs/nfs/fscache.c
+++ b/fs/nfs/fscache.c
@@ -354,12 +354,11 @@ void nfs_fscache_reset_inode_cookie(struct inode *inode)
354 */ 354 */
355int nfs_fscache_release_page(struct page *page, gfp_t gfp) 355int nfs_fscache_release_page(struct page *page, gfp_t gfp)
356{ 356{
357 struct nfs_inode *nfsi = NFS_I(page->mapping->host);
358 struct fscache_cookie *cookie = nfsi->fscache;
359
360 BUG_ON(!cookie);
361
362 if (PageFsCache(page)) { 357 if (PageFsCache(page)) {
358 struct nfs_inode *nfsi = NFS_I(page->mapping->host);
359 struct fscache_cookie *cookie = nfsi->fscache;
360
361 BUG_ON(!cookie);
363 dfprintk(FSCACHE, "NFS: fscache releasepage (0x%p/0x%p/0x%p)\n", 362 dfprintk(FSCACHE, "NFS: fscache releasepage (0x%p/0x%p/0x%p)\n",
364 cookie, page, nfsi); 363 cookie, page, nfsi);
365 364
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
index faa091865ad0..f141bde7756a 100644
--- a/fs/nfs/inode.c
+++ b/fs/nfs/inode.c
@@ -1261,8 +1261,10 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr)
1261 1261
1262 if (fattr->valid & NFS_ATTR_FATTR_MODE) { 1262 if (fattr->valid & NFS_ATTR_FATTR_MODE) {
1263 if ((inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUGO)) { 1263 if ((inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUGO)) {
1264 umode_t newmode = inode->i_mode & S_IFMT;
1265 newmode |= fattr->mode & S_IALLUGO;
1266 inode->i_mode = newmode;
1264 invalid |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL; 1267 invalid |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL;
1265 inode->i_mode = fattr->mode;
1266 } 1268 }
1267 } else if (server->caps & NFS_CAP_MODE) 1269 } else if (server->caps & NFS_CAP_MODE)
1268 invalid |= save_cache_validity & (NFS_INO_INVALID_ATTR 1270 invalid |= save_cache_validity & (NFS_INO_INVALID_ATTR
diff --git a/fs/nfs/mount_clnt.c b/fs/nfs/mount_clnt.c
index 0adefc40cc89..59047f8d7d72 100644
--- a/fs/nfs/mount_clnt.c
+++ b/fs/nfs/mount_clnt.c
@@ -120,7 +120,7 @@ static struct {
120 { .status = MNT3ERR_INVAL, .errno = -EINVAL, }, 120 { .status = MNT3ERR_INVAL, .errno = -EINVAL, },
121 { .status = MNT3ERR_NAMETOOLONG, .errno = -ENAMETOOLONG, }, 121 { .status = MNT3ERR_NAMETOOLONG, .errno = -ENAMETOOLONG, },
122 { .status = MNT3ERR_NOTSUPP, .errno = -ENOTSUPP, }, 122 { .status = MNT3ERR_NOTSUPP, .errno = -ENOTSUPP, },
123 { .status = MNT3ERR_SERVERFAULT, .errno = -ESERVERFAULT, }, 123 { .status = MNT3ERR_SERVERFAULT, .errno = -EREMOTEIO, },
124}; 124};
125 125
126struct mountres { 126struct mountres {
diff --git a/fs/nfs/nfs2xdr.c b/fs/nfs/nfs2xdr.c
index 5e078b222b4e..7bc2da8efd4a 100644
--- a/fs/nfs/nfs2xdr.c
+++ b/fs/nfs/nfs2xdr.c
@@ -699,7 +699,7 @@ static struct {
699 { NFSERR_BAD_COOKIE, -EBADCOOKIE }, 699 { NFSERR_BAD_COOKIE, -EBADCOOKIE },
700 { NFSERR_NOTSUPP, -ENOTSUPP }, 700 { NFSERR_NOTSUPP, -ENOTSUPP },
701 { NFSERR_TOOSMALL, -ETOOSMALL }, 701 { NFSERR_TOOSMALL, -ETOOSMALL },
702 { NFSERR_SERVERFAULT, -ESERVERFAULT }, 702 { NFSERR_SERVERFAULT, -EREMOTEIO },
703 { NFSERR_BADTYPE, -EBADTYPE }, 703 { NFSERR_BADTYPE, -EBADTYPE },
704 { NFSERR_JUKEBOX, -EJUKEBOX }, 704 { NFSERR_JUKEBOX, -EJUKEBOX },
705 { -1, -EIO } 705 { -1, -EIO }
diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h
index 865265bdca03..0c6fda33d66e 100644
--- a/fs/nfs/nfs4_fs.h
+++ b/fs/nfs/nfs4_fs.h
@@ -146,6 +146,7 @@ enum {
146 NFS_O_RDWR_STATE, /* OPEN stateid has read/write state */ 146 NFS_O_RDWR_STATE, /* OPEN stateid has read/write state */
147 NFS_STATE_RECLAIM_REBOOT, /* OPEN stateid server rebooted */ 147 NFS_STATE_RECLAIM_REBOOT, /* OPEN stateid server rebooted */
148 NFS_STATE_RECLAIM_NOGRACE, /* OPEN stateid needs to recover state */ 148 NFS_STATE_RECLAIM_NOGRACE, /* OPEN stateid needs to recover state */
149 NFS_STATE_POSIX_LOCKS, /* Posix locks are supported */
149}; 150};
150 151
151struct nfs4_state { 152struct nfs4_state {
@@ -277,6 +278,7 @@ extern void nfs4_state_set_mode_locked(struct nfs4_state *, fmode_t);
277extern void nfs4_schedule_state_recovery(struct nfs_client *); 278extern void nfs4_schedule_state_recovery(struct nfs_client *);
278extern void nfs4_schedule_state_manager(struct nfs_client *); 279extern void nfs4_schedule_state_manager(struct nfs_client *);
279extern int nfs4_state_mark_reclaim_nograce(struct nfs_client *clp, struct nfs4_state *state); 280extern int nfs4_state_mark_reclaim_nograce(struct nfs_client *clp, struct nfs4_state *state);
281extern int nfs4_state_mark_reclaim_reboot(struct nfs_client *clp, struct nfs4_state *state);
280extern void nfs41_handle_sequence_flag_errors(struct nfs_client *clp, u32 flags); 282extern void nfs41_handle_sequence_flag_errors(struct nfs_client *clp, u32 flags);
281extern void nfs4_put_lock_state(struct nfs4_lock_state *lsp); 283extern void nfs4_put_lock_state(struct nfs4_lock_state *lsp);
282extern int nfs4_set_lock_state(struct nfs4_state *state, struct file_lock *fl); 284extern int nfs4_set_lock_state(struct nfs4_state *state, struct file_lock *fl);
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 198d51d17c13..375f0fae2c6a 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -249,19 +249,15 @@ static int nfs4_handle_exception(const struct nfs_server *server, int errorcode,
249 if (state == NULL) 249 if (state == NULL)
250 break; 250 break;
251 nfs4_state_mark_reclaim_nograce(clp, state); 251 nfs4_state_mark_reclaim_nograce(clp, state);
252 case -NFS4ERR_STALE_CLIENTID: 252 goto do_state_recovery;
253 case -NFS4ERR_STALE_STATEID: 253 case -NFS4ERR_STALE_STATEID:
254 case -NFS4ERR_EXPIRED: 254 if (state == NULL)
255 nfs4_schedule_state_recovery(clp);
256 ret = nfs4_wait_clnt_recover(clp);
257 if (ret == 0)
258 exception->retry = 1;
259#if !defined(CONFIG_NFS_V4_1)
260 break;
261#else /* !defined(CONFIG_NFS_V4_1) */
262 if (!nfs4_has_session(server->nfs_client))
263 break; 255 break;
264 /* FALLTHROUGH */ 256 nfs4_state_mark_reclaim_reboot(clp, state);
257 case -NFS4ERR_STALE_CLIENTID:
258 case -NFS4ERR_EXPIRED:
259 goto do_state_recovery;
260#if defined(CONFIG_NFS_V4_1)
265 case -NFS4ERR_BADSESSION: 261 case -NFS4ERR_BADSESSION:
266 case -NFS4ERR_BADSLOT: 262 case -NFS4ERR_BADSLOT:
267 case -NFS4ERR_BAD_HIGH_SLOT: 263 case -NFS4ERR_BAD_HIGH_SLOT:
@@ -274,7 +270,7 @@ static int nfs4_handle_exception(const struct nfs_server *server, int errorcode,
274 nfs4_schedule_state_recovery(clp); 270 nfs4_schedule_state_recovery(clp);
275 exception->retry = 1; 271 exception->retry = 1;
276 break; 272 break;
277#endif /* !defined(CONFIG_NFS_V4_1) */ 273#endif /* defined(CONFIG_NFS_V4_1) */
278 case -NFS4ERR_FILE_OPEN: 274 case -NFS4ERR_FILE_OPEN:
279 if (exception->timeout > HZ) { 275 if (exception->timeout > HZ) {
280 /* We have retried a decent amount, time to 276 /* We have retried a decent amount, time to
@@ -293,6 +289,12 @@ static int nfs4_handle_exception(const struct nfs_server *server, int errorcode,
293 } 289 }
294 /* We failed to handle the error */ 290 /* We failed to handle the error */
295 return nfs4_map_errors(ret); 291 return nfs4_map_errors(ret);
292do_state_recovery:
293 nfs4_schedule_state_recovery(clp);
294 ret = nfs4_wait_clnt_recover(clp);
295 if (ret == 0)
296 exception->retry = 1;
297 return ret;
296} 298}
297 299
298 300
@@ -1658,6 +1660,8 @@ static int _nfs4_do_open(struct inode *dir, struct path *path, fmode_t fmode, in
1658 status = PTR_ERR(state); 1660 status = PTR_ERR(state);
1659 if (IS_ERR(state)) 1661 if (IS_ERR(state))
1660 goto err_opendata_put; 1662 goto err_opendata_put;
1663 if ((opendata->o_res.rflags & NFS4_OPEN_RESULT_LOCKTYPE_POSIX) != 0)
1664 set_bit(NFS_STATE_POSIX_LOCKS, &state->flags);
1661 nfs4_opendata_put(opendata); 1665 nfs4_opendata_put(opendata);
1662 nfs4_put_state_owner(sp); 1666 nfs4_put_state_owner(sp);
1663 *res = state; 1667 *res = state;
@@ -3422,15 +3426,14 @@ _nfs4_async_handle_error(struct rpc_task *task, const struct nfs_server *server,
3422 if (state == NULL) 3426 if (state == NULL)
3423 break; 3427 break;
3424 nfs4_state_mark_reclaim_nograce(clp, state); 3428 nfs4_state_mark_reclaim_nograce(clp, state);
3425 case -NFS4ERR_STALE_CLIENTID: 3429 goto do_state_recovery;
3426 case -NFS4ERR_STALE_STATEID: 3430 case -NFS4ERR_STALE_STATEID:
3431 if (state == NULL)
3432 break;
3433 nfs4_state_mark_reclaim_reboot(clp, state);
3434 case -NFS4ERR_STALE_CLIENTID:
3427 case -NFS4ERR_EXPIRED: 3435 case -NFS4ERR_EXPIRED:
3428 rpc_sleep_on(&clp->cl_rpcwaitq, task, NULL); 3436 goto do_state_recovery;
3429 nfs4_schedule_state_recovery(clp);
3430 if (test_bit(NFS4CLNT_MANAGER_RUNNING, &clp->cl_state) == 0)
3431 rpc_wake_up_queued_task(&clp->cl_rpcwaitq, task);
3432 task->tk_status = 0;
3433 return -EAGAIN;
3434#if defined(CONFIG_NFS_V4_1) 3437#if defined(CONFIG_NFS_V4_1)
3435 case -NFS4ERR_BADSESSION: 3438 case -NFS4ERR_BADSESSION:
3436 case -NFS4ERR_BADSLOT: 3439 case -NFS4ERR_BADSLOT:
@@ -3458,6 +3461,13 @@ _nfs4_async_handle_error(struct rpc_task *task, const struct nfs_server *server,
3458 } 3461 }
3459 task->tk_status = nfs4_map_errors(task->tk_status); 3462 task->tk_status = nfs4_map_errors(task->tk_status);
3460 return 0; 3463 return 0;
3464do_state_recovery:
3465 rpc_sleep_on(&clp->cl_rpcwaitq, task, NULL);
3466 nfs4_schedule_state_recovery(clp);
3467 if (test_bit(NFS4CLNT_MANAGER_RUNNING, &clp->cl_state) == 0)
3468 rpc_wake_up_queued_task(&clp->cl_rpcwaitq, task);
3469 task->tk_status = 0;
3470 return -EAGAIN;
3461} 3471}
3462 3472
3463static int 3473static int
@@ -4088,6 +4098,28 @@ static const struct rpc_call_ops nfs4_recover_lock_ops = {
4088 .rpc_release = nfs4_lock_release, 4098 .rpc_release = nfs4_lock_release,
4089}; 4099};
4090 4100
4101static void nfs4_handle_setlk_error(struct nfs_server *server, struct nfs4_lock_state *lsp, int new_lock_owner, int error)
4102{
4103 struct nfs_client *clp = server->nfs_client;
4104 struct nfs4_state *state = lsp->ls_state;
4105
4106 switch (error) {
4107 case -NFS4ERR_ADMIN_REVOKED:
4108 case -NFS4ERR_BAD_STATEID:
4109 case -NFS4ERR_EXPIRED:
4110 if (new_lock_owner != 0 ||
4111 (lsp->ls_flags & NFS_LOCK_INITIALIZED) != 0)
4112 nfs4_state_mark_reclaim_nograce(clp, state);
4113 lsp->ls_seqid.flags &= ~NFS_SEQID_CONFIRMED;
4114 break;
4115 case -NFS4ERR_STALE_STATEID:
4116 if (new_lock_owner != 0 ||
4117 (lsp->ls_flags & NFS_LOCK_INITIALIZED) != 0)
4118 nfs4_state_mark_reclaim_reboot(clp, state);
4119 lsp->ls_seqid.flags &= ~NFS_SEQID_CONFIRMED;
4120 };
4121}
4122
4091static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *fl, int recovery_type) 4123static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *fl, int recovery_type)
4092{ 4124{
4093 struct nfs4_lockdata *data; 4125 struct nfs4_lockdata *data;
@@ -4126,6 +4158,9 @@ static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *f
4126 ret = nfs4_wait_for_completion_rpc_task(task); 4158 ret = nfs4_wait_for_completion_rpc_task(task);
4127 if (ret == 0) { 4159 if (ret == 0) {
4128 ret = data->rpc_status; 4160 ret = data->rpc_status;
4161 if (ret)
4162 nfs4_handle_setlk_error(data->server, data->lsp,
4163 data->arg.new_lock_owner, ret);
4129 } else 4164 } else
4130 data->cancelled = 1; 4165 data->cancelled = 1;
4131 rpc_put_task(task); 4166 rpc_put_task(task);
@@ -4181,8 +4216,11 @@ static int _nfs4_proc_setlk(struct nfs4_state *state, int cmd, struct file_lock
4181{ 4216{
4182 struct nfs_inode *nfsi = NFS_I(state->inode); 4217 struct nfs_inode *nfsi = NFS_I(state->inode);
4183 unsigned char fl_flags = request->fl_flags; 4218 unsigned char fl_flags = request->fl_flags;
4184 int status; 4219 int status = -ENOLCK;
4185 4220
4221 if ((fl_flags & FL_POSIX) &&
4222 !test_bit(NFS_STATE_POSIX_LOCKS, &state->flags))
4223 goto out;
4186 /* Is this a delegated open? */ 4224 /* Is this a delegated open? */
4187 status = nfs4_set_lock_state(state, request); 4225 status = nfs4_set_lock_state(state, request);
4188 if (status != 0) 4226 if (status != 0)
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
index 6d263ed79e92..c1e2733f4fa4 100644
--- a/fs/nfs/nfs4state.c
+++ b/fs/nfs/nfs4state.c
@@ -901,7 +901,7 @@ void nfs4_schedule_state_recovery(struct nfs_client *clp)
901 nfs4_schedule_state_manager(clp); 901 nfs4_schedule_state_manager(clp);
902} 902}
903 903
904static int nfs4_state_mark_reclaim_reboot(struct nfs_client *clp, struct nfs4_state *state) 904int nfs4_state_mark_reclaim_reboot(struct nfs_client *clp, struct nfs4_state *state)
905{ 905{
906 906
907 set_bit(NFS_STATE_RECLAIM_REBOOT, &state->flags); 907 set_bit(NFS_STATE_RECLAIM_REBOOT, &state->flags);
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
index e437fd6a819f..5cd5184b56db 100644
--- a/fs/nfs/nfs4xdr.c
+++ b/fs/nfs/nfs4xdr.c
@@ -4631,7 +4631,7 @@ static int decode_sequence(struct xdr_stream *xdr,
4631 * If the server returns different values for sessionID, slotID or 4631 * If the server returns different values for sessionID, slotID or
4632 * sequence number, the server is looney tunes. 4632 * sequence number, the server is looney tunes.
4633 */ 4633 */
4634 status = -ESERVERFAULT; 4634 status = -EREMOTEIO;
4635 4635
4636 if (memcmp(id.data, res->sr_session->sess_id.data, 4636 if (memcmp(id.data, res->sr_session->sess_id.data,
4637 NFS4_MAX_SESSIONID_LEN)) { 4637 NFS4_MAX_SESSIONID_LEN)) {
@@ -5774,7 +5774,7 @@ static struct {
5774 { NFS4ERR_BAD_COOKIE, -EBADCOOKIE }, 5774 { NFS4ERR_BAD_COOKIE, -EBADCOOKIE },
5775 { NFS4ERR_NOTSUPP, -ENOTSUPP }, 5775 { NFS4ERR_NOTSUPP, -ENOTSUPP },
5776 { NFS4ERR_TOOSMALL, -ETOOSMALL }, 5776 { NFS4ERR_TOOSMALL, -ETOOSMALL },
5777 { NFS4ERR_SERVERFAULT, -ESERVERFAULT }, 5777 { NFS4ERR_SERVERFAULT, -EREMOTEIO },
5778 { NFS4ERR_BADTYPE, -EBADTYPE }, 5778 { NFS4ERR_BADTYPE, -EBADTYPE },
5779 { NFS4ERR_LOCKED, -EAGAIN }, 5779 { NFS4ERR_LOCKED, -EAGAIN },
5780 { NFS4ERR_SYMLINK, -ELOOP }, 5780 { NFS4ERR_SYMLINK, -ELOOP },
@@ -5801,7 +5801,7 @@ nfs4_stat_to_errno(int stat)
5801 } 5801 }
5802 if (stat <= 10000 || stat > 10100) { 5802 if (stat <= 10000 || stat > 10100) {
5803 /* The server is looney tunes. */ 5803 /* The server is looney tunes. */
5804 return -ESERVERFAULT; 5804 return -EREMOTEIO;
5805 } 5805 }
5806 /* If we cannot translate the error, the recovery routines should 5806 /* If we cannot translate the error, the recovery routines should
5807 * handle it. 5807 * handle it.
diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c
index e2975939126a..a12c45b65dd4 100644
--- a/fs/nfs/pagelist.c
+++ b/fs/nfs/pagelist.c
@@ -176,6 +176,12 @@ void nfs_release_request(struct nfs_page *req)
176 kref_put(&req->wb_kref, nfs_free_request); 176 kref_put(&req->wb_kref, nfs_free_request);
177} 177}
178 178
179static int nfs_wait_bit_uninterruptible(void *word)
180{
181 io_schedule();
182 return 0;
183}
184
179/** 185/**
180 * nfs_wait_on_request - Wait for a request to complete. 186 * nfs_wait_on_request - Wait for a request to complete.
181 * @req: request to wait upon. 187 * @req: request to wait upon.
@@ -186,14 +192,9 @@ void nfs_release_request(struct nfs_page *req)
186int 192int
187nfs_wait_on_request(struct nfs_page *req) 193nfs_wait_on_request(struct nfs_page *req)
188{ 194{
189 int ret = 0; 195 return wait_on_bit(&req->wb_flags, PG_BUSY,
190 196 nfs_wait_bit_uninterruptible,
191 if (!test_bit(PG_BUSY, &req->wb_flags)) 197 TASK_UNINTERRUPTIBLE);
192 goto out;
193 ret = out_of_line_wait_on_bit(&req->wb_flags, PG_BUSY,
194 nfs_wait_bit_killable, TASK_KILLABLE);
195out:
196 return ret;
197} 198}
198 199
199/** 200/**
diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index ce907efc5508..f1afee4eea77 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -243,6 +243,7 @@ static int nfs_show_stats(struct seq_file *, struct vfsmount *);
243static int nfs_get_sb(struct file_system_type *, int, const char *, void *, struct vfsmount *); 243static int nfs_get_sb(struct file_system_type *, int, const char *, void *, struct vfsmount *);
244static int nfs_xdev_get_sb(struct file_system_type *fs_type, 244static int nfs_xdev_get_sb(struct file_system_type *fs_type,
245 int flags, const char *dev_name, void *raw_data, struct vfsmount *mnt); 245 int flags, const char *dev_name, void *raw_data, struct vfsmount *mnt);
246static void nfs_put_super(struct super_block *);
246static void nfs_kill_super(struct super_block *); 247static void nfs_kill_super(struct super_block *);
247static int nfs_remount(struct super_block *sb, int *flags, char *raw_data); 248static int nfs_remount(struct super_block *sb, int *flags, char *raw_data);
248 249
@@ -266,6 +267,7 @@ static const struct super_operations nfs_sops = {
266 .alloc_inode = nfs_alloc_inode, 267 .alloc_inode = nfs_alloc_inode,
267 .destroy_inode = nfs_destroy_inode, 268 .destroy_inode = nfs_destroy_inode,
268 .write_inode = nfs_write_inode, 269 .write_inode = nfs_write_inode,
270 .put_super = nfs_put_super,
269 .statfs = nfs_statfs, 271 .statfs = nfs_statfs,
270 .clear_inode = nfs_clear_inode, 272 .clear_inode = nfs_clear_inode,
271 .umount_begin = nfs_umount_begin, 273 .umount_begin = nfs_umount_begin,
@@ -335,6 +337,7 @@ static const struct super_operations nfs4_sops = {
335 .alloc_inode = nfs_alloc_inode, 337 .alloc_inode = nfs_alloc_inode,
336 .destroy_inode = nfs_destroy_inode, 338 .destroy_inode = nfs_destroy_inode,
337 .write_inode = nfs_write_inode, 339 .write_inode = nfs_write_inode,
340 .put_super = nfs_put_super,
338 .statfs = nfs_statfs, 341 .statfs = nfs_statfs,
339 .clear_inode = nfs4_clear_inode, 342 .clear_inode = nfs4_clear_inode,
340 .umount_begin = nfs_umount_begin, 343 .umount_begin = nfs_umount_begin,
@@ -2258,6 +2261,17 @@ error_splat_super:
2258} 2261}
2259 2262
2260/* 2263/*
2264 * Ensure that we unregister the bdi before kill_anon_super
2265 * releases the device name
2266 */
2267static void nfs_put_super(struct super_block *s)
2268{
2269 struct nfs_server *server = NFS_SB(s);
2270
2271 bdi_unregister(&server->backing_dev_info);
2272}
2273
2274/*
2261 * Destroy an NFS2/3 superblock 2275 * Destroy an NFS2/3 superblock
2262 */ 2276 */
2263static void nfs_kill_super(struct super_block *s) 2277static void nfs_kill_super(struct super_block *s)
@@ -2265,7 +2279,6 @@ static void nfs_kill_super(struct super_block *s)
2265 struct nfs_server *server = NFS_SB(s); 2279 struct nfs_server *server = NFS_SB(s);
2266 2280
2267 kill_anon_super(s); 2281 kill_anon_super(s);
2268 bdi_unregister(&server->backing_dev_info);
2269 nfs_fscache_release_super_cookie(s); 2282 nfs_fscache_release_super_cookie(s);
2270 nfs_free_server(server); 2283 nfs_free_server(server);
2271} 2284}
diff --git a/fs/nfs/sysctl.c b/fs/nfs/sysctl.c
index 70e1fbbaaeab..ad4d2e787b20 100644
--- a/fs/nfs/sysctl.c
+++ b/fs/nfs/sysctl.c
@@ -15,8 +15,10 @@
15 15
16#include "callback.h" 16#include "callback.h"
17 17
18#ifdef CONFIG_NFS_V4
18static const int nfs_set_port_min = 0; 19static const int nfs_set_port_min = 0;
19static const int nfs_set_port_max = 65535; 20static const int nfs_set_port_max = 65535;
21#endif
20static struct ctl_table_header *nfs_callback_sysctl_table; 22static struct ctl_table_header *nfs_callback_sysctl_table;
21 23
22static ctl_table nfs_cb_sysctls[] = { 24static ctl_table nfs_cb_sysctls[] = {
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index d171696017f4..d63d964a0392 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -1233,7 +1233,7 @@ int nfs_writeback_done(struct rpc_task *task, struct nfs_write_data *data)
1233 1233
1234 1234
1235#if defined(CONFIG_NFS_V3) || defined(CONFIG_NFS_V4) 1235#if defined(CONFIG_NFS_V3) || defined(CONFIG_NFS_V4)
1236void nfs_commitdata_release(void *data) 1236static void nfs_commitdata_release(void *data)
1237{ 1237{
1238 struct nfs_write_data *wdata = data; 1238 struct nfs_write_data *wdata = data;
1239 1239
@@ -1541,6 +1541,7 @@ int nfs_wb_page_cancel(struct inode *inode, struct page *page)
1541 break; 1541 break;
1542 } 1542 }
1543 ret = nfs_wait_on_request(req); 1543 ret = nfs_wait_on_request(req);
1544 nfs_release_request(req);
1544 if (ret < 0) 1545 if (ret < 0)
1545 goto out; 1546 goto out;
1546 } 1547 }
@@ -1597,8 +1598,7 @@ int nfs_migrate_page(struct address_space *mapping, struct page *newpage,
1597 struct nfs_page *req; 1598 struct nfs_page *req;
1598 int ret; 1599 int ret;
1599 1600
1600 if (PageFsCache(page)) 1601 nfs_fscache_release_page(page, GFP_KERNEL);
1601 nfs_fscache_release_page(page, GFP_KERNEL);
1602 1602
1603 req = nfs_find_and_lock_request(page); 1603 req = nfs_find_and_lock_request(page);
1604 ret = PTR_ERR(req); 1604 ret = PTR_ERR(req);
diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c
index c487810a2366..a0c4016413f1 100644
--- a/fs/nfsd/export.c
+++ b/fs/nfsd/export.c
@@ -1316,19 +1316,11 @@ rqst_exp_parent(struct svc_rqst *rqstp, struct path *path)
1316 1316
1317static struct svc_export *find_fsidzero_export(struct svc_rqst *rqstp) 1317static struct svc_export *find_fsidzero_export(struct svc_rqst *rqstp)
1318{ 1318{
1319 struct svc_export *exp;
1320 u32 fsidv[2]; 1319 u32 fsidv[2];
1321 1320
1322 mk_fsid(FSID_NUM, fsidv, 0, 0, 0, NULL); 1321 mk_fsid(FSID_NUM, fsidv, 0, 0, 0, NULL);
1323 1322
1324 exp = rqst_exp_find(rqstp, FSID_NUM, fsidv); 1323 return rqst_exp_find(rqstp, FSID_NUM, fsidv);
1325 /*
1326 * We shouldn't have accepting an nfsv4 request at all if we
1327 * don't have a pseudoexport!:
1328 */
1329 if (IS_ERR(exp) && PTR_ERR(exp) == -ENOENT)
1330 exp = ERR_PTR(-ESERVERFAULT);
1331 return exp;
1332} 1324}
1333 1325
1334/* 1326/*
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
index 7c2e337d05af..8715d194561a 100644
--- a/fs/nfsd/vfs.c
+++ b/fs/nfsd/vfs.c
@@ -752,6 +752,8 @@ nfsd_open(struct svc_rqst *rqstp, struct svc_fh *fhp, int type,
752 flags, current_cred()); 752 flags, current_cred());
753 if (IS_ERR(*filp)) 753 if (IS_ERR(*filp))
754 host_err = PTR_ERR(*filp); 754 host_err = PTR_ERR(*filp);
755 else
756 host_err = ima_file_check(*filp, access);
755out_nfserr: 757out_nfserr:
756 err = nfserrno(host_err); 758 err = nfserrno(host_err);
757out: 759out:
@@ -780,12 +782,9 @@ static inline int nfsd_dosync(struct file *filp, struct dentry *dp,
780 int (*fsync) (struct file *, struct dentry *, int); 782 int (*fsync) (struct file *, struct dentry *, int);
781 int err; 783 int err;
782 784
783 err = filemap_fdatawrite(inode->i_mapping); 785 err = filemap_write_and_wait(inode->i_mapping);
784 if (err == 0 && fop && (fsync = fop->fsync)) 786 if (err == 0 && fop && (fsync = fop->fsync))
785 err = fsync(filp, dp, 0); 787 err = fsync(filp, dp, 0);
786 if (err == 0)
787 err = filemap_fdatawait(inode->i_mapping);
788
789 return err; 788 return err;
790} 789}
791 790
@@ -2130,7 +2129,6 @@ nfsd_permission(struct svc_rqst *rqstp, struct svc_export *exp,
2130 */ 2129 */
2131 path.mnt = exp->ex_path.mnt; 2130 path.mnt = exp->ex_path.mnt;
2132 path.dentry = dentry; 2131 path.dentry = dentry;
2133 err = ima_path_check(&path, acc & (MAY_READ | MAY_WRITE | MAY_EXEC));
2134nfsd_out: 2132nfsd_out:
2135 return err? nfserrno(err) : 0; 2133 return err? nfserrno(err) : 0;
2136} 2134}
diff --git a/fs/nilfs2/bmap.c b/fs/nilfs2/bmap.c
index f4a14ea2ed9c..effdbdbe6c11 100644
--- a/fs/nilfs2/bmap.c
+++ b/fs/nilfs2/bmap.c
@@ -417,8 +417,8 @@ __u64 nilfs_bmap_data_get_key(const struct nilfs_bmap *bmap,
417 417
418 key = page_index(bh->b_page) << (PAGE_CACHE_SHIFT - 418 key = page_index(bh->b_page) << (PAGE_CACHE_SHIFT -
419 bmap->b_inode->i_blkbits); 419 bmap->b_inode->i_blkbits);
420 for (pbh = page_buffers(bh->b_page); pbh != bh; 420 for (pbh = page_buffers(bh->b_page); pbh != bh; pbh = pbh->b_this_page)
421 pbh = pbh->b_this_page, key++); 421 key++;
422 422
423 return key; 423 return key;
424} 424}
diff --git a/fs/nilfs2/cpfile.c b/fs/nilfs2/cpfile.c
index d5ad54e204a5..18737818db63 100644
--- a/fs/nilfs2/cpfile.c
+++ b/fs/nilfs2/cpfile.c
@@ -328,19 +328,24 @@ int nilfs_cpfile_delete_checkpoints(struct inode *cpfile,
328 tnicps += nicps; 328 tnicps += nicps;
329 nilfs_mdt_mark_buffer_dirty(cp_bh); 329 nilfs_mdt_mark_buffer_dirty(cp_bh);
330 nilfs_mdt_mark_dirty(cpfile); 330 nilfs_mdt_mark_dirty(cpfile);
331 if (!nilfs_cpfile_is_in_first(cpfile, cno) && 331 if (!nilfs_cpfile_is_in_first(cpfile, cno)) {
332 (count = nilfs_cpfile_block_sub_valid_checkpoints( 332 count =
333 cpfile, cp_bh, kaddr, nicps)) == 0) { 333 nilfs_cpfile_block_sub_valid_checkpoints(
334 /* make hole */ 334 cpfile, cp_bh, kaddr, nicps);
335 kunmap_atomic(kaddr, KM_USER0); 335 if (count == 0) {
336 brelse(cp_bh); 336 /* make hole */
337 ret = nilfs_cpfile_delete_checkpoint_block( 337 kunmap_atomic(kaddr, KM_USER0);
338 cpfile, cno); 338 brelse(cp_bh);
339 if (ret == 0) 339 ret =
340 continue; 340 nilfs_cpfile_delete_checkpoint_block(
341 printk(KERN_ERR "%s: cannot delete block\n", 341 cpfile, cno);
342 __func__); 342 if (ret == 0)
343 break; 343 continue;
344 printk(KERN_ERR
345 "%s: cannot delete block\n",
346 __func__);
347 break;
348 }
344 } 349 }
345 } 350 }
346 351
diff --git a/fs/nilfs2/direct.c b/fs/nilfs2/direct.c
index d369ac718277..236753df5cdf 100644
--- a/fs/nilfs2/direct.c
+++ b/fs/nilfs2/direct.c
@@ -51,11 +51,11 @@ static int nilfs_direct_lookup(const struct nilfs_bmap *bmap,
51 struct nilfs_direct *direct; 51 struct nilfs_direct *direct;
52 __u64 ptr; 52 __u64 ptr;
53 53
54 direct = (struct nilfs_direct *)bmap; 54 direct = (struct nilfs_direct *)bmap; /* XXX: use macro for level 1 */
55 if ((key > NILFS_DIRECT_KEY_MAX) || 55 if (key > NILFS_DIRECT_KEY_MAX || level != 1)
56 (level != 1) || /* XXX: use macro for level 1 */ 56 return -ENOENT;
57 ((ptr = nilfs_direct_get_ptr(direct, key)) == 57 ptr = nilfs_direct_get_ptr(direct, key);
58 NILFS_BMAP_INVALID_PTR)) 58 if (ptr == NILFS_BMAP_INVALID_PTR)
59 return -ENOENT; 59 return -ENOENT;
60 60
61 if (ptrp != NULL) 61 if (ptrp != NULL)
@@ -73,9 +73,10 @@ static int nilfs_direct_lookup_contig(const struct nilfs_bmap *bmap,
73 sector_t blocknr; 73 sector_t blocknr;
74 int ret, cnt; 74 int ret, cnt;
75 75
76 if (key > NILFS_DIRECT_KEY_MAX || 76 if (key > NILFS_DIRECT_KEY_MAX)
77 (ptr = nilfs_direct_get_ptr(direct, key)) == 77 return -ENOENT;
78 NILFS_BMAP_INVALID_PTR) 78 ptr = nilfs_direct_get_ptr(direct, key);
79 if (ptr == NILFS_BMAP_INVALID_PTR)
79 return -ENOENT; 80 return -ENOENT;
80 81
81 if (NILFS_BMAP_USE_VBN(bmap)) { 82 if (NILFS_BMAP_USE_VBN(bmap)) {
diff --git a/fs/nilfs2/ioctl.c b/fs/nilfs2/ioctl.c
index f6af76042d80..d6b2b83de363 100644
--- a/fs/nilfs2/ioctl.c
+++ b/fs/nilfs2/ioctl.c
@@ -480,7 +480,7 @@ static int nilfs_ioctl_clean_segments(struct inode *inode, struct file *filp,
480 unsigned int cmd, void __user *argp) 480 unsigned int cmd, void __user *argp)
481{ 481{
482 struct nilfs_argv argv[5]; 482 struct nilfs_argv argv[5];
483 const static size_t argsz[5] = { 483 static const size_t argsz[5] = {
484 sizeof(struct nilfs_vdesc), 484 sizeof(struct nilfs_vdesc),
485 sizeof(struct nilfs_period), 485 sizeof(struct nilfs_period),
486 sizeof(__u64), 486 sizeof(__u64),
diff --git a/fs/nilfs2/segment.c b/fs/nilfs2/segment.c
index 17584c524486..105b508b47a8 100644
--- a/fs/nilfs2/segment.c
+++ b/fs/nilfs2/segment.c
@@ -2829,7 +2829,7 @@ static void nilfs_segctor_destroy(struct nilfs_sc_info *sci)
2829 || sci->sc_seq_request != sci->sc_seq_done); 2829 || sci->sc_seq_request != sci->sc_seq_done);
2830 spin_unlock(&sci->sc_state_lock); 2830 spin_unlock(&sci->sc_state_lock);
2831 2831
2832 if (flag || nilfs_segctor_confirm(sci)) 2832 if (flag || !nilfs_segctor_confirm(sci))
2833 nilfs_segctor_write_out(sci); 2833 nilfs_segctor_write_out(sci);
2834 2834
2835 WARN_ON(!list_empty(&sci->sc_copied_buffers)); 2835 WARN_ON(!list_empty(&sci->sc_copied_buffers));
diff --git a/fs/notify/inotify/inotify_fsnotify.c b/fs/notify/inotify/inotify_fsnotify.c
index c9ee67b442e1..1afb0a10229f 100644
--- a/fs/notify/inotify/inotify_fsnotify.c
+++ b/fs/notify/inotify/inotify_fsnotify.c
@@ -121,7 +121,7 @@ static int idr_callback(int id, void *p, void *data)
121 if (warned) 121 if (warned)
122 return 0; 122 return 0;
123 123
124 warned = false; 124 warned = true;
125 entry = p; 125 entry = p;
126 ientry = container_of(entry, struct inotify_inode_mark_entry, fsn_entry); 126 ientry = container_of(entry, struct inotify_inode_mark_entry, fsn_entry);
127 127
diff --git a/fs/notify/inotify/inotify_user.c b/fs/notify/inotify/inotify_user.c
index 8271cf05c957..a94e8bd8eb1f 100644
--- a/fs/notify/inotify/inotify_user.c
+++ b/fs/notify/inotify/inotify_user.c
@@ -552,7 +552,7 @@ retry:
552 552
553 spin_lock(&group->inotify_data.idr_lock); 553 spin_lock(&group->inotify_data.idr_lock);
554 ret = idr_get_new_above(&group->inotify_data.idr, &tmp_ientry->fsn_entry, 554 ret = idr_get_new_above(&group->inotify_data.idr, &tmp_ientry->fsn_entry,
555 group->inotify_data.last_wd, 555 group->inotify_data.last_wd+1,
556 &tmp_ientry->wd); 556 &tmp_ientry->wd);
557 spin_unlock(&group->inotify_data.idr_lock); 557 spin_unlock(&group->inotify_data.idr_lock);
558 if (ret) { 558 if (ret) {
@@ -632,7 +632,7 @@ static struct fsnotify_group *inotify_new_group(struct user_struct *user, unsign
632 632
633 spin_lock_init(&group->inotify_data.idr_lock); 633 spin_lock_init(&group->inotify_data.idr_lock);
634 idr_init(&group->inotify_data.idr); 634 idr_init(&group->inotify_data.idr);
635 group->inotify_data.last_wd = 1; 635 group->inotify_data.last_wd = 0;
636 group->inotify_data.user = user; 636 group->inotify_data.user = user;
637 group->inotify_data.fa = NULL; 637 group->inotify_data.fa = NULL;
638 638
diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c
index 3dae4a13f6e4..7e9df11260f4 100644
--- a/fs/ocfs2/aops.c
+++ b/fs/ocfs2/aops.c
@@ -599,7 +599,7 @@ bail:
599 return ret; 599 return ret;
600} 600}
601 601
602/* 602/*
603 * ocfs2_dio_end_io is called by the dio core when a dio is finished. We're 603 * ocfs2_dio_end_io is called by the dio core when a dio is finished. We're
604 * particularly interested in the aio/dio case. Like the core uses 604 * particularly interested in the aio/dio case. Like the core uses
605 * i_alloc_sem, we use the rw_lock DLM lock to protect io on one node from 605 * i_alloc_sem, we use the rw_lock DLM lock to protect io on one node from
@@ -670,7 +670,7 @@ static ssize_t ocfs2_direct_IO(int rw,
670 670
671 ret = blockdev_direct_IO_no_locking(rw, iocb, inode, 671 ret = blockdev_direct_IO_no_locking(rw, iocb, inode,
672 inode->i_sb->s_bdev, iov, offset, 672 inode->i_sb->s_bdev, iov, offset,
673 nr_segs, 673 nr_segs,
674 ocfs2_direct_IO_get_blocks, 674 ocfs2_direct_IO_get_blocks,
675 ocfs2_dio_end_io); 675 ocfs2_dio_end_io);
676 676
diff --git a/fs/ocfs2/buffer_head_io.c b/fs/ocfs2/buffer_head_io.c
index d43d34a1dd31..21c808f752d8 100644
--- a/fs/ocfs2/buffer_head_io.c
+++ b/fs/ocfs2/buffer_head_io.c
@@ -368,7 +368,7 @@ int ocfs2_read_blocks(struct ocfs2_caching_info *ci, u64 block, int nr,
368 } 368 }
369 ocfs2_metadata_cache_io_unlock(ci); 369 ocfs2_metadata_cache_io_unlock(ci);
370 370
371 mlog(ML_BH_IO, "block=(%llu), nr=(%d), cached=%s, flags=0x%x\n", 371 mlog(ML_BH_IO, "block=(%llu), nr=(%d), cached=%s, flags=0x%x\n",
372 (unsigned long long)block, nr, 372 (unsigned long long)block, nr,
373 ((flags & OCFS2_BH_IGNORE_CACHE) || ignore_cache) ? "no" : "yes", 373 ((flags & OCFS2_BH_IGNORE_CACHE) || ignore_cache) ? "no" : "yes",
374 flags); 374 flags);
diff --git a/fs/ocfs2/cluster/heartbeat.c b/fs/ocfs2/cluster/heartbeat.c
index eda5b8bcddd5..5c9890006708 100644
--- a/fs/ocfs2/cluster/heartbeat.c
+++ b/fs/ocfs2/cluster/heartbeat.c
@@ -78,7 +78,7 @@ static struct o2hb_callback *hbcall_from_type(enum o2hb_callback_type type);
78 78
79unsigned int o2hb_dead_threshold = O2HB_DEFAULT_DEAD_THRESHOLD; 79unsigned int o2hb_dead_threshold = O2HB_DEFAULT_DEAD_THRESHOLD;
80 80
81/* Only sets a new threshold if there are no active regions. 81/* Only sets a new threshold if there are no active regions.
82 * 82 *
83 * No locking or otherwise interesting code is required for reading 83 * No locking or otherwise interesting code is required for reading
84 * o2hb_dead_threshold as it can't change once regions are active and 84 * o2hb_dead_threshold as it can't change once regions are active and
@@ -170,7 +170,7 @@ static void o2hb_write_timeout(struct work_struct *work)
170 170
171 mlog(ML_ERROR, "Heartbeat write timeout to device %s after %u " 171 mlog(ML_ERROR, "Heartbeat write timeout to device %s after %u "
172 "milliseconds\n", reg->hr_dev_name, 172 "milliseconds\n", reg->hr_dev_name,
173 jiffies_to_msecs(jiffies - reg->hr_last_timeout_start)); 173 jiffies_to_msecs(jiffies - reg->hr_last_timeout_start));
174 o2quo_disk_timeout(); 174 o2quo_disk_timeout();
175} 175}
176 176
@@ -624,7 +624,7 @@ static int o2hb_check_slot(struct o2hb_region *reg,
624 "seq %llu last %llu changed %u equal %u\n", 624 "seq %llu last %llu changed %u equal %u\n",
625 slot->ds_node_num, (long long)slot->ds_last_generation, 625 slot->ds_node_num, (long long)slot->ds_last_generation,
626 le32_to_cpu(hb_block->hb_cksum), 626 le32_to_cpu(hb_block->hb_cksum),
627 (unsigned long long)le64_to_cpu(hb_block->hb_seq), 627 (unsigned long long)le64_to_cpu(hb_block->hb_seq),
628 (unsigned long long)slot->ds_last_time, slot->ds_changed_samples, 628 (unsigned long long)slot->ds_last_time, slot->ds_changed_samples,
629 slot->ds_equal_samples); 629 slot->ds_equal_samples);
630 630
diff --git a/fs/ocfs2/cluster/tcp.c b/fs/ocfs2/cluster/tcp.c
index 334f231a422c..d8d0c65ac03c 100644
--- a/fs/ocfs2/cluster/tcp.c
+++ b/fs/ocfs2/cluster/tcp.c
@@ -485,7 +485,7 @@ static void o2net_set_nn_state(struct o2net_node *nn,
485 } 485 }
486 486
487 if (was_valid && !valid) { 487 if (was_valid && !valid) {
488 printk(KERN_INFO "o2net: no longer connected to " 488 printk(KERN_NOTICE "o2net: no longer connected to "
489 SC_NODEF_FMT "\n", SC_NODEF_ARGS(old_sc)); 489 SC_NODEF_FMT "\n", SC_NODEF_ARGS(old_sc));
490 o2net_complete_nodes_nsw(nn); 490 o2net_complete_nodes_nsw(nn);
491 } 491 }
@@ -493,7 +493,7 @@ static void o2net_set_nn_state(struct o2net_node *nn,
493 if (!was_valid && valid) { 493 if (!was_valid && valid) {
494 o2quo_conn_up(o2net_num_from_nn(nn)); 494 o2quo_conn_up(o2net_num_from_nn(nn));
495 cancel_delayed_work(&nn->nn_connect_expired); 495 cancel_delayed_work(&nn->nn_connect_expired);
496 printk(KERN_INFO "o2net: %s " SC_NODEF_FMT "\n", 496 printk(KERN_NOTICE "o2net: %s " SC_NODEF_FMT "\n",
497 o2nm_this_node() > sc->sc_node->nd_num ? 497 o2nm_this_node() > sc->sc_node->nd_num ?
498 "connected to" : "accepted connection from", 498 "connected to" : "accepted connection from",
499 SC_NODEF_ARGS(sc)); 499 SC_NODEF_ARGS(sc));
@@ -930,7 +930,7 @@ static void o2net_sendpage(struct o2net_sock_container *sc,
930 cond_resched(); 930 cond_resched();
931 continue; 931 continue;
932 } 932 }
933 mlog(ML_ERROR, "sendpage of size %zu to " SC_NODEF_FMT 933 mlog(ML_ERROR, "sendpage of size %zu to " SC_NODEF_FMT
934 " failed with %zd\n", size, SC_NODEF_ARGS(sc), ret); 934 " failed with %zd\n", size, SC_NODEF_ARGS(sc), ret);
935 o2net_ensure_shutdown(nn, sc, 0); 935 o2net_ensure_shutdown(nn, sc, 0);
936 break; 936 break;
@@ -1476,14 +1476,14 @@ static void o2net_idle_timer(unsigned long data)
1476 1476
1477 do_gettimeofday(&now); 1477 do_gettimeofday(&now);
1478 1478
1479 printk(KERN_INFO "o2net: connection to " SC_NODEF_FMT " has been idle for %u.%u " 1479 printk(KERN_NOTICE "o2net: connection to " SC_NODEF_FMT " has been idle for %u.%u "
1480 "seconds, shutting it down.\n", SC_NODEF_ARGS(sc), 1480 "seconds, shutting it down.\n", SC_NODEF_ARGS(sc),
1481 o2net_idle_timeout() / 1000, 1481 o2net_idle_timeout() / 1000,
1482 o2net_idle_timeout() % 1000); 1482 o2net_idle_timeout() % 1000);
1483 mlog(ML_NOTICE, "here are some times that might help debug the " 1483 mlog(ML_NOTICE, "here are some times that might help debug the "
1484 "situation: (tmr %ld.%ld now %ld.%ld dr %ld.%ld adv " 1484 "situation: (tmr %ld.%ld now %ld.%ld dr %ld.%ld adv "
1485 "%ld.%ld:%ld.%ld func (%08x:%u) %ld.%ld:%ld.%ld)\n", 1485 "%ld.%ld:%ld.%ld func (%08x:%u) %ld.%ld:%ld.%ld)\n",
1486 sc->sc_tv_timer.tv_sec, (long) sc->sc_tv_timer.tv_usec, 1486 sc->sc_tv_timer.tv_sec, (long) sc->sc_tv_timer.tv_usec,
1487 now.tv_sec, (long) now.tv_usec, 1487 now.tv_sec, (long) now.tv_usec,
1488 sc->sc_tv_data_ready.tv_sec, (long) sc->sc_tv_data_ready.tv_usec, 1488 sc->sc_tv_data_ready.tv_sec, (long) sc->sc_tv_data_ready.tv_usec,
1489 sc->sc_tv_advance_start.tv_sec, 1489 sc->sc_tv_advance_start.tv_sec,
diff --git a/fs/ocfs2/cluster/tcp_internal.h b/fs/ocfs2/cluster/tcp_internal.h
index 8d58cfe410b1..96fa7ebc530c 100644
--- a/fs/ocfs2/cluster/tcp_internal.h
+++ b/fs/ocfs2/cluster/tcp_internal.h
@@ -32,10 +32,10 @@
32 * on their number */ 32 * on their number */
33#define O2NET_QUORUM_DELAY_MS ((o2hb_dead_threshold + 2) * O2HB_REGION_TIMEOUT_MS) 33#define O2NET_QUORUM_DELAY_MS ((o2hb_dead_threshold + 2) * O2HB_REGION_TIMEOUT_MS)
34 34
35/* 35/*
36 * This version number represents quite a lot, unfortunately. It not 36 * This version number represents quite a lot, unfortunately. It not
37 * only represents the raw network message protocol on the wire but also 37 * only represents the raw network message protocol on the wire but also
38 * locking semantics of the file system using the protocol. It should 38 * locking semantics of the file system using the protocol. It should
39 * be somewhere else, I'm sure, but right now it isn't. 39 * be somewhere else, I'm sure, but right now it isn't.
40 * 40 *
41 * With version 11, we separate out the filesystem locking portion. The 41 * With version 11, we separate out the filesystem locking portion. The
diff --git a/fs/ocfs2/dlm/dlmapi.h b/fs/ocfs2/dlm/dlmapi.h
index b5786a787fab..3cfa114aa391 100644
--- a/fs/ocfs2/dlm/dlmapi.h
+++ b/fs/ocfs2/dlm/dlmapi.h
@@ -95,7 +95,7 @@ const char *dlm_errname(enum dlm_status err);
95 mlog(ML_ERROR, "dlm status = %s\n", dlm_errname((st))); \ 95 mlog(ML_ERROR, "dlm status = %s\n", dlm_errname((st))); \
96} while (0) 96} while (0)
97 97
98#define DLM_LKSB_UNUSED1 0x01 98#define DLM_LKSB_UNUSED1 0x01
99#define DLM_LKSB_PUT_LVB 0x02 99#define DLM_LKSB_PUT_LVB 0x02
100#define DLM_LKSB_GET_LVB 0x04 100#define DLM_LKSB_GET_LVB 0x04
101#define DLM_LKSB_UNUSED2 0x08 101#define DLM_LKSB_UNUSED2 0x08
diff --git a/fs/ocfs2/dlm/dlmast.c b/fs/ocfs2/dlm/dlmast.c
index 01cf8cc3d286..dccc439fa087 100644
--- a/fs/ocfs2/dlm/dlmast.c
+++ b/fs/ocfs2/dlm/dlmast.c
@@ -123,7 +123,7 @@ static void __dlm_queue_ast(struct dlm_ctxt *dlm, struct dlm_lock *lock)
123 dlm_lock_put(lock); 123 dlm_lock_put(lock);
124 /* free up the reserved bast that we are cancelling. 124 /* free up the reserved bast that we are cancelling.
125 * guaranteed that this will not be the last reserved 125 * guaranteed that this will not be the last reserved
126 * ast because *both* an ast and a bast were reserved 126 * ast because *both* an ast and a bast were reserved
127 * to get to this point. the res->spinlock will not be 127 * to get to this point. the res->spinlock will not be
128 * taken here */ 128 * taken here */
129 dlm_lockres_release_ast(dlm, res); 129 dlm_lockres_release_ast(dlm, res);
diff --git a/fs/ocfs2/dlm/dlmconvert.c b/fs/ocfs2/dlm/dlmconvert.c
index ca96bce50e18..f283bce776b4 100644
--- a/fs/ocfs2/dlm/dlmconvert.c
+++ b/fs/ocfs2/dlm/dlmconvert.c
@@ -396,7 +396,7 @@ static enum dlm_status dlm_send_remote_convert_request(struct dlm_ctxt *dlm,
396 /* instead of logging the same network error over 396 /* instead of logging the same network error over
397 * and over, sleep here and wait for the heartbeat 397 * and over, sleep here and wait for the heartbeat
398 * to notice the node is dead. times out after 5s. */ 398 * to notice the node is dead. times out after 5s. */
399 dlm_wait_for_node_death(dlm, res->owner, 399 dlm_wait_for_node_death(dlm, res->owner,
400 DLM_NODE_DEATH_WAIT_MAX); 400 DLM_NODE_DEATH_WAIT_MAX);
401 ret = DLM_RECOVERING; 401 ret = DLM_RECOVERING;
402 mlog(0, "node %u died so returning DLM_RECOVERING " 402 mlog(0, "node %u died so returning DLM_RECOVERING "
diff --git a/fs/ocfs2/dlm/dlmdebug.c b/fs/ocfs2/dlm/dlmdebug.c
index 42b0bad7a612..0cd24cf54396 100644
--- a/fs/ocfs2/dlm/dlmdebug.c
+++ b/fs/ocfs2/dlm/dlmdebug.c
@@ -102,7 +102,7 @@ void __dlm_print_one_lock_resource(struct dlm_lock_resource *res)
102 assert_spin_locked(&res->spinlock); 102 assert_spin_locked(&res->spinlock);
103 103
104 stringify_lockname(res->lockname.name, res->lockname.len, 104 stringify_lockname(res->lockname.name, res->lockname.len,
105 buf, sizeof(buf) - 1); 105 buf, sizeof(buf));
106 printk("lockres: %s, owner=%u, state=%u\n", 106 printk("lockres: %s, owner=%u, state=%u\n",
107 buf, res->owner, res->state); 107 buf, res->owner, res->state);
108 printk(" last used: %lu, refcnt: %u, on purge list: %s\n", 108 printk(" last used: %lu, refcnt: %u, on purge list: %s\n",
diff --git a/fs/ocfs2/dlm/dlmdomain.c b/fs/ocfs2/dlm/dlmdomain.c
index 0334000676d3..988c9055fd4e 100644
--- a/fs/ocfs2/dlm/dlmdomain.c
+++ b/fs/ocfs2/dlm/dlmdomain.c
@@ -816,7 +816,7 @@ static int dlm_query_join_handler(struct o2net_msg *msg, u32 len, void *data,
816 } 816 }
817 817
818 /* Once the dlm ctxt is marked as leaving then we don't want 818 /* Once the dlm ctxt is marked as leaving then we don't want
819 * to be put in someone's domain map. 819 * to be put in someone's domain map.
820 * Also, explicitly disallow joining at certain troublesome 820 * Also, explicitly disallow joining at certain troublesome
821 * times (ie. during recovery). */ 821 * times (ie. during recovery). */
822 if (dlm && dlm->dlm_state != DLM_CTXT_LEAVING) { 822 if (dlm && dlm->dlm_state != DLM_CTXT_LEAVING) {
diff --git a/fs/ocfs2/dlm/dlmlock.c b/fs/ocfs2/dlm/dlmlock.c
index 437698e9465f..733337772671 100644
--- a/fs/ocfs2/dlm/dlmlock.c
+++ b/fs/ocfs2/dlm/dlmlock.c
@@ -269,7 +269,7 @@ static enum dlm_status dlmlock_remote(struct dlm_ctxt *dlm,
269 } 269 }
270 dlm_revert_pending_lock(res, lock); 270 dlm_revert_pending_lock(res, lock);
271 dlm_lock_put(lock); 271 dlm_lock_put(lock);
272 } else if (dlm_is_recovery_lock(res->lockname.name, 272 } else if (dlm_is_recovery_lock(res->lockname.name,
273 res->lockname.len)) { 273 res->lockname.len)) {
274 /* special case for the $RECOVERY lock. 274 /* special case for the $RECOVERY lock.
275 * there will never be an AST delivered to put 275 * there will never be an AST delivered to put
diff --git a/fs/ocfs2/dlm/dlmmaster.c b/fs/ocfs2/dlm/dlmmaster.c
index 03ccf9a7b1f4..a659606dcb95 100644
--- a/fs/ocfs2/dlm/dlmmaster.c
+++ b/fs/ocfs2/dlm/dlmmaster.c
@@ -366,7 +366,7 @@ void dlm_hb_event_notify_attached(struct dlm_ctxt *dlm, int idx, int node_up)
366 struct dlm_master_list_entry *mle; 366 struct dlm_master_list_entry *mle;
367 367
368 assert_spin_locked(&dlm->spinlock); 368 assert_spin_locked(&dlm->spinlock);
369 369
370 list_for_each_entry(mle, &dlm->mle_hb_events, hb_events) { 370 list_for_each_entry(mle, &dlm->mle_hb_events, hb_events) {
371 if (node_up) 371 if (node_up)
372 dlm_mle_node_up(dlm, mle, NULL, idx); 372 dlm_mle_node_up(dlm, mle, NULL, idx);
@@ -833,7 +833,7 @@ lookup:
833 __dlm_insert_mle(dlm, mle); 833 __dlm_insert_mle(dlm, mle);
834 834
835 /* still holding the dlm spinlock, check the recovery map 835 /* still holding the dlm spinlock, check the recovery map
836 * to see if there are any nodes that still need to be 836 * to see if there are any nodes that still need to be
837 * considered. these will not appear in the mle nodemap 837 * considered. these will not appear in the mle nodemap
838 * but they might own this lockres. wait on them. */ 838 * but they might own this lockres. wait on them. */
839 bit = find_next_bit(dlm->recovery_map, O2NM_MAX_NODES, 0); 839 bit = find_next_bit(dlm->recovery_map, O2NM_MAX_NODES, 0);
@@ -883,7 +883,7 @@ redo_request:
883 msleep(500); 883 msleep(500);
884 } 884 }
885 continue; 885 continue;
886 } 886 }
887 887
888 dlm_kick_recovery_thread(dlm); 888 dlm_kick_recovery_thread(dlm);
889 msleep(1000); 889 msleep(1000);
@@ -939,8 +939,8 @@ wait:
939 res->lockname.name, blocked); 939 res->lockname.name, blocked);
940 if (++tries > 20) { 940 if (++tries > 20) {
941 mlog(ML_ERROR, "%s:%.*s: spinning on " 941 mlog(ML_ERROR, "%s:%.*s: spinning on "
942 "dlm_wait_for_lock_mastery, blocked=%d\n", 942 "dlm_wait_for_lock_mastery, blocked=%d\n",
943 dlm->name, res->lockname.len, 943 dlm->name, res->lockname.len,
944 res->lockname.name, blocked); 944 res->lockname.name, blocked);
945 dlm_print_one_lock_resource(res); 945 dlm_print_one_lock_resource(res);
946 dlm_print_one_mle(mle); 946 dlm_print_one_mle(mle);
@@ -1029,7 +1029,7 @@ recheck:
1029 ret = dlm_restart_lock_mastery(dlm, res, mle, *blocked); 1029 ret = dlm_restart_lock_mastery(dlm, res, mle, *blocked);
1030 b = (mle->type == DLM_MLE_BLOCK); 1030 b = (mle->type == DLM_MLE_BLOCK);
1031 if ((*blocked && !b) || (!*blocked && b)) { 1031 if ((*blocked && !b) || (!*blocked && b)) {
1032 mlog(0, "%s:%.*s: status change: old=%d new=%d\n", 1032 mlog(0, "%s:%.*s: status change: old=%d new=%d\n",
1033 dlm->name, res->lockname.len, res->lockname.name, 1033 dlm->name, res->lockname.len, res->lockname.name,
1034 *blocked, b); 1034 *blocked, b);
1035 *blocked = b; 1035 *blocked = b;
@@ -1602,7 +1602,7 @@ send_response:
1602 } 1602 }
1603 mlog(0, "%u is the owner of %.*s, cleaning everyone else\n", 1603 mlog(0, "%u is the owner of %.*s, cleaning everyone else\n",
1604 dlm->node_num, res->lockname.len, res->lockname.name); 1604 dlm->node_num, res->lockname.len, res->lockname.name);
1605 ret = dlm_dispatch_assert_master(dlm, res, 0, request->node_idx, 1605 ret = dlm_dispatch_assert_master(dlm, res, 0, request->node_idx,
1606 DLM_ASSERT_MASTER_MLE_CLEANUP); 1606 DLM_ASSERT_MASTER_MLE_CLEANUP);
1607 if (ret < 0) { 1607 if (ret < 0) {
1608 mlog(ML_ERROR, "failed to dispatch assert master work\n"); 1608 mlog(ML_ERROR, "failed to dispatch assert master work\n");
@@ -1701,7 +1701,7 @@ again:
1701 1701
1702 if (r & DLM_ASSERT_RESPONSE_REASSERT) { 1702 if (r & DLM_ASSERT_RESPONSE_REASSERT) {
1703 mlog(0, "%.*s: node %u create mles on other " 1703 mlog(0, "%.*s: node %u create mles on other "
1704 "nodes and requests a re-assert\n", 1704 "nodes and requests a re-assert\n",
1705 namelen, lockname, to); 1705 namelen, lockname, to);
1706 reassert = 1; 1706 reassert = 1;
1707 } 1707 }
@@ -1812,7 +1812,7 @@ int dlm_assert_master_handler(struct o2net_msg *msg, u32 len, void *data,
1812 spin_unlock(&dlm->master_lock); 1812 spin_unlock(&dlm->master_lock);
1813 spin_unlock(&dlm->spinlock); 1813 spin_unlock(&dlm->spinlock);
1814 goto done; 1814 goto done;
1815 } 1815 }
1816 } 1816 }
1817 } 1817 }
1818 spin_unlock(&dlm->master_lock); 1818 spin_unlock(&dlm->master_lock);
@@ -1883,7 +1883,7 @@ ok:
1883 int extra_ref = 0; 1883 int extra_ref = 0;
1884 int nn = -1; 1884 int nn = -1;
1885 int rr, err = 0; 1885 int rr, err = 0;
1886 1886
1887 spin_lock(&mle->spinlock); 1887 spin_lock(&mle->spinlock);
1888 if (mle->type == DLM_MLE_BLOCK || mle->type == DLM_MLE_MIGRATION) 1888 if (mle->type == DLM_MLE_BLOCK || mle->type == DLM_MLE_MIGRATION)
1889 extra_ref = 1; 1889 extra_ref = 1;
@@ -1891,7 +1891,7 @@ ok:
1891 /* MASTER mle: if any bits set in the response map 1891 /* MASTER mle: if any bits set in the response map
1892 * then the calling node needs to re-assert to clear 1892 * then the calling node needs to re-assert to clear
1893 * up nodes that this node contacted */ 1893 * up nodes that this node contacted */
1894 while ((nn = find_next_bit (mle->response_map, O2NM_MAX_NODES, 1894 while ((nn = find_next_bit (mle->response_map, O2NM_MAX_NODES,
1895 nn+1)) < O2NM_MAX_NODES) { 1895 nn+1)) < O2NM_MAX_NODES) {
1896 if (nn != dlm->node_num && nn != assert->node_idx) 1896 if (nn != dlm->node_num && nn != assert->node_idx)
1897 master_request = 1; 1897 master_request = 1;
@@ -2002,7 +2002,7 @@ kill:
2002 __dlm_print_one_lock_resource(res); 2002 __dlm_print_one_lock_resource(res);
2003 spin_unlock(&res->spinlock); 2003 spin_unlock(&res->spinlock);
2004 spin_unlock(&dlm->spinlock); 2004 spin_unlock(&dlm->spinlock);
2005 *ret_data = (void *)res; 2005 *ret_data = (void *)res;
2006 dlm_put(dlm); 2006 dlm_put(dlm);
2007 return -EINVAL; 2007 return -EINVAL;
2008} 2008}
@@ -2040,10 +2040,10 @@ int dlm_dispatch_assert_master(struct dlm_ctxt *dlm,
2040 item->u.am.request_from = request_from; 2040 item->u.am.request_from = request_from;
2041 item->u.am.flags = flags; 2041 item->u.am.flags = flags;
2042 2042
2043 if (ignore_higher) 2043 if (ignore_higher)
2044 mlog(0, "IGNORE HIGHER: %.*s\n", res->lockname.len, 2044 mlog(0, "IGNORE HIGHER: %.*s\n", res->lockname.len,
2045 res->lockname.name); 2045 res->lockname.name);
2046 2046
2047 spin_lock(&dlm->work_lock); 2047 spin_lock(&dlm->work_lock);
2048 list_add_tail(&item->list, &dlm->work_list); 2048 list_add_tail(&item->list, &dlm->work_list);
2049 spin_unlock(&dlm->work_lock); 2049 spin_unlock(&dlm->work_lock);
@@ -2133,7 +2133,7 @@ put:
2133 * think that $RECOVERY is currently mastered by a dead node. If so, 2133 * think that $RECOVERY is currently mastered by a dead node. If so,
2134 * we wait a short time to allow that node to get notified by its own 2134 * we wait a short time to allow that node to get notified by its own
2135 * heartbeat stack, then check again. All $RECOVERY lock resources 2135 * heartbeat stack, then check again. All $RECOVERY lock resources
2136 * mastered by dead nodes are purged when the hearbeat callback is 2136 * mastered by dead nodes are purged when the hearbeat callback is
2137 * fired, so we can know for sure that it is safe to continue once 2137 * fired, so we can know for sure that it is safe to continue once
2138 * the node returns a live node or no node. */ 2138 * the node returns a live node or no node. */
2139static int dlm_pre_master_reco_lockres(struct dlm_ctxt *dlm, 2139static int dlm_pre_master_reco_lockres(struct dlm_ctxt *dlm,
@@ -2174,7 +2174,7 @@ static int dlm_pre_master_reco_lockres(struct dlm_ctxt *dlm,
2174 ret = -EAGAIN; 2174 ret = -EAGAIN;
2175 } 2175 }
2176 spin_unlock(&dlm->spinlock); 2176 spin_unlock(&dlm->spinlock);
2177 mlog(0, "%s: reco lock master is %u\n", dlm->name, 2177 mlog(0, "%s: reco lock master is %u\n", dlm->name,
2178 master); 2178 master);
2179 break; 2179 break;
2180 } 2180 }
@@ -2602,7 +2602,7 @@ fail:
2602 2602
2603 mlog(0, "%s:%.*s: timed out during migration\n", 2603 mlog(0, "%s:%.*s: timed out during migration\n",
2604 dlm->name, res->lockname.len, res->lockname.name); 2604 dlm->name, res->lockname.len, res->lockname.name);
2605 /* avoid hang during shutdown when migrating lockres 2605 /* avoid hang during shutdown when migrating lockres
2606 * to a node which also goes down */ 2606 * to a node which also goes down */
2607 if (dlm_is_node_dead(dlm, target)) { 2607 if (dlm_is_node_dead(dlm, target)) {
2608 mlog(0, "%s:%.*s: expected migration " 2608 mlog(0, "%s:%.*s: expected migration "
@@ -2738,7 +2738,7 @@ static int dlm_migration_can_proceed(struct dlm_ctxt *dlm,
2738 can_proceed = !!(res->state & DLM_LOCK_RES_MIGRATING); 2738 can_proceed = !!(res->state & DLM_LOCK_RES_MIGRATING);
2739 spin_unlock(&res->spinlock); 2739 spin_unlock(&res->spinlock);
2740 2740
2741 /* target has died, so make the caller break out of the 2741 /* target has died, so make the caller break out of the
2742 * wait_event, but caller must recheck the domain_map */ 2742 * wait_event, but caller must recheck the domain_map */
2743 spin_lock(&dlm->spinlock); 2743 spin_lock(&dlm->spinlock);
2744 if (!test_bit(mig_target, dlm->domain_map)) 2744 if (!test_bit(mig_target, dlm->domain_map))
diff --git a/fs/ocfs2/dlm/dlmrecovery.c b/fs/ocfs2/dlm/dlmrecovery.c
index 2f9e4e19a4f2..344bcf90cbf4 100644
--- a/fs/ocfs2/dlm/dlmrecovery.c
+++ b/fs/ocfs2/dlm/dlmrecovery.c
@@ -1050,7 +1050,7 @@ static void dlm_move_reco_locks_to_list(struct dlm_ctxt *dlm,
1050 if (lock->ml.node == dead_node) { 1050 if (lock->ml.node == dead_node) {
1051 mlog(0, "AHA! there was " 1051 mlog(0, "AHA! there was "
1052 "a $RECOVERY lock for dead " 1052 "a $RECOVERY lock for dead "
1053 "node %u (%s)!\n", 1053 "node %u (%s)!\n",
1054 dead_node, dlm->name); 1054 dead_node, dlm->name);
1055 list_del_init(&lock->list); 1055 list_del_init(&lock->list);
1056 dlm_lock_put(lock); 1056 dlm_lock_put(lock);
@@ -1164,6 +1164,39 @@ static void dlm_init_migratable_lockres(struct dlm_migratable_lockres *mres,
1164 mres->master = master; 1164 mres->master = master;
1165} 1165}
1166 1166
1167static void dlm_prepare_lvb_for_migration(struct dlm_lock *lock,
1168 struct dlm_migratable_lockres *mres,
1169 int queue)
1170{
1171 if (!lock->lksb)
1172 return;
1173
1174 /* Ignore lvb in all locks in the blocked list */
1175 if (queue == DLM_BLOCKED_LIST)
1176 return;
1177
1178 /* Only consider lvbs in locks with granted EX or PR lock levels */
1179 if (lock->ml.type != LKM_EXMODE && lock->ml.type != LKM_PRMODE)
1180 return;
1181
1182 if (dlm_lvb_is_empty(mres->lvb)) {
1183 memcpy(mres->lvb, lock->lksb->lvb, DLM_LVB_LEN);
1184 return;
1185 }
1186
1187 /* Ensure the lvb copied for migration matches in other valid locks */
1188 if (!memcmp(mres->lvb, lock->lksb->lvb, DLM_LVB_LEN))
1189 return;
1190
1191 mlog(ML_ERROR, "Mismatched lvb in lock cookie=%u:%llu, name=%.*s, "
1192 "node=%u\n",
1193 dlm_get_lock_cookie_node(be64_to_cpu(lock->ml.cookie)),
1194 dlm_get_lock_cookie_seq(be64_to_cpu(lock->ml.cookie)),
1195 lock->lockres->lockname.len, lock->lockres->lockname.name,
1196 lock->ml.node);
1197 dlm_print_one_lock_resource(lock->lockres);
1198 BUG();
1199}
1167 1200
1168/* returns 1 if this lock fills the network structure, 1201/* returns 1 if this lock fills the network structure,
1169 * 0 otherwise */ 1202 * 0 otherwise */
@@ -1181,20 +1214,7 @@ static int dlm_add_lock_to_array(struct dlm_lock *lock,
1181 ml->list = queue; 1214 ml->list = queue;
1182 if (lock->lksb) { 1215 if (lock->lksb) {
1183 ml->flags = lock->lksb->flags; 1216 ml->flags = lock->lksb->flags;
1184 /* send our current lvb */ 1217 dlm_prepare_lvb_for_migration(lock, mres, queue);
1185 if (ml->type == LKM_EXMODE ||
1186 ml->type == LKM_PRMODE) {
1187 /* if it is already set, this had better be a PR
1188 * and it has to match */
1189 if (!dlm_lvb_is_empty(mres->lvb) &&
1190 (ml->type == LKM_EXMODE ||
1191 memcmp(mres->lvb, lock->lksb->lvb, DLM_LVB_LEN))) {
1192 mlog(ML_ERROR, "mismatched lvbs!\n");
1193 dlm_print_one_lock_resource(lock->lockres);
1194 BUG();
1195 }
1196 memcpy(mres->lvb, lock->lksb->lvb, DLM_LVB_LEN);
1197 }
1198 } 1218 }
1199 ml->node = lock->ml.node; 1219 ml->node = lock->ml.node;
1200 mres->num_locks++; 1220 mres->num_locks++;
@@ -1730,6 +1750,7 @@ static int dlm_process_recovery_data(struct dlm_ctxt *dlm,
1730 struct dlm_lock *lock = NULL; 1750 struct dlm_lock *lock = NULL;
1731 u8 from = O2NM_MAX_NODES; 1751 u8 from = O2NM_MAX_NODES;
1732 unsigned int added = 0; 1752 unsigned int added = 0;
1753 __be64 c;
1733 1754
1734 mlog(0, "running %d locks for this lockres\n", mres->num_locks); 1755 mlog(0, "running %d locks for this lockres\n", mres->num_locks);
1735 for (i=0; i<mres->num_locks; i++) { 1756 for (i=0; i<mres->num_locks; i++) {
@@ -1777,19 +1798,48 @@ static int dlm_process_recovery_data(struct dlm_ctxt *dlm,
1777 /* lock is always created locally first, and 1798 /* lock is always created locally first, and
1778 * destroyed locally last. it must be on the list */ 1799 * destroyed locally last. it must be on the list */
1779 if (!lock) { 1800 if (!lock) {
1780 __be64 c = ml->cookie; 1801 c = ml->cookie;
1781 mlog(ML_ERROR, "could not find local lock " 1802 mlog(ML_ERROR, "Could not find local lock "
1782 "with cookie %u:%llu!\n", 1803 "with cookie %u:%llu, node %u, "
1804 "list %u, flags 0x%x, type %d, "
1805 "conv %d, highest blocked %d\n",
1783 dlm_get_lock_cookie_node(be64_to_cpu(c)), 1806 dlm_get_lock_cookie_node(be64_to_cpu(c)),
1784 dlm_get_lock_cookie_seq(be64_to_cpu(c))); 1807 dlm_get_lock_cookie_seq(be64_to_cpu(c)),
1808 ml->node, ml->list, ml->flags, ml->type,
1809 ml->convert_type, ml->highest_blocked);
1810 __dlm_print_one_lock_resource(res);
1811 BUG();
1812 }
1813
1814 if (lock->ml.node != ml->node) {
1815 c = lock->ml.cookie;
1816 mlog(ML_ERROR, "Mismatched node# in lock "
1817 "cookie %u:%llu, name %.*s, node %u\n",
1818 dlm_get_lock_cookie_node(be64_to_cpu(c)),
1819 dlm_get_lock_cookie_seq(be64_to_cpu(c)),
1820 res->lockname.len, res->lockname.name,
1821 lock->ml.node);
1822 c = ml->cookie;
1823 mlog(ML_ERROR, "Migrate lock cookie %u:%llu, "
1824 "node %u, list %u, flags 0x%x, type %d, "
1825 "conv %d, highest blocked %d\n",
1826 dlm_get_lock_cookie_node(be64_to_cpu(c)),
1827 dlm_get_lock_cookie_seq(be64_to_cpu(c)),
1828 ml->node, ml->list, ml->flags, ml->type,
1829 ml->convert_type, ml->highest_blocked);
1785 __dlm_print_one_lock_resource(res); 1830 __dlm_print_one_lock_resource(res);
1786 BUG(); 1831 BUG();
1787 } 1832 }
1788 BUG_ON(lock->ml.node != ml->node);
1789 1833
1790 if (tmpq != queue) { 1834 if (tmpq != queue) {
1791 mlog(0, "lock was on %u instead of %u for %.*s\n", 1835 c = ml->cookie;
1792 j, ml->list, res->lockname.len, res->lockname.name); 1836 mlog(0, "Lock cookie %u:%llu was on list %u "
1837 "instead of list %u for %.*s\n",
1838 dlm_get_lock_cookie_node(be64_to_cpu(c)),
1839 dlm_get_lock_cookie_seq(be64_to_cpu(c)),
1840 j, ml->list, res->lockname.len,
1841 res->lockname.name);
1842 __dlm_print_one_lock_resource(res);
1793 spin_unlock(&res->spinlock); 1843 spin_unlock(&res->spinlock);
1794 continue; 1844 continue;
1795 } 1845 }
@@ -1839,7 +1889,7 @@ static int dlm_process_recovery_data(struct dlm_ctxt *dlm,
1839 * the lvb. */ 1889 * the lvb. */
1840 memcpy(res->lvb, mres->lvb, DLM_LVB_LEN); 1890 memcpy(res->lvb, mres->lvb, DLM_LVB_LEN);
1841 } else { 1891 } else {
1842 /* otherwise, the node is sending its 1892 /* otherwise, the node is sending its
1843 * most recent valid lvb info */ 1893 * most recent valid lvb info */
1844 BUG_ON(ml->type != LKM_EXMODE && 1894 BUG_ON(ml->type != LKM_EXMODE &&
1845 ml->type != LKM_PRMODE); 1895 ml->type != LKM_PRMODE);
@@ -1886,7 +1936,7 @@ skip_lvb:
1886 spin_lock(&res->spinlock); 1936 spin_lock(&res->spinlock);
1887 list_for_each_entry(lock, queue, list) { 1937 list_for_each_entry(lock, queue, list) {
1888 if (lock->ml.cookie == ml->cookie) { 1938 if (lock->ml.cookie == ml->cookie) {
1889 __be64 c = lock->ml.cookie; 1939 c = lock->ml.cookie;
1890 mlog(ML_ERROR, "%s:%.*s: %u:%llu: lock already " 1940 mlog(ML_ERROR, "%s:%.*s: %u:%llu: lock already "
1891 "exists on this lockres!\n", dlm->name, 1941 "exists on this lockres!\n", dlm->name,
1892 res->lockname.len, res->lockname.name, 1942 res->lockname.len, res->lockname.name,
@@ -2114,7 +2164,7 @@ static void dlm_revalidate_lvb(struct dlm_ctxt *dlm,
2114 assert_spin_locked(&res->spinlock); 2164 assert_spin_locked(&res->spinlock);
2115 2165
2116 if (res->owner == dlm->node_num) 2166 if (res->owner == dlm->node_num)
2117 /* if this node owned the lockres, and if the dead node 2167 /* if this node owned the lockres, and if the dead node
2118 * had an EX when he died, blank out the lvb */ 2168 * had an EX when he died, blank out the lvb */
2119 search_node = dead_node; 2169 search_node = dead_node;
2120 else { 2170 else {
@@ -2152,7 +2202,7 @@ static void dlm_free_dead_locks(struct dlm_ctxt *dlm,
2152 2202
2153 /* this node is the lockres master: 2203 /* this node is the lockres master:
2154 * 1) remove any stale locks for the dead node 2204 * 1) remove any stale locks for the dead node
2155 * 2) if the dead node had an EX when he died, blank out the lvb 2205 * 2) if the dead node had an EX when he died, blank out the lvb
2156 */ 2206 */
2157 assert_spin_locked(&dlm->spinlock); 2207 assert_spin_locked(&dlm->spinlock);
2158 assert_spin_locked(&res->spinlock); 2208 assert_spin_locked(&res->spinlock);
@@ -2193,7 +2243,12 @@ static void dlm_free_dead_locks(struct dlm_ctxt *dlm,
2193 mlog(0, "%s:%.*s: freed %u locks for dead node %u, " 2243 mlog(0, "%s:%.*s: freed %u locks for dead node %u, "
2194 "dropping ref from lockres\n", dlm->name, 2244 "dropping ref from lockres\n", dlm->name,
2195 res->lockname.len, res->lockname.name, freed, dead_node); 2245 res->lockname.len, res->lockname.name, freed, dead_node);
2196 BUG_ON(!test_bit(dead_node, res->refmap)); 2246 if(!test_bit(dead_node, res->refmap)) {
2247 mlog(ML_ERROR, "%s:%.*s: freed %u locks for dead node %u, "
2248 "but ref was not set\n", dlm->name,
2249 res->lockname.len, res->lockname.name, freed, dead_node);
2250 __dlm_print_one_lock_resource(res);
2251 }
2197 dlm_lockres_clear_refmap_bit(dead_node, res); 2252 dlm_lockres_clear_refmap_bit(dead_node, res);
2198 } else if (test_bit(dead_node, res->refmap)) { 2253 } else if (test_bit(dead_node, res->refmap)) {
2199 mlog(0, "%s:%.*s: dead node %u had a ref, but had " 2254 mlog(0, "%s:%.*s: dead node %u had a ref, but had "
@@ -2260,7 +2315,7 @@ static void dlm_do_local_recovery_cleanup(struct dlm_ctxt *dlm, u8 dead_node)
2260 } 2315 }
2261 spin_unlock(&res->spinlock); 2316 spin_unlock(&res->spinlock);
2262 continue; 2317 continue;
2263 } 2318 }
2264 spin_lock(&res->spinlock); 2319 spin_lock(&res->spinlock);
2265 /* zero the lvb if necessary */ 2320 /* zero the lvb if necessary */
2266 dlm_revalidate_lvb(dlm, res, dead_node); 2321 dlm_revalidate_lvb(dlm, res, dead_node);
@@ -2411,7 +2466,7 @@ static void dlm_reco_unlock_ast(void *astdata, enum dlm_status st)
2411 * this function on each node racing to become the recovery 2466 * this function on each node racing to become the recovery
2412 * master will not stop attempting this until either: 2467 * master will not stop attempting this until either:
2413 * a) this node gets the EX (and becomes the recovery master), 2468 * a) this node gets the EX (and becomes the recovery master),
2414 * or b) dlm->reco.new_master gets set to some nodenum 2469 * or b) dlm->reco.new_master gets set to some nodenum
2415 * != O2NM_INVALID_NODE_NUM (another node will do the reco). 2470 * != O2NM_INVALID_NODE_NUM (another node will do the reco).
2416 * so each time a recovery master is needed, the entire cluster 2471 * so each time a recovery master is needed, the entire cluster
2417 * will sync at this point. if the new master dies, that will 2472 * will sync at this point. if the new master dies, that will
@@ -2424,7 +2479,7 @@ static int dlm_pick_recovery_master(struct dlm_ctxt *dlm)
2424 2479
2425 mlog(0, "starting recovery of %s at %lu, dead=%u, this=%u\n", 2480 mlog(0, "starting recovery of %s at %lu, dead=%u, this=%u\n",
2426 dlm->name, jiffies, dlm->reco.dead_node, dlm->node_num); 2481 dlm->name, jiffies, dlm->reco.dead_node, dlm->node_num);
2427again: 2482again:
2428 memset(&lksb, 0, sizeof(lksb)); 2483 memset(&lksb, 0, sizeof(lksb));
2429 2484
2430 ret = dlmlock(dlm, LKM_EXMODE, &lksb, LKM_NOQUEUE|LKM_RECOVERY, 2485 ret = dlmlock(dlm, LKM_EXMODE, &lksb, LKM_NOQUEUE|LKM_RECOVERY,
@@ -2437,8 +2492,8 @@ again:
2437 if (ret == DLM_NORMAL) { 2492 if (ret == DLM_NORMAL) {
2438 mlog(0, "dlm=%s dlmlock says I got it (this=%u)\n", 2493 mlog(0, "dlm=%s dlmlock says I got it (this=%u)\n",
2439 dlm->name, dlm->node_num); 2494 dlm->name, dlm->node_num);
2440 2495
2441 /* got the EX lock. check to see if another node 2496 /* got the EX lock. check to see if another node
2442 * just became the reco master */ 2497 * just became the reco master */
2443 if (dlm_reco_master_ready(dlm)) { 2498 if (dlm_reco_master_ready(dlm)) {
2444 mlog(0, "%s: got reco EX lock, but %u will " 2499 mlog(0, "%s: got reco EX lock, but %u will "
@@ -2451,12 +2506,12 @@ again:
2451 /* see if recovery was already finished elsewhere */ 2506 /* see if recovery was already finished elsewhere */
2452 spin_lock(&dlm->spinlock); 2507 spin_lock(&dlm->spinlock);
2453 if (dlm->reco.dead_node == O2NM_INVALID_NODE_NUM) { 2508 if (dlm->reco.dead_node == O2NM_INVALID_NODE_NUM) {
2454 status = -EINVAL; 2509 status = -EINVAL;
2455 mlog(0, "%s: got reco EX lock, but " 2510 mlog(0, "%s: got reco EX lock, but "
2456 "node got recovered already\n", dlm->name); 2511 "node got recovered already\n", dlm->name);
2457 if (dlm->reco.new_master != O2NM_INVALID_NODE_NUM) { 2512 if (dlm->reco.new_master != O2NM_INVALID_NODE_NUM) {
2458 mlog(ML_ERROR, "%s: new master is %u " 2513 mlog(ML_ERROR, "%s: new master is %u "
2459 "but no dead node!\n", 2514 "but no dead node!\n",
2460 dlm->name, dlm->reco.new_master); 2515 dlm->name, dlm->reco.new_master);
2461 BUG(); 2516 BUG();
2462 } 2517 }
@@ -2468,7 +2523,7 @@ again:
2468 * set the master and send the messages to begin recovery */ 2523 * set the master and send the messages to begin recovery */
2469 if (!status) { 2524 if (!status) {
2470 mlog(0, "%s: dead=%u, this=%u, sending " 2525 mlog(0, "%s: dead=%u, this=%u, sending "
2471 "begin_reco now\n", dlm->name, 2526 "begin_reco now\n", dlm->name,
2472 dlm->reco.dead_node, dlm->node_num); 2527 dlm->reco.dead_node, dlm->node_num);
2473 status = dlm_send_begin_reco_message(dlm, 2528 status = dlm_send_begin_reco_message(dlm,
2474 dlm->reco.dead_node); 2529 dlm->reco.dead_node);
@@ -2501,7 +2556,7 @@ again:
2501 mlog(0, "dlm=%s dlmlock says another node got it (this=%u)\n", 2556 mlog(0, "dlm=%s dlmlock says another node got it (this=%u)\n",
2502 dlm->name, dlm->node_num); 2557 dlm->name, dlm->node_num);
2503 /* another node is master. wait on 2558 /* another node is master. wait on
2504 * reco.new_master != O2NM_INVALID_NODE_NUM 2559 * reco.new_master != O2NM_INVALID_NODE_NUM
2505 * for at most one second */ 2560 * for at most one second */
2506 wait_event_timeout(dlm->dlm_reco_thread_wq, 2561 wait_event_timeout(dlm->dlm_reco_thread_wq,
2507 dlm_reco_master_ready(dlm), 2562 dlm_reco_master_ready(dlm),
@@ -2589,7 +2644,13 @@ retry:
2589 "begin reco msg (%d)\n", dlm->name, nodenum, ret); 2644 "begin reco msg (%d)\n", dlm->name, nodenum, ret);
2590 ret = 0; 2645 ret = 0;
2591 } 2646 }
2592 if (ret == -EAGAIN) { 2647
2648 /*
2649 * Prior to commit aad1b15310b9bcd59fa81ab8f2b1513b59553ea8,
2650 * dlm_begin_reco_handler() returned EAGAIN and not -EAGAIN.
2651 * We are handling both for compatibility reasons.
2652 */
2653 if (ret == -EAGAIN || ret == EAGAIN) {
2593 mlog(0, "%s: trying to start recovery of node " 2654 mlog(0, "%s: trying to start recovery of node "
2594 "%u, but node %u is waiting for last recovery " 2655 "%u, but node %u is waiting for last recovery "
2595 "to complete, backoff for a bit\n", dlm->name, 2656 "to complete, backoff for a bit\n", dlm->name,
@@ -2599,7 +2660,7 @@ retry:
2599 } 2660 }
2600 if (ret < 0) { 2661 if (ret < 0) {
2601 struct dlm_lock_resource *res; 2662 struct dlm_lock_resource *res;
2602 /* this is now a serious problem, possibly ENOMEM 2663 /* this is now a serious problem, possibly ENOMEM
2603 * in the network stack. must retry */ 2664 * in the network stack. must retry */
2604 mlog_errno(ret); 2665 mlog_errno(ret);
2605 mlog(ML_ERROR, "begin reco of dlm %s to node %u " 2666 mlog(ML_ERROR, "begin reco of dlm %s to node %u "
@@ -2612,7 +2673,7 @@ retry:
2612 } else { 2673 } else {
2613 mlog(ML_ERROR, "recovery lock not found\n"); 2674 mlog(ML_ERROR, "recovery lock not found\n");
2614 } 2675 }
2615 /* sleep for a bit in hopes that we can avoid 2676 /* sleep for a bit in hopes that we can avoid
2616 * another ENOMEM */ 2677 * another ENOMEM */
2617 msleep(100); 2678 msleep(100);
2618 goto retry; 2679 goto retry;
@@ -2664,7 +2725,7 @@ int dlm_begin_reco_handler(struct o2net_msg *msg, u32 len, void *data,
2664 } 2725 }
2665 if (dlm->reco.dead_node != O2NM_INVALID_NODE_NUM) { 2726 if (dlm->reco.dead_node != O2NM_INVALID_NODE_NUM) {
2666 mlog(ML_NOTICE, "%s: dead_node previously set to %u, " 2727 mlog(ML_NOTICE, "%s: dead_node previously set to %u, "
2667 "node %u changing it to %u\n", dlm->name, 2728 "node %u changing it to %u\n", dlm->name,
2668 dlm->reco.dead_node, br->node_idx, br->dead_node); 2729 dlm->reco.dead_node, br->node_idx, br->dead_node);
2669 } 2730 }
2670 dlm_set_reco_master(dlm, br->node_idx); 2731 dlm_set_reco_master(dlm, br->node_idx);
@@ -2730,8 +2791,8 @@ stage2:
2730 if (ret < 0) { 2791 if (ret < 0) {
2731 mlog_errno(ret); 2792 mlog_errno(ret);
2732 if (dlm_is_host_down(ret)) { 2793 if (dlm_is_host_down(ret)) {
2733 /* this has no effect on this recovery 2794 /* this has no effect on this recovery
2734 * session, so set the status to zero to 2795 * session, so set the status to zero to
2735 * finish out the last recovery */ 2796 * finish out the last recovery */
2736 mlog(ML_ERROR, "node %u went down after this " 2797 mlog(ML_ERROR, "node %u went down after this "
2737 "node finished recovery.\n", nodenum); 2798 "node finished recovery.\n", nodenum);
@@ -2768,7 +2829,7 @@ int dlm_finalize_reco_handler(struct o2net_msg *msg, u32 len, void *data,
2768 mlog(0, "%s: node %u finalizing recovery stage%d of " 2829 mlog(0, "%s: node %u finalizing recovery stage%d of "
2769 "node %u (%u:%u)\n", dlm->name, fr->node_idx, stage, 2830 "node %u (%u:%u)\n", dlm->name, fr->node_idx, stage,
2770 fr->dead_node, dlm->reco.dead_node, dlm->reco.new_master); 2831 fr->dead_node, dlm->reco.dead_node, dlm->reco.new_master);
2771 2832
2772 spin_lock(&dlm->spinlock); 2833 spin_lock(&dlm->spinlock);
2773 2834
2774 if (dlm->reco.new_master != fr->node_idx) { 2835 if (dlm->reco.new_master != fr->node_idx) {
diff --git a/fs/ocfs2/dlm/dlmunlock.c b/fs/ocfs2/dlm/dlmunlock.c
index 00f53b2aea76..49e29ecd0201 100644
--- a/fs/ocfs2/dlm/dlmunlock.c
+++ b/fs/ocfs2/dlm/dlmunlock.c
@@ -190,8 +190,8 @@ static enum dlm_status dlmunlock_common(struct dlm_ctxt *dlm,
190 actions &= ~(DLM_UNLOCK_REMOVE_LOCK| 190 actions &= ~(DLM_UNLOCK_REMOVE_LOCK|
191 DLM_UNLOCK_REGRANT_LOCK| 191 DLM_UNLOCK_REGRANT_LOCK|
192 DLM_UNLOCK_CLEAR_CONVERT_TYPE); 192 DLM_UNLOCK_CLEAR_CONVERT_TYPE);
193 } else if (status == DLM_RECOVERING || 193 } else if (status == DLM_RECOVERING ||
194 status == DLM_MIGRATING || 194 status == DLM_MIGRATING ||
195 status == DLM_FORWARD) { 195 status == DLM_FORWARD) {
196 /* must clear the actions because this unlock 196 /* must clear the actions because this unlock
197 * is about to be retried. cannot free or do 197 * is about to be retried. cannot free or do
@@ -661,14 +661,14 @@ retry:
661 if (call_ast) { 661 if (call_ast) {
662 mlog(0, "calling unlockast(%p, %d)\n", data, status); 662 mlog(0, "calling unlockast(%p, %d)\n", data, status);
663 if (is_master) { 663 if (is_master) {
664 /* it is possible that there is one last bast 664 /* it is possible that there is one last bast
665 * pending. make sure it is flushed, then 665 * pending. make sure it is flushed, then
666 * call the unlockast. 666 * call the unlockast.
667 * not an issue if this is a mastered remotely, 667 * not an issue if this is a mastered remotely,
668 * since this lock has been removed from the 668 * since this lock has been removed from the
669 * lockres queues and cannot be found. */ 669 * lockres queues and cannot be found. */
670 dlm_kick_thread(dlm, NULL); 670 dlm_kick_thread(dlm, NULL);
671 wait_event(dlm->ast_wq, 671 wait_event(dlm->ast_wq,
672 dlm_lock_basts_flushed(dlm, lock)); 672 dlm_lock_basts_flushed(dlm, lock));
673 } 673 }
674 (*unlockast)(data, status); 674 (*unlockast)(data, status);
diff --git a/fs/ocfs2/dlmglue.c b/fs/ocfs2/dlmglue.c
index c5e4a49e3a12..e044019cb3b1 100644
--- a/fs/ocfs2/dlmglue.c
+++ b/fs/ocfs2/dlmglue.c
@@ -875,6 +875,14 @@ static inline void ocfs2_generic_handle_convert_action(struct ocfs2_lock_res *lo
875 lockres_or_flags(lockres, OCFS2_LOCK_NEEDS_REFRESH); 875 lockres_or_flags(lockres, OCFS2_LOCK_NEEDS_REFRESH);
876 876
877 lockres->l_level = lockres->l_requested; 877 lockres->l_level = lockres->l_requested;
878
879 /*
880 * We set the OCFS2_LOCK_UPCONVERT_FINISHING flag before clearing
881 * the OCFS2_LOCK_BUSY flag to prevent the dc thread from
882 * downconverting the lock before the upconvert has fully completed.
883 */
884 lockres_or_flags(lockres, OCFS2_LOCK_UPCONVERT_FINISHING);
885
878 lockres_clear_flags(lockres, OCFS2_LOCK_BUSY); 886 lockres_clear_flags(lockres, OCFS2_LOCK_BUSY);
879 887
880 mlog_exit_void(); 888 mlog_exit_void();
@@ -907,8 +915,6 @@ static int ocfs2_generic_handle_bast(struct ocfs2_lock_res *lockres,
907 915
908 assert_spin_locked(&lockres->l_lock); 916 assert_spin_locked(&lockres->l_lock);
909 917
910 lockres_or_flags(lockres, OCFS2_LOCK_BLOCKED);
911
912 if (level > lockres->l_blocking) { 918 if (level > lockres->l_blocking) {
913 /* only schedule a downconvert if we haven't already scheduled 919 /* only schedule a downconvert if we haven't already scheduled
914 * one that goes low enough to satisfy the level we're 920 * one that goes low enough to satisfy the level we're
@@ -921,6 +927,9 @@ static int ocfs2_generic_handle_bast(struct ocfs2_lock_res *lockres,
921 lockres->l_blocking = level; 927 lockres->l_blocking = level;
922 } 928 }
923 929
930 if (needs_downconvert)
931 lockres_or_flags(lockres, OCFS2_LOCK_BLOCKED);
932
924 mlog_exit(needs_downconvert); 933 mlog_exit(needs_downconvert);
925 return needs_downconvert; 934 return needs_downconvert;
926} 935}
@@ -1133,6 +1142,7 @@ static inline void ocfs2_recover_from_dlm_error(struct ocfs2_lock_res *lockres,
1133 mlog_entry_void(); 1142 mlog_entry_void();
1134 spin_lock_irqsave(&lockres->l_lock, flags); 1143 spin_lock_irqsave(&lockres->l_lock, flags);
1135 lockres_clear_flags(lockres, OCFS2_LOCK_BUSY); 1144 lockres_clear_flags(lockres, OCFS2_LOCK_BUSY);
1145 lockres_clear_flags(lockres, OCFS2_LOCK_UPCONVERT_FINISHING);
1136 if (convert) 1146 if (convert)
1137 lockres->l_action = OCFS2_AST_INVALID; 1147 lockres->l_action = OCFS2_AST_INVALID;
1138 else 1148 else
@@ -1323,13 +1333,13 @@ static int __ocfs2_cluster_lock(struct ocfs2_super *osb,
1323again: 1333again:
1324 wait = 0; 1334 wait = 0;
1325 1335
1336 spin_lock_irqsave(&lockres->l_lock, flags);
1337
1326 if (catch_signals && signal_pending(current)) { 1338 if (catch_signals && signal_pending(current)) {
1327 ret = -ERESTARTSYS; 1339 ret = -ERESTARTSYS;
1328 goto out; 1340 goto unlock;
1329 } 1341 }
1330 1342
1331 spin_lock_irqsave(&lockres->l_lock, flags);
1332
1333 mlog_bug_on_msg(lockres->l_flags & OCFS2_LOCK_FREEING, 1343 mlog_bug_on_msg(lockres->l_flags & OCFS2_LOCK_FREEING,
1334 "Cluster lock called on freeing lockres %s! flags " 1344 "Cluster lock called on freeing lockres %s! flags "
1335 "0x%lx\n", lockres->l_name, lockres->l_flags); 1345 "0x%lx\n", lockres->l_name, lockres->l_flags);
@@ -1346,6 +1356,25 @@ again:
1346 goto unlock; 1356 goto unlock;
1347 } 1357 }
1348 1358
1359 if (lockres->l_flags & OCFS2_LOCK_UPCONVERT_FINISHING) {
1360 /*
1361 * We've upconverted. If the lock now has a level we can
1362 * work with, we take it. If, however, the lock is not at the
1363 * required level, we go thru the full cycle. One way this could
1364 * happen is if a process requesting an upconvert to PR is
1365 * closely followed by another requesting upconvert to an EX.
1366 * If the process requesting EX lands here, we want it to
1367 * continue attempting to upconvert and let the process
1368 * requesting PR take the lock.
1369 * If multiple processes request upconvert to PR, the first one
1370 * here will take the lock. The others will have to go thru the
1371 * OCFS2_LOCK_BLOCKED check to ensure that there is no pending
1372 * downconvert request.
1373 */
1374 if (level <= lockres->l_level)
1375 goto update_holders;
1376 }
1377
1349 if (lockres->l_flags & OCFS2_LOCK_BLOCKED && 1378 if (lockres->l_flags & OCFS2_LOCK_BLOCKED &&
1350 !ocfs2_may_continue_on_blocked_lock(lockres, level)) { 1379 !ocfs2_may_continue_on_blocked_lock(lockres, level)) {
1351 /* is the lock is currently blocked on behalf of 1380 /* is the lock is currently blocked on behalf of
@@ -1416,11 +1445,14 @@ again:
1416 goto again; 1445 goto again;
1417 } 1446 }
1418 1447
1448update_holders:
1419 /* Ok, if we get here then we're good to go. */ 1449 /* Ok, if we get here then we're good to go. */
1420 ocfs2_inc_holders(lockres, level); 1450 ocfs2_inc_holders(lockres, level);
1421 1451
1422 ret = 0; 1452 ret = 0;
1423unlock: 1453unlock:
1454 lockres_clear_flags(lockres, OCFS2_LOCK_UPCONVERT_FINISHING);
1455
1424 spin_unlock_irqrestore(&lockres->l_lock, flags); 1456 spin_unlock_irqrestore(&lockres->l_lock, flags);
1425out: 1457out:
1426 /* 1458 /*
@@ -3155,7 +3187,7 @@ out:
3155/* Mark the lockres as being dropped. It will no longer be 3187/* Mark the lockres as being dropped. It will no longer be
3156 * queued if blocking, but we still may have to wait on it 3188 * queued if blocking, but we still may have to wait on it
3157 * being dequeued from the downconvert thread before we can consider 3189 * being dequeued from the downconvert thread before we can consider
3158 * it safe to drop. 3190 * it safe to drop.
3159 * 3191 *
3160 * You can *not* attempt to call cluster_lock on this lockres anymore. */ 3192 * You can *not* attempt to call cluster_lock on this lockres anymore. */
3161void ocfs2_mark_lockres_freeing(struct ocfs2_lock_res *lockres) 3193void ocfs2_mark_lockres_freeing(struct ocfs2_lock_res *lockres)
@@ -3352,6 +3384,7 @@ static int ocfs2_unblock_lock(struct ocfs2_super *osb,
3352 unsigned long flags; 3384 unsigned long flags;
3353 int blocking; 3385 int blocking;
3354 int new_level; 3386 int new_level;
3387 int level;
3355 int ret = 0; 3388 int ret = 0;
3356 int set_lvb = 0; 3389 int set_lvb = 0;
3357 unsigned int gen; 3390 unsigned int gen;
@@ -3360,9 +3393,17 @@ static int ocfs2_unblock_lock(struct ocfs2_super *osb,
3360 3393
3361 spin_lock_irqsave(&lockres->l_lock, flags); 3394 spin_lock_irqsave(&lockres->l_lock, flags);
3362 3395
3363 BUG_ON(!(lockres->l_flags & OCFS2_LOCK_BLOCKED));
3364
3365recheck: 3396recheck:
3397 /*
3398 * Is it still blocking? If not, we have no more work to do.
3399 */
3400 if (!(lockres->l_flags & OCFS2_LOCK_BLOCKED)) {
3401 BUG_ON(lockres->l_blocking != DLM_LOCK_NL);
3402 spin_unlock_irqrestore(&lockres->l_lock, flags);
3403 ret = 0;
3404 goto leave;
3405 }
3406
3366 if (lockres->l_flags & OCFS2_LOCK_BUSY) { 3407 if (lockres->l_flags & OCFS2_LOCK_BUSY) {
3367 /* XXX 3408 /* XXX
3368 * This is a *big* race. The OCFS2_LOCK_PENDING flag 3409 * This is a *big* race. The OCFS2_LOCK_PENDING flag
@@ -3401,6 +3442,31 @@ recheck:
3401 goto leave; 3442 goto leave;
3402 } 3443 }
3403 3444
3445 /*
3446 * This prevents livelocks. OCFS2_LOCK_UPCONVERT_FINISHING flag is
3447 * set when the ast is received for an upconvert just before the
3448 * OCFS2_LOCK_BUSY flag is cleared. Now if the fs received a bast
3449 * on the heels of the ast, we want to delay the downconvert just
3450 * enough to allow the up requestor to do its task. Because this
3451 * lock is in the blocked queue, the lock will be downconverted
3452 * as soon as the requestor is done with the lock.
3453 */
3454 if (lockres->l_flags & OCFS2_LOCK_UPCONVERT_FINISHING)
3455 goto leave_requeue;
3456
3457 /*
3458 * How can we block and yet be at NL? We were trying to upconvert
3459 * from NL and got canceled. The code comes back here, and now
3460 * we notice and clear BLOCKING.
3461 */
3462 if (lockres->l_level == DLM_LOCK_NL) {
3463 BUG_ON(lockres->l_ex_holders || lockres->l_ro_holders);
3464 lockres->l_blocking = DLM_LOCK_NL;
3465 lockres_clear_flags(lockres, OCFS2_LOCK_BLOCKED);
3466 spin_unlock_irqrestore(&lockres->l_lock, flags);
3467 goto leave;
3468 }
3469
3404 /* if we're blocking an exclusive and we have *any* holders, 3470 /* if we're blocking an exclusive and we have *any* holders,
3405 * then requeue. */ 3471 * then requeue. */
3406 if ((lockres->l_blocking == DLM_LOCK_EX) 3472 if ((lockres->l_blocking == DLM_LOCK_EX)
@@ -3438,6 +3504,7 @@ recheck:
3438 * may sleep, so we save off a copy of what we're blocking as 3504 * may sleep, so we save off a copy of what we're blocking as
3439 * it may change while we're not holding the spin lock. */ 3505 * it may change while we're not holding the spin lock. */
3440 blocking = lockres->l_blocking; 3506 blocking = lockres->l_blocking;
3507 level = lockres->l_level;
3441 spin_unlock_irqrestore(&lockres->l_lock, flags); 3508 spin_unlock_irqrestore(&lockres->l_lock, flags);
3442 3509
3443 ctl->unblock_action = lockres->l_ops->downconvert_worker(lockres, blocking); 3510 ctl->unblock_action = lockres->l_ops->downconvert_worker(lockres, blocking);
@@ -3446,7 +3513,7 @@ recheck:
3446 goto leave; 3513 goto leave;
3447 3514
3448 spin_lock_irqsave(&lockres->l_lock, flags); 3515 spin_lock_irqsave(&lockres->l_lock, flags);
3449 if (blocking != lockres->l_blocking) { 3516 if ((blocking != lockres->l_blocking) || (level != lockres->l_level)) {
3450 /* If this changed underneath us, then we can't drop 3517 /* If this changed underneath us, then we can't drop
3451 * it just yet. */ 3518 * it just yet. */
3452 goto recheck; 3519 goto recheck;
diff --git a/fs/ocfs2/export.c b/fs/ocfs2/export.c
index 15713cbb865c..19ad145d2af3 100644
--- a/fs/ocfs2/export.c
+++ b/fs/ocfs2/export.c
@@ -239,7 +239,7 @@ static int ocfs2_encode_fh(struct dentry *dentry, u32 *fh_in, int *max_len,
239 mlog(0, "Encoding parent: blkno: %llu, generation: %u\n", 239 mlog(0, "Encoding parent: blkno: %llu, generation: %u\n",
240 (unsigned long long)blkno, generation); 240 (unsigned long long)blkno, generation);
241 } 241 }
242 242
243 *max_len = len; 243 *max_len = len;
244 244
245bail: 245bail:
diff --git a/fs/ocfs2/extent_map.c b/fs/ocfs2/extent_map.c
index d35a27f4523e..5328529e7fd2 100644
--- a/fs/ocfs2/extent_map.c
+++ b/fs/ocfs2/extent_map.c
@@ -192,7 +192,7 @@ static int ocfs2_try_to_merge_extent_map(struct ocfs2_extent_map_item *emi,
192 emi->ei_clusters += ins->ei_clusters; 192 emi->ei_clusters += ins->ei_clusters;
193 return 1; 193 return 1;
194 } else if ((ins->ei_phys + ins->ei_clusters) == emi->ei_phys && 194 } else if ((ins->ei_phys + ins->ei_clusters) == emi->ei_phys &&
195 (ins->ei_cpos + ins->ei_clusters) == emi->ei_phys && 195 (ins->ei_cpos + ins->ei_clusters) == emi->ei_cpos &&
196 ins->ei_flags == emi->ei_flags) { 196 ins->ei_flags == emi->ei_flags) {
197 emi->ei_phys = ins->ei_phys; 197 emi->ei_phys = ins->ei_phys;
198 emi->ei_cpos = ins->ei_cpos; 198 emi->ei_cpos = ins->ei_cpos;
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
index 3d30a1c974a8..558ce0312421 100644
--- a/fs/ocfs2/file.c
+++ b/fs/ocfs2/file.c
@@ -749,7 +749,7 @@ static int ocfs2_write_zero_page(struct inode *inode,
749 int ret; 749 int ret;
750 750
751 offset = (size & (PAGE_CACHE_SIZE-1)); /* Within page */ 751 offset = (size & (PAGE_CACHE_SIZE-1)); /* Within page */
752 /* ugh. in prepare/commit_write, if from==to==start of block, we 752 /* ugh. in prepare/commit_write, if from==to==start of block, we
753 ** skip the prepare. make sure we never send an offset for the start 753 ** skip the prepare. make sure we never send an offset for the start
754 ** of a block 754 ** of a block
755 */ 755 */
@@ -1772,13 +1772,14 @@ static int ocfs2_prepare_inode_for_write(struct dentry *dentry,
1772 loff_t *ppos, 1772 loff_t *ppos,
1773 size_t count, 1773 size_t count,
1774 int appending, 1774 int appending,
1775 int *direct_io) 1775 int *direct_io,
1776 int *has_refcount)
1776{ 1777{
1777 int ret = 0, meta_level = 0; 1778 int ret = 0, meta_level = 0;
1778 struct inode *inode = dentry->d_inode; 1779 struct inode *inode = dentry->d_inode;
1779 loff_t saved_pos, end; 1780 loff_t saved_pos, end;
1780 1781
1781 /* 1782 /*
1782 * We start with a read level meta lock and only jump to an ex 1783 * We start with a read level meta lock and only jump to an ex
1783 * if we need to make modifications here. 1784 * if we need to make modifications here.
1784 */ 1785 */
@@ -1833,6 +1834,8 @@ static int ocfs2_prepare_inode_for_write(struct dentry *dentry,
1833 saved_pos, 1834 saved_pos,
1834 count, 1835 count,
1835 &meta_level); 1836 &meta_level);
1837 if (has_refcount)
1838 *has_refcount = 1;
1836 } 1839 }
1837 1840
1838 if (ret < 0) { 1841 if (ret < 0) {
@@ -1856,6 +1859,10 @@ static int ocfs2_prepare_inode_for_write(struct dentry *dentry,
1856 break; 1859 break;
1857 } 1860 }
1858 1861
1862 if (has_refcount && *has_refcount == 1) {
1863 *direct_io = 0;
1864 break;
1865 }
1859 /* 1866 /*
1860 * Allowing concurrent direct writes means 1867 * Allowing concurrent direct writes means
1861 * i_size changes wouldn't be synchronized, so 1868 * i_size changes wouldn't be synchronized, so
@@ -1899,7 +1906,7 @@ static ssize_t ocfs2_file_aio_write(struct kiocb *iocb,
1899 loff_t pos) 1906 loff_t pos)
1900{ 1907{
1901 int ret, direct_io, appending, rw_level, have_alloc_sem = 0; 1908 int ret, direct_io, appending, rw_level, have_alloc_sem = 0;
1902 int can_do_direct; 1909 int can_do_direct, has_refcount = 0;
1903 ssize_t written = 0; 1910 ssize_t written = 0;
1904 size_t ocount; /* original count */ 1911 size_t ocount; /* original count */
1905 size_t count; /* after file limit checks */ 1912 size_t count; /* after file limit checks */
@@ -1942,7 +1949,7 @@ relock:
1942 can_do_direct = direct_io; 1949 can_do_direct = direct_io;
1943 ret = ocfs2_prepare_inode_for_write(file->f_path.dentry, ppos, 1950 ret = ocfs2_prepare_inode_for_write(file->f_path.dentry, ppos,
1944 iocb->ki_left, appending, 1951 iocb->ki_left, appending,
1945 &can_do_direct); 1952 &can_do_direct, &has_refcount);
1946 if (ret < 0) { 1953 if (ret < 0) {
1947 mlog_errno(ret); 1954 mlog_errno(ret);
1948 goto out; 1955 goto out;
@@ -2006,14 +2013,16 @@ out_dio:
2006 /* buffered aio wouldn't have proper lock coverage today */ 2013 /* buffered aio wouldn't have proper lock coverage today */
2007 BUG_ON(ret == -EIOCBQUEUED && !(file->f_flags & O_DIRECT)); 2014 BUG_ON(ret == -EIOCBQUEUED && !(file->f_flags & O_DIRECT));
2008 2015
2009 if ((file->f_flags & O_DSYNC && !direct_io) || IS_SYNC(inode)) { 2016 if (((file->f_flags & O_DSYNC) && !direct_io) || IS_SYNC(inode) ||
2017 ((file->f_flags & O_DIRECT) && has_refcount)) {
2010 ret = filemap_fdatawrite_range(file->f_mapping, pos, 2018 ret = filemap_fdatawrite_range(file->f_mapping, pos,
2011 pos + count - 1); 2019 pos + count - 1);
2012 if (ret < 0) 2020 if (ret < 0)
2013 written = ret; 2021 written = ret;
2014 2022
2015 if (!ret && (old_size != i_size_read(inode) || 2023 if (!ret && (old_size != i_size_read(inode) ||
2016 old_clusters != OCFS2_I(inode)->ip_clusters)) { 2024 old_clusters != OCFS2_I(inode)->ip_clusters ||
2025 has_refcount)) {
2017 ret = jbd2_journal_force_commit(osb->journal->j_journal); 2026 ret = jbd2_journal_force_commit(osb->journal->j_journal);
2018 if (ret < 0) 2027 if (ret < 0)
2019 written = ret; 2028 written = ret;
@@ -2024,7 +2033,7 @@ out_dio:
2024 pos + count - 1); 2033 pos + count - 1);
2025 } 2034 }
2026 2035
2027 /* 2036 /*
2028 * deep in g_f_a_w_n()->ocfs2_direct_IO we pass in a ocfs2_dio_end_io 2037 * deep in g_f_a_w_n()->ocfs2_direct_IO we pass in a ocfs2_dio_end_io
2029 * function pointer which is called when o_direct io completes so that 2038 * function pointer which is called when o_direct io completes so that
2030 * it can unlock our rw lock. (it's the clustered equivalent of 2039 * it can unlock our rw lock. (it's the clustered equivalent of
@@ -2062,7 +2071,7 @@ static int ocfs2_splice_to_file(struct pipe_inode_info *pipe,
2062 int ret; 2071 int ret;
2063 2072
2064 ret = ocfs2_prepare_inode_for_write(out->f_path.dentry, &sd->pos, 2073 ret = ocfs2_prepare_inode_for_write(out->f_path.dentry, &sd->pos,
2065 sd->total_len, 0, NULL); 2074 sd->total_len, 0, NULL, NULL);
2066 if (ret < 0) { 2075 if (ret < 0) {
2067 mlog_errno(ret); 2076 mlog_errno(ret);
2068 return ret; 2077 return ret;
@@ -2189,7 +2198,7 @@ static ssize_t ocfs2_file_aio_read(struct kiocb *iocb,
2189 goto bail; 2198 goto bail;
2190 } 2199 }
2191 2200
2192 /* 2201 /*
2193 * buffered reads protect themselves in ->readpage(). O_DIRECT reads 2202 * buffered reads protect themselves in ->readpage(). O_DIRECT reads
2194 * need locks to protect pending reads from racing with truncate. 2203 * need locks to protect pending reads from racing with truncate.
2195 */ 2204 */
@@ -2211,10 +2220,10 @@ static ssize_t ocfs2_file_aio_read(struct kiocb *iocb,
2211 * We're fine letting folks race truncates and extending 2220 * We're fine letting folks race truncates and extending
2212 * writes with read across the cluster, just like they can 2221 * writes with read across the cluster, just like they can
2213 * locally. Hence no rw_lock during read. 2222 * locally. Hence no rw_lock during read.
2214 * 2223 *
2215 * Take and drop the meta data lock to update inode fields 2224 * Take and drop the meta data lock to update inode fields
2216 * like i_size. This allows the checks down below 2225 * like i_size. This allows the checks down below
2217 * generic_file_aio_read() a chance of actually working. 2226 * generic_file_aio_read() a chance of actually working.
2218 */ 2227 */
2219 ret = ocfs2_inode_lock_atime(inode, filp->f_vfsmnt, &lock_level); 2228 ret = ocfs2_inode_lock_atime(inode, filp->f_vfsmnt, &lock_level);
2220 if (ret < 0) { 2229 if (ret < 0) {
@@ -2239,7 +2248,7 @@ static ssize_t ocfs2_file_aio_read(struct kiocb *iocb,
2239bail: 2248bail:
2240 if (have_alloc_sem) 2249 if (have_alloc_sem)
2241 up_read(&inode->i_alloc_sem); 2250 up_read(&inode->i_alloc_sem);
2242 if (rw_level != -1) 2251 if (rw_level != -1)
2243 ocfs2_rw_unlock(inode, rw_level); 2252 ocfs2_rw_unlock(inode, rw_level);
2244 mlog_exit(ret); 2253 mlog_exit(ret);
2245 2254
diff --git a/fs/ocfs2/inode.c b/fs/ocfs2/inode.c
index 0297fb8982b8..88459bdd1ff3 100644
--- a/fs/ocfs2/inode.c
+++ b/fs/ocfs2/inode.c
@@ -475,7 +475,7 @@ static int ocfs2_read_locked_inode(struct inode *inode,
475 if (args->fi_flags & OCFS2_FI_FLAG_ORPHAN_RECOVERY) { 475 if (args->fi_flags & OCFS2_FI_FLAG_ORPHAN_RECOVERY) {
476 status = ocfs2_try_open_lock(inode, 0); 476 status = ocfs2_try_open_lock(inode, 0);
477 if (status) { 477 if (status) {
478 make_bad_inode(inode); 478 make_bad_inode(inode);
479 return status; 479 return status;
480 } 480 }
481 } 481 }
@@ -684,7 +684,7 @@ bail:
684 return status; 684 return status;
685} 685}
686 686
687/* 687/*
688 * Serialize with orphan dir recovery. If the process doing 688 * Serialize with orphan dir recovery. If the process doing
689 * recovery on this orphan dir does an iget() with the dir 689 * recovery on this orphan dir does an iget() with the dir
690 * i_mutex held, we'll deadlock here. Instead we detect this 690 * i_mutex held, we'll deadlock here. Instead we detect this
diff --git a/fs/ocfs2/ioctl.c b/fs/ocfs2/ioctl.c
index 31fbb0619510..7d9d9c132cef 100644
--- a/fs/ocfs2/ioctl.c
+++ b/fs/ocfs2/ioctl.c
@@ -7,6 +7,7 @@
7 7
8#include <linux/fs.h> 8#include <linux/fs.h>
9#include <linux/mount.h> 9#include <linux/mount.h>
10#include <linux/compat.h>
10 11
11#define MLOG_MASK_PREFIX ML_INODE 12#define MLOG_MASK_PREFIX ML_INODE
12#include <cluster/masklog.h> 13#include <cluster/masklog.h>
@@ -181,6 +182,10 @@ long ocfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
181#ifdef CONFIG_COMPAT 182#ifdef CONFIG_COMPAT
182long ocfs2_compat_ioctl(struct file *file, unsigned cmd, unsigned long arg) 183long ocfs2_compat_ioctl(struct file *file, unsigned cmd, unsigned long arg)
183{ 184{
185 bool preserve;
186 struct reflink_arguments args;
187 struct inode *inode = file->f_path.dentry->d_inode;
188
184 switch (cmd) { 189 switch (cmd) {
185 case OCFS2_IOC32_GETFLAGS: 190 case OCFS2_IOC32_GETFLAGS:
186 cmd = OCFS2_IOC_GETFLAGS; 191 cmd = OCFS2_IOC_GETFLAGS;
@@ -195,8 +200,15 @@ long ocfs2_compat_ioctl(struct file *file, unsigned cmd, unsigned long arg)
195 case OCFS2_IOC_GROUP_EXTEND: 200 case OCFS2_IOC_GROUP_EXTEND:
196 case OCFS2_IOC_GROUP_ADD: 201 case OCFS2_IOC_GROUP_ADD:
197 case OCFS2_IOC_GROUP_ADD64: 202 case OCFS2_IOC_GROUP_ADD64:
198 case OCFS2_IOC_REFLINK:
199 break; 203 break;
204 case OCFS2_IOC_REFLINK:
205 if (copy_from_user(&args, (struct reflink_arguments *)arg,
206 sizeof(args)))
207 return -EFAULT;
208 preserve = (args.preserve != 0);
209
210 return ocfs2_reflink_ioctl(inode, compat_ptr(args.old_path),
211 compat_ptr(args.new_path), preserve);
200 default: 212 default:
201 return -ENOIOCTLCMD; 213 return -ENOIOCTLCMD;
202 } 214 }
diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c
index bf34c491ae96..9336c60e3a36 100644
--- a/fs/ocfs2/journal.c
+++ b/fs/ocfs2/journal.c
@@ -2034,7 +2034,7 @@ static int ocfs2_queue_orphans(struct ocfs2_super *osb,
2034 status = -ENOENT; 2034 status = -ENOENT;
2035 mlog_errno(status); 2035 mlog_errno(status);
2036 return status; 2036 return status;
2037 } 2037 }
2038 2038
2039 mutex_lock(&orphan_dir_inode->i_mutex); 2039 mutex_lock(&orphan_dir_inode->i_mutex);
2040 status = ocfs2_inode_lock(orphan_dir_inode, NULL, 0); 2040 status = ocfs2_inode_lock(orphan_dir_inode, NULL, 0);
diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h
index 9362eea7424b..740f448041e2 100644
--- a/fs/ocfs2/ocfs2.h
+++ b/fs/ocfs2/ocfs2.h
@@ -136,6 +136,10 @@ enum ocfs2_unlock_action {
136#define OCFS2_LOCK_PENDING (0x00000400) /* This lockres is pending a 136#define OCFS2_LOCK_PENDING (0x00000400) /* This lockres is pending a
137 call to dlm_lock. Only 137 call to dlm_lock. Only
138 exists with BUSY set. */ 138 exists with BUSY set. */
139#define OCFS2_LOCK_UPCONVERT_FINISHING (0x00000800) /* blocks the dc thread
140 * from downconverting
141 * before the upconvert
142 * has completed */
139 143
140struct ocfs2_lock_res_ops; 144struct ocfs2_lock_res_ops;
141 145
diff --git a/fs/ocfs2/ocfs2_fs.h b/fs/ocfs2/ocfs2_fs.h
index 1a1a679e51b5..7638a38c32bc 100644
--- a/fs/ocfs2/ocfs2_fs.h
+++ b/fs/ocfs2/ocfs2_fs.h
@@ -1417,9 +1417,16 @@ static inline int ocfs2_fast_symlink_chars(int blocksize)
1417 return blocksize - offsetof(struct ocfs2_dinode, id2.i_symlink); 1417 return blocksize - offsetof(struct ocfs2_dinode, id2.i_symlink);
1418} 1418}
1419 1419
1420static inline int ocfs2_max_inline_data(int blocksize) 1420static inline int ocfs2_max_inline_data_with_xattr(int blocksize,
1421 struct ocfs2_dinode *di)
1421{ 1422{
1422 return blocksize - offsetof(struct ocfs2_dinode, id2.i_data.id_data); 1423 if (di && (di->i_dyn_features & OCFS2_INLINE_XATTR_FL))
1424 return blocksize -
1425 offsetof(struct ocfs2_dinode, id2.i_data.id_data) -
1426 di->i_xattr_inline_size;
1427 else
1428 return blocksize -
1429 offsetof(struct ocfs2_dinode, id2.i_data.id_data);
1423} 1430}
1424 1431
1425static inline int ocfs2_extent_recs_per_inode(int blocksize) 1432static inline int ocfs2_extent_recs_per_inode(int blocksize)
diff --git a/fs/ocfs2/refcounttree.c b/fs/ocfs2/refcounttree.c
index 74db2be75dd6..8ae65c9c020c 100644
--- a/fs/ocfs2/refcounttree.c
+++ b/fs/ocfs2/refcounttree.c
@@ -2945,7 +2945,7 @@ static int ocfs2_duplicate_clusters_by_page(handle_t *handle,
2945 2945
2946 while (offset < end) { 2946 while (offset < end) {
2947 page_index = offset >> PAGE_CACHE_SHIFT; 2947 page_index = offset >> PAGE_CACHE_SHIFT;
2948 map_end = (page_index + 1) << PAGE_CACHE_SHIFT; 2948 map_end = ((loff_t)page_index + 1) << PAGE_CACHE_SHIFT;
2949 if (map_end > end) 2949 if (map_end > end)
2950 map_end = end; 2950 map_end = end;
2951 2951
@@ -2957,8 +2957,12 @@ static int ocfs2_duplicate_clusters_by_page(handle_t *handle,
2957 2957
2958 page = grab_cache_page(mapping, page_index); 2958 page = grab_cache_page(mapping, page_index);
2959 2959
2960 /* This page can't be dirtied before we CoW it out. */ 2960 /*
2961 BUG_ON(PageDirty(page)); 2961 * In case PAGE_CACHE_SIZE <= CLUSTER_SIZE, This page
2962 * can't be dirtied before we CoW it out.
2963 */
2964 if (PAGE_CACHE_SIZE <= OCFS2_SB(sb)->s_clustersize)
2965 BUG_ON(PageDirty(page));
2962 2966
2963 if (!PageUptodate(page)) { 2967 if (!PageUptodate(page)) {
2964 ret = block_read_full_page(page, ocfs2_get_block); 2968 ret = block_read_full_page(page, ocfs2_get_block);
@@ -3170,7 +3174,7 @@ static int ocfs2_cow_sync_writeback(struct super_block *sb,
3170 3174
3171 while (offset < end) { 3175 while (offset < end) {
3172 page_index = offset >> PAGE_CACHE_SHIFT; 3176 page_index = offset >> PAGE_CACHE_SHIFT;
3173 map_end = (page_index + 1) << PAGE_CACHE_SHIFT; 3177 map_end = ((loff_t)page_index + 1) << PAGE_CACHE_SHIFT;
3174 if (map_end > end) 3178 if (map_end > end)
3175 map_end = end; 3179 map_end = end;
3176 3180
diff --git a/fs/ocfs2/stack_o2cb.c b/fs/ocfs2/stack_o2cb.c
index e49c41050264..3038c92af493 100644
--- a/fs/ocfs2/stack_o2cb.c
+++ b/fs/ocfs2/stack_o2cb.c
@@ -277,7 +277,7 @@ static int o2cb_cluster_connect(struct ocfs2_cluster_connection *conn)
277 u32 dlm_key; 277 u32 dlm_key;
278 struct dlm_ctxt *dlm; 278 struct dlm_ctxt *dlm;
279 struct o2dlm_private *priv; 279 struct o2dlm_private *priv;
280 struct dlm_protocol_version dlm_version; 280 struct dlm_protocol_version fs_version;
281 281
282 BUG_ON(conn == NULL); 282 BUG_ON(conn == NULL);
283 BUG_ON(o2cb_stack.sp_proto == NULL); 283 BUG_ON(o2cb_stack.sp_proto == NULL);
@@ -304,18 +304,18 @@ static int o2cb_cluster_connect(struct ocfs2_cluster_connection *conn)
304 /* used by the dlm code to make message headers unique, each 304 /* used by the dlm code to make message headers unique, each
305 * node in this domain must agree on this. */ 305 * node in this domain must agree on this. */
306 dlm_key = crc32_le(0, conn->cc_name, conn->cc_namelen); 306 dlm_key = crc32_le(0, conn->cc_name, conn->cc_namelen);
307 dlm_version.pv_major = conn->cc_version.pv_major; 307 fs_version.pv_major = conn->cc_version.pv_major;
308 dlm_version.pv_minor = conn->cc_version.pv_minor; 308 fs_version.pv_minor = conn->cc_version.pv_minor;
309 309
310 dlm = dlm_register_domain(conn->cc_name, dlm_key, &dlm_version); 310 dlm = dlm_register_domain(conn->cc_name, dlm_key, &fs_version);
311 if (IS_ERR(dlm)) { 311 if (IS_ERR(dlm)) {
312 rc = PTR_ERR(dlm); 312 rc = PTR_ERR(dlm);
313 mlog_errno(rc); 313 mlog_errno(rc);
314 goto out_free; 314 goto out_free;
315 } 315 }
316 316
317 conn->cc_version.pv_major = dlm_version.pv_major; 317 conn->cc_version.pv_major = fs_version.pv_major;
318 conn->cc_version.pv_minor = dlm_version.pv_minor; 318 conn->cc_version.pv_minor = fs_version.pv_minor;
319 conn->cc_lockspace = dlm; 319 conn->cc_lockspace = dlm;
320 320
321 dlm_register_eviction_cb(dlm, &priv->op_eviction_cb); 321 dlm_register_eviction_cb(dlm, &priv->op_eviction_cb);
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
index 26069917a9f5..755cd49a5ef3 100644
--- a/fs/ocfs2/super.c
+++ b/fs/ocfs2/super.c
@@ -1062,7 +1062,7 @@ static int ocfs2_fill_super(struct super_block *sb, void *data, int silent)
1062 "file system, but write access is " 1062 "file system, but write access is "
1063 "unavailable.\n"); 1063 "unavailable.\n");
1064 else 1064 else
1065 mlog_errno(status); 1065 mlog_errno(status);
1066 goto read_super_error; 1066 goto read_super_error;
1067 } 1067 }
1068 1068
diff --git a/fs/ocfs2/symlink.c b/fs/ocfs2/symlink.c
index 49b133ccbf11..32499d213fc4 100644
--- a/fs/ocfs2/symlink.c
+++ b/fs/ocfs2/symlink.c
@@ -137,20 +137,20 @@ static void *ocfs2_fast_follow_link(struct dentry *dentry,
137 } 137 }
138 138
139 memcpy(link, target, len); 139 memcpy(link, target, len);
140 nd_set_link(nd, link);
141 140
142bail: 141bail:
142 nd_set_link(nd, status ? ERR_PTR(status) : link);
143 brelse(bh); 143 brelse(bh);
144 144
145 mlog_exit(status); 145 mlog_exit(status);
146 return status ? ERR_PTR(status) : link; 146 return NULL;
147} 147}
148 148
149static void ocfs2_fast_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie) 149static void ocfs2_fast_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie)
150{ 150{
151 char *link = cookie; 151 char *link = nd_get_link(nd);
152 152 if (!IS_ERR(link))
153 kfree(link); 153 kfree(link);
154} 154}
155 155
156const struct inode_operations ocfs2_symlink_inode_operations = { 156const struct inode_operations ocfs2_symlink_inode_operations = {
diff --git a/fs/ocfs2/uptodate.c b/fs/ocfs2/uptodate.c
index c61369342a27..a0a120e82b97 100644
--- a/fs/ocfs2/uptodate.c
+++ b/fs/ocfs2/uptodate.c
@@ -267,8 +267,8 @@ static int ocfs2_buffer_cached(struct ocfs2_caching_info *ci,
267} 267}
268 268
269/* Warning: even if it returns true, this does *not* guarantee that 269/* Warning: even if it returns true, this does *not* guarantee that
270 * the block is stored in our inode metadata cache. 270 * the block is stored in our inode metadata cache.
271 * 271 *
272 * This can be called under lock_buffer() 272 * This can be called under lock_buffer()
273 */ 273 */
274int ocfs2_buffer_uptodate(struct ocfs2_caching_info *ci, 274int ocfs2_buffer_uptodate(struct ocfs2_caching_info *ci,
diff --git a/fs/proc/array.c b/fs/proc/array.c
index f560325c444f..13b5d0708175 100644
--- a/fs/proc/array.c
+++ b/fs/proc/array.c
@@ -327,94 +327,6 @@ static inline void task_context_switch_counts(struct seq_file *m,
327 p->nivcsw); 327 p->nivcsw);
328} 328}
329 329
330#ifdef CONFIG_MMU
331
332struct stack_stats {
333 struct vm_area_struct *vma;
334 unsigned long startpage;
335 unsigned long usage;
336};
337
338static int stack_usage_pte_range(pmd_t *pmd, unsigned long addr,
339 unsigned long end, struct mm_walk *walk)
340{
341 struct stack_stats *ss = walk->private;
342 struct vm_area_struct *vma = ss->vma;
343 pte_t *pte, ptent;
344 spinlock_t *ptl;
345 int ret = 0;
346
347 pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
348 for (; addr != end; pte++, addr += PAGE_SIZE) {
349 ptent = *pte;
350
351#ifdef CONFIG_STACK_GROWSUP
352 if (pte_present(ptent) || is_swap_pte(ptent))
353 ss->usage = addr - ss->startpage + PAGE_SIZE;
354#else
355 if (pte_present(ptent) || is_swap_pte(ptent)) {
356 ss->usage = ss->startpage - addr + PAGE_SIZE;
357 pte++;
358 ret = 1;
359 break;
360 }
361#endif
362 }
363 pte_unmap_unlock(pte - 1, ptl);
364 cond_resched();
365 return ret;
366}
367
368static inline unsigned long get_stack_usage_in_bytes(struct vm_area_struct *vma,
369 struct task_struct *task)
370{
371 struct stack_stats ss;
372 struct mm_walk stack_walk = {
373 .pmd_entry = stack_usage_pte_range,
374 .mm = vma->vm_mm,
375 .private = &ss,
376 };
377
378 if (!vma->vm_mm || is_vm_hugetlb_page(vma))
379 return 0;
380
381 ss.vma = vma;
382 ss.startpage = task->stack_start & PAGE_MASK;
383 ss.usage = 0;
384
385#ifdef CONFIG_STACK_GROWSUP
386 walk_page_range(KSTK_ESP(task) & PAGE_MASK, vma->vm_end,
387 &stack_walk);
388#else
389 walk_page_range(vma->vm_start, (KSTK_ESP(task) & PAGE_MASK) + PAGE_SIZE,
390 &stack_walk);
391#endif
392 return ss.usage;
393}
394
395static inline void task_show_stack_usage(struct seq_file *m,
396 struct task_struct *task)
397{
398 struct vm_area_struct *vma;
399 struct mm_struct *mm = get_task_mm(task);
400
401 if (mm) {
402 down_read(&mm->mmap_sem);
403 vma = find_vma(mm, task->stack_start);
404 if (vma)
405 seq_printf(m, "Stack usage:\t%lu kB\n",
406 get_stack_usage_in_bytes(vma, task) >> 10);
407
408 up_read(&mm->mmap_sem);
409 mmput(mm);
410 }
411}
412#else
413static void task_show_stack_usage(struct seq_file *m, struct task_struct *task)
414{
415}
416#endif /* CONFIG_MMU */
417
418static void task_cpus_allowed(struct seq_file *m, struct task_struct *task) 330static void task_cpus_allowed(struct seq_file *m, struct task_struct *task)
419{ 331{
420 seq_printf(m, "Cpus_allowed:\t"); 332 seq_printf(m, "Cpus_allowed:\t");
@@ -445,7 +357,6 @@ int proc_pid_status(struct seq_file *m, struct pid_namespace *ns,
445 task_show_regs(m, task); 357 task_show_regs(m, task);
446#endif 358#endif
447 task_context_switch_counts(m, task); 359 task_context_switch_counts(m, task);
448 task_show_stack_usage(m, task);
449 return 0; 360 return 0;
450} 361}
451 362
diff --git a/fs/proc/base.c b/fs/proc/base.c
index 18d5cc62d8ed..58324c299165 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -1419,7 +1419,6 @@ static void *proc_pid_follow_link(struct dentry *dentry, struct nameidata *nd)
1419 goto out; 1419 goto out;
1420 1420
1421 error = PROC_I(inode)->op.proc_get_link(inode, &nd->path); 1421 error = PROC_I(inode)->op.proc_get_link(inode, &nd->path);
1422 nd->last_type = LAST_BIND;
1423out: 1422out:
1424 return ERR_PTR(error); 1423 return ERR_PTR(error);
1425} 1424}
@@ -2370,16 +2369,30 @@ static void *proc_self_follow_link(struct dentry *dentry, struct nameidata *nd)
2370{ 2369{
2371 struct pid_namespace *ns = dentry->d_sb->s_fs_info; 2370 struct pid_namespace *ns = dentry->d_sb->s_fs_info;
2372 pid_t tgid = task_tgid_nr_ns(current, ns); 2371 pid_t tgid = task_tgid_nr_ns(current, ns);
2373 char tmp[PROC_NUMBUF]; 2372 char *name = ERR_PTR(-ENOENT);
2374 if (!tgid) 2373 if (tgid) {
2375 return ERR_PTR(-ENOENT); 2374 name = __getname();
2376 sprintf(tmp, "%d", task_tgid_nr_ns(current, ns)); 2375 if (!name)
2377 return ERR_PTR(vfs_follow_link(nd,tmp)); 2376 name = ERR_PTR(-ENOMEM);
2377 else
2378 sprintf(name, "%d", tgid);
2379 }
2380 nd_set_link(nd, name);
2381 return NULL;
2382}
2383
2384static void proc_self_put_link(struct dentry *dentry, struct nameidata *nd,
2385 void *cookie)
2386{
2387 char *s = nd_get_link(nd);
2388 if (!IS_ERR(s))
2389 __putname(s);
2378} 2390}
2379 2391
2380static const struct inode_operations proc_self_inode_operations = { 2392static const struct inode_operations proc_self_inode_operations = {
2381 .readlink = proc_self_readlink, 2393 .readlink = proc_self_readlink,
2382 .follow_link = proc_self_follow_link, 2394 .follow_link = proc_self_follow_link,
2395 .put_link = proc_self_put_link,
2383}; 2396};
2384 2397
2385/* 2398/*
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
index 47c03f4336b8..f277c4a111cb 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -361,12 +361,11 @@ static int smaps_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
361 if (!pte_present(ptent)) 361 if (!pte_present(ptent))
362 continue; 362 continue;
363 363
364 mss->resident += PAGE_SIZE;
365
366 page = vm_normal_page(vma, addr, ptent); 364 page = vm_normal_page(vma, addr, ptent);
367 if (!page) 365 if (!page)
368 continue; 366 continue;
369 367
368 mss->resident += PAGE_SIZE;
370 /* Accumulate the size in pages that have been accessed. */ 369 /* Accumulate the size in pages that have been accessed. */
371 if (pte_young(ptent) || PageReferenced(page)) 370 if (pte_young(ptent) || PageReferenced(page))
372 mss->referenced += PAGE_SIZE; 371 mss->referenced += PAGE_SIZE;
diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
index dea86abdf2e7..3fc62b097bed 100644
--- a/fs/quota/dquot.c
+++ b/fs/quota/dquot.c
@@ -1377,6 +1377,9 @@ static void inode_sub_rsv_space(struct inode *inode, qsize_t number)
1377static qsize_t inode_get_rsv_space(struct inode *inode) 1377static qsize_t inode_get_rsv_space(struct inode *inode)
1378{ 1378{
1379 qsize_t ret; 1379 qsize_t ret;
1380
1381 if (!inode->i_sb->dq_op->get_reserved_space)
1382 return 0;
1380 spin_lock(&inode->i_lock); 1383 spin_lock(&inode->i_lock);
1381 ret = *inode_reserved_space(inode); 1384 ret = *inode_reserved_space(inode);
1382 spin_unlock(&inode->i_lock); 1385 spin_unlock(&inode->i_lock);
diff --git a/fs/ramfs/file-nommu.c b/fs/ramfs/file-nommu.c
index 2efc57173fd7..1739a4aba25f 100644
--- a/fs/ramfs/file-nommu.c
+++ b/fs/ramfs/file-nommu.c
@@ -123,30 +123,6 @@ add_error:
123 123
124/*****************************************************************************/ 124/*****************************************************************************/
125/* 125/*
126 * check that file shrinkage doesn't leave any VMAs dangling in midair
127 */
128static int ramfs_nommu_check_mappings(struct inode *inode,
129 size_t newsize, size_t size)
130{
131 struct vm_area_struct *vma;
132 struct prio_tree_iter iter;
133
134 /* search for VMAs that fall within the dead zone */
135 vma_prio_tree_foreach(vma, &iter, &inode->i_mapping->i_mmap,
136 newsize >> PAGE_SHIFT,
137 (size + PAGE_SIZE - 1) >> PAGE_SHIFT
138 ) {
139 /* found one - only interested if it's shared out of the page
140 * cache */
141 if (vma->vm_flags & VM_SHARED)
142 return -ETXTBSY; /* not quite true, but near enough */
143 }
144
145 return 0;
146}
147
148/*****************************************************************************/
149/*
150 * 126 *
151 */ 127 */
152static int ramfs_nommu_resize(struct inode *inode, loff_t newsize, loff_t size) 128static int ramfs_nommu_resize(struct inode *inode, loff_t newsize, loff_t size)
@@ -164,7 +140,7 @@ static int ramfs_nommu_resize(struct inode *inode, loff_t newsize, loff_t size)
164 140
165 /* check that a decrease in size doesn't cut off any shared mappings */ 141 /* check that a decrease in size doesn't cut off any shared mappings */
166 if (newsize < size) { 142 if (newsize < size) {
167 ret = ramfs_nommu_check_mappings(inode, newsize, size); 143 ret = nommu_shrink_inode_mappings(inode, size, newsize);
168 if (ret < 0) 144 if (ret < 0)
169 return ret; 145 return ret;
170 } 146 }
diff --git a/fs/reiserfs/bitmap.c b/fs/reiserfs/bitmap.c
index 685495707181..65c872761177 100644
--- a/fs/reiserfs/bitmap.c
+++ b/fs/reiserfs/bitmap.c
@@ -1277,7 +1277,10 @@ int reiserfs_init_bitmap_cache(struct super_block *sb)
1277 struct reiserfs_bitmap_info *bitmap; 1277 struct reiserfs_bitmap_info *bitmap;
1278 unsigned int bmap_nr = reiserfs_bmap_count(sb); 1278 unsigned int bmap_nr = reiserfs_bmap_count(sb);
1279 1279
1280 /* Avoid lock recursion in fault case */
1281 reiserfs_write_unlock(sb);
1280 bitmap = vmalloc(sizeof(*bitmap) * bmap_nr); 1282 bitmap = vmalloc(sizeof(*bitmap) * bmap_nr);
1283 reiserfs_write_lock(sb);
1281 if (bitmap == NULL) 1284 if (bitmap == NULL)
1282 return -ENOMEM; 1285 return -ENOMEM;
1283 1286
diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c
index 290ae38fca8a..2df0f5c7c60b 100644
--- a/fs/reiserfs/inode.c
+++ b/fs/reiserfs/inode.c
@@ -31,11 +31,12 @@ void reiserfs_delete_inode(struct inode *inode)
31 JOURNAL_PER_BALANCE_CNT * 2 + 31 JOURNAL_PER_BALANCE_CNT * 2 +
32 2 * REISERFS_QUOTA_INIT_BLOCKS(inode->i_sb); 32 2 * REISERFS_QUOTA_INIT_BLOCKS(inode->i_sb);
33 struct reiserfs_transaction_handle th; 33 struct reiserfs_transaction_handle th;
34 int depth;
34 int err; 35 int err;
35 36
36 truncate_inode_pages(&inode->i_data, 0); 37 truncate_inode_pages(&inode->i_data, 0);
37 38
38 reiserfs_write_lock(inode->i_sb); 39 depth = reiserfs_write_lock_once(inode->i_sb);
39 40
40 /* The = 0 happens when we abort creating a new inode for some reason like lack of space.. */ 41 /* The = 0 happens when we abort creating a new inode for some reason like lack of space.. */
41 if (!(inode->i_state & I_NEW) && INODE_PKEY(inode)->k_objectid != 0) { /* also handles bad_inode case */ 42 if (!(inode->i_state & I_NEW) && INODE_PKEY(inode)->k_objectid != 0) { /* also handles bad_inode case */
@@ -74,7 +75,7 @@ void reiserfs_delete_inode(struct inode *inode)
74 out: 75 out:
75 clear_inode(inode); /* note this must go after the journal_end to prevent deadlock */ 76 clear_inode(inode); /* note this must go after the journal_end to prevent deadlock */
76 inode->i_blocks = 0; 77 inode->i_blocks = 0;
77 reiserfs_write_unlock(inode->i_sb); 78 reiserfs_write_unlock_once(inode->i_sb, depth);
78} 79}
79 80
80static void _make_cpu_key(struct cpu_key *key, int version, __u32 dirid, 81static void _make_cpu_key(struct cpu_key *key, int version, __u32 dirid,
@@ -1496,9 +1497,11 @@ struct inode *reiserfs_iget(struct super_block *s, const struct cpu_key *key)
1496 1497
1497 args.objectid = key->on_disk_key.k_objectid; 1498 args.objectid = key->on_disk_key.k_objectid;
1498 args.dirid = key->on_disk_key.k_dir_id; 1499 args.dirid = key->on_disk_key.k_dir_id;
1500 reiserfs_write_unlock(s);
1499 inode = iget5_locked(s, key->on_disk_key.k_objectid, 1501 inode = iget5_locked(s, key->on_disk_key.k_objectid,
1500 reiserfs_find_actor, reiserfs_init_locked_inode, 1502 reiserfs_find_actor, reiserfs_init_locked_inode,
1501 (void *)(&args)); 1503 (void *)(&args));
1504 reiserfs_write_lock(s);
1502 if (!inode) 1505 if (!inode)
1503 return ERR_PTR(-ENOMEM); 1506 return ERR_PTR(-ENOMEM);
1504 1507
@@ -3061,13 +3064,14 @@ static ssize_t reiserfs_direct_IO(int rw, struct kiocb *iocb,
3061int reiserfs_setattr(struct dentry *dentry, struct iattr *attr) 3064int reiserfs_setattr(struct dentry *dentry, struct iattr *attr)
3062{ 3065{
3063 struct inode *inode = dentry->d_inode; 3066 struct inode *inode = dentry->d_inode;
3064 int error;
3065 unsigned int ia_valid; 3067 unsigned int ia_valid;
3068 int depth;
3069 int error;
3066 3070
3067 /* must be turned off for recursive notify_change calls */ 3071 /* must be turned off for recursive notify_change calls */
3068 ia_valid = attr->ia_valid &= ~(ATTR_KILL_SUID|ATTR_KILL_SGID); 3072 ia_valid = attr->ia_valid &= ~(ATTR_KILL_SUID|ATTR_KILL_SGID);
3069 3073
3070 reiserfs_write_lock(inode->i_sb); 3074 depth = reiserfs_write_lock_once(inode->i_sb);
3071 if (attr->ia_valid & ATTR_SIZE) { 3075 if (attr->ia_valid & ATTR_SIZE) {
3072 /* version 2 items will be caught by the s_maxbytes check 3076 /* version 2 items will be caught by the s_maxbytes check
3073 ** done for us in vmtruncate 3077 ** done for us in vmtruncate
@@ -3148,8 +3152,17 @@ int reiserfs_setattr(struct dentry *dentry, struct iattr *attr)
3148 journal_end(&th, inode->i_sb, jbegin_count); 3152 journal_end(&th, inode->i_sb, jbegin_count);
3149 } 3153 }
3150 } 3154 }
3151 if (!error) 3155 if (!error) {
3156 /*
3157 * Relax the lock here, as it might truncate the
3158 * inode pages and wait for inode pages locks.
3159 * To release such page lock, the owner needs the
3160 * reiserfs lock
3161 */
3162 reiserfs_write_unlock_once(inode->i_sb, depth);
3152 error = inode_setattr(inode, attr); 3163 error = inode_setattr(inode, attr);
3164 depth = reiserfs_write_lock_once(inode->i_sb);
3165 }
3153 } 3166 }
3154 3167
3155 if (!error && reiserfs_posixacl(inode->i_sb)) { 3168 if (!error && reiserfs_posixacl(inode->i_sb)) {
@@ -3158,7 +3171,8 @@ int reiserfs_setattr(struct dentry *dentry, struct iattr *attr)
3158 } 3171 }
3159 3172
3160 out: 3173 out:
3161 reiserfs_write_unlock(inode->i_sb); 3174 reiserfs_write_unlock_once(inode->i_sb, depth);
3175
3162 return error; 3176 return error;
3163} 3177}
3164 3178
diff --git a/fs/reiserfs/ioctl.c b/fs/reiserfs/ioctl.c
index ace77451ceb1..f53505de0712 100644
--- a/fs/reiserfs/ioctl.c
+++ b/fs/reiserfs/ioctl.c
@@ -104,9 +104,10 @@ setflags_out:
104 err = put_user(inode->i_generation, (int __user *)arg); 104 err = put_user(inode->i_generation, (int __user *)arg);
105 break; 105 break;
106 case REISERFS_IOC_SETVERSION: 106 case REISERFS_IOC_SETVERSION:
107 if (!is_owner_or_cap(inode)) 107 if (!is_owner_or_cap(inode)) {
108 err = -EPERM; 108 err = -EPERM;
109 break; 109 break;
110 }
110 err = mnt_want_write(filp->f_path.mnt); 111 err = mnt_want_write(filp->f_path.mnt);
111 if (err) 112 if (err)
112 break; 113 break;
diff --git a/fs/reiserfs/journal.c b/fs/reiserfs/journal.c
index 2f8a7e7b8dab..ba98546fabbd 100644
--- a/fs/reiserfs/journal.c
+++ b/fs/reiserfs/journal.c
@@ -2009,10 +2009,11 @@ static int do_journal_release(struct reiserfs_transaction_handle *th,
2009 destroy_workqueue(commit_wq); 2009 destroy_workqueue(commit_wq);
2010 commit_wq = NULL; 2010 commit_wq = NULL;
2011 } 2011 }
2012 reiserfs_write_lock(sb);
2013 2012
2014 free_journal_ram(sb); 2013 free_journal_ram(sb);
2015 2014
2015 reiserfs_write_lock(sb);
2016
2016 return 0; 2017 return 0;
2017} 2018}
2018 2019
@@ -2758,11 +2759,18 @@ int journal_init(struct super_block *sb, const char *j_dev_name,
2758 struct reiserfs_journal *journal; 2759 struct reiserfs_journal *journal;
2759 struct reiserfs_journal_list *jl; 2760 struct reiserfs_journal_list *jl;
2760 char b[BDEVNAME_SIZE]; 2761 char b[BDEVNAME_SIZE];
2762 int ret;
2761 2763
2764 /*
2765 * Unlock here to avoid various RECLAIM-FS-ON <-> IN-RECLAIM-FS
2766 * dependency inversion warnings.
2767 */
2768 reiserfs_write_unlock(sb);
2762 journal = SB_JOURNAL(sb) = vmalloc(sizeof(struct reiserfs_journal)); 2769 journal = SB_JOURNAL(sb) = vmalloc(sizeof(struct reiserfs_journal));
2763 if (!journal) { 2770 if (!journal) {
2764 reiserfs_warning(sb, "journal-1256", 2771 reiserfs_warning(sb, "journal-1256",
2765 "unable to get memory for journal structure"); 2772 "unable to get memory for journal structure");
2773 reiserfs_write_lock(sb);
2766 return 1; 2774 return 1;
2767 } 2775 }
2768 memset(journal, 0, sizeof(struct reiserfs_journal)); 2776 memset(journal, 0, sizeof(struct reiserfs_journal));
@@ -2771,10 +2779,12 @@ int journal_init(struct super_block *sb, const char *j_dev_name,
2771 INIT_LIST_HEAD(&journal->j_working_list); 2779 INIT_LIST_HEAD(&journal->j_working_list);
2772 INIT_LIST_HEAD(&journal->j_journal_list); 2780 INIT_LIST_HEAD(&journal->j_journal_list);
2773 journal->j_persistent_trans = 0; 2781 journal->j_persistent_trans = 0;
2774 if (reiserfs_allocate_list_bitmaps(sb, 2782 ret = reiserfs_allocate_list_bitmaps(sb, journal->j_list_bitmap,
2775 journal->j_list_bitmap, 2783 reiserfs_bmap_count(sb));
2776 reiserfs_bmap_count(sb))) 2784 reiserfs_write_lock(sb);
2785 if (ret)
2777 goto free_and_return; 2786 goto free_and_return;
2787
2778 allocate_bitmap_nodes(sb); 2788 allocate_bitmap_nodes(sb);
2779 2789
2780 /* reserved for journal area support */ 2790 /* reserved for journal area support */
@@ -2903,7 +2913,9 @@ int journal_init(struct super_block *sb, const char *j_dev_name,
2903 journal->j_mount_id = 10; 2913 journal->j_mount_id = 10;
2904 journal->j_state = 0; 2914 journal->j_state = 0;
2905 atomic_set(&(journal->j_jlock), 0); 2915 atomic_set(&(journal->j_jlock), 0);
2916 reiserfs_write_unlock(sb);
2906 journal->j_cnode_free_list = allocate_cnodes(num_cnodes); 2917 journal->j_cnode_free_list = allocate_cnodes(num_cnodes);
2918 reiserfs_write_lock(sb);
2907 journal->j_cnode_free_orig = journal->j_cnode_free_list; 2919 journal->j_cnode_free_orig = journal->j_cnode_free_list;
2908 journal->j_cnode_free = journal->j_cnode_free_list ? num_cnodes : 0; 2920 journal->j_cnode_free = journal->j_cnode_free_list ? num_cnodes : 0;
2909 journal->j_cnode_used = 0; 2921 journal->j_cnode_used = 0;
diff --git a/fs/reiserfs/lock.c b/fs/reiserfs/lock.c
index ee2cfc0fd8a7..b87aa2c1afc1 100644
--- a/fs/reiserfs/lock.c
+++ b/fs/reiserfs/lock.c
@@ -86,3 +86,12 @@ void reiserfs_check_lock_depth(struct super_block *sb, char *caller)
86 reiserfs_panic(sb, "%s called without kernel lock held %d", 86 reiserfs_panic(sb, "%s called without kernel lock held %d",
87 caller); 87 caller);
88} 88}
89
90#ifdef CONFIG_REISERFS_CHECK
91void reiserfs_lock_check_recursive(struct super_block *sb)
92{
93 struct reiserfs_sb_info *sb_i = REISERFS_SB(sb);
94
95 WARN_ONCE((sb_i->lock_depth > 0), "Unwanted recursive reiserfs lock!\n");
96}
97#endif
diff --git a/fs/reiserfs/namei.c b/fs/reiserfs/namei.c
index e296ff72a6cc..9d4dcf0b07cb 100644
--- a/fs/reiserfs/namei.c
+++ b/fs/reiserfs/namei.c
@@ -921,6 +921,7 @@ static int reiserfs_unlink(struct inode *dir, struct dentry *dentry)
921 struct reiserfs_transaction_handle th; 921 struct reiserfs_transaction_handle th;
922 int jbegin_count; 922 int jbegin_count;
923 unsigned long savelink; 923 unsigned long savelink;
924 int depth;
924 925
925 inode = dentry->d_inode; 926 inode = dentry->d_inode;
926 927
@@ -932,7 +933,7 @@ static int reiserfs_unlink(struct inode *dir, struct dentry *dentry)
932 JOURNAL_PER_BALANCE_CNT * 2 + 2 + 933 JOURNAL_PER_BALANCE_CNT * 2 + 2 +
933 4 * REISERFS_QUOTA_TRANS_BLOCKS(dir->i_sb); 934 4 * REISERFS_QUOTA_TRANS_BLOCKS(dir->i_sb);
934 935
935 reiserfs_write_lock(dir->i_sb); 936 depth = reiserfs_write_lock_once(dir->i_sb);
936 retval = journal_begin(&th, dir->i_sb, jbegin_count); 937 retval = journal_begin(&th, dir->i_sb, jbegin_count);
937 if (retval) 938 if (retval)
938 goto out_unlink; 939 goto out_unlink;
@@ -993,7 +994,7 @@ static int reiserfs_unlink(struct inode *dir, struct dentry *dentry)
993 994
994 retval = journal_end(&th, dir->i_sb, jbegin_count); 995 retval = journal_end(&th, dir->i_sb, jbegin_count);
995 reiserfs_check_path(&path); 996 reiserfs_check_path(&path);
996 reiserfs_write_unlock(dir->i_sb); 997 reiserfs_write_unlock_once(dir->i_sb, depth);
997 return retval; 998 return retval;
998 999
999 end_unlink: 1000 end_unlink:
@@ -1003,7 +1004,7 @@ static int reiserfs_unlink(struct inode *dir, struct dentry *dentry)
1003 if (err) 1004 if (err)
1004 retval = err; 1005 retval = err;
1005 out_unlink: 1006 out_unlink:
1006 reiserfs_write_unlock(dir->i_sb); 1007 reiserfs_write_unlock_once(dir->i_sb, depth);
1007 return retval; 1008 return retval;
1008} 1009}
1009 1010
diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c
index 8c7033a8b67e..81f09fab8ae4 100644
--- a/fs/reiserfs/xattr.c
+++ b/fs/reiserfs/xattr.c
@@ -83,7 +83,8 @@ static int xattr_unlink(struct inode *dir, struct dentry *dentry)
83 BUG_ON(!mutex_is_locked(&dir->i_mutex)); 83 BUG_ON(!mutex_is_locked(&dir->i_mutex));
84 vfs_dq_init(dir); 84 vfs_dq_init(dir);
85 85
86 mutex_lock_nested(&dentry->d_inode->i_mutex, I_MUTEX_CHILD); 86 reiserfs_mutex_lock_nested_safe(&dentry->d_inode->i_mutex,
87 I_MUTEX_CHILD, dir->i_sb);
87 error = dir->i_op->unlink(dir, dentry); 88 error = dir->i_op->unlink(dir, dentry);
88 mutex_unlock(&dentry->d_inode->i_mutex); 89 mutex_unlock(&dentry->d_inode->i_mutex);
89 90
@@ -98,7 +99,8 @@ static int xattr_rmdir(struct inode *dir, struct dentry *dentry)
98 BUG_ON(!mutex_is_locked(&dir->i_mutex)); 99 BUG_ON(!mutex_is_locked(&dir->i_mutex));
99 vfs_dq_init(dir); 100 vfs_dq_init(dir);
100 101
101 mutex_lock_nested(&dentry->d_inode->i_mutex, I_MUTEX_CHILD); 102 reiserfs_mutex_lock_nested_safe(&dentry->d_inode->i_mutex,
103 I_MUTEX_CHILD, dir->i_sb);
102 dentry_unhash(dentry); 104 dentry_unhash(dentry);
103 error = dir->i_op->rmdir(dir, dentry); 105 error = dir->i_op->rmdir(dir, dentry);
104 if (!error) 106 if (!error)
@@ -235,16 +237,22 @@ static int reiserfs_for_each_xattr(struct inode *inode,
235 if (IS_PRIVATE(inode) || get_inode_sd_version(inode) == STAT_DATA_V1) 237 if (IS_PRIVATE(inode) || get_inode_sd_version(inode) == STAT_DATA_V1)
236 return 0; 238 return 0;
237 239
240 reiserfs_write_unlock(inode->i_sb);
238 dir = open_xa_dir(inode, XATTR_REPLACE); 241 dir = open_xa_dir(inode, XATTR_REPLACE);
239 if (IS_ERR(dir)) { 242 if (IS_ERR(dir)) {
240 err = PTR_ERR(dir); 243 err = PTR_ERR(dir);
244 reiserfs_write_lock(inode->i_sb);
241 goto out; 245 goto out;
242 } else if (!dir->d_inode) { 246 } else if (!dir->d_inode) {
243 err = 0; 247 err = 0;
248 reiserfs_write_lock(inode->i_sb);
244 goto out_dir; 249 goto out_dir;
245 } 250 }
246 251
247 mutex_lock_nested(&dir->d_inode->i_mutex, I_MUTEX_XATTR); 252 mutex_lock_nested(&dir->d_inode->i_mutex, I_MUTEX_XATTR);
253
254 reiserfs_write_lock(inode->i_sb);
255
248 buf.xadir = dir; 256 buf.xadir = dir;
249 err = reiserfs_readdir_dentry(dir, &buf, fill_with_dentries, &pos); 257 err = reiserfs_readdir_dentry(dir, &buf, fill_with_dentries, &pos);
250 while ((err == 0 || err == -ENOSPC) && buf.count) { 258 while ((err == 0 || err == -ENOSPC) && buf.count) {
@@ -283,8 +291,9 @@ static int reiserfs_for_each_xattr(struct inode *inode,
283 err = journal_begin(&th, inode->i_sb, blocks); 291 err = journal_begin(&th, inode->i_sb, blocks);
284 if (!err) { 292 if (!err) {
285 int jerror; 293 int jerror;
286 mutex_lock_nested(&dir->d_parent->d_inode->i_mutex, 294 reiserfs_mutex_lock_nested_safe(
287 I_MUTEX_XATTR); 295 &dir->d_parent->d_inode->i_mutex,
296 I_MUTEX_XATTR, inode->i_sb);
288 err = action(dir, data); 297 err = action(dir, data);
289 jerror = journal_end(&th, inode->i_sb, blocks); 298 jerror = journal_end(&th, inode->i_sb, blocks);
290 mutex_unlock(&dir->d_parent->d_inode->i_mutex); 299 mutex_unlock(&dir->d_parent->d_inode->i_mutex);
@@ -443,7 +452,9 @@ static int lookup_and_delete_xattr(struct inode *inode, const char *name)
443 } 452 }
444 453
445 if (dentry->d_inode) { 454 if (dentry->d_inode) {
455 reiserfs_write_lock(inode->i_sb);
446 err = xattr_unlink(xadir->d_inode, dentry); 456 err = xattr_unlink(xadir->d_inode, dentry);
457 reiserfs_write_unlock(inode->i_sb);
447 update_ctime(inode); 458 update_ctime(inode);
448 } 459 }
449 460
@@ -477,15 +488,24 @@ reiserfs_xattr_set_handle(struct reiserfs_transaction_handle *th,
477 if (get_inode_sd_version(inode) == STAT_DATA_V1) 488 if (get_inode_sd_version(inode) == STAT_DATA_V1)
478 return -EOPNOTSUPP; 489 return -EOPNOTSUPP;
479 490
480 if (!buffer) 491 reiserfs_write_unlock(inode->i_sb);
481 return lookup_and_delete_xattr(inode, name); 492
493 if (!buffer) {
494 err = lookup_and_delete_xattr(inode, name);
495 reiserfs_write_lock(inode->i_sb);
496 return err;
497 }
482 498
483 dentry = xattr_lookup(inode, name, flags); 499 dentry = xattr_lookup(inode, name, flags);
484 if (IS_ERR(dentry)) 500 if (IS_ERR(dentry)) {
501 reiserfs_write_lock(inode->i_sb);
485 return PTR_ERR(dentry); 502 return PTR_ERR(dentry);
503 }
486 504
487 down_write(&REISERFS_I(inode)->i_xattr_sem); 505 down_write(&REISERFS_I(inode)->i_xattr_sem);
488 506
507 reiserfs_write_lock(inode->i_sb);
508
489 xahash = xattr_hash(buffer, buffer_size); 509 xahash = xattr_hash(buffer, buffer_size);
490 while (buffer_pos < buffer_size || buffer_pos == 0) { 510 while (buffer_pos < buffer_size || buffer_pos == 0) {
491 size_t chunk; 511 size_t chunk;
@@ -540,8 +560,12 @@ reiserfs_xattr_set_handle(struct reiserfs_transaction_handle *th,
540 .ia_size = buffer_size, 560 .ia_size = buffer_size,
541 .ia_valid = ATTR_SIZE | ATTR_CTIME, 561 .ia_valid = ATTR_SIZE | ATTR_CTIME,
542 }; 562 };
563
564 reiserfs_write_unlock(inode->i_sb);
543 mutex_lock_nested(&dentry->d_inode->i_mutex, I_MUTEX_XATTR); 565 mutex_lock_nested(&dentry->d_inode->i_mutex, I_MUTEX_XATTR);
544 down_write(&dentry->d_inode->i_alloc_sem); 566 down_write(&dentry->d_inode->i_alloc_sem);
567 reiserfs_write_lock(inode->i_sb);
568
545 err = reiserfs_setattr(dentry, &newattrs); 569 err = reiserfs_setattr(dentry, &newattrs);
546 up_write(&dentry->d_inode->i_alloc_sem); 570 up_write(&dentry->d_inode->i_alloc_sem);
547 mutex_unlock(&dentry->d_inode->i_mutex); 571 mutex_unlock(&dentry->d_inode->i_mutex);
diff --git a/fs/reiserfs/xattr_acl.c b/fs/reiserfs/xattr_acl.c
index cc32e6ada67b..dd20a7883f0f 100644
--- a/fs/reiserfs/xattr_acl.c
+++ b/fs/reiserfs/xattr_acl.c
@@ -455,7 +455,9 @@ int reiserfs_acl_chmod(struct inode *inode)
455 return 0; 455 return 0;
456 } 456 }
457 457
458 reiserfs_write_unlock(inode->i_sb);
458 acl = reiserfs_get_acl(inode, ACL_TYPE_ACCESS); 459 acl = reiserfs_get_acl(inode, ACL_TYPE_ACCESS);
460 reiserfs_write_lock(inode->i_sb);
459 if (!acl) 461 if (!acl)
460 return 0; 462 return 0;
461 if (IS_ERR(acl)) 463 if (IS_ERR(acl))
diff --git a/fs/romfs/super.c b/fs/romfs/super.c
index c117fa80d1e9..42d213546894 100644
--- a/fs/romfs/super.c
+++ b/fs/romfs/super.c
@@ -544,6 +544,7 @@ error:
544error_rsb_inval: 544error_rsb_inval:
545 ret = -EINVAL; 545 ret = -EINVAL;
546error_rsb: 546error_rsb:
547 kfree(rsb);
547 return ret; 548 return ret;
548} 549}
549 550
diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c
index f05f2303a8b8..699f371b9f12 100644
--- a/fs/sysfs/dir.c
+++ b/fs/sysfs/dir.c
@@ -106,8 +106,10 @@ static struct sysfs_dirent *sysfs_get_active(struct sysfs_dirent *sd)
106 return NULL; 106 return NULL;
107 107
108 t = atomic_cmpxchg(&sd->s_active, v, v + 1); 108 t = atomic_cmpxchg(&sd->s_active, v, v + 1);
109 if (likely(t == v)) 109 if (likely(t == v)) {
110 rwsem_acquire_read(&sd->dep_map, 0, 1, _RET_IP_);
110 return sd; 111 return sd;
112 }
111 if (t < 0) 113 if (t < 0)
112 return NULL; 114 return NULL;
113 115
@@ -130,6 +132,7 @@ static void sysfs_put_active(struct sysfs_dirent *sd)
130 if (unlikely(!sd)) 132 if (unlikely(!sd))
131 return; 133 return;
132 134
135 rwsem_release(&sd->dep_map, 1, _RET_IP_);
133 v = atomic_dec_return(&sd->s_active); 136 v = atomic_dec_return(&sd->s_active);
134 if (likely(v != SD_DEACTIVATED_BIAS)) 137 if (likely(v != SD_DEACTIVATED_BIAS))
135 return; 138 return;
@@ -194,15 +197,21 @@ static void sysfs_deactivate(struct sysfs_dirent *sd)
194 BUG_ON(sd->s_sibling || !(sd->s_flags & SYSFS_FLAG_REMOVED)); 197 BUG_ON(sd->s_sibling || !(sd->s_flags & SYSFS_FLAG_REMOVED));
195 sd->s_sibling = (void *)&wait; 198 sd->s_sibling = (void *)&wait;
196 199
200 rwsem_acquire(&sd->dep_map, 0, 0, _RET_IP_);
197 /* atomic_add_return() is a mb(), put_active() will always see 201 /* atomic_add_return() is a mb(), put_active() will always see
198 * the updated sd->s_sibling. 202 * the updated sd->s_sibling.
199 */ 203 */
200 v = atomic_add_return(SD_DEACTIVATED_BIAS, &sd->s_active); 204 v = atomic_add_return(SD_DEACTIVATED_BIAS, &sd->s_active);
201 205
202 if (v != SD_DEACTIVATED_BIAS) 206 if (v != SD_DEACTIVATED_BIAS) {
207 lock_contended(&sd->dep_map, _RET_IP_);
203 wait_for_completion(&wait); 208 wait_for_completion(&wait);
209 }
204 210
205 sd->s_sibling = NULL; 211 sd->s_sibling = NULL;
212
213 lock_acquired(&sd->dep_map, _RET_IP_);
214 rwsem_release(&sd->dep_map, 1, _RET_IP_);
206} 215}
207 216
208static int sysfs_alloc_ino(ino_t *pino) 217static int sysfs_alloc_ino(ino_t *pino)
@@ -345,6 +354,7 @@ struct sysfs_dirent *sysfs_new_dirent(const char *name, umode_t mode, int type)
345 354
346 atomic_set(&sd->s_count, 1); 355 atomic_set(&sd->s_count, 1);
347 atomic_set(&sd->s_active, 0); 356 atomic_set(&sd->s_active, 0);
357 sysfs_dirent_init_lockdep(sd);
348 358
349 sd->s_name = name; 359 sd->s_name = name;
350 sd->s_mode = mode; 360 sd->s_mode = mode;
diff --git a/fs/sysfs/inode.c b/fs/sysfs/inode.c
index 220b758523ae..6a06a1d1ea7b 100644
--- a/fs/sysfs/inode.c
+++ b/fs/sysfs/inode.c
@@ -81,24 +81,23 @@ int sysfs_sd_setattr(struct sysfs_dirent *sd, struct iattr * iattr)
81 if (!sd_attrs) 81 if (!sd_attrs)
82 return -ENOMEM; 82 return -ENOMEM;
83 sd->s_iattr = sd_attrs; 83 sd->s_iattr = sd_attrs;
84 } else { 84 }
85 /* attributes were changed at least once in past */ 85 /* attributes were changed at least once in past */
86 iattrs = &sd_attrs->ia_iattr; 86 iattrs = &sd_attrs->ia_iattr;
87 87
88 if (ia_valid & ATTR_UID) 88 if (ia_valid & ATTR_UID)
89 iattrs->ia_uid = iattr->ia_uid; 89 iattrs->ia_uid = iattr->ia_uid;
90 if (ia_valid & ATTR_GID) 90 if (ia_valid & ATTR_GID)
91 iattrs->ia_gid = iattr->ia_gid; 91 iattrs->ia_gid = iattr->ia_gid;
92 if (ia_valid & ATTR_ATIME) 92 if (ia_valid & ATTR_ATIME)
93 iattrs->ia_atime = iattr->ia_atime; 93 iattrs->ia_atime = iattr->ia_atime;
94 if (ia_valid & ATTR_MTIME) 94 if (ia_valid & ATTR_MTIME)
95 iattrs->ia_mtime = iattr->ia_mtime; 95 iattrs->ia_mtime = iattr->ia_mtime;
96 if (ia_valid & ATTR_CTIME) 96 if (ia_valid & ATTR_CTIME)
97 iattrs->ia_ctime = iattr->ia_ctime; 97 iattrs->ia_ctime = iattr->ia_ctime;
98 if (ia_valid & ATTR_MODE) { 98 if (ia_valid & ATTR_MODE) {
99 umode_t mode = iattr->ia_mode; 99 umode_t mode = iattr->ia_mode;
100 iattrs->ia_mode = sd->s_mode = mode; 100 iattrs->ia_mode = sd->s_mode = mode;
101 }
102 } 101 }
103 return 0; 102 return 0;
104} 103}
diff --git a/fs/sysfs/sysfs.h b/fs/sysfs/sysfs.h
index ca52e7b9d8f8..cdd9377a6e06 100644
--- a/fs/sysfs/sysfs.h
+++ b/fs/sysfs/sysfs.h
@@ -8,6 +8,7 @@
8 * This file is released under the GPLv2. 8 * This file is released under the GPLv2.
9 */ 9 */
10 10
11#include <linux/lockdep.h>
11#include <linux/fs.h> 12#include <linux/fs.h>
12 13
13struct sysfs_open_dirent; 14struct sysfs_open_dirent;
@@ -50,6 +51,9 @@ struct sysfs_inode_attrs {
50struct sysfs_dirent { 51struct sysfs_dirent {
51 atomic_t s_count; 52 atomic_t s_count;
52 atomic_t s_active; 53 atomic_t s_active;
54#ifdef CONFIG_DEBUG_LOCK_ALLOC
55 struct lockdep_map dep_map;
56#endif
53 struct sysfs_dirent *s_parent; 57 struct sysfs_dirent *s_parent;
54 struct sysfs_dirent *s_sibling; 58 struct sysfs_dirent *s_sibling;
55 const char *s_name; 59 const char *s_name;
@@ -84,6 +88,17 @@ static inline unsigned int sysfs_type(struct sysfs_dirent *sd)
84 return sd->s_flags & SYSFS_TYPE_MASK; 88 return sd->s_flags & SYSFS_TYPE_MASK;
85} 89}
86 90
91#ifdef CONFIG_DEBUG_LOCK_ALLOC
92#define sysfs_dirent_init_lockdep(sd) \
93do { \
94 static struct lock_class_key __key; \
95 \
96 lockdep_init_map(&sd->dep_map, "s_active", &__key, 0); \
97} while(0)
98#else
99#define sysfs_dirent_init_lockdep(sd) do {} while(0)
100#endif
101
87/* 102/*
88 * Context structure to be used while adding/removing nodes. 103 * Context structure to be used while adding/removing nodes.
89 */ 104 */
diff --git a/fs/ubifs/gc.c b/fs/ubifs/gc.c
index 618c2701d3a7..e5a3d8e96bb7 100644
--- a/fs/ubifs/gc.c
+++ b/fs/ubifs/gc.c
@@ -54,6 +54,7 @@
54 */ 54 */
55 55
56#include <linux/pagemap.h> 56#include <linux/pagemap.h>
57#include <linux/list_sort.h>
57#include "ubifs.h" 58#include "ubifs.h"
58 59
59/* 60/*
@@ -108,101 +109,6 @@ static int switch_gc_head(struct ubifs_info *c)
108} 109}
109 110
110/** 111/**
111 * list_sort - sort a list.
112 * @priv: private data, passed to @cmp
113 * @head: the list to sort
114 * @cmp: the elements comparison function
115 *
116 * This function has been implemented by Mark J Roberts <mjr@znex.org>. It
117 * implements "merge sort" which has O(nlog(n)) complexity. The list is sorted
118 * in ascending order.
119 *
120 * The comparison function @cmp is supposed to return a negative value if @a is
121 * than @b, and a positive value if @a is greater than @b. If @a and @b are
122 * equivalent, then it does not matter what this function returns.
123 */
124static void list_sort(void *priv, struct list_head *head,
125 int (*cmp)(void *priv, struct list_head *a,
126 struct list_head *b))
127{
128 struct list_head *p, *q, *e, *list, *tail, *oldhead;
129 int insize, nmerges, psize, qsize, i;
130
131 if (list_empty(head))
132 return;
133
134 list = head->next;
135 list_del(head);
136 insize = 1;
137 for (;;) {
138 p = oldhead = list;
139 list = tail = NULL;
140 nmerges = 0;
141
142 while (p) {
143 nmerges++;
144 q = p;
145 psize = 0;
146 for (i = 0; i < insize; i++) {
147 psize++;
148 q = q->next == oldhead ? NULL : q->next;
149 if (!q)
150 break;
151 }
152
153 qsize = insize;
154 while (psize > 0 || (qsize > 0 && q)) {
155 if (!psize) {
156 e = q;
157 q = q->next;
158 qsize--;
159 if (q == oldhead)
160 q = NULL;
161 } else if (!qsize || !q) {
162 e = p;
163 p = p->next;
164 psize--;
165 if (p == oldhead)
166 p = NULL;
167 } else if (cmp(priv, p, q) <= 0) {
168 e = p;
169 p = p->next;
170 psize--;
171 if (p == oldhead)
172 p = NULL;
173 } else {
174 e = q;
175 q = q->next;
176 qsize--;
177 if (q == oldhead)
178 q = NULL;
179 }
180 if (tail)
181 tail->next = e;
182 else
183 list = e;
184 e->prev = tail;
185 tail = e;
186 }
187 p = q;
188 }
189
190 tail->next = list;
191 list->prev = tail;
192
193 if (nmerges <= 1)
194 break;
195
196 insize *= 2;
197 }
198
199 head->next = list;
200 head->prev = list->prev;
201 list->prev->next = head;
202 list->prev = head;
203}
204
205/**
206 * data_nodes_cmp - compare 2 data nodes. 112 * data_nodes_cmp - compare 2 data nodes.
207 * @priv: UBIFS file-system description object 113 * @priv: UBIFS file-system description object
208 * @a: first data node 114 * @a: first data node
diff --git a/fs/xfs/linux-2.6/xfs_acl.c b/fs/xfs/linux-2.6/xfs_acl.c
index 2512125dfa7c..883ca5ab8af5 100644
--- a/fs/xfs/linux-2.6/xfs_acl.c
+++ b/fs/xfs/linux-2.6/xfs_acl.c
@@ -251,8 +251,9 @@ xfs_set_mode(struct inode *inode, mode_t mode)
251 if (mode != inode->i_mode) { 251 if (mode != inode->i_mode) {
252 struct iattr iattr; 252 struct iattr iattr;
253 253
254 iattr.ia_valid = ATTR_MODE; 254 iattr.ia_valid = ATTR_MODE | ATTR_CTIME;
255 iattr.ia_mode = mode; 255 iattr.ia_mode = mode;
256 iattr.ia_ctime = current_fs_time(inode->i_sb);
256 257
257 error = -xfs_setattr(XFS_I(inode), &iattr, XFS_ATTR_NOACL); 258 error = -xfs_setattr(XFS_I(inode), &iattr, XFS_ATTR_NOACL);
258 } 259 }
diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c
index 09783cc444ac..77414db10dc2 100644
--- a/fs/xfs/linux-2.6/xfs_super.c
+++ b/fs/xfs/linux-2.6/xfs_super.c
@@ -954,16 +954,14 @@ xfs_fs_destroy_inode(
954 ASSERT_ALWAYS(!xfs_iflags_test(ip, XFS_IRECLAIM)); 954 ASSERT_ALWAYS(!xfs_iflags_test(ip, XFS_IRECLAIM));
955 955
956 /* 956 /*
957 * If we have nothing to flush with this inode then complete the 957 * We always use background reclaim here because even if the
958 * teardown now, otherwise delay the flush operation. 958 * inode is clean, it still may be under IO and hence we have
959 * to take the flush lock. The background reclaim path handles
960 * this more efficiently than we can here, so simply let background
961 * reclaim tear down all inodes.
959 */ 962 */
960 if (!xfs_inode_clean(ip)) {
961 xfs_inode_set_reclaim_tag(ip);
962 return;
963 }
964
965out_reclaim: 963out_reclaim:
966 xfs_ireclaim(ip); 964 xfs_inode_set_reclaim_tag(ip);
967} 965}
968 966
969/* 967/*
diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c
index 6fed97a8cd3e..1f5e4bb5e970 100644
--- a/fs/xfs/linux-2.6/xfs_sync.c
+++ b/fs/xfs/linux-2.6/xfs_sync.c
@@ -65,7 +65,6 @@ xfs_inode_ag_lookup(
65 * as the tree is sparse and a gang lookup walks to find 65 * as the tree is sparse and a gang lookup walks to find
66 * the number of objects requested. 66 * the number of objects requested.
67 */ 67 */
68 read_lock(&pag->pag_ici_lock);
69 if (tag == XFS_ICI_NO_TAG) { 68 if (tag == XFS_ICI_NO_TAG) {
70 nr_found = radix_tree_gang_lookup(&pag->pag_ici_root, 69 nr_found = radix_tree_gang_lookup(&pag->pag_ici_root,
71 (void **)&ip, *first_index, 1); 70 (void **)&ip, *first_index, 1);
@@ -74,7 +73,7 @@ xfs_inode_ag_lookup(
74 (void **)&ip, *first_index, 1, tag); 73 (void **)&ip, *first_index, 1, tag);
75 } 74 }
76 if (!nr_found) 75 if (!nr_found)
77 goto unlock; 76 return NULL;
78 77
79 /* 78 /*
80 * Update the index for the next lookup. Catch overflows 79 * Update the index for the next lookup. Catch overflows
@@ -84,13 +83,8 @@ xfs_inode_ag_lookup(
84 */ 83 */
85 *first_index = XFS_INO_TO_AGINO(mp, ip->i_ino + 1); 84 *first_index = XFS_INO_TO_AGINO(mp, ip->i_ino + 1);
86 if (*first_index < XFS_INO_TO_AGINO(mp, ip->i_ino)) 85 if (*first_index < XFS_INO_TO_AGINO(mp, ip->i_ino))
87 goto unlock; 86 return NULL;
88
89 return ip; 87 return ip;
90
91unlock:
92 read_unlock(&pag->pag_ici_lock);
93 return NULL;
94} 88}
95 89
96STATIC int 90STATIC int
@@ -100,7 +94,8 @@ xfs_inode_ag_walk(
100 int (*execute)(struct xfs_inode *ip, 94 int (*execute)(struct xfs_inode *ip,
101 struct xfs_perag *pag, int flags), 95 struct xfs_perag *pag, int flags),
102 int flags, 96 int flags,
103 int tag) 97 int tag,
98 int exclusive)
104{ 99{
105 struct xfs_perag *pag = &mp->m_perag[ag]; 100 struct xfs_perag *pag = &mp->m_perag[ag];
106 uint32_t first_index; 101 uint32_t first_index;
@@ -114,10 +109,20 @@ restart:
114 int error = 0; 109 int error = 0;
115 xfs_inode_t *ip; 110 xfs_inode_t *ip;
116 111
112 if (exclusive)
113 write_lock(&pag->pag_ici_lock);
114 else
115 read_lock(&pag->pag_ici_lock);
117 ip = xfs_inode_ag_lookup(mp, pag, &first_index, tag); 116 ip = xfs_inode_ag_lookup(mp, pag, &first_index, tag);
118 if (!ip) 117 if (!ip) {
118 if (exclusive)
119 write_unlock(&pag->pag_ici_lock);
120 else
121 read_unlock(&pag->pag_ici_lock);
119 break; 122 break;
123 }
120 124
125 /* execute releases pag->pag_ici_lock */
121 error = execute(ip, pag, flags); 126 error = execute(ip, pag, flags);
122 if (error == EAGAIN) { 127 if (error == EAGAIN) {
123 skipped++; 128 skipped++;
@@ -125,9 +130,8 @@ restart:
125 } 130 }
126 if (error) 131 if (error)
127 last_error = error; 132 last_error = error;
128 /* 133
129 * bail out if the filesystem is corrupted. 134 /* bail out if the filesystem is corrupted. */
130 */
131 if (error == EFSCORRUPTED) 135 if (error == EFSCORRUPTED)
132 break; 136 break;
133 137
@@ -148,7 +152,8 @@ xfs_inode_ag_iterator(
148 int (*execute)(struct xfs_inode *ip, 152 int (*execute)(struct xfs_inode *ip,
149 struct xfs_perag *pag, int flags), 153 struct xfs_perag *pag, int flags),
150 int flags, 154 int flags,
151 int tag) 155 int tag,
156 int exclusive)
152{ 157{
153 int error = 0; 158 int error = 0;
154 int last_error = 0; 159 int last_error = 0;
@@ -157,7 +162,8 @@ xfs_inode_ag_iterator(
157 for (ag = 0; ag < mp->m_sb.sb_agcount; ag++) { 162 for (ag = 0; ag < mp->m_sb.sb_agcount; ag++) {
158 if (!mp->m_perag[ag].pag_ici_init) 163 if (!mp->m_perag[ag].pag_ici_init)
159 continue; 164 continue;
160 error = xfs_inode_ag_walk(mp, ag, execute, flags, tag); 165 error = xfs_inode_ag_walk(mp, ag, execute, flags, tag,
166 exclusive);
161 if (error) { 167 if (error) {
162 last_error = error; 168 last_error = error;
163 if (error == EFSCORRUPTED) 169 if (error == EFSCORRUPTED)
@@ -174,30 +180,31 @@ xfs_sync_inode_valid(
174 struct xfs_perag *pag) 180 struct xfs_perag *pag)
175{ 181{
176 struct inode *inode = VFS_I(ip); 182 struct inode *inode = VFS_I(ip);
183 int error = EFSCORRUPTED;
177 184
178 /* nothing to sync during shutdown */ 185 /* nothing to sync during shutdown */
179 if (XFS_FORCED_SHUTDOWN(ip->i_mount)) { 186 if (XFS_FORCED_SHUTDOWN(ip->i_mount))
180 read_unlock(&pag->pag_ici_lock); 187 goto out_unlock;
181 return EFSCORRUPTED;
182 }
183 188
184 /* 189 /* avoid new or reclaimable inodes. Leave for reclaim code to flush */
185 * If we can't get a reference on the inode, it must be in reclaim. 190 error = ENOENT;
186 * Leave it for the reclaim code to flush. Also avoid inodes that 191 if (xfs_iflags_test(ip, XFS_INEW | XFS_IRECLAIMABLE | XFS_IRECLAIM))
187 * haven't been fully initialised. 192 goto out_unlock;
188 */
189 if (!igrab(inode)) {
190 read_unlock(&pag->pag_ici_lock);
191 return ENOENT;
192 }
193 read_unlock(&pag->pag_ici_lock);
194 193
195 if (is_bad_inode(inode) || xfs_iflags_test(ip, XFS_INEW)) { 194 /* If we can't grab the inode, it must on it's way to reclaim. */
195 if (!igrab(inode))
196 goto out_unlock;
197
198 if (is_bad_inode(inode)) {
196 IRELE(ip); 199 IRELE(ip);
197 return ENOENT; 200 goto out_unlock;
198 } 201 }
199 202
200 return 0; 203 /* inode is valid */
204 error = 0;
205out_unlock:
206 read_unlock(&pag->pag_ici_lock);
207 return error;
201} 208}
202 209
203STATIC int 210STATIC int
@@ -282,7 +289,7 @@ xfs_sync_data(
282 ASSERT((flags & ~(SYNC_TRYLOCK|SYNC_WAIT)) == 0); 289 ASSERT((flags & ~(SYNC_TRYLOCK|SYNC_WAIT)) == 0);
283 290
284 error = xfs_inode_ag_iterator(mp, xfs_sync_inode_data, flags, 291 error = xfs_inode_ag_iterator(mp, xfs_sync_inode_data, flags,
285 XFS_ICI_NO_TAG); 292 XFS_ICI_NO_TAG, 0);
286 if (error) 293 if (error)
287 return XFS_ERROR(error); 294 return XFS_ERROR(error);
288 295
@@ -304,7 +311,7 @@ xfs_sync_attr(
304 ASSERT((flags & ~SYNC_WAIT) == 0); 311 ASSERT((flags & ~SYNC_WAIT) == 0);
305 312
306 return xfs_inode_ag_iterator(mp, xfs_sync_inode_attr, flags, 313 return xfs_inode_ag_iterator(mp, xfs_sync_inode_attr, flags,
307 XFS_ICI_NO_TAG); 314 XFS_ICI_NO_TAG, 0);
308} 315}
309 316
310STATIC int 317STATIC int
@@ -664,60 +671,6 @@ xfs_syncd_stop(
664 kthread_stop(mp->m_sync_task); 671 kthread_stop(mp->m_sync_task);
665} 672}
666 673
667STATIC int
668xfs_reclaim_inode(
669 xfs_inode_t *ip,
670 int sync_mode)
671{
672 xfs_perag_t *pag = xfs_get_perag(ip->i_mount, ip->i_ino);
673
674 /* The hash lock here protects a thread in xfs_iget_core from
675 * racing with us on linking the inode back with a vnode.
676 * Once we have the XFS_IRECLAIM flag set it will not touch
677 * us.
678 */
679 write_lock(&pag->pag_ici_lock);
680 spin_lock(&ip->i_flags_lock);
681 if (__xfs_iflags_test(ip, XFS_IRECLAIM) ||
682 !__xfs_iflags_test(ip, XFS_IRECLAIMABLE)) {
683 spin_unlock(&ip->i_flags_lock);
684 write_unlock(&pag->pag_ici_lock);
685 return -EAGAIN;
686 }
687 __xfs_iflags_set(ip, XFS_IRECLAIM);
688 spin_unlock(&ip->i_flags_lock);
689 write_unlock(&pag->pag_ici_lock);
690 xfs_put_perag(ip->i_mount, pag);
691
692 /*
693 * If the inode is still dirty, then flush it out. If the inode
694 * is not in the AIL, then it will be OK to flush it delwri as
695 * long as xfs_iflush() does not keep any references to the inode.
696 * We leave that decision up to xfs_iflush() since it has the
697 * knowledge of whether it's OK to simply do a delwri flush of
698 * the inode or whether we need to wait until the inode is
699 * pulled from the AIL.
700 * We get the flush lock regardless, though, just to make sure
701 * we don't free it while it is being flushed.
702 */
703 xfs_ilock(ip, XFS_ILOCK_EXCL);
704 xfs_iflock(ip);
705
706 /*
707 * In the case of a forced shutdown we rely on xfs_iflush() to
708 * wait for the inode to be unpinned before returning an error.
709 */
710 if (!is_bad_inode(VFS_I(ip)) && xfs_iflush(ip, sync_mode) == 0) {
711 /* synchronize with xfs_iflush_done */
712 xfs_iflock(ip);
713 xfs_ifunlock(ip);
714 }
715
716 xfs_iunlock(ip, XFS_ILOCK_EXCL);
717 xfs_ireclaim(ip);
718 return 0;
719}
720
721void 674void
722__xfs_inode_set_reclaim_tag( 675__xfs_inode_set_reclaim_tag(
723 struct xfs_perag *pag, 676 struct xfs_perag *pag,
@@ -760,19 +713,55 @@ __xfs_inode_clear_reclaim_tag(
760} 713}
761 714
762STATIC int 715STATIC int
763xfs_reclaim_inode_now( 716xfs_reclaim_inode(
764 struct xfs_inode *ip, 717 struct xfs_inode *ip,
765 struct xfs_perag *pag, 718 struct xfs_perag *pag,
766 int flags) 719 int sync_mode)
767{ 720{
768 /* ignore if already under reclaim */ 721 /*
769 if (xfs_iflags_test(ip, XFS_IRECLAIM)) { 722 * The radix tree lock here protects a thread in xfs_iget from racing
770 read_unlock(&pag->pag_ici_lock); 723 * with us starting reclaim on the inode. Once we have the
724 * XFS_IRECLAIM flag set it will not touch us.
725 */
726 spin_lock(&ip->i_flags_lock);
727 ASSERT_ALWAYS(__xfs_iflags_test(ip, XFS_IRECLAIMABLE));
728 if (__xfs_iflags_test(ip, XFS_IRECLAIM)) {
729 /* ignore as it is already under reclaim */
730 spin_unlock(&ip->i_flags_lock);
731 write_unlock(&pag->pag_ici_lock);
771 return 0; 732 return 0;
772 } 733 }
773 read_unlock(&pag->pag_ici_lock); 734 __xfs_iflags_set(ip, XFS_IRECLAIM);
735 spin_unlock(&ip->i_flags_lock);
736 write_unlock(&pag->pag_ici_lock);
774 737
775 return xfs_reclaim_inode(ip, flags); 738 /*
739 * If the inode is still dirty, then flush it out. If the inode
740 * is not in the AIL, then it will be OK to flush it delwri as
741 * long as xfs_iflush() does not keep any references to the inode.
742 * We leave that decision up to xfs_iflush() since it has the
743 * knowledge of whether it's OK to simply do a delwri flush of
744 * the inode or whether we need to wait until the inode is
745 * pulled from the AIL.
746 * We get the flush lock regardless, though, just to make sure
747 * we don't free it while it is being flushed.
748 */
749 xfs_ilock(ip, XFS_ILOCK_EXCL);
750 xfs_iflock(ip);
751
752 /*
753 * In the case of a forced shutdown we rely on xfs_iflush() to
754 * wait for the inode to be unpinned before returning an error.
755 */
756 if (!is_bad_inode(VFS_I(ip)) && xfs_iflush(ip, sync_mode) == 0) {
757 /* synchronize with xfs_iflush_done */
758 xfs_iflock(ip);
759 xfs_ifunlock(ip);
760 }
761
762 xfs_iunlock(ip, XFS_ILOCK_EXCL);
763 xfs_ireclaim(ip);
764 return 0;
776} 765}
777 766
778int 767int
@@ -780,6 +769,6 @@ xfs_reclaim_inodes(
780 xfs_mount_t *mp, 769 xfs_mount_t *mp,
781 int mode) 770 int mode)
782{ 771{
783 return xfs_inode_ag_iterator(mp, xfs_reclaim_inode_now, mode, 772 return xfs_inode_ag_iterator(mp, xfs_reclaim_inode, mode,
784 XFS_ICI_RECLAIM_TAG); 773 XFS_ICI_RECLAIM_TAG, 1);
785} 774}
diff --git a/fs/xfs/linux-2.6/xfs_sync.h b/fs/xfs/linux-2.6/xfs_sync.h
index a500b4d91835..ea932b43335d 100644
--- a/fs/xfs/linux-2.6/xfs_sync.h
+++ b/fs/xfs/linux-2.6/xfs_sync.h
@@ -54,6 +54,6 @@ void __xfs_inode_clear_reclaim_tag(struct xfs_mount *mp, struct xfs_perag *pag,
54int xfs_sync_inode_valid(struct xfs_inode *ip, struct xfs_perag *pag); 54int xfs_sync_inode_valid(struct xfs_inode *ip, struct xfs_perag *pag);
55int xfs_inode_ag_iterator(struct xfs_mount *mp, 55int xfs_inode_ag_iterator(struct xfs_mount *mp,
56 int (*execute)(struct xfs_inode *ip, struct xfs_perag *pag, int flags), 56 int (*execute)(struct xfs_inode *ip, struct xfs_perag *pag, int flags),
57 int flags, int tag); 57 int flags, int tag, int write_lock);
58 58
59#endif 59#endif
diff --git a/fs/xfs/linux-2.6/xfs_trace.h b/fs/xfs/linux-2.6/xfs_trace.h
index c40834bdee58..c22a608321a3 100644
--- a/fs/xfs/linux-2.6/xfs_trace.h
+++ b/fs/xfs/linux-2.6/xfs_trace.h
@@ -33,51 +33,55 @@ struct xfs_dquot;
33struct xlog_ticket; 33struct xlog_ticket;
34struct log; 34struct log;
35 35
36DECLARE_EVENT_CLASS(xfs_attr_list_class,
37 TP_PROTO(struct xfs_attr_list_context *ctx),
38 TP_ARGS(ctx),
39 TP_STRUCT__entry(
40 __field(dev_t, dev)
41 __field(xfs_ino_t, ino)
42 __field(u32, hashval)
43 __field(u32, blkno)
44 __field(u32, offset)
45 __field(void *, alist)
46 __field(int, bufsize)
47 __field(int, count)
48 __field(int, firstu)
49 __field(int, dupcnt)
50 __field(int, flags)
51 ),
52 TP_fast_assign(
53 __entry->dev = VFS_I(ctx->dp)->i_sb->s_dev;
54 __entry->ino = ctx->dp->i_ino;
55 __entry->hashval = ctx->cursor->hashval;
56 __entry->blkno = ctx->cursor->blkno;
57 __entry->offset = ctx->cursor->offset;
58 __entry->alist = ctx->alist;
59 __entry->bufsize = ctx->bufsize;
60 __entry->count = ctx->count;
61 __entry->firstu = ctx->firstu;
62 __entry->flags = ctx->flags;
63 ),
64 TP_printk("dev %d:%d ino 0x%llx cursor h/b/o 0x%x/0x%x/%u dupcnt %u "
65 "alist 0x%p size %u count %u firstu %u flags %d %s",
66 MAJOR(__entry->dev), MINOR(__entry->dev),
67 __entry->ino,
68 __entry->hashval,
69 __entry->blkno,
70 __entry->offset,
71 __entry->dupcnt,
72 __entry->alist,
73 __entry->bufsize,
74 __entry->count,
75 __entry->firstu,
76 __entry->flags,
77 __print_flags(__entry->flags, "|", XFS_ATTR_FLAGS)
78 )
79)
80
36#define DEFINE_ATTR_LIST_EVENT(name) \ 81#define DEFINE_ATTR_LIST_EVENT(name) \
37TRACE_EVENT(name, \ 82DEFINE_EVENT(xfs_attr_list_class, name, \
38 TP_PROTO(struct xfs_attr_list_context *ctx), \ 83 TP_PROTO(struct xfs_attr_list_context *ctx), \
39 TP_ARGS(ctx), \ 84 TP_ARGS(ctx))
40 TP_STRUCT__entry( \
41 __field(dev_t, dev) \
42 __field(xfs_ino_t, ino) \
43 __field(u32, hashval) \
44 __field(u32, blkno) \
45 __field(u32, offset) \
46 __field(void *, alist) \
47 __field(int, bufsize) \
48 __field(int, count) \
49 __field(int, firstu) \
50 __field(int, dupcnt) \
51 __field(int, flags) \
52 ), \
53 TP_fast_assign( \
54 __entry->dev = VFS_I(ctx->dp)->i_sb->s_dev; \
55 __entry->ino = ctx->dp->i_ino; \
56 __entry->hashval = ctx->cursor->hashval; \
57 __entry->blkno = ctx->cursor->blkno; \
58 __entry->offset = ctx->cursor->offset; \
59 __entry->alist = ctx->alist; \
60 __entry->bufsize = ctx->bufsize; \
61 __entry->count = ctx->count; \
62 __entry->firstu = ctx->firstu; \
63 __entry->flags = ctx->flags; \
64 ), \
65 TP_printk("dev %d:%d ino 0x%llx cursor h/b/o 0x%x/0x%x/%u dupcnt %u " \
66 "alist 0x%p size %u count %u firstu %u flags %d %s", \
67 MAJOR(__entry->dev), MINOR(__entry->dev), \
68 __entry->ino, \
69 __entry->hashval, \
70 __entry->blkno, \
71 __entry->offset, \
72 __entry->dupcnt, \
73 __entry->alist, \
74 __entry->bufsize, \
75 __entry->count, \
76 __entry->firstu, \
77 __entry->flags, \
78 __print_flags(__entry->flags, "|", XFS_ATTR_FLAGS) \
79 ) \
80)
81DEFINE_ATTR_LIST_EVENT(xfs_attr_list_sf); 85DEFINE_ATTR_LIST_EVENT(xfs_attr_list_sf);
82DEFINE_ATTR_LIST_EVENT(xfs_attr_list_sf_all); 86DEFINE_ATTR_LIST_EVENT(xfs_attr_list_sf_all);
83DEFINE_ATTR_LIST_EVENT(xfs_attr_list_leaf); 87DEFINE_ATTR_LIST_EVENT(xfs_attr_list_leaf);
@@ -178,91 +182,99 @@ TRACE_EVENT(xfs_iext_insert,
178 (char *)__entry->caller_ip) 182 (char *)__entry->caller_ip)
179); 183);
180 184
185DECLARE_EVENT_CLASS(xfs_bmap_class,
186 TP_PROTO(struct xfs_inode *ip, xfs_extnum_t idx, int state,
187 unsigned long caller_ip),
188 TP_ARGS(ip, idx, state, caller_ip),
189 TP_STRUCT__entry(
190 __field(dev_t, dev)
191 __field(xfs_ino_t, ino)
192 __field(xfs_extnum_t, idx)
193 __field(xfs_fileoff_t, startoff)
194 __field(xfs_fsblock_t, startblock)
195 __field(xfs_filblks_t, blockcount)
196 __field(xfs_exntst_t, state)
197 __field(int, bmap_state)
198 __field(unsigned long, caller_ip)
199 ),
200 TP_fast_assign(
201 struct xfs_ifork *ifp = (state & BMAP_ATTRFORK) ?
202 ip->i_afp : &ip->i_df;
203 struct xfs_bmbt_irec r;
204
205 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx), &r);
206 __entry->dev = VFS_I(ip)->i_sb->s_dev;
207 __entry->ino = ip->i_ino;
208 __entry->idx = idx;
209 __entry->startoff = r.br_startoff;
210 __entry->startblock = r.br_startblock;
211 __entry->blockcount = r.br_blockcount;
212 __entry->state = r.br_state;
213 __entry->bmap_state = state;
214 __entry->caller_ip = caller_ip;
215 ),
216 TP_printk("dev %d:%d ino 0x%llx state %s idx %ld "
217 "offset %lld block %s count %lld flag %d caller %pf",
218 MAJOR(__entry->dev), MINOR(__entry->dev),
219 __entry->ino,
220 __print_flags(__entry->bmap_state, "|", XFS_BMAP_EXT_FLAGS),
221 (long)__entry->idx,
222 __entry->startoff,
223 xfs_fmtfsblock(__entry->startblock),
224 __entry->blockcount,
225 __entry->state,
226 (char *)__entry->caller_ip)
227)
228
181#define DEFINE_BMAP_EVENT(name) \ 229#define DEFINE_BMAP_EVENT(name) \
182TRACE_EVENT(name, \ 230DEFINE_EVENT(xfs_bmap_class, name, \
183 TP_PROTO(struct xfs_inode *ip, xfs_extnum_t idx, int state, \ 231 TP_PROTO(struct xfs_inode *ip, xfs_extnum_t idx, int state, \
184 unsigned long caller_ip), \ 232 unsigned long caller_ip), \
185 TP_ARGS(ip, idx, state, caller_ip), \ 233 TP_ARGS(ip, idx, state, caller_ip))
186 TP_STRUCT__entry( \
187 __field(dev_t, dev) \
188 __field(xfs_ino_t, ino) \
189 __field(xfs_extnum_t, idx) \
190 __field(xfs_fileoff_t, startoff) \
191 __field(xfs_fsblock_t, startblock) \
192 __field(xfs_filblks_t, blockcount) \
193 __field(xfs_exntst_t, state) \
194 __field(int, bmap_state) \
195 __field(unsigned long, caller_ip) \
196 ), \
197 TP_fast_assign( \
198 struct xfs_ifork *ifp = (state & BMAP_ATTRFORK) ? \
199 ip->i_afp : &ip->i_df; \
200 struct xfs_bmbt_irec r; \
201 \
202 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx), &r); \
203 __entry->dev = VFS_I(ip)->i_sb->s_dev; \
204 __entry->ino = ip->i_ino; \
205 __entry->idx = idx; \
206 __entry->startoff = r.br_startoff; \
207 __entry->startblock = r.br_startblock; \
208 __entry->blockcount = r.br_blockcount; \
209 __entry->state = r.br_state; \
210 __entry->bmap_state = state; \
211 __entry->caller_ip = caller_ip; \
212 ), \
213 TP_printk("dev %d:%d ino 0x%llx state %s idx %ld " \
214 "offset %lld block %s count %lld flag %d caller %pf", \
215 MAJOR(__entry->dev), MINOR(__entry->dev), \
216 __entry->ino, \
217 __print_flags(__entry->bmap_state, "|", XFS_BMAP_EXT_FLAGS), \
218 (long)__entry->idx, \
219 __entry->startoff, \
220 xfs_fmtfsblock(__entry->startblock), \
221 __entry->blockcount, \
222 __entry->state, \
223 (char *)__entry->caller_ip) \
224)
225
226DEFINE_BMAP_EVENT(xfs_iext_remove); 234DEFINE_BMAP_EVENT(xfs_iext_remove);
227DEFINE_BMAP_EVENT(xfs_bmap_pre_update); 235DEFINE_BMAP_EVENT(xfs_bmap_pre_update);
228DEFINE_BMAP_EVENT(xfs_bmap_post_update); 236DEFINE_BMAP_EVENT(xfs_bmap_post_update);
229DEFINE_BMAP_EVENT(xfs_extlist); 237DEFINE_BMAP_EVENT(xfs_extlist);
230 238
231#define DEFINE_BUF_EVENT(tname) \ 239DECLARE_EVENT_CLASS(xfs_buf_class,
232TRACE_EVENT(tname, \ 240 TP_PROTO(struct xfs_buf *bp, unsigned long caller_ip),
233 TP_PROTO(struct xfs_buf *bp, unsigned long caller_ip), \ 241 TP_ARGS(bp, caller_ip),
234 TP_ARGS(bp, caller_ip), \ 242 TP_STRUCT__entry(
235 TP_STRUCT__entry( \ 243 __field(dev_t, dev)
236 __field(dev_t, dev) \ 244 __field(xfs_daddr_t, bno)
237 __field(xfs_daddr_t, bno) \ 245 __field(size_t, buffer_length)
238 __field(size_t, buffer_length) \ 246 __field(int, hold)
239 __field(int, hold) \ 247 __field(int, pincount)
240 __field(int, pincount) \ 248 __field(unsigned, lockval)
241 __field(unsigned, lockval) \ 249 __field(unsigned, flags)
242 __field(unsigned, flags) \ 250 __field(unsigned long, caller_ip)
243 __field(unsigned long, caller_ip) \ 251 ),
244 ), \ 252 TP_fast_assign(
245 TP_fast_assign( \ 253 __entry->dev = bp->b_target->bt_dev;
246 __entry->dev = bp->b_target->bt_dev; \ 254 __entry->bno = bp->b_bn;
247 __entry->bno = bp->b_bn; \ 255 __entry->buffer_length = bp->b_buffer_length;
248 __entry->buffer_length = bp->b_buffer_length; \ 256 __entry->hold = atomic_read(&bp->b_hold);
249 __entry->hold = atomic_read(&bp->b_hold); \ 257 __entry->pincount = atomic_read(&bp->b_pin_count);
250 __entry->pincount = atomic_read(&bp->b_pin_count); \ 258 __entry->lockval = xfs_buf_lock_value(bp);
251 __entry->lockval = xfs_buf_lock_value(bp); \ 259 __entry->flags = bp->b_flags;
252 __entry->flags = bp->b_flags; \ 260 __entry->caller_ip = caller_ip;
253 __entry->caller_ip = caller_ip; \ 261 ),
254 ), \ 262 TP_printk("dev %d:%d bno 0x%llx len 0x%zx hold %d pincount %d "
255 TP_printk("dev %d:%d bno 0x%llx len 0x%zx hold %d pincount %d " \ 263 "lock %d flags %s caller %pf",
256 "lock %d flags %s caller %pf", \ 264 MAJOR(__entry->dev), MINOR(__entry->dev),
257 MAJOR(__entry->dev), MINOR(__entry->dev), \ 265 (unsigned long long)__entry->bno,
258 (unsigned long long)__entry->bno, \ 266 __entry->buffer_length,
259 __entry->buffer_length, \ 267 __entry->hold,
260 __entry->hold, \ 268 __entry->pincount,
261 __entry->pincount, \ 269 __entry->lockval,
262 __entry->lockval, \ 270 __print_flags(__entry->flags, "|", XFS_BUF_FLAGS),
263 __print_flags(__entry->flags, "|", XFS_BUF_FLAGS), \ 271 (void *)__entry->caller_ip)
264 (void *)__entry->caller_ip) \
265) 272)
273
274#define DEFINE_BUF_EVENT(name) \
275DEFINE_EVENT(xfs_buf_class, name, \
276 TP_PROTO(struct xfs_buf *bp, unsigned long caller_ip), \
277 TP_ARGS(bp, caller_ip))
266DEFINE_BUF_EVENT(xfs_buf_init); 278DEFINE_BUF_EVENT(xfs_buf_init);
267DEFINE_BUF_EVENT(xfs_buf_free); 279DEFINE_BUF_EVENT(xfs_buf_free);
268DEFINE_BUF_EVENT(xfs_buf_hold); 280DEFINE_BUF_EVENT(xfs_buf_hold);
@@ -299,41 +311,45 @@ DEFINE_BUF_EVENT(xfs_reset_dqcounts);
299DEFINE_BUF_EVENT(xfs_inode_item_push); 311DEFINE_BUF_EVENT(xfs_inode_item_push);
300 312
301/* pass flags explicitly */ 313/* pass flags explicitly */
302#define DEFINE_BUF_FLAGS_EVENT(tname) \ 314DECLARE_EVENT_CLASS(xfs_buf_flags_class,
303TRACE_EVENT(tname, \ 315 TP_PROTO(struct xfs_buf *bp, unsigned flags, unsigned long caller_ip),
304 TP_PROTO(struct xfs_buf *bp, unsigned flags, unsigned long caller_ip), \ 316 TP_ARGS(bp, flags, caller_ip),
305 TP_ARGS(bp, flags, caller_ip), \ 317 TP_STRUCT__entry(
306 TP_STRUCT__entry( \ 318 __field(dev_t, dev)
307 __field(dev_t, dev) \ 319 __field(xfs_daddr_t, bno)
308 __field(xfs_daddr_t, bno) \ 320 __field(size_t, buffer_length)
309 __field(size_t, buffer_length) \ 321 __field(int, hold)
310 __field(int, hold) \ 322 __field(int, pincount)
311 __field(int, pincount) \ 323 __field(unsigned, lockval)
312 __field(unsigned, lockval) \ 324 __field(unsigned, flags)
313 __field(unsigned, flags) \ 325 __field(unsigned long, caller_ip)
314 __field(unsigned long, caller_ip) \ 326 ),
315 ), \ 327 TP_fast_assign(
316 TP_fast_assign( \ 328 __entry->dev = bp->b_target->bt_dev;
317 __entry->dev = bp->b_target->bt_dev; \ 329 __entry->bno = bp->b_bn;
318 __entry->bno = bp->b_bn; \ 330 __entry->buffer_length = bp->b_buffer_length;
319 __entry->buffer_length = bp->b_buffer_length; \ 331 __entry->flags = flags;
320 __entry->flags = flags; \ 332 __entry->hold = atomic_read(&bp->b_hold);
321 __entry->hold = atomic_read(&bp->b_hold); \ 333 __entry->pincount = atomic_read(&bp->b_pin_count);
322 __entry->pincount = atomic_read(&bp->b_pin_count); \ 334 __entry->lockval = xfs_buf_lock_value(bp);
323 __entry->lockval = xfs_buf_lock_value(bp); \ 335 __entry->caller_ip = caller_ip;
324 __entry->caller_ip = caller_ip; \ 336 ),
325 ), \ 337 TP_printk("dev %d:%d bno 0x%llx len 0x%zx hold %d pincount %d "
326 TP_printk("dev %d:%d bno 0x%llx len 0x%zx hold %d pincount %d " \ 338 "lock %d flags %s caller %pf",
327 "lock %d flags %s caller %pf", \ 339 MAJOR(__entry->dev), MINOR(__entry->dev),
328 MAJOR(__entry->dev), MINOR(__entry->dev), \ 340 (unsigned long long)__entry->bno,
329 (unsigned long long)__entry->bno, \ 341 __entry->buffer_length,
330 __entry->buffer_length, \ 342 __entry->hold,
331 __entry->hold, \ 343 __entry->pincount,
332 __entry->pincount, \ 344 __entry->lockval,
333 __entry->lockval, \ 345 __print_flags(__entry->flags, "|", XFS_BUF_FLAGS),
334 __print_flags(__entry->flags, "|", XFS_BUF_FLAGS), \ 346 (void *)__entry->caller_ip)
335 (void *)__entry->caller_ip) \
336) 347)
348
349#define DEFINE_BUF_FLAGS_EVENT(name) \
350DEFINE_EVENT(xfs_buf_flags_class, name, \
351 TP_PROTO(struct xfs_buf *bp, unsigned flags, unsigned long caller_ip), \
352 TP_ARGS(bp, flags, caller_ip))
337DEFINE_BUF_FLAGS_EVENT(xfs_buf_find); 353DEFINE_BUF_FLAGS_EVENT(xfs_buf_find);
338DEFINE_BUF_FLAGS_EVENT(xfs_buf_get); 354DEFINE_BUF_FLAGS_EVENT(xfs_buf_get);
339DEFINE_BUF_FLAGS_EVENT(xfs_buf_read); 355DEFINE_BUF_FLAGS_EVENT(xfs_buf_read);
@@ -376,55 +392,58 @@ TRACE_EVENT(xfs_buf_ioerror,
376 (void *)__entry->caller_ip) 392 (void *)__entry->caller_ip)
377); 393);
378 394
379#define DEFINE_BUF_ITEM_EVENT(tname) \ 395DECLARE_EVENT_CLASS(xfs_buf_item_class,
380TRACE_EVENT(tname, \ 396 TP_PROTO(struct xfs_buf_log_item *bip),
381 TP_PROTO(struct xfs_buf_log_item *bip), \ 397 TP_ARGS(bip),
382 TP_ARGS(bip), \ 398 TP_STRUCT__entry(
383 TP_STRUCT__entry( \ 399 __field(dev_t, dev)
384 __field(dev_t, dev) \ 400 __field(xfs_daddr_t, buf_bno)
385 __field(xfs_daddr_t, buf_bno) \ 401 __field(size_t, buf_len)
386 __field(size_t, buf_len) \ 402 __field(int, buf_hold)
387 __field(int, buf_hold) \ 403 __field(int, buf_pincount)
388 __field(int, buf_pincount) \ 404 __field(int, buf_lockval)
389 __field(int, buf_lockval) \ 405 __field(unsigned, buf_flags)
390 __field(unsigned, buf_flags) \ 406 __field(unsigned, bli_recur)
391 __field(unsigned, bli_recur) \ 407 __field(int, bli_refcount)
392 __field(int, bli_refcount) \ 408 __field(unsigned, bli_flags)
393 __field(unsigned, bli_flags) \ 409 __field(void *, li_desc)
394 __field(void *, li_desc) \ 410 __field(unsigned, li_flags)
395 __field(unsigned, li_flags) \ 411 ),
396 ), \ 412 TP_fast_assign(
397 TP_fast_assign( \ 413 __entry->dev = bip->bli_buf->b_target->bt_dev;
398 __entry->dev = bip->bli_buf->b_target->bt_dev; \ 414 __entry->bli_flags = bip->bli_flags;
399 __entry->bli_flags = bip->bli_flags; \ 415 __entry->bli_recur = bip->bli_recur;
400 __entry->bli_recur = bip->bli_recur; \ 416 __entry->bli_refcount = atomic_read(&bip->bli_refcount);
401 __entry->bli_refcount = atomic_read(&bip->bli_refcount); \ 417 __entry->buf_bno = bip->bli_buf->b_bn;
402 __entry->buf_bno = bip->bli_buf->b_bn; \ 418 __entry->buf_len = bip->bli_buf->b_buffer_length;
403 __entry->buf_len = bip->bli_buf->b_buffer_length; \ 419 __entry->buf_flags = bip->bli_buf->b_flags;
404 __entry->buf_flags = bip->bli_buf->b_flags; \ 420 __entry->buf_hold = atomic_read(&bip->bli_buf->b_hold);
405 __entry->buf_hold = atomic_read(&bip->bli_buf->b_hold); \ 421 __entry->buf_pincount = atomic_read(&bip->bli_buf->b_pin_count);
406 __entry->buf_pincount = \ 422 __entry->buf_lockval = xfs_buf_lock_value(bip->bli_buf);
407 atomic_read(&bip->bli_buf->b_pin_count); \ 423 __entry->li_desc = bip->bli_item.li_desc;
408 __entry->buf_lockval = xfs_buf_lock_value(bip->bli_buf); \ 424 __entry->li_flags = bip->bli_item.li_flags;
409 __entry->li_desc = bip->bli_item.li_desc; \ 425 ),
410 __entry->li_flags = bip->bli_item.li_flags; \ 426 TP_printk("dev %d:%d bno 0x%llx len 0x%zx hold %d pincount %d "
411 ), \ 427 "lock %d flags %s recur %d refcount %d bliflags %s "
412 TP_printk("dev %d:%d bno 0x%llx len 0x%zx hold %d pincount %d " \ 428 "lidesc 0x%p liflags %s",
413 "lock %d flags %s recur %d refcount %d bliflags %s " \ 429 MAJOR(__entry->dev), MINOR(__entry->dev),
414 "lidesc 0x%p liflags %s", \ 430 (unsigned long long)__entry->buf_bno,
415 MAJOR(__entry->dev), MINOR(__entry->dev), \ 431 __entry->buf_len,
416 (unsigned long long)__entry->buf_bno, \ 432 __entry->buf_hold,
417 __entry->buf_len, \ 433 __entry->buf_pincount,
418 __entry->buf_hold, \ 434 __entry->buf_lockval,
419 __entry->buf_pincount, \ 435 __print_flags(__entry->buf_flags, "|", XFS_BUF_FLAGS),
420 __entry->buf_lockval, \ 436 __entry->bli_recur,
421 __print_flags(__entry->buf_flags, "|", XFS_BUF_FLAGS), \ 437 __entry->bli_refcount,
422 __entry->bli_recur, \ 438 __print_flags(__entry->bli_flags, "|", XFS_BLI_FLAGS),
423 __entry->bli_refcount, \ 439 __entry->li_desc,
424 __print_flags(__entry->bli_flags, "|", XFS_BLI_FLAGS), \ 440 __print_flags(__entry->li_flags, "|", XFS_LI_FLAGS))
425 __entry->li_desc, \
426 __print_flags(__entry->li_flags, "|", XFS_LI_FLAGS)) \
427) 441)
442
443#define DEFINE_BUF_ITEM_EVENT(name) \
444DEFINE_EVENT(xfs_buf_item_class, name, \
445 TP_PROTO(struct xfs_buf_log_item *bip), \
446 TP_ARGS(bip))
428DEFINE_BUF_ITEM_EVENT(xfs_buf_item_size); 447DEFINE_BUF_ITEM_EVENT(xfs_buf_item_size);
429DEFINE_BUF_ITEM_EVENT(xfs_buf_item_size_stale); 448DEFINE_BUF_ITEM_EVENT(xfs_buf_item_size_stale);
430DEFINE_BUF_ITEM_EVENT(xfs_buf_item_format); 449DEFINE_BUF_ITEM_EVENT(xfs_buf_item_format);
@@ -450,78 +469,90 @@ DEFINE_BUF_ITEM_EVENT(xfs_trans_bhold);
450DEFINE_BUF_ITEM_EVENT(xfs_trans_bhold_release); 469DEFINE_BUF_ITEM_EVENT(xfs_trans_bhold_release);
451DEFINE_BUF_ITEM_EVENT(xfs_trans_binval); 470DEFINE_BUF_ITEM_EVENT(xfs_trans_binval);
452 471
472DECLARE_EVENT_CLASS(xfs_lock_class,
473 TP_PROTO(struct xfs_inode *ip, unsigned lock_flags,
474 unsigned long caller_ip),
475 TP_ARGS(ip, lock_flags, caller_ip),
476 TP_STRUCT__entry(
477 __field(dev_t, dev)
478 __field(xfs_ino_t, ino)
479 __field(int, lock_flags)
480 __field(unsigned long, caller_ip)
481 ),
482 TP_fast_assign(
483 __entry->dev = VFS_I(ip)->i_sb->s_dev;
484 __entry->ino = ip->i_ino;
485 __entry->lock_flags = lock_flags;
486 __entry->caller_ip = caller_ip;
487 ),
488 TP_printk("dev %d:%d ino 0x%llx flags %s caller %pf",
489 MAJOR(__entry->dev), MINOR(__entry->dev),
490 __entry->ino,
491 __print_flags(__entry->lock_flags, "|", XFS_LOCK_FLAGS),
492 (void *)__entry->caller_ip)
493)
494
453#define DEFINE_LOCK_EVENT(name) \ 495#define DEFINE_LOCK_EVENT(name) \
454TRACE_EVENT(name, \ 496DEFINE_EVENT(xfs_lock_class, name, \
455 TP_PROTO(struct xfs_inode *ip, unsigned lock_flags, \ 497 TP_PROTO(struct xfs_inode *ip, unsigned lock_flags, \
456 unsigned long caller_ip), \ 498 unsigned long caller_ip), \
457 TP_ARGS(ip, lock_flags, caller_ip), \ 499 TP_ARGS(ip, lock_flags, caller_ip))
458 TP_STRUCT__entry( \
459 __field(dev_t, dev) \
460 __field(xfs_ino_t, ino) \
461 __field(int, lock_flags) \
462 __field(unsigned long, caller_ip) \
463 ), \
464 TP_fast_assign( \
465 __entry->dev = VFS_I(ip)->i_sb->s_dev; \
466 __entry->ino = ip->i_ino; \
467 __entry->lock_flags = lock_flags; \
468 __entry->caller_ip = caller_ip; \
469 ), \
470 TP_printk("dev %d:%d ino 0x%llx flags %s caller %pf", \
471 MAJOR(__entry->dev), MINOR(__entry->dev), \
472 __entry->ino, \
473 __print_flags(__entry->lock_flags, "|", XFS_LOCK_FLAGS), \
474 (void *)__entry->caller_ip) \
475)
476
477DEFINE_LOCK_EVENT(xfs_ilock); 500DEFINE_LOCK_EVENT(xfs_ilock);
478DEFINE_LOCK_EVENT(xfs_ilock_nowait); 501DEFINE_LOCK_EVENT(xfs_ilock_nowait);
479DEFINE_LOCK_EVENT(xfs_ilock_demote); 502DEFINE_LOCK_EVENT(xfs_ilock_demote);
480DEFINE_LOCK_EVENT(xfs_iunlock); 503DEFINE_LOCK_EVENT(xfs_iunlock);
481 504
505DECLARE_EVENT_CLASS(xfs_iget_class,
506 TP_PROTO(struct xfs_inode *ip),
507 TP_ARGS(ip),
508 TP_STRUCT__entry(
509 __field(dev_t, dev)
510 __field(xfs_ino_t, ino)
511 ),
512 TP_fast_assign(
513 __entry->dev = VFS_I(ip)->i_sb->s_dev;
514 __entry->ino = ip->i_ino;
515 ),
516 TP_printk("dev %d:%d ino 0x%llx",
517 MAJOR(__entry->dev), MINOR(__entry->dev),
518 __entry->ino)
519)
520
482#define DEFINE_IGET_EVENT(name) \ 521#define DEFINE_IGET_EVENT(name) \
483TRACE_EVENT(name, \ 522DEFINE_EVENT(xfs_iget_class, name, \
484 TP_PROTO(struct xfs_inode *ip), \ 523 TP_PROTO(struct xfs_inode *ip), \
485 TP_ARGS(ip), \ 524 TP_ARGS(ip))
486 TP_STRUCT__entry( \
487 __field(dev_t, dev) \
488 __field(xfs_ino_t, ino) \
489 ), \
490 TP_fast_assign( \
491 __entry->dev = VFS_I(ip)->i_sb->s_dev; \
492 __entry->ino = ip->i_ino; \
493 ), \
494 TP_printk("dev %d:%d ino 0x%llx", \
495 MAJOR(__entry->dev), MINOR(__entry->dev), \
496 __entry->ino) \
497)
498DEFINE_IGET_EVENT(xfs_iget_skip); 525DEFINE_IGET_EVENT(xfs_iget_skip);
499DEFINE_IGET_EVENT(xfs_iget_reclaim); 526DEFINE_IGET_EVENT(xfs_iget_reclaim);
500DEFINE_IGET_EVENT(xfs_iget_found); 527DEFINE_IGET_EVENT(xfs_iget_found);
501DEFINE_IGET_EVENT(xfs_iget_alloc); 528DEFINE_IGET_EVENT(xfs_iget_alloc);
502 529
530DECLARE_EVENT_CLASS(xfs_inode_class,
531 TP_PROTO(struct xfs_inode *ip, unsigned long caller_ip),
532 TP_ARGS(ip, caller_ip),
533 TP_STRUCT__entry(
534 __field(dev_t, dev)
535 __field(xfs_ino_t, ino)
536 __field(int, count)
537 __field(unsigned long, caller_ip)
538 ),
539 TP_fast_assign(
540 __entry->dev = VFS_I(ip)->i_sb->s_dev;
541 __entry->ino = ip->i_ino;
542 __entry->count = atomic_read(&VFS_I(ip)->i_count);
543 __entry->caller_ip = caller_ip;
544 ),
545 TP_printk("dev %d:%d ino 0x%llx count %d caller %pf",
546 MAJOR(__entry->dev), MINOR(__entry->dev),
547 __entry->ino,
548 __entry->count,
549 (char *)__entry->caller_ip)
550)
551
503#define DEFINE_INODE_EVENT(name) \ 552#define DEFINE_INODE_EVENT(name) \
504TRACE_EVENT(name, \ 553DEFINE_EVENT(xfs_inode_class, name, \
505 TP_PROTO(struct xfs_inode *ip, unsigned long caller_ip), \ 554 TP_PROTO(struct xfs_inode *ip, unsigned long caller_ip), \
506 TP_ARGS(ip, caller_ip), \ 555 TP_ARGS(ip, caller_ip))
507 TP_STRUCT__entry( \
508 __field(dev_t, dev) \
509 __field(xfs_ino_t, ino) \
510 __field(int, count) \
511 __field(unsigned long, caller_ip) \
512 ), \
513 TP_fast_assign( \
514 __entry->dev = VFS_I(ip)->i_sb->s_dev; \
515 __entry->ino = ip->i_ino; \
516 __entry->count = atomic_read(&VFS_I(ip)->i_count); \
517 __entry->caller_ip = caller_ip; \
518 ), \
519 TP_printk("dev %d:%d ino 0x%llx count %d caller %pf", \
520 MAJOR(__entry->dev), MINOR(__entry->dev), \
521 __entry->ino, \
522 __entry->count, \
523 (char *)__entry->caller_ip) \
524)
525DEFINE_INODE_EVENT(xfs_ihold); 556DEFINE_INODE_EVENT(xfs_ihold);
526DEFINE_INODE_EVENT(xfs_irele); 557DEFINE_INODE_EVENT(xfs_irele);
527/* the old xfs_itrace_entry tracer - to be replaced by s.th. in the VFS */ 558/* the old xfs_itrace_entry tracer - to be replaced by s.th. in the VFS */
@@ -529,55 +560,59 @@ DEFINE_INODE_EVENT(xfs_inode);
529#define xfs_itrace_entry(ip) \ 560#define xfs_itrace_entry(ip) \
530 trace_xfs_inode(ip, _THIS_IP_) 561 trace_xfs_inode(ip, _THIS_IP_)
531 562
532#define DEFINE_DQUOT_EVENT(tname) \ 563DECLARE_EVENT_CLASS(xfs_dquot_class,
533TRACE_EVENT(tname, \ 564 TP_PROTO(struct xfs_dquot *dqp),
534 TP_PROTO(struct xfs_dquot *dqp), \ 565 TP_ARGS(dqp),
535 TP_ARGS(dqp), \ 566 TP_STRUCT__entry(
536 TP_STRUCT__entry( \ 567 __field(dev_t, dev)
537 __field(dev_t, dev) \ 568 __field(__be32, id)
538 __field(__be32, id) \ 569 __field(unsigned, flags)
539 __field(unsigned, flags) \ 570 __field(unsigned, nrefs)
540 __field(unsigned, nrefs) \ 571 __field(unsigned long long, res_bcount)
541 __field(unsigned long long, res_bcount) \ 572 __field(unsigned long long, bcount)
542 __field(unsigned long long, bcount) \ 573 __field(unsigned long long, icount)
543 __field(unsigned long long, icount) \ 574 __field(unsigned long long, blk_hardlimit)
544 __field(unsigned long long, blk_hardlimit) \ 575 __field(unsigned long long, blk_softlimit)
545 __field(unsigned long long, blk_softlimit) \ 576 __field(unsigned long long, ino_hardlimit)
546 __field(unsigned long long, ino_hardlimit) \ 577 __field(unsigned long long, ino_softlimit)
547 __field(unsigned long long, ino_softlimit) \
548 ), \
549 TP_fast_assign( \
550 __entry->dev = dqp->q_mount->m_super->s_dev; \
551 __entry->id = dqp->q_core.d_id; \
552 __entry->flags = dqp->dq_flags; \
553 __entry->nrefs = dqp->q_nrefs; \
554 __entry->res_bcount = dqp->q_res_bcount; \
555 __entry->bcount = be64_to_cpu(dqp->q_core.d_bcount); \
556 __entry->icount = be64_to_cpu(dqp->q_core.d_icount); \
557 __entry->blk_hardlimit = \
558 be64_to_cpu(dqp->q_core.d_blk_hardlimit); \
559 __entry->blk_softlimit = \
560 be64_to_cpu(dqp->q_core.d_blk_softlimit); \
561 __entry->ino_hardlimit = \
562 be64_to_cpu(dqp->q_core.d_ino_hardlimit); \
563 __entry->ino_softlimit = \
564 be64_to_cpu(dqp->q_core.d_ino_softlimit); \
565 ), \ 578 ), \
566 TP_printk("dev %d:%d id 0x%x flags %s nrefs %u res_bc 0x%llx " \ 579 TP_fast_assign(
567 "bcnt 0x%llx [hard 0x%llx | soft 0x%llx] " \ 580 __entry->dev = dqp->q_mount->m_super->s_dev;
568 "icnt 0x%llx [hard 0x%llx | soft 0x%llx]", \ 581 __entry->id = dqp->q_core.d_id;
569 MAJOR(__entry->dev), MINOR(__entry->dev), \ 582 __entry->flags = dqp->dq_flags;
570 be32_to_cpu(__entry->id), \ 583 __entry->nrefs = dqp->q_nrefs;
571 __print_flags(__entry->flags, "|", XFS_DQ_FLAGS), \ 584 __entry->res_bcount = dqp->q_res_bcount;
572 __entry->nrefs, \ 585 __entry->bcount = be64_to_cpu(dqp->q_core.d_bcount);
573 __entry->res_bcount, \ 586 __entry->icount = be64_to_cpu(dqp->q_core.d_icount);
574 __entry->bcount, \ 587 __entry->blk_hardlimit =
575 __entry->blk_hardlimit, \ 588 be64_to_cpu(dqp->q_core.d_blk_hardlimit);
576 __entry->blk_softlimit, \ 589 __entry->blk_softlimit =
577 __entry->icount, \ 590 be64_to_cpu(dqp->q_core.d_blk_softlimit);
578 __entry->ino_hardlimit, \ 591 __entry->ino_hardlimit =
579 __entry->ino_softlimit) \ 592 be64_to_cpu(dqp->q_core.d_ino_hardlimit);
593 __entry->ino_softlimit =
594 be64_to_cpu(dqp->q_core.d_ino_softlimit);
595 ),
596 TP_printk("dev %d:%d id 0x%x flags %s nrefs %u res_bc 0x%llx "
597 "bcnt 0x%llx [hard 0x%llx | soft 0x%llx] "
598 "icnt 0x%llx [hard 0x%llx | soft 0x%llx]",
599 MAJOR(__entry->dev), MINOR(__entry->dev),
600 be32_to_cpu(__entry->id),
601 __print_flags(__entry->flags, "|", XFS_DQ_FLAGS),
602 __entry->nrefs,
603 __entry->res_bcount,
604 __entry->bcount,
605 __entry->blk_hardlimit,
606 __entry->blk_softlimit,
607 __entry->icount,
608 __entry->ino_hardlimit,
609 __entry->ino_softlimit)
580) 610)
611
612#define DEFINE_DQUOT_EVENT(name) \
613DEFINE_EVENT(xfs_dquot_class, name, \
614 TP_PROTO(struct xfs_dquot *dqp), \
615 TP_ARGS(dqp))
581DEFINE_DQUOT_EVENT(xfs_dqadjust); 616DEFINE_DQUOT_EVENT(xfs_dqadjust);
582DEFINE_DQUOT_EVENT(xfs_dqshake_dirty); 617DEFINE_DQUOT_EVENT(xfs_dqshake_dirty);
583DEFINE_DQUOT_EVENT(xfs_dqshake_unlink); 618DEFINE_DQUOT_EVENT(xfs_dqshake_unlink);
@@ -610,72 +645,75 @@ DEFINE_DQUOT_EVENT(xfs_dqflush_done);
610DEFINE_IGET_EVENT(xfs_dquot_dqalloc); 645DEFINE_IGET_EVENT(xfs_dquot_dqalloc);
611DEFINE_IGET_EVENT(xfs_dquot_dqdetach); 646DEFINE_IGET_EVENT(xfs_dquot_dqdetach);
612 647
648DECLARE_EVENT_CLASS(xfs_loggrant_class,
649 TP_PROTO(struct log *log, struct xlog_ticket *tic),
650 TP_ARGS(log, tic),
651 TP_STRUCT__entry(
652 __field(dev_t, dev)
653 __field(unsigned, trans_type)
654 __field(char, ocnt)
655 __field(char, cnt)
656 __field(int, curr_res)
657 __field(int, unit_res)
658 __field(unsigned int, flags)
659 __field(void *, reserve_headq)
660 __field(void *, write_headq)
661 __field(int, grant_reserve_cycle)
662 __field(int, grant_reserve_bytes)
663 __field(int, grant_write_cycle)
664 __field(int, grant_write_bytes)
665 __field(int, curr_cycle)
666 __field(int, curr_block)
667 __field(xfs_lsn_t, tail_lsn)
668 ),
669 TP_fast_assign(
670 __entry->dev = log->l_mp->m_super->s_dev;
671 __entry->trans_type = tic->t_trans_type;
672 __entry->ocnt = tic->t_ocnt;
673 __entry->cnt = tic->t_cnt;
674 __entry->curr_res = tic->t_curr_res;
675 __entry->unit_res = tic->t_unit_res;
676 __entry->flags = tic->t_flags;
677 __entry->reserve_headq = log->l_reserve_headq;
678 __entry->write_headq = log->l_write_headq;
679 __entry->grant_reserve_cycle = log->l_grant_reserve_cycle;
680 __entry->grant_reserve_bytes = log->l_grant_reserve_bytes;
681 __entry->grant_write_cycle = log->l_grant_write_cycle;
682 __entry->grant_write_bytes = log->l_grant_write_bytes;
683 __entry->curr_cycle = log->l_curr_cycle;
684 __entry->curr_block = log->l_curr_block;
685 __entry->tail_lsn = log->l_tail_lsn;
686 ),
687 TP_printk("dev %d:%d type %s t_ocnt %u t_cnt %u t_curr_res %u "
688 "t_unit_res %u t_flags %s reserve_headq 0x%p "
689 "write_headq 0x%p grant_reserve_cycle %d "
690 "grant_reserve_bytes %d grant_write_cycle %d "
691 "grant_write_bytes %d curr_cycle %d curr_block %d "
692 "tail_cycle %d tail_block %d",
693 MAJOR(__entry->dev), MINOR(__entry->dev),
694 __print_symbolic(__entry->trans_type, XFS_TRANS_TYPES),
695 __entry->ocnt,
696 __entry->cnt,
697 __entry->curr_res,
698 __entry->unit_res,
699 __print_flags(__entry->flags, "|", XLOG_TIC_FLAGS),
700 __entry->reserve_headq,
701 __entry->write_headq,
702 __entry->grant_reserve_cycle,
703 __entry->grant_reserve_bytes,
704 __entry->grant_write_cycle,
705 __entry->grant_write_bytes,
706 __entry->curr_cycle,
707 __entry->curr_block,
708 CYCLE_LSN(__entry->tail_lsn),
709 BLOCK_LSN(__entry->tail_lsn)
710 )
711)
613 712
614#define DEFINE_LOGGRANT_EVENT(tname) \ 713#define DEFINE_LOGGRANT_EVENT(name) \
615TRACE_EVENT(tname, \ 714DEFINE_EVENT(xfs_loggrant_class, name, \
616 TP_PROTO(struct log *log, struct xlog_ticket *tic), \ 715 TP_PROTO(struct log *log, struct xlog_ticket *tic), \
617 TP_ARGS(log, tic), \ 716 TP_ARGS(log, tic))
618 TP_STRUCT__entry( \
619 __field(dev_t, dev) \
620 __field(unsigned, trans_type) \
621 __field(char, ocnt) \
622 __field(char, cnt) \
623 __field(int, curr_res) \
624 __field(int, unit_res) \
625 __field(unsigned int, flags) \
626 __field(void *, reserve_headq) \
627 __field(void *, write_headq) \
628 __field(int, grant_reserve_cycle) \
629 __field(int, grant_reserve_bytes) \
630 __field(int, grant_write_cycle) \
631 __field(int, grant_write_bytes) \
632 __field(int, curr_cycle) \
633 __field(int, curr_block) \
634 __field(xfs_lsn_t, tail_lsn) \
635 ), \
636 TP_fast_assign( \
637 __entry->dev = log->l_mp->m_super->s_dev; \
638 __entry->trans_type = tic->t_trans_type; \
639 __entry->ocnt = tic->t_ocnt; \
640 __entry->cnt = tic->t_cnt; \
641 __entry->curr_res = tic->t_curr_res; \
642 __entry->unit_res = tic->t_unit_res; \
643 __entry->flags = tic->t_flags; \
644 __entry->reserve_headq = log->l_reserve_headq; \
645 __entry->write_headq = log->l_write_headq; \
646 __entry->grant_reserve_cycle = log->l_grant_reserve_cycle; \
647 __entry->grant_reserve_bytes = log->l_grant_reserve_bytes; \
648 __entry->grant_write_cycle = log->l_grant_write_cycle; \
649 __entry->grant_write_bytes = log->l_grant_write_bytes; \
650 __entry->curr_cycle = log->l_curr_cycle; \
651 __entry->curr_block = log->l_curr_block; \
652 __entry->tail_lsn = log->l_tail_lsn; \
653 ), \
654 TP_printk("dev %d:%d type %s t_ocnt %u t_cnt %u t_curr_res %u " \
655 "t_unit_res %u t_flags %s reserve_headq 0x%p " \
656 "write_headq 0x%p grant_reserve_cycle %d " \
657 "grant_reserve_bytes %d grant_write_cycle %d " \
658 "grant_write_bytes %d curr_cycle %d curr_block %d " \
659 "tail_cycle %d tail_block %d", \
660 MAJOR(__entry->dev), MINOR(__entry->dev), \
661 __print_symbolic(__entry->trans_type, XFS_TRANS_TYPES), \
662 __entry->ocnt, \
663 __entry->cnt, \
664 __entry->curr_res, \
665 __entry->unit_res, \
666 __print_flags(__entry->flags, "|", XLOG_TIC_FLAGS), \
667 __entry->reserve_headq, \
668 __entry->write_headq, \
669 __entry->grant_reserve_cycle, \
670 __entry->grant_reserve_bytes, \
671 __entry->grant_write_cycle, \
672 __entry->grant_write_bytes, \
673 __entry->curr_cycle, \
674 __entry->curr_block, \
675 CYCLE_LSN(__entry->tail_lsn), \
676 BLOCK_LSN(__entry->tail_lsn) \
677 ) \
678)
679DEFINE_LOGGRANT_EVENT(xfs_log_done_nonperm); 717DEFINE_LOGGRANT_EVENT(xfs_log_done_nonperm);
680DEFINE_LOGGRANT_EVENT(xfs_log_done_perm); 718DEFINE_LOGGRANT_EVENT(xfs_log_done_perm);
681DEFINE_LOGGRANT_EVENT(xfs_log_reserve); 719DEFINE_LOGGRANT_EVENT(xfs_log_reserve);
@@ -815,7 +853,7 @@ TRACE_EVENT(name, \
815 ), \ 853 ), \
816 TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx " \ 854 TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx " \
817 "offset 0x%llx count %zd flags %s " \ 855 "offset 0x%llx count %zd flags %s " \
818 "startoff 0x%llx startblock 0x%llx blockcount 0x%llx", \ 856 "startoff 0x%llx startblock %s blockcount 0x%llx", \
819 MAJOR(__entry->dev), MINOR(__entry->dev), \ 857 MAJOR(__entry->dev), MINOR(__entry->dev), \
820 __entry->ino, \ 858 __entry->ino, \
821 __entry->size, \ 859 __entry->size, \
@@ -824,7 +862,7 @@ TRACE_EVENT(name, \
824 __entry->count, \ 862 __entry->count, \
825 __print_flags(__entry->flags, "|", BMAPI_FLAGS), \ 863 __print_flags(__entry->flags, "|", BMAPI_FLAGS), \
826 __entry->startoff, \ 864 __entry->startoff, \
827 __entry->startblock, \ 865 xfs_fmtfsblock(__entry->startblock), \
828 __entry->blockcount) \ 866 __entry->blockcount) \
829) 867)
830DEFINE_IOMAP_EVENT(xfs_iomap_enter); 868DEFINE_IOMAP_EVENT(xfs_iomap_enter);
@@ -897,28 +935,32 @@ TRACE_EVENT(xfs_itruncate_start,
897 __entry->toss_finish) 935 __entry->toss_finish)
898); 936);
899 937
938DECLARE_EVENT_CLASS(xfs_itrunc_class,
939 TP_PROTO(struct xfs_inode *ip, xfs_fsize_t new_size),
940 TP_ARGS(ip, new_size),
941 TP_STRUCT__entry(
942 __field(dev_t, dev)
943 __field(xfs_ino_t, ino)
944 __field(xfs_fsize_t, size)
945 __field(xfs_fsize_t, new_size)
946 ),
947 TP_fast_assign(
948 __entry->dev = VFS_I(ip)->i_sb->s_dev;
949 __entry->ino = ip->i_ino;
950 __entry->size = ip->i_d.di_size;
951 __entry->new_size = new_size;
952 ),
953 TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx",
954 MAJOR(__entry->dev), MINOR(__entry->dev),
955 __entry->ino,
956 __entry->size,
957 __entry->new_size)
958)
959
900#define DEFINE_ITRUNC_EVENT(name) \ 960#define DEFINE_ITRUNC_EVENT(name) \
901TRACE_EVENT(name, \ 961DEFINE_EVENT(xfs_itrunc_class, name, \
902 TP_PROTO(struct xfs_inode *ip, xfs_fsize_t new_size), \ 962 TP_PROTO(struct xfs_inode *ip, xfs_fsize_t new_size), \
903 TP_ARGS(ip, new_size), \ 963 TP_ARGS(ip, new_size))
904 TP_STRUCT__entry( \
905 __field(dev_t, dev) \
906 __field(xfs_ino_t, ino) \
907 __field(xfs_fsize_t, size) \
908 __field(xfs_fsize_t, new_size) \
909 ), \
910 TP_fast_assign( \
911 __entry->dev = VFS_I(ip)->i_sb->s_dev; \
912 __entry->ino = ip->i_ino; \
913 __entry->size = ip->i_d.di_size; \
914 __entry->new_size = new_size; \
915 ), \
916 TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx", \
917 MAJOR(__entry->dev), MINOR(__entry->dev), \
918 __entry->ino, \
919 __entry->size, \
920 __entry->new_size) \
921)
922DEFINE_ITRUNC_EVENT(xfs_itruncate_finish_start); 964DEFINE_ITRUNC_EVENT(xfs_itruncate_finish_start);
923DEFINE_ITRUNC_EVENT(xfs_itruncate_finish_end); 965DEFINE_ITRUNC_EVENT(xfs_itruncate_finish_end);
924 966
@@ -1037,28 +1079,28 @@ TRACE_EVENT(xfs_alloc_unbusy,
1037 1079
1038TRACE_EVENT(xfs_alloc_busysearch, 1080TRACE_EVENT(xfs_alloc_busysearch,
1039 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno, 1081 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno,
1040 xfs_extlen_t len, int found), 1082 xfs_extlen_t len, xfs_lsn_t lsn),
1041 TP_ARGS(mp, agno, agbno, len, found), 1083 TP_ARGS(mp, agno, agbno, len, lsn),
1042 TP_STRUCT__entry( 1084 TP_STRUCT__entry(
1043 __field(dev_t, dev) 1085 __field(dev_t, dev)
1044 __field(xfs_agnumber_t, agno) 1086 __field(xfs_agnumber_t, agno)
1045 __field(xfs_agblock_t, agbno) 1087 __field(xfs_agblock_t, agbno)
1046 __field(xfs_extlen_t, len) 1088 __field(xfs_extlen_t, len)
1047 __field(int, found) 1089 __field(xfs_lsn_t, lsn)
1048 ), 1090 ),
1049 TP_fast_assign( 1091 TP_fast_assign(
1050 __entry->dev = mp->m_super->s_dev; 1092 __entry->dev = mp->m_super->s_dev;
1051 __entry->agno = agno; 1093 __entry->agno = agno;
1052 __entry->agbno = agbno; 1094 __entry->agbno = agbno;
1053 __entry->len = len; 1095 __entry->len = len;
1054 __entry->found = found; 1096 __entry->lsn = lsn;
1055 ), 1097 ),
1056 TP_printk("dev %d:%d agno %u agbno %u len %u %s", 1098 TP_printk("dev %d:%d agno %u agbno %u len %u force lsn 0x%llx",
1057 MAJOR(__entry->dev), MINOR(__entry->dev), 1099 MAJOR(__entry->dev), MINOR(__entry->dev),
1058 __entry->agno, 1100 __entry->agno,
1059 __entry->agbno, 1101 __entry->agbno,
1060 __entry->len, 1102 __entry->len,
1061 __print_symbolic(__entry->found, XFS_BUSY_STATES)) 1103 __entry->lsn)
1062); 1104);
1063 1105
1064TRACE_EVENT(xfs_agf, 1106TRACE_EVENT(xfs_agf,
@@ -1152,77 +1194,80 @@ TRACE_EVENT(xfs_free_extent,
1152 1194
1153); 1195);
1154 1196
1155#define DEFINE_ALLOC_EVENT(name) \ 1197DECLARE_EVENT_CLASS(xfs_alloc_class,
1156TRACE_EVENT(name, \ 1198 TP_PROTO(struct xfs_alloc_arg *args),
1157 TP_PROTO(struct xfs_alloc_arg *args), \ 1199 TP_ARGS(args),
1158 TP_ARGS(args), \ 1200 TP_STRUCT__entry(
1159 TP_STRUCT__entry( \ 1201 __field(dev_t, dev)
1160 __field(dev_t, dev) \ 1202 __field(xfs_agnumber_t, agno)
1161 __field(xfs_agnumber_t, agno) \ 1203 __field(xfs_agblock_t, agbno)
1162 __field(xfs_agblock_t, agbno) \ 1204 __field(xfs_extlen_t, minlen)
1163 __field(xfs_extlen_t, minlen) \ 1205 __field(xfs_extlen_t, maxlen)
1164 __field(xfs_extlen_t, maxlen) \ 1206 __field(xfs_extlen_t, mod)
1165 __field(xfs_extlen_t, mod) \ 1207 __field(xfs_extlen_t, prod)
1166 __field(xfs_extlen_t, prod) \ 1208 __field(xfs_extlen_t, minleft)
1167 __field(xfs_extlen_t, minleft) \ 1209 __field(xfs_extlen_t, total)
1168 __field(xfs_extlen_t, total) \ 1210 __field(xfs_extlen_t, alignment)
1169 __field(xfs_extlen_t, alignment) \ 1211 __field(xfs_extlen_t, minalignslop)
1170 __field(xfs_extlen_t, minalignslop) \ 1212 __field(xfs_extlen_t, len)
1171 __field(xfs_extlen_t, len) \ 1213 __field(short, type)
1172 __field(short, type) \ 1214 __field(short, otype)
1173 __field(short, otype) \ 1215 __field(char, wasdel)
1174 __field(char, wasdel) \ 1216 __field(char, wasfromfl)
1175 __field(char, wasfromfl) \ 1217 __field(char, isfl)
1176 __field(char, isfl) \ 1218 __field(char, userdata)
1177 __field(char, userdata) \ 1219 __field(xfs_fsblock_t, firstblock)
1178 __field(xfs_fsblock_t, firstblock) \ 1220 ),
1179 ), \ 1221 TP_fast_assign(
1180 TP_fast_assign( \ 1222 __entry->dev = args->mp->m_super->s_dev;
1181 __entry->dev = args->mp->m_super->s_dev; \ 1223 __entry->agno = args->agno;
1182 __entry->agno = args->agno; \ 1224 __entry->agbno = args->agbno;
1183 __entry->agbno = args->agbno; \ 1225 __entry->minlen = args->minlen;
1184 __entry->minlen = args->minlen; \ 1226 __entry->maxlen = args->maxlen;
1185 __entry->maxlen = args->maxlen; \ 1227 __entry->mod = args->mod;
1186 __entry->mod = args->mod; \ 1228 __entry->prod = args->prod;
1187 __entry->prod = args->prod; \ 1229 __entry->minleft = args->minleft;
1188 __entry->minleft = args->minleft; \ 1230 __entry->total = args->total;
1189 __entry->total = args->total; \ 1231 __entry->alignment = args->alignment;
1190 __entry->alignment = args->alignment; \ 1232 __entry->minalignslop = args->minalignslop;
1191 __entry->minalignslop = args->minalignslop; \ 1233 __entry->len = args->len;
1192 __entry->len = args->len; \ 1234 __entry->type = args->type;
1193 __entry->type = args->type; \ 1235 __entry->otype = args->otype;
1194 __entry->otype = args->otype; \ 1236 __entry->wasdel = args->wasdel;
1195 __entry->wasdel = args->wasdel; \ 1237 __entry->wasfromfl = args->wasfromfl;
1196 __entry->wasfromfl = args->wasfromfl; \ 1238 __entry->isfl = args->isfl;
1197 __entry->isfl = args->isfl; \ 1239 __entry->userdata = args->userdata;
1198 __entry->userdata = args->userdata; \ 1240 __entry->firstblock = args->firstblock;
1199 __entry->firstblock = args->firstblock; \ 1241 ),
1200 ), \ 1242 TP_printk("dev %d:%d agno %u agbno %u minlen %u maxlen %u mod %u "
1201 TP_printk("dev %d:%d agno %u agbno %u minlen %u maxlen %u mod %u " \ 1243 "prod %u minleft %u total %u alignment %u minalignslop %u "
1202 "prod %u minleft %u total %u alignment %u minalignslop %u " \ 1244 "len %u type %s otype %s wasdel %d wasfromfl %d isfl %d "
1203 "len %u type %s otype %s wasdel %d wasfromfl %d isfl %d " \ 1245 "userdata %d firstblock 0x%llx",
1204 "userdata %d firstblock 0x%llx", \ 1246 MAJOR(__entry->dev), MINOR(__entry->dev),
1205 MAJOR(__entry->dev), MINOR(__entry->dev), \ 1247 __entry->agno,
1206 __entry->agno, \ 1248 __entry->agbno,
1207 __entry->agbno, \ 1249 __entry->minlen,
1208 __entry->minlen, \ 1250 __entry->maxlen,
1209 __entry->maxlen, \ 1251 __entry->mod,
1210 __entry->mod, \ 1252 __entry->prod,
1211 __entry->prod, \ 1253 __entry->minleft,
1212 __entry->minleft, \ 1254 __entry->total,
1213 __entry->total, \ 1255 __entry->alignment,
1214 __entry->alignment, \ 1256 __entry->minalignslop,
1215 __entry->minalignslop, \ 1257 __entry->len,
1216 __entry->len, \ 1258 __print_symbolic(__entry->type, XFS_ALLOC_TYPES),
1217 __print_symbolic(__entry->type, XFS_ALLOC_TYPES), \ 1259 __print_symbolic(__entry->otype, XFS_ALLOC_TYPES),
1218 __print_symbolic(__entry->otype, XFS_ALLOC_TYPES), \ 1260 __entry->wasdel,
1219 __entry->wasdel, \ 1261 __entry->wasfromfl,
1220 __entry->wasfromfl, \ 1262 __entry->isfl,
1221 __entry->isfl, \ 1263 __entry->userdata,
1222 __entry->userdata, \ 1264 __entry->firstblock)
1223 __entry->firstblock) \
1224) 1265)
1225 1266
1267#define DEFINE_ALLOC_EVENT(name) \
1268DEFINE_EVENT(xfs_alloc_class, name, \
1269 TP_PROTO(struct xfs_alloc_arg *args), \
1270 TP_ARGS(args))
1226DEFINE_ALLOC_EVENT(xfs_alloc_exact_done); 1271DEFINE_ALLOC_EVENT(xfs_alloc_exact_done);
1227DEFINE_ALLOC_EVENT(xfs_alloc_exact_error); 1272DEFINE_ALLOC_EVENT(xfs_alloc_exact_error);
1228DEFINE_ALLOC_EVENT(xfs_alloc_near_nominleft); 1273DEFINE_ALLOC_EVENT(xfs_alloc_near_nominleft);
@@ -1245,92 +1290,100 @@ DEFINE_ALLOC_EVENT(xfs_alloc_vextent_noagbp);
1245DEFINE_ALLOC_EVENT(xfs_alloc_vextent_loopfailed); 1290DEFINE_ALLOC_EVENT(xfs_alloc_vextent_loopfailed);
1246DEFINE_ALLOC_EVENT(xfs_alloc_vextent_allfailed); 1291DEFINE_ALLOC_EVENT(xfs_alloc_vextent_allfailed);
1247 1292
1248#define DEFINE_DIR2_TRACE(tname) \ 1293DECLARE_EVENT_CLASS(xfs_dir2_class,
1249TRACE_EVENT(tname, \ 1294 TP_PROTO(struct xfs_da_args *args),
1295 TP_ARGS(args),
1296 TP_STRUCT__entry(
1297 __field(dev_t, dev)
1298 __field(xfs_ino_t, ino)
1299 __dynamic_array(char, name, args->namelen)
1300 __field(int, namelen)
1301 __field(xfs_dahash_t, hashval)
1302 __field(xfs_ino_t, inumber)
1303 __field(int, op_flags)
1304 ),
1305 TP_fast_assign(
1306 __entry->dev = VFS_I(args->dp)->i_sb->s_dev;
1307 __entry->ino = args->dp->i_ino;
1308 if (args->namelen)
1309 memcpy(__get_str(name), args->name, args->namelen);
1310 __entry->namelen = args->namelen;
1311 __entry->hashval = args->hashval;
1312 __entry->inumber = args->inumber;
1313 __entry->op_flags = args->op_flags;
1314 ),
1315 TP_printk("dev %d:%d ino 0x%llx name %.*s namelen %d hashval 0x%x "
1316 "inumber 0x%llx op_flags %s",
1317 MAJOR(__entry->dev), MINOR(__entry->dev),
1318 __entry->ino,
1319 __entry->namelen,
1320 __entry->namelen ? __get_str(name) : NULL,
1321 __entry->namelen,
1322 __entry->hashval,
1323 __entry->inumber,
1324 __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS))
1325)
1326
1327#define DEFINE_DIR2_EVENT(name) \
1328DEFINE_EVENT(xfs_dir2_class, name, \
1250 TP_PROTO(struct xfs_da_args *args), \ 1329 TP_PROTO(struct xfs_da_args *args), \
1251 TP_ARGS(args), \ 1330 TP_ARGS(args))
1252 TP_STRUCT__entry( \ 1331DEFINE_DIR2_EVENT(xfs_dir2_sf_addname);
1253 __field(dev_t, dev) \ 1332DEFINE_DIR2_EVENT(xfs_dir2_sf_create);
1254 __field(xfs_ino_t, ino) \ 1333DEFINE_DIR2_EVENT(xfs_dir2_sf_lookup);
1255 __dynamic_array(char, name, args->namelen) \ 1334DEFINE_DIR2_EVENT(xfs_dir2_sf_replace);
1256 __field(int, namelen) \ 1335DEFINE_DIR2_EVENT(xfs_dir2_sf_removename);
1257 __field(xfs_dahash_t, hashval) \ 1336DEFINE_DIR2_EVENT(xfs_dir2_sf_toino4);
1258 __field(xfs_ino_t, inumber) \ 1337DEFINE_DIR2_EVENT(xfs_dir2_sf_toino8);
1259 __field(int, op_flags) \ 1338DEFINE_DIR2_EVENT(xfs_dir2_sf_to_block);
1260 ), \ 1339DEFINE_DIR2_EVENT(xfs_dir2_block_addname);
1261 TP_fast_assign( \ 1340DEFINE_DIR2_EVENT(xfs_dir2_block_lookup);
1262 __entry->dev = VFS_I(args->dp)->i_sb->s_dev; \ 1341DEFINE_DIR2_EVENT(xfs_dir2_block_replace);
1263 __entry->ino = args->dp->i_ino; \ 1342DEFINE_DIR2_EVENT(xfs_dir2_block_removename);
1264 if (args->namelen) \ 1343DEFINE_DIR2_EVENT(xfs_dir2_block_to_sf);
1265 memcpy(__get_str(name), args->name, args->namelen); \ 1344DEFINE_DIR2_EVENT(xfs_dir2_block_to_leaf);
1266 __entry->namelen = args->namelen; \ 1345DEFINE_DIR2_EVENT(xfs_dir2_leaf_addname);
1267 __entry->hashval = args->hashval; \ 1346DEFINE_DIR2_EVENT(xfs_dir2_leaf_lookup);
1268 __entry->inumber = args->inumber; \ 1347DEFINE_DIR2_EVENT(xfs_dir2_leaf_replace);
1269 __entry->op_flags = args->op_flags; \ 1348DEFINE_DIR2_EVENT(xfs_dir2_leaf_removename);
1270 ), \ 1349DEFINE_DIR2_EVENT(xfs_dir2_leaf_to_block);
1271 TP_printk("dev %d:%d ino 0x%llx name %.*s namelen %d hashval 0x%x " \ 1350DEFINE_DIR2_EVENT(xfs_dir2_leaf_to_node);
1272 "inumber 0x%llx op_flags %s", \ 1351DEFINE_DIR2_EVENT(xfs_dir2_node_addname);
1273 MAJOR(__entry->dev), MINOR(__entry->dev), \ 1352DEFINE_DIR2_EVENT(xfs_dir2_node_lookup);
1274 __entry->ino, \ 1353DEFINE_DIR2_EVENT(xfs_dir2_node_replace);
1275 __entry->namelen, \ 1354DEFINE_DIR2_EVENT(xfs_dir2_node_removename);
1276 __entry->namelen ? __get_str(name) : NULL, \ 1355DEFINE_DIR2_EVENT(xfs_dir2_node_to_leaf);
1277 __entry->namelen, \ 1356
1278 __entry->hashval, \ 1357DECLARE_EVENT_CLASS(xfs_dir2_space_class,
1279 __entry->inumber, \ 1358 TP_PROTO(struct xfs_da_args *args, int idx),
1280 __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS)) \ 1359 TP_ARGS(args, idx),
1360 TP_STRUCT__entry(
1361 __field(dev_t, dev)
1362 __field(xfs_ino_t, ino)
1363 __field(int, op_flags)
1364 __field(int, idx)
1365 ),
1366 TP_fast_assign(
1367 __entry->dev = VFS_I(args->dp)->i_sb->s_dev;
1368 __entry->ino = args->dp->i_ino;
1369 __entry->op_flags = args->op_flags;
1370 __entry->idx = idx;
1371 ),
1372 TP_printk("dev %d:%d ino 0x%llx op_flags %s index %d",
1373 MAJOR(__entry->dev), MINOR(__entry->dev),
1374 __entry->ino,
1375 __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS),
1376 __entry->idx)
1281) 1377)
1282DEFINE_DIR2_TRACE(xfs_dir2_sf_addname);
1283DEFINE_DIR2_TRACE(xfs_dir2_sf_create);
1284DEFINE_DIR2_TRACE(xfs_dir2_sf_lookup);
1285DEFINE_DIR2_TRACE(xfs_dir2_sf_replace);
1286DEFINE_DIR2_TRACE(xfs_dir2_sf_removename);
1287DEFINE_DIR2_TRACE(xfs_dir2_sf_toino4);
1288DEFINE_DIR2_TRACE(xfs_dir2_sf_toino8);
1289DEFINE_DIR2_TRACE(xfs_dir2_sf_to_block);
1290DEFINE_DIR2_TRACE(xfs_dir2_block_addname);
1291DEFINE_DIR2_TRACE(xfs_dir2_block_lookup);
1292DEFINE_DIR2_TRACE(xfs_dir2_block_replace);
1293DEFINE_DIR2_TRACE(xfs_dir2_block_removename);
1294DEFINE_DIR2_TRACE(xfs_dir2_block_to_sf);
1295DEFINE_DIR2_TRACE(xfs_dir2_block_to_leaf);
1296DEFINE_DIR2_TRACE(xfs_dir2_leaf_addname);
1297DEFINE_DIR2_TRACE(xfs_dir2_leaf_lookup);
1298DEFINE_DIR2_TRACE(xfs_dir2_leaf_replace);
1299DEFINE_DIR2_TRACE(xfs_dir2_leaf_removename);
1300DEFINE_DIR2_TRACE(xfs_dir2_leaf_to_block);
1301DEFINE_DIR2_TRACE(xfs_dir2_leaf_to_node);
1302DEFINE_DIR2_TRACE(xfs_dir2_node_addname);
1303DEFINE_DIR2_TRACE(xfs_dir2_node_lookup);
1304DEFINE_DIR2_TRACE(xfs_dir2_node_replace);
1305DEFINE_DIR2_TRACE(xfs_dir2_node_removename);
1306DEFINE_DIR2_TRACE(xfs_dir2_node_to_leaf);
1307 1378
1308#define DEFINE_DIR2_SPACE_TRACE(tname) \ 1379#define DEFINE_DIR2_SPACE_EVENT(name) \
1309TRACE_EVENT(tname, \ 1380DEFINE_EVENT(xfs_dir2_space_class, name, \
1310 TP_PROTO(struct xfs_da_args *args, int idx), \ 1381 TP_PROTO(struct xfs_da_args *args, int idx), \
1311 TP_ARGS(args, idx), \ 1382 TP_ARGS(args, idx))
1312 TP_STRUCT__entry( \ 1383DEFINE_DIR2_SPACE_EVENT(xfs_dir2_leafn_add);
1313 __field(dev_t, dev) \ 1384DEFINE_DIR2_SPACE_EVENT(xfs_dir2_leafn_remove);
1314 __field(xfs_ino_t, ino) \ 1385DEFINE_DIR2_SPACE_EVENT(xfs_dir2_grow_inode);
1315 __field(int, op_flags) \ 1386DEFINE_DIR2_SPACE_EVENT(xfs_dir2_shrink_inode);
1316 __field(int, idx) \
1317 ), \
1318 TP_fast_assign( \
1319 __entry->dev = VFS_I(args->dp)->i_sb->s_dev; \
1320 __entry->ino = args->dp->i_ino; \
1321 __entry->op_flags = args->op_flags; \
1322 __entry->idx = idx; \
1323 ), \
1324 TP_printk("dev %d:%d ino 0x%llx op_flags %s index %d", \
1325 MAJOR(__entry->dev), MINOR(__entry->dev), \
1326 __entry->ino, \
1327 __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS), \
1328 __entry->idx) \
1329)
1330DEFINE_DIR2_SPACE_TRACE(xfs_dir2_leafn_add);
1331DEFINE_DIR2_SPACE_TRACE(xfs_dir2_leafn_remove);
1332DEFINE_DIR2_SPACE_TRACE(xfs_dir2_grow_inode);
1333DEFINE_DIR2_SPACE_TRACE(xfs_dir2_shrink_inode);
1334 1387
1335TRACE_EVENT(xfs_dir2_leafn_moveents, 1388TRACE_EVENT(xfs_dir2_leafn_moveents,
1336 TP_PROTO(struct xfs_da_args *args, int src_idx, int dst_idx, int count), 1389 TP_PROTO(struct xfs_da_args *args, int src_idx, int dst_idx, int count),
diff --git a/fs/xfs/quota/xfs_qm_syscalls.c b/fs/xfs/quota/xfs_qm_syscalls.c
index 71af76fe8a23..873e07e29074 100644
--- a/fs/xfs/quota/xfs_qm_syscalls.c
+++ b/fs/xfs/quota/xfs_qm_syscalls.c
@@ -891,7 +891,7 @@ xfs_qm_dqrele_all_inodes(
891 uint flags) 891 uint flags)
892{ 892{
893 ASSERT(mp->m_quotainfo); 893 ASSERT(mp->m_quotainfo);
894 xfs_inode_ag_iterator(mp, xfs_dqrele_inode, flags, XFS_ICI_NO_TAG); 894 xfs_inode_ag_iterator(mp, xfs_dqrele_inode, flags, XFS_ICI_NO_TAG, 0);
895} 895}
896 896
897/*------------------------------------------------------------------------*/ 897/*------------------------------------------------------------------------*/
diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c
index a1c65fc6d9c4..275b1f4f9430 100644
--- a/fs/xfs/xfs_alloc.c
+++ b/fs/xfs/xfs_alloc.c
@@ -2563,43 +2563,41 @@ xfs_alloc_search_busy(xfs_trans_t *tp,
2563 xfs_mount_t *mp; 2563 xfs_mount_t *mp;
2564 xfs_perag_busy_t *bsy; 2564 xfs_perag_busy_t *bsy;
2565 xfs_agblock_t uend, bend; 2565 xfs_agblock_t uend, bend;
2566 xfs_lsn_t lsn; 2566 xfs_lsn_t lsn = 0;
2567 int cnt; 2567 int cnt;
2568 2568
2569 mp = tp->t_mountp; 2569 mp = tp->t_mountp;
2570 2570
2571 spin_lock(&mp->m_perag[agno].pagb_lock); 2571 spin_lock(&mp->m_perag[agno].pagb_lock);
2572 cnt = mp->m_perag[agno].pagb_count;
2573 2572
2574 uend = bno + len - 1; 2573 uend = bno + len - 1;
2575 2574
2576 /* search pagb_list for this slot, skipping open slots */ 2575 /*
2577 for (bsy = mp->m_perag[agno].pagb_list; cnt; bsy++) { 2576 * search pagb_list for this slot, skipping open slots. We have to
2577 * search the entire array as there may be multiple overlaps and
2578 * we have to get the most recent LSN for the log force to push out
2579 * all the transactions that span the range.
2580 */
2581 for (cnt = 0; cnt < mp->m_perag[agno].pagb_count; cnt++) {
2582 bsy = &mp->m_perag[agno].pagb_list[cnt];
2583 if (!bsy->busy_tp)
2584 continue;
2578 2585
2579 /* 2586 bend = bsy->busy_start + bsy->busy_length - 1;
2580 * (start1,length1) within (start2, length2) 2587 if (bno > bend || uend < bsy->busy_start)
2581 */ 2588 continue;
2582 if (bsy->busy_tp != NULL) {
2583 bend = bsy->busy_start + bsy->busy_length - 1;
2584 if ((bno > bend) || (uend < bsy->busy_start)) {
2585 cnt--;
2586 } else {
2587 break;
2588 }
2589 }
2590 }
2591 2589
2592 trace_xfs_alloc_busysearch(mp, agno, bno, len, !!cnt); 2590 /* (start1,length1) within (start2, length2) */
2591 if (XFS_LSN_CMP(bsy->busy_tp->t_commit_lsn, lsn) > 0)
2592 lsn = bsy->busy_tp->t_commit_lsn;
2593 }
2594 spin_unlock(&mp->m_perag[agno].pagb_lock);
2595 trace_xfs_alloc_busysearch(tp->t_mountp, agno, bno, len, lsn);
2593 2596
2594 /* 2597 /*
2595 * If a block was found, force the log through the LSN of the 2598 * If a block was found, force the log through the LSN of the
2596 * transaction that freed the block 2599 * transaction that freed the block
2597 */ 2600 */
2598 if (cnt) { 2601 if (lsn)
2599 lsn = bsy->busy_tp->t_commit_lsn;
2600 spin_unlock(&mp->m_perag[agno].pagb_lock);
2601 xfs_log_force(mp, lsn, XFS_LOG_FORCE|XFS_LOG_SYNC); 2602 xfs_log_force(mp, lsn, XFS_LOG_FORCE|XFS_LOG_SYNC);
2602 } else {
2603 spin_unlock(&mp->m_perag[agno].pagb_lock);
2604 }
2605} 2603}
diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c
index d1483a4f71b8..84ca1cf16a1e 100644
--- a/fs/xfs/xfs_dfrag.c
+++ b/fs/xfs/xfs_dfrag.c
@@ -114,10 +114,82 @@ xfs_swapext(
114 return error; 114 return error;
115} 115}
116 116
117/*
118 * We need to check that the format of the data fork in the temporary inode is
119 * valid for the target inode before doing the swap. This is not a problem with
120 * attr1 because of the fixed fork offset, but attr2 has a dynamically sized
121 * data fork depending on the space the attribute fork is taking so we can get
122 * invalid formats on the target inode.
123 *
124 * E.g. target has space for 7 extents in extent format, temp inode only has
125 * space for 6. If we defragment down to 7 extents, then the tmp format is a
126 * btree, but when swapped it needs to be in extent format. Hence we can't just
127 * blindly swap data forks on attr2 filesystems.
128 *
129 * Note that we check the swap in both directions so that we don't end up with
130 * a corrupt temporary inode, either.
131 *
132 * Note that fixing the way xfs_fsr sets up the attribute fork in the source
133 * inode will prevent this situation from occurring, so all we do here is
134 * reject and log the attempt. basically we are putting the responsibility on
135 * userspace to get this right.
136 */
137static int
138xfs_swap_extents_check_format(
139 xfs_inode_t *ip, /* target inode */
140 xfs_inode_t *tip) /* tmp inode */
141{
142
143 /* Should never get a local format */
144 if (ip->i_d.di_format == XFS_DINODE_FMT_LOCAL ||
145 tip->i_d.di_format == XFS_DINODE_FMT_LOCAL)
146 return EINVAL;
147
148 /*
149 * if the target inode has less extents that then temporary inode then
150 * why did userspace call us?
151 */
152 if (ip->i_d.di_nextents < tip->i_d.di_nextents)
153 return EINVAL;
154
155 /*
156 * if the target inode is in extent form and the temp inode is in btree
157 * form then we will end up with the target inode in the wrong format
158 * as we already know there are less extents in the temp inode.
159 */
160 if (ip->i_d.di_format == XFS_DINODE_FMT_EXTENTS &&
161 tip->i_d.di_format == XFS_DINODE_FMT_BTREE)
162 return EINVAL;
163
164 /* Check temp in extent form to max in target */
165 if (tip->i_d.di_format == XFS_DINODE_FMT_EXTENTS &&
166 XFS_IFORK_NEXTENTS(tip, XFS_DATA_FORK) > ip->i_df.if_ext_max)
167 return EINVAL;
168
169 /* Check target in extent form to max in temp */
170 if (ip->i_d.di_format == XFS_DINODE_FMT_EXTENTS &&
171 XFS_IFORK_NEXTENTS(ip, XFS_DATA_FORK) > tip->i_df.if_ext_max)
172 return EINVAL;
173
174 /* Check root block of temp in btree form to max in target */
175 if (tip->i_d.di_format == XFS_DINODE_FMT_BTREE &&
176 XFS_IFORK_BOFF(ip) &&
177 tip->i_df.if_broot_bytes > XFS_IFORK_BOFF(ip))
178 return EINVAL;
179
180 /* Check root block of target in btree form to max in temp */
181 if (ip->i_d.di_format == XFS_DINODE_FMT_BTREE &&
182 XFS_IFORK_BOFF(tip) &&
183 ip->i_df.if_broot_bytes > XFS_IFORK_BOFF(tip))
184 return EINVAL;
185
186 return 0;
187}
188
117int 189int
118xfs_swap_extents( 190xfs_swap_extents(
119 xfs_inode_t *ip, 191 xfs_inode_t *ip, /* target inode */
120 xfs_inode_t *tip, 192 xfs_inode_t *tip, /* tmp inode */
121 xfs_swapext_t *sxp) 193 xfs_swapext_t *sxp)
122{ 194{
123 xfs_mount_t *mp; 195 xfs_mount_t *mp;
@@ -161,13 +233,6 @@ xfs_swap_extents(
161 goto out_unlock; 233 goto out_unlock;
162 } 234 }
163 235
164 /* Should never get a local format */
165 if (ip->i_d.di_format == XFS_DINODE_FMT_LOCAL ||
166 tip->i_d.di_format == XFS_DINODE_FMT_LOCAL) {
167 error = XFS_ERROR(EINVAL);
168 goto out_unlock;
169 }
170
171 if (VN_CACHED(VFS_I(tip)) != 0) { 236 if (VN_CACHED(VFS_I(tip)) != 0) {
172 error = xfs_flushinval_pages(tip, 0, -1, 237 error = xfs_flushinval_pages(tip, 0, -1,
173 FI_REMAPF_LOCKED); 238 FI_REMAPF_LOCKED);
@@ -189,13 +254,12 @@ xfs_swap_extents(
189 goto out_unlock; 254 goto out_unlock;
190 } 255 }
191 256
192 /* 257 /* check inode formats now that data is flushed */
193 * If the target has extended attributes, the tmp file 258 error = xfs_swap_extents_check_format(ip, tip);
194 * must also in order to ensure the correct data fork 259 if (error) {
195 * format. 260 xfs_fs_cmn_err(CE_NOTE, mp,
196 */ 261 "%s: inode 0x%llx format is incompatible for exchanging.",
197 if ( XFS_IFORK_Q(ip) != XFS_IFORK_Q(tip) ) { 262 __FILE__, ip->i_ino);
198 error = XFS_ERROR(EINVAL);
199 goto out_unlock; 263 goto out_unlock;
200 } 264 }
201 265
@@ -276,6 +340,16 @@ xfs_swap_extents(
276 *tifp = *tempifp; /* struct copy */ 340 *tifp = *tempifp; /* struct copy */
277 341
278 /* 342 /*
343 * Fix the in-memory data fork values that are dependent on the fork
344 * offset in the inode. We can't assume they remain the same as attr2
345 * has dynamic fork offsets.
346 */
347 ifp->if_ext_max = XFS_IFORK_SIZE(ip, XFS_DATA_FORK) /
348 (uint)sizeof(xfs_bmbt_rec_t);
349 tifp->if_ext_max = XFS_IFORK_SIZE(tip, XFS_DATA_FORK) /
350 (uint)sizeof(xfs_bmbt_rec_t);
351
352 /*
279 * Fix the on-disk inode values 353 * Fix the on-disk inode values
280 */ 354 */
281 tmp = (__uint64_t)ip->i_d.di_nblocks; 355 tmp = (__uint64_t)ip->i_d.di_nblocks;
diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c
index fa402a6bbbcf..155e798f30a1 100644
--- a/fs/xfs/xfs_iget.c
+++ b/fs/xfs/xfs_iget.c
@@ -73,7 +73,6 @@ xfs_inode_alloc(
73 ASSERT(atomic_read(&ip->i_pincount) == 0); 73 ASSERT(atomic_read(&ip->i_pincount) == 0);
74 ASSERT(!spin_is_locked(&ip->i_flags_lock)); 74 ASSERT(!spin_is_locked(&ip->i_flags_lock));
75 ASSERT(completion_done(&ip->i_flush)); 75 ASSERT(completion_done(&ip->i_flush));
76 ASSERT(!rwsem_is_locked(&ip->i_iolock.mr_lock));
77 76
78 mrlock_init(&ip->i_iolock, MRLOCK_BARRIER, "xfsio", ip->i_ino); 77 mrlock_init(&ip->i_iolock, MRLOCK_BARRIER, "xfsio", ip->i_ino);
79 78
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c
index ce278b3ae7fc..ef77fd88c8e3 100644
--- a/fs/xfs/xfs_inode.c
+++ b/fs/xfs/xfs_inode.c
@@ -2841,8 +2841,8 @@ xfs_iflush(
2841 mp = ip->i_mount; 2841 mp = ip->i_mount;
2842 2842
2843 /* 2843 /*
2844 * If the inode isn't dirty, then just release the inode 2844 * If the inode isn't dirty, then just release the inode flush lock and
2845 * flush lock and do nothing. 2845 * do nothing.
2846 */ 2846 */
2847 if (xfs_inode_clean(ip)) { 2847 if (xfs_inode_clean(ip)) {
2848 xfs_ifunlock(ip); 2848 xfs_ifunlock(ip);
@@ -2868,6 +2868,19 @@ xfs_iflush(
2868 xfs_iunpin_wait(ip); 2868 xfs_iunpin_wait(ip);
2869 2869
2870 /* 2870 /*
2871 * For stale inodes we cannot rely on the backing buffer remaining
2872 * stale in cache for the remaining life of the stale inode and so
2873 * xfs_itobp() below may give us a buffer that no longer contains
2874 * inodes below. We have to check this after ensuring the inode is
2875 * unpinned so that it is safe to reclaim the stale inode after the
2876 * flush call.
2877 */
2878 if (xfs_iflags_test(ip, XFS_ISTALE)) {
2879 xfs_ifunlock(ip);
2880 return 0;
2881 }
2882
2883 /*
2871 * This may have been unpinned because the filesystem is shutting 2884 * This may have been unpinned because the filesystem is shutting
2872 * down forcibly. If that's the case we must not write this inode 2885 * down forcibly. If that's the case we must not write this inode
2873 * to disk, because the log record didn't make it to disk! 2886 * to disk, because the log record didn't make it to disk!
diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c
index 9e15a1185362..6be05f756d59 100644
--- a/fs/xfs/xfs_rtalloc.c
+++ b/fs/xfs/xfs_rtalloc.c
@@ -1517,6 +1517,8 @@ xfs_rtfree_range(
1517 */ 1517 */
1518 error = xfs_rtfind_forw(mp, tp, end, mp->m_sb.sb_rextents - 1, 1518 error = xfs_rtfind_forw(mp, tp, end, mp->m_sb.sb_rextents - 1,
1519 &postblock); 1519 &postblock);
1520 if (error)
1521 return error;
1520 /* 1522 /*
1521 * If there are blocks not being freed at the front of the 1523 * If there are blocks not being freed at the front of the
1522 * old extent, add summary data for them to be allocated. 1524 * old extent, add summary data for them to be allocated.
diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c
index 6558ffd8d140..6f268756bf36 100644
--- a/fs/xfs/xfs_vnodeops.c
+++ b/fs/xfs/xfs_vnodeops.c
@@ -70,7 +70,6 @@ xfs_setattr(
70 uint commit_flags=0; 70 uint commit_flags=0;
71 uid_t uid=0, iuid=0; 71 uid_t uid=0, iuid=0;
72 gid_t gid=0, igid=0; 72 gid_t gid=0, igid=0;
73 int timeflags = 0;
74 struct xfs_dquot *udqp, *gdqp, *olddquot1, *olddquot2; 73 struct xfs_dquot *udqp, *gdqp, *olddquot1, *olddquot2;
75 int need_iolock = 1; 74 int need_iolock = 1;
76 75
@@ -135,16 +134,13 @@ xfs_setattr(
135 if (flags & XFS_ATTR_NOLOCK) 134 if (flags & XFS_ATTR_NOLOCK)
136 need_iolock = 0; 135 need_iolock = 0;
137 if (!(mask & ATTR_SIZE)) { 136 if (!(mask & ATTR_SIZE)) {
138 if ((mask != (ATTR_CTIME|ATTR_ATIME|ATTR_MTIME)) || 137 tp = xfs_trans_alloc(mp, XFS_TRANS_SETATTR_NOT_SIZE);
139 (mp->m_flags & XFS_MOUNT_WSYNC)) { 138 commit_flags = 0;
140 tp = xfs_trans_alloc(mp, XFS_TRANS_SETATTR_NOT_SIZE); 139 code = xfs_trans_reserve(tp, 0, XFS_ICHANGE_LOG_RES(mp),
141 commit_flags = 0; 140 0, 0, 0);
142 if ((code = xfs_trans_reserve(tp, 0, 141 if (code) {
143 XFS_ICHANGE_LOG_RES(mp), 0, 142 lock_flags = 0;
144 0, 0))) { 143 goto error_return;
145 lock_flags = 0;
146 goto error_return;
147 }
148 } 144 }
149 } else { 145 } else {
150 if (DM_EVENT_ENABLED(ip, DM_EVENT_TRUNCATE) && 146 if (DM_EVENT_ENABLED(ip, DM_EVENT_TRUNCATE) &&
@@ -295,15 +291,23 @@ xfs_setattr(
295 * or we are explicitly asked to change it. This handles 291 * or we are explicitly asked to change it. This handles
296 * the semantic difference between truncate() and ftruncate() 292 * the semantic difference between truncate() and ftruncate()
297 * as implemented in the VFS. 293 * as implemented in the VFS.
294 *
295 * The regular truncate() case without ATTR_CTIME and ATTR_MTIME
296 * is a special case where we need to update the times despite
297 * not having these flags set. For all other operations the
298 * VFS set these flags explicitly if it wants a timestamp
299 * update.
298 */ 300 */
299 if (iattr->ia_size != ip->i_size || (mask & ATTR_CTIME)) 301 if (iattr->ia_size != ip->i_size &&
300 timeflags |= XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG; 302 (!(mask & (ATTR_CTIME | ATTR_MTIME)))) {
303 iattr->ia_ctime = iattr->ia_mtime =
304 current_fs_time(inode->i_sb);
305 mask |= ATTR_CTIME | ATTR_MTIME;
306 }
301 307
302 if (iattr->ia_size > ip->i_size) { 308 if (iattr->ia_size > ip->i_size) {
303 ip->i_d.di_size = iattr->ia_size; 309 ip->i_d.di_size = iattr->ia_size;
304 ip->i_size = iattr->ia_size; 310 ip->i_size = iattr->ia_size;
305 if (!(flags & XFS_ATTR_DMI))
306 xfs_ichgtime(ip, XFS_ICHGTIME_CHG);
307 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); 311 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
308 } else if (iattr->ia_size <= ip->i_size || 312 } else if (iattr->ia_size <= ip->i_size ||
309 (iattr->ia_size == 0 && ip->i_d.di_nextents)) { 313 (iattr->ia_size == 0 && ip->i_d.di_nextents)) {
@@ -374,9 +378,6 @@ xfs_setattr(
374 ip->i_d.di_gid = gid; 378 ip->i_d.di_gid = gid;
375 inode->i_gid = gid; 379 inode->i_gid = gid;
376 } 380 }
377
378 xfs_trans_log_inode (tp, ip, XFS_ILOG_CORE);
379 timeflags |= XFS_ICHGTIME_CHG;
380 } 381 }
381 382
382 /* 383 /*
@@ -393,51 +394,37 @@ xfs_setattr(
393 394
394 inode->i_mode &= S_IFMT; 395 inode->i_mode &= S_IFMT;
395 inode->i_mode |= mode & ~S_IFMT; 396 inode->i_mode |= mode & ~S_IFMT;
396
397 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
398 timeflags |= XFS_ICHGTIME_CHG;
399 } 397 }
400 398
401 /* 399 /*
402 * Change file access or modified times. 400 * Change file access or modified times.
403 */ 401 */
404 if (mask & (ATTR_ATIME|ATTR_MTIME)) { 402 if (mask & ATTR_ATIME) {
405 if (mask & ATTR_ATIME) { 403 inode->i_atime = iattr->ia_atime;
406 inode->i_atime = iattr->ia_atime; 404 ip->i_d.di_atime.t_sec = iattr->ia_atime.tv_sec;
407 ip->i_d.di_atime.t_sec = iattr->ia_atime.tv_sec; 405 ip->i_d.di_atime.t_nsec = iattr->ia_atime.tv_nsec;
408 ip->i_d.di_atime.t_nsec = iattr->ia_atime.tv_nsec; 406 ip->i_update_core = 1;
409 ip->i_update_core = 1;
410 }
411 if (mask & ATTR_MTIME) {
412 inode->i_mtime = iattr->ia_mtime;
413 ip->i_d.di_mtime.t_sec = iattr->ia_mtime.tv_sec;
414 ip->i_d.di_mtime.t_nsec = iattr->ia_mtime.tv_nsec;
415 timeflags &= ~XFS_ICHGTIME_MOD;
416 timeflags |= XFS_ICHGTIME_CHG;
417 }
418 if (tp && (mask & (ATTR_MTIME_SET|ATTR_ATIME_SET)))
419 xfs_trans_log_inode (tp, ip, XFS_ILOG_CORE);
420 } 407 }
421 408 if (mask & ATTR_CTIME) {
422 /*
423 * Change file inode change time only if ATTR_CTIME set
424 * AND we have been called by a DMI function.
425 */
426
427 if ((flags & XFS_ATTR_DMI) && (mask & ATTR_CTIME)) {
428 inode->i_ctime = iattr->ia_ctime; 409 inode->i_ctime = iattr->ia_ctime;
429 ip->i_d.di_ctime.t_sec = iattr->ia_ctime.tv_sec; 410 ip->i_d.di_ctime.t_sec = iattr->ia_ctime.tv_sec;
430 ip->i_d.di_ctime.t_nsec = iattr->ia_ctime.tv_nsec; 411 ip->i_d.di_ctime.t_nsec = iattr->ia_ctime.tv_nsec;
431 ip->i_update_core = 1; 412 ip->i_update_core = 1;
432 timeflags &= ~XFS_ICHGTIME_CHG; 413 }
414 if (mask & ATTR_MTIME) {
415 inode->i_mtime = iattr->ia_mtime;
416 ip->i_d.di_mtime.t_sec = iattr->ia_mtime.tv_sec;
417 ip->i_d.di_mtime.t_nsec = iattr->ia_mtime.tv_nsec;
418 ip->i_update_core = 1;
433 } 419 }
434 420
435 /* 421 /*
436 * Send out timestamp changes that need to be set to the 422 * And finally, log the inode core if any attribute in it
437 * current time. Not done when called by a DMI function. 423 * has been changed.
438 */ 424 */
439 if (timeflags && !(flags & XFS_ATTR_DMI)) 425 if (mask & (ATTR_UID|ATTR_GID|ATTR_MODE|
440 xfs_ichgtime(ip, timeflags); 426 ATTR_ATIME|ATTR_CTIME|ATTR_MTIME))
427 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
441 428
442 XFS_STATS_INC(xs_ig_attrchg); 429 XFS_STATS_INC(xs_ig_attrchg);
443 430
@@ -452,12 +439,10 @@ xfs_setattr(
452 * mix so this probably isn't worth the trouble to optimize. 439 * mix so this probably isn't worth the trouble to optimize.
453 */ 440 */
454 code = 0; 441 code = 0;
455 if (tp) { 442 if (mp->m_flags & XFS_MOUNT_WSYNC)
456 if (mp->m_flags & XFS_MOUNT_WSYNC) 443 xfs_trans_set_sync(tp);
457 xfs_trans_set_sync(tp);
458 444
459 code = xfs_trans_commit(tp, commit_flags); 445 code = xfs_trans_commit(tp, commit_flags);
460 }
461 446
462 xfs_iunlock(ip, lock_flags); 447 xfs_iunlock(ip, lock_flags);
463 448
diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h
index 9d7febde10a1..09469971472f 100644
--- a/include/acpi/platform/aclinux.h
+++ b/include/acpi/platform/aclinux.h
@@ -152,7 +152,7 @@ static inline void *acpi_os_acquire_object(acpi_cache_t * cache)
152#include <linux/hardirq.h> 152#include <linux/hardirq.h>
153#define ACPI_PREEMPTION_POINT() \ 153#define ACPI_PREEMPTION_POINT() \
154 do { \ 154 do { \
155 if (!in_atomic_preempt_off()) \ 155 if (!in_atomic_preempt_off() && !irqs_disabled()) \
156 cond_resched(); \ 156 cond_resched(); \
157 } while (0) 157 } while (0)
158 158
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 71dafb69cfeb..ffac157fb5b2 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -1408,7 +1408,7 @@ extern int drm_ati_pcigart_cleanup(struct drm_device *dev,
1408 struct drm_ati_pcigart_info * gart_info); 1408 struct drm_ati_pcigart_info * gart_info);
1409 1409
1410extern drm_dma_handle_t *drm_pci_alloc(struct drm_device *dev, size_t size, 1410extern drm_dma_handle_t *drm_pci_alloc(struct drm_device *dev, size_t size,
1411 size_t align, dma_addr_t maxaddr); 1411 size_t align);
1412extern void __drm_pci_free(struct drm_device *dev, drm_dma_handle_t * dmah); 1412extern void __drm_pci_free(struct drm_device *dev, drm_dma_handle_t * dmah);
1413extern void drm_pci_free(struct drm_device *dev, drm_dma_handle_t * dmah); 1413extern void drm_pci_free(struct drm_device *dev, drm_dma_handle_t * dmah);
1414 1414
diff --git a/include/drm/drm_mode.h b/include/drm/drm_mode.h
index 43009bc2e757..c5ba1636613c 100644
--- a/include/drm/drm_mode.h
+++ b/include/drm/drm_mode.h
@@ -85,7 +85,7 @@ struct drm_mode_modeinfo {
85 __u16 hdisplay, hsync_start, hsync_end, htotal, hskew; 85 __u16 hdisplay, hsync_start, hsync_end, htotal, hskew;
86 __u16 vdisplay, vsync_start, vsync_end, vtotal, vscan; 86 __u16 vdisplay, vsync_start, vsync_end, vtotal, vscan;
87 87
88 __u32 vrefresh; /* vertical refresh * 1000 */ 88 __u32 vrefresh;
89 89
90 __u32 flags; 90 __u32 flags;
91 __u32 type; 91 __u32 type;
@@ -160,6 +160,7 @@ struct drm_mode_get_encoder {
160#define DRM_MODE_CONNECTOR_HDMIA 11 160#define DRM_MODE_CONNECTOR_HDMIA 11
161#define DRM_MODE_CONNECTOR_HDMIB 12 161#define DRM_MODE_CONNECTOR_HDMIB 12
162#define DRM_MODE_CONNECTOR_TV 13 162#define DRM_MODE_CONNECTOR_TV 13
163#define DRM_MODE_CONNECTOR_eDP 14
163 164
164struct drm_mode_get_connector { 165struct drm_mode_get_connector {
165 166
diff --git a/include/drm/i915_drm.h b/include/drm/i915_drm.h
index ec3f5e80a5df..b64a8d7cdf6d 100644
--- a/include/drm/i915_drm.h
+++ b/include/drm/i915_drm.h
@@ -188,6 +188,7 @@ typedef struct _drm_i915_sarea {
188#define DRM_I915_GEM_MADVISE 0x26 188#define DRM_I915_GEM_MADVISE 0x26
189#define DRM_I915_OVERLAY_PUT_IMAGE 0x27 189#define DRM_I915_OVERLAY_PUT_IMAGE 0x27
190#define DRM_I915_OVERLAY_ATTRS 0x28 190#define DRM_I915_OVERLAY_ATTRS 0x28
191#define DRM_I915_GEM_EXECBUFFER2 0x29
191 192
192#define DRM_IOCTL_I915_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t) 193#define DRM_IOCTL_I915_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t)
193#define DRM_IOCTL_I915_FLUSH DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH) 194#define DRM_IOCTL_I915_FLUSH DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH)
@@ -207,6 +208,7 @@ typedef struct _drm_i915_sarea {
207#define DRM_IOCTL_I915_VBLANK_SWAP DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_VBLANK_SWAP, drm_i915_vblank_swap_t) 208#define DRM_IOCTL_I915_VBLANK_SWAP DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_VBLANK_SWAP, drm_i915_vblank_swap_t)
208#define DRM_IOCTL_I915_GEM_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_INIT, struct drm_i915_gem_init) 209#define DRM_IOCTL_I915_GEM_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_INIT, struct drm_i915_gem_init)
209#define DRM_IOCTL_I915_GEM_EXECBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER, struct drm_i915_gem_execbuffer) 210#define DRM_IOCTL_I915_GEM_EXECBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER, struct drm_i915_gem_execbuffer)
211#define DRM_IOCTL_I915_GEM_EXECBUFFER2 DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER2, struct drm_i915_gem_execbuffer2)
210#define DRM_IOCTL_I915_GEM_PIN DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_PIN, struct drm_i915_gem_pin) 212#define DRM_IOCTL_I915_GEM_PIN DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_PIN, struct drm_i915_gem_pin)
211#define DRM_IOCTL_I915_GEM_UNPIN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_UNPIN, struct drm_i915_gem_unpin) 213#define DRM_IOCTL_I915_GEM_UNPIN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_UNPIN, struct drm_i915_gem_unpin)
212#define DRM_IOCTL_I915_GEM_BUSY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_BUSY, struct drm_i915_gem_busy) 214#define DRM_IOCTL_I915_GEM_BUSY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_BUSY, struct drm_i915_gem_busy)
@@ -272,6 +274,7 @@ typedef struct drm_i915_irq_wait {
272#define I915_PARAM_NUM_FENCES_AVAIL 6 274#define I915_PARAM_NUM_FENCES_AVAIL 6
273#define I915_PARAM_HAS_OVERLAY 7 275#define I915_PARAM_HAS_OVERLAY 7
274#define I915_PARAM_HAS_PAGEFLIPPING 8 276#define I915_PARAM_HAS_PAGEFLIPPING 8
277#define I915_PARAM_HAS_EXECBUF2 9
275 278
276typedef struct drm_i915_getparam { 279typedef struct drm_i915_getparam {
277 int param; 280 int param;
@@ -567,6 +570,57 @@ struct drm_i915_gem_execbuffer {
567 __u64 cliprects_ptr; 570 __u64 cliprects_ptr;
568}; 571};
569 572
573struct drm_i915_gem_exec_object2 {
574 /**
575 * User's handle for a buffer to be bound into the GTT for this
576 * operation.
577 */
578 __u32 handle;
579
580 /** Number of relocations to be performed on this buffer */
581 __u32 relocation_count;
582 /**
583 * Pointer to array of struct drm_i915_gem_relocation_entry containing
584 * the relocations to be performed in this buffer.
585 */
586 __u64 relocs_ptr;
587
588 /** Required alignment in graphics aperture */
589 __u64 alignment;
590
591 /**
592 * Returned value of the updated offset of the object, for future
593 * presumed_offset writes.
594 */
595 __u64 offset;
596
597#define EXEC_OBJECT_NEEDS_FENCE (1<<0)
598 __u64 flags;
599 __u64 rsvd1;
600 __u64 rsvd2;
601};
602
603struct drm_i915_gem_execbuffer2 {
604 /**
605 * List of gem_exec_object2 structs
606 */
607 __u64 buffers_ptr;
608 __u32 buffer_count;
609
610 /** Offset in the batchbuffer to start execution from. */
611 __u32 batch_start_offset;
612 /** Bytes used in batchbuffer from batch_start_offset */
613 __u32 batch_len;
614 __u32 DR1;
615 __u32 DR4;
616 __u32 num_cliprects;
617 /** This is a struct drm_clip_rect *cliprects */
618 __u64 cliprects_ptr;
619 __u64 flags; /* currently unused */
620 __u64 rsvd1;
621 __u64 rsvd2;
622};
623
570struct drm_i915_gem_pin { 624struct drm_i915_gem_pin {
571 /** Handle of the buffer to be pinned. */ 625 /** Handle of the buffer to be pinned. */
572 __u32 handle; 626 __u32 handle;
diff --git a/include/drm/nouveau_drm.h b/include/drm/nouveau_drm.h
index 1e67c441ea82..f745948b61e4 100644
--- a/include/drm/nouveau_drm.h
+++ b/include/drm/nouveau_drm.h
@@ -77,6 +77,7 @@ struct drm_nouveau_gpuobj_free {
77#define NOUVEAU_GETPARAM_PCI_PHYSICAL 10 77#define NOUVEAU_GETPARAM_PCI_PHYSICAL 10
78#define NOUVEAU_GETPARAM_CHIPSET_ID 11 78#define NOUVEAU_GETPARAM_CHIPSET_ID 11
79#define NOUVEAU_GETPARAM_VM_VRAM_BASE 12 79#define NOUVEAU_GETPARAM_VM_VRAM_BASE 12
80#define NOUVEAU_GETPARAM_GRAPH_UNITS 13
80struct drm_nouveau_getparam { 81struct drm_nouveau_getparam {
81 uint64_t param; 82 uint64_t param;
82 uint64_t value; 83 uint64_t value;
diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h
index ff7664e0c3cd..4c4e0f8375b3 100644
--- a/include/drm/ttm/ttm_bo_driver.h
+++ b/include/drm/ttm/ttm_bo_driver.h
@@ -353,6 +353,11 @@ struct ttm_bo_driver {
353 /* notify the driver we are taking a fault on this BO 353 /* notify the driver we are taking a fault on this BO
354 * and have reserved it */ 354 * and have reserved it */
355 void (*fault_reserve_notify)(struct ttm_buffer_object *bo); 355 void (*fault_reserve_notify)(struct ttm_buffer_object *bo);
356
357 /**
358 * notify the driver that we're about to swap out this bo
359 */
360 void (*swap_notify) (struct ttm_buffer_object *bo);
356}; 361};
357 362
358/** 363/**
diff --git a/include/drm/vmwgfx_drm.h b/include/drm/vmwgfx_drm.h
index 2be7e1249b6f..c7645f480d12 100644
--- a/include/drm/vmwgfx_drm.h
+++ b/include/drm/vmwgfx_drm.h
@@ -68,7 +68,8 @@
68#define DRM_VMW_PARAM_NUM_FREE_STREAMS 1 68#define DRM_VMW_PARAM_NUM_FREE_STREAMS 1
69#define DRM_VMW_PARAM_3D 2 69#define DRM_VMW_PARAM_3D 2
70#define DRM_VMW_PARAM_FIFO_OFFSET 3 70#define DRM_VMW_PARAM_FIFO_OFFSET 3
71 71#define DRM_VMW_PARAM_HW_CAPS 4
72#define DRM_VMW_PARAM_FIFO_CAPS 5
72 73
73/** 74/**
74 * struct drm_vmw_getparam_arg 75 * struct drm_vmw_getparam_arg
@@ -181,6 +182,8 @@ struct drm_vmw_context_arg {
181 * The size of the array should equal the total number of mipmap levels. 182 * The size of the array should equal the total number of mipmap levels.
182 * @shareable: Boolean whether other clients (as identified by file descriptors) 183 * @shareable: Boolean whether other clients (as identified by file descriptors)
183 * may reference this surface. 184 * may reference this surface.
185 * @scanout: Boolean whether the surface is intended to be used as a
186 * scanout.
184 * 187 *
185 * Input data to the DRM_VMW_CREATE_SURFACE Ioctl. 188 * Input data to the DRM_VMW_CREATE_SURFACE Ioctl.
186 * Output data from the DRM_VMW_REF_SURFACE Ioctl. 189 * Output data from the DRM_VMW_REF_SURFACE Ioctl.
@@ -192,7 +195,7 @@ struct drm_vmw_surface_create_req {
192 uint32_t mip_levels[DRM_VMW_MAX_SURFACE_FACES]; 195 uint32_t mip_levels[DRM_VMW_MAX_SURFACE_FACES];
193 uint64_t size_addr; 196 uint64_t size_addr;
194 int32_t shareable; 197 int32_t shareable;
195 uint32_t pad64; 198 int32_t scanout;
196}; 199};
197 200
198/** 201/**
@@ -295,17 +298,28 @@ union drm_vmw_surface_reference_arg {
295 * 298 *
296 * @commands: User-space address of a command buffer cast to an uint64_t. 299 * @commands: User-space address of a command buffer cast to an uint64_t.
297 * @command-size: Size in bytes of the command buffer. 300 * @command-size: Size in bytes of the command buffer.
301 * @throttle-us: Sleep until software is less than @throttle_us
302 * microseconds ahead of hardware. The driver may round this value
303 * to the nearest kernel tick.
298 * @fence_rep: User-space address of a struct drm_vmw_fence_rep cast to an 304 * @fence_rep: User-space address of a struct drm_vmw_fence_rep cast to an
299 * uint64_t. 305 * uint64_t.
306 * @version: Allows expanding the execbuf ioctl parameters without breaking
307 * backwards compatibility, since user-space will always tell the kernel
308 * which version it uses.
309 * @flags: Execbuf flags. None currently.
300 * 310 *
301 * Argument to the DRM_VMW_EXECBUF Ioctl. 311 * Argument to the DRM_VMW_EXECBUF Ioctl.
302 */ 312 */
303 313
314#define DRM_VMW_EXECBUF_VERSION 0
315
304struct drm_vmw_execbuf_arg { 316struct drm_vmw_execbuf_arg {
305 uint64_t commands; 317 uint64_t commands;
306 uint32_t command_size; 318 uint32_t command_size;
307 uint32_t pad64; 319 uint32_t throttle_us;
308 uint64_t fence_rep; 320 uint64_t fence_rep;
321 uint32_t version;
322 uint32_t flags;
309}; 323};
310 324
311/** 325/**
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index ce945d4845fc..b926afe8c03e 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -80,7 +80,7 @@ char * __acpi_map_table (unsigned long phys_addr, unsigned long size);
80void __acpi_unmap_table(char *map, unsigned long size); 80void __acpi_unmap_table(char *map, unsigned long size);
81int early_acpi_boot_init(void); 81int early_acpi_boot_init(void);
82int acpi_boot_init (void); 82int acpi_boot_init (void);
83int acpi_boot_table_init (void); 83void acpi_boot_table_init (void);
84int acpi_mps_check (void); 84int acpi_mps_check (void);
85int acpi_numa_init (void); 85int acpi_numa_init (void);
86 86
@@ -251,6 +251,7 @@ int acpi_check_mem_region(resource_size_t start, resource_size_t n,
251void __init acpi_no_s4_hw_signature(void); 251void __init acpi_no_s4_hw_signature(void);
252void __init acpi_old_suspend_ordering(void); 252void __init acpi_old_suspend_ordering(void);
253void __init acpi_s4_no_nvs(void); 253void __init acpi_s4_no_nvs(void);
254void __init acpi_set_sci_en_on_resume(void);
254#endif /* CONFIG_PM_SLEEP */ 255#endif /* CONFIG_PM_SLEEP */
255 256
256struct acpi_osc_context { 257struct acpi_osc_context {
@@ -320,9 +321,9 @@ static inline int acpi_boot_init(void)
320 return 0; 321 return 0;
321} 322}
322 323
323static inline int acpi_boot_table_init(void) 324static inline void acpi_boot_table_init(void)
324{ 325{
325 return 0; 326 return;
326} 327}
327 328
328static inline int acpi_mps_check(void) 329static inline int acpi_mps_check(void)
diff --git a/include/linux/amba/bus.h b/include/linux/amba/bus.h
index ab94335b4bb9..6816be6c3f77 100644
--- a/include/linux/amba/bus.h
+++ b/include/linux/amba/bus.h
@@ -1,5 +1,9 @@
1/* 1/*
2 * linux/include/asm-arm/hardware/amba.h 2 * linux/include/amba/bus.h
3 *
4 * This device type deals with ARM PrimeCells and anything else that
5 * presents a proper CID (0xB105F00D) at the end of the I/O register
6 * region or that is derived from a PrimeCell.
3 * 7 *
4 * Copyright (C) 2003 Deep Blue Solutions Ltd, All Rights Reserved. 8 * Copyright (C) 2003 Deep Blue Solutions Ltd, All Rights Reserved.
5 * 9 *
diff --git a/include/linux/ata.h b/include/linux/ata.h
index 38a6948ce0c2..20f31567ccee 100644
--- a/include/linux/ata.h
+++ b/include/linux/ata.h
@@ -647,9 +647,9 @@ static inline int ata_id_has_large_logical_sectors(const u16 *id)
647 return id[ATA_ID_SECTOR_SIZE] & (1 << 13); 647 return id[ATA_ID_SECTOR_SIZE] & (1 << 13);
648} 648}
649 649
650static inline u8 ata_id_logical_per_physical_sectors(const u16 *id) 650static inline u16 ata_id_logical_per_physical_sectors(const u16 *id)
651{ 651{
652 return id[ATA_ID_SECTOR_SIZE] & 0xf; 652 return 1 << (id[ATA_ID_SECTOR_SIZE] & 0xf);
653} 653}
654 654
655static inline int ata_id_has_lba48(const u16 *id) 655static inline int ata_id_has_lba48(const u16 *id)
diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h
index cd4349bdc34e..89c6249fc561 100644
--- a/include/linux/binfmts.h
+++ b/include/linux/binfmts.h
@@ -109,6 +109,7 @@ extern int prepare_binprm(struct linux_binprm *);
109extern int __must_check remove_arg_zero(struct linux_binprm *); 109extern int __must_check remove_arg_zero(struct linux_binprm *);
110extern int search_binary_handler(struct linux_binprm *,struct pt_regs *); 110extern int search_binary_handler(struct linux_binprm *,struct pt_regs *);
111extern int flush_old_exec(struct linux_binprm * bprm); 111extern int flush_old_exec(struct linux_binprm * bprm);
112extern void setup_new_exec(struct linux_binprm * bprm);
112 113
113extern int suid_dumpable; 114extern int suid_dumpable;
114#define SUID_DUMP_DISABLE 0 /* No setuid dumping */ 115#define SUID_DUMP_DISABLE 0 /* No setuid dumping */
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 784a919aa0d0..1896e868854f 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -461,8 +461,7 @@ struct request_queue
461#define QUEUE_FLAG_NONROT 14 /* non-rotational device (SSD) */ 461#define QUEUE_FLAG_NONROT 14 /* non-rotational device (SSD) */
462#define QUEUE_FLAG_VIRT QUEUE_FLAG_NONROT /* paravirt device */ 462#define QUEUE_FLAG_VIRT QUEUE_FLAG_NONROT /* paravirt device */
463#define QUEUE_FLAG_IO_STAT 15 /* do IO stats */ 463#define QUEUE_FLAG_IO_STAT 15 /* do IO stats */
464#define QUEUE_FLAG_CQ 16 /* hardware does queuing */ 464#define QUEUE_FLAG_DISCARD 16 /* supports DISCARD */
465#define QUEUE_FLAG_DISCARD 17 /* supports DISCARD */
466 465
467#define QUEUE_FLAG_DEFAULT ((1 << QUEUE_FLAG_IO_STAT) | \ 466#define QUEUE_FLAG_DEFAULT ((1 << QUEUE_FLAG_IO_STAT) | \
468 (1 << QUEUE_FLAG_CLUSTER) | \ 467 (1 << QUEUE_FLAG_CLUSTER) | \
@@ -586,7 +585,6 @@ enum {
586 585
587#define blk_queue_plugged(q) test_bit(QUEUE_FLAG_PLUGGED, &(q)->queue_flags) 586#define blk_queue_plugged(q) test_bit(QUEUE_FLAG_PLUGGED, &(q)->queue_flags)
588#define blk_queue_tagged(q) test_bit(QUEUE_FLAG_QUEUED, &(q)->queue_flags) 587#define blk_queue_tagged(q) test_bit(QUEUE_FLAG_QUEUED, &(q)->queue_flags)
589#define blk_queue_queuing(q) test_bit(QUEUE_FLAG_CQ, &(q)->queue_flags)
590#define blk_queue_stopped(q) test_bit(QUEUE_FLAG_STOPPED, &(q)->queue_flags) 588#define blk_queue_stopped(q) test_bit(QUEUE_FLAG_STOPPED, &(q)->queue_flags)
591#define blk_queue_nomerges(q) test_bit(QUEUE_FLAG_NOMERGES, &(q)->queue_flags) 589#define blk_queue_nomerges(q) test_bit(QUEUE_FLAG_NOMERGES, &(q)->queue_flags)
592#define blk_queue_nonrot(q) test_bit(QUEUE_FLAG_NONROT, &(q)->queue_flags) 590#define blk_queue_nonrot(q) test_bit(QUEUE_FLAG_NONROT, &(q)->queue_flags)
@@ -845,7 +843,6 @@ static inline struct request_queue *bdev_get_queue(struct block_device *bdev)
845 * blk_rq_err_bytes() : bytes left till the next error boundary 843 * blk_rq_err_bytes() : bytes left till the next error boundary
846 * blk_rq_sectors() : sectors left in the entire request 844 * blk_rq_sectors() : sectors left in the entire request
847 * blk_rq_cur_sectors() : sectors left in the current segment 845 * blk_rq_cur_sectors() : sectors left in the current segment
848 * blk_rq_err_sectors() : sectors left till the next error boundary
849 */ 846 */
850static inline sector_t blk_rq_pos(const struct request *rq) 847static inline sector_t blk_rq_pos(const struct request *rq)
851{ 848{
@@ -874,11 +871,6 @@ static inline unsigned int blk_rq_cur_sectors(const struct request *rq)
874 return blk_rq_cur_bytes(rq) >> 9; 871 return blk_rq_cur_bytes(rq) >> 9;
875} 872}
876 873
877static inline unsigned int blk_rq_err_sectors(const struct request *rq)
878{
879 return blk_rq_err_bytes(rq) >> 9;
880}
881
882/* 874/*
883 * Request issue related functions. 875 * Request issue related functions.
884 */ 876 */
@@ -944,6 +936,8 @@ extern void blk_queue_io_opt(struct request_queue *q, unsigned int opt);
944extern void blk_set_default_limits(struct queue_limits *lim); 936extern void blk_set_default_limits(struct queue_limits *lim);
945extern int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, 937extern int blk_stack_limits(struct queue_limits *t, struct queue_limits *b,
946 sector_t offset); 938 sector_t offset);
939extern int bdev_stack_limits(struct queue_limits *t, struct block_device *bdev,
940 sector_t offset);
947extern void disk_stack_limits(struct gendisk *disk, struct block_device *bdev, 941extern void disk_stack_limits(struct gendisk *disk, struct block_device *bdev,
948 sector_t offset); 942 sector_t offset);
949extern void blk_queue_stack_limits(struct request_queue *t, struct request_queue *b); 943extern void blk_queue_stack_limits(struct request_queue *t, struct request_queue *b);
@@ -1116,11 +1110,18 @@ static inline int queue_alignment_offset(struct request_queue *q)
1116 return q->limits.alignment_offset; 1110 return q->limits.alignment_offset;
1117} 1111}
1118 1112
1113static inline int queue_limit_alignment_offset(struct queue_limits *lim, sector_t offset)
1114{
1115 unsigned int granularity = max(lim->physical_block_size, lim->io_min);
1116
1117 offset &= granularity - 1;
1118 return (granularity + lim->alignment_offset - offset) & (granularity - 1);
1119}
1120
1119static inline int queue_sector_alignment_offset(struct request_queue *q, 1121static inline int queue_sector_alignment_offset(struct request_queue *q,
1120 sector_t sector) 1122 sector_t sector)
1121{ 1123{
1122 return ((sector << 9) - q->limits.alignment_offset) 1124 return queue_limit_alignment_offset(&q->limits, sector << 9);
1123 & (q->limits.io_min - 1);
1124} 1125}
1125 1126
1126static inline int bdev_alignment_offset(struct block_device *bdev) 1127static inline int bdev_alignment_offset(struct block_device *bdev)
@@ -1147,8 +1148,11 @@ static inline int queue_discard_alignment(struct request_queue *q)
1147static inline int queue_sector_discard_alignment(struct request_queue *q, 1148static inline int queue_sector_discard_alignment(struct request_queue *q,
1148 sector_t sector) 1149 sector_t sector)
1149{ 1150{
1150 return ((sector << 9) - q->limits.discard_alignment) 1151 struct queue_limits *lim = &q->limits;
1151 & (q->limits.discard_granularity - 1); 1152 unsigned int alignment = (sector << 9) & (lim->discard_granularity - 1);
1153
1154 return (lim->discard_granularity + lim->discard_alignment - alignment)
1155 & (lim->discard_granularity - 1);
1152} 1156}
1153 1157
1154static inline unsigned int queue_discard_zeroes_data(struct request_queue *q) 1158static inline unsigned int queue_discard_zeroes_data(struct request_queue *q)
diff --git a/include/linux/compiler.h b/include/linux/compiler.h
index 5be3dab4a695..188fcae10a99 100644
--- a/include/linux/compiler.h
+++ b/include/linux/compiler.h
@@ -15,6 +15,7 @@
15# define __acquire(x) __context__(x,1) 15# define __acquire(x) __context__(x,1)
16# define __release(x) __context__(x,-1) 16# define __release(x) __context__(x,-1)
17# define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0) 17# define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0)
18# define __percpu __attribute__((noderef, address_space(3)))
18extern void __chk_user_ptr(const volatile void __user *); 19extern void __chk_user_ptr(const volatile void __user *);
19extern void __chk_io_ptr(const volatile void __iomem *); 20extern void __chk_io_ptr(const volatile void __iomem *);
20#else 21#else
@@ -32,6 +33,7 @@ extern void __chk_io_ptr(const volatile void __iomem *);
32# define __acquire(x) (void)0 33# define __acquire(x) (void)0
33# define __release(x) (void)0 34# define __release(x) (void)0
34# define __cond_lock(x,c) (c) 35# define __cond_lock(x,c) (c)
36# define __percpu
35#endif 37#endif
36 38
37#ifdef __KERNEL__ 39#ifdef __KERNEL__
diff --git a/include/linux/connector.h b/include/linux/connector.h
index 72ba63eb83c5..3a779ffba60b 100644
--- a/include/linux/connector.h
+++ b/include/linux/connector.h
@@ -24,9 +24,6 @@
24 24
25#include <linux/types.h> 25#include <linux/types.h>
26 26
27#define CN_IDX_CONNECTOR 0xffffffff
28#define CN_VAL_CONNECTOR 0xffffffff
29
30/* 27/*
31 * Process Events connector unique ids -- used for message routing 28 * Process Events connector unique ids -- used for message routing
32 */ 29 */
@@ -75,30 +72,6 @@ struct cn_msg {
75 __u8 data[0]; 72 __u8 data[0];
76}; 73};
77 74
78/*
79 * Notify structure - requests notification about
80 * registering/unregistering idx/val in range [first, first+range].
81 */
82struct cn_notify_req {
83 __u32 first;
84 __u32 range;
85};
86
87/*
88 * Main notification control message
89 * *_notify_num - number of appropriate cn_notify_req structures after
90 * this struct.
91 * group - notification receiver's idx.
92 * len - total length of the attached data.
93 */
94struct cn_ctl_msg {
95 __u32 idx_notify_num;
96 __u32 val_notify_num;
97 __u32 group;
98 __u32 len;
99 __u8 data[0];
100};
101
102#ifdef __KERNEL__ 75#ifdef __KERNEL__
103 76
104#include <asm/atomic.h> 77#include <asm/atomic.h>
@@ -151,11 +124,6 @@ struct cn_callback_entry {
151 u32 seq, group; 124 u32 seq, group;
152}; 125};
153 126
154struct cn_ctl_entry {
155 struct list_head notify_entry;
156 struct cn_ctl_msg *msg;
157};
158
159struct cn_dev { 127struct cn_dev {
160 struct cb_id id; 128 struct cb_id id;
161 129
diff --git a/include/linux/decompress/unlzo.h b/include/linux/decompress/unlzo.h
new file mode 100644
index 000000000000..987229752519
--- /dev/null
+++ b/include/linux/decompress/unlzo.h
@@ -0,0 +1,10 @@
1#ifndef DECOMPRESS_UNLZO_H
2#define DECOMPRESS_UNLZO_H
3
4int unlzo(unsigned char *inbuf, int len,
5 int(*fill)(void*, unsigned int),
6 int(*flush)(void*, unsigned int),
7 unsigned char *output,
8 int *pos,
9 void(*error)(char *x));
10#endif
diff --git a/include/linux/drbd.h b/include/linux/drbd.h
index e84f4733cb55..78962272338a 100644
--- a/include/linux/drbd.h
+++ b/include/linux/drbd.h
@@ -53,7 +53,7 @@
53 53
54 54
55extern const char *drbd_buildtag(void); 55extern const char *drbd_buildtag(void);
56#define REL_VERSION "8.3.6" 56#define REL_VERSION "8.3.7"
57#define API_VERSION 88 57#define API_VERSION 88
58#define PRO_VERSION_MIN 86 58#define PRO_VERSION_MIN 86
59#define PRO_VERSION_MAX 91 59#define PRO_VERSION_MAX 91
diff --git a/include/linux/drbd_nl.h b/include/linux/drbd_nl.h
index db5721ad50d1..a4d82f895994 100644
--- a/include/linux/drbd_nl.h
+++ b/include/linux/drbd_nl.h
@@ -69,6 +69,7 @@ NL_PACKET(disconnect, 6, )
69 69
70NL_PACKET(resize, 7, 70NL_PACKET(resize, 7,
71 NL_INT64( 29, T_MAY_IGNORE, resize_size) 71 NL_INT64( 29, T_MAY_IGNORE, resize_size)
72 NL_BIT( 68, T_MAY_IGNORE, resize_force)
72) 73)
73 74
74NL_PACKET(syncer_conf, 8, 75NL_PACKET(syncer_conf, 8,
diff --git a/include/linux/eventfd.h b/include/linux/eventfd.h
index 94dd10366a78..91bb4f27238c 100644
--- a/include/linux/eventfd.h
+++ b/include/linux/eventfd.h
@@ -10,6 +10,7 @@
10 10
11#include <linux/fcntl.h> 11#include <linux/fcntl.h>
12#include <linux/file.h> 12#include <linux/file.h>
13#include <linux/wait.h>
13 14
14/* 15/*
15 * CAREFUL: Check include/asm-generic/fcntl.h when defining 16 * CAREFUL: Check include/asm-generic/fcntl.h when defining
@@ -34,6 +35,9 @@ struct file *eventfd_fget(int fd);
34struct eventfd_ctx *eventfd_ctx_fdget(int fd); 35struct eventfd_ctx *eventfd_ctx_fdget(int fd);
35struct eventfd_ctx *eventfd_ctx_fileget(struct file *file); 36struct eventfd_ctx *eventfd_ctx_fileget(struct file *file);
36int eventfd_signal(struct eventfd_ctx *ctx, int n); 37int eventfd_signal(struct eventfd_ctx *ctx, int n);
38ssize_t eventfd_ctx_read(struct eventfd_ctx *ctx, int no_wait, __u64 *cnt);
39int eventfd_ctx_remove_wait_queue(struct eventfd_ctx *ctx, wait_queue_t *wait,
40 __u64 *cnt);
37 41
38#else /* CONFIG_EVENTFD */ 42#else /* CONFIG_EVENTFD */
39 43
@@ -61,6 +65,18 @@ static inline void eventfd_ctx_put(struct eventfd_ctx *ctx)
61 65
62} 66}
63 67
68static inline ssize_t eventfd_ctx_read(struct eventfd_ctx *ctx, int no_wait,
69 __u64 *cnt)
70{
71 return -ENOSYS;
72}
73
74static inline int eventfd_ctx_remove_wait_queue(struct eventfd_ctx *ctx,
75 wait_queue_t *wait, __u64 *cnt)
76{
77 return -ENOSYS;
78}
79
64#endif 80#endif
65 81
66#endif /* _LINUX_EVENTFD_H */ 82#endif /* _LINUX_EVENTFD_H */
diff --git a/include/linux/firewire-cdev.h b/include/linux/firewire-cdev.h
index 1f716d9f714b..520ecf86cbb3 100644
--- a/include/linux/firewire-cdev.h
+++ b/include/linux/firewire-cdev.h
@@ -380,7 +380,7 @@ struct fw_cdev_initiate_bus_reset {
380 * @immediate: If non-zero, immediate key to insert before pointer 380 * @immediate: If non-zero, immediate key to insert before pointer
381 * @key: Upper 8 bits of root directory pointer 381 * @key: Upper 8 bits of root directory pointer
382 * @data: Userspace pointer to contents of descriptor block 382 * @data: Userspace pointer to contents of descriptor block
383 * @length: Length of descriptor block data, in bytes 383 * @length: Length of descriptor block data, in quadlets
384 * @handle: Handle to the descriptor, written by the kernel 384 * @handle: Handle to the descriptor, written by the kernel
385 * 385 *
386 * Add a descriptor block and optionally a preceding immediate key to the local 386 * Add a descriptor block and optionally a preceding immediate key to the local
@@ -394,6 +394,8 @@ struct fw_cdev_initiate_bus_reset {
394 * If not 0, the @immediate field specifies an immediate key which will be 394 * If not 0, the @immediate field specifies an immediate key which will be
395 * inserted before the root directory pointer. 395 * inserted before the root directory pointer.
396 * 396 *
397 * @immediate, @key, and @data array elements are CPU-endian quadlets.
398 *
397 * If successful, the kernel adds the descriptor and writes back a handle to the 399 * If successful, the kernel adds the descriptor and writes back a handle to the
398 * kernel-side object to be used for later removal of the descriptor block and 400 * kernel-side object to be used for later removal of the descriptor block and
399 * immediate key. 401 * immediate key.
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 9147ca88f253..ebb1cd5bc241 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -729,6 +729,7 @@ struct inode {
729 uid_t i_uid; 729 uid_t i_uid;
730 gid_t i_gid; 730 gid_t i_gid;
731 dev_t i_rdev; 731 dev_t i_rdev;
732 unsigned int i_blkbits;
732 u64 i_version; 733 u64 i_version;
733 loff_t i_size; 734 loff_t i_size;
734#ifdef __NEED_I_SIZE_ORDERED 735#ifdef __NEED_I_SIZE_ORDERED
@@ -738,7 +739,6 @@ struct inode {
738 struct timespec i_mtime; 739 struct timespec i_mtime;
739 struct timespec i_ctime; 740 struct timespec i_ctime;
740 blkcnt_t i_blocks; 741 blkcnt_t i_blocks;
741 unsigned int i_blkbits;
742 unsigned short i_bytes; 742 unsigned short i_bytes;
743 umode_t i_mode; 743 umode_t i_mode;
744 spinlock_t i_lock; /* i_blocks, i_bytes, maybe i_size */ 744 spinlock_t i_lock; /* i_blocks, i_bytes, maybe i_size */
@@ -2463,7 +2463,7 @@ int proc_nr_files(struct ctl_table *table, int write,
2463 2463
2464int __init get_filesystem_list(char *buf); 2464int __init get_filesystem_list(char *buf);
2465 2465
2466#define ACC_MODE(x) ("\000\004\002\006"[(x)&O_ACCMODE]) 2466#define ACC_MODE(x) ("\004\002\006\006"[(x)&O_ACCMODE])
2467#define OPEN_FMODE(flag) ((__force fmode_t)((flag + 1) & O_ACCMODE)) 2467#define OPEN_FMODE(flag) ((__force fmode_t)((flag + 1) & O_ACCMODE))
2468 2468
2469#endif /* __KERNEL__ */ 2469#endif /* __KERNEL__ */
diff --git a/include/linux/genhd.h b/include/linux/genhd.h
index c6c0c41af35f..9717081c75ad 100644
--- a/include/linux/genhd.h
+++ b/include/linux/genhd.h
@@ -256,9 +256,9 @@ extern struct hd_struct *disk_map_sector_rcu(struct gendisk *disk,
256#define part_stat_read(part, field) \ 256#define part_stat_read(part, field) \
257({ \ 257({ \
258 typeof((part)->dkstats->field) res = 0; \ 258 typeof((part)->dkstats->field) res = 0; \
259 int i; \ 259 unsigned int _cpu; \
260 for_each_possible_cpu(i) \ 260 for_each_possible_cpu(_cpu) \
261 res += per_cpu_ptr((part)->dkstats, i)->field; \ 261 res += per_cpu_ptr((part)->dkstats, _cpu)->field; \
262 res; \ 262 res; \
263}) 263})
264 264
diff --git a/include/linux/highmem.h b/include/linux/highmem.h
index 211ff4497269..ab2cc20e21a5 100644
--- a/include/linux/highmem.h
+++ b/include/linux/highmem.h
@@ -46,7 +46,7 @@ void kmap_flush_unused(void);
46 46
47static inline unsigned int nr_free_highpages(void) { return 0; } 47static inline unsigned int nr_free_highpages(void) { return 0; }
48 48
49#define totalhigh_pages 0 49#define totalhigh_pages 0UL
50 50
51#ifndef ARCH_HAS_KMAP 51#ifndef ARCH_HAS_KMAP
52static inline void *kmap(struct page *page) 52static inline void *kmap(struct page *page)
diff --git a/include/linux/hw_breakpoint.h b/include/linux/hw_breakpoint.h
index 41235c93e4e9..5977b724f7c6 100644
--- a/include/linux/hw_breakpoint.h
+++ b/include/linux/hw_breakpoint.h
@@ -44,7 +44,7 @@ static inline int hw_breakpoint_type(struct perf_event *bp)
44 return bp->attr.bp_type; 44 return bp->attr.bp_type;
45} 45}
46 46
47static inline int hw_breakpoint_len(struct perf_event *bp) 47static inline unsigned long hw_breakpoint_len(struct perf_event *bp)
48{ 48{
49 return bp->attr.bp_len; 49 return bp->attr.bp_len;
50} 50}
@@ -75,6 +75,8 @@ extern int __register_perf_hw_breakpoint(struct perf_event *bp);
75extern void unregister_hw_breakpoint(struct perf_event *bp); 75extern void unregister_hw_breakpoint(struct perf_event *bp);
76extern void unregister_wide_hw_breakpoint(struct perf_event **cpu_events); 76extern void unregister_wide_hw_breakpoint(struct perf_event **cpu_events);
77 77
78extern int dbg_reserve_bp_slot(struct perf_event *bp);
79extern int dbg_release_bp_slot(struct perf_event *bp);
78extern int reserve_bp_slot(struct perf_event *bp); 80extern int reserve_bp_slot(struct perf_event *bp);
79extern void release_bp_slot(struct perf_event *bp); 81extern void release_bp_slot(struct perf_event *bp);
80 82
diff --git a/include/linux/i2c/adp5588.h b/include/linux/i2c/adp5588.h
index fc5db826b48e..02c9af374741 100644
--- a/include/linux/i2c/adp5588.h
+++ b/include/linux/i2c/adp5588.h
@@ -89,4 +89,16 @@ struct adp5588_kpad_platform_data {
89 unsigned short unlock_key2; /* Unlock Key 2 */ 89 unsigned short unlock_key2; /* Unlock Key 2 */
90}; 90};
91 91
92struct adp5588_gpio_platform_data {
93 unsigned gpio_start; /* GPIO Chip base # */
94 unsigned pullup_dis_mask; /* Pull-Up Disable Mask */
95 int (*setup)(struct i2c_client *client,
96 int gpio, unsigned ngpio,
97 void *context);
98 int (*teardown)(struct i2c_client *client,
99 int gpio, unsigned ngpio,
100 void *context);
101 void *context;
102};
103
92#endif 104#endif
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h
index d9724a28c0c2..163c840437d6 100644
--- a/include/linux/ieee80211.h
+++ b/include/linux/ieee80211.h
@@ -832,7 +832,7 @@ struct ieee80211_ht_cap {
832#define IEEE80211_HT_CAP_DELAY_BA 0x0400 832#define IEEE80211_HT_CAP_DELAY_BA 0x0400
833#define IEEE80211_HT_CAP_MAX_AMSDU 0x0800 833#define IEEE80211_HT_CAP_MAX_AMSDU 0x0800
834#define IEEE80211_HT_CAP_DSSSCCK40 0x1000 834#define IEEE80211_HT_CAP_DSSSCCK40 0x1000
835#define IEEE80211_HT_CAP_PSMP_SUPPORT 0x2000 835#define IEEE80211_HT_CAP_RESERVED 0x2000
836#define IEEE80211_HT_CAP_40MHZ_INTOLERANT 0x4000 836#define IEEE80211_HT_CAP_40MHZ_INTOLERANT 0x4000
837#define IEEE80211_HT_CAP_LSIG_TXOP_PROT 0x8000 837#define IEEE80211_HT_CAP_LSIG_TXOP_PROT 0x8000
838 838
diff --git a/include/linux/ima.h b/include/linux/ima.h
index 99dc6d5cf7e5..975837e7d6c0 100644
--- a/include/linux/ima.h
+++ b/include/linux/ima.h
@@ -17,7 +17,7 @@ struct linux_binprm;
17extern int ima_bprm_check(struct linux_binprm *bprm); 17extern int ima_bprm_check(struct linux_binprm *bprm);
18extern int ima_inode_alloc(struct inode *inode); 18extern int ima_inode_alloc(struct inode *inode);
19extern void ima_inode_free(struct inode *inode); 19extern void ima_inode_free(struct inode *inode);
20extern int ima_path_check(struct path *path, int mask); 20extern int ima_file_check(struct file *file, int mask);
21extern void ima_file_free(struct file *file); 21extern void ima_file_free(struct file *file);
22extern int ima_file_mmap(struct file *file, unsigned long prot); 22extern int ima_file_mmap(struct file *file, unsigned long prot);
23extern void ima_counts_get(struct file *file); 23extern void ima_counts_get(struct file *file);
@@ -38,7 +38,7 @@ static inline void ima_inode_free(struct inode *inode)
38 return; 38 return;
39} 39}
40 40
41static inline int ima_path_check(struct path *path, int mask) 41static inline int ima_file_check(struct file *file, int mask)
42{ 42{
43 return 0; 43 return 0;
44} 44}
diff --git a/include/linux/inetdevice.h b/include/linux/inetdevice.h
index 699e85c01a4d..b2304929434e 100644
--- a/include/linux/inetdevice.h
+++ b/include/linux/inetdevice.h
@@ -81,6 +81,7 @@ static inline void ipv4_devconf_setall(struct in_device *in_dev)
81#define IN_DEV_FORWARD(in_dev) IN_DEV_CONF_GET((in_dev), FORWARDING) 81#define IN_DEV_FORWARD(in_dev) IN_DEV_CONF_GET((in_dev), FORWARDING)
82#define IN_DEV_MFORWARD(in_dev) IN_DEV_ANDCONF((in_dev), MC_FORWARDING) 82#define IN_DEV_MFORWARD(in_dev) IN_DEV_ANDCONF((in_dev), MC_FORWARDING)
83#define IN_DEV_RPFILTER(in_dev) IN_DEV_MAXCONF((in_dev), RP_FILTER) 83#define IN_DEV_RPFILTER(in_dev) IN_DEV_MAXCONF((in_dev), RP_FILTER)
84#define IN_DEV_SRC_VMARK(in_dev) IN_DEV_ORCONF((in_dev), SRC_VMARK)
84#define IN_DEV_SOURCE_ROUTE(in_dev) IN_DEV_ANDCONF((in_dev), \ 85#define IN_DEV_SOURCE_ROUTE(in_dev) IN_DEV_ANDCONF((in_dev), \
85 ACCEPT_SOURCE_ROUTE) 86 ACCEPT_SOURCE_ROUTE)
86#define IN_DEV_ACCEPT_LOCAL(in_dev) IN_DEV_ORCONF((in_dev), ACCEPT_LOCAL) 87#define IN_DEV_ACCEPT_LOCAL(in_dev) IN_DEV_ORCONF((in_dev), ACCEPT_LOCAL)
diff --git a/include/linux/input.h b/include/linux/input.h
index 7be8a6537b57..663208afb64c 100644
--- a/include/linux/input.h
+++ b/include/linux/input.h
@@ -376,6 +376,7 @@ struct input_absinfo {
376#define KEY_DISPLAY_OFF 245 /* display device to off state */ 376#define KEY_DISPLAY_OFF 245 /* display device to off state */
377 377
378#define KEY_WIMAX 246 378#define KEY_WIMAX 246
379#define KEY_RFKILL 247 /* Key that controls all radios */
379 380
380/* Range 248 - 255 is reserved for special needs of AT keyboard driver */ 381/* Range 248 - 255 is reserved for special needs of AT keyboard driver */
381 382
@@ -660,6 +661,7 @@ struct input_absinfo {
660#define ABS_MT_TOOL_TYPE 0x37 /* Type of touching device */ 661#define ABS_MT_TOOL_TYPE 0x37 /* Type of touching device */
661#define ABS_MT_BLOB_ID 0x38 /* Group a set of packets as a blob */ 662#define ABS_MT_BLOB_ID 0x38 /* Group a set of packets as a blob */
662#define ABS_MT_TRACKING_ID 0x39 /* Unique ID of initiated contact */ 663#define ABS_MT_TRACKING_ID 0x39 /* Unique ID of initiated contact */
664#define ABS_MT_PRESSURE 0x3a /* Pressure on contact area */
663 665
664#define ABS_MAX 0x3f 666#define ABS_MAX 0x3f
665#define ABS_CNT (ABS_MAX+1) 667#define ABS_CNT (ABS_MAX+1)
diff --git a/include/linux/iocontext.h b/include/linux/iocontext.h
index a63235996309..78ef023227d4 100644
--- a/include/linux/iocontext.h
+++ b/include/linux/iocontext.h
@@ -4,32 +4,6 @@
4#include <linux/radix-tree.h> 4#include <linux/radix-tree.h>
5#include <linux/rcupdate.h> 5#include <linux/rcupdate.h>
6 6
7/*
8 * This is the per-process anticipatory I/O scheduler state.
9 */
10struct as_io_context {
11 spinlock_t lock;
12
13 void (*dtor)(struct as_io_context *aic); /* destructor */
14 void (*exit)(struct as_io_context *aic); /* called on task exit */
15
16 unsigned long state;
17 atomic_t nr_queued; /* queued reads & sync writes */
18 atomic_t nr_dispatched; /* number of requests gone to the drivers */
19
20 /* IO History tracking */
21 /* Thinktime */
22 unsigned long last_end_request;
23 unsigned long ttime_total;
24 unsigned long ttime_samples;
25 unsigned long ttime_mean;
26 /* Layout pattern */
27 unsigned int seek_samples;
28 sector_t last_request_pos;
29 u64 seek_total;
30 sector_t seek_mean;
31};
32
33struct cfq_queue; 7struct cfq_queue;
34struct cfq_io_context { 8struct cfq_io_context {
35 void *key; 9 void *key;
@@ -78,7 +52,6 @@ struct io_context {
78 unsigned long last_waited; /* Time last woken after wait for request */ 52 unsigned long last_waited; /* Time last woken after wait for request */
79 int nr_batch_requests; /* Number of requests left in the batch */ 53 int nr_batch_requests; /* Number of requests left in the batch */
80 54
81 struct as_io_context *aic;
82 struct radix_tree_root radix_root; 55 struct radix_tree_root radix_root;
83 struct hlist_head cic_list; 56 struct hlist_head cic_list;
84 void *ioc_data; 57 void *ioc_data;
diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h
index f1011f7f3d41..638ce4554c76 100644
--- a/include/linux/jbd2.h
+++ b/include/linux/jbd2.h
@@ -653,6 +653,7 @@ struct transaction_s
653 * waiting for it to finish. 653 * waiting for it to finish.
654 */ 654 */
655 unsigned int t_synchronous_commit:1; 655 unsigned int t_synchronous_commit:1;
656 unsigned int t_flushed_data_blocks:1;
656 657
657 /* 658 /*
658 * For use by the filesystem to store fs-specific data 659 * For use by the filesystem to store fs-specific data
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 3fc9f5aab5f8..328bca609b9b 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -734,6 +734,10 @@ struct sysinfo {
734/* Force a compilation error if condition is constant and true */ 734/* Force a compilation error if condition is constant and true */
735#define MAYBE_BUILD_BUG_ON(cond) ((void)sizeof(char[1 - 2 * !!(cond)])) 735#define MAYBE_BUILD_BUG_ON(cond) ((void)sizeof(char[1 - 2 * !!(cond)]))
736 736
737/* Force a compilation error if a constant expression is not a power of 2 */
738#define BUILD_BUG_ON_NOT_POWER_OF_2(n) \
739 BUILD_BUG_ON((n) == 0 || (((n) & ((n) - 1)) != 0))
740
737/* Force a compilation error if condition is true, but also produce a 741/* Force a compilation error if condition is true, but also produce a
738 result (of value 0 and type size_t), so the expression can be used 742 result (of value 0 and type size_t), so the expression can be used
739 e.g. in a structure initializer (or where-ever else comma expressions 743 e.g. in a structure initializer (or where-ever else comma expressions
diff --git a/include/linux/kfifo.h b/include/linux/kfifo.h
index 3d44e9c65a8e..bc0fc795bd35 100644
--- a/include/linux/kfifo.h
+++ b/include/linux/kfifo.h
@@ -67,7 +67,7 @@ struct kfifo {
67/** 67/**
68 * DECLARE_KFIFO - macro to declare a kfifo and the associated buffer 68 * DECLARE_KFIFO - macro to declare a kfifo and the associated buffer
69 * @name: name of the declared kfifo datatype 69 * @name: name of the declared kfifo datatype
70 * @size: size of the fifo buffer 70 * @size: size of the fifo buffer. Must be a power of two.
71 * 71 *
72 * Note1: the macro can be used inside struct or union declaration 72 * Note1: the macro can be used inside struct or union declaration
73 * Note2: the macro creates two objects: 73 * Note2: the macro creates two objects:
@@ -81,7 +81,7 @@ union { \
81} 81}
82 82
83/** 83/**
84 * INIT_KFIFO - Initialize a kfifo declared by DECLARED_KFIFO 84 * INIT_KFIFO - Initialize a kfifo declared by DECLARE_KFIFO
85 * @name: name of the declared kfifo datatype 85 * @name: name of the declared kfifo datatype
86 */ 86 */
87#define INIT_KFIFO(name) \ 87#define INIT_KFIFO(name) \
@@ -91,7 +91,7 @@ union { \
91/** 91/**
92 * DEFINE_KFIFO - macro to define and initialize a kfifo 92 * DEFINE_KFIFO - macro to define and initialize a kfifo
93 * @name: name of the declared kfifo datatype 93 * @name: name of the declared kfifo datatype
94 * @size: size of the fifo buffer 94 * @size: size of the fifo buffer. Must be a power of two.
95 * 95 *
96 * Note1: the macro can be used for global and local kfifo data type variables 96 * Note1: the macro can be used for global and local kfifo data type variables
97 * Note2: the macro creates two objects: 97 * Note2: the macro creates two objects:
@@ -104,15 +104,28 @@ union { \
104 104
105#undef __kfifo_initializer 105#undef __kfifo_initializer
106 106
107extern void kfifo_init(struct kfifo *fifo, unsigned char *buffer, 107extern void kfifo_init(struct kfifo *fifo, void *buffer,
108 unsigned int size); 108 unsigned int size);
109extern __must_check int kfifo_alloc(struct kfifo *fifo, unsigned int size, 109extern __must_check int kfifo_alloc(struct kfifo *fifo, unsigned int size,
110 gfp_t gfp_mask); 110 gfp_t gfp_mask);
111extern void kfifo_free(struct kfifo *fifo); 111extern void kfifo_free(struct kfifo *fifo);
112extern unsigned int kfifo_in(struct kfifo *fifo, 112extern unsigned int kfifo_in(struct kfifo *fifo,
113 const unsigned char *from, unsigned int len); 113 const void *from, unsigned int len);
114extern __must_check unsigned int kfifo_out(struct kfifo *fifo, 114extern __must_check unsigned int kfifo_out(struct kfifo *fifo,
115 unsigned char *to, unsigned int len); 115 void *to, unsigned int len);
116extern __must_check unsigned int kfifo_out_peek(struct kfifo *fifo,
117 void *to, unsigned int len, unsigned offset);
118
119/**
120 * kfifo_initialized - Check if kfifo is initialized.
121 * @fifo: fifo to check
122 * Return %true if FIFO is initialized, otherwise %false.
123 * Assumes the fifo was 0 before.
124 */
125static inline bool kfifo_initialized(struct kfifo *fifo)
126{
127 return fifo->buffer != NULL;
128}
116 129
117/** 130/**
118 * kfifo_reset - removes the entire FIFO contents 131 * kfifo_reset - removes the entire FIFO contents
@@ -194,7 +207,7 @@ static inline __must_check unsigned int kfifo_avail(struct kfifo *fifo)
194 * bytes copied. 207 * bytes copied.
195 */ 208 */
196static inline unsigned int kfifo_in_locked(struct kfifo *fifo, 209static inline unsigned int kfifo_in_locked(struct kfifo *fifo,
197 const unsigned char *from, unsigned int n, spinlock_t *lock) 210 const void *from, unsigned int n, spinlock_t *lock)
198{ 211{
199 unsigned long flags; 212 unsigned long flags;
200 unsigned int ret; 213 unsigned int ret;
@@ -219,7 +232,7 @@ static inline unsigned int kfifo_in_locked(struct kfifo *fifo,
219 * @to buffer and returns the number of copied bytes. 232 * @to buffer and returns the number of copied bytes.
220 */ 233 */
221static inline __must_check unsigned int kfifo_out_locked(struct kfifo *fifo, 234static inline __must_check unsigned int kfifo_out_locked(struct kfifo *fifo,
222 unsigned char *to, unsigned int n, spinlock_t *lock) 235 void *to, unsigned int n, spinlock_t *lock)
223{ 236{
224 unsigned long flags; 237 unsigned long flags;
225 unsigned int ret; 238 unsigned int ret;
@@ -228,13 +241,6 @@ static inline __must_check unsigned int kfifo_out_locked(struct kfifo *fifo,
228 241
229 ret = kfifo_out(fifo, to, n); 242 ret = kfifo_out(fifo, to, n);
230 243
231 /*
232 * optimization: if the FIFO is empty, set the indices to 0
233 * so we don't wrap the next time
234 */
235 if (kfifo_is_empty(fifo))
236 kfifo_reset(fifo);
237
238 spin_unlock_irqrestore(lock, flags); 244 spin_unlock_irqrestore(lock, flags);
239 245
240 return ret; 246 return ret;
@@ -242,11 +248,11 @@ static inline __must_check unsigned int kfifo_out_locked(struct kfifo *fifo,
242 248
243extern void kfifo_skip(struct kfifo *fifo, unsigned int len); 249extern void kfifo_skip(struct kfifo *fifo, unsigned int len);
244 250
245extern __must_check unsigned int kfifo_from_user(struct kfifo *fifo, 251extern __must_check int kfifo_from_user(struct kfifo *fifo,
246 const void __user *from, unsigned int n); 252 const void __user *from, unsigned int n, unsigned *lenout);
247 253
248extern __must_check unsigned int kfifo_to_user(struct kfifo *fifo, 254extern __must_check int kfifo_to_user(struct kfifo *fifo,
249 void __user *to, unsigned int n); 255 void __user *to, unsigned int n, unsigned *lenout);
250 256
251/* 257/*
252 * __kfifo_add_out internal helper function for updating the out offset 258 * __kfifo_add_out internal helper function for updating the out offset
diff --git a/include/linux/kgdb.h b/include/linux/kgdb.h
index 6adcc297e354..19ec41a183f5 100644
--- a/include/linux/kgdb.h
+++ b/include/linux/kgdb.h
@@ -29,8 +29,7 @@ struct pt_regs;
29 * 29 *
30 * On some architectures it is required to skip a breakpoint 30 * On some architectures it is required to skip a breakpoint
31 * exception when it occurs after a breakpoint has been removed. 31 * exception when it occurs after a breakpoint has been removed.
32 * This can be implemented in the architecture specific portion of 32 * This can be implemented in the architecture specific portion of kgdb.
33 * for kgdb.
34 */ 33 */
35extern int kgdb_skipexception(int exception, struct pt_regs *regs); 34extern int kgdb_skipexception(int exception, struct pt_regs *regs);
36 35
@@ -65,7 +64,7 @@ struct uart_port;
65/** 64/**
66 * kgdb_breakpoint - compiled in breakpoint 65 * kgdb_breakpoint - compiled in breakpoint
67 * 66 *
68 * This will be impelmented a static inline per architecture. This 67 * This will be implemented as a static inline per architecture. This
69 * function is called by the kgdb core to execute an architecture 68 * function is called by the kgdb core to execute an architecture
70 * specific trap to cause kgdb to enter the exception processing. 69 * specific trap to cause kgdb to enter the exception processing.
71 * 70 *
@@ -190,7 +189,7 @@ kgdb_arch_handle_exception(int vector, int signo, int err_code,
190 * @flags: Current IRQ state 189 * @flags: Current IRQ state
191 * 190 *
192 * On SMP systems, we need to get the attention of the other CPUs 191 * On SMP systems, we need to get the attention of the other CPUs
193 * and get them be in a known state. This should do what is needed 192 * and get them into a known state. This should do what is needed
194 * to get the other CPUs to call kgdb_wait(). Note that on some arches, 193 * to get the other CPUs to call kgdb_wait(). Note that on some arches,
195 * the NMI approach is not used for rounding up all the CPUs. For example, 194 * the NMI approach is not used for rounding up all the CPUs. For example,
196 * in case of MIPS, smp_call_function() is used to roundup CPUs. In 195 * in case of MIPS, smp_call_function() is used to roundup CPUs. In
diff --git a/include/linux/kmemcheck.h b/include/linux/kmemcheck.h
index e880d4cf9e22..08d7dc4ddf40 100644
--- a/include/linux/kmemcheck.h
+++ b/include/linux/kmemcheck.h
@@ -36,6 +36,56 @@ int kmemcheck_hide_addr(unsigned long address);
36 36
37bool kmemcheck_is_obj_initialized(unsigned long addr, size_t size); 37bool kmemcheck_is_obj_initialized(unsigned long addr, size_t size);
38 38
39/*
40 * Bitfield annotations
41 *
42 * How to use: If you have a struct using bitfields, for example
43 *
44 * struct a {
45 * int x:8, y:8;
46 * };
47 *
48 * then this should be rewritten as
49 *
50 * struct a {
51 * kmemcheck_bitfield_begin(flags);
52 * int x:8, y:8;
53 * kmemcheck_bitfield_end(flags);
54 * };
55 *
56 * Now the "flags_begin" and "flags_end" members may be used to refer to the
57 * beginning and end, respectively, of the bitfield (and things like
58 * &x.flags_begin is allowed). As soon as the struct is allocated, the bit-
59 * fields should be annotated:
60 *
61 * struct a *a = kmalloc(sizeof(struct a), GFP_KERNEL);
62 * kmemcheck_annotate_bitfield(a, flags);
63 */
64#define kmemcheck_bitfield_begin(name) \
65 int name##_begin[0];
66
67#define kmemcheck_bitfield_end(name) \
68 int name##_end[0];
69
70#define kmemcheck_annotate_bitfield(ptr, name) \
71 do { \
72 int _n; \
73 \
74 if (!ptr) \
75 break; \
76 \
77 _n = (long) &((ptr)->name##_end) \
78 - (long) &((ptr)->name##_begin); \
79 MAYBE_BUILD_BUG_ON(_n < 0); \
80 \
81 kmemcheck_mark_initialized(&((ptr)->name##_begin), _n); \
82 } while (0)
83
84#define kmemcheck_annotate_variable(var) \
85 do { \
86 kmemcheck_mark_initialized(&(var), sizeof(var)); \
87 } while (0) \
88
39#else 89#else
40#define kmemcheck_enabled 0 90#define kmemcheck_enabled 0
41 91
@@ -106,60 +156,16 @@ static inline bool kmemcheck_is_obj_initialized(unsigned long addr, size_t size)
106 return true; 156 return true;
107} 157}
108 158
109#endif /* CONFIG_KMEMCHECK */ 159#define kmemcheck_bitfield_begin(name)
110 160#define kmemcheck_bitfield_end(name)
111/* 161#define kmemcheck_annotate_bitfield(ptr, name) \
112 * Bitfield annotations 162 do { \
113 * 163 } while (0)
114 * How to use: If you have a struct using bitfields, for example
115 *
116 * struct a {
117 * int x:8, y:8;
118 * };
119 *
120 * then this should be rewritten as
121 *
122 * struct a {
123 * kmemcheck_bitfield_begin(flags);
124 * int x:8, y:8;
125 * kmemcheck_bitfield_end(flags);
126 * };
127 *
128 * Now the "flags_begin" and "flags_end" members may be used to refer to the
129 * beginning and end, respectively, of the bitfield (and things like
130 * &x.flags_begin is allowed). As soon as the struct is allocated, the bit-
131 * fields should be annotated:
132 *
133 * struct a *a = kmalloc(sizeof(struct a), GFP_KERNEL);
134 * kmemcheck_annotate_bitfield(a, flags);
135 *
136 * Note: We provide the same definitions for both kmemcheck and non-
137 * kmemcheck kernels. This makes it harder to introduce accidental errors. It
138 * is also allowed to pass NULL pointers to kmemcheck_annotate_bitfield().
139 */
140#define kmemcheck_bitfield_begin(name) \
141 int name##_begin[0];
142
143#define kmemcheck_bitfield_end(name) \
144 int name##_end[0];
145 164
146#define kmemcheck_annotate_bitfield(ptr, name) \ 165#define kmemcheck_annotate_variable(var) \
147 do { \ 166 do { \
148 int _n; \
149 \
150 if (!ptr) \
151 break; \
152 \
153 _n = (long) &((ptr)->name##_end) \
154 - (long) &((ptr)->name##_begin); \
155 MAYBE_BUILD_BUG_ON(_n < 0); \
156 \
157 kmemcheck_mark_initialized(&((ptr)->name##_begin), _n); \
158 } while (0) 167 } while (0)
159 168
160#define kmemcheck_annotate_variable(var) \ 169#endif /* CONFIG_KMEMCHECK */
161 do { \
162 kmemcheck_mark_initialized(&(var), sizeof(var)); \
163 } while (0) \
164 170
165#endif /* LINUX_KMEMCHECK_H */ 171#endif /* LINUX_KMEMCHECK_H */
diff --git a/include/linux/kmsg_dump.h b/include/linux/kmsg_dump.h
index e32aa268efac..24b44145a886 100644
--- a/include/linux/kmsg_dump.h
+++ b/include/linux/kmsg_dump.h
@@ -17,6 +17,7 @@
17enum kmsg_dump_reason { 17enum kmsg_dump_reason {
18 KMSG_DUMP_OOPS, 18 KMSG_DUMP_OOPS,
19 KMSG_DUMP_PANIC, 19 KMSG_DUMP_PANIC,
20 KMSG_DUMP_KEXEC,
20}; 21};
21 22
22/** 23/**
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 6a9c4ddd3d95..73112250862c 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -354,6 +354,9 @@ enum {
354 /* max tries if error condition is still set after ->error_handler */ 354 /* max tries if error condition is still set after ->error_handler */
355 ATA_EH_MAX_TRIES = 5, 355 ATA_EH_MAX_TRIES = 5,
356 356
357 /* sometimes resuming a link requires several retries */
358 ATA_LINK_RESUME_TRIES = 5,
359
357 /* how hard are we gonna try to probe/recover devices */ 360 /* how hard are we gonna try to probe/recover devices */
358 ATA_PROBE_MAX_TRIES = 3, 361 ATA_PROBE_MAX_TRIES = 3,
359 ATA_EH_DEV_TRIES = 3, 362 ATA_EH_DEV_TRIES = 3,
diff --git a/include/linux/list_sort.h b/include/linux/list_sort.h
new file mode 100644
index 000000000000..1a2df2efb771
--- /dev/null
+++ b/include/linux/list_sort.h
@@ -0,0 +1,11 @@
1#ifndef _LINUX_LIST_SORT_H
2#define _LINUX_LIST_SORT_H
3
4#include <linux/types.h>
5
6struct list_head;
7
8void list_sort(void *priv, struct list_head *head,
9 int (*cmp)(void *priv, struct list_head *a,
10 struct list_head *b));
11#endif
diff --git a/include/linux/mfd/tmio.h b/include/linux/mfd/tmio.h
index 6b9c5d06690c..9cb1834deffa 100644
--- a/include/linux/mfd/tmio.h
+++ b/include/linux/mfd/tmio.h
@@ -2,6 +2,8 @@
2#define MFD_TMIO_H 2#define MFD_TMIO_H
3 3
4#include <linux/fb.h> 4#include <linux/fb.h>
5#include <linux/io.h>
6#include <linux/platform_device.h>
5 7
6#define tmio_ioread8(addr) readb(addr) 8#define tmio_ioread8(addr) readb(addr)
7#define tmio_ioread16(addr) readw(addr) 9#define tmio_ioread16(addr) readw(addr)
@@ -18,11 +20,48 @@
18 writew((val) >> 16, (addr) + 2); \ 20 writew((val) >> 16, (addr) + 2); \
19 } while (0) 21 } while (0)
20 22
23#define CNF_CMD 0x04
24#define CNF_CTL_BASE 0x10
25#define CNF_INT_PIN 0x3d
26#define CNF_STOP_CLK_CTL 0x40
27#define CNF_GCLK_CTL 0x41
28#define CNF_SD_CLK_MODE 0x42
29#define CNF_PIN_STATUS 0x44
30#define CNF_PWR_CTL_1 0x48
31#define CNF_PWR_CTL_2 0x49
32#define CNF_PWR_CTL_3 0x4a
33#define CNF_CARD_DETECT_MODE 0x4c
34#define CNF_SD_SLOT 0x50
35#define CNF_EXT_GCLK_CTL_1 0xf0
36#define CNF_EXT_GCLK_CTL_2 0xf1
37#define CNF_EXT_GCLK_CTL_3 0xf9
38#define CNF_SD_LED_EN_1 0xfa
39#define CNF_SD_LED_EN_2 0xfe
40
41#define SDCREN 0x2 /* Enable access to MMC CTL regs. (flag in COMMAND_REG)*/
42
43#define sd_config_write8(base, shift, reg, val) \
44 tmio_iowrite8((val), (base) + ((reg) << (shift)))
45#define sd_config_write16(base, shift, reg, val) \
46 tmio_iowrite16((val), (base) + ((reg) << (shift)))
47#define sd_config_write32(base, shift, reg, val) \
48 do { \
49 tmio_iowrite16((val), (base) + ((reg) << (shift))); \
50 tmio_iowrite16((val) >> 16, (base) + ((reg + 2) << (shift))); \
51 } while (0)
52
53int tmio_core_mmc_enable(void __iomem *cnf, int shift, unsigned long base);
54int tmio_core_mmc_resume(void __iomem *cnf, int shift, unsigned long base);
55void tmio_core_mmc_pwr(void __iomem *cnf, int shift, int state);
56void tmio_core_mmc_clk_div(void __iomem *cnf, int shift, int state);
57
21/* 58/*
22 * data for the MMC controller 59 * data for the MMC controller
23 */ 60 */
24struct tmio_mmc_data { 61struct tmio_mmc_data {
25 const unsigned int hclk; 62 const unsigned int hclk;
63 void (*set_pwr)(struct platform_device *host, int state);
64 void (*set_clk_div)(struct platform_device *host, int state);
26}; 65};
27 66
28/* 67/*
diff --git a/include/linux/mfd/wm8350/pmic.h b/include/linux/mfd/wm8350/pmic.h
index be3264e286e0..e786fe9841ef 100644
--- a/include/linux/mfd/wm8350/pmic.h
+++ b/include/linux/mfd/wm8350/pmic.h
@@ -666,20 +666,20 @@
666#define WM8350_ISINK_FLASH_DUR_64MS (1 << 8) 666#define WM8350_ISINK_FLASH_DUR_64MS (1 << 8)
667#define WM8350_ISINK_FLASH_DUR_96MS (2 << 8) 667#define WM8350_ISINK_FLASH_DUR_96MS (2 << 8)
668#define WM8350_ISINK_FLASH_DUR_1024MS (3 << 8) 668#define WM8350_ISINK_FLASH_DUR_1024MS (3 << 8)
669#define WM8350_ISINK_FLASH_ON_INSTANT (0 << 4) 669#define WM8350_ISINK_FLASH_ON_INSTANT (0 << 0)
670#define WM8350_ISINK_FLASH_ON_0_25S (1 << 4) 670#define WM8350_ISINK_FLASH_ON_0_25S (1 << 0)
671#define WM8350_ISINK_FLASH_ON_0_50S (2 << 4) 671#define WM8350_ISINK_FLASH_ON_0_50S (2 << 0)
672#define WM8350_ISINK_FLASH_ON_1_00S (3 << 4) 672#define WM8350_ISINK_FLASH_ON_1_00S (3 << 0)
673#define WM8350_ISINK_FLASH_ON_1_95S (1 << 4) 673#define WM8350_ISINK_FLASH_ON_1_95S (1 << 0)
674#define WM8350_ISINK_FLASH_ON_3_91S (2 << 4) 674#define WM8350_ISINK_FLASH_ON_3_91S (2 << 0)
675#define WM8350_ISINK_FLASH_ON_7_80S (3 << 4) 675#define WM8350_ISINK_FLASH_ON_7_80S (3 << 0)
676#define WM8350_ISINK_FLASH_OFF_INSTANT (0 << 0) 676#define WM8350_ISINK_FLASH_OFF_INSTANT (0 << 4)
677#define WM8350_ISINK_FLASH_OFF_0_25S (1 << 0) 677#define WM8350_ISINK_FLASH_OFF_0_25S (1 << 4)
678#define WM8350_ISINK_FLASH_OFF_0_50S (2 << 0) 678#define WM8350_ISINK_FLASH_OFF_0_50S (2 << 4)
679#define WM8350_ISINK_FLASH_OFF_1_00S (3 << 0) 679#define WM8350_ISINK_FLASH_OFF_1_00S (3 << 4)
680#define WM8350_ISINK_FLASH_OFF_1_95S (1 << 0) 680#define WM8350_ISINK_FLASH_OFF_1_95S (1 << 4)
681#define WM8350_ISINK_FLASH_OFF_3_91S (2 << 0) 681#define WM8350_ISINK_FLASH_OFF_3_91S (2 << 4)
682#define WM8350_ISINK_FLASH_OFF_7_80S (3 << 0) 682#define WM8350_ISINK_FLASH_OFF_7_80S (3 << 4)
683 683
684/* 684/*
685 * Regulator Interrupts. 685 * Regulator Interrupts.
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 2265f28eb47a..60c467bfbabd 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1089,6 +1089,7 @@ extern void zone_pcp_update(struct zone *zone);
1089 1089
1090/* nommu.c */ 1090/* nommu.c */
1091extern atomic_long_t mmap_pages_allocated; 1091extern atomic_long_t mmap_pages_allocated;
1092extern int nommu_shrink_inode_mappings(struct inode *, size_t, size_t);
1092 1093
1093/* prio_tree.c */ 1094/* prio_tree.c */
1094void vma_prio_tree_add(struct vm_area_struct *, struct vm_area_struct *old); 1095void vma_prio_tree_add(struct vm_area_struct *, struct vm_area_struct *old);
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index 84a524afb3dc..36f96271306c 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -122,7 +122,9 @@ struct vm_region {
122 unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */ 122 unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */
123 struct file *vm_file; /* the backing file or NULL */ 123 struct file *vm_file; /* the backing file or NULL */
124 124
125 atomic_t vm_usage; /* region usage count */ 125 int vm_usage; /* region usage count (access under nommu_region_sem) */
126 bool vm_icache_flushed : 1; /* true if the icache has been flushed for
127 * this region */
126}; 128};
127 129
128/* 130/*
@@ -203,10 +205,12 @@ struct mm_struct {
203 struct vm_area_struct * mmap; /* list of VMAs */ 205 struct vm_area_struct * mmap; /* list of VMAs */
204 struct rb_root mm_rb; 206 struct rb_root mm_rb;
205 struct vm_area_struct * mmap_cache; /* last find_vma result */ 207 struct vm_area_struct * mmap_cache; /* last find_vma result */
208#ifdef CONFIG_MMU
206 unsigned long (*get_unmapped_area) (struct file *filp, 209 unsigned long (*get_unmapped_area) (struct file *filp,
207 unsigned long addr, unsigned long len, 210 unsigned long addr, unsigned long len,
208 unsigned long pgoff, unsigned long flags); 211 unsigned long pgoff, unsigned long flags);
209 void (*unmap_area) (struct mm_struct *mm, unsigned long addr); 212 void (*unmap_area) (struct mm_struct *mm, unsigned long addr);
213#endif
210 unsigned long mmap_base; /* base of mmap area */ 214 unsigned long mmap_base; /* base of mmap area */
211 unsigned long task_size; /* size of task vm space */ 215 unsigned long task_size; /* size of task vm space */
212 unsigned long cached_hole_size; /* if non-zero, the largest hole below free_area_cache */ 216 unsigned long cached_hole_size; /* if non-zero, the largest hole below free_area_cache */
diff --git a/include/linux/mtd/pismo.h b/include/linux/mtd/pismo.h
new file mode 100644
index 000000000000..8dfb7e1421c5
--- /dev/null
+++ b/include/linux/mtd/pismo.h
@@ -0,0 +1,17 @@
1/*
2 * PISMO memory driver - http://www.pismoworld.org/
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 as published by
6 * the Free Software Foundation; either version 2 of the License.
7 */
8#ifndef __LINUX_MTD_PISMO_H
9#define __LINUX_MTD_PISMO_H
10
11struct pismo_pdata {
12 void (*set_vpp)(void *, int);
13 void *vpp_data;
14 phys_addr_t cs_addrs[5];
15};
16
17#endif
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
index ed5d7501e181..3c62ed408492 100644
--- a/include/linux/pagemap.h
+++ b/include/linux/pagemap.h
@@ -253,6 +253,8 @@ extern struct page * read_cache_page_async(struct address_space *mapping,
253extern struct page * read_cache_page(struct address_space *mapping, 253extern struct page * read_cache_page(struct address_space *mapping,
254 pgoff_t index, filler_t *filler, 254 pgoff_t index, filler_t *filler,
255 void *data); 255 void *data);
256extern struct page * read_cache_page_gfp(struct address_space *mapping,
257 pgoff_t index, gfp_t gfp_mask);
256extern int read_cache_pages(struct address_space *mapping, 258extern int read_cache_pages(struct address_space *mapping,
257 struct list_head *pages, filler_t *filler, void *data); 259 struct list_head *pages, filler_t *filler, void *data);
258 260
diff --git a/include/linux/pci.h b/include/linux/pci.h
index bf1e67080849..c1968f464c38 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -243,6 +243,7 @@ struct pci_dev {
243 unsigned int d2_support:1; /* Low power state D2 is supported */ 243 unsigned int d2_support:1; /* Low power state D2 is supported */
244 unsigned int no_d1d2:1; /* Only allow D0 and D3 */ 244 unsigned int no_d1d2:1; /* Only allow D0 and D3 */
245 unsigned int wakeup_prepared:1; 245 unsigned int wakeup_prepared:1;
246 unsigned int d3_delay; /* D3->D0 transition time in ms */
246 247
247#ifdef CONFIG_PCIEASPM 248#ifdef CONFIG_PCIEASPM
248 struct pcie_link_state *link_state; /* ASPM link state. */ 249 struct pcie_link_state *link_state; /* ASPM link state. */
@@ -566,6 +567,9 @@ void pcibios_align_resource(void *, struct resource *, resource_size_t,
566 resource_size_t); 567 resource_size_t);
567void pcibios_update_irq(struct pci_dev *, int irq); 568void pcibios_update_irq(struct pci_dev *, int irq);
568 569
570/* Weak but can be overriden by arch */
571void pci_fixup_cardbus(struct pci_bus *);
572
569/* Generic PCI functions used internally */ 573/* Generic PCI functions used internally */
570 574
571extern struct pci_bus *pci_find_bus(int domain, int busnr); 575extern struct pci_bus *pci_find_bus(int domain, int busnr);
@@ -752,6 +756,10 @@ pci_power_t pci_target_state(struct pci_dev *dev);
752int pci_prepare_to_sleep(struct pci_dev *dev); 756int pci_prepare_to_sleep(struct pci_dev *dev);
753int pci_back_from_sleep(struct pci_dev *dev); 757int pci_back_from_sleep(struct pci_dev *dev);
754 758
759/* For use by arch with custom probe code */
760void set_pcie_port_type(struct pci_dev *pdev);
761void set_pcie_hotplug_bridge(struct pci_dev *pdev);
762
755/* Functions for PCI Hotplug drivers to use */ 763/* Functions for PCI Hotplug drivers to use */
756int pci_bus_find_capability(struct pci_bus *bus, unsigned int devfn, int cap); 764int pci_bus_find_capability(struct pci_bus *bus, unsigned int devfn, int cap);
757#ifdef CONFIG_HOTPLUG 765#ifdef CONFIG_HOTPLUG
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index c66b34f75eea..a177698d95e2 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -211,11 +211,9 @@ struct perf_event_attr {
211 __u32 wakeup_watermark; /* bytes before wakeup */ 211 __u32 wakeup_watermark; /* bytes before wakeup */
212 }; 212 };
213 213
214 __u32 __reserved_2;
215
216 __u64 bp_addr;
217 __u32 bp_type; 214 __u32 bp_type;
218 __u32 bp_len; 215 __u64 bp_addr;
216 __u64 bp_len;
219}; 217};
220 218
221/* 219/*
@@ -814,9 +812,14 @@ extern int perf_event_overflow(struct perf_event *event, int nmi,
814 */ 812 */
815static inline int is_software_event(struct perf_event *event) 813static inline int is_software_event(struct perf_event *event)
816{ 814{
817 return (event->attr.type != PERF_TYPE_RAW) && 815 switch (event->attr.type) {
818 (event->attr.type != PERF_TYPE_HARDWARE) && 816 case PERF_TYPE_SOFTWARE:
819 (event->attr.type != PERF_TYPE_HW_CACHE); 817 case PERF_TYPE_TRACEPOINT:
818 /* for now the breakpoint stuff also works as software event */
819 case PERF_TYPE_BREAKPOINT:
820 return 1;
821 }
822 return 0;
820} 823}
821 824
822extern atomic_t perf_swevent_enabled[PERF_COUNT_SW_MAX]; 825extern atomic_t perf_swevent_enabled[PERF_COUNT_SW_MAX];
diff --git a/include/linux/phy.h b/include/linux/phy.h
index b1368b8f6572..6a7eb402165d 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -447,6 +447,7 @@ struct phy_device* get_phy_device(struct mii_bus *bus, int addr);
447int phy_device_register(struct phy_device *phy); 447int phy_device_register(struct phy_device *phy);
448int phy_clear_interrupt(struct phy_device *phydev); 448int phy_clear_interrupt(struct phy_device *phydev);
449int phy_config_interrupt(struct phy_device *phydev, u32 interrupts); 449int phy_config_interrupt(struct phy_device *phydev, u32 interrupts);
450int phy_init_hw(struct phy_device *phydev);
450int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, 451int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,
451 u32 flags, phy_interface_t interface); 452 u32 flags, phy_interface_t interface);
452struct phy_device * phy_attach(struct net_device *dev, 453struct phy_device * phy_attach(struct net_device *dev,
@@ -484,6 +485,7 @@ void phy_driver_unregister(struct phy_driver *drv);
484int phy_driver_register(struct phy_driver *new_driver); 485int phy_driver_register(struct phy_driver *new_driver);
485void phy_prepare_link(struct phy_device *phydev, 486void phy_prepare_link(struct phy_device *phydev,
486 void (*adjust_link)(struct net_device *)); 487 void (*adjust_link)(struct net_device *));
488void phy_state_machine(struct work_struct *work);
487void phy_start_machine(struct phy_device *phydev, 489void phy_start_machine(struct phy_device *phydev,
488 void (*handler)(struct net_device *)); 490 void (*handler)(struct net_device *));
489void phy_stop_machine(struct phy_device *phydev); 491void phy_stop_machine(struct phy_device *phydev);
diff --git a/include/linux/poison.h b/include/linux/poison.h
index 7fc194aef8c2..2110a81c5e2a 100644
--- a/include/linux/poison.h
+++ b/include/linux/poison.h
@@ -2,13 +2,25 @@
2#define _LINUX_POISON_H 2#define _LINUX_POISON_H
3 3
4/********** include/linux/list.h **********/ 4/********** include/linux/list.h **********/
5
6/*
7 * Architectures might want to move the poison pointer offset
8 * into some well-recognized area such as 0xdead000000000000,
9 * that is also not mappable by user-space exploits:
10 */
11#ifdef CONFIG_ILLEGAL_POINTER_VALUE
12# define POISON_POINTER_DELTA _AC(CONFIG_ILLEGAL_POINTER_VALUE, UL)
13#else
14# define POISON_POINTER_DELTA 0
15#endif
16
5/* 17/*
6 * These are non-NULL pointers that will result in page faults 18 * These are non-NULL pointers that will result in page faults
7 * under normal circumstances, used to verify that nobody uses 19 * under normal circumstances, used to verify that nobody uses
8 * non-initialized list entries. 20 * non-initialized list entries.
9 */ 21 */
10#define LIST_POISON1 ((void *) 0x00100100) 22#define LIST_POISON1 ((void *) 0x00100100 + POISON_POINTER_DELTA)
11#define LIST_POISON2 ((void *) 0x00200200) 23#define LIST_POISON2 ((void *) 0x00200200 + POISON_POINTER_DELTA)
12 24
13/********** include/linux/timer.h **********/ 25/********** include/linux/timer.h **********/
14/* 26/*
diff --git a/include/linux/reiserfs_fs.h b/include/linux/reiserfs_fs.h
index c96c1858fe2c..1ba3cf6edfbb 100644
--- a/include/linux/reiserfs_fs.h
+++ b/include/linux/reiserfs_fs.h
@@ -62,6 +62,12 @@ void reiserfs_write_unlock(struct super_block *s);
62int reiserfs_write_lock_once(struct super_block *s); 62int reiserfs_write_lock_once(struct super_block *s);
63void reiserfs_write_unlock_once(struct super_block *s, int lock_depth); 63void reiserfs_write_unlock_once(struct super_block *s, int lock_depth);
64 64
65#ifdef CONFIG_REISERFS_CHECK
66void reiserfs_lock_check_recursive(struct super_block *s);
67#else
68static inline void reiserfs_lock_check_recursive(struct super_block *s) { }
69#endif
70
65/* 71/*
66 * Several mutexes depend on the write lock. 72 * Several mutexes depend on the write lock.
67 * However sometimes we want to relax the write lock while we hold 73 * However sometimes we want to relax the write lock while we hold
@@ -92,11 +98,31 @@ void reiserfs_write_unlock_once(struct super_block *s, int lock_depth);
92static inline void reiserfs_mutex_lock_safe(struct mutex *m, 98static inline void reiserfs_mutex_lock_safe(struct mutex *m,
93 struct super_block *s) 99 struct super_block *s)
94{ 100{
101 reiserfs_lock_check_recursive(s);
95 reiserfs_write_unlock(s); 102 reiserfs_write_unlock(s);
96 mutex_lock(m); 103 mutex_lock(m);
97 reiserfs_write_lock(s); 104 reiserfs_write_lock(s);
98} 105}
99 106
107static inline void
108reiserfs_mutex_lock_nested_safe(struct mutex *m, unsigned int subclass,
109 struct super_block *s)
110{
111 reiserfs_lock_check_recursive(s);
112 reiserfs_write_unlock(s);
113 mutex_lock_nested(m, subclass);
114 reiserfs_write_lock(s);
115}
116
117static inline void
118reiserfs_down_read_safe(struct rw_semaphore *sem, struct super_block *s)
119{
120 reiserfs_lock_check_recursive(s);
121 reiserfs_write_unlock(s);
122 down_read(sem);
123 reiserfs_write_lock(s);
124}
125
100/* 126/*
101 * When we schedule, we usually want to also release the write lock, 127 * When we schedule, we usually want to also release the write lock,
102 * according to the previous bkl based locking scheme of reiserfs. 128 * according to the previous bkl based locking scheme of reiserfs.
diff --git a/include/linux/resource.h b/include/linux/resource.h
index 40fc7e626082..f1e914eefeab 100644
--- a/include/linux/resource.h
+++ b/include/linux/resource.h
@@ -3,8 +3,6 @@
3 3
4#include <linux/time.h> 4#include <linux/time.h>
5 5
6struct task_struct;
7
8/* 6/*
9 * Resource control/accounting header file for linux 7 * Resource control/accounting header file for linux
10 */ 8 */
@@ -70,6 +68,12 @@ struct rlimit {
70 */ 68 */
71#include <asm/resource.h> 69#include <asm/resource.h>
72 70
71#ifdef __KERNEL__
72
73struct task_struct;
74
73int getrusage(struct task_struct *p, int who, struct rusage __user *ru); 75int getrusage(struct task_struct *p, int who, struct rusage __user *ru);
74 76
77#endif /* __KERNEL__ */
78
75#endif 79#endif
diff --git a/include/linux/sched.h b/include/linux/sched.h
index f2f842db03ce..78efe7c485ac 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -310,6 +310,7 @@ extern void sched_show_task(struct task_struct *p);
310#ifdef CONFIG_DETECT_SOFTLOCKUP 310#ifdef CONFIG_DETECT_SOFTLOCKUP
311extern void softlockup_tick(void); 311extern void softlockup_tick(void);
312extern void touch_softlockup_watchdog(void); 312extern void touch_softlockup_watchdog(void);
313extern void touch_softlockup_watchdog_sync(void);
313extern void touch_all_softlockup_watchdogs(void); 314extern void touch_all_softlockup_watchdogs(void);
314extern int proc_dosoftlockup_thresh(struct ctl_table *table, int write, 315extern int proc_dosoftlockup_thresh(struct ctl_table *table, int write,
315 void __user *buffer, 316 void __user *buffer,
@@ -323,6 +324,9 @@ static inline void softlockup_tick(void)
323static inline void touch_softlockup_watchdog(void) 324static inline void touch_softlockup_watchdog(void)
324{ 325{
325} 326}
327static inline void touch_softlockup_watchdog_sync(void)
328{
329}
326static inline void touch_all_softlockup_watchdogs(void) 330static inline void touch_all_softlockup_watchdogs(void)
327{ 331{
328} 332}
@@ -377,6 +381,8 @@ extern int sysctl_max_map_count;
377 381
378#include <linux/aio.h> 382#include <linux/aio.h>
379 383
384#ifdef CONFIG_MMU
385extern void arch_pick_mmap_layout(struct mm_struct *mm);
380extern unsigned long 386extern unsigned long
381arch_get_unmapped_area(struct file *, unsigned long, unsigned long, 387arch_get_unmapped_area(struct file *, unsigned long, unsigned long,
382 unsigned long, unsigned long); 388 unsigned long, unsigned long);
@@ -386,6 +392,9 @@ arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr,
386 unsigned long flags); 392 unsigned long flags);
387extern void arch_unmap_area(struct mm_struct *, unsigned long); 393extern void arch_unmap_area(struct mm_struct *, unsigned long);
388extern void arch_unmap_area_topdown(struct mm_struct *, unsigned long); 394extern void arch_unmap_area_topdown(struct mm_struct *, unsigned long);
395#else
396static inline void arch_pick_mmap_layout(struct mm_struct *mm) {}
397#endif
389 398
390#if USE_SPLIT_PTLOCKS 399#if USE_SPLIT_PTLOCKS
391/* 400/*
@@ -1364,7 +1373,7 @@ struct task_struct {
1364 char comm[TASK_COMM_LEN]; /* executable name excluding path 1373 char comm[TASK_COMM_LEN]; /* executable name excluding path
1365 - access with [gs]et_task_comm (which lock 1374 - access with [gs]et_task_comm (which lock
1366 it with task_lock()) 1375 it with task_lock())
1367 - initialized normally by flush_old_exec */ 1376 - initialized normally by setup_new_exec */
1368/* file system info */ 1377/* file system info */
1369 int link_count, total_link_count; 1378 int link_count, total_link_count;
1370#ifdef CONFIG_SYSVIPC 1379#ifdef CONFIG_SYSVIPC
@@ -2491,8 +2500,6 @@ static inline void set_task_cpu(struct task_struct *p, unsigned int cpu)
2491 2500
2492#endif /* CONFIG_SMP */ 2501#endif /* CONFIG_SMP */
2493 2502
2494extern void arch_pick_mmap_layout(struct mm_struct *mm);
2495
2496#ifdef CONFIG_TRACING 2503#ifdef CONFIG_TRACING
2497extern void 2504extern void
2498__trace_special(void *__tr, void *__data, 2505__trace_special(void *__tr, void *__data,
@@ -2601,6 +2608,28 @@ static inline void mm_init_owner(struct mm_struct *mm, struct task_struct *p)
2601} 2608}
2602#endif /* CONFIG_MM_OWNER */ 2609#endif /* CONFIG_MM_OWNER */
2603 2610
2611static inline unsigned long task_rlimit(const struct task_struct *tsk,
2612 unsigned int limit)
2613{
2614 return ACCESS_ONCE(tsk->signal->rlim[limit].rlim_cur);
2615}
2616
2617static inline unsigned long task_rlimit_max(const struct task_struct *tsk,
2618 unsigned int limit)
2619{
2620 return ACCESS_ONCE(tsk->signal->rlim[limit].rlim_max);
2621}
2622
2623static inline unsigned long rlimit(unsigned int limit)
2624{
2625 return task_rlimit(current, limit);
2626}
2627
2628static inline unsigned long rlimit_max(unsigned int limit)
2629{
2630 return task_rlimit_max(current, limit);
2631}
2632
2604#endif /* __KERNEL__ */ 2633#endif /* __KERNEL__ */
2605 2634
2606#endif 2635#endif
diff --git a/include/linux/serio.h b/include/linux/serio.h
index e2f3044d4a4a..813d26c247ec 100644
--- a/include/linux/serio.h
+++ b/include/linux/serio.h
@@ -136,25 +136,6 @@ static inline void serio_continue_rx(struct serio *serio)
136 spin_unlock_irq(&serio->lock); 136 spin_unlock_irq(&serio->lock);
137} 137}
138 138
139/*
140 * Use the following functions to pin serio's driver in process context
141 */
142static inline int serio_pin_driver(struct serio *serio)
143{
144 return mutex_lock_interruptible(&serio->drv_mutex);
145}
146
147static inline void serio_pin_driver_uninterruptible(struct serio *serio)
148{
149 mutex_lock(&serio->drv_mutex);
150}
151
152static inline void serio_unpin_driver(struct serio *serio)
153{
154 mutex_unlock(&serio->drv_mutex);
155}
156
157
158#endif 139#endif
159 140
160/* 141/*
diff --git a/include/linux/spi/ad7879.h b/include/linux/spi/ad7879.h
index 4231104c9afa..6334cee1a3be 100644
--- a/include/linux/spi/ad7879.h
+++ b/include/linux/spi/ad7879.h
@@ -28,8 +28,12 @@ struct ad7879_platform_data {
28 * 1 = 4, 2 = 8, 3 = 16 (median > averaging) 28 * 1 = 4, 2 = 8, 3 = 16 (median > averaging)
29 */ 29 */
30 u8 median; 30 u8 median;
31 /* 1 = AUX/VBAT/GPIO set to GPIO Output */ 31 /* 1 = AUX/VBAT/GPIO export GPIO to gpiolib
32 u8 gpio_output; 32 * requires CONFIG_GPIOLIB
33 /* Initial GPIO pin state (valid if gpio_output = 1) */ 33 */
34 u8 gpio_default; 34 bool gpio_export;
35 /* identifies the first GPIO number handled by this chip;
36 * or, if negative, requests dynamic ID allocation.
37 */
38 s32 gpio_base;
35}; 39};
diff --git a/include/linux/string.h b/include/linux/string.h
index 651839a2a755..a716ee2a8adb 100644
--- a/include/linux/string.h
+++ b/include/linux/string.h
@@ -72,7 +72,10 @@ static inline __must_check char *strstrip(char *str)
72} 72}
73 73
74#ifndef __HAVE_ARCH_STRSTR 74#ifndef __HAVE_ARCH_STRSTR
75extern char * strstr(const char *,const char *); 75extern char * strstr(const char *, const char *);
76#endif
77#ifndef __HAVE_ARCH_STRNSTR
78extern char * strnstr(const char *, const char *, size_t);
76#endif 79#endif
77#ifndef __HAVE_ARCH_STRLEN 80#ifndef __HAVE_ARCH_STRLEN
78extern __kernel_size_t strlen(const char *); 81extern __kernel_size_t strlen(const char *);
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index 65793e90d6f6..207466a49f3d 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -195,7 +195,7 @@ struct perf_event_attr;
195 static const struct syscall_metadata __used \ 195 static const struct syscall_metadata __used \
196 __attribute__((__aligned__(4))) \ 196 __attribute__((__aligned__(4))) \
197 __attribute__((section("__syscalls_metadata"))) \ 197 __attribute__((section("__syscalls_metadata"))) \
198 __syscall_meta_##sname = { \ 198 __syscall_meta__##sname = { \
199 .name = "sys_"#sname, \ 199 .name = "sys_"#sname, \
200 .nb_args = 0, \ 200 .nb_args = 0, \
201 .enter_event = &event_enter__##sname, \ 201 .enter_event = &event_enter__##sname, \
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
index 877ba039e6a4..bd27fbc9db62 100644
--- a/include/linux/sysctl.h
+++ b/include/linux/sysctl.h
@@ -482,6 +482,7 @@ enum
482 NET_IPV4_CONF_ARP_ACCEPT=21, 482 NET_IPV4_CONF_ARP_ACCEPT=21,
483 NET_IPV4_CONF_ARP_NOTIFY=22, 483 NET_IPV4_CONF_ARP_NOTIFY=22,
484 NET_IPV4_CONF_ACCEPT_LOCAL=23, 484 NET_IPV4_CONF_ACCEPT_LOCAL=23,
485 NET_IPV4_CONF_SRC_VMARK=24,
485 __NET_IPV4_CONF_MAX 486 __NET_IPV4_CONF_MAX
486}; 487};
487 488
diff --git a/include/linux/topology.h b/include/linux/topology.h
index 57e63579bfdd..5b81156780b1 100644
--- a/include/linux/topology.h
+++ b/include/linux/topology.h
@@ -99,7 +99,7 @@ int arch_update_cpu_topology(void);
99 | 1*SD_WAKE_AFFINE \ 99 | 1*SD_WAKE_AFFINE \
100 | 1*SD_SHARE_CPUPOWER \ 100 | 1*SD_SHARE_CPUPOWER \
101 | 0*SD_POWERSAVINGS_BALANCE \ 101 | 0*SD_POWERSAVINGS_BALANCE \
102 | 0*SD_SHARE_PKG_RESOURCES \ 102 | 1*SD_SHARE_PKG_RESOURCES \
103 | 0*SD_SERIALIZE \ 103 | 0*SD_SERIALIZE \
104 | 0*SD_PREFER_SIBLING \ 104 | 0*SD_PREFER_SIBLING \
105 , \ 105 , \
diff --git a/include/linux/tty.h b/include/linux/tty.h
index ef3a2947b102..6abfcf5b5887 100644
--- a/include/linux/tty.h
+++ b/include/linux/tty.h
@@ -464,7 +464,7 @@ extern int tty_port_alloc_xmit_buf(struct tty_port *port);
464extern void tty_port_free_xmit_buf(struct tty_port *port); 464extern void tty_port_free_xmit_buf(struct tty_port *port);
465extern void tty_port_put(struct tty_port *port); 465extern void tty_port_put(struct tty_port *port);
466 466
467extern inline struct tty_port *tty_port_get(struct tty_port *port) 467static inline struct tty_port *tty_port_get(struct tty_port *port)
468{ 468{
469 if (port) 469 if (port)
470 kref_get(&port->kref); 470 kref_get(&port->kref);
@@ -486,7 +486,7 @@ extern void tty_port_close(struct tty_port *port,
486 struct tty_struct *tty, struct file *filp); 486 struct tty_struct *tty, struct file *filp);
487extern int tty_port_open(struct tty_port *port, 487extern int tty_port_open(struct tty_port *port,
488 struct tty_struct *tty, struct file *filp); 488 struct tty_struct *tty, struct file *filp);
489extern inline int tty_port_users(struct tty_port *port) 489static inline int tty_port_users(struct tty_port *port)
490{ 490{
491 return port->count + port->blocked_open; 491 return port->count + port->blocked_open;
492} 492}
diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h
index 6b58367d145e..d512d98dfb7d 100644
--- a/include/linux/uaccess.h
+++ b/include/linux/uaccess.h
@@ -94,6 +94,7 @@ static inline unsigned long __copy_from_user_nocache(void *to,
94 * happens, handle that and return -EFAULT. 94 * happens, handle that and return -EFAULT.
95 */ 95 */
96extern long probe_kernel_read(void *dst, void *src, size_t size); 96extern long probe_kernel_read(void *dst, void *src, size_t size);
97extern long __probe_kernel_read(void *dst, void *src, size_t size);
97 98
98/* 99/*
99 * probe_kernel_write(): safely attempt to write to a location 100 * probe_kernel_write(): safely attempt to write to a location
@@ -104,6 +105,7 @@ extern long probe_kernel_read(void *dst, void *src, size_t size);
104 * Safely write to address @dst from the buffer at @src. If a kernel fault 105 * Safely write to address @dst from the buffer at @src. If a kernel fault
105 * happens, handle that and return -EFAULT. 106 * happens, handle that and return -EFAULT.
106 */ 107 */
107extern long probe_kernel_write(void *dst, void *src, size_t size); 108extern long notrace probe_kernel_write(void *dst, void *src, size_t size);
109extern long notrace __probe_kernel_write(void *dst, void *src, size_t size);
108 110
109#endif /* __LINUX_UACCESS_H__ */ 111#endif /* __LINUX_UACCESS_H__ */
diff --git a/include/linux/usb.h b/include/linux/usb.h
index e101a2d04d75..d7ace1b80f09 100644
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
@@ -192,6 +192,7 @@ struct usb_interface {
192 unsigned needs_altsetting0:1; /* switch to altsetting 0 is pending */ 192 unsigned needs_altsetting0:1; /* switch to altsetting 0 is pending */
193 unsigned needs_binding:1; /* needs delayed unbind/rebind */ 193 unsigned needs_binding:1; /* needs delayed unbind/rebind */
194 unsigned reset_running:1; 194 unsigned reset_running:1;
195 unsigned resetting_device:1; /* true: bandwidth alloc after reset */
195 196
196 struct device dev; /* interface specific device info */ 197 struct device dev; /* interface specific device info */
197 struct device *usb_dev; 198 struct device *usb_dev;
diff --git a/include/linux/writeback.h b/include/linux/writeback.h
index c18c008f4bbf..76e8903cd204 100644
--- a/include/linux/writeback.h
+++ b/include/linux/writeback.h
@@ -70,6 +70,7 @@ struct writeback_control {
70struct bdi_writeback; 70struct bdi_writeback;
71int inode_wait(void *); 71int inode_wait(void *);
72void writeback_inodes_sb(struct super_block *); 72void writeback_inodes_sb(struct super_block *);
73int writeback_inodes_sb_if_idle(struct super_block *);
73void sync_inodes_sb(struct super_block *); 74void sync_inodes_sb(struct super_block *);
74void writeback_inodes_wbc(struct writeback_control *wbc); 75void writeback_inodes_wbc(struct writeback_control *wbc);
75long wb_do_writeback(struct bdi_writeback *wb, int force_wait); 76long wb_do_writeback(struct bdi_writeback *wb, int force_wait);
diff --git a/include/net/ip.h b/include/net/ip.h
index 85108cfbb1ae..fb63371c07a8 100644
--- a/include/net/ip.h
+++ b/include/net/ip.h
@@ -326,6 +326,22 @@ static __inline__ void inet_reset_saddr(struct sock *sk)
326 326
327#endif 327#endif
328 328
329static inline int sk_mc_loop(struct sock *sk)
330{
331 if (!sk)
332 return 1;
333 switch (sk->sk_family) {
334 case AF_INET:
335 return inet_sk(sk)->mc_loop;
336#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
337 case AF_INET6:
338 return inet6_sk(sk)->mc_loop;
339#endif
340 }
341 WARN_ON(1);
342 return 1;
343}
344
329extern int ip_call_ra_chain(struct sk_buff *skb); 345extern int ip_call_ra_chain(struct sk_buff *skb);
330 346
331/* 347/*
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 2aff4906b2ae..0bf369752274 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -547,7 +547,6 @@ enum mac80211_rx_flags {
547 * unspecified depending on the hardware capabilities flags 547 * unspecified depending on the hardware capabilities flags
548 * @IEEE80211_HW_SIGNAL_* 548 * @IEEE80211_HW_SIGNAL_*
549 * @noise: noise when receiving this frame, in dBm. 549 * @noise: noise when receiving this frame, in dBm.
550 * @qual: overall signal quality indication, in percent (0-100).
551 * @antenna: antenna used 550 * @antenna: antenna used
552 * @rate_idx: index of data rate into band's supported rates or MCS index if 551 * @rate_idx: index of data rate into band's supported rates or MCS index if
553 * HT rates are use (RX_FLAG_HT) 552 * HT rates are use (RX_FLAG_HT)
@@ -559,7 +558,6 @@ struct ieee80211_rx_status {
559 int freq; 558 int freq;
560 int signal; 559 int signal;
561 int noise; 560 int noise;
562 int __deprecated qual;
563 int antenna; 561 int antenna;
564 int rate_idx; 562 int rate_idx;
565 int flag; 563 int flag;
@@ -1737,6 +1735,12 @@ static inline void ieee80211_rx_ni(struct ieee80211_hw *hw,
1737 local_bh_enable(); 1735 local_bh_enable();
1738} 1736}
1739 1737
1738/*
1739 * The TX headroom reserved by mac80211 for its own tx_status functions.
1740 * This is enough for the radiotap header.
1741 */
1742#define IEEE80211_TX_STATUS_HEADROOM 13
1743
1740/** 1744/**
1741 * ieee80211_tx_status - transmit status callback 1745 * ieee80211_tx_status - transmit status callback
1742 * 1746 *
diff --git a/include/net/netns/conntrack.h b/include/net/netns/conntrack.h
index ba1ba0c5efd1..63d449807d9b 100644
--- a/include/net/netns/conntrack.h
+++ b/include/net/netns/conntrack.h
@@ -11,6 +11,8 @@ struct nf_conntrack_ecache;
11struct netns_ct { 11struct netns_ct {
12 atomic_t count; 12 atomic_t count;
13 unsigned int expect_count; 13 unsigned int expect_count;
14 unsigned int htable_size;
15 struct kmem_cache *nf_conntrack_cachep;
14 struct hlist_nulls_head *hash; 16 struct hlist_nulls_head *hash;
15 struct hlist_head *expect_hash; 17 struct hlist_head *expect_hash;
16 struct hlist_nulls_head unconfirmed; 18 struct hlist_nulls_head unconfirmed;
@@ -28,5 +30,6 @@ struct netns_ct {
28#endif 30#endif
29 int hash_vmalloc; 31 int hash_vmalloc;
30 int expect_vmalloc; 32 int expect_vmalloc;
33 char *slabname;
31}; 34};
32#endif 35#endif
diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h
index 2eb3814d6258..9a4b8b714079 100644
--- a/include/net/netns/ipv4.h
+++ b/include/net/netns/ipv4.h
@@ -40,6 +40,7 @@ struct netns_ipv4 {
40 struct xt_table *iptable_security; 40 struct xt_table *iptable_security;
41 struct xt_table *nat_table; 41 struct xt_table *nat_table;
42 struct hlist_head *nat_bysource; 42 struct hlist_head *nat_bysource;
43 unsigned int nat_htable_size;
43 int nat_vmalloced; 44 int nat_vmalloced;
44#endif 45#endif
45 46
diff --git a/include/net/netns/xfrm.h b/include/net/netns/xfrm.h
index 56f8e5585df7..74f119a2829a 100644
--- a/include/net/netns/xfrm.h
+++ b/include/net/netns/xfrm.h
@@ -5,6 +5,7 @@
5#include <linux/wait.h> 5#include <linux/wait.h>
6#include <linux/workqueue.h> 6#include <linux/workqueue.h>
7#include <linux/xfrm.h> 7#include <linux/xfrm.h>
8#include <net/dst_ops.h>
8 9
9struct ctl_table_header; 10struct ctl_table_header;
10 11
@@ -42,6 +43,11 @@ struct netns_xfrm {
42 unsigned int policy_count[XFRM_POLICY_MAX * 2]; 43 unsigned int policy_count[XFRM_POLICY_MAX * 2];
43 struct work_struct policy_hash_work; 44 struct work_struct policy_hash_work;
44 45
46 struct dst_ops xfrm4_dst_ops;
47#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
48 struct dst_ops xfrm6_dst_ops;
49#endif
50
45 struct sock *nlsk; 51 struct sock *nlsk;
46 struct sock *nlsk_stash; 52 struct sock *nlsk_stash;
47 53
diff --git a/include/net/netrom.h b/include/net/netrom.h
index 15696b1fd30f..ab170a60e7d3 100644
--- a/include/net/netrom.h
+++ b/include/net/netrom.h
@@ -132,6 +132,8 @@ static __inline__ void nr_node_put(struct nr_node *nr_node)
132static __inline__ void nr_neigh_put(struct nr_neigh *nr_neigh) 132static __inline__ void nr_neigh_put(struct nr_neigh *nr_neigh)
133{ 133{
134 if (atomic_dec_and_test(&nr_neigh->refcount)) { 134 if (atomic_dec_and_test(&nr_neigh->refcount)) {
135 if (nr_neigh->ax25)
136 ax25_cb_put(nr_neigh->ax25);
135 kfree(nr_neigh->digipeat); 137 kfree(nr_neigh->digipeat);
136 kfree(nr_neigh); 138 kfree(nr_neigh);
137 } 139 }
diff --git a/include/net/xfrm.h b/include/net/xfrm.h
index 6d85861ab990..60c27706e7b9 100644
--- a/include/net/xfrm.h
+++ b/include/net/xfrm.h
@@ -1367,8 +1367,8 @@ struct xfrmk_spdinfo {
1367extern struct xfrm_state *xfrm_find_acq_byseq(struct net *net, u32 seq); 1367extern struct xfrm_state *xfrm_find_acq_byseq(struct net *net, u32 seq);
1368extern int xfrm_state_delete(struct xfrm_state *x); 1368extern int xfrm_state_delete(struct xfrm_state *x);
1369extern int xfrm_state_flush(struct net *net, u8 proto, struct xfrm_audit *audit_info); 1369extern int xfrm_state_flush(struct net *net, u8 proto, struct xfrm_audit *audit_info);
1370extern void xfrm_sad_getinfo(struct xfrmk_sadinfo *si); 1370extern void xfrm_sad_getinfo(struct net *net, struct xfrmk_sadinfo *si);
1371extern void xfrm_spd_getinfo(struct xfrmk_spdinfo *si); 1371extern void xfrm_spd_getinfo(struct net *net, struct xfrmk_spdinfo *si);
1372extern int xfrm_replay_check(struct xfrm_state *x, 1372extern int xfrm_replay_check(struct xfrm_state *x,
1373 struct sk_buff *skb, __be32 seq); 1373 struct sk_buff *skb, __be32 seq);
1374extern void xfrm_replay_advance(struct xfrm_state *x, __be32 seq); 1374extern void xfrm_replay_advance(struct xfrm_state *x, __be32 seq);
diff --git a/include/scsi/libsrp.h b/include/scsi/libsrp.h
index 07e3adde21d9..f4105c91af53 100644
--- a/include/scsi/libsrp.h
+++ b/include/scsi/libsrp.h
@@ -2,6 +2,7 @@
2#define __LIBSRP_H__ 2#define __LIBSRP_H__
3 3
4#include <linux/list.h> 4#include <linux/list.h>
5#include <linux/kfifo.h>
5#include <scsi/scsi_cmnd.h> 6#include <scsi/scsi_cmnd.h>
6#include <scsi/scsi_host.h> 7#include <scsi/scsi_host.h>
7#include <scsi/srp.h> 8#include <scsi/srp.h>
diff --git a/include/scsi/scsi_bsg_fc.h b/include/scsi/scsi_bsg_fc.h
index a4b233318179..91a4e4ff9a9b 100644
--- a/include/scsi/scsi_bsg_fc.h
+++ b/include/scsi/scsi_bsg_fc.h
@@ -292,7 +292,7 @@ struct fc_bsg_request {
292 struct fc_bsg_rport_els r_els; 292 struct fc_bsg_rport_els r_els;
293 struct fc_bsg_rport_ct r_ct; 293 struct fc_bsg_rport_ct r_ct;
294 } rqst_data; 294 } rqst_data;
295}; 295} __attribute__((packed));
296 296
297 297
298/* response (request sense data) structure of the sg_io_v4 */ 298/* response (request sense data) structure of the sg_io_v4 */
diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h
index 73523151a731..c6fe03e902ca 100644
--- a/include/trace/ftrace.h
+++ b/include/trace/ftrace.h
@@ -414,7 +414,8 @@ ftrace_raw_output_##call(struct trace_iterator *iter, int flags) \
414 BUILD_BUG_ON(len > MAX_FILTER_STR_VAL); \ 414 BUILD_BUG_ON(len > MAX_FILTER_STR_VAL); \
415 ret = trace_define_field(event_call, #type "[" #len "]", #item, \ 415 ret = trace_define_field(event_call, #type "[" #len "]", #item, \
416 offsetof(typeof(field), item), \ 416 offsetof(typeof(field), item), \
417 sizeof(field.item), 0, FILTER_OTHER); \ 417 sizeof(field.item), \
418 is_signed_type(type), FILTER_OTHER); \
418 if (ret) \ 419 if (ret) \
419 return ret; 420 return ret;
420 421
@@ -422,8 +423,8 @@ ftrace_raw_output_##call(struct trace_iterator *iter, int flags) \
422#define __dynamic_array(type, item, len) \ 423#define __dynamic_array(type, item, len) \
423 ret = trace_define_field(event_call, "__data_loc " #type "[]", #item, \ 424 ret = trace_define_field(event_call, "__data_loc " #type "[]", #item, \
424 offsetof(typeof(field), __data_loc_##item), \ 425 offsetof(typeof(field), __data_loc_##item), \
425 sizeof(field.__data_loc_##item), 0, \ 426 sizeof(field.__data_loc_##item), \
426 FILTER_OTHER); 427 is_signed_type(type), FILTER_OTHER);
427 428
428#undef __string 429#undef __string
429#define __string(item, src) __dynamic_array(char, item, -1) 430#define __string(item, src) __dynamic_array(char, item, -1)
diff --git a/init/Kconfig b/init/Kconfig
index a23da9f01803..d95ca7cd5d45 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -115,10 +115,13 @@ config HAVE_KERNEL_BZIP2
115config HAVE_KERNEL_LZMA 115config HAVE_KERNEL_LZMA
116 bool 116 bool
117 117
118config HAVE_KERNEL_LZO
119 bool
120
118choice 121choice
119 prompt "Kernel compression mode" 122 prompt "Kernel compression mode"
120 default KERNEL_GZIP 123 default KERNEL_GZIP
121 depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA 124 depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_LZO
122 help 125 help
123 The linux kernel is a kind of self-extracting executable. 126 The linux kernel is a kind of self-extracting executable.
124 Several compression algorithms are available, which differ 127 Several compression algorithms are available, which differ
@@ -141,9 +144,8 @@ config KERNEL_GZIP
141 bool "Gzip" 144 bool "Gzip"
142 depends on HAVE_KERNEL_GZIP 145 depends on HAVE_KERNEL_GZIP
143 help 146 help
144 The old and tried gzip compression. Its compression ratio is 147 The old and tried gzip compression. It provides a good balance
145 the poorest among the 3 choices; however its speed (both 148 between compression ratio and decompression speed.
146 compression and decompression) is the fastest.
147 149
148config KERNEL_BZIP2 150config KERNEL_BZIP2
149 bool "Bzip2" 151 bool "Bzip2"
@@ -164,6 +166,14 @@ config KERNEL_LZMA
164 two. Compression is slowest. The kernel size is about 33% 166 two. Compression is slowest. The kernel size is about 33%
165 smaller with LZMA in comparison to gzip. 167 smaller with LZMA in comparison to gzip.
166 168
169config KERNEL_LZO
170 bool "LZO"
171 depends on HAVE_KERNEL_LZO
172 help
173 Its compression ratio is the poorest among the 4. The kernel
174 size is about about 10% bigger than gzip; however its speed
175 (both compression and decompression) is the fastest.
176
167endchoice 177endchoice
168 178
169config SWAP 179config SWAP
diff --git a/init/main.c b/init/main.c
index dac44a9356a5..4cb47a159f02 100644
--- a/init/main.c
+++ b/init/main.c
@@ -657,9 +657,9 @@ asmlinkage void __init start_kernel(void)
657 proc_caches_init(); 657 proc_caches_init();
658 buffer_init(); 658 buffer_init();
659 key_init(); 659 key_init();
660 radix_tree_init();
660 security_init(); 661 security_init();
661 vfs_caches_init(totalram_pages); 662 vfs_caches_init(totalram_pages);
662 radix_tree_init();
663 signals_init(); 663 signals_init();
664 /* rootfs populating might need page-writeback */ 664 /* rootfs populating might need page-writeback */
665 page_writeback_init(); 665 page_writeback_init();
diff --git a/ipc/shm.c b/ipc/shm.c
index 92fe9236258b..23256b855819 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -298,6 +298,9 @@ static const struct file_operations shm_file_operations = {
298 .mmap = shm_mmap, 298 .mmap = shm_mmap,
299 .fsync = shm_fsync, 299 .fsync = shm_fsync,
300 .release = shm_release, 300 .release = shm_release,
301#ifndef CONFIG_MMU
302 .get_unmapped_area = shm_get_unmapped_area,
303#endif
301}; 304};
302 305
303static const struct file_operations shm_file_operations_huge = { 306static const struct file_operations shm_file_operations_huge = {
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 0249f4be9b5c..aa3bee566446 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -2468,7 +2468,6 @@ static struct cgroup_pidlist *cgroup_pidlist_find(struct cgroup *cgrp,
2468 /* make sure l doesn't vanish out from under us */ 2468 /* make sure l doesn't vanish out from under us */
2469 down_write(&l->mutex); 2469 down_write(&l->mutex);
2470 mutex_unlock(&cgrp->pidlist_mutex); 2470 mutex_unlock(&cgrp->pidlist_mutex);
2471 l->use_count++;
2472 return l; 2471 return l;
2473 } 2472 }
2474 } 2473 }
@@ -2937,14 +2936,17 @@ static long cgroup_create(struct cgroup *parent, struct dentry *dentry,
2937 2936
2938 for_each_subsys(root, ss) { 2937 for_each_subsys(root, ss) {
2939 struct cgroup_subsys_state *css = ss->create(ss, cgrp); 2938 struct cgroup_subsys_state *css = ss->create(ss, cgrp);
2939
2940 if (IS_ERR(css)) { 2940 if (IS_ERR(css)) {
2941 err = PTR_ERR(css); 2941 err = PTR_ERR(css);
2942 goto err_destroy; 2942 goto err_destroy;
2943 } 2943 }
2944 init_cgroup_css(css, ss, cgrp); 2944 init_cgroup_css(css, ss, cgrp);
2945 if (ss->use_id) 2945 if (ss->use_id) {
2946 if (alloc_css_id(ss, parent, cgrp)) 2946 err = alloc_css_id(ss, parent, cgrp);
2947 if (err)
2947 goto err_destroy; 2948 goto err_destroy;
2949 }
2948 /* At error, ->destroy() callback has to free assigned ID. */ 2950 /* At error, ->destroy() callback has to free assigned ID. */
2949 } 2951 }
2950 2952
diff --git a/kernel/cpu.c b/kernel/cpu.c
index 1c8ddd6ee940..677f25376a38 100644
--- a/kernel/cpu.c
+++ b/kernel/cpu.c
@@ -151,13 +151,13 @@ static inline void check_for_tasks(int cpu)
151 151
152 write_lock_irq(&tasklist_lock); 152 write_lock_irq(&tasklist_lock);
153 for_each_process(p) { 153 for_each_process(p) {
154 if (task_cpu(p) == cpu && 154 if (task_cpu(p) == cpu && p->state == TASK_RUNNING &&
155 (!cputime_eq(p->utime, cputime_zero) || 155 (!cputime_eq(p->utime, cputime_zero) ||
156 !cputime_eq(p->stime, cputime_zero))) 156 !cputime_eq(p->stime, cputime_zero)))
157 printk(KERN_WARNING "Task %s (pid = %d) is on cpu %d\ 157 printk(KERN_WARNING "Task %s (pid = %d) is on cpu %d "
158 (state = %ld, flags = %x) \n", 158 "(state = %ld, flags = %x)\n",
159 p->comm, task_pid_nr(p), cpu, 159 p->comm, task_pid_nr(p), cpu,
160 p->state, p->flags); 160 p->state, p->flags);
161 } 161 }
162 write_unlock_irq(&tasklist_lock); 162 write_unlock_irq(&tasklist_lock);
163} 163}
diff --git a/kernel/cred.c b/kernel/cred.c
index dd76cfe5f5b0..1ed8ca18790c 100644
--- a/kernel/cred.c
+++ b/kernel/cred.c
@@ -224,7 +224,7 @@ struct cred *cred_alloc_blank(void)
224#ifdef CONFIG_KEYS 224#ifdef CONFIG_KEYS
225 new->tgcred = kzalloc(sizeof(*new->tgcred), GFP_KERNEL); 225 new->tgcred = kzalloc(sizeof(*new->tgcred), GFP_KERNEL);
226 if (!new->tgcred) { 226 if (!new->tgcred) {
227 kfree(new); 227 kmem_cache_free(cred_jar, new);
228 return NULL; 228 return NULL;
229 } 229 }
230 atomic_set(&new->tgcred->usage, 1); 230 atomic_set(&new->tgcred->usage, 1);
diff --git a/kernel/fork.c b/kernel/fork.c
index 5b2959b3ffc2..f88bd984df35 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -1241,21 +1241,6 @@ static struct task_struct *copy_process(unsigned long clone_flags,
1241 /* Need tasklist lock for parent etc handling! */ 1241 /* Need tasklist lock for parent etc handling! */
1242 write_lock_irq(&tasklist_lock); 1242 write_lock_irq(&tasklist_lock);
1243 1243
1244 /*
1245 * The task hasn't been attached yet, so its cpus_allowed mask will
1246 * not be changed, nor will its assigned CPU.
1247 *
1248 * The cpus_allowed mask of the parent may have changed after it was
1249 * copied first time - so re-copy it here, then check the child's CPU
1250 * to ensure it is on a valid CPU (and if not, just force it back to
1251 * parent's CPU). This avoids alot of nasty races.
1252 */
1253 p->cpus_allowed = current->cpus_allowed;
1254 p->rt.nr_cpus_allowed = current->rt.nr_cpus_allowed;
1255 if (unlikely(!cpu_isset(task_cpu(p), p->cpus_allowed) ||
1256 !cpu_online(task_cpu(p))))
1257 set_task_cpu(p, smp_processor_id());
1258
1259 /* CLONE_PARENT re-uses the old parent */ 1244 /* CLONE_PARENT re-uses the old parent */
1260 if (clone_flags & (CLONE_PARENT|CLONE_THREAD)) { 1245 if (clone_flags & (CLONE_PARENT|CLONE_THREAD)) {
1261 p->real_parent = current->real_parent; 1246 p->real_parent = current->real_parent;
diff --git a/kernel/futex.c b/kernel/futex.c
index 8e3c3ffe1b9a..e7a35f1039e7 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -203,8 +203,6 @@ static void drop_futex_key_refs(union futex_key *key)
203 * @uaddr: virtual address of the futex 203 * @uaddr: virtual address of the futex
204 * @fshared: 0 for a PROCESS_PRIVATE futex, 1 for PROCESS_SHARED 204 * @fshared: 0 for a PROCESS_PRIVATE futex, 1 for PROCESS_SHARED
205 * @key: address where result is stored. 205 * @key: address where result is stored.
206 * @rw: mapping needs to be read/write (values: VERIFY_READ,
207 * VERIFY_WRITE)
208 * 206 *
209 * Returns a negative error code or 0 207 * Returns a negative error code or 0
210 * The key words are stored in *key on success. 208 * The key words are stored in *key on success.
@@ -216,7 +214,7 @@ static void drop_futex_key_refs(union futex_key *key)
216 * lock_page() might sleep, the caller should not hold a spinlock. 214 * lock_page() might sleep, the caller should not hold a spinlock.
217 */ 215 */
218static int 216static int
219get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw) 217get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key)
220{ 218{
221 unsigned long address = (unsigned long)uaddr; 219 unsigned long address = (unsigned long)uaddr;
222 struct mm_struct *mm = current->mm; 220 struct mm_struct *mm = current->mm;
@@ -239,7 +237,7 @@ get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw)
239 * but access_ok() should be faster than find_vma() 237 * but access_ok() should be faster than find_vma()
240 */ 238 */
241 if (!fshared) { 239 if (!fshared) {
242 if (unlikely(!access_ok(rw, uaddr, sizeof(u32)))) 240 if (unlikely(!access_ok(VERIFY_WRITE, uaddr, sizeof(u32))))
243 return -EFAULT; 241 return -EFAULT;
244 key->private.mm = mm; 242 key->private.mm = mm;
245 key->private.address = address; 243 key->private.address = address;
@@ -248,7 +246,7 @@ get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw)
248 } 246 }
249 247
250again: 248again:
251 err = get_user_pages_fast(address, 1, rw == VERIFY_WRITE, &page); 249 err = get_user_pages_fast(address, 1, 1, &page);
252 if (err < 0) 250 if (err < 0)
253 return err; 251 return err;
254 252
@@ -532,8 +530,25 @@ lookup_pi_state(u32 uval, struct futex_hash_bucket *hb,
532 return -EINVAL; 530 return -EINVAL;
533 531
534 WARN_ON(!atomic_read(&pi_state->refcount)); 532 WARN_ON(!atomic_read(&pi_state->refcount));
535 WARN_ON(pid && pi_state->owner && 533
536 pi_state->owner->pid != pid); 534 /*
535 * When pi_state->owner is NULL then the owner died
536 * and another waiter is on the fly. pi_state->owner
537 * is fixed up by the task which acquires
538 * pi_state->rt_mutex.
539 *
540 * We do not check for pid == 0 which can happen when
541 * the owner died and robust_list_exit() cleared the
542 * TID.
543 */
544 if (pid && pi_state->owner) {
545 /*
546 * Bail out if user space manipulated the
547 * futex value.
548 */
549 if (pid != task_pid_vnr(pi_state->owner))
550 return -EINVAL;
551 }
537 552
538 atomic_inc(&pi_state->refcount); 553 atomic_inc(&pi_state->refcount);
539 *ps = pi_state; 554 *ps = pi_state;
@@ -760,6 +775,13 @@ static int wake_futex_pi(u32 __user *uaddr, u32 uval, struct futex_q *this)
760 if (!pi_state) 775 if (!pi_state)
761 return -EINVAL; 776 return -EINVAL;
762 777
778 /*
779 * If current does not own the pi_state then the futex is
780 * inconsistent and user space fiddled with the futex value.
781 */
782 if (pi_state->owner != current)
783 return -EINVAL;
784
763 raw_spin_lock(&pi_state->pi_mutex.wait_lock); 785 raw_spin_lock(&pi_state->pi_mutex.wait_lock);
764 new_owner = rt_mutex_next_owner(&pi_state->pi_mutex); 786 new_owner = rt_mutex_next_owner(&pi_state->pi_mutex);
765 787
@@ -867,7 +889,7 @@ static int futex_wake(u32 __user *uaddr, int fshared, int nr_wake, u32 bitset)
867 if (!bitset) 889 if (!bitset)
868 return -EINVAL; 890 return -EINVAL;
869 891
870 ret = get_futex_key(uaddr, fshared, &key, VERIFY_READ); 892 ret = get_futex_key(uaddr, fshared, &key);
871 if (unlikely(ret != 0)) 893 if (unlikely(ret != 0))
872 goto out; 894 goto out;
873 895
@@ -913,10 +935,10 @@ futex_wake_op(u32 __user *uaddr1, int fshared, u32 __user *uaddr2,
913 int ret, op_ret; 935 int ret, op_ret;
914 936
915retry: 937retry:
916 ret = get_futex_key(uaddr1, fshared, &key1, VERIFY_READ); 938 ret = get_futex_key(uaddr1, fshared, &key1);
917 if (unlikely(ret != 0)) 939 if (unlikely(ret != 0))
918 goto out; 940 goto out;
919 ret = get_futex_key(uaddr2, fshared, &key2, VERIFY_WRITE); 941 ret = get_futex_key(uaddr2, fshared, &key2);
920 if (unlikely(ret != 0)) 942 if (unlikely(ret != 0))
921 goto out_put_key1; 943 goto out_put_key1;
922 944
@@ -1175,11 +1197,10 @@ retry:
1175 pi_state = NULL; 1197 pi_state = NULL;
1176 } 1198 }
1177 1199
1178 ret = get_futex_key(uaddr1, fshared, &key1, VERIFY_READ); 1200 ret = get_futex_key(uaddr1, fshared, &key1);
1179 if (unlikely(ret != 0)) 1201 if (unlikely(ret != 0))
1180 goto out; 1202 goto out;
1181 ret = get_futex_key(uaddr2, fshared, &key2, 1203 ret = get_futex_key(uaddr2, fshared, &key2);
1182 requeue_pi ? VERIFY_WRITE : VERIFY_READ);
1183 if (unlikely(ret != 0)) 1204 if (unlikely(ret != 0))
1184 goto out_put_key1; 1205 goto out_put_key1;
1185 1206
@@ -1738,7 +1759,7 @@ static int futex_wait_setup(u32 __user *uaddr, u32 val, int fshared,
1738 */ 1759 */
1739retry: 1760retry:
1740 q->key = FUTEX_KEY_INIT; 1761 q->key = FUTEX_KEY_INIT;
1741 ret = get_futex_key(uaddr, fshared, &q->key, VERIFY_READ); 1762 ret = get_futex_key(uaddr, fshared, &q->key);
1742 if (unlikely(ret != 0)) 1763 if (unlikely(ret != 0))
1743 return ret; 1764 return ret;
1744 1765
@@ -1904,7 +1925,7 @@ static int futex_lock_pi(u32 __user *uaddr, int fshared,
1904 q.requeue_pi_key = NULL; 1925 q.requeue_pi_key = NULL;
1905retry: 1926retry:
1906 q.key = FUTEX_KEY_INIT; 1927 q.key = FUTEX_KEY_INIT;
1907 ret = get_futex_key(uaddr, fshared, &q.key, VERIFY_WRITE); 1928 ret = get_futex_key(uaddr, fshared, &q.key);
1908 if (unlikely(ret != 0)) 1929 if (unlikely(ret != 0))
1909 goto out; 1930 goto out;
1910 1931
@@ -1974,7 +1995,7 @@ retry_private:
1974 /* Unqueue and drop the lock */ 1995 /* Unqueue and drop the lock */
1975 unqueue_me_pi(&q); 1996 unqueue_me_pi(&q);
1976 1997
1977 goto out; 1998 goto out_put_key;
1978 1999
1979out_unlock_put_key: 2000out_unlock_put_key:
1980 queue_unlock(&q, hb); 2001 queue_unlock(&q, hb);
@@ -2023,7 +2044,7 @@ retry:
2023 if ((uval & FUTEX_TID_MASK) != task_pid_vnr(current)) 2044 if ((uval & FUTEX_TID_MASK) != task_pid_vnr(current))
2024 return -EPERM; 2045 return -EPERM;
2025 2046
2026 ret = get_futex_key(uaddr, fshared, &key, VERIFY_WRITE); 2047 ret = get_futex_key(uaddr, fshared, &key);
2027 if (unlikely(ret != 0)) 2048 if (unlikely(ret != 0))
2028 goto out; 2049 goto out;
2029 2050
@@ -2215,7 +2236,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, int fshared,
2215 rt_waiter.task = NULL; 2236 rt_waiter.task = NULL;
2216 2237
2217 key2 = FUTEX_KEY_INIT; 2238 key2 = FUTEX_KEY_INIT;
2218 ret = get_futex_key(uaddr2, fshared, &key2, VERIFY_WRITE); 2239 ret = get_futex_key(uaddr2, fshared, &key2);
2219 if (unlikely(ret != 0)) 2240 if (unlikely(ret != 0))
2220 goto out; 2241 goto out;
2221 2242
diff --git a/kernel/hw_breakpoint.c b/kernel/hw_breakpoint.c
index dbcbf6a33a08..967e66143e11 100644
--- a/kernel/hw_breakpoint.c
+++ b/kernel/hw_breakpoint.c
@@ -40,6 +40,7 @@
40#include <linux/percpu.h> 40#include <linux/percpu.h>
41#include <linux/sched.h> 41#include <linux/sched.h>
42#include <linux/init.h> 42#include <linux/init.h>
43#include <linux/cpu.h>
43#include <linux/smp.h> 44#include <linux/smp.h>
44 45
45#include <linux/hw_breakpoint.h> 46#include <linux/hw_breakpoint.h>
@@ -242,38 +243,70 @@ static void toggle_bp_slot(struct perf_event *bp, bool enable)
242 * ((per_cpu(nr_bp_flexible, *) > 1) + max(per_cpu(nr_cpu_bp_pinned, *)) 243 * ((per_cpu(nr_bp_flexible, *) > 1) + max(per_cpu(nr_cpu_bp_pinned, *))
243 * + max(per_cpu(nr_task_bp_pinned, *))) < HBP_NUM 244 * + max(per_cpu(nr_task_bp_pinned, *))) < HBP_NUM
244 */ 245 */
245int reserve_bp_slot(struct perf_event *bp) 246static int __reserve_bp_slot(struct perf_event *bp)
246{ 247{
247 struct bp_busy_slots slots = {0}; 248 struct bp_busy_slots slots = {0};
248 int ret = 0;
249
250 mutex_lock(&nr_bp_mutex);
251 249
252 fetch_bp_busy_slots(&slots, bp); 250 fetch_bp_busy_slots(&slots, bp);
253 251
254 /* Flexible counters need to keep at least one slot */ 252 /* Flexible counters need to keep at least one slot */
255 if (slots.pinned + (!!slots.flexible) == HBP_NUM) { 253 if (slots.pinned + (!!slots.flexible) == HBP_NUM)
256 ret = -ENOSPC; 254 return -ENOSPC;
257 goto end;
258 }
259 255
260 toggle_bp_slot(bp, true); 256 toggle_bp_slot(bp, true);
261 257
262end: 258 return 0;
259}
260
261int reserve_bp_slot(struct perf_event *bp)
262{
263 int ret;
264
265 mutex_lock(&nr_bp_mutex);
266
267 ret = __reserve_bp_slot(bp);
268
263 mutex_unlock(&nr_bp_mutex); 269 mutex_unlock(&nr_bp_mutex);
264 270
265 return ret; 271 return ret;
266} 272}
267 273
274static void __release_bp_slot(struct perf_event *bp)
275{
276 toggle_bp_slot(bp, false);
277}
278
268void release_bp_slot(struct perf_event *bp) 279void release_bp_slot(struct perf_event *bp)
269{ 280{
270 mutex_lock(&nr_bp_mutex); 281 mutex_lock(&nr_bp_mutex);
271 282
272 toggle_bp_slot(bp, false); 283 __release_bp_slot(bp);
273 284
274 mutex_unlock(&nr_bp_mutex); 285 mutex_unlock(&nr_bp_mutex);
275} 286}
276 287
288/*
289 * Allow the kernel debugger to reserve breakpoint slots without
290 * taking a lock using the dbg_* variant of for the reserve and
291 * release breakpoint slots.
292 */
293int dbg_reserve_bp_slot(struct perf_event *bp)
294{
295 if (mutex_is_locked(&nr_bp_mutex))
296 return -1;
297
298 return __reserve_bp_slot(bp);
299}
300
301int dbg_release_bp_slot(struct perf_event *bp)
302{
303 if (mutex_is_locked(&nr_bp_mutex))
304 return -1;
305
306 __release_bp_slot(bp);
307
308 return 0;
309}
277 310
278int register_perf_hw_breakpoint(struct perf_event *bp) 311int register_perf_hw_breakpoint(struct perf_event *bp)
279{ 312{
@@ -295,6 +328,10 @@ int register_perf_hw_breakpoint(struct perf_event *bp)
295 if (!bp->attr.disabled || !bp->overflow_handler) 328 if (!bp->attr.disabled || !bp->overflow_handler)
296 ret = arch_validate_hwbkpt_settings(bp, bp->ctx->task); 329 ret = arch_validate_hwbkpt_settings(bp, bp->ctx->task);
297 330
331 /* if arch_validate_hwbkpt_settings() fails then release bp slot */
332 if (ret)
333 release_bp_slot(bp);
334
298 return ret; 335 return ret;
299} 336}
300 337
@@ -323,8 +360,8 @@ EXPORT_SYMBOL_GPL(register_user_hw_breakpoint);
323int modify_user_hw_breakpoint(struct perf_event *bp, struct perf_event_attr *attr) 360int modify_user_hw_breakpoint(struct perf_event *bp, struct perf_event_attr *attr)
324{ 361{
325 u64 old_addr = bp->attr.bp_addr; 362 u64 old_addr = bp->attr.bp_addr;
363 u64 old_len = bp->attr.bp_len;
326 int old_type = bp->attr.bp_type; 364 int old_type = bp->attr.bp_type;
327 int old_len = bp->attr.bp_len;
328 int err = 0; 365 int err = 0;
329 366
330 perf_event_disable(bp); 367 perf_event_disable(bp);
@@ -388,7 +425,8 @@ register_wide_hw_breakpoint(struct perf_event_attr *attr,
388 if (!cpu_events) 425 if (!cpu_events)
389 return ERR_PTR(-ENOMEM); 426 return ERR_PTR(-ENOMEM);
390 427
391 for_each_possible_cpu(cpu) { 428 get_online_cpus();
429 for_each_online_cpu(cpu) {
392 pevent = per_cpu_ptr(cpu_events, cpu); 430 pevent = per_cpu_ptr(cpu_events, cpu);
393 bp = perf_event_create_kernel_counter(attr, cpu, -1, triggered); 431 bp = perf_event_create_kernel_counter(attr, cpu, -1, triggered);
394 432
@@ -399,18 +437,20 @@ register_wide_hw_breakpoint(struct perf_event_attr *attr,
399 goto fail; 437 goto fail;
400 } 438 }
401 } 439 }
440 put_online_cpus();
402 441
403 return cpu_events; 442 return cpu_events;
404 443
405fail: 444fail:
406 for_each_possible_cpu(cpu) { 445 for_each_online_cpu(cpu) {
407 pevent = per_cpu_ptr(cpu_events, cpu); 446 pevent = per_cpu_ptr(cpu_events, cpu);
408 if (IS_ERR(*pevent)) 447 if (IS_ERR(*pevent))
409 break; 448 break;
410 unregister_hw_breakpoint(*pevent); 449 unregister_hw_breakpoint(*pevent);
411 } 450 }
451 put_online_cpus();
452
412 free_percpu(cpu_events); 453 free_percpu(cpu_events);
413 /* return the error if any */
414 return ERR_PTR(err); 454 return ERR_PTR(err);
415} 455}
416EXPORT_SYMBOL_GPL(register_wide_hw_breakpoint); 456EXPORT_SYMBOL_GPL(register_wide_hw_breakpoint);
diff --git a/kernel/kexec.c b/kernel/kexec.c
index a9a93d9ee7a7..ef077fb73155 100644
--- a/kernel/kexec.c
+++ b/kernel/kexec.c
@@ -32,6 +32,7 @@
32#include <linux/console.h> 32#include <linux/console.h>
33#include <linux/vmalloc.h> 33#include <linux/vmalloc.h>
34#include <linux/swap.h> 34#include <linux/swap.h>
35#include <linux/kmsg_dump.h>
35 36
36#include <asm/page.h> 37#include <asm/page.h>
37#include <asm/uaccess.h> 38#include <asm/uaccess.h>
@@ -1074,6 +1075,9 @@ void crash_kexec(struct pt_regs *regs)
1074 if (mutex_trylock(&kexec_mutex)) { 1075 if (mutex_trylock(&kexec_mutex)) {
1075 if (kexec_crash_image) { 1076 if (kexec_crash_image) {
1076 struct pt_regs fixed_regs; 1077 struct pt_regs fixed_regs;
1078
1079 kmsg_dump(KMSG_DUMP_KEXEC);
1080
1077 crash_setup_regs(&fixed_regs, regs); 1081 crash_setup_regs(&fixed_regs, regs);
1078 crash_save_vmcoreinfo(); 1082 crash_save_vmcoreinfo();
1079 machine_crash_shutdown(&fixed_regs); 1083 machine_crash_shutdown(&fixed_regs);
diff --git a/kernel/kfifo.c b/kernel/kfifo.c
index e92d519f93b1..35edbe22e9a9 100644
--- a/kernel/kfifo.c
+++ b/kernel/kfifo.c
@@ -28,7 +28,7 @@
28#include <linux/log2.h> 28#include <linux/log2.h>
29#include <linux/uaccess.h> 29#include <linux/uaccess.h>
30 30
31static void _kfifo_init(struct kfifo *fifo, unsigned char *buffer, 31static void _kfifo_init(struct kfifo *fifo, void *buffer,
32 unsigned int size) 32 unsigned int size)
33{ 33{
34 fifo->buffer = buffer; 34 fifo->buffer = buffer;
@@ -41,10 +41,10 @@ static void _kfifo_init(struct kfifo *fifo, unsigned char *buffer,
41 * kfifo_init - initialize a FIFO using a preallocated buffer 41 * kfifo_init - initialize a FIFO using a preallocated buffer
42 * @fifo: the fifo to assign the buffer 42 * @fifo: the fifo to assign the buffer
43 * @buffer: the preallocated buffer to be used. 43 * @buffer: the preallocated buffer to be used.
44 * @size: the size of the internal buffer, this have to be a power of 2. 44 * @size: the size of the internal buffer, this has to be a power of 2.
45 * 45 *
46 */ 46 */
47void kfifo_init(struct kfifo *fifo, unsigned char *buffer, unsigned int size) 47void kfifo_init(struct kfifo *fifo, void *buffer, unsigned int size)
48{ 48{
49 /* size must be a power of 2 */ 49 /* size must be a power of 2 */
50 BUG_ON(!is_power_of_2(size)); 50 BUG_ON(!is_power_of_2(size));
@@ -80,7 +80,7 @@ int kfifo_alloc(struct kfifo *fifo, unsigned int size, gfp_t gfp_mask)
80 80
81 buffer = kmalloc(size, gfp_mask); 81 buffer = kmalloc(size, gfp_mask);
82 if (!buffer) { 82 if (!buffer) {
83 _kfifo_init(fifo, 0, 0); 83 _kfifo_init(fifo, NULL, 0);
84 return -ENOMEM; 84 return -ENOMEM;
85 } 85 }
86 86
@@ -97,6 +97,7 @@ EXPORT_SYMBOL(kfifo_alloc);
97void kfifo_free(struct kfifo *fifo) 97void kfifo_free(struct kfifo *fifo)
98{ 98{
99 kfree(fifo->buffer); 99 kfree(fifo->buffer);
100 _kfifo_init(fifo, NULL, 0);
100} 101}
101EXPORT_SYMBOL(kfifo_free); 102EXPORT_SYMBOL(kfifo_free);
102 103
@@ -159,8 +160,9 @@ static inline void __kfifo_out_data(struct kfifo *fifo,
159 memcpy(to + l, fifo->buffer, len - l); 160 memcpy(to + l, fifo->buffer, len - l);
160} 161}
161 162
162static inline unsigned int __kfifo_from_user_data(struct kfifo *fifo, 163static inline int __kfifo_from_user_data(struct kfifo *fifo,
163 const void __user *from, unsigned int len, unsigned int off) 164 const void __user *from, unsigned int len, unsigned int off,
165 unsigned *lenout)
164{ 166{
165 unsigned int l; 167 unsigned int l;
166 int ret; 168 int ret;
@@ -177,16 +179,20 @@ static inline unsigned int __kfifo_from_user_data(struct kfifo *fifo,
177 /* first put the data starting from fifo->in to buffer end */ 179 /* first put the data starting from fifo->in to buffer end */
178 l = min(len, fifo->size - off); 180 l = min(len, fifo->size - off);
179 ret = copy_from_user(fifo->buffer + off, from, l); 181 ret = copy_from_user(fifo->buffer + off, from, l);
180 182 if (unlikely(ret)) {
181 if (unlikely(ret)) 183 *lenout = ret;
182 return ret + len - l; 184 return -EFAULT;
185 }
186 *lenout = l;
183 187
184 /* then put the rest (if any) at the beginning of the buffer */ 188 /* then put the rest (if any) at the beginning of the buffer */
185 return copy_from_user(fifo->buffer, from + l, len - l); 189 ret = copy_from_user(fifo->buffer, from + l, len - l);
190 *lenout += ret ? ret : len - l;
191 return ret ? -EFAULT : 0;
186} 192}
187 193
188static inline unsigned int __kfifo_to_user_data(struct kfifo *fifo, 194static inline int __kfifo_to_user_data(struct kfifo *fifo,
189 void __user *to, unsigned int len, unsigned int off) 195 void __user *to, unsigned int len, unsigned int off, unsigned *lenout)
190{ 196{
191 unsigned int l; 197 unsigned int l;
192 int ret; 198 int ret;
@@ -203,12 +209,21 @@ static inline unsigned int __kfifo_to_user_data(struct kfifo *fifo,
203 /* first get the data from fifo->out until the end of the buffer */ 209 /* first get the data from fifo->out until the end of the buffer */
204 l = min(len, fifo->size - off); 210 l = min(len, fifo->size - off);
205 ret = copy_to_user(to, fifo->buffer + off, l); 211 ret = copy_to_user(to, fifo->buffer + off, l);
206 212 *lenout = l;
207 if (unlikely(ret)) 213 if (unlikely(ret)) {
208 return ret + len - l; 214 *lenout -= ret;
215 return -EFAULT;
216 }
209 217
210 /* then get the rest (if any) from the beginning of the buffer */ 218 /* then get the rest (if any) from the beginning of the buffer */
211 return copy_to_user(to + l, fifo->buffer, len - l); 219 len -= l;
220 ret = copy_to_user(to + l, fifo->buffer, len);
221 if (unlikely(ret)) {
222 *lenout += len - ret;
223 return -EFAULT;
224 }
225 *lenout += len;
226 return 0;
212} 227}
213 228
214unsigned int __kfifo_in_n(struct kfifo *fifo, 229unsigned int __kfifo_in_n(struct kfifo *fifo,
@@ -235,7 +250,7 @@ EXPORT_SYMBOL(__kfifo_in_n);
235 * Note that with only one concurrent reader and one concurrent 250 * Note that with only one concurrent reader and one concurrent
236 * writer, you don't need extra locking to use these functions. 251 * writer, you don't need extra locking to use these functions.
237 */ 252 */
238unsigned int kfifo_in(struct kfifo *fifo, const unsigned char *from, 253unsigned int kfifo_in(struct kfifo *fifo, const void *from,
239 unsigned int len) 254 unsigned int len)
240{ 255{
241 len = min(kfifo_avail(fifo), len); 256 len = min(kfifo_avail(fifo), len);
@@ -277,7 +292,7 @@ EXPORT_SYMBOL(__kfifo_out_n);
277 * Note that with only one concurrent reader and one concurrent 292 * Note that with only one concurrent reader and one concurrent
278 * writer, you don't need extra locking to use these functions. 293 * writer, you don't need extra locking to use these functions.
279 */ 294 */
280unsigned int kfifo_out(struct kfifo *fifo, unsigned char *to, unsigned int len) 295unsigned int kfifo_out(struct kfifo *fifo, void *to, unsigned int len)
281{ 296{
282 len = min(kfifo_len(fifo), len); 297 len = min(kfifo_len(fifo), len);
283 298
@@ -288,6 +303,27 @@ unsigned int kfifo_out(struct kfifo *fifo, unsigned char *to, unsigned int len)
288} 303}
289EXPORT_SYMBOL(kfifo_out); 304EXPORT_SYMBOL(kfifo_out);
290 305
306/**
307 * kfifo_out_peek - copy some data from the FIFO, but do not remove it
308 * @fifo: the fifo to be used.
309 * @to: where the data must be copied.
310 * @len: the size of the destination buffer.
311 * @offset: offset into the fifo
312 *
313 * This function copies at most @len bytes at @offset from the FIFO
314 * into the @to buffer and returns the number of copied bytes.
315 * The data is not removed from the FIFO.
316 */
317unsigned int kfifo_out_peek(struct kfifo *fifo, void *to, unsigned int len,
318 unsigned offset)
319{
320 len = min(kfifo_len(fifo), len + offset);
321
322 __kfifo_out_data(fifo, to, len, offset);
323 return len;
324}
325EXPORT_SYMBOL(kfifo_out_peek);
326
291unsigned int __kfifo_out_generic(struct kfifo *fifo, 327unsigned int __kfifo_out_generic(struct kfifo *fifo,
292 void *to, unsigned int len, unsigned int recsize, 328 void *to, unsigned int len, unsigned int recsize,
293 unsigned int *total) 329 unsigned int *total)
@@ -299,10 +335,13 @@ EXPORT_SYMBOL(__kfifo_out_generic);
299unsigned int __kfifo_from_user_n(struct kfifo *fifo, 335unsigned int __kfifo_from_user_n(struct kfifo *fifo,
300 const void __user *from, unsigned int len, unsigned int recsize) 336 const void __user *from, unsigned int len, unsigned int recsize)
301{ 337{
338 unsigned total;
339
302 if (kfifo_avail(fifo) < len + recsize) 340 if (kfifo_avail(fifo) < len + recsize)
303 return len + 1; 341 return len + 1;
304 342
305 return __kfifo_from_user_data(fifo, from, len, recsize); 343 __kfifo_from_user_data(fifo, from, len, recsize, &total);
344 return total;
306} 345}
307EXPORT_SYMBOL(__kfifo_from_user_n); 346EXPORT_SYMBOL(__kfifo_from_user_n);
308 347
@@ -311,20 +350,24 @@ EXPORT_SYMBOL(__kfifo_from_user_n);
311 * @fifo: the fifo to be used. 350 * @fifo: the fifo to be used.
312 * @from: pointer to the data to be added. 351 * @from: pointer to the data to be added.
313 * @len: the length of the data to be added. 352 * @len: the length of the data to be added.
353 * @total: the actual returned data length.
314 * 354 *
315 * This function copies at most @len bytes from the @from into the 355 * This function copies at most @len bytes from the @from into the
316 * FIFO depending and returns the number of copied bytes. 356 * FIFO depending and returns -EFAULT/0.
317 * 357 *
318 * Note that with only one concurrent reader and one concurrent 358 * Note that with only one concurrent reader and one concurrent
319 * writer, you don't need extra locking to use these functions. 359 * writer, you don't need extra locking to use these functions.
320 */ 360 */
321unsigned int kfifo_from_user(struct kfifo *fifo, 361int kfifo_from_user(struct kfifo *fifo,
322 const void __user *from, unsigned int len) 362 const void __user *from, unsigned int len, unsigned *total)
323{ 363{
364 int ret;
324 len = min(kfifo_avail(fifo), len); 365 len = min(kfifo_avail(fifo), len);
325 len -= __kfifo_from_user_data(fifo, from, len, 0); 366 ret = __kfifo_from_user_data(fifo, from, len, 0, total);
367 if (ret)
368 return ret;
326 __kfifo_add_in(fifo, len); 369 __kfifo_add_in(fifo, len);
327 return len; 370 return 0;
328} 371}
329EXPORT_SYMBOL(kfifo_from_user); 372EXPORT_SYMBOL(kfifo_from_user);
330 373
@@ -339,17 +382,17 @@ unsigned int __kfifo_to_user_n(struct kfifo *fifo,
339 void __user *to, unsigned int len, unsigned int reclen, 382 void __user *to, unsigned int len, unsigned int reclen,
340 unsigned int recsize) 383 unsigned int recsize)
341{ 384{
342 unsigned int ret; 385 unsigned int ret, total;
343 386
344 if (kfifo_len(fifo) < reclen + recsize) 387 if (kfifo_len(fifo) < reclen + recsize)
345 return len; 388 return len;
346 389
347 ret = __kfifo_to_user_data(fifo, to, reclen, recsize); 390 ret = __kfifo_to_user_data(fifo, to, reclen, recsize, &total);
348 391
349 if (likely(ret == 0)) 392 if (likely(ret == 0))
350 __kfifo_add_out(fifo, reclen + recsize); 393 __kfifo_add_out(fifo, reclen + recsize);
351 394
352 return ret; 395 return total;
353} 396}
354EXPORT_SYMBOL(__kfifo_to_user_n); 397EXPORT_SYMBOL(__kfifo_to_user_n);
355 398
@@ -358,20 +401,22 @@ EXPORT_SYMBOL(__kfifo_to_user_n);
358 * @fifo: the fifo to be used. 401 * @fifo: the fifo to be used.
359 * @to: where the data must be copied. 402 * @to: where the data must be copied.
360 * @len: the size of the destination buffer. 403 * @len: the size of the destination buffer.
404 * @lenout: pointer to output variable with copied data
361 * 405 *
362 * This function copies at most @len bytes from the FIFO into the 406 * This function copies at most @len bytes from the FIFO into the
363 * @to buffer and returns the number of copied bytes. 407 * @to buffer and 0 or -EFAULT.
364 * 408 *
365 * Note that with only one concurrent reader and one concurrent 409 * Note that with only one concurrent reader and one concurrent
366 * writer, you don't need extra locking to use these functions. 410 * writer, you don't need extra locking to use these functions.
367 */ 411 */
368unsigned int kfifo_to_user(struct kfifo *fifo, 412int kfifo_to_user(struct kfifo *fifo,
369 void __user *to, unsigned int len) 413 void __user *to, unsigned int len, unsigned *lenout)
370{ 414{
415 int ret;
371 len = min(kfifo_len(fifo), len); 416 len = min(kfifo_len(fifo), len);
372 len -= __kfifo_to_user_data(fifo, to, len, 0); 417 ret = __kfifo_to_user_data(fifo, to, len, 0, lenout);
373 __kfifo_add_out(fifo, len); 418 __kfifo_add_out(fifo, *lenout);
374 return len; 419 return ret;
375} 420}
376EXPORT_SYMBOL(kfifo_to_user); 421EXPORT_SYMBOL(kfifo_to_user);
377 422
diff --git a/kernel/kgdb.c b/kernel/kgdb.c
index 2eb517e23514..761fdd2b3034 100644
--- a/kernel/kgdb.c
+++ b/kernel/kgdb.c
@@ -583,6 +583,9 @@ static void kgdb_wait(struct pt_regs *regs)
583 smp_wmb(); 583 smp_wmb();
584 atomic_set(&cpu_in_kgdb[cpu], 1); 584 atomic_set(&cpu_in_kgdb[cpu], 1);
585 585
586 /* Disable any cpu specific hw breakpoints */
587 kgdb_disable_hw_debug(regs);
588
586 /* Wait till primary CPU is done with debugging */ 589 /* Wait till primary CPU is done with debugging */
587 while (atomic_read(&passive_cpu_wait[cpu])) 590 while (atomic_read(&passive_cpu_wait[cpu]))
588 cpu_relax(); 591 cpu_relax();
@@ -596,7 +599,7 @@ static void kgdb_wait(struct pt_regs *regs)
596 599
597 /* Signal the primary CPU that we are done: */ 600 /* Signal the primary CPU that we are done: */
598 atomic_set(&cpu_in_kgdb[cpu], 0); 601 atomic_set(&cpu_in_kgdb[cpu], 0);
599 touch_softlockup_watchdog(); 602 touch_softlockup_watchdog_sync();
600 clocksource_touch_watchdog(); 603 clocksource_touch_watchdog();
601 local_irq_restore(flags); 604 local_irq_restore(flags);
602} 605}
@@ -1450,7 +1453,7 @@ acquirelock:
1450 (kgdb_info[cpu].task && 1453 (kgdb_info[cpu].task &&
1451 kgdb_info[cpu].task->pid != kgdb_sstep_pid) && --sstep_tries) { 1454 kgdb_info[cpu].task->pid != kgdb_sstep_pid) && --sstep_tries) {
1452 atomic_set(&kgdb_active, -1); 1455 atomic_set(&kgdb_active, -1);
1453 touch_softlockup_watchdog(); 1456 touch_softlockup_watchdog_sync();
1454 clocksource_touch_watchdog(); 1457 clocksource_touch_watchdog();
1455 local_irq_restore(flags); 1458 local_irq_restore(flags);
1456 1459
@@ -1550,7 +1553,7 @@ kgdb_restore:
1550 } 1553 }
1551 /* Free kgdb_active */ 1554 /* Free kgdb_active */
1552 atomic_set(&kgdb_active, -1); 1555 atomic_set(&kgdb_active, -1);
1553 touch_softlockup_watchdog(); 1556 touch_softlockup_watchdog_sync();
1554 clocksource_touch_watchdog(); 1557 clocksource_touch_watchdog();
1555 local_irq_restore(flags); 1558 local_irq_restore(flags);
1556 1559
diff --git a/kernel/kmod.c b/kernel/kmod.c
index 25b103190364..bf0e231d9702 100644
--- a/kernel/kmod.c
+++ b/kernel/kmod.c
@@ -520,13 +520,15 @@ int call_usermodehelper_pipe(char *path, char **argv, char **envp,
520 return -ENOMEM; 520 return -ENOMEM;
521 521
522 ret = call_usermodehelper_stdinpipe(sub_info, filp); 522 ret = call_usermodehelper_stdinpipe(sub_info, filp);
523 if (ret < 0) 523 if (ret < 0) {
524 goto out; 524 call_usermodehelper_freeinfo(sub_info);
525 return ret;
526 }
525 527
526 return call_usermodehelper_exec(sub_info, UMH_WAIT_EXEC); 528 ret = call_usermodehelper_exec(sub_info, UMH_WAIT_EXEC);
529 if (ret < 0) /* Failed to execute helper, close pipe */
530 filp_close(*filp, NULL);
527 531
528 out:
529 call_usermodehelper_freeinfo(sub_info);
530 return ret; 532 return ret;
531} 533}
532EXPORT_SYMBOL(call_usermodehelper_pipe); 534EXPORT_SYMBOL(call_usermodehelper_pipe);
diff --git a/kernel/kprobes.c b/kernel/kprobes.c
index e5342a344c43..b7df302a0204 100644
--- a/kernel/kprobes.c
+++ b/kernel/kprobes.c
@@ -1035,7 +1035,7 @@ int __kprobes register_kretprobe(struct kretprobe *rp)
1035 /* Pre-allocate memory for max kretprobe instances */ 1035 /* Pre-allocate memory for max kretprobe instances */
1036 if (rp->maxactive <= 0) { 1036 if (rp->maxactive <= 0) {
1037#ifdef CONFIG_PREEMPT 1037#ifdef CONFIG_PREEMPT
1038 rp->maxactive = max(10, 2 * num_possible_cpus()); 1038 rp->maxactive = max_t(unsigned int, 10, 2*num_possible_cpus());
1039#else 1039#else
1040 rp->maxactive = num_possible_cpus(); 1040 rp->maxactive = num_possible_cpus();
1041#endif 1041#endif
diff --git a/kernel/lockdep.c b/kernel/lockdep.c
index 5feaddcdbe49..c62ec14609b9 100644
--- a/kernel/lockdep.c
+++ b/kernel/lockdep.c
@@ -2147,7 +2147,7 @@ check_usage_backwards(struct task_struct *curr, struct held_lock *this,
2147 return ret; 2147 return ret;
2148 2148
2149 return print_irq_inversion_bug(curr, &root, target_entry, 2149 return print_irq_inversion_bug(curr, &root, target_entry,
2150 this, 1, irqclass); 2150 this, 0, irqclass);
2151} 2151}
2152 2152
2153void print_irqtrace_events(struct task_struct *curr) 2153void print_irqtrace_events(struct task_struct *curr)
diff --git a/kernel/module.c b/kernel/module.c
index e96b8ed1cb6a..f82386bd9ee9 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -1010,6 +1010,12 @@ static const struct kernel_symbol *resolve_symbol(Elf_Shdr *sechdrs,
1010 * J. Corbet <corbet@lwn.net> 1010 * J. Corbet <corbet@lwn.net>
1011 */ 1011 */
1012#if defined(CONFIG_KALLSYMS) && defined(CONFIG_SYSFS) 1012#if defined(CONFIG_KALLSYMS) && defined(CONFIG_SYSFS)
1013
1014static inline bool sect_empty(const Elf_Shdr *sect)
1015{
1016 return !(sect->sh_flags & SHF_ALLOC) || sect->sh_size == 0;
1017}
1018
1013struct module_sect_attr 1019struct module_sect_attr
1014{ 1020{
1015 struct module_attribute mattr; 1021 struct module_attribute mattr;
@@ -1051,8 +1057,7 @@ static void add_sect_attrs(struct module *mod, unsigned int nsect,
1051 1057
1052 /* Count loaded sections and allocate structures */ 1058 /* Count loaded sections and allocate structures */
1053 for (i = 0; i < nsect; i++) 1059 for (i = 0; i < nsect; i++)
1054 if (sechdrs[i].sh_flags & SHF_ALLOC 1060 if (!sect_empty(&sechdrs[i]))
1055 && sechdrs[i].sh_size)
1056 nloaded++; 1061 nloaded++;
1057 size[0] = ALIGN(sizeof(*sect_attrs) 1062 size[0] = ALIGN(sizeof(*sect_attrs)
1058 + nloaded * sizeof(sect_attrs->attrs[0]), 1063 + nloaded * sizeof(sect_attrs->attrs[0]),
@@ -1070,9 +1075,7 @@ static void add_sect_attrs(struct module *mod, unsigned int nsect,
1070 sattr = &sect_attrs->attrs[0]; 1075 sattr = &sect_attrs->attrs[0];
1071 gattr = &sect_attrs->grp.attrs[0]; 1076 gattr = &sect_attrs->grp.attrs[0];
1072 for (i = 0; i < nsect; i++) { 1077 for (i = 0; i < nsect; i++) {
1073 if (! (sechdrs[i].sh_flags & SHF_ALLOC)) 1078 if (sect_empty(&sechdrs[i]))
1074 continue;
1075 if (!sechdrs[i].sh_size)
1076 continue; 1079 continue;
1077 sattr->address = sechdrs[i].sh_addr; 1080 sattr->address = sechdrs[i].sh_addr;
1078 sattr->name = kstrdup(secstrings + sechdrs[i].sh_name, 1081 sattr->name = kstrdup(secstrings + sechdrs[i].sh_name,
@@ -1156,7 +1159,7 @@ static void add_notes_attrs(struct module *mod, unsigned int nsect,
1156 /* Count notes sections and allocate structures. */ 1159 /* Count notes sections and allocate structures. */
1157 notes = 0; 1160 notes = 0;
1158 for (i = 0; i < nsect; i++) 1161 for (i = 0; i < nsect; i++)
1159 if ((sechdrs[i].sh_flags & SHF_ALLOC) && 1162 if (!sect_empty(&sechdrs[i]) &&
1160 (sechdrs[i].sh_type == SHT_NOTE)) 1163 (sechdrs[i].sh_type == SHT_NOTE))
1161 ++notes; 1164 ++notes;
1162 1165
@@ -1172,7 +1175,7 @@ static void add_notes_attrs(struct module *mod, unsigned int nsect,
1172 notes_attrs->notes = notes; 1175 notes_attrs->notes = notes;
1173 nattr = &notes_attrs->attrs[0]; 1176 nattr = &notes_attrs->attrs[0];
1174 for (loaded = i = 0; i < nsect; ++i) { 1177 for (loaded = i = 0; i < nsect; ++i) {
1175 if (!(sechdrs[i].sh_flags & SHF_ALLOC)) 1178 if (sect_empty(&sechdrs[i]))
1176 continue; 1179 continue;
1177 if (sechdrs[i].sh_type == SHT_NOTE) { 1180 if (sechdrs[i].sh_type == SHT_NOTE) {
1178 nattr->attr.name = mod->sect_attrs->attrs[loaded].name; 1181 nattr->attr.name = mod->sect_attrs->attrs[loaded].name;
diff --git a/kernel/panic.c b/kernel/panic.c
index 5827f7b97254..c787333282b8 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -75,7 +75,6 @@ NORET_TYPE void panic(const char * fmt, ...)
75 dump_stack(); 75 dump_stack();
76#endif 76#endif
77 77
78 kmsg_dump(KMSG_DUMP_PANIC);
79 /* 78 /*
80 * If we have crashed and we have a crash kernel loaded let it handle 79 * If we have crashed and we have a crash kernel loaded let it handle
81 * everything else. 80 * everything else.
@@ -83,6 +82,8 @@ NORET_TYPE void panic(const char * fmt, ...)
83 */ 82 */
84 crash_kexec(NULL); 83 crash_kexec(NULL);
85 84
85 kmsg_dump(KMSG_DUMP_PANIC);
86
86 /* 87 /*
87 * Note smp_send_stop is the usual smp shutdown function, which 88 * Note smp_send_stop is the usual smp shutdown function, which
88 * unfortunately means it may not be hardened to work in a panic 89 * unfortunately means it may not be hardened to work in a panic
diff --git a/kernel/perf_event.c b/kernel/perf_event.c
index 1f38270f08c7..2ae7409bf38f 100644
--- a/kernel/perf_event.c
+++ b/kernel/perf_event.c
@@ -3259,8 +3259,6 @@ static void perf_event_task_output(struct perf_event *event,
3259 task_event->event_id.tid = perf_event_tid(event, task); 3259 task_event->event_id.tid = perf_event_tid(event, task);
3260 task_event->event_id.ptid = perf_event_tid(event, current); 3260 task_event->event_id.ptid = perf_event_tid(event, current);
3261 3261
3262 task_event->event_id.time = perf_clock();
3263
3264 perf_output_put(&handle, task_event->event_id); 3262 perf_output_put(&handle, task_event->event_id);
3265 3263
3266 perf_output_end(&handle); 3264 perf_output_end(&handle);
@@ -3268,6 +3266,9 @@ static void perf_event_task_output(struct perf_event *event,
3268 3266
3269static int perf_event_task_match(struct perf_event *event) 3267static int perf_event_task_match(struct perf_event *event)
3270{ 3268{
3269 if (event->state < PERF_EVENT_STATE_INACTIVE)
3270 return 0;
3271
3271 if (event->cpu != -1 && event->cpu != smp_processor_id()) 3272 if (event->cpu != -1 && event->cpu != smp_processor_id())
3272 return 0; 3273 return 0;
3273 3274
@@ -3297,7 +3298,7 @@ static void perf_event_task_event(struct perf_task_event *task_event)
3297 cpuctx = &get_cpu_var(perf_cpu_context); 3298 cpuctx = &get_cpu_var(perf_cpu_context);
3298 perf_event_task_ctx(&cpuctx->ctx, task_event); 3299 perf_event_task_ctx(&cpuctx->ctx, task_event);
3299 if (!ctx) 3300 if (!ctx)
3300 ctx = rcu_dereference(task_event->task->perf_event_ctxp); 3301 ctx = rcu_dereference(current->perf_event_ctxp);
3301 if (ctx) 3302 if (ctx)
3302 perf_event_task_ctx(ctx, task_event); 3303 perf_event_task_ctx(ctx, task_event);
3303 put_cpu_var(perf_cpu_context); 3304 put_cpu_var(perf_cpu_context);
@@ -3328,6 +3329,7 @@ static void perf_event_task(struct task_struct *task,
3328 /* .ppid */ 3329 /* .ppid */
3329 /* .tid */ 3330 /* .tid */
3330 /* .ptid */ 3331 /* .ptid */
3332 .time = perf_clock(),
3331 }, 3333 },
3332 }; 3334 };
3333 3335
@@ -3377,6 +3379,9 @@ static void perf_event_comm_output(struct perf_event *event,
3377 3379
3378static int perf_event_comm_match(struct perf_event *event) 3380static int perf_event_comm_match(struct perf_event *event)
3379{ 3381{
3382 if (event->state < PERF_EVENT_STATE_INACTIVE)
3383 return 0;
3384
3380 if (event->cpu != -1 && event->cpu != smp_processor_id()) 3385 if (event->cpu != -1 && event->cpu != smp_processor_id())
3381 return 0; 3386 return 0;
3382 3387
@@ -3494,6 +3499,9 @@ static void perf_event_mmap_output(struct perf_event *event,
3494static int perf_event_mmap_match(struct perf_event *event, 3499static int perf_event_mmap_match(struct perf_event *event,
3495 struct perf_mmap_event *mmap_event) 3500 struct perf_mmap_event *mmap_event)
3496{ 3501{
3502 if (event->state < PERF_EVENT_STATE_INACTIVE)
3503 return 0;
3504
3497 if (event->cpu != -1 && event->cpu != smp_processor_id()) 3505 if (event->cpu != -1 && event->cpu != smp_processor_id())
3498 return 0; 3506 return 0;
3499 3507
@@ -4571,7 +4579,7 @@ static int perf_copy_attr(struct perf_event_attr __user *uattr,
4571 if (attr->type >= PERF_TYPE_MAX) 4579 if (attr->type >= PERF_TYPE_MAX)
4572 return -EINVAL; 4580 return -EINVAL;
4573 4581
4574 if (attr->__reserved_1 || attr->__reserved_2) 4582 if (attr->__reserved_1)
4575 return -EINVAL; 4583 return -EINVAL;
4576 4584
4577 if (attr->sample_type & ~(PERF_SAMPLE_MAX-1)) 4585 if (attr->sample_type & ~(PERF_SAMPLE_MAX-1))
@@ -5148,7 +5156,7 @@ int perf_event_init_task(struct task_struct *child)
5148 GFP_KERNEL); 5156 GFP_KERNEL);
5149 if (!child_ctx) { 5157 if (!child_ctx) {
5150 ret = -ENOMEM; 5158 ret = -ENOMEM;
5151 goto exit; 5159 break;
5152 } 5160 }
5153 5161
5154 __perf_event_init_context(child_ctx, child); 5162 __perf_event_init_context(child_ctx, child);
@@ -5164,7 +5172,7 @@ int perf_event_init_task(struct task_struct *child)
5164 } 5172 }
5165 } 5173 }
5166 5174
5167 if (inherited_all) { 5175 if (child_ctx && inherited_all) {
5168 /* 5176 /*
5169 * Mark the child context as a clone of the parent 5177 * Mark the child context as a clone of the parent
5170 * context, or of whatever the parent is a clone of. 5178 * context, or of whatever the parent is a clone of.
@@ -5184,7 +5192,6 @@ int perf_event_init_task(struct task_struct *child)
5184 get_ctx(child_ctx->parent_ctx); 5192 get_ctx(child_ctx->parent_ctx);
5185 } 5193 }
5186 5194
5187exit:
5188 mutex_unlock(&parent_ctx->mutex); 5195 mutex_unlock(&parent_ctx->mutex);
5189 5196
5190 perf_unpin_context(parent_ctx); 5197 perf_unpin_context(parent_ctx);
diff --git a/kernel/printk.c b/kernel/printk.c
index 17463ca2e229..1751c456b71f 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -1467,6 +1467,7 @@ EXPORT_SYMBOL_GPL(kmsg_dump_unregister);
1467static const char const *kmsg_reasons[] = { 1467static const char const *kmsg_reasons[] = {
1468 [KMSG_DUMP_OOPS] = "oops", 1468 [KMSG_DUMP_OOPS] = "oops",
1469 [KMSG_DUMP_PANIC] = "panic", 1469 [KMSG_DUMP_PANIC] = "panic",
1470 [KMSG_DUMP_KEXEC] = "kexec",
1470}; 1471};
1471 1472
1472static const char *kmsg_to_str(enum kmsg_dump_reason reason) 1473static const char *kmsg_to_str(enum kmsg_dump_reason reason)
diff --git a/kernel/sched.c b/kernel/sched.c
index c535cc4f6428..3a8fb30a91b1 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -2320,14 +2320,12 @@ static int select_fallback_rq(int cpu, struct task_struct *p)
2320} 2320}
2321 2321
2322/* 2322/*
2323 * Called from: 2323 * Gets called from 3 sites (exec, fork, wakeup), since it is called without
2324 * holding rq->lock we need to ensure ->cpus_allowed is stable, this is done
2325 * by:
2324 * 2326 *
2325 * - fork, @p is stable because it isn't on the tasklist yet 2327 * exec: is unstable, retry loop
2326 * 2328 * fork & wake-up: serialize ->cpus_allowed against TASK_WAKING
2327 * - exec, @p is unstable, retry loop
2328 *
2329 * - wake-up, we serialize ->cpus_allowed against TASK_WAKING so
2330 * we should be good.
2331 */ 2329 */
2332static inline 2330static inline
2333int select_task_rq(struct task_struct *p, int sd_flags, int wake_flags) 2331int select_task_rq(struct task_struct *p, int sd_flags, int wake_flags)
@@ -2620,9 +2618,6 @@ void sched_fork(struct task_struct *p, int clone_flags)
2620 if (p->sched_class->task_fork) 2618 if (p->sched_class->task_fork)
2621 p->sched_class->task_fork(p); 2619 p->sched_class->task_fork(p);
2622 2620
2623#ifdef CONFIG_SMP
2624 cpu = select_task_rq(p, SD_BALANCE_FORK, 0);
2625#endif
2626 set_task_cpu(p, cpu); 2621 set_task_cpu(p, cpu);
2627 2622
2628#if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) 2623#if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT)
@@ -2652,6 +2647,21 @@ void wake_up_new_task(struct task_struct *p, unsigned long clone_flags)
2652{ 2647{
2653 unsigned long flags; 2648 unsigned long flags;
2654 struct rq *rq; 2649 struct rq *rq;
2650 int cpu = get_cpu();
2651
2652#ifdef CONFIG_SMP
2653 /*
2654 * Fork balancing, do it here and not earlier because:
2655 * - cpus_allowed can change in the fork path
2656 * - any previously selected cpu might disappear through hotplug
2657 *
2658 * We still have TASK_WAKING but PF_STARTING is gone now, meaning
2659 * ->cpus_allowed is stable, we have preemption disabled, meaning
2660 * cpu_online_mask is stable.
2661 */
2662 cpu = select_task_rq(p, SD_BALANCE_FORK, 0);
2663 set_task_cpu(p, cpu);
2664#endif
2655 2665
2656 rq = task_rq_lock(p, &flags); 2666 rq = task_rq_lock(p, &flags);
2657 BUG_ON(p->state != TASK_WAKING); 2667 BUG_ON(p->state != TASK_WAKING);
@@ -2665,6 +2675,7 @@ void wake_up_new_task(struct task_struct *p, unsigned long clone_flags)
2665 p->sched_class->task_woken(rq, p); 2675 p->sched_class->task_woken(rq, p);
2666#endif 2676#endif
2667 task_rq_unlock(rq, &flags); 2677 task_rq_unlock(rq, &flags);
2678 put_cpu();
2668} 2679}
2669 2680
2670#ifdef CONFIG_PREEMPT_NOTIFIERS 2681#ifdef CONFIG_PREEMPT_NOTIFIERS
@@ -5530,8 +5541,11 @@ need_resched_nonpreemptible:
5530 5541
5531 post_schedule(rq); 5542 post_schedule(rq);
5532 5543
5533 if (unlikely(reacquire_kernel_lock(current) < 0)) 5544 if (unlikely(reacquire_kernel_lock(current) < 0)) {
5545 prev = rq->curr;
5546 switch_count = &prev->nivcsw;
5534 goto need_resched_nonpreemptible; 5547 goto need_resched_nonpreemptible;
5548 }
5535 5549
5536 preempt_enable_no_resched(); 5550 preempt_enable_no_resched();
5537 if (need_resched()) 5551 if (need_resched())
@@ -7136,14 +7150,18 @@ int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask)
7136 * the ->cpus_allowed mask from under waking tasks, which would be 7150 * the ->cpus_allowed mask from under waking tasks, which would be
7137 * possible when we change rq->lock in ttwu(), so synchronize against 7151 * possible when we change rq->lock in ttwu(), so synchronize against
7138 * TASK_WAKING to avoid that. 7152 * TASK_WAKING to avoid that.
7153 *
7154 * Make an exception for freshly cloned tasks, since cpuset namespaces
7155 * might move the task about, we have to validate the target in
7156 * wake_up_new_task() anyway since the cpu might have gone away.
7139 */ 7157 */
7140again: 7158again:
7141 while (p->state == TASK_WAKING) 7159 while (p->state == TASK_WAKING && !(p->flags & PF_STARTING))
7142 cpu_relax(); 7160 cpu_relax();
7143 7161
7144 rq = task_rq_lock(p, &flags); 7162 rq = task_rq_lock(p, &flags);
7145 7163
7146 if (p->state == TASK_WAKING) { 7164 if (p->state == TASK_WAKING && !(p->flags & PF_STARTING)) {
7147 task_rq_unlock(rq, &flags); 7165 task_rq_unlock(rq, &flags);
7148 goto again; 7166 goto again;
7149 } 7167 }
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c
index 42ac3c9f66f6..8fe7ee81c552 100644
--- a/kernel/sched_fair.c
+++ b/kernel/sched_fair.c
@@ -1508,7 +1508,7 @@ static int select_task_rq_fair(struct task_struct *p, int sd_flag, int wake_flag
1508 * If there's an idle sibling in this domain, make that 1508 * If there's an idle sibling in this domain, make that
1509 * the wake_affine target instead of the current cpu. 1509 * the wake_affine target instead of the current cpu.
1510 */ 1510 */
1511 if (tmp->flags & SD_PREFER_SIBLING) 1511 if (tmp->flags & SD_SHARE_PKG_RESOURCES)
1512 target = select_idle_sibling(p, tmp, target); 1512 target = select_idle_sibling(p, tmp, target);
1513 1513
1514 if (target >= 0) { 1514 if (target >= 0) {
diff --git a/kernel/signal.c b/kernel/signal.c
index d09692b40376..934ae5e687b9 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -979,7 +979,8 @@ static void print_fatal_signal(struct pt_regs *regs, int signr)
979 for (i = 0; i < 16; i++) { 979 for (i = 0; i < 16; i++) {
980 unsigned char insn; 980 unsigned char insn;
981 981
982 __get_user(insn, (unsigned char *)(regs->ip + i)); 982 if (get_user(insn, (unsigned char *)(regs->ip + i)))
983 break;
983 printk("%02x ", insn); 984 printk("%02x ", insn);
984 } 985 }
985 } 986 }
diff --git a/kernel/smp.c b/kernel/smp.c
index de735a6637d0..f10408422444 100644
--- a/kernel/smp.c
+++ b/kernel/smp.c
@@ -347,7 +347,7 @@ int smp_call_function_any(const struct cpumask *mask,
347 goto call; 347 goto call;
348 348
349 /* Try for same node. */ 349 /* Try for same node. */
350 nodemask = cpumask_of_node(cpu); 350 nodemask = cpumask_of_node(cpu_to_node(cpu));
351 for (cpu = cpumask_first_and(nodemask, mask); cpu < nr_cpu_ids; 351 for (cpu = cpumask_first_and(nodemask, mask); cpu < nr_cpu_ids;
352 cpu = cpumask_next_and(cpu, nodemask, mask)) { 352 cpu = cpumask_next_and(cpu, nodemask, mask)) {
353 if (cpu_online(cpu)) 353 if (cpu_online(cpu))
diff --git a/kernel/softirq.c b/kernel/softirq.c
index a09502e2ef75..7c1a67ef0274 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -500,22 +500,17 @@ EXPORT_SYMBOL(tasklet_kill);
500 */ 500 */
501 501
502/* 502/*
503 * The trampoline is called when the hrtimer expires. If this is 503 * The trampoline is called when the hrtimer expires. It schedules a tasklet
504 * called from the hrtimer interrupt then we schedule the tasklet as 504 * to run __tasklet_hrtimer_trampoline() which in turn will call the intended
505 * the timer callback function expects to run in softirq context. If 505 * hrtimer callback, but from softirq context.
506 * it's called in softirq context anyway (i.e. high resolution timers
507 * disabled) then the hrtimer callback is called right away.
508 */ 506 */
509static enum hrtimer_restart __hrtimer_tasklet_trampoline(struct hrtimer *timer) 507static enum hrtimer_restart __hrtimer_tasklet_trampoline(struct hrtimer *timer)
510{ 508{
511 struct tasklet_hrtimer *ttimer = 509 struct tasklet_hrtimer *ttimer =
512 container_of(timer, struct tasklet_hrtimer, timer); 510 container_of(timer, struct tasklet_hrtimer, timer);
513 511
514 if (hrtimer_is_hres_active(timer)) { 512 tasklet_hi_schedule(&ttimer->tasklet);
515 tasklet_hi_schedule(&ttimer->tasklet); 513 return HRTIMER_NORESTART;
516 return HRTIMER_NORESTART;
517 }
518 return ttimer->function(timer);
519} 514}
520 515
521/* 516/*
diff --git a/kernel/softlockup.c b/kernel/softlockup.c
index d22579087e27..0d4c7898ab80 100644
--- a/kernel/softlockup.c
+++ b/kernel/softlockup.c
@@ -25,6 +25,7 @@ static DEFINE_SPINLOCK(print_lock);
25static DEFINE_PER_CPU(unsigned long, softlockup_touch_ts); /* touch timestamp */ 25static DEFINE_PER_CPU(unsigned long, softlockup_touch_ts); /* touch timestamp */
26static DEFINE_PER_CPU(unsigned long, softlockup_print_ts); /* print timestamp */ 26static DEFINE_PER_CPU(unsigned long, softlockup_print_ts); /* print timestamp */
27static DEFINE_PER_CPU(struct task_struct *, softlockup_watchdog); 27static DEFINE_PER_CPU(struct task_struct *, softlockup_watchdog);
28static DEFINE_PER_CPU(bool, softlock_touch_sync);
28 29
29static int __read_mostly did_panic; 30static int __read_mostly did_panic;
30int __read_mostly softlockup_thresh = 60; 31int __read_mostly softlockup_thresh = 60;
@@ -79,6 +80,12 @@ void touch_softlockup_watchdog(void)
79} 80}
80EXPORT_SYMBOL(touch_softlockup_watchdog); 81EXPORT_SYMBOL(touch_softlockup_watchdog);
81 82
83void touch_softlockup_watchdog_sync(void)
84{
85 __raw_get_cpu_var(softlock_touch_sync) = true;
86 __raw_get_cpu_var(softlockup_touch_ts) = 0;
87}
88
82void touch_all_softlockup_watchdogs(void) 89void touch_all_softlockup_watchdogs(void)
83{ 90{
84 int cpu; 91 int cpu;
@@ -118,6 +125,14 @@ void softlockup_tick(void)
118 } 125 }
119 126
120 if (touch_ts == 0) { 127 if (touch_ts == 0) {
128 if (unlikely(per_cpu(softlock_touch_sync, this_cpu))) {
129 /*
130 * If the time stamp was touched atomically
131 * make sure the scheduler tick is up to date.
132 */
133 per_cpu(softlock_touch_sync, this_cpu) = false;
134 sched_clock_tick();
135 }
121 __touch_softlockup_watchdog(); 136 __touch_softlockup_watchdog();
122 return; 137 return;
123 } 138 }
diff --git a/kernel/sys.c b/kernel/sys.c
index 26a6b73a6b85..18bde979f346 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -222,6 +222,7 @@ SYSCALL_DEFINE2(getpriority, int, which, int, who)
222 if (which > PRIO_USER || which < PRIO_PROCESS) 222 if (which > PRIO_USER || which < PRIO_PROCESS)
223 return -EINVAL; 223 return -EINVAL;
224 224
225 rcu_read_lock();
225 read_lock(&tasklist_lock); 226 read_lock(&tasklist_lock);
226 switch (which) { 227 switch (which) {
227 case PRIO_PROCESS: 228 case PRIO_PROCESS:
@@ -267,6 +268,7 @@ SYSCALL_DEFINE2(getpriority, int, which, int, who)
267 } 268 }
268out_unlock: 269out_unlock:
269 read_unlock(&tasklist_lock); 270 read_unlock(&tasklist_lock);
271 rcu_read_unlock();
270 272
271 return retval; 273 return retval;
272} 274}
diff --git a/kernel/time/clockevents.c b/kernel/time/clockevents.c
index 6f740d9f0948..d7395fdfb9f3 100644
--- a/kernel/time/clockevents.c
+++ b/kernel/time/clockevents.c
@@ -259,7 +259,8 @@ void clockevents_notify(unsigned long reason, void *arg)
259 cpu = *((int *)arg); 259 cpu = *((int *)arg);
260 list_for_each_entry_safe(dev, tmp, &clockevent_devices, list) { 260 list_for_each_entry_safe(dev, tmp, &clockevent_devices, list) {
261 if (cpumask_test_cpu(cpu, dev->cpumask) && 261 if (cpumask_test_cpu(cpu, dev->cpumask) &&
262 cpumask_weight(dev->cpumask) == 1) { 262 cpumask_weight(dev->cpumask) == 1 &&
263 !tick_is_broadcast_device(dev)) {
263 BUG_ON(dev->mode != CLOCK_EVT_MODE_UNUSED); 264 BUG_ON(dev->mode != CLOCK_EVT_MODE_UNUSED);
264 list_del(&dev->list); 265 list_del(&dev->list);
265 } 266 }
diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c
index e85c23404d34..13700833c181 100644
--- a/kernel/time/clocksource.c
+++ b/kernel/time/clocksource.c
@@ -343,7 +343,19 @@ static void clocksource_resume_watchdog(void)
343{ 343{
344 unsigned long flags; 344 unsigned long flags;
345 345
346 spin_lock_irqsave(&watchdog_lock, flags); 346 /*
347 * We use trylock here to avoid a potential dead lock when
348 * kgdb calls this code after the kernel has been stopped with
349 * watchdog_lock held. When watchdog_lock is held we just
350 * return and accept, that the watchdog might trigger and mark
351 * the monitored clock source (usually TSC) unstable.
352 *
353 * This does not affect the other caller clocksource_resume()
354 * because at this point the kernel is UP, interrupts are
355 * disabled and nothing can hold watchdog_lock.
356 */
357 if (!spin_trylock_irqsave(&watchdog_lock, flags))
358 return;
347 clocksource_reset_watchdog(); 359 clocksource_reset_watchdog();
348 spin_unlock_irqrestore(&watchdog_lock, flags); 360 spin_unlock_irqrestore(&watchdog_lock, flags);
349} 361}
@@ -458,8 +470,8 @@ void clocksource_resume(void)
458 * clocksource_touch_watchdog - Update watchdog 470 * clocksource_touch_watchdog - Update watchdog
459 * 471 *
460 * Update the watchdog after exception contexts such as kgdb so as not 472 * Update the watchdog after exception contexts such as kgdb so as not
461 * to incorrectly trip the watchdog. 473 * to incorrectly trip the watchdog. This might fail when the kernel
462 * 474 * was stopped in code which holds watchdog_lock.
463 */ 475 */
464void clocksource_touch_watchdog(void) 476void clocksource_touch_watchdog(void)
465{ 477{
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
index 7faaa32fbf4f..e2ab064c6d41 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -880,6 +880,7 @@ void getboottime(struct timespec *ts)
880 880
881 set_normalized_timespec(ts, -boottime.tv_sec, -boottime.tv_nsec); 881 set_normalized_timespec(ts, -boottime.tv_sec, -boottime.tv_nsec);
882} 882}
883EXPORT_SYMBOL_GPL(getboottime);
883 884
884/** 885/**
885 * monotonic_to_bootbased - Convert the monotonic time to boot based. 886 * monotonic_to_bootbased - Convert the monotonic time to boot based.
@@ -889,6 +890,7 @@ void monotonic_to_bootbased(struct timespec *ts)
889{ 890{
890 *ts = timespec_add_safe(*ts, total_sleep_time); 891 *ts = timespec_add_safe(*ts, total_sleep_time);
891} 892}
893EXPORT_SYMBOL_GPL(monotonic_to_bootbased);
892 894
893unsigned long get_seconds(void) 895unsigned long get_seconds(void)
894{ 896{
diff --git a/kernel/timer.c b/kernel/timer.c
index 15533b792397..c61a7949387f 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -1198,6 +1198,7 @@ void update_process_times(int user_tick)
1198 run_local_timers(); 1198 run_local_timers();
1199 rcu_check_callbacks(cpu, user_tick); 1199 rcu_check_callbacks(cpu, user_tick);
1200 printk_tick(); 1200 printk_tick();
1201 perf_event_do_pending();
1201 scheduler_tick(); 1202 scheduler_tick();
1202 run_posix_cpu_timers(p); 1203 run_posix_cpu_timers(p);
1203} 1204}
@@ -1209,8 +1210,6 @@ static void run_timer_softirq(struct softirq_action *h)
1209{ 1210{
1210 struct tvec_base *base = __get_cpu_var(tvec_bases); 1211 struct tvec_base *base = __get_cpu_var(tvec_bases);
1211 1212
1212 perf_event_do_pending();
1213
1214 hrtimer_run_pending(); 1213 hrtimer_run_pending();
1215 1214
1216 if (time_after_eq(jiffies, base->timer_jiffies)) 1215 if (time_after_eq(jiffies, base->timer_jiffies))
diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
index d006554888dc..60e2ce0181ee 100644
--- a/kernel/trace/Kconfig
+++ b/kernel/trace/Kconfig
@@ -12,39 +12,37 @@ config NOP_TRACER
12config HAVE_FTRACE_NMI_ENTER 12config HAVE_FTRACE_NMI_ENTER
13 bool 13 bool
14 help 14 help
15 See Documentation/trace/ftrace-implementation.txt 15 See Documentation/trace/ftrace-design.txt
16 16
17config HAVE_FUNCTION_TRACER 17config HAVE_FUNCTION_TRACER
18 bool 18 bool
19 help 19 help
20 See Documentation/trace/ftrace-implementation.txt 20 See Documentation/trace/ftrace-design.txt
21 21
22config HAVE_FUNCTION_GRAPH_TRACER 22config HAVE_FUNCTION_GRAPH_TRACER
23 bool 23 bool
24 help 24 help
25 See Documentation/trace/ftrace-implementation.txt 25 See Documentation/trace/ftrace-design.txt
26 26
27config HAVE_FUNCTION_GRAPH_FP_TEST 27config HAVE_FUNCTION_GRAPH_FP_TEST
28 bool 28 bool
29 help 29 help
30 An arch may pass in a unique value (frame pointer) to both the 30 See Documentation/trace/ftrace-design.txt
31 entering and exiting of a function. On exit, the value is compared
32 and if it does not match, then it will panic the kernel.
33 31
34config HAVE_FUNCTION_TRACE_MCOUNT_TEST 32config HAVE_FUNCTION_TRACE_MCOUNT_TEST
35 bool 33 bool
36 help 34 help
37 See Documentation/trace/ftrace-implementation.txt 35 See Documentation/trace/ftrace-design.txt
38 36
39config HAVE_DYNAMIC_FTRACE 37config HAVE_DYNAMIC_FTRACE
40 bool 38 bool
41 help 39 help
42 See Documentation/trace/ftrace-implementation.txt 40 See Documentation/trace/ftrace-design.txt
43 41
44config HAVE_FTRACE_MCOUNT_RECORD 42config HAVE_FTRACE_MCOUNT_RECORD
45 bool 43 bool
46 help 44 help
47 See Documentation/trace/ftrace-implementation.txt 45 See Documentation/trace/ftrace-design.txt
48 46
49config HAVE_HW_BRANCH_TRACER 47config HAVE_HW_BRANCH_TRACER
50 bool 48 bool
@@ -52,7 +50,7 @@ config HAVE_HW_BRANCH_TRACER
52config HAVE_SYSCALL_TRACEPOINTS 50config HAVE_SYSCALL_TRACEPOINTS
53 bool 51 bool
54 help 52 help
55 See Documentation/trace/ftrace-implementation.txt 53 See Documentation/trace/ftrace-design.txt
56 54
57config TRACER_MAX_TRACE 55config TRACER_MAX_TRACE
58 bool 56 bool
@@ -83,7 +81,7 @@ config RING_BUFFER_ALLOW_SWAP
83# This allows those options to appear when no other tracer is selected. But the 81# This allows those options to appear when no other tracer is selected. But the
84# options do not appear when something else selects it. We need the two options 82# options do not appear when something else selects it. We need the two options
85# GENERIC_TRACER and TRACING to avoid circular dependencies to accomplish the 83# GENERIC_TRACER and TRACING to avoid circular dependencies to accomplish the
86# hidding of the automatic options. 84# hiding of the automatic options.
87 85
88config TRACING 86config TRACING
89 bool 87 bool
@@ -119,7 +117,7 @@ menuconfig FTRACE
119 bool "Tracers" 117 bool "Tracers"
120 default y if DEBUG_KERNEL 118 default y if DEBUG_KERNEL
121 help 119 help
122 Enable the kernel tracing infrastructure. 120 Enable the kernel tracing infrastructure.
123 121
124if FTRACE 122if FTRACE
125 123
@@ -133,7 +131,7 @@ config FUNCTION_TRACER
133 help 131 help
134 Enable the kernel to trace every kernel function. This is done 132 Enable the kernel to trace every kernel function. This is done
135 by using a compiler feature to insert a small, 5-byte No-Operation 133 by using a compiler feature to insert a small, 5-byte No-Operation
136 instruction to the beginning of every kernel function, which NOP 134 instruction at the beginning of every kernel function, which NOP
137 sequence is then dynamically patched into a tracer call when 135 sequence is then dynamically patched into a tracer call when
138 tracing is enabled by the administrator. If it's runtime disabled 136 tracing is enabled by the administrator. If it's runtime disabled
139 (the bootup default), then the overhead of the instructions is very 137 (the bootup default), then the overhead of the instructions is very
@@ -150,7 +148,7 @@ config FUNCTION_GRAPH_TRACER
150 and its entry. 148 and its entry.
151 Its first purpose is to trace the duration of functions and 149 Its first purpose is to trace the duration of functions and
152 draw a call graph for each thread with some information like 150 draw a call graph for each thread with some information like
153 the return value. This is done by setting the current return 151 the return value. This is done by setting the current return
154 address on the current task structure into a stack of calls. 152 address on the current task structure into a stack of calls.
155 153
156 154
@@ -173,7 +171,7 @@ config IRQSOFF_TRACER
173 171
174 echo 0 > /sys/kernel/debug/tracing/tracing_max_latency 172 echo 0 > /sys/kernel/debug/tracing/tracing_max_latency
175 173
176 (Note that kernel size and overhead increases with this option 174 (Note that kernel size and overhead increase with this option
177 enabled. This option and the preempt-off timing option can be 175 enabled. This option and the preempt-off timing option can be
178 used together or separately.) 176 used together or separately.)
179 177
@@ -186,7 +184,7 @@ config PREEMPT_TRACER
186 select TRACER_MAX_TRACE 184 select TRACER_MAX_TRACE
187 select RING_BUFFER_ALLOW_SWAP 185 select RING_BUFFER_ALLOW_SWAP
188 help 186 help
189 This option measures the time spent in preemption off critical 187 This option measures the time spent in preemption-off critical
190 sections, with microsecond accuracy. 188 sections, with microsecond accuracy.
191 189
192 The default measurement method is a maximum search, which is 190 The default measurement method is a maximum search, which is
@@ -195,7 +193,7 @@ config PREEMPT_TRACER
195 193
196 echo 0 > /sys/kernel/debug/tracing/tracing_max_latency 194 echo 0 > /sys/kernel/debug/tracing/tracing_max_latency
197 195
198 (Note that kernel size and overhead increases with this option 196 (Note that kernel size and overhead increase with this option
199 enabled. This option and the irqs-off timing option can be 197 enabled. This option and the irqs-off timing option can be
200 used together or separately.) 198 used together or separately.)
201 199
@@ -222,7 +220,7 @@ config ENABLE_DEFAULT_TRACERS
222 depends on !GENERIC_TRACER 220 depends on !GENERIC_TRACER
223 select TRACING 221 select TRACING
224 help 222 help
225 This tracer hooks to various trace points in the kernel 223 This tracer hooks to various trace points in the kernel,
226 allowing the user to pick and choose which trace point they 224 allowing the user to pick and choose which trace point they
227 want to trace. It also includes the sched_switch tracer plugin. 225 want to trace. It also includes the sched_switch tracer plugin.
228 226
@@ -265,19 +263,19 @@ choice
265 The likely/unlikely profiler only looks at the conditions that 263 The likely/unlikely profiler only looks at the conditions that
266 are annotated with a likely or unlikely macro. 264 are annotated with a likely or unlikely macro.
267 265
268 The "all branch" profiler will profile every if statement in the 266 The "all branch" profiler will profile every if-statement in the
269 kernel. This profiler will also enable the likely/unlikely 267 kernel. This profiler will also enable the likely/unlikely
270 profiler as well. 268 profiler.
271 269
272 Either of the above profilers add a bit of overhead to the system. 270 Either of the above profilers adds a bit of overhead to the system.
273 If unsure choose "No branch profiling". 271 If unsure, choose "No branch profiling".
274 272
275config BRANCH_PROFILE_NONE 273config BRANCH_PROFILE_NONE
276 bool "No branch profiling" 274 bool "No branch profiling"
277 help 275 help
278 No branch profiling. Branch profiling adds a bit of overhead. 276 No branch profiling. Branch profiling adds a bit of overhead.
279 Only enable it if you want to analyse the branching behavior. 277 Only enable it if you want to analyse the branching behavior.
280 Otherwise keep it disabled. 278 Otherwise keep it disabled.
281 279
282config PROFILE_ANNOTATED_BRANCHES 280config PROFILE_ANNOTATED_BRANCHES
283 bool "Trace likely/unlikely profiler" 281 bool "Trace likely/unlikely profiler"
@@ -288,7 +286,7 @@ config PROFILE_ANNOTATED_BRANCHES
288 286
289 /sys/kernel/debug/tracing/profile_annotated_branch 287 /sys/kernel/debug/tracing/profile_annotated_branch
290 288
291 Note: this will add a significant overhead, only turn this 289 Note: this will add a significant overhead; only turn this
292 on if you need to profile the system's use of these macros. 290 on if you need to profile the system's use of these macros.
293 291
294config PROFILE_ALL_BRANCHES 292config PROFILE_ALL_BRANCHES
@@ -305,7 +303,7 @@ config PROFILE_ALL_BRANCHES
305 303
306 This configuration, when enabled, will impose a great overhead 304 This configuration, when enabled, will impose a great overhead
307 on the system. This should only be enabled when the system 305 on the system. This should only be enabled when the system
308 is to be analyzed 306 is to be analyzed in much detail.
309endchoice 307endchoice
310 308
311config TRACING_BRANCHES 309config TRACING_BRANCHES
@@ -335,7 +333,7 @@ config POWER_TRACER
335 depends on X86 333 depends on X86
336 select GENERIC_TRACER 334 select GENERIC_TRACER
337 help 335 help
338 This tracer helps developers to analyze and optimize the kernels 336 This tracer helps developers to analyze and optimize the kernel's
339 power management decisions, specifically the C-state and P-state 337 power management decisions, specifically the C-state and P-state
340 behavior. 338 behavior.
341 339
@@ -391,14 +389,14 @@ config HW_BRANCH_TRACER
391 select GENERIC_TRACER 389 select GENERIC_TRACER
392 help 390 help
393 This tracer records all branches on the system in a circular 391 This tracer records all branches on the system in a circular
394 buffer giving access to the last N branches for each cpu. 392 buffer, giving access to the last N branches for each cpu.
395 393
396config KMEMTRACE 394config KMEMTRACE
397 bool "Trace SLAB allocations" 395 bool "Trace SLAB allocations"
398 select GENERIC_TRACER 396 select GENERIC_TRACER
399 help 397 help
400 kmemtrace provides tracing for slab allocator functions, such as 398 kmemtrace provides tracing for slab allocator functions, such as
401 kmalloc, kfree, kmem_cache_alloc, kmem_cache_free etc.. Collected 399 kmalloc, kfree, kmem_cache_alloc, kmem_cache_free, etc. Collected
402 data is then fed to the userspace application in order to analyse 400 data is then fed to the userspace application in order to analyse
403 allocation hotspots, internal fragmentation and so on, making it 401 allocation hotspots, internal fragmentation and so on, making it
404 possible to see how well an allocator performs, as well as debug 402 possible to see how well an allocator performs, as well as debug
@@ -417,15 +415,15 @@ config WORKQUEUE_TRACER
417 bool "Trace workqueues" 415 bool "Trace workqueues"
418 select GENERIC_TRACER 416 select GENERIC_TRACER
419 help 417 help
420 The workqueue tracer provides some statistical informations 418 The workqueue tracer provides some statistical information
421 about each cpu workqueue thread such as the number of the 419 about each cpu workqueue thread such as the number of the
422 works inserted and executed since their creation. It can help 420 works inserted and executed since their creation. It can help
423 to evaluate the amount of work each of them have to perform. 421 to evaluate the amount of work each of them has to perform.
424 For example it can help a developer to decide whether he should 422 For example it can help a developer to decide whether he should
425 choose a per cpu workqueue instead of a singlethreaded one. 423 choose a per-cpu workqueue instead of a singlethreaded one.
426 424
427config BLK_DEV_IO_TRACE 425config BLK_DEV_IO_TRACE
428 bool "Support for tracing block io actions" 426 bool "Support for tracing block IO actions"
429 depends on SYSFS 427 depends on SYSFS
430 depends on BLOCK 428 depends on BLOCK
431 select RELAY 429 select RELAY
@@ -456,15 +454,15 @@ config KPROBE_EVENT
456 select TRACING 454 select TRACING
457 default y 455 default y
458 help 456 help
459 This allows the user to add tracing events (similar to tracepoints) on the fly 457 This allows the user to add tracing events (similar to tracepoints)
460 via the ftrace interface. See Documentation/trace/kprobetrace.txt 458 on the fly via the ftrace interface. See
461 for more details. 459 Documentation/trace/kprobetrace.txt for more details.
462 460
463 Those events can be inserted wherever kprobes can probe, and record 461 Those events can be inserted wherever kprobes can probe, and record
464 various register and memory values. 462 various register and memory values.
465 463
466 This option is also required by perf-probe subcommand of perf tools. If 464 This option is also required by perf-probe subcommand of perf tools.
467 you want to use perf tools, this option is strongly recommended. 465 If you want to use perf tools, this option is strongly recommended.
468 466
469config DYNAMIC_FTRACE 467config DYNAMIC_FTRACE
470 bool "enable/disable ftrace tracepoints dynamically" 468 bool "enable/disable ftrace tracepoints dynamically"
@@ -472,32 +470,32 @@ config DYNAMIC_FTRACE
472 depends on HAVE_DYNAMIC_FTRACE 470 depends on HAVE_DYNAMIC_FTRACE
473 default y 471 default y
474 help 472 help
475 This option will modify all the calls to ftrace dynamically 473 This option will modify all the calls to ftrace dynamically
476 (will patch them out of the binary image and replaces them 474 (will patch them out of the binary image and replace them
477 with a No-Op instruction) as they are called. A table is 475 with a No-Op instruction) as they are called. A table is
478 created to dynamically enable them again. 476 created to dynamically enable them again.
479 477
480 This way a CONFIG_FUNCTION_TRACER kernel is slightly larger, but otherwise 478 This way a CONFIG_FUNCTION_TRACER kernel is slightly larger, but
481 has native performance as long as no tracing is active. 479 otherwise has native performance as long as no tracing is active.
482 480
483 The changes to the code are done by a kernel thread that 481 The changes to the code are done by a kernel thread that
484 wakes up once a second and checks to see if any ftrace calls 482 wakes up once a second and checks to see if any ftrace calls
485 were made. If so, it runs stop_machine (stops all CPUS) 483 were made. If so, it runs stop_machine (stops all CPUS)
486 and modifies the code to jump over the call to ftrace. 484 and modifies the code to jump over the call to ftrace.
487 485
488config FUNCTION_PROFILER 486config FUNCTION_PROFILER
489 bool "Kernel function profiler" 487 bool "Kernel function profiler"
490 depends on FUNCTION_TRACER 488 depends on FUNCTION_TRACER
491 default n 489 default n
492 help 490 help
493 This option enables the kernel function profiler. A file is created 491 This option enables the kernel function profiler. A file is created
494 in debugfs called function_profile_enabled which defaults to zero. 492 in debugfs called function_profile_enabled which defaults to zero.
495 When a 1 is echoed into this file profiling begins, and when a 493 When a 1 is echoed into this file profiling begins, and when a
496 zero is entered, profiling stops. A file in the trace_stats 494 zero is entered, profiling stops. A "functions" file is created in
497 directory called functions, that show the list of functions that 495 the trace_stats directory; this file shows the list of functions that
498 have been hit and their counters. 496 have been hit and their counters.
499 497
500 If in doubt, say N 498 If in doubt, say N.
501 499
502config FTRACE_MCOUNT_RECORD 500config FTRACE_MCOUNT_RECORD
503 def_bool y 501 def_bool y
@@ -556,8 +554,8 @@ config RING_BUFFER_BENCHMARK
556 tristate "Ring buffer benchmark stress tester" 554 tristate "Ring buffer benchmark stress tester"
557 depends on RING_BUFFER 555 depends on RING_BUFFER
558 help 556 help
559 This option creates a test to stress the ring buffer and bench mark it. 557 This option creates a test to stress the ring buffer and benchmark it.
560 It creates its own ring buffer such that it will not interfer with 558 It creates its own ring buffer such that it will not interfere with
561 any other users of the ring buffer (such as ftrace). It then creates 559 any other users of the ring buffer (such as ftrace). It then creates
562 a producer and consumer that will run for 10 seconds and sleep for 560 a producer and consumer that will run for 10 seconds and sleep for
563 10 seconds. Each interval it will print out the number of events 561 10 seconds. Each interval it will print out the number of events
@@ -566,7 +564,7 @@ config RING_BUFFER_BENCHMARK
566 It does not disable interrupts or raise its priority, so it may be 564 It does not disable interrupts or raise its priority, so it may be
567 affected by processes that are running. 565 affected by processes that are running.
568 566
569 If unsure, say N 567 If unsure, say N.
570 568
571endif # FTRACE 569endif # FTRACE
572 570
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 7968762c8167..1e6640f80454 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -1690,7 +1690,7 @@ ftrace_regex_lseek(struct file *file, loff_t offset, int origin)
1690static int ftrace_match(char *str, char *regex, int len, int type) 1690static int ftrace_match(char *str, char *regex, int len, int type)
1691{ 1691{
1692 int matched = 0; 1692 int matched = 0;
1693 char *ptr; 1693 int slen;
1694 1694
1695 switch (type) { 1695 switch (type) {
1696 case MATCH_FULL: 1696 case MATCH_FULL:
@@ -1706,8 +1706,8 @@ static int ftrace_match(char *str, char *regex, int len, int type)
1706 matched = 1; 1706 matched = 1;
1707 break; 1707 break;
1708 case MATCH_END_ONLY: 1708 case MATCH_END_ONLY:
1709 ptr = strstr(str, regex); 1709 slen = strlen(str);
1710 if (ptr && (ptr[len] == 0)) 1710 if (slen >= len && memcmp(str + slen - len, regex, len) == 0)
1711 matched = 1; 1711 matched = 1;
1712 break; 1712 break;
1713 } 1713 }
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index 2326b04c95c4..8c1b2d290718 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -464,6 +464,8 @@ struct ring_buffer_iter {
464 struct ring_buffer_per_cpu *cpu_buffer; 464 struct ring_buffer_per_cpu *cpu_buffer;
465 unsigned long head; 465 unsigned long head;
466 struct buffer_page *head_page; 466 struct buffer_page *head_page;
467 struct buffer_page *cache_reader_page;
468 unsigned long cache_read;
467 u64 read_stamp; 469 u64 read_stamp;
468}; 470};
469 471
@@ -2716,6 +2718,8 @@ static void rb_iter_reset(struct ring_buffer_iter *iter)
2716 iter->read_stamp = cpu_buffer->read_stamp; 2718 iter->read_stamp = cpu_buffer->read_stamp;
2717 else 2719 else
2718 iter->read_stamp = iter->head_page->page->time_stamp; 2720 iter->read_stamp = iter->head_page->page->time_stamp;
2721 iter->cache_reader_page = cpu_buffer->reader_page;
2722 iter->cache_read = cpu_buffer->read;
2719} 2723}
2720 2724
2721/** 2725/**
@@ -2869,7 +2873,7 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
2869 * Splice the empty reader page into the list around the head. 2873 * Splice the empty reader page into the list around the head.
2870 */ 2874 */
2871 reader = rb_set_head_page(cpu_buffer); 2875 reader = rb_set_head_page(cpu_buffer);
2872 cpu_buffer->reader_page->list.next = reader->list.next; 2876 cpu_buffer->reader_page->list.next = rb_list_head(reader->list.next);
2873 cpu_buffer->reader_page->list.prev = reader->list.prev; 2877 cpu_buffer->reader_page->list.prev = reader->list.prev;
2874 2878
2875 /* 2879 /*
@@ -2906,7 +2910,7 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
2906 * 2910 *
2907 * Now make the new head point back to the reader page. 2911 * Now make the new head point back to the reader page.
2908 */ 2912 */
2909 reader->list.next->prev = &cpu_buffer->reader_page->list; 2913 rb_list_head(reader->list.next)->prev = &cpu_buffer->reader_page->list;
2910 rb_inc_page(cpu_buffer, &cpu_buffer->head_page); 2914 rb_inc_page(cpu_buffer, &cpu_buffer->head_page);
2911 2915
2912 /* Finally update the reader page to the new head */ 2916 /* Finally update the reader page to the new head */
@@ -3060,13 +3064,22 @@ rb_iter_peek(struct ring_buffer_iter *iter, u64 *ts)
3060 struct ring_buffer_event *event; 3064 struct ring_buffer_event *event;
3061 int nr_loops = 0; 3065 int nr_loops = 0;
3062 3066
3063 if (ring_buffer_iter_empty(iter))
3064 return NULL;
3065
3066 cpu_buffer = iter->cpu_buffer; 3067 cpu_buffer = iter->cpu_buffer;
3067 buffer = cpu_buffer->buffer; 3068 buffer = cpu_buffer->buffer;
3068 3069
3070 /*
3071 * Check if someone performed a consuming read to
3072 * the buffer. A consuming read invalidates the iterator
3073 * and we need to reset the iterator in this case.
3074 */
3075 if (unlikely(iter->cache_read != cpu_buffer->read ||
3076 iter->cache_reader_page != cpu_buffer->reader_page))
3077 rb_iter_reset(iter);
3078
3069 again: 3079 again:
3080 if (ring_buffer_iter_empty(iter))
3081 return NULL;
3082
3070 /* 3083 /*
3071 * We repeat when a timestamp is encountered. 3084 * We repeat when a timestamp is encountered.
3072 * We can get multiple timestamps by nested interrupts or also 3085 * We can get multiple timestamps by nested interrupts or also
@@ -3081,6 +3094,11 @@ rb_iter_peek(struct ring_buffer_iter *iter, u64 *ts)
3081 if (rb_per_cpu_empty(cpu_buffer)) 3094 if (rb_per_cpu_empty(cpu_buffer))
3082 return NULL; 3095 return NULL;
3083 3096
3097 if (iter->head >= local_read(&iter->head_page->page->commit)) {
3098 rb_inc_iter(iter);
3099 goto again;
3100 }
3101
3084 event = rb_iter_head_event(iter); 3102 event = rb_iter_head_event(iter);
3085 3103
3086 switch (event->type_len) { 3104 switch (event->type_len) {
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 8b9f20ab8eed..eac6875cb990 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -951,6 +951,11 @@ void trace_find_cmdline(int pid, char comm[])
951 return; 951 return;
952 } 952 }
953 953
954 if (WARN_ON_ONCE(pid < 0)) {
955 strcpy(comm, "<XXX>");
956 return;
957 }
958
954 if (pid > PID_MAX_DEFAULT) { 959 if (pid > PID_MAX_DEFAULT) {
955 strcpy(comm, "<...>"); 960 strcpy(comm, "<...>");
956 return; 961 return;
@@ -3949,7 +3954,7 @@ trace_options_write(struct file *filp, const char __user *ubuf, size_t cnt,
3949 if (!!(topt->flags->val & topt->opt->bit) != val) { 3954 if (!!(topt->flags->val & topt->opt->bit) != val) {
3950 mutex_lock(&trace_types_lock); 3955 mutex_lock(&trace_types_lock);
3951 ret = __set_tracer_option(current_trace, topt->flags, 3956 ret = __set_tracer_option(current_trace, topt->flags,
3952 topt->opt, val); 3957 topt->opt, !val);
3953 mutex_unlock(&trace_types_lock); 3958 mutex_unlock(&trace_types_lock);
3954 if (ret) 3959 if (ret)
3955 return ret; 3960 return ret;
diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c
index 50504cb228de..e42af9aad69f 100644
--- a/kernel/trace/trace_events_filter.c
+++ b/kernel/trace/trace_events_filter.c
@@ -211,8 +211,9 @@ static int filter_pred_pchar(struct filter_pred *pred, void *event,
211{ 211{
212 char **addr = (char **)(event + pred->offset); 212 char **addr = (char **)(event + pred->offset);
213 int cmp, match; 213 int cmp, match;
214 int len = strlen(*addr) + 1; /* including tailing '\0' */
214 215
215 cmp = pred->regex.match(*addr, &pred->regex, pred->regex.field_len); 216 cmp = pred->regex.match(*addr, &pred->regex, len);
216 217
217 match = cmp ^ pred->not; 218 match = cmp ^ pred->not;
218 219
@@ -251,7 +252,18 @@ static int filter_pred_none(struct filter_pred *pred, void *event,
251 return 0; 252 return 0;
252} 253}
253 254
254/* Basic regex callbacks */ 255/*
256 * regex_match_foo - Basic regex callbacks
257 *
258 * @str: the string to be searched
259 * @r: the regex structure containing the pattern string
260 * @len: the length of the string to be searched (including '\0')
261 *
262 * Note:
263 * - @str might not be NULL-terminated if it's of type DYN_STRING
264 * or STATIC_STRING
265 */
266
255static int regex_match_full(char *str, struct regex *r, int len) 267static int regex_match_full(char *str, struct regex *r, int len)
256{ 268{
257 if (strncmp(str, r->pattern, len) == 0) 269 if (strncmp(str, r->pattern, len) == 0)
@@ -261,23 +273,24 @@ static int regex_match_full(char *str, struct regex *r, int len)
261 273
262static int regex_match_front(char *str, struct regex *r, int len) 274static int regex_match_front(char *str, struct regex *r, int len)
263{ 275{
264 if (strncmp(str, r->pattern, len) == 0) 276 if (strncmp(str, r->pattern, r->len) == 0)
265 return 1; 277 return 1;
266 return 0; 278 return 0;
267} 279}
268 280
269static int regex_match_middle(char *str, struct regex *r, int len) 281static int regex_match_middle(char *str, struct regex *r, int len)
270{ 282{
271 if (strstr(str, r->pattern)) 283 if (strnstr(str, r->pattern, len))
272 return 1; 284 return 1;
273 return 0; 285 return 0;
274} 286}
275 287
276static int regex_match_end(char *str, struct regex *r, int len) 288static int regex_match_end(char *str, struct regex *r, int len)
277{ 289{
278 char *ptr = strstr(str, r->pattern); 290 int strlen = len - 1;
279 291
280 if (ptr && (ptr[r->len] == 0)) 292 if (strlen >= r->len &&
293 memcmp(str + strlen - r->len, r->pattern, r->len) == 0)
281 return 1; 294 return 1;
282 return 0; 295 return 0;
283} 296}
@@ -781,10 +794,8 @@ static int filter_add_pred(struct filter_parse_state *ps,
781 pred->regex.field_len = field->size; 794 pred->regex.field_len = field->size;
782 } else if (field->filter_type == FILTER_DYN_STRING) 795 } else if (field->filter_type == FILTER_DYN_STRING)
783 fn = filter_pred_strloc; 796 fn = filter_pred_strloc;
784 else { 797 else
785 fn = filter_pred_pchar; 798 fn = filter_pred_pchar;
786 pred->regex.field_len = strlen(pred->regex.pattern);
787 }
788 } else { 799 } else {
789 if (field->is_signed) 800 if (field->is_signed)
790 ret = strict_strtoll(pred->regex.pattern, 0, &val); 801 ret = strict_strtoll(pred->regex.pattern, 0, &val);
diff --git a/kernel/trace/trace_export.c b/kernel/trace/trace_export.c
index 458e5bfe26d0..d4fa5dc1ee4e 100644
--- a/kernel/trace/trace_export.c
+++ b/kernel/trace/trace_export.c
@@ -158,7 +158,8 @@ ftrace_format_##name(struct ftrace_event_call *unused, \
158 BUILD_BUG_ON(len > MAX_FILTER_STR_VAL); \ 158 BUILD_BUG_ON(len > MAX_FILTER_STR_VAL); \
159 ret = trace_define_field(event_call, #type "[" #len "]", #item, \ 159 ret = trace_define_field(event_call, #type "[" #len "]", #item, \
160 offsetof(typeof(field), item), \ 160 offsetof(typeof(field), item), \
161 sizeof(field.item), 0, FILTER_OTHER); \ 161 sizeof(field.item), \
162 is_signed_type(type), FILTER_OTHER); \
162 if (ret) \ 163 if (ret) \
163 return ret; 164 return ret;
164 165
@@ -168,8 +169,8 @@ ftrace_format_##name(struct ftrace_event_call *unused, \
168 ret = trace_define_field(event_call, #type "[" #len "]", #item, \ 169 ret = trace_define_field(event_call, #type "[" #len "]", #item, \
169 offsetof(typeof(field), \ 170 offsetof(typeof(field), \
170 container.item), \ 171 container.item), \
171 sizeof(field.container.item), 0, \ 172 sizeof(field.container.item), \
172 FILTER_OTHER); \ 173 is_signed_type(type), FILTER_OTHER); \
173 if (ret) \ 174 if (ret) \
174 return ret; 175 return ret;
175 176
diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
index 375f81a568dc..50b1b8239806 100644
--- a/kernel/trace/trace_kprobe.c
+++ b/kernel/trace/trace_kprobe.c
@@ -689,7 +689,7 @@ static int create_trace_probe(int argc, char **argv)
689 return -EINVAL; 689 return -EINVAL;
690 } 690 }
691 /* an address specified */ 691 /* an address specified */
692 ret = strict_strtoul(&argv[0][2], 0, (unsigned long *)&addr); 692 ret = strict_strtoul(&argv[1][0], 0, (unsigned long *)&addr);
693 if (ret) { 693 if (ret) {
694 pr_info("Failed to parse address.\n"); 694 pr_info("Failed to parse address.\n");
695 return ret; 695 return ret;
@@ -1201,10 +1201,11 @@ static int __probe_event_show_format(struct trace_seq *s,
1201#undef SHOW_FIELD 1201#undef SHOW_FIELD
1202#define SHOW_FIELD(type, item, name) \ 1202#define SHOW_FIELD(type, item, name) \
1203 do { \ 1203 do { \
1204 ret = trace_seq_printf(s, "\tfield: " #type " %s;\t" \ 1204 ret = trace_seq_printf(s, "\tfield:" #type " %s;\t" \
1205 "offset:%u;\tsize:%u;\n", name, \ 1205 "offset:%u;\tsize:%u;\tsigned:%d;\n", name,\
1206 (unsigned int)offsetof(typeof(field), item),\ 1206 (unsigned int)offsetof(typeof(field), item),\
1207 (unsigned int)sizeof(type)); \ 1207 (unsigned int)sizeof(type), \
1208 is_signed_type(type)); \
1208 if (!ret) \ 1209 if (!ret) \
1209 return 0; \ 1210 return 0; \
1210 } while (0) 1211 } while (0)
diff --git a/kernel/trace/trace_ksym.c b/kernel/trace/trace_ksym.c
index faf37fa4408c..94103cdcf9d8 100644
--- a/kernel/trace/trace_ksym.c
+++ b/kernel/trace/trace_ksym.c
@@ -26,12 +26,13 @@
26#include <linux/fs.h> 26#include <linux/fs.h>
27 27
28#include "trace_output.h" 28#include "trace_output.h"
29#include "trace_stat.h"
30#include "trace.h" 29#include "trace.h"
31 30
32#include <linux/hw_breakpoint.h> 31#include <linux/hw_breakpoint.h>
33#include <asm/hw_breakpoint.h> 32#include <asm/hw_breakpoint.h>
34 33
34#include <asm/atomic.h>
35
35/* 36/*
36 * For now, let us restrict the no. of symbols traced simultaneously to number 37 * For now, let us restrict the no. of symbols traced simultaneously to number
37 * of available hardware breakpoint registers. 38 * of available hardware breakpoint registers.
@@ -44,7 +45,7 @@ struct trace_ksym {
44 struct perf_event **ksym_hbp; 45 struct perf_event **ksym_hbp;
45 struct perf_event_attr attr; 46 struct perf_event_attr attr;
46#ifdef CONFIG_PROFILE_KSYM_TRACER 47#ifdef CONFIG_PROFILE_KSYM_TRACER
47 unsigned long counter; 48 atomic64_t counter;
48#endif 49#endif
49 struct hlist_node ksym_hlist; 50 struct hlist_node ksym_hlist;
50}; 51};
@@ -69,9 +70,8 @@ void ksym_collect_stats(unsigned long hbp_hit_addr)
69 70
70 rcu_read_lock(); 71 rcu_read_lock();
71 hlist_for_each_entry_rcu(entry, node, &ksym_filter_head, ksym_hlist) { 72 hlist_for_each_entry_rcu(entry, node, &ksym_filter_head, ksym_hlist) {
72 if ((entry->attr.bp_addr == hbp_hit_addr) && 73 if (entry->attr.bp_addr == hbp_hit_addr) {
73 (entry->counter <= MAX_UL_INT)) { 74 atomic64_inc(&entry->counter);
74 entry->counter++;
75 break; 75 break;
76 } 76 }
77 } 77 }
@@ -197,7 +197,6 @@ int process_new_ksym_entry(char *ksymname, int op, unsigned long addr)
197 entry->attr.bp_addr = addr; 197 entry->attr.bp_addr = addr;
198 entry->attr.bp_len = HW_BREAKPOINT_LEN_4; 198 entry->attr.bp_len = HW_BREAKPOINT_LEN_4;
199 199
200 ret = -EAGAIN;
201 entry->ksym_hbp = register_wide_hw_breakpoint(&entry->attr, 200 entry->ksym_hbp = register_wide_hw_breakpoint(&entry->attr,
202 ksym_hbp_handler); 201 ksym_hbp_handler);
203 202
@@ -300,8 +299,8 @@ static ssize_t ksym_trace_filter_write(struct file *file,
300 * 2: echo 0 > ksym_trace_filter 299 * 2: echo 0 > ksym_trace_filter
301 * 3: echo "*:---" > ksym_trace_filter 300 * 3: echo "*:---" > ksym_trace_filter
302 */ 301 */
303 if (!buf[0] || !strcmp(buf, "0") || 302 if (!input_string[0] || !strcmp(input_string, "0") ||
304 !strcmp(buf, "*:---")) { 303 !strcmp(input_string, "*:---")) {
305 __ksym_trace_reset(); 304 __ksym_trace_reset();
306 ret = 0; 305 ret = 0;
307 goto out; 306 goto out;
@@ -444,102 +443,77 @@ struct tracer ksym_tracer __read_mostly =
444 .print_line = ksym_trace_output 443 .print_line = ksym_trace_output
445}; 444};
446 445
447__init static int init_ksym_trace(void)
448{
449 struct dentry *d_tracer;
450 struct dentry *entry;
451
452 d_tracer = tracing_init_dentry();
453 ksym_filter_entry_count = 0;
454
455 entry = debugfs_create_file("ksym_trace_filter", 0644, d_tracer,
456 NULL, &ksym_tracing_fops);
457 if (!entry)
458 pr_warning("Could not create debugfs "
459 "'ksym_trace_filter' file\n");
460
461 return register_tracer(&ksym_tracer);
462}
463device_initcall(init_ksym_trace);
464
465
466#ifdef CONFIG_PROFILE_KSYM_TRACER 446#ifdef CONFIG_PROFILE_KSYM_TRACER
467static int ksym_tracer_stat_headers(struct seq_file *m) 447static int ksym_profile_show(struct seq_file *m, void *v)
468{ 448{
449 struct hlist_node *node;
450 struct trace_ksym *entry;
451 int access_type = 0;
452 char fn_name[KSYM_NAME_LEN];
453
469 seq_puts(m, " Access Type "); 454 seq_puts(m, " Access Type ");
470 seq_puts(m, " Symbol Counter\n"); 455 seq_puts(m, " Symbol Counter\n");
471 seq_puts(m, " ----------- "); 456 seq_puts(m, " ----------- ");
472 seq_puts(m, " ------ -------\n"); 457 seq_puts(m, " ------ -------\n");
473 return 0;
474}
475 458
476static int ksym_tracer_stat_show(struct seq_file *m, void *v) 459 rcu_read_lock();
477{ 460 hlist_for_each_entry_rcu(entry, node, &ksym_filter_head, ksym_hlist) {
478 struct hlist_node *stat = v;
479 struct trace_ksym *entry;
480 int access_type = 0;
481 char fn_name[KSYM_NAME_LEN];
482 461
483 entry = hlist_entry(stat, struct trace_ksym, ksym_hlist); 462 access_type = entry->attr.bp_type;
484 463
485 access_type = entry->attr.bp_type; 464 switch (access_type) {
465 case HW_BREAKPOINT_R:
466 seq_puts(m, " R ");
467 break;
468 case HW_BREAKPOINT_W:
469 seq_puts(m, " W ");
470 break;
471 case HW_BREAKPOINT_R | HW_BREAKPOINT_W:
472 seq_puts(m, " RW ");
473 break;
474 default:
475 seq_puts(m, " NA ");
476 }
486 477
487 switch (access_type) { 478 if (lookup_symbol_name(entry->attr.bp_addr, fn_name) >= 0)
488 case HW_BREAKPOINT_R: 479 seq_printf(m, " %-36s", fn_name);
489 seq_puts(m, " R "); 480 else
490 break; 481 seq_printf(m, " %-36s", "<NA>");
491 case HW_BREAKPOINT_W: 482 seq_printf(m, " %15llu\n",
492 seq_puts(m, " W "); 483 (unsigned long long)atomic64_read(&entry->counter));
493 break;
494 case HW_BREAKPOINT_R | HW_BREAKPOINT_W:
495 seq_puts(m, " RW ");
496 break;
497 default:
498 seq_puts(m, " NA ");
499 } 484 }
500 485 rcu_read_unlock();
501 if (lookup_symbol_name(entry->attr.bp_addr, fn_name) >= 0)
502 seq_printf(m, " %-36s", fn_name);
503 else
504 seq_printf(m, " %-36s", "<NA>");
505 seq_printf(m, " %15lu\n", entry->counter);
506 486
507 return 0; 487 return 0;
508} 488}
509 489
510static void *ksym_tracer_stat_start(struct tracer_stat *trace) 490static int ksym_profile_open(struct inode *node, struct file *file)
511{ 491{
512 return ksym_filter_head.first; 492 return single_open(file, ksym_profile_show, NULL);
513}
514
515static void *
516ksym_tracer_stat_next(void *v, int idx)
517{
518 struct hlist_node *stat = v;
519
520 return stat->next;
521} 493}
522 494
523static struct tracer_stat ksym_tracer_stats = { 495static const struct file_operations ksym_profile_fops = {
524 .name = "ksym_tracer", 496 .open = ksym_profile_open,
525 .stat_start = ksym_tracer_stat_start, 497 .read = seq_read,
526 .stat_next = ksym_tracer_stat_next, 498 .llseek = seq_lseek,
527 .stat_headers = ksym_tracer_stat_headers, 499 .release = single_release,
528 .stat_show = ksym_tracer_stat_show
529}; 500};
501#endif /* CONFIG_PROFILE_KSYM_TRACER */
530 502
531__init static int ksym_tracer_stat_init(void) 503__init static int init_ksym_trace(void)
532{ 504{
533 int ret; 505 struct dentry *d_tracer;
534 506
535 ret = register_stat_tracer(&ksym_tracer_stats); 507 d_tracer = tracing_init_dentry();
536 if (ret) {
537 printk(KERN_WARNING "Warning: could not register "
538 "ksym tracer stats\n");
539 return 1;
540 }
541 508
542 return 0; 509 trace_create_file("ksym_trace_filter", 0644, d_tracer,
510 NULL, &ksym_tracing_fops);
511
512#ifdef CONFIG_PROFILE_KSYM_TRACER
513 trace_create_file("ksym_profile", 0444, d_tracer,
514 NULL, &ksym_profile_fops);
515#endif
516
517 return register_tracer(&ksym_tracer);
543} 518}
544fs_initcall(ksym_tracer_stat_init); 519device_initcall(init_ksym_trace);
545#endif /* CONFIG_PROFILE_KSYM_TRACER */
diff --git a/kernel/trace/trace_stack.c b/kernel/trace/trace_stack.c
index 678a5120ee30..f4bc9b27de5f 100644
--- a/kernel/trace/trace_stack.c
+++ b/kernel/trace/trace_stack.c
@@ -157,6 +157,7 @@ stack_max_size_write(struct file *filp, const char __user *ubuf,
157 unsigned long val, flags; 157 unsigned long val, flags;
158 char buf[64]; 158 char buf[64];
159 int ret; 159 int ret;
160 int cpu;
160 161
161 if (count >= sizeof(buf)) 162 if (count >= sizeof(buf))
162 return -EINVAL; 163 return -EINVAL;
@@ -171,9 +172,20 @@ stack_max_size_write(struct file *filp, const char __user *ubuf,
171 return ret; 172 return ret;
172 173
173 local_irq_save(flags); 174 local_irq_save(flags);
175
176 /*
177 * In case we trace inside arch_spin_lock() or after (NMI),
178 * we will cause circular lock, so we also need to increase
179 * the percpu trace_active here.
180 */
181 cpu = smp_processor_id();
182 per_cpu(trace_active, cpu)++;
183
174 arch_spin_lock(&max_stack_lock); 184 arch_spin_lock(&max_stack_lock);
175 *ptr = val; 185 *ptr = val;
176 arch_spin_unlock(&max_stack_lock); 186 arch_spin_unlock(&max_stack_lock);
187
188 per_cpu(trace_active, cpu)--;
177 local_irq_restore(flags); 189 local_irq_restore(flags);
178 190
179 return count; 191 return count;
@@ -206,7 +218,13 @@ t_next(struct seq_file *m, void *v, loff_t *pos)
206 218
207static void *t_start(struct seq_file *m, loff_t *pos) 219static void *t_start(struct seq_file *m, loff_t *pos)
208{ 220{
221 int cpu;
222
209 local_irq_disable(); 223 local_irq_disable();
224
225 cpu = smp_processor_id();
226 per_cpu(trace_active, cpu)++;
227
210 arch_spin_lock(&max_stack_lock); 228 arch_spin_lock(&max_stack_lock);
211 229
212 if (*pos == 0) 230 if (*pos == 0)
@@ -217,7 +235,13 @@ static void *t_start(struct seq_file *m, loff_t *pos)
217 235
218static void t_stop(struct seq_file *m, void *p) 236static void t_stop(struct seq_file *m, void *p)
219{ 237{
238 int cpu;
239
220 arch_spin_unlock(&max_stack_lock); 240 arch_spin_unlock(&max_stack_lock);
241
242 cpu = smp_processor_id();
243 per_cpu(trace_active, cpu)--;
244
221 local_irq_enable(); 245 local_irq_enable();
222} 246}
223 247
diff --git a/lib/Kconfig b/lib/Kconfig
index 1cfe51628e1b..97b136ff117e 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -117,6 +117,10 @@ config DECOMPRESS_BZIP2
117config DECOMPRESS_LZMA 117config DECOMPRESS_LZMA
118 tristate 118 tristate
119 119
120config DECOMPRESS_LZO
121 select LZO_DECOMPRESS
122 tristate
123
120# 124#
121# Generic allocator support is selected if needed 125# Generic allocator support is selected if needed
122# 126#
diff --git a/lib/Makefile b/lib/Makefile
index 347ad8db29d3..3b0b4a696db9 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -21,7 +21,7 @@ lib-y += kobject.o kref.o klist.o
21 21
22obj-y += bcd.o div64.o sort.o parser.o halfmd4.o debug_locks.o random32.o \ 22obj-y += bcd.o div64.o sort.o parser.o halfmd4.o debug_locks.o random32.o \
23 bust_spinlocks.o hexdump.o kasprintf.o bitmap.o scatterlist.o \ 23 bust_spinlocks.o hexdump.o kasprintf.o bitmap.o scatterlist.o \
24 string_helpers.o gcd.o 24 string_helpers.o gcd.o list_sort.o
25 25
26ifeq ($(CONFIG_DEBUG_KOBJECT),y) 26ifeq ($(CONFIG_DEBUG_KOBJECT),y)
27CFLAGS_kobject.o += -DDEBUG 27CFLAGS_kobject.o += -DDEBUG
@@ -69,6 +69,7 @@ obj-$(CONFIG_LZO_DECOMPRESS) += lzo/
69lib-$(CONFIG_DECOMPRESS_GZIP) += decompress_inflate.o 69lib-$(CONFIG_DECOMPRESS_GZIP) += decompress_inflate.o
70lib-$(CONFIG_DECOMPRESS_BZIP2) += decompress_bunzip2.o 70lib-$(CONFIG_DECOMPRESS_BZIP2) += decompress_bunzip2.o
71lib-$(CONFIG_DECOMPRESS_LZMA) += decompress_unlzma.o 71lib-$(CONFIG_DECOMPRESS_LZMA) += decompress_unlzma.o
72lib-$(CONFIG_DECOMPRESS_LZO) += decompress_unlzo.o
72 73
73obj-$(CONFIG_TEXTSEARCH) += textsearch.o 74obj-$(CONFIG_TEXTSEARCH) += textsearch.o
74obj-$(CONFIG_TEXTSEARCH_KMP) += ts_kmp.o 75obj-$(CONFIG_TEXTSEARCH_KMP) += ts_kmp.o
diff --git a/lib/decompress.c b/lib/decompress.c
index d2842f571674..a7606815541f 100644
--- a/lib/decompress.c
+++ b/lib/decompress.c
@@ -9,6 +9,7 @@
9#include <linux/decompress/bunzip2.h> 9#include <linux/decompress/bunzip2.h>
10#include <linux/decompress/unlzma.h> 10#include <linux/decompress/unlzma.h>
11#include <linux/decompress/inflate.h> 11#include <linux/decompress/inflate.h>
12#include <linux/decompress/unlzo.h>
12 13
13#include <linux/types.h> 14#include <linux/types.h>
14#include <linux/string.h> 15#include <linux/string.h>
@@ -22,6 +23,9 @@
22#ifndef CONFIG_DECOMPRESS_LZMA 23#ifndef CONFIG_DECOMPRESS_LZMA
23# define unlzma NULL 24# define unlzma NULL
24#endif 25#endif
26#ifndef CONFIG_DECOMPRESS_LZO
27# define unlzo NULL
28#endif
25 29
26static const struct compress_format { 30static const struct compress_format {
27 unsigned char magic[2]; 31 unsigned char magic[2];
@@ -32,6 +36,7 @@ static const struct compress_format {
32 { {037, 0236}, "gzip", gunzip }, 36 { {037, 0236}, "gzip", gunzip },
33 { {0x42, 0x5a}, "bzip2", bunzip2 }, 37 { {0x42, 0x5a}, "bzip2", bunzip2 },
34 { {0x5d, 0x00}, "lzma", unlzma }, 38 { {0x5d, 0x00}, "lzma", unlzma },
39 { {0x89, 0x4c}, "lzo", unlzo },
35 { {0, 0}, NULL, NULL } 40 { {0, 0}, NULL, NULL }
36}; 41};
37 42
diff --git a/lib/decompress_unlzo.c b/lib/decompress_unlzo.c
new file mode 100644
index 000000000000..db521f45626e
--- /dev/null
+++ b/lib/decompress_unlzo.c
@@ -0,0 +1,209 @@
1/*
2 * LZO decompressor for the Linux kernel. Code borrowed from the lzo
3 * implementation by Markus Franz Xaver Johannes Oberhumer.
4 *
5 * Linux kernel adaptation:
6 * Copyright (C) 2009
7 * Albin Tonnerre, Free Electrons <albin.tonnerre@free-electrons.com>
8 *
9 * Original code:
10 * Copyright (C) 1996-2005 Markus Franz Xaver Johannes Oberhumer
11 * All Rights Reserved.
12 *
13 * lzop and the LZO library are free software; you can redistribute them
14 * and/or modify them under the terms of the GNU General Public License as
15 * published by the Free Software Foundation; either version 2 of
16 * the License, or (at your option) any later version.
17 *
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
22 *
23 * You should have received a copy of the GNU General Public License
24 * along with this program; see the file COPYING.
25 * If not, write to the Free Software Foundation, Inc.,
26 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
27 *
28 * Markus F.X.J. Oberhumer
29 * <markus@oberhumer.com>
30 * http://www.oberhumer.com/opensource/lzop/
31 */
32
33#ifdef STATIC
34#include "lzo/lzo1x_decompress.c"
35#else
36#include <linux/slab.h>
37#include <linux/decompress/unlzo.h>
38#endif
39
40#include <linux/types.h>
41#include <linux/lzo.h>
42#include <linux/decompress/mm.h>
43
44#include <linux/compiler.h>
45#include <asm/unaligned.h>
46
47static const unsigned char lzop_magic[] = {
48 0x89, 0x4c, 0x5a, 0x4f, 0x00, 0x0d, 0x0a, 0x1a, 0x0a };
49
50#define LZO_BLOCK_SIZE (256*1024l)
51#define HEADER_HAS_FILTER 0x00000800L
52
53STATIC inline int INIT parse_header(u8 *input, u8 *skip)
54{
55 int l;
56 u8 *parse = input;
57 u8 level = 0;
58 u16 version;
59
60 /* read magic: 9 first bits */
61 for (l = 0; l < 9; l++) {
62 if (*parse++ != lzop_magic[l])
63 return 0;
64 }
65 /* get version (2bytes), skip library version (2),
66 * 'need to be extracted' version (2) and
67 * method (1) */
68 version = get_unaligned_be16(parse);
69 parse += 7;
70 if (version >= 0x0940)
71 level = *parse++;
72 if (get_unaligned_be32(parse) & HEADER_HAS_FILTER)
73 parse += 8; /* flags + filter info */
74 else
75 parse += 4; /* flags */
76
77 /* skip mode and mtime_low */
78 parse += 8;
79 if (version >= 0x0940)
80 parse += 4; /* skip mtime_high */
81
82 l = *parse++;
83 /* don't care about the file name, and skip checksum */
84 parse += l + 4;
85
86 *skip = parse - input;
87 return 1;
88}
89
90STATIC inline int INIT unlzo(u8 *input, int in_len,
91 int (*fill) (void *, unsigned int),
92 int (*flush) (void *, unsigned int),
93 u8 *output, int *posp,
94 void (*error_fn) (char *x))
95{
96 u8 skip = 0, r = 0;
97 u32 src_len, dst_len;
98 size_t tmp;
99 u8 *in_buf, *in_buf_save, *out_buf;
100 int obytes_processed = 0;
101
102 set_error_fn(error_fn);
103
104 if (output) {
105 out_buf = output;
106 } else if (!flush) {
107 error("NULL output pointer and no flush function provided");
108 goto exit;
109 } else {
110 out_buf = malloc(LZO_BLOCK_SIZE);
111 if (!out_buf) {
112 error("Could not allocate output buffer");
113 goto exit;
114 }
115 }
116
117 if (input && fill) {
118 error("Both input pointer and fill function provided, don't know what to do");
119 goto exit_1;
120 } else if (input) {
121 in_buf = input;
122 } else if (!fill || !posp) {
123 error("NULL input pointer and missing position pointer or fill function");
124 goto exit_1;
125 } else {
126 in_buf = malloc(lzo1x_worst_compress(LZO_BLOCK_SIZE));
127 if (!in_buf) {
128 error("Could not allocate input buffer");
129 goto exit_1;
130 }
131 }
132 in_buf_save = in_buf;
133
134 if (posp)
135 *posp = 0;
136
137 if (fill)
138 fill(in_buf, lzo1x_worst_compress(LZO_BLOCK_SIZE));
139
140 if (!parse_header(input, &skip)) {
141 error("invalid header");
142 goto exit_2;
143 }
144 in_buf += skip;
145
146 if (posp)
147 *posp = skip;
148
149 for (;;) {
150 /* read uncompressed block size */
151 dst_len = get_unaligned_be32(in_buf);
152 in_buf += 4;
153
154 /* exit if last block */
155 if (dst_len == 0) {
156 if (posp)
157 *posp += 4;
158 break;
159 }
160
161 if (dst_len > LZO_BLOCK_SIZE) {
162 error("dest len longer than block size");
163 goto exit_2;
164 }
165
166 /* read compressed block size, and skip block checksum info */
167 src_len = get_unaligned_be32(in_buf);
168 in_buf += 8;
169
170 if (src_len <= 0 || src_len > dst_len) {
171 error("file corrupted");
172 goto exit_2;
173 }
174
175 /* decompress */
176 tmp = dst_len;
177 r = lzo1x_decompress_safe((u8 *) in_buf, src_len,
178 out_buf, &tmp);
179
180 if (r != LZO_E_OK || dst_len != tmp) {
181 error("Compressed data violation");
182 goto exit_2;
183 }
184
185 obytes_processed += dst_len;
186 if (flush)
187 flush(out_buf, dst_len);
188 if (output)
189 out_buf += dst_len;
190 if (posp)
191 *posp += src_len + 12;
192 if (fill) {
193 in_buf = in_buf_save;
194 fill(in_buf, lzo1x_worst_compress(LZO_BLOCK_SIZE));
195 } else
196 in_buf += src_len;
197 }
198
199exit_2:
200 if (!input)
201 free(in_buf);
202exit_1:
203 if (!output)
204 free(out_buf);
205exit:
206 return obytes_processed;
207}
208
209#define decompress unlzo
diff --git a/lib/dma-debug.c b/lib/dma-debug.c
index d9b08e0f7f55..ba8b67039d13 100644
--- a/lib/dma-debug.c
+++ b/lib/dma-debug.c
@@ -587,7 +587,7 @@ out_unlock:
587 return count; 587 return count;
588} 588}
589 589
590const struct file_operations filter_fops = { 590static const struct file_operations filter_fops = {
591 .read = filter_read, 591 .read = filter_read,
592 .write = filter_write, 592 .write = filter_write,
593}; 593};
@@ -670,12 +670,13 @@ static int device_dma_allocations(struct device *dev)
670 return count; 670 return count;
671} 671}
672 672
673static int dma_debug_device_change(struct notifier_block *nb, 673static int dma_debug_device_change(struct notifier_block *nb, unsigned long action, void *data)
674 unsigned long action, void *data)
675{ 674{
676 struct device *dev = data; 675 struct device *dev = data;
677 int count; 676 int count;
678 677
678 if (global_disable)
679 return 0;
679 680
680 switch (action) { 681 switch (action) {
681 case BUS_NOTIFY_UNBOUND_DRIVER: 682 case BUS_NOTIFY_UNBOUND_DRIVER:
@@ -697,6 +698,9 @@ void dma_debug_add_bus(struct bus_type *bus)
697{ 698{
698 struct notifier_block *nb; 699 struct notifier_block *nb;
699 700
701 if (global_disable)
702 return;
703
700 nb = kzalloc(sizeof(struct notifier_block), GFP_KERNEL); 704 nb = kzalloc(sizeof(struct notifier_block), GFP_KERNEL);
701 if (nb == NULL) { 705 if (nb == NULL) {
702 pr_err("dma_debug_add_bus: out of memory\n"); 706 pr_err("dma_debug_add_bus: out of memory\n");
@@ -909,6 +913,9 @@ static void check_sync(struct device *dev,
909 ref->size); 913 ref->size);
910 } 914 }
911 915
916 if (entry->direction == DMA_BIDIRECTIONAL)
917 goto out;
918
912 if (ref->direction != entry->direction) { 919 if (ref->direction != entry->direction) {
913 err_printk(dev, entry, "DMA-API: device driver syncs " 920 err_printk(dev, entry, "DMA-API: device driver syncs "
914 "DMA memory with different direction " 921 "DMA memory with different direction "
@@ -919,9 +926,6 @@ static void check_sync(struct device *dev,
919 dir2name[ref->direction]); 926 dir2name[ref->direction]);
920 } 927 }
921 928
922 if (entry->direction == DMA_BIDIRECTIONAL)
923 goto out;
924
925 if (to_cpu && !(entry->direction == DMA_FROM_DEVICE) && 929 if (to_cpu && !(entry->direction == DMA_FROM_DEVICE) &&
926 !(ref->direction == DMA_TO_DEVICE)) 930 !(ref->direction == DMA_TO_DEVICE))
927 err_printk(dev, entry, "DMA-API: device driver syncs " 931 err_printk(dev, entry, "DMA-API: device driver syncs "
@@ -944,7 +948,6 @@ static void check_sync(struct device *dev,
944 948
945out: 949out:
946 put_hash_bucket(bucket, &flags); 950 put_hash_bucket(bucket, &flags);
947
948} 951}
949 952
950void debug_dma_map_page(struct device *dev, struct page *page, size_t offset, 953void debug_dma_map_page(struct device *dev, struct page *page, size_t offset,
diff --git a/lib/idr.c b/lib/idr.c
index 1cac726c44bc..0dc782216d4b 100644
--- a/lib/idr.c
+++ b/lib/idr.c
@@ -156,10 +156,12 @@ static int sub_alloc(struct idr *idp, int *starting_id, struct idr_layer **pa)
156 id = (id | ((1 << (IDR_BITS * l)) - 1)) + 1; 156 id = (id | ((1 << (IDR_BITS * l)) - 1)) + 1;
157 157
158 /* if already at the top layer, we need to grow */ 158 /* if already at the top layer, we need to grow */
159 if (!(p = pa[l])) { 159 if (id >= 1 << (idp->layers * IDR_BITS)) {
160 *starting_id = id; 160 *starting_id = id;
161 return IDR_NEED_TO_GROW; 161 return IDR_NEED_TO_GROW;
162 } 162 }
163 p = pa[l];
164 BUG_ON(!p);
163 165
164 /* If we need to go up one layer, continue the 166 /* If we need to go up one layer, continue the
165 * loop; otherwise, restart from the top. 167 * loop; otherwise, restart from the top.
diff --git a/lib/list_sort.c b/lib/list_sort.c
new file mode 100644
index 000000000000..19d11e0bb958
--- /dev/null
+++ b/lib/list_sort.c
@@ -0,0 +1,102 @@
1#include <linux/kernel.h>
2#include <linux/module.h>
3#include <linux/list_sort.h>
4#include <linux/slab.h>
5#include <linux/list.h>
6
7/**
8 * list_sort - sort a list.
9 * @priv: private data, passed to @cmp
10 * @head: the list to sort
11 * @cmp: the elements comparison function
12 *
13 * This function has been implemented by Mark J Roberts <mjr@znex.org>. It
14 * implements "merge sort" which has O(nlog(n)) complexity. The list is sorted
15 * in ascending order.
16 *
17 * The comparison function @cmp is supposed to return a negative value if @a is
18 * less than @b, and a positive value if @a is greater than @b. If @a and @b
19 * are equivalent, then it does not matter what this function returns.
20 */
21void list_sort(void *priv, struct list_head *head,
22 int (*cmp)(void *priv, struct list_head *a,
23 struct list_head *b))
24{
25 struct list_head *p, *q, *e, *list, *tail, *oldhead;
26 int insize, nmerges, psize, qsize, i;
27
28 if (list_empty(head))
29 return;
30
31 list = head->next;
32 list_del(head);
33 insize = 1;
34 for (;;) {
35 p = oldhead = list;
36 list = tail = NULL;
37 nmerges = 0;
38
39 while (p) {
40 nmerges++;
41 q = p;
42 psize = 0;
43 for (i = 0; i < insize; i++) {
44 psize++;
45 q = q->next == oldhead ? NULL : q->next;
46 if (!q)
47 break;
48 }
49
50 qsize = insize;
51 while (psize > 0 || (qsize > 0 && q)) {
52 if (!psize) {
53 e = q;
54 q = q->next;
55 qsize--;
56 if (q == oldhead)
57 q = NULL;
58 } else if (!qsize || !q) {
59 e = p;
60 p = p->next;
61 psize--;
62 if (p == oldhead)
63 p = NULL;
64 } else if (cmp(priv, p, q) <= 0) {
65 e = p;
66 p = p->next;
67 psize--;
68 if (p == oldhead)
69 p = NULL;
70 } else {
71 e = q;
72 q = q->next;
73 qsize--;
74 if (q == oldhead)
75 q = NULL;
76 }
77 if (tail)
78 tail->next = e;
79 else
80 list = e;
81 e->prev = tail;
82 tail = e;
83 }
84 p = q;
85 }
86
87 tail->next = list;
88 list->prev = tail;
89
90 if (nmerges <= 1)
91 break;
92
93 insize *= 2;
94 }
95
96 head->next = list;
97 head->prev = list->prev;
98 list->prev->next = head;
99 list->prev = head;
100}
101
102EXPORT_SYMBOL(list_sort);
diff --git a/lib/lzo/lzo1x_decompress.c b/lib/lzo/lzo1x_decompress.c
index 5dc6b29c1575..f2fd09850223 100644
--- a/lib/lzo/lzo1x_decompress.c
+++ b/lib/lzo/lzo1x_decompress.c
@@ -11,11 +11,13 @@
11 * Richard Purdie <rpurdie@openedhand.com> 11 * Richard Purdie <rpurdie@openedhand.com>
12 */ 12 */
13 13
14#ifndef STATIC
14#include <linux/module.h> 15#include <linux/module.h>
15#include <linux/kernel.h> 16#include <linux/kernel.h>
16#include <linux/lzo.h> 17#endif
17#include <asm/byteorder.h> 18
18#include <asm/unaligned.h> 19#include <asm/unaligned.h>
20#include <linux/lzo.h>
19#include "lzodefs.h" 21#include "lzodefs.h"
20 22
21#define HAVE_IP(x, ip_end, ip) ((size_t)(ip_end - ip) < (x)) 23#define HAVE_IP(x, ip_end, ip) ((size_t)(ip_end - ip) < (x))
@@ -244,9 +246,10 @@ lookbehind_overrun:
244 *out_len = op - out; 246 *out_len = op - out;
245 return LZO_E_LOOKBEHIND_OVERRUN; 247 return LZO_E_LOOKBEHIND_OVERRUN;
246} 248}
247 249#ifndef STATIC
248EXPORT_SYMBOL_GPL(lzo1x_decompress_safe); 250EXPORT_SYMBOL_GPL(lzo1x_decompress_safe);
249 251
250MODULE_LICENSE("GPL"); 252MODULE_LICENSE("GPL");
251MODULE_DESCRIPTION("LZO1X Decompressor"); 253MODULE_DESCRIPTION("LZO1X Decompressor");
252 254
255#endif
diff --git a/lib/rational.c b/lib/rational.c
index b3c099b5478e..3ed247b80662 100644
--- a/lib/rational.c
+++ b/lib/rational.c
@@ -7,6 +7,7 @@
7 */ 7 */
8 8
9#include <linux/rational.h> 9#include <linux/rational.h>
10#include <linux/module.h>
10 11
11/* 12/*
12 * calculate best rational approximation for a given fraction 13 * calculate best rational approximation for a given fraction
diff --git a/lib/string.c b/lib/string.c
index 9f75b4ec50b8..a1cdcfcc42d0 100644
--- a/lib/string.c
+++ b/lib/string.c
@@ -667,7 +667,7 @@ EXPORT_SYMBOL(memscan);
667 */ 667 */
668char *strstr(const char *s1, const char *s2) 668char *strstr(const char *s1, const char *s2)
669{ 669{
670 int l1, l2; 670 size_t l1, l2;
671 671
672 l2 = strlen(s2); 672 l2 = strlen(s2);
673 if (!l2) 673 if (!l2)
@@ -684,6 +684,31 @@ char *strstr(const char *s1, const char *s2)
684EXPORT_SYMBOL(strstr); 684EXPORT_SYMBOL(strstr);
685#endif 685#endif
686 686
687#ifndef __HAVE_ARCH_STRNSTR
688/**
689 * strnstr - Find the first substring in a length-limited string
690 * @s1: The string to be searched
691 * @s2: The string to search for
692 * @len: the maximum number of characters to search
693 */
694char *strnstr(const char *s1, const char *s2, size_t len)
695{
696 size_t l1 = len, l2;
697
698 l2 = strlen(s2);
699 if (!l2)
700 return (char *)s1;
701 while (l1 >= l2) {
702 l1--;
703 if (!memcmp(s1, s2, l2))
704 return (char *)s1;
705 s1++;
706 }
707 return NULL;
708}
709EXPORT_SYMBOL(strnstr);
710#endif
711
687#ifndef __HAVE_ARCH_MEMCHR 712#ifndef __HAVE_ARCH_MEMCHR
688/** 713/**
689 * memchr - Find a character in an area of memory. 714 * memchr - Find a character in an area of memory.
diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index d4996cf46eb6..3b8aeec4e327 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -903,7 +903,7 @@ static char *uuid_string(char *buf, char *end, const u8 *addr,
903 * IPv6 omits the colons (01020304...0f) 903 * IPv6 omits the colons (01020304...0f)
904 * IPv4 uses dot-separated decimal with leading 0's (010.123.045.006) 904 * IPv4 uses dot-separated decimal with leading 0's (010.123.045.006)
905 * - 'I6c' for IPv6 addresses printed as specified by 905 * - 'I6c' for IPv6 addresses printed as specified by
906 * http://www.ietf.org/id/draft-kawamura-ipv6-text-representation-03.txt 906 * http://tools.ietf.org/html/draft-ietf-6man-text-addr-representation-00
907 * - 'U' For a 16 byte UUID/GUID, it prints the UUID/GUID in the form 907 * - 'U' For a 16 byte UUID/GUID, it prints the UUID/GUID in the form
908 * "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 908 * "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
909 * Options for %pU are: 909 * Options for %pU are:
@@ -1188,7 +1188,7 @@ qualifier:
1188 * %pI6 print an IPv6 address with colons 1188 * %pI6 print an IPv6 address with colons
1189 * %pi6 print an IPv6 address without colons 1189 * %pi6 print an IPv6 address without colons
1190 * %pI6c print an IPv6 address as specified by 1190 * %pI6c print an IPv6 address as specified by
1191 * http://www.ietf.org/id/draft-kawamura-ipv6-text-representation-03.txt 1191 * http://tools.ietf.org/html/draft-ietf-6man-text-addr-representation-00
1192 * %pU[bBlL] print a UUID/GUID in big or little endian using lower or upper 1192 * %pU[bBlL] print a UUID/GUID in big or little endian using lower or upper
1193 * case. 1193 * case.
1194 * %n is ignored 1194 * %n is ignored
diff --git a/lib/zlib_inflate/inffast.c b/lib/zlib_inflate/inffast.c
index 8550b0c05d00..215447c55261 100644
--- a/lib/zlib_inflate/inffast.c
+++ b/lib/zlib_inflate/inffast.c
@@ -8,6 +8,21 @@
8#include "inflate.h" 8#include "inflate.h"
9#include "inffast.h" 9#include "inffast.h"
10 10
11/* Only do the unaligned "Faster" variant when
12 * CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is set
13 *
14 * On powerpc, it won't be as we don't include autoconf.h
15 * automatically for the boot wrapper, which is intended as
16 * we run in an environment where we may not be able to deal
17 * with (even rare) alignment faults. In addition, we do not
18 * define __KERNEL__ for arch/powerpc/boot unlike x86
19 */
20
21#ifdef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
22#include <asm/unaligned.h>
23#include <asm/byteorder.h>
24#endif
25
11#ifndef ASMINF 26#ifndef ASMINF
12 27
13/* Allow machine dependent optimization for post-increment or pre-increment. 28/* Allow machine dependent optimization for post-increment or pre-increment.
@@ -24,9 +39,11 @@
24#ifdef POSTINC 39#ifdef POSTINC
25# define OFF 0 40# define OFF 0
26# define PUP(a) *(a)++ 41# define PUP(a) *(a)++
42# define UP_UNALIGNED(a) get_unaligned((a)++)
27#else 43#else
28# define OFF 1 44# define OFF 1
29# define PUP(a) *++(a) 45# define PUP(a) *++(a)
46# define UP_UNALIGNED(a) get_unaligned(++(a))
30#endif 47#endif
31 48
32/* 49/*
@@ -239,18 +256,62 @@ void inflate_fast(z_streamp strm, unsigned start)
239 } 256 }
240 } 257 }
241 else { 258 else {
259#ifdef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
260 unsigned short *sout;
261 unsigned long loops;
262
263 from = out - dist; /* copy direct from output */
264 /* minimum length is three */
265 /* Align out addr */
266 if (!((long)(out - 1 + OFF) & 1)) {
267 PUP(out) = PUP(from);
268 len--;
269 }
270 sout = (unsigned short *)(out - OFF);
271 if (dist > 2) {
272 unsigned short *sfrom;
273
274 sfrom = (unsigned short *)(from - OFF);
275 loops = len >> 1;
276 do
277 PUP(sout) = UP_UNALIGNED(sfrom);
278 while (--loops);
279 out = (unsigned char *)sout + OFF;
280 from = (unsigned char *)sfrom + OFF;
281 } else { /* dist == 1 or dist == 2 */
282 unsigned short pat16;
283
284 pat16 = *(sout-2+2*OFF);
285 if (dist == 1)
286#if defined(__BIG_ENDIAN)
287 pat16 = (pat16 & 0xff) | ((pat16 & 0xff) << 8);
288#elif defined(__LITTLE_ENDIAN)
289 pat16 = (pat16 & 0xff00) | ((pat16 & 0xff00) >> 8);
290#else
291#error __BIG_ENDIAN nor __LITTLE_ENDIAN is defined
292#endif
293 loops = len >> 1;
294 do
295 PUP(sout) = pat16;
296 while (--loops);
297 out = (unsigned char *)sout + OFF;
298 }
299 if (len & 1)
300 PUP(out) = PUP(from);
301#else /* CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS */
242 from = out - dist; /* copy direct from output */ 302 from = out - dist; /* copy direct from output */
243 do { /* minimum length is three */ 303 do { /* minimum length is three */
244 PUP(out) = PUP(from); 304 PUP(out) = PUP(from);
245 PUP(out) = PUP(from); 305 PUP(out) = PUP(from);
246 PUP(out) = PUP(from); 306 PUP(out) = PUP(from);
247 len -= 3; 307 len -= 3;
248 } while (len > 2); 308 } while (len > 2);
249 if (len) { 309 if (len) {
250 PUP(out) = PUP(from); 310 PUP(out) = PUP(from);
251 if (len > 1) 311 if (len > 1)
252 PUP(out) = PUP(from); 312 PUP(out) = PUP(from);
253 } 313 }
314#endif /* !CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS */
254 } 315 }
255 } 316 }
256 else if ((op & 64) == 0) { /* 2nd level distance code */ 317 else if ((op & 64) == 0) { /* 2nd level distance code */
diff --git a/mm/filemap.c b/mm/filemap.c
index 96ac6b0eb6cb..698ea80f2102 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -1634,14 +1634,15 @@ EXPORT_SYMBOL(generic_file_readonly_mmap);
1634static struct page *__read_cache_page(struct address_space *mapping, 1634static struct page *__read_cache_page(struct address_space *mapping,
1635 pgoff_t index, 1635 pgoff_t index,
1636 int (*filler)(void *,struct page*), 1636 int (*filler)(void *,struct page*),
1637 void *data) 1637 void *data,
1638 gfp_t gfp)
1638{ 1639{
1639 struct page *page; 1640 struct page *page;
1640 int err; 1641 int err;
1641repeat: 1642repeat:
1642 page = find_get_page(mapping, index); 1643 page = find_get_page(mapping, index);
1643 if (!page) { 1644 if (!page) {
1644 page = page_cache_alloc_cold(mapping); 1645 page = __page_cache_alloc(gfp | __GFP_COLD);
1645 if (!page) 1646 if (!page)
1646 return ERR_PTR(-ENOMEM); 1647 return ERR_PTR(-ENOMEM);
1647 err = add_to_page_cache_lru(page, mapping, index, GFP_KERNEL); 1648 err = add_to_page_cache_lru(page, mapping, index, GFP_KERNEL);
@@ -1661,31 +1662,18 @@ repeat:
1661 return page; 1662 return page;
1662} 1663}
1663 1664
1664/** 1665static struct page *do_read_cache_page(struct address_space *mapping,
1665 * read_cache_page_async - read into page cache, fill it if needed
1666 * @mapping: the page's address_space
1667 * @index: the page index
1668 * @filler: function to perform the read
1669 * @data: destination for read data
1670 *
1671 * Same as read_cache_page, but don't wait for page to become unlocked
1672 * after submitting it to the filler.
1673 *
1674 * Read into the page cache. If a page already exists, and PageUptodate() is
1675 * not set, try to fill the page but don't wait for it to become unlocked.
1676 *
1677 * If the page does not get brought uptodate, return -EIO.
1678 */
1679struct page *read_cache_page_async(struct address_space *mapping,
1680 pgoff_t index, 1666 pgoff_t index,
1681 int (*filler)(void *,struct page*), 1667 int (*filler)(void *,struct page*),
1682 void *data) 1668 void *data,
1669 gfp_t gfp)
1670
1683{ 1671{
1684 struct page *page; 1672 struct page *page;
1685 int err; 1673 int err;
1686 1674
1687retry: 1675retry:
1688 page = __read_cache_page(mapping, index, filler, data); 1676 page = __read_cache_page(mapping, index, filler, data, gfp);
1689 if (IS_ERR(page)) 1677 if (IS_ERR(page))
1690 return page; 1678 return page;
1691 if (PageUptodate(page)) 1679 if (PageUptodate(page))
@@ -1710,8 +1698,67 @@ out:
1710 mark_page_accessed(page); 1698 mark_page_accessed(page);
1711 return page; 1699 return page;
1712} 1700}
1701
1702/**
1703 * read_cache_page_async - read into page cache, fill it if needed
1704 * @mapping: the page's address_space
1705 * @index: the page index
1706 * @filler: function to perform the read
1707 * @data: destination for read data
1708 *
1709 * Same as read_cache_page, but don't wait for page to become unlocked
1710 * after submitting it to the filler.
1711 *
1712 * Read into the page cache. If a page already exists, and PageUptodate() is
1713 * not set, try to fill the page but don't wait for it to become unlocked.
1714 *
1715 * If the page does not get brought uptodate, return -EIO.
1716 */
1717struct page *read_cache_page_async(struct address_space *mapping,
1718 pgoff_t index,
1719 int (*filler)(void *,struct page*),
1720 void *data)
1721{
1722 return do_read_cache_page(mapping, index, filler, data, mapping_gfp_mask(mapping));
1723}
1713EXPORT_SYMBOL(read_cache_page_async); 1724EXPORT_SYMBOL(read_cache_page_async);
1714 1725
1726static struct page *wait_on_page_read(struct page *page)
1727{
1728 if (!IS_ERR(page)) {
1729 wait_on_page_locked(page);
1730 if (!PageUptodate(page)) {
1731 page_cache_release(page);
1732 page = ERR_PTR(-EIO);
1733 }
1734 }
1735 return page;
1736}
1737
1738/**
1739 * read_cache_page_gfp - read into page cache, using specified page allocation flags.
1740 * @mapping: the page's address_space
1741 * @index: the page index
1742 * @gfp: the page allocator flags to use if allocating
1743 *
1744 * This is the same as "read_mapping_page(mapping, index, NULL)", but with
1745 * any new page allocations done using the specified allocation flags. Note
1746 * that the Radix tree operations will still use GFP_KERNEL, so you can't
1747 * expect to do this atomically or anything like that - but you can pass in
1748 * other page requirements.
1749 *
1750 * If the page does not get brought uptodate, return -EIO.
1751 */
1752struct page *read_cache_page_gfp(struct address_space *mapping,
1753 pgoff_t index,
1754 gfp_t gfp)
1755{
1756 filler_t *filler = (filler_t *)mapping->a_ops->readpage;
1757
1758 return wait_on_page_read(do_read_cache_page(mapping, index, filler, NULL, gfp));
1759}
1760EXPORT_SYMBOL(read_cache_page_gfp);
1761
1715/** 1762/**
1716 * read_cache_page - read into page cache, fill it if needed 1763 * read_cache_page - read into page cache, fill it if needed
1717 * @mapping: the page's address_space 1764 * @mapping: the page's address_space
@@ -1729,18 +1776,7 @@ struct page *read_cache_page(struct address_space *mapping,
1729 int (*filler)(void *,struct page*), 1776 int (*filler)(void *,struct page*),
1730 void *data) 1777 void *data)
1731{ 1778{
1732 struct page *page; 1779 return wait_on_page_read(read_cache_page_async(mapping, index, filler, data));
1733
1734 page = read_cache_page_async(mapping, index, filler, data);
1735 if (IS_ERR(page))
1736 goto out;
1737 wait_on_page_locked(page);
1738 if (!PageUptodate(page)) {
1739 page_cache_release(page);
1740 page = ERR_PTR(-EIO);
1741 }
1742 out:
1743 return page;
1744} 1780}
1745EXPORT_SYMBOL(read_cache_page); 1781EXPORT_SYMBOL(read_cache_page);
1746 1782
@@ -2196,6 +2232,9 @@ again:
2196 if (unlikely(status)) 2232 if (unlikely(status))
2197 break; 2233 break;
2198 2234
2235 if (mapping_writably_mapped(mapping))
2236 flush_dcache_page(page);
2237
2199 pagefault_disable(); 2238 pagefault_disable();
2200 copied = iov_iter_copy_from_user_atomic(page, i, offset, bytes); 2239 copied = iov_iter_copy_from_user_atomic(page, i, offset, bytes);
2201 pagefault_enable(); 2240 pagefault_enable();
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 65f38c218207..2d16fa6b8c2d 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -402,7 +402,7 @@ static void clear_huge_page(struct page *page,
402{ 402{
403 int i; 403 int i;
404 404
405 if (unlikely(sz > MAX_ORDER_NR_PAGES)) { 405 if (unlikely(sz/PAGE_SIZE > MAX_ORDER_NR_PAGES)) {
406 clear_gigantic_page(page, addr, sz); 406 clear_gigantic_page(page, addr, sz);
407 return; 407 return;
408 } 408 }
@@ -1515,10 +1515,9 @@ static struct attribute_group hstate_attr_group = {
1515 .attrs = hstate_attrs, 1515 .attrs = hstate_attrs,
1516}; 1516};
1517 1517
1518static int __init hugetlb_sysfs_add_hstate(struct hstate *h, 1518static int hugetlb_sysfs_add_hstate(struct hstate *h, struct kobject *parent,
1519 struct kobject *parent, 1519 struct kobject **hstate_kobjs,
1520 struct kobject **hstate_kobjs, 1520 struct attribute_group *hstate_attr_group)
1521 struct attribute_group *hstate_attr_group)
1522{ 1521{
1523 int retval; 1522 int retval;
1524 int hi = h - hstates; 1523 int hi = h - hstates;
diff --git a/mm/maccess.c b/mm/maccess.c
index 9073695ff25f..4e348dbaecd7 100644
--- a/mm/maccess.c
+++ b/mm/maccess.c
@@ -14,7 +14,11 @@
14 * Safely read from address @src to the buffer at @dst. If a kernel fault 14 * Safely read from address @src to the buffer at @dst. If a kernel fault
15 * happens, handle that and return -EFAULT. 15 * happens, handle that and return -EFAULT.
16 */ 16 */
17long probe_kernel_read(void *dst, void *src, size_t size) 17
18long __weak probe_kernel_read(void *dst, void *src, size_t size)
19 __attribute__((alias("__probe_kernel_read")));
20
21long __probe_kernel_read(void *dst, void *src, size_t size)
18{ 22{
19 long ret; 23 long ret;
20 mm_segment_t old_fs = get_fs(); 24 mm_segment_t old_fs = get_fs();
@@ -39,7 +43,10 @@ EXPORT_SYMBOL_GPL(probe_kernel_read);
39 * Safely write to address @dst from the buffer at @src. If a kernel fault 43 * Safely write to address @dst from the buffer at @src. If a kernel fault
40 * happens, handle that and return -EFAULT. 44 * happens, handle that and return -EFAULT.
41 */ 45 */
42long notrace __weak probe_kernel_write(void *dst, void *src, size_t size) 46long __weak probe_kernel_write(void *dst, void *src, size_t size)
47 __attribute__((alias("__probe_kernel_write")));
48
49long __probe_kernel_write(void *dst, void *src, size_t size)
43{ 50{
44 long ret; 51 long ret;
45 mm_segment_t old_fs = get_fs(); 52 mm_segment_t old_fs = get_fs();
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 488b644e0e8e..954032b80bed 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -2586,7 +2586,7 @@ static int mem_cgroup_force_empty(struct mem_cgroup *mem, bool free_all)
2586 if (free_all) 2586 if (free_all)
2587 goto try_to_free; 2587 goto try_to_free;
2588move_account: 2588move_account:
2589 while (mem->res.usage > 0) { 2589 do {
2590 ret = -EBUSY; 2590 ret = -EBUSY;
2591 if (cgroup_task_count(cgrp) || !list_empty(&cgrp->children)) 2591 if (cgroup_task_count(cgrp) || !list_empty(&cgrp->children))
2592 goto out; 2592 goto out;
@@ -2614,8 +2614,8 @@ move_account:
2614 if (ret == -ENOMEM) 2614 if (ret == -ENOMEM)
2615 goto try_to_free; 2615 goto try_to_free;
2616 cond_resched(); 2616 cond_resched();
2617 } 2617 /* "ret" should also be checked to ensure all lists are empty. */
2618 ret = 0; 2618 } while (mem->res.usage > 0 || ret);
2619out: 2619out:
2620 css_put(&mem->css); 2620 css_put(&mem->css);
2621 return ret; 2621 return ret;
@@ -2648,10 +2648,7 @@ try_to_free:
2648 } 2648 }
2649 lru_add_drain(); 2649 lru_add_drain();
2650 /* try move_account...there may be some *locked* pages. */ 2650 /* try move_account...there may be some *locked* pages. */
2651 if (mem->res.usage) 2651 goto move_account;
2652 goto move_account;
2653 ret = 0;
2654 goto out;
2655} 2652}
2656 2653
2657int mem_cgroup_force_empty_write(struct cgroup *cont, unsigned int event) 2654int mem_cgroup_force_empty_write(struct cgroup *cont, unsigned int event)
diff --git a/mm/migrate.c b/mm/migrate.c
index efddbf0926b2..880bd592d38e 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -912,6 +912,9 @@ static int do_pages_move(struct mm_struct *mm, struct task_struct *task,
912 goto out_pm; 912 goto out_pm;
913 913
914 err = -ENODEV; 914 err = -ENODEV;
915 if (node < 0 || node >= MAX_NUMNODES)
916 goto out_pm;
917
915 if (!node_state(node, N_HIGH_MEMORY)) 918 if (!node_state(node, N_HIGH_MEMORY))
916 goto out_pm; 919 goto out_pm;
917 920
@@ -999,33 +1002,27 @@ static int do_pages_stat(struct mm_struct *mm, unsigned long nr_pages,
999#define DO_PAGES_STAT_CHUNK_NR 16 1002#define DO_PAGES_STAT_CHUNK_NR 16
1000 const void __user *chunk_pages[DO_PAGES_STAT_CHUNK_NR]; 1003 const void __user *chunk_pages[DO_PAGES_STAT_CHUNK_NR];
1001 int chunk_status[DO_PAGES_STAT_CHUNK_NR]; 1004 int chunk_status[DO_PAGES_STAT_CHUNK_NR];
1002 unsigned long i, chunk_nr = DO_PAGES_STAT_CHUNK_NR;
1003 int err;
1004 1005
1005 for (i = 0; i < nr_pages; i += chunk_nr) { 1006 while (nr_pages) {
1006 if (chunk_nr > nr_pages - i) 1007 unsigned long chunk_nr;
1007 chunk_nr = nr_pages - i;
1008 1008
1009 err = copy_from_user(chunk_pages, &pages[i], 1009 chunk_nr = nr_pages;
1010 chunk_nr * sizeof(*chunk_pages)); 1010 if (chunk_nr > DO_PAGES_STAT_CHUNK_NR)
1011 if (err) { 1011 chunk_nr = DO_PAGES_STAT_CHUNK_NR;
1012 err = -EFAULT; 1012
1013 goto out; 1013 if (copy_from_user(chunk_pages, pages, chunk_nr * sizeof(*chunk_pages)))
1014 } 1014 break;
1015 1015
1016 do_pages_stat_array(mm, chunk_nr, chunk_pages, chunk_status); 1016 do_pages_stat_array(mm, chunk_nr, chunk_pages, chunk_status);
1017 1017
1018 err = copy_to_user(&status[i], chunk_status, 1018 if (copy_to_user(status, chunk_status, chunk_nr * sizeof(*status)))
1019 chunk_nr * sizeof(*chunk_status)); 1019 break;
1020 if (err) {
1021 err = -EFAULT;
1022 goto out;
1023 }
1024 }
1025 err = 0;
1026 1020
1027out: 1021 pages += chunk_nr;
1028 return err; 1022 status += chunk_nr;
1023 nr_pages -= chunk_nr;
1024 }
1025 return nr_pages ? -EFAULT : 0;
1029} 1026}
1030 1027
1031/* 1028/*
diff --git a/mm/mmap.c b/mm/mmap.c
index d9c77b2dbe9d..ee2298936fe6 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -1043,6 +1043,46 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
1043} 1043}
1044EXPORT_SYMBOL(do_mmap_pgoff); 1044EXPORT_SYMBOL(do_mmap_pgoff);
1045 1045
1046SYSCALL_DEFINE6(mmap_pgoff, unsigned long, addr, unsigned long, len,
1047 unsigned long, prot, unsigned long, flags,
1048 unsigned long, fd, unsigned long, pgoff)
1049{
1050 struct file *file = NULL;
1051 unsigned long retval = -EBADF;
1052
1053 if (!(flags & MAP_ANONYMOUS)) {
1054 if (unlikely(flags & MAP_HUGETLB))
1055 return -EINVAL;
1056 file = fget(fd);
1057 if (!file)
1058 goto out;
1059 } else if (flags & MAP_HUGETLB) {
1060 struct user_struct *user = NULL;
1061 /*
1062 * VM_NORESERVE is used because the reservations will be
1063 * taken when vm_ops->mmap() is called
1064 * A dummy user value is used because we are not locking
1065 * memory so no accounting is necessary
1066 */
1067 len = ALIGN(len, huge_page_size(&default_hstate));
1068 file = hugetlb_file_setup(HUGETLB_ANON_FILE, len, VM_NORESERVE,
1069 &user, HUGETLB_ANONHUGE_INODE);
1070 if (IS_ERR(file))
1071 return PTR_ERR(file);
1072 }
1073
1074 flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);
1075
1076 down_write(&current->mm->mmap_sem);
1077 retval = do_mmap_pgoff(file, addr, len, prot, flags, pgoff);
1078 up_write(&current->mm->mmap_sem);
1079
1080 if (file)
1081 fput(file);
1082out:
1083 return retval;
1084}
1085
1046/* 1086/*
1047 * Some shared mappigns will want the pages marked read-only 1087 * Some shared mappigns will want the pages marked read-only
1048 * to track write events. If so, we'll downgrade vm_page_prot 1088 * to track write events. If so, we'll downgrade vm_page_prot
diff --git a/mm/nommu.c b/mm/nommu.c
index 8687973462bb..48a2ecfaf059 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -432,6 +432,7 @@ SYSCALL_DEFINE1(brk, unsigned long, brk)
432 /* 432 /*
433 * Ok, looks good - let it rip. 433 * Ok, looks good - let it rip.
434 */ 434 */
435 flush_icache_range(mm->brk, brk);
435 return mm->brk = brk; 436 return mm->brk = brk;
436} 437}
437 438
@@ -551,11 +552,11 @@ static void free_page_series(unsigned long from, unsigned long to)
551static void __put_nommu_region(struct vm_region *region) 552static void __put_nommu_region(struct vm_region *region)
552 __releases(nommu_region_sem) 553 __releases(nommu_region_sem)
553{ 554{
554 kenter("%p{%d}", region, atomic_read(&region->vm_usage)); 555 kenter("%p{%d}", region, region->vm_usage);
555 556
556 BUG_ON(!nommu_region_tree.rb_node); 557 BUG_ON(!nommu_region_tree.rb_node);
557 558
558 if (atomic_dec_and_test(&region->vm_usage)) { 559 if (--region->vm_usage == 0) {
559 if (region->vm_top > region->vm_start) 560 if (region->vm_top > region->vm_start)
560 delete_nommu_region(region); 561 delete_nommu_region(region);
561 up_write(&nommu_region_sem); 562 up_write(&nommu_region_sem);
@@ -1204,7 +1205,7 @@ unsigned long do_mmap_pgoff(struct file *file,
1204 if (!vma) 1205 if (!vma)
1205 goto error_getting_vma; 1206 goto error_getting_vma;
1206 1207
1207 atomic_set(&region->vm_usage, 1); 1208 region->vm_usage = 1;
1208 region->vm_flags = vm_flags; 1209 region->vm_flags = vm_flags;
1209 region->vm_pgoff = pgoff; 1210 region->vm_pgoff = pgoff;
1210 1211
@@ -1271,7 +1272,7 @@ unsigned long do_mmap_pgoff(struct file *file,
1271 } 1272 }
1272 1273
1273 /* we've found a region we can share */ 1274 /* we've found a region we can share */
1274 atomic_inc(&pregion->vm_usage); 1275 pregion->vm_usage++;
1275 vma->vm_region = pregion; 1276 vma->vm_region = pregion;
1276 start = pregion->vm_start; 1277 start = pregion->vm_start;
1277 start += (pgoff - pregion->vm_pgoff) << PAGE_SHIFT; 1278 start += (pgoff - pregion->vm_pgoff) << PAGE_SHIFT;
@@ -1288,7 +1289,7 @@ unsigned long do_mmap_pgoff(struct file *file,
1288 vma->vm_region = NULL; 1289 vma->vm_region = NULL;
1289 vma->vm_start = 0; 1290 vma->vm_start = 0;
1290 vma->vm_end = 0; 1291 vma->vm_end = 0;
1291 atomic_dec(&pregion->vm_usage); 1292 pregion->vm_usage--;
1292 pregion = NULL; 1293 pregion = NULL;
1293 goto error_just_free; 1294 goto error_just_free;
1294 } 1295 }
@@ -1353,10 +1354,14 @@ unsigned long do_mmap_pgoff(struct file *file,
1353share: 1354share:
1354 add_vma_to_mm(current->mm, vma); 1355 add_vma_to_mm(current->mm, vma);
1355 1356
1356 up_write(&nommu_region_sem); 1357 /* we flush the region from the icache only when the first executable
1358 * mapping of it is made */
1359 if (vma->vm_flags & VM_EXEC && !region->vm_icache_flushed) {
1360 flush_icache_range(region->vm_start, region->vm_end);
1361 region->vm_icache_flushed = true;
1362 }
1357 1363
1358 if (prot & PROT_EXEC) 1364 up_write(&nommu_region_sem);
1359 flush_icache_range(result, result + len);
1360 1365
1361 kleave(" = %lx", result); 1366 kleave(" = %lx", result);
1362 return result; 1367 return result;
@@ -1398,6 +1403,31 @@ error_getting_region:
1398} 1403}
1399EXPORT_SYMBOL(do_mmap_pgoff); 1404EXPORT_SYMBOL(do_mmap_pgoff);
1400 1405
1406SYSCALL_DEFINE6(mmap_pgoff, unsigned long, addr, unsigned long, len,
1407 unsigned long, prot, unsigned long, flags,
1408 unsigned long, fd, unsigned long, pgoff)
1409{
1410 struct file *file = NULL;
1411 unsigned long retval = -EBADF;
1412
1413 if (!(flags & MAP_ANONYMOUS)) {
1414 file = fget(fd);
1415 if (!file)
1416 goto out;
1417 }
1418
1419 flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);
1420
1421 down_write(&current->mm->mmap_sem);
1422 retval = do_mmap_pgoff(file, addr, len, prot, flags, pgoff);
1423 up_write(&current->mm->mmap_sem);
1424
1425 if (file)
1426 fput(file);
1427out:
1428 return retval;
1429}
1430
1401/* 1431/*
1402 * split a vma into two pieces at address 'addr', a new vma is allocated either 1432 * split a vma into two pieces at address 'addr', a new vma is allocated either
1403 * for the first part or the tail. 1433 * for the first part or the tail.
@@ -1411,10 +1441,9 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
1411 1441
1412 kenter(""); 1442 kenter("");
1413 1443
1414 /* we're only permitted to split anonymous regions that have a single 1444 /* we're only permitted to split anonymous regions (these should have
1415 * owner */ 1445 * only a single usage on the region) */
1416 if (vma->vm_file || 1446 if (vma->vm_file)
1417 atomic_read(&vma->vm_region->vm_usage) != 1)
1418 return -ENOMEM; 1447 return -ENOMEM;
1419 1448
1420 if (mm->map_count >= sysctl_max_map_count) 1449 if (mm->map_count >= sysctl_max_map_count)
@@ -1488,7 +1517,7 @@ static int shrink_vma(struct mm_struct *mm,
1488 1517
1489 /* cut the backing region down to size */ 1518 /* cut the backing region down to size */
1490 region = vma->vm_region; 1519 region = vma->vm_region;
1491 BUG_ON(atomic_read(&region->vm_usage) != 1); 1520 BUG_ON(region->vm_usage != 1);
1492 1521
1493 down_write(&nommu_region_sem); 1522 down_write(&nommu_region_sem);
1494 delete_nommu_region(region); 1523 delete_nommu_region(region);
@@ -1732,27 +1761,6 @@ void unmap_mapping_range(struct address_space *mapping,
1732EXPORT_SYMBOL(unmap_mapping_range); 1761EXPORT_SYMBOL(unmap_mapping_range);
1733 1762
1734/* 1763/*
1735 * ask for an unmapped area at which to create a mapping on a file
1736 */
1737unsigned long get_unmapped_area(struct file *file, unsigned long addr,
1738 unsigned long len, unsigned long pgoff,
1739 unsigned long flags)
1740{
1741 unsigned long (*get_area)(struct file *, unsigned long, unsigned long,
1742 unsigned long, unsigned long);
1743
1744 get_area = current->mm->get_unmapped_area;
1745 if (file && file->f_op && file->f_op->get_unmapped_area)
1746 get_area = file->f_op->get_unmapped_area;
1747
1748 if (!get_area)
1749 return -ENOSYS;
1750
1751 return get_area(file, addr, len, pgoff, flags);
1752}
1753EXPORT_SYMBOL(get_unmapped_area);
1754
1755/*
1756 * Check that a process has enough memory to allocate a new virtual 1764 * Check that a process has enough memory to allocate a new virtual
1757 * mapping. 0 means there is enough memory for the allocation to 1765 * mapping. 0 means there is enough memory for the allocation to
1758 * succeed and -ENOMEM implies there is not. 1766 * succeed and -ENOMEM implies there is not.
@@ -1891,9 +1899,11 @@ int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, in
1891 1899
1892 /* only read or write mappings where it is permitted */ 1900 /* only read or write mappings where it is permitted */
1893 if (write && vma->vm_flags & VM_MAYWRITE) 1901 if (write && vma->vm_flags & VM_MAYWRITE)
1894 len -= copy_to_user((void *) addr, buf, len); 1902 copy_to_user_page(vma, NULL, addr,
1903 (void *) addr, buf, len);
1895 else if (!write && vma->vm_flags & VM_MAYREAD) 1904 else if (!write && vma->vm_flags & VM_MAYREAD)
1896 len -= copy_from_user(buf, (void *) addr, len); 1905 copy_from_user_page(vma, NULL, addr,
1906 buf, (void *) addr, len);
1897 else 1907 else
1898 len = 0; 1908 len = 0;
1899 } else { 1909 } else {
@@ -1904,3 +1914,65 @@ int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, in
1904 mmput(mm); 1914 mmput(mm);
1905 return len; 1915 return len;
1906} 1916}
1917
1918/**
1919 * nommu_shrink_inode_mappings - Shrink the shared mappings on an inode
1920 * @inode: The inode to check
1921 * @size: The current filesize of the inode
1922 * @newsize: The proposed filesize of the inode
1923 *
1924 * Check the shared mappings on an inode on behalf of a shrinking truncate to
1925 * make sure that that any outstanding VMAs aren't broken and then shrink the
1926 * vm_regions that extend that beyond so that do_mmap_pgoff() doesn't
1927 * automatically grant mappings that are too large.
1928 */
1929int nommu_shrink_inode_mappings(struct inode *inode, size_t size,
1930 size_t newsize)
1931{
1932 struct vm_area_struct *vma;
1933 struct prio_tree_iter iter;
1934 struct vm_region *region;
1935 pgoff_t low, high;
1936 size_t r_size, r_top;
1937
1938 low = newsize >> PAGE_SHIFT;
1939 high = (size + PAGE_SIZE - 1) >> PAGE_SHIFT;
1940
1941 down_write(&nommu_region_sem);
1942
1943 /* search for VMAs that fall within the dead zone */
1944 vma_prio_tree_foreach(vma, &iter, &inode->i_mapping->i_mmap,
1945 low, high) {
1946 /* found one - only interested if it's shared out of the page
1947 * cache */
1948 if (vma->vm_flags & VM_SHARED) {
1949 up_write(&nommu_region_sem);
1950 return -ETXTBSY; /* not quite true, but near enough */
1951 }
1952 }
1953
1954 /* reduce any regions that overlap the dead zone - if in existence,
1955 * these will be pointed to by VMAs that don't overlap the dead zone
1956 *
1957 * we don't check for any regions that start beyond the EOF as there
1958 * shouldn't be any
1959 */
1960 vma_prio_tree_foreach(vma, &iter, &inode->i_mapping->i_mmap,
1961 0, ULONG_MAX) {
1962 if (!(vma->vm_flags & VM_SHARED))
1963 continue;
1964
1965 region = vma->vm_region;
1966 r_size = region->vm_top - region->vm_start;
1967 r_top = (region->vm_pgoff << PAGE_SHIFT) + r_size;
1968
1969 if (r_top > newsize) {
1970 region->vm_top -= r_top - newsize;
1971 if (region->vm_end > region->vm_top)
1972 region->vm_end = region->vm_top;
1973 }
1974 }
1975
1976 up_write(&nommu_region_sem);
1977 return 0;
1978}
diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index f52481b1c1e5..237050478f28 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -459,6 +459,8 @@ static int oom_kill_process(struct task_struct *p, gfp_t gfp_mask, int order,
459 list_for_each_entry(c, &p->children, sibling) { 459 list_for_each_entry(c, &p->children, sibling) {
460 if (c->mm == p->mm) 460 if (c->mm == p->mm)
461 continue; 461 continue;
462 if (mem && !task_in_mem_cgroup(c, mem))
463 continue;
462 if (!oom_kill_task(c)) 464 if (!oom_kill_task(c))
463 return 0; 465 return 0;
464 } 466 }
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 4e9f5cc5fb59..8deb9d0fd5b1 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -556,8 +556,9 @@ static void free_pcppages_bulk(struct zone *zone, int count,
556 page = list_entry(list->prev, struct page, lru); 556 page = list_entry(list->prev, struct page, lru);
557 /* must delete as __free_one_page list manipulates */ 557 /* must delete as __free_one_page list manipulates */
558 list_del(&page->lru); 558 list_del(&page->lru);
559 __free_one_page(page, zone, 0, migratetype); 559 /* MIGRATE_MOVABLE list may include MIGRATE_RESERVEs */
560 trace_mm_page_pcpu_drain(page, 0, migratetype); 560 __free_one_page(page, zone, 0, page_private(page));
561 trace_mm_page_pcpu_drain(page, 0, page_private(page));
561 } while (--count && --batch_free && !list_empty(list)); 562 } while (--count && --batch_free && !list_empty(list));
562 } 563 }
563 spin_unlock(&zone->lock); 564 spin_unlock(&zone->lock);
@@ -1222,10 +1223,10 @@ again:
1222 } 1223 }
1223 spin_lock_irqsave(&zone->lock, flags); 1224 spin_lock_irqsave(&zone->lock, flags);
1224 page = __rmqueue(zone, order, migratetype); 1225 page = __rmqueue(zone, order, migratetype);
1225 __mod_zone_page_state(zone, NR_FREE_PAGES, -(1 << order));
1226 spin_unlock(&zone->lock); 1226 spin_unlock(&zone->lock);
1227 if (!page) 1227 if (!page)
1228 goto failed; 1228 goto failed;
1229 __mod_zone_page_state(zone, NR_FREE_PAGES, -(1 << order));
1229 } 1230 }
1230 1231
1231 __count_zone_vm_events(PGALLOC, zone, 1 << order); 1232 __count_zone_vm_events(PGALLOC, zone, 1 << order);
@@ -3998,7 +3999,7 @@ void __init add_active_range(unsigned int nid, unsigned long start_pfn,
3998 } 3999 }
3999 4000
4000 /* Merge backward if suitable */ 4001 /* Merge backward if suitable */
4001 if (start_pfn < early_node_map[i].end_pfn && 4002 if (start_pfn < early_node_map[i].start_pfn &&
4002 end_pfn >= early_node_map[i].start_pfn) { 4003 end_pfn >= early_node_map[i].start_pfn) {
4003 early_node_map[i].start_pfn = start_pfn; 4004 early_node_map[i].start_pfn = start_pfn;
4004 return; 4005 return;
diff --git a/mm/percpu.c b/mm/percpu.c
index 442010cc91c6..083e7c91e5f6 100644
--- a/mm/percpu.c
+++ b/mm/percpu.c
@@ -1271,7 +1271,7 @@ static void pcpu_reclaim(struct work_struct *work)
1271 */ 1271 */
1272void free_percpu(void *ptr) 1272void free_percpu(void *ptr)
1273{ 1273{
1274 void *addr = __pcpu_ptr_to_addr(ptr); 1274 void *addr;
1275 struct pcpu_chunk *chunk; 1275 struct pcpu_chunk *chunk;
1276 unsigned long flags; 1276 unsigned long flags;
1277 int off; 1277 int off;
@@ -1279,6 +1279,8 @@ void free_percpu(void *ptr)
1279 if (!ptr) 1279 if (!ptr)
1280 return; 1280 return;
1281 1281
1282 addr = __pcpu_ptr_to_addr(ptr);
1283
1282 spin_lock_irqsave(&pcpu_lock, flags); 1284 spin_lock_irqsave(&pcpu_lock, flags);
1283 1285
1284 chunk = pcpu_chunk_addr_search(addr); 1286 chunk = pcpu_chunk_addr_search(addr);
diff --git a/mm/slab.c b/mm/slab.c
index 7d41f15b48d3..7451bdacaf18 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -654,7 +654,7 @@ static void init_node_lock_keys(int q)
654 654
655 l3 = s->cs_cachep->nodelists[q]; 655 l3 = s->cs_cachep->nodelists[q];
656 if (!l3 || OFF_SLAB(s->cs_cachep)) 656 if (!l3 || OFF_SLAB(s->cs_cachep))
657 return; 657 continue;
658 lockdep_set_class(&l3->list_lock, &on_slab_l3_key); 658 lockdep_set_class(&l3->list_lock, &on_slab_l3_key);
659 alc = l3->alien; 659 alc = l3->alien;
660 /* 660 /*
@@ -665,7 +665,7 @@ static void init_node_lock_keys(int q)
665 * for alloc_alien_cache, 665 * for alloc_alien_cache,
666 */ 666 */
667 if (!alc || (unsigned long)alc == BAD_ALIEN_MAGIC) 667 if (!alc || (unsigned long)alc == BAD_ALIEN_MAGIC)
668 return; 668 continue;
669 for_each_node(r) { 669 for_each_node(r) {
670 if (alc[r]) 670 if (alc[r])
671 lockdep_set_class(&alc[r]->lock, 671 lockdep_set_class(&alc[r]->lock,
diff --git a/mm/truncate.c b/mm/truncate.c
index 342deee22684..e87e37244829 100644
--- a/mm/truncate.c
+++ b/mm/truncate.c
@@ -522,22 +522,20 @@ EXPORT_SYMBOL_GPL(invalidate_inode_pages2);
522 */ 522 */
523void truncate_pagecache(struct inode *inode, loff_t old, loff_t new) 523void truncate_pagecache(struct inode *inode, loff_t old, loff_t new)
524{ 524{
525 if (new < old) { 525 struct address_space *mapping = inode->i_mapping;
526 struct address_space *mapping = inode->i_mapping; 526
527 527 /*
528 /* 528 * unmap_mapping_range is called twice, first simply for
529 * unmap_mapping_range is called twice, first simply for 529 * efficiency so that truncate_inode_pages does fewer
530 * efficiency so that truncate_inode_pages does fewer 530 * single-page unmaps. However after this first call, and
531 * single-page unmaps. However after this first call, and 531 * before truncate_inode_pages finishes, it is possible for
532 * before truncate_inode_pages finishes, it is possible for 532 * private pages to be COWed, which remain after
533 * private pages to be COWed, which remain after 533 * truncate_inode_pages finishes, hence the second
534 * truncate_inode_pages finishes, hence the second 534 * unmap_mapping_range call must be made for correctness.
535 * unmap_mapping_range call must be made for correctness. 535 */
536 */ 536 unmap_mapping_range(mapping, new + PAGE_SIZE - 1, 0, 1);
537 unmap_mapping_range(mapping, new + PAGE_SIZE - 1, 0, 1); 537 truncate_inode_pages(mapping, new);
538 truncate_inode_pages(mapping, new); 538 unmap_mapping_range(mapping, new + PAGE_SIZE - 1, 0, 1);
539 unmap_mapping_range(mapping, new + PAGE_SIZE - 1, 0, 1);
540 }
541} 539}
542EXPORT_SYMBOL(truncate_pagecache); 540EXPORT_SYMBOL(truncate_pagecache);
543 541
diff --git a/mm/util.c b/mm/util.c
index b377ce430803..834db7be240f 100644
--- a/mm/util.c
+++ b/mm/util.c
@@ -4,10 +4,6 @@
4#include <linux/module.h> 4#include <linux/module.h>
5#include <linux/err.h> 5#include <linux/err.h>
6#include <linux/sched.h> 6#include <linux/sched.h>
7#include <linux/hugetlb.h>
8#include <linux/syscalls.h>
9#include <linux/mman.h>
10#include <linux/file.h>
11#include <asm/uaccess.h> 7#include <asm/uaccess.h>
12 8
13#define CREATE_TRACE_POINTS 9#define CREATE_TRACE_POINTS
@@ -224,7 +220,7 @@ char *strndup_user(const char __user *s, long n)
224} 220}
225EXPORT_SYMBOL(strndup_user); 221EXPORT_SYMBOL(strndup_user);
226 222
227#ifndef HAVE_ARCH_PICK_MMAP_LAYOUT 223#if defined(CONFIG_MMU) && !defined(HAVE_ARCH_PICK_MMAP_LAYOUT)
228void arch_pick_mmap_layout(struct mm_struct *mm) 224void arch_pick_mmap_layout(struct mm_struct *mm)
229{ 225{
230 mm->mmap_base = TASK_UNMAPPED_BASE; 226 mm->mmap_base = TASK_UNMAPPED_BASE;
@@ -272,46 +268,6 @@ int __attribute__((weak)) get_user_pages_fast(unsigned long start,
272} 268}
273EXPORT_SYMBOL_GPL(get_user_pages_fast); 269EXPORT_SYMBOL_GPL(get_user_pages_fast);
274 270
275SYSCALL_DEFINE6(mmap_pgoff, unsigned long, addr, unsigned long, len,
276 unsigned long, prot, unsigned long, flags,
277 unsigned long, fd, unsigned long, pgoff)
278{
279 struct file * file = NULL;
280 unsigned long retval = -EBADF;
281
282 if (!(flags & MAP_ANONYMOUS)) {
283 if (unlikely(flags & MAP_HUGETLB))
284 return -EINVAL;
285 file = fget(fd);
286 if (!file)
287 goto out;
288 } else if (flags & MAP_HUGETLB) {
289 struct user_struct *user = NULL;
290 /*
291 * VM_NORESERVE is used because the reservations will be
292 * taken when vm_ops->mmap() is called
293 * A dummy user value is used because we are not locking
294 * memory so no accounting is necessary
295 */
296 len = ALIGN(len, huge_page_size(&default_hstate));
297 file = hugetlb_file_setup(HUGETLB_ANON_FILE, len, VM_NORESERVE,
298 &user, HUGETLB_ANONHUGE_INODE);
299 if (IS_ERR(file))
300 return PTR_ERR(file);
301 }
302
303 flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);
304
305 down_write(&current->mm->mmap_sem);
306 retval = do_mmap_pgoff(file, addr, len, prot, flags, pgoff);
307 up_write(&current->mm->mmap_sem);
308
309 if (file)
310 fput(file);
311out:
312 return retval;
313}
314
315/* Tracepoints definitions. */ 271/* Tracepoints definitions. */
316EXPORT_TRACEPOINT_SYMBOL(kmalloc); 272EXPORT_TRACEPOINT_SYMBOL(kmalloc);
317EXPORT_TRACEPOINT_SYMBOL(kmem_cache_alloc); 273EXPORT_TRACEPOINT_SYMBOL(kmem_cache_alloc);
diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index 37e69295f250..ae007462b7f6 100644
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -509,6 +509,9 @@ static unsigned long lazy_max_pages(void)
509 509
510static atomic_t vmap_lazy_nr = ATOMIC_INIT(0); 510static atomic_t vmap_lazy_nr = ATOMIC_INIT(0);
511 511
512/* for per-CPU blocks */
513static void purge_fragmented_blocks_allcpus(void);
514
512/* 515/*
513 * Purges all lazily-freed vmap areas. 516 * Purges all lazily-freed vmap areas.
514 * 517 *
@@ -539,6 +542,9 @@ static void __purge_vmap_area_lazy(unsigned long *start, unsigned long *end,
539 } else 542 } else
540 spin_lock(&purge_lock); 543 spin_lock(&purge_lock);
541 544
545 if (sync)
546 purge_fragmented_blocks_allcpus();
547
542 rcu_read_lock(); 548 rcu_read_lock();
543 list_for_each_entry_rcu(va, &vmap_area_list, list) { 549 list_for_each_entry_rcu(va, &vmap_area_list, list) {
544 if (va->flags & VM_LAZY_FREE) { 550 if (va->flags & VM_LAZY_FREE) {
@@ -555,10 +561,8 @@ static void __purge_vmap_area_lazy(unsigned long *start, unsigned long *end,
555 } 561 }
556 rcu_read_unlock(); 562 rcu_read_unlock();
557 563
558 if (nr) { 564 if (nr)
559 BUG_ON(nr > atomic_read(&vmap_lazy_nr));
560 atomic_sub(nr, &vmap_lazy_nr); 565 atomic_sub(nr, &vmap_lazy_nr);
561 }
562 566
563 if (nr || force_flush) 567 if (nr || force_flush)
564 flush_tlb_kernel_range(*start, *end); 568 flush_tlb_kernel_range(*start, *end);
@@ -669,8 +673,6 @@ static bool vmap_initialized __read_mostly = false;
669struct vmap_block_queue { 673struct vmap_block_queue {
670 spinlock_t lock; 674 spinlock_t lock;
671 struct list_head free; 675 struct list_head free;
672 struct list_head dirty;
673 unsigned int nr_dirty;
674}; 676};
675 677
676struct vmap_block { 678struct vmap_block {
@@ -680,10 +682,9 @@ struct vmap_block {
680 unsigned long free, dirty; 682 unsigned long free, dirty;
681 DECLARE_BITMAP(alloc_map, VMAP_BBMAP_BITS); 683 DECLARE_BITMAP(alloc_map, VMAP_BBMAP_BITS);
682 DECLARE_BITMAP(dirty_map, VMAP_BBMAP_BITS); 684 DECLARE_BITMAP(dirty_map, VMAP_BBMAP_BITS);
683 union { 685 struct list_head free_list;
684 struct list_head free_list; 686 struct rcu_head rcu_head;
685 struct rcu_head rcu_head; 687 struct list_head purge;
686 };
687}; 688};
688 689
689/* Queue of free and dirty vmap blocks, for allocation and flushing purposes */ 690/* Queue of free and dirty vmap blocks, for allocation and flushing purposes */
@@ -759,7 +760,7 @@ static struct vmap_block *new_vmap_block(gfp_t gfp_mask)
759 vbq = &get_cpu_var(vmap_block_queue); 760 vbq = &get_cpu_var(vmap_block_queue);
760 vb->vbq = vbq; 761 vb->vbq = vbq;
761 spin_lock(&vbq->lock); 762 spin_lock(&vbq->lock);
762 list_add(&vb->free_list, &vbq->free); 763 list_add_rcu(&vb->free_list, &vbq->free);
763 spin_unlock(&vbq->lock); 764 spin_unlock(&vbq->lock);
764 put_cpu_var(vmap_block_queue); 765 put_cpu_var(vmap_block_queue);
765 766
@@ -778,8 +779,6 @@ static void free_vmap_block(struct vmap_block *vb)
778 struct vmap_block *tmp; 779 struct vmap_block *tmp;
779 unsigned long vb_idx; 780 unsigned long vb_idx;
780 781
781 BUG_ON(!list_empty(&vb->free_list));
782
783 vb_idx = addr_to_vb_idx(vb->va->va_start); 782 vb_idx = addr_to_vb_idx(vb->va->va_start);
784 spin_lock(&vmap_block_tree_lock); 783 spin_lock(&vmap_block_tree_lock);
785 tmp = radix_tree_delete(&vmap_block_tree, vb_idx); 784 tmp = radix_tree_delete(&vmap_block_tree, vb_idx);
@@ -790,12 +789,61 @@ static void free_vmap_block(struct vmap_block *vb)
790 call_rcu(&vb->rcu_head, rcu_free_vb); 789 call_rcu(&vb->rcu_head, rcu_free_vb);
791} 790}
792 791
792static void purge_fragmented_blocks(int cpu)
793{
794 LIST_HEAD(purge);
795 struct vmap_block *vb;
796 struct vmap_block *n_vb;
797 struct vmap_block_queue *vbq = &per_cpu(vmap_block_queue, cpu);
798
799 rcu_read_lock();
800 list_for_each_entry_rcu(vb, &vbq->free, free_list) {
801
802 if (!(vb->free + vb->dirty == VMAP_BBMAP_BITS && vb->dirty != VMAP_BBMAP_BITS))
803 continue;
804
805 spin_lock(&vb->lock);
806 if (vb->free + vb->dirty == VMAP_BBMAP_BITS && vb->dirty != VMAP_BBMAP_BITS) {
807 vb->free = 0; /* prevent further allocs after releasing lock */
808 vb->dirty = VMAP_BBMAP_BITS; /* prevent purging it again */
809 bitmap_fill(vb->alloc_map, VMAP_BBMAP_BITS);
810 bitmap_fill(vb->dirty_map, VMAP_BBMAP_BITS);
811 spin_lock(&vbq->lock);
812 list_del_rcu(&vb->free_list);
813 spin_unlock(&vbq->lock);
814 spin_unlock(&vb->lock);
815 list_add_tail(&vb->purge, &purge);
816 } else
817 spin_unlock(&vb->lock);
818 }
819 rcu_read_unlock();
820
821 list_for_each_entry_safe(vb, n_vb, &purge, purge) {
822 list_del(&vb->purge);
823 free_vmap_block(vb);
824 }
825}
826
827static void purge_fragmented_blocks_thiscpu(void)
828{
829 purge_fragmented_blocks(smp_processor_id());
830}
831
832static void purge_fragmented_blocks_allcpus(void)
833{
834 int cpu;
835
836 for_each_possible_cpu(cpu)
837 purge_fragmented_blocks(cpu);
838}
839
793static void *vb_alloc(unsigned long size, gfp_t gfp_mask) 840static void *vb_alloc(unsigned long size, gfp_t gfp_mask)
794{ 841{
795 struct vmap_block_queue *vbq; 842 struct vmap_block_queue *vbq;
796 struct vmap_block *vb; 843 struct vmap_block *vb;
797 unsigned long addr = 0; 844 unsigned long addr = 0;
798 unsigned int order; 845 unsigned int order;
846 int purge = 0;
799 847
800 BUG_ON(size & ~PAGE_MASK); 848 BUG_ON(size & ~PAGE_MASK);
801 BUG_ON(size > PAGE_SIZE*VMAP_MAX_ALLOC); 849 BUG_ON(size > PAGE_SIZE*VMAP_MAX_ALLOC);
@@ -808,24 +856,38 @@ again:
808 int i; 856 int i;
809 857
810 spin_lock(&vb->lock); 858 spin_lock(&vb->lock);
859 if (vb->free < 1UL << order)
860 goto next;
861
811 i = bitmap_find_free_region(vb->alloc_map, 862 i = bitmap_find_free_region(vb->alloc_map,
812 VMAP_BBMAP_BITS, order); 863 VMAP_BBMAP_BITS, order);
813 864
814 if (i >= 0) { 865 if (i < 0) {
815 addr = vb->va->va_start + (i << PAGE_SHIFT); 866 if (vb->free + vb->dirty == VMAP_BBMAP_BITS) {
816 BUG_ON(addr_to_vb_idx(addr) != 867 /* fragmented and no outstanding allocations */
817 addr_to_vb_idx(vb->va->va_start)); 868 BUG_ON(vb->dirty != VMAP_BBMAP_BITS);
818 vb->free -= 1UL << order; 869 purge = 1;
819 if (vb->free == 0) {
820 spin_lock(&vbq->lock);
821 list_del_init(&vb->free_list);
822 spin_unlock(&vbq->lock);
823 } 870 }
824 spin_unlock(&vb->lock); 871 goto next;
825 break; 872 }
873 addr = vb->va->va_start + (i << PAGE_SHIFT);
874 BUG_ON(addr_to_vb_idx(addr) !=
875 addr_to_vb_idx(vb->va->va_start));
876 vb->free -= 1UL << order;
877 if (vb->free == 0) {
878 spin_lock(&vbq->lock);
879 list_del_rcu(&vb->free_list);
880 spin_unlock(&vbq->lock);
826 } 881 }
827 spin_unlock(&vb->lock); 882 spin_unlock(&vb->lock);
883 break;
884next:
885 spin_unlock(&vb->lock);
828 } 886 }
887
888 if (purge)
889 purge_fragmented_blocks_thiscpu();
890
829 put_cpu_var(vmap_block_queue); 891 put_cpu_var(vmap_block_queue);
830 rcu_read_unlock(); 892 rcu_read_unlock();
831 893
@@ -862,11 +924,11 @@ static void vb_free(const void *addr, unsigned long size)
862 BUG_ON(!vb); 924 BUG_ON(!vb);
863 925
864 spin_lock(&vb->lock); 926 spin_lock(&vb->lock);
865 bitmap_allocate_region(vb->dirty_map, offset >> PAGE_SHIFT, order); 927 BUG_ON(bitmap_allocate_region(vb->dirty_map, offset >> PAGE_SHIFT, order));
866 928
867 vb->dirty += 1UL << order; 929 vb->dirty += 1UL << order;
868 if (vb->dirty == VMAP_BBMAP_BITS) { 930 if (vb->dirty == VMAP_BBMAP_BITS) {
869 BUG_ON(vb->free || !list_empty(&vb->free_list)); 931 BUG_ON(vb->free);
870 spin_unlock(&vb->lock); 932 spin_unlock(&vb->lock);
871 free_vmap_block(vb); 933 free_vmap_block(vb);
872 } else 934 } else
@@ -1035,8 +1097,6 @@ void __init vmalloc_init(void)
1035 vbq = &per_cpu(vmap_block_queue, i); 1097 vbq = &per_cpu(vmap_block_queue, i);
1036 spin_lock_init(&vbq->lock); 1098 spin_lock_init(&vbq->lock);
1037 INIT_LIST_HEAD(&vbq->free); 1099 INIT_LIST_HEAD(&vbq->free);
1038 INIT_LIST_HEAD(&vbq->dirty);
1039 vbq->nr_dirty = 0;
1040 } 1100 }
1041 1101
1042 /* Import existing vmlist entries. */ 1102 /* Import existing vmlist entries. */
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 885207a6b6b7..c26986c85ce0 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -1922,6 +1922,9 @@ static int sleeping_prematurely(pg_data_t *pgdat, int order, long remaining)
1922 if (!populated_zone(zone)) 1922 if (!populated_zone(zone))
1923 continue; 1923 continue;
1924 1924
1925 if (zone_is_all_unreclaimable(zone))
1926 continue;
1927
1925 if (!zone_watermark_ok(zone, order, high_wmark_pages(zone), 1928 if (!zone_watermark_ok(zone, order, high_wmark_pages(zone),
1926 0, 0)) 1929 0, 0))
1927 return 1; 1930 return 1;
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index b7889782047e..c1b92cab46c7 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -163,7 +163,7 @@ int vlan_skb_recv(struct sk_buff *skb, struct net_device *dev,
163 goto err_unlock; 163 goto err_unlock;
164 } 164 }
165 165
166 rx_stats = per_cpu_ptr(vlan_dev_info(dev)->vlan_rx_stats, 166 rx_stats = per_cpu_ptr(vlan_dev_info(skb->dev)->vlan_rx_stats,
167 smp_processor_id()); 167 smp_processor_id());
168 rx_stats->rx_packets++; 168 rx_stats->rx_packets++;
169 rx_stats->rx_bytes += skb->len; 169 rx_stats->rx_bytes += skb->len;
diff --git a/net/9p/client.c b/net/9p/client.c
index 8af95b2dddd6..09d4f1e2e4a8 100644
--- a/net/9p/client.c
+++ b/net/9p/client.c
@@ -69,7 +69,7 @@ p9_client_rpc(struct p9_client *c, int8_t type, const char *fmt, ...);
69 69
70static int parse_opts(char *opts, struct p9_client *clnt) 70static int parse_opts(char *opts, struct p9_client *clnt)
71{ 71{
72 char *options; 72 char *options, *tmp_options;
73 char *p; 73 char *p;
74 substring_t args[MAX_OPT_ARGS]; 74 substring_t args[MAX_OPT_ARGS];
75 int option; 75 int option;
@@ -81,12 +81,13 @@ static int parse_opts(char *opts, struct p9_client *clnt)
81 if (!opts) 81 if (!opts)
82 return 0; 82 return 0;
83 83
84 options = kstrdup(opts, GFP_KERNEL); 84 tmp_options = kstrdup(opts, GFP_KERNEL);
85 if (!options) { 85 if (!tmp_options) {
86 P9_DPRINTK(P9_DEBUG_ERROR, 86 P9_DPRINTK(P9_DEBUG_ERROR,
87 "failed to allocate copy of option string\n"); 87 "failed to allocate copy of option string\n");
88 return -ENOMEM; 88 return -ENOMEM;
89 } 89 }
90 options = tmp_options;
90 91
91 while ((p = strsep(&options, ",")) != NULL) { 92 while ((p = strsep(&options, ",")) != NULL) {
92 int token; 93 int token;
@@ -108,6 +109,13 @@ static int parse_opts(char *opts, struct p9_client *clnt)
108 break; 109 break;
109 case Opt_trans: 110 case Opt_trans:
110 clnt->trans_mod = v9fs_get_trans_by_name(&args[0]); 111 clnt->trans_mod = v9fs_get_trans_by_name(&args[0]);
112 if(clnt->trans_mod == NULL) {
113 P9_DPRINTK(P9_DEBUG_ERROR,
114 "Could not find request transport: %s\n",
115 (char *) &args[0]);
116 ret = -EINVAL;
117 goto free_and_return;
118 }
111 break; 119 break;
112 case Opt_legacy: 120 case Opt_legacy:
113 clnt->dotu = 0; 121 clnt->dotu = 0;
@@ -117,7 +125,8 @@ static int parse_opts(char *opts, struct p9_client *clnt)
117 } 125 }
118 } 126 }
119 127
120 kfree(options); 128free_and_return:
129 kfree(tmp_options);
121 return ret; 130 return ret;
122} 131}
123 132
@@ -667,18 +676,12 @@ struct p9_client *p9_client_create(const char *dev_name, char *options)
667 clnt->trans = NULL; 676 clnt->trans = NULL;
668 spin_lock_init(&clnt->lock); 677 spin_lock_init(&clnt->lock);
669 INIT_LIST_HEAD(&clnt->fidlist); 678 INIT_LIST_HEAD(&clnt->fidlist);
670 clnt->fidpool = p9_idpool_create();
671 if (IS_ERR(clnt->fidpool)) {
672 err = PTR_ERR(clnt->fidpool);
673 clnt->fidpool = NULL;
674 goto error;
675 }
676 679
677 p9_tag_init(clnt); 680 p9_tag_init(clnt);
678 681
679 err = parse_opts(options, clnt); 682 err = parse_opts(options, clnt);
680 if (err < 0) 683 if (err < 0)
681 goto error; 684 goto free_client;
682 685
683 if (!clnt->trans_mod) 686 if (!clnt->trans_mod)
684 clnt->trans_mod = v9fs_get_default_trans(); 687 clnt->trans_mod = v9fs_get_default_trans();
@@ -687,7 +690,14 @@ struct p9_client *p9_client_create(const char *dev_name, char *options)
687 err = -EPROTONOSUPPORT; 690 err = -EPROTONOSUPPORT;
688 P9_DPRINTK(P9_DEBUG_ERROR, 691 P9_DPRINTK(P9_DEBUG_ERROR,
689 "No transport defined or default transport\n"); 692 "No transport defined or default transport\n");
690 goto error; 693 goto free_client;
694 }
695
696 clnt->fidpool = p9_idpool_create();
697 if (IS_ERR(clnt->fidpool)) {
698 err = PTR_ERR(clnt->fidpool);
699 clnt->fidpool = NULL;
700 goto put_trans;
691 } 701 }
692 702
693 P9_DPRINTK(P9_DEBUG_MUX, "clnt %p trans %p msize %d dotu %d\n", 703 P9_DPRINTK(P9_DEBUG_MUX, "clnt %p trans %p msize %d dotu %d\n",
@@ -695,19 +705,25 @@ struct p9_client *p9_client_create(const char *dev_name, char *options)
695 705
696 err = clnt->trans_mod->create(clnt, dev_name, options); 706 err = clnt->trans_mod->create(clnt, dev_name, options);
697 if (err) 707 if (err)
698 goto error; 708 goto destroy_fidpool;
699 709
700 if ((clnt->msize+P9_IOHDRSZ) > clnt->trans_mod->maxsize) 710 if ((clnt->msize+P9_IOHDRSZ) > clnt->trans_mod->maxsize)
701 clnt->msize = clnt->trans_mod->maxsize-P9_IOHDRSZ; 711 clnt->msize = clnt->trans_mod->maxsize-P9_IOHDRSZ;
702 712
703 err = p9_client_version(clnt); 713 err = p9_client_version(clnt);
704 if (err) 714 if (err)
705 goto error; 715 goto close_trans;
706 716
707 return clnt; 717 return clnt;
708 718
709error: 719close_trans:
710 p9_client_destroy(clnt); 720 clnt->trans_mod->close(clnt);
721destroy_fidpool:
722 p9_idpool_destroy(clnt->fidpool);
723put_trans:
724 v9fs_put_trans(clnt->trans_mod);
725free_client:
726 kfree(clnt);
711 return ERR_PTR(err); 727 return ERR_PTR(err);
712} 728}
713EXPORT_SYMBOL(p9_client_create); 729EXPORT_SYMBOL(p9_client_create);
@@ -1214,10 +1230,11 @@ static int p9_client_statsize(struct p9_wstat *wst, int optional)
1214{ 1230{
1215 int ret; 1231 int ret;
1216 1232
1233 /* NOTE: size shouldn't include its own length */
1217 /* size[2] type[2] dev[4] qid[13] */ 1234 /* size[2] type[2] dev[4] qid[13] */
1218 /* mode[4] atime[4] mtime[4] length[8]*/ 1235 /* mode[4] atime[4] mtime[4] length[8]*/
1219 /* name[s] uid[s] gid[s] muid[s] */ 1236 /* name[s] uid[s] gid[s] muid[s] */
1220 ret = 2+2+4+13+4+4+4+8+2+2+2+2; 1237 ret = 2+4+13+4+4+4+8+2+2+2+2;
1221 1238
1222 if (wst->name) 1239 if (wst->name)
1223 ret += strlen(wst->name); 1240 ret += strlen(wst->name);
@@ -1258,7 +1275,7 @@ int p9_client_wstat(struct p9_fid *fid, struct p9_wstat *wst)
1258 wst->name, wst->uid, wst->gid, wst->muid, wst->extension, 1275 wst->name, wst->uid, wst->gid, wst->muid, wst->extension,
1259 wst->n_uid, wst->n_gid, wst->n_muid); 1276 wst->n_uid, wst->n_gid, wst->n_muid);
1260 1277
1261 req = p9_client_rpc(clnt, P9_TWSTAT, "dwS", fid->fid, wst->size, wst); 1278 req = p9_client_rpc(clnt, P9_TWSTAT, "dwS", fid->fid, wst->size+2, wst);
1262 if (IS_ERR(req)) { 1279 if (IS_ERR(req)) {
1263 err = PTR_ERR(req); 1280 err = PTR_ERR(req);
1264 goto error; 1281 goto error;
diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c
index be1cb909d8c0..31d0b05582a9 100644
--- a/net/9p/trans_fd.c
+++ b/net/9p/trans_fd.c
@@ -714,7 +714,7 @@ static int parse_opts(char *params, struct p9_fd_opts *opts)
714 char *p; 714 char *p;
715 substring_t args[MAX_OPT_ARGS]; 715 substring_t args[MAX_OPT_ARGS];
716 int option; 716 int option;
717 char *options; 717 char *options, *tmp_options;
718 int ret; 718 int ret;
719 719
720 opts->port = P9_PORT; 720 opts->port = P9_PORT;
@@ -724,12 +724,13 @@ static int parse_opts(char *params, struct p9_fd_opts *opts)
724 if (!params) 724 if (!params)
725 return 0; 725 return 0;
726 726
727 options = kstrdup(params, GFP_KERNEL); 727 tmp_options = kstrdup(params, GFP_KERNEL);
728 if (!options) { 728 if (!tmp_options) {
729 P9_DPRINTK(P9_DEBUG_ERROR, 729 P9_DPRINTK(P9_DEBUG_ERROR,
730 "failed to allocate copy of option string\n"); 730 "failed to allocate copy of option string\n");
731 return -ENOMEM; 731 return -ENOMEM;
732 } 732 }
733 options = tmp_options;
733 734
734 while ((p = strsep(&options, ",")) != NULL) { 735 while ((p = strsep(&options, ",")) != NULL) {
735 int token; 736 int token;
@@ -760,7 +761,8 @@ static int parse_opts(char *params, struct p9_fd_opts *opts)
760 continue; 761 continue;
761 } 762 }
762 } 763 }
763 kfree(options); 764
765 kfree(tmp_options);
764 return 0; 766 return 0;
765} 767}
766 768
diff --git a/net/9p/trans_rdma.c b/net/9p/trans_rdma.c
index 65cb29db03f8..2c95a89c0f46 100644
--- a/net/9p/trans_rdma.c
+++ b/net/9p/trans_rdma.c
@@ -166,7 +166,7 @@ static int parse_opts(char *params, struct p9_rdma_opts *opts)
166 char *p; 166 char *p;
167 substring_t args[MAX_OPT_ARGS]; 167 substring_t args[MAX_OPT_ARGS];
168 int option; 168 int option;
169 char *options; 169 char *options, *tmp_options;
170 int ret; 170 int ret;
171 171
172 opts->port = P9_PORT; 172 opts->port = P9_PORT;
@@ -177,12 +177,13 @@ static int parse_opts(char *params, struct p9_rdma_opts *opts)
177 if (!params) 177 if (!params)
178 return 0; 178 return 0;
179 179
180 options = kstrdup(params, GFP_KERNEL); 180 tmp_options = kstrdup(params, GFP_KERNEL);
181 if (!options) { 181 if (!tmp_options) {
182 P9_DPRINTK(P9_DEBUG_ERROR, 182 P9_DPRINTK(P9_DEBUG_ERROR,
183 "failed to allocate copy of option string\n"); 183 "failed to allocate copy of option string\n");
184 return -ENOMEM; 184 return -ENOMEM;
185 } 185 }
186 options = tmp_options;
186 187
187 while ((p = strsep(&options, ",")) != NULL) { 188 while ((p = strsep(&options, ",")) != NULL) {
188 int token; 189 int token;
@@ -216,7 +217,7 @@ static int parse_opts(char *params, struct p9_rdma_opts *opts)
216 } 217 }
217 /* RQ must be at least as large as the SQ */ 218 /* RQ must be at least as large as the SQ */
218 opts->rq_depth = max(opts->rq_depth, opts->sq_depth); 219 opts->rq_depth = max(opts->rq_depth, opts->sq_depth);
219 kfree(options); 220 kfree(tmp_options);
220 return 0; 221 return 0;
221} 222}
222 223
diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c
index ea1e3daabefe..cb50f4ae5eef 100644
--- a/net/9p/trans_virtio.c
+++ b/net/9p/trans_virtio.c
@@ -102,7 +102,8 @@ static void p9_virtio_close(struct p9_client *client)
102 struct virtio_chan *chan = client->trans; 102 struct virtio_chan *chan = client->trans;
103 103
104 mutex_lock(&virtio_9p_lock); 104 mutex_lock(&virtio_9p_lock);
105 chan->inuse = false; 105 if (chan)
106 chan->inuse = false;
106 mutex_unlock(&virtio_9p_lock); 107 mutex_unlock(&virtio_9p_lock);
107} 108}
108 109
@@ -311,6 +312,7 @@ p9_virtio_create(struct p9_client *client, const char *devname, char *args)
311 } 312 }
312 313
313 client->trans = (void *)chan; 314 client->trans = (void *)chan;
315 client->status = Connected;
314 chan->client = client; 316 chan->client = client;
315 317
316 return 0; 318 return 0;
diff --git a/net/appletalk/aarp.c b/net/appletalk/aarp.c
index 9d4adfd22757..f2b3b56aa779 100644
--- a/net/appletalk/aarp.c
+++ b/net/appletalk/aarp.c
@@ -819,7 +819,7 @@ static int aarp_rcv(struct sk_buff *skb, struct net_device *dev,
819 ma = &ifa->address; 819 ma = &ifa->address;
820 else { /* We need to make a copy of the entry. */ 820 else { /* We need to make a copy of the entry. */
821 da.s_node = sa.s_node; 821 da.s_node = sa.s_node;
822 da.s_net = da.s_net; 822 da.s_net = sa.s_net;
823 ma = &da; 823 ma = &da;
824 } 824 }
825 825
diff --git a/net/ax25/ax25_out.c b/net/ax25/ax25_out.c
index bf706f83a5c9..14912600ec57 100644
--- a/net/ax25/ax25_out.c
+++ b/net/ax25/ax25_out.c
@@ -92,6 +92,12 @@ ax25_cb *ax25_send_frame(struct sk_buff *skb, int paclen, ax25_address *src, ax2
92#endif 92#endif
93 } 93 }
94 94
95 /*
96 * There is one ref for the state machine; a caller needs
97 * one more to put it back, just like with the existing one.
98 */
99 ax25_cb_hold(ax25);
100
95 ax25_cb_add(ax25); 101 ax25_cb_add(ax25);
96 102
97 ax25->state = AX25_STATE_1; 103 ax25->state = AX25_STATE_1;
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index b7c4224f4e7d..b10e3cdb08f8 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -377,6 +377,9 @@ struct hci_conn *hci_connect(struct hci_dev *hdev, int type, bdaddr_t *dst, __u8
377 377
378 if (acl->state == BT_CONNECTED && 378 if (acl->state == BT_CONNECTED &&
379 (sco->state == BT_OPEN || sco->state == BT_CLOSED)) { 379 (sco->state == BT_OPEN || sco->state == BT_CLOSED)) {
380 acl->power_save = 1;
381 hci_conn_enter_active_mode(acl);
382
380 if (lmp_esco_capable(hdev)) 383 if (lmp_esco_capable(hdev))
381 hci_setup_sync(sco, acl->handle); 384 hci_setup_sync(sco, acl->handle);
382 else 385 else
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 28517bad796c..592da5c909c1 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -1699,6 +1699,7 @@ static inline void hci_sync_conn_complete_evt(struct hci_dev *hdev, struct sk_bu
1699 break; 1699 break;
1700 1700
1701 case 0x1c: /* SCO interval rejected */ 1701 case 0x1c: /* SCO interval rejected */
1702 case 0x1a: /* Unsupported Remote Feature */
1702 case 0x1f: /* Unspecified error */ 1703 case 0x1f: /* Unspecified error */
1703 if (conn->out && conn->attempt < 2) { 1704 if (conn->out && conn->attempt < 2) {
1704 conn->pkt_type = (hdev->esco_type & SCO_ESCO_MASK) | 1705 conn->pkt_type = (hdev->esco_type & SCO_ESCO_MASK) |
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
index 18e7f5a43dc4..fc6ec1e72652 100644
--- a/net/bluetooth/hidp/core.c
+++ b/net/bluetooth/hidp/core.c
@@ -243,6 +243,39 @@ static void hidp_input_report(struct hidp_session *session, struct sk_buff *skb)
243 input_sync(dev); 243 input_sync(dev);
244} 244}
245 245
246static int __hidp_send_ctrl_message(struct hidp_session *session,
247 unsigned char hdr, unsigned char *data, int size)
248{
249 struct sk_buff *skb;
250
251 BT_DBG("session %p data %p size %d", session, data, size);
252
253 if (!(skb = alloc_skb(size + 1, GFP_ATOMIC))) {
254 BT_ERR("Can't allocate memory for new frame");
255 return -ENOMEM;
256 }
257
258 *skb_put(skb, 1) = hdr;
259 if (data && size > 0)
260 memcpy(skb_put(skb, size), data, size);
261
262 skb_queue_tail(&session->ctrl_transmit, skb);
263
264 return 0;
265}
266
267static inline int hidp_send_ctrl_message(struct hidp_session *session,
268 unsigned char hdr, unsigned char *data, int size)
269{
270 int err;
271
272 err = __hidp_send_ctrl_message(session, hdr, data, size);
273
274 hidp_schedule(session);
275
276 return err;
277}
278
246static int hidp_queue_report(struct hidp_session *session, 279static int hidp_queue_report(struct hidp_session *session,
247 unsigned char *data, int size) 280 unsigned char *data, int size)
248{ 281{
@@ -282,7 +315,9 @@ static int hidp_send_report(struct hidp_session *session, struct hid_report *rep
282 315
283static int hidp_output_raw_report(struct hid_device *hid, unsigned char *data, size_t count) 316static int hidp_output_raw_report(struct hid_device *hid, unsigned char *data, size_t count)
284{ 317{
285 if (hidp_queue_report(hid->driver_data, data, count)) 318 if (hidp_send_ctrl_message(hid->driver_data,
319 HIDP_TRANS_SET_REPORT | HIDP_DATA_RTYPE_FEATURE,
320 data, count))
286 return -ENOMEM; 321 return -ENOMEM;
287 return count; 322 return count;
288} 323}
@@ -307,39 +342,6 @@ static inline void hidp_del_timer(struct hidp_session *session)
307 del_timer(&session->timer); 342 del_timer(&session->timer);
308} 343}
309 344
310static int __hidp_send_ctrl_message(struct hidp_session *session,
311 unsigned char hdr, unsigned char *data, int size)
312{
313 struct sk_buff *skb;
314
315 BT_DBG("session %p data %p size %d", session, data, size);
316
317 if (!(skb = alloc_skb(size + 1, GFP_ATOMIC))) {
318 BT_ERR("Can't allocate memory for new frame");
319 return -ENOMEM;
320 }
321
322 *skb_put(skb, 1) = hdr;
323 if (data && size > 0)
324 memcpy(skb_put(skb, size), data, size);
325
326 skb_queue_tail(&session->ctrl_transmit, skb);
327
328 return 0;
329}
330
331static inline int hidp_send_ctrl_message(struct hidp_session *session,
332 unsigned char hdr, unsigned char *data, int size)
333{
334 int err;
335
336 err = __hidp_send_ctrl_message(session, hdr, data, size);
337
338 hidp_schedule(session);
339
340 return err;
341}
342
343static void hidp_process_handshake(struct hidp_session *session, 345static void hidp_process_handshake(struct hidp_session *session,
344 unsigned char param) 346 unsigned char param)
345{ 347{
@@ -701,29 +703,9 @@ static void hidp_close(struct hid_device *hid)
701static int hidp_parse(struct hid_device *hid) 703static int hidp_parse(struct hid_device *hid)
702{ 704{
703 struct hidp_session *session = hid->driver_data; 705 struct hidp_session *session = hid->driver_data;
704 struct hidp_connadd_req *req = session->req;
705 unsigned char *buf;
706 int ret;
707
708 buf = kmalloc(req->rd_size, GFP_KERNEL);
709 if (!buf)
710 return -ENOMEM;
711
712 if (copy_from_user(buf, req->rd_data, req->rd_size)) {
713 kfree(buf);
714 return -EFAULT;
715 }
716
717 ret = hid_parse_report(session->hid, buf, req->rd_size);
718
719 kfree(buf);
720
721 if (ret)
722 return ret;
723 706
724 session->req = NULL; 707 return hid_parse_report(session->hid, session->rd_data,
725 708 session->rd_size);
726 return 0;
727} 709}
728 710
729static int hidp_start(struct hid_device *hid) 711static int hidp_start(struct hid_device *hid)
@@ -768,12 +750,24 @@ static int hidp_setup_hid(struct hidp_session *session,
768 bdaddr_t src, dst; 750 bdaddr_t src, dst;
769 int err; 751 int err;
770 752
753 session->rd_data = kzalloc(req->rd_size, GFP_KERNEL);
754 if (!session->rd_data)
755 return -ENOMEM;
756
757 if (copy_from_user(session->rd_data, req->rd_data, req->rd_size)) {
758 err = -EFAULT;
759 goto fault;
760 }
761 session->rd_size = req->rd_size;
762
771 hid = hid_allocate_device(); 763 hid = hid_allocate_device();
772 if (IS_ERR(hid)) 764 if (IS_ERR(hid)) {
773 return PTR_ERR(hid); 765 err = PTR_ERR(hid);
766 goto fault;
767 }
774 768
775 session->hid = hid; 769 session->hid = hid;
776 session->req = req; 770
777 hid->driver_data = session; 771 hid->driver_data = session;
778 772
779 baswap(&src, &bt_sk(session->ctrl_sock->sk)->src); 773 baswap(&src, &bt_sk(session->ctrl_sock->sk)->src);
@@ -804,6 +798,10 @@ failed:
804 hid_destroy_device(hid); 798 hid_destroy_device(hid);
805 session->hid = NULL; 799 session->hid = NULL;
806 800
801fault:
802 kfree(session->rd_data);
803 session->rd_data = NULL;
804
807 return err; 805 return err;
808} 806}
809 807
@@ -898,6 +896,9 @@ unlink:
898 session->hid = NULL; 896 session->hid = NULL;
899 } 897 }
900 898
899 kfree(session->rd_data);
900 session->rd_data = NULL;
901
901purge: 902purge:
902 skb_queue_purge(&session->ctrl_transmit); 903 skb_queue_purge(&session->ctrl_transmit);
903 skb_queue_purge(&session->intr_transmit); 904 skb_queue_purge(&session->intr_transmit);
diff --git a/net/bluetooth/hidp/hidp.h b/net/bluetooth/hidp/hidp.h
index faf3d74c3586..a4e215d50c10 100644
--- a/net/bluetooth/hidp/hidp.h
+++ b/net/bluetooth/hidp/hidp.h
@@ -154,7 +154,9 @@ struct hidp_session {
154 struct sk_buff_head ctrl_transmit; 154 struct sk_buff_head ctrl_transmit;
155 struct sk_buff_head intr_transmit; 155 struct sk_buff_head intr_transmit;
156 156
157 struct hidp_connadd_req *req; 157 /* Report descriptor */
158 __u8 *rd_data;
159 uint rd_size;
158}; 160};
159 161
160static inline void hidp_schedule(struct hidp_session *session) 162static inline void hidp_schedule(struct hidp_session *session)
diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c
index 1120cf14a548..400efa26ddba 100644
--- a/net/bluetooth/l2cap.c
+++ b/net/bluetooth/l2cap.c
@@ -1368,7 +1368,6 @@ static int l2cap_ertm_send(struct sock *sk)
1368 1368
1369 while ((skb = sk->sk_send_head) && (!l2cap_tx_window_full(sk)) && 1369 while ((skb = sk->sk_send_head) && (!l2cap_tx_window_full(sk)) &&
1370 !(pi->conn_state & L2CAP_CONN_REMOTE_BUSY)) { 1370 !(pi->conn_state & L2CAP_CONN_REMOTE_BUSY)) {
1371 tx_skb = skb_clone(skb, GFP_ATOMIC);
1372 1371
1373 if (pi->remote_max_tx && 1372 if (pi->remote_max_tx &&
1374 bt_cb(skb)->retries == pi->remote_max_tx) { 1373 bt_cb(skb)->retries == pi->remote_max_tx) {
@@ -1376,6 +1375,8 @@ static int l2cap_ertm_send(struct sock *sk)
1376 break; 1375 break;
1377 } 1376 }
1378 1377
1378 tx_skb = skb_clone(skb, GFP_ATOMIC);
1379
1379 bt_cb(skb)->retries++; 1380 bt_cb(skb)->retries++;
1380 1381
1381 control = get_unaligned_le16(tx_skb->data + L2CAP_HDR_SIZE); 1382 control = get_unaligned_le16(tx_skb->data + L2CAP_HDR_SIZE);
@@ -3518,7 +3519,6 @@ static inline int l2cap_data_channel(struct l2cap_conn *conn, u16 cid, struct sk
3518 struct l2cap_pinfo *pi; 3519 struct l2cap_pinfo *pi;
3519 u16 control, len; 3520 u16 control, len;
3520 u8 tx_seq; 3521 u8 tx_seq;
3521 int err;
3522 3522
3523 sk = l2cap_get_chan_by_scid(&conn->chan_list, cid); 3523 sk = l2cap_get_chan_by_scid(&conn->chan_list, cid);
3524 if (!sk) { 3524 if (!sk) {
@@ -3570,13 +3570,11 @@ static inline int l2cap_data_channel(struct l2cap_conn *conn, u16 cid, struct sk
3570 goto drop; 3570 goto drop;
3571 3571
3572 if (__is_iframe(control)) 3572 if (__is_iframe(control))
3573 err = l2cap_data_channel_iframe(sk, control, skb); 3573 l2cap_data_channel_iframe(sk, control, skb);
3574 else 3574 else
3575 err = l2cap_data_channel_sframe(sk, control, skb); 3575 l2cap_data_channel_sframe(sk, control, skb);
3576 3576
3577 if (!err) 3577 goto done;
3578 goto done;
3579 break;
3580 3578
3581 case L2CAP_MODE_STREAMING: 3579 case L2CAP_MODE_STREAMING:
3582 control = get_unaligned_le16(skb->data); 3580 control = get_unaligned_le16(skb->data);
@@ -3602,7 +3600,7 @@ static inline int l2cap_data_channel(struct l2cap_conn *conn, u16 cid, struct sk
3602 else 3600 else
3603 pi->expected_tx_seq = tx_seq + 1; 3601 pi->expected_tx_seq = tx_seq + 1;
3604 3602
3605 err = l2cap_sar_reassembly_sdu(sk, skb, control); 3603 l2cap_sar_reassembly_sdu(sk, skb, control);
3606 3604
3607 goto done; 3605 goto done;
3608 3606
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c
index fc5ee3296e22..89f4a59eb82b 100644
--- a/net/bluetooth/rfcomm/core.c
+++ b/net/bluetooth/rfcomm/core.c
@@ -252,7 +252,6 @@ static void rfcomm_session_timeout(unsigned long arg)
252 BT_DBG("session %p state %ld", s, s->state); 252 BT_DBG("session %p state %ld", s, s->state);
253 253
254 set_bit(RFCOMM_TIMED_OUT, &s->flags); 254 set_bit(RFCOMM_TIMED_OUT, &s->flags);
255 rfcomm_session_put(s);
256 rfcomm_schedule(RFCOMM_SCHED_TIMEO); 255 rfcomm_schedule(RFCOMM_SCHED_TIMEO);
257} 256}
258 257
@@ -1151,7 +1150,11 @@ static int rfcomm_recv_ua(struct rfcomm_session *s, u8 dlci)
1151 break; 1150 break;
1152 1151
1153 case BT_DISCONN: 1152 case BT_DISCONN:
1154 rfcomm_session_put(s); 1153 /* When socket is closed and we are not RFCOMM
1154 * initiator rfcomm_process_rx already calls
1155 * rfcomm_session_put() */
1156 if (s->sock->sk->sk_state != BT_CLOSED)
1157 rfcomm_session_put(s);
1155 break; 1158 break;
1156 } 1159 }
1157 } 1160 }
@@ -1920,6 +1923,7 @@ static inline void rfcomm_process_sessions(void)
1920 if (test_and_clear_bit(RFCOMM_TIMED_OUT, &s->flags)) { 1923 if (test_and_clear_bit(RFCOMM_TIMED_OUT, &s->flags)) {
1921 s->state = BT_DISCONN; 1924 s->state = BT_DISCONN;
1922 rfcomm_send_disc(s, 0); 1925 rfcomm_send_disc(s, 0);
1926 rfcomm_session_put(s);
1923 continue; 1927 continue;
1924 } 1928 }
1925 1929
diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c
index bd1c65425d4f..0b7f262cd148 100644
--- a/net/bridge/netfilter/ebtables.c
+++ b/net/bridge/netfilter/ebtables.c
@@ -1406,6 +1406,9 @@ static int do_ebt_set_ctl(struct sock *sk,
1406{ 1406{
1407 int ret; 1407 int ret;
1408 1408
1409 if (!capable(CAP_NET_ADMIN))
1410 return -EPERM;
1411
1409 switch(cmd) { 1412 switch(cmd) {
1410 case EBT_SO_SET_ENTRIES: 1413 case EBT_SO_SET_ENTRIES:
1411 ret = do_replace(sock_net(sk), user, len); 1414 ret = do_replace(sock_net(sk), user, len);
@@ -1425,6 +1428,9 @@ static int do_ebt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
1425 struct ebt_replace tmp; 1428 struct ebt_replace tmp;
1426 struct ebt_table *t; 1429 struct ebt_table *t;
1427 1430
1431 if (!capable(CAP_NET_ADMIN))
1432 return -EPERM;
1433
1428 if (copy_from_user(&tmp, user, sizeof(tmp))) 1434 if (copy_from_user(&tmp, user, sizeof(tmp)))
1429 return -EFAULT; 1435 return -EFAULT;
1430 1436
diff --git a/net/core/dev.c b/net/core/dev.c
index be9924f60ec3..ec874218b206 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2761,7 +2761,7 @@ gro_result_t napi_frags_finish(struct napi_struct *napi, struct sk_buff *skb,
2761 switch (ret) { 2761 switch (ret) {
2762 case GRO_NORMAL: 2762 case GRO_NORMAL:
2763 case GRO_HELD: 2763 case GRO_HELD:
2764 skb->protocol = eth_type_trans(skb, napi->dev); 2764 skb->protocol = eth_type_trans(skb, skb->dev);
2765 2765
2766 if (ret == GRO_HELD) 2766 if (ret == GRO_HELD)
2767 skb_gro_pull(skb, -ETH_HLEN); 2767 skb_gro_pull(skb, -ETH_HLEN);
diff --git a/net/core/dst.c b/net/core/dst.c
index 57bc4d5b8d08..cb1b3488b739 100644
--- a/net/core/dst.c
+++ b/net/core/dst.c
@@ -17,6 +17,7 @@
17#include <linux/string.h> 17#include <linux/string.h>
18#include <linux/types.h> 18#include <linux/types.h>
19#include <net/net_namespace.h> 19#include <net/net_namespace.h>
20#include <linux/sched.h>
20 21
21#include <net/dst.h> 22#include <net/dst.h>
22 23
@@ -79,6 +80,7 @@ loop:
79 while ((dst = next) != NULL) { 80 while ((dst = next) != NULL) {
80 next = dst->next; 81 next = dst->next;
81 prefetch(&next->next); 82 prefetch(&next->next);
83 cond_resched();
82 if (likely(atomic_read(&dst->__refcnt))) { 84 if (likely(atomic_read(&dst->__refcnt))) {
83 last->next = dst; 85 last->next = dst;
84 last = dst; 86 last = dst;
diff --git a/net/core/ethtool.c b/net/core/ethtool.c
index d8aee584e8d1..236a9988ea91 100644
--- a/net/core/ethtool.c
+++ b/net/core/ethtool.c
@@ -927,6 +927,7 @@ int dev_ethtool(struct net *net, struct ifreq *ifr)
927 case ETHTOOL_GPERMADDR: 927 case ETHTOOL_GPERMADDR:
928 case ETHTOOL_GUFO: 928 case ETHTOOL_GUFO:
929 case ETHTOOL_GGSO: 929 case ETHTOOL_GGSO:
930 case ETHTOOL_GGRO:
930 case ETHTOOL_GFLAGS: 931 case ETHTOOL_GFLAGS:
931 case ETHTOOL_GPFLAGS: 932 case ETHTOOL_GPFLAGS:
932 case ETHTOOL_GRXFH: 933 case ETHTOOL_GRXFH:
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
index fbc1c7472c5e..099c753c4213 100644
--- a/net/core/net-sysfs.c
+++ b/net/core/net-sysfs.c
@@ -410,7 +410,8 @@ static ssize_t wireless_show(struct device *d, char *buf,
410 const struct iw_statistics *iw; 410 const struct iw_statistics *iw;
411 ssize_t ret = -EINVAL; 411 ssize_t ret = -EINVAL;
412 412
413 rtnl_lock(); 413 if (!rtnl_trylock())
414 return restart_syscall();
414 if (dev_isalive(dev)) { 415 if (dev_isalive(dev)) {
415 iw = get_wireless_stats(dev); 416 iw = get_wireless_stats(dev);
416 if (iw) 417 if (iw)
diff --git a/net/core/pktgen.c b/net/core/pktgen.c
index a23b45f08ec9..2e692afdc55d 100644
--- a/net/core/pktgen.c
+++ b/net/core/pktgen.c
@@ -250,8 +250,7 @@ struct pktgen_dev {
250 __u64 count; /* Default No packets to send */ 250 __u64 count; /* Default No packets to send */
251 __u64 sofar; /* How many pkts we've sent so far */ 251 __u64 sofar; /* How many pkts we've sent so far */
252 __u64 tx_bytes; /* How many bytes we've transmitted */ 252 __u64 tx_bytes; /* How many bytes we've transmitted */
253 __u64 errors; /* Errors when trying to transmit, 253 __u64 errors; /* Errors when trying to transmit, */
254 pkts will be re-sent */
255 254
256 /* runtime counters relating to clone_skb */ 255 /* runtime counters relating to clone_skb */
257 256
@@ -3465,6 +3464,12 @@ static void pktgen_xmit(struct pktgen_dev *pkt_dev)
3465 pkt_dev->seq_num++; 3464 pkt_dev->seq_num++;
3466 pkt_dev->tx_bytes += pkt_dev->last_pkt_size; 3465 pkt_dev->tx_bytes += pkt_dev->last_pkt_size;
3467 break; 3466 break;
3467 case NET_XMIT_DROP:
3468 case NET_XMIT_CN:
3469 case NET_XMIT_POLICED:
3470 /* skb has been consumed */
3471 pkt_dev->errors++;
3472 break;
3468 default: /* Drivers are not supposed to return other values! */ 3473 default: /* Drivers are not supposed to return other values! */
3469 if (net_ratelimit()) 3474 if (net_ratelimit())
3470 pr_info("pktgen: %s xmit error: %d\n", 3475 pr_info("pktgen: %s xmit error: %d\n",
@@ -3519,6 +3524,7 @@ static int pktgen_thread_worker(void *arg)
3519 wait_event_interruptible_timeout(t->queue, 3524 wait_event_interruptible_timeout(t->queue,
3520 t->control != 0, 3525 t->control != 0,
3521 HZ/10); 3526 HZ/10);
3527 try_to_freeze();
3522 continue; 3528 continue;
3523 } 3529 }
3524 3530
diff --git a/net/core/sock.c b/net/core/sock.c
index 76ff58d43e26..e1f6f225f012 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -1205,6 +1205,10 @@ struct sock *sk_clone(const struct sock *sk, const gfp_t priority)
1205 1205
1206 if (newsk->sk_prot->sockets_allocated) 1206 if (newsk->sk_prot->sockets_allocated)
1207 percpu_counter_inc(newsk->sk_prot->sockets_allocated); 1207 percpu_counter_inc(newsk->sk_prot->sockets_allocated);
1208
1209 if (sock_flag(newsk, SOCK_TIMESTAMP) ||
1210 sock_flag(newsk, SOCK_TIMESTAMPING_RX_SOFTWARE))
1211 net_enable_timestamp();
1208 } 1212 }
1209out: 1213out:
1210 return newsk; 1214 return newsk;
diff --git a/net/dccp/ccid.c b/net/dccp/ccid.c
index f3e9ba1cfd01..ff16e9df1969 100644
--- a/net/dccp/ccid.c
+++ b/net/dccp/ccid.c
@@ -77,34 +77,24 @@ int ccid_getsockopt_builtin_ccids(struct sock *sk, int len,
77 return err; 77 return err;
78} 78}
79 79
80static struct kmem_cache *ccid_kmem_cache_create(int obj_size, const char *fmt,...) 80static struct kmem_cache *ccid_kmem_cache_create(int obj_size, char *slab_name_fmt, const char *fmt,...)
81{ 81{
82 struct kmem_cache *slab; 82 struct kmem_cache *slab;
83 char slab_name_fmt[32], *slab_name;
84 va_list args; 83 va_list args;
85 84
86 va_start(args, fmt); 85 va_start(args, fmt);
87 vsnprintf(slab_name_fmt, sizeof(slab_name_fmt), fmt, args); 86 vsnprintf(slab_name_fmt, CCID_SLAB_NAME_LENGTH, fmt, args);
88 va_end(args); 87 va_end(args);
89 88
90 slab_name = kstrdup(slab_name_fmt, GFP_KERNEL); 89 slab = kmem_cache_create(slab_name_fmt, sizeof(struct ccid) + obj_size, 0,
91 if (slab_name == NULL)
92 return NULL;
93 slab = kmem_cache_create(slab_name, sizeof(struct ccid) + obj_size, 0,
94 SLAB_HWCACHE_ALIGN, NULL); 90 SLAB_HWCACHE_ALIGN, NULL);
95 if (slab == NULL)
96 kfree(slab_name);
97 return slab; 91 return slab;
98} 92}
99 93
100static void ccid_kmem_cache_destroy(struct kmem_cache *slab) 94static void ccid_kmem_cache_destroy(struct kmem_cache *slab)
101{ 95{
102 if (slab != NULL) { 96 if (slab != NULL)
103 const char *name = kmem_cache_name(slab);
104
105 kmem_cache_destroy(slab); 97 kmem_cache_destroy(slab);
106 kfree(name);
107 }
108} 98}
109 99
110static int ccid_activate(struct ccid_operations *ccid_ops) 100static int ccid_activate(struct ccid_operations *ccid_ops)
@@ -113,6 +103,7 @@ static int ccid_activate(struct ccid_operations *ccid_ops)
113 103
114 ccid_ops->ccid_hc_rx_slab = 104 ccid_ops->ccid_hc_rx_slab =
115 ccid_kmem_cache_create(ccid_ops->ccid_hc_rx_obj_size, 105 ccid_kmem_cache_create(ccid_ops->ccid_hc_rx_obj_size,
106 ccid_ops->ccid_hc_rx_slab_name,
116 "ccid%u_hc_rx_sock", 107 "ccid%u_hc_rx_sock",
117 ccid_ops->ccid_id); 108 ccid_ops->ccid_id);
118 if (ccid_ops->ccid_hc_rx_slab == NULL) 109 if (ccid_ops->ccid_hc_rx_slab == NULL)
@@ -120,6 +111,7 @@ static int ccid_activate(struct ccid_operations *ccid_ops)
120 111
121 ccid_ops->ccid_hc_tx_slab = 112 ccid_ops->ccid_hc_tx_slab =
122 ccid_kmem_cache_create(ccid_ops->ccid_hc_tx_obj_size, 113 ccid_kmem_cache_create(ccid_ops->ccid_hc_tx_obj_size,
114 ccid_ops->ccid_hc_tx_slab_name,
123 "ccid%u_hc_tx_sock", 115 "ccid%u_hc_tx_sock",
124 ccid_ops->ccid_id); 116 ccid_ops->ccid_id);
125 if (ccid_ops->ccid_hc_tx_slab == NULL) 117 if (ccid_ops->ccid_hc_tx_slab == NULL)
diff --git a/net/dccp/ccid.h b/net/dccp/ccid.h
index facedd20b531..6df6f8ac9636 100644
--- a/net/dccp/ccid.h
+++ b/net/dccp/ccid.h
@@ -19,7 +19,9 @@
19#include <linux/list.h> 19#include <linux/list.h>
20#include <linux/module.h> 20#include <linux/module.h>
21 21
22#define CCID_MAX 255 22/* maximum value for a CCID (RFC 4340, 19.5) */
23#define CCID_MAX 255
24#define CCID_SLAB_NAME_LENGTH 32
23 25
24struct tcp_info; 26struct tcp_info;
25 27
@@ -49,6 +51,8 @@ struct ccid_operations {
49 const char *ccid_name; 51 const char *ccid_name;
50 struct kmem_cache *ccid_hc_rx_slab, 52 struct kmem_cache *ccid_hc_rx_slab,
51 *ccid_hc_tx_slab; 53 *ccid_hc_tx_slab;
54 char ccid_hc_rx_slab_name[CCID_SLAB_NAME_LENGTH];
55 char ccid_hc_tx_slab_name[CCID_SLAB_NAME_LENGTH];
52 __u32 ccid_hc_rx_obj_size, 56 __u32 ccid_hc_rx_obj_size,
53 ccid_hc_tx_obj_size; 57 ccid_hc_tx_obj_size;
54 /* Interface Routines */ 58 /* Interface Routines */
diff --git a/net/dccp/probe.c b/net/dccp/probe.c
index a1362dc8abb0..f5b3464f1242 100644
--- a/net/dccp/probe.c
+++ b/net/dccp/probe.c
@@ -161,7 +161,8 @@ static __init int dccpprobe_init(void)
161 if (!proc_net_fops_create(&init_net, procname, S_IRUSR, &dccpprobe_fops)) 161 if (!proc_net_fops_create(&init_net, procname, S_IRUSR, &dccpprobe_fops))
162 goto err0; 162 goto err0;
163 163
164 ret = register_jprobe(&dccp_send_probe); 164 try_then_request_module((ret = register_jprobe(&dccp_send_probe)) == 0,
165 "dccp");
165 if (ret) 166 if (ret)
166 goto err1; 167 goto err1;
167 168
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
index 5cdbc102a418..26dec2be9615 100644
--- a/net/ipv4/devinet.c
+++ b/net/ipv4/devinet.c
@@ -1317,14 +1317,19 @@ static int devinet_sysctl_forward(ctl_table *ctl, int write,
1317{ 1317{
1318 int *valp = ctl->data; 1318 int *valp = ctl->data;
1319 int val = *valp; 1319 int val = *valp;
1320 loff_t pos = *ppos;
1320 int ret = proc_dointvec(ctl, write, buffer, lenp, ppos); 1321 int ret = proc_dointvec(ctl, write, buffer, lenp, ppos);
1321 1322
1322 if (write && *valp != val) { 1323 if (write && *valp != val) {
1323 struct net *net = ctl->extra2; 1324 struct net *net = ctl->extra2;
1324 1325
1325 if (valp != &IPV4_DEVCONF_DFLT(net, FORWARDING)) { 1326 if (valp != &IPV4_DEVCONF_DFLT(net, FORWARDING)) {
1326 if (!rtnl_trylock()) 1327 if (!rtnl_trylock()) {
1328 /* Restore the original values before restarting */
1329 *valp = val;
1330 *ppos = pos;
1327 return restart_syscall(); 1331 return restart_syscall();
1332 }
1328 if (valp == &IPV4_DEVCONF_ALL(net, FORWARDING)) { 1333 if (valp == &IPV4_DEVCONF_ALL(net, FORWARDING)) {
1329 inet_forward_change(net); 1334 inet_forward_change(net);
1330 } else if (*valp) { 1335 } else if (*valp) {
@@ -1397,6 +1402,7 @@ static struct devinet_sysctl_table {
1397 DEVINET_SYSCTL_RW_ENTRY(ACCEPT_SOURCE_ROUTE, 1402 DEVINET_SYSCTL_RW_ENTRY(ACCEPT_SOURCE_ROUTE,
1398 "accept_source_route"), 1403 "accept_source_route"),
1399 DEVINET_SYSCTL_RW_ENTRY(ACCEPT_LOCAL, "accept_local"), 1404 DEVINET_SYSCTL_RW_ENTRY(ACCEPT_LOCAL, "accept_local"),
1405 DEVINET_SYSCTL_RW_ENTRY(SRC_VMARK, "src_valid_mark"),
1400 DEVINET_SYSCTL_RW_ENTRY(PROXY_ARP, "proxy_arp"), 1406 DEVINET_SYSCTL_RW_ENTRY(PROXY_ARP, "proxy_arp"),
1401 DEVINET_SYSCTL_RW_ENTRY(MEDIUM_ID, "medium_id"), 1407 DEVINET_SYSCTL_RW_ENTRY(MEDIUM_ID, "medium_id"),
1402 DEVINET_SYSCTL_RW_ENTRY(BOOTP_RELAY, "bootp_relay"), 1408 DEVINET_SYSCTL_RW_ENTRY(BOOTP_RELAY, "bootp_relay"),
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
index 3323168ee52d..82dbf711d6d0 100644
--- a/net/ipv4/fib_frontend.c
+++ b/net/ipv4/fib_frontend.c
@@ -252,6 +252,8 @@ int fib_validate_source(__be32 src, __be32 dst, u8 tos, int oif,
252 no_addr = in_dev->ifa_list == NULL; 252 no_addr = in_dev->ifa_list == NULL;
253 rpf = IN_DEV_RPFILTER(in_dev); 253 rpf = IN_DEV_RPFILTER(in_dev);
254 accept_local = IN_DEV_ACCEPT_LOCAL(in_dev); 254 accept_local = IN_DEV_ACCEPT_LOCAL(in_dev);
255 if (mark && !IN_DEV_SRC_VMARK(in_dev))
256 fl.mark = 0;
255 } 257 }
256 rcu_read_unlock(); 258 rcu_read_unlock();
257 259
diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c
index 76c08402c933..a42f658e756a 100644
--- a/net/ipv4/igmp.c
+++ b/net/ipv4/igmp.c
@@ -946,7 +946,6 @@ int igmp_rcv(struct sk_buff *skb)
946 break; 946 break;
947 case IGMP_HOST_MEMBERSHIP_REPORT: 947 case IGMP_HOST_MEMBERSHIP_REPORT:
948 case IGMPV2_HOST_MEMBERSHIP_REPORT: 948 case IGMPV2_HOST_MEMBERSHIP_REPORT:
949 case IGMPV3_HOST_MEMBERSHIP_REPORT:
950 /* Is it our report looped back? */ 949 /* Is it our report looped back? */
951 if (skb_rtable(skb)->fl.iif == 0) 950 if (skb_rtable(skb)->fl.iif == 0)
952 break; 951 break;
@@ -960,6 +959,7 @@ int igmp_rcv(struct sk_buff *skb)
960 in_dev_put(in_dev); 959 in_dev_put(in_dev);
961 return pim_rcv_v1(skb); 960 return pim_rcv_v1(skb);
962#endif 961#endif
962 case IGMPV3_HOST_MEMBERSHIP_REPORT:
963 case IGMP_DVMRP: 963 case IGMP_DVMRP:
964 case IGMP_TRACE: 964 case IGMP_TRACE:
965 case IGMP_HOST_LEAVE_MESSAGE: 965 case IGMP_HOST_LEAVE_MESSAGE:
diff --git a/net/ipv4/inet_diag.c b/net/ipv4/inet_diag.c
index bdb78dd180ce..1aaa8110d84b 100644
--- a/net/ipv4/inet_diag.c
+++ b/net/ipv4/inet_diag.c
@@ -368,7 +368,7 @@ static int inet_diag_bc_run(const void *bc, int len,
368 yes = entry->sport >= op[1].no; 368 yes = entry->sport >= op[1].no;
369 break; 369 break;
370 case INET_DIAG_BC_S_LE: 370 case INET_DIAG_BC_S_LE:
371 yes = entry->dport <= op[1].no; 371 yes = entry->sport <= op[1].no;
372 break; 372 break;
373 case INET_DIAG_BC_D_GE: 373 case INET_DIAG_BC_D_GE:
374 yes = entry->dport >= op[1].no; 374 yes = entry->dport >= op[1].no;
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c
index e34013a78ef4..3451799e3dbf 100644
--- a/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -254,7 +254,7 @@ int ip_mc_output(struct sk_buff *skb)
254 */ 254 */
255 255
256 if (rt->rt_flags&RTCF_MULTICAST) { 256 if (rt->rt_flags&RTCF_MULTICAST) {
257 if ((!sk || inet_sk(sk)->mc_loop) 257 if (sk_mc_loop(sk)
258#ifdef CONFIG_IP_MROUTE 258#ifdef CONFIG_IP_MROUTE
259 /* Small optimization: do not loopback not local frames, 259 /* Small optimization: do not loopback not local frames,
260 which returned after forwarding; they will be dropped 260 which returned after forwarding; they will be dropped
diff --git a/net/ipv4/ipcomp.c b/net/ipv4/ipcomp.c
index 38fbf04150ae..544ce0876f12 100644
--- a/net/ipv4/ipcomp.c
+++ b/net/ipv4/ipcomp.c
@@ -124,16 +124,12 @@ static int ipcomp4_init_state(struct xfrm_state *x)
124 if (x->props.mode == XFRM_MODE_TUNNEL) { 124 if (x->props.mode == XFRM_MODE_TUNNEL) {
125 err = ipcomp_tunnel_attach(x); 125 err = ipcomp_tunnel_attach(x);
126 if (err) 126 if (err)
127 goto error_tunnel; 127 goto out;
128 } 128 }
129 129
130 err = 0; 130 err = 0;
131out: 131out:
132 return err; 132 return err;
133
134error_tunnel:
135 ipcomp_destroy(x);
136 goto out;
137} 133}
138 134
139static const struct xfrm_type ipcomp_type = { 135static const struct xfrm_type ipcomp_type = {
diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c
index 06632762ba5f..90203e1b9187 100644
--- a/net/ipv4/netfilter/arp_tables.c
+++ b/net/ipv4/netfilter/arp_tables.c
@@ -925,10 +925,10 @@ static int get_info(struct net *net, void __user *user, int *len, int compat)
925 if (t && !IS_ERR(t)) { 925 if (t && !IS_ERR(t)) {
926 struct arpt_getinfo info; 926 struct arpt_getinfo info;
927 const struct xt_table_info *private = t->private; 927 const struct xt_table_info *private = t->private;
928
929#ifdef CONFIG_COMPAT 928#ifdef CONFIG_COMPAT
929 struct xt_table_info tmp;
930
930 if (compat) { 931 if (compat) {
931 struct xt_table_info tmp;
932 ret = compat_table_info(private, &tmp); 932 ret = compat_table_info(private, &tmp);
933 xt_compat_flush_offsets(NFPROTO_ARP); 933 xt_compat_flush_offsets(NFPROTO_ARP);
934 private = &tmp; 934 private = &tmp;
diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c
index 572330a552ef..3ce53cf13d5a 100644
--- a/net/ipv4/netfilter/ip_tables.c
+++ b/net/ipv4/netfilter/ip_tables.c
@@ -1132,10 +1132,10 @@ static int get_info(struct net *net, void __user *user, int *len, int compat)
1132 if (t && !IS_ERR(t)) { 1132 if (t && !IS_ERR(t)) {
1133 struct ipt_getinfo info; 1133 struct ipt_getinfo info;
1134 const struct xt_table_info *private = t->private; 1134 const struct xt_table_info *private = t->private;
1135
1136#ifdef CONFIG_COMPAT 1135#ifdef CONFIG_COMPAT
1136 struct xt_table_info tmp;
1137
1137 if (compat) { 1138 if (compat) {
1138 struct xt_table_info tmp;
1139 ret = compat_table_info(private, &tmp); 1139 ret = compat_table_info(private, &tmp);
1140 xt_compat_flush_offsets(AF_INET); 1140 xt_compat_flush_offsets(AF_INET);
1141 private = &tmp; 1141 private = &tmp;
diff --git a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
index d171b123a656..d1ea38a7c490 100644
--- a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
+++ b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
@@ -210,7 +210,7 @@ static ctl_table ip_ct_sysctl_table[] = {
210 }, 210 },
211 { 211 {
212 .procname = "ip_conntrack_buckets", 212 .procname = "ip_conntrack_buckets",
213 .data = &nf_conntrack_htable_size, 213 .data = &init_net.ct.htable_size,
214 .maxlen = sizeof(unsigned int), 214 .maxlen = sizeof(unsigned int),
215 .mode = 0444, 215 .mode = 0444,
216 .proc_handler = proc_dointvec, 216 .proc_handler = proc_dointvec,
diff --git a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c
index 8668a3defda6..2fb7b76da94f 100644
--- a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c
+++ b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c
@@ -32,7 +32,7 @@ static struct hlist_nulls_node *ct_get_first(struct seq_file *seq)
32 struct hlist_nulls_node *n; 32 struct hlist_nulls_node *n;
33 33
34 for (st->bucket = 0; 34 for (st->bucket = 0;
35 st->bucket < nf_conntrack_htable_size; 35 st->bucket < net->ct.htable_size;
36 st->bucket++) { 36 st->bucket++) {
37 n = rcu_dereference(net->ct.hash[st->bucket].first); 37 n = rcu_dereference(net->ct.hash[st->bucket].first);
38 if (!is_a_nulls(n)) 38 if (!is_a_nulls(n))
@@ -50,7 +50,7 @@ static struct hlist_nulls_node *ct_get_next(struct seq_file *seq,
50 head = rcu_dereference(head->next); 50 head = rcu_dereference(head->next);
51 while (is_a_nulls(head)) { 51 while (is_a_nulls(head)) {
52 if (likely(get_nulls_value(head) == st->bucket)) { 52 if (likely(get_nulls_value(head) == st->bucket)) {
53 if (++st->bucket >= nf_conntrack_htable_size) 53 if (++st->bucket >= net->ct.htable_size)
54 return NULL; 54 return NULL;
55 } 55 }
56 head = rcu_dereference(net->ct.hash[st->bucket].first); 56 head = rcu_dereference(net->ct.hash[st->bucket].first);
diff --git a/net/ipv4/netfilter/nf_nat_core.c b/net/ipv4/netfilter/nf_nat_core.c
index fe1a64479dd0..26066a2327ad 100644
--- a/net/ipv4/netfilter/nf_nat_core.c
+++ b/net/ipv4/netfilter/nf_nat_core.c
@@ -35,9 +35,6 @@ static DEFINE_SPINLOCK(nf_nat_lock);
35 35
36static struct nf_conntrack_l3proto *l3proto __read_mostly; 36static struct nf_conntrack_l3proto *l3proto __read_mostly;
37 37
38/* Calculated at init based on memory size */
39static unsigned int nf_nat_htable_size __read_mostly;
40
41#define MAX_IP_NAT_PROTO 256 38#define MAX_IP_NAT_PROTO 256
42static const struct nf_nat_protocol *nf_nat_protos[MAX_IP_NAT_PROTO] 39static const struct nf_nat_protocol *nf_nat_protos[MAX_IP_NAT_PROTO]
43 __read_mostly; 40 __read_mostly;
@@ -72,7 +69,7 @@ EXPORT_SYMBOL_GPL(nf_nat_proto_put);
72 69
73/* We keep an extra hash for each conntrack, for fast searching. */ 70/* We keep an extra hash for each conntrack, for fast searching. */
74static inline unsigned int 71static inline unsigned int
75hash_by_src(const struct nf_conntrack_tuple *tuple) 72hash_by_src(const struct net *net, const struct nf_conntrack_tuple *tuple)
76{ 73{
77 unsigned int hash; 74 unsigned int hash;
78 75
@@ -80,7 +77,7 @@ hash_by_src(const struct nf_conntrack_tuple *tuple)
80 hash = jhash_3words((__force u32)tuple->src.u3.ip, 77 hash = jhash_3words((__force u32)tuple->src.u3.ip,
81 (__force u32)tuple->src.u.all, 78 (__force u32)tuple->src.u.all,
82 tuple->dst.protonum, 0); 79 tuple->dst.protonum, 0);
83 return ((u64)hash * nf_nat_htable_size) >> 32; 80 return ((u64)hash * net->ipv4.nat_htable_size) >> 32;
84} 81}
85 82
86/* Is this tuple already taken? (not by us) */ 83/* Is this tuple already taken? (not by us) */
@@ -147,7 +144,7 @@ find_appropriate_src(struct net *net,
147 struct nf_conntrack_tuple *result, 144 struct nf_conntrack_tuple *result,
148 const struct nf_nat_range *range) 145 const struct nf_nat_range *range)
149{ 146{
150 unsigned int h = hash_by_src(tuple); 147 unsigned int h = hash_by_src(net, tuple);
151 const struct nf_conn_nat *nat; 148 const struct nf_conn_nat *nat;
152 const struct nf_conn *ct; 149 const struct nf_conn *ct;
153 const struct hlist_node *n; 150 const struct hlist_node *n;
@@ -330,7 +327,7 @@ nf_nat_setup_info(struct nf_conn *ct,
330 if (have_to_hash) { 327 if (have_to_hash) {
331 unsigned int srchash; 328 unsigned int srchash;
332 329
333 srchash = hash_by_src(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple); 330 srchash = hash_by_src(net, &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
334 spin_lock_bh(&nf_nat_lock); 331 spin_lock_bh(&nf_nat_lock);
335 /* nf_conntrack_alter_reply might re-allocate exntension aera */ 332 /* nf_conntrack_alter_reply might re-allocate exntension aera */
336 nat = nfct_nat(ct); 333 nat = nfct_nat(ct);
@@ -679,8 +676,10 @@ nfnetlink_parse_nat_setup(struct nf_conn *ct,
679 676
680static int __net_init nf_nat_net_init(struct net *net) 677static int __net_init nf_nat_net_init(struct net *net)
681{ 678{
682 net->ipv4.nat_bysource = nf_ct_alloc_hashtable(&nf_nat_htable_size, 679 /* Leave them the same for the moment. */
683 &net->ipv4.nat_vmalloced, 0); 680 net->ipv4.nat_htable_size = net->ct.htable_size;
681 net->ipv4.nat_bysource = nf_ct_alloc_hashtable(&net->ipv4.nat_htable_size,
682 &net->ipv4.nat_vmalloced, 0);
684 if (!net->ipv4.nat_bysource) 683 if (!net->ipv4.nat_bysource)
685 return -ENOMEM; 684 return -ENOMEM;
686 return 0; 685 return 0;
@@ -703,7 +702,7 @@ static void __net_exit nf_nat_net_exit(struct net *net)
703 nf_ct_iterate_cleanup(net, &clean_nat, NULL); 702 nf_ct_iterate_cleanup(net, &clean_nat, NULL);
704 synchronize_rcu(); 703 synchronize_rcu();
705 nf_ct_free_hashtable(net->ipv4.nat_bysource, net->ipv4.nat_vmalloced, 704 nf_ct_free_hashtable(net->ipv4.nat_bysource, net->ipv4.nat_vmalloced,
706 nf_nat_htable_size); 705 net->ipv4.nat_htable_size);
707} 706}
708 707
709static struct pernet_operations nf_nat_net_ops = { 708static struct pernet_operations nf_nat_net_ops = {
@@ -724,9 +723,6 @@ static int __init nf_nat_init(void)
724 return ret; 723 return ret;
725 } 724 }
726 725
727 /* Leave them the same for the moment. */
728 nf_nat_htable_size = nf_conntrack_htable_size;
729
730 ret = register_pernet_subsys(&nf_nat_net_ops); 726 ret = register_pernet_subsys(&nf_nat_net_ops);
731 if (ret < 0) 727 if (ret < 0)
732 goto cleanup_extend; 728 goto cleanup_extend;
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index e446496f564f..d62b05d33384 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -586,7 +586,9 @@ static void __net_exit ip_rt_do_proc_exit(struct net *net)
586{ 586{
587 remove_proc_entry("rt_cache", net->proc_net_stat); 587 remove_proc_entry("rt_cache", net->proc_net_stat);
588 remove_proc_entry("rt_cache", net->proc_net); 588 remove_proc_entry("rt_cache", net->proc_net);
589#ifdef CONFIG_NET_CLS_ROUTE
589 remove_proc_entry("rt_acct", net->proc_net); 590 remove_proc_entry("rt_acct", net->proc_net);
591#endif
590} 592}
591 593
592static struct pernet_operations ip_rt_proc_ops __net_initdata = { 594static struct pernet_operations ip_rt_proc_ops __net_initdata = {
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 28e029632493..3fddc69ccccc 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -5783,11 +5783,9 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
5783 5783
5784 /* tcp_ack considers this ACK as duplicate 5784 /* tcp_ack considers this ACK as duplicate
5785 * and does not calculate rtt. 5785 * and does not calculate rtt.
5786 * Fix it at least with timestamps. 5786 * Force it here.
5787 */ 5787 */
5788 if (tp->rx_opt.saw_tstamp && 5788 tcp_ack_update_rtt(sk, 0, 0);
5789 tp->rx_opt.rcv_tsecr && !tp->srtt)
5790 tcp_ack_saw_tstamp(sk, 0);
5791 5789
5792 if (tp->rx_opt.tstamp_ok) 5790 if (tp->rx_opt.tstamp_ok)
5793 tp->advmss -= TCPOLEN_TSTAMP_ALIGNED; 5791 tp->advmss -= TCPOLEN_TSTAMP_ALIGNED;
diff --git a/net/ipv4/tcp_probe.c b/net/ipv4/tcp_probe.c
index bb110c5ce1d2..9bc805df95d2 100644
--- a/net/ipv4/tcp_probe.c
+++ b/net/ipv4/tcp_probe.c
@@ -39,9 +39,9 @@ static int port __read_mostly = 0;
39MODULE_PARM_DESC(port, "Port to match (0=all)"); 39MODULE_PARM_DESC(port, "Port to match (0=all)");
40module_param(port, int, 0); 40module_param(port, int, 0);
41 41
42static int bufsize __read_mostly = 4096; 42static unsigned int bufsize __read_mostly = 4096;
43MODULE_PARM_DESC(bufsize, "Log buffer size in packets (4096)"); 43MODULE_PARM_DESC(bufsize, "Log buffer size in packets (4096)");
44module_param(bufsize, int, 0); 44module_param(bufsize, uint, 0);
45 45
46static int full __read_mostly; 46static int full __read_mostly;
47MODULE_PARM_DESC(full, "Full log (1=every ack packet received, 0=only cwnd changes)"); 47MODULE_PARM_DESC(full, "Full log (1=every ack packet received, 0=only cwnd changes)");
@@ -75,12 +75,12 @@ static struct {
75 75
76static inline int tcp_probe_used(void) 76static inline int tcp_probe_used(void)
77{ 77{
78 return (tcp_probe.head - tcp_probe.tail) % bufsize; 78 return (tcp_probe.head - tcp_probe.tail) & (bufsize - 1);
79} 79}
80 80
81static inline int tcp_probe_avail(void) 81static inline int tcp_probe_avail(void)
82{ 82{
83 return bufsize - tcp_probe_used(); 83 return bufsize - tcp_probe_used() - 1;
84} 84}
85 85
86/* 86/*
@@ -116,7 +116,7 @@ static int jtcp_rcv_established(struct sock *sk, struct sk_buff *skb,
116 p->ssthresh = tcp_current_ssthresh(sk); 116 p->ssthresh = tcp_current_ssthresh(sk);
117 p->srtt = tp->srtt >> 3; 117 p->srtt = tp->srtt >> 3;
118 118
119 tcp_probe.head = (tcp_probe.head + 1) % bufsize; 119 tcp_probe.head = (tcp_probe.head + 1) & (bufsize - 1);
120 } 120 }
121 tcp_probe.lastcwnd = tp->snd_cwnd; 121 tcp_probe.lastcwnd = tp->snd_cwnd;
122 spin_unlock(&tcp_probe.lock); 122 spin_unlock(&tcp_probe.lock);
@@ -149,7 +149,7 @@ static int tcpprobe_open(struct inode * inode, struct file * file)
149static int tcpprobe_sprint(char *tbuf, int n) 149static int tcpprobe_sprint(char *tbuf, int n)
150{ 150{
151 const struct tcp_log *p 151 const struct tcp_log *p
152 = tcp_probe.log + tcp_probe.tail % bufsize; 152 = tcp_probe.log + tcp_probe.tail;
153 struct timespec tv 153 struct timespec tv
154 = ktime_to_timespec(ktime_sub(p->tstamp, tcp_probe.start)); 154 = ktime_to_timespec(ktime_sub(p->tstamp, tcp_probe.start));
155 155
@@ -192,7 +192,7 @@ static ssize_t tcpprobe_read(struct file *file, char __user *buf,
192 width = tcpprobe_sprint(tbuf, sizeof(tbuf)); 192 width = tcpprobe_sprint(tbuf, sizeof(tbuf));
193 193
194 if (cnt + width < len) 194 if (cnt + width < len)
195 tcp_probe.tail = (tcp_probe.tail + 1) % bufsize; 195 tcp_probe.tail = (tcp_probe.tail + 1) & (bufsize - 1);
196 196
197 spin_unlock_bh(&tcp_probe.lock); 197 spin_unlock_bh(&tcp_probe.lock);
198 198
@@ -222,9 +222,10 @@ static __init int tcpprobe_init(void)
222 init_waitqueue_head(&tcp_probe.wait); 222 init_waitqueue_head(&tcp_probe.wait);
223 spin_lock_init(&tcp_probe.lock); 223 spin_lock_init(&tcp_probe.lock);
224 224
225 if (bufsize < 0) 225 if (bufsize == 0)
226 return -EINVAL; 226 return -EINVAL;
227 227
228 bufsize = roundup_pow_of_two(bufsize);
228 tcp_probe.log = kcalloc(bufsize, sizeof(struct tcp_log), GFP_KERNEL); 229 tcp_probe.log = kcalloc(bufsize, sizeof(struct tcp_log), GFP_KERNEL);
229 if (!tcp_probe.log) 230 if (!tcp_probe.log)
230 goto err0; 231 goto err0;
@@ -236,7 +237,7 @@ static __init int tcpprobe_init(void)
236 if (ret) 237 if (ret)
237 goto err1; 238 goto err1;
238 239
239 pr_info("TCP probe registered (port=%d)\n", port); 240 pr_info("TCP probe registered (port=%d) bufsize=%u\n", port, bufsize);
240 return 0; 241 return 0;
241 err1: 242 err1:
242 proc_net_remove(&init_net, procname); 243 proc_net_remove(&init_net, procname);
diff --git a/net/ipv4/xfrm4_policy.c b/net/ipv4/xfrm4_policy.c
index 8c08a28d8f83..67107d63c1cd 100644
--- a/net/ipv4/xfrm4_policy.c
+++ b/net/ipv4/xfrm4_policy.c
@@ -15,7 +15,6 @@
15#include <net/xfrm.h> 15#include <net/xfrm.h>
16#include <net/ip.h> 16#include <net/ip.h>
17 17
18static struct dst_ops xfrm4_dst_ops;
19static struct xfrm_policy_afinfo xfrm4_policy_afinfo; 18static struct xfrm_policy_afinfo xfrm4_policy_afinfo;
20 19
21static struct dst_entry *xfrm4_dst_lookup(struct net *net, int tos, 20static struct dst_entry *xfrm4_dst_lookup(struct net *net, int tos,
@@ -190,8 +189,10 @@ _decode_session4(struct sk_buff *skb, struct flowi *fl, int reverse)
190 189
191static inline int xfrm4_garbage_collect(struct dst_ops *ops) 190static inline int xfrm4_garbage_collect(struct dst_ops *ops)
192{ 191{
193 xfrm4_policy_afinfo.garbage_collect(&init_net); 192 struct net *net = container_of(ops, struct net, xfrm.xfrm4_dst_ops);
194 return (atomic_read(&xfrm4_dst_ops.entries) > xfrm4_dst_ops.gc_thresh*2); 193
194 xfrm4_policy_afinfo.garbage_collect(net);
195 return (atomic_read(&ops->entries) > ops->gc_thresh * 2);
195} 196}
196 197
197static void xfrm4_update_pmtu(struct dst_entry *dst, u32 mtu) 198static void xfrm4_update_pmtu(struct dst_entry *dst, u32 mtu)
@@ -268,7 +269,7 @@ static struct xfrm_policy_afinfo xfrm4_policy_afinfo = {
268static struct ctl_table xfrm4_policy_table[] = { 269static struct ctl_table xfrm4_policy_table[] = {
269 { 270 {
270 .procname = "xfrm4_gc_thresh", 271 .procname = "xfrm4_gc_thresh",
271 .data = &xfrm4_dst_ops.gc_thresh, 272 .data = &init_net.xfrm.xfrm4_dst_ops.gc_thresh,
272 .maxlen = sizeof(int), 273 .maxlen = sizeof(int),
273 .mode = 0644, 274 .mode = 0644,
274 .proc_handler = proc_dointvec, 275 .proc_handler = proc_dointvec,
@@ -295,8 +296,6 @@ static void __exit xfrm4_policy_fini(void)
295 296
296void __init xfrm4_init(int rt_max_size) 297void __init xfrm4_init(int rt_max_size)
297{ 298{
298 xfrm4_state_init();
299 xfrm4_policy_init();
300 /* 299 /*
301 * Select a default value for the gc_thresh based on the main route 300 * Select a default value for the gc_thresh based on the main route
302 * table hash size. It seems to me the worst case scenario is when 301 * table hash size. It seems to me the worst case scenario is when
@@ -308,6 +307,9 @@ void __init xfrm4_init(int rt_max_size)
308 * and start cleaning when were 1/2 full 307 * and start cleaning when were 1/2 full
309 */ 308 */
310 xfrm4_dst_ops.gc_thresh = rt_max_size/2; 309 xfrm4_dst_ops.gc_thresh = rt_max_size/2;
310
311 xfrm4_state_init();
312 xfrm4_policy_init();
311#ifdef CONFIG_SYSCTL 313#ifdef CONFIG_SYSCTL
312 sysctl_hdr = register_net_sysctl_table(&init_net, net_ipv4_ctl_path, 314 sysctl_hdr = register_net_sysctl_table(&init_net, net_ipv4_ctl_path,
313 xfrm4_policy_table); 315 xfrm4_policy_table);
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index de7a194a64ab..143791da062c 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -502,8 +502,11 @@ static int addrconf_fixup_forwarding(struct ctl_table *table, int *p, int old)
502 if (p == &net->ipv6.devconf_dflt->forwarding) 502 if (p == &net->ipv6.devconf_dflt->forwarding)
503 return 0; 503 return 0;
504 504
505 if (!rtnl_trylock()) 505 if (!rtnl_trylock()) {
506 /* Restore the original values before restarting */
507 *p = old;
506 return restart_syscall(); 508 return restart_syscall();
509 }
507 510
508 if (p == &net->ipv6.devconf_all->forwarding) { 511 if (p == &net->ipv6.devconf_all->forwarding) {
509 __s32 newf = net->ipv6.devconf_all->forwarding; 512 __s32 newf = net->ipv6.devconf_all->forwarding;
@@ -4028,12 +4031,15 @@ int addrconf_sysctl_forward(ctl_table *ctl, int write,
4028{ 4031{
4029 int *valp = ctl->data; 4032 int *valp = ctl->data;
4030 int val = *valp; 4033 int val = *valp;
4034 loff_t pos = *ppos;
4031 int ret; 4035 int ret;
4032 4036
4033 ret = proc_dointvec(ctl, write, buffer, lenp, ppos); 4037 ret = proc_dointvec(ctl, write, buffer, lenp, ppos);
4034 4038
4035 if (write) 4039 if (write)
4036 ret = addrconf_fixup_forwarding(ctl, valp, val); 4040 ret = addrconf_fixup_forwarding(ctl, valp, val);
4041 if (ret)
4042 *ppos = pos;
4037 return ret; 4043 return ret;
4038} 4044}
4039 4045
@@ -4075,8 +4081,11 @@ static int addrconf_disable_ipv6(struct ctl_table *table, int *p, int old)
4075 if (p == &net->ipv6.devconf_dflt->disable_ipv6) 4081 if (p == &net->ipv6.devconf_dflt->disable_ipv6)
4076 return 0; 4082 return 0;
4077 4083
4078 if (!rtnl_trylock()) 4084 if (!rtnl_trylock()) {
4085 /* Restore the original values before restarting */
4086 *p = old;
4079 return restart_syscall(); 4087 return restart_syscall();
4088 }
4080 4089
4081 if (p == &net->ipv6.devconf_all->disable_ipv6) { 4090 if (p == &net->ipv6.devconf_all->disable_ipv6) {
4082 __s32 newf = net->ipv6.devconf_all->disable_ipv6; 4091 __s32 newf = net->ipv6.devconf_all->disable_ipv6;
@@ -4095,12 +4104,15 @@ int addrconf_sysctl_disable(ctl_table *ctl, int write,
4095{ 4104{
4096 int *valp = ctl->data; 4105 int *valp = ctl->data;
4097 int val = *valp; 4106 int val = *valp;
4107 loff_t pos = *ppos;
4098 int ret; 4108 int ret;
4099 4109
4100 ret = proc_dointvec(ctl, write, buffer, lenp, ppos); 4110 ret = proc_dointvec(ctl, write, buffer, lenp, ppos);
4101 4111
4102 if (write) 4112 if (write)
4103 ret = addrconf_disable_ipv6(ctl, valp, val); 4113 ret = addrconf_disable_ipv6(ctl, valp, val);
4114 if (ret)
4115 *ppos = pos;
4104 return ret; 4116 return ret;
4105} 4117}
4106 4118
diff --git a/net/ipv6/exthdrs.c b/net/ipv6/exthdrs.c
index df159fffe4bc..4bac362b1335 100644
--- a/net/ipv6/exthdrs.c
+++ b/net/ipv6/exthdrs.c
@@ -559,6 +559,11 @@ static inline struct inet6_dev *ipv6_skb_idev(struct sk_buff *skb)
559 return skb_dst(skb) ? ip6_dst_idev(skb_dst(skb)) : __in6_dev_get(skb->dev); 559 return skb_dst(skb) ? ip6_dst_idev(skb_dst(skb)) : __in6_dev_get(skb->dev);
560} 560}
561 561
562static inline struct net *ipv6_skb_net(struct sk_buff *skb)
563{
564 return skb_dst(skb) ? dev_net(skb_dst(skb)->dev) : dev_net(skb->dev);
565}
566
562/* Router Alert as of RFC 2711 */ 567/* Router Alert as of RFC 2711 */
563 568
564static int ipv6_hop_ra(struct sk_buff *skb, int optoff) 569static int ipv6_hop_ra(struct sk_buff *skb, int optoff)
@@ -580,8 +585,8 @@ static int ipv6_hop_ra(struct sk_buff *skb, int optoff)
580static int ipv6_hop_jumbo(struct sk_buff *skb, int optoff) 585static int ipv6_hop_jumbo(struct sk_buff *skb, int optoff)
581{ 586{
582 const unsigned char *nh = skb_network_header(skb); 587 const unsigned char *nh = skb_network_header(skb);
588 struct net *net = ipv6_skb_net(skb);
583 u32 pkt_len; 589 u32 pkt_len;
584 struct net *net = dev_net(skb_dst(skb)->dev);
585 590
586 if (nh[optoff + 1] != 4 || (optoff & 3) != 2) { 591 if (nh[optoff + 1] != 4 || (optoff & 3) != 2) {
587 LIMIT_NETDEBUG(KERN_DEBUG "ipv6_hop_jumbo: wrong jumbo opt length/alignment %d\n", 592 LIMIT_NETDEBUG(KERN_DEBUG "ipv6_hop_jumbo: wrong jumbo opt length/alignment %d\n",
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index cd48801a8d6f..eb6d09728633 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -121,10 +121,9 @@ static int ip6_output2(struct sk_buff *skb)
121 skb->dev = dev; 121 skb->dev = dev;
122 122
123 if (ipv6_addr_is_multicast(&ipv6_hdr(skb)->daddr)) { 123 if (ipv6_addr_is_multicast(&ipv6_hdr(skb)->daddr)) {
124 struct ipv6_pinfo* np = skb->sk ? inet6_sk(skb->sk) : NULL;
125 struct inet6_dev *idev = ip6_dst_idev(skb_dst(skb)); 124 struct inet6_dev *idev = ip6_dst_idev(skb_dst(skb));
126 125
127 if (!(dev->flags & IFF_LOOPBACK) && (!np || np->mc_loop) && 126 if (!(dev->flags & IFF_LOOPBACK) && sk_mc_loop(skb->sk) &&
128 ((mroute6_socket(dev_net(dev)) && 127 ((mroute6_socket(dev_net(dev)) &&
129 !(IP6CB(skb)->flags & IP6SKB_FORWARDED)) || 128 !(IP6CB(skb)->flags & IP6SKB_FORWARDED)) ||
130 ipv6_chk_mcast_addr(dev, &ipv6_hdr(skb)->daddr, 129 ipv6_chk_mcast_addr(dev, &ipv6_hdr(skb)->daddr,
diff --git a/net/ipv6/ipcomp6.c b/net/ipv6/ipcomp6.c
index 2f2a5ca2c878..002e6eef9120 100644
--- a/net/ipv6/ipcomp6.c
+++ b/net/ipv6/ipcomp6.c
@@ -154,16 +154,12 @@ static int ipcomp6_init_state(struct xfrm_state *x)
154 if (x->props.mode == XFRM_MODE_TUNNEL) { 154 if (x->props.mode == XFRM_MODE_TUNNEL) {
155 err = ipcomp6_tunnel_attach(x); 155 err = ipcomp6_tunnel_attach(x);
156 if (err) 156 if (err)
157 goto error_tunnel; 157 goto out;
158 } 158 }
159 159
160 err = 0; 160 err = 0;
161out: 161out:
162 return err; 162 return err;
163error_tunnel:
164 ipcomp_destroy(x);
165
166 goto out;
167} 163}
168 164
169static const struct xfrm_type ipcomp6_type = 165static const struct xfrm_type ipcomp6_type =
diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c
index 480d7f8c9802..8a7e0f52e177 100644
--- a/net/ipv6/netfilter/ip6_tables.c
+++ b/net/ipv6/netfilter/ip6_tables.c
@@ -1164,10 +1164,10 @@ static int get_info(struct net *net, void __user *user, int *len, int compat)
1164 if (t && !IS_ERR(t)) { 1164 if (t && !IS_ERR(t)) {
1165 struct ip6t_getinfo info; 1165 struct ip6t_getinfo info;
1166 const struct xt_table_info *private = t->private; 1166 const struct xt_table_info *private = t->private;
1167
1168#ifdef CONFIG_COMPAT 1167#ifdef CONFIG_COMPAT
1168 struct xt_table_info tmp;
1169
1169 if (compat) { 1170 if (compat) {
1170 struct xt_table_info tmp;
1171 ret = compat_table_info(private, &tmp); 1171 ret = compat_table_info(private, &tmp);
1172 xt_compat_flush_offsets(AF_INET6); 1172 xt_compat_flush_offsets(AF_INET6);
1173 private = &tmp; 1173 private = &tmp;
diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c
index 312c20adc83f..624a54832a7c 100644
--- a/net/ipv6/netfilter/nf_conntrack_reasm.c
+++ b/net/ipv6/netfilter/nf_conntrack_reasm.c
@@ -63,6 +63,7 @@ struct nf_ct_frag6_queue
63 struct inet_frag_queue q; 63 struct inet_frag_queue q;
64 64
65 __be32 id; /* fragment id */ 65 __be32 id; /* fragment id */
66 u32 user;
66 struct in6_addr saddr; 67 struct in6_addr saddr;
67 struct in6_addr daddr; 68 struct in6_addr daddr;
68 69
diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c
index 7254e3f899a7..dbdc696f5fc5 100644
--- a/net/ipv6/xfrm6_policy.c
+++ b/net/ipv6/xfrm6_policy.c
@@ -24,7 +24,6 @@
24#include <net/mip6.h> 24#include <net/mip6.h>
25#endif 25#endif
26 26
27static struct dst_ops xfrm6_dst_ops;
28static struct xfrm_policy_afinfo xfrm6_policy_afinfo; 27static struct xfrm_policy_afinfo xfrm6_policy_afinfo;
29 28
30static struct dst_entry *xfrm6_dst_lookup(struct net *net, int tos, 29static struct dst_entry *xfrm6_dst_lookup(struct net *net, int tos,
@@ -224,8 +223,10 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse)
224 223
225static inline int xfrm6_garbage_collect(struct dst_ops *ops) 224static inline int xfrm6_garbage_collect(struct dst_ops *ops)
226{ 225{
227 xfrm6_policy_afinfo.garbage_collect(&init_net); 226 struct net *net = container_of(ops, struct net, xfrm.xfrm6_dst_ops);
228 return (atomic_read(&xfrm6_dst_ops.entries) > xfrm6_dst_ops.gc_thresh*2); 227
228 xfrm6_policy_afinfo.garbage_collect(net);
229 return (atomic_read(&ops->entries) > ops->gc_thresh * 2);
229} 230}
230 231
231static void xfrm6_update_pmtu(struct dst_entry *dst, u32 mtu) 232static void xfrm6_update_pmtu(struct dst_entry *dst, u32 mtu)
@@ -310,7 +311,7 @@ static void xfrm6_policy_fini(void)
310static struct ctl_table xfrm6_policy_table[] = { 311static struct ctl_table xfrm6_policy_table[] = {
311 { 312 {
312 .procname = "xfrm6_gc_thresh", 313 .procname = "xfrm6_gc_thresh",
313 .data = &xfrm6_dst_ops.gc_thresh, 314 .data = &init_net.xfrm.xfrm6_dst_ops.gc_thresh,
314 .maxlen = sizeof(int), 315 .maxlen = sizeof(int),
315 .mode = 0644, 316 .mode = 0644,
316 .proc_handler = proc_dointvec, 317 .proc_handler = proc_dointvec,
@@ -326,13 +327,6 @@ int __init xfrm6_init(void)
326 int ret; 327 int ret;
327 unsigned int gc_thresh; 328 unsigned int gc_thresh;
328 329
329 ret = xfrm6_policy_init();
330 if (ret)
331 goto out;
332
333 ret = xfrm6_state_init();
334 if (ret)
335 goto out_policy;
336 /* 330 /*
337 * We need a good default value for the xfrm6 gc threshold. 331 * We need a good default value for the xfrm6 gc threshold.
338 * In ipv4 we set it to the route hash table size * 8, which 332 * In ipv4 we set it to the route hash table size * 8, which
@@ -346,6 +340,15 @@ int __init xfrm6_init(void)
346 */ 340 */
347 gc_thresh = FIB6_TABLE_HASHSZ * 8; 341 gc_thresh = FIB6_TABLE_HASHSZ * 8;
348 xfrm6_dst_ops.gc_thresh = (gc_thresh < 1024) ? 1024 : gc_thresh; 342 xfrm6_dst_ops.gc_thresh = (gc_thresh < 1024) ? 1024 : gc_thresh;
343
344 ret = xfrm6_policy_init();
345 if (ret)
346 goto out;
347
348 ret = xfrm6_state_init();
349 if (ret)
350 goto out_policy;
351
349#ifdef CONFIG_SYSCTL 352#ifdef CONFIG_SYSCTL
350 sysctl_hdr = register_net_sysctl_table(&init_net, net_ipv6_ctl_path, 353 sysctl_hdr = register_net_sysctl_table(&init_net, net_ipv6_ctl_path,
351 xfrm6_policy_table); 354 xfrm6_policy_table);
diff --git a/net/irda/irnet/irnet_ppp.c b/net/irda/irnet/irnet_ppp.c
index 156020d138b5..6b3602de359a 100644
--- a/net/irda/irnet/irnet_ppp.c
+++ b/net/irda/irnet/irnet_ppp.c
@@ -698,15 +698,18 @@ dev_irnet_ioctl(
698 698
699 /* Query PPP channel and unit number */ 699 /* Query PPP channel and unit number */
700 case PPPIOCGCHAN: 700 case PPPIOCGCHAN:
701 lock_kernel();
701 if(ap->ppp_open && !put_user(ppp_channel_index(&ap->chan), 702 if(ap->ppp_open && !put_user(ppp_channel_index(&ap->chan),
702 (int __user *)argp)) 703 (int __user *)argp))
703 err = 0; 704 err = 0;
705 unlock_kernel();
704 break; 706 break;
705 case PPPIOCGUNIT: 707 case PPPIOCGUNIT:
706 lock_kernel(); 708 lock_kernel();
707 if(ap->ppp_open && !put_user(ppp_unit_number(&ap->chan), 709 if(ap->ppp_open && !put_user(ppp_unit_number(&ap->chan),
708 (int __user *)argp)) 710 (int __user *)argp))
709 err = 0; 711 err = 0;
712 unlock_kernel();
710 break; 713 break;
711 714
712 /* All these ioctls can be passed both directly and from ppp_generic, 715 /* All these ioctls can be passed both directly and from ppp_generic,
diff --git a/net/key/af_key.c b/net/key/af_key.c
index 76fa6fef6473..539f43bc97db 100644
--- a/net/key/af_key.c
+++ b/net/key/af_key.c
@@ -3794,9 +3794,9 @@ static struct pernet_operations pfkey_net_ops = {
3794 3794
3795static void __exit ipsec_pfkey_exit(void) 3795static void __exit ipsec_pfkey_exit(void)
3796{ 3796{
3797 unregister_pernet_subsys(&pfkey_net_ops);
3798 xfrm_unregister_km(&pfkeyv2_mgr); 3797 xfrm_unregister_km(&pfkeyv2_mgr);
3799 sock_unregister(PF_KEY); 3798 sock_unregister(PF_KEY);
3799 unregister_pernet_subsys(&pfkey_net_ops);
3800 proto_unregister(&key_proto); 3800 proto_unregister(&key_proto);
3801} 3801}
3802 3802
@@ -3807,21 +3807,22 @@ static int __init ipsec_pfkey_init(void)
3807 if (err != 0) 3807 if (err != 0)
3808 goto out; 3808 goto out;
3809 3809
3810 err = sock_register(&pfkey_family_ops); 3810 err = register_pernet_subsys(&pfkey_net_ops);
3811 if (err != 0) 3811 if (err != 0)
3812 goto out_unregister_key_proto; 3812 goto out_unregister_key_proto;
3813 err = sock_register(&pfkey_family_ops);
3814 if (err != 0)
3815 goto out_unregister_pernet;
3813 err = xfrm_register_km(&pfkeyv2_mgr); 3816 err = xfrm_register_km(&pfkeyv2_mgr);
3814 if (err != 0) 3817 if (err != 0)
3815 goto out_sock_unregister; 3818 goto out_sock_unregister;
3816 err = register_pernet_subsys(&pfkey_net_ops);
3817 if (err != 0)
3818 goto out_xfrm_unregister_km;
3819out: 3819out:
3820 return err; 3820 return err;
3821out_xfrm_unregister_km: 3821
3822 xfrm_unregister_km(&pfkeyv2_mgr);
3823out_sock_unregister: 3822out_sock_unregister:
3824 sock_unregister(PF_KEY); 3823 sock_unregister(PF_KEY);
3824out_unregister_pernet:
3825 unregister_pernet_subsys(&pfkey_net_ops);
3825out_unregister_key_proto: 3826out_unregister_key_proto:
3826 proto_unregister(&key_proto); 3827 proto_unregister(&key_proto);
3827 goto out; 3828 goto out;
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index 6dc3579c0ac5..9ae1a4760b58 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -1331,6 +1331,9 @@ static int ieee80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *dev,
1331 struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr); 1331 struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr);
1332 struct ieee80211_conf *conf = &local->hw.conf; 1332 struct ieee80211_conf *conf = &local->hw.conf;
1333 1333
1334 if (sdata->vif.type != NL80211_IFTYPE_STATION)
1335 return -EOPNOTSUPP;
1336
1334 if (!(local->hw.flags & IEEE80211_HW_SUPPORTS_PS)) 1337 if (!(local->hw.flags & IEEE80211_HW_SUPPORTS_PS))
1335 return -EOPNOTSUPP; 1338 return -EOPNOTSUPP;
1336 1339
diff --git a/net/mac80211/driver-trace.h b/net/mac80211/driver-trace.h
index ee94ea0c67e9..da8497ef7063 100644
--- a/net/mac80211/driver-trace.h
+++ b/net/mac80211/driver-trace.h
@@ -680,7 +680,7 @@ TRACE_EVENT(drv_ampdu_action,
680 __entry->ret = ret; 680 __entry->ret = ret;
681 __entry->action = action; 681 __entry->action = action;
682 __entry->tid = tid; 682 __entry->tid = tid;
683 __entry->ssn = *ssn; 683 __entry->ssn = ssn ? *ssn : 0;
684 ), 684 ),
685 685
686 TP_printk( 686 TP_printk(
diff --git a/net/mac80211/ht.c b/net/mac80211/ht.c
index 3787455fb696..d7dcee680728 100644
--- a/net/mac80211/ht.c
+++ b/net/mac80211/ht.c
@@ -34,9 +34,28 @@ void ieee80211_ht_cap_ie_to_sta_ht_cap(struct ieee80211_supported_band *sband,
34 34
35 ht_cap->ht_supported = true; 35 ht_cap->ht_supported = true;
36 36
37 ht_cap->cap = le16_to_cpu(ht_cap_ie->cap_info) & sband->ht_cap.cap; 37 /*
38 ht_cap->cap &= ~IEEE80211_HT_CAP_SM_PS; 38 * The bits listed in this expression should be
39 ht_cap->cap |= sband->ht_cap.cap & IEEE80211_HT_CAP_SM_PS; 39 * the same for the peer and us, if the station
40 * advertises more then we can't use those thus
41 * we mask them out.
42 */
43 ht_cap->cap = le16_to_cpu(ht_cap_ie->cap_info) &
44 (sband->ht_cap.cap |
45 ~(IEEE80211_HT_CAP_LDPC_CODING |
46 IEEE80211_HT_CAP_SUP_WIDTH_20_40 |
47 IEEE80211_HT_CAP_GRN_FLD |
48 IEEE80211_HT_CAP_SGI_20 |
49 IEEE80211_HT_CAP_SGI_40 |
50 IEEE80211_HT_CAP_DSSSCCK40));
51 /*
52 * The STBC bits are asymmetric -- if we don't have
53 * TX then mask out the peer's RX and vice versa.
54 */
55 if (!(sband->ht_cap.cap & IEEE80211_HT_CAP_TX_STBC))
56 ht_cap->cap &= ~IEEE80211_HT_CAP_RX_STBC;
57 if (!(sband->ht_cap.cap & IEEE80211_HT_CAP_RX_STBC))
58 ht_cap->cap &= ~IEEE80211_HT_CAP_TX_STBC;
40 59
41 ampdu_info = ht_cap_ie->ampdu_params_info; 60 ampdu_info = ht_cap_ie->ampdu_params_info;
42 ht_cap->ampdu_factor = 61 ht_cap->ampdu_factor =
diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
index 10d13856f86c..22f0c2aa7a89 100644
--- a/net/mac80211/ibss.c
+++ b/net/mac80211/ibss.c
@@ -382,6 +382,7 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata,
382struct sta_info *ieee80211_ibss_add_sta(struct ieee80211_sub_if_data *sdata, 382struct sta_info *ieee80211_ibss_add_sta(struct ieee80211_sub_if_data *sdata,
383 u8 *bssid,u8 *addr, u32 supp_rates) 383 u8 *bssid,u8 *addr, u32 supp_rates)
384{ 384{
385 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
385 struct ieee80211_local *local = sdata->local; 386 struct ieee80211_local *local = sdata->local;
386 struct sta_info *sta; 387 struct sta_info *sta;
387 int band = local->hw.conf.channel->band; 388 int band = local->hw.conf.channel->band;
@@ -397,6 +398,9 @@ struct sta_info *ieee80211_ibss_add_sta(struct ieee80211_sub_if_data *sdata,
397 return NULL; 398 return NULL;
398 } 399 }
399 400
401 if (ifibss->state == IEEE80211_IBSS_MLME_SEARCH)
402 return NULL;
403
400 if (compare_ether_addr(bssid, sdata->u.ibss.bssid)) 404 if (compare_ether_addr(bssid, sdata->u.ibss.bssid))
401 return NULL; 405 return NULL;
402 406
@@ -643,7 +647,7 @@ static void ieee80211_rx_mgmt_probe_req(struct ieee80211_sub_if_data *sdata,
643 } 647 }
644 if (pos[1] != 0 && 648 if (pos[1] != 0 &&
645 (pos[1] != ifibss->ssid_len || 649 (pos[1] != ifibss->ssid_len ||
646 !memcmp(pos + 2, ifibss->ssid, ifibss->ssid_len))) { 650 memcmp(pos + 2, ifibss->ssid, ifibss->ssid_len))) {
647 /* Ignore ProbeReq for foreign SSID */ 651 /* Ignore ProbeReq for foreign SSID */
648 return; 652 return;
649 } 653 }
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index 80c16f6e2af6..32abae3ce32a 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -15,12 +15,14 @@
15#include <linux/netdevice.h> 15#include <linux/netdevice.h>
16#include <linux/rtnetlink.h> 16#include <linux/rtnetlink.h>
17#include <net/mac80211.h> 17#include <net/mac80211.h>
18#include <net/ieee80211_radiotap.h>
18#include "ieee80211_i.h" 19#include "ieee80211_i.h"
19#include "sta_info.h" 20#include "sta_info.h"
20#include "debugfs_netdev.h" 21#include "debugfs_netdev.h"
21#include "mesh.h" 22#include "mesh.h"
22#include "led.h" 23#include "led.h"
23#include "driver-ops.h" 24#include "driver-ops.h"
25#include "wme.h"
24 26
25/** 27/**
26 * DOC: Interface list locking 28 * DOC: Interface list locking
@@ -314,7 +316,7 @@ static int ieee80211_open(struct net_device *dev)
314 if (sdata->vif.type == NL80211_IFTYPE_STATION) 316 if (sdata->vif.type == NL80211_IFTYPE_STATION)
315 ieee80211_queue_work(&local->hw, &sdata->u.mgd.work); 317 ieee80211_queue_work(&local->hw, &sdata->u.mgd.work);
316 318
317 netif_start_queue(dev); 319 netif_tx_start_all_queues(dev);
318 320
319 return 0; 321 return 0;
320 err_del_interface: 322 err_del_interface:
@@ -343,7 +345,7 @@ static int ieee80211_stop(struct net_device *dev)
343 /* 345 /*
344 * Stop TX on this interface first. 346 * Stop TX on this interface first.
345 */ 347 */
346 netif_stop_queue(dev); 348 netif_tx_stop_all_queues(dev);
347 349
348 /* 350 /*
349 * Now delete all active aggregation sessions. 351 * Now delete all active aggregation sessions.
@@ -644,6 +646,12 @@ static void ieee80211_teardown_sdata(struct net_device *dev)
644 WARN_ON(flushed); 646 WARN_ON(flushed);
645} 647}
646 648
649static u16 ieee80211_netdev_select_queue(struct net_device *dev,
650 struct sk_buff *skb)
651{
652 return ieee80211_select_queue(IEEE80211_DEV_TO_SUB_IF(dev), skb);
653}
654
647static const struct net_device_ops ieee80211_dataif_ops = { 655static const struct net_device_ops ieee80211_dataif_ops = {
648 .ndo_open = ieee80211_open, 656 .ndo_open = ieee80211_open,
649 .ndo_stop = ieee80211_stop, 657 .ndo_stop = ieee80211_stop,
@@ -652,8 +660,38 @@ static const struct net_device_ops ieee80211_dataif_ops = {
652 .ndo_set_multicast_list = ieee80211_set_multicast_list, 660 .ndo_set_multicast_list = ieee80211_set_multicast_list,
653 .ndo_change_mtu = ieee80211_change_mtu, 661 .ndo_change_mtu = ieee80211_change_mtu,
654 .ndo_set_mac_address = eth_mac_addr, 662 .ndo_set_mac_address = eth_mac_addr,
663 .ndo_select_queue = ieee80211_netdev_select_queue,
655}; 664};
656 665
666static u16 ieee80211_monitor_select_queue(struct net_device *dev,
667 struct sk_buff *skb)
668{
669 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
670 struct ieee80211_local *local = sdata->local;
671 struct ieee80211_hdr *hdr;
672 struct ieee80211_radiotap_header *rtap = (void *)skb->data;
673 u8 *p;
674
675 if (local->hw.queues < 4)
676 return 0;
677
678 if (skb->len < 4 ||
679 skb->len < le16_to_cpu(rtap->it_len) + 2 /* frame control */)
680 return 0; /* doesn't matter, frame will be dropped */
681
682 hdr = (void *)((u8 *)skb->data + le16_to_cpu(rtap->it_len));
683
684 if (!ieee80211_is_data_qos(hdr->frame_control)) {
685 skb->priority = 7;
686 return ieee802_1d_to_ac[skb->priority];
687 }
688
689 p = ieee80211_get_qos_ctl(hdr);
690 skb->priority = *p & IEEE80211_QOS_CTL_TAG1D_MASK;
691
692 return ieee80211_downgrade_queue(local, skb);
693}
694
657static const struct net_device_ops ieee80211_monitorif_ops = { 695static const struct net_device_ops ieee80211_monitorif_ops = {
658 .ndo_open = ieee80211_open, 696 .ndo_open = ieee80211_open,
659 .ndo_stop = ieee80211_stop, 697 .ndo_stop = ieee80211_stop,
@@ -662,6 +700,7 @@ static const struct net_device_ops ieee80211_monitorif_ops = {
662 .ndo_set_multicast_list = ieee80211_set_multicast_list, 700 .ndo_set_multicast_list = ieee80211_set_multicast_list,
663 .ndo_change_mtu = ieee80211_change_mtu, 701 .ndo_change_mtu = ieee80211_change_mtu,
664 .ndo_set_mac_address = eth_mac_addr, 702 .ndo_set_mac_address = eth_mac_addr,
703 .ndo_select_queue = ieee80211_monitor_select_queue,
665}; 704};
666 705
667static void ieee80211_if_setup(struct net_device *dev) 706static void ieee80211_if_setup(struct net_device *dev)
@@ -768,8 +807,8 @@ int ieee80211_if_add(struct ieee80211_local *local, const char *name,
768 807
769 ASSERT_RTNL(); 808 ASSERT_RTNL();
770 809
771 ndev = alloc_netdev(sizeof(*sdata) + local->hw.vif_data_size, 810 ndev = alloc_netdev_mq(sizeof(*sdata) + local->hw.vif_data_size,
772 name, ieee80211_if_setup); 811 name, ieee80211_if_setup, local->hw.queues);
773 if (!ndev) 812 if (!ndev)
774 return -ENOMEM; 813 return -ENOMEM;
775 dev_net_set(ndev, wiphy_net(local->hw.wiphy)); 814 dev_net_set(ndev, wiphy_net(local->hw.wiphy));
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index 8116d1a96a4a..0d2d94881f1f 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -515,6 +515,8 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
515 * and we need some headroom for passing the frame to monitor 515 * and we need some headroom for passing the frame to monitor
516 * interfaces, but never both at the same time. 516 * interfaces, but never both at the same time.
517 */ 517 */
518 BUILD_BUG_ON(IEEE80211_TX_STATUS_HEADROOM !=
519 sizeof(struct ieee80211_tx_status_rtap_hdr));
518 local->tx_headroom = max_t(unsigned int , local->hw.extra_tx_headroom, 520 local->tx_headroom = max_t(unsigned int , local->hw.extra_tx_headroom,
519 sizeof(struct ieee80211_tx_status_rtap_hdr)); 521 sizeof(struct ieee80211_tx_status_rtap_hdr));
520 522
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index d8d50fb5e823..05a18f43e1bf 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -915,6 +915,14 @@ static void ieee80211_set_associated(struct ieee80211_sub_if_data *sdata,
915 sdata->u.mgd.flags &= ~(IEEE80211_STA_CONNECTION_POLL | 915 sdata->u.mgd.flags &= ~(IEEE80211_STA_CONNECTION_POLL |
916 IEEE80211_STA_BEACON_POLL); 916 IEEE80211_STA_BEACON_POLL);
917 917
918 /*
919 * Always handle WMM once after association regardless
920 * of the first value the AP uses. Setting -1 here has
921 * that effect because the AP values is an unsigned
922 * 4-bit value.
923 */
924 sdata->u.mgd.wmm_last_param_set = -1;
925
918 ieee80211_led_assoc(local, 1); 926 ieee80211_led_assoc(local, 1);
919 927
920 sdata->vif.bss_conf.assoc = 1; 928 sdata->vif.bss_conf.assoc = 1;
@@ -934,7 +942,7 @@ static void ieee80211_set_associated(struct ieee80211_sub_if_data *sdata,
934 ieee80211_recalc_ps(local, -1); 942 ieee80211_recalc_ps(local, -1);
935 mutex_unlock(&local->iflist_mtx); 943 mutex_unlock(&local->iflist_mtx);
936 944
937 netif_start_queue(sdata->dev); 945 netif_tx_start_all_queues(sdata->dev);
938 netif_carrier_on(sdata->dev); 946 netif_carrier_on(sdata->dev);
939} 947}
940 948
@@ -1066,7 +1074,7 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
1066 * time -- we don't want the scan code to enable queues. 1074 * time -- we don't want the scan code to enable queues.
1067 */ 1075 */
1068 1076
1069 netif_stop_queue(sdata->dev); 1077 netif_tx_stop_all_queues(sdata->dev);
1070 netif_carrier_off(sdata->dev); 1078 netif_carrier_off(sdata->dev);
1071 1079
1072 rcu_read_lock(); 1080 rcu_read_lock();
@@ -1955,7 +1963,9 @@ static void ieee80211_sta_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,
1955 rma = ieee80211_rx_mgmt_disassoc(sdata, mgmt, skb->len); 1963 rma = ieee80211_rx_mgmt_disassoc(sdata, mgmt, skb->len);
1956 break; 1964 break;
1957 case IEEE80211_STYPE_ACTION: 1965 case IEEE80211_STYPE_ACTION:
1958 /* XXX: differentiate, can only happen for CSA now! */ 1966 if (mgmt->u.action.category != WLAN_CATEGORY_SPECTRUM_MGMT)
1967 break;
1968
1959 ieee80211_sta_process_chanswitch(sdata, 1969 ieee80211_sta_process_chanswitch(sdata,
1960 &mgmt->u.action.u.chan_switch.sw_elem, 1970 &mgmt->u.action.u.chan_switch.sw_elem,
1961 ifmgd->associated); 1971 ifmgd->associated);
diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c
index b9007f80cb92..12a2bff7dcdb 100644
--- a/net/mac80211/rate.c
+++ b/net/mac80211/rate.c
@@ -245,6 +245,9 @@ void rate_control_get_rate(struct ieee80211_sub_if_data *sdata,
245 info->control.rates[i].count = 1; 245 info->control.rates[i].count = 1;
246 } 246 }
247 247
248 if (sdata->local->hw.flags & IEEE80211_HW_HAS_RATE_CONTROL)
249 return;
250
248 if (sta && sdata->force_unicast_rateidx > -1) { 251 if (sta && sdata->force_unicast_rateidx > -1) {
249 info->control.rates[0].idx = sdata->force_unicast_rateidx; 252 info->control.rates[0].idx = sdata->force_unicast_rateidx;
250 } else { 253 } else {
diff --git a/net/mac80211/rc80211_pid_algo.c b/net/mac80211/rc80211_pid_algo.c
index 699d3ed869c4..29bc4c516238 100644
--- a/net/mac80211/rc80211_pid_algo.c
+++ b/net/mac80211/rc80211_pid_algo.c
@@ -190,7 +190,7 @@ static void rate_control_pid_sample(struct rc_pid_info *pinfo,
190 rate_control_pid_normalize(pinfo, sband->n_bitrates); 190 rate_control_pid_normalize(pinfo, sband->n_bitrates);
191 191
192 /* Compute the proportional, integral and derivative errors. */ 192 /* Compute the proportional, integral and derivative errors. */
193 err_prop = (pinfo->target << RC_PID_ARITH_SHIFT) - pf; 193 err_prop = (pinfo->target - pf) << RC_PID_ARITH_SHIFT;
194 194
195 err_avg = spinfo->err_avg_sc >> pinfo->smoothing_shift; 195 err_avg = spinfo->err_avg_sc >> pinfo->smoothing_shift;
196 spinfo->err_avg_sc = spinfo->err_avg_sc - err_avg + err_prop; 196 spinfo->err_avg_sc = spinfo->err_avg_sc - err_avg + err_prop;
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 9f2807aeaf52..82a30c1bf3ab 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -1746,7 +1746,9 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx)
1746 memset(info, 0, sizeof(*info)); 1746 memset(info, 0, sizeof(*info));
1747 info->flags |= IEEE80211_TX_INTFL_NEED_TXPROCESSING; 1747 info->flags |= IEEE80211_TX_INTFL_NEED_TXPROCESSING;
1748 info->control.vif = &rx->sdata->vif; 1748 info->control.vif = &rx->sdata->vif;
1749 ieee80211_select_queue(local, fwd_skb); 1749 skb_set_queue_mapping(skb,
1750 ieee80211_select_queue(rx->sdata, fwd_skb));
1751 ieee80211_set_qos_hdr(local, skb);
1750 if (is_multicast_ether_addr(fwd_hdr->addr1)) 1752 if (is_multicast_ether_addr(fwd_hdr->addr1))
1751 IEEE80211_IFSTA_MESH_CTR_INC(&sdata->u.mesh, 1753 IEEE80211_IFSTA_MESH_CTR_INC(&sdata->u.mesh,
1752 fwded_mcast); 1754 fwded_mcast);
@@ -2013,6 +2015,10 @@ ieee80211_rx_h_action(struct ieee80211_rx_data *rx)
2013 } 2015 }
2014 break; 2016 break;
2015 default: 2017 default:
2018 /* do not process rejected action frames */
2019 if (mgmt->u.action.category & 0x80)
2020 return RX_DROP_MONITOR;
2021
2016 return RX_CONTINUE; 2022 return RX_CONTINUE;
2017 } 2023 }
2018 2024
diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c
index f1a4c7160300..bc17cf7d68db 100644
--- a/net/mac80211/scan.c
+++ b/net/mac80211/scan.c
@@ -353,10 +353,10 @@ void ieee80211_scan_completed(struct ieee80211_hw *hw, bool aborted)
353 if (sdata->vif.type == NL80211_IFTYPE_STATION) { 353 if (sdata->vif.type == NL80211_IFTYPE_STATION) {
354 if (sdata->u.mgd.associated) { 354 if (sdata->u.mgd.associated) {
355 ieee80211_scan_ps_disable(sdata); 355 ieee80211_scan_ps_disable(sdata);
356 netif_wake_queue(sdata->dev); 356 netif_tx_wake_all_queues(sdata->dev);
357 } 357 }
358 } else 358 } else
359 netif_wake_queue(sdata->dev); 359 netif_tx_wake_all_queues(sdata->dev);
360 360
361 /* re-enable beaconing */ 361 /* re-enable beaconing */
362 if (sdata->vif.type == NL80211_IFTYPE_AP || 362 if (sdata->vif.type == NL80211_IFTYPE_AP ||
@@ -411,7 +411,7 @@ static int ieee80211_start_sw_scan(struct ieee80211_local *local)
411 * are handled in the scan state machine 411 * are handled in the scan state machine
412 */ 412 */
413 if (sdata->vif.type != NL80211_IFTYPE_STATION) 413 if (sdata->vif.type != NL80211_IFTYPE_STATION)
414 netif_stop_queue(sdata->dev); 414 netif_tx_stop_all_queues(sdata->dev);
415 } 415 }
416 mutex_unlock(&local->iflist_mtx); 416 mutex_unlock(&local->iflist_mtx);
417 417
@@ -439,6 +439,16 @@ static int __ieee80211_start_scan(struct ieee80211_sub_if_data *sdata,
439 if (local->scan_req) 439 if (local->scan_req)
440 return -EBUSY; 440 return -EBUSY;
441 441
442 if (req != local->int_scan_req &&
443 sdata->vif.type == NL80211_IFTYPE_STATION &&
444 !list_empty(&ifmgd->work_list)) {
445 /* actually wait for the work it's doing to finish/time out */
446 set_bit(IEEE80211_STA_REQ_SCAN, &ifmgd->request);
447 local->scan_req = req;
448 local->scan_sdata = sdata;
449 return 0;
450 }
451
442 if (local->ops->hw_scan) { 452 if (local->ops->hw_scan) {
443 u8 *ies; 453 u8 *ies;
444 454
@@ -463,14 +473,6 @@ static int __ieee80211_start_scan(struct ieee80211_sub_if_data *sdata,
463 local->scan_req = req; 473 local->scan_req = req;
464 local->scan_sdata = sdata; 474 local->scan_sdata = sdata;
465 475
466 if (req != local->int_scan_req &&
467 sdata->vif.type == NL80211_IFTYPE_STATION &&
468 !list_empty(&ifmgd->work_list)) {
469 /* actually wait for the work it's doing to finish/time out */
470 set_bit(IEEE80211_STA_REQ_SCAN, &ifmgd->request);
471 return 0;
472 }
473
474 if (local->ops->hw_scan) 476 if (local->ops->hw_scan)
475 __set_bit(SCAN_HW_SCANNING, &local->scanning); 477 __set_bit(SCAN_HW_SCANNING, &local->scanning);
476 else 478 else
@@ -575,7 +577,7 @@ static void ieee80211_scan_state_leave_oper_channel(struct ieee80211_local *loca
575 continue; 577 continue;
576 578
577 if (sdata->vif.type == NL80211_IFTYPE_STATION) { 579 if (sdata->vif.type == NL80211_IFTYPE_STATION) {
578 netif_stop_queue(sdata->dev); 580 netif_tx_stop_all_queues(sdata->dev);
579 if (sdata->u.mgd.associated) 581 if (sdata->u.mgd.associated)
580 ieee80211_scan_ps_enable(sdata); 582 ieee80211_scan_ps_enable(sdata);
581 } 583 }
@@ -610,7 +612,7 @@ static void ieee80211_scan_state_enter_oper_channel(struct ieee80211_local *loca
610 if (sdata->vif.type == NL80211_IFTYPE_STATION) { 612 if (sdata->vif.type == NL80211_IFTYPE_STATION) {
611 if (sdata->u.mgd.associated) 613 if (sdata->u.mgd.associated)
612 ieee80211_scan_ps_disable(sdata); 614 ieee80211_scan_ps_disable(sdata);
613 netif_wake_queue(sdata->dev); 615 netif_tx_wake_all_queues(sdata->dev);
614 } 616 }
615 } 617 }
616 mutex_unlock(&local->iflist_mtx); 618 mutex_unlock(&local->iflist_mtx);
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 8834cc93c716..ac210b586702 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1419,6 +1419,10 @@ static bool need_dynamic_ps(struct ieee80211_local *local)
1419 if (!local->ps_sdata) 1419 if (!local->ps_sdata)
1420 return false; 1420 return false;
1421 1421
1422 /* No point if we're going to suspend */
1423 if (local->quiescing)
1424 return false;
1425
1422 return true; 1426 return true;
1423} 1427}
1424 1428
@@ -1508,7 +1512,7 @@ static void ieee80211_xmit(struct ieee80211_sub_if_data *sdata,
1508 return; 1512 return;
1509 } 1513 }
1510 1514
1511 ieee80211_select_queue(local, skb); 1515 ieee80211_set_qos_hdr(local, skb);
1512 ieee80211_tx(sdata, skb, false); 1516 ieee80211_tx(sdata, skb, false);
1513 rcu_read_unlock(); 1517 rcu_read_unlock();
1514} 1518}
@@ -2287,6 +2291,9 @@ void ieee80211_tx_skb(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb)
2287 skb_set_network_header(skb, 0); 2291 skb_set_network_header(skb, 0);
2288 skb_set_transport_header(skb, 0); 2292 skb_set_transport_header(skb, 0);
2289 2293
2294 /* send all internal mgmt frames on VO */
2295 skb_set_queue_mapping(skb, 0);
2296
2290 /* 2297 /*
2291 * The other path calling ieee80211_xmit is from the tasklet, 2298 * The other path calling ieee80211_xmit is from the tasklet,
2292 * and while we can handle concurrent transmissions locking 2299 * and while we can handle concurrent transmissions locking
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index 78a6e924c7e1..3848140313f5 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -269,6 +269,7 @@ static void __ieee80211_wake_queue(struct ieee80211_hw *hw, int queue,
269 enum queue_stop_reason reason) 269 enum queue_stop_reason reason)
270{ 270{
271 struct ieee80211_local *local = hw_to_local(hw); 271 struct ieee80211_local *local = hw_to_local(hw);
272 struct ieee80211_sub_if_data *sdata;
272 273
273 if (WARN_ON(queue >= hw->queues)) 274 if (WARN_ON(queue >= hw->queues))
274 return; 275 return;
@@ -281,6 +282,11 @@ static void __ieee80211_wake_queue(struct ieee80211_hw *hw, int queue,
281 282
282 if (!skb_queue_empty(&local->pending[queue])) 283 if (!skb_queue_empty(&local->pending[queue]))
283 tasklet_schedule(&local->tx_pending_tasklet); 284 tasklet_schedule(&local->tx_pending_tasklet);
285
286 rcu_read_lock();
287 list_for_each_entry_rcu(sdata, &local->interfaces, list)
288 netif_tx_wake_queue(netdev_get_tx_queue(sdata->dev, queue));
289 rcu_read_unlock();
284} 290}
285 291
286void ieee80211_wake_queue_by_reason(struct ieee80211_hw *hw, int queue, 292void ieee80211_wake_queue_by_reason(struct ieee80211_hw *hw, int queue,
@@ -305,11 +311,17 @@ static void __ieee80211_stop_queue(struct ieee80211_hw *hw, int queue,
305 enum queue_stop_reason reason) 311 enum queue_stop_reason reason)
306{ 312{
307 struct ieee80211_local *local = hw_to_local(hw); 313 struct ieee80211_local *local = hw_to_local(hw);
314 struct ieee80211_sub_if_data *sdata;
308 315
309 if (WARN_ON(queue >= hw->queues)) 316 if (WARN_ON(queue >= hw->queues))
310 return; 317 return;
311 318
312 __set_bit(reason, &local->queue_stop_reasons[queue]); 319 __set_bit(reason, &local->queue_stop_reasons[queue]);
320
321 rcu_read_lock();
322 list_for_each_entry_rcu(sdata, &local->interfaces, list)
323 netif_tx_stop_queue(netdev_get_tx_queue(sdata->dev, queue));
324 rcu_read_unlock();
313} 325}
314 326
315void ieee80211_stop_queue_by_reason(struct ieee80211_hw *hw, int queue, 327void ieee80211_stop_queue_by_reason(struct ieee80211_hw *hw, int queue,
@@ -1039,7 +1051,19 @@ int ieee80211_reconfig(struct ieee80211_local *local)
1039 1051
1040 /* restart hardware */ 1052 /* restart hardware */
1041 if (local->open_count) { 1053 if (local->open_count) {
1054 /*
1055 * Upon resume hardware can sometimes be goofy due to
1056 * various platform / driver / bus issues, so restarting
1057 * the device may at times not work immediately. Propagate
1058 * the error.
1059 */
1042 res = drv_start(local); 1060 res = drv_start(local);
1061 if (res) {
1062 WARN(local->suspended, "Harware became unavailable "
1063 "upon resume. This is could be a software issue"
1064 "prior to suspend or a harware issue\n");
1065 return res;
1066 }
1043 1067
1044 ieee80211_led_radio(local, true); 1068 ieee80211_led_radio(local, true);
1045 } 1069 }
diff --git a/net/mac80211/wme.c b/net/mac80211/wme.c
index b19b7696f3a2..79d887dae738 100644
--- a/net/mac80211/wme.c
+++ b/net/mac80211/wme.c
@@ -44,22 +44,69 @@ static int wme_downgrade_ac(struct sk_buff *skb)
44} 44}
45 45
46 46
47/* Indicate which queue to use. */ 47/* Indicate which queue to use. */
48static u16 classify80211(struct ieee80211_local *local, struct sk_buff *skb) 48u16 ieee80211_select_queue(struct ieee80211_sub_if_data *sdata,
49 struct sk_buff *skb)
49{ 50{
50 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; 51 struct ieee80211_local *local = sdata->local;
52 struct sta_info *sta = NULL;
53 u32 sta_flags = 0;
54 const u8 *ra = NULL;
55 bool qos = false;
51 56
52 if (!ieee80211_is_data(hdr->frame_control)) { 57 if (local->hw.queues < 4 || skb->len < 6) {
53 /* management frames go on AC_VO queue, but are sent 58 skb->priority = 0; /* required for correct WPA/11i MIC */
54 * without QoS control fields */ 59 return min_t(u16, local->hw.queues - 1,
55 return 0; 60 ieee802_1d_to_ac[skb->priority]);
61 }
62
63 rcu_read_lock();
64 switch (sdata->vif.type) {
65 case NL80211_IFTYPE_AP_VLAN:
66 rcu_read_lock();
67 sta = rcu_dereference(sdata->u.vlan.sta);
68 if (sta)
69 sta_flags = get_sta_flags(sta);
70 rcu_read_unlock();
71 if (sta)
72 break;
73 case NL80211_IFTYPE_AP:
74 ra = skb->data;
75 break;
76 case NL80211_IFTYPE_WDS:
77 ra = sdata->u.wds.remote_addr;
78 break;
79#ifdef CONFIG_MAC80211_MESH
80 case NL80211_IFTYPE_MESH_POINT:
81 /*
82 * XXX: This is clearly broken ... but already was before,
83 * because ieee80211_fill_mesh_addresses() would clear A1
84 * except for multicast addresses.
85 */
86 break;
87#endif
88 case NL80211_IFTYPE_STATION:
89 ra = sdata->u.mgd.bssid;
90 break;
91 case NL80211_IFTYPE_ADHOC:
92 ra = skb->data;
93 break;
94 default:
95 break;
56 } 96 }
57 97
58 if (0 /* injected */) { 98 if (!sta && ra && !is_multicast_ether_addr(ra)) {
59 /* use AC from radiotap */ 99 sta = sta_info_get(local, ra);
100 if (sta)
101 sta_flags = get_sta_flags(sta);
60 } 102 }
61 103
62 if (!ieee80211_is_data_qos(hdr->frame_control)) { 104 if (sta_flags & WLAN_STA_WME)
105 qos = true;
106
107 rcu_read_unlock();
108
109 if (!qos) {
63 skb->priority = 0; /* required for correct WPA/11i MIC */ 110 skb->priority = 0; /* required for correct WPA/11i MIC */
64 return ieee802_1d_to_ac[skb->priority]; 111 return ieee802_1d_to_ac[skb->priority];
65 } 112 }
@@ -68,6 +115,12 @@ static u16 classify80211(struct ieee80211_local *local, struct sk_buff *skb)
68 * data frame has */ 115 * data frame has */
69 skb->priority = cfg80211_classify8021d(skb); 116 skb->priority = cfg80211_classify8021d(skb);
70 117
118 return ieee80211_downgrade_queue(local, skb);
119}
120
121u16 ieee80211_downgrade_queue(struct ieee80211_local *local,
122 struct sk_buff *skb)
123{
71 /* in case we are a client verify acm is not set for this ac */ 124 /* in case we are a client verify acm is not set for this ac */
72 while (unlikely(local->wmm_acm & BIT(skb->priority))) { 125 while (unlikely(local->wmm_acm & BIT(skb->priority))) {
73 if (wme_downgrade_ac(skb)) { 126 if (wme_downgrade_ac(skb)) {
@@ -85,24 +138,17 @@ static u16 classify80211(struct ieee80211_local *local, struct sk_buff *skb)
85 return ieee802_1d_to_ac[skb->priority]; 138 return ieee802_1d_to_ac[skb->priority];
86} 139}
87 140
88void ieee80211_select_queue(struct ieee80211_local *local, struct sk_buff *skb) 141void ieee80211_set_qos_hdr(struct ieee80211_local *local, struct sk_buff *skb)
89{ 142{
90 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; 143 struct ieee80211_hdr *hdr = (void *)skb->data;
91 u16 queue; 144
92 u8 tid; 145 /* Fill in the QoS header if there is one. */
93
94 queue = classify80211(local, skb);
95 if (unlikely(queue >= local->hw.queues))
96 queue = local->hw.queues - 1;
97
98 /*
99 * Now we know the 1d priority, fill in the QoS header if
100 * there is one (and we haven't done this before).
101 */
102 if (ieee80211_is_data_qos(hdr->frame_control)) { 146 if (ieee80211_is_data_qos(hdr->frame_control)) {
103 u8 *p = ieee80211_get_qos_ctl(hdr); 147 u8 *p = ieee80211_get_qos_ctl(hdr);
104 u8 ack_policy = 0; 148 u8 ack_policy = 0, tid;
149
105 tid = skb->priority & IEEE80211_QOS_CTL_TAG1D_MASK; 150 tid = skb->priority & IEEE80211_QOS_CTL_TAG1D_MASK;
151
106 if (unlikely(local->wifi_wme_noack_test)) 152 if (unlikely(local->wifi_wme_noack_test))
107 ack_policy |= QOS_CONTROL_ACK_POLICY_NOACK << 153 ack_policy |= QOS_CONTROL_ACK_POLICY_NOACK <<
108 QOS_CONTROL_ACK_POLICY_SHIFT; 154 QOS_CONTROL_ACK_POLICY_SHIFT;
@@ -110,6 +156,4 @@ void ieee80211_select_queue(struct ieee80211_local *local, struct sk_buff *skb)
110 *p++ = ack_policy | tid; 156 *p++ = ack_policy | tid;
111 *p = 0; 157 *p = 0;
112 } 158 }
113
114 skb_set_queue_mapping(skb, queue);
115} 159}
diff --git a/net/mac80211/wme.h b/net/mac80211/wme.h
index d4fd87ca5118..6053b1c9feee 100644
--- a/net/mac80211/wme.h
+++ b/net/mac80211/wme.h
@@ -20,7 +20,11 @@
20 20
21extern const int ieee802_1d_to_ac[8]; 21extern const int ieee802_1d_to_ac[8];
22 22
23void ieee80211_select_queue(struct ieee80211_local *local, 23u16 ieee80211_select_queue(struct ieee80211_sub_if_data *sdata,
24 struct sk_buff *skb); 24 struct sk_buff *skb);
25void ieee80211_set_qos_hdr(struct ieee80211_local *local, struct sk_buff *skb);
26u16 ieee80211_downgrade_queue(struct ieee80211_local *local,
27 struct sk_buff *skb);
28
25 29
26#endif /* _WME_H */ 30#endif /* _WME_H */
diff --git a/net/netfilter/ipvs/Kconfig b/net/netfilter/ipvs/Kconfig
index 79a698052218..f2d76238b9b5 100644
--- a/net/netfilter/ipvs/Kconfig
+++ b/net/netfilter/ipvs/Kconfig
@@ -112,7 +112,8 @@ config IP_VS_RR
112 module, choose M here. If unsure, say N. 112 module, choose M here. If unsure, say N.
113 113
114config IP_VS_WRR 114config IP_VS_WRR
115 tristate "weighted round-robin scheduling" 115 tristate "weighted round-robin scheduling"
116 select GCD
116 ---help--- 117 ---help---
117 The weighted robin-robin scheduling algorithm directs network 118 The weighted robin-robin scheduling algorithm directs network
118 connections to different real servers based on server weights 119 connections to different real servers based on server weights
diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
index 6bde12da2fe0..c37ac2d7bec4 100644
--- a/net/netfilter/ipvs/ip_vs_ctl.c
+++ b/net/netfilter/ipvs/ip_vs_ctl.c
@@ -2077,6 +2077,10 @@ do_ip_vs_set_ctl(struct sock *sk, int cmd, void __user *user, unsigned int len)
2077 if (!capable(CAP_NET_ADMIN)) 2077 if (!capable(CAP_NET_ADMIN))
2078 return -EPERM; 2078 return -EPERM;
2079 2079
2080 if (cmd < IP_VS_BASE_CTL || cmd > IP_VS_SO_SET_MAX)
2081 return -EINVAL;
2082 if (len < 0 || len > MAX_ARG_LEN)
2083 return -EINVAL;
2080 if (len != set_arglen[SET_CMDID(cmd)]) { 2084 if (len != set_arglen[SET_CMDID(cmd)]) {
2081 pr_err("set_ctl: len %u != %u\n", 2085 pr_err("set_ctl: len %u != %u\n",
2082 len, set_arglen[SET_CMDID(cmd)]); 2086 len, set_arglen[SET_CMDID(cmd)]);
@@ -2352,17 +2356,25 @@ do_ip_vs_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
2352{ 2356{
2353 unsigned char arg[128]; 2357 unsigned char arg[128];
2354 int ret = 0; 2358 int ret = 0;
2359 unsigned int copylen;
2355 2360
2356 if (!capable(CAP_NET_ADMIN)) 2361 if (!capable(CAP_NET_ADMIN))
2357 return -EPERM; 2362 return -EPERM;
2358 2363
2364 if (cmd < IP_VS_BASE_CTL || cmd > IP_VS_SO_GET_MAX)
2365 return -EINVAL;
2366
2359 if (*len < get_arglen[GET_CMDID(cmd)]) { 2367 if (*len < get_arglen[GET_CMDID(cmd)]) {
2360 pr_err("get_ctl: len %u < %u\n", 2368 pr_err("get_ctl: len %u < %u\n",
2361 *len, get_arglen[GET_CMDID(cmd)]); 2369 *len, get_arglen[GET_CMDID(cmd)]);
2362 return -EINVAL; 2370 return -EINVAL;
2363 } 2371 }
2364 2372
2365 if (copy_from_user(arg, user, get_arglen[GET_CMDID(cmd)]) != 0) 2373 copylen = get_arglen[GET_CMDID(cmd)];
2374 if (copylen > 128)
2375 return -EINVAL;
2376
2377 if (copy_from_user(arg, user, copylen) != 0)
2366 return -EFAULT; 2378 return -EFAULT;
2367 2379
2368 if (mutex_lock_interruptible(&__ip_vs_mutex)) 2380 if (mutex_lock_interruptible(&__ip_vs_mutex))
diff --git a/net/netfilter/ipvs/ip_vs_wrr.c b/net/netfilter/ipvs/ip_vs_wrr.c
index 6182e8ea0be7..3c115fc19784 100644
--- a/net/netfilter/ipvs/ip_vs_wrr.c
+++ b/net/netfilter/ipvs/ip_vs_wrr.c
@@ -24,6 +24,7 @@
24#include <linux/module.h> 24#include <linux/module.h>
25#include <linux/kernel.h> 25#include <linux/kernel.h>
26#include <linux/net.h> 26#include <linux/net.h>
27#include <linux/gcd.h>
27 28
28#include <net/ip_vs.h> 29#include <net/ip_vs.h>
29 30
@@ -38,20 +39,6 @@ struct ip_vs_wrr_mark {
38}; 39};
39 40
40 41
41/*
42 * Get the gcd of server weights
43 */
44static int gcd(int a, int b)
45{
46 int c;
47
48 while ((c = a % b)) {
49 a = b;
50 b = c;
51 }
52 return b;
53}
54
55static int ip_vs_wrr_gcd_weight(struct ip_vs_service *svc) 42static int ip_vs_wrr_gcd_weight(struct ip_vs_service *svc)
56{ 43{
57 struct ip_vs_dest *dest; 44 struct ip_vs_dest *dest;
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
index 0e98c3282d42..4d79e3c1616c 100644
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
@@ -30,6 +30,7 @@
30#include <linux/netdevice.h> 30#include <linux/netdevice.h>
31#include <linux/socket.h> 31#include <linux/socket.h>
32#include <linux/mm.h> 32#include <linux/mm.h>
33#include <linux/nsproxy.h>
33#include <linux/rculist_nulls.h> 34#include <linux/rculist_nulls.h>
34 35
35#include <net/netfilter/nf_conntrack.h> 36#include <net/netfilter/nf_conntrack.h>
@@ -63,8 +64,6 @@ EXPORT_SYMBOL_GPL(nf_conntrack_max);
63struct nf_conn nf_conntrack_untracked __read_mostly; 64struct nf_conn nf_conntrack_untracked __read_mostly;
64EXPORT_SYMBOL_GPL(nf_conntrack_untracked); 65EXPORT_SYMBOL_GPL(nf_conntrack_untracked);
65 66
66static struct kmem_cache *nf_conntrack_cachep __read_mostly;
67
68static int nf_conntrack_hash_rnd_initted; 67static int nf_conntrack_hash_rnd_initted;
69static unsigned int nf_conntrack_hash_rnd; 68static unsigned int nf_conntrack_hash_rnd;
70 69
@@ -86,9 +85,10 @@ static u_int32_t __hash_conntrack(const struct nf_conntrack_tuple *tuple,
86 return ((u64)h * size) >> 32; 85 return ((u64)h * size) >> 32;
87} 86}
88 87
89static inline u_int32_t hash_conntrack(const struct nf_conntrack_tuple *tuple) 88static inline u_int32_t hash_conntrack(const struct net *net,
89 const struct nf_conntrack_tuple *tuple)
90{ 90{
91 return __hash_conntrack(tuple, nf_conntrack_htable_size, 91 return __hash_conntrack(tuple, net->ct.htable_size,
92 nf_conntrack_hash_rnd); 92 nf_conntrack_hash_rnd);
93} 93}
94 94
@@ -296,7 +296,7 @@ __nf_conntrack_find(struct net *net, const struct nf_conntrack_tuple *tuple)
296{ 296{
297 struct nf_conntrack_tuple_hash *h; 297 struct nf_conntrack_tuple_hash *h;
298 struct hlist_nulls_node *n; 298 struct hlist_nulls_node *n;
299 unsigned int hash = hash_conntrack(tuple); 299 unsigned int hash = hash_conntrack(net, tuple);
300 300
301 /* Disable BHs the entire time since we normally need to disable them 301 /* Disable BHs the entire time since we normally need to disable them
302 * at least once for the stats anyway. 302 * at least once for the stats anyway.
@@ -366,10 +366,11 @@ static void __nf_conntrack_hash_insert(struct nf_conn *ct,
366 366
367void nf_conntrack_hash_insert(struct nf_conn *ct) 367void nf_conntrack_hash_insert(struct nf_conn *ct)
368{ 368{
369 struct net *net = nf_ct_net(ct);
369 unsigned int hash, repl_hash; 370 unsigned int hash, repl_hash;
370 371
371 hash = hash_conntrack(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple); 372 hash = hash_conntrack(net, &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
372 repl_hash = hash_conntrack(&ct->tuplehash[IP_CT_DIR_REPLY].tuple); 373 repl_hash = hash_conntrack(net, &ct->tuplehash[IP_CT_DIR_REPLY].tuple);
373 374
374 __nf_conntrack_hash_insert(ct, hash, repl_hash); 375 __nf_conntrack_hash_insert(ct, hash, repl_hash);
375} 376}
@@ -397,8 +398,8 @@ __nf_conntrack_confirm(struct sk_buff *skb)
397 if (CTINFO2DIR(ctinfo) != IP_CT_DIR_ORIGINAL) 398 if (CTINFO2DIR(ctinfo) != IP_CT_DIR_ORIGINAL)
398 return NF_ACCEPT; 399 return NF_ACCEPT;
399 400
400 hash = hash_conntrack(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple); 401 hash = hash_conntrack(net, &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
401 repl_hash = hash_conntrack(&ct->tuplehash[IP_CT_DIR_REPLY].tuple); 402 repl_hash = hash_conntrack(net, &ct->tuplehash[IP_CT_DIR_REPLY].tuple);
402 403
403 /* We're not in hash table, and we refuse to set up related 404 /* We're not in hash table, and we refuse to set up related
404 connections for unconfirmed conns. But packet copies and 405 connections for unconfirmed conns. But packet copies and
@@ -468,7 +469,7 @@ nf_conntrack_tuple_taken(const struct nf_conntrack_tuple *tuple,
468 struct net *net = nf_ct_net(ignored_conntrack); 469 struct net *net = nf_ct_net(ignored_conntrack);
469 struct nf_conntrack_tuple_hash *h; 470 struct nf_conntrack_tuple_hash *h;
470 struct hlist_nulls_node *n; 471 struct hlist_nulls_node *n;
471 unsigned int hash = hash_conntrack(tuple); 472 unsigned int hash = hash_conntrack(net, tuple);
472 473
473 /* Disable BHs the entire time since we need to disable them at 474 /* Disable BHs the entire time since we need to disable them at
474 * least once for the stats anyway. 475 * least once for the stats anyway.
@@ -503,7 +504,7 @@ static noinline int early_drop(struct net *net, unsigned int hash)
503 int dropped = 0; 504 int dropped = 0;
504 505
505 rcu_read_lock(); 506 rcu_read_lock();
506 for (i = 0; i < nf_conntrack_htable_size; i++) { 507 for (i = 0; i < net->ct.htable_size; i++) {
507 hlist_nulls_for_each_entry_rcu(h, n, &net->ct.hash[hash], 508 hlist_nulls_for_each_entry_rcu(h, n, &net->ct.hash[hash],
508 hnnode) { 509 hnnode) {
509 tmp = nf_ct_tuplehash_to_ctrack(h); 510 tmp = nf_ct_tuplehash_to_ctrack(h);
@@ -523,7 +524,7 @@ static noinline int early_drop(struct net *net, unsigned int hash)
523 if (cnt >= NF_CT_EVICTION_RANGE) 524 if (cnt >= NF_CT_EVICTION_RANGE)
524 break; 525 break;
525 526
526 hash = (hash + 1) % nf_conntrack_htable_size; 527 hash = (hash + 1) % net->ct.htable_size;
527 } 528 }
528 rcu_read_unlock(); 529 rcu_read_unlock();
529 530
@@ -557,7 +558,7 @@ struct nf_conn *nf_conntrack_alloc(struct net *net,
557 558
558 if (nf_conntrack_max && 559 if (nf_conntrack_max &&
559 unlikely(atomic_read(&net->ct.count) > nf_conntrack_max)) { 560 unlikely(atomic_read(&net->ct.count) > nf_conntrack_max)) {
560 unsigned int hash = hash_conntrack(orig); 561 unsigned int hash = hash_conntrack(net, orig);
561 if (!early_drop(net, hash)) { 562 if (!early_drop(net, hash)) {
562 atomic_dec(&net->ct.count); 563 atomic_dec(&net->ct.count);
563 if (net_ratelimit()) 564 if (net_ratelimit())
@@ -572,7 +573,7 @@ struct nf_conn *nf_conntrack_alloc(struct net *net,
572 * Do not use kmem_cache_zalloc(), as this cache uses 573 * Do not use kmem_cache_zalloc(), as this cache uses
573 * SLAB_DESTROY_BY_RCU. 574 * SLAB_DESTROY_BY_RCU.
574 */ 575 */
575 ct = kmem_cache_alloc(nf_conntrack_cachep, gfp); 576 ct = kmem_cache_alloc(net->ct.nf_conntrack_cachep, gfp);
576 if (ct == NULL) { 577 if (ct == NULL) {
577 pr_debug("nf_conntrack_alloc: Can't alloc conntrack.\n"); 578 pr_debug("nf_conntrack_alloc: Can't alloc conntrack.\n");
578 atomic_dec(&net->ct.count); 579 atomic_dec(&net->ct.count);
@@ -611,7 +612,7 @@ void nf_conntrack_free(struct nf_conn *ct)
611 nf_ct_ext_destroy(ct); 612 nf_ct_ext_destroy(ct);
612 atomic_dec(&net->ct.count); 613 atomic_dec(&net->ct.count);
613 nf_ct_ext_free(ct); 614 nf_ct_ext_free(ct);
614 kmem_cache_free(nf_conntrack_cachep, ct); 615 kmem_cache_free(net->ct.nf_conntrack_cachep, ct);
615} 616}
616EXPORT_SYMBOL_GPL(nf_conntrack_free); 617EXPORT_SYMBOL_GPL(nf_conntrack_free);
617 618
@@ -1014,7 +1015,7 @@ get_next_corpse(struct net *net, int (*iter)(struct nf_conn *i, void *data),
1014 struct hlist_nulls_node *n; 1015 struct hlist_nulls_node *n;
1015 1016
1016 spin_lock_bh(&nf_conntrack_lock); 1017 spin_lock_bh(&nf_conntrack_lock);
1017 for (; *bucket < nf_conntrack_htable_size; (*bucket)++) { 1018 for (; *bucket < net->ct.htable_size; (*bucket)++) {
1018 hlist_nulls_for_each_entry(h, n, &net->ct.hash[*bucket], hnnode) { 1019 hlist_nulls_for_each_entry(h, n, &net->ct.hash[*bucket], hnnode) {
1019 ct = nf_ct_tuplehash_to_ctrack(h); 1020 ct = nf_ct_tuplehash_to_ctrack(h);
1020 if (iter(ct, data)) 1021 if (iter(ct, data))
@@ -1113,9 +1114,12 @@ static void nf_ct_release_dying_list(struct net *net)
1113 1114
1114static void nf_conntrack_cleanup_init_net(void) 1115static void nf_conntrack_cleanup_init_net(void)
1115{ 1116{
1117 /* wait until all references to nf_conntrack_untracked are dropped */
1118 while (atomic_read(&nf_conntrack_untracked.ct_general.use) > 1)
1119 schedule();
1120
1116 nf_conntrack_helper_fini(); 1121 nf_conntrack_helper_fini();
1117 nf_conntrack_proto_fini(); 1122 nf_conntrack_proto_fini();
1118 kmem_cache_destroy(nf_conntrack_cachep);
1119} 1123}
1120 1124
1121static void nf_conntrack_cleanup_net(struct net *net) 1125static void nf_conntrack_cleanup_net(struct net *net)
@@ -1127,15 +1131,14 @@ static void nf_conntrack_cleanup_net(struct net *net)
1127 schedule(); 1131 schedule();
1128 goto i_see_dead_people; 1132 goto i_see_dead_people;
1129 } 1133 }
1130 /* wait until all references to nf_conntrack_untracked are dropped */
1131 while (atomic_read(&nf_conntrack_untracked.ct_general.use) > 1)
1132 schedule();
1133 1134
1134 nf_ct_free_hashtable(net->ct.hash, net->ct.hash_vmalloc, 1135 nf_ct_free_hashtable(net->ct.hash, net->ct.hash_vmalloc,
1135 nf_conntrack_htable_size); 1136 net->ct.htable_size);
1136 nf_conntrack_ecache_fini(net); 1137 nf_conntrack_ecache_fini(net);
1137 nf_conntrack_acct_fini(net); 1138 nf_conntrack_acct_fini(net);
1138 nf_conntrack_expect_fini(net); 1139 nf_conntrack_expect_fini(net);
1140 kmem_cache_destroy(net->ct.nf_conntrack_cachep);
1141 kfree(net->ct.slabname);
1139 free_percpu(net->ct.stat); 1142 free_percpu(net->ct.stat);
1140} 1143}
1141 1144
@@ -1190,10 +1193,12 @@ int nf_conntrack_set_hashsize(const char *val, struct kernel_param *kp)
1190{ 1193{
1191 int i, bucket, vmalloced, old_vmalloced; 1194 int i, bucket, vmalloced, old_vmalloced;
1192 unsigned int hashsize, old_size; 1195 unsigned int hashsize, old_size;
1193 int rnd;
1194 struct hlist_nulls_head *hash, *old_hash; 1196 struct hlist_nulls_head *hash, *old_hash;
1195 struct nf_conntrack_tuple_hash *h; 1197 struct nf_conntrack_tuple_hash *h;
1196 1198
1199 if (current->nsproxy->net_ns != &init_net)
1200 return -EOPNOTSUPP;
1201
1197 /* On boot, we can set this without any fancy locking. */ 1202 /* On boot, we can set this without any fancy locking. */
1198 if (!nf_conntrack_htable_size) 1203 if (!nf_conntrack_htable_size)
1199 return param_set_uint(val, kp); 1204 return param_set_uint(val, kp);
@@ -1206,33 +1211,29 @@ int nf_conntrack_set_hashsize(const char *val, struct kernel_param *kp)
1206 if (!hash) 1211 if (!hash)
1207 return -ENOMEM; 1212 return -ENOMEM;
1208 1213
1209 /* We have to rehahs for the new table anyway, so we also can
1210 * use a newrandom seed */
1211 get_random_bytes(&rnd, sizeof(rnd));
1212
1213 /* Lookups in the old hash might happen in parallel, which means we 1214 /* Lookups in the old hash might happen in parallel, which means we
1214 * might get false negatives during connection lookup. New connections 1215 * might get false negatives during connection lookup. New connections
1215 * created because of a false negative won't make it into the hash 1216 * created because of a false negative won't make it into the hash
1216 * though since that required taking the lock. 1217 * though since that required taking the lock.
1217 */ 1218 */
1218 spin_lock_bh(&nf_conntrack_lock); 1219 spin_lock_bh(&nf_conntrack_lock);
1219 for (i = 0; i < nf_conntrack_htable_size; i++) { 1220 for (i = 0; i < init_net.ct.htable_size; i++) {
1220 while (!hlist_nulls_empty(&init_net.ct.hash[i])) { 1221 while (!hlist_nulls_empty(&init_net.ct.hash[i])) {
1221 h = hlist_nulls_entry(init_net.ct.hash[i].first, 1222 h = hlist_nulls_entry(init_net.ct.hash[i].first,
1222 struct nf_conntrack_tuple_hash, hnnode); 1223 struct nf_conntrack_tuple_hash, hnnode);
1223 hlist_nulls_del_rcu(&h->hnnode); 1224 hlist_nulls_del_rcu(&h->hnnode);
1224 bucket = __hash_conntrack(&h->tuple, hashsize, rnd); 1225 bucket = __hash_conntrack(&h->tuple, hashsize,
1226 nf_conntrack_hash_rnd);
1225 hlist_nulls_add_head_rcu(&h->hnnode, &hash[bucket]); 1227 hlist_nulls_add_head_rcu(&h->hnnode, &hash[bucket]);
1226 } 1228 }
1227 } 1229 }
1228 old_size = nf_conntrack_htable_size; 1230 old_size = init_net.ct.htable_size;
1229 old_vmalloced = init_net.ct.hash_vmalloc; 1231 old_vmalloced = init_net.ct.hash_vmalloc;
1230 old_hash = init_net.ct.hash; 1232 old_hash = init_net.ct.hash;
1231 1233
1232 nf_conntrack_htable_size = hashsize; 1234 init_net.ct.htable_size = nf_conntrack_htable_size = hashsize;
1233 init_net.ct.hash_vmalloc = vmalloced; 1235 init_net.ct.hash_vmalloc = vmalloced;
1234 init_net.ct.hash = hash; 1236 init_net.ct.hash = hash;
1235 nf_conntrack_hash_rnd = rnd;
1236 spin_unlock_bh(&nf_conntrack_lock); 1237 spin_unlock_bh(&nf_conntrack_lock);
1237 1238
1238 nf_ct_free_hashtable(old_hash, old_vmalloced, old_size); 1239 nf_ct_free_hashtable(old_hash, old_vmalloced, old_size);
@@ -1271,15 +1272,6 @@ static int nf_conntrack_init_init_net(void)
1271 NF_CONNTRACK_VERSION, nf_conntrack_htable_size, 1272 NF_CONNTRACK_VERSION, nf_conntrack_htable_size,
1272 nf_conntrack_max); 1273 nf_conntrack_max);
1273 1274
1274 nf_conntrack_cachep = kmem_cache_create("nf_conntrack",
1275 sizeof(struct nf_conn),
1276 0, SLAB_DESTROY_BY_RCU, NULL);
1277 if (!nf_conntrack_cachep) {
1278 printk(KERN_ERR "Unable to create nf_conn slab cache\n");
1279 ret = -ENOMEM;
1280 goto err_cache;
1281 }
1282
1283 ret = nf_conntrack_proto_init(); 1275 ret = nf_conntrack_proto_init();
1284 if (ret < 0) 1276 if (ret < 0)
1285 goto err_proto; 1277 goto err_proto;
@@ -1288,13 +1280,19 @@ static int nf_conntrack_init_init_net(void)
1288 if (ret < 0) 1280 if (ret < 0)
1289 goto err_helper; 1281 goto err_helper;
1290 1282
1283 /* Set up fake conntrack: to never be deleted, not in any hashes */
1284#ifdef CONFIG_NET_NS
1285 nf_conntrack_untracked.ct_net = &init_net;
1286#endif
1287 atomic_set(&nf_conntrack_untracked.ct_general.use, 1);
1288 /* - and look it like as a confirmed connection */
1289 set_bit(IPS_CONFIRMED_BIT, &nf_conntrack_untracked.status);
1290
1291 return 0; 1291 return 0;
1292 1292
1293err_helper: 1293err_helper:
1294 nf_conntrack_proto_fini(); 1294 nf_conntrack_proto_fini();
1295err_proto: 1295err_proto:
1296 kmem_cache_destroy(nf_conntrack_cachep);
1297err_cache:
1298 return ret; 1296 return ret;
1299} 1297}
1300 1298
@@ -1316,7 +1314,24 @@ static int nf_conntrack_init_net(struct net *net)
1316 ret = -ENOMEM; 1314 ret = -ENOMEM;
1317 goto err_stat; 1315 goto err_stat;
1318 } 1316 }
1319 net->ct.hash = nf_ct_alloc_hashtable(&nf_conntrack_htable_size, 1317
1318 net->ct.slabname = kasprintf(GFP_KERNEL, "nf_conntrack_%p", net);
1319 if (!net->ct.slabname) {
1320 ret = -ENOMEM;
1321 goto err_slabname;
1322 }
1323
1324 net->ct.nf_conntrack_cachep = kmem_cache_create(net->ct.slabname,
1325 sizeof(struct nf_conn), 0,
1326 SLAB_DESTROY_BY_RCU, NULL);
1327 if (!net->ct.nf_conntrack_cachep) {
1328 printk(KERN_ERR "Unable to create nf_conn slab cache\n");
1329 ret = -ENOMEM;
1330 goto err_cache;
1331 }
1332
1333 net->ct.htable_size = nf_conntrack_htable_size;
1334 net->ct.hash = nf_ct_alloc_hashtable(&net->ct.htable_size,
1320 &net->ct.hash_vmalloc, 1); 1335 &net->ct.hash_vmalloc, 1);
1321 if (!net->ct.hash) { 1336 if (!net->ct.hash) {
1322 ret = -ENOMEM; 1337 ret = -ENOMEM;
@@ -1333,15 +1348,6 @@ static int nf_conntrack_init_net(struct net *net)
1333 if (ret < 0) 1348 if (ret < 0)
1334 goto err_ecache; 1349 goto err_ecache;
1335 1350
1336 /* Set up fake conntrack:
1337 - to never be deleted, not in any hashes */
1338#ifdef CONFIG_NET_NS
1339 nf_conntrack_untracked.ct_net = &init_net;
1340#endif
1341 atomic_set(&nf_conntrack_untracked.ct_general.use, 1);
1342 /* - and look it like as a confirmed connection */
1343 set_bit(IPS_CONFIRMED_BIT, &nf_conntrack_untracked.status);
1344
1345 return 0; 1351 return 0;
1346 1352
1347err_ecache: 1353err_ecache:
@@ -1350,8 +1356,12 @@ err_acct:
1350 nf_conntrack_expect_fini(net); 1356 nf_conntrack_expect_fini(net);
1351err_expect: 1357err_expect:
1352 nf_ct_free_hashtable(net->ct.hash, net->ct.hash_vmalloc, 1358 nf_ct_free_hashtable(net->ct.hash, net->ct.hash_vmalloc,
1353 nf_conntrack_htable_size); 1359 net->ct.htable_size);
1354err_hash: 1360err_hash:
1361 kmem_cache_destroy(net->ct.nf_conntrack_cachep);
1362err_cache:
1363 kfree(net->ct.slabname);
1364err_slabname:
1355 free_percpu(net->ct.stat); 1365 free_percpu(net->ct.stat);
1356err_stat: 1366err_stat:
1357 return ret; 1367 return ret;
diff --git a/net/netfilter/nf_conntrack_expect.c b/net/netfilter/nf_conntrack_expect.c
index fdf5d2a1d9b4..2f25ff610982 100644
--- a/net/netfilter/nf_conntrack_expect.c
+++ b/net/netfilter/nf_conntrack_expect.c
@@ -569,7 +569,7 @@ static void exp_proc_remove(struct net *net)
569#endif /* CONFIG_PROC_FS */ 569#endif /* CONFIG_PROC_FS */
570} 570}
571 571
572module_param_named(expect_hashsize, nf_ct_expect_hsize, uint, 0600); 572module_param_named(expect_hashsize, nf_ct_expect_hsize, uint, 0400);
573 573
574int nf_conntrack_expect_init(struct net *net) 574int nf_conntrack_expect_init(struct net *net)
575{ 575{
@@ -577,7 +577,7 @@ int nf_conntrack_expect_init(struct net *net)
577 577
578 if (net_eq(net, &init_net)) { 578 if (net_eq(net, &init_net)) {
579 if (!nf_ct_expect_hsize) { 579 if (!nf_ct_expect_hsize) {
580 nf_ct_expect_hsize = nf_conntrack_htable_size / 256; 580 nf_ct_expect_hsize = net->ct.htable_size / 256;
581 if (!nf_ct_expect_hsize) 581 if (!nf_ct_expect_hsize)
582 nf_ct_expect_hsize = 1; 582 nf_ct_expect_hsize = 1;
583 } 583 }
diff --git a/net/netfilter/nf_conntrack_ftp.c b/net/netfilter/nf_conntrack_ftp.c
index 38ea7ef3ccd2..f0732aa18e4f 100644
--- a/net/netfilter/nf_conntrack_ftp.c
+++ b/net/netfilter/nf_conntrack_ftp.c
@@ -323,24 +323,24 @@ static void update_nl_seq(struct nf_conn *ct, u32 nl_seq,
323 struct nf_ct_ftp_master *info, int dir, 323 struct nf_ct_ftp_master *info, int dir,
324 struct sk_buff *skb) 324 struct sk_buff *skb)
325{ 325{
326 unsigned int i, oldest = NUM_SEQ_TO_REMEMBER; 326 unsigned int i, oldest;
327 327
328 /* Look for oldest: if we find exact match, we're done. */ 328 /* Look for oldest: if we find exact match, we're done. */
329 for (i = 0; i < info->seq_aft_nl_num[dir]; i++) { 329 for (i = 0; i < info->seq_aft_nl_num[dir]; i++) {
330 if (info->seq_aft_nl[dir][i] == nl_seq) 330 if (info->seq_aft_nl[dir][i] == nl_seq)
331 return; 331 return;
332
333 if (oldest == info->seq_aft_nl_num[dir] ||
334 before(info->seq_aft_nl[dir][i],
335 info->seq_aft_nl[dir][oldest]))
336 oldest = i;
337 } 332 }
338 333
339 if (info->seq_aft_nl_num[dir] < NUM_SEQ_TO_REMEMBER) { 334 if (info->seq_aft_nl_num[dir] < NUM_SEQ_TO_REMEMBER) {
340 info->seq_aft_nl[dir][info->seq_aft_nl_num[dir]++] = nl_seq; 335 info->seq_aft_nl[dir][info->seq_aft_nl_num[dir]++] = nl_seq;
341 } else if (oldest != NUM_SEQ_TO_REMEMBER && 336 } else {
342 after(nl_seq, info->seq_aft_nl[dir][oldest])) { 337 if (before(info->seq_aft_nl[dir][0], info->seq_aft_nl[dir][1]))
343 info->seq_aft_nl[dir][oldest] = nl_seq; 338 oldest = 0;
339 else
340 oldest = 1;
341
342 if (after(nl_seq, info->seq_aft_nl[dir][oldest]))
343 info->seq_aft_nl[dir][oldest] = nl_seq;
344 } 344 }
345} 345}
346 346
diff --git a/net/netfilter/nf_conntrack_helper.c b/net/netfilter/nf_conntrack_helper.c
index 65c2a7bc3afc..4b1a56bd074c 100644
--- a/net/netfilter/nf_conntrack_helper.c
+++ b/net/netfilter/nf_conntrack_helper.c
@@ -192,7 +192,7 @@ static void __nf_conntrack_helper_unregister(struct nf_conntrack_helper *me,
192 /* Get rid of expecteds, set helpers to NULL. */ 192 /* Get rid of expecteds, set helpers to NULL. */
193 hlist_nulls_for_each_entry(h, nn, &net->ct.unconfirmed, hnnode) 193 hlist_nulls_for_each_entry(h, nn, &net->ct.unconfirmed, hnnode)
194 unhelp(h, me); 194 unhelp(h, me);
195 for (i = 0; i < nf_conntrack_htable_size; i++) { 195 for (i = 0; i < net->ct.htable_size; i++) {
196 hlist_nulls_for_each_entry(h, nn, &net->ct.hash[i], hnnode) 196 hlist_nulls_for_each_entry(h, nn, &net->ct.hash[i], hnnode)
197 unhelp(h, me); 197 unhelp(h, me);
198 } 198 }
diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c
index 59d8064eb522..0ffe689dfe97 100644
--- a/net/netfilter/nf_conntrack_netlink.c
+++ b/net/netfilter/nf_conntrack_netlink.c
@@ -594,7 +594,7 @@ ctnetlink_dump_table(struct sk_buff *skb, struct netlink_callback *cb)
594 594
595 rcu_read_lock(); 595 rcu_read_lock();
596 last = (struct nf_conn *)cb->args[1]; 596 last = (struct nf_conn *)cb->args[1];
597 for (; cb->args[0] < nf_conntrack_htable_size; cb->args[0]++) { 597 for (; cb->args[0] < init_net.ct.htable_size; cb->args[0]++) {
598restart: 598restart:
599 hlist_nulls_for_each_entry_rcu(h, n, &init_net.ct.hash[cb->args[0]], 599 hlist_nulls_for_each_entry_rcu(h, n, &init_net.ct.hash[cb->args[0]],
600 hnnode) { 600 hnnode) {
@@ -1437,8 +1437,9 @@ ctnetlink_exp_dump_mask(struct sk_buff *skb,
1437 struct nlattr *nest_parms; 1437 struct nlattr *nest_parms;
1438 1438
1439 memset(&m, 0xFF, sizeof(m)); 1439 memset(&m, 0xFF, sizeof(m));
1440 m.src.u.all = mask->src.u.all;
1441 memcpy(&m.src.u3, &mask->src.u3, sizeof(m.src.u3)); 1440 memcpy(&m.src.u3, &mask->src.u3, sizeof(m.src.u3));
1441 m.src.u.all = mask->src.u.all;
1442 m.dst.protonum = tuple->dst.protonum;
1442 1443
1443 nest_parms = nla_nest_start(skb, CTA_EXPECT_MASK | NLA_F_NESTED); 1444 nest_parms = nla_nest_start(skb, CTA_EXPECT_MASK | NLA_F_NESTED);
1444 if (!nest_parms) 1445 if (!nest_parms)
diff --git a/net/netfilter/nf_conntrack_sip.c b/net/netfilter/nf_conntrack_sip.c
index 4b572163784b..023966b569bf 100644
--- a/net/netfilter/nf_conntrack_sip.c
+++ b/net/netfilter/nf_conntrack_sip.c
@@ -376,7 +376,7 @@ int ct_sip_get_header(const struct nf_conn *ct, const char *dptr,
376 dptr += hdr->len; 376 dptr += hdr->len;
377 else if (hdr->cname && limit - dptr >= hdr->clen + 1 && 377 else if (hdr->cname && limit - dptr >= hdr->clen + 1 &&
378 strnicmp(dptr, hdr->cname, hdr->clen) == 0 && 378 strnicmp(dptr, hdr->cname, hdr->clen) == 0 &&
379 !isalpha(*(dptr + hdr->clen + 1))) 379 !isalpha(*(dptr + hdr->clen)))
380 dptr += hdr->clen; 380 dptr += hdr->clen;
381 else 381 else
382 continue; 382 continue;
diff --git a/net/netfilter/nf_conntrack_standalone.c b/net/netfilter/nf_conntrack_standalone.c
index 028aba667ef7..e310f1561bb2 100644
--- a/net/netfilter/nf_conntrack_standalone.c
+++ b/net/netfilter/nf_conntrack_standalone.c
@@ -51,7 +51,7 @@ static struct hlist_nulls_node *ct_get_first(struct seq_file *seq)
51 struct hlist_nulls_node *n; 51 struct hlist_nulls_node *n;
52 52
53 for (st->bucket = 0; 53 for (st->bucket = 0;
54 st->bucket < nf_conntrack_htable_size; 54 st->bucket < net->ct.htable_size;
55 st->bucket++) { 55 st->bucket++) {
56 n = rcu_dereference(net->ct.hash[st->bucket].first); 56 n = rcu_dereference(net->ct.hash[st->bucket].first);
57 if (!is_a_nulls(n)) 57 if (!is_a_nulls(n))
@@ -69,7 +69,7 @@ static struct hlist_nulls_node *ct_get_next(struct seq_file *seq,
69 head = rcu_dereference(head->next); 69 head = rcu_dereference(head->next);
70 while (is_a_nulls(head)) { 70 while (is_a_nulls(head)) {
71 if (likely(get_nulls_value(head) == st->bucket)) { 71 if (likely(get_nulls_value(head) == st->bucket)) {
72 if (++st->bucket >= nf_conntrack_htable_size) 72 if (++st->bucket >= net->ct.htable_size)
73 return NULL; 73 return NULL;
74 } 74 }
75 head = rcu_dereference(net->ct.hash[st->bucket].first); 75 head = rcu_dereference(net->ct.hash[st->bucket].first);
@@ -355,7 +355,7 @@ static ctl_table nf_ct_sysctl_table[] = {
355 }, 355 },
356 { 356 {
357 .procname = "nf_conntrack_buckets", 357 .procname = "nf_conntrack_buckets",
358 .data = &nf_conntrack_htable_size, 358 .data = &init_net.ct.htable_size,
359 .maxlen = sizeof(unsigned int), 359 .maxlen = sizeof(unsigned int),
360 .mode = 0444, 360 .mode = 0444,
361 .proc_handler = proc_dointvec, 361 .proc_handler = proc_dointvec,
@@ -421,6 +421,7 @@ static int nf_conntrack_standalone_init_sysctl(struct net *net)
421 goto out_kmemdup; 421 goto out_kmemdup;
422 422
423 table[1].data = &net->ct.count; 423 table[1].data = &net->ct.count;
424 table[2].data = &net->ct.htable_size;
424 table[3].data = &net->ct.sysctl_checksum; 425 table[3].data = &net->ct.sysctl_checksum;
425 table[4].data = &net->ct.sysctl_log_invalid; 426 table[4].data = &net->ct.sysctl_log_invalid;
426 427
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
index a4957bf2ca60..4c5972ba8c78 100644
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -455,9 +455,14 @@ static int netlink_create(struct net *net, struct socket *sock, int protocol,
455 if (nl_table[protocol].registered && 455 if (nl_table[protocol].registered &&
456 try_module_get(nl_table[protocol].module)) 456 try_module_get(nl_table[protocol].module))
457 module = nl_table[protocol].module; 457 module = nl_table[protocol].module;
458 else
459 err = -EPROTONOSUPPORT;
458 cb_mutex = nl_table[protocol].cb_mutex; 460 cb_mutex = nl_table[protocol].cb_mutex;
459 netlink_unlock_table(); 461 netlink_unlock_table();
460 462
463 if (err < 0)
464 goto out;
465
461 err = __netlink_create(net, sock, cb_mutex, protocol); 466 err = __netlink_create(net, sock, cb_mutex, protocol);
462 if (err < 0) 467 if (err < 0)
463 goto out_module; 468 goto out_module;
diff --git a/net/netrom/nr_route.c b/net/netrom/nr_route.c
index aacba76070fc..e2e2d33cafdf 100644
--- a/net/netrom/nr_route.c
+++ b/net/netrom/nr_route.c
@@ -843,12 +843,13 @@ int nr_route_frame(struct sk_buff *skb, ax25_cb *ax25)
843 dptr = skb_push(skb, 1); 843 dptr = skb_push(skb, 1);
844 *dptr = AX25_P_NETROM; 844 *dptr = AX25_P_NETROM;
845 845
846 ax25s = ax25_send_frame(skb, 256, (ax25_address *)dev->dev_addr, &nr_neigh->callsign, nr_neigh->digipeat, nr_neigh->dev); 846 ax25s = nr_neigh->ax25;
847 if (nr_neigh->ax25 && ax25s) { 847 nr_neigh->ax25 = ax25_send_frame(skb, 256,
848 /* We were already holding this ax25_cb */ 848 (ax25_address *)dev->dev_addr,
849 &nr_neigh->callsign,
850 nr_neigh->digipeat, nr_neigh->dev);
851 if (ax25s)
849 ax25_cb_put(ax25s); 852 ax25_cb_put(ax25s);
850 }
851 nr_neigh->ax25 = ax25s;
852 853
853 dev_put(dev); 854 dev_put(dev);
854 ret = (nr_neigh->ax25 != NULL); 855 ret = (nr_neigh->ax25 != NULL);
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
index e0516a22be2e..f126d18dbdc4 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -1021,8 +1021,20 @@ static int tpacket_snd(struct packet_sock *po, struct msghdr *msg)
1021 1021
1022 status = TP_STATUS_SEND_REQUEST; 1022 status = TP_STATUS_SEND_REQUEST;
1023 err = dev_queue_xmit(skb); 1023 err = dev_queue_xmit(skb);
1024 if (unlikely(err > 0 && (err = net_xmit_errno(err)) != 0)) 1024 if (unlikely(err > 0)) {
1025 goto out_xmit; 1025 err = net_xmit_errno(err);
1026 if (err && __packet_get_status(po, ph) ==
1027 TP_STATUS_AVAILABLE) {
1028 /* skb was destructed already */
1029 skb = NULL;
1030 goto out_status;
1031 }
1032 /*
1033 * skb was dropped but not destructed yet;
1034 * let's treat it like congestion or err < 0
1035 */
1036 err = 0;
1037 }
1026 packet_increment_head(&po->tx_ring); 1038 packet_increment_head(&po->tx_ring);
1027 len_sum += tp_len; 1039 len_sum += tp_len;
1028 } while (likely((ph != NULL) || 1040 } while (likely((ph != NULL) ||
@@ -1033,9 +1045,6 @@ static int tpacket_snd(struct packet_sock *po, struct msghdr *msg)
1033 err = len_sum; 1045 err = len_sum;
1034 goto out_put; 1046 goto out_put;
1035 1047
1036out_xmit:
1037 skb->destructor = sock_wfree;
1038 atomic_dec(&po->tx_ring.pending);
1039out_status: 1048out_status:
1040 __packet_set_status(po, ph, status); 1049 __packet_set_status(po, ph, status);
1041 kfree_skb(skb); 1050 kfree_skb(skb);
diff --git a/net/rose/rose_link.c b/net/rose/rose_link.c
index bd86a63960ce..5ef5f6988a2e 100644
--- a/net/rose/rose_link.c
+++ b/net/rose/rose_link.c
@@ -101,13 +101,17 @@ static void rose_t0timer_expiry(unsigned long param)
101static int rose_send_frame(struct sk_buff *skb, struct rose_neigh *neigh) 101static int rose_send_frame(struct sk_buff *skb, struct rose_neigh *neigh)
102{ 102{
103 ax25_address *rose_call; 103 ax25_address *rose_call;
104 ax25_cb *ax25s;
104 105
105 if (ax25cmp(&rose_callsign, &null_ax25_address) == 0) 106 if (ax25cmp(&rose_callsign, &null_ax25_address) == 0)
106 rose_call = (ax25_address *)neigh->dev->dev_addr; 107 rose_call = (ax25_address *)neigh->dev->dev_addr;
107 else 108 else
108 rose_call = &rose_callsign; 109 rose_call = &rose_callsign;
109 110
111 ax25s = neigh->ax25;
110 neigh->ax25 = ax25_send_frame(skb, 260, rose_call, &neigh->callsign, neigh->digipeat, neigh->dev); 112 neigh->ax25 = ax25_send_frame(skb, 260, rose_call, &neigh->callsign, neigh->digipeat, neigh->dev);
113 if (ax25s)
114 ax25_cb_put(ax25s);
111 115
112 return (neigh->ax25 != NULL); 116 return (neigh->ax25 != NULL);
113} 117}
@@ -120,13 +124,17 @@ static int rose_send_frame(struct sk_buff *skb, struct rose_neigh *neigh)
120static int rose_link_up(struct rose_neigh *neigh) 124static int rose_link_up(struct rose_neigh *neigh)
121{ 125{
122 ax25_address *rose_call; 126 ax25_address *rose_call;
127 ax25_cb *ax25s;
123 128
124 if (ax25cmp(&rose_callsign, &null_ax25_address) == 0) 129 if (ax25cmp(&rose_callsign, &null_ax25_address) == 0)
125 rose_call = (ax25_address *)neigh->dev->dev_addr; 130 rose_call = (ax25_address *)neigh->dev->dev_addr;
126 else 131 else
127 rose_call = &rose_callsign; 132 rose_call = &rose_callsign;
128 133
134 ax25s = neigh->ax25;
129 neigh->ax25 = ax25_find_cb(rose_call, &neigh->callsign, neigh->digipeat, neigh->dev); 135 neigh->ax25 = ax25_find_cb(rose_call, &neigh->callsign, neigh->digipeat, neigh->dev);
136 if (ax25s)
137 ax25_cb_put(ax25s);
130 138
131 return (neigh->ax25 != NULL); 139 return (neigh->ax25 != NULL);
132} 140}
diff --git a/net/rose/rose_loopback.c b/net/rose/rose_loopback.c
index 114df6eec8c3..968e8bac1b5d 100644
--- a/net/rose/rose_loopback.c
+++ b/net/rose/rose_loopback.c
@@ -75,7 +75,7 @@ static void rose_loopback_timer(unsigned long param)
75 lci_i = ((skb->data[0] << 8) & 0xF00) + ((skb->data[1] << 0) & 0x0FF); 75 lci_i = ((skb->data[0] << 8) & 0xF00) + ((skb->data[1] << 0) & 0x0FF);
76 frametype = skb->data[2]; 76 frametype = skb->data[2];
77 dest = (rose_address *)(skb->data + 4); 77 dest = (rose_address *)(skb->data + 4);
78 lci_o = 0xFFF - lci_i; 78 lci_o = ROSE_DEFAULT_MAXVC + 1 - lci_i;
79 79
80 skb_reset_transport_header(skb); 80 skb_reset_transport_header(skb);
81 81
diff --git a/net/rose/rose_route.c b/net/rose/rose_route.c
index 795c4b025e31..70a0b3b4b4d2 100644
--- a/net/rose/rose_route.c
+++ b/net/rose/rose_route.c
@@ -235,6 +235,8 @@ static void rose_remove_neigh(struct rose_neigh *rose_neigh)
235 235
236 if ((s = rose_neigh_list) == rose_neigh) { 236 if ((s = rose_neigh_list) == rose_neigh) {
237 rose_neigh_list = rose_neigh->next; 237 rose_neigh_list = rose_neigh->next;
238 if (rose_neigh->ax25)
239 ax25_cb_put(rose_neigh->ax25);
238 kfree(rose_neigh->digipeat); 240 kfree(rose_neigh->digipeat);
239 kfree(rose_neigh); 241 kfree(rose_neigh);
240 return; 242 return;
@@ -243,6 +245,8 @@ static void rose_remove_neigh(struct rose_neigh *rose_neigh)
243 while (s != NULL && s->next != NULL) { 245 while (s != NULL && s->next != NULL) {
244 if (s->next == rose_neigh) { 246 if (s->next == rose_neigh) {
245 s->next = rose_neigh->next; 247 s->next = rose_neigh->next;
248 if (rose_neigh->ax25)
249 ax25_cb_put(rose_neigh->ax25);
246 kfree(rose_neigh->digipeat); 250 kfree(rose_neigh->digipeat);
247 kfree(rose_neigh); 251 kfree(rose_neigh);
248 return; 252 return;
@@ -812,6 +816,7 @@ void rose_link_failed(ax25_cb *ax25, int reason)
812 816
813 if (rose_neigh != NULL) { 817 if (rose_neigh != NULL) {
814 rose_neigh->ax25 = NULL; 818 rose_neigh->ax25 = NULL;
819 ax25_cb_put(ax25);
815 820
816 rose_del_route_by_neigh(rose_neigh); 821 rose_del_route_by_neigh(rose_neigh);
817 rose_kill_by_neigh(rose_neigh); 822 rose_kill_by_neigh(rose_neigh);
diff --git a/net/sched/Kconfig b/net/sched/Kconfig
index 929218a47620..21f9c7678aa3 100644
--- a/net/sched/Kconfig
+++ b/net/sched/Kconfig
@@ -433,7 +433,7 @@ config NET_ACT_POLICE
433 module. 433 module.
434 434
435 To compile this code as a module, choose M here: the 435 To compile this code as a module, choose M here: the
436 module will be called police. 436 module will be called act_police.
437 437
438config NET_ACT_GACT 438config NET_ACT_GACT
439 tristate "Generic actions" 439 tristate "Generic actions"
@@ -443,7 +443,7 @@ config NET_ACT_GACT
443 accepting packets. 443 accepting packets.
444 444
445 To compile this code as a module, choose M here: the 445 To compile this code as a module, choose M here: the
446 module will be called gact. 446 module will be called act_gact.
447 447
448config GACT_PROB 448config GACT_PROB
449 bool "Probability support" 449 bool "Probability support"
@@ -459,7 +459,7 @@ config NET_ACT_MIRRED
459 other devices. 459 other devices.
460 460
461 To compile this code as a module, choose M here: the 461 To compile this code as a module, choose M here: the
462 module will be called mirred. 462 module will be called act_mirred.
463 463
464config NET_ACT_IPT 464config NET_ACT_IPT
465 tristate "IPtables targets" 465 tristate "IPtables targets"
@@ -469,7 +469,7 @@ config NET_ACT_IPT
469 classification. 469 classification.
470 470
471 To compile this code as a module, choose M here: the 471 To compile this code as a module, choose M here: the
472 module will be called ipt. 472 module will be called act_ipt.
473 473
474config NET_ACT_NAT 474config NET_ACT_NAT
475 tristate "Stateless NAT" 475 tristate "Stateless NAT"
@@ -479,7 +479,7 @@ config NET_ACT_NAT
479 netfilter for NAT unless you know what you are doing. 479 netfilter for NAT unless you know what you are doing.
480 480
481 To compile this code as a module, choose M here: the 481 To compile this code as a module, choose M here: the
482 module will be called nat. 482 module will be called act_nat.
483 483
484config NET_ACT_PEDIT 484config NET_ACT_PEDIT
485 tristate "Packet Editing" 485 tristate "Packet Editing"
@@ -488,7 +488,7 @@ config NET_ACT_PEDIT
488 Say Y here if you want to mangle the content of packets. 488 Say Y here if you want to mangle the content of packets.
489 489
490 To compile this code as a module, choose M here: the 490 To compile this code as a module, choose M here: the
491 module will be called pedit. 491 module will be called act_pedit.
492 492
493config NET_ACT_SIMP 493config NET_ACT_SIMP
494 tristate "Simple Example (Debug)" 494 tristate "Simple Example (Debug)"
@@ -502,7 +502,7 @@ config NET_ACT_SIMP
502 If unsure, say N. 502 If unsure, say N.
503 503
504 To compile this code as a module, choose M here: the 504 To compile this code as a module, choose M here: the
505 module will be called simple. 505 module will be called act_simple.
506 506
507config NET_ACT_SKBEDIT 507config NET_ACT_SKBEDIT
508 tristate "SKB Editing" 508 tristate "SKB Editing"
@@ -513,7 +513,7 @@ config NET_ACT_SKBEDIT
513 If unsure, say N. 513 If unsure, say N.
514 514
515 To compile this code as a module, choose M here: the 515 To compile this code as a module, choose M here: the
516 module will be called skbedit. 516 module will be called act_skbedit.
517 517
518config NET_CLS_IND 518config NET_CLS_IND
519 bool "Incoming device classification" 519 bool "Incoming device classification"
diff --git a/net/sctp/socket.c b/net/sctp/socket.c
index 89ab66e54740..67fdac9d2d33 100644
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -2087,8 +2087,7 @@ static int sctp_setsockopt_autoclose(struct sock *sk, char __user *optval,
2087 if (copy_from_user(&sp->autoclose, optval, optlen)) 2087 if (copy_from_user(&sp->autoclose, optval, optlen))
2088 return -EFAULT; 2088 return -EFAULT;
2089 /* make sure it won't exceed MAX_SCHEDULE_TIMEOUT */ 2089 /* make sure it won't exceed MAX_SCHEDULE_TIMEOUT */
2090 if (sp->autoclose > (MAX_SCHEDULE_TIMEOUT / HZ) ) 2090 sp->autoclose = min_t(long, sp->autoclose, MAX_SCHEDULE_TIMEOUT / HZ);
2091 sp->autoclose = (__u32)(MAX_SCHEDULE_TIMEOUT / HZ) ;
2092 2091
2093 return 0; 2092 return 0;
2094} 2093}
diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c
index 3c3c50f38a1c..f7a7f8380e38 100644
--- a/net/sunrpc/auth_gss/auth_gss.c
+++ b/net/sunrpc/auth_gss/auth_gss.c
@@ -644,7 +644,22 @@ gss_pipe_downcall(struct file *filp, const char __user *src, size_t mlen)
644 p = gss_fill_context(p, end, ctx, gss_msg->auth->mech); 644 p = gss_fill_context(p, end, ctx, gss_msg->auth->mech);
645 if (IS_ERR(p)) { 645 if (IS_ERR(p)) {
646 err = PTR_ERR(p); 646 err = PTR_ERR(p);
647 gss_msg->msg.errno = (err == -EAGAIN) ? -EAGAIN : -EACCES; 647 switch (err) {
648 case -EACCES:
649 gss_msg->msg.errno = err;
650 err = mlen;
651 break;
652 case -EFAULT:
653 case -ENOMEM:
654 case -EINVAL:
655 case -ENOSYS:
656 gss_msg->msg.errno = -EAGAIN;
657 break;
658 default:
659 printk(KERN_CRIT "%s: bad return from "
660 "gss_fill_context: %zd\n", __func__, err);
661 BUG();
662 }
648 goto err_release_msg; 663 goto err_release_msg;
649 } 664 }
650 gss_msg->ctx = gss_get_ctx(ctx); 665 gss_msg->ctx = gss_get_ctx(ctx);
diff --git a/net/sunrpc/auth_gss/gss_krb5_mech.c b/net/sunrpc/auth_gss/gss_krb5_mech.c
index ef45eba22485..2deb0ed72ff4 100644
--- a/net/sunrpc/auth_gss/gss_krb5_mech.c
+++ b/net/sunrpc/auth_gss/gss_krb5_mech.c
@@ -131,8 +131,10 @@ gss_import_sec_context_kerberos(const void *p,
131 struct krb5_ctx *ctx; 131 struct krb5_ctx *ctx;
132 int tmp; 132 int tmp;
133 133
134 if (!(ctx = kzalloc(sizeof(*ctx), GFP_NOFS))) 134 if (!(ctx = kzalloc(sizeof(*ctx), GFP_NOFS))) {
135 p = ERR_PTR(-ENOMEM);
135 goto out_err; 136 goto out_err;
137 }
136 138
137 p = simple_get_bytes(p, end, &ctx->initiate, sizeof(ctx->initiate)); 139 p = simple_get_bytes(p, end, &ctx->initiate, sizeof(ctx->initiate));
138 if (IS_ERR(p)) 140 if (IS_ERR(p))
diff --git a/net/sunrpc/auth_gss/gss_mech_switch.c b/net/sunrpc/auth_gss/gss_mech_switch.c
index 6efbb0cd3c7c..76e4c6f4ac3c 100644
--- a/net/sunrpc/auth_gss/gss_mech_switch.c
+++ b/net/sunrpc/auth_gss/gss_mech_switch.c
@@ -252,7 +252,7 @@ gss_import_sec_context(const void *input_token, size_t bufsize,
252 struct gss_ctx **ctx_id) 252 struct gss_ctx **ctx_id)
253{ 253{
254 if (!(*ctx_id = kzalloc(sizeof(**ctx_id), GFP_KERNEL))) 254 if (!(*ctx_id = kzalloc(sizeof(**ctx_id), GFP_KERNEL)))
255 return GSS_S_FAILURE; 255 return -ENOMEM;
256 (*ctx_id)->mech_type = gss_mech_get(mech); 256 (*ctx_id)->mech_type = gss_mech_get(mech);
257 257
258 return mech->gm_ops 258 return mech->gm_ops
diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c
index 1c924ee0a1ef..7d1f9e928f69 100644
--- a/net/sunrpc/svc_xprt.c
+++ b/net/sunrpc/svc_xprt.c
@@ -699,7 +699,8 @@ int svc_recv(struct svc_rqst *rqstp, long timeout)
699 spin_unlock_bh(&pool->sp_lock); 699 spin_unlock_bh(&pool->sp_lock);
700 700
701 len = 0; 701 len = 0;
702 if (test_bit(XPT_LISTENER, &xprt->xpt_flags)) { 702 if (test_bit(XPT_LISTENER, &xprt->xpt_flags) &&
703 !test_bit(XPT_CLOSE, &xprt->xpt_flags)) {
703 struct svc_xprt *newxpt; 704 struct svc_xprt *newxpt;
704 newxpt = xprt->xpt_ops->xpo_accept(xprt); 705 newxpt = xprt->xpt_ops->xpo_accept(xprt);
705 if (newxpt) { 706 if (newxpt) {
diff --git a/net/wireless/core.c b/net/wireless/core.c
index c2a2c563d21a..92b812442488 100644
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
@@ -745,9 +745,9 @@ static int cfg80211_netdev_notifier_call(struct notifier_block * nb,
745 mutex_unlock(&rdev->devlist_mtx); 745 mutex_unlock(&rdev->devlist_mtx);
746 dev_put(dev); 746 dev_put(dev);
747 } 747 }
748#ifdef CONFIG_CFG80211_WEXT
749 cfg80211_lock_rdev(rdev); 748 cfg80211_lock_rdev(rdev);
750 mutex_lock(&rdev->devlist_mtx); 749 mutex_lock(&rdev->devlist_mtx);
750#ifdef CONFIG_CFG80211_WEXT
751 wdev_lock(wdev); 751 wdev_lock(wdev);
752 switch (wdev->iftype) { 752 switch (wdev->iftype) {
753 case NL80211_IFTYPE_ADHOC: 753 case NL80211_IFTYPE_ADHOC:
@@ -760,10 +760,10 @@ static int cfg80211_netdev_notifier_call(struct notifier_block * nb,
760 break; 760 break;
761 } 761 }
762 wdev_unlock(wdev); 762 wdev_unlock(wdev);
763#endif
763 rdev->opencount++; 764 rdev->opencount++;
764 mutex_unlock(&rdev->devlist_mtx); 765 mutex_unlock(&rdev->devlist_mtx);
765 cfg80211_unlock_rdev(rdev); 766 cfg80211_unlock_rdev(rdev);
766#endif
767 break; 767 break;
768 case NETDEV_UNREGISTER: 768 case NETDEV_UNREGISTER:
769 /* 769 /*
diff --git a/net/wireless/mlme.c b/net/wireless/mlme.c
index 1001db4912f7..82e6002c8d67 100644
--- a/net/wireless/mlme.c
+++ b/net/wireless/mlme.c
@@ -93,7 +93,18 @@ void cfg80211_send_rx_assoc(struct net_device *dev, const u8 *buf, size_t len)
93 } 93 }
94 } 94 }
95 95
96 WARN_ON(!bss); 96 /*
97 * We might be coming here because the driver reported
98 * a successful association at the same time as the
99 * user requested a deauth. In that case, we will have
100 * removed the BSS from the auth_bsses list due to the
101 * deauth request when the assoc response makes it. If
102 * the two code paths acquire the lock the other way
103 * around, that's just the standard situation of a
104 * deauth being requested while connected.
105 */
106 if (!bss)
107 goto out;
97 } else if (wdev->conn) { 108 } else if (wdev->conn) {
98 cfg80211_sme_failed_assoc(wdev); 109 cfg80211_sme_failed_assoc(wdev);
99 /* 110 /*
diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index baa898add287..7a0754c92df4 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -1690,7 +1690,7 @@ int regulatory_hint_user(const char *alpha2)
1690 request->wiphy_idx = WIPHY_IDX_STALE; 1690 request->wiphy_idx = WIPHY_IDX_STALE;
1691 request->alpha2[0] = alpha2[0]; 1691 request->alpha2[0] = alpha2[0];
1692 request->alpha2[1] = alpha2[1]; 1692 request->alpha2[1] = alpha2[1];
1693 request->initiator = NL80211_REGDOM_SET_BY_USER, 1693 request->initiator = NL80211_REGDOM_SET_BY_USER;
1694 1694
1695 queue_regulatory_request(request); 1695 queue_regulatory_request(request);
1696 1696
diff --git a/net/wireless/scan.c b/net/wireless/scan.c
index 12dfa62aad18..0c2cbbebca95 100644
--- a/net/wireless/scan.c
+++ b/net/wireless/scan.c
@@ -601,7 +601,7 @@ int cfg80211_wext_siwscan(struct net_device *dev,
601 struct cfg80211_registered_device *rdev; 601 struct cfg80211_registered_device *rdev;
602 struct wiphy *wiphy; 602 struct wiphy *wiphy;
603 struct iw_scan_req *wreq = NULL; 603 struct iw_scan_req *wreq = NULL;
604 struct cfg80211_scan_request *creq; 604 struct cfg80211_scan_request *creq = NULL;
605 int i, err, n_channels = 0; 605 int i, err, n_channels = 0;
606 enum ieee80211_band band; 606 enum ieee80211_band band;
607 607
@@ -694,8 +694,10 @@ int cfg80211_wext_siwscan(struct net_device *dev,
694 /* translate "Scan for SSID" request */ 694 /* translate "Scan for SSID" request */
695 if (wreq) { 695 if (wreq) {
696 if (wrqu->data.flags & IW_SCAN_THIS_ESSID) { 696 if (wrqu->data.flags & IW_SCAN_THIS_ESSID) {
697 if (wreq->essid_len > IEEE80211_MAX_SSID_LEN) 697 if (wreq->essid_len > IEEE80211_MAX_SSID_LEN) {
698 return -EINVAL; 698 err = -EINVAL;
699 goto out;
700 }
699 memcpy(creq->ssids[0].ssid, wreq->essid, wreq->essid_len); 701 memcpy(creq->ssids[0].ssid, wreq->essid, wreq->essid_len);
700 creq->ssids[0].ssid_len = wreq->essid_len; 702 creq->ssids[0].ssid_len = wreq->essid_len;
701 } 703 }
@@ -707,12 +709,15 @@ int cfg80211_wext_siwscan(struct net_device *dev,
707 err = rdev->ops->scan(wiphy, dev, creq); 709 err = rdev->ops->scan(wiphy, dev, creq);
708 if (err) { 710 if (err) {
709 rdev->scan_req = NULL; 711 rdev->scan_req = NULL;
710 kfree(creq); 712 /* creq will be freed below */
711 } else { 713 } else {
712 nl80211_send_scan_start(rdev, dev); 714 nl80211_send_scan_start(rdev, dev);
715 /* creq now owned by driver */
716 creq = NULL;
713 dev_hold(dev); 717 dev_hold(dev);
714 } 718 }
715 out: 719 out:
720 kfree(creq);
716 cfg80211_unlock_rdev(rdev); 721 cfg80211_unlock_rdev(rdev);
717 return err; 722 return err;
718} 723}
diff --git a/net/wireless/sme.c b/net/wireless/sme.c
index 2333d78187e4..dc0fc4989d54 100644
--- a/net/wireless/sme.c
+++ b/net/wireless/sme.c
@@ -655,6 +655,7 @@ void __cfg80211_disconnected(struct net_device *dev, const u8 *ie,
655 memset(&wrqu, 0, sizeof(wrqu)); 655 memset(&wrqu, 0, sizeof(wrqu));
656 wrqu.ap_addr.sa_family = ARPHRD_ETHER; 656 wrqu.ap_addr.sa_family = ARPHRD_ETHER;
657 wireless_send_event(dev, SIOCGIWAP, &wrqu, NULL); 657 wireless_send_event(dev, SIOCGIWAP, &wrqu, NULL);
658 wdev->wext.connect.ssid_len = 0;
658#endif 659#endif
659} 660}
660 661
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index cb81ca35b0d6..0ecb16a9a883 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -469,16 +469,16 @@ static inline int xfrm_byidx_should_resize(struct net *net, int total)
469 return 0; 469 return 0;
470} 470}
471 471
472void xfrm_spd_getinfo(struct xfrmk_spdinfo *si) 472void xfrm_spd_getinfo(struct net *net, struct xfrmk_spdinfo *si)
473{ 473{
474 read_lock_bh(&xfrm_policy_lock); 474 read_lock_bh(&xfrm_policy_lock);
475 si->incnt = init_net.xfrm.policy_count[XFRM_POLICY_IN]; 475 si->incnt = net->xfrm.policy_count[XFRM_POLICY_IN];
476 si->outcnt = init_net.xfrm.policy_count[XFRM_POLICY_OUT]; 476 si->outcnt = net->xfrm.policy_count[XFRM_POLICY_OUT];
477 si->fwdcnt = init_net.xfrm.policy_count[XFRM_POLICY_FWD]; 477 si->fwdcnt = net->xfrm.policy_count[XFRM_POLICY_FWD];
478 si->inscnt = init_net.xfrm.policy_count[XFRM_POLICY_IN+XFRM_POLICY_MAX]; 478 si->inscnt = net->xfrm.policy_count[XFRM_POLICY_IN+XFRM_POLICY_MAX];
479 si->outscnt = init_net.xfrm.policy_count[XFRM_POLICY_OUT+XFRM_POLICY_MAX]; 479 si->outscnt = net->xfrm.policy_count[XFRM_POLICY_OUT+XFRM_POLICY_MAX];
480 si->fwdscnt = init_net.xfrm.policy_count[XFRM_POLICY_FWD+XFRM_POLICY_MAX]; 480 si->fwdscnt = net->xfrm.policy_count[XFRM_POLICY_FWD+XFRM_POLICY_MAX];
481 si->spdhcnt = init_net.xfrm.policy_idx_hmask; 481 si->spdhcnt = net->xfrm.policy_idx_hmask;
482 si->spdhmcnt = xfrm_policy_hashmax; 482 si->spdhmcnt = xfrm_policy_hashmax;
483 read_unlock_bh(&xfrm_policy_lock); 483 read_unlock_bh(&xfrm_policy_lock);
484} 484}
@@ -1309,15 +1309,28 @@ static inline int xfrm_get_tos(struct flowi *fl, int family)
1309 return tos; 1309 return tos;
1310} 1310}
1311 1311
1312static inline struct xfrm_dst *xfrm_alloc_dst(int family) 1312static inline struct xfrm_dst *xfrm_alloc_dst(struct net *net, int family)
1313{ 1313{
1314 struct xfrm_policy_afinfo *afinfo = xfrm_policy_get_afinfo(family); 1314 struct xfrm_policy_afinfo *afinfo = xfrm_policy_get_afinfo(family);
1315 struct dst_ops *dst_ops;
1315 struct xfrm_dst *xdst; 1316 struct xfrm_dst *xdst;
1316 1317
1317 if (!afinfo) 1318 if (!afinfo)
1318 return ERR_PTR(-EINVAL); 1319 return ERR_PTR(-EINVAL);
1319 1320
1320 xdst = dst_alloc(afinfo->dst_ops) ?: ERR_PTR(-ENOBUFS); 1321 switch (family) {
1322 case AF_INET:
1323 dst_ops = &net->xfrm.xfrm4_dst_ops;
1324 break;
1325#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
1326 case AF_INET6:
1327 dst_ops = &net->xfrm.xfrm6_dst_ops;
1328 break;
1329#endif
1330 default:
1331 BUG();
1332 }
1333 xdst = dst_alloc(dst_ops) ?: ERR_PTR(-ENOBUFS);
1321 1334
1322 xfrm_policy_put_afinfo(afinfo); 1335 xfrm_policy_put_afinfo(afinfo);
1323 1336
@@ -1366,6 +1379,7 @@ static struct dst_entry *xfrm_bundle_create(struct xfrm_policy *policy,
1366 struct flowi *fl, 1379 struct flowi *fl,
1367 struct dst_entry *dst) 1380 struct dst_entry *dst)
1368{ 1381{
1382 struct net *net = xp_net(policy);
1369 unsigned long now = jiffies; 1383 unsigned long now = jiffies;
1370 struct net_device *dev; 1384 struct net_device *dev;
1371 struct dst_entry *dst_prev = NULL; 1385 struct dst_entry *dst_prev = NULL;
@@ -1389,7 +1403,7 @@ static struct dst_entry *xfrm_bundle_create(struct xfrm_policy *policy,
1389 dst_hold(dst); 1403 dst_hold(dst);
1390 1404
1391 for (; i < nx; i++) { 1405 for (; i < nx; i++) {
1392 struct xfrm_dst *xdst = xfrm_alloc_dst(family); 1406 struct xfrm_dst *xdst = xfrm_alloc_dst(net, family);
1393 struct dst_entry *dst1 = &xdst->u.dst; 1407 struct dst_entry *dst1 = &xdst->u.dst;
1394 1408
1395 err = PTR_ERR(xdst); 1409 err = PTR_ERR(xdst);
@@ -1445,7 +1459,7 @@ static struct dst_entry *xfrm_bundle_create(struct xfrm_policy *policy,
1445 if (!dev) 1459 if (!dev)
1446 goto free_dst; 1460 goto free_dst;
1447 1461
1448 /* Copy neighbout for reachability confirmation */ 1462 /* Copy neighbour for reachability confirmation */
1449 dst0->neighbour = neigh_clone(dst->neighbour); 1463 dst0->neighbour = neigh_clone(dst->neighbour);
1450 1464
1451 xfrm_init_path((struct xfrm_dst *)dst0, dst, nfheader_len); 1465 xfrm_init_path((struct xfrm_dst *)dst0, dst, nfheader_len);
@@ -2279,6 +2293,7 @@ EXPORT_SYMBOL(xfrm_bundle_ok);
2279 2293
2280int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo) 2294int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo)
2281{ 2295{
2296 struct net *net;
2282 int err = 0; 2297 int err = 0;
2283 if (unlikely(afinfo == NULL)) 2298 if (unlikely(afinfo == NULL))
2284 return -EINVAL; 2299 return -EINVAL;
@@ -2302,6 +2317,27 @@ int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo)
2302 xfrm_policy_afinfo[afinfo->family] = afinfo; 2317 xfrm_policy_afinfo[afinfo->family] = afinfo;
2303 } 2318 }
2304 write_unlock_bh(&xfrm_policy_afinfo_lock); 2319 write_unlock_bh(&xfrm_policy_afinfo_lock);
2320
2321 rtnl_lock();
2322 for_each_net(net) {
2323 struct dst_ops *xfrm_dst_ops;
2324
2325 switch (afinfo->family) {
2326 case AF_INET:
2327 xfrm_dst_ops = &net->xfrm.xfrm4_dst_ops;
2328 break;
2329#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
2330 case AF_INET6:
2331 xfrm_dst_ops = &net->xfrm.xfrm6_dst_ops;
2332 break;
2333#endif
2334 default:
2335 BUG();
2336 }
2337 *xfrm_dst_ops = *afinfo->dst_ops;
2338 }
2339 rtnl_unlock();
2340
2305 return err; 2341 return err;
2306} 2342}
2307EXPORT_SYMBOL(xfrm_policy_register_afinfo); 2343EXPORT_SYMBOL(xfrm_policy_register_afinfo);
@@ -2332,6 +2368,22 @@ int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo)
2332} 2368}
2333EXPORT_SYMBOL(xfrm_policy_unregister_afinfo); 2369EXPORT_SYMBOL(xfrm_policy_unregister_afinfo);
2334 2370
2371static void __net_init xfrm_dst_ops_init(struct net *net)
2372{
2373 struct xfrm_policy_afinfo *afinfo;
2374
2375 read_lock_bh(&xfrm_policy_afinfo_lock);
2376 afinfo = xfrm_policy_afinfo[AF_INET];
2377 if (afinfo)
2378 net->xfrm.xfrm4_dst_ops = *afinfo->dst_ops;
2379#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
2380 afinfo = xfrm_policy_afinfo[AF_INET6];
2381 if (afinfo)
2382 net->xfrm.xfrm6_dst_ops = *afinfo->dst_ops;
2383#endif
2384 read_unlock_bh(&xfrm_policy_afinfo_lock);
2385}
2386
2335static struct xfrm_policy_afinfo *xfrm_policy_get_afinfo(unsigned short family) 2387static struct xfrm_policy_afinfo *xfrm_policy_get_afinfo(unsigned short family)
2336{ 2388{
2337 struct xfrm_policy_afinfo *afinfo; 2389 struct xfrm_policy_afinfo *afinfo;
@@ -2494,6 +2546,7 @@ static int __net_init xfrm_net_init(struct net *net)
2494 rv = xfrm_policy_init(net); 2546 rv = xfrm_policy_init(net);
2495 if (rv < 0) 2547 if (rv < 0)
2496 goto out_policy; 2548 goto out_policy;
2549 xfrm_dst_ops_init(net);
2497 rv = xfrm_sysctl_init(net); 2550 rv = xfrm_sysctl_init(net);
2498 if (rv < 0) 2551 if (rv < 0)
2499 goto out_sysctl; 2552 goto out_sysctl;
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
index d847f1a52b44..f445ea1c5f52 100644
--- a/net/xfrm/xfrm_state.c
+++ b/net/xfrm/xfrm_state.c
@@ -641,11 +641,11 @@ out:
641} 641}
642EXPORT_SYMBOL(xfrm_state_flush); 642EXPORT_SYMBOL(xfrm_state_flush);
643 643
644void xfrm_sad_getinfo(struct xfrmk_sadinfo *si) 644void xfrm_sad_getinfo(struct net *net, struct xfrmk_sadinfo *si)
645{ 645{
646 spin_lock_bh(&xfrm_state_lock); 646 spin_lock_bh(&xfrm_state_lock);
647 si->sadcnt = init_net.xfrm.state_num; 647 si->sadcnt = net->xfrm.state_num;
648 si->sadhcnt = init_net.xfrm.state_hmask; 648 si->sadhcnt = net->xfrm.state_hmask;
649 si->sadhmcnt = xfrm_state_hashmax; 649 si->sadhmcnt = xfrm_state_hashmax;
650 spin_unlock_bh(&xfrm_state_lock); 650 spin_unlock_bh(&xfrm_state_lock);
651} 651}
@@ -1102,7 +1102,7 @@ static struct xfrm_state *xfrm_state_clone(struct xfrm_state *orig, int *errp)
1102 int err = -ENOMEM; 1102 int err = -ENOMEM;
1103 struct xfrm_state *x = xfrm_state_alloc(net); 1103 struct xfrm_state *x = xfrm_state_alloc(net);
1104 if (!x) 1104 if (!x)
1105 goto error; 1105 goto out;
1106 1106
1107 memcpy(&x->id, &orig->id, sizeof(x->id)); 1107 memcpy(&x->id, &orig->id, sizeof(x->id));
1108 memcpy(&x->sel, &orig->sel, sizeof(x->sel)); 1108 memcpy(&x->sel, &orig->sel, sizeof(x->sel));
@@ -1160,16 +1160,10 @@ static struct xfrm_state *xfrm_state_clone(struct xfrm_state *orig, int *errp)
1160 return x; 1160 return x;
1161 1161
1162 error: 1162 error:
1163 xfrm_state_put(x);
1164out:
1163 if (errp) 1165 if (errp)
1164 *errp = err; 1166 *errp = err;
1165 if (x) {
1166 kfree(x->aalg);
1167 kfree(x->ealg);
1168 kfree(x->calg);
1169 kfree(x->encap);
1170 kfree(x->coaddr);
1171 }
1172 kfree(x);
1173 return NULL; 1167 return NULL;
1174} 1168}
1175 1169
diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
index 1ada6186933c..d5a712976004 100644
--- a/net/xfrm/xfrm_user.c
+++ b/net/xfrm/xfrm_user.c
@@ -781,7 +781,8 @@ static inline size_t xfrm_spdinfo_msgsize(void)
781 + nla_total_size(sizeof(struct xfrmu_spdhinfo)); 781 + nla_total_size(sizeof(struct xfrmu_spdhinfo));
782} 782}
783 783
784static int build_spdinfo(struct sk_buff *skb, u32 pid, u32 seq, u32 flags) 784static int build_spdinfo(struct sk_buff *skb, struct net *net,
785 u32 pid, u32 seq, u32 flags)
785{ 786{
786 struct xfrmk_spdinfo si; 787 struct xfrmk_spdinfo si;
787 struct xfrmu_spdinfo spc; 788 struct xfrmu_spdinfo spc;
@@ -795,7 +796,7 @@ static int build_spdinfo(struct sk_buff *skb, u32 pid, u32 seq, u32 flags)
795 796
796 f = nlmsg_data(nlh); 797 f = nlmsg_data(nlh);
797 *f = flags; 798 *f = flags;
798 xfrm_spd_getinfo(&si); 799 xfrm_spd_getinfo(net, &si);
799 spc.incnt = si.incnt; 800 spc.incnt = si.incnt;
800 spc.outcnt = si.outcnt; 801 spc.outcnt = si.outcnt;
801 spc.fwdcnt = si.fwdcnt; 802 spc.fwdcnt = si.fwdcnt;
@@ -828,7 +829,7 @@ static int xfrm_get_spdinfo(struct sk_buff *skb, struct nlmsghdr *nlh,
828 if (r_skb == NULL) 829 if (r_skb == NULL)
829 return -ENOMEM; 830 return -ENOMEM;
830 831
831 if (build_spdinfo(r_skb, spid, seq, *flags) < 0) 832 if (build_spdinfo(r_skb, net, spid, seq, *flags) < 0)
832 BUG(); 833 BUG();
833 834
834 return nlmsg_unicast(net->xfrm.nlsk, r_skb, spid); 835 return nlmsg_unicast(net->xfrm.nlsk, r_skb, spid);
@@ -841,7 +842,8 @@ static inline size_t xfrm_sadinfo_msgsize(void)
841 + nla_total_size(4); /* XFRMA_SAD_CNT */ 842 + nla_total_size(4); /* XFRMA_SAD_CNT */
842} 843}
843 844
844static int build_sadinfo(struct sk_buff *skb, u32 pid, u32 seq, u32 flags) 845static int build_sadinfo(struct sk_buff *skb, struct net *net,
846 u32 pid, u32 seq, u32 flags)
845{ 847{
846 struct xfrmk_sadinfo si; 848 struct xfrmk_sadinfo si;
847 struct xfrmu_sadhinfo sh; 849 struct xfrmu_sadhinfo sh;
@@ -854,7 +856,7 @@ static int build_sadinfo(struct sk_buff *skb, u32 pid, u32 seq, u32 flags)
854 856
855 f = nlmsg_data(nlh); 857 f = nlmsg_data(nlh);
856 *f = flags; 858 *f = flags;
857 xfrm_sad_getinfo(&si); 859 xfrm_sad_getinfo(net, &si);
858 860
859 sh.sadhmcnt = si.sadhmcnt; 861 sh.sadhmcnt = si.sadhmcnt;
860 sh.sadhcnt = si.sadhcnt; 862 sh.sadhcnt = si.sadhcnt;
@@ -882,7 +884,7 @@ static int xfrm_get_sadinfo(struct sk_buff *skb, struct nlmsghdr *nlh,
882 if (r_skb == NULL) 884 if (r_skb == NULL)
883 return -ENOMEM; 885 return -ENOMEM;
884 886
885 if (build_sadinfo(r_skb, spid, seq, *flags) < 0) 887 if (build_sadinfo(r_skb, net, spid, seq, *flags) < 0)
886 BUG(); 888 BUG();
887 889
888 return nlmsg_unicast(net->xfrm.nlsk, r_skb, spid); 890 return nlmsg_unicast(net->xfrm.nlsk, r_skb, spid);
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index cd815ac2a50b..f9bdf264473d 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -219,8 +219,13 @@ for F in $1; do \
219 fsize=$$(stat -c "%s" $$F); \ 219 fsize=$$(stat -c "%s" $$F); \
220 dec_size=$$(expr $$dec_size + $$fsize); \ 220 dec_size=$$(expr $$dec_size + $$fsize); \
221done; \ 221done; \
222printf "%08x" $$dec_size | \ 222printf "%08x\n" $$dec_size | \
223 sed 's/\(..\)\(..\)\(..\)\(..\)/\\\\x\4\\\\x\3\\\\x\2\\\\x\1/g' \ 223 sed 's/\(..\)/\1 /g' | { \
224 read ch0 ch1 ch2 ch3; \
225 for ch in $$ch3 $$ch2 $$ch1 $$ch0; do \
226 printf '%s%03o' '\\' $$((0x$$ch)); \
227 done; \
228 } \
224) 229)
225 230
226quiet_cmd_bzip2 = BZIP2 $@ 231quiet_cmd_bzip2 = BZIP2 $@
@@ -235,3 +240,8 @@ quiet_cmd_lzma = LZMA $@
235cmd_lzma = (cat $(filter-out FORCE,$^) | \ 240cmd_lzma = (cat $(filter-out FORCE,$^) | \
236 lzma -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \ 241 lzma -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \
237 (rm -f $@ ; false) 242 (rm -f $@ ; false)
243
244quiet_cmd_lzo = LZO $@
245cmd_lzo = (cat $(filter-out FORCE,$^) | \
246 lzop -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \
247 (rm -f $@ ; false)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index bc4114f1ab30..3257d3d96767 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -1,5 +1,5 @@
1#!/usr/bin/perl -w 1#!/usr/bin/perl -w
2# (c) 2001, Dave Jones. <davej@redhat.com> (the file handling bit) 2# (c) 2001, Dave Jones. (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,2009, Andy Whitcroft <apw@canonical.com> 5# (c) 2008,2009, Andy Whitcroft <apw@canonical.com>
diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl
index 445e8845f0a4..2f3230db7ffb 100755
--- a/scripts/get_maintainer.pl
+++ b/scripts/get_maintainer.pl
@@ -74,8 +74,8 @@ my %VCS_cmds;
74my %VCS_cmds_git = ( 74my %VCS_cmds_git = (
75 "execute_cmd" => \&git_execute_cmd, 75 "execute_cmd" => \&git_execute_cmd,
76 "available" => '(which("git") ne "") && (-d ".git")', 76 "available" => '(which("git") ne "") && (-d ".git")',
77 "find_signers_cmd" => "git log --since=\$email_git_since -- \$file", 77 "find_signers_cmd" => "git log --no-color --since=\$email_git_since -- \$file",
78 "find_commit_signers_cmd" => "git log -1 \$commit", 78 "find_commit_signers_cmd" => "git log --no-color -1 \$commit",
79 "blame_range_cmd" => "git blame -l -L \$diff_start,+\$diff_length \$file", 79 "blame_range_cmd" => "git blame -l -L \$diff_start,+\$diff_length \$file",
80 "blame_file_cmd" => "git blame -l \$file", 80 "blame_file_cmd" => "git blame -l \$file",
81 "commit_pattern" => "^commit [0-9a-f]{40,40}", 81 "commit_pattern" => "^commit [0-9a-f]{40,40}",
@@ -296,46 +296,56 @@ my @status = ();
296 296
297foreach my $file (@files) { 297foreach my $file (@files) {
298 298
299#Do not match excluded file patterns 299 my %hash;
300 300 my $tvi = find_first_section();
301 my $exclude = 0; 301 while ($tvi < @typevalue) {
302 foreach my $line (@typevalue) { 302 my $start = find_starting_index($tvi);
303 if ($line =~ m/^(\C):\s*(.*)/) { 303 my $end = find_ending_index($tvi);
304 my $type = $1; 304 my $exclude = 0;
305 my $value = $2; 305 my $i;
306 if ($type eq 'X') { 306
307 if (file_match_pattern($file, $value)) { 307 #Do not match excluded file patterns
308 $exclude = 1;
309 last;
310 }
311 }
312 }
313 }
314 308
315 if (!$exclude) { 309 for ($i = $start; $i < $end; $i++) {
316 my $tvi = 0; 310 my $line = $typevalue[$i];
317 my %hash;
318 foreach my $line (@typevalue) {
319 if ($line =~ m/^(\C):\s*(.*)/) { 311 if ($line =~ m/^(\C):\s*(.*)/) {
320 my $type = $1; 312 my $type = $1;
321 my $value = $2; 313 my $value = $2;
322 if ($type eq 'F') { 314 if ($type eq 'X') {
323 if (file_match_pattern($file, $value)) { 315 if (file_match_pattern($file, $value)) {
324 my $value_pd = ($value =~ tr@/@@); 316 $exclude = 1;
325 my $file_pd = ($file =~ tr@/@@);
326 $value_pd++ if (substr($value,-1,1) ne "/");
327 if ($pattern_depth == 0 ||
328 (($file_pd - $value_pd) < $pattern_depth)) {
329 $hash{$tvi} = $value_pd;
330 }
331 } 317 }
332 } 318 }
333 } 319 }
334 $tvi++;
335 } 320 }
336 foreach my $line (sort {$hash{$b} <=> $hash{$a}} keys %hash) { 321
337 add_categories($line); 322 if (!$exclude) {
323 for ($i = $start; $i < $end; $i++) {
324 my $line = $typevalue[$i];
325 if ($line =~ m/^(\C):\s*(.*)/) {
326 my $type = $1;
327 my $value = $2;
328 if ($type eq 'F') {
329 if (file_match_pattern($file, $value)) {
330 my $value_pd = ($value =~ tr@/@@);
331 my $file_pd = ($file =~ tr@/@@);
332 $value_pd++ if (substr($value,-1,1) ne "/");
333 if ($pattern_depth == 0 ||
334 (($file_pd - $value_pd) < $pattern_depth)) {
335 $hash{$tvi} = $value_pd;
336 }
337 }
338 }
339 }
340 }
338 } 341 }
342
343 $tvi += ($end - $start);
344
345 }
346
347 foreach my $line (sort {$hash{$b} <=> $hash{$a}} keys %hash) {
348 add_categories($line);
339 } 349 }
340 350
341 if ($email && $email_git) { 351 if ($email && $email_git) {
@@ -570,6 +580,20 @@ sub format_email {
570 return $formatted_email; 580 return $formatted_email;
571} 581}
572 582
583sub find_first_section {
584 my $index = 0;
585
586 while ($index < @typevalue) {
587 my $tv = $typevalue[$index];
588 if (($tv =~ m/^(\C):\s*(.*)/)) {
589 last;
590 }
591 $index++;
592 }
593
594 return $index;
595}
596
573sub find_starting_index { 597sub find_starting_index {
574 my ($index) = @_; 598 my ($index) = @_;
575 599
diff --git a/scripts/markup_oops.pl b/scripts/markup_oops.pl
index 5f0fcb712e29..e950f9cde019 100644
--- a/scripts/markup_oops.pl
+++ b/scripts/markup_oops.pl
@@ -154,11 +154,11 @@ while (<STDIN>) {
154 if ($line =~ /RIP: 0010:\[\<([a-z0-9]+)\>\]/) { 154 if ($line =~ /RIP: 0010:\[\<([a-z0-9]+)\>\]/) {
155 $target = $1; 155 $target = $1;
156 } 156 }
157 if ($line =~ /EIP is at ([a-zA-Z0-9\_]+)\+(0x[0-9a-f]+)\/0x[a-f0-9]/) { 157 if ($line =~ /EIP is at ([a-zA-Z0-9\_]+)\+0x([0-9a-f]+)\/0x[a-f0-9]/) {
158 $function = $1; 158 $function = $1;
159 $func_offset = $2; 159 $func_offset = $2;
160 } 160 }
161 if ($line =~ /RIP: 0010:\[\<[0-9a-f]+\>\] \[\<[0-9a-f]+\>\] ([a-zA-Z0-9\_]+)\+(0x[0-9a-f]+)\/0x[a-f0-9]/) { 161 if ($line =~ /RIP: 0010:\[\<[0-9a-f]+\>\] \[\<[0-9a-f]+\>\] ([a-zA-Z0-9\_]+)\+0x([0-9a-f]+)\/0x[a-f0-9]/) {
162 $function = $1; 162 $function = $1;
163 $func_offset = $2; 163 $func_offset = $2;
164 } 164 }
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
index 6f426afbc522..220213e603db 100644
--- a/scripts/mod/file2alias.c
+++ b/scripts/mod/file2alias.c
@@ -804,7 +804,7 @@ static inline int sym_is(const char *symbol, const char *name)
804 match = strstr(symbol, name); 804 match = strstr(symbol, name);
805 if (!match) 805 if (!match)
806 return 0; 806 return 0;
807 return match[strlen(symbol)] == '\0'; 807 return match[strlen(name)] == '\0';
808} 808}
809 809
810static void do_table(void *symval, unsigned long size, 810static void do_table(void *symval, unsigned long size,
diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl
index 92f09fe9639e..ea6f6e3adaea 100755
--- a/scripts/recordmcount.pl
+++ b/scripts/recordmcount.pl
@@ -194,7 +194,7 @@ sub check_objcopy
194 } 194 }
195} 195}
196 196
197if ($arch eq "x86") { 197if ($arch =~ /(x86(_64)?)|(i386)/) {
198 if ($bits == 64) { 198 if ($bits == 64) {
199 $arch = "x86_64"; 199 $arch = "x86_64";
200 } else { 200 } else {
diff --git a/security/inode.c b/security/inode.c
index f7496c6a022b..c3a793881d04 100644
--- a/security/inode.c
+++ b/security/inode.c
@@ -156,15 +156,8 @@ static int create_by_name(const char *name, mode_t mode,
156 * block. A pointer to that is in the struct vfsmount that we 156 * block. A pointer to that is in the struct vfsmount that we
157 * have around. 157 * have around.
158 */ 158 */
159 if (!parent ) { 159 if (!parent)
160 if (mount && mount->mnt_sb) { 160 parent = mount->mnt_sb->s_root;
161 parent = mount->mnt_sb->s_root;
162 }
163 }
164 if (!parent) {
165 pr_debug("securityfs: Ah! can not find a parent!\n");
166 return -EFAULT;
167 }
168 161
169 mutex_lock(&parent->d_inode->i_mutex); 162 mutex_lock(&parent->d_inode->i_mutex);
170 *dentry = lookup_one_len(name, parent, strlen(name)); 163 *dentry = lookup_one_len(name, parent, strlen(name));
diff --git a/security/integrity/ima/ima.h b/security/integrity/ima/ima.h
index c41afe6639a0..47fb65d1fcbd 100644
--- a/security/integrity/ima/ima.h
+++ b/security/integrity/ima/ima.h
@@ -65,7 +65,6 @@ void integrity_audit_msg(int audit_msgno, struct inode *inode,
65 const char *cause, int result, int info); 65 const char *cause, int result, int info);
66 66
67/* Internal IMA function definitions */ 67/* Internal IMA function definitions */
68void ima_iintcache_init(void);
69int ima_init(void); 68int ima_init(void);
70void ima_cleanup(void); 69void ima_cleanup(void);
71int ima_fs_init(void); 70int ima_fs_init(void);
@@ -131,7 +130,7 @@ void iint_free(struct kref *kref);
131void iint_rcu_free(struct rcu_head *rcu); 130void iint_rcu_free(struct rcu_head *rcu);
132 131
133/* IMA policy related functions */ 132/* IMA policy related functions */
134enum ima_hooks { PATH_CHECK = 1, FILE_MMAP, BPRM_CHECK }; 133enum ima_hooks { FILE_CHECK = 1, FILE_MMAP, BPRM_CHECK };
135 134
136int ima_match_policy(struct inode *inode, enum ima_hooks func, int mask); 135int ima_match_policy(struct inode *inode, enum ima_hooks func, int mask);
137void ima_init_policy(void); 136void ima_init_policy(void);
diff --git a/security/integrity/ima/ima_api.c b/security/integrity/ima/ima_api.c
index 3cd58b60afd2..2a5e0bcf3887 100644
--- a/security/integrity/ima/ima_api.c
+++ b/security/integrity/ima/ima_api.c
@@ -95,12 +95,12 @@ err_out:
95 * ima_must_measure - measure decision based on policy. 95 * ima_must_measure - measure decision based on policy.
96 * @inode: pointer to inode to measure 96 * @inode: pointer to inode to measure
97 * @mask: contains the permission mask (MAY_READ, MAY_WRITE, MAY_EXECUTE) 97 * @mask: contains the permission mask (MAY_READ, MAY_WRITE, MAY_EXECUTE)
98 * @function: calling function (PATH_CHECK, BPRM_CHECK, FILE_MMAP) 98 * @function: calling function (FILE_CHECK, BPRM_CHECK, FILE_MMAP)
99 * 99 *
100 * The policy is defined in terms of keypairs: 100 * The policy is defined in terms of keypairs:
101 * subj=, obj=, type=, func=, mask=, fsmagic= 101 * subj=, obj=, type=, func=, mask=, fsmagic=
102 * subj,obj, and type: are LSM specific. 102 * subj,obj, and type: are LSM specific.
103 * func: PATH_CHECK | BPRM_CHECK | FILE_MMAP 103 * func: FILE_CHECK | BPRM_CHECK | FILE_MMAP
104 * mask: contains the permission mask 104 * mask: contains the permission mask
105 * fsmagic: hex value 105 * fsmagic: hex value
106 * 106 *
diff --git a/security/integrity/ima/ima_iint.c b/security/integrity/ima/ima_iint.c
index fa592ff1ac1c..0d83edcfc402 100644
--- a/security/integrity/ima/ima_iint.c
+++ b/security/integrity/ima/ima_iint.c
@@ -52,9 +52,6 @@ int ima_inode_alloc(struct inode *inode)
52 struct ima_iint_cache *iint = NULL; 52 struct ima_iint_cache *iint = NULL;
53 int rc = 0; 53 int rc = 0;
54 54
55 if (!ima_initialized)
56 return 0;
57
58 iint = kmem_cache_alloc(iint_cache, GFP_NOFS); 55 iint = kmem_cache_alloc(iint_cache, GFP_NOFS);
59 if (!iint) 56 if (!iint)
60 return -ENOMEM; 57 return -ENOMEM;
@@ -118,8 +115,6 @@ void ima_inode_free(struct inode *inode)
118{ 115{
119 struct ima_iint_cache *iint; 116 struct ima_iint_cache *iint;
120 117
121 if (!ima_initialized)
122 return;
123 spin_lock(&ima_iint_lock); 118 spin_lock(&ima_iint_lock);
124 iint = radix_tree_delete(&ima_iint_store, (unsigned long)inode); 119 iint = radix_tree_delete(&ima_iint_store, (unsigned long)inode);
125 spin_unlock(&ima_iint_lock); 120 spin_unlock(&ima_iint_lock);
@@ -141,9 +136,11 @@ static void init_once(void *foo)
141 kref_set(&iint->refcount, 1); 136 kref_set(&iint->refcount, 1);
142} 137}
143 138
144void __init ima_iintcache_init(void) 139static int __init ima_iintcache_init(void)
145{ 140{
146 iint_cache = 141 iint_cache =
147 kmem_cache_create("iint_cache", sizeof(struct ima_iint_cache), 0, 142 kmem_cache_create("iint_cache", sizeof(struct ima_iint_cache), 0,
148 SLAB_PANIC, init_once); 143 SLAB_PANIC, init_once);
144 return 0;
149} 145}
146security_initcall(ima_iintcache_init);
diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c
index a89f44d5e030..294b005d6520 100644
--- a/security/integrity/ima/ima_main.c
+++ b/security/integrity/ima/ima_main.c
@@ -14,7 +14,7 @@
14 * 14 *
15 * File: ima_main.c 15 * File: ima_main.c
16 * implements the IMA hooks: ima_bprm_check, ima_file_mmap, 16 * implements the IMA hooks: ima_bprm_check, ima_file_mmap,
17 * and ima_path_check. 17 * and ima_file_check.
18 */ 18 */
19#include <linux/module.h> 19#include <linux/module.h>
20#include <linux/file.h> 20#include <linux/file.h>
@@ -84,6 +84,36 @@ out:
84 return found; 84 return found;
85} 85}
86 86
87/* ima_read_write_check - reflect possible reading/writing errors in the PCR.
88 *
89 * When opening a file for read, if the file is already open for write,
90 * the file could change, resulting in a file measurement error.
91 *
92 * Opening a file for write, if the file is already open for read, results
93 * in a time of measure, time of use (ToMToU) error.
94 *
95 * In either case invalidate the PCR.
96 */
97enum iint_pcr_error { TOMTOU, OPEN_WRITERS };
98static void ima_read_write_check(enum iint_pcr_error error,
99 struct ima_iint_cache *iint,
100 struct inode *inode,
101 const unsigned char *filename)
102{
103 switch (error) {
104 case TOMTOU:
105 if (iint->readcount > 0)
106 ima_add_violation(inode, filename, "invalid_pcr",
107 "ToMToU");
108 break;
109 case OPEN_WRITERS:
110 if (iint->writecount > 0)
111 ima_add_violation(inode, filename, "invalid_pcr",
112 "open_writers");
113 break;
114 }
115}
116
87/* 117/*
88 * Update the counts given an fmode_t 118 * Update the counts given an fmode_t
89 */ 119 */
@@ -99,6 +129,47 @@ static void ima_inc_counts(struct ima_iint_cache *iint, fmode_t mode)
99} 129}
100 130
101/* 131/*
132 * ima_counts_get - increment file counts
133 *
134 * Maintain read/write counters for all files, but only
135 * invalidate the PCR for measured files:
136 * - Opening a file for write when already open for read,
137 * results in a time of measure, time of use (ToMToU) error.
138 * - Opening a file for read when already open for write,
139 * could result in a file measurement error.
140 *
141 */
142void ima_counts_get(struct file *file)
143{
144 struct dentry *dentry = file->f_path.dentry;
145 struct inode *inode = dentry->d_inode;
146 fmode_t mode = file->f_mode;
147 struct ima_iint_cache *iint;
148 int rc;
149
150 if (!ima_initialized || !S_ISREG(inode->i_mode))
151 return;
152 iint = ima_iint_find_get(inode);
153 if (!iint)
154 return;
155 mutex_lock(&iint->mutex);
156 rc = ima_must_measure(iint, inode, MAY_READ, FILE_CHECK);
157 if (rc < 0)
158 goto out;
159
160 if (mode & FMODE_WRITE) {
161 ima_read_write_check(TOMTOU, iint, inode, dentry->d_name.name);
162 goto out;
163 }
164 ima_read_write_check(OPEN_WRITERS, iint, inode, dentry->d_name.name);
165out:
166 ima_inc_counts(iint, file->f_mode);
167 mutex_unlock(&iint->mutex);
168
169 kref_put(&iint->refcount, iint_free);
170}
171
172/*
102 * Decrement ima counts 173 * Decrement ima counts
103 */ 174 */
104static void ima_dec_counts(struct ima_iint_cache *iint, struct inode *inode, 175static void ima_dec_counts(struct ima_iint_cache *iint, struct inode *inode,
@@ -153,123 +224,6 @@ void ima_file_free(struct file *file)
153 kref_put(&iint->refcount, iint_free); 224 kref_put(&iint->refcount, iint_free);
154} 225}
155 226
156/* ima_read_write_check - reflect possible reading/writing errors in the PCR.
157 *
158 * When opening a file for read, if the file is already open for write,
159 * the file could change, resulting in a file measurement error.
160 *
161 * Opening a file for write, if the file is already open for read, results
162 * in a time of measure, time of use (ToMToU) error.
163 *
164 * In either case invalidate the PCR.
165 */
166enum iint_pcr_error { TOMTOU, OPEN_WRITERS };
167static void ima_read_write_check(enum iint_pcr_error error,
168 struct ima_iint_cache *iint,
169 struct inode *inode,
170 const unsigned char *filename)
171{
172 switch (error) {
173 case TOMTOU:
174 if (iint->readcount > 0)
175 ima_add_violation(inode, filename, "invalid_pcr",
176 "ToMToU");
177 break;
178 case OPEN_WRITERS:
179 if (iint->writecount > 0)
180 ima_add_violation(inode, filename, "invalid_pcr",
181 "open_writers");
182 break;
183 }
184}
185
186static int get_path_measurement(struct ima_iint_cache *iint, struct file *file,
187 const unsigned char *filename)
188{
189 int rc = 0;
190
191 ima_inc_counts(iint, file->f_mode);
192
193 rc = ima_collect_measurement(iint, file);
194 if (!rc)
195 ima_store_measurement(iint, file, filename);
196 return rc;
197}
198
199/**
200 * ima_path_check - based on policy, collect/store measurement.
201 * @path: contains a pointer to the path to be measured
202 * @mask: contains MAY_READ, MAY_WRITE or MAY_EXECUTE
203 *
204 * Measure the file being open for readonly, based on the
205 * ima_must_measure() policy decision.
206 *
207 * Keep read/write counters for all files, but only
208 * invalidate the PCR for measured files:
209 * - Opening a file for write when already open for read,
210 * results in a time of measure, time of use (ToMToU) error.
211 * - Opening a file for read when already open for write,
212 * could result in a file measurement error.
213 *
214 * Always return 0 and audit dentry_open failures.
215 * (Return code will be based upon measurement appraisal.)
216 */
217int ima_path_check(struct path *path, int mask)
218{
219 struct inode *inode = path->dentry->d_inode;
220 struct ima_iint_cache *iint;
221 struct file *file = NULL;
222 int rc;
223
224 if (!ima_initialized || !S_ISREG(inode->i_mode))
225 return 0;
226 iint = ima_iint_find_get(inode);
227 if (!iint)
228 return 0;
229
230 mutex_lock(&iint->mutex);
231
232 rc = ima_must_measure(iint, inode, MAY_READ, PATH_CHECK);
233 if (rc < 0)
234 goto out;
235
236 if ((mask & MAY_WRITE) || (mask == 0))
237 ima_read_write_check(TOMTOU, iint, inode,
238 path->dentry->d_name.name);
239
240 if ((mask & (MAY_WRITE | MAY_READ | MAY_EXEC)) != MAY_READ)
241 goto out;
242
243 ima_read_write_check(OPEN_WRITERS, iint, inode,
244 path->dentry->d_name.name);
245 if (!(iint->flags & IMA_MEASURED)) {
246 struct dentry *dentry = dget(path->dentry);
247 struct vfsmount *mnt = mntget(path->mnt);
248
249 file = dentry_open(dentry, mnt, O_RDONLY | O_LARGEFILE,
250 current_cred());
251 if (IS_ERR(file)) {
252 int audit_info = 0;
253
254 integrity_audit_msg(AUDIT_INTEGRITY_PCR, inode,
255 dentry->d_name.name,
256 "add_measurement",
257 "dentry_open failed",
258 1, audit_info);
259 file = NULL;
260 goto out;
261 }
262 rc = get_path_measurement(iint, file, dentry->d_name.name);
263 }
264out:
265 mutex_unlock(&iint->mutex);
266 if (file)
267 fput(file);
268 kref_put(&iint->refcount, iint_free);
269 return 0;
270}
271EXPORT_SYMBOL_GPL(ima_path_check);
272
273static int process_measurement(struct file *file, const unsigned char *filename, 227static int process_measurement(struct file *file, const unsigned char *filename,
274 int mask, int function) 228 int mask, int function)
275{ 229{
@@ -297,33 +251,6 @@ out:
297 return rc; 251 return rc;
298} 252}
299 253
300/*
301 * ima_counts_get - increment file counts
302 *
303 * - for IPC shm and shmat file.
304 * - for nfsd exported files.
305 *
306 * Increment the counts for these files to prevent unnecessary
307 * imbalance messages.
308 */
309void ima_counts_get(struct file *file)
310{
311 struct inode *inode = file->f_dentry->d_inode;
312 struct ima_iint_cache *iint;
313
314 if (!ima_initialized || !S_ISREG(inode->i_mode))
315 return;
316 iint = ima_iint_find_get(inode);
317 if (!iint)
318 return;
319 mutex_lock(&iint->mutex);
320 ima_inc_counts(iint, file->f_mode);
321 mutex_unlock(&iint->mutex);
322
323 kref_put(&iint->refcount, iint_free);
324}
325EXPORT_SYMBOL_GPL(ima_counts_get);
326
327/** 254/**
328 * ima_file_mmap - based on policy, collect/store measurement. 255 * ima_file_mmap - based on policy, collect/store measurement.
329 * @file: pointer to the file to be measured (May be NULL) 256 * @file: pointer to the file to be measured (May be NULL)
@@ -369,11 +296,31 @@ int ima_bprm_check(struct linux_binprm *bprm)
369 return 0; 296 return 0;
370} 297}
371 298
299/**
300 * ima_path_check - based on policy, collect/store measurement.
301 * @file: pointer to the file to be measured
302 * @mask: contains MAY_READ, MAY_WRITE or MAY_EXECUTE
303 *
304 * Measure files based on the ima_must_measure() policy decision.
305 *
306 * Always return 0 and audit dentry_open failures.
307 * (Return code will be based upon measurement appraisal.)
308 */
309int ima_file_check(struct file *file, int mask)
310{
311 int rc;
312
313 rc = process_measurement(file, file->f_dentry->d_name.name,
314 mask & (MAY_READ | MAY_WRITE | MAY_EXEC),
315 FILE_CHECK);
316 return 0;
317}
318EXPORT_SYMBOL_GPL(ima_file_check);
319
372static int __init init_ima(void) 320static int __init init_ima(void)
373{ 321{
374 int error; 322 int error;
375 323
376 ima_iintcache_init();
377 error = ima_init(); 324 error = ima_init();
378 ima_initialized = 1; 325 ima_initialized = 1;
379 return error; 326 return error;
diff --git a/security/integrity/ima/ima_policy.c b/security/integrity/ima/ima_policy.c
index e1278399b345..4759d0f99335 100644
--- a/security/integrity/ima/ima_policy.c
+++ b/security/integrity/ima/ima_policy.c
@@ -67,7 +67,7 @@ static struct ima_measure_rule_entry default_rules[] = {
67 .flags = IMA_FUNC | IMA_MASK}, 67 .flags = IMA_FUNC | IMA_MASK},
68 {.action = MEASURE,.func = BPRM_CHECK,.mask = MAY_EXEC, 68 {.action = MEASURE,.func = BPRM_CHECK,.mask = MAY_EXEC,
69 .flags = IMA_FUNC | IMA_MASK}, 69 .flags = IMA_FUNC | IMA_MASK},
70 {.action = MEASURE,.func = PATH_CHECK,.mask = MAY_READ,.uid = 0, 70 {.action = MEASURE,.func = FILE_CHECK,.mask = MAY_READ,.uid = 0,
71 .flags = IMA_FUNC | IMA_MASK | IMA_UID}, 71 .flags = IMA_FUNC | IMA_MASK | IMA_UID},
72}; 72};
73 73
@@ -282,8 +282,11 @@ static int ima_parse_rule(char *rule, struct ima_measure_rule_entry *entry)
282 break; 282 break;
283 case Opt_func: 283 case Opt_func:
284 audit_log_format(ab, "func=%s ", args[0].from); 284 audit_log_format(ab, "func=%s ", args[0].from);
285 if (strcmp(args[0].from, "PATH_CHECK") == 0) 285 if (strcmp(args[0].from, "FILE_CHECK") == 0)
286 entry->func = PATH_CHECK; 286 entry->func = FILE_CHECK;
287 /* PATH_CHECK is for backwards compat */
288 else if (strcmp(args[0].from, "PATH_CHECK") == 0)
289 entry->func = FILE_CHECK;
287 else if (strcmp(args[0].from, "FILE_MMAP") == 0) 290 else if (strcmp(args[0].from, "FILE_MMAP") == 0)
288 entry->func = FILE_MMAP; 291 entry->func = FILE_MMAP;
289 else if (strcmp(args[0].from, "BPRM_CHECK") == 0) 292 else if (strcmp(args[0].from, "BPRM_CHECK") == 0)
diff --git a/security/security.c b/security/security.c
index 24e060be9fa5..122b748d0f4c 100644
--- a/security/security.c
+++ b/security/security.c
@@ -666,8 +666,6 @@ int security_file_alloc(struct file *file)
666void security_file_free(struct file *file) 666void security_file_free(struct file *file)
667{ 667{
668 security_ops->file_free_security(file); 668 security_ops->file_free_security(file);
669 if (file->f_dentry)
670 ima_file_free(file);
671} 669}
672 670
673int security_file_ioctl(struct file *file, unsigned int cmd, unsigned long arg) 671int security_file_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index 7a374c2eb043..9a2ee845e9d4 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -2365,7 +2365,7 @@ static void selinux_bprm_committing_creds(struct linux_binprm *bprm)
2365 initrlim = init_task.signal->rlim + i; 2365 initrlim = init_task.signal->rlim + i;
2366 rlim->rlim_cur = min(rlim->rlim_max, initrlim->rlim_cur); 2366 rlim->rlim_cur = min(rlim->rlim_max, initrlim->rlim_cur);
2367 } 2367 }
2368 update_rlimit_cpu(rlim->rlim_cur); 2368 update_rlimit_cpu(current->signal->rlim[RLIMIT_CPU].rlim_cur);
2369 } 2369 }
2370} 2370}
2371 2371
diff --git a/security/tomoyo/tomoyo.c b/security/tomoyo/tomoyo.c
index 8a00ade85166..2aceebf5f354 100644
--- a/security/tomoyo/tomoyo.c
+++ b/security/tomoyo/tomoyo.c
@@ -80,9 +80,8 @@ static int tomoyo_bprm_check_security(struct linux_binprm *bprm)
80 return tomoyo_find_next_domain(bprm); 80 return tomoyo_find_next_domain(bprm);
81 /* 81 /*
82 * Read permission is checked against interpreters using next domain. 82 * Read permission is checked against interpreters using next domain.
83 * '1' is the result of open_to_namei_flags(O_RDONLY).
84 */ 83 */
85 return tomoyo_check_open_permission(domain, &bprm->file->f_path, 1); 84 return tomoyo_check_open_permission(domain, &bprm->file->f_path, O_RDONLY);
86} 85}
87 86
88static int tomoyo_path_truncate(struct path *path, loff_t length, 87static int tomoyo_path_truncate(struct path *path, loff_t length,
@@ -184,10 +183,6 @@ static int tomoyo_file_fcntl(struct file *file, unsigned int cmd,
184static int tomoyo_dentry_open(struct file *f, const struct cred *cred) 183static int tomoyo_dentry_open(struct file *f, const struct cred *cred)
185{ 184{
186 int flags = f->f_flags; 185 int flags = f->f_flags;
187
188 if ((flags + 1) & O_ACCMODE)
189 flags++;
190 flags |= f->f_flags & (O_APPEND | O_TRUNC);
191 /* Don't check read permission here if called from do_execve(). */ 186 /* Don't check read permission here if called from do_execve(). */
192 if (current->in_execve) 187 if (current->in_execve)
193 return 0; 188 return 0;
diff --git a/sound/arm/aaci.c b/sound/arm/aaci.c
index c5699863643b..656e474dca47 100644
--- a/sound/arm/aaci.c
+++ b/sound/arm/aaci.c
@@ -441,6 +441,7 @@ static int aaci_pcm_hw_params(struct snd_pcm_substream *substream,
441 struct snd_pcm_hw_params *params) 441 struct snd_pcm_hw_params *params)
442{ 442{
443 int err; 443 int err;
444 struct aaci *aaci = substream->private_data;
444 445
445 aaci_pcm_hw_free(substream); 446 aaci_pcm_hw_free(substream);
446 if (aacirun->pcm_open) { 447 if (aacirun->pcm_open) {
@@ -560,7 +561,6 @@ static int aaci_pcm_open(struct snd_pcm_substream *substream)
560static int aaci_pcm_playback_hw_params(struct snd_pcm_substream *substream, 561static int aaci_pcm_playback_hw_params(struct snd_pcm_substream *substream,
561 struct snd_pcm_hw_params *params) 562 struct snd_pcm_hw_params *params)
562{ 563{
563 struct aaci *aaci = substream->private_data;
564 struct aaci_runtime *aacirun = substream->runtime->private_data; 564 struct aaci_runtime *aacirun = substream->runtime->private_data;
565 unsigned int channels = params_channels(params); 565 unsigned int channels = params_channels(params);
566 int ret; 566 int ret;
@@ -659,7 +659,6 @@ static struct snd_pcm_ops aaci_playback_ops = {
659static int aaci_pcm_capture_hw_params(struct snd_pcm_substream *substream, 659static int aaci_pcm_capture_hw_params(struct snd_pcm_substream *substream,
660 struct snd_pcm_hw_params *params) 660 struct snd_pcm_hw_params *params)
661{ 661{
662 struct aaci *aaci = substream->private_data;
663 struct aaci_runtime *aacirun = substream->runtime->private_data; 662 struct aaci_runtime *aacirun = substream->runtime->private_data;
664 int ret; 663 int ret;
665 664
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
index 29ab46a12e11..25b0641e6b8c 100644
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -1918,13 +1918,13 @@ int snd_pcm_hw_constraints_complete(struct snd_pcm_substream *substream)
1918 1918
1919 err = snd_pcm_hw_constraint_minmax(runtime, SNDRV_PCM_HW_PARAM_RATE, 1919 err = snd_pcm_hw_constraint_minmax(runtime, SNDRV_PCM_HW_PARAM_RATE,
1920 hw->rate_min, hw->rate_max); 1920 hw->rate_min, hw->rate_max);
1921 if (err < 0) 1921 if (err < 0)
1922 return err; 1922 return err;
1923 1923
1924 err = snd_pcm_hw_constraint_minmax(runtime, SNDRV_PCM_HW_PARAM_PERIOD_BYTES, 1924 err = snd_pcm_hw_constraint_minmax(runtime, SNDRV_PCM_HW_PARAM_PERIOD_BYTES,
1925 hw->period_bytes_min, hw->period_bytes_max); 1925 hw->period_bytes_min, hw->period_bytes_max);
1926 if (err < 0) 1926 if (err < 0)
1927 return err; 1927 return err;
1928 1928
1929 err = snd_pcm_hw_constraint_minmax(runtime, SNDRV_PCM_HW_PARAM_PERIODS, 1929 err = snd_pcm_hw_constraint_minmax(runtime, SNDRV_PCM_HW_PARAM_PERIODS,
1930 hw->periods_min, hw->periods_max); 1930 hw->periods_min, hw->periods_max);
diff --git a/sound/core/sound.c b/sound/core/sound.c
index 7872a02f6ca9..563d1967a0ad 100644
--- a/sound/core/sound.c
+++ b/sound/core/sound.c
@@ -468,5 +468,5 @@ static void __exit alsa_sound_exit(void)
468 unregister_chrdev(major, "alsa"); 468 unregister_chrdev(major, "alsa");
469} 469}
470 470
471module_init(alsa_sound_init) 471subsys_initcall(alsa_sound_init);
472module_exit(alsa_sound_exit) 472module_exit(alsa_sound_exit);
diff --git a/sound/core/sound_oss.c b/sound/core/sound_oss.c
index 7fe12264ff80..0c164e5e4322 100644
--- a/sound/core/sound_oss.c
+++ b/sound/core/sound_oss.c
@@ -93,7 +93,7 @@ static int snd_oss_kernel_minor(int type, struct snd_card *card, int dev)
93 default: 93 default:
94 return -EINVAL; 94 return -EINVAL;
95 } 95 }
96 if (snd_BUG_ON(minor < 0 || minor >= SNDRV_OSS_MINORS)) 96 if (minor < 0 || minor >= SNDRV_OSS_MINORS)
97 return -EINVAL; 97 return -EINVAL;
98 return minor; 98 return minor;
99} 99}
diff --git a/sound/isa/sb/emu8000.c b/sound/isa/sb/emu8000.c
index 751762f1c59a..0c40951b6523 100644
--- a/sound/isa/sb/emu8000.c
+++ b/sound/isa/sb/emu8000.c
@@ -377,12 +377,13 @@ init_arrays(struct snd_emu8000 *emu)
377static void __devinit 377static void __devinit
378size_dram(struct snd_emu8000 *emu) 378size_dram(struct snd_emu8000 *emu)
379{ 379{
380 int i, size; 380 int i, size, detected_size;
381 381
382 if (emu->dram_checked) 382 if (emu->dram_checked)
383 return; 383 return;
384 384
385 size = 0; 385 size = 0;
386 detected_size = 0;
386 387
387 /* write out a magic number */ 388 /* write out a magic number */
388 snd_emu8000_dma_chan(emu, 0, EMU8000_RAM_WRITE); 389 snd_emu8000_dma_chan(emu, 0, EMU8000_RAM_WRITE);
@@ -393,6 +394,8 @@ size_dram(struct snd_emu8000 *emu)
393 394
394 while (size < EMU8000_MAX_DRAM) { 395 while (size < EMU8000_MAX_DRAM) {
395 396
397 size += 512 * 1024; /* increment 512kbytes */
398
396 /* Write a unique data on the test address. 399 /* Write a unique data on the test address.
397 * if the address is out of range, the data is written on 400 * if the address is out of range, the data is written on
398 * 0x200000(=EMU8000_DRAM_OFFSET). Then the id word is 401 * 0x200000(=EMU8000_DRAM_OFFSET). Then the id word is
@@ -414,7 +417,7 @@ size_dram(struct snd_emu8000 *emu)
414 if (EMU8000_SMLD_READ(emu) != UNIQUE_ID2) 417 if (EMU8000_SMLD_READ(emu) != UNIQUE_ID2)
415 break; /* no memory at this address */ 418 break; /* no memory at this address */
416 419
417 size += 512 * 1024; /* increment 512kbytes */ 420 detected_size = size;
418 421
419 snd_emu8000_read_wait(emu); 422 snd_emu8000_read_wait(emu);
420 423
@@ -442,9 +445,9 @@ size_dram(struct snd_emu8000 *emu)
442 snd_emu8000_dma_chan(emu, 1, EMU8000_RAM_CLOSE); 445 snd_emu8000_dma_chan(emu, 1, EMU8000_RAM_CLOSE);
443 446
444 snd_printdd("EMU8000 [0x%lx]: %d Kb on-board memory detected\n", 447 snd_printdd("EMU8000 [0x%lx]: %d Kb on-board memory detected\n",
445 emu->port1, size/1024); 448 emu->port1, detected_size/1024);
446 449
447 emu->mem_size = size; 450 emu->mem_size = detected_size;
448 emu->dram_checked = 1; 451 emu->dram_checked = 1;
449} 452}
450 453
diff --git a/sound/oss/dev_table.c b/sound/oss/dev_table.c
index 08274c995d06..727bdb9ba2dc 100644
--- a/sound/oss/dev_table.c
+++ b/sound/oss/dev_table.c
@@ -67,14 +67,15 @@ int sound_install_audiodrv(int vers, char *name, struct audio_driver *driver,
67 return -(EBUSY); 67 return -(EBUSY);
68 } 68 }
69 d = (struct audio_driver *) (sound_mem_blocks[sound_nblocks] = vmalloc(sizeof(struct audio_driver))); 69 d = (struct audio_driver *) (sound_mem_blocks[sound_nblocks] = vmalloc(sizeof(struct audio_driver)));
70 70 sound_nblocks++;
71 if (sound_nblocks < 1024) 71 if (sound_nblocks >= MAX_MEM_BLOCKS)
72 sound_nblocks++; 72 sound_nblocks = MAX_MEM_BLOCKS - 1;
73 73
74 op = (struct audio_operations *) (sound_mem_blocks[sound_nblocks] = vmalloc(sizeof(struct audio_operations))); 74 op = (struct audio_operations *) (sound_mem_blocks[sound_nblocks] = vmalloc(sizeof(struct audio_operations)));
75 sound_nblocks++;
76 if (sound_nblocks >= MAX_MEM_BLOCKS)
77 sound_nblocks = MAX_MEM_BLOCKS - 1;
75 78
76 if (sound_nblocks < 1024)
77 sound_nblocks++;
78 if (d == NULL || op == NULL) { 79 if (d == NULL || op == NULL) {
79 printk(KERN_ERR "Sound: Can't allocate driver for (%s)\n", name); 80 printk(KERN_ERR "Sound: Can't allocate driver for (%s)\n", name);
80 sound_unload_audiodev(num); 81 sound_unload_audiodev(num);
@@ -128,9 +129,10 @@ int sound_install_mixer(int vers, char *name, struct mixer_operations *driver,
128 until you unload sound! */ 129 until you unload sound! */
129 130
130 op = (struct mixer_operations *) (sound_mem_blocks[sound_nblocks] = vmalloc(sizeof(struct mixer_operations))); 131 op = (struct mixer_operations *) (sound_mem_blocks[sound_nblocks] = vmalloc(sizeof(struct mixer_operations)));
132 sound_nblocks++;
133 if (sound_nblocks >= MAX_MEM_BLOCKS)
134 sound_nblocks = MAX_MEM_BLOCKS - 1;
131 135
132 if (sound_nblocks < 1024)
133 sound_nblocks++;
134 if (op == NULL) { 136 if (op == NULL) {
135 printk(KERN_ERR "Sound: Can't allocate mixer driver for (%s)\n", name); 137 printk(KERN_ERR "Sound: Can't allocate mixer driver for (%s)\n", name);
136 return -ENOMEM; 138 return -ENOMEM;
diff --git a/sound/oss/sound_config.h b/sound/oss/sound_config.h
index 55271fbe7f49..9d35c4c65b9b 100644
--- a/sound/oss/sound_config.h
+++ b/sound/oss/sound_config.h
@@ -142,4 +142,6 @@ static inline int translate_mode(struct file *file)
142#define TIMER_ARMED 121234 142#define TIMER_ARMED 121234
143#define TIMER_NOT_ARMED 1 143#define TIMER_NOT_ARMED 1
144 144
145#define MAX_MEM_BLOCKS 1024
146
145#endif 147#endif
diff --git a/sound/oss/soundcard.c b/sound/oss/soundcard.c
index 61aaedae6b7e..c62530943888 100644
--- a/sound/oss/soundcard.c
+++ b/sound/oss/soundcard.c
@@ -56,7 +56,7 @@
56/* 56/*
57 * Table for permanently allocated memory (used when unloading the module) 57 * Table for permanently allocated memory (used when unloading the module)
58 */ 58 */
59void * sound_mem_blocks[1024]; 59void * sound_mem_blocks[MAX_MEM_BLOCKS];
60int sound_nblocks = 0; 60int sound_nblocks = 0;
61 61
62/* Persistent DMA buffers */ 62/* Persistent DMA buffers */
@@ -574,7 +574,7 @@ static int __init oss_init(void)
574 NULL, "%s%d", dev_list[i].name, j); 574 NULL, "%s%d", dev_list[i].name, j);
575 } 575 }
576 576
577 if (sound_nblocks >= 1024) 577 if (sound_nblocks >= MAX_MEM_BLOCKS - 1)
578 printk(KERN_ERR "Sound warning: Deallocation table was too small.\n"); 578 printk(KERN_ERR "Sound warning: Deallocation table was too small.\n");
579 579
580 return 0; 580 return 0;
diff --git a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c
index c11920623009..a7630e9edf8a 100644
--- a/sound/pci/ac97/ac97_codec.c
+++ b/sound/pci/ac97/ac97_codec.c
@@ -83,6 +83,7 @@ static const struct ac97_codec_id snd_ac97_codec_id_vendors[] = {
83{ 0x4e534300, 0xffffff00, "National Semiconductor", NULL, NULL }, 83{ 0x4e534300, 0xffffff00, "National Semiconductor", NULL, NULL },
84{ 0x50534300, 0xffffff00, "Philips", NULL, NULL }, 84{ 0x50534300, 0xffffff00, "Philips", NULL, NULL },
85{ 0x53494c00, 0xffffff00, "Silicon Laboratory", NULL, NULL }, 85{ 0x53494c00, 0xffffff00, "Silicon Laboratory", NULL, NULL },
86{ 0x53544d00, 0xffffff00, "STMicroelectronics", NULL, NULL },
86{ 0x54524100, 0xffffff00, "TriTech", NULL, NULL }, 87{ 0x54524100, 0xffffff00, "TriTech", NULL, NULL },
87{ 0x54584e00, 0xffffff00, "Texas Instruments", NULL, NULL }, 88{ 0x54584e00, 0xffffff00, "Texas Instruments", NULL, NULL },
88{ 0x56494100, 0xffffff00, "VIA Technologies", NULL, NULL }, 89{ 0x56494100, 0xffffff00, "VIA Technologies", NULL, NULL },
@@ -161,6 +162,7 @@ static const struct ac97_codec_id snd_ac97_codec_ids[] = {
161{ 0x4e534350, 0xffffffff, "LM4550", patch_lm4550, NULL }, // volume wrap fix 162{ 0x4e534350, 0xffffffff, "LM4550", patch_lm4550, NULL }, // volume wrap fix
162{ 0x50534304, 0xffffffff, "UCB1400", patch_ucb1400, NULL }, 163{ 0x50534304, 0xffffffff, "UCB1400", patch_ucb1400, NULL },
163{ 0x53494c20, 0xffffffe0, "Si3036,8", mpatch_si3036, mpatch_si3036, AC97_MODEM_PATCH }, 164{ 0x53494c20, 0xffffffe0, "Si3036,8", mpatch_si3036, mpatch_si3036, AC97_MODEM_PATCH },
165{ 0x53544d02, 0xffffffff, "ST7597", NULL, NULL },
164{ 0x54524102, 0xffffffff, "TR28022", NULL, NULL }, 166{ 0x54524102, 0xffffffff, "TR28022", NULL, NULL },
165{ 0x54524103, 0xffffffff, "TR28023", NULL, NULL }, 167{ 0x54524103, 0xffffffff, "TR28023", NULL, NULL },
166{ 0x54524106, 0xffffffff, "TR28026", NULL, NULL }, 168{ 0x54524106, 0xffffffff, "TR28026", NULL, NULL },
@@ -213,6 +215,14 @@ static int snd_ac97_valid_reg(struct snd_ac97 *ac97, unsigned short reg)
213{ 215{
214 /* filter some registers for buggy codecs */ 216 /* filter some registers for buggy codecs */
215 switch (ac97->id) { 217 switch (ac97->id) {
218 case AC97_ID_ST_AC97_ID4:
219 if (reg == 0x08)
220 return 0;
221 /* fall through */
222 case AC97_ID_ST7597:
223 if (reg == 0x22 || reg == 0x7a)
224 return 1;
225 /* fall through */
216 case AC97_ID_AK4540: 226 case AC97_ID_AK4540:
217 case AC97_ID_AK4542: 227 case AC97_ID_AK4542:
218 if (reg <= 0x1c || reg == 0x20 || reg == 0x26 || reg >= 0x7c) 228 if (reg <= 0x1c || reg == 0x20 || reg == 0x26 || reg >= 0x7c)
diff --git a/sound/pci/ac97/ac97_id.h b/sound/pci/ac97/ac97_id.h
index c129492c82b3..d603147c4a96 100644
--- a/sound/pci/ac97/ac97_id.h
+++ b/sound/pci/ac97/ac97_id.h
@@ -62,3 +62,5 @@
62#define AC97_ID_CM9761_78 0x434d4978 62#define AC97_ID_CM9761_78 0x434d4978
63#define AC97_ID_CM9761_82 0x434d4982 63#define AC97_ID_CM9761_82 0x434d4982
64#define AC97_ID_CM9761_83 0x434d4983 64#define AC97_ID_CM9761_83 0x434d4983
65#define AC97_ID_ST7597 0x53544d02
66#define AC97_ID_ST_AC97_ID4 0x53544d04
diff --git a/sound/pci/ac97/ac97_patch.c b/sound/pci/ac97/ac97_patch.c
index 139cf3b2b9d7..d9266bae2849 100644
--- a/sound/pci/ac97/ac97_patch.c
+++ b/sound/pci/ac97/ac97_patch.c
@@ -1870,6 +1870,7 @@ static unsigned int ad1981_jacks_blacklist[] = {
1870 0x10140554, /* Thinkpad T42p/R50p */ 1870 0x10140554, /* Thinkpad T42p/R50p */
1871 0x10140567, /* Thinkpad T43p 2668-G7U */ 1871 0x10140567, /* Thinkpad T43p 2668-G7U */
1872 0x10140581, /* Thinkpad X41-2527 */ 1872 0x10140581, /* Thinkpad X41-2527 */
1873 0x10280160, /* Dell Dimension 2400 */
1873 0x104380b0, /* Asus A7V8X-MX */ 1874 0x104380b0, /* Asus A7V8X-MX */
1874 0x11790241, /* Toshiba Satellite A-15 S127 */ 1875 0x11790241, /* Toshiba Satellite A-15 S127 */
1875 0x144dc01a, /* Samsung NP-X20C004/SEG */ 1876 0x144dc01a, /* Samsung NP-X20C004/SEG */
diff --git a/sound/pci/atiixp.c b/sound/pci/atiixp.c
index d6752dff2a44..42b4fbbd8e2b 100644
--- a/sound/pci/atiixp.c
+++ b/sound/pci/atiixp.c
@@ -297,6 +297,7 @@ static struct pci_device_id snd_atiixp_ids[] = {
297MODULE_DEVICE_TABLE(pci, snd_atiixp_ids); 297MODULE_DEVICE_TABLE(pci, snd_atiixp_ids);
298 298
299static struct snd_pci_quirk atiixp_quirks[] __devinitdata = { 299static struct snd_pci_quirk atiixp_quirks[] __devinitdata = {
300 SND_PCI_QUIRK(0x105b, 0x0c81, "Foxconn RC4107MA-RS2", 0),
300 SND_PCI_QUIRK(0x15bd, 0x3100, "DFI RS482", 0), 301 SND_PCI_QUIRK(0x15bd, 0x3100, "DFI RS482", 0),
301 { } /* terminator */ 302 { } /* terminator */
302}; 303};
diff --git a/sound/pci/ctxfi/ctatc.c b/sound/pci/ctxfi/ctatc.c
index cb65bd0dd35b..459c1f62783b 100644
--- a/sound/pci/ctxfi/ctatc.c
+++ b/sound/pci/ctxfi/ctatc.c
@@ -166,18 +166,7 @@ static void ct_unmap_audio_buffer(struct ct_atc *atc, struct ct_atc_pcm *apcm)
166 166
167static unsigned long atc_get_ptp_phys(struct ct_atc *atc, int index) 167static unsigned long atc_get_ptp_phys(struct ct_atc *atc, int index)
168{ 168{
169 struct ct_vm *vm; 169 return atc->vm->get_ptp_phys(atc->vm, index);
170 void *kvirt_addr;
171 unsigned long phys_addr;
172
173 vm = atc->vm;
174 kvirt_addr = vm->get_ptp_virt(vm, index);
175 if (kvirt_addr == NULL)
176 phys_addr = (~0UL);
177 else
178 phys_addr = virt_to_phys(kvirt_addr);
179
180 return phys_addr;
181} 170}
182 171
183static unsigned int convert_format(snd_pcm_format_t snd_format) 172static unsigned int convert_format(snd_pcm_format_t snd_format)
@@ -1669,7 +1658,7 @@ int __devinit ct_atc_create(struct snd_card *card, struct pci_dev *pci,
1669 } 1658 }
1670 1659
1671 /* Set up device virtual memory management object */ 1660 /* Set up device virtual memory management object */
1672 err = ct_vm_create(&atc->vm); 1661 err = ct_vm_create(&atc->vm, pci);
1673 if (err < 0) 1662 if (err < 0)
1674 goto error1; 1663 goto error1;
1675 1664
diff --git a/sound/pci/ctxfi/ctvmem.c b/sound/pci/ctxfi/ctvmem.c
index 6b78752e9503..65da6e466f80 100644
--- a/sound/pci/ctxfi/ctvmem.c
+++ b/sound/pci/ctxfi/ctvmem.c
@@ -138,7 +138,7 @@ ct_vm_map(struct ct_vm *vm, struct snd_pcm_substream *substream, int size)
138 return NULL; 138 return NULL;
139 } 139 }
140 140
141 ptp = vm->ptp[0]; 141 ptp = (unsigned long *)vm->ptp[0].area;
142 pte_start = (block->addr >> CT_PAGE_SHIFT); 142 pte_start = (block->addr >> CT_PAGE_SHIFT);
143 pages = block->size >> CT_PAGE_SHIFT; 143 pages = block->size >> CT_PAGE_SHIFT;
144 for (i = 0; i < pages; i++) { 144 for (i = 0; i < pages; i++) {
@@ -158,25 +158,25 @@ static void ct_vm_unmap(struct ct_vm *vm, struct ct_vm_block *block)
158} 158}
159 159
160/* * 160/* *
161 * return the host (kmalloced) addr of the @index-th device 161 * return the host physical addr of the @index-th device
162 * page talbe page on success, or NULL on failure. 162 * page table page on success, or ~0UL on failure.
163 * The first returned NULL indicates the termination. 163 * The first returned ~0UL indicates the termination.
164 * */ 164 * */
165static void * 165static dma_addr_t
166ct_get_ptp_virt(struct ct_vm *vm, int index) 166ct_get_ptp_phys(struct ct_vm *vm, int index)
167{ 167{
168 void *addr; 168 dma_addr_t addr;
169 169
170 addr = (index >= CT_PTP_NUM) ? NULL : vm->ptp[index]; 170 addr = (index >= CT_PTP_NUM) ? ~0UL : vm->ptp[index].addr;
171 171
172 return addr; 172 return addr;
173} 173}
174 174
175int ct_vm_create(struct ct_vm **rvm) 175int ct_vm_create(struct ct_vm **rvm, struct pci_dev *pci)
176{ 176{
177 struct ct_vm *vm; 177 struct ct_vm *vm;
178 struct ct_vm_block *block; 178 struct ct_vm_block *block;
179 int i; 179 int i, err = 0;
180 180
181 *rvm = NULL; 181 *rvm = NULL;
182 182
@@ -188,23 +188,21 @@ int ct_vm_create(struct ct_vm **rvm)
188 188
189 /* Allocate page table pages */ 189 /* Allocate page table pages */
190 for (i = 0; i < CT_PTP_NUM; i++) { 190 for (i = 0; i < CT_PTP_NUM; i++) {
191 vm->ptp[i] = kmalloc(PAGE_SIZE, GFP_KERNEL); 191 err = snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV,
192 if (!vm->ptp[i]) 192 snd_dma_pci_data(pci),
193 PAGE_SIZE, &vm->ptp[i]);
194 if (err < 0)
193 break; 195 break;
194 } 196 }
195 if (!i) { 197 if (err < 0) {
196 /* no page table pages are allocated */ 198 /* no page table pages are allocated */
197 kfree(vm); 199 ct_vm_destroy(vm);
198 return -ENOMEM; 200 return -ENOMEM;
199 } 201 }
200 vm->size = CT_ADDRS_PER_PAGE * i; 202 vm->size = CT_ADDRS_PER_PAGE * i;
201 /* Initialise remaining ptps */
202 for (; i < CT_PTP_NUM; i++)
203 vm->ptp[i] = NULL;
204
205 vm->map = ct_vm_map; 203 vm->map = ct_vm_map;
206 vm->unmap = ct_vm_unmap; 204 vm->unmap = ct_vm_unmap;
207 vm->get_ptp_virt = ct_get_ptp_virt; 205 vm->get_ptp_phys = ct_get_ptp_phys;
208 INIT_LIST_HEAD(&vm->unused); 206 INIT_LIST_HEAD(&vm->unused);
209 INIT_LIST_HEAD(&vm->used); 207 INIT_LIST_HEAD(&vm->used);
210 block = kzalloc(sizeof(*block), GFP_KERNEL); 208 block = kzalloc(sizeof(*block), GFP_KERNEL);
@@ -242,7 +240,7 @@ void ct_vm_destroy(struct ct_vm *vm)
242 240
243 /* free allocated page table pages */ 241 /* free allocated page table pages */
244 for (i = 0; i < CT_PTP_NUM; i++) 242 for (i = 0; i < CT_PTP_NUM; i++)
245 kfree(vm->ptp[i]); 243 snd_dma_free_pages(&vm->ptp[i]);
246 244
247 vm->size = 0; 245 vm->size = 0;
248 246
diff --git a/sound/pci/ctxfi/ctvmem.h b/sound/pci/ctxfi/ctvmem.h
index 01e4fd0386a3..b23adfca4de6 100644
--- a/sound/pci/ctxfi/ctvmem.h
+++ b/sound/pci/ctxfi/ctvmem.h
@@ -22,6 +22,8 @@
22 22
23#include <linux/mutex.h> 23#include <linux/mutex.h>
24#include <linux/list.h> 24#include <linux/list.h>
25#include <linux/pci.h>
26#include <sound/memalloc.h>
25 27
26/* The chip can handle the page table of 4k pages 28/* The chip can handle the page table of 4k pages
27 * (emu20k1 can handle even 8k pages, but we don't use it right now) 29 * (emu20k1 can handle even 8k pages, but we don't use it right now)
@@ -41,7 +43,7 @@ struct snd_pcm_substream;
41 43
42/* Virtual memory management object for card device */ 44/* Virtual memory management object for card device */
43struct ct_vm { 45struct ct_vm {
44 void *ptp[CT_PTP_NUM]; /* Device page table pages */ 46 struct snd_dma_buffer ptp[CT_PTP_NUM]; /* Device page table pages */
45 unsigned int size; /* Available addr space in bytes */ 47 unsigned int size; /* Available addr space in bytes */
46 struct list_head unused; /* List of unused blocks */ 48 struct list_head unused; /* List of unused blocks */
47 struct list_head used; /* List of used blocks */ 49 struct list_head used; /* List of used blocks */
@@ -52,10 +54,10 @@ struct ct_vm {
52 int size); 54 int size);
53 /* Unmap device logical addr area. */ 55 /* Unmap device logical addr area. */
54 void (*unmap)(struct ct_vm *, struct ct_vm_block *block); 56 void (*unmap)(struct ct_vm *, struct ct_vm_block *block);
55 void *(*get_ptp_virt)(struct ct_vm *vm, int index); 57 dma_addr_t (*get_ptp_phys)(struct ct_vm *vm, int index);
56}; 58};
57 59
58int ct_vm_create(struct ct_vm **rvm); 60int ct_vm_create(struct ct_vm **rvm, struct pci_dev *pci);
59void ct_vm_destroy(struct ct_vm *vm); 61void ct_vm_destroy(struct ct_vm *vm);
60 62
61#endif /* CTVMEM_H */ 63#endif /* CTVMEM_H */
diff --git a/sound/pci/hda/hda_beep.c b/sound/pci/hda/hda_beep.c
index 5fe34a8d8c81..e4581a42ace5 100644
--- a/sound/pci/hda/hda_beep.c
+++ b/sound/pci/hda/hda_beep.c
@@ -42,7 +42,7 @@ static void snd_hda_generate_beep(struct work_struct *work)
42 return; 42 return;
43 43
44 /* generate tone */ 44 /* generate tone */
45 snd_hda_codec_write_cache(codec, beep->nid, 0, 45 snd_hda_codec_write(codec, beep->nid, 0,
46 AC_VERB_SET_BEEP_CONTROL, beep->tone); 46 AC_VERB_SET_BEEP_CONTROL, beep->tone);
47} 47}
48 48
@@ -119,7 +119,7 @@ static void snd_hda_do_detach(struct hda_beep *beep)
119 beep->dev = NULL; 119 beep->dev = NULL;
120 cancel_work_sync(&beep->beep_work); 120 cancel_work_sync(&beep->beep_work);
121 /* turn off beep for sure */ 121 /* turn off beep for sure */
122 snd_hda_codec_write_cache(beep->codec, beep->nid, 0, 122 snd_hda_codec_write(beep->codec, beep->nid, 0,
123 AC_VERB_SET_BEEP_CONTROL, 0); 123 AC_VERB_SET_BEEP_CONTROL, 0);
124} 124}
125 125
@@ -192,7 +192,7 @@ int snd_hda_enable_beep_device(struct hda_codec *codec, int enable)
192 beep->enabled = enable; 192 beep->enabled = enable;
193 if (!enable) { 193 if (!enable) {
194 /* turn off beep */ 194 /* turn off beep */
195 snd_hda_codec_write_cache(beep->codec, beep->nid, 0, 195 snd_hda_codec_write(beep->codec, beep->nid, 0,
196 AC_VERB_SET_BEEP_CONTROL, 0); 196 AC_VERB_SET_BEEP_CONTROL, 0);
197 } 197 }
198 if (beep->mode == HDA_BEEP_MODE_SWREG) { 198 if (beep->mode == HDA_BEEP_MODE_SWREG) {
@@ -239,8 +239,12 @@ int snd_hda_attach_beep_device(struct hda_codec *codec, int nid)
239 mutex_init(&beep->mutex); 239 mutex_init(&beep->mutex);
240 240
241 if (beep->mode == HDA_BEEP_MODE_ON) { 241 if (beep->mode == HDA_BEEP_MODE_ON) {
242 beep->enabled = 1; 242 int err = snd_hda_do_attach(beep);
243 snd_hda_do_register(&beep->register_work); 243 if (err < 0) {
244 kfree(beep);
245 codec->beep = NULL;
246 return err;
247 }
244 } 248 }
245 249
246 return 0; 250 return 0;
@@ -253,7 +257,7 @@ void snd_hda_detach_beep_device(struct hda_codec *codec)
253 if (beep) { 257 if (beep) {
254 cancel_work_sync(&beep->register_work); 258 cancel_work_sync(&beep->register_work);
255 cancel_delayed_work(&beep->unregister_work); 259 cancel_delayed_work(&beep->unregister_work);
256 if (beep->enabled) 260 if (beep->dev)
257 snd_hda_do_detach(beep); 261 snd_hda_do_detach(beep);
258 codec->beep = NULL; 262 codec->beep = NULL;
259 kfree(beep); 263 kfree(beep);
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index 950ee5cfcacf..f98b47cd6cfb 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -1327,11 +1327,13 @@ EXPORT_SYMBOL_HDA(snd_hda_query_pin_caps);
1327 */ 1327 */
1328u32 snd_hda_pin_sense(struct hda_codec *codec, hda_nid_t nid) 1328u32 snd_hda_pin_sense(struct hda_codec *codec, hda_nid_t nid)
1329{ 1329{
1330 u32 pincap = snd_hda_query_pin_caps(codec, nid); 1330 u32 pincap;
1331
1332 if (pincap & AC_PINCAP_TRIG_REQ) /* need trigger? */
1333 snd_hda_codec_read(codec, nid, 0, AC_VERB_SET_PIN_SENSE, 0);
1334 1331
1332 if (!codec->no_trigger_sense) {
1333 pincap = snd_hda_query_pin_caps(codec, nid);
1334 if (pincap & AC_PINCAP_TRIG_REQ) /* need trigger? */
1335 snd_hda_codec_read(codec, nid, 0, AC_VERB_SET_PIN_SENSE, 0);
1336 }
1335 return snd_hda_codec_read(codec, nid, 0, 1337 return snd_hda_codec_read(codec, nid, 0,
1336 AC_VERB_GET_PIN_SENSE, 0); 1338 AC_VERB_GET_PIN_SENSE, 0);
1337} 1339}
diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h
index 1d541b7f5547..0a770a28e71f 100644
--- a/sound/pci/hda/hda_codec.h
+++ b/sound/pci/hda/hda_codec.h
@@ -817,6 +817,7 @@ struct hda_codec {
817 unsigned int pin_amp_workaround:1; /* pin out-amp takes index 817 unsigned int pin_amp_workaround:1; /* pin out-amp takes index
818 * (e.g. Conexant codecs) 818 * (e.g. Conexant codecs)
819 */ 819 */
820 unsigned int no_trigger_sense:1; /* don't trigger at pin-sensing */
820#ifdef CONFIG_SND_HDA_POWER_SAVE 821#ifdef CONFIG_SND_HDA_POWER_SAVE
821 unsigned int power_on :1; /* current (global) power-state */ 822 unsigned int power_on :1; /* current (global) power-state */
822 unsigned int power_transition :1; /* power-state in transition */ 823 unsigned int power_transition :1; /* power-state in transition */
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index ff8ad46cc50e..ff6da6f386d1 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -356,6 +356,7 @@ struct azx_dev {
356 */ 356 */
357 unsigned char stream_tag; /* assigned stream */ 357 unsigned char stream_tag; /* assigned stream */
358 unsigned char index; /* stream index */ 358 unsigned char index; /* stream index */
359 int device; /* last device number assigned to */
359 360
360 unsigned int opened :1; 361 unsigned int opened :1;
361 unsigned int running :1; 362 unsigned int running :1;
@@ -425,6 +426,7 @@ struct azx {
425 426
426 /* flags */ 427 /* flags */
427 int position_fix; 428 int position_fix;
429 int poll_count;
428 unsigned int running :1; 430 unsigned int running :1;
429 unsigned int initialized :1; 431 unsigned int initialized :1;
430 unsigned int single_cmd :1; 432 unsigned int single_cmd :1;
@@ -505,7 +507,7 @@ static char *driver_short_names[] __devinitdata = {
505#define get_azx_dev(substream) (substream->runtime->private_data) 507#define get_azx_dev(substream) (substream->runtime->private_data)
506 508
507static int azx_acquire_irq(struct azx *chip, int do_disconnect); 509static int azx_acquire_irq(struct azx *chip, int do_disconnect);
508 510static int azx_send_cmd(struct hda_bus *bus, unsigned int val);
509/* 511/*
510 * Interface for HD codec 512 * Interface for HD codec
511 */ 513 */
@@ -663,11 +665,12 @@ static unsigned int azx_rirb_get_response(struct hda_bus *bus,
663{ 665{
664 struct azx *chip = bus->private_data; 666 struct azx *chip = bus->private_data;
665 unsigned long timeout; 667 unsigned long timeout;
668 int do_poll = 0;
666 669
667 again: 670 again:
668 timeout = jiffies + msecs_to_jiffies(1000); 671 timeout = jiffies + msecs_to_jiffies(1000);
669 for (;;) { 672 for (;;) {
670 if (chip->polling_mode) { 673 if (chip->polling_mode || do_poll) {
671 spin_lock_irq(&chip->reg_lock); 674 spin_lock_irq(&chip->reg_lock);
672 azx_update_rirb(chip); 675 azx_update_rirb(chip);
673 spin_unlock_irq(&chip->reg_lock); 676 spin_unlock_irq(&chip->reg_lock);
@@ -675,6 +678,9 @@ static unsigned int azx_rirb_get_response(struct hda_bus *bus,
675 if (!chip->rirb.cmds[addr]) { 678 if (!chip->rirb.cmds[addr]) {
676 smp_rmb(); 679 smp_rmb();
677 bus->rirb_error = 0; 680 bus->rirb_error = 0;
681
682 if (!do_poll)
683 chip->poll_count = 0;
678 return chip->rirb.res[addr]; /* the last value */ 684 return chip->rirb.res[addr]; /* the last value */
679 } 685 }
680 if (time_after(jiffies, timeout)) 686 if (time_after(jiffies, timeout))
@@ -687,6 +693,16 @@ static unsigned int azx_rirb_get_response(struct hda_bus *bus,
687 } 693 }
688 } 694 }
689 695
696 if (!chip->polling_mode && chip->poll_count < 2) {
697 snd_printdd(SFX "azx_get_response timeout, "
698 "polling the codec once: last cmd=0x%08x\n",
699 chip->last_cmd[addr]);
700 do_poll = 1;
701 chip->poll_count++;
702 goto again;
703 }
704
705
690 if (!chip->polling_mode) { 706 if (!chip->polling_mode) {
691 snd_printk(KERN_WARNING SFX "azx_get_response timeout, " 707 snd_printk(KERN_WARNING SFX "azx_get_response timeout, "
692 "switching to polling mode: last cmd=0x%08x\n", 708 "switching to polling mode: last cmd=0x%08x\n",
@@ -1441,10 +1457,13 @@ static int __devinit azx_codec_configure(struct azx *chip)
1441 */ 1457 */
1442 1458
1443/* assign a stream for the PCM */ 1459/* assign a stream for the PCM */
1444static inline struct azx_dev *azx_assign_device(struct azx *chip, int stream) 1460static inline struct azx_dev *
1461azx_assign_device(struct azx *chip, struct snd_pcm_substream *substream)
1445{ 1462{
1446 int dev, i, nums; 1463 int dev, i, nums;
1447 if (stream == SNDRV_PCM_STREAM_PLAYBACK) { 1464 struct azx_dev *res = NULL;
1465
1466 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
1448 dev = chip->playback_index_offset; 1467 dev = chip->playback_index_offset;
1449 nums = chip->playback_streams; 1468 nums = chip->playback_streams;
1450 } else { 1469 } else {
@@ -1453,10 +1472,15 @@ static inline struct azx_dev *azx_assign_device(struct azx *chip, int stream)
1453 } 1472 }
1454 for (i = 0; i < nums; i++, dev++) 1473 for (i = 0; i < nums; i++, dev++)
1455 if (!chip->azx_dev[dev].opened) { 1474 if (!chip->azx_dev[dev].opened) {
1456 chip->azx_dev[dev].opened = 1; 1475 res = &chip->azx_dev[dev];
1457 return &chip->azx_dev[dev]; 1476 if (res->device == substream->pcm->device)
1477 break;
1458 } 1478 }
1459 return NULL; 1479 if (res) {
1480 res->opened = 1;
1481 res->device = substream->pcm->device;
1482 }
1483 return res;
1460} 1484}
1461 1485
1462/* release the assigned stream */ 1486/* release the assigned stream */
@@ -1505,7 +1529,7 @@ static int azx_pcm_open(struct snd_pcm_substream *substream)
1505 int err; 1529 int err;
1506 1530
1507 mutex_lock(&chip->open_mutex); 1531 mutex_lock(&chip->open_mutex);
1508 azx_dev = azx_assign_device(chip, substream->stream); 1532 azx_dev = azx_assign_device(chip, substream);
1509 if (azx_dev == NULL) { 1533 if (azx_dev == NULL) {
1510 mutex_unlock(&chip->open_mutex); 1534 mutex_unlock(&chip->open_mutex);
1511 return -EBUSY; 1535 return -EBUSY;
@@ -1869,6 +1893,9 @@ static int azx_position_ok(struct azx *chip, struct azx_dev *azx_dev)
1869 1893
1870 if (!bdl_pos_adj[chip->dev_index]) 1894 if (!bdl_pos_adj[chip->dev_index])
1871 return 1; /* no delayed ack */ 1895 return 1; /* no delayed ack */
1896 if (WARN_ONCE(!azx_dev->period_bytes,
1897 "hda-intel: zero azx_dev->period_bytes"))
1898 return 0; /* this shouldn't happen! */
1872 if (pos % azx_dev->period_bytes > azx_dev->period_bytes / 2) 1899 if (pos % azx_dev->period_bytes > azx_dev->period_bytes / 2)
1873 return 0; /* NG - it's below the period boundary */ 1900 return 0; /* NG - it's below the period boundary */
1874 return 1; /* OK, it's fine */ 1901 return 1; /* OK, it's fine */
@@ -2034,7 +2061,7 @@ static int azx_acquire_irq(struct azx *chip, int do_disconnect)
2034{ 2061{
2035 if (request_irq(chip->pci->irq, azx_interrupt, 2062 if (request_irq(chip->pci->irq, azx_interrupt,
2036 chip->msi ? 0 : IRQF_SHARED, 2063 chip->msi ? 0 : IRQF_SHARED,
2037 "HDA Intel", chip)) { 2064 "hda_intel", chip)) {
2038 printk(KERN_ERR "hda-intel: unable to grab IRQ %d, " 2065 printk(KERN_ERR "hda-intel: unable to grab IRQ %d, "
2039 "disabling device\n", chip->pci->irq); 2066 "disabling device\n", chip->pci->irq);
2040 if (do_disconnect) 2067 if (do_disconnect)
@@ -2323,6 +2350,7 @@ static void __devinit check_probe_mask(struct azx *chip, int dev)
2323 */ 2350 */
2324static struct snd_pci_quirk msi_black_list[] __devinitdata = { 2351static struct snd_pci_quirk msi_black_list[] __devinitdata = {
2325 SND_PCI_QUIRK(0x1043, 0x81f2, "ASUS", 0), /* Athlon64 X2 + nvidia */ 2352 SND_PCI_QUIRK(0x1043, 0x81f2, "ASUS", 0), /* Athlon64 X2 + nvidia */
2353 SND_PCI_QUIRK(0x1043, 0x81f6, "ASUS", 0), /* nvidia */
2326 {} 2354 {}
2327}; 2355};
2328 2356
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c
index 1a36137e13ec..69a941c7b158 100644
--- a/sound/pci/hda/patch_analog.c
+++ b/sound/pci/hda/patch_analog.c
@@ -1186,6 +1186,8 @@ static int patch_ad1986a(struct hda_codec *codec)
1186 */ 1186 */
1187 spec->multiout.no_share_stream = 1; 1187 spec->multiout.no_share_stream = 1;
1188 1188
1189 codec->no_trigger_sense = 1;
1190
1189 return 0; 1191 return 0;
1190} 1192}
1191 1193
@@ -1371,6 +1373,8 @@ static int patch_ad1983(struct hda_codec *codec)
1371 1373
1372 codec->patch_ops = ad198x_patch_ops; 1374 codec->patch_ops = ad198x_patch_ops;
1373 1375
1376 codec->no_trigger_sense = 1;
1377
1374 return 0; 1378 return 0;
1375} 1379}
1376 1380
@@ -1813,6 +1817,9 @@ static int patch_ad1981(struct hda_codec *codec)
1813 codec->patch_ops.unsol_event = ad1981_hp_unsol_event; 1817 codec->patch_ops.unsol_event = ad1981_hp_unsol_event;
1814 break; 1818 break;
1815 } 1819 }
1820
1821 codec->no_trigger_sense = 1;
1822
1816 return 0; 1823 return 0;
1817} 1824}
1818 1825
@@ -3118,6 +3125,8 @@ static int patch_ad1988(struct hda_codec *codec)
3118#endif 3125#endif
3119 spec->vmaster_nid = 0x04; 3126 spec->vmaster_nid = 0x04;
3120 3127
3128 codec->no_trigger_sense = 1;
3129
3121 return 0; 3130 return 0;
3122} 3131}
3123 3132
@@ -3330,6 +3339,8 @@ static int patch_ad1884(struct hda_codec *codec)
3330 3339
3331 codec->patch_ops = ad198x_patch_ops; 3340 codec->patch_ops = ad198x_patch_ops;
3332 3341
3342 codec->no_trigger_sense = 1;
3343
3333 return 0; 3344 return 0;
3334} 3345}
3335 3346
@@ -4287,6 +4298,8 @@ static int patch_ad1884a(struct hda_codec *codec)
4287 break; 4298 break;
4288 } 4299 }
4289 4300
4301 codec->no_trigger_sense = 1;
4302
4290 return 0; 4303 return 0;
4291} 4304}
4292 4305
@@ -4623,6 +4636,9 @@ static int patch_ad1882(struct hda_codec *codec)
4623 spec->mixers[2] = ad1882_6stack_mixers; 4636 spec->mixers[2] = ad1882_6stack_mixers;
4624 break; 4637 break;
4625 } 4638 }
4639
4640 codec->no_trigger_sense = 1;
4641
4626 return 0; 4642 return 0;
4627} 4643}
4628 4644
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index c7465053d6bb..da34095c707f 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -1093,6 +1093,16 @@ static void alc889_coef_init(struct hda_codec *codec)
1093 snd_hda_codec_write(codec, 0x20, 0, AC_VERB_SET_PROC_COEF, tmp|0x2010); 1093 snd_hda_codec_write(codec, 0x20, 0, AC_VERB_SET_PROC_COEF, tmp|0x2010);
1094} 1094}
1095 1095
1096/* turn on/off EAPD control (only if available) */
1097static void set_eapd(struct hda_codec *codec, hda_nid_t nid, int on)
1098{
1099 if (get_wcaps_type(get_wcaps(codec, nid)) != AC_WID_PIN)
1100 return;
1101 if (snd_hda_query_pin_caps(codec, nid) & AC_PINCAP_EAPD)
1102 snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_EAPD_BTLENABLE,
1103 on ? 2 : 0);
1104}
1105
1096static void alc_auto_init_amp(struct hda_codec *codec, int type) 1106static void alc_auto_init_amp(struct hda_codec *codec, int type)
1097{ 1107{
1098 unsigned int tmp; 1108 unsigned int tmp;
@@ -1110,25 +1120,22 @@ static void alc_auto_init_amp(struct hda_codec *codec, int type)
1110 case ALC_INIT_DEFAULT: 1120 case ALC_INIT_DEFAULT:
1111 switch (codec->vendor_id) { 1121 switch (codec->vendor_id) {
1112 case 0x10ec0260: 1122 case 0x10ec0260:
1113 snd_hda_codec_write(codec, 0x0f, 0, 1123 set_eapd(codec, 0x0f, 1);
1114 AC_VERB_SET_EAPD_BTLENABLE, 2); 1124 set_eapd(codec, 0x10, 1);
1115 snd_hda_codec_write(codec, 0x10, 0,
1116 AC_VERB_SET_EAPD_BTLENABLE, 2);
1117 break; 1125 break;
1118 case 0x10ec0262: 1126 case 0x10ec0262:
1119 case 0x10ec0267: 1127 case 0x10ec0267:
1120 case 0x10ec0268: 1128 case 0x10ec0268:
1121 case 0x10ec0269: 1129 case 0x10ec0269:
1130 case 0x10ec0270:
1122 case 0x10ec0272: 1131 case 0x10ec0272:
1123 case 0x10ec0660: 1132 case 0x10ec0660:
1124 case 0x10ec0662: 1133 case 0x10ec0662:
1125 case 0x10ec0663: 1134 case 0x10ec0663:
1126 case 0x10ec0862: 1135 case 0x10ec0862:
1127 case 0x10ec0889: 1136 case 0x10ec0889:
1128 snd_hda_codec_write(codec, 0x14, 0, 1137 set_eapd(codec, 0x14, 1);
1129 AC_VERB_SET_EAPD_BTLENABLE, 2); 1138 set_eapd(codec, 0x15, 1);
1130 snd_hda_codec_write(codec, 0x15, 0,
1131 AC_VERB_SET_EAPD_BTLENABLE, 2);
1132 break; 1139 break;
1133 } 1140 }
1134 switch (codec->vendor_id) { 1141 switch (codec->vendor_id) {
@@ -1230,6 +1237,8 @@ static void alc_init_auto_mic(struct hda_codec *codec)
1230 return; /* invalid entry */ 1237 return; /* invalid entry */
1231 } 1238 }
1232 } 1239 }
1240 if (!ext || !fixed)
1241 return;
1233 if (!(get_wcaps(codec, ext) & AC_WCAP_UNSOL_CAP)) 1242 if (!(get_wcaps(codec, ext) & AC_WCAP_UNSOL_CAP))
1234 return; /* no unsol support */ 1243 return; /* no unsol support */
1235 snd_printdd("realtek: Enable auto-mic switch on NID 0x%x/0x%x\n", 1244 snd_printdd("realtek: Enable auto-mic switch on NID 0x%x/0x%x\n",
@@ -1834,10 +1843,8 @@ static void alc889_acer_aspire_8930g_setup(struct hda_codec *codec)
1834#ifdef CONFIG_SND_HDA_POWER_SAVE 1843#ifdef CONFIG_SND_HDA_POWER_SAVE
1835static void alc889_power_eapd(struct hda_codec *codec, int power) 1844static void alc889_power_eapd(struct hda_codec *codec, int power)
1836{ 1845{
1837 snd_hda_codec_write(codec, 0x14, 0, 1846 set_eapd(codec, 0x14, power);
1838 AC_VERB_SET_EAPD_BTLENABLE, power ? 2 : 0); 1847 set_eapd(codec, 0x15, power);
1839 snd_hda_codec_write(codec, 0x15, 0,
1840 AC_VERB_SET_EAPD_BTLENABLE, power ? 2 : 0);
1841} 1848}
1842#endif 1849#endif
1843 1850
@@ -4812,6 +4819,49 @@ static void fixup_automic_adc(struct hda_codec *codec)
4812 spec->auto_mic = 0; /* disable auto-mic to be sure */ 4819 spec->auto_mic = 0; /* disable auto-mic to be sure */
4813} 4820}
4814 4821
4822/* choose the ADC/MUX containing the input pin and initialize the setup */
4823static void fixup_single_adc(struct hda_codec *codec)
4824{
4825 struct alc_spec *spec = codec->spec;
4826 hda_nid_t pin;
4827 int i;
4828
4829 /* search for the input pin; there must be only one */
4830 for (i = 0; i < AUTO_PIN_LAST; i++) {
4831 if (spec->autocfg.input_pins[i]) {
4832 pin = spec->autocfg.input_pins[i];
4833 break;
4834 }
4835 }
4836 if (!pin)
4837 return;
4838
4839 /* set the default connection to that pin */
4840 for (i = 0; i < spec->num_adc_nids; i++) {
4841 hda_nid_t cap = spec->capsrc_nids ?
4842 spec->capsrc_nids[i] : spec->adc_nids[i];
4843 int idx;
4844
4845 idx = get_connection_index(codec, cap, pin);
4846 if (idx < 0)
4847 continue;
4848 /* use only this ADC */
4849 if (spec->capsrc_nids)
4850 spec->capsrc_nids += i;
4851 spec->adc_nids += i;
4852 spec->num_adc_nids = 1;
4853 /* select or unmute this route */
4854 if (get_wcaps_type(get_wcaps(codec, cap)) == AC_WID_AUD_MIX) {
4855 snd_hda_codec_amp_stereo(codec, cap, HDA_INPUT, idx,
4856 HDA_AMP_MUTE, 0);
4857 } else {
4858 snd_hda_codec_write_cache(codec, cap, 0,
4859 AC_VERB_SET_CONNECT_SEL, idx);
4860 }
4861 return;
4862 }
4863}
4864
4815static void set_capture_mixer(struct hda_codec *codec) 4865static void set_capture_mixer(struct hda_codec *codec)
4816{ 4866{
4817 struct alc_spec *spec = codec->spec; 4867 struct alc_spec *spec = codec->spec;
@@ -4824,14 +4874,15 @@ static void set_capture_mixer(struct hda_codec *codec)
4824 alc_capture_mixer3 }, 4874 alc_capture_mixer3 },
4825 }; 4875 };
4826 if (spec->num_adc_nids > 0 && spec->num_adc_nids <= 3) { 4876 if (spec->num_adc_nids > 0 && spec->num_adc_nids <= 3) {
4827 int mux; 4877 int mux = 0;
4828 if (spec->auto_mic) { 4878 if (spec->auto_mic)
4829 mux = 0;
4830 fixup_automic_adc(codec); 4879 fixup_automic_adc(codec);
4831 } else if (spec->input_mux && spec->input_mux->num_items > 1) 4880 else if (spec->input_mux) {
4832 mux = 1; 4881 if (spec->input_mux->num_items > 1)
4833 else 4882 mux = 1;
4834 mux = 0; 4883 else if (spec->input_mux->num_items == 1)
4884 fixup_single_adc(codec);
4885 }
4835 spec->cap_mixer = caps[mux][spec->num_adc_nids - 1]; 4886 spec->cap_mixer = caps[mux][spec->num_adc_nids - 1];
4836 } 4887 }
4837} 4888}
@@ -7094,8 +7145,8 @@ static struct snd_kcontrol_new alc885_mb5_mixer[] = {
7094 HDA_BIND_MUTE ("Surround Playback Switch", 0x0d, 0x02, HDA_INPUT), 7145 HDA_BIND_MUTE ("Surround Playback Switch", 0x0d, 0x02, HDA_INPUT),
7095 HDA_CODEC_VOLUME("LFE Playback Volume", 0x0e, 0x00, HDA_OUTPUT), 7146 HDA_CODEC_VOLUME("LFE Playback Volume", 0x0e, 0x00, HDA_OUTPUT),
7096 HDA_BIND_MUTE ("LFE Playback Switch", 0x0e, 0x02, HDA_INPUT), 7147 HDA_BIND_MUTE ("LFE Playback Switch", 0x0e, 0x02, HDA_INPUT),
7097 HDA_CODEC_VOLUME("HP Playback Volume", 0x0f, 0x00, HDA_OUTPUT), 7148 HDA_CODEC_VOLUME("Headphone Playback Volume", 0x0f, 0x00, HDA_OUTPUT),
7098 HDA_BIND_MUTE ("HP Playback Switch", 0x0f, 0x02, HDA_INPUT), 7149 HDA_BIND_MUTE ("Headphone Playback Switch", 0x0f, 0x02, HDA_INPUT),
7099 HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT), 7150 HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
7100 HDA_CODEC_MUTE ("Line Playback Switch", 0x0b, 0x02, HDA_INPUT), 7151 HDA_CODEC_MUTE ("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
7101 HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x01, HDA_INPUT), 7152 HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x01, HDA_INPUT),
@@ -7496,6 +7547,7 @@ static struct hda_verb alc885_mb5_init_verbs[] = {
7496 {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, 7547 {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
7497 {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 7548 {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
7498 {0x14, AC_VERB_SET_CONNECT_SEL, 0x03}, 7549 {0x14, AC_VERB_SET_CONNECT_SEL, 0x03},
7550 {0x14, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN},
7499 /* Front Mic pin: input vref at 80% */ 7551 /* Front Mic pin: input vref at 80% */
7500 {0x19, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, 7552 {0x19, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80},
7501 {0x19, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, 7553 {0x19, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE},
@@ -7680,6 +7732,27 @@ static void alc885_mbp3_setup(struct hda_codec *codec)
7680 spec->autocfg.speaker_pins[0] = 0x14; 7732 spec->autocfg.speaker_pins[0] = 0x14;
7681} 7733}
7682 7734
7735static void alc885_mb5_automute(struct hda_codec *codec)
7736{
7737 unsigned int present;
7738
7739 present = snd_hda_codec_read(codec, 0x14, 0,
7740 AC_VERB_GET_PIN_SENSE, 0) & 0x80000000;
7741 snd_hda_codec_amp_stereo(codec, 0x18, HDA_OUTPUT, 0,
7742 HDA_AMP_MUTE, present ? HDA_AMP_MUTE : 0);
7743 snd_hda_codec_amp_stereo(codec, 0x1a, HDA_OUTPUT, 0,
7744 HDA_AMP_MUTE, present ? HDA_AMP_MUTE : 0);
7745
7746}
7747
7748static void alc885_mb5_unsol_event(struct hda_codec *codec,
7749 unsigned int res)
7750{
7751 /* Headphone insertion or removal. */
7752 if ((res >> 26) == ALC880_HP_EVENT)
7753 alc885_mb5_automute(codec);
7754}
7755
7683static void alc885_imac91_automute(struct hda_codec *codec) 7756static void alc885_imac91_automute(struct hda_codec *codec)
7684{ 7757{
7685 unsigned int present; 7758 unsigned int present;
@@ -9126,6 +9199,8 @@ static struct alc_config_preset alc882_presets[] = {
9126 .input_mux = &mb5_capture_source, 9199 .input_mux = &mb5_capture_source,
9127 .dig_out_nid = ALC882_DIGOUT_NID, 9200 .dig_out_nid = ALC882_DIGOUT_NID,
9128 .dig_in_nid = ALC882_DIGIN_NID, 9201 .dig_in_nid = ALC882_DIGIN_NID,
9202 .unsol_event = alc885_mb5_unsol_event,
9203 .init_hook = alc885_mb5_automute,
9129 }, 9204 },
9130 [ALC885_MACPRO] = { 9205 [ALC885_MACPRO] = {
9131 .mixers = { alc882_macpro_mixer }, 9206 .mixers = { alc882_macpro_mixer },
@@ -9403,6 +9478,7 @@ static struct alc_config_preset alc882_presets[] = {
9403 .num_channel_mode = ARRAY_SIZE(alc883_3ST_6ch_modes), 9478 .num_channel_mode = ARRAY_SIZE(alc883_3ST_6ch_modes),
9404 .channel_mode = alc883_3ST_6ch_modes, 9479 .channel_mode = alc883_3ST_6ch_modes,
9405 .need_dac_fix = 1, 9480 .need_dac_fix = 1,
9481 .const_channel_count = 6,
9406 .num_mux_defs = 9482 .num_mux_defs =
9407 ARRAY_SIZE(alc888_2_capture_sources), 9483 ARRAY_SIZE(alc888_2_capture_sources),
9408 .input_mux = alc888_2_capture_sources, 9484 .input_mux = alc888_2_capture_sources,
@@ -10307,7 +10383,7 @@ static void alc262_hp_t5735_setup(struct hda_codec *codec)
10307 struct alc_spec *spec = codec->spec; 10383 struct alc_spec *spec = codec->spec;
10308 10384
10309 spec->autocfg.hp_pins[0] = 0x15; 10385 spec->autocfg.hp_pins[0] = 0x15;
10310 spec->autocfg.speaker_pins[0] = 0x0c; /* HACK: not actually a pin */ 10386 spec->autocfg.speaker_pins[0] = 0x14;
10311} 10387}
10312 10388
10313static struct snd_kcontrol_new alc262_hp_t5735_mixer[] = { 10389static struct snd_kcontrol_new alc262_hp_t5735_mixer[] = {
@@ -11179,7 +11255,7 @@ static int alc262_auto_create_multi_out_ctls(struct alc_spec *spec,
11179} 11255}
11180 11256
11181#define alc262_auto_create_input_ctls \ 11257#define alc262_auto_create_input_ctls \
11182 alc880_auto_create_input_ctls 11258 alc882_auto_create_input_ctls
11183 11259
11184/* 11260/*
11185 * generic initialization of ADC, input mixers and output mixers 11261 * generic initialization of ADC, input mixers and output mixers
@@ -11718,9 +11794,9 @@ static struct alc_config_preset alc262_presets[] = {
11718 .num_channel_mode = ARRAY_SIZE(alc262_modes), 11794 .num_channel_mode = ARRAY_SIZE(alc262_modes),
11719 .channel_mode = alc262_modes, 11795 .channel_mode = alc262_modes,
11720 .input_mux = &alc262_capture_source, 11796 .input_mux = &alc262_capture_source,
11721 .unsol_event = alc_automute_amp_unsol_event, 11797 .unsol_event = alc_sku_unsol_event,
11722 .setup = alc262_hp_t5735_setup, 11798 .setup = alc262_hp_t5735_setup,
11723 .init_hook = alc_automute_amp, 11799 .init_hook = alc_inithook,
11724 }, 11800 },
11725 [ALC262_HP_RP5700] = { 11801 [ALC262_HP_RP5700] = {
11726 .mixers = { alc262_hp_rp5700_mixer }, 11802 .mixers = { alc262_hp_rp5700_mixer },
@@ -12471,6 +12547,7 @@ static int alc268_new_analog_output(struct alc_spec *spec, hda_nid_t nid,
12471 dac = 0x02; 12547 dac = 0x02;
12472 break; 12548 break;
12473 case 0x15: 12549 case 0x15:
12550 case 0x21:
12474 dac = 0x03; 12551 dac = 0x03;
12475 break; 12552 break;
12476 default: 12553 default:
@@ -14855,6 +14932,8 @@ static int patch_alc861(struct hda_codec *codec)
14855 spec->stream_digital_playback = &alc861_pcm_digital_playback; 14932 spec->stream_digital_playback = &alc861_pcm_digital_playback;
14856 spec->stream_digital_capture = &alc861_pcm_digital_capture; 14933 spec->stream_digital_capture = &alc861_pcm_digital_capture;
14857 14934
14935 if (!spec->cap_mixer)
14936 set_capture_mixer(codec);
14858 set_beep_amp(spec, 0x23, 0, HDA_OUTPUT); 14937 set_beep_amp(spec, 0x23, 0, HDA_OUTPUT);
14859 14938
14860 spec->vmaster_nid = 0x03; 14939 spec->vmaster_nid = 0x03;
@@ -15493,7 +15572,7 @@ static struct alc_config_preset alc861vd_presets[] = {
15493static int alc861vd_auto_create_input_ctls(struct hda_codec *codec, 15572static int alc861vd_auto_create_input_ctls(struct hda_codec *codec,
15494 const struct auto_pin_cfg *cfg) 15573 const struct auto_pin_cfg *cfg)
15495{ 15574{
15496 return alc_auto_create_input_ctls(codec, cfg, 0x15, 0x09, 0); 15575 return alc_auto_create_input_ctls(codec, cfg, 0x15, 0x22, 0);
15497} 15576}
15498 15577
15499 15578
@@ -17251,7 +17330,7 @@ static struct snd_pci_quirk alc662_cfg_tbl[] = {
17251 SND_PCI_QUIRK(0x105b, 0x0cd6, "Foxconn", ALC662_ECS), 17330 SND_PCI_QUIRK(0x105b, 0x0cd6, "Foxconn", ALC662_ECS),
17252 SND_PCI_QUIRK(0x105b, 0x0d47, "Foxconn 45CMX/45GMX/45CMX-K", 17331 SND_PCI_QUIRK(0x105b, 0x0d47, "Foxconn 45CMX/45GMX/45CMX-K",
17253 ALC662_3ST_6ch_DIG), 17332 ALC662_3ST_6ch_DIG),
17254 SND_PCI_QUIRK(0x1179, 0xff6e, "Toshiba NB200", ALC663_ASUS_MODE4), 17333 SND_PCI_QUIRK(0x1179, 0xff6e, "Toshiba NB20x", ALC662_AUTO),
17255 SND_PCI_QUIRK(0x144d, 0xca00, "Samsung NC10", ALC272_SAMSUNG_NC10), 17334 SND_PCI_QUIRK(0x144d, 0xca00, "Samsung NC10", ALC272_SAMSUNG_NC10),
17256 SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte 945GCM-S2L", 17335 SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte 945GCM-S2L",
17257 ALC662_3ST_6ch_DIG), 17336 ALC662_3ST_6ch_DIG),
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index eeda7beeb57a..799ba2570902 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -4453,14 +4453,7 @@ static inline int get_pin_presence(struct hda_codec *codec, hda_nid_t nid)
4453{ 4453{
4454 if (!nid) 4454 if (!nid)
4455 return 0; 4455 return 0;
4456 /* NOTE: we can't use snd_hda_jack_detect() here because STAC/IDT 4456 return snd_hda_jack_detect(codec, nid);
4457 * codecs behave wrongly when SET_PIN_SENSE is triggered, although
4458 * the pincap gives TRIG_REQ bit.
4459 */
4460 if (snd_hda_codec_read(codec, nid, 0, AC_VERB_GET_PIN_SENSE, 0) &
4461 AC_PINSENSE_PRESENCE)
4462 return 1;
4463 return 0;
4464} 4457}
4465 4458
4466static void stac92xx_line_out_detect(struct hda_codec *codec, 4459static void stac92xx_line_out_detect(struct hda_codec *codec,
@@ -4737,6 +4730,26 @@ static void stac92xx_unsol_event(struct hda_codec *codec, unsigned int res)
4737 } 4730 }
4738} 4731}
4739 4732
4733static int hp_blike_system(u32 subsystem_id);
4734
4735static void set_hp_led_gpio(struct hda_codec *codec)
4736{
4737 struct sigmatel_spec *spec = codec->spec;
4738 switch (codec->vendor_id) {
4739 case 0x111d7608:
4740 /* GPIO 0 */
4741 spec->gpio_led = 0x01;
4742 break;
4743 case 0x111d7600:
4744 case 0x111d7601:
4745 case 0x111d7602:
4746 case 0x111d7603:
4747 /* GPIO 3 */
4748 spec->gpio_led = 0x08;
4749 break;
4750 }
4751}
4752
4740/* 4753/*
4741 * This method searches for the mute LED GPIO configuration 4754 * This method searches for the mute LED GPIO configuration
4742 * provided as OEM string in SMBIOS. The format of that string 4755 * provided as OEM string in SMBIOS. The format of that string
@@ -4748,6 +4761,14 @@ static void stac92xx_unsol_event(struct hda_codec *codec, unsigned int res)
4748 * 4761 *
4749 * So, HP B-series like systems may have HP_Mute_LED_0 (current models) 4762 * So, HP B-series like systems may have HP_Mute_LED_0 (current models)
4750 * or HP_Mute_LED_0_3 (future models) OEM SMBIOS strings 4763 * or HP_Mute_LED_0_3 (future models) OEM SMBIOS strings
4764 *
4765 *
4766 * The dv-series laptops don't seem to have the HP_Mute_LED* strings in
4767 * SMBIOS - at least the ones I have seen do not have them - which include
4768 * my own system (HP Pavilion dv6-1110ax) and my cousin's
4769 * HP Pavilion dv9500t CTO.
4770 * Need more information on whether it is true across the entire series.
4771 * -- kunal
4751 */ 4772 */
4752static int find_mute_led_gpio(struct hda_codec *codec) 4773static int find_mute_led_gpio(struct hda_codec *codec)
4753{ 4774{
@@ -4758,28 +4779,27 @@ static int find_mute_led_gpio(struct hda_codec *codec)
4758 while ((dev = dmi_find_device(DMI_DEV_TYPE_OEM_STRING, 4779 while ((dev = dmi_find_device(DMI_DEV_TYPE_OEM_STRING,
4759 NULL, dev))) { 4780 NULL, dev))) {
4760 if (sscanf(dev->name, "HP_Mute_LED_%d_%d", 4781 if (sscanf(dev->name, "HP_Mute_LED_%d_%d",
4761 &spec->gpio_led_polarity, 4782 &spec->gpio_led_polarity,
4762 &spec->gpio_led) == 2) { 4783 &spec->gpio_led) == 2) {
4763 spec->gpio_led = 1 << spec->gpio_led; 4784 spec->gpio_led = 1 << spec->gpio_led;
4764 return 1; 4785 return 1;
4765 } 4786 }
4766 if (sscanf(dev->name, "HP_Mute_LED_%d", 4787 if (sscanf(dev->name, "HP_Mute_LED_%d",
4767 &spec->gpio_led_polarity) == 1) { 4788 &spec->gpio_led_polarity) == 1) {
4768 switch (codec->vendor_id) { 4789 set_hp_led_gpio(codec);
4769 case 0x111d7608: 4790 return 1;
4770 /* GPIO 0 */
4771 spec->gpio_led = 0x01;
4772 return 1;
4773 case 0x111d7600:
4774 case 0x111d7601:
4775 case 0x111d7602:
4776 case 0x111d7603:
4777 /* GPIO 3 */
4778 spec->gpio_led = 0x08;
4779 return 1;
4780 }
4781 } 4791 }
4782 } 4792 }
4793
4794 /*
4795 * Fallback case - if we don't find the DMI strings,
4796 * we statically set the GPIO - if not a B-series system.
4797 */
4798 if (!hp_blike_system(codec->subsystem_id)) {
4799 set_hp_led_gpio(codec);
4800 spec->gpio_led_polarity = 1;
4801 return 1;
4802 }
4783 } 4803 }
4784 return 0; 4804 return 0;
4785} 4805}
@@ -4962,6 +4982,7 @@ static int patch_stac9200(struct hda_codec *codec)
4962 if (spec == NULL) 4982 if (spec == NULL)
4963 return -ENOMEM; 4983 return -ENOMEM;
4964 4984
4985 codec->no_trigger_sense = 1;
4965 codec->spec = spec; 4986 codec->spec = spec;
4966 spec->num_pins = ARRAY_SIZE(stac9200_pin_nids); 4987 spec->num_pins = ARRAY_SIZE(stac9200_pin_nids);
4967 spec->pin_nids = stac9200_pin_nids; 4988 spec->pin_nids = stac9200_pin_nids;
@@ -5024,6 +5045,7 @@ static int patch_stac925x(struct hda_codec *codec)
5024 if (spec == NULL) 5045 if (spec == NULL)
5025 return -ENOMEM; 5046 return -ENOMEM;
5026 5047
5048 codec->no_trigger_sense = 1;
5027 codec->spec = spec; 5049 codec->spec = spec;
5028 spec->num_pins = ARRAY_SIZE(stac925x_pin_nids); 5050 spec->num_pins = ARRAY_SIZE(stac925x_pin_nids);
5029 spec->pin_nids = stac925x_pin_nids; 5051 spec->pin_nids = stac925x_pin_nids;
@@ -5108,6 +5130,7 @@ static int patch_stac92hd73xx(struct hda_codec *codec)
5108 if (spec == NULL) 5130 if (spec == NULL)
5109 return -ENOMEM; 5131 return -ENOMEM;
5110 5132
5133 codec->no_trigger_sense = 1;
5111 codec->spec = spec; 5134 codec->spec = spec;
5112 codec->slave_dig_outs = stac92hd73xx_slave_dig_outs; 5135 codec->slave_dig_outs = stac92hd73xx_slave_dig_outs;
5113 spec->num_pins = ARRAY_SIZE(stac92hd73xx_pin_nids); 5136 spec->num_pins = ARRAY_SIZE(stac92hd73xx_pin_nids);
@@ -5255,6 +5278,7 @@ static int patch_stac92hd83xxx(struct hda_codec *codec)
5255 if (spec == NULL) 5278 if (spec == NULL)
5256 return -ENOMEM; 5279 return -ENOMEM;
5257 5280
5281 codec->no_trigger_sense = 1;
5258 codec->spec = spec; 5282 codec->spec = spec;
5259 codec->slave_dig_outs = stac92hd83xxx_slave_dig_outs; 5283 codec->slave_dig_outs = stac92hd83xxx_slave_dig_outs;
5260 spec->digbeep_nid = 0x21; 5284 spec->digbeep_nid = 0x21;
@@ -5418,6 +5442,7 @@ static int patch_stac92hd71bxx(struct hda_codec *codec)
5418 if (spec == NULL) 5442 if (spec == NULL)
5419 return -ENOMEM; 5443 return -ENOMEM;
5420 5444
5445 codec->no_trigger_sense = 1;
5421 codec->spec = spec; 5446 codec->spec = spec;
5422 codec->patch_ops = stac92xx_patch_ops; 5447 codec->patch_ops = stac92xx_patch_ops;
5423 spec->num_pins = STAC92HD71BXX_NUM_PINS; 5448 spec->num_pins = STAC92HD71BXX_NUM_PINS;
@@ -5550,6 +5575,8 @@ again:
5550 spec->num_dmuxes = ARRAY_SIZE(stac92hd71bxx_dmux_nids); 5575 spec->num_dmuxes = ARRAY_SIZE(stac92hd71bxx_dmux_nids);
5551 spec->num_smuxes = stac92hd71bxx_connected_smuxes(codec, 0x1e); 5576 spec->num_smuxes = stac92hd71bxx_connected_smuxes(codec, 0x1e);
5552 5577
5578 snd_printdd("Found board config: %d\n", spec->board_config);
5579
5553 switch (spec->board_config) { 5580 switch (spec->board_config) {
5554 case STAC_HP_M4: 5581 case STAC_HP_M4:
5555 /* enable internal microphone */ 5582 /* enable internal microphone */
@@ -5661,6 +5688,7 @@ static int patch_stac922x(struct hda_codec *codec)
5661 if (spec == NULL) 5688 if (spec == NULL)
5662 return -ENOMEM; 5689 return -ENOMEM;
5663 5690
5691 codec->no_trigger_sense = 1;
5664 codec->spec = spec; 5692 codec->spec = spec;
5665 spec->num_pins = ARRAY_SIZE(stac922x_pin_nids); 5693 spec->num_pins = ARRAY_SIZE(stac922x_pin_nids);
5666 spec->pin_nids = stac922x_pin_nids; 5694 spec->pin_nids = stac922x_pin_nids;
@@ -5764,6 +5792,7 @@ static int patch_stac927x(struct hda_codec *codec)
5764 if (spec == NULL) 5792 if (spec == NULL)
5765 return -ENOMEM; 5793 return -ENOMEM;
5766 5794
5795 codec->no_trigger_sense = 1;
5767 codec->spec = spec; 5796 codec->spec = spec;
5768 codec->slave_dig_outs = stac927x_slave_dig_outs; 5797 codec->slave_dig_outs = stac927x_slave_dig_outs;
5769 spec->num_pins = ARRAY_SIZE(stac927x_pin_nids); 5798 spec->num_pins = ARRAY_SIZE(stac927x_pin_nids);
@@ -5898,6 +5927,7 @@ static int patch_stac9205(struct hda_codec *codec)
5898 if (spec == NULL) 5927 if (spec == NULL)
5899 return -ENOMEM; 5928 return -ENOMEM;
5900 5929
5930 codec->no_trigger_sense = 1;
5901 codec->spec = spec; 5931 codec->spec = spec;
5902 spec->num_pins = ARRAY_SIZE(stac9205_pin_nids); 5932 spec->num_pins = ARRAY_SIZE(stac9205_pin_nids);
5903 spec->pin_nids = stac9205_pin_nids; 5933 spec->pin_nids = stac9205_pin_nids;
@@ -6053,6 +6083,7 @@ static int patch_stac9872(struct hda_codec *codec)
6053 spec = kzalloc(sizeof(*spec), GFP_KERNEL); 6083 spec = kzalloc(sizeof(*spec), GFP_KERNEL);
6054 if (spec == NULL) 6084 if (spec == NULL)
6055 return -ENOMEM; 6085 return -ENOMEM;
6086 codec->no_trigger_sense = 1;
6056 codec->spec = spec; 6087 codec->spec = spec;
6057 spec->num_pins = ARRAY_SIZE(stac9872_pin_nids); 6088 spec->num_pins = ARRAY_SIZE(stac9872_pin_nids);
6058 spec->pin_nids = stac9872_pin_nids; 6089 spec->pin_nids = stac9872_pin_nids;
diff --git a/sound/pci/ice1712/aureon.c b/sound/pci/ice1712/aureon.c
index 765d7bd4c3d4..9e66f6d306f8 100644
--- a/sound/pci/ice1712/aureon.c
+++ b/sound/pci/ice1712/aureon.c
@@ -703,11 +703,13 @@ static void wm_set_vol(struct snd_ice1712 *ice, unsigned int index, unsigned sho
703{ 703{
704 unsigned char nvol; 704 unsigned char nvol;
705 705
706 if ((master & WM_VOL_MUTE) || (vol & WM_VOL_MUTE)) 706 if ((master & WM_VOL_MUTE) || (vol & WM_VOL_MUTE)) {
707 nvol = 0; 707 nvol = 0;
708 else 708 } else {
709 nvol = ((vol % WM_VOL_CNT) * (master % WM_VOL_CNT)) / 709 nvol = ((vol % WM_VOL_CNT) * (master % WM_VOL_CNT)) /
710 WM_VOL_MAX; 710 WM_VOL_MAX;
711 nvol += 0x1b;
712 }
711 713
712 wm_put(ice, index, nvol); 714 wm_put(ice, index, nvol);
713 wm_put_nocache(ice, index, 0x180 | nvol); 715 wm_put_nocache(ice, index, 0x180 | nvol);
@@ -778,7 +780,7 @@ static int wm_master_vol_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_
778 for (ch = 0; ch < 2; ch++) { 780 for (ch = 0; ch < 2; ch++) {
779 unsigned int vol = ucontrol->value.integer.value[ch]; 781 unsigned int vol = ucontrol->value.integer.value[ch];
780 if (vol > WM_VOL_MAX) 782 if (vol > WM_VOL_MAX)
781 continue; 783 vol = WM_VOL_MAX;
782 vol |= spec->master[ch] & WM_VOL_MUTE; 784 vol |= spec->master[ch] & WM_VOL_MUTE;
783 if (vol != spec->master[ch]) { 785 if (vol != spec->master[ch]) {
784 int dac; 786 int dac;
@@ -834,8 +836,8 @@ static int wm_vol_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *
834 for (i = 0; i < voices; i++) { 836 for (i = 0; i < voices; i++) {
835 unsigned int vol = ucontrol->value.integer.value[i]; 837 unsigned int vol = ucontrol->value.integer.value[i];
836 if (vol > WM_VOL_MAX) 838 if (vol > WM_VOL_MAX)
837 continue; 839 vol = WM_VOL_MAX;
838 vol |= spec->vol[ofs+i]; 840 vol |= spec->vol[ofs+i] & WM_VOL_MUTE;
839 if (vol != spec->vol[ofs+i]) { 841 if (vol != spec->vol[ofs+i]) {
840 spec->vol[ofs+i] = vol; 842 spec->vol[ofs+i] = vol;
841 idx = WM_DAC_ATTEN + ofs + i; 843 idx = WM_DAC_ATTEN + ofs + i;
diff --git a/sound/pci/riptide/riptide.c b/sound/pci/riptide/riptide.c
index b5ca02e2038c..e66ef2b69b5d 100644
--- a/sound/pci/riptide/riptide.c
+++ b/sound/pci/riptide/riptide.c
@@ -1058,7 +1058,7 @@ setsamplerate(struct cmdif *cif, unsigned char *intdec, unsigned int rate)
1058 rptr.retwords[2] != M && 1058 rptr.retwords[2] != M &&
1059 rptr.retwords[3] != N && 1059 rptr.retwords[3] != N &&
1060 i++ < MAX_WRITE_RETRY); 1060 i++ < MAX_WRITE_RETRY);
1061 if (i == MAX_WRITE_RETRY) { 1061 if (i > MAX_WRITE_RETRY) {
1062 snd_printdd("sent samplerate %d: %d failed\n", 1062 snd_printdd("sent samplerate %d: %d failed\n",
1063 *intdec, rate); 1063 *intdec, rate);
1064 return -EIO; 1064 return -EIO;
diff --git a/sound/soc/codecs/ac97.c b/sound/soc/codecs/ac97.c
index 69bd0acc81c8..a1bbe16b7f96 100644
--- a/sound/soc/codecs/ac97.c
+++ b/sound/soc/codecs/ac97.c
@@ -102,6 +102,12 @@ static int ac97_soc_probe(struct platform_device *pdev)
102 INIT_LIST_HEAD(&codec->dapm_widgets); 102 INIT_LIST_HEAD(&codec->dapm_widgets);
103 INIT_LIST_HEAD(&codec->dapm_paths); 103 INIT_LIST_HEAD(&codec->dapm_paths);
104 104
105 ret = snd_soc_new_ac97_codec(codec, &soc_ac97_ops, 0);
106 if (ret < 0) {
107 printk(KERN_ERR "ASoC: failed to init gen ac97 glue\n");
108 goto err;
109 }
110
105 /* register pcms */ 111 /* register pcms */
106 ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1); 112 ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
107 if (ret < 0) 113 if (ret < 0)
diff --git a/sound/soc/codecs/tlv320aic23.c b/sound/soc/codecs/tlv320aic23.c
index a9dc5fb54774..da589d8664d0 100644
--- a/sound/soc/codecs/tlv320aic23.c
+++ b/sound/soc/codecs/tlv320aic23.c
@@ -627,7 +627,7 @@ static int tlv320aic23_resume(struct platform_device *pdev)
627 u16 reg; 627 u16 reg;
628 628
629 /* Sync reg_cache with the hardware */ 629 /* Sync reg_cache with the hardware */
630 for (reg = 0; reg < TLV320AIC23_RESET; reg++) { 630 for (reg = 0; reg <= TLV320AIC23_ACTIVE; reg++) {
631 u16 val = tlv320aic23_read_reg_cache(codec, reg); 631 u16 val = tlv320aic23_read_reg_cache(codec, reg);
632 tlv320aic23_write(codec, reg, val); 632 tlv320aic23_write(codec, reg, val);
633 } 633 }
diff --git a/sound/soc/codecs/wm8350.c b/sound/soc/codecs/wm8350.c
index ebbf11b653a4..718ef912e758 100644
--- a/sound/soc/codecs/wm8350.c
+++ b/sound/soc/codecs/wm8350.c
@@ -925,7 +925,7 @@ static int wm8350_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt)
925 iface |= 0x3 << 8; 925 iface |= 0x3 << 8;
926 break; 926 break;
927 case SND_SOC_DAIFMT_DSP_B: 927 case SND_SOC_DAIFMT_DSP_B:
928 iface |= 0x3 << 8; /* lg not sure which mode */ 928 iface |= 0x3 << 8 | WM8350_AIF_LRCLK_INV;
929 break; 929 break;
930 default: 930 default:
931 return -EINVAL; 931 return -EINVAL;
diff --git a/sound/soc/codecs/wm8510.c b/sound/soc/codecs/wm8510.c
index 265e68c75df8..af8cb6995a1f 100644
--- a/sound/soc/codecs/wm8510.c
+++ b/sound/soc/codecs/wm8510.c
@@ -424,23 +424,23 @@ static int wm8510_pcm_hw_params(struct snd_pcm_substream *substream,
424 424
425 /* filter coefficient */ 425 /* filter coefficient */
426 switch (params_rate(params)) { 426 switch (params_rate(params)) {
427 case SNDRV_PCM_RATE_8000: 427 case 8000:
428 adn |= 0x5 << 1; 428 adn |= 0x5 << 1;
429 break; 429 break;
430 case SNDRV_PCM_RATE_11025: 430 case 11025:
431 adn |= 0x4 << 1; 431 adn |= 0x4 << 1;
432 break; 432 break;
433 case SNDRV_PCM_RATE_16000: 433 case 16000:
434 adn |= 0x3 << 1; 434 adn |= 0x3 << 1;
435 break; 435 break;
436 case SNDRV_PCM_RATE_22050: 436 case 22050:
437 adn |= 0x2 << 1; 437 adn |= 0x2 << 1;
438 break; 438 break;
439 case SNDRV_PCM_RATE_32000: 439 case 32000:
440 adn |= 0x1 << 1; 440 adn |= 0x1 << 1;
441 break; 441 break;
442 case SNDRV_PCM_RATE_44100: 442 case 44100:
443 case SNDRV_PCM_RATE_48000: 443 case 48000:
444 break; 444 break;
445 } 445 }
446 446
diff --git a/sound/soc/codecs/wm8903.c b/sound/soc/codecs/wm8903.c
index ce5515e3f2b0..3595bd57c4eb 100644
--- a/sound/soc/codecs/wm8903.c
+++ b/sound/soc/codecs/wm8903.c
@@ -1504,7 +1504,7 @@ static int wm8903_resume(struct platform_device *pdev)
1504 struct i2c_client *i2c = codec->control_data; 1504 struct i2c_client *i2c = codec->control_data;
1505 int i; 1505 int i;
1506 u16 *reg_cache = codec->reg_cache; 1506 u16 *reg_cache = codec->reg_cache;
1507 u16 *tmp_cache = kmemdup(codec->reg_cache, sizeof(wm8903_reg_defaults), 1507 u16 *tmp_cache = kmemdup(reg_cache, sizeof(wm8903_reg_defaults),
1508 GFP_KERNEL); 1508 GFP_KERNEL);
1509 1509
1510 /* Bring the codec back up to standby first to minimise pop/clicks */ 1510 /* Bring the codec back up to standby first to minimise pop/clicks */
@@ -1516,6 +1516,7 @@ static int wm8903_resume(struct platform_device *pdev)
1516 for (i = 2; i < ARRAY_SIZE(wm8903_reg_defaults); i++) 1516 for (i = 2; i < ARRAY_SIZE(wm8903_reg_defaults); i++)
1517 if (tmp_cache[i] != reg_cache[i]) 1517 if (tmp_cache[i] != reg_cache[i])
1518 snd_soc_write(codec, i, tmp_cache[i]); 1518 snd_soc_write(codec, i, tmp_cache[i]);
1519 kfree(tmp_cache);
1519 } else { 1520 } else {
1520 dev_err(&i2c->dev, "Failed to allocate temporary cache\n"); 1521 dev_err(&i2c->dev, "Failed to allocate temporary cache\n");
1521 } 1522 }
diff --git a/sound/soc/codecs/wm8940.c b/sound/soc/codecs/wm8940.c
index 3d850b97037a..31e39ffd1d8e 100644
--- a/sound/soc/codecs/wm8940.c
+++ b/sound/soc/codecs/wm8940.c
@@ -378,23 +378,23 @@ static int wm8940_i2s_hw_params(struct snd_pcm_substream *substream,
378 iface |= (1 << 9); 378 iface |= (1 << 9);
379 379
380 switch (params_rate(params)) { 380 switch (params_rate(params)) {
381 case SNDRV_PCM_RATE_8000: 381 case 8000:
382 addcntrl |= (0x5 << 1); 382 addcntrl |= (0x5 << 1);
383 break; 383 break;
384 case SNDRV_PCM_RATE_11025: 384 case 11025:
385 addcntrl |= (0x4 << 1); 385 addcntrl |= (0x4 << 1);
386 break; 386 break;
387 case SNDRV_PCM_RATE_16000: 387 case 16000:
388 addcntrl |= (0x3 << 1); 388 addcntrl |= (0x3 << 1);
389 break; 389 break;
390 case SNDRV_PCM_RATE_22050: 390 case 22050:
391 addcntrl |= (0x2 << 1); 391 addcntrl |= (0x2 << 1);
392 break; 392 break;
393 case SNDRV_PCM_RATE_32000: 393 case 32000:
394 addcntrl |= (0x1 << 1); 394 addcntrl |= (0x1 << 1);
395 break; 395 break;
396 case SNDRV_PCM_RATE_44100: 396 case 44100:
397 case SNDRV_PCM_RATE_48000: 397 case 48000:
398 break; 398 break;
399 } 399 }
400 ret = snd_soc_write(codec, WM8940_ADDCNTRL, addcntrl); 400 ret = snd_soc_write(codec, WM8940_ADDCNTRL, addcntrl);
diff --git a/sound/soc/codecs/wm8974.c b/sound/soc/codecs/wm8974.c
index a808675388fc..8812751da8c9 100644
--- a/sound/soc/codecs/wm8974.c
+++ b/sound/soc/codecs/wm8974.c
@@ -482,23 +482,23 @@ static int wm8974_pcm_hw_params(struct snd_pcm_substream *substream,
482 482
483 /* filter coefficient */ 483 /* filter coefficient */
484 switch (params_rate(params)) { 484 switch (params_rate(params)) {
485 case SNDRV_PCM_RATE_8000: 485 case 8000:
486 adn |= 0x5 << 1; 486 adn |= 0x5 << 1;
487 break; 487 break;
488 case SNDRV_PCM_RATE_11025: 488 case 11025:
489 adn |= 0x4 << 1; 489 adn |= 0x4 << 1;
490 break; 490 break;
491 case SNDRV_PCM_RATE_16000: 491 case 16000:
492 adn |= 0x3 << 1; 492 adn |= 0x3 << 1;
493 break; 493 break;
494 case SNDRV_PCM_RATE_22050: 494 case 22050:
495 adn |= 0x2 << 1; 495 adn |= 0x2 << 1;
496 break; 496 break;
497 case SNDRV_PCM_RATE_32000: 497 case 32000:
498 adn |= 0x1 << 1; 498 adn |= 0x1 << 1;
499 break; 499 break;
500 case SNDRV_PCM_RATE_44100: 500 case 44100:
501 case SNDRV_PCM_RATE_48000: 501 case 48000:
502 break; 502 break;
503 } 503 }
504 504
diff --git a/sound/soc/omap/Makefile b/sound/soc/omap/Makefile
index 3db8a6c523f4..19283e5edfbf 100644
--- a/sound/soc/omap/Makefile
+++ b/sound/soc/omap/Makefile
@@ -25,7 +25,7 @@ obj-$(CONFIG_SND_OMAP_SOC_OSK5912) += snd-soc-osk5912.o
25obj-$(CONFIG_SND_OMAP_SOC_OVERO) += snd-soc-overo.o 25obj-$(CONFIG_SND_OMAP_SOC_OVERO) += snd-soc-overo.o
26obj-$(CONFIG_SND_OMAP_SOC_OMAP2EVM) += snd-soc-omap2evm.o 26obj-$(CONFIG_SND_OMAP_SOC_OMAP2EVM) += snd-soc-omap2evm.o
27obj-$(CONFIG_SND_OMAP_SOC_OMAP3EVM) += snd-soc-omap3evm.o 27obj-$(CONFIG_SND_OMAP_SOC_OMAP3EVM) += snd-soc-omap3evm.o
28obj-$(CONFIG_SND_OMAP_SOC_OMAP3517EVM) += snd-soc-am3517evm.o 28obj-$(CONFIG_SND_OMAP_SOC_AM3517EVM) += snd-soc-am3517evm.o
29obj-$(CONFIG_SND_OMAP_SOC_SDP3430) += snd-soc-sdp3430.o 29obj-$(CONFIG_SND_OMAP_SOC_SDP3430) += snd-soc-sdp3430.o
30obj-$(CONFIG_SND_OMAP_SOC_OMAP3_PANDORA) += snd-soc-omap3pandora.o 30obj-$(CONFIG_SND_OMAP_SOC_OMAP3_PANDORA) += snd-soc-omap3pandora.o
31obj-$(CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE) += snd-soc-omap3beagle.o 31obj-$(CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE) += snd-soc-omap3beagle.o
diff --git a/sound/soc/omap/omap3pandora.c b/sound/soc/omap/omap3pandora.c
index 71b2c161158d..68980c19a3bc 100644
--- a/sound/soc/omap/omap3pandora.c
+++ b/sound/soc/omap/omap3pandora.c
@@ -145,6 +145,7 @@ static const struct snd_soc_dapm_widget omap3pandora_in_dapm_widgets[] = {
145}; 145};
146 146
147static const struct snd_soc_dapm_route omap3pandora_out_map[] = { 147static const struct snd_soc_dapm_route omap3pandora_out_map[] = {
148 {"PCM DAC", NULL, "APLL Enable"},
148 {"Headphone Amplifier", NULL, "PCM DAC"}, 149 {"Headphone Amplifier", NULL, "PCM DAC"},
149 {"Line Out", NULL, "PCM DAC"}, 150 {"Line Out", NULL, "PCM DAC"},
150 {"Headphone Jack", NULL, "Headphone Amplifier"}, 151 {"Headphone Jack", NULL, "Headphone Amplifier"},
diff --git a/sound/soc/sh/fsi-ak4642.c b/sound/soc/sh/fsi-ak4642.c
index c7af09729c6e..5263ab18f827 100644
--- a/sound/soc/sh/fsi-ak4642.c
+++ b/sound/soc/sh/fsi-ak4642.c
@@ -42,42 +42,12 @@ static struct snd_soc_device fsi_snd_devdata = {
42 .codec_dev = &soc_codec_dev_ak4642, 42 .codec_dev = &soc_codec_dev_ak4642,
43}; 43};
44 44
45#define AK4642_BUS 0
46#define AK4642_ADR 0x12
47static int ak4642_add_i2c_device(void)
48{
49 struct i2c_board_info info;
50 struct i2c_adapter *adapter;
51 struct i2c_client *client;
52
53 memset(&info, 0, sizeof(struct i2c_board_info));
54 info.addr = AK4642_ADR;
55 strlcpy(info.type, "ak4642", I2C_NAME_SIZE);
56
57 adapter = i2c_get_adapter(AK4642_BUS);
58 if (!adapter) {
59 printk(KERN_DEBUG "can't get i2c adapter\n");
60 return -ENODEV;
61 }
62
63 client = i2c_new_device(adapter, &info);
64 i2c_put_adapter(adapter);
65 if (!client) {
66 printk(KERN_DEBUG "can't add i2c device\n");
67 return -ENODEV;
68 }
69
70 return 0;
71}
72
73static struct platform_device *fsi_snd_device; 45static struct platform_device *fsi_snd_device;
74 46
75static int __init fsi_ak4642_init(void) 47static int __init fsi_ak4642_init(void)
76{ 48{
77 int ret = -ENOMEM; 49 int ret = -ENOMEM;
78 50
79 ak4642_add_i2c_device();
80
81 fsi_snd_device = platform_device_alloc("soc-audio", -1); 51 fsi_snd_device = platform_device_alloc("soc-audio", -1);
82 if (!fsi_snd_device) 52 if (!fsi_snd_device)
83 goto out; 53 goto out;
diff --git a/sound/sound_core.c b/sound/sound_core.c
index dbca7c909a31..7c2d677a2df5 100644
--- a/sound/sound_core.c
+++ b/sound/sound_core.c
@@ -61,7 +61,7 @@ static void __exit cleanup_soundcore(void)
61 class_destroy(sound_class); 61 class_destroy(sound_class);
62} 62}
63 63
64module_init(init_soundcore); 64subsys_initcall(init_soundcore);
65module_exit(cleanup_soundcore); 65module_exit(cleanup_soundcore);
66 66
67 67
diff --git a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c
index 4963defee18a..9edef4684978 100644
--- a/sound/usb/usbaudio.c
+++ b/sound/usb/usbaudio.c
@@ -1936,7 +1936,7 @@ static int snd_usb_pcm_close(struct snd_pcm_substream *substream, int direction)
1936 struct snd_usb_stream *as = snd_pcm_substream_chip(substream); 1936 struct snd_usb_stream *as = snd_pcm_substream_chip(substream);
1937 struct snd_usb_substream *subs = &as->substream[direction]; 1937 struct snd_usb_substream *subs = &as->substream[direction];
1938 1938
1939 if (subs->interface >= 0) { 1939 if (!as->chip->shutdown && subs->interface >= 0) {
1940 usb_set_interface(subs->dev, subs->interface, 0); 1940 usb_set_interface(subs->dev, subs->interface, 0);
1941 subs->interface = -1; 1941 subs->interface = -1;
1942 } 1942 }
diff --git a/tools/perf/.gitignore b/tools/perf/.gitignore
index fe08660ce0bd..124760bb37b5 100644
--- a/tools/perf/.gitignore
+++ b/tools/perf/.gitignore
@@ -13,6 +13,7 @@ perf*.xml
13perf*.html 13perf*.html
14common-cmds.h 14common-cmds.h
15perf.data 15perf.data
16perf.data.old
16tags 17tags
17TAGS 18TAGS
18cscope* 19cscope*
diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 4390d225686d..2e7fa3a06806 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -250,7 +250,19 @@ PTHREAD_LIBS = -lpthread
250# explicitly what architecture to check for. Fix this up for yours.. 250# explicitly what architecture to check for. Fix this up for yours..
251SPARSE_FLAGS = -D__BIG_ENDIAN__ -D__powerpc__ 251SPARSE_FLAGS = -D__BIG_ENDIAN__ -D__powerpc__
252 252
253ifeq ($(shell sh -c "echo 'int foo(void) {char X[2]; return 3;}' | $(CC) -x c -c -Werror -fstack-protector-all - -o /dev/null "$(QUIET_STDERR)" && echo y"), y) 253ifeq ($(V), 2)
254 QUIET_STDERR = ">/dev/null"
255else
256 QUIET_STDERR = ">/dev/null 2>&1"
257endif
258
259BITBUCKET = "/dev/null"
260
261ifneq ($(shell sh -c "(echo '\#include <stdio.h>'; echo 'int main(void) { return puts(\"hi\"); }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) "$(QUIET_STDERR)" && echo y"), y)
262 BITBUCKET = .perf.dev.null
263endif
264
265ifeq ($(shell sh -c "echo 'int foo(void) {char X[2]; return 3;}' | $(CC) -x c -c -Werror -fstack-protector-all - -o $(BITBUCKET) "$(QUIET_STDERR)" && echo y"), y)
254 CFLAGS := $(CFLAGS) -fstack-protector-all 266 CFLAGS := $(CFLAGS) -fstack-protector-all
255endif 267endif
256 268
@@ -343,13 +355,18 @@ LIB_H += util/include/linux/string.h
343LIB_H += util/include/linux/types.h 355LIB_H += util/include/linux/types.h
344LIB_H += util/include/asm/asm-offsets.h 356LIB_H += util/include/asm/asm-offsets.h
345LIB_H += util/include/asm/bitops.h 357LIB_H += util/include/asm/bitops.h
358LIB_H += util/include/asm/bug.h
346LIB_H += util/include/asm/byteorder.h 359LIB_H += util/include/asm/byteorder.h
347LIB_H += util/include/asm/swab.h 360LIB_H += util/include/asm/swab.h
348LIB_H += util/include/asm/system.h 361LIB_H += util/include/asm/system.h
349LIB_H += util/include/asm/uaccess.h 362LIB_H += util/include/asm/uaccess.h
350LIB_H += perf.h 363LIB_H += perf.h
364LIB_H += util/cache.h
365LIB_H += util/callchain.h
366LIB_H += util/debug.h
351LIB_H += util/debugfs.h 367LIB_H += util/debugfs.h
352LIB_H += util/event.h 368LIB_H += util/event.h
369LIB_H += util/exec_cmd.h
353LIB_H += util/types.h 370LIB_H += util/types.h
354LIB_H += util/levenshtein.h 371LIB_H += util/levenshtein.h
355LIB_H += util/parse-options.h 372LIB_H += util/parse-options.h
@@ -362,6 +379,7 @@ LIB_H += util/session.h
362LIB_H += util/strbuf.h 379LIB_H += util/strbuf.h
363LIB_H += util/string.h 380LIB_H += util/string.h
364LIB_H += util/strlist.h 381LIB_H += util/strlist.h
382LIB_H += util/svghelper.h
365LIB_H += util/run-command.h 383LIB_H += util/run-command.h
366LIB_H += util/sigchain.h 384LIB_H += util/sigchain.h
367LIB_H += util/symbol.h 385LIB_H += util/symbol.h
@@ -370,6 +388,8 @@ LIB_H += util/values.h
370LIB_H += util/sort.h 388LIB_H += util/sort.h
371LIB_H += util/hist.h 389LIB_H += util/hist.h
372LIB_H += util/thread.h 390LIB_H += util/thread.h
391LIB_H += util/trace-event.h
392LIB_H += util/trace-event-perl.h
373LIB_H += util/probe-finder.h 393LIB_H += util/probe-finder.h
374LIB_H += util/probe-event.h 394LIB_H += util/probe-event.h
375 395
@@ -443,11 +463,6 @@ BUILTIN_OBJS += builtin-kmem.o
443 463
444PERFLIBS = $(LIB_FILE) 464PERFLIBS = $(LIB_FILE)
445 465
446ifeq ($(V), 2)
447 QUIET_STDERR = ">/dev/null"
448else
449 QUIET_STDERR = ">/dev/null 2>&1"
450endif
451# 466#
452# Platform specific tweaks 467# Platform specific tweaks
453# 468#
@@ -475,19 +490,19 @@ ifeq ($(uname_S),Darwin)
475 PTHREAD_LIBS = 490 PTHREAD_LIBS =
476endif 491endif
477 492
478ifeq ($(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) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y) 493ifeq ($(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 $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y)
479ifneq ($(shell sh -c "(echo '\#include <gnu/libc-version.h>'; echo 'int main(void) { const char * version = gnu_get_libc_version(); return (long)version; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -o /dev/null $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y) 494ifneq ($(shell sh -c "(echo '\#include <gnu/libc-version.h>'; echo 'int main(void) { const char * version = gnu_get_libc_version(); return (long)version; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y)
480 msg := $(error No gnu/libc-version.h found, please install glibc-dev[el]/glibc-static); 495 msg := $(error No gnu/libc-version.h found, please install glibc-dev[el]/glibc-static);
481endif 496endif
482 497
483 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) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y) 498 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 $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y)
484 BASIC_CFLAGS += -DLIBELF_NO_MMAP 499 BASIC_CFLAGS += -DLIBELF_NO_MMAP
485 endif 500 endif
486else 501else
487 msg := $(error No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel and glibc-dev[el]); 502 msg := $(error No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel and glibc-dev[el]);
488endif 503endif
489 504
490ifneq ($(shell sh -c "(echo '\#ifndef _MIPS_SZLONG'; echo '\#define _MIPS_SZLONG 0'; echo '\#endif'; echo '\#include <dwarf.h>'; echo '\#include <libdwarf.h>'; echo 'int main(void) { Dwarf_Debug dbg; Dwarf_Error err; Dwarf_Ranges *rng; dwarf_init(0, DW_DLC_READ, 0, 0, &dbg, &err); dwarf_get_ranges(dbg, 0, &rng, 0, 0, &err); return (long)dbg; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/libdwarf -ldwarf -lelf -o /dev/null $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y) 505ifneq ($(shell sh -c "(echo '\#ifndef _MIPS_SZLONG'; echo '\#define _MIPS_SZLONG 0'; echo '\#endif'; echo '\#include <dwarf.h>'; echo '\#include <libdwarf.h>'; echo 'int main(void) { Dwarf_Debug dbg; Dwarf_Error err; Dwarf_Ranges *rng; dwarf_init(0, DW_DLC_READ, 0, 0, &dbg, &err); dwarf_get_ranges(dbg, 0, &rng, 0, 0, &err); return (long)dbg; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/libdwarf -ldwarf -lelf -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y)
491 msg := $(warning No libdwarf.h found or old libdwarf.h found, disables dwarf support. Please install libdwarf-dev/libdwarf-devel >= 20081231); 506 msg := $(warning No libdwarf.h found or old libdwarf.h found, disables dwarf support. Please install libdwarf-dev/libdwarf-devel >= 20081231);
492 BASIC_CFLAGS += -DNO_LIBDWARF 507 BASIC_CFLAGS += -DNO_LIBDWARF
493else 508else
@@ -501,7 +516,7 @@ PERL_EMBED_LDOPTS = `perl -MExtUtils::Embed -e ldopts 2>/dev/null`
501PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null` 516PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null`
502endif 517endif
503 518
504ifneq ($(shell sh -c "(echo '\#include <EXTERN.h>'; echo '\#include <perl.h>'; echo 'int main(void) { perl_alloc(); return 0; }') | $(CC) -x c - $(PERL_EMBED_CCOPTS) -o /dev/null $(PERL_EMBED_LDOPTS) > /dev/null 2>&1 && echo y"), y) 519ifneq ($(shell sh -c "(echo '\#include <EXTERN.h>'; echo '\#include <perl.h>'; echo 'int main(void) { perl_alloc(); return 0; }') | $(CC) -x c - $(PERL_EMBED_CCOPTS) -o $(BITBUCKET) $(PERL_EMBED_LDOPTS) > /dev/null 2>&1 && echo y"), y)
505 BASIC_CFLAGS += -DNO_LIBPERL 520 BASIC_CFLAGS += -DNO_LIBPERL
506else 521else
507 ALL_LDFLAGS += $(PERL_EMBED_LDOPTS) 522 ALL_LDFLAGS += $(PERL_EMBED_LDOPTS)
@@ -511,20 +526,20 @@ endif
511ifdef NO_DEMANGLE 526ifdef NO_DEMANGLE
512 BASIC_CFLAGS += -DNO_DEMANGLE 527 BASIC_CFLAGS += -DNO_DEMANGLE
513else 528else
514 has_bfd := $(shell sh -c "(echo '\#include <bfd.h>'; echo 'int main(void) { bfd_demangle(0, 0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o /dev/null $(ALL_LDFLAGS) $(EXTLIBS) -lbfd "$(QUIET_STDERR)" && echo y") 529 has_bfd := $(shell sh -c "(echo '\#include <bfd.h>'; echo 'int main(void) { bfd_demangle(0, 0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) -lbfd "$(QUIET_STDERR)" && echo y")
515 530
516 ifeq ($(has_bfd),y) 531 ifeq ($(has_bfd),y)
517 EXTLIBS += -lbfd 532 EXTLIBS += -lbfd
518 else 533 else
519 has_bfd_iberty := $(shell sh -c "(echo '\#include <bfd.h>'; echo 'int main(void) { bfd_demangle(0, 0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o /dev/null $(ALL_LDFLAGS) $(EXTLIBS) -lbfd -liberty "$(QUIET_STDERR)" && echo y") 534 has_bfd_iberty := $(shell sh -c "(echo '\#include <bfd.h>'; echo 'int main(void) { bfd_demangle(0, 0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) -lbfd -liberty "$(QUIET_STDERR)" && echo y")
520 ifeq ($(has_bfd_iberty),y) 535 ifeq ($(has_bfd_iberty),y)
521 EXTLIBS += -lbfd -liberty 536 EXTLIBS += -lbfd -liberty
522 else 537 else
523 has_bfd_iberty_z := $(shell sh -c "(echo '\#include <bfd.h>'; echo 'int main(void) { bfd_demangle(0, 0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o /dev/null $(ALL_LDFLAGS) $(EXTLIBS) -lbfd -liberty -lz "$(QUIET_STDERR)" && echo y") 538 has_bfd_iberty_z := $(shell sh -c "(echo '\#include <bfd.h>'; echo 'int main(void) { bfd_demangle(0, 0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) -lbfd -liberty -lz "$(QUIET_STDERR)" && echo y")
524 ifeq ($(has_bfd_iberty_z),y) 539 ifeq ($(has_bfd_iberty_z),y)
525 EXTLIBS += -lbfd -liberty -lz 540 EXTLIBS += -lbfd -liberty -lz
526 else 541 else
527 has_cplus_demangle := $(shell sh -c "(echo 'extern char *cplus_demangle(const char *, int);'; echo 'int main(void) { cplus_demangle(0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o /dev/null $(ALL_LDFLAGS) $(EXTLIBS) -liberty "$(QUIET_STDERR)" && echo y") 542 has_cplus_demangle := $(shell sh -c "(echo 'extern char *cplus_demangle(const char *, int);'; echo 'int main(void) { cplus_demangle(0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) -liberty "$(QUIET_STDERR)" && echo y")
528 ifeq ($(has_cplus_demangle),y) 543 ifeq ($(has_cplus_demangle),y)
529 EXTLIBS += -liberty 544 EXTLIBS += -liberty
530 BASIC_CFLAGS += -DHAVE_CPLUS_DEMANGLE 545 BASIC_CFLAGS += -DHAVE_CPLUS_DEMANGLE
@@ -772,7 +787,7 @@ export TAR INSTALL DESTDIR SHELL_PATH
772 787
773SHELL = $(SHELL_PATH) 788SHELL = $(SHELL_PATH)
774 789
775all:: shell_compatibility_test $(ALL_PROGRAMS) $(BUILT_INS) $(OTHER_PROGRAMS) PERF-BUILD-OPTIONS 790all:: .perf.dev.null shell_compatibility_test $(ALL_PROGRAMS) $(BUILT_INS) $(OTHER_PROGRAMS) PERF-BUILD-OPTIONS
776ifneq (,$X) 791ifneq (,$X)
777 $(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) perf$X)), test '$p' -ef '$p$X' || $(RM) '$p';) 792 $(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) perf$X)), test '$p' -ef '$p$X' || $(RM) '$p';)
778endif 793endif
@@ -1099,6 +1114,11 @@ clean:
1099.PHONY: .FORCE-PERF-VERSION-FILE TAGS tags cscope .FORCE-PERF-CFLAGS 1114.PHONY: .FORCE-PERF-VERSION-FILE TAGS tags cscope .FORCE-PERF-CFLAGS
1100.PHONY: .FORCE-PERF-BUILD-OPTIONS 1115.PHONY: .FORCE-PERF-BUILD-OPTIONS
1101 1116
1117.perf.dev.null:
1118 touch .perf.dev.null
1119
1120.INTERMEDIATE: .perf.dev.null
1121
1102### Make sure built-ins do not have dups and listed in perf.c 1122### Make sure built-ins do not have dups and listed in perf.c
1103# 1123#
1104check-builtins:: 1124check-builtins::
diff --git a/tools/perf/builtin-buildid-list.c b/tools/perf/builtin-buildid-list.c
index e693e6777af5..1e99ac806913 100644
--- a/tools/perf/builtin-buildid-list.c
+++ b/tools/perf/builtin-buildid-list.c
@@ -17,7 +17,7 @@
17static char const *input_name = "perf.data"; 17static char const *input_name = "perf.data";
18static int force; 18static int force;
19 19
20static const char *const buildid_list_usage[] = { 20static const char * const buildid_list_usage[] = {
21 "perf buildid-list [<options>]", 21 "perf buildid-list [<options>]",
22 NULL 22 NULL
23}; 23};
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
index 4d33b55d5584..bd71b8ceafb7 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -189,8 +189,9 @@ out_delete:
189 return ret; 189 return ret;
190} 190}
191 191
192static const char *const diff_usage[] = { 192static const char * const diff_usage[] = {
193 "perf diff [<options>] [old_file] [new_file]", 193 "perf diff [<options>] [old_file] [new_file]",
194 NULL,
194}; 195};
195 196
196static const struct option options[] = { 197static const struct option options[] = {
diff --git a/tools/perf/builtin-kmem.c b/tools/perf/builtin-kmem.c
index fc21ad79dd83..93c67bf53d2c 100644
--- a/tools/perf/builtin-kmem.c
+++ b/tools/perf/builtin-kmem.c
@@ -137,7 +137,7 @@ static void insert_alloc_stat(unsigned long call_site, unsigned long ptr,
137 if (data && data->ptr == ptr) { 137 if (data && data->ptr == ptr) {
138 data->hit++; 138 data->hit++;
139 data->bytes_req += bytes_req; 139 data->bytes_req += bytes_req;
140 data->bytes_alloc += bytes_req; 140 data->bytes_alloc += bytes_alloc;
141 } else { 141 } else {
142 data = malloc(sizeof(*data)); 142 data = malloc(sizeof(*data));
143 if (!data) 143 if (!data)
@@ -177,7 +177,7 @@ static void insert_caller_stat(unsigned long call_site,
177 if (data && data->call_site == call_site) { 177 if (data && data->call_site == call_site) {
178 data->hit++; 178 data->hit++;
179 data->bytes_req += bytes_req; 179 data->bytes_req += bytes_req;
180 data->bytes_alloc += bytes_req; 180 data->bytes_alloc += bytes_alloc;
181 } else { 181 } else {
182 data = malloc(sizeof(*data)); 182 data = malloc(sizeof(*data));
183 if (!data) 183 if (!data)
@@ -375,7 +375,7 @@ static void __print_result(struct rb_root *root, struct perf_session *session,
375 375
376 printf("%.102s\n", graph_dotted_line); 376 printf("%.102s\n", graph_dotted_line);
377 printf(" %-34s |", is_caller ? "Callsite": "Alloc Ptr"); 377 printf(" %-34s |", is_caller ? "Callsite": "Alloc Ptr");
378 printf(" Total_alloc/Per | Total_req/Per | Hit | Ping-pong | Frag\n"); 378 printf(" Total_alloc/Per | Total_req/Per | Hit | Ping-pong | Frag\n");
379 printf("%.102s\n", graph_dotted_line); 379 printf("%.102s\n", graph_dotted_line);
380 380
381 next = rb_first(root); 381 next = rb_first(root);
@@ -401,7 +401,7 @@ static void __print_result(struct rb_root *root, struct perf_session *session,
401 snprintf(buf, sizeof(buf), "%#Lx", addr); 401 snprintf(buf, sizeof(buf), "%#Lx", addr);
402 printf(" %-34s |", buf); 402 printf(" %-34s |", buf);
403 403
404 printf(" %9llu/%-5lu | %9llu/%-5lu | %6lu | %8lu | %6.3f%%\n", 404 printf(" %9llu/%-5lu | %9llu/%-5lu | %8lu | %8lu | %6.3f%%\n",
405 (unsigned long long)data->bytes_alloc, 405 (unsigned long long)data->bytes_alloc,
406 (unsigned long)data->bytes_alloc / data->hit, 406 (unsigned long)data->bytes_alloc / data->hit,
407 (unsigned long long)data->bytes_req, 407 (unsigned long long)data->bytes_req,
@@ -784,7 +784,8 @@ int cmd_kmem(int argc, const char **argv, const char *prefix __used)
784 setup_sorting(&alloc_sort, default_sort_order); 784 setup_sorting(&alloc_sort, default_sort_order);
785 785
786 return __cmd_kmem(); 786 return __cmd_kmem();
787 } 787 } else
788 usage_with_options(kmem_usage, kmem_options);
788 789
789 return 0; 790 return 0;
790} 791}
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 63136d0534d4..265425322734 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -402,7 +402,7 @@ static void atexit_header(void)
402 perf_header__write(&session->header, output, true); 402 perf_header__write(&session->header, output, true);
403} 403}
404 404
405static int __cmd_record(int argc __used, const char **argv) 405static int __cmd_record(int argc, const char **argv)
406{ 406{
407 int i, counter; 407 int i, counter;
408 struct stat st; 408 struct stat st;
@@ -411,6 +411,7 @@ static int __cmd_record(int argc __used, const char **argv)
411 int err; 411 int err;
412 unsigned long waking = 0; 412 unsigned long waking = 0;
413 int child_ready_pipe[2], go_pipe[2]; 413 int child_ready_pipe[2], go_pipe[2];
414 const bool forks = target_pid == -1 && argc > 0;
414 char buf; 415 char buf;
415 416
416 page_size = sysconf(_SC_PAGE_SIZE); 417 page_size = sysconf(_SC_PAGE_SIZE);
@@ -422,7 +423,7 @@ static int __cmd_record(int argc __used, const char **argv)
422 signal(SIGCHLD, sig_handler); 423 signal(SIGCHLD, sig_handler);
423 signal(SIGINT, sig_handler); 424 signal(SIGINT, sig_handler);
424 425
425 if (pipe(child_ready_pipe) < 0 || pipe(go_pipe) < 0) { 426 if (forks && (pipe(child_ready_pipe) < 0 || pipe(go_pipe) < 0)) {
426 perror("failed to create pipes"); 427 perror("failed to create pipes");
427 exit(-1); 428 exit(-1);
428 } 429 }
@@ -483,7 +484,7 @@ static int __cmd_record(int argc __used, const char **argv)
483 484
484 atexit(atexit_header); 485 atexit(atexit_header);
485 486
486 if (target_pid == -1) { 487 if (forks) {
487 pid = fork(); 488 pid = fork();
488 if (pid < 0) { 489 if (pid < 0) {
489 perror("failed to fork"); 490 perror("failed to fork");
@@ -550,7 +551,7 @@ static int __cmd_record(int argc __used, const char **argv)
550 return err; 551 return err;
551 } 552 }
552 553
553 if (!system_wide) 554 if (!system_wide && profile_cpu == -1)
554 event__synthesize_thread(pid, process_synthesized_event, 555 event__synthesize_thread(pid, process_synthesized_event,
555 session); 556 session);
556 else 557 else
@@ -569,7 +570,8 @@ static int __cmd_record(int argc __used, const char **argv)
569 /* 570 /*
570 * Let the child rip 571 * Let the child rip
571 */ 572 */
572 close(go_pipe[1]); 573 if (forks)
574 close(go_pipe[1]);
573 575
574 for (;;) { 576 for (;;) {
575 int hits = samples; 577 int hits = samples;
@@ -667,7 +669,7 @@ int cmd_record(int argc, const char **argv, const char *prefix __used)
667 669
668 argc = parse_options(argc, argv, options, record_usage, 670 argc = parse_options(argc, argv, options, record_usage,
669 PARSE_OPT_STOP_AT_NON_OPTION); 671 PARSE_OPT_STOP_AT_NON_OPTION);
670 if (!argc && target_pid == -1 && (!system_wide || profile_cpu == -1)) 672 if (!argc && target_pid == -1 && !system_wide && profile_cpu == -1)
671 usage_with_options(record_usage, options); 673 usage_with_options(record_usage, options);
672 674
673 symbol__init(); 675 symbol__init();
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index 5c2ab5357ec6..860f1eeeea7d 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -269,7 +269,7 @@ parse_callchain_opt(const struct option *opt __used, const char *arg,
269 269
270 else if (!strncmp(tok, "none", strlen(arg))) { 270 else if (!strncmp(tok, "none", strlen(arg))) {
271 callchain_param.mode = CHAIN_NONE; 271 callchain_param.mode = CHAIN_NONE;
272 symbol_conf.use_callchain = true; 272 symbol_conf.use_callchain = false;
273 273
274 return 0; 274 return 0;
275 } 275 }
@@ -294,8 +294,7 @@ setup:
294 return 0; 294 return 0;
295} 295}
296 296
297//static const char * const report_usage[] = { 297static const char * const report_usage[] = {
298const char * const report_usage[] = {
299 "perf report [<options>] <command>", 298 "perf report [<options>] <command>",
300 NULL 299 NULL
301}; 300};
diff --git a/tools/perf/builtin-timechart.c b/tools/perf/builtin-timechart.c
index a589a43112d6..3f8bbcfb1e9b 100644
--- a/tools/perf/builtin-timechart.c
+++ b/tools/perf/builtin-timechart.c
@@ -280,7 +280,7 @@ static u64 cpus_pstate_state[MAX_CPUS];
280 280
281static int process_comm_event(event_t *event, struct perf_session *session __used) 281static int process_comm_event(event_t *event, struct perf_session *session __used)
282{ 282{
283 pid_set_comm(event->comm.pid, event->comm.comm); 283 pid_set_comm(event->comm.tid, event->comm.comm);
284 return 0; 284 return 0;
285} 285}
286 286
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index ddc584b64871..4b91d8cf00ec 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -705,7 +705,7 @@ static void print_mapped_keys(void)
705 fprintf(stdout, "\t[w] toggle display weighted/count[E]r. \t(%d)\n", display_weighted ? 1 : 0); 705 fprintf(stdout, "\t[w] toggle display weighted/count[E]r. \t(%d)\n", display_weighted ? 1 : 0);
706 706
707 fprintf(stdout, 707 fprintf(stdout,
708 "\t[K] hide kernel_symbols symbols. \t(%s)\n", 708 "\t[K] hide kernel_symbols symbols. \t(%s)\n",
709 hide_kernel_symbols ? "yes" : "no"); 709 hide_kernel_symbols ? "yes" : "no");
710 fprintf(stdout, 710 fprintf(stdout,
711 "\t[U] hide user symbols. \t(%s)\n", 711 "\t[U] hide user symbols. \t(%s)\n",
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index e2285e28720f..574a215e800b 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -512,7 +512,7 @@ static char *get_script_path(const char *script_root, const char *suffix)
512 return path; 512 return path;
513} 513}
514 514
515static const char * const annotate_usage[] = { 515static const char * const trace_usage[] = {
516 "perf trace [<options>] <command>", 516 "perf trace [<options>] <command>",
517 NULL 517 NULL
518}; 518};
@@ -581,7 +581,7 @@ int cmd_trace(int argc, const char **argv, const char *prefix __used)
581 581
582 setup_scripting(); 582 setup_scripting();
583 583
584 argc = parse_options(argc, argv, options, annotate_usage, 584 argc = parse_options(argc, argv, options, trace_usage,
585 PARSE_OPT_STOP_AT_NON_OPTION); 585 PARSE_OPT_STOP_AT_NON_OPTION);
586 586
587 if (symbol__init() < 0) 587 if (symbol__init() < 0)
diff --git a/tools/perf/design.txt b/tools/perf/design.txt
index f000c30877ac..8d0de5130db3 100644
--- a/tools/perf/design.txt
+++ b/tools/perf/design.txt
@@ -21,7 +21,7 @@ There's one file descriptor per virtual counter used.
21The special file descriptor is opened via the perf_event_open() 21The special file descriptor is opened via the perf_event_open()
22system call: 22system call:
23 23
24 int sys_perf_event_open(struct perf_event_hw_event *hw_event_uptr, 24 int sys_perf_event_open(struct perf_event_attr *hw_event_uptr,
25 pid_t pid, int cpu, int group_fd, 25 pid_t pid, int cpu, int group_fd,
26 unsigned long flags); 26 unsigned long flags);
27 27
@@ -32,9 +32,9 @@ can be used to set the blocking mode, etc.
32Multiple counters can be kept open at a time, and the counters 32Multiple counters can be kept open at a time, and the counters
33can be poll()ed. 33can be poll()ed.
34 34
35When creating a new counter fd, 'perf_event_hw_event' is: 35When creating a new counter fd, 'perf_event_attr' is:
36 36
37struct perf_event_hw_event { 37struct perf_event_attr {
38 /* 38 /*
39 * The MSB of the config word signifies if the rest contains cpu 39 * The MSB of the config word signifies if the rest contains cpu
40 * specific (raw) counter configuration data, if unset, the next 40 * specific (raw) counter configuration data, if unset, the next
@@ -399,7 +399,7 @@ Notification of new events is possible through poll()/select()/epoll() and
399fcntl() managing signals. 399fcntl() managing signals.
400 400
401Normally a notification is generated for every page filled, however one can 401Normally a notification is generated for every page filled, however one can
402additionally set perf_event_hw_event.wakeup_events to generate one every 402additionally set perf_event_attr.wakeup_events to generate one every
403so many counter overflow events. 403so many counter overflow events.
404 404
405Future work will include a splice() interface to the ring-buffer. 405Future work will include a splice() interface to the ring-buffer.
diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
index bb0fd6da2d56..8a9e6baa3099 100644
--- a/tools/perf/util/event.c
+++ b/tools/perf/util/event.c
@@ -295,10 +295,10 @@ void thread__find_addr_location(struct thread *self,
295 al->thread = self; 295 al->thread = self;
296 al->addr = addr; 296 al->addr = addr;
297 297
298 if (cpumode & PERF_RECORD_MISC_KERNEL) { 298 if (cpumode == PERF_RECORD_MISC_KERNEL) {
299 al->level = 'k'; 299 al->level = 'k';
300 mg = &session->kmaps; 300 mg = &session->kmaps;
301 } else if (cpumode & PERF_RECORD_MISC_USER) 301 } else if (cpumode == PERF_RECORD_MISC_USER)
302 al->level = '.'; 302 al->level = '.';
303 else { 303 else {
304 al->level = 'H'; 304 al->level = 'H';
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index 29465d440043..fde17b090a47 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -272,6 +272,7 @@ int synthesize_perf_probe_point(struct probe_point *pp)
272 int ret; 272 int ret;
273 273
274 pp->probes[0] = buf = zalloc(MAX_CMDLEN); 274 pp->probes[0] = buf = zalloc(MAX_CMDLEN);
275 pp->found = 1;
275 if (!buf) 276 if (!buf)
276 die("Failed to allocate memory by zalloc."); 277 die("Failed to allocate memory by zalloc.");
277 if (pp->offset) { 278 if (pp->offset) {
@@ -294,6 +295,7 @@ int synthesize_perf_probe_point(struct probe_point *pp)
294error: 295error:
295 free(pp->probes[0]); 296 free(pp->probes[0]);
296 pp->probes[0] = NULL; 297 pp->probes[0] = NULL;
298 pp->found = 0;
297 } 299 }
298 return ret; 300 return ret;
299} 301}
@@ -455,6 +457,7 @@ void show_perf_probe_events(void)
455 struct strlist *rawlist; 457 struct strlist *rawlist;
456 struct str_node *ent; 458 struct str_node *ent;
457 459
460 memset(&pp, 0, sizeof(pp));
458 fd = open_kprobe_events(O_RDONLY, 0); 461 fd = open_kprobe_events(O_RDONLY, 0);
459 rawlist = get_trace_kprobe_event_rawlist(fd); 462 rawlist = get_trace_kprobe_event_rawlist(fd);
460 close(fd); 463 close(fd);
diff --git a/usr/Kconfig b/usr/Kconfig
index 1c3039f28909..e2721f5a3504 100644
--- a/usr/Kconfig
+++ b/usr/Kconfig
@@ -72,6 +72,15 @@ config RD_LZMA
72 Support loading of a LZMA encoded initial ramdisk or cpio buffer 72 Support loading of a LZMA encoded initial ramdisk or cpio buffer
73 If unsure, say N. 73 If unsure, say N.
74 74
75config RD_LZO
76 bool "Support initial ramdisks compressed using LZO" if EMBEDDED
77 default !EMBEDDED
78 depends on BLK_DEV_INITRD
79 select DECOMPRESS_LZO
80 help
81 Support loading of a LZO encoded initial ramdisk or cpio buffer
82 If unsure, say N.
83
75choice 84choice
76 prompt "Built-in initramfs compression mode" if INITRAMFS_SOURCE!="" 85 prompt "Built-in initramfs compression mode" if INITRAMFS_SOURCE!=""
77 help 86 help
@@ -108,16 +117,15 @@ config INITRAMFS_COMPRESSION_GZIP
108 bool "Gzip" 117 bool "Gzip"
109 depends on RD_GZIP 118 depends on RD_GZIP
110 help 119 help
111 The old and tried gzip compression. Its compression ratio is 120 The old and tried gzip compression. It provides a good balance
112 the poorest among the 3 choices; however its speed (both 121 between compression ratio and decompression speed.
113 compression and decompression) is the fastest.
114 122
115config INITRAMFS_COMPRESSION_BZIP2 123config INITRAMFS_COMPRESSION_BZIP2
116 bool "Bzip2" 124 bool "Bzip2"
117 depends on RD_BZIP2 125 depends on RD_BZIP2
118 help 126 help
119 Its compression ratio and speed is intermediate. 127 Its compression ratio and speed is intermediate.
120 Decompression speed is slowest among the three. The initramfs 128 Decompression speed is slowest among the four. The initramfs
121 size is about 10% smaller with bzip2, in comparison to gzip. 129 size is about 10% smaller with bzip2, in comparison to gzip.
122 Bzip2 uses a large amount of memory. For modern kernels you 130 Bzip2 uses a large amount of memory. For modern kernels you
123 will need at least 8MB RAM or more for booting. 131 will need at least 8MB RAM or more for booting.
@@ -128,7 +136,15 @@ config INITRAMFS_COMPRESSION_LZMA
128 help 136 help
129 The most recent compression algorithm. 137 The most recent compression algorithm.
130 Its ratio is best, decompression speed is between the other 138 Its ratio is best, decompression speed is between the other
131 two. Compression is slowest. The initramfs size is about 33% 139 three. Compression is slowest. The initramfs size is about 33%
132 smaller with LZMA in comparison to gzip. 140 smaller with LZMA in comparison to gzip.
133 141
142config INITRAMFS_COMPRESSION_LZO
143 bool "LZO"
144 depends on RD_LZO
145 help
146 Its compression ratio is the poorest among the four. The kernel
147 size is about about 10% bigger than gzip; however its speed
148 (both compression and decompression) is the fastest.
149
134endchoice 150endchoice
diff --git a/virt/kvm/assigned-dev.c b/virt/kvm/assigned-dev.c
index fd9c097b760a..f73de631e3ee 100644
--- a/virt/kvm/assigned-dev.c
+++ b/virt/kvm/assigned-dev.c
@@ -508,8 +508,8 @@ static int kvm_vm_ioctl_assign_device(struct kvm *kvm,
508 struct kvm_assigned_dev_kernel *match; 508 struct kvm_assigned_dev_kernel *match;
509 struct pci_dev *dev; 509 struct pci_dev *dev;
510 510
511 down_read(&kvm->slots_lock);
512 mutex_lock(&kvm->lock); 511 mutex_lock(&kvm->lock);
512 down_read(&kvm->slots_lock);
513 513
514 match = kvm_find_assigned_dev(&kvm->arch.assigned_dev_head, 514 match = kvm_find_assigned_dev(&kvm->arch.assigned_dev_head,
515 assigned_dev->assigned_dev_id); 515 assigned_dev->assigned_dev_id);
@@ -573,8 +573,8 @@ static int kvm_vm_ioctl_assign_device(struct kvm *kvm,
573 } 573 }
574 574
575out: 575out:
576 mutex_unlock(&kvm->lock);
577 up_read(&kvm->slots_lock); 576 up_read(&kvm->slots_lock);
577 mutex_unlock(&kvm->lock);
578 return r; 578 return r;
579out_list_del: 579out_list_del:
580 list_del(&match->list); 580 list_del(&match->list);
@@ -585,8 +585,8 @@ out_put:
585 pci_dev_put(dev); 585 pci_dev_put(dev);
586out_free: 586out_free:
587 kfree(match); 587 kfree(match);
588 mutex_unlock(&kvm->lock);
589 up_read(&kvm->slots_lock); 588 up_read(&kvm->slots_lock);
589 mutex_unlock(&kvm->lock);
590 return r; 590 return r;
591} 591}
592 592
diff --git a/virt/kvm/eventfd.c b/virt/kvm/eventfd.c
index 30f70fd511c4..a9d3fc6c681c 100644
--- a/virt/kvm/eventfd.c
+++ b/virt/kvm/eventfd.c
@@ -72,12 +72,13 @@ static void
72irqfd_shutdown(struct work_struct *work) 72irqfd_shutdown(struct work_struct *work)
73{ 73{
74 struct _irqfd *irqfd = container_of(work, struct _irqfd, shutdown); 74 struct _irqfd *irqfd = container_of(work, struct _irqfd, shutdown);
75 u64 cnt;
75 76
76 /* 77 /*
77 * Synchronize with the wait-queue and unhook ourselves to prevent 78 * Synchronize with the wait-queue and unhook ourselves to prevent
78 * further events. 79 * further events.
79 */ 80 */
80 remove_wait_queue(irqfd->wqh, &irqfd->wait); 81 eventfd_ctx_remove_wait_queue(irqfd->eventfd, &irqfd->wait, &cnt);
81 82
82 /* 83 /*
83 * We know no new events will be scheduled at this point, so block 84 * We know no new events will be scheduled at this point, so block
@@ -166,7 +167,7 @@ irqfd_ptable_queue_proc(struct file *file, wait_queue_head_t *wqh,
166static int 167static int
167kvm_irqfd_assign(struct kvm *kvm, int fd, int gsi) 168kvm_irqfd_assign(struct kvm *kvm, int fd, int gsi)
168{ 169{
169 struct _irqfd *irqfd; 170 struct _irqfd *irqfd, *tmp;
170 struct file *file = NULL; 171 struct file *file = NULL;
171 struct eventfd_ctx *eventfd = NULL; 172 struct eventfd_ctx *eventfd = NULL;
172 int ret; 173 int ret;
@@ -203,9 +204,20 @@ kvm_irqfd_assign(struct kvm *kvm, int fd, int gsi)
203 init_waitqueue_func_entry(&irqfd->wait, irqfd_wakeup); 204 init_waitqueue_func_entry(&irqfd->wait, irqfd_wakeup);
204 init_poll_funcptr(&irqfd->pt, irqfd_ptable_queue_proc); 205 init_poll_funcptr(&irqfd->pt, irqfd_ptable_queue_proc);
205 206
207 spin_lock_irq(&kvm->irqfds.lock);
208
209 ret = 0;
210 list_for_each_entry(tmp, &kvm->irqfds.items, list) {
211 if (irqfd->eventfd != tmp->eventfd)
212 continue;
213 /* This fd is used for another irq already. */
214 ret = -EBUSY;
215 spin_unlock_irq(&kvm->irqfds.lock);
216 goto fail;
217 }
218
206 events = file->f_op->poll(file, &irqfd->pt); 219 events = file->f_op->poll(file, &irqfd->pt);
207 220
208 spin_lock_irq(&kvm->irqfds.lock);
209 list_add_tail(&irqfd->list, &kvm->irqfds.items); 221 list_add_tail(&irqfd->list, &kvm->irqfds.items);
210 spin_unlock_irq(&kvm->irqfds.lock); 222 spin_unlock_irq(&kvm->irqfds.lock);
211 223
diff --git a/virt/kvm/irq_comm.c b/virt/kvm/irq_comm.c
index 9b077342ab54..9fd5b3ebc517 100644
--- a/virt/kvm/irq_comm.c
+++ b/virt/kvm/irq_comm.c
@@ -302,6 +302,7 @@ static int setup_routing_entry(struct kvm_irq_routing_table *rt,
302{ 302{
303 int r = -EINVAL; 303 int r = -EINVAL;
304 int delta; 304 int delta;
305 unsigned max_pin;
305 struct kvm_kernel_irq_routing_entry *ei; 306 struct kvm_kernel_irq_routing_entry *ei;
306 struct hlist_node *n; 307 struct hlist_node *n;
307 308
@@ -322,12 +323,15 @@ static int setup_routing_entry(struct kvm_irq_routing_table *rt,
322 switch (ue->u.irqchip.irqchip) { 323 switch (ue->u.irqchip.irqchip) {
323 case KVM_IRQCHIP_PIC_MASTER: 324 case KVM_IRQCHIP_PIC_MASTER:
324 e->set = kvm_set_pic_irq; 325 e->set = kvm_set_pic_irq;
326 max_pin = 16;
325 break; 327 break;
326 case KVM_IRQCHIP_PIC_SLAVE: 328 case KVM_IRQCHIP_PIC_SLAVE:
327 e->set = kvm_set_pic_irq; 329 e->set = kvm_set_pic_irq;
330 max_pin = 16;
328 delta = 8; 331 delta = 8;
329 break; 332 break;
330 case KVM_IRQCHIP_IOAPIC: 333 case KVM_IRQCHIP_IOAPIC:
334 max_pin = KVM_IOAPIC_NUM_PINS;
331 e->set = kvm_set_ioapic_irq; 335 e->set = kvm_set_ioapic_irq;
332 break; 336 break;
333 default: 337 default:
@@ -335,7 +339,7 @@ static int setup_routing_entry(struct kvm_irq_routing_table *rt,
335 } 339 }
336 e->irqchip.irqchip = ue->u.irqchip.irqchip; 340 e->irqchip.irqchip = ue->u.irqchip.irqchip;
337 e->irqchip.pin = ue->u.irqchip.pin + delta; 341 e->irqchip.pin = ue->u.irqchip.pin + delta;
338 if (e->irqchip.pin >= KVM_IOAPIC_NUM_PINS) 342 if (e->irqchip.pin >= max_pin)
339 goto out; 343 goto out;
340 rt->chip[ue->u.irqchip.irqchip][e->irqchip.pin] = ue->gsi; 344 rt->chip[ue->u.irqchip.irqchip][e->irqchip.pin] = ue->gsi;
341 break; 345 break;
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index b5af88167613..a944be392d6e 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -64,7 +64,7 @@ MODULE_LICENSE("GPL");
64/* 64/*
65 * Ordering of locks: 65 * Ordering of locks:
66 * 66 *
67 * kvm->slots_lock --> kvm->lock --> kvm->irq_lock 67 * kvm->lock --> kvm->slots_lock --> kvm->irq_lock
68 */ 68 */
69 69
70DEFINE_SPINLOCK(kvm_lock); 70DEFINE_SPINLOCK(kvm_lock);
@@ -406,8 +406,11 @@ static struct kvm *kvm_create_vm(void)
406out: 406out:
407 return kvm; 407 return kvm;
408 408
409#if defined(KVM_COALESCED_MMIO_PAGE_OFFSET) || \
410 (defined(CONFIG_MMU_NOTIFIER) && defined(KVM_ARCH_WANT_MMU_NOTIFIER))
409out_err: 411out_err:
410 hardware_disable_all(); 412 hardware_disable_all();
413#endif
411out_err_nodisable: 414out_err_nodisable:
412 kfree(kvm); 415 kfree(kvm);
413 return ERR_PTR(r); 416 return ERR_PTR(r);